fixes, improvements, removing some old stuff
50
about.html
@ -100,8 +100,52 @@
|
||||
<p>Awesome-XV</p></a
|
||||
>
|
||||
</div>
|
||||
<div id="adcontainer">
|
||||
<h3><a href="ad.html">AD (click to read more):</a></h3>
|
||||
<h2>Partners</h2>
|
||||
<div class="samerow">
|
||||
|
||||
<a class="avatar" href="https://discord.gg/echodev-971769908205604864"
|
||||
><sl-avatar image="/img/pfps/3kh0.webp" label="3kh0"></sl-avatar>
|
||||
<p>3kh0.net</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.gg/Cqaa8x82Ch"
|
||||
><sl-avatar image="/img/pfps/snor.webp" label="snor"></sl-avatar>
|
||||
<p>Snorlax's Cave</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.gg/DYSB3TeQ2y"
|
||||
><sl-avatar image="/img/pfps/shadow.webp" label="shad"></sl-avatar>
|
||||
<p>Shadow Network</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.gg/DmQMtsTPD6"
|
||||
><sl-avatar image="/img/pfps/night.webp" label="nig"></sl-avatar>
|
||||
<p>Night Network</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.gg/xMyUXZ7Z8y"
|
||||
><sl-avatar image="/img/pfps/math.webp" label="orbit"></sl-avatar>
|
||||
<p>Math Orbit</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.gg/H7JqRwykhk"
|
||||
><sl-avatar image="/img/pfps/wrnd.gif" label="wrnd"></sl-avatar>
|
||||
<p>WRND</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.gg/sSWRxaHhvA"
|
||||
><sl-avatar image="/img/pfps/lunar.webp" label="lun"></sl-avatar>
|
||||
<p>Lunarsync</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.gg/nPzc5ambR4"
|
||||
><sl-avatar image="/img/pfps/ultra.webp" label="ult"></sl-avatar>
|
||||
<p>Ultrabrowse</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.gg/yNJ6Yx6qVu"
|
||||
><sl-avatar image="/img/pfps/compass.png" label="cumpass"></sl-avatar>
|
||||
<p>Compass Network</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.gg/HynWJ8aq"
|
||||
><sl-avatar image="/img/pfps/ocular.webp" label="ock"></sl-avatar>
|
||||
<p>Ocular Network</p></a
|
||||
> <!--Note: Ocular is Breakium.com -->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
@ -109,7 +153,7 @@
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<a href="https://codeberg.org/skysthelimitt/selenite">Source</a>
|
||||
<a href="gitlab.com/skysthelimit.dev/selenite">Source</a>
|
||||
<a href="https://discord.gg/7jyufnwJNf">Discord</a>
|
||||
<a href="/suggest.html">Suggestions & Bugs</a>
|
||||
<a href="/contact.html">Contact</a>
|
||||
|
@ -607,6 +607,11 @@ div.played-game img {
|
||||
aspect-ratio: 1 / 1;
|
||||
border-radius: 20px;
|
||||
}
|
||||
.friend-icon {
|
||||
width: 5%;
|
||||
position: absolute;
|
||||
left: 2%;
|
||||
}
|
||||
@keyframes toastFade {
|
||||
0% {
|
||||
opacity: 0;
|
||||
|
@ -754,11 +754,6 @@
|
||||
"image": "cover.svg",
|
||||
"directory": "spankthemonkey"
|
||||
},
|
||||
{
|
||||
"name": "CMM Client",
|
||||
"image": "cmm.jpeg",
|
||||
"directory": "cmm-client"
|
||||
},
|
||||
{
|
||||
"name": "Pool",
|
||||
"image": "cover.svg",
|
||||
|
1
img/friend.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#ffffff"><path d="M40-160v-112q0-34 17.5-62.5T104-378q62-31 126-46.5T360-440q66 0 130 15.5T616-378q29 15 46.5 43.5T680-272v112H40Zm720 0v-120q0-44-24.5-84.5T666-434q51 6 96 20.5t84 35.5q36 20 55 44.5t19 53.5v120H760ZM360-480q-66 0-113-47t-47-113q0-66 47-113t113-47q66 0 113 47t47 113q0 66-47 113t-113 47Zm400-160q0 66-47 113t-113 47q-11 0-28-2.5t-28-5.5q27-32 41.5-71t14.5-81q0-42-14.5-81T544-792q14-5 28-6.5t28-1.5q66 0 113 47t47 113ZM120-240h480v-32q0-11-5.5-20T580-306q-54-27-109-40.5T360-360q-56 0-111 13.5T140-306q-9 5-14.5 14t-5.5 20v32Zm240-320q33 0 56.5-23.5T440-640q0-33-23.5-56.5T360-720q-33 0-56.5 23.5T280-640q0 33 23.5 56.5T360-560Zm0 320Zm0-400Z"/></svg>
|
After Width: | Height: | Size: 766 B |
BIN
img/pfps/3kh0.webp
Normal file
After Width: | Height: | Size: 101 KiB |
BIN
img/pfps/compass.png
Normal file
After Width: | Height: | Size: 108 KiB |
BIN
img/pfps/lunar.webp
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
img/pfps/math.webp
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
img/pfps/night.webp
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
img/pfps/ocular.webp
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
img/pfps/shadow.webp
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
img/pfps/snor.webp
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
img/pfps/ultra.webp
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
img/pfps/wrnd.gif
Normal file
After Width: | Height: | Size: 1023 KiB |
@ -16,6 +16,7 @@
|
||||
<script src="/js/randomquote.js"></script>
|
||||
|
||||
<link rel="stylesheet" href="/style.css" />
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
|
||||
<!-- seo + other things -->
|
||||
<title>Selenite</title>
|
||||
@ -58,7 +59,7 @@
|
||||
</div>
|
||||
</main>
|
||||
<footer class="noscroll">
|
||||
<a href="https://codeberg.org/skysthelimitt/selenite">Source</a>
|
||||
<a href="gitlab.com/skysthelimit.dev/selenite">Source</a>
|
||||
<a href="https://discord.gg/7jyufnwJNf">Discord</a>
|
||||
<a href="/suggest.html">Suggestions & Bugs</a>
|
||||
<a href="/contact.html">Contact</a>
|
||||
|
@ -126,11 +126,10 @@ document.addEventListener(
|
||||
() => {
|
||||
setCloak();
|
||||
let plausible = document.createElement("script");
|
||||
plausible.setAttribute("event-domain", location.host)
|
||||
plausible.setAttribute("defer", "");
|
||||
plausible.setAttribute("src", "/js/analytics.js");
|
||||
plausible.setAttribute("data-domain", "selenite.cc");
|
||||
let plausible_more = document.createElement("script");
|
||||
plausible_more.innerHTML = "window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }";
|
||||
document.head.appendChild(plausible);
|
||||
},
|
||||
false
|
||||
|
14
js/all.min.js
vendored
@ -1 +1 @@
|
||||
!function(){"use strict";var a=window.location,r=window.document,o=r.currentScript,l=o.getAttribute("data-api")||new URL(o.src).origin+"/api/event";function s(t,e){t&&console.warn("Ignoring Event: "+t),e&&e.callback&&e.callback()}function t(t,e){if(/^localhost$|^127(\.[0-9]+){0,2}\.[0-9]+$|^\[::1?\]$/.test(a.hostname)||"file:"===a.protocol)return s("localhost",e);if((window._phantom||window.__nightmare||window.navigator.webdriver||window.Cypress)&&!window.__plausible)return s(null,e);try{if("true"===window.localStorage.plausible_ignore)return s("localStorage flag",e)}catch(t){}var i={},n=(i.n=t,i.u=a.href,i.d=o.getAttribute("data-domain"),i.r=r.referrer||null,e&&e.meta&&(i.m=JSON.stringify(e.meta)),e&&e.props&&(i.p=e.props),new XMLHttpRequest);n.open("POST",l,!0),n.setRequestHeader("Content-Type","text/plain"),n.send(JSON.stringify(i)),n.onreadystatechange=function(){4===n.readyState&&e&&e.callback&&e.callback({status:n.status})}}var e=window.plausible&&window.plausible.q||[];window.plausible=t;for(var i,n=0;n<e.length;n++)t.apply(this,e[n]);function p(){i!==a.pathname&&(i=a.pathname,t("pageview"))}var c,u=window.history;u.pushState&&(c=u.pushState,u.pushState=function(){c.apply(this,arguments),p()},window.addEventListener("popstate",p)),"prerender"===r.visibilityState?r.addEventListener("visibilitychange",function(){i||"visible"!==r.visibilityState||p()}):p()}();
|
||||
!function(){"use strict";var r=window.location,o=window.document,l=o.currentScript,s=l.getAttribute("data-api")||new URL(l.src).origin+"/api/event";function u(t,e){t&&console.warn("Ignoring Event: "+t),e&&e.callback&&e.callback()}function t(t,e){if(/^localhost$|^127(\.[0-9]+){0,2}\.[0-9]+$|^\[::1?\]$/.test(r.hostname)||"file:"===r.protocol)return u("localhost",e);if((window._phantom||window.__nightmare||window.navigator.webdriver||window.Cypress)&&!window.__plausible)return u(null,e);try{if("true"===window.localStorage.plausible_ignore)return u("localStorage flag",e)}catch(t){}var n={},t=(n.n=t,n.u=r.href,n.d=l.getAttribute("data-domain"),n.r=o.referrer||null,e&&e.meta&&(n.m=JSON.stringify(e.meta)),e&&e.props&&(n.p=e.props),l.getAttributeNames().filter(function(t){return"event-"===t.substring(0,6)})),i=n.p||{},a=(t.forEach(function(t){var e=t.replace("event-",""),t=l.getAttribute(t);i[e]=i[e]||t}),n.p=i,new XMLHttpRequest);a.open("POST",s,!0),a.setRequestHeader("Content-Type","text/plain"),a.send(JSON.stringify(n)),a.onreadystatechange=function(){4===a.readyState&&e&&e.callback&&e.callback({status:a.status})}}var e=window.plausible&&window.plausible.q||[];window.plausible=t;for(var n,i=0;i<e.length;i++)t.apply(this,e[i]);function a(){n!==r.pathname&&(n=r.pathname,t("pageview"))}var p,c=window.history;c.pushState&&(p=c.pushState,c.pushState=function(){p.apply(this,arguments),a()},window.addEventListener("popstate",a)),"prerender"===o.visibilityState?o.addEventListener("visibilitychange",function(){n||"visible"!==o.visibilityState||a()}):a()}();
|
@ -1,161 +0,0 @@
|
||||
// Copyright 2018 AJ ONeal. All rights reserved
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
;(function (exports) {
|
||||
'use strict';
|
||||
|
||||
if (!exports.ASN1) { exports.ASN1 = {}; }
|
||||
if (!exports.Enc) { exports.Enc = {}; }
|
||||
if (!exports.PEM) { exports.PEM = {}; }
|
||||
|
||||
var ASN1 = exports.ASN1;
|
||||
var Enc = exports.Enc;
|
||||
var PEM = exports.PEM;
|
||||
|
||||
//
|
||||
// Parser
|
||||
//
|
||||
|
||||
// Although I've only seen 9 max in https certificates themselves,
|
||||
// but each domain list could have up to 100
|
||||
ASN1.ELOOPN = 102;
|
||||
ASN1.ELOOP = "uASN1.js Error: iterated over " + ASN1.ELOOPN + "+ elements (probably a malformed file)";
|
||||
// I've seen https certificates go 29 deep
|
||||
ASN1.EDEEPN = 60;
|
||||
ASN1.EDEEP = "uASN1.js Error: element nested " + ASN1.EDEEPN + "+ layers deep (probably a malformed file)";
|
||||
// Container Types are Sequence 0x30, Container Array? (0xA0, 0xA1)
|
||||
// Value Types are Boolean 0x01, Integer 0x02, Null 0x05, Object ID 0x06, String 0x0C, 0x16, 0x13, 0x1e Value Array? (0x82)
|
||||
// Bit String (0x03) and Octet String (0x04) may be values or containers
|
||||
// Sometimes Bit String is used as a container (RSA Pub Spki)
|
||||
ASN1.CTYPES = [ 0x30, 0x31, 0xa0, 0xa1 ];
|
||||
ASN1.VTYPES = [ 0x01, 0x02, 0x05, 0x06, 0x0c, 0x82 ];
|
||||
ASN1.parse = function parseAsn1Helper(buf) {
|
||||
//var ws = ' ';
|
||||
function parseAsn1(buf, depth, eager) {
|
||||
if (depth.length >= ASN1.EDEEPN) { throw new Error(ASN1.EDEEP); }
|
||||
|
||||
var index = 2; // we know, at minimum, data starts after type (0) and lengthSize (1)
|
||||
var asn1 = { type: buf[0], lengthSize: 0, length: buf[1] };
|
||||
var child;
|
||||
var iters = 0;
|
||||
var adjust = 0;
|
||||
var adjustedLen;
|
||||
|
||||
// Determine how many bytes the length uses, and what it is
|
||||
if (0x80 & asn1.length) {
|
||||
asn1.lengthSize = 0x7f & asn1.length;
|
||||
// I think that buf->hex->int solves the problem of Endianness... not sure
|
||||
asn1.length = parseInt(Enc.bufToHex(buf.slice(index, index + asn1.lengthSize)), 16);
|
||||
index += asn1.lengthSize;
|
||||
}
|
||||
|
||||
// High-order bit Integers have a leading 0x00 to signify that they are positive.
|
||||
// Bit Streams use the first byte to signify padding, which x.509 doesn't use.
|
||||
if (0x00 === buf[index] && (0x02 === asn1.type || 0x03 === asn1.type)) {
|
||||
// However, 0x00 on its own is a valid number
|
||||
if (asn1.length > 1) {
|
||||
index += 1;
|
||||
adjust = -1;
|
||||
}
|
||||
}
|
||||
adjustedLen = asn1.length + adjust;
|
||||
|
||||
//console.warn(depth.join(ws) + '0x' + Enc.numToHex(asn1.type), index, 'len:', asn1.length, asn1);
|
||||
|
||||
function parseChildren(eager) {
|
||||
asn1.children = [];
|
||||
//console.warn('1 len:', (2 + asn1.lengthSize + asn1.length), 'idx:', index, 'clen:', 0);
|
||||
while (iters < ASN1.ELOOPN && index < (2 + asn1.length + asn1.lengthSize)) {
|
||||
iters += 1;
|
||||
depth.length += 1;
|
||||
child = parseAsn1(buf.slice(index, index + adjustedLen), depth, eager);
|
||||
depth.length -= 1;
|
||||
// The numbers don't match up exactly and I don't remember why...
|
||||
// probably something with adjustedLen or some such, but the tests pass
|
||||
index += (2 + child.lengthSize + child.length);
|
||||
//console.warn('2 len:', (2 + asn1.lengthSize + asn1.length), 'idx:', index, 'clen:', (2 + child.lengthSize + child.length));
|
||||
if (index > (2 + asn1.lengthSize + asn1.length)) {
|
||||
if (!eager) { console.error(JSON.stringify(asn1, ASN1._replacer, 2)); }
|
||||
throw new Error("Parse error: child value length (" + child.length
|
||||
+ ") is greater than remaining parent length (" + (asn1.length - index)
|
||||
+ " = " + asn1.length + " - " + index + ")");
|
||||
}
|
||||
asn1.children.push(child);
|
||||
//console.warn(depth.join(ws) + '0x' + Enc.numToHex(asn1.type), index, 'len:', asn1.length, asn1);
|
||||
}
|
||||
if (index !== (2 + asn1.lengthSize + asn1.length)) {
|
||||
//console.warn('index:', index, 'length:', (2 + asn1.lengthSize + asn1.length));
|
||||
throw new Error("premature end-of-file");
|
||||
}
|
||||
if (iters >= ASN1.ELOOPN) { throw new Error(ASN1.ELOOP); }
|
||||
|
||||
delete asn1.value;
|
||||
return asn1;
|
||||
}
|
||||
|
||||
// Recurse into types that are _always_ containers
|
||||
if (-1 !== ASN1.CTYPES.indexOf(asn1.type)) { return parseChildren(eager); }
|
||||
|
||||
// Return types that are _always_ values
|
||||
asn1.value = buf.slice(index, index + adjustedLen);
|
||||
if (-1 !== ASN1.VTYPES.indexOf(asn1.type)) { return asn1; }
|
||||
|
||||
// For ambigious / unknown types, recurse and return on failure
|
||||
// (and return child array size to zero)
|
||||
try { return parseChildren(true); }
|
||||
catch(e) { asn1.children.length = 0; return asn1; }
|
||||
}
|
||||
|
||||
var asn1 = parseAsn1(buf, []);
|
||||
var len = buf.byteLength || buf.length;
|
||||
if (len !== 2 + asn1.lengthSize + asn1.length) {
|
||||
throw new Error("Length of buffer does not match length of ASN.1 sequence.");
|
||||
}
|
||||
return asn1;
|
||||
};
|
||||
ASN1._replacer = function (k, v) {
|
||||
if ('type' === k) { return '0x' + Enc.numToHex(v); }
|
||||
if (v && 'value' === k) { return '0x' + Enc.bufToHex(v.data || v); }
|
||||
return v;
|
||||
};
|
||||
|
||||
// don't replace the full parseBlock, if it exists
|
||||
PEM.parseBlock = PEM.parseBlock || function (str) {
|
||||
var der = str.split(/\n/).filter(function (line) {
|
||||
return !/-----/.test(line);
|
||||
}).join('');
|
||||
return { der: Enc.base64ToBuf(der) };
|
||||
};
|
||||
|
||||
Enc.base64ToBuf = function (b64) {
|
||||
return Enc.binToBuf(atob(b64));
|
||||
};
|
||||
Enc.binToBuf = function (bin) {
|
||||
var arr = bin.split('').map(function (ch) {
|
||||
return ch.charCodeAt(0);
|
||||
});
|
||||
return 'undefined' !== typeof Uint8Array ? new Uint8Array(arr) : arr;
|
||||
};
|
||||
Enc.bufToHex = function (u8) {
|
||||
var hex = [];
|
||||
var i, h;
|
||||
var len = (u8.byteLength || u8.length);
|
||||
|
||||
for (i = 0; i < len; i += 1) {
|
||||
h = u8[i].toString(16);
|
||||
if (h.length % 2) { h = '0' + h; }
|
||||
hex.push(h);
|
||||
}
|
||||
|
||||
return hex.join('').toLowerCase();
|
||||
};
|
||||
Enc.numToHex = function (d) {
|
||||
d = d.toString(16);
|
||||
if (d.length % 2) {
|
||||
return '0' + d;
|
||||
}
|
||||
return d;
|
||||
};
|
||||
|
||||
}('undefined' !== typeof window ? window : module.exports));
|
341449
semag/ayun/classes.js
Before Width: | Height: | Size: 6.6 KiB |
@ -1,84 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-261780635-1"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'UA-261780635-1');
|
||||
</script>
|
||||
<!-- Google Tag Manager -->
|
||||
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
||||
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
|
||||
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
|
||||
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
|
||||
})(window,document,'script','dataLayer','GTM-TG85STRS');</script>
|
||||
<!-- End Google Tag Manager -->
|
||||
|
||||
<title>Play Minecraft Online! | Online mc</title>
|
||||
|
||||
<link rel="icon" href="/icon.png">
|
||||
<meta name="description" content="Play Minecraft (eaglercraft) Online For Free!" />
|
||||
<meta name="keywords" content="free minecraft online, eaglercraft, minecraft, onlinemc, Onlinemc, ayuncraft, Ayuncraft, mc, eaglercraftx, eaglercraft shaders, eaglercraft download,eaglercraft, eaglercraftx, minecraft, 1.8, 1.8.8, eaglercraft, eaglercraft minecraft, eaglercraft 3kh0, eaglercraft github, eaglercraft singleplayer, eaglercraft hacks, eaglercraft 1.8, eaglercraft server, eaglecraft game, eaglercraft alternative, eaglercraft alt links, eaglercraft asspixel, eaglercraft anarchy server, eaglercraft aeon, eaglercraft asspixel server ip, eaglercraft all links, eaglercraft aeon server, eaglercraft beta, eaglecraft boats, eaglecraft boats for sale, eaglecraft boats for sale bc, eaglecraft bedwars server, eaglecraft boats inc, eaglercraft beta servers, eaglercraft blocked, eaglercraft client, eaglecraft custom boats, eaglecraft campbell river, eaglercraft creative, eaglercraft commands, eaglercraft code, eaglercraft controls, eaglercraft com, eaglercraft download, eaglercraft discord, eaglercraft dupe glitch, eaglercraft download file, eaglercraft download google drive, eaglercraft dmca, eaglercraft deleted, eaglercraft down, eaglercraft embed, eaglercraft epk file download, eaglercraft end of stream, eaglecraft apk download, eaglecraft eagtek, eaglercraft exploit, eaglecraft eggs, eaglercraft epk world file download, eaglercraft file, eaglercraft file download, eaglercraft free, eaglercraft forums, eaglercraft fork, eaglercraft faq, eaglercraft fps, eaglecraft free download, eaglercraft github servers, eaglercraft google drive, eaglercraft github lax1dude, eaglercraft github download, eaglercraft github.io, eaglercraft google sites, minecraft, applet, singleplayer, replit, html5, chromebook, lax1dude, games, eaglercraft singleplayer, eagler, minecraft for free, free minecraft">
|
||||
<meta property="og:title" content="Online mc" />
|
||||
<meta property="og:image" content="/icon.png" />
|
||||
<meta property="og:description" content="Online Minecraft" />
|
||||
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.1.3/css/bootstrap.min.css">
|
||||
<link href="/style.css" rel="stylesheet" />
|
||||
<link href="/darkmode.css" rel="stylesheet" />
|
||||
</head>
|
||||
|
||||
|
||||
<body class="diff-bg">
|
||||
<div id="loading"></div>
|
||||
<div class="container container-table">
|
||||
<div class="row vertical-center-row">
|
||||
<div class="col-12">
|
||||
</a>
|
||||
<div class="d-flex justify-content-center">
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<div class="button-area d-block">
|
||||
<h1 class="dark-text">404 Not Found!</h1>
|
||||
<div class="splash-404">...</div>
|
||||
<h3> </h3>
|
||||
<a href="/">click here to go back to the main page!</a>
|
||||
<img class="creeper ms-auto d-block" src="creeper.webp" alt=""/>
|
||||
</div>
|
||||
<div class="mc-footer d-flex justify-content-between">
|
||||
<div class="footer-copyright text-end text-white">This website is not affiliated with Mojang.</div>
|
||||
<div class="mc-dd">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script defer src="/_vercel/insights/script.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.1.3/js/bootstrap.bundle.min.js"></script>
|
||||
<script>
|
||||
window.onload = function () {
|
||||
//display loader on page load
|
||||
$('#loading').fadeOut();
|
||||
}
|
||||
|
||||
setTimeout(function () {
|
||||
//display loader on page load
|
||||
$('#loading').fadeOut();
|
||||
}, 12 * 1000);
|
||||
</script>
|
||||
<script src="/darkmode.js"></script>
|
||||
<script src="/splash-404.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -1,45 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>ayuncraft</title>
|
||||
|
||||
<script type="text/javascript" src="jsbn/jsbn.js"></script>
|
||||
<script type="text/javascript" src="jsbn/jsbn2.js"></script>
|
||||
<script type="text/javascript" src="jsbn/base64.js"></script>
|
||||
<script type="text/javascript" src="jsbn/prng4.js"></script>
|
||||
<script type="text/javascript" src="jsbn/rng.js"></script>
|
||||
<script type="text/javascript" src="jsbn/rsa.js"></script>
|
||||
<script type="text/javascript" src="jsbn/rsa2.js"></script>
|
||||
|
||||
<script type="text/javascript" src="asn1-parser.js"></script>
|
||||
|
||||
<script type="text/javascript" src="music.js"></script>
|
||||
|
||||
<script type="text/javascript" src="classes.js?t=updateme0"></script>
|
||||
<script src="/js/all.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
//window.eag_self_proxy=true;//set to true to set the default proxy to the current url
|
||||
//window.eag_proxy_list="";//set to a string of comma-separated proxy ip:port combinations for a custom proxy list
|
||||
var name="PixelCraft",motd="A public 1.5.2 server",ip="pixelcraft.me";
|
||||
window.addEventListener("load", function(){
|
||||
document.requestPointerLock=document.requestPointerLock||function(){};
|
||||
document.exitPointerLock=document.exitPointerLock||function(){};
|
||||
window.minecraftOpts = [
|
||||
"game_frame","assets.epk",
|
||||
btoa(atob("CgAACQAHc2VydmVycwoAAAABCAAKZm9yY2VkTU9URABtb3RkaGVyZQEAC2hpZGVBZGRyZXNzAQgAAmlwAGlwaGVyZQgABG5hbWUAbmFtZWhlcmUAAA==").replace("motdhere",String.fromCharCode(motd.length)+motd).replace("namehere",String.fromCharCode(name.length)+name).replace("iphere",String.fromCharCode(ip.length)+ip))
|
||||
];
|
||||
(function(){
|
||||
var q = window.location.search;
|
||||
if(typeof q === 'string' && q.startsWith("?")) {
|
||||
q = new URLSearchParams(q);
|
||||
var s = q.get("server");
|
||||
if(s) window.minecraftOpts.push(s);
|
||||
}
|
||||
})();
|
||||
main();
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body style="margin:0px;width:100vw;height:100vh;" id="game_frame">
|
||||
</body>
|
||||
</html>
|
@ -1,71 +0,0 @@
|
||||
var b64map="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||
var b64padchar="=";
|
||||
|
||||
function hex2b64(h) {
|
||||
var i;
|
||||
var c;
|
||||
var ret = "";
|
||||
for(i = 0; i+3 <= h.length; i+=3) {
|
||||
c = parseInt(h.substring(i,i+3),16);
|
||||
ret += b64map.charAt(c >> 6) + b64map.charAt(c & 63);
|
||||
}
|
||||
if(i+1 == h.length) {
|
||||
c = parseInt(h.substring(i,i+1),16);
|
||||
ret += b64map.charAt(c << 2);
|
||||
}
|
||||
else if(i+2 == h.length) {
|
||||
c = parseInt(h.substring(i,i+2),16);
|
||||
ret += b64map.charAt(c >> 2) + b64map.charAt((c & 3) << 4);
|
||||
}
|
||||
while((ret.length & 3) > 0) ret += b64padchar;
|
||||
return ret;
|
||||
}
|
||||
|
||||
// convert a base64 string to hex
|
||||
function b64tohex(s) {
|
||||
var ret = ""
|
||||
var i;
|
||||
var k = 0; // b64 state, 0-3
|
||||
var slop;
|
||||
for(i = 0; i < s.length; ++i) {
|
||||
if(s.charAt(i) == b64padchar) break;
|
||||
v = b64map.indexOf(s.charAt(i));
|
||||
if(v < 0) continue;
|
||||
if(k == 0) {
|
||||
ret += int2char(v >> 2);
|
||||
slop = v & 3;
|
||||
k = 1;
|
||||
}
|
||||
else if(k == 1) {
|
||||
ret += int2char((slop << 2) | (v >> 4));
|
||||
slop = v & 0xf;
|
||||
k = 2;
|
||||
}
|
||||
else if(k == 2) {
|
||||
ret += int2char(slop);
|
||||
ret += int2char(v >> 2);
|
||||
slop = v & 3;
|
||||
k = 3;
|
||||
}
|
||||
else {
|
||||
ret += int2char((slop << 2) | (v >> 4));
|
||||
ret += int2char(v & 0xf);
|
||||
k = 0;
|
||||
}
|
||||
}
|
||||
if(k == 1)
|
||||
ret += int2char(slop << 2);
|
||||
return ret;
|
||||
}
|
||||
|
||||
// convert a base64 string to a byte/number array
|
||||
function b64toBA(s) {
|
||||
//piggyback on b64tohex for now, optimize later
|
||||
var h = b64tohex(s);
|
||||
var i;
|
||||
var a = new Array();
|
||||
for(i = 0; 2*i < h.length; ++i) {
|
||||
a[i] = parseInt(h.substring(2*i,2*i+2),16);
|
||||
}
|
||||
return a;
|
||||
}
|
@ -1,559 +0,0 @@
|
||||
// Copyright (c) 2005 Tom Wu
|
||||
// All Rights Reserved.
|
||||
// See "LICENSE" for details.
|
||||
|
||||
// Basic JavaScript BN library - subset useful for RSA encryption.
|
||||
|
||||
// Bits per digit
|
||||
var dbits;
|
||||
|
||||
// JavaScript engine analysis
|
||||
var canary = 0xdeadbeefcafe;
|
||||
var j_lm = ((canary&0xffffff)==0xefcafe);
|
||||
|
||||
// (public) Constructor
|
||||
function BigInteger(a,b,c) {
|
||||
if(a != null)
|
||||
if("number" == typeof a) this.fromNumber(a,b,c);
|
||||
else if(b == null && "string" != typeof a) this.fromString(a,256);
|
||||
else this.fromString(a,b);
|
||||
}
|
||||
|
||||
// return new, unset BigInteger
|
||||
function nbi() { return new BigInteger(null); }
|
||||
|
||||
// am: Compute w_j += (x*this_i), propagate carries,
|
||||
// c is initial carry, returns final carry.
|
||||
// c < 3*dvalue, x < 2*dvalue, this_i < dvalue
|
||||
// We need to select the fastest one that works in this environment.
|
||||
|
||||
// am1: use a single mult and divide to get the high bits,
|
||||
// max digit bits should be 26 because
|
||||
// max internal value = 2*dvalue^2-2*dvalue (< 2^53)
|
||||
function am1(i,x,w,j,c,n) {
|
||||
while(--n >= 0) {
|
||||
var v = x*this[i++]+w[j]+c;
|
||||
c = Math.floor(v/0x4000000);
|
||||
w[j++] = v&0x3ffffff;
|
||||
}
|
||||
return c;
|
||||
}
|
||||
// am2 avoids a big mult-and-extract completely.
|
||||
// Max digit bits should be <= 30 because we do bitwise ops
|
||||
// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
|
||||
function am2(i,x,w,j,c,n) {
|
||||
var xl = x&0x7fff, xh = x>>15;
|
||||
while(--n >= 0) {
|
||||
var l = this[i]&0x7fff;
|
||||
var h = this[i++]>>15;
|
||||
var m = xh*l+h*xl;
|
||||
l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);
|
||||
c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);
|
||||
w[j++] = l&0x3fffffff;
|
||||
}
|
||||
return c;
|
||||
}
|
||||
// Alternately, set max digit bits to 28 since some
|
||||
// browsers slow down when dealing with 32-bit numbers.
|
||||
function am3(i,x,w,j,c,n) {
|
||||
var xl = x&0x3fff, xh = x>>14;
|
||||
while(--n >= 0) {
|
||||
var l = this[i]&0x3fff;
|
||||
var h = this[i++]>>14;
|
||||
var m = xh*l+h*xl;
|
||||
l = xl*l+((m&0x3fff)<<14)+w[j]+c;
|
||||
c = (l>>28)+(m>>14)+xh*h;
|
||||
w[j++] = l&0xfffffff;
|
||||
}
|
||||
return c;
|
||||
}
|
||||
if(j_lm && (navigator.appName == "Microsoft Internet Explorer")) {
|
||||
BigInteger.prototype.am = am2;
|
||||
dbits = 30;
|
||||
}
|
||||
else if(j_lm && (navigator.appName != "Netscape")) {
|
||||
BigInteger.prototype.am = am1;
|
||||
dbits = 26;
|
||||
}
|
||||
else { // Mozilla/Netscape seems to prefer am3
|
||||
BigInteger.prototype.am = am3;
|
||||
dbits = 28;
|
||||
}
|
||||
|
||||
BigInteger.prototype.DB = dbits;
|
||||
BigInteger.prototype.DM = ((1<<dbits)-1);
|
||||
BigInteger.prototype.DV = (1<<dbits);
|
||||
|
||||
var BI_FP = 52;
|
||||
BigInteger.prototype.FV = Math.pow(2,BI_FP);
|
||||
BigInteger.prototype.F1 = BI_FP-dbits;
|
||||
BigInteger.prototype.F2 = 2*dbits-BI_FP;
|
||||
|
||||
// Digit conversions
|
||||
var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";
|
||||
var BI_RC = new Array();
|
||||
var rr,vv;
|
||||
rr = "0".charCodeAt(0);
|
||||
for(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;
|
||||
rr = "a".charCodeAt(0);
|
||||
for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
|
||||
rr = "A".charCodeAt(0);
|
||||
for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
|
||||
|
||||
function int2char(n) { return BI_RM.charAt(n); }
|
||||
function intAt(s,i) {
|
||||
var c = BI_RC[s.charCodeAt(i)];
|
||||
return (c==null)?-1:c;
|
||||
}
|
||||
|
||||
// (protected) copy this to r
|
||||
function bnpCopyTo(r) {
|
||||
for(var i = this.t-1; i >= 0; --i) r[i] = this[i];
|
||||
r.t = this.t;
|
||||
r.s = this.s;
|
||||
}
|
||||
|
||||
// (protected) set from integer value x, -DV <= x < DV
|
||||
function bnpFromInt(x) {
|
||||
this.t = 1;
|
||||
this.s = (x<0)?-1:0;
|
||||
if(x > 0) this[0] = x;
|
||||
else if(x < -1) this[0] = x+this.DV;
|
||||
else this.t = 0;
|
||||
}
|
||||
|
||||
// return bigint initialized to value
|
||||
function nbv(i) { var r = nbi(); r.fromInt(i); return r; }
|
||||
|
||||
// (protected) set from string and radix
|
||||
function bnpFromString(s,b) {
|
||||
var k;
|
||||
if(b == 16) k = 4;
|
||||
else if(b == 8) k = 3;
|
||||
else if(b == 256) k = 8; // byte array
|
||||
else if(b == 2) k = 1;
|
||||
else if(b == 32) k = 5;
|
||||
else if(b == 4) k = 2;
|
||||
else { this.fromRadix(s,b); return; }
|
||||
this.t = 0;
|
||||
this.s = 0;
|
||||
var i = s.length, mi = false, sh = 0;
|
||||
while(--i >= 0) {
|
||||
var x = (k==8)?s[i]&0xff:intAt(s,i);
|
||||
if(x < 0) {
|
||||
if(s.charAt(i) == "-") mi = true;
|
||||
continue;
|
||||
}
|
||||
mi = false;
|
||||
if(sh == 0)
|
||||
this[this.t++] = x;
|
||||
else if(sh+k > this.DB) {
|
||||
this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<<sh;
|
||||
this[this.t++] = (x>>(this.DB-sh));
|
||||
}
|
||||
else
|
||||
this[this.t-1] |= x<<sh;
|
||||
sh += k;
|
||||
if(sh >= this.DB) sh -= this.DB;
|
||||
}
|
||||
if(k == 8 && (s[0]&0x80) != 0) {
|
||||
this.s = -1;
|
||||
if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)<<sh;
|
||||
}
|
||||
this.clamp();
|
||||
if(mi) BigInteger.ZERO.subTo(this,this);
|
||||
}
|
||||
|
||||
// (protected) clamp off excess high words
|
||||
function bnpClamp() {
|
||||
var c = this.s&this.DM;
|
||||
while(this.t > 0 && this[this.t-1] == c) --this.t;
|
||||
}
|
||||
|
||||
// (public) return string representation in given radix
|
||||
function bnToString(b) {
|
||||
if(this.s < 0) return "-"+this.negate().toString(b);
|
||||
var k;
|
||||
if(b == 16) k = 4;
|
||||
else if(b == 8) k = 3;
|
||||
else if(b == 2) k = 1;
|
||||
else if(b == 32) k = 5;
|
||||
else if(b == 4) k = 2;
|
||||
else return this.toRadix(b);
|
||||
var km = (1<<k)-1, d, m = false, r = "", i = this.t;
|
||||
var p = this.DB-(i*this.DB)%k;
|
||||
if(i-- > 0) {
|
||||
if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }
|
||||
while(i >= 0) {
|
||||
if(p < k) {
|
||||
d = (this[i]&((1<<p)-1))<<(k-p);
|
||||
d |= this[--i]>>(p+=this.DB-k);
|
||||
}
|
||||
else {
|
||||
d = (this[i]>>(p-=k))&km;
|
||||
if(p <= 0) { p += this.DB; --i; }
|
||||
}
|
||||
if(d > 0) m = true;
|
||||
if(m) r += int2char(d);
|
||||
}
|
||||
}
|
||||
return m?r:"0";
|
||||
}
|
||||
|
||||
// (public) -this
|
||||
function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }
|
||||
|
||||
// (public) |this|
|
||||
function bnAbs() { return (this.s<0)?this.negate():this; }
|
||||
|
||||
// (public) return + if this > a, - if this < a, 0 if equal
|
||||
function bnCompareTo(a) {
|
||||
var r = this.s-a.s;
|
||||
if(r != 0) return r;
|
||||
var i = this.t;
|
||||
r = i-a.t;
|
||||
if(r != 0) return (this.s<0)?-r:r;
|
||||
while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// returns bit length of the integer x
|
||||
function nbits(x) {
|
||||
var r = 1, t;
|
||||
if((t=x>>>16) != 0) { x = t; r += 16; }
|
||||
if((t=x>>8) != 0) { x = t; r += 8; }
|
||||
if((t=x>>4) != 0) { x = t; r += 4; }
|
||||
if((t=x>>2) != 0) { x = t; r += 2; }
|
||||
if((t=x>>1) != 0) { x = t; r += 1; }
|
||||
return r;
|
||||
}
|
||||
|
||||
// (public) return the number of bits in "this"
|
||||
function bnBitLength() {
|
||||
if(this.t <= 0) return 0;
|
||||
return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));
|
||||
}
|
||||
|
||||
// (protected) r = this << n*DB
|
||||
function bnpDLShiftTo(n,r) {
|
||||
var i;
|
||||
for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];
|
||||
for(i = n-1; i >= 0; --i) r[i] = 0;
|
||||
r.t = this.t+n;
|
||||
r.s = this.s;
|
||||
}
|
||||
|
||||
// (protected) r = this >> n*DB
|
||||
function bnpDRShiftTo(n,r) {
|
||||
for(var i = n; i < this.t; ++i) r[i-n] = this[i];
|
||||
r.t = Math.max(this.t-n,0);
|
||||
r.s = this.s;
|
||||
}
|
||||
|
||||
// (protected) r = this << n
|
||||
function bnpLShiftTo(n,r) {
|
||||
var bs = n%this.DB;
|
||||
var cbs = this.DB-bs;
|
||||
var bm = (1<<cbs)-1;
|
||||
var ds = Math.floor(n/this.DB), c = (this.s<<bs)&this.DM, i;
|
||||
for(i = this.t-1; i >= 0; --i) {
|
||||
r[i+ds+1] = (this[i]>>cbs)|c;
|
||||
c = (this[i]&bm)<<bs;
|
||||
}
|
||||
for(i = ds-1; i >= 0; --i) r[i] = 0;
|
||||
r[ds] = c;
|
||||
r.t = this.t+ds+1;
|
||||
r.s = this.s;
|
||||
r.clamp();
|
||||
}
|
||||
|
||||
// (protected) r = this >> n
|
||||
function bnpRShiftTo(n,r) {
|
||||
r.s = this.s;
|
||||
var ds = Math.floor(n/this.DB);
|
||||
if(ds >= this.t) { r.t = 0; return; }
|
||||
var bs = n%this.DB;
|
||||
var cbs = this.DB-bs;
|
||||
var bm = (1<<bs)-1;
|
||||
r[0] = this[ds]>>bs;
|
||||
for(var i = ds+1; i < this.t; ++i) {
|
||||
r[i-ds-1] |= (this[i]&bm)<<cbs;
|
||||
r[i-ds] = this[i]>>bs;
|
||||
}
|
||||
if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<<cbs;
|
||||
r.t = this.t-ds;
|
||||
r.clamp();
|
||||
}
|
||||
|
||||
// (protected) r = this - a
|
||||
function bnpSubTo(a,r) {
|
||||
var i = 0, c = 0, m = Math.min(a.t,this.t);
|
||||
while(i < m) {
|
||||
c += this[i]-a[i];
|
||||
r[i++] = c&this.DM;
|
||||
c >>= this.DB;
|
||||
}
|
||||
if(a.t < this.t) {
|
||||
c -= a.s;
|
||||
while(i < this.t) {
|
||||
c += this[i];
|
||||
r[i++] = c&this.DM;
|
||||
c >>= this.DB;
|
||||
}
|
||||
c += this.s;
|
||||
}
|
||||
else {
|
||||
c += this.s;
|
||||
while(i < a.t) {
|
||||
c -= a[i];
|
||||
r[i++] = c&this.DM;
|
||||
c >>= this.DB;
|
||||
}
|
||||
c -= a.s;
|
||||
}
|
||||
r.s = (c<0)?-1:0;
|
||||
if(c < -1) r[i++] = this.DV+c;
|
||||
else if(c > 0) r[i++] = c;
|
||||
r.t = i;
|
||||
r.clamp();
|
||||
}
|
||||
|
||||
// (protected) r = this * a, r != this,a (HAC 14.12)
|
||||
// "this" should be the larger one if appropriate.
|
||||
function bnpMultiplyTo(a,r) {
|
||||
var x = this.abs(), y = a.abs();
|
||||
var i = x.t;
|
||||
r.t = i+y.t;
|
||||
while(--i >= 0) r[i] = 0;
|
||||
for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);
|
||||
r.s = 0;
|
||||
r.clamp();
|
||||
if(this.s != a.s) BigInteger.ZERO.subTo(r,r);
|
||||
}
|
||||
|
||||
// (protected) r = this^2, r != this (HAC 14.16)
|
||||
function bnpSquareTo(r) {
|
||||
var x = this.abs();
|
||||
var i = r.t = 2*x.t;
|
||||
while(--i >= 0) r[i] = 0;
|
||||
for(i = 0; i < x.t-1; ++i) {
|
||||
var c = x.am(i,x[i],r,2*i,0,1);
|
||||
if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {
|
||||
r[i+x.t] -= x.DV;
|
||||
r[i+x.t+1] = 1;
|
||||
}
|
||||
}
|
||||
if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);
|
||||
r.s = 0;
|
||||
r.clamp();
|
||||
}
|
||||
|
||||
// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
|
||||
// r != q, this != m. q or r may be null.
|
||||
function bnpDivRemTo(m,q,r) {
|
||||
var pm = m.abs();
|
||||
if(pm.t <= 0) return;
|
||||
var pt = this.abs();
|
||||
if(pt.t < pm.t) {
|
||||
if(q != null) q.fromInt(0);
|
||||
if(r != null) this.copyTo(r);
|
||||
return;
|
||||
}
|
||||
if(r == null) r = nbi();
|
||||
var y = nbi(), ts = this.s, ms = m.s;
|
||||
var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus
|
||||
if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }
|
||||
else { pm.copyTo(y); pt.copyTo(r); }
|
||||
var ys = y.t;
|
||||
var y0 = y[ys-1];
|
||||
if(y0 == 0) return;
|
||||
var yt = y0*(1<<this.F1)+((ys>1)?y[ys-2]>>this.F2:0);
|
||||
var d1 = this.FV/yt, d2 = (1<<this.F1)/yt, e = 1<<this.F2;
|
||||
var i = r.t, j = i-ys, t = (q==null)?nbi():q;
|
||||
y.dlShiftTo(j,t);
|
||||
if(r.compareTo(t) >= 0) {
|
||||
r[r.t++] = 1;
|
||||
r.subTo(t,r);
|
||||
}
|
||||
BigInteger.ONE.dlShiftTo(ys,t);
|
||||
t.subTo(y,y); // "negative" y so we can replace sub with am later
|
||||
while(y.t < ys) y[y.t++] = 0;
|
||||
while(--j >= 0) {
|
||||
// Estimate quotient digit
|
||||
var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);
|
||||
if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out
|
||||
y.dlShiftTo(j,t);
|
||||
r.subTo(t,r);
|
||||
while(r[i] < --qd) r.subTo(t,r);
|
||||
}
|
||||
}
|
||||
if(q != null) {
|
||||
r.drShiftTo(ys,q);
|
||||
if(ts != ms) BigInteger.ZERO.subTo(q,q);
|
||||
}
|
||||
r.t = ys;
|
||||
r.clamp();
|
||||
if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder
|
||||
if(ts < 0) BigInteger.ZERO.subTo(r,r);
|
||||
}
|
||||
|
||||
// (public) this mod a
|
||||
function bnMod(a) {
|
||||
var r = nbi();
|
||||
this.abs().divRemTo(a,null,r);
|
||||
if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);
|
||||
return r;
|
||||
}
|
||||
|
||||
// Modular reduction using "classic" algorithm
|
||||
function Classic(m) { this.m = m; }
|
||||
function cConvert(x) {
|
||||
if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);
|
||||
else return x;
|
||||
}
|
||||
function cRevert(x) { return x; }
|
||||
function cReduce(x) { x.divRemTo(this.m,null,x); }
|
||||
function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
|
||||
function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
|
||||
|
||||
Classic.prototype.convert = cConvert;
|
||||
Classic.prototype.revert = cRevert;
|
||||
Classic.prototype.reduce = cReduce;
|
||||
Classic.prototype.mulTo = cMulTo;
|
||||
Classic.prototype.sqrTo = cSqrTo;
|
||||
|
||||
// (protected) return "-1/this % 2^DB"; useful for Mont. reduction
|
||||
// justification:
|
||||
// xy == 1 (mod m)
|
||||
// xy = 1+km
|
||||
// xy(2-xy) = (1+km)(1-km)
|
||||
// x[y(2-xy)] = 1-k^2m^2
|
||||
// x[y(2-xy)] == 1 (mod m^2)
|
||||
// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
|
||||
// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
|
||||
// JS multiply "overflows" differently from C/C++, so care is needed here.
|
||||
function bnpInvDigit() {
|
||||
if(this.t < 1) return 0;
|
||||
var x = this[0];
|
||||
if((x&1) == 0) return 0;
|
||||
var y = x&3; // y == 1/x mod 2^2
|
||||
y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4
|
||||
y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8
|
||||
y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16
|
||||
// last step - calculate inverse mod DV directly;
|
||||
// assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
|
||||
y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits
|
||||
// we really want the negative inverse, and -DV < y < DV
|
||||
return (y>0)?this.DV-y:-y;
|
||||
}
|
||||
|
||||
// Montgomery reduction
|
||||
function Montgomery(m) {
|
||||
this.m = m;
|
||||
this.mp = m.invDigit();
|
||||
this.mpl = this.mp&0x7fff;
|
||||
this.mph = this.mp>>15;
|
||||
this.um = (1<<(m.DB-15))-1;
|
||||
this.mt2 = 2*m.t;
|
||||
}
|
||||
|
||||
// xR mod m
|
||||
function montConvert(x) {
|
||||
var r = nbi();
|
||||
x.abs().dlShiftTo(this.m.t,r);
|
||||
r.divRemTo(this.m,null,r);
|
||||
if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);
|
||||
return r;
|
||||
}
|
||||
|
||||
// x/R mod m
|
||||
function montRevert(x) {
|
||||
var r = nbi();
|
||||
x.copyTo(r);
|
||||
this.reduce(r);
|
||||
return r;
|
||||
}
|
||||
|
||||
// x = x/R mod m (HAC 14.32)
|
||||
function montReduce(x) {
|
||||
while(x.t <= this.mt2) // pad x so am has enough room later
|
||||
x[x.t++] = 0;
|
||||
for(var i = 0; i < this.m.t; ++i) {
|
||||
// faster way of calculating u0 = x[i]*mp mod DV
|
||||
var j = x[i]&0x7fff;
|
||||
var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;
|
||||
// use am to combine the multiply-shift-add into one call
|
||||
j = i+this.m.t;
|
||||
x[j] += this.m.am(0,u0,x,i,0,this.m.t);
|
||||
// propagate carry
|
||||
while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }
|
||||
}
|
||||
x.clamp();
|
||||
x.drShiftTo(this.m.t,x);
|
||||
if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
|
||||
}
|
||||
|
||||
// r = "x^2/R mod m"; x != r
|
||||
function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
|
||||
|
||||
// r = "xy/R mod m"; x,y != r
|
||||
function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
|
||||
|
||||
Montgomery.prototype.convert = montConvert;
|
||||
Montgomery.prototype.revert = montRevert;
|
||||
Montgomery.prototype.reduce = montReduce;
|
||||
Montgomery.prototype.mulTo = montMulTo;
|
||||
Montgomery.prototype.sqrTo = montSqrTo;
|
||||
|
||||
// (protected) true iff this is even
|
||||
function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }
|
||||
|
||||
// (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
|
||||
function bnpExp(e,z) {
|
||||
if(e > 0xffffffff || e < 1) return BigInteger.ONE;
|
||||
var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;
|
||||
g.copyTo(r);
|
||||
while(--i >= 0) {
|
||||
z.sqrTo(r,r2);
|
||||
if((e&(1<<i)) > 0) z.mulTo(r2,g,r);
|
||||
else { var t = r; r = r2; r2 = t; }
|
||||
}
|
||||
return z.revert(r);
|
||||
}
|
||||
|
||||
// (public) this^e % m, 0 <= e < 2^32
|
||||
function bnModPowInt(e,m) {
|
||||
var z;
|
||||
if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);
|
||||
return this.exp(e,z);
|
||||
}
|
||||
|
||||
// protected
|
||||
BigInteger.prototype.copyTo = bnpCopyTo;
|
||||
BigInteger.prototype.fromInt = bnpFromInt;
|
||||
BigInteger.prototype.fromString = bnpFromString;
|
||||
BigInteger.prototype.clamp = bnpClamp;
|
||||
BigInteger.prototype.dlShiftTo = bnpDLShiftTo;
|
||||
BigInteger.prototype.drShiftTo = bnpDRShiftTo;
|
||||
BigInteger.prototype.lShiftTo = bnpLShiftTo;
|
||||
BigInteger.prototype.rShiftTo = bnpRShiftTo;
|
||||
BigInteger.prototype.subTo = bnpSubTo;
|
||||
BigInteger.prototype.multiplyTo = bnpMultiplyTo;
|
||||
BigInteger.prototype.squareTo = bnpSquareTo;
|
||||
BigInteger.prototype.divRemTo = bnpDivRemTo;
|
||||
BigInteger.prototype.invDigit = bnpInvDigit;
|
||||
BigInteger.prototype.isEven = bnpIsEven;
|
||||
BigInteger.prototype.exp = bnpExp;
|
||||
|
||||
// public
|
||||
BigInteger.prototype.toString = bnToString;
|
||||
BigInteger.prototype.negate = bnNegate;
|
||||
BigInteger.prototype.abs = bnAbs;
|
||||
BigInteger.prototype.compareTo = bnCompareTo;
|
||||
BigInteger.prototype.bitLength = bnBitLength;
|
||||
BigInteger.prototype.mod = bnMod;
|
||||
BigInteger.prototype.modPowInt = bnModPowInt;
|
||||
|
||||
// "constants"
|
||||
BigInteger.ZERO = nbv(0);
|
||||
BigInteger.ONE = nbv(1);
|
@ -1,656 +0,0 @@
|
||||
// Copyright (c) 2005-2009 Tom Wu
|
||||
// All Rights Reserved.
|
||||
// See "LICENSE" for details.
|
||||
|
||||
// Extended JavaScript BN functions, required for RSA private ops.
|
||||
|
||||
// Version 1.1: new BigInteger("0", 10) returns "proper" zero
|
||||
// Version 1.2: square() API, isProbablePrime fix
|
||||
|
||||
// (public)
|
||||
function bnClone() { var r = nbi(); this.copyTo(r); return r; }
|
||||
|
||||
// (public) return value as integer
|
||||
function bnIntValue() {
|
||||
if(this.s < 0) {
|
||||
if(this.t == 1) return this[0]-this.DV;
|
||||
else if(this.t == 0) return -1;
|
||||
}
|
||||
else if(this.t == 1) return this[0];
|
||||
else if(this.t == 0) return 0;
|
||||
// assumes 16 < DB < 32
|
||||
return ((this[1]&((1<<(32-this.DB))-1))<<this.DB)|this[0];
|
||||
}
|
||||
|
||||
// (public) return value as byte
|
||||
function bnByteValue() { return (this.t==0)?this.s:(this[0]<<24)>>24; }
|
||||
|
||||
// (public) return value as short (assumes DB>=16)
|
||||
function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; }
|
||||
|
||||
// (protected) return x s.t. r^x < DV
|
||||
function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }
|
||||
|
||||
// (public) 0 if this == 0, 1 if this > 0
|
||||
function bnSigNum() {
|
||||
if(this.s < 0) return -1;
|
||||
else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;
|
||||
else return 1;
|
||||
}
|
||||
|
||||
// (protected) convert to radix string
|
||||
function bnpToRadix(b) {
|
||||
if(b == null) b = 10;
|
||||
if(this.signum() == 0 || b < 2 || b > 36) return "0";
|
||||
var cs = this.chunkSize(b);
|
||||
var a = Math.pow(b,cs);
|
||||
var d = nbv(a), y = nbi(), z = nbi(), r = "";
|
||||
this.divRemTo(d,y,z);
|
||||
while(y.signum() > 0) {
|
||||
r = (a+z.intValue()).toString(b).substr(1) + r;
|
||||
y.divRemTo(d,y,z);
|
||||
}
|
||||
return z.intValue().toString(b) + r;
|
||||
}
|
||||
|
||||
// (protected) convert from radix string
|
||||
function bnpFromRadix(s,b) {
|
||||
this.fromInt(0);
|
||||
if(b == null) b = 10;
|
||||
var cs = this.chunkSize(b);
|
||||
var d = Math.pow(b,cs), mi = false, j = 0, w = 0;
|
||||
for(var i = 0; i < s.length; ++i) {
|
||||
var x = intAt(s,i);
|
||||
if(x < 0) {
|
||||
if(s.charAt(i) == "-" && this.signum() == 0) mi = true;
|
||||
continue;
|
||||
}
|
||||
w = b*w+x;
|
||||
if(++j >= cs) {
|
||||
this.dMultiply(d);
|
||||
this.dAddOffset(w,0);
|
||||
j = 0;
|
||||
w = 0;
|
||||
}
|
||||
}
|
||||
if(j > 0) {
|
||||
this.dMultiply(Math.pow(b,j));
|
||||
this.dAddOffset(w,0);
|
||||
}
|
||||
if(mi) BigInteger.ZERO.subTo(this,this);
|
||||
}
|
||||
|
||||
// (protected) alternate constructor
|
||||
function bnpFromNumber(a,b,c) {
|
||||
if("number" == typeof b) {
|
||||
// new BigInteger(int,int,RNG)
|
||||
if(a < 2) this.fromInt(1);
|
||||
else {
|
||||
this.fromNumber(a,c);
|
||||
if(!this.testBit(a-1)) // force MSB set
|
||||
this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);
|
||||
if(this.isEven()) this.dAddOffset(1,0); // force odd
|
||||
while(!this.isProbablePrime(b)) {
|
||||
this.dAddOffset(2,0);
|
||||
if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
// new BigInteger(int,RNG)
|
||||
var x = new Array(), t = a&7;
|
||||
x.length = (a>>3)+1;
|
||||
b.nextBytes(x);
|
||||
if(t > 0) x[0] &= ((1<<t)-1); else x[0] = 0;
|
||||
this.fromString(x,256);
|
||||
}
|
||||
}
|
||||
|
||||
// (public) convert to bigendian byte array
|
||||
function bnToByteArray() {
|
||||
var i = this.t, r = new Array();
|
||||
r[0] = this.s;
|
||||
var p = this.DB-(i*this.DB)%8, d, k = 0;
|
||||
if(i-- > 0) {
|
||||
if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p)
|
||||
r[k++] = d|(this.s<<(this.DB-p));
|
||||
while(i >= 0) {
|
||||
if(p < 8) {
|
||||
d = (this[i]&((1<<p)-1))<<(8-p);
|
||||
d |= this[--i]>>(p+=this.DB-8);
|
||||
}
|
||||
else {
|
||||
d = (this[i]>>(p-=8))&0xff;
|
||||
if(p <= 0) { p += this.DB; --i; }
|
||||
}
|
||||
if((d&0x80) != 0) d |= -256;
|
||||
if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;
|
||||
if(k > 0 || d != this.s) r[k++] = d;
|
||||
}
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
function bnEquals(a) { return(this.compareTo(a)==0); }
|
||||
function bnMin(a) { return(this.compareTo(a)<0)?this:a; }
|
||||
function bnMax(a) { return(this.compareTo(a)>0)?this:a; }
|
||||
|
||||
// (protected) r = this op a (bitwise)
|
||||
function bnpBitwiseTo(a,op,r) {
|
||||
var i, f, m = Math.min(a.t,this.t);
|
||||
for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]);
|
||||
if(a.t < this.t) {
|
||||
f = a.s&this.DM;
|
||||
for(i = m; i < this.t; ++i) r[i] = op(this[i],f);
|
||||
r.t = this.t;
|
||||
}
|
||||
else {
|
||||
f = this.s&this.DM;
|
||||
for(i = m; i < a.t; ++i) r[i] = op(f,a[i]);
|
||||
r.t = a.t;
|
||||
}
|
||||
r.s = op(this.s,a.s);
|
||||
r.clamp();
|
||||
}
|
||||
|
||||
// (public) this & a
|
||||
function op_and(x,y) { return x&y; }
|
||||
function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }
|
||||
|
||||
// (public) this | a
|
||||
function op_or(x,y) { return x|y; }
|
||||
function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }
|
||||
|
||||
// (public) this ^ a
|
||||
function op_xor(x,y) { return x^y; }
|
||||
function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }
|
||||
|
||||
// (public) this & ~a
|
||||
function op_andnot(x,y) { return x&~y; }
|
||||
function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }
|
||||
|
||||
// (public) ~this
|
||||
function bnNot() {
|
||||
var r = nbi();
|
||||
for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i];
|
||||
r.t = this.t;
|
||||
r.s = ~this.s;
|
||||
return r;
|
||||
}
|
||||
|
||||
// (public) this << n
|
||||
function bnShiftLeft(n) {
|
||||
var r = nbi();
|
||||
if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);
|
||||
return r;
|
||||
}
|
||||
|
||||
// (public) this >> n
|
||||
function bnShiftRight(n) {
|
||||
var r = nbi();
|
||||
if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);
|
||||
return r;
|
||||
}
|
||||
|
||||
// return index of lowest 1-bit in x, x < 2^31
|
||||
function lbit(x) {
|
||||
if(x == 0) return -1;
|
||||
var r = 0;
|
||||
if((x&0xffff) == 0) { x >>= 16; r += 16; }
|
||||
if((x&0xff) == 0) { x >>= 8; r += 8; }
|
||||
if((x&0xf) == 0) { x >>= 4; r += 4; }
|
||||
if((x&3) == 0) { x >>= 2; r += 2; }
|
||||
if((x&1) == 0) ++r;
|
||||
return r;
|
||||
}
|
||||
|
||||
// (public) returns index of lowest 1-bit (or -1 if none)
|
||||
function bnGetLowestSetBit() {
|
||||
for(var i = 0; i < this.t; ++i)
|
||||
if(this[i] != 0) return i*this.DB+lbit(this[i]);
|
||||
if(this.s < 0) return this.t*this.DB;
|
||||
return -1;
|
||||
}
|
||||
|
||||
// return number of 1 bits in x
|
||||
function cbit(x) {
|
||||
var r = 0;
|
||||
while(x != 0) { x &= x-1; ++r; }
|
||||
return r;
|
||||
}
|
||||
|
||||
// (public) return number of set bits
|
||||
function bnBitCount() {
|
||||
var r = 0, x = this.s&this.DM;
|
||||
for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x);
|
||||
return r;
|
||||
}
|
||||
|
||||
// (public) true iff nth bit is set
|
||||
function bnTestBit(n) {
|
||||
var j = Math.floor(n/this.DB);
|
||||
if(j >= this.t) return(this.s!=0);
|
||||
return((this[j]&(1<<(n%this.DB)))!=0);
|
||||
}
|
||||
|
||||
// (protected) this op (1<<n)
|
||||
function bnpChangeBit(n,op) {
|
||||
var r = BigInteger.ONE.shiftLeft(n);
|
||||
this.bitwiseTo(r,op,r);
|
||||
return r;
|
||||
}
|
||||
|
||||
// (public) this | (1<<n)
|
||||
function bnSetBit(n) { return this.changeBit(n,op_or); }
|
||||
|
||||
// (public) this & ~(1<<n)
|
||||
function bnClearBit(n) { return this.changeBit(n,op_andnot); }
|
||||
|
||||
// (public) this ^ (1<<n)
|
||||
function bnFlipBit(n) { return this.changeBit(n,op_xor); }
|
||||
|
||||
// (protected) r = this + a
|
||||
function bnpAddTo(a,r) {
|
||||
var i = 0, c = 0, m = Math.min(a.t,this.t);
|
||||
while(i < m) {
|
||||
c += this[i]+a[i];
|
||||
r[i++] = c&this.DM;
|
||||
c >>= this.DB;
|
||||
}
|
||||
if(a.t < this.t) {
|
||||
c += a.s;
|
||||
while(i < this.t) {
|
||||
c += this[i];
|
||||
r[i++] = c&this.DM;
|
||||
c >>= this.DB;
|
||||
}
|
||||
c += this.s;
|
||||
}
|
||||
else {
|
||||
c += this.s;
|
||||
while(i < a.t) {
|
||||
c += a[i];
|
||||
r[i++] = c&this.DM;
|
||||
c >>= this.DB;
|
||||
}
|
||||
c += a.s;
|
||||
}
|
||||
r.s = (c<0)?-1:0;
|
||||
if(c > 0) r[i++] = c;
|
||||
else if(c < -1) r[i++] = this.DV+c;
|
||||
r.t = i;
|
||||
r.clamp();
|
||||
}
|
||||
|
||||
// (public) this + a
|
||||
function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }
|
||||
|
||||
// (public) this - a
|
||||
function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }
|
||||
|
||||
// (public) this * a
|
||||
function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }
|
||||
|
||||
// (public) this^2
|
||||
function bnSquare() { var r = nbi(); this.squareTo(r); return r; }
|
||||
|
||||
// (public) this / a
|
||||
function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }
|
||||
|
||||
// (public) this % a
|
||||
function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }
|
||||
|
||||
// (public) [this/a,this%a]
|
||||
function bnDivideAndRemainder(a) {
|
||||
var q = nbi(), r = nbi();
|
||||
this.divRemTo(a,q,r);
|
||||
return new Array(q,r);
|
||||
}
|
||||
|
||||
// (protected) this *= n, this >= 0, 1 < n < DV
|
||||
function bnpDMultiply(n) {
|
||||
this[this.t] = this.am(0,n-1,this,0,0,this.t);
|
||||
++this.t;
|
||||
this.clamp();
|
||||
}
|
||||
|
||||
// (protected) this += n << w words, this >= 0
|
||||
function bnpDAddOffset(n,w) {
|
||||
if(n == 0) return;
|
||||
while(this.t <= w) this[this.t++] = 0;
|
||||
this[w] += n;
|
||||
while(this[w] >= this.DV) {
|
||||
this[w] -= this.DV;
|
||||
if(++w >= this.t) this[this.t++] = 0;
|
||||
++this[w];
|
||||
}
|
||||
}
|
||||
|
||||
// A "null" reducer
|
||||
function NullExp() {}
|
||||
function nNop(x) { return x; }
|
||||
function nMulTo(x,y,r) { x.multiplyTo(y,r); }
|
||||
function nSqrTo(x,r) { x.squareTo(r); }
|
||||
|
||||
NullExp.prototype.convert = nNop;
|
||||
NullExp.prototype.revert = nNop;
|
||||
NullExp.prototype.mulTo = nMulTo;
|
||||
NullExp.prototype.sqrTo = nSqrTo;
|
||||
|
||||
// (public) this^e
|
||||
function bnPow(e) { return this.exp(e,new NullExp()); }
|
||||
|
||||
// (protected) r = lower n words of "this * a", a.t <= n
|
||||
// "this" should be the larger one if appropriate.
|
||||
function bnpMultiplyLowerTo(a,n,r) {
|
||||
var i = Math.min(this.t+a.t,n);
|
||||
r.s = 0; // assumes a,this >= 0
|
||||
r.t = i;
|
||||
while(i > 0) r[--i] = 0;
|
||||
var j;
|
||||
for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t);
|
||||
for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i);
|
||||
r.clamp();
|
||||
}
|
||||
|
||||
// (protected) r = "this * a" without lower n words, n > 0
|
||||
// "this" should be the larger one if appropriate.
|
||||
function bnpMultiplyUpperTo(a,n,r) {
|
||||
--n;
|
||||
var i = r.t = this.t+a.t-n;
|
||||
r.s = 0; // assumes a,this >= 0
|
||||
while(--i >= 0) r[i] = 0;
|
||||
for(i = Math.max(n-this.t,0); i < a.t; ++i)
|
||||
r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n);
|
||||
r.clamp();
|
||||
r.drShiftTo(1,r);
|
||||
}
|
||||
|
||||
// Barrett modular reduction
|
||||
function Barrett(m) {
|
||||
// setup Barrett
|
||||
this.r2 = nbi();
|
||||
this.q3 = nbi();
|
||||
BigInteger.ONE.dlShiftTo(2*m.t,this.r2);
|
||||
this.mu = this.r2.divide(m);
|
||||
this.m = m;
|
||||
}
|
||||
|
||||
function barrettConvert(x) {
|
||||
if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);
|
||||
else if(x.compareTo(this.m) < 0) return x;
|
||||
else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }
|
||||
}
|
||||
|
||||
function barrettRevert(x) { return x; }
|
||||
|
||||
// x = x mod m (HAC 14.42)
|
||||
function barrettReduce(x) {
|
||||
x.drShiftTo(this.m.t-1,this.r2);
|
||||
if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }
|
||||
this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);
|
||||
this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);
|
||||
while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);
|
||||
x.subTo(this.r2,x);
|
||||
while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
|
||||
}
|
||||
|
||||
// r = x^2 mod m; x != r
|
||||
function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
|
||||
|
||||
// r = x*y mod m; x,y != r
|
||||
function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
|
||||
|
||||
Barrett.prototype.convert = barrettConvert;
|
||||
Barrett.prototype.revert = barrettRevert;
|
||||
Barrett.prototype.reduce = barrettReduce;
|
||||
Barrett.prototype.mulTo = barrettMulTo;
|
||||
Barrett.prototype.sqrTo = barrettSqrTo;
|
||||
|
||||
// (public) this^e % m (HAC 14.85)
|
||||
function bnModPow(e,m) {
|
||||
var i = e.bitLength(), k, r = nbv(1), z;
|
||||
if(i <= 0) return r;
|
||||
else if(i < 18) k = 1;
|
||||
else if(i < 48) k = 3;
|
||||
else if(i < 144) k = 4;
|
||||
else if(i < 768) k = 5;
|
||||
else k = 6;
|
||||
if(i < 8)
|
||||
z = new Classic(m);
|
||||
else if(m.isEven())
|
||||
z = new Barrett(m);
|
||||
else
|
||||
z = new Montgomery(m);
|
||||
|
||||
// precomputation
|
||||
var g = new Array(), n = 3, k1 = k-1, km = (1<<k)-1;
|
||||
g[1] = z.convert(this);
|
||||
if(k > 1) {
|
||||
var g2 = nbi();
|
||||
z.sqrTo(g[1],g2);
|
||||
while(n <= km) {
|
||||
g[n] = nbi();
|
||||
z.mulTo(g2,g[n-2],g[n]);
|
||||
n += 2;
|
||||
}
|
||||
}
|
||||
|
||||
var j = e.t-1, w, is1 = true, r2 = nbi(), t;
|
||||
i = nbits(e[j])-1;
|
||||
while(j >= 0) {
|
||||
if(i >= k1) w = (e[j]>>(i-k1))&km;
|
||||
else {
|
||||
w = (e[j]&((1<<(i+1))-1))<<(k1-i);
|
||||
if(j > 0) w |= e[j-1]>>(this.DB+i-k1);
|
||||
}
|
||||
|
||||
n = k;
|
||||
while((w&1) == 0) { w >>= 1; --n; }
|
||||
if((i -= n) < 0) { i += this.DB; --j; }
|
||||
if(is1) { // ret == 1, don't bother squaring or multiplying it
|
||||
g[w].copyTo(r);
|
||||
is1 = false;
|
||||
}
|
||||
else {
|
||||
while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }
|
||||
if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }
|
||||
z.mulTo(r2,g[w],r);
|
||||
}
|
||||
|
||||
while(j >= 0 && (e[j]&(1<<i)) == 0) {
|
||||
z.sqrTo(r,r2); t = r; r = r2; r2 = t;
|
||||
if(--i < 0) { i = this.DB-1; --j; }
|
||||
}
|
||||
}
|
||||
return z.revert(r);
|
||||
}
|
||||
|
||||
// (public) gcd(this,a) (HAC 14.54)
|
||||
function bnGCD(a) {
|
||||
var x = (this.s<0)?this.negate():this.clone();
|
||||
var y = (a.s<0)?a.negate():a.clone();
|
||||
if(x.compareTo(y) < 0) { var t = x; x = y; y = t; }
|
||||
var i = x.getLowestSetBit(), g = y.getLowestSetBit();
|
||||
if(g < 0) return x;
|
||||
if(i < g) g = i;
|
||||
if(g > 0) {
|
||||
x.rShiftTo(g,x);
|
||||
y.rShiftTo(g,y);
|
||||
}
|
||||
while(x.signum() > 0) {
|
||||
if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);
|
||||
if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);
|
||||
if(x.compareTo(y) >= 0) {
|
||||
x.subTo(y,x);
|
||||
x.rShiftTo(1,x);
|
||||
}
|
||||
else {
|
||||
y.subTo(x,y);
|
||||
y.rShiftTo(1,y);
|
||||
}
|
||||
}
|
||||
if(g > 0) y.lShiftTo(g,y);
|
||||
return y;
|
||||
}
|
||||
|
||||
// (protected) this % n, n < 2^26
|
||||
function bnpModInt(n) {
|
||||
if(n <= 0) return 0;
|
||||
var d = this.DV%n, r = (this.s<0)?n-1:0;
|
||||
if(this.t > 0)
|
||||
if(d == 0) r = this[0]%n;
|
||||
else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n;
|
||||
return r;
|
||||
}
|
||||
|
||||
// (public) 1/this % m (HAC 14.61)
|
||||
function bnModInverse(m) {
|
||||
var ac = m.isEven();
|
||||
if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;
|
||||
var u = m.clone(), v = this.clone();
|
||||
var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);
|
||||
while(u.signum() != 0) {
|
||||
while(u.isEven()) {
|
||||
u.rShiftTo(1,u);
|
||||
if(ac) {
|
||||
if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }
|
||||
a.rShiftTo(1,a);
|
||||
}
|
||||
else if(!b.isEven()) b.subTo(m,b);
|
||||
b.rShiftTo(1,b);
|
||||
}
|
||||
while(v.isEven()) {
|
||||
v.rShiftTo(1,v);
|
||||
if(ac) {
|
||||
if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }
|
||||
c.rShiftTo(1,c);
|
||||
}
|
||||
else if(!d.isEven()) d.subTo(m,d);
|
||||
d.rShiftTo(1,d);
|
||||
}
|
||||
if(u.compareTo(v) >= 0) {
|
||||
u.subTo(v,u);
|
||||
if(ac) a.subTo(c,a);
|
||||
b.subTo(d,b);
|
||||
}
|
||||
else {
|
||||
v.subTo(u,v);
|
||||
if(ac) c.subTo(a,c);
|
||||
d.subTo(b,d);
|
||||
}
|
||||
}
|
||||
if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;
|
||||
if(d.compareTo(m) >= 0) return d.subtract(m);
|
||||
if(d.signum() < 0) d.addTo(m,d); else return d;
|
||||
if(d.signum() < 0) return d.add(m); else return d;
|
||||
}
|
||||
|
||||
var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];
|
||||
var lplim = (1<<26)/lowprimes[lowprimes.length-1];
|
||||
|
||||
// (public) test primality with certainty >= 1-.5^t
|
||||
function bnIsProbablePrime(t) {
|
||||
var i, x = this.abs();
|
||||
if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) {
|
||||
for(i = 0; i < lowprimes.length; ++i)
|
||||
if(x[0] == lowprimes[i]) return true;
|
||||
return false;
|
||||
}
|
||||
if(x.isEven()) return false;
|
||||
i = 1;
|
||||
while(i < lowprimes.length) {
|
||||
var m = lowprimes[i], j = i+1;
|
||||
while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];
|
||||
m = x.modInt(m);
|
||||
while(i < j) if(m%lowprimes[i++] == 0) return false;
|
||||
}
|
||||
return x.millerRabin(t);
|
||||
}
|
||||
|
||||
// (protected) true if probably prime (HAC 4.24, Miller-Rabin)
|
||||
function bnpMillerRabin(t) {
|
||||
var n1 = this.subtract(BigInteger.ONE);
|
||||
var k = n1.getLowestSetBit();
|
||||
if(k <= 0) return false;
|
||||
var r = n1.shiftRight(k);
|
||||
t = (t+1)>>1;
|
||||
if(t > lowprimes.length) t = lowprimes.length;
|
||||
var a = nbi();
|
||||
for(var i = 0; i < t; ++i) {
|
||||
//Pick bases at random, instead of starting at 2
|
||||
a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);
|
||||
var y = a.modPow(r,this);
|
||||
if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
|
||||
var j = 1;
|
||||
while(j++ < k && y.compareTo(n1) != 0) {
|
||||
y = y.modPowInt(2,this);
|
||||
if(y.compareTo(BigInteger.ONE) == 0) return false;
|
||||
}
|
||||
if(y.compareTo(n1) != 0) return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// protected
|
||||
BigInteger.prototype.chunkSize = bnpChunkSize;
|
||||
BigInteger.prototype.toRadix = bnpToRadix;
|
||||
BigInteger.prototype.fromRadix = bnpFromRadix;
|
||||
BigInteger.prototype.fromNumber = bnpFromNumber;
|
||||
BigInteger.prototype.bitwiseTo = bnpBitwiseTo;
|
||||
BigInteger.prototype.changeBit = bnpChangeBit;
|
||||
BigInteger.prototype.addTo = bnpAddTo;
|
||||
BigInteger.prototype.dMultiply = bnpDMultiply;
|
||||
BigInteger.prototype.dAddOffset = bnpDAddOffset;
|
||||
BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;
|
||||
BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;
|
||||
BigInteger.prototype.modInt = bnpModInt;
|
||||
BigInteger.prototype.millerRabin = bnpMillerRabin;
|
||||
|
||||
// public
|
||||
BigInteger.prototype.clone = bnClone;
|
||||
BigInteger.prototype.intValue = bnIntValue;
|
||||
BigInteger.prototype.byteValue = bnByteValue;
|
||||
BigInteger.prototype.shortValue = bnShortValue;
|
||||
BigInteger.prototype.signum = bnSigNum;
|
||||
BigInteger.prototype.toByteArray = bnToByteArray;
|
||||
BigInteger.prototype.equals = bnEquals;
|
||||
BigInteger.prototype.min = bnMin;
|
||||
BigInteger.prototype.max = bnMax;
|
||||
BigInteger.prototype.and = bnAnd;
|
||||
BigInteger.prototype.or = bnOr;
|
||||
BigInteger.prototype.xor = bnXor;
|
||||
BigInteger.prototype.andNot = bnAndNot;
|
||||
BigInteger.prototype.not = bnNot;
|
||||
BigInteger.prototype.shiftLeft = bnShiftLeft;
|
||||
BigInteger.prototype.shiftRight = bnShiftRight;
|
||||
BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;
|
||||
BigInteger.prototype.bitCount = bnBitCount;
|
||||
BigInteger.prototype.testBit = bnTestBit;
|
||||
BigInteger.prototype.setBit = bnSetBit;
|
||||
BigInteger.prototype.clearBit = bnClearBit;
|
||||
BigInteger.prototype.flipBit = bnFlipBit;
|
||||
BigInteger.prototype.add = bnAdd;
|
||||
BigInteger.prototype.subtract = bnSubtract;
|
||||
BigInteger.prototype.multiply = bnMultiply;
|
||||
BigInteger.prototype.divide = bnDivide;
|
||||
BigInteger.prototype.remainder = bnRemainder;
|
||||
BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;
|
||||
BigInteger.prototype.modPow = bnModPow;
|
||||
BigInteger.prototype.modInverse = bnModInverse;
|
||||
BigInteger.prototype.pow = bnPow;
|
||||
BigInteger.prototype.gcd = bnGCD;
|
||||
BigInteger.prototype.isProbablePrime = bnIsProbablePrime;
|
||||
|
||||
// JSBN-specific extension
|
||||
BigInteger.prototype.square = bnSquare;
|
||||
|
||||
// BigInteger interfaces not implemented in jsbn:
|
||||
|
||||
// BigInteger(int signum, byte[] magnitude)
|
||||
// double doubleValue()
|
||||
// float floatValue()
|
||||
// int hashCode()
|
||||
// long longValue()
|
||||
// static BigInteger valueOf(long val)
|
@ -1,45 +0,0 @@
|
||||
// prng4.js - uses Arcfour as a PRNG
|
||||
|
||||
function Arcfour() {
|
||||
this.i = 0;
|
||||
this.j = 0;
|
||||
this.S = new Array();
|
||||
}
|
||||
|
||||
// Initialize arcfour context from key, an array of ints, each from [0..255]
|
||||
function ARC4init(key) {
|
||||
var i, j, t;
|
||||
for(i = 0; i < 256; ++i)
|
||||
this.S[i] = i;
|
||||
j = 0;
|
||||
for(i = 0; i < 256; ++i) {
|
||||
j = (j + this.S[i] + key[i % key.length]) & 255;
|
||||
t = this.S[i];
|
||||
this.S[i] = this.S[j];
|
||||
this.S[j] = t;
|
||||
}
|
||||
this.i = 0;
|
||||
this.j = 0;
|
||||
}
|
||||
|
||||
function ARC4next() {
|
||||
var t;
|
||||
this.i = (this.i + 1) & 255;
|
||||
this.j = (this.j + this.S[this.i]) & 255;
|
||||
t = this.S[this.i];
|
||||
this.S[this.i] = this.S[this.j];
|
||||
this.S[this.j] = t;
|
||||
return this.S[(t + this.S[this.i]) & 255];
|
||||
}
|
||||
|
||||
Arcfour.prototype.init = ARC4init;
|
||||
Arcfour.prototype.next = ARC4next;
|
||||
|
||||
// Plug in your RNG constructor here
|
||||
function prng_newstate() {
|
||||
return new Arcfour();
|
||||
}
|
||||
|
||||
// Pool size must be a multiple of 4 and greater than 32.
|
||||
// An array of bytes the size of the pool will be passed to init()
|
||||
var rng_psize = 256;
|
@ -1,75 +0,0 @@
|
||||
// Random number generator - requires a PRNG backend, e.g. prng4.js
|
||||
|
||||
// For best results, put code like
|
||||
// <body onClick='rng_seed_time();' onKeyPress='rng_seed_time();'>
|
||||
// in your main HTML document.
|
||||
|
||||
var rng_state;
|
||||
var rng_pool;
|
||||
var rng_pptr;
|
||||
|
||||
// Mix in a 32-bit integer into the pool
|
||||
function rng_seed_int(x) {
|
||||
rng_pool[rng_pptr++] ^= x & 255;
|
||||
rng_pool[rng_pptr++] ^= (x >> 8) & 255;
|
||||
rng_pool[rng_pptr++] ^= (x >> 16) & 255;
|
||||
rng_pool[rng_pptr++] ^= (x >> 24) & 255;
|
||||
if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;
|
||||
}
|
||||
|
||||
// Mix in the current time (w/milliseconds) into the pool
|
||||
function rng_seed_time() {
|
||||
rng_seed_int(new Date().getTime());
|
||||
}
|
||||
|
||||
// Initialize the pool with junk if needed.
|
||||
if(rng_pool == null) {
|
||||
rng_pool = new Array();
|
||||
rng_pptr = 0;
|
||||
var t;
|
||||
if(window.crypto && window.crypto.getRandomValues) {
|
||||
// Use webcrypto if available
|
||||
var ua = new Uint8Array(32);
|
||||
window.crypto.getRandomValues(ua);
|
||||
for(t = 0; t < 32; ++t)
|
||||
rng_pool[rng_pptr++] = ua[t];
|
||||
}
|
||||
if(navigator.appName == "Netscape" && navigator.appVersion < "5" && window.crypto) {
|
||||
// Extract entropy (256 bits) from NS4 RNG if available
|
||||
var z = window.crypto.random(32);
|
||||
for(t = 0; t < z.length; ++t)
|
||||
rng_pool[rng_pptr++] = z.charCodeAt(t) & 255;
|
||||
}
|
||||
while(rng_pptr < rng_psize) { // extract some randomness from Math.random()
|
||||
t = Math.floor(65536 * Math.random());
|
||||
rng_pool[rng_pptr++] = t >>> 8;
|
||||
rng_pool[rng_pptr++] = t & 255;
|
||||
}
|
||||
rng_pptr = 0;
|
||||
rng_seed_time();
|
||||
//rng_seed_int(window.screenX);
|
||||
//rng_seed_int(window.screenY);
|
||||
}
|
||||
|
||||
function rng_get_byte() {
|
||||
if(rng_state == null) {
|
||||
rng_seed_time();
|
||||
rng_state = prng_newstate();
|
||||
rng_state.init(rng_pool);
|
||||
for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)
|
||||
rng_pool[rng_pptr] = 0;
|
||||
rng_pptr = 0;
|
||||
//rng_pool = null;
|
||||
}
|
||||
// TODO: allow reseeding after first request
|
||||
return rng_state.next();
|
||||
}
|
||||
|
||||
function rng_get_bytes(ba) {
|
||||
var i;
|
||||
for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte();
|
||||
}
|
||||
|
||||
function SecureRandom() {}
|
||||
|
||||
SecureRandom.prototype.nextBytes = rng_get_bytes;
|
@ -1,118 +0,0 @@
|
||||
// Depends on jsbn.js and rng.js
|
||||
|
||||
// Version 1.1: support utf-8 encoding in pkcs1pad2
|
||||
|
||||
// convert a (hex) string to a bignum object
|
||||
function parseBigInt(str,r) {
|
||||
return new BigInteger(str,r);
|
||||
}
|
||||
|
||||
function linebrk(s,n) {
|
||||
var ret = "";
|
||||
var i = 0;
|
||||
while(i + n < s.length) {
|
||||
ret += s.substring(i,i+n) + "\n";
|
||||
i += n;
|
||||
}
|
||||
return ret + s.substring(i,s.length);
|
||||
}
|
||||
|
||||
function byte2Hex(b) {
|
||||
if(b < 0x10)
|
||||
return "0" + b.toString(16);
|
||||
else
|
||||
return b.toString(16);
|
||||
}
|
||||
|
||||
// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint
|
||||
function pkcs1pad2(s,n) {
|
||||
//var ba = b64toBA(hex2b64(s));
|
||||
//n -= ba.length;
|
||||
if(n < s.length + 11) { // TODO: fix for utf-8
|
||||
alert("Message too long for RSA");
|
||||
return null;
|
||||
}
|
||||
var ba = new Array();
|
||||
var i = (s.length / 2) - 1;
|
||||
while(i >= 0 && n > 0) {
|
||||
ba[--n] = parseInt(s.substring(2*i,2*i+2),16);
|
||||
i--;
|
||||
/*
|
||||
var c = s.charCodeAt(i--);
|
||||
if(c < 128) { // encode using utf-8
|
||||
ba[--n] = c;
|
||||
}
|
||||
else if((c > 127) && (c < 2048)) {
|
||||
ba[--n] = (c & 63) | 128;
|
||||
ba[--n] = (c >> 6) | 192;
|
||||
}
|
||||
else {
|
||||
ba[--n] = (c & 63) | 128;
|
||||
ba[--n] = ((c >> 6) & 63) | 128;
|
||||
ba[--n] = (c >> 12) | 224;
|
||||
}
|
||||
*/
|
||||
}
|
||||
ba[--n] = 0;
|
||||
var rng = new SecureRandom();
|
||||
var x = new Array();
|
||||
while(n > 2) { // random non-zero pad
|
||||
x[0] = 0;
|
||||
while(x[0] == 0) rng.nextBytes(x);
|
||||
ba[--n] = x[0];
|
||||
}
|
||||
ba[--n] = 2;
|
||||
ba[--n] = 0;
|
||||
return new BigInteger(ba);
|
||||
}
|
||||
|
||||
// "empty" RSA key constructor
|
||||
function RSAKey() {
|
||||
this.n = null;
|
||||
this.e = 0;
|
||||
this.d = null;
|
||||
this.p = null;
|
||||
this.q = null;
|
||||
this.dmp1 = null;
|
||||
this.dmq1 = null;
|
||||
this.coeff = null;
|
||||
}
|
||||
|
||||
// Set the public key fields N and e from hex strings
|
||||
function RSASetPublic(N,E) {
|
||||
if(N != null && E != null && N.length > 0 && E.length > 0) {
|
||||
this.n = parseBigInt(N,16);
|
||||
this.e = parseInt(E,16);
|
||||
}
|
||||
else
|
||||
alert("Invalid RSA public key");
|
||||
}
|
||||
|
||||
// Perform raw public operation on "x": return x^e (mod n)
|
||||
function RSADoPublic(x) {
|
||||
return x.modPowInt(this.e, this.n);
|
||||
}
|
||||
|
||||
// Return the PKCS#1 RSA encryption of "text" as an even-length hex string
|
||||
function RSAEncrypt(text) {
|
||||
var m = pkcs1pad2(text,(this.n.bitLength()+7)>>3);
|
||||
if(m == null) return null;
|
||||
var c = this.doPublic(m);
|
||||
if(c == null) return null;
|
||||
var h = c.toString(16);
|
||||
if((h.length & 1) == 0) return h; else return "0" + h;
|
||||
}
|
||||
|
||||
// Return the PKCS#1 RSA encryption of "text" as a Base64-encoded string
|
||||
//function RSAEncryptB64(text) {
|
||||
// var h = this.encrypt(text);
|
||||
// if(h) return hex2b64(h); else return null;
|
||||
//}
|
||||
|
||||
// protected
|
||||
RSAKey.prototype.doPublic = RSADoPublic;
|
||||
|
||||
// public
|
||||
RSAKey.prototype.setPublic = RSASetPublic;
|
||||
RSAKey.prototype.encrypt = RSAEncrypt;
|
||||
//RSAKey.prototype.encrypt_b64 = RSAEncryptB64;
|
@ -1,135 +0,0 @@
|
||||
// Depends on rsa.js and jsbn2.js
|
||||
|
||||
// Version 1.1: support utf-8 decoding in pkcs1unpad2
|
||||
|
||||
// Undo PKCS#1 (type 2, random) padding and, if valid, return the plaintext
|
||||
function pkcs1unpad2(d,n) {
|
||||
var b = d.toByteArray();
|
||||
var i = 0;
|
||||
while(i < b.length && b[i] == 0) ++i;
|
||||
if(b.length-i != n-1 || b[i] != 2)
|
||||
return null;
|
||||
++i;
|
||||
while(b[i] != 0)
|
||||
if(++i >= b.length) return null;
|
||||
var ret = "";
|
||||
while(++i < b.length) {
|
||||
ret += byte2Hex(b[i]);
|
||||
/*
|
||||
var c = b[i] & 255;
|
||||
if(c < 128) { // utf-8 decode
|
||||
ret += String.fromCharCode(c);
|
||||
}
|
||||
else if((c > 191) && (c < 224)) {
|
||||
ret += String.fromCharCode(((c & 31) << 6) | (b[i+1] & 63));
|
||||
++i;
|
||||
}
|
||||
else {
|
||||
ret += String.fromCharCode(((c & 15) << 12) | ((b[i+1] & 63) << 6) | (b[i+2] & 63));
|
||||
i += 2;
|
||||
}
|
||||
*/
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Set the private key fields N, e, and d from hex strings
|
||||
function RSASetPrivate(N,E,D) {
|
||||
if(N != null && E != null && N.length > 0 && E.length > 0) {
|
||||
this.n = parseBigInt(N,16);
|
||||
this.e = parseInt(E,16);
|
||||
this.d = parseBigInt(D,16);
|
||||
}
|
||||
else
|
||||
alert("Invalid RSA private key");
|
||||
}
|
||||
|
||||
// Set the private key fields N, e, d and CRT params from hex strings
|
||||
function RSASetPrivateEx(N,E,D,P,Q,DP,DQ,C) {
|
||||
if(N != null && E != null && N.length > 0 && E.length > 0) {
|
||||
this.n = parseBigInt(N,16);
|
||||
this.e = parseInt(E,16);
|
||||
this.d = parseBigInt(D,16);
|
||||
this.p = parseBigInt(P,16);
|
||||
this.q = parseBigInt(Q,16);
|
||||
this.dmp1 = parseBigInt(DP,16);
|
||||
this.dmq1 = parseBigInt(DQ,16);
|
||||
this.coeff = parseBigInt(C,16);
|
||||
}
|
||||
else
|
||||
alert("Invalid RSA private key");
|
||||
}
|
||||
|
||||
// Generate a new random private key B bits long, using public expt E
|
||||
function RSAGenerate(B,E) {
|
||||
var rng = new SecureRandom();
|
||||
var qs = B>>1;
|
||||
this.e = parseInt(E,16);
|
||||
var ee = new BigInteger(E,16);
|
||||
for(;;) {
|
||||
for(;;) {
|
||||
this.p = new BigInteger(B-qs,1,rng);
|
||||
if(this.p.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.p.isProbablePrime(10)) break;
|
||||
}
|
||||
for(;;) {
|
||||
this.q = new BigInteger(qs,1,rng);
|
||||
if(this.q.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.q.isProbablePrime(10)) break;
|
||||
}
|
||||
if(this.p.compareTo(this.q) <= 0) {
|
||||
var t = this.p;
|
||||
this.p = this.q;
|
||||
this.q = t;
|
||||
}
|
||||
var p1 = this.p.subtract(BigInteger.ONE);
|
||||
var q1 = this.q.subtract(BigInteger.ONE);
|
||||
var phi = p1.multiply(q1);
|
||||
if(phi.gcd(ee).compareTo(BigInteger.ONE) == 0) {
|
||||
this.n = this.p.multiply(this.q);
|
||||
this.d = ee.modInverse(phi);
|
||||
this.dmp1 = this.d.mod(p1);
|
||||
this.dmq1 = this.d.mod(q1);
|
||||
this.coeff = this.q.modInverse(this.p);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Perform raw private operation on "x": return x^d (mod n)
|
||||
function RSADoPrivate(x) {
|
||||
if(this.p == null || this.q == null)
|
||||
return x.modPow(this.d, this.n);
|
||||
|
||||
// TODO: re-calculate any missing CRT params
|
||||
var xp = x.mod(this.p).modPow(this.dmp1, this.p);
|
||||
var xq = x.mod(this.q).modPow(this.dmq1, this.q);
|
||||
|
||||
while(xp.compareTo(xq) < 0)
|
||||
xp = xp.add(this.p);
|
||||
return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);
|
||||
}
|
||||
|
||||
// Return the PKCS#1 RSA decryption of "ctext".
|
||||
// "ctext" is an even-length hex string and the output is a plain string.
|
||||
function RSADecrypt(ctext) {
|
||||
var c = parseBigInt(ctext, 16);
|
||||
var m = this.doPrivate(c);
|
||||
if(m == null) return null;
|
||||
return pkcs1unpad2(m, (this.n.bitLength()+7)>>3);
|
||||
}
|
||||
|
||||
// Return the PKCS#1 RSA decryption of "ctext".
|
||||
// "ctext" is a Base64-encoded string and the output is a plain string.
|
||||
//function RSAB64Decrypt(ctext) {
|
||||
// var h = b64tohex(ctext);
|
||||
// if(h) return this.decrypt(h); else return null;
|
||||
//}
|
||||
|
||||
// protected
|
||||
RSAKey.prototype.doPrivate = RSADoPrivate;
|
||||
|
||||
// public
|
||||
RSAKey.prototype.setPrivate = RSASetPrivate;
|
||||
RSAKey.prototype.setPrivateEx = RSASetPrivateEx;
|
||||
RSAKey.prototype.generate = RSAGenerate;
|
||||
RSAKey.prototype.decrypt = RSADecrypt;
|
||||
//RSAKey.prototype.b64_decrypt = RSAB64Decrypt;
|
@ -1,118 +0,0 @@
|
||||
var aud=new Audio();
|
||||
var songs=["PkIeYKbzyZY","lv5A5EDvi-g","EyicJOlYOm4","1weATSoaRbA","qSdiecyj6-M","Ugb7GUtiyZ0","1ZFMy48q63w","10RNhMuWR2g","QkVvPD7Xk5U","RUEWIG8zoa0","V6N_rL4fh6I","n02zTn2d3rY","iBZS6ad3Tlk","Mnb2RhXL-nM","lidx_2d4YOA","ETQJZHYlc3g","kRpRoTaNni0","ACy5tHoNUoA","yLFX_7SH2tY","io-vPXE9JXY","oP6wOte3wZU","6LwLyIv3yvA","MrD05HVGVIQ","HBYS5mBHie4","5HxGK3DTUBQ","_9qUu8IeabE","r76yldhXSrw","OqJi_n3AcV4","WFFF-jMyFaQ","D8CwzhM7O6I","FD56t_0B9ig","5OcsWd949w4","jrnNzNT11aU","VLbMXG8lvjI","4aNDoqt9kEQ","_ZMfQ0Aj7h8","ZCJo8CDyqlQ","A1-fM0s1Yt0","zsLT3JqfTn0","zsGM_sGEako","YZlclPLX1Hw","uT1evbCloAw","HYOth1zARhg","loeGmoYr3s4","0qhoqXTUQlY","FtdPlfZNqVY","uIk_jGypR24","mdAb2xALVm0","5hpBvX0sUuo","RiVZCDq--m4","2k5dqgNT37g","j4Jyev7iTlE","9Ty-qFZZPZk","6EDS01Ipaow","720HcvEvEC8","YbdcrJZBtu8","nZ15jw3NOO8","Ub7y69hg4do","hFal0LKZwnM","g-QdgLe_D5M","CAmHrCvZ8tA","Mr-wV17WFZU","EdFyQOngYJs","3RyqONKuRzk","jBPqr_IsWvY","LcyCREQL7w8","dAalyaoVGfE","RM9O1HO4FLE","tUx4SfdoyUI","qFjaDnnPbA4","NrlhbIzjO04","eDBAdAzCqr4","UqVW7-q7fTA","3I-WJ6UgmOA","m8wcDiahBjg","NmzrLZajTLU","EPT3dIWBbDA","tf4dBTlz25g","FuMtDXkuxVw","PkmKM_OXNZM","KbC46oJmLh4","mRJSIYmHuNI","GmLsIivtcIM","rDBbaGCCIhk","Ig5v4jhLLWI","XZcG2esvW7I","_qpgIOzaI0E","TTJBevUIp0s","V4oiuY02dTo","agIayif-oi0","plm3DVsX7Jg","HA0Mk5BXX44","2RLq_paK3-g","h2EgfSvOuPc","HbtwR1REaFk","-tUJJXWXdXk","h-b8Xs7sNI0","xt2DGLoEmW0","eyp-YuzhTN4","xrawoRF4lN0","6xVHpgJbuc8","qsy-14oAXGc","fYSUV33ZPfw","qnSHJlRJ2cM","Ytt1_ErIV34","05TnpE0x4wI","-jcOtAuGZC4","XbuqB3uB6DI","x-42Zkcw4Cs","kXjA7eRZchc","_zceCigOTwo","Qg83cniiYEY","F7gwcgmoREg","aZFe4K1HmPE","e1Ve4Xa9ftQ","p-dVxnR-vLw","PD1a3mfmY8M","-cJFVNZC4h8","Jfs7Lo8CC0Q","zz3F5j8qWNw","CQLvggJFxuM","wf93JAZR3gU","XLQbs59Pn7E","phrpiLpaiLs","Md2xOKFTvSU","_Ci0Kgdpgsw","iBjZshhpipg","j15tAxxc38Y","LwKbsK6E-DI","9J8cD8-LHy4","7ZQlWCsHG7k","UBIsi3xWa64","GWYkh1IX4PE","YYjDFXJ6Wdo","5YDiUcc3emA","s0G4qOrDOgM","9zibDnOOj3w","rQMd3b1BF50","xeM40-FkRLI","wVOFnTrSOOA","CbziO8vuBR8","msUarvc4Sx8","GB9kBLre96M","UMwmB0ZK3yE","SLFMiEAjSoA","K5F-RLzLH6Q","ziAK1OLeeEE","--I54YPKsLU","33zGN7vENog","pTv51QwN57E","zD8TxUBkjGA","A09BhpgfGKQ","cvBQq1yJH-A","YZrIQardsz8","CUHYQ-FN3P8","GLGjqtgCKY8","bLagC2wX3Ak","fW128GHFJIE","e15qP676Zhg","B5L0AMO2HA8","oFFFzMkGNrk","1RQQLwnaw80","byUipqLQ_Hc","WtF6Z13HD_w","pkkIqT9LpDY","gMGEyl5TRa4","oxoqm05c7yA","yTP8tK2OzFQ"];
|
||||
var insturl="https://invidious.zapashcanon.fr";
|
||||
var loading=false;
|
||||
var usealt=0;
|
||||
|
||||
function shuffle(array) {
|
||||
for (let i = 0; i < array.length; i++) {
|
||||
let j = Math.floor(Math.random() * (array.length-i)) + i;
|
||||
[array[i], array[j]] = [array[j], array[i]];
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
function fixfard(url){
|
||||
if(!url)return insturl;
|
||||
return url.endsWith("/")?url.slice(0,url.length-1):url;
|
||||
}
|
||||
|
||||
var updinsturl=async ()=>{
|
||||
try{
|
||||
var json=await (await fetch("https://api.invidious.io/instances.json?sort_by=health")).json();
|
||||
var out=shuffle(json).map(entry => {
|
||||
const healthKnown = !!entry[1].monitor
|
||||
return {
|
||||
name: entry[0],
|
||||
details: entry[1],
|
||||
health: +(healthKnown ? entry[1].monitor.dailyRatios[0].ratio : 95),
|
||||
healthKnown
|
||||
}
|
||||
}).filter(entry => {
|
||||
return entry.details.type === "https" && entry.health > 0
|
||||
}).sort((a, b) => {
|
||||
return b.health - a.health
|
||||
});
|
||||
insturl=fixfard(out.find(e=>e.details.cors).details.uri);
|
||||
}catch(e){aud.onerror();}
|
||||
};
|
||||
var updint=setInterval(updinsturl,3600000);
|
||||
updinsturl();
|
||||
|
||||
aud.onended=function(e){
|
||||
loading=true;
|
||||
window.startmusic();
|
||||
};
|
||||
|
||||
aud.oncanplay=function(e){
|
||||
aud.play();
|
||||
};
|
||||
|
||||
aud.onplay=function(e){
|
||||
aud.playing=true;
|
||||
loading=false;
|
||||
};
|
||||
|
||||
aud.onerror=function(e){
|
||||
if(usealt==2){
|
||||
aud=null;
|
||||
return;
|
||||
}
|
||||
|
||||
if(usealt==0){
|
||||
usealt=1;
|
||||
}else if(usealt==1){
|
||||
loading=true;
|
||||
usealt=2;
|
||||
}
|
||||
window.stopmusic();
|
||||
//todo: make attempt 2 more times with diff urls and if those fail then stop trying
|
||||
clearInterval(updint);
|
||||
};
|
||||
|
||||
window.startmusic=function(v){
|
||||
if(v!=null&&v==0)return;
|
||||
loading=true;
|
||||
var url="";
|
||||
if(usealt==0){
|
||||
songs=shuffle(songs);
|
||||
url=insturl+"/latest_version?id="+songs[0]+"&itag=251";
|
||||
}else if(usealt==1){
|
||||
url="https://nightride.fm/stream/chillsynth.m4a";
|
||||
}else if(usealt==2){
|
||||
return;
|
||||
}
|
||||
if(v!=null)aud.volume=v;
|
||||
aud.src=url;
|
||||
aud.currentTime=0;
|
||||
};
|
||||
|
||||
window.stopmusic=function(){
|
||||
if(usealt==2)return;
|
||||
aud.pause();
|
||||
loading=false;
|
||||
};
|
||||
|
||||
window.volmusic=function(v){
|
||||
if(usealt==2)return;
|
||||
if(v==0){
|
||||
window.startmusic();
|
||||
}else{
|
||||
if(aud.playing){
|
||||
aud.volume=v;
|
||||
}else{
|
||||
window.startmusic(v);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
window.playingmusic=function(){
|
||||
return usealt==2||aud.playing||loading;
|
||||
};
|
||||
|
||||
navigator.mediaSession.setActionHandler('play', function() {});
|
||||
navigator.mediaSession.setActionHandler('pause', function() {});
|
||||
navigator.mediaSession.setActionHandler('seekbackward', function() {});
|
||||
navigator.mediaSession.setActionHandler('seekforward', function() {});
|
||||
navigator.mediaSession.setActionHandler('previoustrack', function() {});
|
||||
navigator.mediaSession.setActionHandler('nexttrack', function() {});
|
Before Width: | Height: | Size: 8.0 KiB |
@ -1,3 +0,0 @@
|
||||
<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg">
|
||||
<image href="data:image/webp;base64,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" height="200" width="200" />
|
||||
</svg>
|
Before Width: | Height: | Size: 3.1 KiB |
263463
semag/codercraft/index.html
Before Width: | Height: | Size: 39 KiB |
35595
semag/demon/index.html
Before Width: | Height: | Size: 67 KiB |
32220
semag/drag/index.html
@ -1,106 +1,178 @@
|
||||
<!-- Compiled and minified CSS -->
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
|
||||
|
||||
<!-- Compiled and minified JavaScript -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
|
||||
|
||||
<!-- Latest compiled and minified CSS -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
|
||||
|
||||
<!-- Optional theme -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
|
||||
|
||||
<!-- Latest compiled and minified JavaScript -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Minecraft</title>
|
||||
<script src="/js/all.min.js"></script>
|
||||
<center>
|
||||
<strong><h1>Eaglercraft Versions & Clients</h1></strong>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
document.getElementById("a").innerText = `or join at wss://${location.host}/mc`;
|
||||
});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url('https://fonts.cdnfonts.com/css/gg-sans-2');
|
||||
@import url("https://fonts.cdnfonts.com/css/gg-sans-2");
|
||||
* {
|
||||
font-family: gg sans;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
body {
|
||||
background-color: black;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
h1 {
|
||||
color: white;
|
||||
margin: 10px;
|
||||
}
|
||||
h2 {
|
||||
color: white;
|
||||
margin: 3px;
|
||||
}
|
||||
a {
|
||||
color: white;
|
||||
margin: 10%;
|
||||
}
|
||||
div {
|
||||
div#games {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
display: flex;
|
||||
}
|
||||
div.game {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: #111;
|
||||
width:200px;
|
||||
height:200px;
|
||||
width: 15%;
|
||||
aspect-ratio: 1 / 1;
|
||||
transition: 0.3s;
|
||||
margin: 20px;
|
||||
}
|
||||
div:hover {
|
||||
width:250px;
|
||||
height:250px;
|
||||
div.game:hover {
|
||||
transform: scale(1.1);
|
||||
cursor: pointer;
|
||||
}
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
color: white;
|
||||
text-decoration:none;
|
||||
}
|
||||
img {
|
||||
width: 50%;
|
||||
height: 50%;
|
||||
}
|
||||
.adcontainer {
|
||||
width:0px;
|
||||
height:0px;
|
||||
}
|
||||
.adcontainer:hover {
|
||||
width:0px;
|
||||
height:0px;
|
||||
margin: 10%;
|
||||
}
|
||||
</style>
|
||||
<br>
|
||||
<div><a href="/semag/17/index.html"><h2>Eaglercraft Beta 1.7</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></img></a><br></div>
|
||||
<div><a href="/semag/beta/index.html"><h2>Eaglercraft Beta 1.3</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/nova/index.html"><h2>N0VA Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/mega/index.html"><h2>MEGA Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/water/index.html"><h2>Water Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/uwu/index.html"><h2>UwU Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/water/index.html"><h2>Water Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/demon/index.html"><h2>Demon Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/etern/index.html"><h2>Eternal Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/flame/index.html"><h2>Flame Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/nit/index.html"><h2>Nit Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/kero/index.html"><h2>Kerosene Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/future/index.html"><h2>OddFuture Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/reborn/index.html"><h2>Eaglercraft Reborn</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/eg1.8/index.html"><h2>Eaglercraft 1.8.8</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/eg1.12.2/index.html"><h2>Eaglercraft 1.12.2</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/ayun/index.html"><h2>Ayuncraft 1.5.2</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/sp1/index.html"><h2>Eaglercraft 1.5.2 SP1</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/codercraft/index.html"><h2>Codercraft</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/nebula/index.html"><h2>Nebula Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/cmm-client/index.html"><h2>CMM Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/online-mc/index.html"><h2>Resent Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/water/index.html"><h2>Eaglercraft 1.5.2 RTM</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/inf/index.html"><h2>Eaglercraftt Infdev</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/drag/index.html"><h2>Dragon Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/pi/index.html"><h2>Pi Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/pre/index.html"><h2>Precision Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/shadow/index.html"><h2>Shadow Client</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/mcclassic/index.html"><h2>Minecraft 0.31</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/mcdemo/index.html"><h2>Minecraft Demo</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/forge/index.html"><h2>EaglerForge</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/alpha/index.html"><h2>Minecraft 1.2.6</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/indev/index.html"><h2>Minecraft Indev</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/030/index.html"><h2>Minecraft 0.30</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
<div><a href="/semag/125/index.html"><h2>Minecraft 1.2.5</h2><img src="https://selenite.cc/semag/offline-mc/logo.png"></a><br></div>
|
||||
</head>
|
||||
<body>
|
||||
<center>
|
||||
<strong><h1>Eaglercraft Versions & Clients</h1></strong>
|
||||
<h2>Join our minecraft server at wss://ethereal.mov</h2>
|
||||
<h2 id="a"></h2>
|
||||
<br />
|
||||
<div id="games">
|
||||
<div class="game">
|
||||
<a href="/semag/eg1.8/index.html"
|
||||
><h2>Eaglercraft 1.8.8</h2>
|
||||
<img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
|
||||
><br />
|
||||
</div>
|
||||
<div class="game">
|
||||
<a href="/semag/17/index.html"
|
||||
><h2>Eaglercraft Beta 1.7</h2>
|
||||
<img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
|
||||
><br />
|
||||
</div>
|
||||
<div class="game">
|
||||
<a href="/semag/beta/index.html"
|
||||
><h2>Eaglercraft Beta 1.3</h2>
|
||||
<img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
|
||||
><br />
|
||||
</div>
|
||||
|
||||
<div class="game">
|
||||
<a href="/semag/online-mc/index.html"
|
||||
><h2>Resent Client</h2>
|
||||
<img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
|
||||
><br />
|
||||
</div>
|
||||
<div class="game">
|
||||
<a href="/semag/mega/index.html"
|
||||
><h2>MEGA Client</h2>
|
||||
<img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
|
||||
><br />
|
||||
</div>
|
||||
<div class="game">
|
||||
<a href="/semag/water/index.html"
|
||||
><h2>Water Client</h2>
|
||||
<img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
|
||||
><br />
|
||||
</div>
|
||||
<div class="game">
|
||||
<a href="/semag/reborn/index.html"
|
||||
><h2>Eaglercraft Reborn</h2>
|
||||
<img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
|
||||
><br />
|
||||
</div>
|
||||
<div class="game">
|
||||
<a href="/semag/inf/index.html"
|
||||
><h2>Eaglercraft Infdev</h2>
|
||||
<img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
|
||||
><br />
|
||||
</div>
|
||||
<div class="game">
|
||||
<a href="/semag/pre/index.html"
|
||||
><h2>Precision Client</h2>
|
||||
<img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
|
||||
><br />
|
||||
</div>
|
||||
<div class="game">
|
||||
<a href="/semag/shadow/index.html"
|
||||
><h2>Shadow Client</h2>
|
||||
<img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
|
||||
><br />
|
||||
</div>
|
||||
<div class="game">
|
||||
<a href="/semag/forge/index.html"
|
||||
><h2>EaglerForge</h2>
|
||||
<img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
|
||||
><br />
|
||||
</div>
|
||||
<div class="game">
|
||||
<a href="/semag/alpha/index.html"
|
||||
><h2>Minecraft Alpha 1.2.6</h2>
|
||||
<img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
|
||||
><br />
|
||||
</div>
|
||||
<div class="game">
|
||||
<a href="/semag/indev/index.html"
|
||||
><h2>Minecraft Indev</h2>
|
||||
<img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
|
||||
><br />
|
||||
</div>
|
||||
<div class="game">
|
||||
<a href="/semag/030/index.html"
|
||||
><h2>Minecraft 0.30</h2>
|
||||
<img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
|
||||
><br />
|
||||
</div>
|
||||
<div class="game">
|
||||
<a href="/semag/125/index.html"
|
||||
><h2>Minecraft 1.2.5</h2>
|
||||
<img src="https://selenite.cc/semag/offline-mc/logo.png" /></a
|
||||
><br />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<br>
|
||||
<br />
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,3 +0,0 @@
|
||||
<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg">
|
||||
<image href="data:image/webp;base64,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" height="200" width="200" />
|
||||
</svg>
|
Before Width: | Height: | Size: 2.6 KiB |
BIN
semag/eg1.8/assets.epk
Normal file
1
semag/eg1.8/classes.js.map
Normal file
BIN
semag/eg1.8/favicon.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
56776
semag/eg1.8/index.html
1683
semag/eg1.8/lang/af_ZA.lang
Normal file
1696
semag/eg1.8/lang/ar_SA.lang
Normal file
1812
semag/eg1.8/lang/ast_ES.lang
Normal file
1604
semag/eg1.8/lang/az_AZ.lang
Normal file
2516
semag/eg1.8/lang/bg_BG.lang
Normal file
1869
semag/eg1.8/lang/ca_ES.lang
Normal file
2375
semag/eg1.8/lang/cs_CZ.lang
Normal file
1573
semag/eg1.8/lang/cy_GB.lang
Normal file
1819
semag/eg1.8/lang/da_DK.lang
Normal file
2512
semag/eg1.8/lang/de_DE.lang
Normal file
1709
semag/eg1.8/lang/el_GR.lang
Normal file
1778
semag/eg1.8/lang/en_AU.lang
Normal file
2517
semag/eg1.8/lang/en_CA.lang
Normal file
2515
semag/eg1.8/lang/en_GB.lang
Normal file
1929
semag/eg1.8/lang/en_PT.lang
Normal file
1770
semag/eg1.8/lang/eo_UY.lang
Normal file
2514
semag/eg1.8/lang/es_AR.lang
Normal file
2515
semag/eg1.8/lang/es_ES.lang
Normal file
2496
semag/eg1.8/lang/es_MX.lang
Normal file
1807
semag/eg1.8/lang/es_UY.lang
Normal file
1999
semag/eg1.8/lang/es_VE.lang
Normal file
2124
semag/eg1.8/lang/et_EE.lang
Normal file
1864
semag/eg1.8/lang/eu_ES.lang
Normal file
1490
semag/eg1.8/lang/fa_IR.lang
Normal file
2378
semag/eg1.8/lang/fi_FI.lang
Normal file
1636
semag/eg1.8/lang/fil_PH.lang
Normal file
2517
semag/eg1.8/lang/fr_CA.lang
Normal file
2518
semag/eg1.8/lang/fr_FR.lang
Normal file
1774
semag/eg1.8/lang/ga_IE.lang
Normal file
1565
semag/eg1.8/lang/gl_ES.lang
Normal file
1528
semag/eg1.8/lang/gv_IM.lang
Normal file
1585
semag/eg1.8/lang/he_IL.lang
Normal file
1412
semag/eg1.8/lang/hi_IN.lang
Normal file
2517
semag/eg1.8/lang/hr_HR.lang
Normal file
2515
semag/eg1.8/lang/hu_HU.lang
Normal file
1363
semag/eg1.8/lang/hy_AM.lang
Normal file
1836
semag/eg1.8/lang/id_ID.lang
Normal file
1891
semag/eg1.8/lang/is_IS.lang
Normal file
2517
semag/eg1.8/lang/it_IT.lang
Normal file
2517
semag/eg1.8/lang/ja_JP.lang
Normal file
2514
semag/eg1.8/lang/ka_GE.lang
Normal file
2492
semag/eg1.8/lang/ko_KR.lang
Normal file
1628
semag/eg1.8/lang/kw_GB.lang
Normal file
1624
semag/eg1.8/lang/la_LA.lang
Normal file
1910
semag/eg1.8/lang/lb_LU.lang
Normal file
2518
semag/eg1.8/lang/lt_LT.lang
Normal file
1754
semag/eg1.8/lang/lv_LV.lang
Normal file
458
semag/eg1.8/lang/mi_NZ.lang
Normal file
@ -0,0 +1,458 @@
|
||||
addServer.add=Oti
|
||||
addServer.enterIp=Wāhi noho o te tūmau
|
||||
addServer.enterName=Ingoa o te tūmau
|
||||
addServer.hideAddress=huna wāhitau
|
||||
addServer.resourcePack=Pōkai Rauemi Tūmau
|
||||
addServer.resourcePack.disabled=Monokia
|
||||
addServer.resourcePack.enabled=Mkakaurangi
|
||||
addServer.resourcePack.prompt=Tohuāki
|
||||
addServer.title=Whakatika i te tūmau
|
||||
book.editTitle=Tomo Book Taitara:
|
||||
book.finalizeButton=Tohu me Katia
|
||||
book.finalizeWarning=Kia mōhio mai! A, no te haina koe i te pukapuka, ka kore e taea te reira.
|
||||
book.signButton=Tohu
|
||||
chat.cannotSend=Kāore e taea te tukatuka kōrerorero karere
|
||||
chat.copy=Tārua ki Papatopenga
|
||||
chat.link.confirm=Kei te hiahia koe ki te whakatuwhera i te hononga ki a koutou?
|
||||
chat.link.confirmTrusted=E hiahia ana koe ki te whakatūwhera mai tēnei hono ranei te tārua te reira ki o koutou papatopenga?
|
||||
chat.link.open=Whakatūwhera i roto i te Browser
|
||||
chat.link.warning=Kaua e whakat hononga i tangata ke!
|
||||
chat.stream.emote=(%s) * %s %s
|
||||
chat.stream.text=(%s) <%s> %s
|
||||
chat.type.achievement=%s kua tika roaa te paetae %s
|
||||
connect.authorizing=Takiuru in...
|
||||
connect.connecting=E hono ana ki te tūmau...
|
||||
connect.failed=I rahua te hono ki te tūmau
|
||||
controls.title=Mana
|
||||
createWorld.customize.custom.presets=Tatūkē
|
||||
createWorld.customize.flat.addLayer=tāpiri kahu-
|
||||
createWorld.customize.flat.editLayer=apa whakatika
|
||||
createWorld.customize.flat.height=teitei
|
||||
createWorld.customize.flat.layer.bottom=raro %s
|
||||
createWorld.customize.flat.layer.top=runga -%s
|
||||
createWorld.customize.flat.removeLayer=tango kahu-
|
||||
createWorld.customize.flat.tile=Apa nāunau
|
||||
createWorld.customize.flat.title=Whakaraupapa Superflat
|
||||
createWorld.customize.presets=Tatūkē
|
||||
createWorld.customize.presets.list=Tērā rānei, konei te etahi hanga tatou i mua!
|
||||
createWorld.customize.presets.select=whakamahi tatūkē
|
||||
createWorld.customize.presets.share=E hiahia ana ki te faaite i to koutou tatūkē ki te tangata? Whakamahia te pouaka i raro nei!
|
||||
createWorld.customize.presets.title=tīpako i te tatūkē
|
||||
demo.day.1=Tenei demo ka muri e rima nga ra game, koutou pai te mahi!
|
||||
demo.day.2=ra e rua
|
||||
demo.day.3=ra e toru
|
||||
demo.day.4=ra e wha
|
||||
demo.day.5=Ko koutou ra whakamutunga tenei!
|
||||
demo.day.6=kua mutu e rima nga ra. Press "F5" ki te tango he pikitia o to koutou hanga
|
||||
demo.day.warning=Ko to koutou wa tata ake!
|
||||
demo.demoExpired=Demo oti!
|
||||
demo.help.buy=hoko Minecraft inaianei!
|
||||
demo.help.fullWrapped=Tenei demo ka muri e rima nga ra (e pā ana ki 1 haora me te 40 miniti o te wā tūturu). Tirohia te whakatutukitanga mō ngā tīwhiri! Kia ngahau!
|
||||
demo.help.inventory=Whakamahia %1$s ki te whakatuwhera i tō peke
|
||||
demo.help.jump=Peke mā te pēhi i %1$s
|
||||
demo.help.later=Tonu tākaro!
|
||||
demo.help.movement=Whakamahia %1$s, %2$s, %3$s, %4$s me te kiore ki te neke a tawhio noa
|
||||
demo.help.movementMouse=Titiro huri noa te whakamahi i te kiore
|
||||
demo.help.movementShort=Neke mā te pēhi i %1$s, %2$s, %3$s, %4$s
|
||||
demo.help.title=Aratau Demo Minecraft
|
||||
demo.remainingTime=te wā e toe ana: %s
|
||||
demo.reminder=Kua mutu te demo. te hoko i te kēmu ki te haere tonu tīmata ranei te ao hou!
|
||||
disconnect.closed=katia hononga
|
||||
disconnect.disconnected=Kua momotu i te Tūmau
|
||||
disconnect.endOfStream=Mutunga o te Awa
|
||||
disconnect.kicked=I whana i te kēmu
|
||||
disconnect.loginFailed=I rahua te takiuru
|
||||
disconnect.loginFailedInfo=I rahua te takiuru: %s
|
||||
disconnect.loginFailedInfo.invalidSession=Wātū muhu (Me tīmata anō i tō kēmu)
|
||||
disconnect.loginFailedInfo.serversUnavailable=Ko te motuhēhēnga he wā ki raro mo te tiaki.
|
||||
disconnect.lost=hononga ngaro
|
||||
disconnect.overflow=papare te waipuke
|
||||
disconnect.quitting=whakamutu
|
||||
disconnect.spam=Whana hoki whakamuhani
|
||||
disconnect.timeout=pau i roto i
|
||||
entity.Boat.name=Waka
|
||||
entity.EntityHorse.name=Hoiho
|
||||
entity.horse.name=Hoiho
|
||||
gameMode.adventure=Aratau Adventure
|
||||
gameMode.changed=Kua whakahoutia te gameplay
|
||||
gameMode.creative=Aratau Creative
|
||||
gameMode.hardcore=aratau tino!
|
||||
gameMode.survival=Aratau Survival
|
||||
generator.amplified=ô-
|
||||
generator.amplified.info=pānui: anake hoki ngahau, me nui rorohiko
|
||||
generator.default=taunoa
|
||||
generator.flat=Superflat
|
||||
generator.largeBiomes=ngā wāhi nui
|
||||
gui.all=Katoa
|
||||
gui.back=Hoki
|
||||
gui.cancel=Whakakore
|
||||
gui.done=Oti
|
||||
gui.down=iho
|
||||
gui.no=Kāo
|
||||
gui.toMenu=hoki ki te mata taitara
|
||||
gui.up=Ake
|
||||
gui.yes=Āe
|
||||
item.apple.name=Āporo
|
||||
item.arrow.name=Pere
|
||||
item.bed.name=Moenga
|
||||
item.beefCooked.name=Kotinga mīti
|
||||
item.boat.name=Waka
|
||||
item.bone.name=Wheua
|
||||
item.bow.name=Kopere
|
||||
item.bread.name=Parāoa
|
||||
item.bucket.name=Pēre
|
||||
item.cake.name=Keke
|
||||
item.carrots.name=Kāreti
|
||||
item.charcoal.name=Waro
|
||||
item.clock.name=Karaka
|
||||
item.coal.name=Waro
|
||||
item.compass.name=Kāpehu
|
||||
item.cookie.name=Pihikete
|
||||
item.diamond.name=Taimana
|
||||
item.egg.name=Hēki
|
||||
item.emerald.name=Kahurangi
|
||||
item.feather.name=Piki
|
||||
item.fishingRod.name=Matira
|
||||
item.flint.name=Matā
|
||||
item.hatchetWood.name=Tuaina ki rakau
|
||||
item.ingotGold.name=Gold Ingot
|
||||
item.ingotIron.name=Iron Ingot
|
||||
item.leather.name=Rera
|
||||
item.map.name=Mapi
|
||||
item.painting.name=Waituhi
|
||||
item.pickaxeWood.name=Keriwhenua ki rakau
|
||||
item.saddle.name=Tera
|
||||
item.seeds.name=Purapura
|
||||
item.shovelWood.name=koko rakau
|
||||
item.sign.name=Pouārahi
|
||||
item.snowball.name=Poi huka
|
||||
item.stick.name=Rākau
|
||||
item.sulphur.name=Paura
|
||||
item.swordIron.name=Iron Hoari
|
||||
item.swordWood.name=te hoari rakau
|
||||
item.wheat.name=Wīti
|
||||
key.categories.inventory=Rārangi taonga
|
||||
key.categories.multiplayer=Multiplayer
|
||||
key.inventory=Rārangi taonga
|
||||
key.jump=Peke
|
||||
lanServer.otherPlayers=i ngā tautuhinga mō ētahi atu kaitākaro
|
||||
lanServer.scanning=matawai mō ngā kēmu i runga i tō whatunga rohe
|
||||
lanServer.start=tīmata LAN ao
|
||||
lanServer.title=LAN te ao
|
||||
language.code=mi_NZ
|
||||
language.name=Te Reo Māori
|
||||
language.region=Aotearoa
|
||||
mcoServer.title=hou te ao ipurangi Minecraft
|
||||
menu.convertingLevel=Faafariuraa o te ao
|
||||
menu.disconnect=Wetea
|
||||
menu.game=tahua kēmu
|
||||
menu.generatingLevel=Auaha te ao
|
||||
menu.generatingTerrain=Auaha te whenua
|
||||
menu.loadingLevel=Rāwekeweke te ao
|
||||
menu.multiplayer=huihui
|
||||
menu.options=nga kōwhiringa...
|
||||
menu.playdemo=Te tākaro Demo World
|
||||
menu.quit=Putanga
|
||||
menu.resetdemo=Tautuhi anō Demo World
|
||||
menu.respawning=whakawhānau takarure
|
||||
menu.returnToGame=Hoki ki te kēmu
|
||||
menu.returnToMenu=Putanga me haere ki te rārangi tono
|
||||
menu.shareToLan=tuwhera tō LAN
|
||||
menu.simulating=Construction o te ao i roto i nga paraire
|
||||
menu.singleplayer=anake
|
||||
menu.switchingLevel=Whakawhitiwhiti nga ao
|
||||
multiplayer.connect=Hono
|
||||
multiplayer.downloadingStats=Te tikiake i ngā tatauranga & whakatutukitanga ...
|
||||
multiplayer.downloadingTerrain=Tikiake ana i nga whenua
|
||||
multiplayer.info1=Minecraft Multiplayer kore tēnei wā kei te oti, engari i reira
|
||||
multiplayer.info2=whakamātautau bug wawe puta.
|
||||
multiplayer.ipinfo=Tomo i te IP o te tūmau, ki te hono atu ki reira:
|
||||
multiplayer.player.joined=%s uru atu te kēmu
|
||||
multiplayer.player.joined.renamed=%s (e mōhiotia i mua kia rite ki %s) i uru ki te kēmu
|
||||
multiplayer.player.left=%s mahue te kēmu
|
||||
multiplayer.stopSleeping=waiho Bed
|
||||
multiplayer.texturePrompt.line1=E taunaki ana tēnei tūmau i te whakamahi o te mōkihi rauemi ritenga.
|
||||
multiplayer.texturePrompt.line2=E hiahia ana koe ki te tiki ake me te tāuta i te reira aunoa?
|
||||
multiplayer.title=te tākaro multiplayer
|
||||
options.advancedButton=Settings Ataata Arā...
|
||||
options.advancedOpengl=OpenGL Arā
|
||||
options.advancedVideoTitle=Settings Ataata Arā
|
||||
options.anaglyph=3D Anaglyph
|
||||
options.ao=Whakamumuratanga Whakaene
|
||||
options.ao.max=Mōrahi
|
||||
options.ao.min=Mōkito
|
||||
options.ao.off=OFF
|
||||
options.chat.color=Tae
|
||||
options.chat.height.unfocused=Not Focused Height
|
||||
options.chat.links=Hononga Tukutuku
|
||||
options.chat.links.prompt=Tohuāki i runga i Hononga
|
||||
options.chat.opacity=Opacity
|
||||
options.chat.scale=Tauine
|
||||
options.chat.title=Settings kōrerorero...
|
||||
options.chat.visibility=kōrerorero
|
||||
options.chat.visibility.full=whakaaturia
|
||||
options.chat.visibility.hidden=Huna
|
||||
options.chat.visibility.system=tono anake
|
||||
options.chat.width=Whānuitanga
|
||||
options.controls=Mana...
|
||||
options.difficulty=Uaua
|
||||
options.difficulty.easy=Ngāwari
|
||||
options.difficulty.hard=Māro
|
||||
options.difficulty.hardcore=Hardcore
|
||||
options.difficulty.normal=Pūnoa
|
||||
options.difficulty.peaceful=Rangimārie
|
||||
options.farWarning1=Tūtohutia te tāutanga Java 64 bit te
|
||||
options.farWarning2='Far' hoatu tawhiti (koe 32 bit)
|
||||
options.fboEnable=Whakahohe i FBOs
|
||||
options.fov=FOV
|
||||
options.fov.max=Quake PROV
|
||||
options.fov.min=Pūnoa
|
||||
options.framerateLimit=Mokatere tāpare Max
|
||||
options.framerateLimit.max=Unlimited
|
||||
options.gamma=Gile
|
||||
options.gamma.max=Kanapa
|
||||
options.gamma.min=Moody
|
||||
options.graphics=Whakairoiro
|
||||
options.graphics.fancy=Fancy
|
||||
options.graphics.fast=Nohopuku
|
||||
options.guiScale=GUI Tauine
|
||||
options.guiScale.auto=Car
|
||||
options.guiScale.large=Nui
|
||||
options.guiScale.normal=Pūnoa
|
||||
options.guiScale.small=Iti
|
||||
options.hidden=Huna
|
||||
options.invertMouse=Huripoki Kiore
|
||||
options.language=Reo...
|
||||
options.languageWarning=E kore ai translations reo e tōtika 100%%
|
||||
options.multiplayer.title=Settings Multiplayer...
|
||||
options.music=Puoro
|
||||
options.off=OFF
|
||||
options.on=ON
|
||||
options.particles=matūriki
|
||||
options.particles.all=Katoa
|
||||
options.particles.decreased=Heke
|
||||
options.particles.minimal=Iti
|
||||
options.performanceButton=Settings Mahinga Ataata...
|
||||
options.performanceVideoTitle=Settings Mahinga Ataata
|
||||
options.postButton=Settings Post-Processing...
|
||||
options.postProcessEnable=Whakahohetia te Post-Processing
|
||||
options.postVideoTitle=Settings Post-Processing
|
||||
options.qualityButton=Settings Kounga Ataata...
|
||||
options.qualityVideoTitle=Settings Kounga Ataata
|
||||
options.renderClouds=Kapua
|
||||
options.renderDistance=Hoatu tawhiti
|
||||
options.renderDistance.far=Tawhiti
|
||||
options.renderDistance.normal=Pūnoa
|
||||
options.renderDistance.short=Poto
|
||||
options.renderDistance.tiny=Iti
|
||||
options.saturation=waiwai
|
||||
options.sensitivity=Rauangi
|
||||
options.sensitivity.max=HYPERSPEED!!!
|
||||
options.sensitivity.min=*Oha*
|
||||
options.snooper=Tukua popore
|
||||
options.sound=tangi
|
||||
options.sounds=Music & Oro...
|
||||
options.sounds.title=Kōwhiringa Music & Sound
|
||||
options.stream=Pāohotanga Settings...
|
||||
options.stream.changes=Me tīmata anō pea koutou awa koe mo ki enei rerekētanga tango i te wahi.
|
||||
options.stream.compression.high=Tiketike
|
||||
options.stream.compression.low=Iti
|
||||
options.stream.compression.medium=Waenga
|
||||
options.stream.mic_toggle.talk=Kōrero
|
||||
options.title=kōwhiringa
|
||||
options.video=Settings Video...
|
||||
options.videoTitle=Settings Video
|
||||
options.viewBobbing=Tirohia te whāwhā
|
||||
options.visible=whakaaturia
|
||||
record.nowPlaying=tākaro Na: %s
|
||||
selectServer.add=Tāpiri Tūmau
|
||||
selectServer.defaultName=Tūmau Minecraft
|
||||
selectServer.delete=Porowhiu
|
||||
selectServer.deleteButton=Porowhiu
|
||||
selectServer.deleteQuestion=Whakaū i te tango o tenei tūmau?
|
||||
selectServer.deleteWarning=Ngaro ka ake ake! (Te wa i!)
|
||||
selectServer.direct=Whakarerekē
|
||||
selectServer.edit=Whakarerekē
|
||||
selectServer.empty=tahanga
|
||||
selectServer.hiddenAddress=(Huna)
|
||||
selectServer.refresh=Update
|
||||
selectServer.select=amui atu tūmau
|
||||
selectServer.title=te tīpako i te tūmau
|
||||
selectWorld.allowCommands=Tuku i te whakahau:
|
||||
selectWorld.allowCommands.info=Kainga, herehere, i ētahi atu momo ao... /gamemode, /xp
|
||||
selectWorld.bonusItems=utu uma:
|
||||
selectWorld.cheats=Tinihanga
|
||||
selectWorld.conversion=Me tahuri!
|
||||
selectWorld.create=Waihanga he world new
|
||||
selectWorld.createDemo=Te tākaro New Demo World
|
||||
selectWorld.customizeType=Whakatauritea
|
||||
selectWorld.delete=Porowhiu
|
||||
selectWorld.deleteButton=Porowhiu
|
||||
selectWorld.deleteQuestion=E hiahia ana koe ki te muku i tēnei ao ki a koutou?
|
||||
selectWorld.deleteWarning=ka ngaro ake ake! (He roa te wā!)
|
||||
selectWorld.empty=tahanga
|
||||
selectWorld.enterName=ingoa ao
|
||||
selectWorld.enterSeed=uri mo te kaihanga ao
|
||||
selectWorld.gameMode=Aratau Game
|
||||
selectWorld.gameMode.adventure=Haere māia
|
||||
selectWorld.gameMode.adventure.line1=Rite aratau ora, engari e kore e taea e poraka
|
||||
selectWorld.gameMode.adventure.line2=tāpiri, te tango ranei,
|
||||
selectWorld.gameMode.creative=auaha
|
||||
selectWorld.gameMode.creative.line1=rauemi mure ore, e rere ana, me te kore utu
|
||||
selectWorld.gameMode.creative.line2=Top -%s
|
||||
selectWorld.gameMode.hardcore=tino
|
||||
selectWorld.gameMode.hardcore.line1=Rite aratau ora, kua kiia i faingataa
|
||||
selectWorld.gameMode.hardcore.line2=uaua, a kotahi te ora anake
|
||||
selectWorld.gameMode.survival=Noho ora
|
||||
selectWorld.gameMode.survival.line1=Rapu mō te rauemi, ke fokotuutuu, taonga
|
||||
selectWorld.gameMode.survival.line2=taumata, te hauora, me te matekai
|
||||
selectWorld.hardcoreMode=tino:
|
||||
selectWorld.hardcoreMode.info=mukua ao te ki runga ki te mate
|
||||
selectWorld.mapFeatures=Whakaputa hanganga:
|
||||
selectWorld.mapFeatures.info=Kainga, herehere, i ētahi atu momo ao
|
||||
selectWorld.mapType=Momo o te ao:
|
||||
selectWorld.mapType.normal=Noa
|
||||
selectWorld.moreWorldOptions=Ētahi atu Kōwhiringa Ao ...
|
||||
selectWorld.newWorld=ao hou
|
||||
selectWorld.newWorld.copyOf=kape o te %s
|
||||
selectWorld.recreate=Waihangatia tētahi atu wā
|
||||
selectWorld.rename=Huria te ingoa
|
||||
selectWorld.renameButton=whakaingoa
|
||||
selectWorld.renameTitle=whakaingoa World
|
||||
selectWorld.resultFolder=ka ora i roto i:
|
||||
selectWorld.seedInfo=waiho kia pātea tonu hoki te uri tupurangi
|
||||
selectWorld.select=Te tākaro i te ao kua tīpakohia
|
||||
selectWorld.title=Tīpakohia te ao
|
||||
selectWorld.world=Ao
|
||||
soundCategory.ambient=Ambient / Taiao
|
||||
soundCategory.block=poraka
|
||||
soundCategory.hostile=Vaerua kaikiri
|
||||
soundCategory.master=rōrahi te Kaiwhakaako
|
||||
soundCategory.music=Puoro
|
||||
soundCategory.neutral=Vaerua hoa
|
||||
soundCategory.player=kaitākaro
|
||||
soundCategory.record=Poraka rekoata / Tuhipoka
|
||||
soundCategory.weather=Weather
|
||||
tile.activatorRail.name=Activator Rail
|
||||
tile.anvil.name=Paepae maitai
|
||||
tile.bedrock.name=maka tefito
|
||||
tile.blockCoal.name=Poraka o Coal
|
||||
tile.blockDiamond.name=Poraka o Diamond
|
||||
tile.bookshelf.name=PukaPuka
|
||||
tile.brick.name=Pereki
|
||||
tile.button.name=Pātene
|
||||
tile.cake.name=Keke
|
||||
tile.carrots.name=Kāreti
|
||||
tile.chest.name=pouaka
|
||||
tile.chestTrap.name=aaka mau
|
||||
tile.cloth.name=Wūru
|
||||
tile.cocoa.name=Koukou
|
||||
tile.crops.name=Kai
|
||||
tile.deadbush.name=mate Bush
|
||||
tile.detectorRail.name=pūkimi Rail
|
||||
tile.dirt.default.name=Oneone
|
||||
tile.dirt.podzol.name=Onemata
|
||||
tile.doorIron.name=Iron Door
|
||||
tile.doorWood.name=Door Rakau
|
||||
tile.doublePlant.fern.name=Ponga
|
||||
tile.doublePlant.rose.name=Rōha
|
||||
tile.doublePlant.sunflower.name=Putiputi rā
|
||||
tile.farmland.name=Papanga pāmu
|
||||
tile.fence.name=Taiepa
|
||||
tile.fire.name=Ahi
|
||||
tile.flower1.dandelion.name=Tawao
|
||||
tile.flower2.allium.name=Allium
|
||||
tile.flower2.houstonia.name=Azure Bluet
|
||||
tile.flower2.tulipRed.name=Whero Tulip
|
||||
tile.furnace.name=Oumu
|
||||
tile.glass.name=Karaehe
|
||||
tile.goldenRail.name=Rail Powered
|
||||
tile.grass.name=tarutaru Poraka
|
||||
tile.gravel.name=Tuakirikiri
|
||||
tile.hayBlock.name=hay wuru
|
||||
tile.ice.name=Haupapa
|
||||
tile.ladder.name=Arawhata
|
||||
tile.lava.name=Tahepuia
|
||||
tile.leaves.acacia.name=hitimi Rau
|
||||
tile.leaves.big_oak.name=Dark Oak Rau
|
||||
tile.leaves.birch.name=birch Rau
|
||||
tile.leaves.jungle.name=uru raau no Rau
|
||||
tile.leaves.name=Ngā rau
|
||||
tile.leaves.oak.name=Rau oki
|
||||
tile.leaves.spruce.name=Rau te puruhi
|
||||
tile.lever.name=Ara
|
||||
tile.log.acacia.name=hitimi Wood
|
||||
tile.log.big_oak.name=Dark Oak Wood
|
||||
tile.log.birch.name=Birch Wood
|
||||
tile.log.jungle.name=uru raau no Wood
|
||||
tile.log.name=Rākau
|
||||
tile.log.oak.name=Rākau oke
|
||||
tile.log.spruce.name=te puruhi mo Wood
|
||||
tile.mobSpawner.name=Monster Spawner
|
||||
tile.obsidian.name=Matā
|
||||
tile.oreCoal.name=Coal Ore
|
||||
tile.oreDiamond.name=Diamond Ore
|
||||
tile.oreGold.name=Gold Ore
|
||||
tile.oreIron.name=Iron Ore
|
||||
tile.potatoes.name=Rīwai
|
||||
tile.pumpkin.name=Paukena
|
||||
tile.rail.name=Ara tereina
|
||||
tile.redstoneDust.name=Redstone puehu
|
||||
tile.sand.default.name=Kirikiri
|
||||
tile.sand.red.name=Kirikiri whero
|
||||
tile.sandStone.chiseled.name=whaoa hōanga
|
||||
tile.sandStone.default.name=Hōanga
|
||||
tile.sandStone.name=Hōanga
|
||||
tile.sandStone.smooth.name=hōanga Whakaene
|
||||
tile.sapling.acacia.name=hitimi Māhuri
|
||||
tile.sapling.birch.name=Birch Māhuri
|
||||
tile.sapling.jungle.name=uru raau no Māhuri
|
||||
tile.sapling.oak.name=Oak Māhuri
|
||||
tile.sapling.spruce.name=te puruhi mo Māhuri
|
||||
tile.sign.name=Tohu
|
||||
tile.snow.name=Huka
|
||||
tile.stainedGlass.black.name=Black ōpure koata
|
||||
tile.stainedGlass.blue.name=Blue ōpure koata
|
||||
tile.stainedGlass.brown.name=Brown ōpure koata
|
||||
tile.stainedGlass.cyan.name=Urikiko ōpure koata
|
||||
tile.stainedGlass.gray.name=Gray ōpure koata
|
||||
tile.stainedGlass.green.name=Green ōpure koata
|
||||
tile.stainedGlass.name=ōpure koata
|
||||
tile.stainedGlass.pink.name=Pink ōpure koata
|
||||
tile.stainedGlass.purple.name=Papura ōpure koata
|
||||
tile.stainedGlass.red.name=Whero ōpure koata
|
||||
tile.stainedGlass.silver.name=Light Gray ōpure koata
|
||||
tile.stairsSandStone.name=hōanga Arawhata
|
||||
tile.stairsStone.name=Stone Arawhata
|
||||
tile.stairsWood.name=Oak Wood Arawhata
|
||||
tile.stairsWoodAcacia.name=Hitimi Wood Arawhata
|
||||
tile.stairsWoodBirch.name=Birch Wood Arawhata
|
||||
tile.stairsWoodDarkOak.name=Dark Oak Wood Arawhata
|
||||
tile.stairsWoodJungle.name=Uru raau no Wood Arawhata
|
||||
tile.stairsWoodSpruce.name=Te puruhi mo Wood Arawhata
|
||||
tile.stoneMoss.name=Moss Stone
|
||||
tile.stonebrick.name=Cobblestone
|
||||
tile.tallgrass.fern.name=Ponga
|
||||
tile.tallgrass.grass.name=Karaihe
|
||||
tile.tallgrass.name=Karaihe
|
||||
tile.tallgrass.shrub.name=Riki
|
||||
tile.thinGlass.name=Pihanga
|
||||
tile.tnt.name=TNT
|
||||
tile.torch.name=Rama
|
||||
tile.water.name=Wai
|
||||
tile.weightedPlate_heavy.name=Plate Pressure tautaha (Taumaha)
|
||||
tile.weightedPlate_light.name=Plate Pressure tautaha (Light)
|
||||
tile.wood.acacia.name=Hitimi Wood papa
|
||||
tile.wood.big_oak.name=Dark Oak Wood papa
|
||||
tile.wood.birch.name=Birch Wood papa
|
||||
tile.wood.jungle.name=Uru raau no Wood papa
|
||||
tile.wood.name=papa rākau
|
||||
tile.wood.oak.name=Oak papa rakau
|
||||
tile.wood.spruce.name=Te puruhi mo Wood papa
|
||||
tile.woodSlab.acacia.name=Hitimi Wood papa
|
||||
tile.woodSlab.big_oak.name=Dark Oak Wood papa
|
||||
tile.woodSlab.birch.name=Birch Wood Papa
|
||||
tile.woodSlab.jungle.name=Uru raau no Wood papa
|
||||
tile.woodSlab.oak.name=Oak Wood Papa
|
||||
tile.woodSlab.spruce.name=Te puruhi mo Wood papa
|
||||
tile.workbench.name=Papamahi
|