<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="keywords" content="Wolfram, Wathematica, SystemModeler, WolframPlayer, CDFPlayer, keygen, crack, hack" /> <title>Генератор паролей для продуктов Wolfram</title> <script> 'use strict'; //--------------------------------------------------------------- // Константы: var licenseTypeMaskTrial = (1 << 1); // 2 var licenseTypeMaskStudent = (1 << 2); // 4 var licenseTypeMaskSite = (1 << 3); // 8 var licenseTypeMaskWolframPlayerOld = (1 << 4); // 10 var licenseTypeMaskWolframPlayer = (1 << 5); // 20 var licenseTypeMaskWolframPlayerPro = (1 << 6); // 40 var licenseTypeMaskHome = (1 << 11); // 800 var licenseTypeMaskEnterpriseEdition = (1 << 12); // 1000 var licenseTypeMaskEnterpriseSigning = (1 << 13); // 2000 var licenseTypeMaskAltExpirationPolicy = (1 << 19); // 80000 var licenseTypeMaskWolframAlphaNotebookEdition = (1 << 20); // 100000 var licenseTypeMaskWolframOne = (1 << 21); // 200000 var licenseTypeMaskWolframFinancePlatform = (1 << 22); // 400000 var licenseTypeMaskMathematica = (1 << 23); // 800000 var licenseTypeMaskWolframProgrammingLab = (1 << 24); // 1000000 var licenseTypeMaskAutoRenewingSubscription = (1 << 29); // 20000000 var licenseTypeMaskSystemModeler = (1 << 30); // 40000000 var defaultActivationKey = '3893-9258-K6XJLE'; var defaultVersionMath = '14.3'; var defaultVersionSM = '14.3'; var productIndexMathematica = 0; var productIndexSystemModeler = 1; var productIndexWolframFinancePlatform = 2; var productIndexWolframOne = 3; var productIndexWolframAlphaNotebookEdition = 4; var productIndexWolframProgrammingLab = 5; var productIndexWolframPlayerPro = 6; var productIndexWolframPlayer = 7; //--------------------------------------------------------------- var singleNetworkSingleMachineLicense = "single-machine-license" ; var singleNetworkNetworkLicense = "network-license" ; var licenseClassSM = "CM" ; var singleNetwork = singleNetworkSingleMachineLicense ; var productIndex = productIndexMathematica ; var licenseClassMath = "CC" ; var versionMath = "14.3" ; var versionSM = "14.3" ; var mathID = "" ; var activationKey = defaultActivationKey ; var licenseExpirationDate = "" ; var licenseType = (1 | licenseTypeMaskEnterpriseEdition | licenseTypeMaskEnterpriseSigning | licenseTypeMaskMathematica).toString(16).toUpperCase() ; var licenseClass = "" ; var magicNumbersSM = magicNumbers143 ; var magicNumbersMath = magicNumbers143 ; var magicNumbers = magicNumbers143 ; var paroliUporyadochenyStr = "Пароли упорядочены по долговечности (в смысле работы на будущих версиях при условии, что MachineID не изменится) в убывающем порядке, поэтому рекомендуется выбрать первый пароль (password) из списка. Последний пароль — от выбранной версии, предпоследний — от следующей и т. д. Но все они пригодны и для выбранной версии."; //--------------------------------------------------------------- // Look for magic numbers in DLL and EXE files close to bytes // 29 5B 00 00 87 65 00 00 8C 7F 00 00 75 35 00 00 1A 54 00 00 2D 45 00 00 D1 3F 00 00 0A 14 00 00 A5 29 00 00 A4 72 00 00 var magicNumbers193 = [ // Mathematica 19.3(?), System Modeler 19.3(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers192 = [ // Mathematica 19.2(?), System Modeler 19.2(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers191 = [ // Mathematica 19.1(?), System Modeler 19.1(?) 0x609F, // 14.2 - 19.1(?) 14.2 - 19.1(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers190 = [ // Mathematica 19.0(?), System Modeler 19.0(?) 0xD1CF, // 14.1 - 19.0(?) 14.1 - 19.0(?) 0x609F, // 14.2 - 19.1(?) 14.2 - 19.1(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers183 = [ // Mathematica 18.3(?), System Modeler 18.3(?) 0x8C72, // 14.1 - 18.3(?) 13.0 - 18.3(?) 0xD1CF, // 14.1 - 19.0(?) 14.1 - 19.0(?) 0x609F, // 14.2 - 19.1(?) 14.2 - 19.1(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers182 = [ // Mathematica 18.2(?), System Modeler 18.2(?) 0x4209, // 14.1 - 18.2(?) 13.0 - 18.2(?) 0x8C72, // 14.1 - 18.3(?) 13.0 - 18.3(?) 0xD1CF, // 14.1 - 19.0(?) 14.1 - 19.0(?) 0x609F, // 14.2 - 19.1(?) 14.2 - 19.1(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers181 = [ // Mathematica 18.1(?), System Modeler 18.1(?) 0x73EE, // 14.1 - 18.1(?) 13.0 - 18.1(?) 0x4209, // 14.1 - 18.2(?) 13.0 - 18.2(?) 0x8C72, // 14.1 - 18.3(?) 13.0 - 18.3(?) 0xD1CF, // 14.1 - 19.0(?) 14.1 - 19.0(?) 0x609F, // 14.2 - 19.1(?) 14.2 - 19.1(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers180 = [ // Mathematica 18.0(?), System Modeler 18.0(?) 0x64EC, // 14.1 - 18.0(?) 13.0 - 18.0(?) 0x73EE, // 14.1 - 18.1(?) 13.0 - 18.1(?) 0x4209, // 14.1 - 18.2(?) 13.0 - 18.2(?) 0x8C72, // 14.1 - 18.3(?) 13.0 - 18.3(?) 0xD1CF, // 14.1 - 19.0(?) 14.1 - 19.0(?) 0x609F, // 14.2 - 19.1(?) 14.2 - 19.1(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers173 = [ // Mathematica 17.3(?), System Modeler 17.3(?) 0x7C53, // 14.1 - 17.3(?) 13.0 - 17.3(?) 0x64EC, // 14.1 - 18.0(?) 13.0 - 18.0(?) 0x73EE, // 14.1 - 18.1(?) 13.0 - 18.1(?) 0x4209, // 14.1 - 18.2(?) 13.0 - 18.2(?) 0x8C72, // 14.1 - 18.3(?) 13.0 - 18.3(?) 0xD1CF, // 14.1 - 19.0(?) 14.1 - 19.0(?) 0x609F, // 14.2 - 19.1(?) 14.2 - 19.1(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers172 = [ // Mathematica 17.2(?), System Modeler 17.2(?) 0x5770, // 14.1 - 17.2(?) 4.3 - 17.2(?) 0x7C53, // 14.1 - 17.3(?) 13.0 - 17.3(?) 0x64EC, // 14.1 - 18.0(?) 13.0 - 18.0(?) 0x73EE, // 14.1 - 18.1(?) 13.0 - 18.1(?) 0x4209, // 14.1 - 18.2(?) 13.0 - 18.2(?) 0x8C72, // 14.1 - 18.3(?) 13.0 - 18.3(?) 0xD1CF, // 14.1 - 19.0(?) 14.1 - 19.0(?) 0x609F, // 14.2 - 19.1(?) 14.2 - 19.1(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers171 = [ // Mathematica 17.1(?), System Modeler 17.1(?) 0x7C91, // 14.1 - 17.1(?) 4.3 - 17.1(?) 0x5770, // 14.1 - 17.2(?) 4.3 - 17.2(?) 0x7C53, // 14.1 - 17.3(?) 13.0 - 17.3(?) 0x64EC, // 14.1 - 18.0(?) 13.0 - 18.0(?) 0x73EE, // 14.1 - 18.1(?) 13.0 - 18.1(?) 0x4209, // 14.1 - 18.2(?) 13.0 - 18.2(?) 0x8C72, // 14.1 - 18.3(?) 13.0 - 18.3(?) 0xD1CF, // 14.1 - 19.0(?) 14.1 - 19.0(?) 0x609F, // 14.2 - 19.1(?) 14.2 - 19.1(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers170 = [ // Mathematica 17.0(?), System Modeler 17.0(?) 0x5417, // 13.0 - 17.0(?) 14.1 - 17.0(?) 0x7C91, // 14.1 - 17.1(?) 4.3 - 17.1(?) 0x5770, // 14.1 - 17.2(?) 4.3 - 17.2(?) 0x7C53, // 14.1 - 17.3(?) 13.0 - 17.3(?) 0x64EC, // 14.1 - 18.0(?) 13.0 - 18.0(?) 0x73EE, // 14.1 - 18.1(?) 13.0 - 18.1(?) 0x4209, // 14.1 - 18.2(?) 13.0 - 18.2(?) 0x8C72, // 14.1 - 18.3(?) 13.0 - 18.3(?) 0xD1CF, // 14.1 - 19.0(?) 14.1 - 19.0(?) 0x609F, // 14.2 - 19.1(?) 14.2 - 19.1(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers163 = [ // Mathematica 16.3(?), System Modeler 16.3(?) 0xB013, // 13.0 - 16.3(?) 14.1 - 16.3(?) 0x5417, // 13.0 - 17.0(?) 14.1 - 17.0(?) 0x7C91, // 14.1 - 17.1(?) 4.3 - 17.1(?) 0x5770, // 14.1 - 17.2(?) 4.3 - 17.2(?) 0x7C53, // 14.1 - 17.3(?) 13.0 - 17.3(?) 0x64EC, // 14.1 - 18.0(?) 13.0 - 18.0(?) 0x73EE, // 14.1 - 18.1(?) 13.0 - 18.1(?) 0x4209, // 14.1 - 18.2(?) 13.0 - 18.2(?) 0x8C72, // 14.1 - 18.3(?) 13.0 - 18.3(?) 0xD1CF, // 14.1 - 19.0(?) 14.1 - 19.0(?) 0x609F, // 14.2 - 19.1(?) 14.2 - 19.1(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers162 = [ // Mathematica 16.2(?), System Modeler 16.2(?) 0xD54F, // 13.0 - 16.2(?) 14.1 - 16.2(?) 0xB013, // 13.0 - 16.3(?) 14.1 - 16.3(?) 0x5417, // 13.0 - 17.0(?) 14.1 - 17.0(?) 0x7C91, // 14.1 - 17.1(?) 4.3 - 17.1(?) 0x5770, // 14.1 - 17.2(?) 4.3 - 17.2(?) 0x7C53, // 14.1 - 17.3(?) 13.0 - 17.3(?) 0x64EC, // 14.1 - 18.0(?) 13.0 - 18.0(?) 0x73EE, // 14.1 - 18.1(?) 13.0 - 18.1(?) 0x4209, // 14.1 - 18.2(?) 13.0 - 18.2(?) 0x8C72, // 14.1 - 18.3(?) 13.0 - 18.3(?) 0xD1CF, // 14.1 - 19.0(?) 14.1 - 19.0(?) 0x609F, // 14.2 - 19.1(?) 14.2 - 19.1(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers161 = [ // Mathematica 16.1(?), System Modeler 16.1(?) 0x66C0, // 13.0 - 16.1(?) 14.1 - 16.1(?) 0xD54F, // 13.0 - 16.2(?) 14.1 - 16.2(?) 0xB013, // 13.0 - 16.3(?) 14.1 - 16.3(?) 0x5417, // 13.0 - 17.0(?) 14.1 - 17.0(?) 0x7C91, // 14.1 - 17.1(?) 4.3 - 17.1(?) 0x5770, // 14.1 - 17.2(?) 4.3 - 17.2(?) 0x7C53, // 14.1 - 17.3(?) 13.0 - 17.3(?) 0x64EC, // 14.1 - 18.0(?) 13.0 - 18.0(?) 0x73EE, // 14.1 - 18.1(?) 13.0 - 18.1(?) 0x4209, // 14.1 - 18.2(?) 13.0 - 18.2(?) 0x8C72, // 14.1 - 18.3(?) 13.0 - 18.3(?) 0xD1CF, // 14.1 - 19.0(?) 14.1 - 19.0(?) 0x609F, // 14.2 - 19.1(?) 14.2 - 19.1(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers160 = [ // Mathematica 16.0(?), System Modeler 16.0(?) 0x22DD, // 13.0 - 16.0(?) 14.1 - 16.0(?) 0x66C0, // 13.0 - 16.1(?) 14.1 - 16.1(?) 0xD54F, // 13.0 - 16.2(?) 14.1 - 16.2(?) 0xB013, // 13.0 - 16.3(?) 14.1 - 16.3(?) 0x5417, // 13.0 - 17.0(?) 14.1 - 17.0(?) 0x7C91, // 14.1 - 17.1(?) 4.3 - 17.1(?) 0x5770, // 14.1 - 17.2(?) 4.3 - 17.2(?) 0x7C53, // 14.1 - 17.3(?) 13.0 - 17.3(?) 0x64EC, // 14.1 - 18.0(?) 13.0 - 18.0(?) 0x73EE, // 14.1 - 18.1(?) 13.0 - 18.1(?) 0x4209, // 14.1 - 18.2(?) 13.0 - 18.2(?) 0x8C72, // 14.1 - 18.3(?) 13.0 - 18.3(?) 0xD1CF, // 14.1 - 19.0(?) 14.1 - 19.0(?) 0x609F, // 14.2 - 19.1(?) 14.2 - 19.1(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers153 = [ // Mathematica 15.3(?), System Modeler 15.3(?) 0xCD2D, // 13.0 - 15.3(?) 14.1 - 15.3(?) 0x22DD, // 13.0 - 16.0(?) 14.1 - 16.0(?) 0x66C0, // 13.0 - 16.1(?) 14.1 - 16.1(?) 0xD54F, // 13.0 - 16.2(?) 14.1 - 16.2(?) 0xB013, // 13.0 - 16.3(?) 14.1 - 16.3(?) 0x5417, // 13.0 - 17.0(?) 14.1 - 17.0(?) 0x7C91, // 14.1 - 17.1(?) 4.3 - 17.1(?) 0x5770, // 14.1 - 17.2(?) 4.3 - 17.2(?) 0x7C53, // 14.1 - 17.3(?) 13.0 - 17.3(?) 0x64EC, // 14.1 - 18.0(?) 13.0 - 18.0(?) 0x73EE, // 14.1 - 18.1(?) 13.0 - 18.1(?) 0x4209, // 14.1 - 18.2(?) 13.0 - 18.2(?) 0x8C72, // 14.1 - 18.3(?) 13.0 - 18.3(?) 0xD1CF, // 14.1 - 19.0(?) 14.1 - 19.0(?) 0x609F, // 14.2 - 19.1(?) 14.2 - 19.1(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers152 = [ // Mathematica 15.2(?), System Modeler 15.2(?) 0xB4D0, // 13.0 - 15.2(?) 14.1 - 15.2(?) 0xCD2D, // 13.0 - 15.3(?) 14.1 - 15.3(?) 0x22DD, // 13.0 - 16.0(?) 14.1 - 16.0(?) 0x66C0, // 13.0 - 16.1(?) 14.1 - 16.1(?) 0xD54F, // 13.0 - 16.2(?) 14.1 - 16.2(?) 0xB013, // 13.0 - 16.3(?) 14.1 - 16.3(?) 0x5417, // 13.0 - 17.0(?) 14.1 - 17.0(?) 0x7C91, // 14.1 - 17.1(?) 4.3 - 17.1(?) 0x5770, // 14.1 - 17.2(?) 4.3 - 17.2(?) 0x7C53, // 14.1 - 17.3(?) 13.0 - 17.3(?) 0x64EC, // 14.1 - 18.0(?) 13.0 - 18.0(?) 0x73EE, // 14.1 - 18.1(?) 13.0 - 18.1(?) 0x4209, // 14.1 - 18.2(?) 13.0 - 18.2(?) 0x8C72, // 14.1 - 18.3(?) 13.0 - 18.3(?) 0xD1CF, // 14.1 - 19.0(?) 14.1 - 19.0(?) 0x609F, // 14.2 - 19.1(?) 14.2 - 19.1(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers151 = [ // Mathematica 15.1(?), System Modeler 15.1(?) 0xE756, // 12.0 - 15.1(?) 14.1 - 15.1(?) 0xB4D0, // 13.0 - 15.2(?) 14.1 - 15.2(?) 0xCD2D, // 13.0 - 15.3(?) 14.1 - 15.3(?) 0x22DD, // 13.0 - 16.0(?) 14.1 - 16.0(?) 0x66C0, // 13.0 - 16.1(?) 14.1 - 16.1(?) 0xD54F, // 13.0 - 16.2(?) 14.1 - 16.2(?) 0xB013, // 13.0 - 16.3(?) 14.1 - 16.3(?) 0x5417, // 13.0 - 17.0(?) 14.1 - 17.0(?) 0x7C91, // 14.1 - 17.1(?) 4.3 - 17.1(?) 0x5770, // 14.1 - 17.2(?) 4.3 - 17.2(?) 0x7C53, // 14.1 - 17.3(?) 13.0 - 17.3(?) 0x64EC, // 14.1 - 18.0(?) 13.0 - 18.0(?) 0x73EE, // 14.1 - 18.1(?) 13.0 - 18.1(?) 0x4209, // 14.1 - 18.2(?) 13.0 - 18.2(?) 0x8C72, // 14.1 - 18.3(?) 13.0 - 18.3(?) 0xD1CF, // 14.1 - 19.0(?) 14.1 - 19.0(?) 0x609F, // 14.2 - 19.1(?) 14.2 - 19.1(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers150 = [ // Mathematica 15.0(?), System Modeler 15.0(?) 0x8C68, // 12.0 - 15.0(?) 14.1 - 15.0(?) 0xE756, // 12.0 - 15.1(?) 14.1 - 15.1(?) 0xB4D0, // 13.0 - 15.2(?) 14.1 - 15.2(?) 0xCD2D, // 13.0 - 15.3(?) 14.1 - 15.3(?) 0x22DD, // 13.0 - 16.0(?) 14.1 - 16.0(?) 0x66C0, // 13.0 - 16.1(?) 14.1 - 16.1(?) 0xD54F, // 13.0 - 16.2(?) 14.1 - 16.2(?) 0xB013, // 13.0 - 16.3(?) 14.1 - 16.3(?) 0x5417, // 13.0 - 17.0(?) 14.1 - 17.0(?) 0x7C91, // 14.1 - 17.1(?) 4.3 - 17.1(?) 0x5770, // 14.1 - 17.2(?) 4.3 - 17.2(?) 0x7C53, // 14.1 - 17.3(?) 13.0 - 17.3(?) 0x64EC, // 14.1 - 18.0(?) 13.0 - 18.0(?) 0x73EE, // 14.1 - 18.1(?) 13.0 - 18.1(?) 0x4209, // 14.1 - 18.2(?) 13.0 - 18.2(?) 0x8C72, // 14.1 - 18.3(?) 13.0 - 18.3(?) 0xD1CF, // 14.1 - 19.0(?) 14.1 - 19.0(?) 0x609F, // 14.2 - 19.1(?) 14.2 - 19.1(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers143 = [ // Mathematica 14.3, System Modeler 14.3 0x8250, // 12.0 - 14.3 14.1 - 14.3 0x8C68, // 12.0 - 15.0(?) 14.1 - 15.0(?) 0xE756, // 12.0 - 15.1(?) 14.1 - 15.1(?) 0xB4D0, // 13.0 - 15.2(?) 14.1 - 15.2(?) 0xCD2D, // 13.0 - 15.3(?) 14.1 - 15.3(?) 0x22DD, // 13.0 - 16.0(?) 14.1 - 16.0(?) 0x66C0, // 13.0 - 16.1(?) 14.1 - 16.1(?) 0xD54F, // 13.0 - 16.2(?) 14.1 - 16.2(?) 0xB013, // 13.0 - 16.3(?) 14.1 - 16.3(?) 0x5417, // 13.0 - 17.0(?) 14.1 - 17.0(?) 0x7C91, // 14.1 - 17.1(?) 4.3 - 17.1(?) 0x5770, // 14.1 - 17.2(?) 4.3 - 17.2(?) 0x7C53, // 14.1 - 17.3(?) 13.0 - 17.3(?) 0x64EC, // 14.1 - 18.0(?) 13.0 - 18.0(?) 0x73EE, // 14.1 - 18.1(?) 13.0 - 18.1(?) 0x4209, // 14.1 - 18.2(?) 13.0 - 18.2(?) 0x8C72, // 14.1 - 18.3(?) 13.0 - 18.3(?) 0xD1CF, // 14.1 - 19.0(?) 14.1 - 19.0(?) 0x609F, // 14.2 - 19.1(?) 14.2 - 19.1(?) 0x6F78, // 14.3 - 19.2(?) 14.3 - 19.2(?) 0x2E3C // 14.3 - 19.3(?) 14.3 - 19.3(?) ]; var magicNumbers142 = [ // Mathematica 14.2, System Modeler 14.2 0xEEFE, // 14.1 - 14.2 4.3 - 14.2 0x7C91, // 14.1 - 17.1(?) 4.3 - 17.1(?) 0x5770, // 14.1 - 17.2(?) 4.3 - 17.2(?) 0x7C53, // 14.1 - 17.3(?) 13.0 - 17.3(?) 0x64EC, // 14.1 - 18.0(?) 13.0 - 18.0(?) 0x73EE, // 14.1 - 18.1(?) 13.0 - 18.1(?) 0x4209, // 14.1 - 18.2(?) 13.0 - 18.2(?) 0x8C72, // 14.1 - 18.3(?) 13.0 - 18.3(?) 0xABEB, // 12.0 - 14.2 14.1 - 14.2 0x8250, // 12.0 - 14.3 14.1 - 14.3 0x8C68, // 12.0 - 15.0(?) 14.1 - 15.0(?) 0xE756, // 12.0 - 15.1(?) 14.1 - 15.1(?) 0xB4D0, // 13.0 - 15.2(?) 14.1 - 15.2(?) 0xCD2D, // 13.0 - 15.3(?) 14.1 - 15.3(?) 0x22DD, // 13.0 - 16.0(?) 14.1 - 16.0(?) 0x66C0, // 13.0 - 16.1(?) 14.1 - 16.1(?) 0xD54F, // 13.0 - 16.2(?) 14.1 - 16.2(?) 0xB013, // 13.0 - 16.3(?) 14.1 - 16.3(?) 0x5417, // 13.0 - 17.0(?) 14.1 - 17.0(?) 0xD1CF, // 14.1 - 19.0(?) 14.1 - 19.0(?) 0x609F // 14.2 - 19.1(?) 14.2 - 19.1(?) ]; var magicNumbersMath141 = [ // Mathematica 14.1, System Modeler 0x60F0, // 12.0 - 14.1 0xEEFE, // 14.1 - 14.2 4.3 - 14.2 0x7C91, // 14.1 - 17.1(?) 4.3 - 17.1(?) 0x5770, // 14.1 - 17.2(?) 4.3 - 17.2(?) 0x7C53, // 14.1 - 17.3(?) 13.0 - 17.3(?) 0x64EC, // 14.1 - 18.0(?) 13.0 - 18.0(?) 0x73EE, // 14.1 - 18.1(?) 13.0 - 18.1(?) 0x4209, // 14.1 - 18.2(?) 13.0 - 18.2(?) 0x8C72, // 14.1 - 18.3(?) 13.0 - 18.3(?) 0xABEB, // 12.0 - 14.2 14.1 - 14.2 0x8250, // 12.0 - 14.3 14.1 - 14.3 0x8C68, // 12.0 - 15.0(?) 14.1 - 15.0(?) 0xE756, // 12.0 - 15.1(?) 14.1 - 15.1(?) 0xB4D0, // 13.0 - 15.2(?) 14.1 - 15.2(?) 0xCD2D, // 13.0 - 15.3(?) 14.1 - 15.3(?) 0x22DD, // 13.0 - 16.0(?) 14.1 - 16.0(?) 0x66C0, // 13.0 - 16.1(?) 14.1 - 16.1(?) 0xD54F, // 13.0 - 16.2(?) 14.1 - 16.2(?) 0xB013, // 13.0 - 16.3(?) 14.1 - 16.3(?) 0x5417, // 13.0 - 17.0(?) 14.1 - 17.0(?) 0xD1CF // 14.1 - 19.0(?) 14.1 - 19.0(?) ]; var magicNumbersMath140 = [ // Mathematica 14.0, System Modeler 0x8E3C, // 12.0 - 14.0 0x60F0, // 12.0 - 14.1 0xABEB, // 12.0 - 14.2 14.1 - 14.2 0x8250, // 12.0 - 14.3 14.1 - 14.3 0x8C68, // 12.0 - 15.0(?) 14.1 - 15.0(?) 0xE756, // 12.0 - 15.1(?) 14.1 - 15.1(?) 0xB4D0, // 13.0 - 15.2(?) 14.1 - 15.2(?) 0xCD2D, // 13.0 - 15.3(?) 14.1 - 15.3(?) 0x22DD, // 13.0 - 16.0(?) 14.1 - 16.0(?) 0x66C0, // 13.0 - 16.1(?) 14.1 - 16.1(?) 0xD54F, // 13.0 - 16.2(?) 14.1 - 16.2(?) 0xB013, // 13.0 - 16.3(?) 14.1 - 16.3(?) 0x5417 // 13.0 - 17.0(?) 14.1 - 17.0(?) ]; var magicNumbersMath133 = [ // Mathematica 13.3, System Modeler 0x44F1, // 10.2 - 13.3 0x8E3C, // 12.0 - 14.0 0x60F0, // 12.0 - 14.1 0xABEB, // 12.0 - 14.2 14.1 - 14.2 0x8250, // 12.0 - 14.3 14.1 - 14.3 0x8C68, // 12.0 - 15.0(?) 14.1 - 15.0(?) 0xE756, // 12.0 - 15.1(?) 14.1 - 15.1(?) 0xB4D0, // 13.0 - 15.2(?) 14.1 - 15.2(?) 0xCD2D, // 13.0 - 15.3(?) 14.1 - 15.3(?) 0x22DD, // 13.0 - 16.0(?) 14.1 - 16.0(?) 0x66C0, // 13.0 - 16.1(?) 14.1 - 16.1(?) 0xD54F, // 13.0 - 16.2(?) 14.1 - 16.2(?) 0xB013, // 13.0 - 16.3(?) 14.1 - 16.3(?) 0x5417 // 13.0 - 17.0(?) 14.1 - 17.0(?) ]; var magicNumbersMath132 = [ // Mathematica 13.2, System Modeler 0x29C2, // 10.2 - 13.2 0x44F1, // 10.2 - 13.3 0x8E3C, // 12.0 - 14.0 0x60F0, // 12.0 - 14.1 0xABEB, // 12.0 - 14.2 14.1 - 14.2 0x8250, // 12.0 - 14.3 14.1 - 14.3 0x8C68, // 12.0 - 15.0(?) 14.1 - 15.0(?) 0xE756, // 12.0 - 15.1(?) 14.1 - 15.1(?) 0xB4D0, // 13.0 - 15.2(?) 14.1 - 15.2(?) 0xCD2D, // 13.0 - 15.3(?) 14.1 - 15.3(?) 0x22DD, // 13.0 - 16.0(?) 14.1 - 16.0(?) 0x66C0, // 13.0 - 16.1(?) 14.1 - 16.1(?) 0xD54F, // 13.0 - 16.2(?) 14.1 - 16.2(?) 0xB013, // 13.0 - 16.3(?) 14.1 - 16.3(?) 0x5417 // 13.0 - 17.0(?) 14.1 - 17.0(?) ]; var magicNumbersMath131 = [ // Mathematica 13.1, System Modeler 0xEE71, // 10.2 - 13.1 0x29C2, // 10.2 - 13.2 0x44F1, // 10.2 - 13.3 0x8E3C, // 12.0 - 14.0 0x60F0, // 12.0 - 14.1 0xABEB, // 12.0 - 14.2 14.1 - 14.2 0x8250, // 12.0 - 14.3 14.1 - 14.3 0x8C68, // 12.0 - 15.0(?) 14.1 - 15.0(?) 0xE756, // 12.0 - 15.1(?) 14.1 - 15.1(?) 0xB4D0, // 13.0 - 15.2(?) 14.1 - 15.2(?) 0xCD2D, // 13.0 - 15.3(?) 14.1 - 15.3(?) 0x22DD, // 13.0 - 16.0(?) 14.1 - 16.0(?) 0x66C0, // 13.0 - 16.1(?) 14.1 - 16.1(?) 0xD54F, // 13.0 - 16.2(?) 14.1 - 16.2(?) 0xB013, // 13.0 - 16.3(?) 14.1 - 16.3(?) 0x5417 // 13.0 - 17.0(?) 14.1 - 17.0(?) ]; var magicNumbersMath130 = [ // Mathematica 13.0, System Modeler 0xDB75, // 10.2 - 13.0 0xEE71, // 10.2 - 13.1 0x29C2, // 10.2 - 13.2 0x44F1, // 10.2 - 13.3 0x8E3C, // 12.0 - 14.0 0x60F0, // 12.0 - 14.1 0xABEB, // 12.0 - 14.2 14.1 - 14.2 0x8250, // 12.0 - 14.3 14.1 - 14.3 0x8C68, // 12.0 - 15.0(?) 14.1 - 15.0(?) 0xE756, // 12.0 - 15.1(?) 14.1 - 15.1(?) 0xB4D0, // 13.0 - 15.2(?) 14.1 - 15.2(?) 0xCD2D, // 13.0 - 15.3(?) 14.1 - 15.3(?) 0x22DD, // 13.0 - 16.0(?) 14.1 - 16.0(?) 0x66C0, // 13.0 - 16.1(?) 14.1 - 16.1(?) 0xD54F, // 13.0 - 16.2(?) 14.1 - 16.2(?) 0xB013, // 13.0 - 16.3(?) 14.1 - 16.3(?) 0x5417 // 13.0 - 17.0(?) 14.1 - 17.0(?) ]; var magicNumbersMath123 = [ // Mathematica 12.3, System Modeler 0xD227, // 10.2 - 12.3 0xDB75, // 10.2 - 13.0 0xEE71, // 10.2 - 13.1 0x29C2, // 10.2 - 13.2 0x44F1, // 10.2 - 13.3 0x8E3C, // 12.0 - 14.0 0x60F0, // 12.0 - 14.1 0xABEB, // 12.0 - 14.2 14.1 - 14.2 0x8250, // 12.0 - 14.3 14.1 - 14.3 0x8C68, // 12.0 - 15.0(?) 14.1 - 15.0(?) 0xE756 // 12.0 - 15.1(?) 14.1 - 15.1(?) ]; var magicNumbersMath122 = [ // Mathematica 12.2, System Modeler 0x2FDB, // 10.2 - 12.2 0xD227, // 10.2 - 12.3 0xDB75, // 10.2 - 13.0 0xEE71, // 10.2 - 13.1 0x29C2, // 10.2 - 13.2 0x44F1, // 10.2 - 13.3 0x8E3C, // 12.0 - 14.0 0x60F0, // 12.0 - 14.1 0xABEB, // 12.0 - 14.2 14.1 - 14.2 0x8250, // 12.0 - 14.3 14.1 - 14.3 0x8C68, // 12.0 - 15.0(?) 14.1 - 15.0(?) 0xE756 // 12.0 - 15.1(?) 14.1 - 15.1(?) ]; var magicNumbersMath121 = [ // Mathematica 12.1, System Modeler 0xE4A8, // 10.0 - 12.1 0x2FDB, // 10.2 - 12.2 0xD227, // 10.2 - 12.3 0xDB75, // 10.2 - 13.0 0xEE71, // 10.2 - 13.1 0x29C2, // 10.2 - 13.2 0x44F1, // 10.2 - 13.3 0x8E3C, // 12.0 - 14.0 0x60F0, // 12.0 - 14.1 0xABEB, // 12.0 - 14.2 14.1 - 14.2 0x8250, // 12.0 - 14.3 14.1 - 14.3 0x8C68, // 12.0 - 15.0(?) 14.1 - 15.0(?) 0xE756 // 12.0 - 15.1(?) 14.1 - 15.1(?) ]; var magicNumbersMath120 = [ // Mathematica 12.0, System Modeler 0xA68B, // 10.0 - 12.0 0xE4A8, // 10.0 - 12.1 0xA439, // 10.0 - 12.0 0x2FDB, // 10.2 - 12.2 0xD227, // 10.2 - 12.3 0xDB75, // 10.2 - 13.0 0xEE71, // 10.2 - 13.1 0x29C2, // 10.2 - 13.2 0x44F1, // 10.2 - 13.3 0x8E3C, // 12.0 - 14.0 0x60F0, // 12.0 - 14.1 0xABEB, // 12.0 - 14.2 14.1 - 14.2 0x8250, // 12.0 - 14.3 14.1 - 14.3 0x8C68, // 12.0 - 15.0(?) 14.1 - 15.0(?) 0xE756 // 12.0 - 15.1(?) 14.1 - 15.1(?) ]; var magicNumbersMath113 = [ // Mathematica 11.3 0x29F8, // 10.0 - 11.3 0xA68B, // 10.0 - 12.0 0xE4A8, // 10.0 - 12.1 0xA439, // 10.0 - 12.0 0x2FDB, // 10.2 - 12.2 0xD227, // 10.2 - 12.3 0xDB75, // 10.2 - 13.0 0xEE71, // 10.2 - 13.1 0x29C2, // 10.2 - 13.2 0x44F1 // 10.2 - 13.3 ]; var magicNumbersMath112 = [ // Mathematica 11.2 0x6A91, // 10.0 - 11.2 0x29F8, // 10.0 - 11.3 0xA68B, // 10.0 - 12.0 0xE4A8, // 10.0 - 12.1 0xA439, // 10.0 - 12.0 0x2FDB, // 10.2 - 12.2 0xD227, // 10.2 - 12.3 0xDB75, // 10.2 - 13.0 0xEE71, // 10.2 - 13.1 0x29C2, // 10.2 - 13.2 0x44F1 // 10.2 - 13.3 ]; var magicNumbersMath111 = [ // Mathematica 11.1 0x42DD, // 10.0 - 11.1 0x6A91, // 10.0 - 11.2 0x29F8, // 10.0 - 11.3 0xA68B, // 10.0 - 12.0 0xE4A8, // 10.0 - 12.1 0xA439, // 10.0 - 12.0 0x2FDB, // 10.2 - 12.2 0xD227, // 10.2 - 12.3 0xDB75, // 10.2 - 13.0 0xEE71, // 10.2 - 13.1 0x29C2, // 10.2 - 13.2 0x44F1 // 10.2 - 13.3 ]; var magicNumbersMath110 = [ // Mathematica 11.0.0, 11.0.1 0x25DB, // 10.0 - 11.0 0x42DD, // 10.0 - 11.1 0x6A91, // 10.0 - 11.2 0x29F8, // 10.0 - 11.3 0xA68B, // 10.0 - 12.0 0xE4A8, // 10.0 - 12.1 0xA439, // 10.0 - 12.0 0x2FDB, // 10.2 - 12.2 0xD227, // 10.2 - 12.3 0xDB75, // 10.2 - 13.0 0xEE71, // 10.2 - 13.1 0x29C2, // 10.2 - 13.2 0x44F1 // 10.2 - 13.3 ]; var magicNumbersMath104 = [ // Mathematica 10.4 0x5750, // 10.0 - 10.4 //0x14411, // 10.0 - 10.4, не работает 0x25DB, // 10.0 - 11.0 0x42DD, // 10.0 - 11.1 0x6A91, // 10.0 - 11.2 0x29F8, // 10.0 - 11.3 0xA68B, // 10.0 - 12.0 0xE4A8, // 10.0 - 12.1 0xA439, // 10.0 - 12.0 0x2FDB, // 10.2 - 12.2 0xD227, // 10.2 - 12.3 0xDB75, // 10.2 - 13.0 0xEE71, // 10.2 - 13.1 0x29C2, // 10.2 - 13.2 0x44F1 // 10.2 - 13.3 ]; var magicNumbersMath103 = [ // Mathematica 10.3.0, 10.3.1 0x80B9, // 10.0 - 10.3 0x5750, // 10.0 - 10.4 //0x14411, // 10.0 - 10.4, не работает 0x25DB, // 10.0 - 11.0 0x42DD, // 10.0 - 11.1 0x6A91, // 10.0 - 11.2 0x29F8, // 10.0 - 11.3 0xA68B, // 10.0 - 12.0 0xE4A8, // 10.0 - 12.1 0xA439, // 10.0 - 12.0 0x2FDB, // 10.2 - 12.2 0xD227, // 10.2 - 12.3 0xDB75, // 10.2 - 13.0 0xEE71, // 10.2 - 13.1 0x29C2, // 10.2 - 13.2 0x44F1 // 10.2 - 13.3 ]; var magicNumbersMath102 = [ // Mathematica 10.2 0xE3B7, // 10.0 - 10.2 //0x1764E, // 10.0 - 10.2, не работает 0x80B9, // 10.0 - 10.3 0x5750, // 10.0 - 10.4 //0x14411, // 10.0 - 10.4, не работает 0x25DB, // 10.0 - 11.0 0x42DD, // 10.0 - 11.1 0x6A91, // 10.0 - 11.2 0x29F8, // 10.0 - 11.3 0xA68B, // 10.0 - 12.0 0xE4A8, // 10.0 - 12.1 0xA439, // 10.0 - 12.0 0x2FDB, // 10.2 - 12.2 0xD227, // 10.2 - 12.3 0xDB75, // 10.2 - 13.0 0xEE71, // 10.2 - 13.1 0x29C2, // 10.2 - 13.2 0x44F1 // 10.2 - 13.3 ]; var magicNumbersMath101 = [ // Mathematica 10.1 0xC1AE, // 10.0 - 10.1 0xE3B7, // 10.0 - 10.2 //0x1764E, // 10.0 - 10.2, не работает 0x80B9, // 10.0 - 10.3 0x5750, // 10.0 - 10.4 //0x14411, // 10.0 - 10.4, не работает 0x25DB, // 10.0 - 11.0 0x42DD, // 10.0 - 11.1 0x6A91, // 10.0 - 11.2 0x29F8, // 10.0 - 11.3 0xA68B, // 10.0 - 12.0 0xE4A8, // 10.0 - 12.1 0xA439 // 10.0 - 12.0 ]; var magicNumbersMath100 = [ // Mathematica 10.0 0xDA5E, // 10.0 - 10.0 0xC1AE, // 10.0 - 10.1 0xE3B7, // 10.0 - 10.2 //0x1764E, // 10.0 - 10.2, не работает 0x80B9, // 10.0 - 10.3 0x5750, // 10.0 - 10.4 //0x14411, // 10.0 - 10.4, не работает 0x25DB, // 10.0 - 11.0 0x42DD, // 10.0 - 11.1 0x6A91, // 10.0 - 11.2 0x29F8, // 10.0 - 11.3 0xA68B, // 10.0 - 12.0 0xE4A8, // 10.0 - 12.1 0xA439 // 10.0 - 12.0 ]; var magicNumbersSM141 = [ // System Modeler 14.1, Mathematica 0x1361, // 4.3 - 14.1 0xEEFE, // 4.3 - 14.2 14.1 - 14.2 0x7C91, // 4.3 - 17.1(?) 14.1 - 17.1(?) 0x5770, // 4.3 - 17.2(?) 14.1 - 17.2(?) 0x7C53, // 13.0 - 17.3(?) 14.1 - 17.3(?) 0x64EC, // 13.0 - 18.0(?) 14.1 - 18.0(?) 0x73EE, // 13.0 - 18.1(?) 14.1 - 18.1(?) 0x4209, // 13.0 - 18.2(?) 14.1 - 18.2(?) 0x8C72, // 13.0 - 18.3(?) 14.1 - 18.3(?) 0xABEB, // 14.1 - 14.2 12.0 - 14.2 0x8250, // 14.1 - 14.3 12.0 - 14.3 0x8C68, // 14.1 - 15.0(?) 12.0 - 15.0(?) 0xE756, // 14.1 - 15.1(?) 12.0 - 15.1(?) 0xB4D0, // 14.1 - 15.2(?) 13.0 - 15.2(?) 0xCD2D, // 14.1 - 15.3(?) 13.0 - 15.3(?) 0x22DD, // 14.1 - 16.0(?) 13.0 - 16.0(?) 0x66C0, // 14.1 - 16.1(?) 13.0 - 16.1(?) 0xD54F, // 14.1 - 16.2(?) 13.0 - 16.2(?) 0xB013, // 14.1 - 16.3(?) 13.0 - 16.3(?) 0x5417, // 14.1 - 17.0(?) 13.0 - 17.0(?) 0xD1CF // 14.1 - 19.0(?) 14.1 - 19.0(?) ]; var magicNumbersSM140 = [ // System Modeler 14.0, Mathematica 0x755E, // 4.3 - 14.0 0x1361, // 4.3 - 14.1 0xEEFE, // 4.3 - 14.2 14.1 - 14.2 0x7C91, // 4.3 - 17.1(?) 14.1 - 17.1(?) 0x5770, // 4.3 - 17.2(?) 14.1 - 17.2(?) 0x7C53, // 13.0 - 17.3(?) 14.1 - 17.3(?) 0x64EC, // 13.0 - 18.0(?) 14.1 - 18.0(?) 0x73EE, // 13.0 - 18.1(?) 14.1 - 18.1(?) 0x4209, // 13.0 - 18.2(?) 14.1 - 18.2(?) 0x8C72 // 13.0 - 18.3(?) 14.1 - 18.3(?) ]; var magicNumbersSM133 = [ // System Modeler 13.3, Mathematica 0xA5CE, // 4.3 - 13.3 0x755E, // 4.3 - 14.0 0x1361, // 4.3 - 14.1 0xEEFE, // 4.3 - 14.2 14.1 - 14.2 0x7C91, // 4.3 - 17.1(?) 14.1 - 17.1(?) 0x5770, // 4.3 - 17.2(?) 14.1 - 17.2(?) 0x7C53, // 13.0 - 17.3(?) 14.1 - 17.3(?) 0x64EC, // 13.0 - 18.0(?) 14.1 - 18.0(?) 0x73EE, // 13.0 - 18.1(?) 14.1 - 18.1(?) 0x4209, // 13.0 - 18.2(?) 14.1 - 18.2(?) 0x8C72 // 13.0 - 18.3(?) 14.1 - 18.3(?) ]; var magicNumbersSM132 = [ // System Modeler 13.2, Mathematica 0xF536, // 4.3 - 13.2 0xA5CE, // 4.3 - 13.3 0x755E, // 4.3 - 14.0 0x1361, // 4.3 - 14.1 0xEEFE, // 4.3 - 14.2 14.1 - 14.2 0x7C91, // 4.3 - 17.1(?) 14.1 - 17.1(?) 0x5770, // 4.3 - 17.2(?) 14.1 - 17.2(?) 0x7C53, // 13.0 - 17.3(?) 14.1 - 17.3(?) 0x64EC, // 13.0 - 18.0(?) 14.1 - 18.0(?) 0x73EE, // 13.0 - 18.1(?) 14.1 - 18.1(?) 0x4209, // 13.0 - 18.2(?) 14.1 - 18.2(?) 0x8C72 // 13.0 - 18.3(?) 14.1 - 18.3(?) ]; var magicNumbersSM131 = [ // System Modeler 13.1, Mathematica 0x1330, // 4.3 - 13.1 0xF536, // 4.3 - 13.2 0xA5CE, // 4.3 - 13.3 0x755E, // 4.3 - 14.0 0x1361, // 4.3 - 14.1 0xEEFE, // 4.3 - 14.2 14.1 - 14.2 0x7C91, // 4.3 - 17.1(?) 14.1 - 17.1(?) 0x5770, // 4.3 - 17.2(?) 14.1 - 17.2(?) 0x7C53, // 13.0 - 17.3(?) 14.1 - 17.3(?) 0x64EC, // 13.0 - 18.0(?) 14.1 - 18.0(?) 0x73EE, // 13.0 - 18.1(?) 14.1 - 18.1(?) 0x4209, // 13.0 - 18.2(?) 14.1 - 18.2(?) 0x8C72 // 13.0 - 18.3(?) 14.1 - 18.3(?) ]; var magicNumbersSM130 = [ // System Modeler 13.0, Mathematica 0xBF47, // 4.3 - 13.0 0x1330, // 4.3 - 13.1 0xF536, // 4.3 - 13.2 0xA5CE, // 4.3 - 13.3 0x755E, // 4.3 - 14.0 0x1361, // 4.3 - 14.1 0xEEFE, // 4.3 - 14.2 14.1 - 14.2 0x7C91, // 4.3 - 17.1(?) 14.1 - 17.1(?) 0x5770, // 4.3 - 17.2(?) 14.1 - 17.2(?) 0x7C53, // 13.0 - 17.3(?) 14.1 - 17.3(?) 0x64EC, // 13.0 - 18.0(?) 14.1 - 18.0(?) 0x73EE, // 13.0 - 18.1(?) 14.1 - 18.1(?) 0x4209, // 13.0 - 18.2(?) 14.1 - 18.2(?) 0x8C72 // 13.0 - 18.3(?) 14.1 - 18.3(?) ]; var magicNumbersSM123 = [ // System Modeler 12.3, Mathematica 0x6188, // 4.0 - 12.3 0xBF47, // 4.3 - 13.0 0x1330, // 4.3 - 13.1 0xF536, // 4.3 - 13.2 0xA5CE, // 4.3 - 13.3 0x755E, // 4.3 - 14.0 0x1361, // 4.3 - 14.1 0xEEFE, // 4.3 - 14.2 14.1 - 14.2 0x7C91, // 4.3 - 17.1(?) 14.1 - 17.1(?) 0x5770 // 4.3 - 17.2(?) 14.1 - 17.2(?) ]; var magicNumbersSM122 = [ // System Modeler 12.2, Mathematica 0xAB0B, // 4.0 - 12.2 0x6188, // 4.0 - 12.3 0xBF47, // 4.3 - 13.0 0x1330, // 4.3 - 13.1 0xF536, // 4.3 - 13.2 0xA5CE, // 4.3 - 13.3 0x755E, // 4.3 - 14.0 0x1361, // 4.3 - 14.1 0xEEFE, // 4.3 - 14.2 14.1 - 14.2 0x7C91, // 4.3 - 17.1(?) 14.1 - 17.1(?) 0x5770 // 4.3 - 17.2(?) 14.1 - 17.2(?) ]; var magicNumbersSM121 = [ // System Modeler 12.1, Mathematica 0xB4D3, // 4.0 - 12.1 0xAB0B, // 4.0 - 12.2 0x6188, // 4.0 - 12.3 0xBF47, // 4.3 - 13.0 0x1330, // 4.3 - 13.1 0xF536, // 4.3 - 13.2 0xA5CE, // 4.3 - 13.3 0x755E, // 4.3 - 14.0 0x1361, // 4.3 - 14.1 0xEEFE, // 4.3 - 14.2 14.1 - 14.2 0x7C91, // 4.3 - 17.1(?) 14.1 - 17.1(?) 0x5770 // 4.3 - 17.2(?) 14.1 - 17.2(?) ]; var magicNumbersSM120 = [ // System Modeler 12.0, Mathematica 0x47C5, // 4.0 - 12.0 0xB4D3, // 4.0 - 12.1 0xAB0B, // 4.0 - 12.2 0x6188, // 4.0 - 12.3 0xBF47, // 4.3 - 13.0 0x1330, // 4.3 - 13.1 0xF536, // 4.3 - 13.2 0xA5CE, // 4.3 - 13.3 0x755E, // 4.3 - 14.0 0x1361, // 4.3 - 14.1 0xEEFE, // 4.3 - 14.2 14.1 - 14.2 0x7C91, // 4.3 - 17.1(?) 14.1 - 17.1(?) 0x5770 // 4.3 - 17.2(?) 14.1 - 17.2(?) ]; var magicNumbersSM051 = [ // System Modeler 5.1, Mathematica 0x81DD, // 4.0 - 5.1 0x47C5, // 4.0 - 12.0 0xB4D3, // 4.0 - 12.1 0xAB0B, // 4.0 - 12.2 0x6188, // 4.0 - 12.3 0xBF47, // 4.3 - 13.0 0x1330, // 4.3 - 13.1 0xF536, // 4.3 - 13.2 0xA5CE, // 4.3 - 13.3 0x755E, // 4.3 - 14.0 0x1361, // 4.3 - 14.1 0xEEFE, // 4.3 - 14.2 14.1 - 14.2 0x7C91, // 4.3 - 17.1(?) 14.1 - 17.1(?) 0x5770 // 4.3 - 17.2(?) 14.1 - 17.2(?) ]; var magicNumbersSM050 = [ // System Modeler 5.0, Mathematica 0x8330, // 4.0 - 5.0 0x81DD, // 4.0 - 5.1 0x47C5, // 4.0 - 12.0 0xB4D3, // 4.0 - 12.1 0xAB0B, // 4.0 - 12.2 0x6188, // 4.0 - 12.3 0xBF47, // 4.3 - 13.0 0x1330, // 4.3 - 13.1 0xF536, // 4.3 - 13.2 0xA5CE, // 4.3 - 13.3 0x755E, // 4.3 - 14.0 0x1361, // 4.3 - 14.1 0xEEFE, // 4.3 - 14.2 14.1 - 14.2 0x7C91, // 4.3 - 17.1(?) 14.1 - 17.1(?) 0x5770 // 4.3 - 17.2(?) 14.1 - 17.2(?) ]; var magicNumbersSM043 = [ // System Modeler 4.3, Mathematica 0x72C4, // 4.0 - 4.3 0x8330, // 4.0 - 5.0 0x81DD, // 4.0 - 5.1 0x47C5, // 4.0 - 12.0 0xB4D3, // 4.0 - 12.1 0xAB0B, // 4.0 - 12.2 0x6188, // 4.0 - 12.3 0xBF47, // 4.3 - 13.0 0x1330, // 4.3 - 13.1 0xF536, // 4.3 - 13.2 0xA5CE, // 4.3 - 13.3 0x755E, // 4.3 - 14.0 0x1361, // 4.3 - 14.1 0xEEFE, // 4.3 - 14.2 14.1 - 14.2 0x7C91, // 4.3 - 17.1(?) 14.1 - 17.1(?) 0x5770 // 4.3 - 17.2(?) 14.1 - 17.2(?) ]; var magicNumbersSM042 = [ // System Modeler 4.2 0x2F33, // 4.0 - 4.2 0x72C4, // 4.0 - 4.3 0x8330, // 4.0 - 5.0 0x81DD, // 4.0 - 5.1 0x47C5, // 4.0 - 12.0 0xB4D3, // 4.0 - 12.1 0xAB0B, // 4.0 - 12.2 0x6188 // 4.0 - 12.3 ]; var magicNumbersSM041 = [ // System Modeler 4.1 0x6897, // 4.0 - 4.1 0x2F33, // 4.0 - 4.2 0x72C4, // 4.0 - 4.3 0x8330, // 4.0 - 5.0 0x81DD, // 4.0 - 5.1 0x47C5, // 4.0 - 12.0 0xB4D3, // 4.0 - 12.1 0xAB0B, // 4.0 - 12.2 0x6188 // 4.0 - 12.3 ]; var magicNumbersSM040 = [ // System Modeler 4.0 0x15BF, // 4.0 0x6897, // 4.0 - 4.1 0x2F33, // 4.0 - 4.2 0x72C4, // 4.0 - 4.3 0x8330, // 4.0 - 5.0 0x81DD, // 4.0 - 5.1 0x47C5, // 4.0 - 12.0 0xB4D3, // 4.0 - 12.1 0xAB0B, // 4.0 - 12.2 0x6188 // 4.0 - 12.3 ]; var magicNumbersMathLM = [ // MathLM 10.0 - 14.3+ 0x5B29, 0x6587, 0x7F8C, 0x3575, 0x541A, 0x452D, 0x3FD1, 0x140A, 0x29A5, 0x72A4 ]; // "Таблица" в виде объекта с описаниями хэшей var hashToDescriptionTable = { 0x5B29: 'MathLM начиная с версии 10.0' , 0x6587: 'MathLM начиная с версии 10.0' , 0x7F8C: 'MathLM начиная с версии 10.0' , 0x3575: 'MathLM начиная с версии 10.0' , 0x541A: 'MathLM начиная с версии 10.0' , 0x452D: 'MathLM начиная с версии 10.0' , 0x3FD1: 'MathLM начиная с версии 10.0' , 0x140A: 'MathLM начиная с версии 10.0' , 0x29A5: 'MathLM начиная с версии 10.0' , 0x72A4: 'MathLM начиная с версии 10.0' , 0x15BF: 'System Modeler 4.0' , 0x6897: 'System Modeler 4.1, подходит для System Modeler 4.0 - 4.1' , 0x2F33: 'System Modeler 4.2, подходит для System Modeler 4.0 - 4.2' , 0x72C4: 'System Modeler 4.3, подходит для System Modeler 4.0 - 4.3' , 0x8330: 'System Modeler 5.0, подходит для System Modeler 4.0 - 5.0' , 0x81DD: 'System Modeler 5.1, подходит для System Modeler 4.0 - 5.1' , 0x47C5: 'System Modeler 12.0, подходит для System Modeler 4.0 - 12.0' , 0xB4D3: 'System Modeler 12.1, подходит для System Modeler 4.0 - 12.1' , 0xAB0B: 'System Modeler 12.2, подходит для System Modeler 4.0 - 12.2' , 0x6188: 'System Modeler 12.3, подходит для System Modeler 4.0 - 12.3' , 0xBF47: 'System Modeler 13.0, подходит для System Modeler 4.3 - 13.0' , 0x1330: 'System Modeler 13.1, подходит для System Modeler 4.3 - 13.1' , 0xF536: 'System Modeler 13.2, подходит для System Modeler 4.3 - 13.2' , 0xA5CE: 'System Modeler 13.3, подходит для System Modeler 4.3 - 13.3' , 0x755E: 'System Modeler 14.0, подходит для System Modeler 4.3 - 14.0' , 0x1361: 'System Modeler 14.1, подходит для System Modeler 4.3 - 14.1' , 0xDA5E: 'Mathematica 10.0' , 0xC1AE: 'Mathematica 10.1, подходит для Mathematica 10.0 - 10.1' , 0xE3B7: 'Mathematica 10.2, подходит для Mathematica 10.0 - 10.2' , 0x1764E:'Официально этот хэш не использовался, для Mathematica 10.0 - 10.2, но не работает' , 0x80B9: 'Mathematica 10.3, подходит для Mathematica 10.0 - 10.3' , 0x5750: 'Mathematica 10.4, подходит для Mathematica 10.0 - 10.4' , 0x14411:'Официально этот хэш не использовался, для Mathematica 10.0 - 10.4, но не работает' , 0x25DB: 'Mathematica 11.0, подходит для Mathematica 10.0 - 11.0' , 0x42DD: 'Mathematica 11.1, подходит для Mathematica 10.0 - 11.1' , 0x6A91: 'Mathematica 11.2, подходит для Mathematica 10.0 - 11.2' , 0x29F8: 'Mathematica 11.3, подходит для Mathematica 10.0 - 11.3' , 0xA68B: 'Mathematica 12.0, подходит для Mathematica 10.0 - 12.0' , 0xE4A8: 'Mathematica 12.1, подходит для Mathematica 10.0 - 12.1' , 0xA439: 'Официально этот хэш не использовался, подходит для Mathematica 10.0 - 12.0' , 0x2FDB: 'Mathematica 12.2, подходит для Mathematica 10.2 - 12.2' , 0xD227: 'Mathematica 12.3, подходит для Mathematica 10.2 - 12.3' , 0xDB75: 'Mathematica 13.0, подходит для Mathematica 10.2 - 13.0' , 0xEE71: 'Mathematica 13.1, подходит для Mathematica 10.2 - 13.1' , 0x29C2: 'Mathematica 13.2, подходит для Mathematica 10.2 - 13.2' , 0x44F1: 'Mathematica 13.3, подходит для Mathematica 10.2 - 13.3' , 0x8E3C: 'Mathematica 14.0, подходит для Mathematica 12.0 - 14.0' , 0x60F0: 'Mathematica 14.1, подходит для Mathematica 12.0 - 14.1' , 0xEEFE: 'Mathematica и System Modeler 14.2, подходит для Mathematica 14.1 - 14.2 и System Modeler 4.3 - 14.2' , 0xABEB: 'Официально этот хэш не использовался, подходит для Mathematica 12.0 - 14.2 и System Modeler 14.1 - 14.2' , 0x8250: 'Mathematica и System Modeler 14.3, подходит для Mathematica 12.0 - 14.3 и System Modeler 14.1 - 14.3' , 0x8C68: 'Mathematica и System Modeler 15.0(?), подходит для Mathematica 12.0 - 15.0(?) и System Modeler 14.1 - 15.0(?)', 0xE756: 'Mathematica и System Modeler 15.1(?), подходит для Mathematica 12.0 - 15.1(?) и System Modeler 14.1 - 15.1(?)', 0xB4D0: 'Mathematica и System Modeler 15.2(?), подходит для Mathematica 13.0 - 15.2(?) и System Modeler 14.1 - 15.2(?)', 0xCD2D: 'Mathematica и System Modeler 15.3(?), подходит для Mathematica 13.0 - 15.3(?) и System Modeler 14.1 - 15.3(?)', 0x22DD: 'Mathematica и System Modeler 16.0(?), подходит для Mathematica 13.0 - 16.0(?) и System Modeler 14.1 - 16.0(?)', 0x66C0: 'Mathematica и System Modeler 16.1(?), подходит для Mathematica 13.0 - 16.1(?) и System Modeler 14.1 - 16.1(?)', 0xD54F: 'Mathematica и System Modeler 16.2(?), подходит для Mathematica 13.0 - 16.2(?) и System Modeler 14.1 - 16.2(?)', 0xB013: 'Mathematica и System Modeler 16.3(?), подходит для Mathematica 13.0 - 16.3(?) и System Modeler 14.1 - 16.3(?)', 0x5417: 'Mathematica и System Modeler 17.0(?), подходит для Mathematica 13.0 - 17.0(?) и System Modeler 14.1 - 17.0(?)', 0x7C91: 'Mathematica и System Modeler 17.1(?), подходит для Mathematica 14.1 - 17.1(?) и System Modeler 4.3 - 17.1(?)' , 0x5770: 'Mathematica и System Modeler 17.2(?), подходит для Mathematica 14.1 - 17.2(?) и System Modeler 4.3 - 17.2(?)' , 0x7C53: 'Mathematica и System Modeler 17.3(?), подходит для Mathematica 14.1 - 17.3(?) и System Modeler 13.0 - 17.3(?)', 0x64EC: 'Mathematica и System Modeler 18.0(?), подходит для Mathematica 14.1 - 18.0(?) и System Modeler 13.0 - 18.0(?)', 0x73EE: 'Mathematica и System Modeler 18.1(?), подходит для Mathematica 14.1 - 18.1(?) и System Modeler 13.0 - 18.1(?)', 0x4209: 'Mathematica и System Modeler 18.2(?), подходит для Mathematica 14.1 - 18.2(?) и System Modeler 13.0 - 18.2(?)', 0x8C72: 'Mathematica и System Modeler 18.3(?), подходит для Mathematica 14.1 - 18.3(?) и System Modeler 13.0 - 18.3(?)', 0xD1CF: 'Mathematica и System Modeler 19.0(?), подходит для Mathematica 14.1 - 19.0(?) и System Modeler 14.1 - 19.0(?)', 0x609F: 'Mathematica и System Modeler 19.1(?), подходит для Mathematica 14.2 - 19.1(?) и System Modeler 14.2 - 19.1(?)', 0x6F78: 'Mathematica и System Modeler 19.2(?), подходит для Mathematica 14.3 - 19.2(?) и System Modeler 14.3 - 19.2(?)', 0x2E3C: 'Mathematica и System Modeler 19.3(?), подходит для Mathematica 14.3 - 19.3(?) и System Modeler 14.3 - 19.3(?)' }; // var hashToDescriptionTable{} // "Таблица" в виде объекта с описаниями MachineType var machineTypeToDescriptionTable = { 31: 'MacOSX-ARM64' , 33: 'Windows-ARM64' , 51: 'MacOSX-x86-64' , 58: 'Windows-ARM' , 61: 'Windows' , 62: 'Windows-x86-64', 65: 'Linux' }; // var machineTypeToDescriptionTable{} // Массив описаний для битов типа лицензии var licenseTypeBitToDescriptionArray = [ 'бит  0, битовая маска        1 — неизвестно', 'бит  1, битовая маска        2 — редакция Product Trial', 'бит  2, битовая маска        4 — редакция Student Edition', 'бит  3, битовая маска        8 — редакция Site License', 'бит  4, битовая маска       10 — Player', 'бит  5, битовая маска       20 — продукт Wolfram Player', 'бит  6, битовая маска       40 — продукт Wolfram Player Pro', 'бит  7, битовая маска       80 — неизвестно', 'бит  8, битовая маска      100 — неизвестно', 'бит  9, битовая маска      200 — неизвестно', 'бит 10, битовая маска      400 — неизвестно', 'бит 11, битовая маска      800 — редакция Home Edition', 'бит 12, битовая маска     1000 — редакция Enterprise Edition', 'бит 13, битовая маска     2000 — фича EnterpriseSigning', 'бит 14, битовая маска     4000 — неизвестно', 'бит 15, битовая маска     8000 — неизвестно', 'бит 16, битовая маска    10000 — неизвестно', 'бит 17, битовая маска    20000 — неизвестно', 'бит 18, битовая маска    40000 — неизвестно', 'бит 19, битовая маска    80000 — фича AltExpirationPolicy', 'бит 20, битовая маска   100000 — продукт Wolfram|Alpha Notebook Edition', 'бит 21, битовая маска   200000 — продукт Wolfram|One', 'бит 22, битовая маска   400000 — продукт Wolfram Finance Platform', 'бит 23, битовая маска   800000 — продукт Mathematica', 'бит 24, битовая маска  1000000 — продукт Wolfram Programming Lab', 'бит 25, битовая маска  2000000 — неизвестно', 'бит 26, битовая маска  4000000 — неизвестно', 'бит 27, битовая маска  8000000 — неизвестно', 'бит 28, битовая маска 10000000 — неизвестно', 'бит 29, битовая маска 20000000 — фича AutoRenewingSubscription', 'бит 30, битовая маска 40000000 — продукт System Modeler', 'бит 31, битовая маска 80000000 — неизвестно' ]; var versionMathList = [ '10.0' , '10.1' , '10.2' , '10.3.0', '10.3.1', '10.4' , '11.0.0', '11.0.1', '11.1' , '11.2' , '11.3' , '12.0' , '12.1' , '12.2' , '12.3' , '13.0' , '13.1' , '13.2' , '13.3' , '14.0' , '14.1' , '14.2' , '14.3' , '15.0' , '15.1' , '15.2' , '15.3' , '16.0' , '16.1' , '16.2' , '16.3' , '17.0' , '17.1' , '17.2' , '17.3' , '18.0' , '18.1' , '18.2' , '18.3' , '19.0' , '19.1' , '19.2' , '19.3' ]; var versionSMList = [ '4.0' , '4.1' , '4.2' , '4.3' , '5.0' , '5.1' , '12.0' , '12.1' , '12.2' , '12.3' , '13.0' , '13.1' , '13.2' , '13.3' , '14.0' , '14.1' , '14.2' , '14.3' , '15.0' , '15.1' , '15.2' , '15.3' , '16.0' , '16.1' , '16.2' , '16.3' , '17.0' , '17.1' , '17.2' , '17.3' , '18.0' , '18.1' , '18.2' , '18.3' , '19.0' , '19.1' , '19.2' , '19.3' ]; var productNameList = []; var defaultLicenseTypeForProduct = []; //--------------------------------------------------------------- function debug(msg) { document.getElementById('debug').insertAdjacentHTML('beforeend', '<div>[' + new Date().toLocaleTimeString() + '] ' + msg + '</div>'); }; //--------------------------------------------------------------- if (!Object.values) { Object.values = function(obj) { // Проверка, что аргумент является объектом if (obj === null || typeof obj !== 'object') { throw new TypeError('Object.values called on non-object'); }; var values = []; // Перебор всех собственных свойств объекта for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { values.push(obj[key]); }; }; return values; }; }; if (!Array.isArray) { Array.isArray = function(obj) { return Object.prototype.toString.call(obj) === '[object Array]'; }; }; if (!Array.prototype.flat) { Array.prototype.flat = function(depth) { depth = depth === Infinity ? Number.MAX_SAFE_INTEGER : (typeof depth === 'number' ? Math.floor(depth) : 1); var result = []; // Рекурсивная функция для выравнивания function flatten(arr, currentDepth) { for (var i = 0; i < arr.length; i++) { // Пропускаем пустые слоты (дырки) if (!arr.hasOwnProperty(i)) continue; var element = arr[i]; if (Array.isArray(element)) { if (currentDepth < depth) { flatten(element, currentDepth + 1); } else { result.push(element); }; } else { result.push(element); }; }; }; // Запуск обработки flatten(this, 0); return result; }; }; // only run when the Math.trunc() function is undefined if (!Math.trunc) { Math.trunc = function(n) { return n < 0 ? Math.ceil(n) : Math.floor(n); }; }; // only run when the map() function is undefined if (!Array.prototype.map) { Array.prototype.map = function(fn, scope) { var result = []; for (var i = 0, len = this.length; i < len; i++) { result.push(fn.call(scope, this[i], i, this)); }; return result; }; }; // only run when the filter() function is undefined if (!Array.prototype.filter) { Array.prototype.filter = function(fn, thisArg) { 'use strict'; // 1. Проверка, что колбэк является функцией if (typeof fn !== 'function') { throw new TypeError(fn + ' is not a function'); }; // 2. Преобразование this в объект (для примитивов) var arr = Object(this); // 3. Получение длины массива (32-битное беззнаковое число) var len = arr.length >>> 0; var result = []; var value, i = 0; // 4. Основной цикл while (i < len) { // Проверка существования индекса (для разреженных массивов) if (i in arr) { value = arr[i]; // Вызов колбэка с правильным контекстом if (fn.call(thisArg, value, i, arr)) { result.push(value); }; }; i++; }; return result; }; }; if (!String.prototype.trim) { String.prototype.trim = function() { return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); }; }; //--------------------------------------------------------------- function init() { productNameList[productIndexMathematica ] = 'Mathematica' ; productNameList[productIndexSystemModeler ] = 'System Modeler' ; productNameList[productIndexWolframFinancePlatform ] = 'Wolfram Finance Platform' ; productNameList[productIndexWolframOne ] = 'Wolfram|One' ; productNameList[productIndexWolframAlphaNotebookEdition] = 'Wolfram|Alpha Notebook Edition'; productNameList[productIndexWolframProgrammingLab ] = 'Wolfram Programming Lab' ; productNameList[productIndexWolframPlayerPro ] = 'Wolfram Player Pro' ; productNameList[productIndexWolframPlayer ] = 'Wolfram Player' ; defaultLicenseTypeForProduct[productIndexMathematica ] = getDefaultLicenseTypeForProduct(productIndexMathematica ); defaultLicenseTypeForProduct[productIndexSystemModeler ] = getDefaultLicenseTypeForProduct(productIndexSystemModeler ); defaultLicenseTypeForProduct[productIndexWolframFinancePlatform ] = getDefaultLicenseTypeForProduct(productIndexWolframFinancePlatform ); defaultLicenseTypeForProduct[productIndexWolframOne ] = getDefaultLicenseTypeForProduct(productIndexWolframOne ); defaultLicenseTypeForProduct[productIndexWolframAlphaNotebookEdition] = getDefaultLicenseTypeForProduct(productIndexWolframAlphaNotebookEdition); defaultLicenseTypeForProduct[productIndexWolframProgrammingLab ] = getDefaultLicenseTypeForProduct(productIndexWolframProgrammingLab ); defaultLicenseTypeForProduct[productIndexWolframPlayerPro ] = getDefaultLicenseTypeForProduct(productIndexWolframPlayerPro ); defaultLicenseTypeForProduct[productIndexWolframPlayer ] = getDefaultLicenseTypeForProduct(productIndexWolframPlayer ); }; function genKeyValStr(mathID, activationKey, maxLicenseProcessesSubprocesses, licenseType, licenseExpirationDate, licenseClass) { var keyValStr = ""; // Установка дефолтных значений activationKey = activationKey || defaultActivationKey; // defaultActivationKey объявлен выше maxLicenseProcessesSubprocesses = maxLicenseProcessesSubprocesses || "" ; licenseType = licenseType || "" ; licenseExpirationDate = licenseExpirationDate || "" ; licenseClass = licenseClass || "" ; if (typeof mathID !== "undefined" && mathID.length != 0) { keyValStr = mathID; if (licenseExpirationDate .length != 0) {keyValStr += "@" + licenseExpirationDate }; if (maxLicenseProcessesSubprocesses.length != 0) {keyValStr += ":" + maxLicenseProcessesSubprocesses}; if (licenseClass .length != 0) {keyValStr += "*" + licenseClass }; if (licenseType .length != 0) {keyValStr += "$" + licenseType }; keyValStr += "&" + activationKey; }; return keyValStr; }; function keyValStr2mathID(keyValStr) { var mathID = ""; var index0 = 0; var index1 = keyValStr.indexOf("@"); var index2 = keyValStr.indexOf(":"); var index3 = keyValStr.indexOf("*"); var index4 = keyValStr.indexOf("$"); var index5 = keyValStr.indexOf("&"); if (keyValStr.startsWith('We Are Everywhere!')) { index0 = 18; }; if (index1 >= 0) { mathID = keyValStr.substring(index0, index1); } else if (index2 >= 0) { mathID = keyValStr.substring(index0, index2); } else if (index3 >= 0) { mathID = keyValStr.substring(index0, index3); } else if (index4 >= 0) { mathID = keyValStr.substring(index0, index4); } else if (index5 >= 0) { mathID = keyValStr.substring(index0, index5); } else { mathID = keyValStr.substring(index0); }; return mathID; }; function keyValStr2licenseExpirationDate(keyValStr) { var licenseExpirationDate = ""; var index1 = keyValStr.indexOf("@"); var index2 = keyValStr.indexOf(":"); var index3 = keyValStr.indexOf("*"); var index4 = keyValStr.indexOf("$"); var index5 = keyValStr.indexOf("&"); if (index1 >= 0) { if (index2 >= 0) { licenseExpirationDate = keyValStr.substring(index1 + 1, index2); } else if (index3 >= 0) { licenseExpirationDate = keyValStr.substring(index1 + 1, index3); } else if (index4 >= 0) { licenseExpirationDate = keyValStr.substring(index1 + 1, index4); } else if (index5 >= 0) { licenseExpirationDate = keyValStr.substring(index1 + 1, index5); }; }; return licenseExpirationDate; }; function keyValStr2maxLicenseProcessesSubprocesses(keyValStr) { var maxLicenseProcessesSubprocesses = ""; var index2 = keyValStr.indexOf(":"); var index3 = keyValStr.indexOf("*"); var index4 = keyValStr.indexOf("$"); var index5 = keyValStr.indexOf("&"); if (index2 >= 0) { if (index3 >= 0) { maxLicenseProcessesSubprocesses = keyValStr.substring(index2 + 1, index3); } else if (index4 >= 0) { maxLicenseProcessesSubprocesses = keyValStr.substring(index2 + 1, index4); } else if (index5 >= 0) { maxLicenseProcessesSubprocesses = keyValStr.substring(index2 + 1, index5); }; }; return maxLicenseProcessesSubprocesses; }; function keyValStr2licenseClass(keyValStr) { var licenseClass = ""; var index3 = keyValStr.indexOf("*"); var index4 = keyValStr.indexOf("$"); var index5 = keyValStr.indexOf("&"); if (index3 >= 0) { if (index4 >= 0) { licenseClass = keyValStr.substring(index3 + 1, index4); } else if (index5 >= 0) { licenseClass = keyValStr.substring(index3 + 1, index5); }; }; return licenseClass; }; function keyValStr2licenseType(keyValStr) { var licenseType = ""; var index4 = keyValStr.indexOf("$"); var index5 = keyValStr.indexOf("&"); if (index4 >= 0) { if (index5 >= 0) { licenseType = keyValStr.substring(index4 + 1, index5); }; }; return licenseType; }; function keyValStr2ActivationKey(keyValStr) { var activationKey = ""; var index5 = keyValStr.indexOf("&"); if (index5 >= 0) { activationKey = keyValStr.substring(index5 + 1); }; return activationKey; }; function f2(n, byte, c) { for (var bitIndex = 7; bitIndex >= 0; bitIndex--) { var bit = (byte >> bitIndex) & 1; var temp = (n << 1) + bit; if (n & 0x8000) { temp ^= c; }; n = temp; }; return n; }; // inverse of f2: testSalt(f2(x, y, c), y, c) == x function testSalt(n, byte, c) { for (var bitIndex = 0; bitIndex <= 7; bitIndex += 1) { var bit = (byte >> bitIndex) & 1; if (bit + ((n - bit) & ~1) == n) { n = (n - bit) >> 1; } else { n = ((c - bit) ^ n) >> 1; }; }; return n; }; function genPassword(keyValStr, salt) { var licenseExpirationDate = keyValStr2licenseExpirationDate (keyValStr); var maxLicenseProcessesSubprocesses = keyValStr2maxLicenseProcessesSubprocesses(keyValStr); var licenseClass = keyValStr2licenseClass (keyValStr); var licenseType = keyValStr2licenseType (keyValStr); // salt = parseInt(salt); salt = String(salt); if (salt.indexOf("0x") === 0) { salt = parseInt(salt.replace(/^0x/, ''), 16); } else { salt = parseInt(salt, 10); }; var uuid = keyValStr.split('').map(function(x){return x.charCodeAt()}); var salt1 = salt; for (var byteIndex = uuid.length - 1; byteIndex >= 0; byteIndex -= 1) { salt1 = testSalt(salt1, uuid[byteIndex], 0x105C3); }; /* var offset1 = 0; while (testSalt(testSalt(salt1, offset1 & 0xFF, 0x105C3), offset1 >> 8, 0x105C3) !== 0xA5B6) { offset1 ++; if (offset1 >= 0xFFFF) { return ''; } } */ salt1 = salt1 ^ 0xCEDF; salt1 = Math.trunc(((salt1 + 0x72FA) & 0xFFFF) * 99999 / 0xFFFF); var offset1 = '0000' + salt1; offset1 = offset1.substring(offset1.length - 5); var salt2 = parseInt(offset1.substring(0, 2) + offset1.substring(3, 5) + offset1.substring(2, 3), 10); salt2 = Math.trunc((salt2 / 99999.0) * 0xFFFF, 10) + 1; salt2 = testSalt(testSalt(0, salt2 & 0xFF, 0x1064B), salt2 >> 8, 0x1064B); for (var i = uuid.length - 1; i >= 0; i -= 1) { salt2 = testSalt(salt2, uuid[i], 0x1064B); }; /* var offset2 = 0; while(testSalt(testSalt(salt2, offset2 & 0xFF, 0x1064B), offset2 >> 8, 0x1064B) !== 0xA5B6) { offset2 += 1; if (offset2 >= 0xFFFF) { return ''; } } */ salt2 = salt2 ^ 0xEF22; salt2 = Math.trunc((salt2 & 0xFFFF) * 99999 / 0xFFFF); var offset2 = '0000' + salt2; offset2 = offset2.substring(offset2.length - 5); var password = [ offset2.charAt(3), offset1.charAt(3), offset1.charAt(1), offset1.charAt(0), '-', offset2.charAt(4), offset1.charAt(2), offset2.charAt(0), '-', offset2.charAt(2), offset1.charAt(4), offset2.charAt(1) ].join(''); if ((maxLicenseProcessesSubprocesses.length > 0) || (licenseType.length > 0) || (licenseExpirationDate.length > 0) || (licenseClass.length > 0)) {password += ":" + maxLicenseProcessesSubprocesses}; if ( (licenseType.length > 0) || (licenseExpirationDate.length > 0) || (licenseClass.length > 0)) {password += ":" + licenseType }; if ( (licenseExpirationDate.length > 0) || (licenseClass.length > 0)) {password += ":" + licenseExpirationDate }; if (licenseClass.length > 0) {password += ":" + licenseClass }; return password; }; function password2Hash(mathID, activationKey, password) { var parts = password.split(":"); while (parts.length < 5) { parts.push(""); }; var maxLicenseProcessesSubprocesses = parts[1]; var licenseType = parts[2]; var licenseExpirationDate = parts[3]; var licenseClass = parts[4]; var keyValStr = ''; if (licenseClass) { keyValStr = 'We Are Everywhere!'; }; keyValStr += genKeyValStr(mathID, activationKey, maxLicenseProcessesSubprocesses, licenseType, licenseExpirationDate, licenseClass); var uuid = keyValStr.split('').map(function(x){return x.charCodeAt()}); var offset1 = password.charAt( 3) + password.charAt( 2) + password.charAt( 6) + password.charAt( 1) + password.charAt(10); var offset2 = password.charAt( 7) + password.charAt(11) + password.charAt( 9) + password.charAt( 0) + password.charAt( 5); var salt1 = ((Math.ceil((Number(offset1) * 0xFFFF) / 99999) - 0x72FA) & 0xFFFF) ^ 0xCEDF; var salt2 = Math.ceil((Number(offset2) * 0xFFFF) / 99999) ^ 0xEF22; for (var byteIndex = 0; byteIndex <= uuid.length - 1; byteIndex += 1) { salt2 = f2(salt2, uuid[byteIndex], 0x1064B); }; var salt1_2; salt1_2 = parseInt(offset1.substring(0, 2) + offset1.substring(3, 5) + offset1.substring(2, 3), 10); salt1_2 = Math.trunc((salt1_2 / 99999.0) * 0xFFFF, 10) + 1; var b1 = f2(salt2, salt1_2 >>> 8 , 0x1064B); // 0x1064B = 67147 var b3 = f2(b1 , salt1_2 & 0xFF, 0x1064B); // 0x1064B = 67147 for (var byteIndex = 0; byteIndex <= uuid.length - 1; byteIndex += 1) { salt1 = f2(salt1, uuid[byteIndex], 0x105C3); }; if (b3 === 0) { return salt1; } else { return null; }; }; function keygenMathematicaPlayerProSystemModeler(magicNumbers, mathID, activationKey, maxLicenseProcessesSubprocesses, licenseType, licenseExpirationDate, licenseClass) { // Устанавливаем дефолтные значения для параметров activationKey = activationKey || ""; maxLicenseProcessesSubprocesses = maxLicenseProcessesSubprocesses || ""; licenseType = licenseType || ""; licenseExpirationDate = licenseExpirationDate || ""; licenseClass = licenseClass || ""; var keyValStr = genKeyValStr(mathID, activationKey, maxLicenseProcessesSubprocesses, licenseType, licenseExpirationDate, licenseClass); return magicNumbers .map(function(magicNumber){return genPassword( keyValStr, magicNumber)}) .reverse() .filter(function(password){return password !== ''}); }; function keygenMathLM (magicNumbers, mathID, activationKey, maxLicenseProcessesSubprocesses, licenseType, licenseExpirationDate, licenseClass) { activationKey = activationKey || ""; maxLicenseProcessesSubprocesses = maxLicenseProcessesSubprocesses || ""; licenseType = licenseType || ""; licenseExpirationDate = licenseExpirationDate || ""; licenseClass = licenseClass || ""; var keyValStr = genKeyValStr(mathID, activationKey, maxLicenseProcessesSubprocesses, licenseType, licenseExpirationDate, licenseClass); return magicNumbers .map(function(magicNumber){return genPassword('We Are Everywhere!' + keyValStr, magicNumber)}) .reverse() .filter(function(password){return password !== ''}); }; function generateActivationKey() { var digits = "0123456789"; var letters = "23456789AEGHJKLPQRSTUVWXYZ"; var actKey = defaultActivationKey; function getRandomChar(charset) { return charset.charAt(Math.floor(Math.random() * charset.length)); }; function generatePart(length, charset) { var arr = []; for (var i = 0; i < length; i++) { arr.push(getRandomChar(charset)); }; return arr.join(""); }; var part1 = generatePart(4, digits); var part2 = generatePart(4, digits); var part3 = generatePart(6, letters); actKey = part1 + '-' + part2 + '-' + part3; return actKey; }; function getMagicNumbersMathForProductVersion(productIndex, version) { var magicNumbersMath; productIndex = String(productIndex); if (productIndex.indexOf("0x") === 0) { productIndex = parseInt(productIndex.replace(/^0x/, ''), 16); } else { productIndex = parseInt(productIndex, 10); }; if (productIndex === productIndexSystemModeler) { switch (version) { case "4.0" : magicNumbersMath = magicNumbersMath100; break; case "4.1" : magicNumbersMath = magicNumbersMath101; break; case "4.2" : magicNumbersMath = magicNumbersMath100; break; case "4.3" : magicNumbersMath = magicNumbersMath110; break; case "5.0" : magicNumbersMath = magicNumbersMath103; break; case "5.1" : magicNumbersMath = magicNumbersMath113; break; case "12.0" : magicNumbersMath = magicNumbersMath120; break; case "12.1" : magicNumbersMath = magicNumbersMath121; break; case "12.2" : magicNumbersMath = magicNumbersMath122; break; case "12.3" : magicNumbersMath = magicNumbersMath123; break; case "13.0" : magicNumbersMath = magicNumbersMath130; break; case "13.1" : magicNumbersMath = magicNumbersMath131; break; case "13.2" : magicNumbersMath = magicNumbersMath132; break; case "13.3" : magicNumbersMath = magicNumbersMath133; break; case "14.0" : magicNumbersMath = magicNumbersMath140; break; case "14.1" : magicNumbersMath = magicNumbersMath141; break; case "14.2" : magicNumbersMath = magicNumbers142 ; break; case "14.3" : magicNumbersMath = magicNumbers143 ; break; case "15.0" : magicNumbersMath = magicNumbers150 ; break; case "15.1" : magicNumbersMath = magicNumbers151 ; break; case "15.2" : magicNumbersMath = magicNumbers152 ; break; case "15.3" : magicNumbersMath = magicNumbers153 ; break; case "16.0" : magicNumbersMath = magicNumbers160 ; break; case "16.1" : magicNumbersMath = magicNumbers161 ; break; case "16.2" : magicNumbersMath = magicNumbers162 ; break; case "16.3" : magicNumbersMath = magicNumbers163 ; break; case "17.0" : magicNumbersMath = magicNumbers170 ; break; case "17.1" : magicNumbersMath = magicNumbers171 ; break; case "17.2" : magicNumbersMath = magicNumbers172 ; break; case "17.3" : magicNumbersMath = magicNumbers173 ; break; case "18.0" : magicNumbersMath = magicNumbers180 ; break; case "18.1" : magicNumbersMath = magicNumbers181 ; break; case "18.2" : magicNumbersMath = magicNumbers182 ; break; case "18.3" : magicNumbersMath = magicNumbers183 ; break; case "19.0" : magicNumbersMath = magicNumbers190 ; break; case "19.1" : magicNumbersMath = magicNumbers191 ; break; case "19.2" : magicNumbersMath = magicNumbers192 ; break; case "19.3" : magicNumbersMath = magicNumbers193 ; break; default : magicNumbersMath = magicNumbers143 ; break; }; } else { switch (version) { case "10.0" : magicNumbersMath = magicNumbersMath100; break; case "10.1" : magicNumbersMath = magicNumbersMath101; break; case "10.2" : magicNumbersMath = magicNumbersMath102; break; case "10.3.0": magicNumbersMath = magicNumbersMath103; break; case "10.3.1": magicNumbersMath = magicNumbersMath103; break; case "10.4" : magicNumbersMath = magicNumbersMath104; break; case "11.0.0": magicNumbersMath = magicNumbersMath110; break; case "11.0.1": magicNumbersMath = magicNumbersMath110; break; case "11.1" : magicNumbersMath = magicNumbersMath111; break; case "11.2" : magicNumbersMath = magicNumbersMath112; break; case "11.3" : magicNumbersMath = magicNumbersMath113; break; case "12.0" : magicNumbersMath = magicNumbersMath120; break; case "12.1" : magicNumbersMath = magicNumbersMath121; break; case "12.2" : magicNumbersMath = magicNumbersMath122; break; case "12.3" : magicNumbersMath = magicNumbersMath123; break; case "13.0" : magicNumbersMath = magicNumbersMath130; break; case "13.1" : magicNumbersMath = magicNumbersMath131; break; case "13.2" : magicNumbersMath = magicNumbersMath132; break; case "13.3" : magicNumbersMath = magicNumbersMath133; break; case "14.0" : magicNumbersMath = magicNumbersMath140; break; case "14.1" : magicNumbersMath = magicNumbersMath141; break; case "14.2" : magicNumbersMath = magicNumbers142 ; break; case "14.3" : magicNumbersMath = magicNumbers143 ; break; case "15.0" : magicNumbersMath = magicNumbers150 ; break; case "15.1" : magicNumbersMath = magicNumbers151 ; break; case "15.2" : magicNumbersMath = magicNumbers152 ; break; case "15.3" : magicNumbersMath = magicNumbers153 ; break; case "16.0" : magicNumbersMath = magicNumbers160 ; break; case "16.1" : magicNumbersMath = magicNumbers161 ; break; case "16.2" : magicNumbersMath = magicNumbers162 ; break; case "16.3" : magicNumbersMath = magicNumbers163 ; break; case "17.0" : magicNumbersMath = magicNumbers170 ; break; case "17.1" : magicNumbersMath = magicNumbers171 ; break; case "17.2" : magicNumbersMath = magicNumbers172 ; break; case "17.3" : magicNumbersMath = magicNumbers173 ; break; case "18.0" : magicNumbersMath = magicNumbers180 ; break; case "18.1" : magicNumbersMath = magicNumbers181 ; break; case "18.2" : magicNumbersMath = magicNumbers182 ; break; case "18.3" : magicNumbersMath = magicNumbers183 ; break; case "19.0" : magicNumbersMath = magicNumbers190 ; break; case "19.1" : magicNumbersMath = magicNumbers191 ; break; case "19.2" : magicNumbersMath = magicNumbers192 ; break; case "19.3" : magicNumbersMath = magicNumbers193 ; break; default : magicNumbersMath = magicNumbers143 ; break; }; // switch (version) }; // if (productIndex === productIndexSystemModeler) return magicNumbersMath; }; // function getMagicNumbersMathForProductVersion(productIndex, version) function getMagicNumbersSMForProductVersion(productIndex, version) { var magicNumbersSM; productIndex = String(productIndex); if (productIndex.indexOf("0x") === 0) { productIndex = parseInt(productIndex.replace(/^0x/, ''), 16); } else { productIndex = parseInt(productIndex, 10); }; if (productIndex === productIndexSystemModeler) { switch (version) { case "4.0" : magicNumbersSM = magicNumbersSM040 ; break; case "4.1" : magicNumbersSM = magicNumbersSM041 ; break; case "4.2" : magicNumbersSM = magicNumbersSM042 ; break; case "4.3" : magicNumbersSM = magicNumbersSM043 ; break; case "5.0" : magicNumbersSM = magicNumbersSM050 ; break; case "5.1" : magicNumbersSM = magicNumbersSM051 ; break; case "12.0" : magicNumbersSM = magicNumbersSM120 ; break; case "12.1" : magicNumbersSM = magicNumbersSM121 ; break; case "12.2" : magicNumbersSM = magicNumbersSM122 ; break; case "12.3" : magicNumbersSM = magicNumbersSM123 ; break; case "13.0" : magicNumbersSM = magicNumbersSM130 ; break; case "13.1" : magicNumbersSM = magicNumbersSM131 ; break; case "13.2" : magicNumbersSM = magicNumbersSM132 ; break; case "13.3" : magicNumbersSM = magicNumbersSM133 ; break; case "14.0" : magicNumbersSM = magicNumbersSM140 ; break; case "14.1" : magicNumbersSM = magicNumbersSM141 ; break; case "14.2" : magicNumbersSM = magicNumbers142 ; break; case "14.3" : magicNumbersSM = magicNumbers143 ; break; case "15.0" : magicNumbersSM = magicNumbers150 ; break; case "15.1" : magicNumbersSM = magicNumbers151 ; break; case "15.2" : magicNumbersSM = magicNumbers152 ; break; case "15.3" : magicNumbersSM = magicNumbers153 ; break; case "16.0" : magicNumbersSM = magicNumbers160 ; break; case "16.1" : magicNumbersSM = magicNumbers161 ; break; case "16.2" : magicNumbersSM = magicNumbers162 ; break; case "16.3" : magicNumbersSM = magicNumbers163 ; break; case "17.0" : magicNumbersSM = magicNumbers170 ; break; case "17.1" : magicNumbersSM = magicNumbers171 ; break; case "17.2" : magicNumbersSM = magicNumbers172 ; break; case "17.3" : magicNumbersSM = magicNumbers173 ; break; case "18.0" : magicNumbersSM = magicNumbers180 ; break; case "18.1" : magicNumbersSM = magicNumbers181 ; break; case "18.2" : magicNumbersSM = magicNumbers182 ; break; case "18.3" : magicNumbersSM = magicNumbers183 ; break; case "19.0" : magicNumbersSM = magicNumbers190 ; break; case "19.1" : magicNumbersSM = magicNumbers191 ; break; case "19.2" : magicNumbersSM = magicNumbers192 ; break; case "19.3" : magicNumbersSM = magicNumbers193 ; break; default : magicNumbersSM = magicNumbers143 ; break; }; } else { switch (version) { case "10.0" : magicNumbersSM = magicNumbersSM040 ; break; case "10.1" : magicNumbersSM = magicNumbersSM041 ; break; case "10.2" : magicNumbersSM = magicNumbersSM041 ; break; case "10.3.0": magicNumbersSM = magicNumbersSM041 ; break; case "10.3.1": magicNumbersSM = magicNumbersSM042 ; break; case "10.4" : magicNumbersSM = magicNumbersSM042 ; break; case "11.0.0": magicNumbersSM = magicNumbersSM042 ; break; case "11.0.1": magicNumbersSM = magicNumbersSM043 ; break; case "11.1" : magicNumbersSM = magicNumbersSM043 ; break; case "11.2" : magicNumbersSM = magicNumbersSM050 ; break; case "11.3" : magicNumbersSM = magicNumbersSM051 ; break; case "12.0" : magicNumbersSM = magicNumbersSM120 ; break; case "12.1" : magicNumbersSM = magicNumbersSM121 ; break; case "12.2" : magicNumbersSM = magicNumbersSM122 ; break; case "12.3" : magicNumbersSM = magicNumbersSM123 ; break; case "13.0" : magicNumbersSM = magicNumbersSM130 ; break; case "13.1" : magicNumbersSM = magicNumbersSM131 ; break; case "13.2" : magicNumbersSM = magicNumbersSM132 ; break; case "13.3" : magicNumbersSM = magicNumbersSM133 ; break; case "14.0" : magicNumbersSM = magicNumbersSM140 ; break; case "14.1" : magicNumbersSM = magicNumbersSM141 ; break; case "14.2" : magicNumbersSM = magicNumbers142 ; break; case "14.3" : magicNumbersSM = magicNumbers143 ; break; case "15.0" : magicNumbersSM = magicNumbers150 ; break; case "15.1" : magicNumbersSM = magicNumbers151 ; break; case "15.2" : magicNumbersSM = magicNumbers152 ; break; case "15.3" : magicNumbersSM = magicNumbers153 ; break; case "16.0" : magicNumbersSM = magicNumbers160 ; break; case "16.1" : magicNumbersSM = magicNumbers161 ; break; case "16.2" : magicNumbersSM = magicNumbers162 ; break; case "16.3" : magicNumbersSM = magicNumbers163 ; break; case "17.0" : magicNumbersSM = magicNumbers170 ; break; case "17.1" : magicNumbersSM = magicNumbers171 ; break; case "17.2" : magicNumbersSM = magicNumbers172 ; break; case "17.3" : magicNumbersSM = magicNumbers173 ; break; case "18.0" : magicNumbersSM = magicNumbers180 ; break; case "18.1" : magicNumbersSM = magicNumbers181 ; break; case "18.2" : magicNumbersSM = magicNumbers182 ; break; case "18.3" : magicNumbersSM = magicNumbers183 ; break; case "19.0" : magicNumbersSM = magicNumbers190 ; break; case "19.1" : magicNumbersSM = magicNumbers191 ; break; case "19.2" : magicNumbersSM = magicNumbers192 ; break; case "19.3" : magicNumbersSM = magicNumbers193 ; break; default : magicNumbersSM = magicNumbers143 ; break; }; // switch (version) }; // if (productIndex === productIndexSystemModeler) return magicNumbersSM; }; // function getMagicNumbersSMForProductVersion(productIndex, version) // Выдача в виде строки LicenseType по умолчанию (рекомендуемое значение) в зависимости от индекса продукта function getDefaultLicenseTypeForProduct(productIndex) { var licenseType ; var licenseTypeNumber; productIndex = String(productIndex); if (productIndex.indexOf("0x") === 0) { productIndex = parseInt(productIndex.replace(/^0x/, ''), 16); } else { productIndex = parseInt(productIndex, 10); }; switch (productIndex) { case productIndexMathematica : licenseTypeNumber = 1 | licenseTypeMaskEnterpriseEdition | licenseTypeMaskEnterpriseSigning | licenseTypeMaskMathematica ; break; case productIndexSystemModeler : licenseTypeNumber = 1 | licenseTypeMaskSystemModeler ; break; case productIndexWolframFinancePlatform : licenseTypeNumber = 1 | licenseTypeMaskEnterpriseEdition | licenseTypeMaskEnterpriseSigning | licenseTypeMaskWolframFinancePlatform ; break; case productIndexWolframOne : licenseTypeNumber = 1 | licenseTypeMaskEnterpriseEdition | licenseTypeMaskEnterpriseSigning | licenseTypeMaskWolframOne ; break; case productIndexWolframAlphaNotebookEdition: licenseTypeNumber = 1 | licenseTypeMaskEnterpriseEdition | licenseTypeMaskEnterpriseSigning | licenseTypeMaskWolframAlphaNotebookEdition; break; case productIndexWolframProgrammingLab : licenseTypeNumber = 1 | licenseTypeMaskEnterpriseEdition | licenseTypeMaskEnterpriseSigning | licenseTypeMaskWolframProgrammingLab ; break; case productIndexWolframPlayerPro : licenseTypeNumber = 1 | licenseTypeMaskWolframPlayerPro ; break; case productIndexWolframPlayer : licenseTypeNumber = 1 | licenseTypeMaskWolframPlayer ; break; default : licenseTypeNumber = 1 | licenseTypeMaskEnterpriseEdition | licenseTypeMaskEnterpriseSigning | licenseTypeMaskMathematica ; break; }; // switch (productIndex) if (licenseTypeNumber == 0) { licenseType = ""; } else { licenseType = licenseTypeNumber.toString(16).toUpperCase() ; }; return licenseType; }; // function getDefaultLicenseTypeForProduct(productIndex) // Проверка формата MachineID, результат = true, если формат верен, иначе false function validateMachineIDFormat(machineID) { // Регулярное выражение для проверки формата MachineID var regex = /^(\d{4})-(\d{5})-(\d{5})$/; // Проверка формата строки return regex.test(machineID); }; // Проверка формата Activation Key, результат = true, если формат верен, иначе false function validateActivationKeyFormat(activationKey) { // Регулярное выражение для проверки формата Activation Key var regex = /^(\d{4})-(\d{4})-([0-9A-Z]{6})$/; // Проверка формата строки return regex.test(activationKey); }; // Извлечение в виде числа MachineType из MachineID function getMachineTypeFromMachineID(machineID) { // Проверяем, что первые два символа - цифры if (/^\d{2}/.test(machineID)) { // Извлекаем первые два символа и преобразуем в число return parseInt(machineID.substring(0, 2), 10); }; // Возвращаем NaN, если проверка не пройдена return NaN; }; // Извлечение в виде числа UniqueNumber из MachineID function getUniqueNumberFromMachineID(machineID) { return parseInt(machineID.substring(2, 4) + machineID.substring(5, 10) + machineID.substring(11, 14), 10); }; // Проверка UniqueNumber для MachineID, результат = true, если UniqueNumber верен (положительное 32-битное целое число), иначе false function isMachineIDUniqueNumberWithinLimit(machineID) { return getUniqueNumberFromMachineID(machineID) <= 4294967295; }; // Извлечение в виде числа checksum из MachineID function getChecksumFromMachineID(machineID) { return parseInt(machineID.substring(14, 16), 10); }; // Вычисление в виде числа checksum для MachineID function calculateMachineIDChecksum(machineID) { var machineType = getMachineTypeFromMachineID (machineID); var uniqueNumber = getUniqueNumberFromMachineID(machineID); var checksum = ((uniqueNumber >>> 2) + 43 * machineType + 29 * (uniqueNumber & 3)) % 97; return checksum; }; // Проверка checksum для MachineID, результат = true, если checksum верен, иначе false function validateMachineIDChecksum(machineID) { var checksum = getChecksumFromMachineID (machineID); var calculatedChecksum = calculateMachineIDChecksum(machineID); return calculatedChecksum === checksum; }; // Функция для получения описания хэша function getDescriptionByHash(hash) { hash = String(hash); if (hash.indexOf("0x") === 0) { hash = parseInt(hash.replace(/^0x/, ''), 16); } else { hash = parseInt(hash, 10); }; // Проверяем, существует ли ключ в таблице if (hashToDescriptionTable.hasOwnProperty(hash)) { return hashToDescriptionTable[parseInt(hash, 10)]; } else { return "Неизвестный хэш"; }; }; // Функция для получения описания типа машины function getDescriptionByMachineType(machineType) { machineType = String(machineType); if (machineType.indexOf("0x") === 0) { machineType = parseInt(machineType.replace(/^0x/, ''), 16); } else { machineType = parseInt(machineType, 10); }; // Проверяем, существует ли ключ в таблице if (machineTypeToDescriptionTable.hasOwnProperty(machineType)) { return machineTypeToDescriptionTable[parseInt(machineType, 10)]; } else { return "неизвестно"; }; }; // Функция для получения описаний для битов типа лицензии function getDescriptionByLicenseType(licenseType) { var result = []; var num = Number('0x' + licenseType); for (var i = 0; i < 32; i++) { if (num & (1 << i)) { result.push(licenseTypeBitToDescriptionArray[i]); }; }; return result; }; function decodeMachineID(machineID) { var validFormat = validateMachineIDFormat(machineID); var machineType; var machineTypeDescription; var uniqueNumber; var uniqueNumberWithinLimit; var checksum; var calculatedChecksum; var validChecksum; if (/^\d{2}/.test(machineID)) { // Извлекаем первые два символа и преобразуем в число machineType = parseInt(machineID.substring(0, 2), 10); machineTypeDescription = getDescriptionByMachineType(machineType); } else { // NaN, если проверка не пройдена machineType = NaN; machineTypeDescription = ''; }; if (validFormat) { uniqueNumber = parseInt(machineID.substring(2, 4) + machineID.substring(5, 10) + machineID.substring(11, 14), 10); uniqueNumberWithinLimit = (uniqueNumber <= 4294967295); checksum = parseInt(machineID.substring(14, 16), 10); calculatedChecksum = ((uniqueNumber >>> 2) + 43 * machineType + 29 * (uniqueNumber & 3)) % 97; validChecksum = (calculatedChecksum === checksum); } else { uniqueNumber = NaN ; uniqueNumberWithinLimit = false; checksum = NaN ; calculatedChecksum = NaN ; validChecksum = false; }; return { validFormat : validFormat , machineType : machineType , machineTypeDescription : machineTypeDescription , uniqueNumber : uniqueNumber , uniqueNumberWithinLimit : uniqueNumberWithinLimit, checksum : checksum , calculatedChecksum : calculatedChecksum , validChecksum : validChecksum }; }; // function decodeMachineID(machineID) // Функция для декодирования пароля // если результат != null, то пароль правильный function decodePassword(machineID, activationKey, password) { var hash = password2Hash(machineID, activationKey, password); if (hash != null) { // не null и не undefined var parts = password.split(":"); while (parts.length < 5) { parts.push(""); }; var maxLicenseProcessesSubprocesses = parts[1]; var licenseType = parts[2]; var licenseExpirationDate = parts[3]; var licenseClass = parts[4]; var keyValStr; if (licenseClass) { keyValStr = 'We Are Everywhere!'; } else { keyValStr = '' ; }; keyValStr += genKeyValStr(machineID, activationKey, maxLicenseProcessesSubprocesses, licenseType, licenseExpirationDate, licenseClass); if (licenseType) { var licenseTypeDescr = getDescriptionByLicenseType(licenseType); }; }; return { machineID : machineID, activationKey : activationKey, password : password, maxLicenseProcessesSubprocesses : maxLicenseProcessesSubprocesses, licenseType : licenseType, licenseTypeDescription : licenseTypeDescr, licenseExpirationDate : licenseExpirationDate, licenseClass : licenseClass, keyValStr : keyValStr, hash : hash, hashDescription : getDescriptionByHash(hash) }; }; // function decodePassword(machineID, activationKey, password) function validateDecodeGenerateDefaultPasswordsMathematicaPlayerProSystemModelerForProductVersion(productIndex, version, machineID, activationKey) { var magicNumbers ; var licenseType ; var decodedMachineID ; var activationKeyValidFormat; var keyValStr ; var passwords ; productIndex = String(productIndex); if (productIndex.indexOf("0x") === 0) { productIndex = parseInt(productIndex.replace(/^0x/, ''), 16); } else { productIndex = parseInt(productIndex, 10); }; if (productIndex === productIndexSystemModeler) { magicNumbers = getMagicNumbersSMForProductVersion (productIndex, version); } else { magicNumbers = getMagicNumbersMathForProductVersion(productIndex, version); }; licenseType = defaultLicenseTypeForProduct[productIndex]; decodedMachineID = decodeMachineID(machineID); activationKeyValidFormat = validateActivationKeyFormat(activationKey); if (decodedMachineID.validChecksum && activationKeyValidFormat) { keyValStr = genKeyValStr(machineID, activationKey, '', licenseType, '', ''); passwords = magicNumbers .map(function(magicNumber){return genPassword( keyValStr, magicNumber)}) .reverse() .filter(function(password){return password !== ''}); } else { keyValStr = ''; passwords = []; }; return { productIndex : productIndex , // 0 productName : productNameList[productIndex] , // 1 version : version , // 2 machineID : machineID , // 3 machineIDValidFormat : decodedMachineID.validFormat , // 4 machineIDMachineType : decodedMachineID.machineType , // 5 machineIDMachineTypeDescription : decodedMachineID.machineTypeDescription , // 6 - '', если decodeMachineID.machineType == NaN machineIDUniqueNumber : decodedMachineID.uniqueNumber , // 7 machineIDUniqueNumberWithinLimit : decodedMachineID.uniqueNumberWithinLimit, // 8 machineIDChecksum : decodedMachineID.checksum , // 9 machineIDCalculatedChecksum : decodedMachineID.calculatedChecksum , // 10 machineIDValidChecksum : decodedMachineID.validChecksum , // 11 activationKey : activationKey , // 12 activationKeyValidFormat : activationKeyValidFormat , // 13 licenseType : licenseType , // 14 keyValStr : keyValStr , // 15 magicNumbersLength : magicNumbers.length , // 16 magicNumbers : magicNumbers , // 17..(17 + magicNumbersLength - 1) passwords : passwords // (17 + magicNumbersLength)..(17 + magicNumbersLength * 2 - 1) }; }; // function validateDecodeGenerateDefaultPasswordsMathematicaPlayerProSystemModelerForProductVersion(productIndex, version, machineID, activationKey) { function validateDecodeGenerateDefaultPasswordsMathLMForProductVersion(productIndex, version, machineID, activationKey, licenseClass) { var magicNumbers ; var licenseType ; var decodedMachineID ; var activationKeyValidFormat; var keyValStr ; var passwordsMathLM ; var passwordsMath ; var passwordsSM ; productIndex = String(productIndex); if (productIndex.indexOf("0x") === 0) { productIndex = parseInt(productIndex.replace(/^0x/, ''), 16); } else { productIndex = parseInt(productIndex, 10); }; magicNumbersMath = getMagicNumbersMathForProductVersion(productIndex, version); magicNumbersSM = getMagicNumbersSMForProductVersion (productIndex, version); licenseType = defaultLicenseTypeForProduct[productIndex]; decodedMachineID = decodeMachineID(machineID); activationKeyValidFormat = validateActivationKeyFormat(activationKey); if (decodedMachineID.validChecksum && activationKeyValidFormat) { keyValStr = 'We Are Everywhere!' + genKeyValStr(machineID, activationKey, '', licenseType, '', licenseClass); passwordsMathLM = magicNumbersMathLM .map(function(magicNumber){return genPassword(keyValStr, magicNumber)}) .reverse() .filter(function(password){return password !== ''}); passwordsMath = magicNumbersMath .map(function(magicNumber){return genPassword(keyValStr, magicNumber)}) .reverse() .filter(function(password){return password !== ''}); passwordsSM = magicNumbersSM .map(function(magicNumber){return genPassword(keyValStr, magicNumber)}) .reverse() .filter(function(password){return password !== ''}); } else { keyValStr = ''; passwordsMathLM = []; passwordsMath = []; passwordsSM = []; }; return { productIndex : productIndex , // 0 productName : productNameList[productIndex] , // 1 version : version , // 2 machineID : machineID , // 3 machineIDValidFormat : decodedMachineID.validFormat , // 4 machineIDMachineType : decodedMachineID.machineType , // 5 machineIDMachineTypeDescription : decodedMachineID.machineTypeDescription , // 6 - '', если decodeMachineID.machineType == NaN machineIDUniqueNumber : decodedMachineID.uniqueNumber , // 7 machineIDUniqueNumberWithinLimit : decodedMachineID.uniqueNumberWithinLimit, // 8 machineIDChecksum : decodedMachineID.checksum , // 9 machineIDCalculatedChecksum : decodedMachineID.calculatedChecksum , // 10 machineIDValidChecksum : decodedMachineID.validChecksum , // 11 activationKey : activationKey , // 12 activationKeyValidFormat : activationKeyValidFormat , // 13 licenseType : licenseType , // 14 licenseClass : licenseClass , // 15 keyValStr : keyValStr , // 16 magicNumbersMathLength : magicNumbersMath.length , // 17 magicNumbersSMLength : magicNumbersSM.length , // 18 passwordsMathLM : passwordsMathLM , // 19..(19 + magicNumbersMathLMLength - 1) magicNumbersMath : magicNumbersMath , // (19 + magicNumbersMathLMLength)..(19 + magicNumbersMathLMLength + magicNumbersMathLength - 1) passwordsMath : passwordsMath , // (19.. + magicNumbersMathLMLength + magicNumbersMathLength)..(19 + magicNumbersMathLMLength + magicNumbersMathLength * 2 - 1) magicNumbersSM : magicNumbersSM , // (19 + magicNumbersMathLMLength + magicNumbersMathLength * 2 + magicNumbersSMLength - 1) passwordsSM : passwordsSM // (19 + magicNumbersMathLMLength + magicNumbersMathLength * 2 + magicNumbersSMLengt)..(19 + magicNumbersMathLMLength + magicNumbersMathLength * 2 + magicNumbersSMLengt * 2 - 1) }; }; // function validateDecodeGenerateDefaultPasswordsMathLMForProductVersion(productIndex, version, machineID, activationKey, licenseClass) { //--------------------------------------------------------------- function getSelectedValue(name) { var radios = document.getElementsByName(name); var selectedValue; for (var i = 0; i < radios.length; i++) { var radio = radios[i]; if (radio.checked) { selectedValue = radio.value; break; }; }; return selectedValue; }; //--------------------------------------------------------------- // Функция для кросс-браузерной обработки готовности DOM function domReady(callback) { if (document.addEventListener) { // Современные браузеры document.addEventListener("DOMContentLoaded", callback); } else { // IE8 и старые браузеры document.attachEvent("onreadystatechange", function() { if (document.readyState === "complete") { callback(); }; }); }; }; //--------------------------------------------------------------- function printPass(documentId, outputInnerHTML, passwordText) { var outputMathLMEl; var passwordMathLMEl; var passwordInnerCodeMathLMEl; outputMathLMEl = document.getElementById(documentId); outputMathLMEl.innerHTML = outputInnerHTML; outputMathLMEl.appendChild(document.createElement("br")); passwordMathLMEl = document.createElement("pre"); passwordInnerCodeMathLMEl = document.createElement("code"); passwordMathLMEl.appendChild(passwordInnerCodeMathLMEl); passwordInnerCodeMathLMEl.innerText = passwordText; outputMathLMEl.appendChild(passwordMathLMEl); }; function deletePass(documentId) { var outputMathLMEl; outputMathLMEl = document.getElementById(documentId); outputMathLMEl.innerHTML = ""; }; function update() { productIndex = String(productIndex); if (productIndex.indexOf("0x") === 0) { productIndex = parseInt(productIndex.replace(/^0x/, ''), 16); } else { productIndex = parseInt(productIndex, 10); }; if (productIndex === productIndexSystemModeler) { magicNumbersSM = getMagicNumbersSMForProductVersion (productIndex, versionSM ); magicNumbersMath = getMagicNumbersMathForProductVersion(productIndex, versionSM ); magicNumbers = magicNumbersSM; } else { magicNumbersSM = getMagicNumbersSMForProductVersion (productIndex, versionMath); magicNumbersMath = getMagicNumbersMathForProductVersion(productIndex, versionMath); magicNumbers = magicNumbersMath; }; // if (productIndex === productIndexSystemModeler) ... else ... licenseType = getDefaultLicenseTypeForProduct(productIndex); }; // function update() // Отображение и скрытие радиокнопок с классами лицензии, в зависимости от product и singleNetwork function divSelectLicenseClassShowHide() { var elementDivSelectLicenseClassMath = document.getElementById("div-select-license-class-math"); // Для доступа к style.display при изменении singleNetwork var elementDivSelectLicenseClassSM = document.getElementById("div-select-license-class-sm" ); // Для доступа к style.display при изменении singleNetwork if (singleNetwork === singleNetworkSingleMachineLicense) { elementDivSelectLicenseClassMath.style.display = "none" ; elementDivSelectLicenseClassSM.style.display = "none" ; } else if (singleNetwork === singleNetworkNetworkLicense ) { if (productIndex === productIndexSystemModeler) { elementDivSelectLicenseClassMath.style.display = "none" ; elementDivSelectLicenseClassSM.style.display = "block"; } else { elementDivSelectLicenseClassMath.style.display = "block"; elementDivSelectLicenseClassSM.style.display = "none" ; }; }; }; function selectSingleNetworkClick(value) { singleNetwork = value; // Отображение и скрытие радиокнопок с классами лицензии, в зависимости от product и singleNetwork divSelectLicenseClassShowHide(); }; function selectProductIndexChange(value) { productIndex = parseInt(value, 10); // Отображение и скрытие радиокнопок с классами лицензии, в зависимости от product и singleNetwork divSelectLicenseClassShowHide(); // Показ или скрытие списков номеров версий для Mathematica и System Modeler var elementDivSelectVersionMath = document.getElementById("div-select-version-math" ); // Для доступа к style.display при изменении product var elementDivSelectVersionSM = document.getElementById("div-select-version-sm" ); // Для доступа к style.display при изменении product if (productIndex === productIndexSystemModeler) { elementDivSelectVersionMath.style.display = "none" ; elementDivSelectVersionSM.style.display = "block"; } else { elementDivSelectVersionMath.style.display = "block"; elementDivSelectVersionSM.style.display = "none" ; }; }; function selectLicenseClassMathClick(value) { licenseClassMath = value; }; function selectVersionMathChange(value) { versionMath = value; }; function selectVersionSMChange(value) { versionSM = value; }; function inputMathidChange(value) { var machineType; mathID = value; machineType = getMachineTypeFromMachineID(mathID); // Проверяем, что это число if (!isNaN(machineType)) { document.getElementById("mathid-label").innerText = ' MachineID (MathID): (MachineType=' + machineType + ' - ' + getDescriptionByMachineType(machineType) + ') '; } else { document.getElementById("mathid-label").innerText = ' MachineID (MathID): '; }; /* if (validateMachineIDFormat(mathID)) { // Преобразование отдельных частей строки в числа var uniqueNumber = getUniqueNumberFromMachineID(mathID); var checksum = getChecksumFromMachineID (mathID); // Вычисление выражения (((B >> 2) & 0x3FFFFFFF) + 43 * A + 29 * (B & 3)) % 97 var calculatedChecksum = calculateMachineIDChecksum(mathID); if (isMachineIDUniqueNumberWithinLimit(mathID)) { document.getElementById("mathid-label").innerText += ' (UniqueNumber=' + uniqueNumber + ')'; if (calculatedChecksum == checksum) { document.getElementById("mathid-label").innerText += ' (checksum=' + checksum + ')'; } else { document.getElementById("mathid-label").innerText += ' (checksum=' + checksum + ', а ожидалось '+calculatedChecksum+')'; }; } else { document.getElementById("mathid-label").innerText += ' (UniqueNumber=' + uniqueNumber + ' превышает максимально возможное значение 4294967295)'; }; }; */ }; // function inputMathidChange(value) function inputActivationKeyChange(value) { activationKey = value; }; function buttonGenActKeyClick(event) { // Получаем объект события для IE8 event = event || window.event; // Отменяем действие по умолчанию if (event.preventDefault) { event.preventDefault(); // Современные браузеры } else { event.returnValue = false; // IE8 и ниже }; var actKey = generateActivationKey(); document.getElementById("activation-key").value = actKey; activationKey = actKey; }; function formGenPassReportValidity() { var div = document.getElementById("form"); var inputs = div.getElementsByTagName("input"); var isValid = true; // Обход элементов через цикл for (IE7 не поддерживает forEach) for (var i = 0; i < inputs.length; i++) { var input = inputs[i]; // Проверка валидности if (!input.reportValidity()) { isValid = false; break; }; }; return isValid; }; function buttonGenPassClick(event) { // Получаем объект события для IE8 event = event || window.event; // Отменяем действие по умолчанию if (event.preventDefault) { event.preventDefault(); // Современные браузеры } else { event.returnValue = false; // IE8 и ниже }; //----------------------------------------------------------- // var formEl = document.getElementById('form'); // if (typeof formEl.reportValidity !== 'undefined' && !formEl.reportValidity()) { return; } if (!formGenPassReportValidity()) { return; }; //----------------------------------------------------------- var machineIDElement = document.getElementById("mathid" ); var activationKeyElement = document.getElementById("activation-key" ); var productIndex = parseInt(document.getElementById("productIndex").value, 10); var version; var machineID = machineIDElement.value ; var activationKey = activationKeyElement.value ; var networkLicense = document.getElementById("network-license").checked; var obj; if (productIndex === productIndexSystemModeler) { version = document.getElementById("version-sm" ).value; } else { version = document.getElementById("version-math").value; }; // if (productIndex === productIndexSystemModeler) ... else ... if (networkLicense) { var licenseClass; if (productIndex === productIndexSystemModeler) { licenseClass = 'CM'; } else { if (document.getElementById("select-license-class-math-a").checked) { licenseClass = 'CA'; }; if (document.getElementById("select-license-class-math-x").checked) { licenseClass = 'CX'; }; if (document.getElementById("select-license-class-math-b").checked) { licenseClass = 'CB'; }; if (document.getElementById("select-license-class-math-c").checked) { licenseClass = 'CC'; }; }; // if (productIndex === productIndexSystemModeler) ... else ... obj = validateDecodeGenerateDefaultPasswordsMathLMForProductVersion (productIndex, version, machineID, activationKey, licenseClass); } else { obj = validateDecodeGenerateDefaultPasswordsMathematicaPlayerProSystemModelerForProductVersion(productIndex, version, machineID, activationKey); }; if (machineID == "" ) { alert("Заполните это поле.\n" + machineIDElement.title); } else if (!obj.machineIDValidFormat ) { alert("Введите данные в указанном формате.\n" + machineIDElement.title); } else if (!obj.machineIDUniqueNumberWithinLimit) { alert("UniqueNumber = " + obj.machineIDUniqueNumber + " (число в MachineID, не включая первые две цифры и последние две цифры) превышает максимально возможное значение 4294967295."); } else if (!obj.machineIDValidChecksum ) { alert("Контрольная сумма в MachineID (последние 2 цифры) неверна. Ожидаемое число " + obj.machineIDCalculatedChecksum + ", а полученное число " + obj.machineIDChecksum + "."); } else if (activationKey == "" ) { alert("Заполните это поле.\n" + activationKeyElement.title); } else if (!obj.activationKeyValidFormat ) { alert("Введите данные в указанном формате.\n" + activationKeyElement.title); } else { if (networkLicense) { printPass( 'outputMathLM', 'Пароли для строки: <br />\"' + obj.keyValStr + '\"<br /><br />' + paroliUporyadochenyStr + '<br /><br />Пароли для MathLM любой версии:', obj.passwordsMathLM.join('\n') ); if (productIndex === productIndexSystemModeler) { printPass( "output1", 'Пароли для MathLM для System Modeler выбранной версии:', obj.passwordsSM.join('\n') ); printPass( "output2", 'Пароли для MathLM для Mathematica соответствующей версии:', obj.passwordsMath.join('\n') ); } else { printPass( "output1", 'Пароли для MathLM для Mathematica выбранной версии:', obj.passwordsMath.join('\n') ); printPass( "output2", 'Пароли для MathLM для System Modeler соответствующей версии:', obj.passwordsSM.join('\n') ); }; } else { deletePass("outputMathLM"); printPass( "output1", 'Пароли для строки: <br />\"' + obj.keyValStr + '\"<br /><br />' + paroliUporyadochenyStr, obj.passwords.join('\n') ); deletePass("output2"); }; }; }; // function buttonGenPassClick(event) function documentInit() { if (typeof HTMLInputElement !== 'undefined') { // Полифилл checkValidity() для IE if (!HTMLInputElement.prototype.checkValidity) { HTMLInputElement.prototype.checkValidity = function() { var isValid = true; // Проверка required if ((typeof this.required !== 'undefined') && this.value === '') { isValid = false; // Проверка pattern } else if ((this.value !== '') && (this.pattern)) { var regex = new RegExp('^' + this.pattern + '$'); if (!regex.test(this.value)) { isValid = false; }; }; return isValid; }; }; // Полифилл reportValidity() для IE if (!HTMLInputElement.prototype.reportValidity) { HTMLInputElement.prototype.reportValidity = function() { if (this.checkValidity && !this.checkValidity()) { var errorMessage = ''; // Проверка required if ((typeof this.required !== 'undefined') && this.value === '') { errorMessage = 'Заполните это поле.\n' + this.title; // Проверка pattern } else if ((this.value !== '') && (this.pattern)) { var regex = new RegExp('^' + this.pattern + '$'); if (!regex.test(this.value)) { errorMessage = 'Введите данные в указанном формате.\n' + this.title; }; }; alert(errorMessage); return false; }; return true; }; }; }; //----------------------------------------------------------- var selectElement; var futureVersion; var i; var option; // Получаем элемент <select> по id selectElement = document.getElementById("version-math"); futureVersion = false; // Заполняем select "version-math" for (i = 0; i < versionMathList.length; i++) { // Создаем элемент <option> option = document.createElement("option"); // Устанавливаем текст и значение (для IE7) option.text = versionMathList[i]; option.value = versionMathList[i]; // Устанавливаем selected для нужного элемента if (versionMathList[i] === defaultVersionMath) { option.setAttribute("selected", "selected"); // Для совместимости с IE7 }; if (futureVersion) { option.text += '(?)'; }; // Добавляем опцию в список selectElement.add(option); if (versionMathList[i] === defaultVersionMath) { futureVersion = true; }; }; // Получаем элемент <select> по id selectElement = document.getElementById("version-sm"); futureVersion = false; // Заполняем select "version-sm" for (i = 0; i < versionSMList.length; i++) { // Создаем элемент <option> option = document.createElement("option"); // Устанавливаем текст и значение (для IE7) option.text = versionSMList[i]; option.value = versionSMList[i]; // Устанавливаем selected для нужного элемента if (versionSMList[i] === defaultVersionSM) { option.setAttribute("selected", "selected"); // Для совместимости с IE7 }; if (futureVersion) { option.text += '(?)'; }; // Добавляем опцию в список selectElement.add(option); if (versionSMList[i] === defaultVersionSM) { futureVersion = true; }; }; // Получаем элемент <select> по id selectElement = document.getElementById("productIndex"); // Заполняем select "productIndex" for (i = 0; i < productNameList.length; i++) { // Создаем элемент <option> option = document.createElement("option"); // Устанавливаем текст и значение (для IE7) option.text = productNameList[i]; option.value = i; // Добавляем опцию в список selectElement.add(option); }; }; // function documentInit() //--------------------------------------------------------------- init(); //--------------------------------------------------------------- // Инициализация при загрузке документа domReady(documentInit); </script> <style> input[type='radio'], input[type='checkbox'] { padding: 0px; } input[type='text'] { width: 100%; -ms-box-sizing: border-box\9; box-sizing: border-box\9; } /** * Forced light theme version */ :root { --background-body: #fff; --background: #efefef; --background-alt: #f7f7f7; --selection: #9e9e9e; --text-main: #363636; --text-bright: #000; --text-muted: #70777f; --links: #0076d1; --focus: #0096bfab; --border: #dbdbdb; --code: #000; --animation-duration: 0.1s; --button-hover: #ddd; --scrollbar-thumb: rgb(213, 213, 213); --scrollbar-thumb-hover: rgb(196, 196, 196); --form-placeholder: #949494; --form-text: #000; --variable: #39a33c; --highlight: #ff0; --select-arrow: url("data:image/svg+xml;charset=utf-8,%3C?xml version='1.0' encoding='utf-8'?%3E %3Csvg version='1.1' xmlns='http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg' xmlns:xlink='http%3A%2F%2Fwww%2Ew3%2Eorg%2F1999%2Fxlink' height='62.5' width='116.9' fill='%23161f27'%3E %3Cpath d='M115.3,1.6 C113.7,0 111.1,0 109.5,1.6 L58.5,52.7 L7.4,1.6 C5.8,0 3.2,0 1.6,1.6 C0,3.2 0,5.8 1.6,7.4 L55.5,61.3 C56.3,62.1 57.3,62.5 58.4,62.5 C59.4,62.5 60.5,62.1 61.3,61.3 L115.2,7.4 C116.9,5.8 116.9,3.2 115.3,1.6Z'/%3E %3C/svg%3E"); } html { scrollbar-color: rgb(213, 213, 213) #fff; scrollbar-color: var(--scrollbar-thumb) var(--background-body); scrollbar-width: thin; } body { font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 'Segoe UI Emoji', 'Apple Color Emoji', 'Noto Color Emoji', sans-serif; line-height: 1.4; max-width: 800px; margin: 20px auto; padding: 0 10px; word-wrap: break-word; color: #363636; color: var(--text-main); background: #fff; background: var(--background-body); text-rendering: optimizeLegibility; } button { transition: background-color 0.1s linear, border-color 0.1s linear, color 0.1s linear, box-shadow 0.1s linear, transform 0.1s ease; transition: background-color var(--animation-duration) linear, border-color var(--animation-duration) linear, color var(--animation-duration) linear, box-shadow var(--animation-duration) linear, transform var(--animation-duration) ease; } input { transition: background-color 0.1s linear, border-color 0.1s linear, color 0.1s linear, box-shadow 0.1s linear, transform 0.1s ease; transition: background-color var(--animation-duration) linear, border-color var(--animation-duration) linear, color var(--animation-duration) linear, box-shadow var(--animation-duration) linear, transform var(--animation-duration) ease; } textarea { transition: background-color 0.1s linear, border-color 0.1s linear, color 0.1s linear, box-shadow 0.1s linear, transform 0.1s ease; transition: background-color var(--animation-duration) linear, border-color var(--animation-duration) linear, color var(--animation-duration) linear, box-shadow var(--animation-duration) linear, transform var(--animation-duration) ease; } h1 { font-size: 2.2em; margin-top: 0; } h1, h2, h3, h4, h5, h6 { margin-bottom: 12px; margin-top: 24px; } h1 { color: #000; color: var(--text-bright); } h2 { color: #000; color: var(--text-bright); } h3 { color: #000; color: var(--text-bright); } h4 { color: #000; color: var(--text-bright); } h5 { color: #000; color: var(--text-bright); } h6 { color: #000; color: var(--text-bright); } strong { color: #000; color: var(--text-bright); } h1, h2, h3, h4, h5, h6, b, strong, th { font-weight: 600; } q::before { content: none; } q::after { content: none; } blockquote { border-left: 4px solid #0096bfab; border-left: 4px solid var(--focus); margin: 1.5em 0; padding: 0.5em 1em; font-style: italic; } q { border-left: 4px solid #0096bfab; border-left: 4px solid var(--focus); margin: 1.5em 0; padding: 0.5em 1em; font-style: italic; } blockquote > footer { font-style: normal; border: 0; } blockquote cite { font-style: normal; } address { font-style: normal; } a[href^='mailto\:']::before { content: '\1F4E7 '; } a[href^='tel\:']::before { content: '\1F4DE '; } a[href^='sms\:']::before { content: '\1F4AC '; } mark { background-color: #ff0; background-color: var(--highlight); border-radius: 2px; padding: 0 2px 0 2px; color: #000; } button, select, input[type='submit'], input[type='button'], input[type='checkbox'], input[type='range'], input[type='radio'] { cursor: pointer; } input:not([type='checkbox']):not([type='radio']), select { display: block; } input { color: #000; color: var(--form-text); background-color: #efefef; background-color: var(--background); font-family: inherit; font-size: inherit; margin-right: 6px; margin-bottom: 6px; padding: 10px; border: none; border-radius: 6px; outline: none; } button { color: #000; color: var(--form-text); background-color: #efefef; background-color: var(--background); font-family: inherit; font-size: inherit; margin-right: 6px; margin-bottom: 6px; padding: 10px; border: none; border-radius: 6px; outline: none; } textarea { color: #000; color: var(--form-text); background-color: #efefef; background-color: var(--background); font-family: inherit; font-size: inherit; margin-right: 6px; margin-bottom: 6px; padding: 10px; border: none; border-radius: 6px; outline: none; } select { color: #000; color: var(--form-text); background-color: #efefef; background-color: var(--background); font-family: inherit; font-size: inherit; margin-right: 6px; margin-bottom: 6px; padding: 10px; border: none; border-radius: 6px; outline: none; } input[type='checkbox'], input[type='radio'] { height: 1em; width: 1em; } input[type='radio'] { border-radius: 100%; } input { vertical-align: top; } label { vertical-align: middle; margin-bottom: 4px; display: inline-block; } input:not([type='checkbox']):not([type='radio']), input[type='range'], select, button, textarea { -webkit-appearance: none; } textarea { display: block; margin-right: 0; box-sizing: border-box; resize: vertical; } textarea:not([cols]) { width: 100%; } textarea:not([rows]) { min-height: 40px; height: 140px; } select { background: #efefef url("data:image/svg+xml;charset=utf-8,%3C?xml version='1.0' encoding='utf-8'?%3E %3Csvg version='1.1' xmlns='http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg' xmlns:xlink='http%3A%2F%2Fwww%2Ew3%2Eorg%2F1999%2Fxlink' height='62.5' width='116.9' fill='%23161f27'%3E %3Cpath d='M115.3,1.6 C113.7,0 111.1,0 109.5,1.6 L58.5,52.7 L7.4,1.6 C5.8,0 3.2,0 1.6,1.6 C0,3.2 0,5.8 1.6,7.4 L55.5,61.3 C56.3,62.1 57.3,62.5 58.4,62.5 C59.4,62.5 60.5,62.1 61.3,61.3 L115.2,7.4 C116.9,5.8 116.9,3.2 115.3,1.6Z'/%3E %3C/svg%3E") calc(100% - 12px) 50% / 12px no-repeat; background: var(--background) var(--select-arrow) calc(100% - 12px) 50% / 12px no-repeat; padding-right: 35px; } select::-ms-expand { display: none; } select[multiple] { padding-right: 10px; background-image: none; overflow-y: auto; } button, input[type='submit'], input[type='button'] { padding-right: 30px; padding-left: 30px; } button:hover { background: #ddd; background: var(--button-hover); } input[type='submit']:hover { background: #ddd; background: var(--button-hover); } input[type='button']:hover { background: #ddd; background: var(--button-hover); } input:focus { box-shadow: 0 0 0 2px #0096bfab; box-shadow: 0 0 0 2px var(--focus); } select:focus { box-shadow: 0 0 0 2px #0096bfab; box-shadow: 0 0 0 2px var(--focus); } button:focus { box-shadow: 0 0 0 2px #0096bfab; box-shadow: 0 0 0 2px var(--focus); } textarea:focus { box-shadow: 0 0 0 2px #0096bfab; box-shadow: 0 0 0 2px var(--focus); } input[type='checkbox']:active, input[type='radio']:active, input[type='submit']:active, input[type='button']:active, input[type='range']:active, button:active { transform: translateY(2px); } input:disabled, select:disabled, button:disabled, textarea:disabled { cursor: not-allowed; opacity: 0.5; } ::-moz-placeholder { color: #949494; color: var(--form-placeholder); } :-ms-input-placeholder { color: #949494; color: var(--form-placeholder); } ::-ms-input-placeholder { color: #949494; color: var(--form-placeholder); } ::placeholder { color: #949494; color: var(--form-placeholder); } fieldset { border: 1px #0096bfab solid; border: 1px var(--focus) solid; border-radius: 6px; margin: 0; margin-bottom: 12px; padding: 10px; } legend { font-size: 0.9em; font-weight: 600; } input[type='range'] { margin: 10px 0; padding: 10px 0; background: transparent; } input[type='range']:focus { outline: none; } input[type='range']::-webkit-slider-runnable-track { width: 100%; height: 9.5px; -webkit-transition: 0.2s; transition: 0.2s; background: #efefef; background: var(--background); border-radius: 3px; } input[type='range']::-webkit-slider-thumb { box-shadow: 0 1px 1px #000, 0 0 1px #0d0d0d; height: 20px; width: 20px; border-radius: 50%; background: #dbdbdb; background: var(--border); -webkit-appearance: none; margin-top: -7px; } input[type='range']:focus::-webkit-slider-runnable-track { background: #efefef; background: var(--background); } input[type='range']::-moz-range-track { width: 100%; height: 9.5px; -moz-transition: 0.2s; transition: 0.2s; background: #efefef; background: var(--background); border-radius: 3px; } input[type='range']::-moz-range-thumb { box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; height: 20px; width: 20px; border-radius: 50%; background: #dbdbdb; background: var(--border); } input[type='range']::-ms-track { width: 100%; height: 9.5px; background: transparent; border-color: transparent; border-width: 16px 0; color: transparent; } input[type='range']::-ms-fill-lower { background: #efefef; background: var(--background); border: 0.2px solid #010101; border-radius: 3px; box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; } input[type='range']::-ms-fill-upper { background: #efefef; background: var(--background); border: 0.2px solid #010101; border-radius: 3px; box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; } input[type='range']::-ms-thumb { box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; border: 1px solid #000; height: 20px; width: 20px; border-radius: 50%; background: #dbdbdb; background: var(--border); } input[type='range']:focus::-ms-fill-lower { background: #efefef; background: var(--background); } input[type='range']:focus::-ms-fill-upper { background: #efefef; background: var(--background); } a { text-decoration: none; color: #0076d1; color: var(--links); } a:hover { text-decoration: underline; } code { background: #efefef; background: var(--background); color: #000; color: var(--code); padding: 2.5px 5px; border-radius: 6px; font-size: 1em; } samp { background: #efefef; background: var(--background); color: #000; color: var(--code); padding: 2.5px 5px; border-radius: 6px; font-size: 1em; } time { background: #efefef; background: var(--background); color: #000; color: var(--code); padding: 2.5px 5px; border-radius: 6px; font-size: 1em; } pre > code { padding: 10px; display: block; overflow-x: auto; } var { color: #39a33c; color: var(--variable); font-style: normal; font-family: monospace; } kbd { background: #efefef; background: var(--background); border: 1px solid #dbdbdb; border: 1px solid var(--border); border-radius: 2px; color: #363636; color: var(--text-main); padding: 2px 4px 2px 4px; } img, video { max-width: 100%; height: auto; } hr { border: none; border-top: 1px solid #dbdbdb; border-top: 1px solid var(--border); } table { border-collapse: collapse; margin-bottom: 10px; width: 100%; table-layout: fixed; } table caption { text-align: left; } td, th { padding: 6px; text-align: left; vertical-align: top; word-wrap: break-word; } thead { border-bottom: 1px solid #dbdbdb; border-bottom: 1px solid var(--border); } tfoot { border-top: 1px solid #dbdbdb; border-top: 1px solid var(--border); } tbody tr:nth-child(even) { background-color: #f7f7f7; background-color: var(--background-alt); } ::-webkit-scrollbar { height: 10px; width: 10px; } ::-webkit-scrollbar-track { background: #efefef; background: var(--background); border-radius: 6px; } ::-webkit-scrollbar-thumb { background: rgb(213, 213, 213); background: var(--scrollbar-thumb); border-radius: 6px; } ::-webkit-scrollbar-thumb:hover { background: rgb(196, 196, 196); background: var(--scrollbar-thumb-hover); } ::-moz-selection { background-color: #9e9e9e; background-color: var(--selection); color: #000; color: var(--text-bright); } ::selection { background-color: #9e9e9e; background-color: var(--selection); color: #000; color: var(--text-bright); } details { display: -ms-flexbox; display: flex; -ms-flex-direction: column; flex-direction: column; -ms-align-items: flex-start; align-items: flex-start; background-color: #f7f7f7; background-color: var(--background-alt); padding: 10px 10px 0; margin: 1em 0; border-radius: 6px; overflow: hidden; } details[open] { padding: 10px; } details > :last-child { margin-bottom: 0; } details[open] summary { margin-bottom: 10px; } summary { display: list-item; background-color: #efefef; background-color: var(--background); padding: 10px; margin: -10px -10px 0; cursor: pointer; outline: none; } summary:hover, summary:focus { text-decoration: underline; } details > :not(summary) { margin-top: 0; } summary::-webkit-details-marker { color: #363636; color: var(--text-main); } footer { border-top: 1px solid #dbdbdb; border-top: 1px solid var(--border); padding-top: 10px; color: #70777f; color: var(--text-muted); } body > footer { margin-top: 40px; } @media print { body, pre, code, summary, details, button, input, textarea { background-color: #fff; } button, input, textarea { border: 1px solid #000; } body, h1, h2, h3, h4, h5, h6, pre, code, button, input, textarea, footer, summary, strong { color: #000; } summary::marker { color: #000; } summary::-webkit-details-marker { color: #000; } tbody tr:nth-child(even) { background-color: #f2f2f2; } a { color: #00f; text-decoration: underline; } } /*# sourceMappingURL=light.css.map */ input[type="text"] { width: calc(100% - 20px); } </style> </head> <body> <h1>Генератор паролей для продуктов Wolfram</h1> <ol> <li> Скачайте и запустите установку нужного вам приложения с <a href="https://www%2Ewolfram%2Ecom/download-center/" target="_blank"><b>Wolfram Download Center</b></a> (там можно свободно для любой платформы с документацией или без скачать Wolfram и System Modeler).<br /> Если вам зачем-то вдруг нужна бесплатная пробная версия см. также:<br /> — <a href="https://www%2Ewolfram%2Ecom/mathematica/trial/" target="_blank"><b>Mathematica Trial</b></a>,<br /> — <a href="https://account%2Ewolfram%2Ecom/access/wolfram-one/trial" target="_blank"><b>Wolfram|One Trial</b></a>,<br /> — <a href="https://account%2Ewolfram%2Ecom/access/wolfram-alpha-notebook-edition/trial" target="_blank"><b>Wolfram|Alpha Notebook Edition Trial</b></a>,<br /> — <a href="https://www%2Ewolfram%2Ecom/system-modeler/trial/" target="_blank"><b>System Modeler Trial</b></a>.<br /> <br /> </li> <li>На экране активации продукта нажмите кнопку <b>Other ways to activate</b>, а затем <b>Manual Activation</b> или <b>Activate offline through activation key and requested password</b>.<br /> <br /> </li> <li>Ниже введите полученный <b>MachineID</b>, он же <b>MathID</b> (в формате nnnn-nnnnn-nnnnn), сгенерируйте случайный или введите любой <b>Ключ активации (Activation Key)</b> (в формате nnnn-nnnn-xxxxxx) (достаточно просто оставить Activation Key по умолчанию), выберите <b>Продукт</b> и <b>Версию</b>.<br /> <br /> <details style="overflow: auto; display: block;"> <summary><b>Сетевая лицензия (для менеджера лицензий MathLM)</b></summary> <p> Для генерации пароля для MathLM выберите <b>Сетевая лицензия (для менеджера лицензий MathLM)</b> и, если лицензия не для System Modeler, то выберите <b>Класс лицензии (License Class)</b>: A или X или B или C. Платформы Windows, Mac OS X и некоторые Linux относятся к классу A. Платформы серверного класса относятся к классу B. Для одного и того же Activation Key можно задать по одной лицензии каждого класса.<br /> Пароли классов A, X, B, C предназначены для процессов Mathematica (MathKernel, Mathematica, Sub MathKernel, Sub Mathematica).<br /> Пароли класса A действительны для клиентов класса A.<br /> Пароли класса X действительны для клиентов классов A, X.<br /> Пароли класса B действительны для клиентов классов A, X, B.<br /> Пароли класса C действительны для клиентов классов A, X, B, C.<br /> Пароли класса M предназачены для процессов System Modeler (Modeling Center, Simulation Center, Session Manager).<br /> Поэтому скорее всего для MathLM достаточно 2 лицензий: класса C (для клиентов процессов Mathematica) и класса M (для клиентов процессов System Modeler).<br /> Вероятно, клиентом запрашивается сетевая лицензия определённого класса: M — от System Modeler, и A, X, B, C — от остальных продуктов, и сервером лицензий MathLM выдаётся первая попавшаяся лицензия, которая подходит для запрашиваемого класса, поэтому не получится, чтобы от одного и того же сервера лицензий MathLM можно было получить лицензии, например, и для Mathematica и для Wolfram Player Pro, например, если запрашивается лицензия класса A, а первая попавшаяся лицензия — это лицензия класса C для Wolfram Player Pro, то вместо Mathematica мы получим в результате Wolfram Player Pro.<br /> </p> <p> Вся эта информация добавляется в файл <b>mathpass</b> в папке, в которую установлен MathLM (обычно, C:\Program Files (x86)\Wolfram Research\MathLM\) в следующем формате для каждой строки: </p> <pre style="overflow: auto;">!LicenseServer	MathID	ActivationKey	Password</pre> <p> где <b>LicenseServer</b> — имя компьютера на котором запускается MathLM.<br /> Все параметры в строке разделены символом табуляции.<br /> Пример файла <b>mathpass</b> для <b>MathLM</b>: </p> <pre style="overflow: auto;"> !wolfram 6202-24738-25165 3893-9258-K6XJLE 4558-527-625::803001::CC !wolfram 6202-24738-25165 3893-9258-K6XJLE 5313-035-777::40000001::CM</pre> <p> В файле <b>mathpass</b> для <b>Mathematica</b> (обычно, C:\ProgramData\Mathematica\Licensing\mathpass) для связи с <b>MathLM</b> при этом указывается только <b>LicenseServer</b>, пример: </p> <pre style="overflow: auto;">%(*userregistered*) !wolfram						</pre> </details> </li> <li>Нажмите <b>Сгенерировать пароль (password)</b>.<br /> <br /> </li> <li>В окне активации продукта введите ваш <b>Activation Key</b> и сгенерированный <b>Password</b> чтобы активировать продукт.<br /> <br /> </li> <li>Игнорируйте запрос <b>Register</b>.<br /> <br /> </li> <li>Для приложения под названием <b>Wolfram</b> (<b>начиная с версии 14.1</b>) можно добавить регистрации для разных продуктов (например, для Mathematica, Wolfram Finance Platform, Wolfram|One, Wolfram|Alpha Notebook Edition, Wolfram Player Pro, Wolfram Player, Wolfram Programming Lab) и переключаться между ними при помощи <a href="https://reference%2Ewolfram%2Ecom/language/tutorial/UsingTheWolframProductSwitcher.html" target="_blank"><b>Переключателя продуктов Wolfram</b></a> — смотрите <b>Настройки</b> (меню <b>Edit > Preferences</b> или кнопка <b>Открыть настройки...</b>), вкладка <b>Product</b>.<br /> </li> </ol> <br /> Если у вас есть легальная лицензия для Mathematica, Wolfram Finance Platform, Wolfram|One, Wolfram|Alpha Notebook Edition или для Wolfram Player Pro версии не меньше 14.2, то гипотетически можно использовать Ключ активации (Activation Key) и Пароль (password) от неё для активации System Modeler, но только версии 14.1.<br /> <br /> См. также:<br /> — <a href="https://reference%2Ewolfram%2Ecom/language/tutorial/RegistrationAndPasswords.html" target="_blank"><b>Регистрация и пароли</b></a>,<br /> — <a href="https://reference%2Ewolfram%2Ecom/language/tutorial/MathematicaSystemAdministrationOverview.html" target="_blank"><b>Администрирование системы Wolfram</b></a>,<br /> — <a href="https://reference%2Ewolfram%2Ecom/language/tutorial/InstallingWolfram.html" target="_blank"><b>Установка Wolfram (начиная с версии 14.1)</b></a>,<br /> — <a href="https://reference%2Ewolfram%2Ecom/language/tutorial/InstallingMathematica.html" target="_blank"><b>Установка Mathematica (для версии 14.0 и старее)</b></a>,<br /> — <a href="https://reference%2Ewolfram%2Ecom/language/tutorial/InstallingMathLM.html" target="_blank"><b>Установка MathLM</b></a>,<br /> — <a href="https://reference%2Ewolfram%2Ecom/language/tutorial/ActivatingMathematica.html" target="_blank"><b>Активация Mathematica</b></a>,<br /> — <a href="https://reference%2Ewolfram%2Ecom/language/tutorial/UsingTheWolframProductSwitcher.html" target="_blank"><b>Переключатель продуктов Wolfram</b></a>,<br /> — <a href="https://reference%2Ewolfram%2Ecom/language/guide/SystemAndLicenseManagement.html" target="_blank"><b>Управление системой и лицензиями</b></a>,<br /> — Встроенный символ <a href="https://reference%2Ewolfram%2Ecom/language/ref/$MachineID.html" target="_blank"><b>$MachineID</b></a> — показывает MachineID (он же MathID),<br /> — Встроенный символ <a href="https://reference%2Ewolfram%2Ecom/language/ref/$PasswordFile.html" target="_blank"><b>$PasswordFile</b></a> — путь к файлу с паролями.<br /> <br /> <b>Новые версии кейгена ищите <a href="https://forum%2Eru-board%2Ecom/topic.cgi?forum=35&topic=1174&start=0&limit=1&m=27#1" target="_blank">здесь</a>.</b><br /> <br /> <div id="form"> <fieldset> <legend> Генератор паролей </legend> <div style="flex: 1;"> <label for="mathid" id="mathid-label"> MachineID (MathID): </label><br /> <input type="text" id="mathid" pattern="\d{4}-\d{5}-\d{5}" title="Формат для "MachineID (MathID)": nnnn-nnnnn-nnnnn, где n - цифра." oninput="inputMathidChange(this.value);" onpropertychange="if (event.propertyName === 'value') inputMathidChange(this.value);" required /> </div> <div style="flex: 1;"> <label for="activation-key"> Ключ активации (Activation Key): </label><br /> <input type="text" id="activation-key" pattern="\d{4}-\d{4}-[0-9A-Z]{6}" value="3893-9258-K6XJLE" title="Формат для "Ключ активации (Activation Key)": nnnn-nnnn-xxxxxx, где n - цифра, а x - цифра или заглавная латинская буква." oninput="inputActivationKeyChange(this.value);" onpropertychange="if (event.propertyName === 'value') inputActivationKeyChange(this.value);" required /> </div> <button id="buttonGenActKey" onclick="buttonGenActKeyClick(event);"> Сгенерировать случайный ключ активации (Activation Key) </button> <div style="display: flex;"> <div style="flex: 1;"> <label for="productIndex"> Продукт: </label><br /> <select id="productIndex" name="productIndex" onchange="selectProductIndexChange(this.value);"> </select> </div> <div style="flex: 1; max-width: 10px;"> </div> <div style="flex: 1;"> <div id="div-select-version-math" style="display: block;"> <label for="version-math"> Версия: </label><br /> <select id="version-math" name="versionMath" onchange="selectVersionMathChange(this.value);"> </select> </div> <div id="div-select-version-sm" style="display: none;"> <label for="version-sm">Версия:</label><br /> <select id="version-sm" name="versionSM" onchange="selectVersionSMChange(this.value);"> </select> </div> </div> </div> <label for="single-machine-license"> <input type="radio" id="single-machine-license" name="select-single-network" value="single-machine-license" checked onclick="selectSingleNetworkClick(this.value);" /> Лицензия для одной машины </label> <br /> <label for="network-license" > <input type="radio" id="network-license" name="select-single-network" value="network-license" onclick="selectSingleNetworkClick(this.value);" /> Сетевая лицензия (для менеджера лицензий MathLM) </label> <br /> <div id="div-select-license-class-math" style="display: none;"> Класс лицензии (License Class): <input type="radio" id="select-license-class-math-a" name="select-license-class" value="CA" onclick="selectLicenseClassMathClick(this.value);" /> <label for="select-license-class-math-a">A </label> <input type="radio" id="select-license-class-math-x" name="select-license-class" value="CX" onclick="selectLicenseClassMathClick(this.value);" /> <label for="select-license-class-math-x">X </label> <input type="radio" id="select-license-class-math-b" name="select-license-class" value="CB" onclick="selectLicenseClassMathClick(this.value);" /> <label for="select-license-class-math-b">B </label> <input type="radio" id="select-license-class-math-c" name="select-license-class" value="CC" checked onclick="selectLicenseClassMathClick(this.value);" /> <label for="select-license-class-math-c">C </label> <br /> </div> <div id="div-select-license-class-sm" style="display: none;"> Класс лицензии (License Class): M <br /> </div> <button id="buttonGenPass" onclick="buttonGenPassClick(event);"> Сгенерировать пароль (password) </button> </fieldset> </div> <div id="outputMathLM"></div> <div id="output1"></div> <div id="output2"></div> <div id="debug"></div> </body> </html>
Write, Run & Share HTML code online using OneCompiler's HTML online Code editor for free. It's one of the robust, feature-rich online Code editor for HTML language, running on the latest version HTML5. Getting started with the OneCompiler's HTML compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as HTML
. You can also specify the stylesheet information in styles.css
tab and scripts information in scripts.js
tab and start coding.
HTML(Hyper Text Markup language) is the standard markup language for Web pages, was created by Berners-Lee in the year 1991. Almost every web page over internet might be using HTML.
<!DOCTYPE html>
<html>
and ends with </html>
<h1>
to <h6>
where <h1>
is the highest important heading and <h6>
is the least important sub-heading.<p>..</p>
tag.<a>
tag.
<a href="https://onecompiler.com/html">HTML online compiler</a>
<img>
tag, where src
attribute consists of image name.<button>..</button>
tag<ul>
for unordered/bullet list and <ol>
for ordered/number list, and the list items are defined in <li>
.<a href="https://onecompiler.com/html">HTML online compiler</a>
CSS(cascading style sheets) describes how HTML elements will look on the web page like color, font-style, font-size, background color etc.
Below is a sample style sheet which displays heading in green and in Candara font with padding space of 25px.
body{
padding: 25px;
}
.title {
color: #228B22;
font-family: Candara;
}
<table>
tag.<tr>
tag<th>
tag<td>
tag<caption>
tag<script>
is the tag used to write scripts in HTML<script src="script.js"></script>