@tktb-tess/util-fns 0.12.0 → 0.12.1

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.
@@ -0,0 +1 @@
1
+ (function(){let e=(e,t)=>{t<0n&&(t*=-1n);let n=e%t;return n<0n?n+t:n},t=(t,n,r)=>{if(r<1n)throw RangeError("`mod` must be positive");if(n<0n)throw RangeError("`power` must not be negative");if(t=e(t,r),r===1n)return 0n;if(t%r===1n||t%r===0n)return t;if(t===r-1n)return n&1n?r-1n:1n;let i=1n;for(;n>0n;)n&1n&&(i=i*t%r),t=t*t%r,n>>=1n;return i},n=(e,t)=>{if(t<1n||t%2n==0n)throw RangeError("`n` is out of range");for(;e<0n;)e+=t;e%=t;let n=1n;for(;e!==0n;){for(;e%2n==0n;){e/=2n;let r=t%8n;(r===3n||r===5n)&&(n*=-1n)}[e,t]=[t,e],e%4n==3n&&t%4n==3n&&(n*=-1n),e%=t}return t===1n?n:0n},r=e=>{if(e<0n)return!1;if(e===0n)return!0;let t=1n,n=e;for(;t+1n<n;){let r=(t+n)/2n;r*r<e?t=r:n=r}return e===t**2n||e===(t+1n)**2n},i=()=>typeof window>`u`&&typeof self<`u`&&`importScripts`in self,a=(e,t)=>{if(!i())throw Error(`this function must be used in Worker`);let n={success:!0,value:e,id:t};self.postMessage(n)},o=(e,t)=>{if(!i())throw Error(`this function must be used in Worker`);let n={success:!1,error:e,id:t};self.postMessage(n)},s=e=>{if(e<=1n)return!1;if(e%2n==0n)return e===2n;let n=e-1n,r=0n;for(;n%2n==0n;)n>>=1n,r+=1n;let[i,a]=[n,r],o=t(2n,i,e);if(o===1n)return!0;for(let t=0n;t<a;t++){if(o===e-1n)return!0;o=o*o%e}return!1},c=e=>{let t=5n,i=n(t,e);for(;i>0n;){if(t=t>0n?t+2n:t-2n,t*=-1n,t===-15n&&r(e))return[0n,0n];i=n(t,e)}return[t,i]},l=(t,n)=>(t&1n)==1n?e(t+n>>1n,n):e(t>>1n,n),u=(t,n,r,i)=>{let a=1n,o=r,s=t.toString(2).slice(1);for(let t of s)[a,o]=[e(a*o,n),l(o*o+i*a*a,n)],t===`1`&&([a,o]=[l(r*a+o,n),l(i*a+r*o,n)]);return[a,o]},d=(n,r,i,a)=>{if(n%2n!=1n)throw RangeError("`n` must be odd");let o=n+1n,s=0n;for(;o%2n==0n;)o>>=1n,s+=1n;let[c,l]=u(o,n,i,r),d=l;if(c===0n)return!0;a=t(a,o,n);for(let r=0n;r<s;r++){if(d===0n)return!0;d=e(d*d-2n*a,n),a=t(a,2n,n)}return!1},f=e=>{if(e<=1n)return!1;if(e%2n==0n)return e===2n;for(let t of[2n,3n,5n,7n,11n,13n,17n,19n,23n,29n,31n,37n,41n,43n,47n,53n,59n,61n,67n,71n,73n,79n,83n,89n,97n,101n,103n,107n,109n,113n,127n,131n,137n,139n,149n,151n,157n,163n,167n,173n,179n,181n,191n,193n,197n,199n,211n,223n,227n,229n,233n,239n,241n,251n,257n,263n,269n,271n,277n,281n,283n,293n,307n,311n,313n,317n,331n,337n,347n,349n,353n,359n,367n,373n,379n,383n,389n,397n,401n,409n,419n,421n,431n,433n,439n,443n,449n,457n,461n,463n,467n,479n,487n,491n,499n])if(e%t===0n)return e===t;if(!s(e))return!1;let[t,n]=c(e);return n===0n?!1:d(e,t,1n,(1n-t)/4n)};globalThis.onmessage=e=>{let{value:t,id:n}=e.data;try{a(f(t),n)}catch(e){o(e,n)}}})();
@@ -0,0 +1,33 @@
1
+ declare const __ID_BRAND__: unique symbol;
2
+ type ID = ReturnType<typeof crypto.randomUUID> & {
3
+ readonly [__ID_BRAND__]: unknown;
4
+ };
5
+ export interface WorkerMessage<T> {
6
+ readonly value: T;
7
+ readonly id: ID;
8
+ }
9
+ interface WorkerResultBase {
10
+ readonly id: ID;
11
+ }
12
+ interface WorkerSucceededResult<T> extends WorkerResultBase {
13
+ readonly success: true;
14
+ readonly value: T;
15
+ }
16
+ interface WorkerFailedResult extends WorkerResultBase {
17
+ readonly success: false;
18
+ readonly error: unknown;
19
+ }
20
+ export type WorkerResult<T> = WorkerSucceededResult<T> | WorkerFailedResult;
21
+ export declare class AsyncWorker<TPost = unknown, TRecv = unknown> {
22
+ #private;
23
+ constructor(w: Worker);
24
+ /**
25
+ * sends a message to the worker, and returns promise resolved by message from worker
26
+ * @param message
27
+ * @param options
28
+ */
29
+ readonly postMessage: (message: TPost, options?: StructuredSerializeOptions) => Promise<TRecv>;
30
+ }
31
+ export declare const postSuccess: <TRecv>(value: TRecv, id: ID) => void;
32
+ export declare const postFailed: (error: unknown, id: ID) => void;
33
+ export {};
package/dist/bundle.js CHANGED
@@ -47,34 +47,32 @@ var e = typeof document < "u" ? document.currentScript : null, t = e && e.tagNam
47
47
  resolve: e,
48
48
  reject: t
49
49
  };
