@solana/webcrypto-ed25519-polyfill 2.0.0-rc.0 → 2.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/index.browser.cjs +72 -11
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.mjs +72 -11
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.native.mjs +72 -11
- package/dist/index.native.mjs.map +1 -1
- package/dist/index.node.cjs +72 -11
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.mjs +72 -11
- package/dist/index.node.mjs.map +1 -1
- package/dist/types/index.d.ts +1 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/secrets.d.ts +2 -1
- package/dist/types/secrets.d.ts.map +1 -1
- package/package.json +13 -2
package/README.md
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
[code-style-prettier-image]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square
|
|
8
8
|
[code-style-prettier-url]: https://github.com/prettier/prettier
|
|
9
|
-
[npm-downloads-image]: https://img.shields.io/npm/dm/@solana/webcrypto-ed25519-polyfill/
|
|
10
|
-
[npm-image]: https://img.shields.io/npm/v/@solana/webcrypto-ed25519-polyfill/
|
|
11
|
-
[npm-url]: https://www.npmjs.com/package/@solana/webcrypto-ed25519-polyfill/v/
|
|
9
|
+
[npm-downloads-image]: https://img.shields.io/npm/dm/@solana/webcrypto-ed25519-polyfill/rc.svg?style=flat
|
|
10
|
+
[npm-image]: https://img.shields.io/npm/v/@solana/webcrypto-ed25519-polyfill/rc.svg?style=flat
|
|
11
|
+
[npm-url]: https://www.npmjs.com/package/@solana/webcrypto-ed25519-polyfill/v/rc
|
|
12
12
|
[semantic-release-image]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
|
|
13
13
|
[semantic-release-url]: https://github.com/semantic-release/semantic-release
|
|
14
14
|
|
|
@@ -29,7 +29,7 @@ Environments that support Ed25519 (see https://github.com/WICG/webcrypto-secure-
|
|
|
29
29
|
For all others, simply import this polyfill before use.
|
|
30
30
|
|
|
31
31
|
```ts
|
|
32
|
-
import install from '@solana/webcrypto-ed25519-polyfill';
|
|
32
|
+
import { install } from '@solana/webcrypto-ed25519-polyfill';
|
|
33
33
|
|
|
34
34
|
// Calling this will shim methods on `SubtleCrypto`, adding Ed25519 support.
|
|
35
35
|
install();
|
package/dist/index.browser.cjs
CHANGED
|
@@ -536,6 +536,14 @@ async function getPublicKeyBytes(key) {
|
|
|
536
536
|
publicKeyStore.set(key, publicKeyBytes);
|
|
537
537
|
return publicKeyBytes;
|
|
538
538
|
}
|
|
539
|
+
function base64UrlEncode(bytes) {
|
|
540
|
+
return btoa(Array.from(bytes, (b) => String.fromCharCode(b)).join("")).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
541
|
+
}
|
|
542
|
+
function base64UrlDecode(value) {
|
|
543
|
+
const m = value.length % 4;
|
|
544
|
+
const base64Value = value.replace(/-/g, "+").replace(/_/g, "/").padEnd(value.length + (m === 0 ? 0 : 4 - m), "=");
|
|
545
|
+
return Uint8Array.from(atob(base64Value), (c) => c.charCodeAt(0));
|
|
546
|
+
}
|
|
539
547
|
async function exportKeyPolyfill(format, key) {
|
|
540
548
|
if (key.extractable === false) {
|
|
541
549
|
throw new DOMException("key is not extractable", "InvalidAccessException");
|
|
@@ -555,6 +563,24 @@ async function exportKeyPolyfill(format, key) {
|
|
|
555
563
|
const secretKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);
|
|
556
564
|
return new Uint8Array([...ED25519_PKCS8_HEADER, ...secretKeyBytes]);
|
|
557
565
|
}
|
|
566
|
+
case "jwk": {
|
|
567
|
+
const publicKeyBytes = await getPublicKeyBytes(key);
|
|
568
|
+
const base = {
|
|
569
|
+
crv: "Ed25519",
|
|
570
|
+
ext: key.extractable,
|
|
571
|
+
key_ops: key.usages,
|
|
572
|
+
kty: "OKP",
|
|
573
|
+
x: base64UrlEncode(publicKeyBytes)
|
|
574
|
+
};
|
|
575
|
+
if (key.type === "private") {
|
|
576
|
+
const secretKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);
|
|
577
|
+
return Object.freeze({
|
|
578
|
+
...base,
|
|
579
|
+
d: base64UrlEncode(secretKeyBytes)
|
|
580
|
+
});
|
|
581
|
+
}
|
|
582
|
+
return Object.freeze({ ...base });
|
|
583
|
+
}
|
|
558
584
|
default:
|
|
559
585
|
throw new Error(`Exporting polyfilled Ed25519 keys in the "${format}" format is unimplemented`);
|
|
560
586
|
}
|
|
@@ -587,12 +613,19 @@ async function verifyPolyfill(key, signature, data) {
|
|
|
587
613
|
return false;
|
|
588
614
|
}
|
|
589
615
|
}
|
|
616
|
+
function assertValidKeyUsages(keyUsages, type) {
|
|
617
|
+
const prohibitedKeyUses = /* @__PURE__ */ new Set([
|
|
618
|
+
...type === "private" ? ["verify"] : ["sign"],
|
|
619
|
+
...PROHIBITED_KEY_USAGES
|
|
620
|
+
]);
|
|
621
|
+
if (keyUsages.some((usage) => prohibitedKeyUses.has(usage))) {
|
|
622
|
+
throw new DOMException("Unsupported key usage for a Ed25519 key", "SyntaxError");
|
|
623
|
+
}
|
|
624
|
+
}
|
|
590
625
|
function importKeyPolyfill(format, keyData, extractable, keyUsages) {
|
|
591
|
-
const bytes = bufferSourceToUint8Array(keyData);
|
|
592
626
|
if (format === "raw") {
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
}
|
|
627
|
+
const bytes = bufferSourceToUint8Array(keyData);
|
|
628
|
+
assertValidKeyUsages(keyUsages, "public");
|
|
596
629
|
if (bytes.length !== 32) {
|
|
597
630
|
throw new DOMException("Ed25519 raw keys must be exactly 32-bytes", "DataError");
|
|
598
631
|
}
|
|
@@ -608,9 +641,8 @@ function importKeyPolyfill(format, keyData, extractable, keyUsages) {
|
|
|
608
641
|
return publicKey;
|
|
609
642
|
}
|
|
610
643
|
if (format === "pkcs8") {
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
}
|
|
644
|
+
const bytes = bufferSourceToUint8Array(keyData);
|
|
645
|
+
assertValidKeyUsages(keyUsages, "private");
|
|
614
646
|
if (bytes.length !== 48) {
|
|
615
647
|
throw new DOMException("Invalid keyData", "DataError");
|
|
616
648
|
}
|
|
@@ -630,6 +662,38 @@ function importKeyPolyfill(format, keyData, extractable, keyUsages) {
|
|
|
630
662
|
cache.set(privateKey, secretKeyBytes);
|
|
631
663
|
return privateKey;
|
|
632
664
|
}
|
|
665
|
+
if (format === "jwk") {
|
|
666
|
+
const jwk = keyData;
|
|
667
|
+
const type = "d" in jwk ? "private" : "public";
|
|
668
|
+
assertValidKeyUsages(keyUsages, type);
|
|
669
|
+
const keyOps = new Set(jwk.key_ops ?? []);
|
|
670
|
+
const sameKeyUsages = keyUsages.length === keyOps.size && [...keyUsages].every((x) => keyOps.has(x));
|
|
671
|
+
if (jwk.kty !== "OKP" || jwk.crv !== "Ed25519" || jwk.ext !== extractable || !sameKeyUsages) {
|
|
672
|
+
throw new DOMException("Invalid Ed25519 JWK", "DataError");
|
|
673
|
+
}
|
|
674
|
+
if (type === "public" && !jwk.x) {
|
|
675
|
+
throw new DOMException("Ed25519 JWK is missing public key coordinates", "DataError");
|
|
676
|
+
}
|
|
677
|
+
if (type === "private" && !jwk.d) {
|
|
678
|
+
throw new DOMException("Ed25519 JWK is missing private key coordinates", "DataError");
|
|
679
|
+
}
|
|
680
|
+
const usageToKeep = type === "public" ? "verify" : "sign";
|
|
681
|
+
const key = Object.freeze({
|
|
682
|
+
[Symbol.toStringTag]: "CryptoKey",
|
|
683
|
+
algorithm: Object.freeze({ name: "Ed25519" }),
|
|
684
|
+
extractable,
|
|
685
|
+
type,
|
|
686
|
+
usages: Object.freeze(keyUsages.filter((usage) => usage === usageToKeep))
|
|
687
|
+
});
|
|
688
|
+
if (type === "public") {
|
|
689
|
+
const cache = publicKeyBytesStore ||= /* @__PURE__ */ new WeakMap();
|
|
690
|
+
cache.set(key, base64UrlDecode(jwk.x));
|
|
691
|
+
} else {
|
|
692
|
+
const cache = storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT ||= /* @__PURE__ */ new WeakMap();
|
|
693
|
+
cache.set(key, base64UrlDecode(jwk.d));
|
|
694
|
+
}
|
|
695
|
+
return key;
|
|
696
|
+
}
|
|
633
697
|
throw new Error(`Importing Ed25519 keys in the "${format}" format is unimplemented`);
|
|
634
698
|
}
|
|
635
699
|
|
|
@@ -769,15 +833,12 @@ function install() {
|
|
|
769
833
|
};
|
|
770
834
|
}
|
|
771
835
|
}
|
|
772
|
-
|
|
773
|
-
// src/index.ts
|
|
774
|
-
var src_default = install;
|
|
775
836
|
/*! Bundled license information:
|
|
776
837
|
|
|
777
838
|
@noble/ed25519/index.js:
|
|
778
839
|
(*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) *)
|
|
779
840
|
*/
|
|
780
841
|
|
|
781
|
-
|
|
842
|
+
exports.install = install;
|
|
782
843
|
//# sourceMappingURL=index.browser.cjs.map
|
|
783
844
|
//# sourceMappingURL=index.browser.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/@noble+ed25519@2.1.0/node_modules/@noble/ed25519/index.js","../src/secrets.ts","../src/install.ts","../src/index.ts"],"names":["G","P","p","n","_"],"mappings":";;;AACA,IAAM,CAAA,GAAI,MAAM,IAAO,GAAA,GAAA,CAAA;AACvB,IAAM,CAAA,GAAI,MAAM,IAAO,GAAA,uCAAA,CAAA;AACvB,IAAM,EAAK,GAAA,mEAAA,CAAA;AACX,IAAM,EAAK,GAAA,mEAAA,CAAA;AACX,IAAM,KAAQ,GAAA;AAAA,EACV,GAAG,CAAC,EAAA;AAAA;AAAA,EACJ,CAAG,EAAA,8EAAA;AAAA,EACH,CAAG,EAAA,CAAA;AAAA,EAAG,CAAG,EAAA,CAAA;AAAA,EAAG,CAAG,EAAA,CAAA;AAAA,EAAG,EAAA;AAAA,EAAI,EAAA;AAAA;AAC1B,CAAA,CAAA;AACA,IAAM,GAAA,GAAM,CAAC,CAAA,GAAI,EAAO,KAAA;AAAE,EAAM,MAAA,IAAI,MAAM,CAAC,CAAA,CAAA;AAAG,CAAA,CAAA;AAC9C,IAAM,GAAM,GAAA,CAAC,CAAM,KAAA,OAAO,CAAM,KAAA,QAAA,CAAA;AAChC,IAAM,IAAO,GAAA,CAAC,CAAO,KAAA,CAAA,YAAa,UAC7B,IAAA,CAAA,IAAK,IAAQ,IAAA,OAAO,CAAM,KAAA,QAAA,IAAY,CAAE,CAAA,WAAA,CAAY,IAAS,KAAA,YAAA,CAAA;AAClE,IAAM,GAAA,GAAM,CAAC,CAAG,EAAA,CAAA;AAAA;AAAA,EACf,CAAC,IAAA,CAAK,CAAC,CAAA,IAAM,OAAO,CAAM,KAAA,QAAA,IAAY,CAAI,GAAA,CAAA,IAAK,CAAE,CAAA,MAAA,KAAW,CACzD,GAAA,GAAA,CAAI,qCAAqC,CAAI,GAAA,CAAA;AAAA,CAAA,CAAA;AACjD,IAAM,GAAM,GAAA,CAAC,IAAS,KAAA,IAAI,WAAW,IAAI,CAAA,CAAA;AACzC,IAAM,OAAO,CAAC,CAAA,EAAG,GAAQ,KAAA,GAAA,CAAI,IAAI,CAAC,CAAA,GAAI,GAAI,CAAA,CAAC,IAAI,GAAI,CAAA,GAAA,CAAI,CAAC,CAAC,GAAG,GAAG,CAAA,CAAA;AAC/D,IAAM,GAAM,GAAA,CAAC,CAAG,EAAA,CAAA,GAAI,CAAM,KAAA;AAAE,EAAA,IAAI,IAAI,CAAI,GAAA,CAAA,CAAA;AAAG,EAAO,OAAA,CAAA,IAAK,EAAK,GAAA,CAAA,GAAI,CAAI,GAAA,CAAA,CAAA;AAAG,CAAA,CAAA;AACvE,IAAM,UAAU,CAAC,CAAA,KAAO,aAAa,KAAQ,GAAA,CAAA,GAAI,IAAI,gBAAgB,CAAA,CAAA;AACrE,IAAM,KAAA,GAAN,MAAM,MAAM,CAAA;AAAA,EACR,WAAY,CAAA,EAAA,EAAI,EAAI,EAAA,EAAA,EAAI,EAAI,EAAA;AACxB,IAAA,IAAA,CAAK,EAAK,GAAA,EAAA,CAAA;AACV,IAAA,IAAA,CAAK,EAAK,GAAA,EAAA,CAAA;AACV,IAAA,IAAA,CAAK,EAAK,GAAA,EAAA,CAAA;AACV,IAAA,IAAA,CAAK,EAAK,GAAA,EAAA,CAAA;AAAA,GACd;AAAA,EACA,OAAO,WAAW,CAAG,EAAA;AAAE,IAAA,OAAO,IAAI,MAAA,CAAM,CAAE,CAAA,CAAA,EAAG,CAAE,CAAA,CAAA,EAAG,EAAI,EAAA,GAAA,CAAI,CAAE,CAAA,CAAA,GAAI,CAAE,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,GAAG;AAAA,EACvE,OAAO,OAAA,CAAQ,GAAK,EAAA,MAAA,GAAS,KAAO,EAAA;AAChC,IAAM,MAAA,EAAE,GAAM,GAAA,KAAA,CAAA;AACd,IAAM,GAAA,GAAA,IAAA,CAAK,KAAK,EAAE,CAAA,CAAA;AAClB,IAAM,MAAA,MAAA,GAAS,IAAI,KAAM,EAAA,CAAA;AACzB,IAAM,MAAA,QAAA,GAAW,IAAI,EAAE,CAAA,CAAA;AACvB,IAAO,MAAA,CAAA,EAAE,CAAI,GAAA,QAAA,GAAW,CAAC,GAAA,CAAA;AACzB,IAAM,MAAA,CAAA,GAAI,OAAO,MAAM,CAAA,CAAA;AACvB,IAAA,IAAI,MAAU,IAAA,EAAE,EAAM,IAAA,CAAA,IAAK,IAAI,EAAM,IAAA,IAAA,CAAA;AACjC,MAAA,GAAA,CAAI,eAAe,CAAA,CAAA;AACvB,IAAA,IAAI,CAAC,MAAA,IAAU,EAAE,EAAA,IAAM,KAAK,CAAI,GAAA,CAAA,CAAA;AAC5B,MAAA,GAAA,CAAI,eAAe,CAAA,CAAA;AACvB,IAAM,MAAA,EAAA,GAAK,GAAI,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACpB,IAAM,MAAA,CAAA,GAAI,GAAI,CAAA,EAAA,GAAK,EAAE,CAAA,CAAA;AACrB,IAAA,MAAM,CAAI,GAAA,GAAA,CAAI,CAAI,GAAA,EAAA,GAAK,EAAE,CAAA,CAAA;AACzB,IAAA,IAAI,EAAE,OAAS,EAAA,KAAA,EAAO,GAAM,GAAA,OAAA,CAAQ,GAAG,CAAC,CAAA,CAAA;AACxC,IAAA,IAAI,CAAC,OAAA;AACD,MAAA,GAAA,CAAI,oBAAoB,CAAA,CAAA;AAC5B,IAAM,MAAA,MAAA,GAAA,CAAU,IAAI,EAAQ,MAAA,EAAA,CAAA;AAC5B,IAAM,MAAA,aAAA,GAAA,CAAiB,WAAW,GAAU,MAAA,CAAA,CAAA;AAC5C,IAAI,IAAA,CAAC,MAAU,IAAA,CAAA,KAAM,EAAM,IAAA,aAAA;AACvB,MAAA,GAAA,CAAI,eAAe,CAAA,CAAA;AACvB,IAAA,IAAI,aAAkB,KAAA,MAAA;AAClB,MAAI,CAAA,GAAA,GAAA,CAAI,CAAC,CAAC,CAAA,CAAA;AACd,IAAO,OAAA,IAAI,OAAM,CAAG,EAAA,CAAA,EAAG,IAAI,GAAI,CAAA,CAAA,GAAI,CAAC,CAAC,CAAA,CAAA;AAAA,GACzC;AAAA,EACA,IAAI,CAAI,GAAA;AAAE,IAAO,OAAA,IAAA,CAAK,UAAW,CAAA,CAAA,CAAA;AAAA,GAAG;AAAA;AAAA,EACpC,IAAI,CAAI,GAAA;AAAE,IAAO,OAAA,IAAA,CAAK,UAAW,CAAA,CAAA,CAAA;AAAA,GAAG;AAAA;AAAA,EACpC,OAAO,KAAO,EAAA;AACV,IAAA,MAAM,EAAE,EAAI,EAAA,EAAA,EAAI,IAAI,EAAI,EAAA,EAAA,EAAI,IAAO,GAAA,IAAA,CAAA;AACnC,IAAM,MAAA,EAAE,IAAI,EAAI,EAAA,EAAA,EAAI,IAAI,EAAI,EAAA,EAAA,EAAO,GAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AAChD,IAAM,MAAA,IAAA,GAAO,IAAI,EAAK,GAAA,EAAE,GAAG,IAAO,GAAA,GAAA,CAAI,KAAK,EAAE,CAAA,CAAA;AAC7C,IAAM,MAAA,IAAA,GAAO,IAAI,EAAK,GAAA,EAAE,GAAG,IAAO,GAAA,GAAA,CAAI,KAAK,EAAE,CAAA,CAAA;AAC7C,IAAO,OAAA,IAAA,KAAS,QAAQ,IAAS,KAAA,IAAA,CAAA;AAAA,GACrC;AAAA,EACA,GAAM,GAAA;AAAE,IAAO,OAAA,IAAA,CAAK,OAAO,CAAC,CAAA,CAAA;AAAA,GAAG;AAAA,EAC/B,MAAS,GAAA;AACL,IAAA,OAAO,IAAI,MAAA,CAAM,GAAI,CAAA,CAAC,KAAK,EAAE,CAAA,EAAG,IAAK,CAAA,EAAA,EAAI,KAAK,EAAI,EAAA,GAAA,CAAI,CAAC,IAAA,CAAK,EAAE,CAAC,CAAA,CAAA;AAAA,GACnE;AAAA,EACA,MAAS,GAAA;AACL,IAAA,MAAM,EAAE,EAAI,EAAA,EAAA,EAAI,IAAI,EAAI,EAAA,EAAA,EAAI,IAAO,GAAA,IAAA,CAAA;AACnC,IAAM,MAAA,EAAE,GAAM,GAAA,KAAA,CAAA;AACd,IAAM,MAAA,CAAA,GAAI,GAAI,CAAA,EAAA,GAAK,EAAE,CAAA,CAAA;AACrB,IAAM,MAAA,CAAA,GAAI,GAAI,CAAA,EAAA,GAAK,EAAE,CAAA,CAAA;AACrB,IAAA,MAAM,IAAI,GAAI,CAAA,EAAA,GAAK,GAAI,CAAA,EAAA,GAAK,EAAE,CAAC,CAAA,CAAA;AAC/B,IAAM,MAAA,CAAA,GAAI,GAAI,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACnB,IAAA,MAAM,OAAO,EAAK,GAAA,EAAA,CAAA;AAClB,IAAA,MAAM,IAAI,GAAI,CAAA,GAAA,CAAI,OAAO,IAAI,CAAA,GAAI,IAAI,CAAC,CAAA,CAAA;AACtC,IAAA,MAAMA,KAAI,CAAI,GAAA,CAAA,CAAA;AACd,IAAA,MAAM,IAAIA,EAAI,GAAA,CAAA,CAAA;AACd,IAAA,MAAM,IAAI,CAAI,GAAA,CAAA,CAAA;AACd,IAAM,MAAA,EAAA,GAAK,GAAI,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACpB,IAAM,MAAA,EAAA,GAAK,GAAIA,CAAAA,EAAAA,GAAI,CAAC,CAAA,CAAA;AACpB,IAAM,MAAA,EAAA,GAAK,GAAI,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACpB,IAAM,MAAA,EAAA,GAAK,GAAI,CAAA,CAAA,GAAIA,EAAC,CAAA,CAAA;AACpB,IAAA,OAAO,IAAI,MAAA,CAAM,EAAI,EAAA,EAAA,EAAI,IAAI,EAAE,CAAA,CAAA;AAAA,GACnC;AAAA,EACA,IAAI,KAAO,EAAA;AACP,IAAM,MAAA,EAAE,IAAI,EAAI,EAAA,EAAA,EAAI,IAAI,EAAI,EAAA,EAAA,EAAI,EAAI,EAAA,EAAA,EAAO,GAAA,IAAA,CAAA;AAC3C,IAAM,MAAA,EAAE,EAAI,EAAA,EAAA,EAAI,EAAI,EAAA,EAAA,EAAI,EAAI,EAAA,EAAA,EAAI,EAAI,EAAA,EAAA,EAAO,GAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AACxD,IAAM,MAAA,EAAE,CAAG,EAAA,CAAA,EAAM,GAAA,KAAA,CAAA;AACjB,IAAM,MAAA,CAAA,GAAI,GAAI,CAAA,EAAA,GAAK,EAAE,CAAA,CAAA;AACrB,IAAM,MAAA,CAAA,GAAI,GAAI,CAAA,EAAA,GAAK,EAAE,CAAA,CAAA;AACrB,IAAA,MAAM,CAAI,GAAA,GAAA,CAAI,EAAK,GAAA,CAAA,GAAI,EAAE,CAAA,CAAA;AACzB,IAAM,MAAA,CAAA,GAAI,GAAI,CAAA,EAAA,GAAK,EAAE,CAAA,CAAA;AACrB,IAAA,MAAM,IAAI,GAAK,CAAA,CAAA,EAAA,GAAK,OAAO,EAAK,GAAA,EAAA,CAAA,GAAM,IAAI,CAAC,CAAA,CAAA;AAC3C,IAAM,MAAA,CAAA,GAAI,GAAI,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACnB,IAAMA,MAAAA,EAAAA,GAAI,GAAI,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACnB,IAAA,MAAM,CAAI,GAAA,GAAA,CAAI,CAAI,GAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACvB,IAAM,MAAA,EAAA,GAAK,GAAI,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACpB,IAAM,MAAA,EAAA,GAAK,GAAIA,CAAAA,EAAAA,GAAI,CAAC,CAAA,CAAA;AACpB,IAAM,MAAA,EAAA,GAAK,GAAI,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACpB,IAAM,MAAA,EAAA,GAAK,GAAI,CAAA,CAAA,GAAIA,EAAC,CAAA,CAAA;AACpB,IAAA,OAAO,IAAI,MAAA,CAAM,EAAI,EAAA,EAAA,EAAI,IAAI,EAAE,CAAA,CAAA;AAAA,GACnC;AAAA,EACA,GAAA,CAAI,CAAG,EAAA,IAAA,GAAO,IAAM,EAAA;AAChB,IAAA,IAAI,CAAM,KAAA,EAAA;AACN,MAAA,OAAO,IAAS,KAAA,IAAA,GAAO,GAAI,CAAA,sBAAsB,CAAI,GAAA,CAAA,CAAA;AACzD,IAAA,IAAI,EAAE,OAAO,CAAA,KAAM,QAAY,IAAA,EAAA,GAAK,KAAK,CAAI,GAAA,CAAA,CAAA;AACzC,MAAA,GAAA,CAAI,6BAA6B,CAAA,CAAA;AACrC,IAAA,IAAI,CAAC,IAAA,IAAQ,IAAK,CAAA,GAAA,MAAS,CAAM,KAAA,EAAA;AAC7B,MAAO,OAAA,IAAA,CAAA;AACX,IAAI,IAAA,IAAA,CAAK,OAAO,CAAC,CAAA;AACb,MAAO,OAAA,IAAA,CAAK,CAAC,CAAE,CAAA,CAAA,CAAA;AACnB,IAAI,IAAA,CAAA,GAAI,GAAG,CAAI,GAAA,CAAA,CAAA;AACf,IAAS,KAAA,IAAA,CAAA,GAAI,MAAM,CAAI,GAAA,EAAA,EAAI,IAAI,CAAE,CAAA,MAAA,EAAU,EAAA,CAAA,KAAM,EAAI,EAAA;AACjD,MAAA,IAAI,CAAI,GAAA,EAAA;AACJ,QAAI,CAAA,GAAA,CAAA,CAAE,IAAI,CAAC,CAAA,CAAA;AAAA,WACN,IAAA,IAAA;AACL,QAAI,CAAA,GAAA,CAAA,CAAE,IAAI,CAAC,CAAA,CAAA;AAAA,KACnB;AACA,IAAO,OAAA,CAAA,CAAA;AAAA,GACX;AAAA,EACA,SAAS,MAAQ,EAAA;AAAE,IAAO,OAAA,IAAA,CAAK,IAAI,MAAM,CAAA,CAAA;AAAA,GAAG;AAAA;AAAA,EAC5C,aAAgB,GAAA;AAAE,IAAA,OAAO,KAAK,GAAI,CAAA,MAAA,CAAO,KAAM,CAAA,CAAC,GAAG,KAAK,CAAA,CAAA;AAAA,GAAG;AAAA;AAAA,EAC3D,YAAe,GAAA;AAAE,IAAO,OAAA,IAAA,CAAK,aAAc,EAAA,CAAE,GAAI,EAAA,CAAA;AAAA,GAAG;AAAA;AAAA,EACpD,aAAgB,GAAA;AACZ,IAAA,IAAI,IAAI,IAAK,CAAA,GAAA,CAAI,IAAI,EAAI,EAAA,KAAK,EAAE,MAAO,EAAA,CAAA;AACvC,IAAA,IAAI,CAAI,GAAA,EAAA;AACJ,MAAI,CAAA,GAAA,CAAA,CAAE,IAAI,IAAI,CAAA,CAAA;AAClB,IAAA,OAAO,EAAE,GAAI,EAAA,CAAA;AAAA,GACjB;AAAA,EACA,QAAW,GAAA;AACP,IAAA,MAAM,EAAE,EAAI,EAAA,CAAA,EAAG,IAAI,CAAG,EAAA,EAAA,EAAI,GAAM,GAAA,IAAA,CAAA;AAChC,IAAI,IAAA,IAAA,CAAK,OAAO,CAAC,CAAA;AACb,MAAA,OAAO,EAAE,CAAA,EAAG,EAAI,EAAA,CAAA,EAAG,EAAG,EAAA,CAAA;AAC1B,IAAM,MAAA,EAAA,GAAK,OAAO,CAAC,CAAA,CAAA;AACnB,IAAI,IAAA,GAAA,CAAI,CAAI,GAAA,EAAE,CAAM,KAAA,EAAA;AAChB,MAAA,GAAA,CAAI,iBAAiB,CAAA,CAAA;AACzB,IAAO,OAAA,EAAE,CAAG,EAAA,GAAA,CAAI,CAAI,GAAA,EAAE,GAAG,CAAG,EAAA,GAAA,CAAI,CAAI,GAAA,EAAE,CAAE,EAAA,CAAA;AAAA,GAC5C;AAAA,EACA,UAAa,GAAA;AACT,IAAA,MAAM,EAAE,CAAA,EAAG,CAAE,EAAA,GAAI,KAAK,QAAS,EAAA,CAAA;AAC/B,IAAM,MAAA,CAAA,GAAI,SAAS,CAAC,CAAA,CAAA;AACpB,IAAA,CAAA,CAAE,EAAE,CAAA,IAAK,CAAI,GAAA,EAAA,GAAK,GAAO,GAAA,CAAA,CAAA;AACzB,IAAO,OAAA,CAAA,CAAA;AAAA,GACX;AAAA,EACA,KAAQ,GAAA;AAAE,IAAO,OAAA,GAAA,CAAI,IAAK,CAAA,UAAA,EAAY,CAAA,CAAA;AAAA,GAAG;AAAA;AAC7C,CAAA,CAAA;AACA,KAAM,CAAA,IAAA,GAAO,IAAI,KAAM,CAAA,EAAA,EAAI,IAAI,EAAI,EAAA,GAAA,CAAI,EAAK,GAAA,EAAE,CAAC,CAAA,CAAA;AAC/C,KAAA,CAAM,OAAO,IAAI,KAAA,CAAM,EAAI,EAAA,EAAA,EAAI,IAAI,EAAE,CAAA,CAAA;AACrC,IAAM,EAAE,IAAA,EAAM,CAAG,EAAA,IAAA,EAAM,GAAM,GAAA,KAAA,CAAA;AAC7B,IAAM,IAAA,GAAO,CAAC,GAAA,EAAK,GAAQ,KAAA,GAAA,CAAI,SAAS,EAAE,CAAA,CAAE,QAAS,CAAA,GAAA,EAAK,GAAG,CAAA,CAAA;AAC7D,IAAM,GAAM,GAAA,CAAC,CAAM,KAAA,KAAA,CAAM,KAAK,CAAC,CAAA,CAAE,GAAI,CAAA,CAAA,CAAA,KAAK,KAAK,CAAG,EAAA,CAAC,CAAC,CAAA,CAAE,KAAK,EAAE,CAAA,CAAA;AAC7D,IAAM,GAAA,GAAM,CAAC,GAAQ,KAAA;AACjB,EAAA,MAAM,IAAI,GAAI,CAAA,MAAA,CAAA;AACd,EAAA,IAAI,CAAC,GAAA,CAAI,GAAG,CAAA,IAAK,CAAI,GAAA,CAAA;AACjB,IAAA,GAAA,CAAI,eAAe,CAAA,CAAA;AACvB,EAAM,MAAA,GAAA,GAAM,GAAI,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACrB,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,GAAA,CAAI,QAAQ,CAAK,EAAA,EAAA;AACjC,IAAA,MAAM,IAAI,CAAI,GAAA,CAAA,CAAA;AACd,IAAA,MAAM,CAAI,GAAA,GAAA,CAAI,KAAM,CAAA,CAAA,EAAG,IAAI,CAAC,CAAA,CAAA;AAC5B,IAAA,MAAM,CAAI,GAAA,MAAA,CAAO,QAAS,CAAA,CAAA,EAAG,EAAE,CAAA,CAAA;AAC/B,IAAA,IAAI,MAAO,CAAA,KAAA,CAAM,CAAC,CAAA,IAAK,CAAI,GAAA,CAAA;AACvB,MAAA,GAAA,CAAI,eAAe,CAAA,CAAA;AACvB,IAAA,GAAA,CAAI,CAAC,CAAI,GAAA,CAAA,CAAA;AAAA,GACb;AACA,EAAO,OAAA,GAAA,CAAA;AACX,CAAA,CAAA;AACA,IAAM,QAAA,GAAW,CAAC,GAAA,KAAQ,GAAI,CAAA,IAAA,CAAK,KAAK,EAAK,GAAA,CAAC,CAAC,CAAA,CAAE,OAAQ,EAAA,CAAA;AACzD,IAAM,MAAS,GAAA,CAAC,CAAM,KAAA,MAAA,CAAO,IAAO,GAAA,GAAA,CAAI,GAAI,CAAA,GAAA,CAAI,CAAC,CAAC,CAAE,CAAA,OAAA,EAAS,CAAC,CAAA,CAAA;AAC9D,IAAM,OAAA,GAAU,IAAI,IAAS,KAAA;AACzB,EAAA,MAAM,CAAI,GAAA,GAAA,CAAI,IAAK,CAAA,MAAA,CAAO,CAAC,GAAA,EAAK,CAAM,KAAA,GAAA,GAAM,GAAI,CAAA,CAAC,CAAE,CAAA,MAAA,EAAQ,CAAC,CAAC,CAAA,CAAA;AAC7D,EAAA,IAAI,GAAM,GAAA,CAAA,CAAA;AACV,EAAA,IAAA,CAAK,QAAQ,CAAK,CAAA,KAAA;AAAE,IAAE,CAAA,CAAA,GAAA,CAAI,GAAG,GAAG,CAAA,CAAA;AAAG,IAAA,GAAA,IAAO,CAAE,CAAA,MAAA,CAAA;AAAA,GAAS,CAAA,CAAA;AACrD,EAAO,OAAA,CAAA,CAAA;AACX,CAAA,CAAA;AACA,IAAM,MAAS,GAAA,CAAC,GAAK,EAAA,EAAA,GAAK,CAAM,KAAA;AAC5B,EAAI,IAAA,GAAA,KAAQ,MAAM,EAAM,IAAA,EAAA;AACpB,IAAI,GAAA,CAAA,eAAA,GAAkB,GAAM,GAAA,OAAA,GAAU,EAAE,CAAA,CAAA;AAC5C,EAAA,IAAI,CAAI,GAAA,GAAA,CAAI,GAAK,EAAA,EAAE,CAAG,CAAA,CAAA,CAAA,GAAI,EAAI,CAAA,CAAA,CAAA,GAAI,EAAI,CAAA,CAAQ,CAAA,GAAI,GAAQ;AAC1D,EAAA,OAAO,MAAM,EAAI,EAAA;AACb,IAAA,MAAM,CAAI,GAAA,CAAA,GAAI,CAAG,EAAA,CAAA,GAAI,CAAI,GAAA,CAAA,CAAA;AACzB,IAAA,MAAM,IAAI,CAAI,GAAA,CAAA,GAAI,CAAG,CAAY;AACjC,IAAI,CAAA,GAAA,CAAA,EAAG,IAAI,CAAG,EAAA,CAAA,GAAI,GAAU,CAAI,GAAA,CAAO,CAAA;AAAA,GAC3C;AACA,EAAA,OAAO,MAAM,EAAK,GAAA,GAAA,CAAI,GAAG,EAAE,CAAA,GAAI,IAAI,YAAY,CAAA,CAAA;AACnD,CAAA,CAAA;AACA,IAAM,IAAA,GAAO,CAAC,CAAA,EAAG,KAAU,KAAA;AACvB,EAAA,IAAI,CAAI,GAAA,CAAA,CAAA;AACR,EAAA,OAAO,UAAU,EAAI,EAAA;AACjB,IAAK,CAAA,IAAA,CAAA,CAAA;AACL,IAAK,CAAA,IAAA,CAAA,CAAA;AAAA,GACT;AACA,EAAO,OAAA,CAAA,CAAA;AACX,CAAA,CAAA;AACA,IAAM,WAAA,GAAc,CAAC,CAAM,KAAA;AACvB,EAAM,MAAA,EAAA,GAAM,IAAI,CAAK,GAAA,CAAA,CAAA;AACrB,EAAM,MAAA,EAAA,GAAM,KAAK,CAAK,GAAA,CAAA,CAAA;AACtB,EAAA,MAAM,EAAM,GAAA,IAAA,CAAK,EAAI,EAAA,EAAE,IAAI,EAAM,GAAA,CAAA,CAAA;AACjC,EAAA,MAAM,EAAM,GAAA,IAAA,CAAK,EAAI,EAAA,EAAE,IAAI,CAAK,GAAA,CAAA,CAAA;AAChC,EAAA,MAAM,GAAO,GAAA,IAAA,CAAK,EAAI,EAAA,EAAE,IAAI,EAAM,GAAA,CAAA,CAAA;AAClC,EAAA,MAAM,GAAO,GAAA,IAAA,CAAK,GAAK,EAAA,GAAG,IAAI,GAAO,GAAA,CAAA,CAAA;AACrC,EAAA,MAAM,GAAO,GAAA,IAAA,CAAK,GAAK,EAAA,GAAG,IAAI,GAAO,GAAA,CAAA,CAAA;AACrC,EAAA,MAAM,GAAO,GAAA,IAAA,CAAK,GAAK,EAAA,GAAG,IAAI,GAAO,GAAA,CAAA,CAAA;AACrC,EAAA,MAAM,IAAQ,GAAA,IAAA,CAAK,GAAK,EAAA,GAAG,IAAI,GAAO,GAAA,CAAA,CAAA;AACtC,EAAA,MAAM,IAAQ,GAAA,IAAA,CAAK,IAAM,EAAA,GAAG,IAAI,GAAO,GAAA,CAAA,CAAA;AACvC,EAAA,MAAM,IAAQ,GAAA,IAAA,CAAK,IAAM,EAAA,GAAG,IAAI,GAAO,GAAA,CAAA,CAAA;AACvC,EAAA,MAAM,SAAa,GAAA,IAAA,CAAK,IAAM,EAAA,EAAE,IAAI,CAAK,GAAA,CAAA,CAAA;AACzC,EAAO,OAAA,EAAE,WAAW,EAAG,EAAA,CAAA;AAC3B,CAAA,CAAA;AACA,IAAM,GAAM,GAAA,8EAAA,CAAA;AACZ,IAAM,OAAA,GAAU,CAAC,CAAA,EAAG,CAAM,KAAA;AACtB,EAAA,MAAM,EAAK,GAAA,GAAA,CAAI,CAAI,GAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACxB,EAAA,MAAM,EAAK,GAAA,GAAA,CAAI,EAAK,GAAA,EAAA,GAAK,CAAC,CAAA,CAAA;AAC1B,EAAA,MAAM,GAAM,GAAA,WAAA,CAAY,CAAI,GAAA,EAAE,CAAE,CAAA,SAAA,CAAA;AAChC,EAAA,IAAI,CAAI,GAAA,GAAA,CAAI,CAAI,GAAA,EAAA,GAAK,GAAG,CAAA,CAAA;AACxB,EAAA,MAAM,GAAM,GAAA,GAAA,CAAI,CAAI,GAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AACzB,EAAA,MAAM,KAAQ,GAAA,CAAA,CAAA;AACd,EAAM,MAAA,KAAA,GAAQ,GAAI,CAAA,CAAA,GAAI,GAAG,CAAA,CAAA;AACzB,EAAA,MAAM,WAAW,GAAQ,KAAA,CAAA,CAAA;AACzB,EAAA,MAAM,QAAW,GAAA,GAAA,KAAQ,GAAI,CAAA,CAAC,CAAC,CAAA,CAAA;AAC/B,EAAA,MAAM,MAAS,GAAA,GAAA,KAAQ,GAAI,CAAA,CAAC,IAAI,GAAG,CAAA,CAAA;AACnC,EAAI,IAAA,QAAA;AACA,IAAI,CAAA,GAAA,KAAA,CAAA;AACR,EAAA,IAAI,QAAY,IAAA,MAAA;AACZ,IAAI,CAAA,GAAA,KAAA,CAAA;AACR,EAAK,IAAA,CAAA,GAAA,CAAI,CAAC,CAAA,GAAI,EAAQ,MAAA,EAAA;AAClB,IAAI,CAAA,GAAA,GAAA,CAAI,CAAC,CAAC,CAAA,CAAA;AACd,EAAA,OAAO,EAAE,OAAA,EAAS,QAAY,IAAA,QAAA,EAAU,OAAO,CAAE,EAAA,CAAA;AACrD,CAAA,CAAA;AACA,IAAM,UAAU,CAAC,IAAA,KAAS,IAAI,MAAO,CAAA,IAAI,GAAG,CAAC,CAAA,CAAA;AAC7C,IAAI,KAAA,CAAA;AACJ,IAAM,UAAU,CAAI,GAAA,CAAA,KAAM,GAAI,CAAA,WAAA,CAAY,GAAG,CAAC,CAAA,CAAA;AAC9C,IAAM,UAAU,CAAI,GAAA,CAAA;AAAA;AAAA,EACnB,OAAO,UAAU,UAAa,GAAA,KAAA,CAAM,GAAG,CAAC,CAAA,GAAI,IAAI,wBAAwB,CAAA;AAAA,CAAA,CAAA;AACzE,IAAM,SAAA,GAAY,CAAC,MAAW,KAAA;AAC1B,EAAA,MAAM,IAAO,GAAA,MAAA,CAAO,KAAM,CAAA,CAAA,EAAG,EAAE,CAAA,CAAA;AAC/B,EAAA,IAAA,CAAK,CAAC,CAAK,IAAA,GAAA,CAAA;AACX,EAAA,IAAA,CAAK,EAAE,CAAK,IAAA,GAAA,CAAA;AACZ,EAAA,IAAA,CAAK,EAAE,CAAK,IAAA,EAAA,CAAA;AACZ,EAAA,MAAM,MAAS,GAAA,MAAA,CAAO,KAAM,CAAA,EAAA,EAAI,EAAE,CAAA,CAAA;AAClC,EAAM,MAAA,MAAA,GAAS,QAAQ,IAAI,CAAA,CAAA;AAC3B,EAAM,MAAA,KAAA,GAAQ,CAAE,CAAA,GAAA,CAAI,MAAM,CAAA,CAAA;AAC1B,EAAM,MAAA,UAAA,GAAa,MAAM,UAAW,EAAA,CAAA;AACpC,EAAA,OAAO,EAAE,IAAA,EAAM,MAAQ,EAAA,MAAA,EAAQ,OAAO,UAAW,EAAA,CAAA;AACrD,CAAA,CAAA;AAEA,IAAM,yBAAA,GAA4B,CAAC,IAAA,KAAS,OAAQ,CAAA,IAAA,CAAK,MAAM,EAAE,CAAC,CAAE,CAAA,IAAA,CAAK,SAAS,CAAA,CAAA;AAClF,IAAM,oBAAA,GAAuB,CAAC,IAAS,KAAA,SAAA,CAAU,QAAQ,IAAK,CAAA,IAAA,EAAM,EAAE,CAAC,CAAC,CAAA,CAAA;AACxE,IAAM,iBAAA,GAAoB,CAAC,IAAS,KAAA,yBAAA,CAA0B,IAAI,CAAE,CAAA,IAAA,CAAK,CAAK,CAAA,KAAA,CAAA,CAAE,UAAU,CAAA,CAAA;AAE1F,SAAS,UAAA,CAAW,cAAc,GAAK,EAAA;AACnC,EACI,OAAO,QAAQ,GAAI,CAAA,QAAQ,CAAE,CAAA,IAAA,CAAK,IAAI,MAAM,CAAA,CAAA;AAEpD,CAAA;AACA,IAAM,KAAQ,GAAA,CAAC,CAAG,EAAA,MAAA,EAAQ,GAAQ,KAAA;AAC9B,EAAA,MAAM,EAAE,UAAA,EAAYC,EAAG,EAAA,MAAA,EAAQ,GAAM,GAAA,CAAA,CAAA;AACrC,EAAM,MAAA,CAAA,GAAI,QAAQ,MAAM,CAAA,CAAA;AACxB,EAAA,MAAM,CAAI,GAAA,CAAA,CAAE,GAAI,CAAA,CAAC,EAAE,UAAW,EAAA,CAAA;AAC9B,EAAA,MAAM,QAAW,GAAA,OAAA,CAAQ,CAAGA,EAAAA,EAAAA,EAAG,GAAG,CAAA,CAAA;AAClC,EAAM,MAAA,MAAA,GAAS,CAAC,MAAW,KAAA;AACvB,IAAA,MAAM,IAAI,GAAI,CAAA,CAAA,GAAI,QAAQ,MAAM,CAAA,GAAI,GAAG,CAAC,CAAA,CAAA;AACxC,IAAA,OAAO,IAAI,OAAQ,CAAA,CAAA,EAAG,SAAS,CAAC,CAAC,GAAG,EAAE,CAAA,CAAA;AAAA,GAC1C,CAAA;AACA,EAAO,OAAA,EAAE,UAAU,MAAO,EAAA,CAAA;AAC9B,CAAA,CAAA;AACA,IAAM,SAAA,GAAY,OAAO,GAAA,EAAK,OAAY,KAAA;AACtC,EAAM,MAAA,CAAA,GAAI,KAAK,GAAG,CAAA,CAAA;AAClB,EAAM,MAAA,CAAA,GAAI,MAAM,yBAAA,CAA0B,OAAO,CAAA,CAAA;AACjD,EAAA,MAAM,MAAS,GAAA,MAAM,OAAQ,CAAA,CAAA,CAAE,QAAQ,CAAC,CAAA,CAAA;AACxC,EAAA,OAAO,WAAW,IAAM,EAAA,KAAA,CAAM,CAAG,EAAA,MAAA,EAAQ,CAAC,CAAC,CAAA,CAAA;AAC/C,CAAA,CAAA;AAOA,IAAM,GAAA,GAAM,EAAE,MAAA,EAAQ,IAAK,EAAA,CAAA;AAC3B,IAAM,UAAU,CAAC,GAAA,EAAK,GAAK,EAAA,GAAA,EAAK,OAAO,GAAQ,KAAA;AAC3C,EAAA,GAAA,GAAM,KAAK,GAAG,CAAA,CAAA;AACd,EAAM,GAAA,GAAA,IAAA,CAAK,KAAK,EAAE,CAAA,CAAA;AAClB,EAAM,MAAA,EAAE,QAAW,GAAA,IAAA,CAAA;AACnB,EAAA,IAAI,GAAG,CAAG,EAAA,CAAA,EAAG,EAAI,EAAA,QAAA,GAAW,IAAI,UAAW,EAAA,CAAA;AAC3C,EAAI,IAAA;AACA,IAAI,CAAA,GAAA,KAAA,CAAM,OAAQ,CAAA,GAAA,EAAK,MAAM,CAAA,CAAA;AAC7B,IAAA,CAAA,GAAI,MAAM,OAAQ,CAAA,GAAA,CAAI,MAAM,CAAG,EAAA,EAAE,GAAG,MAAM,CAAA,CAAA;AAC1C,IAAA,CAAA,GAAI,MAAO,CAAA,GAAA,CAAI,KAAM,CAAA,EAAA,EAAI,EAAE,CAAC,CAAA,CAAA;AAC5B,IAAK,EAAA,GAAA,CAAA,CAAE,GAAI,CAAA,CAAA,EAAG,KAAK,CAAA,CAAA;AACnB,IAAA,QAAA,GAAW,QAAQ,CAAE,CAAA,UAAA,IAAc,CAAE,CAAA,UAAA,IAAc,GAAG,CAAA,CAAA;AAAA,WAEnD,KAAO,EAAA;AAAA,GAAE;AAChB,EAAM,MAAA,MAAA,GAAS,CAAC,MAAW,KAAA;AACvB,IAAA,IAAI,EAAM,IAAA,IAAA;AACN,MAAO,OAAA,KAAA,CAAA;AACX,IAAI,IAAA,CAAC,MAAU,IAAA,CAAA,CAAE,YAAa,EAAA;AAC1B,MAAO,OAAA,KAAA,CAAA;AACX,IAAM,MAAA,CAAA,GAAI,QAAQ,MAAM,CAAA,CAAA;AACxB,IAAA,MAAM,MAAM,CAAE,CAAA,GAAA,CAAI,EAAE,GAAI,CAAA,CAAA,EAAG,KAAK,CAAC,CAAA,CAAA;AACjC,IAAO,OAAA,GAAA,CAAI,IAAI,EAAG,CAAA,MAAA,EAAQ,CAAE,CAAA,aAAA,GAAgB,GAAI,EAAA,CAAA;AAAA,GACpD,CAAA;AACA,EAAO,OAAA,EAAE,UAAU,MAAO,EAAA,CAAA;AAC9B,CAAA,CAAA;AAEA,IAAM,WAAc,GAAA,OAAO,CAAG,EAAA,CAAA,EAAG,GAAG,IAAO,GAAA,GAAA,KAAQ,UAAW,CAAA,IAAA,EAAM,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,IAAI,CAAC,CAAA,CAAA;AAE1F,IAAM,EAAK,GAAA;AAAA;AAAA,EACV,OAAO,UAAe,KAAA,QAAA,IAAY,QAAY,IAAA,UAAA,GAAa,WAAW,MAAS,GAAA,KAAA,CAAA;AAAA,CAAA,CAAA;AAChF,IAAM,GAAM,GAAA;AAAA,EACR,UAAY,EAAA,GAAA;AAAA,EAAK,UAAY,EAAA,GAAA;AAAA,EAAK,WAAa,EAAA,OAAA;AAAA,EAC/C,GAAA;AAAA,EAAK,MAAA;AAAA,EACL,WAAA,EAAa,CAAC,GAAA,GAAM,EAAO,KAAA;AACvB,IAAA,MAAM,SAAS,EAAG,EAAA,CAAA;AAGlB,IAAI,IAAA,CAAC,MAAU,IAAA,CAAC,MAAO,CAAA,eAAA;AACnB,MAAA,GAAA,CAAI,wCAAwC,CAAA,CAAA;AAChD,IAAA,OAAO,MAAO,CAAA,eAAA,CAAgB,GAAI,CAAA,GAAG,CAAC,CAAA,CAAA;AAAA,GAC1C;AAAA,EACA,WAAA,EAAa,UAAU,QAAa,KAAA;AAChC,IAAA,MAAM,SAAS,EAAG,EAAA,CAAA;AAClB,IAAI,IAAA,CAAC,MAAU,IAAA,CAAC,MAAO,CAAA,MAAA;AACnB,MAAA,GAAA,CAAI,kDAAkD,CAAA,CAAA;AAC1D,IAAM,MAAA,CAAA,GAAI,OAAQ,CAAA,GAAG,QAAQ,CAAA,CAAA;AAC7B,IAAO,OAAA,GAAA,CAAI,MAAM,MAAO,CAAA,MAAA,CAAO,OAAO,SAAW,EAAA,CAAA,CAAE,MAAM,CAAC,CAAA,CAAA;AAAA,GAC9D;AAAA,EACA,UAAY,EAAA,KAAA,CAAA;AAAA;AAChB,CAAA,CAAA;AACA,MAAO,CAAA,gBAAA,CAAiB,GAAK,EAAA,EAAE,UAAY,EAAA;AAAA,EACnC,YAAc,EAAA,KAAA;AAAA,EAAO,GAAM,GAAA;AAAE,IAAO,OAAA,KAAA,CAAA;AAAA,GAAO;AAAA,EAAG,IAAI,CAAG,EAAA;AAAE,IAAA,IAAI,CAAC,KAAA;AACxD,MAAQ,KAAA,GAAA,CAAA,CAAA;AAAA,GAAG;AACnB,CAAA,EAAG,CAAA,CAAA;AACP,IAAM,KAAQ,GAAA;AAAA,EACV,yBAAA;AAAA,EAA2B,oBAAA;AAAA,EAC3B,gBAAkB,EAAA,MAAM,GAAI,CAAA,WAAA,CAAY,EAAE,CAAA;AAAA,EAC1C,UAAW,CAAA,CAAA,GAAI,CAAG,EAAA,CAAA,GAAI,CAAG,EAAA;AAAE,IAAA,CAAA,CAAE,SAAS,EAAE,CAAA,CAAA;AAAM,IAAO,OAAA,CAAA,CAAA;AAAA,GAAG;AAAA;AAC5D,CAAA,CAAA;AACA,IAAM,CAAI,GAAA,CAAA,CAAA;AACV,IAAM,aAAa,MAAM;AACrB,EAAA,MAAM,SAAS,EAAC,CAAA;AAChB,EAAM,MAAA,OAAA,GAAU,MAAM,CAAI,GAAA,CAAA,CAAA;AAC1B,EAAI,IAAA,CAAA,GAAI,GAAG,CAAI,GAAA,CAAA,CAAA;AACf,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,OAAA,EAAS,CAAK,EAAA,EAAA;AAC9B,IAAI,CAAA,GAAA,CAAA,CAAA;AACJ,IAAA,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AACb,IAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,CAAM,KAAA,CAAA,GAAI,IAAI,CAAK,EAAA,EAAA;AACnC,MAAI,CAAA,GAAA,CAAA,CAAE,IAAI,CAAC,CAAA,CAAA;AACX,MAAA,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AAAA,KACjB;AACA,IAAA,CAAA,GAAI,EAAE,MAAO,EAAA,CAAA;AAAA,GACjB;AACA,EAAO,OAAA,MAAA,CAAA;AACX,CAAA,CAAA;AACA,IAAI,KAAQ,GAAA,KAAA,CAAA,CAAA;AACZ,IAAM,IAAA,GAAO,CAAC,CAAM,KAAA;AAEhB,EAAM,MAAA,IAAA,GAAO,KAAU,KAAA,KAAA,GAAQ,UAAW,EAAA,CAAA,CAAA;AAC1C,EAAM,MAAA,GAAA,GAAM,CAAC,GAAA,EAAKC,EAAM,KAAA;AAAE,IAAIC,IAAAA,EAAAA,GAAID,GAAE,MAAO,EAAA,CAAA;AAAG,IAAA,OAAO,MAAMC,EAAID,GAAAA,EAAAA,CAAAA;AAAA,GAAG,CAAA;AAClE,EAAI,IAAA,CAAA,GAAI,GAAG,CAAI,GAAA,CAAA,CAAA;AACf,EAAM,MAAA,OAAA,GAAU,IAAI,GAAM,GAAA,CAAA,CAAA;AAC1B,EAAM,MAAA,KAAA,GAAQ,MAAM,CAAI,GAAA,CAAA,CAAA,CAAA;AACxB,EAAA,MAAM,IAAO,GAAA,MAAA,CAAO,CAAK,IAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AAC9B,EAAA,MAAM,SAAS,CAAK,IAAA,CAAA,CAAA;AACpB,EAAM,MAAA,OAAA,GAAU,OAAO,CAAC,CAAA,CAAA;AACxB,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,OAAA,EAAS,CAAK,EAAA,EAAA;AAC9B,IAAA,MAAM,MAAM,CAAI,GAAA,KAAA,CAAA;AAChB,IAAI,IAAA,KAAA,GAAQ,MAAO,CAAA,CAAA,GAAI,IAAI,CAAA,CAAA;AAC3B,IAAM,CAAA,KAAA,OAAA,CAAA;AACN,IAAA,IAAI,QAAQ,KAAO,EAAA;AACf,MAAS,KAAA,IAAA,MAAA,CAAA;AACT,MAAK,CAAA,IAAA,EAAA,CAAA;AAAA,KACT;AACA,IAAA,MAAM,OAAO,GAAK,EAAA,IAAA,GAAO,MAAM,IAAK,CAAA,GAAA,CAAI,KAAK,CAAI,GAAA,CAAA,CAAA;AACjD,IAAA,MAAM,IAAO,GAAA,CAAA,GAAI,CAAM,KAAA,CAAA,EAAG,OAAO,KAAQ,GAAA,CAAA,CAAA;AACzC,IAAA,IAAI,UAAU,CAAG,EAAA;AACb,MAAA,CAAA,GAAI,EAAE,GAAI,CAAA,GAAA,CAAI,MAAM,IAAK,CAAA,IAAI,CAAC,CAAC,CAAA,CAAA;AAAA,KAE9B,MAAA;AACD,MAAA,CAAA,GAAI,EAAE,GAAI,CAAA,GAAA,CAAI,MAAM,IAAK,CAAA,IAAI,CAAC,CAAC,CAAA,CAAA;AAAA,KACnC;AAAA,GACJ;AACA,EAAO,OAAA,EAAE,GAAG,CAAE,EAAA,CAAA;AAClB,CAAA,CAAA;;;AC7WA,IAAM,qBAAA,uBAA4B,GAAc,CAAA;AAAA,EAC5C,SAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AACJ,CAAC,CAAA,CAAA;AAED,IAAM,oBAAA;AAAA;AAAA,EAEF;AAAA;AAAA;AAAA;AAAA,IAII,EAAA;AAAA;AAAA,IACA,EAAA;AAAA;AAAA,IAEI,CAAA;AAAA;AAAA,IACA,CAAA;AAAA;AAAA,IACI,CAAA;AAAA;AAAA,IAEJ,EAAA;AAAA;AAAA,IACA,CAAA;AAAA;AAAA,IACI,CAAA;AAAA;AAAA,IACA,CAAA;AAAA;AAAA;AAAA,IAEQ,EAAA;AAAA;AAAA,IACA,GAAA;AAAA;AAAA;AAAA,IAEA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKhB,CAAA;AAAA;AAAA,IACA,EAAA;AAAA;AAAA;AAAA,IAGI,CAAA;AAAA;AAAA,IACA,EAAA;AAAA;AAAA,GACR;AAAA,CAAA,CAAA;AAEJ,SAAS,yBAAyB,IAAgC,EAAA;AAC9D,EAAO,OAAA,IAAA,YAAgB,UAAa,GAAA,IAAA,GAAO,IAAI,UAAA,CAAW,WAAY,CAAA,MAAA,CAAO,IAAI,CAAA,GAAI,IAAK,CAAA,MAAA,GAAS,IAAI,CAAA,CAAA;AAC3G,CAAA;AAEA,IAAI,iDAAA,CAAA;AAGJ,IAAI,mBAAA,CAAA;AAEJ,SAAS,sBAAA,CACL,KACA,EAAA,WAAA,EACA,SACa,EAAA;AACb,EAAM,MAAA,OAAA,GAAU,yCAA0C,CAAA,WAAA,EAAa,SAAS,CAAA,CAAA;AAChF,EAAM,MAAA,KAAA,GAAS,iDAAsD,qBAAA,IAAI,OAAQ,EAAA,CAAA;AACjF,EAAM,KAAA,CAAA,GAAA,CAAI,OAAQ,CAAA,UAAA,EAAY,KAAK,CAAA,CAAA;AACnC,EAAM,KAAA,CAAA,GAAA,CAAI,OAAQ,CAAA,SAAA,EAAW,KAAK,CAAA,CAAA;AAClC,EAAO,OAAA,OAAA,CAAA;AACX,CAAA;AAEA,SAAS,yCAAA,CACL,aACA,SACa,EAAA;AACb,EAAI,IAAA,SAAA,CAAU,WAAW,CAAG,EAAA;AACxB,IAAM,MAAA,IAAI,YAAa,CAAA,6CAAA,EAA+C,aAAa,CAAA,CAAA;AAAA,GACvF;AACA,EAAA,IAAI,UAAU,IAAK,CAAA,CAAA,KAAA,KAAS,sBAAsB,GAAI,CAAA,KAAK,CAAC,CAAG,EAAA;AAC3D,IAAM,MAAA,IAAI,YAAa,CAAA,2CAAA,EAA6C,aAAa,CAAA,CAAA;AAAA,GACrF;AACA,EAAA,MAAM,IAAO,GAAA;AAAA,IACT,CAAC,MAAO,CAAA,WAAW,GAAG,WAAA;AAAA,IACtB,WAAW,MAAO,CAAA,MAAA,CAAO,EAAE,IAAA,EAAM,WAAW,CAAA;AAAA,GAChD,CAAA;AACA,EAAA,MAAM,UAAa,GAAA;AAAA,IACf,GAAG,IAAA;AAAA,IACH,WAAA;AAAA,IACA,IAAM,EAAA,SAAA;AAAA,IACN,MAAA,EAAQ,OAAO,MAAO,CAAA,SAAA,CAAU,OAAO,CAAS,KAAA,KAAA,KAAA,KAAU,MAAM,CAAC,CAAA;AAAA,GACrE,CAAA;AACA,EAAA,MAAM,SAAY,GAAA;AAAA,IACd,GAAG,IAAA;AAAA,IACH,WAAa,EAAA,IAAA;AAAA,IACb,IAAM,EAAA,QAAA;AAAA,IACN,MAAA,EAAQ,OAAO,MAAO,CAAA,SAAA,CAAU,OAAO,CAAS,KAAA,KAAA,KAAA,KAAU,QAAQ,CAAC,CAAA;AAAA,GACvE,CAAA;AACA,EAAA,OAAO,OAAO,MAAO,CAAA;AAAA,IACjB,UAAA,EAAY,MAAO,CAAA,MAAA,CAAO,UAAU,CAAA;AAAA,IACpC,SAAA,EAAW,MAAO,CAAA,MAAA,CAAO,SAAS,CAAA;AAAA,GACrC,CAAA,CAAA;AACL,CAAA;AAEA,SAAS,8CAA8C,GAA4B,EAAA;AAC/E,EAAM,MAAA,cAAA,GAAiB,iDAAmD,EAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AACjF,EAAA,IAAI,mBAAmB,KAAW,CAAA,EAAA;AAC9B,IAAM,MAAA,IAAI,MAAM,qEAAqE,CAAA,CAAA;AAAA,GACzF;AACA,EAAO,OAAA,cAAA,CAAA;AACX,CAAA;AAEA,eAAe,kBAAkB,GAAqC,EAAA;AAElE,EAAM,MAAA,cAAA,GAAkB,mBAAwB,qBAAA,IAAI,OAAQ,EAAA,CAAA;AAC5D,EAAM,MAAA,eAAA,GAAkB,cAAe,CAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AAC9C,EAAA,IAAI,iBAAwB,OAAA,eAAA,CAAA;AAG5B,EAAA,MAAM,cAAiB,GAAA,MAAM,iBAAkB,CAAA,6CAAA,CAA8C,GAAG,CAAC,CAAA,CAAA;AAGjG,EAAe,cAAA,CAAA,GAAA,CAAI,KAAK,cAAc,CAAA,CAAA;AACtC,EAAO,OAAA,cAAA,CAAA;AACX,CAAA;AAIA,eAAsB,iBAAA,CAAkB,QAAmB,GAAmD,EAAA;AAC1G,EAAI,IAAA,GAAA,CAAI,gBAAgB,KAAO,EAAA;AAC3B,IAAM,MAAA,IAAI,YAAa,CAAA,wBAAA,EAA0B,wBAAwB,CAAA,CAAA;AAAA,GAC7E;AACA,EAAA,QAAQ,MAAQ;AAAA,IACZ,KAAK,KAAO,EAAA;AACR,MAAI,IAAA,GAAA,CAAI,SAAS,QAAU,EAAA;AACvB,QAAA,MAAM,IAAI,YAAa,CAAA,CAAA,+BAAA,EAAkC,GAAI,CAAA,IAAI,QAAQ,oBAAoB,CAAA,CAAA;AAAA,OACjG;AACA,MAAM,MAAA,cAAA,GAAiB,MAAM,iBAAA,CAAkB,GAAG,CAAA,CAAA;AAClD,MAAO,OAAA,cAAA,CAAA;AAAA,KACX;AAAA,IACA,KAAK,OAAS,EAAA;AACV,MAAI,IAAA,GAAA,CAAI,SAAS,SAAW,EAAA;AACxB,QAAA,MAAM,IAAI,YAAa,CAAA,CAAA,iCAAA,EAAoC,GAAI,CAAA,IAAI,QAAQ,oBAAoB,CAAA,CAAA;AAAA,OACnG;AACA,MAAM,MAAA,cAAA,GAAiB,8CAA8C,GAAG,CAAA,CAAA;AACxE,MAAA,OAAO,IAAI,UAAW,CAAA,CAAC,GAAG,oBAAsB,EAAA,GAAG,cAAc,CAAC,CAAA,CAAA;AAAA,KACtE;AAAA,IACA;AACI,MAAA,MAAM,IAAI,KAAA,CAAM,CAA6C,0CAAA,EAAA,MAAM,CAA2B,yBAAA,CAAA,CAAA,CAAA;AAAA,GACtG;AACJ,CAAA;AAQO,SAAS,mBAAA,CAAoB,aAAsB,SAA+C,EAAA;AACrG,EAAM,MAAA,eAAA,GAAkB,MAAM,gBAAiB,EAAA,CAAA;AAC/C,EAAA,MAAM,OAAU,GAAA,sBAAA,CAAuB,eAAiB,EAAA,WAAA,EAAa,SAAS,CAAA,CAAA;AAC9E,EAAO,OAAA,OAAA,CAAA;AACX,CAAA;AAEO,SAAS,gBAAgB,GAAyB,EAAA;AACrD,EAAO,OAAA,CAAC,CAAC,iDAAA,EAAmD,GAAI,CAAA,GAAG,KAAK,CAAC,CAAC,mBAAqB,EAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AAC1G,CAAA;AAEA,eAAsB,YAAA,CAAa,KAAgB,IAA0C,EAAA;AACzF,EAAI,IAAA,GAAA,CAAI,SAAS,SAAa,IAAA,CAAC,IAAI,MAAO,CAAA,QAAA,CAAS,MAAM,CAAG,EAAA;AACxD,IAAM,MAAA,IAAI,YAAa,CAAA,gCAAA,EAAkC,oBAAoB,CAAA,CAAA;AAAA,GACjF;AACA,EAAM,MAAA,eAAA,GAAkB,8CAA8C,GAAG,CAAA,CAAA;AACzE,EAAM,MAAA,OAAA,GAAU,yBAAyB,IAAI,CAAA,CAAA;AAC7C,EAAA,MAAM,SAAY,GAAA,MAAM,SAAU,CAAA,OAAA,EAAS,eAAe,CAAA,CAAA;AAC1D,EAAO,OAAA,SAAA,CAAA;AACX,CAAA;AAEA,eAAsB,cAAA,CAAe,GAAgB,EAAA,SAAA,EAAyB,IAAsC,EAAA;AAChH,EAAI,IAAA,GAAA,CAAI,SAAS,QAAY,IAAA,CAAC,IAAI,MAAO,CAAA,QAAA,CAAS,QAAQ,CAAG,EAAA;AACzD,IAAM,MAAA,IAAI,YAAa,CAAA,kCAAA,EAAoC,oBAAoB,CAAA,CAAA;AAAA,GACnF;AACA,EAAM,MAAA,cAAA,GAAiB,MAAM,iBAAA,CAAkB,GAAG,CAAA,CAAA;AAClD,EAAI,IAAA;AACA,IAAO,OAAA,MAAM,YAAY,wBAAyB,CAAA,SAAS,GAAG,wBAAyB,CAAA,IAAI,GAAG,cAAc,CAAA,CAAA;AAAA,GACxG,CAAA,MAAA;AACJ,IAAO,OAAA,KAAA,CAAA;AAAA,GACX;AACJ,CAAA;AAEO,SAAS,iBACZ,CAAA,MAAA,EACA,OACA,EAAA,WAAA,EACA,SACS,EAAA;AACT,EAAM,MAAA,KAAA,GAAQ,yBAAyB,OAAO,CAAA,CAAA;AAE9C,EAAA,IAAI,WAAW,KAAO,EAAA;AAClB,IAAI,IAAA,SAAA,CAAU,KAAK,CAAS,KAAA,KAAA,KAAA,KAAU,UAAU,qBAAsB,CAAA,GAAA,CAAI,KAAK,CAAC,CAAG,EAAA;AAC/E,MAAM,MAAA,IAAI,YAAa,CAAA,yCAAA,EAA2C,aAAa,CAAA,CAAA;AAAA,KACnF;AACA,IAAI,IAAA,KAAA,CAAM,WAAW,EAAI,EAAA;AACrB,MAAM,MAAA,IAAI,YAAa,CAAA,2CAAA,EAA6C,WAAW,CAAA,CAAA;AAAA,KACnF;AACA,IAAA,MAAM,SAAY,GAAA;AAAA,MACd,CAAC,MAAO,CAAA,WAAW,GAAG,WAAA;AAAA,MACtB,WAAW,MAAO,CAAA,MAAA,CAAO,EAAE,IAAA,EAAM,WAAW,CAAA;AAAA,MAC5C,WAAA;AAAA,MACA,IAAM,EAAA,QAAA;AAAA,MACN,MAAA,EAAQ,OAAO,MAAO,CAAA,SAAA,CAAU,OAAO,CAAS,KAAA,KAAA,KAAA,KAAU,QAAQ,CAAC,CAAA;AAAA,KACvE,CAAA;AAEA,IAAM,MAAA,KAAA,GAAS,mBAAwB,qBAAA,IAAI,OAAQ,EAAA,CAAA;AACnD,IAAM,KAAA,CAAA,GAAA,CAAI,WAAW,KAAK,CAAA,CAAA;AAE1B,IAAO,OAAA,SAAA,CAAA;AAAA,GACX;AAEA,EAAA,IAAI,WAAW,OAAS,EAAA;AACpB,IAAI,IAAA,SAAA,CAAU,KAAK,CAAS,KAAA,KAAA,KAAA,KAAU,YAAY,qBAAsB,CAAA,GAAA,CAAI,KAAK,CAAC,CAAG,EAAA;AACjF,MAAM,MAAA,IAAI,YAAa,CAAA,yCAAA,EAA2C,aAAa,CAAA,CAAA;AAAA,KACnF;AAEA,IAAI,IAAA,KAAA,CAAM,WAAW,EAAI,EAAA;AACrB,MAAM,MAAA,IAAI,YAAa,CAAA,iBAAA,EAAmB,WAAW,CAAA,CAAA;AAAA,KACzD;AAEA,IAAA,MAAM,MAAS,GAAA,KAAA,CAAM,KAAM,CAAA,CAAA,EAAG,EAAE,CAAA,CAAA;AAChC,IAAI,IAAA,CAAC,MAAO,CAAA,KAAA,CAAM,CAAC,GAAA,EAAK,MAAM,GAAQ,KAAA,oBAAA,CAAqB,CAAC,CAAC,CAAG,EAAA;AAC5D,MAAM,MAAA,IAAI,YAAa,CAAA,iBAAA,EAAmB,WAAW,CAAA,CAAA;AAAA,KACzD;AACA,IAAM,MAAA,cAAA,GAAiB,KAAM,CAAA,KAAA,CAAM,EAAE,CAAA,CAAA;AAErC,IAAA,MAAM,UAAa,GAAA;AAAA,MACf,CAAC,MAAO,CAAA,WAAW,GAAG,WAAA;AAAA,MACtB,WAAW,MAAO,CAAA,MAAA,CAAO,EAAE,IAAA,EAAM,WAAW,CAAA;AAAA,MAC5C,WAAA;AAAA,MACA,IAAM,EAAA,SAAA;AAAA,MACN,MAAA,EAAQ,OAAO,MAAO,CAAA,SAAA,CAAU,OAAO,CAAS,KAAA,KAAA,KAAA,KAAU,MAAM,CAAC,CAAA;AAAA,KACrE,CAAA;AAEA,IAAM,MAAA,KAAA,GAAS,iDAAsD,qBAAA,IAAI,OAAQ,EAAA,CAAA;AACjF,IAAM,KAAA,CAAA,GAAA,CAAI,YAAY,cAAc,CAAA,CAAA;AAEpC,IAAO,OAAA,UAAA,CAAA;AAAA,GACX;AAEA,EAAA,MAAM,IAAI,KAAA,CAAM,CAAkC,+BAAA,EAAA,MAAM,CAA2B,yBAAA,CAAA,CAAA,CAAA;AACvF,CAAA;;;ACvPO,SAAS,OAAU,GAAA;AAStB,EAAA,IAAoB,WAAW,eAAiB,EAAA;AAI5C,IAAM,MAAA,oBAAA,GAAwB,UAAW,CAAA,MAAA,KAAW,EAAC,CAAA;AACrD,IAAM,MAAA,oBAAA,GAAyB,oBAA2D,CAAA,MAAA,KACtF,EAAC,CAAA;AAKL,IAAA,MAAM,oBAAoB,oBAAqB,CAAA,SAAA,CAAA;AAC/C,IAAqB,oBAAA,CAAA,SAAA,GAAa,UAAU,IAAgD,KAAA;AACxF,MAAM,MAAA,CAAC,CAAG,EAAA,GAAG,CAAI,GAAA,IAAA,CAAA;AACjB,MAAI,IAAA,eAAA,CAAgB,GAAG,CAAG,EAAA;AACtB,QAAO,OAAA,MAAM,iBAAkB,CAAA,GAAG,IAAI,CAAA,CAAA;AAAA,iBAC/B,iBAAmB,EAAA;AAC1B,QAAA,OAAO,MAAM,iBAAA,CAAkB,KAAM,CAAA,oBAAA,EAAsB,IAAI,CAAA,CAAA;AAAA,OAC5D,MAAA;AACH,QAAM,MAAA,IAAI,UAAU,2DAA2D,CAAA,CAAA;AAAA,OACnF;AAAA,KACJ,CAAA;AAKA,IAAA,MAAM,sBAAsB,oBAAqB,CAAA,WAAA,CAAA;AACjD,IAAI,IAAA,kCAAA,CAAA;AACJ,IAAqB,oBAAA,CAAA,WAAA,GAAe,UAAU,IAAkD,KAAA;AAC5F,MAAM,MAAA,CAAC,SAAS,CAAI,GAAA,IAAA,CAAA;AACpB,MAAA,IAAI,cAAc,SAAW,EAAA;AACzB,QAAA,IAAI,mBAAqB,EAAA;AACrB,UAAA,OAAO,MAAM,mBAAA,CAAoB,KAAM,CAAA,oBAAA,EAAsB,IAAI,CAAA,CAAA;AAAA,SAC9D,MAAA;AACH,UAAM,MAAA,IAAI,UAAU,6DAA6D,CAAA,CAAA;AAAA,SACrF;AAAA,OACJ;AACA,MAAI,IAAA,8BAAA,CAAA;AACJ,MAAA,IAAI,uCAAuC,KAAW,CAAA,EAAA;AAClD,QAAqC,kCAAA,GAAA,IAAI,QAAQ,CAAW,OAAA,KAAA;AACxD,UAAA,IAAI,CAAC,mBAAqB,EAAA;AACtB,YAAA,OAAA,CAAS,qCAAqC,KAAM,CAAA,CAAA;AACpD,YAAA,OAAA;AAAA,WACJ;AACA,UAAA,mBAAA,CACK,KAAM,CAAA,oBAAA,EAAsB,IAAI,CAAA,CAChC,KAAK,CAAW,OAAA,KAAA;AACb,YAAA,IAAI,yBAAyB,YAAc,EAAA;AACvC,cAAQ,OAAA,CAAA,IAAA;AAAA,gBACJ,yPAAA;AAAA,eAKJ,CAAA;AAAA,aACJ;AACA,YAAI,IAAA,oBAAA,CAAqB,gBAAgB,mBAAqB,EAAA;AAC1D,cAAA,oBAAA,CAAqB,WAAc,GAAA,mBAAA,CAAA;AAAA,aACvC;AACA,YAAiC,8BAAA,GAAA,OAAA,CAAA;AACjC,YAAA,OAAA,CAAS,qCAAqC,IAAK,CAAA,CAAA;AAAA,WACtD,CACA,CAAA,KAAA,CAAM,MAAM;AACT,YAAA,OAAA,CAAS,qCAAqC,KAAM,CAAA,CAAA;AAAA,WACvD,CAAA,CAAA;AAAA,SACR,CAAA,CAAA;AAAA,OACL;AACA,MAAA,IACI,OAAO,kCAAA,KAAuC,SACxC,GAAA,kCAAA,GACA,MAAM,kCACd,EAAA;AACE,QAAA,IAAI,8BAAgC,EAAA;AAChC,UAAO,OAAA,8BAAA,CAAA;AAAA,mBACA,mBAAqB,EAAA;AAC5B,UAAA,OAAO,MAAM,mBAAA,CAAoB,KAAM,CAAA,oBAAA,EAAsB,IAAI,CAAA,CAAA;AAAA,SAC9D,MAAA;AACH,UAAM,MAAA,IAAI,UAAU,6DAA6D,CAAA,CAAA;AAAA,SACrF;AAAA,OACG,MAAA;AACH,QAAA,MAAM,CAAC,CAAA,EAAG,WAAa,EAAA,SAAS,CAAI,GAAA,IAAA,CAAA;AACpC,QAAO,OAAA,mBAAA,CAAoB,aAAa,SAAS,CAAA,CAAA;AAAA,OACrD;AAAA,KACJ,CAAA;AAKA,IAAA,MAAM,eAAe,oBAAqB,CAAA,IAAA,CAAA;AAC1C,IAAqB,oBAAA,CAAA,IAAA,GAAQ,UAAU,IAA2C,KAAA;AAC9E,MAAM,MAAA,CAAC,CAAG,EAAA,GAAG,CAAI,GAAA,IAAA,CAAA;AACjB,MAAI,IAAA,eAAA,CAAgB,GAAG,CAAG,EAAA;AACtB,QAAA,MAAM,CAACE,EAAAA,EAAG,GAAG,IAAI,CAAI,GAAA,IAAA,CAAA;AACrB,QAAO,OAAA,MAAM,YAAa,CAAA,GAAG,IAAI,CAAA,CAAA;AAAA,iBAC1B,YAAc,EAAA;AACrB,QAAA,OAAO,MAAM,YAAA,CAAa,KAAM,CAAA,oBAAA,EAAsB,IAAI,CAAA,CAAA;AAAA,OACvD,MAAA;AACH,QAAM,MAAA,IAAI,UAAU,sDAAsD,CAAA,CAAA;AAAA,OAC9E;AAAA,KACJ,CAAA;AAKA,IAAA,MAAM,iBAAiB,oBAAqB,CAAA,MAAA,CAAA;AAC5C,IAAqB,oBAAA,CAAA,MAAA,GAAU,UAAU,IAA6C,KAAA;AAClF,MAAM,MAAA,CAAC,CAAG,EAAA,GAAG,CAAI,GAAA,IAAA,CAAA;AACjB,MAAI,IAAA,eAAA,CAAgB,GAAG,CAAG,EAAA;AACtB,QAAA,MAAM,CAACA,EAAAA,EAAG,GAAG,IAAI,CAAI,GAAA,IAAA,CAAA;AACrB,QAAO,OAAA,MAAM,cAAe,CAAA,GAAG,IAAI,CAAA,CAAA;AAAA,iBAC5B,cAAgB,EAAA;AACvB,QAAA,OAAO,MAAM,cAAA,CAAe,KAAM,CAAA,oBAAA,EAAsB,IAAI,CAAA,CAAA;AAAA,OACzD,MAAA;AACH,QAAM,MAAA,IAAI,UAAU,wDAAwD,CAAA,CAAA;AAAA,OAChF;AAAA,KACJ,CAAA;AAKA,IAAA,MAAM,oBAAoB,oBAAqB,CAAA,SAAA,CAAA;AAC/C,IAAI,IAAA,gCAAA,CAAA;AACJ,IAAqB,oBAAA,CAAA,SAAA,GAAa,UAAU,IAAgD,KAAA;AACxF,MAAA,MAAM,CAAC,MAAA,EAAQ,OAAS,EAAA,SAAS,CAAI,GAAA,IAAA,CAAA;AACrC,MAAA,IAAI,cAAc,SAAW,EAAA;AACzB,QAAA,IAAI,iBAAmB,EAAA;AACnB,UAAA,OAAO,MAAM,iBAAA,CAAkB,KAAM,CAAA,oBAAA,EAAsB,IAAI,CAAA,CAAA;AAAA,SAC5D,MAAA;AACH,UAAM,MAAA,IAAI,UAAU,2DAA2D,CAAA,CAAA;AAAA,SACnF;AAAA,OACJ;AACA,MAAI,IAAA,yBAAA,CAAA;AACJ,MAAA,IAAI,qCAAqC,KAAW,CAAA,EAAA;AAChD,QAAmC,gCAAA,GAAA,IAAI,QAAQ,CAAW,OAAA,KAAA;AACtD,UAAA,IAAI,CAAC,iBAAmB,EAAA;AACpB,YAAA,OAAA,CAAS,mCAAmC,KAAM,CAAA,CAAA;AAClD,YAAA,OAAA;AAAA,WACJ;AACA,UAAA,iBAAA,CACK,KAAM,CAAA,oBAAA,EAAsB,IAAI,CAAA,CAChC,KAAK,CAAO,GAAA,KAAA;AACT,YAAA,IAAI,yBAAyB,YAAc,EAAA;AACvC,cAAQ,OAAA,CAAA,IAAA;AAAA,gBACJ,uPAAA;AAAA,eAKJ,CAAA;AAAA,aACJ;AACA,YAAI,IAAA,oBAAA,CAAqB,cAAc,iBAAmB,EAAA;AACtD,cAAA,oBAAA,CAAqB,SAAY,GAAA,iBAAA,CAAA;AAAA,aACrC;AACA,YAA4B,yBAAA,GAAA,GAAA,CAAA;AAC5B,YAAA,OAAA,CAAS,mCAAmC,IAAK,CAAA,CAAA;AAAA,WACpD,CACA,CAAA,KAAA,CAAM,MAAM;AACT,YAAA,OAAA,CAAS,mCAAmC,KAAM,CAAA,CAAA;AAAA,WACrD,CAAA,CAAA;AAAA,SACR,CAAA,CAAA;AAAA,OACL;AACA,MAAA,IACI,OAAO,iBAAA,KAAsB,SACvB,GAAA,gCAAA,GACA,MAAM,gCACd,EAAA;AACE,QAAA,IAAI,yBAA2B,EAAA;AAC3B,UAAO,OAAA,yBAAA,CAAA;AAAA,mBACA,iBAAmB,EAAA;AAC1B,UAAA,OAAO,MAAM,iBAAA,CAAkB,KAAM,CAAA,oBAAA,EAAsB,IAAI,CAAA,CAAA;AAAA,SAC5D,MAAA;AACH,UAAM,MAAA,IAAI,UAAU,2DAA2D,CAAA,CAAA;AAAA,SACnF;AAAA,OACG,MAAA;AACH,QAAA,MAAM,CAAC,OAAS,EAAA,QAAA,EAAU,UAAY,EAAA,WAAA,EAAa,SAAS,CAAI,GAAA,IAAA,CAAA;AAChE,QAAA,OAAO,iBAAkB,CAAA,MAAA,EAAQ,OAAS,EAAA,WAAA,EAAa,SAAS,CAAA,CAAA;AAAA,OACpE;AAAA,KACJ,CAAA;AAAA,GACJ;AACJ,CAAA;;;ACtMA,IAAO,WAAQ,GAAA,QAAA","file":"index.browser.cjs","sourcesContent":["/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nconst P = 2n ** 255n - 19n; // ed25519 is twisted edwards curve\nconst N = 2n ** 252n + 27742317777372353535851937790883648493n; // curve's (group) order\nconst Gx = 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an; // base point x\nconst Gy = 0x6666666666666666666666666666666666666666666666666666666666666658n; // base point y\nconst CURVE = {\n a: -1n, // where a=-1, d = -(121665/121666) == -(121665 * inv(121666)) mod P\n d: 37095705934669439343138083508754565189542113879843219016388785533085940283555n,\n p: P, n: N, h: 8, Gx, Gy // field prime, curve (group) order, cofactor\n};\nconst err = (m = '') => { throw new Error(m); }; // error helper, messes-up stack trace\nconst str = (s) => typeof s === 'string'; // is string\nconst isu8 = (a) => (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\nconst au8 = (a, l) => // is Uint8Array (of specific length)\n !isu8(a) || (typeof l === 'number' && l > 0 && a.length !== l) ?\n err('Uint8Array of valid length expected') : a;\nconst u8n = (data) => new Uint8Array(data); // creates Uint8Array\nconst toU8 = (a, len) => au8(str(a) ? h2b(a) : u8n(au8(a)), len); // norm(hex/u8a) to u8a\nconst mod = (a, b = P) => { let r = a % b; return r >= 0n ? r : b + r; }; // mod division\nconst isPoint = (p) => (p instanceof Point ? p : err('Point expected')); // is xyzt point\nclass Point {\n constructor(ex, ey, ez, et) {\n this.ex = ex;\n this.ey = ey;\n this.ez = ez;\n this.et = et;\n }\n static fromAffine(p) { return new Point(p.x, p.y, 1n, mod(p.x * p.y)); }\n static fromHex(hex, zip215 = false) {\n const { d } = CURVE;\n hex = toU8(hex, 32);\n const normed = hex.slice(); // copy the array to not mess it up\n const lastByte = hex[31];\n normed[31] = lastByte & ~0x80; // adjust first LE byte = last BE byte\n const y = b2n_LE(normed); // decode as little-endian, convert to num\n if (zip215 && !(0n <= y && y < 2n ** 256n))\n err('bad y coord 1'); // zip215=true [1..2^256-1]\n if (!zip215 && !(0n <= y && y < P))\n err('bad y coord 2'); // zip215=false [1..P-1]\n const y2 = mod(y * y); // y²\n const u = mod(y2 - 1n); // u=y²-1\n const v = mod(d * y2 + 1n); // v=dy²+1\n let { isValid, value: x } = uvRatio(u, v); // (uv³)(uv⁷)^(p-5)/8; square root\n if (!isValid)\n err('bad y coordinate 3'); // not square root: bad point\n const isXOdd = (x & 1n) === 1n; // adjust sign of x coordinate\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === 0n && isLastByteOdd)\n err('bad y coord 3'); // x=0 and x_0 = 1\n if (isLastByteOdd !== isXOdd)\n x = mod(-x);\n return new Point(x, y, 1n, mod(x * y)); // Z=1, T=xy\n }\n get x() { return this.toAffine().x; } // .x, .y will call expensive toAffine.\n get y() { return this.toAffine().y; } // Should be used with care.\n equals(other) {\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const { ex: X2, ey: Y2, ez: Z2 } = isPoint(other); // isPoint() checks class equality\n const X1Z2 = mod(X1 * Z2), X2Z1 = mod(X2 * Z1);\n const Y1Z2 = mod(Y1 * Z2), Y2Z1 = mod(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() { return this.equals(I); }\n negate() {\n return new Point(mod(-this.ex), this.ey, this.ez, mod(-this.et));\n }\n double() {\n const { ex: X1, ey: Y1, ez: Z1 } = this; // Cost: 4M + 4S + 1*a + 6add + 1*2\n const { a } = CURVE; // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n const A = mod(X1 * X1);\n const B = mod(Y1 * Y1);\n const C = mod(2n * mod(Z1 * Z1));\n const D = mod(a * A);\n const x1y1 = X1 + Y1;\n const E = mod(mod(x1y1 * x1y1) - A - B);\n const G = D + B;\n const F = G - C;\n const H = D - B;\n const X3 = mod(E * F);\n const Y3 = mod(G * H);\n const T3 = mod(E * H);\n const Z3 = mod(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n add(other) {\n const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this; // Cost: 8M + 1*k + 8add + 1*2.\n const { ex: X2, ey: Y2, ez: Z2, et: T2 } = isPoint(other); // doesn't check if other on-curve\n const { a, d } = CURVE; // http://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-3\n const A = mod(X1 * X2);\n const B = mod(Y1 * Y2);\n const C = mod(T1 * d * T2);\n const D = mod(Z1 * Z2);\n const E = mod((X1 + Y1) * (X2 + Y2) - A - B);\n const F = mod(D - C);\n const G = mod(D + C);\n const H = mod(B - a * A);\n const X3 = mod(E * F);\n const Y3 = mod(G * H);\n const T3 = mod(E * H);\n const Z3 = mod(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n mul(n, safe = true) {\n if (n === 0n)\n return safe === true ? err('cannot multiply by 0') : I;\n if (!(typeof n === 'bigint' && 0n < n && n < N))\n err('invalid scalar, must be < L');\n if (!safe && this.is0() || n === 1n)\n return this; // safe=true bans 0. safe=false allows 0.\n if (this.equals(G))\n return wNAF(n).p; // use wNAF precomputes for base points\n let p = I, f = G; // init result point & fake point\n for (let d = this; n > 0n; d = d.double(), n >>= 1n) { // double-and-add ladder\n if (n & 1n)\n p = p.add(d); // if bit is present, add to point\n else if (safe)\n f = f.add(d); // if not, add to fake for timing safety\n }\n return p;\n }\n multiply(scalar) { return this.mul(scalar); } // Aliases for compatibilty\n clearCofactor() { return this.mul(BigInt(CURVE.h), false); } // multiply by cofactor\n isSmallOrder() { return this.clearCofactor().is0(); } // check if P is small order\n isTorsionFree() {\n let p = this.mul(N / 2n, false).double(); // ensures the point is not \"bad\".\n if (N % 2n)\n p = p.add(this); // P^(N+1) // P*N == (P*(N/2))*2+P\n return p.is0();\n }\n toAffine() {\n const { ex: x, ey: y, ez: z } = this; // (x, y, z, t) ∋ (x=x/z, y=y/z, t=xy)\n if (this.equals(I))\n return { x: 0n, y: 1n }; // fast-path for zero point\n const iz = invert(z); // z^-1: invert z\n if (mod(z * iz) !== 1n)\n err('invalid inverse'); // (z * z^-1) must be 1, otherwise bad math\n return { x: mod(x * iz), y: mod(y * iz) }; // x = x*z^-1; y = y*z^-1\n }\n toRawBytes() {\n const { x, y } = this.toAffine(); // convert to affine 2d point\n const b = n2b_32LE(y); // encode number to 32 bytes\n b[31] |= x & 1n ? 0x80 : 0; // store sign in first LE byte\n return b;\n }\n toHex() { return b2h(this.toRawBytes()); } // encode to hex string\n}\nPoint.BASE = new Point(Gx, Gy, 1n, mod(Gx * Gy)); // Generator / Base point\nPoint.ZERO = new Point(0n, 1n, 1n, 0n); // Identity / Zero point\nconst { BASE: G, ZERO: I } = Point; // Generator, identity points\nconst padh = (num, pad) => num.toString(16).padStart(pad, '0');\nconst b2h = (b) => Array.from(b).map(e => padh(e, 2)).join(''); // bytes to hex\nconst h2b = (hex) => {\n const l = hex.length; // error if not string,\n if (!str(hex) || l % 2)\n err('hex invalid 1'); // or has odd length like 3, 5.\n const arr = u8n(l / 2); // create result array\n for (let i = 0; i < arr.length; i++) {\n const j = i * 2;\n const h = hex.slice(j, j + 2); // hexByte. slice is faster than substr\n const b = Number.parseInt(h, 16); // byte, created from string part\n if (Number.isNaN(b) || b < 0)\n err('hex invalid 2'); // byte must be valid 0 <= byte < 256\n arr[i] = b;\n }\n return arr;\n};\nconst n2b_32LE = (num) => h2b(padh(num, 32 * 2)).reverse(); // number to bytes LE\nconst b2n_LE = (b) => BigInt('0x' + b2h(u8n(au8(b)).reverse())); // bytes LE to num\nconst concatB = (...arrs) => {\n const r = u8n(arrs.reduce((sum, a) => sum + au8(a).length, 0)); // create u8a of summed length\n let pad = 0; // walk through each array,\n arrs.forEach(a => { r.set(a, pad); pad += a.length; }); // ensure they have proper type\n return r;\n};\nconst invert = (num, md = P) => {\n if (num === 0n || md <= 0n)\n err('no inverse n=' + num + ' mod=' + md); // no neg exponent for now\n let a = mod(num, md), b = md, x = 0n, y = 1n, u = 1n, v = 0n;\n while (a !== 0n) { // uses euclidean gcd algorithm\n const q = b / a, r = b % a; // not constant-time\n const m = x - u * q, n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n return b === 1n ? mod(x, md) : err('no inverse'); // b is gcd at this point\n};\nconst pow2 = (x, power) => {\n let r = x;\n while (power-- > 0n) {\n r *= r;\n r %= P;\n }\n return r;\n};\nconst pow_2_252_3 = (x) => {\n const x2 = (x * x) % P; // x^2, bits 1\n const b2 = (x2 * x) % P; // x^3, bits 11\n const b4 = (pow2(b2, 2n) * b2) % P; // x^(2^4-1), bits 1111\n const b5 = (pow2(b4, 1n) * x) % P; // x^(2^5-1), bits 11111\n const b10 = (pow2(b5, 5n) * b5) % P; // x^(2^10)\n const b20 = (pow2(b10, 10n) * b10) % P; // x^(2^20)\n const b40 = (pow2(b20, 20n) * b20) % P; // x^(2^40)\n const b80 = (pow2(b40, 40n) * b40) % P; // x^(2^80)\n const b160 = (pow2(b80, 80n) * b80) % P; // x^(2^160)\n const b240 = (pow2(b160, 80n) * b80) % P; // x^(2^240)\n const b250 = (pow2(b240, 10n) * b10) % P; // x^(2^250)\n const pow_p_5_8 = (pow2(b250, 2n) * x) % P; // < To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n};\nconst RM1 = 19681161376707505956807079304988542015446066515923890162744021073123829784752n; // √-1\nconst uvRatio = (u, v) => {\n const v3 = mod(v * v * v); // v³\n const v7 = mod(v3 * v3 * v); // v⁷\n const pow = pow_2_252_3(u * v7).pow_p_5_8; // (uv⁷)^(p-5)/8\n let x = mod(u * v3 * pow); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = mod(v * x * x); // vx²\n const root1 = x; // First root candidate\n const root2 = mod(x * RM1); // Second root candidate; RM1 is √-1\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * RM1); // There is no valid root, vx² = -u√-1\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if ((mod(x) & 1n) === 1n)\n x = mod(-x); // edIsNegative\n return { isValid: useRoot1 || useRoot2, value: x };\n};\nconst modL_LE = (hash) => mod(b2n_LE(hash), N); // modulo L; but little-endian\nlet _shaS;\nconst sha512a = (...m) => etc.sha512Async(...m); // Async SHA512\nconst sha512s = (...m) => // Sync SHA512, not set by default\n typeof _shaS === 'function' ? _shaS(...m) : err('etc.sha512Sync not set');\nconst hash2extK = (hashed) => {\n const head = hashed.slice(0, 32); // slice creates a copy, unlike subarray\n head[0] &= 248; // Clamp bits: 0b1111_1000,\n head[31] &= 127; // 0b0111_1111,\n head[31] |= 64; // 0b0100_0000\n const prefix = hashed.slice(32, 64); // private key \"prefix\"\n const scalar = modL_LE(head); // modular division over curve order\n const point = G.mul(scalar); // public key point\n const pointBytes = point.toRawBytes(); // point serialized to Uint8Array\n return { head, prefix, scalar, point, pointBytes };\n};\n// RFC8032 5.1.5; getPublicKey async, sync. Hash priv key and extract point.\nconst getExtendedPublicKeyAsync = (priv) => sha512a(toU8(priv, 32)).then(hash2extK);\nconst getExtendedPublicKey = (priv) => hash2extK(sha512s(toU8(priv, 32)));\nconst getPublicKeyAsync = (priv) => getExtendedPublicKeyAsync(priv).then(p => p.pointBytes);\nconst getPublicKey = (priv) => getExtendedPublicKey(priv).pointBytes;\nfunction hashFinish(asynchronous, res) {\n if (asynchronous)\n return sha512a(res.hashable).then(res.finish);\n return res.finish(sha512s(res.hashable));\n}\nconst _sign = (e, rBytes, msg) => {\n const { pointBytes: P, scalar: s } = e;\n const r = modL_LE(rBytes); // r was created outside, reduce it modulo L\n const R = G.mul(r).toRawBytes(); // R = [r]B\n const hashable = concatB(R, P, msg); // dom2(F, C) || R || A || PH(M)\n const finish = (hashed) => {\n const S = mod(r + modL_LE(hashed) * s, N); // S = (r + k * s) mod L; 0 <= s < l\n return au8(concatB(R, n2b_32LE(S)), 64); // 64-byte sig: 32b R.x + 32b LE(S)\n };\n return { hashable, finish };\n};\nconst signAsync = async (msg, privKey) => {\n const m = toU8(msg); // RFC8032 5.1.6: sign msg with key async\n const e = await getExtendedPublicKeyAsync(privKey); // pub,prfx\n const rBytes = await sha512a(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinish(true, _sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst sign = (msg, privKey) => {\n const m = toU8(msg); // RFC8032 5.1.6: sign msg with key sync\n const e = getExtendedPublicKey(privKey); // pub,prfx\n const rBytes = sha512s(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinish(false, _sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst dvo = { zip215: true };\nconst _verify = (sig, msg, pub, opts = dvo) => {\n msg = toU8(msg); // Message hex str/Bytes\n sig = toU8(sig, 64); // Signature hex str/Bytes, must be 64 bytes\n const { zip215 } = opts; // switch between zip215 and rfc8032 verif\n let A, R, s, SB, hashable = new Uint8Array();\n try {\n A = Point.fromHex(pub, zip215); // public key A decoded\n R = Point.fromHex(sig.slice(0, 32), zip215); // 0 <= R < 2^256: ZIP215 R can be >= P\n s = b2n_LE(sig.slice(32, 64)); // Decode second half as an integer S\n SB = G.mul(s, false); // in the range 0 <= s < L\n hashable = concatB(R.toRawBytes(), A.toRawBytes(), msg); // dom2(F, C) || R || A || PH(M)\n }\n catch (error) { }\n const finish = (hashed) => {\n if (SB == null)\n return false; // false if try-catch catched an error\n if (!zip215 && A.isSmallOrder())\n return false; // false for SBS: Strongly Binding Signature\n const k = modL_LE(hashed); // decode in little-endian, modulo L\n const RkA = R.add(A.mul(k, false)); // [8]R + [8][k]A'\n return RkA.add(SB.negate()).clearCofactor().is0(); // [8][S]B = [8]R + [8][k]A'\n };\n return { hashable, finish };\n};\n// RFC8032 5.1.7: verification async, sync\nconst verifyAsync = async (s, m, p, opts = dvo) => hashFinish(true, _verify(s, m, p, opts));\nconst verify = (s, m, p, opts = dvo) => hashFinish(false, _verify(s, m, p, opts));\nconst cr = () => // We support: 1) browsers 2) node.js 19+\n typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\nconst etc = {\n bytesToHex: b2h, hexToBytes: h2b, concatBytes: concatB,\n mod, invert,\n randomBytes: (len = 32) => {\n const crypto = cr(); // Can be shimmed in node.js <= 18 to prevent error:\n // import { webcrypto } from 'node:crypto';\n // if (!globalThis.crypto) globalThis.crypto = webcrypto;\n if (!crypto || !crypto.getRandomValues)\n err('crypto.getRandomValues must be defined');\n return crypto.getRandomValues(u8n(len));\n },\n sha512Async: async (...messages) => {\n const crypto = cr();\n if (!crypto || !crypto.subtle)\n err('crypto.subtle or etc.sha512Async must be defined');\n const m = concatB(...messages);\n return u8n(await crypto.subtle.digest('SHA-512', m.buffer));\n },\n sha512Sync: undefined, // Actual logic below\n};\nObject.defineProperties(etc, { sha512Sync: {\n configurable: false, get() { return _shaS; }, set(f) { if (!_shaS)\n _shaS = f; },\n } });\nconst utils = {\n getExtendedPublicKeyAsync, getExtendedPublicKey,\n randomPrivateKey: () => etc.randomBytes(32),\n precompute(w = 8, p = G) { p.multiply(3n); w; return p; }, // no-op\n};\nconst W = 8; // Precomputes-related code. W = window size\nconst precompute = () => {\n const points = []; // 10x sign(), 2x verify(). To achieve this,\n const windows = 256 / W + 1; // app needs to spend 40ms+ to calculate\n let p = G, b = p; // a lot of points related to base point G.\n for (let w = 0; w < windows; w++) { // Points are stored in array and used\n b = p; // any time Gx multiplication is done.\n points.push(b); // They consume 16-32 MiB of RAM.\n for (let i = 1; i < 2 ** (W - 1); i++) {\n b = b.add(p);\n points.push(b);\n }\n p = b.double(); // Precomputes don't speed-up getSharedKey,\n } // which multiplies user point by scalar,\n return points; // when precomputes are using base point\n};\nlet Gpows = undefined; // precomputes for base point G\nconst wNAF = (n) => {\n // Compared to other point mult methods,\n const comp = Gpows || (Gpows = precompute()); // stores 2x less points using subtraction\n const neg = (cnd, p) => { let n = p.negate(); return cnd ? n : p; }; // negate\n let p = I, f = G; // f must be G, or could become I in the end\n const windows = 1 + 256 / W; // W=8 17 windows\n const wsize = 2 ** (W - 1); // W=8 128 window size\n const mask = BigInt(2 ** W - 1); // W=8 will create mask 0b11111111\n const maxNum = 2 ** W; // W=8 256\n const shiftBy = BigInt(W); // W=8 8\n for (let w = 0; w < windows; w++) {\n const off = w * wsize;\n let wbits = Number(n & mask); // extract W bits.\n n >>= shiftBy; // shift number by W bits.\n if (wbits > wsize) {\n wbits -= maxNum;\n n += 1n;\n } // split if bits > max: +224 => 256-32\n const off1 = off, off2 = off + Math.abs(wbits) - 1; // offsets, evaluate both\n const cnd1 = w % 2 !== 0, cnd2 = wbits < 0; // conditions, evaluate both\n if (wbits === 0) {\n f = f.add(neg(cnd1, comp[off1])); // bits are 0: add garbage to fake point\n }\n else { // ^ can't add off2, off2 = I\n p = p.add(neg(cnd2, comp[off2])); // bits are 1: add to result point\n }\n }\n return { p, f }; // return both real and fake points for JIT\n}; // !! you can disable precomputes by commenting-out call of the wNAF() inside Point#mul()\nexport { getPublicKey, getPublicKeyAsync, sign, verify, // Remove the export to easily use in REPL\nsignAsync, verifyAsync, CURVE, etc, utils, Point as ExtendedPoint }; // envs like browser console\n","/**\n * HEY! <== SECRET KEY KOALA\n * |/ <== WOULD LIKE YOUR\n * ʕ·͡ᴥ·ʔ <== ATTENTION PLEASE\n *\n * Key material generated in this module must stay in this module. So long as the secrets cache and\n * the methods that interact with it are not exported from `@solana/webcrypto-ed25519-polyfill`,\n * accidental logging of the actual bytes of a secret key (eg. to the console, or to a remote\n * server) should not be possible.\n *\n * WARNING: This does not imply that the secrets cache is secure against supply-chain attacks.\n * Untrusted code in your JavaScript context can easily override `WeakMap.prototype.set` to steal\n * private keys as they are written to the cache, without alerting you to its presence or affecting\n * the regular operation of the cache.\n */\nimport { getPublicKeyAsync, signAsync, utils, verifyAsync } from '@noble/ed25519';\n\nconst PROHIBITED_KEY_USAGES = new Set<KeyUsage>([\n 'decrypt',\n 'deriveBits',\n 'deriveKey',\n 'encrypt',\n 'unwrapKey',\n 'wrapKey',\n]);\n\nconst ED25519_PKCS8_HEADER =\n // prettier-ignore\n [\n /**\n * PKCS#8 header\n */\n 0x30, // ASN.1 sequence tag\n 0x2e, // Length of sequence (46 more bytes)\n\n 0x02, // ASN.1 integer tag\n 0x01, // Length of integer\n 0x00, // Version number\n\n 0x30, // ASN.1 sequence tag\n 0x05, // Length of sequence\n 0x06, // ASN.1 object identifier tag\n 0x03, // Length of object identifier\n // Edwards curve algorithms identifier https://oid-rep.orange-labs.fr/get/1.3.101.112\n 0x2b, // iso(1) / identified-organization(3) (The first node is multiplied by the decimal 40 and the result is added to the value of the second node)\n 0x65, // thawte(101)\n // Ed25519 identifier\n 0x70, // id-Ed25519(112)\n\n /**\n * Private key payload\n */\n 0x04, // ASN.1 octet string tag\n 0x22, // String length (34 more bytes)\n\n // Private key bytes as octet string\n 0x04, // ASN.1 octet string tag\n 0x20, // String length (32 bytes)\n ];\n\nfunction bufferSourceToUint8Array(data: BufferSource): Uint8Array {\n return data instanceof Uint8Array ? data : new Uint8Array(ArrayBuffer.isView(data) ? data.buffer : data);\n}\n\nlet storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT: WeakMap<CryptoKey, Uint8Array> | undefined;\n\n// Map of public key bytes. These are the result of calling `getPublicKey`\nlet publicKeyBytesStore: WeakMap<CryptoKey, Uint8Array> | undefined;\n\nfunction createKeyPairFromBytes(\n bytes: Uint8Array,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKeyPair {\n const keyPair = createKeyPair_INTERNAL_ONLY_DO_NOT_EXPORT(extractable, keyUsages);\n const cache = (storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT ||= new WeakMap());\n cache.set(keyPair.privateKey, bytes);\n cache.set(keyPair.publicKey, bytes);\n return keyPair;\n}\n\nfunction createKeyPair_INTERNAL_ONLY_DO_NOT_EXPORT(\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKeyPair {\n if (keyUsages.length === 0) {\n throw new DOMException('Usages cannot be empty when creating a key.', 'SyntaxError');\n }\n if (keyUsages.some(usage => PROHIBITED_KEY_USAGES.has(usage))) {\n throw new DOMException('Unsupported key usage for an Ed25519 key.', 'SyntaxError');\n }\n const base = {\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n };\n const privateKey = {\n ...base,\n extractable,\n type: 'private',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'sign')) as KeyUsage[],\n } as CryptoKey;\n const publicKey = {\n ...base,\n extractable: true,\n type: 'public',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'verify')) as KeyUsage[],\n } as CryptoKey;\n return Object.freeze({\n privateKey: Object.freeze(privateKey),\n publicKey: Object.freeze(publicKey),\n });\n}\n\nfunction getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key: CryptoKey): Uint8Array {\n const secretKeyBytes = storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT?.get(key);\n if (secretKeyBytes === undefined) {\n throw new Error('Could not find secret key material associated with this `CryptoKey`');\n }\n return secretKeyBytes;\n}\n\nasync function getPublicKeyBytes(key: CryptoKey): Promise<Uint8Array> {\n // Try to find the key in the public key store first\n const publicKeyStore = (publicKeyBytesStore ||= new WeakMap());\n const fromPublicStore = publicKeyStore.get(key);\n if (fromPublicStore) return fromPublicStore;\n\n // If not available, get the key from the secrets store instead\n const publicKeyBytes = await getPublicKeyAsync(getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key));\n\n // Store the public key bytes in the public key store for next time\n publicKeyStore.set(key, publicKeyBytes);\n return publicKeyBytes;\n}\n\nexport async function exportKeyPolyfill(format: 'jwk', key: CryptoKey): Promise<JsonWebKey>;\nexport async function exportKeyPolyfill(format: KeyFormat, key: CryptoKey): Promise<ArrayBuffer>;\nexport async function exportKeyPolyfill(format: KeyFormat, key: CryptoKey): Promise<ArrayBuffer | JsonWebKey> {\n if (key.extractable === false) {\n throw new DOMException('key is not extractable', 'InvalidAccessException');\n }\n switch (format) {\n case 'raw': {\n if (key.type !== 'public') {\n throw new DOMException(`Unable to export a raw Ed25519 ${key.type} key`, 'InvalidAccessError');\n }\n const publicKeyBytes = await getPublicKeyBytes(key);\n return publicKeyBytes;\n }\n case 'pkcs8': {\n if (key.type !== 'private') {\n throw new DOMException(`Unable to export a pkcs8 Ed25519 ${key.type} key`, 'InvalidAccessError');\n }\n const secretKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);\n return new Uint8Array([...ED25519_PKCS8_HEADER, ...secretKeyBytes]);\n }\n default:\n throw new Error(`Exporting polyfilled Ed25519 keys in the \"${format}\" format is unimplemented`);\n }\n}\n\n/**\n * This function generates a key pair and stores the secret bytes associated with it in a\n * module-private cache. Instead of vending the actual secret bytes, it returns a `CryptoKeyPair`\n * that you can use with other methods in this package to produce signatures and derive public keys\n * associated with the secret.\n */\nexport function generateKeyPolyfill(extractable: boolean, keyUsages: readonly KeyUsage[]): CryptoKeyPair {\n const privateKeyBytes = utils.randomPrivateKey();\n const keyPair = createKeyPairFromBytes(privateKeyBytes, extractable, keyUsages);\n return keyPair;\n}\n\nexport function isPolyfilledKey(key: CryptoKey): boolean {\n return !!storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT?.has(key) || !!publicKeyBytesStore?.has(key);\n}\n\nexport async function signPolyfill(key: CryptoKey, data: BufferSource): Promise<ArrayBuffer> {\n if (key.type !== 'private' || !key.usages.includes('sign')) {\n throw new DOMException('Unable to use this key to sign', 'InvalidAccessError');\n }\n const privateKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);\n const payload = bufferSourceToUint8Array(data);\n const signature = await signAsync(payload, privateKeyBytes);\n return signature;\n}\n\nexport async function verifyPolyfill(key: CryptoKey, signature: BufferSource, data: BufferSource): Promise<boolean> {\n if (key.type !== 'public' || !key.usages.includes('verify')) {\n throw new DOMException('Unable to use this key to verify', 'InvalidAccessError');\n }\n const publicKeyBytes = await getPublicKeyBytes(key);\n try {\n return await verifyAsync(bufferSourceToUint8Array(signature), bufferSourceToUint8Array(data), publicKeyBytes);\n } catch {\n return false;\n }\n}\n\nexport function importKeyPolyfill(\n format: KeyFormat,\n keyData: BufferSource,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKey {\n const bytes = bufferSourceToUint8Array(keyData);\n\n if (format === 'raw') {\n if (keyUsages.some(usage => usage === 'sign' || PROHIBITED_KEY_USAGES.has(usage))) {\n throw new DOMException('Unsupported key usage for a Ed25519 key', 'SyntaxError');\n }\n if (bytes.length !== 32) {\n throw new DOMException('Ed25519 raw keys must be exactly 32-bytes', 'DataError');\n }\n const publicKey = {\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n extractable,\n type: 'public',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'verify')) as KeyUsage[],\n } as CryptoKey;\n\n const cache = (publicKeyBytesStore ||= new WeakMap());\n cache.set(publicKey, bytes);\n\n return publicKey;\n }\n\n if (format === 'pkcs8') {\n if (keyUsages.some(usage => usage === 'verify' || PROHIBITED_KEY_USAGES.has(usage))) {\n throw new DOMException('Unsupported key usage for a Ed25519 key', 'SyntaxError');\n }\n // 48 bytes: 16-byte PKCS8 header + 32 byte secret key\n if (bytes.length !== 48) {\n throw new DOMException('Invalid keyData', 'DataError');\n }\n // Must start with exactly the Ed25519 pkcs8 header\n const header = bytes.slice(0, 16);\n if (!header.every((val, i) => val === ED25519_PKCS8_HEADER[i])) {\n throw new DOMException('Invalid keyData', 'DataError');\n }\n const secretKeyBytes = bytes.slice(16);\n\n const privateKey = {\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n extractable,\n type: 'private',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'sign')) as KeyUsage[],\n } as CryptoKey;\n\n const cache = (storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT ||= new WeakMap());\n cache.set(privateKey, secretKeyBytes);\n\n return privateKey;\n }\n\n throw new Error(`Importing Ed25519 keys in the \"${format}\" format is unimplemented`);\n}\n","import cryptoImpl from '@solana/crypto-impl';\n\nimport {\n exportKeyPolyfill,\n generateKeyPolyfill,\n importKeyPolyfill,\n isPolyfilledKey,\n signPolyfill,\n verifyPolyfill,\n} from './secrets';\n\nexport function install() {\n if (__NODEJS__) {\n /**\n * Node only sets the `crypto` global variable when run with `--experimental-global-webcrypto`.\n * Let's set it unconditionally here.\n */\n globalThis.crypto ||= cryptoImpl;\n }\n\n if (!__BROWSER__ || globalThis.isSecureContext) {\n /**\n * Create `crypto.subtle` if it doesn't exist.\n */\n const originalCryptoObject = (globalThis.crypto ||= {} as Crypto);\n const originalSubtleCrypto = ((originalCryptoObject as Crypto & { subtle: SubtleCrypto }).subtle ||=\n {} as SubtleCrypto);\n\n /**\n * Override `SubtleCrypto#exportKey`\n */\n const originalExportKey = originalSubtleCrypto.exportKey as SubtleCrypto['exportKey'] | undefined;\n originalSubtleCrypto.exportKey = (async (...args: Parameters<SubtleCrypto['exportKey']>) => {\n const [_, key] = args;\n if (isPolyfilledKey(key)) {\n return await exportKeyPolyfill(...args);\n } else if (originalExportKey) {\n return await originalExportKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `exportKey` function exists to handle this call');\n }\n }) as SubtleCrypto['exportKey'];\n\n /**\n * Override `SubtleCrypto#generateKey`\n */\n const originalGenerateKey = originalSubtleCrypto.generateKey as SubtleCrypto['generateKey'] | undefined;\n let originalGenerateKeySupportsEd25519: Promise<boolean> | boolean | undefined;\n originalSubtleCrypto.generateKey = (async (...args: Parameters<SubtleCrypto['generateKey']>) => {\n const [algorithm] = args;\n if (algorithm !== 'Ed25519') {\n if (originalGenerateKey) {\n return await originalGenerateKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `generateKey` function exists to handle this call');\n }\n }\n let optimisticallyGeneratedKeyPair;\n if (originalGenerateKeySupportsEd25519 === undefined) {\n originalGenerateKeySupportsEd25519 = new Promise(resolve => {\n if (!originalGenerateKey) {\n resolve((originalGenerateKeySupportsEd25519 = false));\n return;\n }\n originalGenerateKey\n .apply(originalSubtleCrypto, args)\n .then(keyPair => {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n '`@solana/webcrypto-ed25519-polyfill` was installed in an ' +\n 'environment that supports Ed25519 key manipulation ' +\n 'natively. Falling back to the native implementation. ' +\n 'Consider installing this polyfill only in environments where ' +\n 'Ed25519 is not supported.',\n );\n }\n if (originalSubtleCrypto.generateKey !== originalGenerateKey) {\n originalSubtleCrypto.generateKey = originalGenerateKey;\n }\n optimisticallyGeneratedKeyPair = keyPair;\n resolve((originalGenerateKeySupportsEd25519 = true));\n })\n .catch(() => {\n resolve((originalGenerateKeySupportsEd25519 = false));\n });\n });\n }\n if (\n typeof originalGenerateKeySupportsEd25519 === 'boolean'\n ? originalGenerateKeySupportsEd25519\n : await originalGenerateKeySupportsEd25519\n ) {\n if (optimisticallyGeneratedKeyPair) {\n return optimisticallyGeneratedKeyPair;\n } else if (originalGenerateKey) {\n return await originalGenerateKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `generateKey` function exists to handle this call');\n }\n } else {\n const [_, extractable, keyUsages] = args;\n return generateKeyPolyfill(extractable, keyUsages);\n }\n }) as SubtleCrypto['generateKey'];\n\n /**\n * Override `SubtleCrypto#sign`\n */\n const originalSign = originalSubtleCrypto.sign as SubtleCrypto['sign'] | undefined;\n originalSubtleCrypto.sign = (async (...args: Parameters<SubtleCrypto['sign']>) => {\n const [_, key] = args;\n if (isPolyfilledKey(key)) {\n const [_, ...rest] = args;\n return await signPolyfill(...rest);\n } else if (originalSign) {\n return await originalSign.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `sign` function exists to handle this call');\n }\n }) as SubtleCrypto['sign'];\n\n /**\n * Override `SubtleCrypto#verify`\n */\n const originalVerify = originalSubtleCrypto.verify as SubtleCrypto['verify'] | undefined;\n originalSubtleCrypto.verify = (async (...args: Parameters<SubtleCrypto['verify']>) => {\n const [_, key] = args;\n if (isPolyfilledKey(key)) {\n const [_, ...rest] = args;\n return await verifyPolyfill(...rest);\n } else if (originalVerify) {\n return await originalVerify.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `verify` function exists to handle this call');\n }\n }) as SubtleCrypto['verify'];\n\n /**\n * Override `SubtleCrypto#importKey`\n */\n const originalImportKey = originalSubtleCrypto.importKey as SubtleCrypto['importKey'] | undefined;\n let originalImportKeySupportsEd25519: Promise<boolean> | boolean | undefined;\n originalSubtleCrypto.importKey = (async (...args: Parameters<SubtleCrypto['importKey']>) => {\n const [format, keyData, algorithm] = args;\n if (algorithm !== 'Ed25519') {\n if (originalImportKey) {\n return await originalImportKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `importKey` function exists to handle this call');\n }\n }\n let optimisticallyImportedKey;\n if (originalImportKeySupportsEd25519 === undefined) {\n originalImportKeySupportsEd25519 = new Promise(resolve => {\n if (!originalImportKey) {\n resolve((originalImportKeySupportsEd25519 = false));\n return;\n }\n originalImportKey\n .apply(originalSubtleCrypto, args)\n .then(key => {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n '`@solana/webcrypto-ed25519-polyfill` was included in an ' +\n 'environment that supports Ed25519 key manipulation ' +\n 'natively. Falling back to the native implementation. ' +\n 'Consider including this polyfill only in environments where ' +\n 'Ed25519 is not supported.',\n );\n }\n if (originalSubtleCrypto.importKey !== originalImportKey) {\n originalSubtleCrypto.importKey = originalImportKey;\n }\n optimisticallyImportedKey = key;\n resolve((originalImportKeySupportsEd25519 = true));\n })\n .catch(() => {\n resolve((originalImportKeySupportsEd25519 = false));\n });\n });\n }\n if (\n typeof originalImportKey === 'boolean'\n ? originalImportKeySupportsEd25519\n : await originalImportKeySupportsEd25519\n ) {\n if (optimisticallyImportedKey) {\n return optimisticallyImportedKey;\n } else if (originalImportKey) {\n return await originalImportKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `importKey` function exists to handle this call');\n }\n } else {\n const [_format, _keyData, _algorithm, extractable, keyUsages] = args;\n return importKeyPolyfill(format, keyData, extractable, keyUsages);\n }\n }) as SubtleCrypto['importKey'];\n }\n}\n","import { install } from './install';\nexport default install;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/@noble+ed25519@2.1.0/node_modules/@noble/ed25519/index.js","../src/secrets.ts","../src/install.ts"],"names":["G","P","p","n","_"],"mappings":"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","file":"index.browser.cjs","sourcesContent":["/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nconst P = 2n ** 255n - 19n; // ed25519 is twisted edwards curve\nconst N = 2n ** 252n + 27742317777372353535851937790883648493n; // curve's (group) order\nconst Gx = 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an; // base point x\nconst Gy = 0x6666666666666666666666666666666666666666666666666666666666666658n; // base point y\nconst CURVE = {\n a: -1n, // where a=-1, d = -(121665/121666) == -(121665 * inv(121666)) mod P\n d: 37095705934669439343138083508754565189542113879843219016388785533085940283555n,\n p: P, n: N, h: 8, Gx, Gy // field prime, curve (group) order, cofactor\n};\nconst err = (m = '') => { throw new Error(m); }; // error helper, messes-up stack trace\nconst str = (s) => typeof s === 'string'; // is string\nconst isu8 = (a) => (a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array'));\nconst au8 = (a, l) => // is Uint8Array (of specific length)\n !isu8(a) || (typeof l === 'number' && l > 0 && a.length !== l) ?\n err('Uint8Array of valid length expected') : a;\nconst u8n = (data) => new Uint8Array(data); // creates Uint8Array\nconst toU8 = (a, len) => au8(str(a) ? h2b(a) : u8n(au8(a)), len); // norm(hex/u8a) to u8a\nconst mod = (a, b = P) => { let r = a % b; return r >= 0n ? r : b + r; }; // mod division\nconst isPoint = (p) => (p instanceof Point ? p : err('Point expected')); // is xyzt point\nclass Point {\n constructor(ex, ey, ez, et) {\n this.ex = ex;\n this.ey = ey;\n this.ez = ez;\n this.et = et;\n }\n static fromAffine(p) { return new Point(p.x, p.y, 1n, mod(p.x * p.y)); }\n static fromHex(hex, zip215 = false) {\n const { d } = CURVE;\n hex = toU8(hex, 32);\n const normed = hex.slice(); // copy the array to not mess it up\n const lastByte = hex[31];\n normed[31] = lastByte & ~0x80; // adjust first LE byte = last BE byte\n const y = b2n_LE(normed); // decode as little-endian, convert to num\n if (zip215 && !(0n <= y && y < 2n ** 256n))\n err('bad y coord 1'); // zip215=true [1..2^256-1]\n if (!zip215 && !(0n <= y && y < P))\n err('bad y coord 2'); // zip215=false [1..P-1]\n const y2 = mod(y * y); // y²\n const u = mod(y2 - 1n); // u=y²-1\n const v = mod(d * y2 + 1n); // v=dy²+1\n let { isValid, value: x } = uvRatio(u, v); // (uv³)(uv⁷)^(p-5)/8; square root\n if (!isValid)\n err('bad y coordinate 3'); // not square root: bad point\n const isXOdd = (x & 1n) === 1n; // adjust sign of x coordinate\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === 0n && isLastByteOdd)\n err('bad y coord 3'); // x=0 and x_0 = 1\n if (isLastByteOdd !== isXOdd)\n x = mod(-x);\n return new Point(x, y, 1n, mod(x * y)); // Z=1, T=xy\n }\n get x() { return this.toAffine().x; } // .x, .y will call expensive toAffine.\n get y() { return this.toAffine().y; } // Should be used with care.\n equals(other) {\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const { ex: X2, ey: Y2, ez: Z2 } = isPoint(other); // isPoint() checks class equality\n const X1Z2 = mod(X1 * Z2), X2Z1 = mod(X2 * Z1);\n const Y1Z2 = mod(Y1 * Z2), Y2Z1 = mod(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() { return this.equals(I); }\n negate() {\n return new Point(mod(-this.ex), this.ey, this.ez, mod(-this.et));\n }\n double() {\n const { ex: X1, ey: Y1, ez: Z1 } = this; // Cost: 4M + 4S + 1*a + 6add + 1*2\n const { a } = CURVE; // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n const A = mod(X1 * X1);\n const B = mod(Y1 * Y1);\n const C = mod(2n * mod(Z1 * Z1));\n const D = mod(a * A);\n const x1y1 = X1 + Y1;\n const E = mod(mod(x1y1 * x1y1) - A - B);\n const G = D + B;\n const F = G - C;\n const H = D - B;\n const X3 = mod(E * F);\n const Y3 = mod(G * H);\n const T3 = mod(E * H);\n const Z3 = mod(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n add(other) {\n const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this; // Cost: 8M + 1*k + 8add + 1*2.\n const { ex: X2, ey: Y2, ez: Z2, et: T2 } = isPoint(other); // doesn't check if other on-curve\n const { a, d } = CURVE; // http://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-3\n const A = mod(X1 * X2);\n const B = mod(Y1 * Y2);\n const C = mod(T1 * d * T2);\n const D = mod(Z1 * Z2);\n const E = mod((X1 + Y1) * (X2 + Y2) - A - B);\n const F = mod(D - C);\n const G = mod(D + C);\n const H = mod(B - a * A);\n const X3 = mod(E * F);\n const Y3 = mod(G * H);\n const T3 = mod(E * H);\n const Z3 = mod(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n mul(n, safe = true) {\n if (n === 0n)\n return safe === true ? err('cannot multiply by 0') : I;\n if (!(typeof n === 'bigint' && 0n < n && n < N))\n err('invalid scalar, must be < L');\n if (!safe && this.is0() || n === 1n)\n return this; // safe=true bans 0. safe=false allows 0.\n if (this.equals(G))\n return wNAF(n).p; // use wNAF precomputes for base points\n let p = I, f = G; // init result point & fake point\n for (let d = this; n > 0n; d = d.double(), n >>= 1n) { // double-and-add ladder\n if (n & 1n)\n p = p.add(d); // if bit is present, add to point\n else if (safe)\n f = f.add(d); // if not, add to fake for timing safety\n }\n return p;\n }\n multiply(scalar) { return this.mul(scalar); } // Aliases for compatibilty\n clearCofactor() { return this.mul(BigInt(CURVE.h), false); } // multiply by cofactor\n isSmallOrder() { return this.clearCofactor().is0(); } // check if P is small order\n isTorsionFree() {\n let p = this.mul(N / 2n, false).double(); // ensures the point is not \"bad\".\n if (N % 2n)\n p = p.add(this); // P^(N+1) // P*N == (P*(N/2))*2+P\n return p.is0();\n }\n toAffine() {\n const { ex: x, ey: y, ez: z } = this; // (x, y, z, t) ∋ (x=x/z, y=y/z, t=xy)\n if (this.equals(I))\n return { x: 0n, y: 1n }; // fast-path for zero point\n const iz = invert(z); // z^-1: invert z\n if (mod(z * iz) !== 1n)\n err('invalid inverse'); // (z * z^-1) must be 1, otherwise bad math\n return { x: mod(x * iz), y: mod(y * iz) }; // x = x*z^-1; y = y*z^-1\n }\n toRawBytes() {\n const { x, y } = this.toAffine(); // convert to affine 2d point\n const b = n2b_32LE(y); // encode number to 32 bytes\n b[31] |= x & 1n ? 0x80 : 0; // store sign in first LE byte\n return b;\n }\n toHex() { return b2h(this.toRawBytes()); } // encode to hex string\n}\nPoint.BASE = new Point(Gx, Gy, 1n, mod(Gx * Gy)); // Generator / Base point\nPoint.ZERO = new Point(0n, 1n, 1n, 0n); // Identity / Zero point\nconst { BASE: G, ZERO: I } = Point; // Generator, identity points\nconst padh = (num, pad) => num.toString(16).padStart(pad, '0');\nconst b2h = (b) => Array.from(b).map(e => padh(e, 2)).join(''); // bytes to hex\nconst h2b = (hex) => {\n const l = hex.length; // error if not string,\n if (!str(hex) || l % 2)\n err('hex invalid 1'); // or has odd length like 3, 5.\n const arr = u8n(l / 2); // create result array\n for (let i = 0; i < arr.length; i++) {\n const j = i * 2;\n const h = hex.slice(j, j + 2); // hexByte. slice is faster than substr\n const b = Number.parseInt(h, 16); // byte, created from string part\n if (Number.isNaN(b) || b < 0)\n err('hex invalid 2'); // byte must be valid 0 <= byte < 256\n arr[i] = b;\n }\n return arr;\n};\nconst n2b_32LE = (num) => h2b(padh(num, 32 * 2)).reverse(); // number to bytes LE\nconst b2n_LE = (b) => BigInt('0x' + b2h(u8n(au8(b)).reverse())); // bytes LE to num\nconst concatB = (...arrs) => {\n const r = u8n(arrs.reduce((sum, a) => sum + au8(a).length, 0)); // create u8a of summed length\n let pad = 0; // walk through each array,\n arrs.forEach(a => { r.set(a, pad); pad += a.length; }); // ensure they have proper type\n return r;\n};\nconst invert = (num, md = P) => {\n if (num === 0n || md <= 0n)\n err('no inverse n=' + num + ' mod=' + md); // no neg exponent for now\n let a = mod(num, md), b = md, x = 0n, y = 1n, u = 1n, v = 0n;\n while (a !== 0n) { // uses euclidean gcd algorithm\n const q = b / a, r = b % a; // not constant-time\n const m = x - u * q, n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n return b === 1n ? mod(x, md) : err('no inverse'); // b is gcd at this point\n};\nconst pow2 = (x, power) => {\n let r = x;\n while (power-- > 0n) {\n r *= r;\n r %= P;\n }\n return r;\n};\nconst pow_2_252_3 = (x) => {\n const x2 = (x * x) % P; // x^2, bits 1\n const b2 = (x2 * x) % P; // x^3, bits 11\n const b4 = (pow2(b2, 2n) * b2) % P; // x^(2^4-1), bits 1111\n const b5 = (pow2(b4, 1n) * x) % P; // x^(2^5-1), bits 11111\n const b10 = (pow2(b5, 5n) * b5) % P; // x^(2^10)\n const b20 = (pow2(b10, 10n) * b10) % P; // x^(2^20)\n const b40 = (pow2(b20, 20n) * b20) % P; // x^(2^40)\n const b80 = (pow2(b40, 40n) * b40) % P; // x^(2^80)\n const b160 = (pow2(b80, 80n) * b80) % P; // x^(2^160)\n const b240 = (pow2(b160, 80n) * b80) % P; // x^(2^240)\n const b250 = (pow2(b240, 10n) * b10) % P; // x^(2^250)\n const pow_p_5_8 = (pow2(b250, 2n) * x) % P; // < To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n};\nconst RM1 = 19681161376707505956807079304988542015446066515923890162744021073123829784752n; // √-1\nconst uvRatio = (u, v) => {\n const v3 = mod(v * v * v); // v³\n const v7 = mod(v3 * v3 * v); // v⁷\n const pow = pow_2_252_3(u * v7).pow_p_5_8; // (uv⁷)^(p-5)/8\n let x = mod(u * v3 * pow); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = mod(v * x * x); // vx²\n const root1 = x; // First root candidate\n const root2 = mod(x * RM1); // Second root candidate; RM1 is √-1\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * RM1); // There is no valid root, vx² = -u√-1\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if ((mod(x) & 1n) === 1n)\n x = mod(-x); // edIsNegative\n return { isValid: useRoot1 || useRoot2, value: x };\n};\nconst modL_LE = (hash) => mod(b2n_LE(hash), N); // modulo L; but little-endian\nlet _shaS;\nconst sha512a = (...m) => etc.sha512Async(...m); // Async SHA512\nconst sha512s = (...m) => // Sync SHA512, not set by default\n typeof _shaS === 'function' ? _shaS(...m) : err('etc.sha512Sync not set');\nconst hash2extK = (hashed) => {\n const head = hashed.slice(0, 32); // slice creates a copy, unlike subarray\n head[0] &= 248; // Clamp bits: 0b1111_1000,\n head[31] &= 127; // 0b0111_1111,\n head[31] |= 64; // 0b0100_0000\n const prefix = hashed.slice(32, 64); // private key \"prefix\"\n const scalar = modL_LE(head); // modular division over curve order\n const point = G.mul(scalar); // public key point\n const pointBytes = point.toRawBytes(); // point serialized to Uint8Array\n return { head, prefix, scalar, point, pointBytes };\n};\n// RFC8032 5.1.5; getPublicKey async, sync. Hash priv key and extract point.\nconst getExtendedPublicKeyAsync = (priv) => sha512a(toU8(priv, 32)).then(hash2extK);\nconst getExtendedPublicKey = (priv) => hash2extK(sha512s(toU8(priv, 32)));\nconst getPublicKeyAsync = (priv) => getExtendedPublicKeyAsync(priv).then(p => p.pointBytes);\nconst getPublicKey = (priv) => getExtendedPublicKey(priv).pointBytes;\nfunction hashFinish(asynchronous, res) {\n if (asynchronous)\n return sha512a(res.hashable).then(res.finish);\n return res.finish(sha512s(res.hashable));\n}\nconst _sign = (e, rBytes, msg) => {\n const { pointBytes: P, scalar: s } = e;\n const r = modL_LE(rBytes); // r was created outside, reduce it modulo L\n const R = G.mul(r).toRawBytes(); // R = [r]B\n const hashable = concatB(R, P, msg); // dom2(F, C) || R || A || PH(M)\n const finish = (hashed) => {\n const S = mod(r + modL_LE(hashed) * s, N); // S = (r + k * s) mod L; 0 <= s < l\n return au8(concatB(R, n2b_32LE(S)), 64); // 64-byte sig: 32b R.x + 32b LE(S)\n };\n return { hashable, finish };\n};\nconst signAsync = async (msg, privKey) => {\n const m = toU8(msg); // RFC8032 5.1.6: sign msg with key async\n const e = await getExtendedPublicKeyAsync(privKey); // pub,prfx\n const rBytes = await sha512a(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinish(true, _sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst sign = (msg, privKey) => {\n const m = toU8(msg); // RFC8032 5.1.6: sign msg with key sync\n const e = getExtendedPublicKey(privKey); // pub,prfx\n const rBytes = sha512s(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinish(false, _sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst dvo = { zip215: true };\nconst _verify = (sig, msg, pub, opts = dvo) => {\n msg = toU8(msg); // Message hex str/Bytes\n sig = toU8(sig, 64); // Signature hex str/Bytes, must be 64 bytes\n const { zip215 } = opts; // switch between zip215 and rfc8032 verif\n let A, R, s, SB, hashable = new Uint8Array();\n try {\n A = Point.fromHex(pub, zip215); // public key A decoded\n R = Point.fromHex(sig.slice(0, 32), zip215); // 0 <= R < 2^256: ZIP215 R can be >= P\n s = b2n_LE(sig.slice(32, 64)); // Decode second half as an integer S\n SB = G.mul(s, false); // in the range 0 <= s < L\n hashable = concatB(R.toRawBytes(), A.toRawBytes(), msg); // dom2(F, C) || R || A || PH(M)\n }\n catch (error) { }\n const finish = (hashed) => {\n if (SB == null)\n return false; // false if try-catch catched an error\n if (!zip215 && A.isSmallOrder())\n return false; // false for SBS: Strongly Binding Signature\n const k = modL_LE(hashed); // decode in little-endian, modulo L\n const RkA = R.add(A.mul(k, false)); // [8]R + [8][k]A'\n return RkA.add(SB.negate()).clearCofactor().is0(); // [8][S]B = [8]R + [8][k]A'\n };\n return { hashable, finish };\n};\n// RFC8032 5.1.7: verification async, sync\nconst verifyAsync = async (s, m, p, opts = dvo) => hashFinish(true, _verify(s, m, p, opts));\nconst verify = (s, m, p, opts = dvo) => hashFinish(false, _verify(s, m, p, opts));\nconst cr = () => // We support: 1) browsers 2) node.js 19+\n typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\nconst etc = {\n bytesToHex: b2h, hexToBytes: h2b, concatBytes: concatB,\n mod, invert,\n randomBytes: (len = 32) => {\n const crypto = cr(); // Can be shimmed in node.js <= 18 to prevent error:\n // import { webcrypto } from 'node:crypto';\n // if (!globalThis.crypto) globalThis.crypto = webcrypto;\n if (!crypto || !crypto.getRandomValues)\n err('crypto.getRandomValues must be defined');\n return crypto.getRandomValues(u8n(len));\n },\n sha512Async: async (...messages) => {\n const crypto = cr();\n if (!crypto || !crypto.subtle)\n err('crypto.subtle or etc.sha512Async must be defined');\n const m = concatB(...messages);\n return u8n(await crypto.subtle.digest('SHA-512', m.buffer));\n },\n sha512Sync: undefined, // Actual logic below\n};\nObject.defineProperties(etc, { sha512Sync: {\n configurable: false, get() { return _shaS; }, set(f) { if (!_shaS)\n _shaS = f; },\n } });\nconst utils = {\n getExtendedPublicKeyAsync, getExtendedPublicKey,\n randomPrivateKey: () => etc.randomBytes(32),\n precompute(w = 8, p = G) { p.multiply(3n); w; return p; }, // no-op\n};\nconst W = 8; // Precomputes-related code. W = window size\nconst precompute = () => {\n const points = []; // 10x sign(), 2x verify(). To achieve this,\n const windows = 256 / W + 1; // app needs to spend 40ms+ to calculate\n let p = G, b = p; // a lot of points related to base point G.\n for (let w = 0; w < windows; w++) { // Points are stored in array and used\n b = p; // any time Gx multiplication is done.\n points.push(b); // They consume 16-32 MiB of RAM.\n for (let i = 1; i < 2 ** (W - 1); i++) {\n b = b.add(p);\n points.push(b);\n }\n p = b.double(); // Precomputes don't speed-up getSharedKey,\n } // which multiplies user point by scalar,\n return points; // when precomputes are using base point\n};\nlet Gpows = undefined; // precomputes for base point G\nconst wNAF = (n) => {\n // Compared to other point mult methods,\n const comp = Gpows || (Gpows = precompute()); // stores 2x less points using subtraction\n const neg = (cnd, p) => { let n = p.negate(); return cnd ? n : p; }; // negate\n let p = I, f = G; // f must be G, or could become I in the end\n const windows = 1 + 256 / W; // W=8 17 windows\n const wsize = 2 ** (W - 1); // W=8 128 window size\n const mask = BigInt(2 ** W - 1); // W=8 will create mask 0b11111111\n const maxNum = 2 ** W; // W=8 256\n const shiftBy = BigInt(W); // W=8 8\n for (let w = 0; w < windows; w++) {\n const off = w * wsize;\n let wbits = Number(n & mask); // extract W bits.\n n >>= shiftBy; // shift number by W bits.\n if (wbits > wsize) {\n wbits -= maxNum;\n n += 1n;\n } // split if bits > max: +224 => 256-32\n const off1 = off, off2 = off + Math.abs(wbits) - 1; // offsets, evaluate both\n const cnd1 = w % 2 !== 0, cnd2 = wbits < 0; // conditions, evaluate both\n if (wbits === 0) {\n f = f.add(neg(cnd1, comp[off1])); // bits are 0: add garbage to fake point\n }\n else { // ^ can't add off2, off2 = I\n p = p.add(neg(cnd2, comp[off2])); // bits are 1: add to result point\n }\n }\n return { p, f }; // return both real and fake points for JIT\n}; // !! you can disable precomputes by commenting-out call of the wNAF() inside Point#mul()\nexport { getPublicKey, getPublicKeyAsync, sign, verify, // Remove the export to easily use in REPL\nsignAsync, verifyAsync, CURVE, etc, utils, Point as ExtendedPoint }; // envs like browser console\n","/**\n * HEY! <== SECRET KEY KOALA\n * |/ <== WOULD LIKE YOUR\n * ʕ·͡ᴥ·ʔ <== ATTENTION PLEASE\n *\n * Key material generated in this module must stay in this module. So long as the secrets cache and\n * the methods that interact with it are not exported from `@solana/webcrypto-ed25519-polyfill`,\n * accidental logging of the actual bytes of a secret key (eg. to the console, or to a remote\n * server) should not be possible.\n *\n * WARNING: This does not imply that the secrets cache is secure against supply-chain attacks.\n * Untrusted code in your JavaScript context can easily override `WeakMap.prototype.set` to steal\n * private keys as they are written to the cache, without alerting you to its presence or affecting\n * the regular operation of the cache.\n */\nimport { getPublicKeyAsync, signAsync, utils, verifyAsync } from '@noble/ed25519';\n\nconst PROHIBITED_KEY_USAGES = new Set<KeyUsage>([\n 'decrypt',\n 'deriveBits',\n 'deriveKey',\n 'encrypt',\n 'unwrapKey',\n 'wrapKey',\n]);\n\nconst ED25519_PKCS8_HEADER =\n // prettier-ignore\n [\n /**\n * PKCS#8 header\n */\n 0x30, // ASN.1 sequence tag\n 0x2e, // Length of sequence (46 more bytes)\n\n 0x02, // ASN.1 integer tag\n 0x01, // Length of integer\n 0x00, // Version number\n\n 0x30, // ASN.1 sequence tag\n 0x05, // Length of sequence\n 0x06, // ASN.1 object identifier tag\n 0x03, // Length of object identifier\n // Edwards curve algorithms identifier https://oid-rep.orange-labs.fr/get/1.3.101.112\n 0x2b, // iso(1) / identified-organization(3) (The first node is multiplied by the decimal 40 and the result is added to the value of the second node)\n 0x65, // thawte(101)\n // Ed25519 identifier\n 0x70, // id-Ed25519(112)\n\n /**\n * Private key payload\n */\n 0x04, // ASN.1 octet string tag\n 0x22, // String length (34 more bytes)\n\n // Private key bytes as octet string\n 0x04, // ASN.1 octet string tag\n 0x20, // String length (32 bytes)\n ];\n\nfunction bufferSourceToUint8Array(data: BufferSource): Uint8Array {\n return data instanceof Uint8Array ? data : new Uint8Array(ArrayBuffer.isView(data) ? data.buffer : data);\n}\n\nlet storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT: WeakMap<CryptoKey, Uint8Array> | undefined;\n\n// Map of public key bytes. These are the result of calling `getPublicKey`\nlet publicKeyBytesStore: WeakMap<CryptoKey, Uint8Array> | undefined;\n\nfunction createKeyPairFromBytes(\n bytes: Uint8Array,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKeyPair {\n const keyPair = createKeyPair_INTERNAL_ONLY_DO_NOT_EXPORT(extractable, keyUsages);\n const cache = (storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT ||= new WeakMap());\n cache.set(keyPair.privateKey, bytes);\n cache.set(keyPair.publicKey, bytes);\n return keyPair;\n}\n\nfunction createKeyPair_INTERNAL_ONLY_DO_NOT_EXPORT(\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKeyPair {\n if (keyUsages.length === 0) {\n throw new DOMException('Usages cannot be empty when creating a key.', 'SyntaxError');\n }\n if (keyUsages.some(usage => PROHIBITED_KEY_USAGES.has(usage))) {\n throw new DOMException('Unsupported key usage for an Ed25519 key.', 'SyntaxError');\n }\n const base = {\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n };\n const privateKey = {\n ...base,\n extractable,\n type: 'private',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'sign')) as KeyUsage[],\n } as CryptoKey;\n const publicKey = {\n ...base,\n extractable: true,\n type: 'public',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'verify')) as KeyUsage[],\n } as CryptoKey;\n return Object.freeze({\n privateKey: Object.freeze(privateKey),\n publicKey: Object.freeze(publicKey),\n });\n}\n\nfunction getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key: CryptoKey): Uint8Array {\n const secretKeyBytes = storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT?.get(key);\n if (secretKeyBytes === undefined) {\n throw new Error('Could not find secret key material associated with this `CryptoKey`');\n }\n return secretKeyBytes;\n}\n\nasync function getPublicKeyBytes(key: CryptoKey): Promise<Uint8Array> {\n // Try to find the key in the public key store first\n const publicKeyStore = (publicKeyBytesStore ||= new WeakMap());\n const fromPublicStore = publicKeyStore.get(key);\n if (fromPublicStore) return fromPublicStore;\n\n // If not available, get the key from the secrets store instead\n const publicKeyBytes = await getPublicKeyAsync(getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key));\n\n // Store the public key bytes in the public key store for next time\n publicKeyStore.set(key, publicKeyBytes);\n return publicKeyBytes;\n}\n\nfunction base64UrlEncode(bytes: Uint8Array): string {\n return btoa(Array.from(bytes, b => String.fromCharCode(b)).join(''))\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '');\n}\n\nfunction base64UrlDecode(value: string): Uint8Array {\n const m = value.length % 4;\n const base64Value = value\n .replace(/-/g, '+')\n .replace(/_/g, '/')\n .padEnd(value.length + (m === 0 ? 0 : 4 - m), '=');\n return Uint8Array.from(atob(base64Value), c => c.charCodeAt(0));\n}\n\nexport async function exportKeyPolyfill(format: 'jwk', key: CryptoKey): Promise<JsonWebKey>;\nexport async function exportKeyPolyfill(format: KeyFormat, key: CryptoKey): Promise<ArrayBuffer>;\nexport async function exportKeyPolyfill(format: KeyFormat, key: CryptoKey): Promise<ArrayBuffer | JsonWebKey> {\n if (key.extractable === false) {\n throw new DOMException('key is not extractable', 'InvalidAccessException');\n }\n switch (format) {\n case 'raw': {\n if (key.type !== 'public') {\n throw new DOMException(`Unable to export a raw Ed25519 ${key.type} key`, 'InvalidAccessError');\n }\n const publicKeyBytes = await getPublicKeyBytes(key);\n return publicKeyBytes;\n }\n case 'pkcs8': {\n if (key.type !== 'private') {\n throw new DOMException(`Unable to export a pkcs8 Ed25519 ${key.type} key`, 'InvalidAccessError');\n }\n const secretKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);\n return new Uint8Array([...ED25519_PKCS8_HEADER, ...secretKeyBytes]);\n }\n case 'jwk': {\n const publicKeyBytes = await getPublicKeyBytes(key);\n const base = {\n crv /* curve */: 'Ed25519',\n ext /* extractable */: key.extractable,\n key_ops /* key operations */: key.usages,\n kty /* key type */: 'OKP' /* octet key pair */,\n x /* public key x-coordinate (base64-URL encoded) */: base64UrlEncode(publicKeyBytes),\n };\n if (key.type === 'private') {\n const secretKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);\n return Object.freeze({\n ...base,\n d /* private key (base64-URL encoded) */: base64UrlEncode(secretKeyBytes),\n });\n }\n return Object.freeze({ ...base });\n }\n default:\n throw new Error(`Exporting polyfilled Ed25519 keys in the \"${format}\" format is unimplemented`);\n }\n}\n\n/**\n * This function generates a key pair and stores the secret bytes associated with it in a\n * module-private cache. Instead of vending the actual secret bytes, it returns a `CryptoKeyPair`\n * that you can use with other methods in this package to produce signatures and derive public keys\n * associated with the secret.\n */\nexport function generateKeyPolyfill(extractable: boolean, keyUsages: readonly KeyUsage[]): CryptoKeyPair {\n const privateKeyBytes = utils.randomPrivateKey();\n const keyPair = createKeyPairFromBytes(privateKeyBytes, extractable, keyUsages);\n return keyPair;\n}\n\nexport function isPolyfilledKey(key: CryptoKey): boolean {\n return !!storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT?.has(key) || !!publicKeyBytesStore?.has(key);\n}\n\nexport async function signPolyfill(key: CryptoKey, data: BufferSource): Promise<ArrayBuffer> {\n if (key.type !== 'private' || !key.usages.includes('sign')) {\n throw new DOMException('Unable to use this key to sign', 'InvalidAccessError');\n }\n const privateKeyBytes = getSecretKeyBytes_INTERNAL_ONLY_DO_NOT_EXPORT(key);\n const payload = bufferSourceToUint8Array(data);\n const signature = await signAsync(payload, privateKeyBytes);\n return signature;\n}\n\nexport async function verifyPolyfill(key: CryptoKey, signature: BufferSource, data: BufferSource): Promise<boolean> {\n if (key.type !== 'public' || !key.usages.includes('verify')) {\n throw new DOMException('Unable to use this key to verify', 'InvalidAccessError');\n }\n const publicKeyBytes = await getPublicKeyBytes(key);\n try {\n return await verifyAsync(bufferSourceToUint8Array(signature), bufferSourceToUint8Array(data), publicKeyBytes);\n } catch {\n return false;\n }\n}\n\nfunction assertValidKeyUsages(keyUsages: readonly KeyUsage[], type: 'private' | 'public') {\n const prohibitedKeyUses = new Set<KeyUsage>([\n ...((type === 'private' ? ['verify'] : ['sign']) as KeyUsage[]),\n ...PROHIBITED_KEY_USAGES,\n ]);\n if (keyUsages.some(usage => prohibitedKeyUses.has(usage))) {\n throw new DOMException('Unsupported key usage for a Ed25519 key', 'SyntaxError');\n }\n}\n\nexport function importKeyPolyfill(\n format: 'jwk',\n keyData: JsonWebKey,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKey;\nexport function importKeyPolyfill(\n format: Exclude<KeyFormat, 'jwk'>,\n keyData: BufferSource,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKey;\nexport function importKeyPolyfill(\n format: KeyFormat,\n keyData: BufferSource | JsonWebKey,\n extractable: boolean,\n keyUsages: readonly KeyUsage[],\n): CryptoKey {\n if (format === 'raw') {\n const bytes = bufferSourceToUint8Array(keyData as BufferSource);\n assertValidKeyUsages(keyUsages, 'public');\n if (bytes.length !== 32) {\n throw new DOMException('Ed25519 raw keys must be exactly 32-bytes', 'DataError');\n }\n const publicKey = {\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n extractable,\n type: 'public',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'verify')) as KeyUsage[],\n } as CryptoKey;\n\n const cache = (publicKeyBytesStore ||= new WeakMap());\n cache.set(publicKey, bytes);\n\n return publicKey;\n }\n\n if (format === 'pkcs8') {\n const bytes = bufferSourceToUint8Array(keyData as BufferSource);\n assertValidKeyUsages(keyUsages, 'private');\n // 48 bytes: 16-byte PKCS8 header + 32 byte secret key\n if (bytes.length !== 48) {\n throw new DOMException('Invalid keyData', 'DataError');\n }\n // Must start with exactly the Ed25519 pkcs8 header\n const header = bytes.slice(0, 16);\n if (!header.every((val, i) => val === ED25519_PKCS8_HEADER[i])) {\n throw new DOMException('Invalid keyData', 'DataError');\n }\n const secretKeyBytes = bytes.slice(16);\n\n const privateKey = {\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n extractable,\n type: 'private',\n usages: Object.freeze(keyUsages.filter(usage => usage === 'sign')) as KeyUsage[],\n } as CryptoKey;\n\n const cache = (storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT ||= new WeakMap());\n cache.set(privateKey, secretKeyBytes);\n\n return privateKey;\n }\n\n if (format === 'jwk') {\n const jwk = keyData as JsonWebKey;\n const type = 'd' in jwk ? 'private' : 'public';\n assertValidKeyUsages(keyUsages, type);\n const keyOps = new Set(jwk.key_ops ?? []);\n const sameKeyUsages = keyUsages.length === keyOps.size && [...keyUsages].every(x => keyOps.has(x));\n if (jwk.kty !== 'OKP' || jwk.crv !== 'Ed25519' || jwk.ext !== extractable || !sameKeyUsages) {\n throw new DOMException('Invalid Ed25519 JWK', 'DataError');\n }\n if (type === 'public' && !jwk.x) {\n throw new DOMException('Ed25519 JWK is missing public key coordinates', 'DataError');\n }\n if (type === 'private' && !jwk.d) {\n throw new DOMException('Ed25519 JWK is missing private key coordinates', 'DataError');\n }\n const usageToKeep = type === 'public' ? 'verify' : 'sign';\n const key = Object.freeze({\n [Symbol.toStringTag]: 'CryptoKey',\n algorithm: Object.freeze({ name: 'Ed25519' }),\n extractable,\n type,\n usages: Object.freeze(keyUsages.filter(usage => usage === usageToKeep)) as KeyUsage[],\n }) as CryptoKey;\n\n if (type === 'public') {\n const cache = (publicKeyBytesStore ||= new WeakMap());\n cache.set(key, base64UrlDecode(jwk.x!));\n } else {\n const cache = (storageKeyBySecretKey_INTERNAL_ONLY_DO_NOT_EXPORT ||= new WeakMap());\n cache.set(key, base64UrlDecode(jwk.d!));\n }\n\n return key;\n }\n\n throw new Error(`Importing Ed25519 keys in the \"${format}\" format is unimplemented`);\n}\n","import cryptoImpl from '@solana/crypto-impl';\n\nimport {\n exportKeyPolyfill,\n generateKeyPolyfill,\n importKeyPolyfill,\n isPolyfilledKey,\n signPolyfill,\n verifyPolyfill,\n} from './secrets';\n\nexport function install() {\n if (__NODEJS__) {\n /**\n * Node only sets the `crypto` global variable when run with `--experimental-global-webcrypto`.\n * Let's set it unconditionally here.\n */\n globalThis.crypto ||= cryptoImpl;\n }\n\n if (!__BROWSER__ || globalThis.isSecureContext) {\n /**\n * Create `crypto.subtle` if it doesn't exist.\n */\n const originalCryptoObject = (globalThis.crypto ||= {} as Crypto);\n const originalSubtleCrypto = ((originalCryptoObject as Crypto & { subtle: SubtleCrypto }).subtle ||=\n {} as SubtleCrypto);\n\n /**\n * Override `SubtleCrypto#exportKey`\n */\n const originalExportKey = originalSubtleCrypto.exportKey as SubtleCrypto['exportKey'] | undefined;\n originalSubtleCrypto.exportKey = (async (...args: Parameters<SubtleCrypto['exportKey']>) => {\n const [_, key] = args;\n if (isPolyfilledKey(key)) {\n return await exportKeyPolyfill(...args);\n } else if (originalExportKey) {\n return await originalExportKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `exportKey` function exists to handle this call');\n }\n }) as SubtleCrypto['exportKey'];\n\n /**\n * Override `SubtleCrypto#generateKey`\n */\n const originalGenerateKey = originalSubtleCrypto.generateKey as SubtleCrypto['generateKey'] | undefined;\n let originalGenerateKeySupportsEd25519: Promise<boolean> | boolean | undefined;\n originalSubtleCrypto.generateKey = (async (...args: Parameters<SubtleCrypto['generateKey']>) => {\n const [algorithm] = args;\n if (algorithm !== 'Ed25519') {\n if (originalGenerateKey) {\n return await originalGenerateKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `generateKey` function exists to handle this call');\n }\n }\n let optimisticallyGeneratedKeyPair;\n if (originalGenerateKeySupportsEd25519 === undefined) {\n originalGenerateKeySupportsEd25519 = new Promise(resolve => {\n if (!originalGenerateKey) {\n resolve((originalGenerateKeySupportsEd25519 = false));\n return;\n }\n originalGenerateKey\n .apply(originalSubtleCrypto, args)\n .then(keyPair => {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n '`@solana/webcrypto-ed25519-polyfill` was installed in an ' +\n 'environment that supports Ed25519 key manipulation ' +\n 'natively. Falling back to the native implementation. ' +\n 'Consider installing this polyfill only in environments where ' +\n 'Ed25519 is not supported.',\n );\n }\n if (originalSubtleCrypto.generateKey !== originalGenerateKey) {\n originalSubtleCrypto.generateKey = originalGenerateKey;\n }\n optimisticallyGeneratedKeyPair = keyPair;\n resolve((originalGenerateKeySupportsEd25519 = true));\n })\n .catch(() => {\n resolve((originalGenerateKeySupportsEd25519 = false));\n });\n });\n }\n if (\n typeof originalGenerateKeySupportsEd25519 === 'boolean'\n ? originalGenerateKeySupportsEd25519\n : await originalGenerateKeySupportsEd25519\n ) {\n if (optimisticallyGeneratedKeyPair) {\n return optimisticallyGeneratedKeyPair;\n } else if (originalGenerateKey) {\n return await originalGenerateKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `generateKey` function exists to handle this call');\n }\n } else {\n const [_, extractable, keyUsages] = args;\n return generateKeyPolyfill(extractable, keyUsages);\n }\n }) as SubtleCrypto['generateKey'];\n\n /**\n * Override `SubtleCrypto#sign`\n */\n const originalSign = originalSubtleCrypto.sign as SubtleCrypto['sign'] | undefined;\n originalSubtleCrypto.sign = (async (...args: Parameters<SubtleCrypto['sign']>) => {\n const [_, key] = args;\n if (isPolyfilledKey(key)) {\n const [_, ...rest] = args;\n return await signPolyfill(...rest);\n } else if (originalSign) {\n return await originalSign.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `sign` function exists to handle this call');\n }\n }) as SubtleCrypto['sign'];\n\n /**\n * Override `SubtleCrypto#verify`\n */\n const originalVerify = originalSubtleCrypto.verify as SubtleCrypto['verify'] | undefined;\n originalSubtleCrypto.verify = (async (...args: Parameters<SubtleCrypto['verify']>) => {\n const [_, key] = args;\n if (isPolyfilledKey(key)) {\n const [_, ...rest] = args;\n return await verifyPolyfill(...rest);\n } else if (originalVerify) {\n return await originalVerify.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `verify` function exists to handle this call');\n }\n }) as SubtleCrypto['verify'];\n\n /**\n * Override `SubtleCrypto#importKey`\n */\n const originalImportKey = originalSubtleCrypto.importKey as SubtleCrypto['importKey'] | undefined;\n let originalImportKeySupportsEd25519: Promise<boolean> | boolean | undefined;\n originalSubtleCrypto.importKey = (async (...args: Parameters<SubtleCrypto['importKey']>) => {\n const [format, keyData, algorithm] = args;\n if (algorithm !== 'Ed25519') {\n if (originalImportKey) {\n return await originalImportKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `importKey` function exists to handle this call');\n }\n }\n let optimisticallyImportedKey;\n if (originalImportKeySupportsEd25519 === undefined) {\n originalImportKeySupportsEd25519 = new Promise(resolve => {\n if (!originalImportKey) {\n resolve((originalImportKeySupportsEd25519 = false));\n return;\n }\n originalImportKey\n .apply(originalSubtleCrypto, args)\n .then(key => {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n '`@solana/webcrypto-ed25519-polyfill` was included in an ' +\n 'environment that supports Ed25519 key manipulation ' +\n 'natively. Falling back to the native implementation. ' +\n 'Consider including this polyfill only in environments where ' +\n 'Ed25519 is not supported.',\n );\n }\n if (originalSubtleCrypto.importKey !== originalImportKey) {\n originalSubtleCrypto.importKey = originalImportKey;\n }\n optimisticallyImportedKey = key;\n resolve((originalImportKeySupportsEd25519 = true));\n })\n .catch(() => {\n resolve((originalImportKeySupportsEd25519 = false));\n });\n });\n }\n if (\n typeof originalImportKey === 'boolean'\n ? originalImportKeySupportsEd25519\n : await originalImportKeySupportsEd25519\n ) {\n if (optimisticallyImportedKey) {\n return optimisticallyImportedKey;\n } else if (originalImportKey) {\n return await originalImportKey.apply(originalSubtleCrypto, args);\n } else {\n throw new TypeError('No native `importKey` function exists to handle this call');\n }\n } else {\n const [_format, _keyData, _algorithm, extractable, keyUsages] = args;\n return importKeyPolyfill(format, keyData, extractable, keyUsages);\n }\n }) as SubtleCrypto['importKey'];\n }\n}\n"]}
|