50
- }, d = (e) => new Promise((t) => {
51
- setTimeout(t, e);
52
- }), f = (e) => Object.prototype.toString.call(e).slice(8, -1), p = (e) => (...t) => () => e(...t), ee = (e) => {
50
+ }, d = (e) => new Promise((t) => setTimeout(t, e)), ee = (e) => Object.prototype.toString.call(e).slice(8, -1), te = (e) => (...t) => () => e(...t), ne = (e) => {
53
51
  let t = [], n = [], r = "", i = !1;
54
52
  for (let a = 0; a < e.length; a++) {
55
53
  let o = e[a];
56
54
  o === "\"" && (a === 0 || e[a - 1] !== "\\") ? i = !i : o === "," && !i ? (n.push(r.trim()), r = "") : o === "\n" && !i ? (n.push(r.trim()), t.push(n), n = [], r = "") : r += o;
57
55
  }
58
56
  return n.push(r.trim()), t.push(n), t;
59
- }, te = async (e, t) => {
57
+ }, re = async (e, t) => {
60
58
  let n = new TextEncoder().encode(e), r = await crypto.subtle.digest(t, n);
61
59
  return new Uint8Array(r);
62
- }, ne = (e) => encodeURIComponent(e).replace(/[!'()*]/g, (e) => `%${e.charCodeAt(0).toString(16).toUpperCase()}`), re = (e) => {
60
+ }, f = (e) => encodeURIComponent(e).replace(/[!'()*]/g, (e) => `%${e.charCodeAt(0).toString(16).toUpperCase()}`), p = (e) => {
63
61
  if (e.includes("+")) throw URIError("an input string must not include `+`");
64
62
  return decodeURIComponent(e);
65
63
  }, ie = (e, t) => {
66
64
  let n = new Blob([e]).stream().pipeThrough(new CompressionStream(t));
67
65
  return new Response(n).bytes();
68
- }, ae = (e, t) => {
66
+ }, m = (e, t) => {
69
67
  let n = new Blob([e]).stream().pipeThrough(new DecompressionStream(t));
70
68
  return new Response(n).bytes();
71
- }, m = async (e, t) => {
69
+ }, h = async (e, t) => {
72
70
  let n = new Blob([e]).stream().pipeThrough(new CompressionStream(t));
73
71
  return i(await new Response(n).bytes());
74
- }, h = (e, t) => {
72
+ }, g = (e, t) => {
75
73
  let n = a(e), r = new Blob([n]).stream().pipeThrough(new DecompressionStream(t));
76
74
  return new Response(r).text();
77
- }, g = (e, t) => new Promise((n, r) => {
75
+ }, _ = (e, t) => new Promise((n, r) => {
78
76
  setTimeout(async () => {
79
77
  try {
80
78
  n(await e());
@@ -82,42 +80,42 @@ var e = typeof document < "u" ? document.currentScript : null, t = e && e.tagNam
82
80
  r(e);
83
81
  }
84
82
  }, t);
85
- }), _ = (e, t) => {
83
+ }), v = (e, t) => {
86
84
  if (t < -e.length || t >= e.length) throw RangeError("`index` is out of range");
87
85
  return e.at(t);
88
- }, v = (e, t) => {
89
- let n = _(e, t);
86
+ }, ae = (e, t) => {
87
+ let n = v(e, t);
90
88
  if (n == null) throw TypeError("value is nullable");
91
89
  return n;
92
- }, y = (e, t) => Math.floor(Math.random() * (t - e) + e), b = (e, t) => {
90
+ }, oe = (e, t) => Math.floor(Math.random() * (t - e) + e), y = (e, t) => {
93
91
  t < 0n && (t *= -1n);
94
92
  let n = e % t;
95
93
  return n < 0n ? n + t : n;
96
- }, x = (e, t = !1) => {
94
+ }, b = (e, t = !1) => {
97
95
  if (!Number.isFinite(e)) throw RangeError("`length` is not a valid number");
98
96
  if (e <= 0) throw RangeError("`length` must be positive");
99
97
  let n = Math.ceil(e / 8), r = crypto.getRandomValues(new Uint8Array(n)), i = Array.from(r, (e) => e.toString(2).padStart(8, "0")).join("").slice(0, e);
100
98
  return t && (i = i.replace(/^\d/, "1")), BigInt("0b" + i);
101
- }, S = (e, t) => {
99
+ }, x = (e, t) => {
102
100
  if (e >= t) throw RangeError("`min` must be smaller than `max`");
103
101
  let n = t - e, r = n.toString(2).length;
104
102
  return e + (() => {
105
103
  for (let e = 0; e < 1e5; e++) {
106
- let e = x(r);
107
- if (e >= C(2n, BigInt(r), n)) return e % n;
104
+ let e = b(r);
105
+ if (e >= S(2n, BigInt(r), n)) return e % n;
108
106
  }
109
107
  throw Error("Failed to generate a random bigint");
110
108
  })();
111
- }, C = (e, t, n) => {
109
+ }, S = (e, t, n) => {
112
110
  if (n < 1n) throw RangeError("`mod` must be positive");
113
111
  if (t < 0n) throw RangeError("`power` must not be negative");
114
- if (e = b(e, n), n === 1n) return 0n;
112
+ if (e = y(e, n), n === 1n) return 0n;
115
113
  if (e % n === 1n || e % n === 0n) return e;
116
114
  if (e === n - 1n) return t & 1n ? n - 1n : 1n;
117
115
  let r = 1n;
118
116
  for (; t > 0n;) t & 1n && (r = r * e % n), e = e * e % n, t >>= 1n;
119
117
  return r;
120
- }, w = (e, t) => {
118
+ }, C = (e, t) => {
121
119
  if (e === 0n && t === 0n) return {
122
120
  x: 0n,
123
121
  y: 0n,
@@ -160,7 +158,7 @@ var e = typeof document < "u" ? document.currentScript : null, t = e && e.tagNam
160
158
  y: o,
161
159
  gcd: s
162
160
  };
163
- }, T = (e, t) => {
161
+ }, w = (e, t) => {
164
162
  if (e >= t) return 1n;
165
163
  let n = BigInt((t - 2n).toString(2).length), r = (t - e) / 2n;
166
164
  if (n * r < 63n) {
@@ -169,20 +167,20 @@ var e = typeof document < "u" ? document.currentScript : null, t = e && e.tagNam
169
167
  return n;
170
168
  }
171
169
  let i = e + r | 1n;
172
- return T(e, i) * T(i, t);
173
- }, oe = (e) => {
170
+ return w(e, i) * w(i, t);
171
+ }, se = (e) => {
174
172
  let t = 3n, n = 1n, r = 1n, i = BigInt(e.toString(2).length) - 1n;
175
173
  for (let a = i - 1n; a > -1n; --a) {
176
174
  let i = (e >> a) + 1n | 1n;
177
- r *= T(t, i), t = i, n *= r;
175
+ r *= w(t, i), t = i, n *= r;
178
176
  }
179
177
  return n;
180
- }, se = (e) => {
178
+ }, ce = (e) => {
181
179
  if (e < 0n) throw RangeError("'n' must be non-negative");
182
180
  if (e === 0n) return 1n;
183
181
  let t = e - BigInt(e.toString(2).match(/1/g)?.length ?? 0);
184
- return oe(e) << t;
185
- }, E = (e, t) => (e >>> (t & 31) | e << (-t & 31)) >>> 0, D = (e, t) => BigInt.asUintN(64, e >> (t & 63n) | e << (-t & 63n)), O = (e, t) => {
182
+ return se(e) << t;
183
+ }, T = (e, t) => (e >>> (t & 31) | e << (-t & 31)) >>> 0, E = (e, t) => BigInt.asUintN(64, e >> (t & 63n) | e << (-t & 63n)), D = (e, t) => {
186
184
  if (t < 1n || t % 2n == 0n) throw RangeError("`n` is out of range");
187
185
  for (; e < 0n;) e += t;
188
186
  e %= t;
@@ -196,7 +194,7 @@ var e = typeof document < "u" ? document.currentScript : null, t = e && e.tagNam
196
194
  [e, t] = [t, e], e % 4n == 3n && t % 4n == 3n && (n *= -1n), e %= t;
197
195
  }
198
196
  return t === 1n ? n : 0n;
199
- }, k = (e) => {
197
+ }, O = (e) => {
200
198
  if (e < 0n) return !1;
201
199
  if (e === 0n) return !0;
202
200
  let t = 1n, n = e;
@@ -205,42 +203,77 @@ var e = typeof document < "u" ? document.currentScript : null, t = e && e.tagNam
205
203
  r * r < e ? t = r : n = r;
206
204
  }
207
205
  return e === t ** 2n || e === (t + 1n) ** 2n;
208
- }, A = (e) => {
206
+ }, k = class {
207
+ #e;
208
+ constructor(e) {
209
+ this.#e = e;
210
+ }
211
+ postMessage = (e, t) => new Promise((n, r) => {
212
+ let i = crypto.randomUUID(), a = (e) => {
213
+ let t = e.data;
214
+ t.id === i && (this.#e.removeEventListener("message", a), this.#e.removeEventListener("error", o), t.success ? n(t.value) : r(t.error));
215
+ }, o = (e) => {
216
+ this.#e.removeEventListener("message", a), this.#e.removeEventListener("error", o), r(e.error);
217
+ };
218
+ this.#e.addEventListener("message", a), this.#e.addEventListener("error", o);
219
+ let s = {
220
+ value: e,
221
+ id: i
222
+ };
223
+ this.#e.postMessage(s, t);
224
+ });
225
+ }, A = () => typeof window > "u" && typeof self < "u" && "importScripts" in self, j = (e, t) => {
226
+ if (!A()) throw Error("this function must be used in Worker");
227
+ let n = {
228
+ success: !0,
229
+ value: e,
230
+ id: t
231
+ };
232
+ self.postMessage(n);
233
+ }, M = (e, t) => {
234
+ if (!A()) throw Error("this function must be used in Worker");
235
+ let n = {
236
+ success: !1,
237
+ error: e,
238
+ id: t
239
+ };
240
+ self.postMessage(n);
241
+ }, N = (e) => {
209
242
  if (e <= 1n) return !1;
210
243
  if (e % 2n == 0n) return e === 2n;
211
244
  let t = e - 1n, n = 0n;
212
245
  for (; t % 2n == 0n;) t >>= 1n, n += 1n;
213
- let [r, i] = [t, n], a = C(2n, r, e);
246
+ let [r, i] = [t, n], a = S(2n, r, e);
214
247
  if (a === 1n) return !0;
215
248
  for (let t = 0n; t < i; t++) {
216
249
  if (a === e - 1n) return !0;
217
250
  a = a * a % e;
218
251
  }
219
252
  return !1;
220
- }, j = (e) => {
221
- let t = 5n, n = O(t, e);
253
+ }, P = (e) => {
254
+ let t = 5n, n = D(t, e);
222
255
  for (; n > 0n;) {
223
- if (t = t > 0n ? t + 2n : t - 2n, t *= -1n, t === -15n && k(e)) return [0n, 0n];
224
- n = O(t, e);
256
+ if (t = t > 0n ? t + 2n : t - 2n, t *= -1n, t === -15n && O(e)) return [0n, 0n];
257
+ n = D(t, e);
225
258
  }
226
259
  return [t, n];
227
- }, M = (e, t) => (e & 1n) == 1n ? b(e + t >> 1n, t) : b(e >> 1n, t), N = (e, t, n, r) => {
260
+ }, F = (e, t) => (e & 1n) == 1n ? y(e + t >> 1n, t) : y(e >> 1n, t), I = (e, t, n, r) => {
228
261
  let i = 1n, a = n, o = e.toString(2).slice(1);
229
- for (let e of o) [i, a] = [b(i * a, t), M(a * a + r * i * i, t)], e === "1" && ([i, a] = [M(n * i + a, t), M(r * i + n * a, t)]);
262
+ for (let e of o) [i, a] = [y(i * a, t), F(a * a + r * i * i, t)], e === "1" && ([i, a] = [F(n * i + a, t), F(r * i + n * a, t)]);
230
263
  return [i, a];
231
- }, P = (e, t, n, r) => {
264
+ }, L = (e, t, n, r) => {
232
265
  if (e % 2n != 1n) throw RangeError("`n` must be odd");
233
266
  let i = e + 1n, a = 0n;
234
267
  for (; i % 2n == 0n;) i >>= 1n, a += 1n;
235
- let [o, s] = N(i, e, n, t), c = s;
268
+ let [o, s] = I(i, e, n, t), c = s;
236
269
  if (o === 0n) return !0;
237
- r = C(r, i, e);
270
+ r = S(r, i, e);
238
271
  for (let t = 0n; t < a; t++) {
239
272
  if (c === 0n) return !0;
240
- c = b(c * c - 2n * r, e), r = C(r, 2n, e);
273
+ c = y(c * c - 2n * r, e), r = S(r, 2n, e);
241
274
  }
242
275
  return !1;
243
- }, F = (e) => {
276
+ }, R = (e) => {
244
277
  if (e <= 1n) return !1;
245
278
  if (e % 2n == 0n) return e === 2n;
246
279
  for (let t of [
@@ -340,44 +373,31 @@ var e = typeof document < "u" ? document.currentScript : null, t = e && e.tagNam
340
373
  491n,
341
374
  499n
342
375
  ]) if (e % t === 0n) return e === t;
343
- if (!A(e)) return !1;
344
- let [t, n] = j(e);
345
- return n === 0n ? !1 : P(e, t, 1n, (1n - t) / 4n);
346
- }, I = (e, t) => {
376
+ if (!N(e)) return !1;
377
+ let [t, n] = P(e);
378
+ return n === 0n ? !1 : L(e, t, 1n, (1n - t) / 4n);
379
+ }, z = (e, t) => {
347
380
  if (t < 2n) throw RangeError("`max` must be 2 or larger");
348
381
  for (let n = 0; n < 1e5; n++) {
349
- let n = S(e, t);
350
- if (F(n)) return n;
382
+ let n = x(e, t);
383
+ if (R(n)) return n;
351
384
  }
352
- throw Error("No primes were found");
353
- }, L = (e, t = !1) => {
385
+ throw Error("no primes were found");
386
+ }, B = (e, t = !1) => {
354
387
  if (e < 2) throw RangeError("`bitLength` must be 2 or larger");
355
388
  for (let n = 0; n < 1e5; n++) {
356
- let n = x(e, t);
357
- if (F(n)) return n;
389
+ let n = b(e, t);
390
+ if (R(n)) return n;
358
391
  }
359
- throw Error("NoPrimesFound");
360
- }, R, z = () => (R ||= new Worker(new URL(
392
+ throw Error("no primes were found");
393
+ }, V, H = () => (V ||= new k(new Worker(new URL(
361
394
  /* @vite-ignore */
362
- "/assets/bpsw_worker-D0gmU_qc.js",
395
+ "/assets/bpsw_worker-B1aaSJNb.js",
363
396
  "" + t.url
364
- ), { type: "module" }), R), B = async (e) => new Promise((t, n) => {
365
- let r = z(), i = crypto.randomUUID(), a = (e) => {
366
- let s = e.data;
367
- s.id === i && (r.removeEventListener("error", o), r.removeEventListener("message", a), s.success ? t(s.value) : n(s.error));
368
- }, o = (e) => {
369
- r.removeEventListener("error", o), r.removeEventListener("message", a), n(e);
370
- };
371
- r.addEventListener("message", a), r.addEventListener("error", o);
372
- let s = {
373
- id: i,
374
- value: e
375
- };
376
- r.postMessage(s);
377
- }), V = "Rational", H = class e {
397
+ ), { type: "module" })), V), U = (e) => H().postMessage(e), W = "Rational", G = class e {
378
398
  #e;
379
399
  #t;
380
- static name = V;
400
+ static name = W;
381
401
  constructor(e, t) {
382
402
  t === 0n ? (this.#t = 0n, this.#e = e === 0n ? 0n : e > 0n ? 1n : -1n) : t > 0n ? (this.#e = e, this.#t = t) : (this.#e = -e, this.#t = -t), this.#n();
383
403
  }
@@ -390,7 +410,7 @@ var e = typeof document < "u" ? document.currentScript : null, t = e && e.tagNam
390
410
  if (a === 0) return new e(r ? -i : i, 1n);
391
411
  t = 1 / a;
392
412
  let [o, s] = [1n, i], [c, l] = [0n, 1n];
393
- for (; `${l}`.length < n + 1;) {
413
+ for (; `${l}`.length <= n;) {
394
414
  let n = BigInt(Math.floor(t)), i = t - Number(n);
395
415
  if ([o, s] = [s, n * s + o], [c, l] = [l, n * l + c], i === 0) return new e(r ? -s : s, l);
396
416
  t = 1 / i;
@@ -398,48 +418,32 @@ var e = typeof document < "u" ? document.currentScript : null, t = e && e.tagNam
398
418
  return new e(r ? -o : o, c);
399
419
  }
400
420
  #n() {
401
- let { gcd: e } = w(this.#e, this.#t);
421
+ let { gcd: e } = C(this.#e, this.#t);
402
422
  e !== 0n && (this.#e /= e, this.#t /= e);
403
423
  }
404
- minus() {
405
- return new e(-this.#e, this.#t);
406
- }
407
- inverse() {
408
- return new e(this.#t, this.#e);
409
- }
410
- add(t) {
424
+ minus = () => new e(-this.#e, this.#t);
425
+ inverse = () => new e(this.#t, this.#e);
426
+ add = (t) => {
411
427
  let n = this.#t * t.#t;
412
428
  return new e(this.#e * t.#t + t.#e * this.#t, n);
413
- }
414
- substr(e) {
415
- return this.add(e.minus());
416
- }
417
- multiply(t) {
429
+ };
430
+ substr = (e) => this.add(e.minus());
431
+ multiply = (t) => {
418
432
  let n = this.#t * t.#t;
419
433
  return new e(this.#e * t.#e, n);
420
- }
421
- divide(e) {
422
- return this.multiply(e.inverse());
423
- }
424
- mediant(t) {
434
+ };
435
+ divide = (e) => this.multiply(e.inverse());
436
+ mediant = (t) => {
425
437
  let n = this.#t + t.#t;
426
438
  return new e(this.#e + t.#e, n);
427
- }
428
- toDecimal() {
429
- return Number(this.#e) / Number(this.#t);
430
- }
431
- toString() {
432
- return this.#e === 0n && this.#t === 0n ? "NaN" : this.#e === 0n ? "0" : this.#t === 0n ? this.#e < 0n ? "-Infinity" : "Infinity" : this.#t === 1n ? `${this.#e}` : `${this.#e}/${this.#t}`;
433
- }
434
- valueOf() {
435
- return this.toDecimal();
436
- }
437
- toJSON() {
438
- return {
439
- type: "Rational",
440
- value: ["0x" + this.#e.toString(16), "0x" + this.#t.toString(16)]
441
- };
442
- }
439
+ };
440
+ toDecimal = () => Number(this.#e) / Number(this.#t);
441
+ toString = () => this.#e === 0n && this.#t === 0n ? "NaN" : this.#e === 0n ? "0" : this.#t === 0n ? this.#e < 0n ? "-Infinity" : "Infinity" : this.#t === 1n ? `${this.#e}` : `${this.#e}/${this.#t}`;
442
+ valueOf = () => this.toDecimal();
443
+ toJSON = () => ({
444
+ type: "Rational",
445
+ value: ["0x" + this.#e.toString(16), "0x" + this.#t.toString(16)]
446
+ });
443
447
  static fromData(t) {
444
448
  return new e(BigInt(t.value[0]), BigInt(t.value[1]));
445
449
  }
@@ -451,19 +455,21 @@ var e = typeof document < "u" ? document.currentScript : null, t = e && e.tagNam
451
455
  return new e(BigInt(r), BigInt(i));
452
456
  }
453
457
  };
454
- Object.defineProperty(H.prototype, Symbol.toStringTag, { value: V });
458
+ Object.defineProperty(G.prototype, Symbol.toStringTag, { value: W });
455
459
  //#endregion
456
460
  //#region lib/named_error.ts
457
- var U = "NamedError", W = class extends Error {
458
- static name = U;
461
+ var K = "NamedError", q = class extends Error {
462
+ static name = K;
459
463
  errName;
460
464
  constructor(e, t, n) {
461
465
  super(t, n), this.errName = e;
462
466
  }
463
- toJSON() {
467
+ toJSON = () => {
464
468
  let e = (() => {
465
469
  let e = this.cause;
466
- if (e != null) return typeof e == "string" || typeof e == "number" || typeof e == "boolean" ? e : typeof e == "bigint" ? e.toString() : typeof e == "object" ? e instanceof Set || e instanceof Map ? Object.fromEntries(e) : e : void 0;
470
+ if (e == null) return e;
471
+ let t = e.toString();
472
+ return t === "[object Object]" ? JSON.stringify(e) : t;
467
473
  })(), { errName: t, message: n, stack: r } = this;
468
474
  return {
469
475
  name: t,
@@ -471,29 +477,29 @@ var U = "NamedError", W = class extends Error {
471
477
  stack: r,
472
478
  cause: e
473
479
  };
474
- }
480
+ };
475
481
  };
476
- Object.defineProperty(W.prototype, Symbol.toStringTag, { value: U });
482
+ Object.defineProperty(q.prototype, Symbol.toStringTag, { value: K });
477
483
  //#endregion
478
484
  //#region lib/random.ts
479
- var G = (e) => {
485
+ var J = (e) => {
480
486
  if (e === 0n) return 64n;
481
487
  let t = 0n;
482
488
  for (; e > 0n && !(e & 1n);) ++t, e >>= 1n;
483
489
  return BigInt.asUintN(64, t);
484
- }, K = (e, t) => {
490
+ }, Y = (e, t) => {
485
491
  let n = 0n, r = e & 2047n, i = 1023n - 1n;
486
- if (r > 0n) return i -= G(r), i;
492
+ if (r > 0n) return i -= J(r), i;
487
493
  i -= 11n;
488
494
  for (let e = 0; e < 1e5; ++e) {
489
495
  let e = t();
490
- if (e > 0n) return i -= G(e), i;
496
+ if (e > 0n) return i -= J(e), i;
491
497
  if (i -= 64n, i < n) return n;
492
498
  }
493
499
  throw Error("loop exceeded limit");
494
- }, ce = (e) => {
500
+ }, le = (e) => {
495
501
  let t = () => BigInt.asUintN(64, e()), n = () => {
496
- let e = t(), n = BigInt.asUintN(52, e >> 11n), r = n === 0n && e >> 63n == 1n ? K(e, t) + 1n : K(e, t), { buffer: i } = BigUint64Array.from([r << 52n | n]), a = new Float64Array(i)[0];
502
+ let e = t(), n = BigInt.asUintN(52, e >> 11n), r = n === 0n && e >> 63n == 1n ? Y(e, t) + 1n : Y(e, t), { buffer: i } = BigUint64Array.from([r << 52n | n]), a = new Float64Array(i)[0];
497
503
  if (a == null) throw Error("unexpected");
498
504
  return a;
499
505
  };
@@ -504,28 +510,26 @@ var G = (e) => {
504
510
  }
505
511
  throw Error("Loop limit exceeded");
506
512
  };
507
- }, le = [9600629759793949339n, 15726070495360670683n], ue = 6364136223846793005n, q = "PCGMinimal", J = class {
513
+ }, ue = [9600629759793949339n, 15726070495360670683n], de = 6364136223846793005n, X = "PCGMinimal", Z = class {
508
514
  #e;
509
- static name = q;
515
+ static name = X;
510
516
  constructor(e) {
511
517
  if (e && e[0] != null && e[1] != null) {
512
518
  if (this.#e = new BigUint64Array(2), this.#e[0] == null || this.#e[1] == null) throw TypeError("unexpected");
513
519
  this.#e[1] = e[1] << 1n | 1n, this.#t(), this.#e[0] += e[0], this.#t();
514
- } else this.#e = BigUint64Array.from(le);
520
+ } else this.#e = BigUint64Array.from(ue);
515
521
  }
516
522
  #t() {
517
523
  if (this.#e[0] == null || this.#e[1] == null) throw TypeError("unexpected");
518
- this.#e[0] = this.#e[0] * ue + this.#e[1];
524
+ this.#e[0] = this.#e[0] * de + this.#e[1];
519
525
  }
520
526
  get #n() {
521
527
  if (this.#e[0] == null || this.#e[1] == null) throw TypeError("unexpected");
522
528
  let e = this.#e[0], t = Number(e >> 59n);
523
- return E(Number(BigInt.asUintN(32, (e ^ e >> 18n) >> 27n)), t);
524
- }
525
- getRandU32() {
526
- return this.#t(), this.#n;
529
+ return T(Number(BigInt.asUintN(32, (e ^ e >> 18n) >> 27n)), t);
527
530
  }
528
- getBoundedRandU32(e) {
531
+ getRandU32 = () => (this.#t(), this.#n);
532
+ getBoundedRandU32 = (e) => {
529
533
  let t = 4294967296;
530
534
  if (e > t) throw RangeError("`bound` exceeded limit (2^32)");
531
535
  if (e <= 0) throw RangeError("'bound' must be positive");
@@ -535,49 +539,49 @@ var G = (e) => {
535
539
  if (t >= n) return t % e;
536
540
  }
537
541
  throw Error("exceeded loop limit");
538
- }
542
+ };
539
543
  *genRandU32s(e, t) {
540
544
  if (e <= 0) throw RangeError("'step' must be positive");
541
545
  for (let n = 0; n < e; n++) yield typeof t == "number" ? this.getBoundedRandU32(t) : this.getRandU32();
542
546
  }
543
547
  };
544
- Object.defineProperty(J.prototype, Symbol.toStringTag, { value: q });
548
+ Object.defineProperty(Z.prototype, Symbol.toStringTag, { value: X });
545
549
  //#endregion
546
550
  //#region lib/xoshiro_minimal.ts
547
- var Y = [
551
+ var fe = [
548
552
  13715198867125970446n,
549
553
  3333371893450545919n,
550
554
  5627726498316411518n,
551
555
  8467276975966080893n
552
- ], X = "XoshiroMinimal", Z = class {
556
+ ], Q = "XoshiroMinimal", $ = class {
553
557
  bits = 64;
554
558
  #e;
555
- static name = X;
559
+ static name = Q;
556
560
  constructor(e) {
557
561
  if (e && e[0] != null && e[1] != null && e[2] != null && e[3] != null) {
558
562
  if (this.#e = new BigUint64Array(4), this.#e[0] = e[0], this.#e[1] = e[1], this.#t(), this.#e[2] == null || this.#e[3] == null) throw TypeError("unexpected");
559
563
  this.#e[2] += e[2], this.#e[3] += e[3];
560
- } else this.#e = BigUint64Array.from(Y);
564
+ } else this.#e = BigUint64Array.from(fe);
561
565
  }
562
566
  #t() {
563
567
  if (this.#e[0] == null || this.#e[1] == null || this.#e[2] == null || this.#e[3] == null) throw TypeError("unexpected");
564
568
  let e = this.#e[1] << 17n;
565
- this.#e[2] ^= this.#e[0], this.#e[3] ^= this.#e[1], this.#e[1] ^= this.#e[2], this.#e[0] ^= this.#e[3], this.#e[2] ^= e, this.#e[3] = D(this.#e[3], 45n);
569
+ this.#e[2] ^= this.#e[0], this.#e[3] ^= this.#e[1], this.#e[1] ^= this.#e[2], this.#e[0] ^= this.#e[3], this.#e[2] ^= e, this.#e[3] = E(this.#e[3], 45n);
566
570
  }
567
571
  get value() {
568
572
  if (this.#e[0] == null || this.#e[3] == null) throw TypeError("unexpected");
569
- let e = D(this.#e[0] + this.#e[3], 23n) + this.#e[0];
573
+ let e = E(this.#e[0] + this.#e[3], 23n) + this.#e[0];
570
574
  return BigInt.asUintN(64, e);
571
575
  }
572
- getRandU64() {
576
+ getRandU64 = () => {
573
577
  let e = this.value;
574
578
  return this.#t(), e;
575
- }
576
- getRandU32() {
579
+ };
580
+ getRandU32 = () => {
577
581
  let e = BigInt.asUintN(32, this.getRandU64());
578
582
  return Number(e);
579
- }
580
- getBoundedRandU64(e) {
583
+ };
584
+ getBoundedRandU64 = (e) => {
581
585
  let t = 1n << 64n;
582
586
  if (e > t) throw RangeError("`bound` exceeded limit");
583
587
  if (e <= 0n) throw RangeError("`bound` must be positive");
@@ -587,13 +591,13 @@ var Y = [
587
591
  if (t >= n) return t % e;
588
592
  }
589
593
  throw Error("exceeded loop limit");
590
- }
591
- getBoundedRandU32(e) {
594
+ };
595
+ getBoundedRandU32 = (e) => {
592
596
  if (e > 2 ** 32) throw RangeError("`bound` exceeded limit");
593
597
  if (e <= 0n) throw RangeError("`bound` must be positive");
594
598
  let t = this.getBoundedRandU64(BigInt(e));
595
599
  return Number(t);
596
- }
600
+ };
597
601
  *genRandU64s(e, t) {
598
602
  if (e <= 0) throw RangeError("`step` must be positive");
599
603
  for (let n = 0; n < e; ++n) yield t === void 0 ? this.getRandU64() : this.getBoundedRandU64(t);
@@ -603,50 +607,22 @@ var Y = [
603
607
  for (let n = 0; n < e; ++n) yield t === void 0 ? this.getRandU32() : this.getBoundedRandU32(t);
604
608
  }
605
609
  };
606
- Object.defineProperty(Z.prototype, Symbol.toStringTag, { value: X });
607
- //#endregion
608
- //#region lib/worker_stream.ts
609
- var Q = "WorkerStream", $ = class extends ReadableStream {
610
- close;
611
- #e;
612
- static name = Q;
613
- constructor(e, t) {
614
- let n, r, i;
615
- super({
616
- start: (t) => {
617
- n = (e) => {
618
- t.enqueue(e.data);
619
- }, r = (i) => {
620
- e.removeEventListener("message", n), e.removeEventListener("error", r), t.error(Error(i.message, { cause: i.error }));
621
- }, i = () => {
622
- e.removeEventListener("message", n), e.removeEventListener("error", r), t.close();
623
- }, e.addEventListener("message", n), e.addEventListener("error", r);
624
- },
625
- cancel: () => {
626
- e.removeEventListener("message", n), e.removeEventListener("error", r);
627
- }
628
- }, t), this.close = i, this.#e = e;
629
- }
630
- postMessage = (e, t) => {
631
- this.#e.postMessage(e, t);
632
- };
633
- };
634
610
  Object.defineProperty($.prototype, Symbol.toStringTag, { value: Q });
635
611
  //#endregion
636
612
  //#region lib/leb128.ts
637
- var de = (e) => {
613
+ var pe = (e) => {
638
614
  let t = e < 0n;
639
615
  t && (e *= -1n);
640
616
  let n = e.toString(2).length, r = e === 1n << BigInt(n - 1) && !(n % 7) && t, i = Math.floor(n / 7) + 1;
641
617
  return r ? i - 1 : i;
642
- }, fe = (e) => {
643
- let t = de(e);
618
+ }, me = (e) => {
619
+ let t = pe(e);
644
620
  e = BigInt.asUintN(t * 7, e);
645
621
  let n = new Uint8Array(t);
646
622
  for (let r = 0; r < t - 1; ++r) n[r] = Number(e & 127n) | 128, e >>= 7n;
647
623
  let r = Number(e & 127n);
648
624
  return n[t - 1] = r, e >>= 7n, n;
649
- }, pe = (e) => {
625
+ }, he = (e) => {
650
626
  let t = e.length, n = 0n;
651
627
  for (let [t, r] of e.entries()) {
652
628
  let e = BigInt(r & 127);
@@ -655,4 +631,4 @@ var de = (e) => {
655
631
  return BigInt.asIntN(7 * t, n);
656
632
  };
657
633
  //#endregion
658
- export { W as NamedError, J as PCGMinimal, H as Rational, $ as WorkerStream, Z as XoshiroMinimal, F as bailliePSW, B as bailliePSWAsync, ie as compress, m as compressString, pe as decodeLEB128, re as decodeRFC3986URIComponent, ae as decompress, h as decompressString, fe as encodeLEB128, ne as encodeRFC3986URIComponent, w as exEuclidean, se as factorial, ce as floatRng, r as fromBase64, a as fromBase64URL, s as fromOct, te as getHash, x as getRandBIByBitLength, S as getRandBIByRange, L as getRandPrimeByBitLength, I as getRandPrimeByRange, y as getRndInt, f as getStringTag, l as isDeepStrictEqual, k as isSquare, O as jacobiSymbol, p as lazify, C as modPow, _ as nullableStrictAt, ee as parseCSV, b as residue, E as rot32, D as rot64, c as sameValueZero, g as setTimeoutPromise, d as sleep, v as strictAt, n as toBase64, i as toBase64URL, o as toOct, u as withResolvers };
634
+ export { k as AsyncWorker, q as NamedError, Z as PCGMinimal, G as Rational, $ as XoshiroMinimal, R as bailliePSW, U as bailliePSWAsync, ie as compress, h as compressString, he as decodeLEB128, p as decodeRFC3986URIComponent, m as decompress, g as decompressString, me as encodeLEB128, f as encodeRFC3986URIComponent, C as exEuclidean, ce as factorial, le as floatRng, r as fromBase64, a as fromBase64URL, s as fromOct, re as getHash, b as getRandBIByBitLength, x as getRandBIByRange, B as getRandPrimeByBitLength, z as getRandPrimeByRange, oe as getRndInt, ee as getStringTag, l as isDeepStrictEqual, O as isSquare, D as jacobiSymbol, te as lazify, S as modPow, v as nullableStrictAt, ne as parseCSV, M as postFailed, j as postSuccess, y as residue, T as rot32, E as rot64, c as sameValueZero, _ as setTimeoutPromise, d as sleep, ae as strictAt, n as toBase64, i as toBase64URL, o as toOct, u as withResolvers };
@@ -1,2 +1,2 @@
1
- var UtilFns=(function(e){var t=typeof document<`u`?document.currentScript:null,n=t&&t.tagName.toUpperCase()===`SCRIPT`&&t.src||new URL(`main.js`,document.baseURI).href;Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var r=e=>{let t=Array.from(e,e=>String.fromCharCode(e));return btoa(t.join(``))},i=e=>{let t=atob(e);return Uint8Array.from(t,e=>e.charCodeAt(0))},a=e=>r(e).replaceAll(`+`,`-`).replaceAll(`/`,`_`).replace(/=+$/,``),o=e=>{let t=4-(e.length&3)&3;return i(e.concat(`=`.repeat(t)).replaceAll(`-`,`+`).replaceAll(`_`,`/`))},s=e=>{let t=Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``),n=(6-t.length%6)%6,r=`0`.repeat(n).concat(t).matchAll(/.{6}/g);return Array.from(r,e=>Number.parseInt(e[0],16).toString(8).padStart(8,`0`)).join(``).replace(/^0+/,``)},c=e=>{let t=8-(e.length&7)&7,n=`0`.repeat(t).concat(e).matchAll(/.{8}/g),r=Array.from(n,e=>Number.parseInt(e[0],8).toString(16).padStart(6,`0`)).join(``).matchAll(/.{2}/g);return Uint8Array.from(r,e=>Number.parseInt(e[0],16))},l=(e,t)=>[e].includes(t),u=(e,t)=>{if(typeof e!=typeof t)return!1;let n=Object.prototype.toString.call(e);if(n!==Object.prototype.toString.call(t))return!1;if(typeof e==`string`||typeof e==`bigint`||typeof e==`boolean`||typeof e==`symbol`||e==null)return e===t;if(typeof e==`number`)return e!==e&&t!==t||e===t;if(typeof e==`function`)return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!u(e[n],t[n]))return!1;return!0}if(e instanceof Set&&t instanceof Set)return!!u([...e.values()],[...t.values()]);if(e instanceof Map&&t instanceof Map)return!(!u([...e.keys()],[...t.keys()])||!u([...e.values()],[...t.values()]));if(n===`[object Object]`){let n=e,r=t,i=Object.keys(n),a=Object.keys(r);for(let e of i){let t=a.find(t=>t===e);if(t===void 0)return!1;let[i,o]=[n[e],r[t]];if(!u(i,o))return!1}return!0}throw TypeError(`comparing these objects is unavailable: ${e}, ${t}`,{cause:[e,t]})},d=()=>{let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}},f=e=>new Promise(t=>{setTimeout(t,e)}),ee=e=>Object.prototype.toString.call(e).slice(8,-1),te=e=>(...t)=>()=>e(...t),p=e=>{let t=[],n=[],r=``,i=!1;for(let a=0;a<e.length;a++){let o=e[a];o===`"`&&(a===0||e[a-1]!==`\\`)?i=!i:o===`,`&&!i?(n.push(r.trim()),r=``):o===`
2
- `&&!i?(n.push(r.trim()),t.push(n),n=[],r=``):r+=o}return n.push(r.trim()),t.push(n),t},m=async(e,t)=>{let n=new TextEncoder().encode(e),r=await crypto.subtle.digest(t,n);return new Uint8Array(r)},h=e=>encodeURIComponent(e).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`),g=e=>{if(e.includes(`+`))throw URIError("an input string must not include `+`");return decodeURIComponent(e)},ne=(e,t)=>{let n=new Blob([e]).stream().pipeThrough(new CompressionStream(t));return new Response(n).bytes()},re=(e,t)=>{let n=new Blob([e]).stream().pipeThrough(new DecompressionStream(t));return new Response(n).bytes()},ie=async(e,t)=>{let n=new Blob([e]).stream().pipeThrough(new CompressionStream(t));return a(await new Response(n).bytes())},ae=(e,t)=>{let n=o(e),r=new Blob([n]).stream().pipeThrough(new DecompressionStream(t));return new Response(r).text()},oe=(e,t)=>new Promise((n,r)=>{setTimeout(async()=>{try{n(await e())}catch(e){r(e)}},t)}),_=(e,t)=>{if(t<-e.length||t>=e.length)throw RangeError("`index` is out of range");return e.at(t)},v=(e,t)=>{let n=_(e,t);if(n==null)throw TypeError(`value is nullable`);return n},y=(e,t)=>Math.floor(Math.random()*(t-e)+e),b=(e,t)=>{t<0n&&(t*=-1n);let n=e%t;return n<0n?n+t:n},x=(e,t=!1)=>{if(!Number.isFinite(e))throw RangeError("`length` is not a valid number");if(e<=0)throw RangeError("`length` must be positive");let n=Math.ceil(e/8),r=crypto.getRandomValues(new Uint8Array(n)),i=Array.from(r,e=>e.toString(2).padStart(8,`0`)).join(``).slice(0,e);return t&&(i=i.replace(/^\d/,`1`)),BigInt(`0b`+i)},S=(e,t)=>{if(e>=t)throw RangeError("`min` must be smaller than `max`");let n=t-e,r=n.toString(2).length;return e+(()=>{for(let e=0;e<1e5;e++){let e=x(r);if(e>=C(2n,BigInt(r),n))return e%n}throw Error(`Failed to generate a random bigint`)})()},C=(e,t,n)=>{if(n<1n)throw RangeError("`mod` must be positive");if(t<0n)throw RangeError("`power` must not be negative");if(e=b(e,n),n===1n)return 0n;if(e%n===1n||e%n===0n)return e;if(e===n-1n)return t&1n?n-1n:1n;let r=1n;for(;t>0n;)t&1n&&(r=r*e%n),e=e*e%n,t>>=1n;return r},w=(e,t)=>{if(e===0n&&t===0n)return{x:0n,y:0n,gcd:0n};if(e===0n)return t>0n?{x:0n,y:-1n,gcd:t}:{x:0n,y:1n,gcd:-t};if(t===0n)return e>0n?{x:1n,y:0n,gcd:e}:{x:-1n,y:0n,gcd:-e};let[n,r,i]=[1n,0n,e],[a,o,s]=[0n,-1n,t];for(;;){let e=i/s,t=i-e*s;if(t===0n)break;[n,a]=[a,n-e*a],[r,o]=[o,r-e*o],[i,s]=[s,t]}return s<0n&&(a*=-1n,o*=-1n,s*=-1n),{x:a,y:o,gcd:s}},T=(e,t)=>{if(e>=t)return 1n;let n=BigInt((t-2n).toString(2).length),r=(t-e)/2n;if(n*r<63n){let n=e;for(let r=e+2n;r<t;r+=2n)n*=r;return n}let i=e+r|1n;return T(e,i)*T(i,t)},se=e=>{let t=3n,n=1n,r=1n,i=BigInt(e.toString(2).length)-1n;for(let a=i-1n;a>-1n;--a){let i=(e>>a)+1n|1n;r*=T(t,i),t=i,n*=r}return n},ce=e=>{if(e<0n)throw RangeError(`'n' must be non-negative`);if(e===0n)return 1n;let t=e-BigInt(e.toString(2).match(/1/g)?.length??0);return se(e)<<t},E=(e,t)=>(e>>>(t&31)|e<<(-t&31))>>>0,D=(e,t)=>BigInt.asUintN(64,e>>(t&63n)|e<<(-t&63n)),O=(e,t)=>{if(t<1n||t%2n==0n)throw RangeError("`n` is out of range");for(;e<0n;)e+=t;e%=t;let n=1n;for(;e!==0n;){for(;e%2n==0n;){e/=2n;let r=t%8n;(r===3n||r===5n)&&(n*=-1n)}[e,t]=[t,e],e%4n==3n&&t%4n==3n&&(n*=-1n),e%=t}return t===1n?n:0n},k=e=>{if(e<0n)return!1;if(e===0n)return!0;let t=1n,n=e;for(;t+1n<n;){let r=(t+n)/2n;r*r<e?t=r:n=r}return e===t**2n||e===(t+1n)**2n},A=e=>{if(e<=1n)return!1;if(e%2n==0n)return e===2n;let t=e-1n,n=0n;for(;t%2n==0n;)t>>=1n,n+=1n;let[r,i]=[t,n],a=C(2n,r,e);if(a===1n)return!0;for(let t=0n;t<i;t++){if(a===e-1n)return!0;a=a*a%e}return!1},j=e=>{let t=5n,n=O(t,e);for(;n>0n;){if(t=t>0n?t+2n:t-2n,t*=-1n,t===-15n&&k(e))return[0n,0n];n=O(t,e)}return[t,n]},M=(e,t)=>(e&1n)==1n?b(e+t>>1n,t):b(e>>1n,t),N=(e,t,n,r)=>{let i=1n,a=n,o=e.toString(2).slice(1);for(let e of o)[i,a]=[b(i*a,t),M(a*a+r*i*i,t)],e===`1`&&([i,a]=[M(n*i+a,t),M(r*i+n*a,t)]);return[i,a]},P=(e,t,n,r)=>{if(e%2n!=1n)throw RangeError("`n` must be odd");let i=e+1n,a=0n;for(;i%2n==0n;)i>>=1n,a+=1n;let[o,s]=N(i,e,n,t),c=s;if(o===0n)return!0;r=C(r,i,e);for(let t=0n;t<a;t++){if(c===0n)return!0;c=b(c*c-2n*r,e),r=C(r,2n,e)}return!1},F=e=>{if(e<=1n)return!1;if(e%2n==0n)return e===2n;for(let t of[2n,3n,5n,7n,11n,13n,17n,19n,23n,29n,31n,37n,41n,43n,47n,53n,59n,61n,67n,71n,73n,79n,83n,89n,97n,101n,103n,107n,109n,113n,127n,131n,137n,139n,149n,151n,157n,163n,167n,173n,179n,181n,191n,193n,197n,199n,211n,223n,227n,229n,233n,239n,241n,251n,257n,263n,269n,271n,277n,281n,283n,293n,307n,311n,313n,317n,331n,337n,347n,349n,353n,359n,367n,373n,379n,383n,389n,397n,401n,409n,419n,421n,431n,433n,439n,443n,449n,457n,461n,463n,467n,479n,487n,491n,499n])if(e%t===0n)return e===t;if(!A(e))return!1;let[t,n]=j(e);return n===0n?!1:P(e,t,1n,(1n-t)/4n)},I=(e,t)=>{if(t<2n)throw RangeError("`max` must be 2 or larger");for(let n=0;n<1e5;n++){let n=S(e,t);if(F(n))return n}throw Error(`No primes were found`)},L=(e,t=!1)=>{if(e<2)throw RangeError("`bitLength` must be 2 or larger");for(let n=0;n<1e5;n++){let n=x(e,t);if(F(n))return n}throw Error(`NoPrimesFound`)},R,z=()=>(R||=new Worker(new URL(`/assets/bpsw_worker-D0gmU_qc.js`,``+n.url),{type:`module`}),R),B=async e=>new Promise((t,n)=>{let r=z(),i=crypto.randomUUID(),a=e=>{let s=e.data;s.id===i&&(r.removeEventListener(`error`,o),r.removeEventListener(`message`,a),s.success?t(s.value):n(s.error))},o=e=>{r.removeEventListener(`error`,o),r.removeEventListener(`message`,a),n(e)};r.addEventListener(`message`,a),r.addEventListener(`error`,o);let s={id:i,value:e};r.postMessage(s)}),V=`Rational`,H=class e{#e;#t;static name=V;constructor(e,t){t===0n?(this.#t=0n,this.#e=e===0n?0n:e>0n?1n:-1n):t>0n?(this.#e=e,this.#t=t):(this.#e=-e,this.#t=-t),this.#n()}static fromDecimal(t,n=5){if(Number.isNaN(t))return new e(0n,0n);if(Math.abs(t)===1/0)return new e(t>0?1n:-1n,0n);let r=t<0;r&&(t*=-1);let i=BigInt(Math.floor(t)),a=t-Number(i);if(a===0)return new e(r?-i:i,1n);t=1/a;let[o,s]=[1n,i],[c,l]=[0n,1n];for(;`${l}`.length<n+1;){let n=BigInt(Math.floor(t)),i=t-Number(n);if([o,s]=[s,n*s+o],[c,l]=[l,n*l+c],i===0)return new e(r?-s:s,l);t=1/i}return new e(r?-o:o,c)}#n(){let{gcd:e}=w(this.#e,this.#t);e!==0n&&(this.#e/=e,this.#t/=e)}minus(){return new e(-this.#e,this.#t)}inverse(){return new e(this.#t,this.#e)}add(t){let n=this.#t*t.#t;return new e(this.#e*t.#t+t.#e*this.#t,n)}substr(e){return this.add(e.minus())}multiply(t){let n=this.#t*t.#t;return new e(this.#e*t.#e,n)}divide(e){return this.multiply(e.inverse())}mediant(t){let n=this.#t+t.#t;return new e(this.#e+t.#e,n)}toDecimal(){return Number(this.#e)/Number(this.#t)}toString(){return this.#e===0n&&this.#t===0n?`NaN`:this.#e===0n?`0`:this.#t===0n?this.#e<0n?`-Infinity`:`Infinity`:this.#t===1n?`${this.#e}`:`${this.#e}/${this.#t}`}valueOf(){return this.toDecimal()}toJSON(){return{type:`Rational`,value:[`0x`+this.#e.toString(16),`0x`+this.#t.toString(16)]}}static fromData(t){return new e(BigInt(t.value[0]),BigInt(t.value[1]))}static parse(t){let n=/^\s*(\d+)\s*\/\s*(\d+)\s*$/.exec(t);if(!n)throw Error(`cannot parse`);let r=n.at(1),i=n.at(2);if(!r||!i)throw Error(`cannot parse`);return new e(BigInt(r),BigInt(i))}};Object.defineProperty(H.prototype,Symbol.toStringTag,{value:V});var U=`NamedError`,W=class extends Error{static name=U;errName;constructor(e,t,n){super(t,n),this.errName=e}toJSON(){let e=(()=>{let e=this.cause;if(e!=null)return typeof e==`string`||typeof e==`number`||typeof e==`boolean`?e:typeof e==`bigint`?e.toString():typeof e==`object`?e instanceof Set||e instanceof Map?Object.fromEntries(e):e:void 0})(),{errName:t,message:n,stack:r}=this;return{name:t,message:n,stack:r,cause:e}}};Object.defineProperty(W.prototype,Symbol.toStringTag,{value:U});var G=e=>{if(e===0n)return 64n;let t=0n;for(;e>0n&&!(e&1n);)++t,e>>=1n;return BigInt.asUintN(64,t)},K=(e,t)=>{let n=0n,r=e&2047n,i=1023n-1n;if(r>0n)return i-=G(r),i;i-=11n;for(let e=0;e<1e5;++e){let e=t();if(e>0n)return i-=G(e),i;if(i-=64n,i<n)return n}throw Error(`loop exceeded limit`)},q=e=>{let t=()=>BigInt.asUintN(64,e()),n=()=>{let e=t(),n=BigInt.asUintN(52,e>>11n),r=n===0n&&e>>63n==1n?K(e,t)+1n:K(e,t),{buffer:i}=BigUint64Array.from([r<<52n|n]),a=new Float64Array(i)[0];if(a==null)throw Error(`unexpected`);return a};return()=>{for(let e=0;e<1e5;++e){let e=n();if(e<1)return e}throw Error(`Loop limit exceeded`)}},le=[9600629759793949339n,15726070495360670683n],ue=6364136223846793005n,J=`PCGMinimal`,Y=class{#e;static name=J;constructor(e){if(e&&e[0]!=null&&e[1]!=null){if(this.#e=new BigUint64Array(2),this.#e[0]==null||this.#e[1]==null)throw TypeError(`unexpected`);this.#e[1]=e[1]<<1n|1n,this.#t(),this.#e[0]+=e[0],this.#t()}else this.#e=BigUint64Array.from(le)}#t(){if(this.#e[0]==null||this.#e[1]==null)throw TypeError(`unexpected`);this.#e[0]=this.#e[0]*ue+this.#e[1]}get#n(){if(this.#e[0]==null||this.#e[1]==null)throw TypeError(`unexpected`);let e=this.#e[0],t=Number(e>>59n);return E(Number(BigInt.asUintN(32,(e^e>>18n)>>27n)),t)}getRandU32(){return this.#t(),this.#n}getBoundedRandU32(e){let t=4294967296;if(e>t)throw RangeError("`bound` exceeded limit (2^32)");if(e<=0)throw RangeError(`'bound' must be positive`);let n=t%e;for(let t=0;t<1e5;++t){let t=this.getRandU32();if(t>=n)return t%e}throw Error(`exceeded loop limit`)}*genRandU32s(e,t){if(e<=0)throw RangeError(`'step' must be positive`);for(let n=0;n<e;n++)yield typeof t==`number`?this.getBoundedRandU32(t):this.getRandU32()}};Object.defineProperty(Y.prototype,Symbol.toStringTag,{value:J});var de=[13715198867125970446n,3333371893450545919n,5627726498316411518n,8467276975966080893n],X=`XoshiroMinimal`,Z=class{bits=64;#e;static name=X;constructor(e){if(e&&e[0]!=null&&e[1]!=null&&e[2]!=null&&e[3]!=null){if(this.#e=new BigUint64Array(4),this.#e[0]=e[0],this.#e[1]=e[1],this.#t(),this.#e[2]==null||this.#e[3]==null)throw TypeError(`unexpected`);this.#e[2]+=e[2],this.#e[3]+=e[3]}else this.#e=BigUint64Array.from(de)}#t(){if(this.#e[0]==null||this.#e[1]==null||this.#e[2]==null||this.#e[3]==null)throw TypeError(`unexpected`);let e=this.#e[1]<<17n;this.#e[2]^=this.#e[0],this.#e[3]^=this.#e[1],this.#e[1]^=this.#e[2],this.#e[0]^=this.#e[3],this.#e[2]^=e,this.#e[3]=D(this.#e[3],45n)}get value(){if(this.#e[0]==null||this.#e[3]==null)throw TypeError(`unexpected`);let e=D(this.#e[0]+this.#e[3],23n)+this.#e[0];return BigInt.asUintN(64,e)}getRandU64(){let e=this.value;return this.#t(),e}getRandU32(){let e=BigInt.asUintN(32,this.getRandU64());return Number(e)}getBoundedRandU64(e){let t=1n<<64n;if(e>t)throw RangeError("`bound` exceeded limit");if(e<=0n)throw RangeError("`bound` must be positive");let n=t%e;for(let t=0;t<1e5;++t){let t=this.getRandU64();if(t>=n)return t%e}throw Error(`exceeded loop limit`)}getBoundedRandU32(e){if(e>2**32)throw RangeError("`bound` exceeded limit");if(e<=0n)throw RangeError("`bound` must be positive");let t=this.getBoundedRandU64(BigInt(e));return Number(t)}*genRandU64s(e,t){if(e<=0)throw RangeError("`step` must be positive");for(let n=0;n<e;++n)yield t===void 0?this.getRandU64():this.getBoundedRandU64(t)}*genRandU32s(e,t){if(e<=0)throw RangeError("`step` must be positive");for(let n=0;n<e;++n)yield t===void 0?this.getRandU32():this.getBoundedRandU32(t)}};Object.defineProperty(Z.prototype,Symbol.toStringTag,{value:X});var Q=`WorkerStream`,$=class extends ReadableStream{close;#e;static name=Q;constructor(e,t){let n,r,i;super({start:t=>{n=e=>{t.enqueue(e.data)},r=i=>{e.removeEventListener(`message`,n),e.removeEventListener(`error`,r),t.error(Error(i.message,{cause:i.error}))},i=()=>{e.removeEventListener(`message`,n),e.removeEventListener(`error`,r),t.close()},e.addEventListener(`message`,n),e.addEventListener(`error`,r)},cancel:()=>{e.removeEventListener(`message`,n),e.removeEventListener(`error`,r)}},t),this.close=i,this.#e=e}postMessage=(e,t)=>{this.#e.postMessage(e,t)}};Object.defineProperty($.prototype,Symbol.toStringTag,{value:Q});var fe=e=>{let t=e<0n;t&&(e*=-1n);let n=e.toString(2).length,r=e===1n<<BigInt(n-1)&&!(n%7)&&t,i=Math.floor(n/7)+1;return r?i-1:i};return e.NamedError=W,e.PCGMinimal=Y,e.Rational=H,e.WorkerStream=$,e.XoshiroMinimal=Z,e.bailliePSW=F,e.bailliePSWAsync=B,e.compress=ne,e.compressString=ie,e.decodeLEB128=e=>{let t=e.length,n=0n;for(let[t,r]of e.entries()){let e=BigInt(r&127);n+=e<<BigInt(7*t)}return BigInt.asIntN(7*t,n)},e.decodeRFC3986URIComponent=g,e.decompress=re,e.decompressString=ae,e.encodeLEB128=e=>{let t=fe(e);e=BigInt.asUintN(t*7,e);let n=new Uint8Array(t);for(let r=0;r<t-1;++r)n[r]=Number(e&127n)|128,e>>=7n;let r=Number(e&127n);return n[t-1]=r,e>>=7n,n},e.encodeRFC3986URIComponent=h,e.exEuclidean=w,e.factorial=ce,e.floatRng=q,e.fromBase64=i,e.fromBase64URL=o,e.fromOct=c,e.getHash=m,e.getRandBIByBitLength=x,e.getRandBIByRange=S,e.getRandPrimeByBitLength=L,e.getRandPrimeByRange=I,e.getRndInt=y,e.getStringTag=ee,e.isDeepStrictEqual=u,e.isSquare=k,e.jacobiSymbol=O,e.lazify=te,e.modPow=C,e.nullableStrictAt=_,e.parseCSV=p,e.residue=b,e.rot32=E,e.rot64=D,e.sameValueZero=l,e.setTimeoutPromise=oe,e.sleep=f,e.strictAt=v,e.toBase64=r,e.toBase64URL=a,e.toOct=s,e.withResolvers=d,e})({});
1
+ var UtilFns=(function(e){var t=typeof document<`u`?document.currentScript:null,n=t&&t.tagName.toUpperCase()===`SCRIPT`&&t.src||new URL(`main.js`,document.baseURI).href;Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var r=e=>{let t=Array.from(e,e=>String.fromCharCode(e));return btoa(t.join(``))},i=e=>{let t=atob(e);return Uint8Array.from(t,e=>e.charCodeAt(0))},a=e=>r(e).replaceAll(`+`,`-`).replaceAll(`/`,`_`).replace(/=+$/,``),o=e=>{let t=4-(e.length&3)&3;return i(e.concat(`=`.repeat(t)).replaceAll(`-`,`+`).replaceAll(`_`,`/`))},s=e=>{let t=Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``),n=(6-t.length%6)%6,r=`0`.repeat(n).concat(t).matchAll(/.{6}/g);return Array.from(r,e=>Number.parseInt(e[0],16).toString(8).padStart(8,`0`)).join(``).replace(/^0+/,``)},c=e=>{let t=8-(e.length&7)&7,n=`0`.repeat(t).concat(e).matchAll(/.{8}/g),r=Array.from(n,e=>Number.parseInt(e[0],8).toString(16).padStart(6,`0`)).join(``).matchAll(/.{2}/g);return Uint8Array.from(r,e=>Number.parseInt(e[0],16))},l=(e,t)=>[e].includes(t),u=(e,t)=>{if(typeof e!=typeof t)return!1;let n=Object.prototype.toString.call(e);if(n!==Object.prototype.toString.call(t))return!1;if(typeof e==`string`||typeof e==`bigint`||typeof e==`boolean`||typeof e==`symbol`||e==null)return e===t;if(typeof e==`number`)return e!==e&&t!==t||e===t;if(typeof e==`function`)return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!u(e[n],t[n]))return!1;return!0}if(e instanceof Set&&t instanceof Set)return!!u([...e.values()],[...t.values()]);if(e instanceof Map&&t instanceof Map)return!(!u([...e.keys()],[...t.keys()])||!u([...e.values()],[...t.values()]));if(n===`[object Object]`){let n=e,r=t,i=Object.keys(n),a=Object.keys(r);for(let e of i){let t=a.find(t=>t===e);if(t===void 0)return!1;let[i,o]=[n[e],r[t]];if(!u(i,o))return!1}return!0}throw TypeError(`comparing these objects is unavailable: ${e}, ${t}`,{cause:[e,t]})},d=()=>{let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}},ee=e=>new Promise(t=>setTimeout(t,e)),te=e=>Object.prototype.toString.call(e).slice(8,-1),ne=e=>(...t)=>()=>e(...t),f=e=>{let t=[],n=[],r=``,i=!1;for(let a=0;a<e.length;a++){let o=e[a];o===`"`&&(a===0||e[a-1]!==`\\`)?i=!i:o===`,`&&!i?(n.push(r.trim()),r=``):o===`
2
+ `&&!i?(n.push(r.trim()),t.push(n),n=[],r=``):r+=o}return n.push(r.trim()),t.push(n),t},p=async(e,t)=>{let n=new TextEncoder().encode(e),r=await crypto.subtle.digest(t,n);return new Uint8Array(r)},re=e=>encodeURIComponent(e).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`),ie=e=>{if(e.includes(`+`))throw URIError("an input string must not include `+`");return decodeURIComponent(e)},m=(e,t)=>{let n=new Blob([e]).stream().pipeThrough(new CompressionStream(t));return new Response(n).bytes()},h=(e,t)=>{let n=new Blob([e]).stream().pipeThrough(new DecompressionStream(t));return new Response(n).bytes()},g=async(e,t)=>{let n=new Blob([e]).stream().pipeThrough(new CompressionStream(t));return a(await new Response(n).bytes())},ae=(e,t)=>{let n=o(e),r=new Blob([n]).stream().pipeThrough(new DecompressionStream(t));return new Response(r).text()},oe=(e,t)=>new Promise((n,r)=>{setTimeout(async()=>{try{n(await e())}catch(e){r(e)}},t)}),_=(e,t)=>{if(t<-e.length||t>=e.length)throw RangeError("`index` is out of range");return e.at(t)},se=(e,t)=>{let n=_(e,t);if(n==null)throw TypeError(`value is nullable`);return n},v=(e,t)=>Math.floor(Math.random()*(t-e)+e),y=(e,t)=>{t<0n&&(t*=-1n);let n=e%t;return n<0n?n+t:n},b=(e,t=!1)=>{if(!Number.isFinite(e))throw RangeError("`length` is not a valid number");if(e<=0)throw RangeError("`length` must be positive");let n=Math.ceil(e/8),r=crypto.getRandomValues(new Uint8Array(n)),i=Array.from(r,e=>e.toString(2).padStart(8,`0`)).join(``).slice(0,e);return t&&(i=i.replace(/^\d/,`1`)),BigInt(`0b`+i)},x=(e,t)=>{if(e>=t)throw RangeError("`min` must be smaller than `max`");let n=t-e,r=n.toString(2).length;return e+(()=>{for(let e=0;e<1e5;e++){let e=b(r);if(e>=S(2n,BigInt(r),n))return e%n}throw Error(`Failed to generate a random bigint`)})()},S=(e,t,n)=>{if(n<1n)throw RangeError("`mod` must be positive");if(t<0n)throw RangeError("`power` must not be negative");if(e=y(e,n),n===1n)return 0n;if(e%n===1n||e%n===0n)return e;if(e===n-1n)return t&1n?n-1n:1n;let r=1n;for(;t>0n;)t&1n&&(r=r*e%n),e=e*e%n,t>>=1n;return r},C=(e,t)=>{if(e===0n&&t===0n)return{x:0n,y:0n,gcd:0n};if(e===0n)return t>0n?{x:0n,y:-1n,gcd:t}:{x:0n,y:1n,gcd:-t};if(t===0n)return e>0n?{x:1n,y:0n,gcd:e}:{x:-1n,y:0n,gcd:-e};let[n,r,i]=[1n,0n,e],[a,o,s]=[0n,-1n,t];for(;;){let e=i/s,t=i-e*s;if(t===0n)break;[n,a]=[a,n-e*a],[r,o]=[o,r-e*o],[i,s]=[s,t]}return s<0n&&(a*=-1n,o*=-1n,s*=-1n),{x:a,y:o,gcd:s}},w=(e,t)=>{if(e>=t)return 1n;let n=BigInt((t-2n).toString(2).length),r=(t-e)/2n;if(n*r<63n){let n=e;for(let r=e+2n;r<t;r+=2n)n*=r;return n}let i=e+r|1n;return w(e,i)*w(i,t)},ce=e=>{let t=3n,n=1n,r=1n,i=BigInt(e.toString(2).length)-1n;for(let a=i-1n;a>-1n;--a){let i=(e>>a)+1n|1n;r*=w(t,i),t=i,n*=r}return n},le=e=>{if(e<0n)throw RangeError(`'n' must be non-negative`);if(e===0n)return 1n;let t=e-BigInt(e.toString(2).match(/1/g)?.length??0);return ce(e)<<t},T=(e,t)=>(e>>>(t&31)|e<<(-t&31))>>>0,E=(e,t)=>BigInt.asUintN(64,e>>(t&63n)|e<<(-t&63n)),D=(e,t)=>{if(t<1n||t%2n==0n)throw RangeError("`n` is out of range");for(;e<0n;)e+=t;e%=t;let n=1n;for(;e!==0n;){for(;e%2n==0n;){e/=2n;let r=t%8n;(r===3n||r===5n)&&(n*=-1n)}[e,t]=[t,e],e%4n==3n&&t%4n==3n&&(n*=-1n),e%=t}return t===1n?n:0n},O=e=>{if(e<0n)return!1;if(e===0n)return!0;let t=1n,n=e;for(;t+1n<n;){let r=(t+n)/2n;r*r<e?t=r:n=r}return e===t**2n||e===(t+1n)**2n},k=class{#e;constructor(e){this.#e=e}postMessage=(e,t)=>new Promise((n,r)=>{let i=crypto.randomUUID(),a=e=>{let t=e.data;t.id===i&&(this.#e.removeEventListener(`message`,a),this.#e.removeEventListener(`error`,o),t.success?n(t.value):r(t.error))},o=e=>{this.#e.removeEventListener(`message`,a),this.#e.removeEventListener(`error`,o),r(e.error)};this.#e.addEventListener(`message`,a),this.#e.addEventListener(`error`,o);let s={value:e,id:i};this.#e.postMessage(s,t)})},A=()=>typeof window>`u`&&typeof self<`u`&&`importScripts`in self,j=(e,t)=>{if(!A())throw Error(`this function must be used in Worker`);let n={success:!0,value:e,id:t};self.postMessage(n)},M=(e,t)=>{if(!A())throw Error(`this function must be used in Worker`);let n={success:!1,error:e,id:t};self.postMessage(n)},N=e=>{if(e<=1n)return!1;if(e%2n==0n)return e===2n;let t=e-1n,n=0n;for(;t%2n==0n;)t>>=1n,n+=1n;let[r,i]=[t,n],a=S(2n,r,e);if(a===1n)return!0;for(let t=0n;t<i;t++){if(a===e-1n)return!0;a=a*a%e}return!1},P=e=>{let t=5n,n=D(t,e);for(;n>0n;){if(t=t>0n?t+2n:t-2n,t*=-1n,t===-15n&&O(e))return[0n,0n];n=D(t,e)}return[t,n]},F=(e,t)=>(e&1n)==1n?y(e+t>>1n,t):y(e>>1n,t),I=(e,t,n,r)=>{let i=1n,a=n,o=e.toString(2).slice(1);for(let e of o)[i,a]=[y(i*a,t),F(a*a+r*i*i,t)],e===`1`&&([i,a]=[F(n*i+a,t),F(r*i+n*a,t)]);return[i,a]},L=(e,t,n,r)=>{if(e%2n!=1n)throw RangeError("`n` must be odd");let i=e+1n,a=0n;for(;i%2n==0n;)i>>=1n,a+=1n;let[o,s]=I(i,e,n,t),c=s;if(o===0n)return!0;r=S(r,i,e);for(let t=0n;t<a;t++){if(c===0n)return!0;c=y(c*c-2n*r,e),r=S(r,2n,e)}return!1},R=e=>{if(e<=1n)return!1;if(e%2n==0n)return e===2n;for(let t of[2n,3n,5n,7n,11n,13n,17n,19n,23n,29n,31n,37n,41n,43n,47n,53n,59n,61n,67n,71n,73n,79n,83n,89n,97n,101n,103n,107n,109n,113n,127n,131n,137n,139n,149n,151n,157n,163n,167n,173n,179n,181n,191n,193n,197n,199n,211n,223n,227n,229n,233n,239n,241n,251n,257n,263n,269n,271n,277n,281n,283n,293n,307n,311n,313n,317n,331n,337n,347n,349n,353n,359n,367n,373n,379n,383n,389n,397n,401n,409n,419n,421n,431n,433n,439n,443n,449n,457n,461n,463n,467n,479n,487n,491n,499n])if(e%t===0n)return e===t;if(!N(e))return!1;let[t,n]=P(e);return n===0n?!1:L(e,t,1n,(1n-t)/4n)},z=(e,t)=>{if(t<2n)throw RangeError("`max` must be 2 or larger");for(let n=0;n<1e5;n++){let n=x(e,t);if(R(n))return n}throw Error(`no primes were found`)},B=(e,t=!1)=>{if(e<2)throw RangeError("`bitLength` must be 2 or larger");for(let n=0;n<1e5;n++){let n=b(e,t);if(R(n))return n}throw Error(`no primes were found`)},V,H=()=>(V||=new k(new Worker(new URL(`/assets/bpsw_worker-B1aaSJNb.js`,``+n.url),{type:`module`})),V),U=e=>H().postMessage(e),W=`Rational`,G=class e{#e;#t;static name=W;constructor(e,t){t===0n?(this.#t=0n,this.#e=e===0n?0n:e>0n?1n:-1n):t>0n?(this.#e=e,this.#t=t):(this.#e=-e,this.#t=-t),this.#n()}static fromDecimal(t,n=5){if(Number.isNaN(t))return new e(0n,0n);if(Math.abs(t)===1/0)return new e(t>0?1n:-1n,0n);let r=t<0;r&&(t*=-1);let i=BigInt(Math.floor(t)),a=t-Number(i);if(a===0)return new e(r?-i:i,1n);t=1/a;let[o,s]=[1n,i],[c,l]=[0n,1n];for(;`${l}`.length<=n;){let n=BigInt(Math.floor(t)),i=t-Number(n);if([o,s]=[s,n*s+o],[c,l]=[l,n*l+c],i===0)return new e(r?-s:s,l);t=1/i}return new e(r?-o:o,c)}#n(){let{gcd:e}=C(this.#e,this.#t);e!==0n&&(this.#e/=e,this.#t/=e)}minus=()=>new e(-this.#e,this.#t);inverse=()=>new e(this.#t,this.#e);add=t=>{let n=this.#t*t.#t;return new e(this.#e*t.#t+t.#e*this.#t,n)};substr=e=>this.add(e.minus());multiply=t=>{let n=this.#t*t.#t;return new e(this.#e*t.#e,n)};divide=e=>this.multiply(e.inverse());mediant=t=>{let n=this.#t+t.#t;return new e(this.#e+t.#e,n)};toDecimal=()=>Number(this.#e)/Number(this.#t);toString=()=>this.#e===0n&&this.#t===0n?`NaN`:this.#e===0n?`0`:this.#t===0n?this.#e<0n?`-Infinity`:`Infinity`:this.#t===1n?`${this.#e}`:`${this.#e}/${this.#t}`;valueOf=()=>this.toDecimal();toJSON=()=>({type:`Rational`,value:[`0x`+this.#e.toString(16),`0x`+this.#t.toString(16)]});static fromData(t){return new e(BigInt(t.value[0]),BigInt(t.value[1]))}static parse(t){let n=/^\s*(\d+)\s*\/\s*(\d+)\s*$/.exec(t);if(!n)throw Error(`cannot parse`);let r=n.at(1),i=n.at(2);if(!r||!i)throw Error(`cannot parse`);return new e(BigInt(r),BigInt(i))}};Object.defineProperty(G.prototype,Symbol.toStringTag,{value:W});var K=`NamedError`,q=class extends Error{static name=K;errName;constructor(e,t,n){super(t,n),this.errName=e}toJSON=()=>{let e=(()=>{let e=this.cause;if(e==null)return e;let t=e.toString();return t===`[object Object]`?JSON.stringify(e):t})(),{errName:t,message:n,stack:r}=this;return{name:t,message:n,stack:r,cause:e}}};Object.defineProperty(q.prototype,Symbol.toStringTag,{value:K});var J=e=>{if(e===0n)return 64n;let t=0n;for(;e>0n&&!(e&1n);)++t,e>>=1n;return BigInt.asUintN(64,t)},Y=(e,t)=>{let n=0n,r=e&2047n,i=1023n-1n;if(r>0n)return i-=J(r),i;i-=11n;for(let e=0;e<1e5;++e){let e=t();if(e>0n)return i-=J(e),i;if(i-=64n,i<n)return n}throw Error(`loop exceeded limit`)},ue=e=>{let t=()=>BigInt.asUintN(64,e()),n=()=>{let e=t(),n=BigInt.asUintN(52,e>>11n),r=n===0n&&e>>63n==1n?Y(e,t)+1n:Y(e,t),{buffer:i}=BigUint64Array.from([r<<52n|n]),a=new Float64Array(i)[0];if(a==null)throw Error(`unexpected`);return a};return()=>{for(let e=0;e<1e5;++e){let e=n();if(e<1)return e}throw Error(`Loop limit exceeded`)}},de=[9600629759793949339n,15726070495360670683n],fe=6364136223846793005n,X=`PCGMinimal`,Z=class{#e;static name=X;constructor(e){if(e&&e[0]!=null&&e[1]!=null){if(this.#e=new BigUint64Array(2),this.#e[0]==null||this.#e[1]==null)throw TypeError(`unexpected`);this.#e[1]=e[1]<<1n|1n,this.#t(),this.#e[0]+=e[0],this.#t()}else this.#e=BigUint64Array.from(de)}#t(){if(this.#e[0]==null||this.#e[1]==null)throw TypeError(`unexpected`);this.#e[0]=this.#e[0]*fe+this.#e[1]}get#n(){if(this.#e[0]==null||this.#e[1]==null)throw TypeError(`unexpected`);let e=this.#e[0],t=Number(e>>59n);return T(Number(BigInt.asUintN(32,(e^e>>18n)>>27n)),t)}getRandU32=()=>(this.#t(),this.#n);getBoundedRandU32=e=>{let t=4294967296;if(e>t)throw RangeError("`bound` exceeded limit (2^32)");if(e<=0)throw RangeError(`'bound' must be positive`);let n=t%e;for(let t=0;t<1e5;++t){let t=this.getRandU32();if(t>=n)return t%e}throw Error(`exceeded loop limit`)};*genRandU32s(e,t){if(e<=0)throw RangeError(`'step' must be positive`);for(let n=0;n<e;n++)yield typeof t==`number`?this.getBoundedRandU32(t):this.getRandU32()}};Object.defineProperty(Z.prototype,Symbol.toStringTag,{value:X});var pe=[13715198867125970446n,3333371893450545919n,5627726498316411518n,8467276975966080893n],Q=`XoshiroMinimal`,$=class{bits=64;#e;static name=Q;constructor(e){if(e&&e[0]!=null&&e[1]!=null&&e[2]!=null&&e[3]!=null){if(this.#e=new BigUint64Array(4),this.#e[0]=e[0],this.#e[1]=e[1],this.#t(),this.#e[2]==null||this.#e[3]==null)throw TypeError(`unexpected`);this.#e[2]+=e[2],this.#e[3]+=e[3]}else this.#e=BigUint64Array.from(pe)}#t(){if(this.#e[0]==null||this.#e[1]==null||this.#e[2]==null||this.#e[3]==null)throw TypeError(`unexpected`);let e=this.#e[1]<<17n;this.#e[2]^=this.#e[0],this.#e[3]^=this.#e[1],this.#e[1]^=this.#e[2],this.#e[0]^=this.#e[3],this.#e[2]^=e,this.#e[3]=E(this.#e[3],45n)}get value(){if(this.#e[0]==null||this.#e[3]==null)throw TypeError(`unexpected`);let e=E(this.#e[0]+this.#e[3],23n)+this.#e[0];return BigInt.asUintN(64,e)}getRandU64=()=>{let e=this.value;return this.#t(),e};getRandU32=()=>{let e=BigInt.asUintN(32,this.getRandU64());return Number(e)};getBoundedRandU64=e=>{let t=1n<<64n;if(e>t)throw RangeError("`bound` exceeded limit");if(e<=0n)throw RangeError("`bound` must be positive");let n=t%e;for(let t=0;t<1e5;++t){let t=this.getRandU64();if(t>=n)return t%e}throw Error(`exceeded loop limit`)};getBoundedRandU32=e=>{if(e>2**32)throw RangeError("`bound` exceeded limit");if(e<=0n)throw RangeError("`bound` must be positive");let t=this.getBoundedRandU64(BigInt(e));return Number(t)};*genRandU64s(e,t){if(e<=0)throw RangeError("`step` must be positive");for(let n=0;n<e;++n)yield t===void 0?this.getRandU64():this.getBoundedRandU64(t)}*genRandU32s(e,t){if(e<=0)throw RangeError("`step` must be positive");for(let n=0;n<e;++n)yield t===void 0?this.getRandU32():this.getBoundedRandU32(t)}};Object.defineProperty($.prototype,Symbol.toStringTag,{value:Q});var me=e=>{let t=e<0n;t&&(e*=-1n);let n=e.toString(2).length,r=e===1n<<BigInt(n-1)&&!(n%7)&&t,i=Math.floor(n/7)+1;return r?i-1:i};return e.AsyncWorker=k,e.NamedError=q,e.PCGMinimal=Z,e.Rational=G,e.XoshiroMinimal=$,e.bailliePSW=R,e.bailliePSWAsync=U,e.compress=m,e.compressString=g,e.decodeLEB128=e=>{let t=e.length,n=0n;for(let[t,r]of e.entries()){let e=BigInt(r&127);n+=e<<BigInt(7*t)}return BigInt.asIntN(7*t,n)},e.decodeRFC3986URIComponent=ie,e.decompress=h,e.decompressString=ae,e.encodeLEB128=e=>{let t=me(e);e=BigInt.asUintN(t*7,e);let n=new Uint8Array(t);for(let r=0;r<t-1;++r)n[r]=Number(e&127n)|128,e>>=7n;let r=Number(e&127n);return n[t-1]=r,e>>=7n,n},e.encodeRFC3986URIComponent=re,e.exEuclidean=C,e.factorial=le,e.floatRng=ue,e.fromBase64=i,e.fromBase64URL=o,e.fromOct=c,e.getHash=p,e.getRandBIByBitLength=b,e.getRandBIByRange=x,e.getRandPrimeByBitLength=B,e.getRandPrimeByRange=z,e.getRndInt=v,e.getStringTag=te,e.isDeepStrictEqual=u,e.isSquare=O,e.jacobiSymbol=D,e.lazify=ne,e.modPow=S,e.nullableStrictAt=_,e.parseCSV=f,e.postFailed=M,e.postSuccess=j,e.residue=y,e.rot32=T,e.rot64=E,e.sameValueZero=l,e.setTimeoutPromise=oe,e.sleep=ee,e.strictAt=se,e.toBase64=r,e.toBase64URL=a,e.toOct=s,e.withResolvers=d,e})({});
@@ -22,55 +22,55 @@ export declare class Rational {
22
22
  * returns a fraction multiplied by -1
23
23
  * @returns
24
24
  */
25
- minus(): Rational;
25
+ readonly minus: () => Rational;
26
26
  /**
27
27
  * returns inverse of this fraction
28
28
  * @returns
29
29
  */
30
- inverse(): Rational;
30
+ readonly inverse: () => Rational;
31
31
  /**
32
32
  * returns `this + right`
33
33
  * @param right
34
34
  * @returns
35
35
  */
36
- add(right: Rational): Rational;
36
+ readonly add: (right: Rational) => Rational;
37
37
  /**
38
38
  * returns `this - right`
39
39
  * @param right
40
40
  * @returns
41
41
  */
42
- substr(right: Rational): Rational;
42
+ readonly substr: (right: Rational) => Rational;
43
43
  /**
44
44
  * returns `this * right`
45
45
  * @param right
46
46
  * @returns
47
47
  */
48
- multiply(right: Rational): Rational;
48
+ readonly multiply: (right: Rational) => Rational;
49
49
  /**
50
50
  * returns `this / right`
51
51
  * @param right
52
52
  * @returns
53
53
  */
54
- divide(right: Rational): Rational;
54
+ readonly divide: (right: Rational) => Rational;
55
55
  /**
56
56
  * returns mediant
57
57
  * @param this `a / b`
58
58
  * @param right `c / d`
59
59
  * @returns `(a + c) / (b + d)`
60
60
  */
61
- mediant(right: Rational): Rational;
61
+ readonly mediant: (right: Rational) => Rational;
62
62
  /**
63
63
  * returns `number` type decimal
64
64
  * @returns decimal
65
65
  */
66
- toDecimal(): number;
66
+ readonly toDecimal: () => number;
67
67
  /**
68
68
  * returns `'numerator/denominator'`
69
69
  * @returns string form
70
70
  */
71
- toString(): string;
72
- valueOf(): number;
73
- toJSON(): RationalData;
71
+ readonly toString: () => string;
72
+ readonly valueOf: () => number;
73
+ readonly toJSON: () => RationalData;
74
74
  /**
75
75
  * makes instance from RationalData
76
76
  * @param data
package/dist/leb128.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export declare const encodeLEB128: (bigint: bigint) => Uint8Array<ArrayBuffer>;
2
- export declare const decodeLEB128: (leb128: Uint8Array<ArrayBuffer>) => bigint;
2
+ export declare const decodeLEB128: (LEB128: Uint8Array<ArrayBuffer>) => bigint;
package/dist/main.d.ts CHANGED
@@ -7,5 +7,5 @@ export * from './named_error';
7
7
  export * from './random';
8
8
  export * from './pcg_minimal';
9
9
  export * from './xoshiro_minimal';
10
- export * from './worker_stream';
10
+ export * from './async_worker';
11
11
  export * from './leb128';
@@ -7,11 +7,11 @@ declare class NamedError<EName extends string> extends Error {
7
7
  static readonly name = "NamedError";
8
8
  readonly errName: EName;
9
9
  constructor(errName: EName, message: string, options?: ErrorOptions);
10
- toJSON(): {
10
+ readonly toJSON: () => {
11
11
  name: EName;
12
12
  message: string;
13
13
  stack: string | undefined;
14
- cause: string | number | boolean | object | undefined;
14
+ cause: string | null | undefined;
15
15
  };
16
16
  }
17
17
  export { NamedError };
@@ -24,11 +24,11 @@ export declare class PCGMinimal {
24
24
  *
25
25
  * @returns a random 32-bit unsigned integer
26
26
  */
27
- getRandU32(): number;
27
+ readonly getRandU32: () => number;
28
28
  /**
29
29
  * @returns a random 32-bit unsigned integer less than `bound`
30
30
  */
31
- getBoundedRandU32(bound: number): number;
31
+ readonly getBoundedRandU32: (bound: number) => number;
32
32
  /**
33
33
  *
34
34
  * @param step the number of needed random integers
package/dist/types.d.ts CHANGED
@@ -1,17 +0,0 @@
1
- export type UUID = ReturnType<typeof crypto.randomUUID>;
2
- interface WorkerSuccessedResult<T> {
3
- readonly id: UUID;
4
- success: true;
5
- value: T;
6
- }
7
- interface WorkerFailedResult<E = unknown> {
8
- readonly id: UUID;
9
- success: false;
10
- error: E;
11
- }
12
- export type WorkerResult<T, E = unknown> = WorkerSuccessedResult<T> | WorkerFailedResult<E>;
13
- export interface WorkerMessage<T> {
14
- readonly id: UUID;
15
- value: T;
16
- }
17
- export {};
@@ -22,10 +22,10 @@ export declare class XoshiroMinimal {
22
22
  */
23
23
  constructor(seed?: BigUint64Array<ArrayBuffer>);
24
24
  get value(): bigint;
25
- getRandU64(): bigint;
26
- getRandU32(): number;
27
- getBoundedRandU64(bound: bigint): bigint;
28
- getBoundedRandU32(bound: number): number;
25
+ readonly getRandU64: () => bigint;
26
+ readonly getRandU32: () => number;
27
+ readonly getBoundedRandU64: (bound: bigint) => bigint;
28
+ readonly getBoundedRandU32: (bound: number) => number;
29
29
  genRandU64s(step: number, bound?: bigint): Generator<bigint, void, unknown>;
30
30
  genRandU32s(step: number, bound?: number): Generator<number, void, unknown>;
31
31
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tktb-tess/util-fns",
3
- "version": "0.12.0",
3
+ "version": "0.12.1",
4
4
  "description": "Utility functions for personal use",
5
5
  "files": [
6
6
  "dist"
@@ -29,7 +29,7 @@
29
29
  "@types/node": "^25.5.2",
30
30
  "typescript": "^6.0.2",
31
31
  "unplugin-dts": "1.0.0-beta.6",
32
- "vite": "^8.0.3",
32
+ "vite": "^8.0.4",
33
33
  "vitest": "^4.1.2"
34
34
  },
35
35
  "scripts": {
@@ -1 +0,0 @@
1
- (function(){let e=(e,t)=>{t<0n&&(t*=-1n);let n=e%t;return n<0n?n+t:n},t=(t,n,r)=>{if(r<1n)throw RangeError("`mod` must be positive");if(n<0n)throw RangeError("`power` must not be negative");if(t=e(t,r),r===1n)return 0n;if(t%r===1n||t%r===0n)return t;if(t===r-1n)return n&1n?r-1n:1n;let i=1n;for(;n>0n;)n&1n&&(i=i*t%r),t=t*t%r,n>>=1n;return i},n=(e,t)=>{if(t<1n||t%2n==0n)throw RangeError("`n` is out of range");for(;e<0n;)e+=t;e%=t;let n=1n;for(;e!==0n;){for(;e%2n==0n;){e/=2n;let r=t%8n;(r===3n||r===5n)&&(n*=-1n)}[e,t]=[t,e],e%4n==3n&&t%4n==3n&&(n*=-1n),e%=t}return t===1n?n:0n},r=e=>{if(e<0n)return!1;if(e===0n)return!0;let t=1n,n=e;for(;t+1n<n;){let r=(t+n)/2n;r*r<e?t=r:n=r}return e===t**2n||e===(t+1n)**2n},i=e=>{if(e<=1n)return!1;if(e%2n==0n)return e===2n;let n=e-1n,r=0n;for(;n%2n==0n;)n>>=1n,r+=1n;let[i,a]=[n,r],o=t(2n,i,e);if(o===1n)return!0;for(let t=0n;t<a;t++){if(o===e-1n)return!0;o=o*o%e}return!1},a=e=>{let t=5n,i=n(t,e);for(;i>0n;){if(t=t>0n?t+2n:t-2n,t*=-1n,t===-15n&&r(e))return[0n,0n];i=n(t,e)}return[t,i]},o=(t,n)=>(t&1n)==1n?e(t+n>>1n,n):e(t>>1n,n),s=(t,n,r,i)=>{let a=1n,s=r,c=t.toString(2).slice(1);for(let t of c)[a,s]=[e(a*s,n),o(s*s+i*a*a,n)],t===`1`&&([a,s]=[o(r*a+s,n),o(i*a+r*s,n)]);return[a,s]},c=(n,r,i,a)=>{if(n%2n!=1n)throw RangeError("`n` must be odd");let o=n+1n,c=0n;for(;o%2n==0n;)o>>=1n,c+=1n;let[l,u]=s(o,n,i,r),d=u;if(l===0n)return!0;a=t(a,o,n);for(let r=0n;r<c;r++){if(d===0n)return!0;d=e(d*d-2n*a,n),a=t(a,2n,n)}return!1},l=e=>{if(e<=1n)return!1;if(e%2n==0n)return e===2n;for(let t of[2n,3n,5n,7n,11n,13n,17n,19n,23n,29n,31n,37n,41n,43n,47n,53n,59n,61n,67n,71n,73n,79n,83n,89n,97n,101n,103n,107n,109n,113n,127n,131n,137n,139n,149n,151n,157n,163n,167n,173n,179n,181n,191n,193n,197n,199n,211n,223n,227n,229n,233n,239n,241n,251n,257n,263n,269n,271n,277n,281n,283n,293n,307n,311n,313n,317n,331n,337n,347n,349n,353n,359n,367n,373n,379n,383n,389n,397n,401n,409n,419n,421n,431n,433n,439n,443n,449n,457n,461n,463n,467n,479n,487n,491n,499n])if(e%t===0n)return e===t;if(!i(e))return!1;let[t,n]=a(e);return n===0n?!1:c(e,t,1n,(1n-t)/4n)};globalThis.onmessage=e=>{let t=e.data;try{let e={success:!0,value:l(t.value),id:t.id};postMessage(e)}catch(e){let n={success:!1,error:e,id:t.id};postMessage(n)}}})();
@@ -1,7 +0,0 @@
1
- export declare class WorkerStream<TPost = unknown, TRecv = unknown> extends ReadableStream<TRecv> {
2
- #private;
3
- readonly close: () => void;
4
- static readonly name = "WorkerStream";
5
- constructor(worker: Worker, strategy?: CountQueuingStrategy);
6
- postMessage: (message: TPost, options?: StructuredSerializeOptions) => void;
7
- }