uniku 0.1.0 → 0.2.0

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 CHANGED
@@ -24,19 +24,20 @@ console.log(first < second && second < third) // true
24
24
 
25
25
  ## At a Glance
26
26
 
27
- | | uniku | [uuid](https://github.com/uuidjs/uuid) | [nanoid](https://github.com/ai/nanoid) | [ulid](https://github.com/ulid/javascript) | [cuid2](https://github.com/paralleldrive/cuid2) | [ksuid](https://github.com/owpz/ksuid) |
28
- |--------------------|:-----:|:----:|:------:|:----:|:-----:|:-----:|
29
- | UUID v4 | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
30
- | UUID v7 | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
31
- | TypeID | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
32
- | ULID | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ |
33
- | CUID2 | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
34
- | Nanoid | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
35
- | KSUID | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
36
- | Tree-shakeable | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
37
- | ESM-only | ✅ | ✅¹ | ✅ | ❌ | ✅ | ❌ |
38
- | Edge/Workers | ✅ | ✅ | ✅ | ⚠️ | ✅ | ⚠️ |
39
- | Byte ↔ String | ✅ | ✅ | - | ⚠️² | - | ✅ |
27
+ | | uniku | [uuid](https://github.com/uuidjs/uuid) | [typeid-js](https://github.com/jetify-com/typeid-js) | [nanoid](https://github.com/ai/nanoid) | [ulid](https://github.com/ulid/javascript) | [cuid2](https://github.com/paralleldrive/cuid2) | [ksuid](https://github.com/owpz/ksuid) | [bson](https://github.com/mongodb/js-bson) |
28
+ |--------------------|:-----:|:----:|:---------:|:------:|:----:|:-----:|:-----:|:-----:|
29
+ | UUID v4 | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
30
+ | UUID v7 | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
31
+ | TypeID | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
32
+ | Nanoid | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
33
+ | ULID | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
34
+ | CUID2 | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ |
35
+ | KSUID | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ |
36
+ | ObjectID | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
37
+ | Tree-shakeable | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
38
+ | ESM-only | ✅ | ✅¹ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
39
+ | Edge/Workers | ✅ | ✅ | ✅ | ✅ | ⚠️ | ✅ | ⚠️ | ⚠️ |
40
+ | Byte ↔ String | ✅ | ✅ | ✅ | - | ⚠️² | - | ✅ | ✅ |
40
41
 
41
42
  > **Notes:**
42
43
  > - Byte ↔ String conversion doesn't make sense for nanoid and cuid2, since they are string-native formats with no canonical binary representation.
@@ -63,6 +64,7 @@ Uses `globalThis.crypto` (Web Crypto API) — no Node.js-specific APIs.
63
64
  | ULID | **85× faster** |
64
65
  | CUID2 | **8× faster** |
65
66
  | KSUID | **1.5× faster** |
67
+ | ObjectID | **1.1× faster** |
66
68
  | UUID v7 | **1.1× faster** |
67
69
  | Nanoid | **~comparable speed** |
68
70
  | Nanoid (10 chars) | npm is 1.1× faster |
@@ -82,6 +84,7 @@ Uses `globalThis.crypto` (Web Crypto API) — no Node.js-specific APIs.
82
84
  | Maximum compatibility | **UUID v4** | Universal standard |
83
85
  | Distributed systems needing sortable, URL-safe IDs | **ULID** | Millisecond ordering + 80-bit entropy |
84
86
  | Very high-volume distributed systems | **KSUID** | Time-ordered with 128-bit entropy |
87
+ | MongoDB `_id` compatibility | **ObjectID** | Drop-in match for MongoDB's native document ID format |
85
88
 
86
89
  ### Detailed Guide
87
90
 
@@ -114,6 +117,12 @@ Uses `globalThis.crypto` (Web Crypto API) — no Node.js-specific APIs.
114
117
  - URL-safe, 128-bit random entropy (highest of all formats)
115
118
  - Best for: Very high-volume distributed systems, event sourcing
116
119
 
120
+ **ObjectID** — Use when you need drop-in compatibility with MongoDB.
121
+ - 24-character lowercase hex, time-ordered with second precision
122
+ - 4-byte timestamp + 5-byte per-process random + 3-byte always-incrementing counter
123
+ - Counter never resets on a new timestamp (unlike ULID/UUIDv7/KSUID sequences)
124
+ - Best for: MongoDB `_id` fields, systems already speaking the ObjectID wire format
125
+
117
126
  **Nanoid** — Use for short, URL-friendly identifiers.
118
127
  - 21 characters (configurable), 126-bit entropy
119
128
  - Customizable alphabet and length
@@ -128,7 +137,7 @@ Uses `globalThis.crypto` (Web Crypto API) — no Node.js-specific APIs.
128
137
 
129
138
  ### Binary Serialization: When to Use `toBytes()`
130
139
 
131
- Formats with binary representations (UUID, ULID, KSUID) support `toBytes()` and `fromBytes()` for efficient storage:
140
+ Formats with binary representations (UUID, ULID, KSUID, ObjectID) support `toBytes()` and `fromBytes()` for efficient storage:
132
141
 
133
142
  ```ts
134
143
  // Store as BINARY(16) instead of VARCHAR(36)
@@ -160,6 +169,7 @@ const id = uuidv7.fromBytes(row.id)
160
169
  | ULID | 26 chars | 16 bytes | 38% |
161
170
  | TypeID | prefix + 27 chars | 16 bytes | prefix-dependent |
162
171
  | KSUID | 27 chars | 20 bytes | 26% |
172
+ | ObjectID | 24 chars | 12 bytes | 50% |
163
173
  | Nanoid | 21 chars | N/A | - |
164
174
  | CUID2 | 24 chars | N/A | - |
165
175
 
@@ -195,6 +205,7 @@ deno install npm:uniku
195
205
  | `uniku/cuid2` | ~1007 B* |
196
206
  | `uniku/nanoid` | ~1.1 KB |
197
207
  | `uniku/ksuid` | ~1.3 KB |
208
+ | `uniku/objectid` | ~1.3 KB |
198
209
 
199
210
  * The CUID2 entry point imports SHA3-512 from `@noble/hashes`; this table's entry-point size excludes that external dependency.
200
211
 
@@ -305,6 +316,22 @@ const str = ksuid.fromBytes(bytes)
305
316
  const ts = ksuid.timestamp(id)
306
317
  ```
307
318
 
319
+ ### ObjectID (time-ordered, MongoDB-compatible)
320
+
321
+ ```ts
322
+ import { objectid } from 'uniku/objectid'
323
+
324
+ const id = objectid()
325
+ // => "667c3f2a1e2b3c4d5e6f7081"
326
+
327
+ // Convert to/from bytes
328
+ const bytes = objectid.toBytes(id)
329
+ const str = objectid.fromBytes(bytes)
330
+
331
+ // Extract timestamp (milliseconds)
332
+ const ts = objectid.timestamp(id)
333
+ ```
334
+
308
335
  ## Migrating to uniku
309
336
 
310
337
  ### From `uuid`
@@ -349,6 +376,19 @@ const ts = ksuid.timestamp(id)
349
376
  + const timestamp = ksuid.timestamp(str)
350
377
  ```
351
378
 
379
+ ### From `bson`
380
+
381
+ ```diff
382
+ - import { ObjectId } from 'bson'
383
+ + import { objectid } from 'uniku/objectid'
384
+
385
+ - const id = new ObjectId().toHexString()
386
+ + const id = objectid()
387
+
388
+ - const timestamp = new ObjectId(str).getTimestamp().getTime()
389
+ + const timestamp = objectid.timestamp(str)
390
+ ```
391
+
352
392
  ## API Reference
353
393
 
354
394
  ### `uuidv4` (from `uniku/uuid/v4`)
@@ -437,6 +477,19 @@ ksuid.NIL // "000000000000000000000000000"
437
477
  ksuid.MAX // "aWgEPTl1tmebfsQzFP4bxwgy80V"
438
478
  ```
439
479
 
480
+ ### `objectid` (from `uniku/objectid`)
481
+
482
+ ```ts
483
+ objectid(options?: ObjectIdOptions): string
484
+ objectid(options: ObjectIdOptions | undefined, buf: Uint8Array, offset?: number): Uint8Array
485
+ objectid.toBytes(id: string): Uint8Array
486
+ objectid.fromBytes(bytes: Uint8Array): string
487
+ objectid.timestamp(id: string): number
488
+ objectid.isValid(id: unknown): id is string
489
+ objectid.NIL // "000000000000000000000000"
490
+ objectid.MAX // "ffffffffffffffffffffffff"
491
+ ```
492
+
440
493
  ## Documentation
441
494
 
442
495
  For advanced usage, examples, and contributing guidelines, see the [full documentation on GitHub](https://github.com/jkomyno/uniku).
@@ -447,9 +500,10 @@ Third-party libraries that inspired this project:
447
500
 
448
501
  - [uuid](https://github.com/uuidjs/uuid): the most popular UUID library for JavaScript
449
502
  - [ulid](https://github.com/ulid/javascript): the reference ULID implementation for JavaScript
450
- - [TypeID](https://github.com/jetify-com/typeid): type-safe UUID v7 extension with readable prefixes
503
+ - [TypeID-JS](https://github.com/jetify-com/typeid-js): official JavaScript implementation of TypeID
451
504
  - [@paralleldrive/cuid2](https://github.com/paralleldrive/cuid2): secure, collision-resistant IDs
452
505
  - [@owpz/ksuid](https://github.com/owpz/ksuid): K-Sortable Unique Identifier
506
+ - [bson](https://github.com/mongodb/js-bson): official MongoDB BSON library, including the ObjectId implementation
453
507
  - [nanoid](https://github.com/ai/nanoid): tiny, URL-friendly unique string ID generator
454
508
 
455
509
  Other:
@@ -1,2 +1,2 @@
1
1
  function e(e){for(let t=e.length-1;t>=0;--t){if(e[t]<255)return e[t]+=1,!0;e[t]=0}return!1}function t(e,t,n){e[t]=n/1099511627776&255,e[t+1]=n/4294967296&255,e[t+2]=n/16777216&255,e[t+3]=n/65536&255,e[t+4]=n/256&255,e[t+5]=n&255}function n(e,t,n){e[t]=n>>>24&255,e[t+1]=n>>>16&255,e[t+2]=n>>>8&255,e[t+3]=n&255}export{n,t as r,e as t};
2
- //# sourceMappingURL=bytes-DzcOKIx1.mjs.map
2
+ //# sourceMappingURL=bytes-CbbFzz-v.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"bytes-DzcOKIx1.mjs","names":[],"sources":["../src/common/bytes.ts"],"sourcesContent":["/**\n * Common byte manipulation utilities shared across ID generators.\n */\n\n/**\n * Increment a byte array by 1 in-place, propagating carry from LSB to MSB.\n * Mutates the input array directly - no allocation.\n *\n * Used by ULID and KSUID for monotonic ordering within the same time unit.\n *\n * @returns true if increment succeeded, false if all bytes overflowed to 0\n */\nexport function incrementBytesInPlace(bytes: Uint8Array): boolean {\n for (let i = bytes.length - 1; i >= 0; i -= 1) {\n if (bytes[i] < 255) {\n bytes[i] += 1\n return true\n }\n bytes[i] = 0\n }\n\n // All bytes overflowed to 0 - astronomically unlikely (1 in 2^80 for ULID, 1 in 2^128 for KSUID)\n return false\n}\n\n/**\n * Write a 48-bit timestamp as big-endian bytes.\n * Used by UUID v7 and ULID for millisecond-precision timestamps.\n *\n * @param buf - Target buffer\n * @param offset - Starting byte offset\n * @param msecs - Milliseconds since Unix epoch (must fit in 48 bits)\n */\nexport function writeTimestamp48(buf: Uint8Array, offset: number, msecs: number): void {\n buf[offset] = (msecs / 0x10000000000) & 0xff\n buf[offset + 1] = (msecs / 0x100000000) & 0xff\n buf[offset + 2] = (msecs / 0x1000000) & 0xff\n buf[offset + 3] = (msecs / 0x10000) & 0xff\n buf[offset + 4] = (msecs / 0x100) & 0xff\n buf[offset + 5] = msecs & 0xff\n}\n\n/**\n * Write a 32-bit timestamp as big-endian bytes.\n * Used by KSUID for second-precision timestamps.\n *\n * `writeTimestamp32(buf, offset, timestamp)` is equivalent to `new DataView(buf.buffer, offset, 4).setUint32(offset, timestamp, false)`,\n * but it's faster because it doesn't require creating a DataView object.\n *\n * @param buf - Target buffer\n * @param offset - Starting byte offset\n * @param secs - Seconds (must fit in 32 bits)\n */\nexport function writeTimestamp32(buf: Uint8Array, offset: number, secs: number): void {\n buf[offset] = (secs >>> 24) & 0xff\n buf[offset + 1] = (secs >>> 16) & 0xff\n buf[offset + 2] = (secs >>> 8) & 0xff\n buf[offset + 3] = secs & 0xff\n}\n"],"mappings":"AAYA,SAAgB,EAAsB,EAA4B,CAChE,IAAK,IAAI,EAAI,EAAM,OAAS,EAAG,GAAK,EAAG,IAAQ,CAC7C,GAAI,EAAM,GAAK,IAEb,MADA,GAAM,IAAM,EACL,GAET,EAAM,GAAK,EAIb,MAAO,GAWT,SAAgB,EAAiB,EAAiB,EAAgB,EAAqB,CACrF,EAAI,GAAW,EAAQ,cAAiB,IACxC,EAAI,EAAS,GAAM,EAAQ,WAAe,IAC1C,EAAI,EAAS,GAAM,EAAQ,SAAa,IACxC,EAAI,EAAS,GAAM,EAAQ,MAAW,IACtC,EAAI,EAAS,GAAM,EAAQ,IAAS,IACpC,EAAI,EAAS,GAAK,EAAQ,IAc5B,SAAgB,EAAiB,EAAiB,EAAgB,EAAoB,CACpF,EAAI,GAAW,IAAS,GAAM,IAC9B,EAAI,EAAS,GAAM,IAAS,GAAM,IAClC,EAAI,EAAS,GAAM,IAAS,EAAK,IACjC,EAAI,EAAS,GAAK,EAAO"}
1
+ {"version":3,"file":"bytes-CbbFzz-v.mjs","names":[],"sources":["../src/common/bytes.ts"],"sourcesContent":["/**\n * Common byte manipulation utilities shared across ID generators.\n */\n\n/**\n * Increment a byte array by 1 in-place, propagating carry from LSB to MSB.\n * Mutates the input array directly - no allocation.\n *\n * Used by ULID and KSUID for monotonic ordering within the same time unit.\n *\n * @returns true if increment succeeded, false if all bytes overflowed to 0\n */\nexport function incrementBytesInPlace(bytes: Uint8Array): boolean {\n for (let i = bytes.length - 1; i >= 0; i -= 1) {\n if (bytes[i] < 255) {\n bytes[i] += 1\n return true\n }\n bytes[i] = 0\n }\n\n // All bytes overflowed to 0 - astronomically unlikely (1 in 2^80 for ULID, 1 in 2^128 for KSUID)\n return false\n}\n\n/**\n * Write a 48-bit timestamp as big-endian bytes.\n * Used by UUID v7 and ULID for millisecond-precision timestamps.\n *\n * @param buf - Target buffer\n * @param offset - Starting byte offset\n * @param msecs - Milliseconds since Unix epoch (must fit in 48 bits)\n */\nexport function writeTimestamp48(buf: Uint8Array, offset: number, msecs: number): void {\n buf[offset] = (msecs / 0x10000000000) & 0xff\n buf[offset + 1] = (msecs / 0x100000000) & 0xff\n buf[offset + 2] = (msecs / 0x1000000) & 0xff\n buf[offset + 3] = (msecs / 0x10000) & 0xff\n buf[offset + 4] = (msecs / 0x100) & 0xff\n buf[offset + 5] = msecs & 0xff\n}\n\n/**\n * Write a 32-bit timestamp as big-endian bytes.\n * Used by KSUID for second-precision timestamps.\n *\n * `writeTimestamp32(buf, offset, timestamp)` is equivalent to `new DataView(buf.buffer, offset, 4).setUint32(offset, timestamp, false)`,\n * but it's faster because it doesn't require creating a DataView object.\n *\n * @param buf - Target buffer\n * @param offset - Starting byte offset\n * @param secs - Seconds (must fit in 32 bits)\n */\nexport function writeTimestamp32(buf: Uint8Array, offset: number, secs: number): void {\n buf[offset] = (secs >>> 24) & 0xff\n buf[offset + 1] = (secs >>> 16) & 0xff\n buf[offset + 2] = (secs >>> 8) & 0xff\n buf[offset + 3] = secs & 0xff\n}\n"],"mappings":"AAYA,SAAgB,EAAsB,EAA4B,CAChE,IAAK,IAAI,EAAI,EAAM,OAAS,EAAG,GAAK,EAAG,IAAQ,CAC7C,GAAI,EAAM,GAAK,IAEb,MADA,GAAM,IAAM,EACL,GAET,EAAM,GAAK,EAIb,MAAO,GAWT,SAAgB,EAAiB,EAAiB,EAAgB,EAAqB,CACrF,EAAI,GAAW,EAAQ,cAAiB,IACxC,EAAI,EAAS,GAAM,EAAQ,WAAe,IAC1C,EAAI,EAAS,GAAM,EAAQ,SAAa,IACxC,EAAI,EAAS,GAAM,EAAQ,MAAW,IACtC,EAAI,EAAS,GAAM,EAAQ,IAAS,IACpC,EAAI,EAAS,GAAK,EAAQ,IAc5B,SAAgB,EAAiB,EAAiB,EAAgB,EAAoB,CACpF,EAAI,GAAW,IAAS,GAAM,IAC9B,EAAI,EAAS,GAAM,IAAS,GAAM,IAClC,EAAI,EAAS,GAAM,IAAS,EAAK,IACjC,EAAI,EAAS,GAAK,EAAO"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"../random-CGMm8owG.mjs";import{InvalidInputError as t,UniqueIdError as n}from"../errors.mjs";import{sha3_512 as r}from"@noble/hashes/sha3.js";const i=/^[a-z][0-9a-z]+$/,a=`0123456789abcdefghijklmnopqrstuvwxyz`,o=new TextEncoder,s={counter:void 0,fingerprint:void 0};function c(){return e()%476782368}function l(e){let t=0n;for(let n of e)t=t*256n+BigInt(n);return t}function u(e){if(e===0n)return`0`;let t=[];for(;e>0n;)t.push(a[Number(e%36n)]),e/=36n;return t.reverse().join(``)}function d(e){return`abcdefghijklmnopqrstuvwxyz`[Math.floor(e()*26)]}function f(e,t){let n=Array(e);for(let r=0;r<e;r++)n[r]=a[Math.floor(t()*36)];return n.join(``)}function p(e){return r(o.encode(e))}function m(){let e=h;return u(l(p(Object.keys(globalThis).toString()+f(32,e)))).slice(1,33)}function h(){return e()/4294967296}function g(e){if(e){if(e.length===0)throw new t(`CUID2_RANDOM_BYTES_EMPTY`,`Random byte array cannot be empty`);let n=0;return()=>{let t=e[n%e.length]/256;return n+=1,t}}return h}function _(e){let n=e?.length??24;if(n<2||n>32)throw new t(`CUID2_LENGTH_OUT_OF_RANGE`,`CUID2 length must be between 2 and 32. Received: ${n}`);let r=g(e?.random);s.counter===void 0&&(s.counter=c()),s.fingerprint===void 0&&(s.fingerprint=m());let i=d(r),a=Date.now().toString(36);s.counter+=1;let o=s.counter.toString(36);return i+u(l(p(a+f(n,r)+o+s.fingerprint))).slice(1,n)}function v(e){return typeof e==`string`&&e.length>=2&&e.length<=32&&i.test(e)}const y=Object.assign(_,{isValid:v});export{t as InvalidInputError,n as UniqueIdError,y as cuid2};
1
+ import{n as e}from"../random-C_nRoaUe.mjs";import{InvalidInputError as t,UniqueIdError as n}from"../errors.mjs";import{sha3_512 as r}from"@noble/hashes/sha3.js";const i=/^[a-z][0-9a-z]+$/,a=`0123456789abcdefghijklmnopqrstuvwxyz`,o=new TextEncoder,s={counter:void 0,fingerprint:void 0};function c(){return e()%476782368}function l(e){let t=0n;for(let n of e)t=t*256n+BigInt(n);return t}function u(e){if(e===0n)return`0`;let t=[];for(;e>0n;)t.push(a[Number(e%36n)]),e/=36n;return t.reverse().join(``)}function d(e){return`abcdefghijklmnopqrstuvwxyz`[Math.floor(e()*26)]}function f(e,t){let n=Array(e);for(let r=0;r<e;r++)n[r]=a[Math.floor(t()*36)];return n.join(``)}function p(e){return r(o.encode(e))}function m(){let e=h;return u(l(p(Object.keys(globalThis).toString()+f(32,e)))).slice(1,33)}function h(){return e()/4294967296}function g(e){if(e){if(e.length===0)throw new t(`CUID2_RANDOM_BYTES_EMPTY`,`Random byte array cannot be empty`);let n=0;return()=>{let t=e[n%e.length]/256;return n+=1,t}}return h}function _(e){let n=e?.length??24;if(n<2||n>32)throw new t(`CUID2_LENGTH_OUT_OF_RANGE`,`CUID2 length must be between 2 and 32. Received: ${n}`);let r=g(e?.random);s.counter===void 0&&(s.counter=c()),s.fingerprint===void 0&&(s.fingerprint=m());let i=d(r),a=Date.now().toString(36);s.counter+=1;let o=s.counter.toString(36);return i+u(l(p(a+f(n,r)+o+s.fingerprint))).slice(1,n)}function v(e){return typeof e==`string`&&e.length>=2&&e.length<=32&&i.test(e)}const y=Object.assign(_,{isValid:v});export{t as InvalidInputError,n as UniqueIdError,y as cuid2};
2
2
  //# sourceMappingURL=cuid2.mjs.map
@@ -1,2 +1,2 @@
1
- import{n as e}from"../random-CGMm8owG.mjs";import{BufferError as t,InvalidInputError as n,ParseError as r,UniqueIdError as i}from"../errors.mjs";import{n as a}from"../bytes-DzcOKIx1.mjs";const o=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`,s=62n,c=(1n<<160n)-1n,l=new Uint8Array(65536);l.fill(255);for(let e=0;e<62;e+=1)l[o.charCodeAt(e)]=e;function u(e){if(e.length<20)throw new t(`KSUID_BYTES_TOO_SHORT`,`KSUID bytes must be at least 20 bytes, got ${e.length}`);let n=0n;for(let t=0;t<20;t+=1)n=n<<8n|BigInt(e[t]);let r=``;for(;n>0n;){let e=n%s;n/=s,r=o[Number(e)]+r}return r.padStart(27,`0`)}function d(e){if(e.length!==27)throw new r(`KSUID_INVALID_LENGTH`,`KSUID string must be 27 characters, got ${e.length}`);let t=0n;for(let n=0;n<27;n+=1){let i=l[e.charCodeAt(n)];if(i===255)throw new r(`KSUID_INVALID_CHAR`,`Invalid KSUID character: ${e[n]}`);t=t*s+BigInt(i)}if(t>c)throw new r(`KSUID_OVERFLOW`,`KSUID string exceeds 160-bit range`);let n=new Uint8Array(20);for(let e=19;e>=0;--e)n[e]=Number(t&255n),t>>=8n;return n}const f=14e8;f+4294967295;const p=u(new Uint8Array(20).fill(255)),m=/^[0-9A-Za-z]{27}$/;function h(e,n,r,i=0){if(!r)r=new Uint8Array(20),i=0;else if(i<0||i+20>r.length)throw new t(`KSUID_BUFFER_OUT_OF_BOUNDS`,`KSUID byte range ${i}:${i+20-1} is out of buffer bounds`);a(r,i,e);for(let e=0;e<16;e+=1)r[i+4+e]=n[e];return r}function g(t,r,i=0){let a=t?.random;if(a&&a.length<16)throw new n(`KSUID_RANDOM_BYTES_TOO_SHORT`,`Random bytes length must be >= 16 for KSUID`);let o,s=t?.secs;if(s!==void 0){if(s<f)throw new n(`KSUID_TIMESTAMP_TOO_LOW`,`Timestamp must be >= KSUID epoch`);if(s>5694967295)throw new n(`KSUID_TIMESTAMP_TOO_HIGH`,`Timestamp must be <= maximum KSUID timestamp`);o=s-f}else o=Math.floor(Date.now()/1e3)-f;let c=a??e();return r?(h(o,c,r,i),r):u(h(o,c))}function _(e){return d(e)}function v(e){return u(e)}function y(e){let t=d(e);return(((t[0]<<24|t[1]<<16|t[2]<<8|t[3])>>>0)+f)*1e3}function b(e){return typeof e==`string`&&e.length===27&&m.test(e)&&e<=p}const x=Object.assign(g,{toBytes:_,fromBytes:v,timestamp:y,isValid:b,NIL:`000000000000000000000000000`,MAX:p});export{t as BufferError,n as InvalidInputError,r as ParseError,i as UniqueIdError,x as ksuid};
1
+ import{r as e}from"../random-C_nRoaUe.mjs";import{BufferError as t,InvalidInputError as n,ParseError as r,UniqueIdError as i}from"../errors.mjs";import{n as a}from"../bytes-CbbFzz-v.mjs";const o=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`,s=62n,c=(1n<<160n)-1n,l=new Uint8Array(65536);l.fill(255);for(let e=0;e<62;e+=1)l[o.charCodeAt(e)]=e;function u(e){if(e.length<20)throw new t(`KSUID_BYTES_TOO_SHORT`,`KSUID bytes must be at least 20 bytes, got ${e.length}`);let n=0n;for(let t=0;t<20;t+=1)n=n<<8n|BigInt(e[t]);let r=``;for(;n>0n;){let e=n%s;n/=s,r=o[Number(e)]+r}return r.padStart(27,`0`)}function d(e){if(e.length!==27)throw new r(`KSUID_INVALID_LENGTH`,`KSUID string must be 27 characters, got ${e.length}`);let t=0n;for(let n=0;n<27;n+=1){let i=l[e.charCodeAt(n)];if(i===255)throw new r(`KSUID_INVALID_CHAR`,`Invalid KSUID character: ${e[n]}`);t=t*s+BigInt(i)}if(t>c)throw new r(`KSUID_OVERFLOW`,`KSUID string exceeds 160-bit range`);let n=new Uint8Array(20);for(let e=19;e>=0;--e)n[e]=Number(t&255n),t>>=8n;return n}const f=14e8;f+4294967295;const p=u(new Uint8Array(20).fill(255)),m=/^[0-9A-Za-z]{27}$/;function h(e,n,r,i=0){if(!r)r=new Uint8Array(20),i=0;else if(i<0||i+20>r.length)throw new t(`KSUID_BUFFER_OUT_OF_BOUNDS`,`KSUID byte range ${i}:${i+20-1} is out of buffer bounds`);a(r,i,e);for(let e=0;e<16;e+=1)r[i+4+e]=n[e];return r}function g(t,r,i=0){let a=t?.random;if(a&&a.length<16)throw new n(`KSUID_RANDOM_BYTES_TOO_SHORT`,`Random bytes length must be >= 16 for KSUID`);let o,s=t?.secs;if(s!==void 0){if(s<f)throw new n(`KSUID_TIMESTAMP_TOO_LOW`,`Timestamp must be >= KSUID epoch`);if(s>5694967295)throw new n(`KSUID_TIMESTAMP_TOO_HIGH`,`Timestamp must be <= maximum KSUID timestamp`);o=s-f}else o=Math.floor(Date.now()/1e3)-f;let c=a??e();return r?(h(o,c,r,i),r):u(h(o,c))}function _(e){return d(e)}function v(e){return u(e)}function y(e){let t=d(e);return(((t[0]<<24|t[1]<<16|t[2]<<8|t[3])>>>0)+f)*1e3}function b(e){return typeof e==`string`&&e.length===27&&m.test(e)&&e<=p}const x=Object.assign(g,{toBytes:_,fromBytes:v,timestamp:y,isValid:b,NIL:`000000000000000000000000000`,MAX:p});export{t as BufferError,n as InvalidInputError,r as ParseError,i as UniqueIdError,x as ksuid};
2
2
  //# sourceMappingURL=ksuid.mjs.map
@@ -0,0 +1,62 @@
1
+ import { BufferError, InvalidInputError, ParseError, UniqueIdError } from "../errors.mjs";
2
+
3
+ //#region src/objectid/objectid.d.ts
4
+ type ObjectIdOptions = {
5
+ /**
6
+ * 5 bytes of random data to use for the ObjectID's random field.
7
+ */
8
+ random?: Uint8Array;
9
+ /**
10
+ * Timestamp in seconds since Unix epoch.
11
+ * Defaults to Math.floor(Date.now() / 1000).
12
+ */
13
+ secs?: number;
14
+ /**
15
+ * 24-bit counter value (0 to 0xFFFFFF).
16
+ */
17
+ counter?: number;
18
+ };
19
+ type ObjectId = {
20
+ (): string;
21
+ <TBuf extends Uint8Array = Uint8Array>(options: ObjectIdOptions | undefined, buf: TBuf, offset?: number): TBuf;
22
+ (options?: ObjectIdOptions, buf?: undefined, offset?: number): string;
23
+ toBytes(id: string): Uint8Array;
24
+ fromBytes(bytes: Uint8Array): string;
25
+ timestamp(id: string): number;
26
+ isValid(id: unknown): id is string;
27
+ /** The nil ObjectID (all zeros) */
28
+ NIL: string;
29
+ /** The max ObjectID (all 0xff) */
30
+ MAX: string;
31
+ };
32
+ /**
33
+ * Generate a MongoDB ObjectID string or write the bytes into a buffer.
34
+ *
35
+ * ObjectID is a 12-byte identifier consisting of a 4-byte timestamp, a 5-byte
36
+ * per-process random value, and a 3-byte always-incrementing counter, encoded
37
+ * as a 24-character lowercase hex string. It is time-ordered and compatible
38
+ * with MongoDB's own ObjectID implementation.
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * import { objectid } from 'uniku/objectid'
43
+ *
44
+ * const id = objectid()
45
+ * // => "667c3f2a1e2b3c4d5e6f7081"
46
+ *
47
+ * // Extract timestamp
48
+ * const ts = objectid.timestamp(id)
49
+ * console.log(new Date(ts))
50
+ *
51
+ * // Validate
52
+ * objectid.isValid(id) // true
53
+ *
54
+ * // Convert to/from bytes (12 bytes)
55
+ * const bytes = objectid.toBytes(id)
56
+ * const restored = objectid.fromBytes(bytes)
57
+ * ```
58
+ */
59
+ declare const objectid: ObjectId;
60
+ //#endregion
61
+ export { BufferError, InvalidInputError, ObjectId, ObjectIdOptions, ParseError, UniqueIdError, objectid };
62
+ //# sourceMappingURL=objectid.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectid.d.mts","names":["objectid: ObjectId"],"sources":["../../src/objectid/objectid.ts"],"sourcesContent":[],"mappings":";;;KA0BY,eAAA;;;AAAZ;EAgBA,MAAY,CAAA,EAZD,UAYC;EAEI;;;;EAA4F,IAAA,CAAA,EAAA,MAAA;EAC/F;;;EAEM,OAAA,CAAA,EAAA,MAAA;AAiNnB,CAAA;KAtNY,QAAA;;gBAEI,aAAa,qBAAqB,kCAAkC,wBAAwB;aAC/F;uBACU;mBACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAiNNA,UAAU"}
@@ -0,0 +1,2 @@
1
+ import{n as e,t}from"../random-C_nRoaUe.mjs";import{BufferError as n,InvalidInputError as r,ParseError as i,UniqueIdError as a}from"../errors.mjs";import{n as o}from"../bytes-CbbFzz-v.mjs";const s=`0123456789abcdef`,c=Array.from({length:256},(e,t)=>s[t>>4&15]+s[t&15]),l=new Uint8Array(65536);l.fill(255);for(let e=0;e<=9;e+=1)l[48+e]=e;for(let e=0;e<6;e+=1)l[97+e]=10+e,l[65+e]=10+e;function u(e){if(e.length<12)throw new n(`OBJECTID_BYTES_TOO_SHORT`,`ObjectID bytes must be at least 12 bytes, got ${e.length}`);let t=``;for(let n=0;n<12;n+=1)t+=c[e[n]];return t}function d(e){if(e.length!==24)throw new i(`OBJECTID_INVALID_LENGTH`,`ObjectID string must be 24 characters, got ${e.length}`);let t=new Uint8Array(12);for(let n=0;n<12;n+=1){let r=n*2,a=r+1,o=l[e.charCodeAt(r)],s=l[e.charCodeAt(a)];if(o===255)throw new i(`OBJECTID_INVALID_CHAR`,`Invalid ObjectID character: ${e[r]}`);if(s===255)throw new i(`OBJECTID_INVALID_CHAR`,`Invalid ObjectID character: ${e[a]}`);t[n]=o<<4|s}return t}const f=4294967295,p=16777215,m=/^[0-9a-f]{24}$/i,h={random:void 0,counter:void 0};function g(){let e=new Uint8Array(5);return e.set(t(5)),e}function _(e,t,r,i,a=0){if(!i)i=new Uint8Array(12),a=0;else if(a<0||a+12>i.length)throw new n(`OBJECTID_BUFFER_OUT_OF_BOUNDS`,`ObjectID byte range ${a}:${a+12-1} is out of buffer bounds`);o(i,a,e);for(let e=0;e<5;e+=1)i[a+4+e]=t[e];return i[a+4+5]=r>>>16&255,i[a+4+5+1]=r>>>8&255,i[a+4+5+3-1]=r&255,i}function v(t,n,i=0){let a,o,s;if(t){let n=t.random;if(n&&n.length<5)throw new r(`OBJECTID_RANDOM_BYTES_TOO_SHORT`,`Random bytes length must be >= 5 for ObjectID`);let i=t.secs;if(i!==void 0&&(i<0||i>f))throw new r(`OBJECTID_TIMESTAMP_OUT_OF_RANGE`,`Timestamp must be between 0 and ${f}`);let c=t.counter;if(c!==void 0&&(c<0||c>p))throw new r(`OBJECTID_COUNTER_OUT_OF_RANGE`,`Counter must be between 0 and ${p}`);a=i??Math.floor(Date.now()/1e3),o=n??g(),s=c??e()&p}else h.random===void 0&&(h.random=g()),h.counter===void 0&&(h.counter=e()&p),a=Math.floor(Date.now()/1e3),o=h.random,h.counter=h.counter+1&p,s=h.counter;return n?(_(a,o,s,n,i),n):u(_(a,o,s))}function y(e){return d(e)}function b(e){return u(e)}function x(e){let t=d(e);return((t[0]<<24|t[1]<<16|t[2]<<8|t[3])>>>0)*1e3}function S(e){return typeof e==`string`&&m.test(e)}const C=Object.assign(v,{toBytes:y,fromBytes:b,timestamp:x,isValid:S,NIL:`0`.repeat(24),MAX:`f`.repeat(24)});export{n as BufferError,r as InvalidInputError,i as ParseError,a as UniqueIdError,C as objectid};
2
+ //# sourceMappingURL=objectid.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectid.mjs","names":["OBJECTID_BYTES","ENCODE_TABLE: string[]","state: ObjectIdState","secs: number","random: Uint8Array","counter: number","objectid: ObjectId"],"sources":["../../src/objectid/hex.ts","../../src/objectid/objectid.ts"],"sourcesContent":["import { BufferError, ParseError } from '../errors'\n\n/**\n * Hex encoding/decoding for ObjectID.\n * Alphabet: 0-9a-f (lowercase on encode, case-insensitive on decode)\n *\n * ObjectID binary format: 12 bytes (96 bits)\n * - 4 bytes: big-endian Unix timestamp in seconds\n * - 5 bytes: per-process random value\n * - 3 bytes: big-endian counter\n *\n * String format: 24 characters of hex\n */\n\nconst HEX_CHARS = '0123456789abcdef'\nconst OBJECTID_BYTES = 12\nconst OBJECTID_STRING_LEN = 24\n\n// Pre-computed encode table: byte value (0-255) -> 2-char lowercase hex string.\nconst ENCODE_TABLE: string[] = Array.from(\n { length: 256 },\n (_, byte) => HEX_CHARS[(byte >> 4) & 0xf] + HEX_CHARS[byte & 0xf],\n)\n\n// Pre-computed decode table covering every UTF-16 code unit charCodeAt can\n// return, so lookups never go out of bounds and a single `=== 255` check\n// rejects invalid input (including non-ASCII) without a per-character range\n// check. Costs 128 KiB once at module load; valid inputs only touch the first\n// 128 bytes, so cache behavior is unaffected.\n// Note: unlike Base62, hex decoding is case-insensitive - 'a' and 'A' both decode to 10.\nconst DECODING = new Uint8Array(65536)\nDECODING.fill(255) // 255 = invalid marker\n\nfor (let i = 0; i <= 9; i += 1) {\n DECODING['0'.charCodeAt(0) + i] = i\n}\nfor (let i = 0; i < 6; i += 1) {\n DECODING['a'.charCodeAt(0) + i] = 10 + i\n DECODING['A'.charCodeAt(0) + i] = 10 + i\n}\n\n/**\n * Encode 12 ObjectID bytes to a 24-character lowercase hex string.\n */\nexport function encodeObjectIdHex(bytes: Uint8Array): string {\n if (bytes.length < OBJECTID_BYTES) {\n throw new BufferError(\n 'OBJECTID_BYTES_TOO_SHORT',\n `ObjectID bytes must be at least ${OBJECTID_BYTES} bytes, got ${bytes.length}`,\n )\n }\n\n let encoded = ''\n for (let i = 0; i < OBJECTID_BYTES; i += 1) {\n encoded += ENCODE_TABLE[bytes[i]]\n }\n return encoded\n}\n\n/**\n * Decode a 24-character hex string to 12 ObjectID bytes.\n */\nexport function decodeObjectIdHex(str: string): Uint8Array {\n if (str.length !== OBJECTID_STRING_LEN) {\n throw new ParseError(\n 'OBJECTID_INVALID_LENGTH',\n `ObjectID string must be ${OBJECTID_STRING_LEN} characters, got ${str.length}`,\n )\n }\n\n const bytes = new Uint8Array(OBJECTID_BYTES)\n for (let i = 0; i < OBJECTID_BYTES; i += 1) {\n const hiIndex = i * 2\n const loIndex = hiIndex + 1\n const hi = DECODING[str.charCodeAt(hiIndex)]\n const lo = DECODING[str.charCodeAt(loIndex)]\n\n if (hi === 255) {\n throw new ParseError('OBJECTID_INVALID_CHAR', `Invalid ObjectID character: ${str[hiIndex]}`)\n }\n if (lo === 255) {\n throw new ParseError('OBJECTID_INVALID_CHAR', `Invalid ObjectID character: ${str[loIndex]}`)\n }\n\n bytes[i] = (hi << 4) | lo\n }\n\n return bytes\n}\n","import { writeTimestamp32 } from '../common/bytes'\nimport { randomBytes, randomUint32 } from '../common/random'\nimport { BufferError, InvalidInputError } from '../errors'\nimport { decodeObjectIdHex, encodeObjectIdHex } from './hex'\n\n/**\n * MongoDB ObjectID\n *\n * A 96-bit (12-byte) identifier consisting of:\n * - 4 bytes: big-endian Unix timestamp in seconds\n * - 5 bytes: per-process random value\n * - 3 bytes: big-endian counter, always incrementing (wraps at 0xFFFFFF back to 0)\n *\n * Encoded as a 24-character lowercase hex string.\n */\n\nconst OBJECTID_BYTES = 12\nconst TIMESTAMP_BYTES = 4\nconst RANDOM_BYTES = 5\nconst COUNTER_BYTES = 3\nconst MAX_SECS = 0xffffffff\nconst MAX_COUNTER = 0xffffff\n\n// Validation regex: case-insensitive per KTD7, matching bson's ObjectId.isValid()\nconst OBJECTID_REGEX = /^[0-9a-f]{24}$/i\n\nexport type ObjectIdOptions = {\n /**\n * 5 bytes of random data to use for the ObjectID's random field.\n */\n random?: Uint8Array\n /**\n * Timestamp in seconds since Unix epoch.\n * Defaults to Math.floor(Date.now() / 1000).\n */\n secs?: number\n /**\n * 24-bit counter value (0 to 0xFFFFFF).\n */\n counter?: number\n}\n\nexport type ObjectId = {\n (): string\n <TBuf extends Uint8Array = Uint8Array>(options: ObjectIdOptions | undefined, buf: TBuf, offset?: number): TBuf\n (options?: ObjectIdOptions, buf?: undefined, offset?: number): string\n toBytes(id: string): Uint8Array\n fromBytes(bytes: Uint8Array): string\n timestamp(id: string): number\n isValid(id: unknown): id is string\n /** The nil ObjectID (all zeros) */\n NIL: string\n /** The max ObjectID (all 0xff) */\n MAX: string\n}\n\ntype ObjectIdState = {\n random: Uint8Array | undefined\n counter: number | undefined\n}\n\n/**\n * Module-level state for the per-process random value and the always-incrementing counter.\n *\n * IMPORTANT: This state persists across all objectid() calls in the module's lifetime.\n * - In serverless/edge functions with warm starts, state persists between invocations.\n * Unlike ULID/UUIDv7's per-timestamp sequence reset, the counter continuing to climb\n * across warm starts is exactly the anti-collision behavior the ObjectID spec intends.\n * - For isolated state, pass explicit `random`, `secs`, or `counter` via options.\n * - Tests should mock Date.now() or provide explicit options for deterministic behavior.\n */\nconst state: ObjectIdState = {\n random: undefined,\n counter: undefined,\n}\n\n/**\n * Draw 5 fresh random bytes into a newly-owned buffer, copying immediately so the\n * result is unaffected by any later pool refill triggered by other random draws\n * (e.g. the counter's `randomUint32()` call) before these bytes are consumed.\n */\nfunction freshRandom(): Uint8Array {\n const bytes = new Uint8Array(RANDOM_BYTES)\n bytes.set(randomBytes(RANDOM_BYTES))\n return bytes\n}\n\nfunction objectIdBytes(secs: number, random: Uint8Array, counter: number, buf?: Uint8Array, offset = 0): Uint8Array {\n if (!buf) {\n buf = new Uint8Array(OBJECTID_BYTES)\n offset = 0\n } else if (offset < 0 || offset + OBJECTID_BYTES > buf.length) {\n throw new BufferError(\n 'OBJECTID_BUFFER_OUT_OF_BOUNDS',\n `ObjectID byte range ${offset}:${offset + OBJECTID_BYTES - 1} is out of buffer bounds`,\n )\n }\n\n // Timestamp (32-bit big-endian seconds since Unix epoch) -> bytes 0-3\n writeTimestamp32(buf, offset, secs)\n\n // Random (5 bytes) -> bytes 4-8\n for (let i = 0; i < RANDOM_BYTES; i += 1) {\n buf[offset + TIMESTAMP_BYTES + i] = random[i]\n }\n\n // Counter (24-bit big-endian) -> bytes 9-11\n buf[offset + TIMESTAMP_BYTES + RANDOM_BYTES] = (counter >>> 16) & 0xff\n buf[offset + TIMESTAMP_BYTES + RANDOM_BYTES + 1] = (counter >>> 8) & 0xff\n buf[offset + TIMESTAMP_BYTES + RANDOM_BYTES + COUNTER_BYTES - 1] = counter & 0xff\n\n return buf\n}\n\n/*\n * Overload: no buffer => return an ObjectID string.\n */\nfunction objectIdFn(options?: ObjectIdOptions, buf?: undefined, offset?: number): string\n/*\n * Overload: caller provides a buffer slice to fill with ObjectID bytes.\n */\nfunction objectIdFn<TBuf extends Uint8Array = Uint8Array>(\n options: ObjectIdOptions | undefined,\n buf: TBuf,\n offset?: number,\n): TBuf\nfunction objectIdFn<TBuf extends Uint8Array = Uint8Array>(\n options?: ObjectIdOptions,\n buf?: TBuf,\n offset = 0,\n): string | TBuf {\n let secs: number\n let random: Uint8Array\n let counter: number\n\n if (options) {\n const optRandom = options.random\n if (optRandom && optRandom.length < RANDOM_BYTES) {\n throw new InvalidInputError(\n 'OBJECTID_RANDOM_BYTES_TOO_SHORT',\n `Random bytes length must be >= ${RANDOM_BYTES} for ObjectID`,\n )\n }\n\n const optSecs = options.secs\n if (optSecs !== undefined && (optSecs < 0 || optSecs > MAX_SECS)) {\n throw new InvalidInputError('OBJECTID_TIMESTAMP_OUT_OF_RANGE', `Timestamp must be between 0 and ${MAX_SECS}`)\n }\n\n const optCounter = options.counter\n if (optCounter !== undefined && (optCounter < 0 || optCounter > MAX_COUNTER)) {\n throw new InvalidInputError('OBJECTID_COUNTER_OUT_OF_RANGE', `Counter must be between 0 and ${MAX_COUNTER}`)\n }\n\n // Options bypass persistent state entirely: every field is sourced fresh (given\n // value, or an independently-defaulted one), never read from or written to\n // `state` (see KTD2). This is what makes options-based generation deterministic\n // when all three fields are supplied.\n secs = optSecs ?? Math.floor(Date.now() / 1000)\n random = optRandom ?? freshRandom()\n counter = optCounter ?? randomUint32() & MAX_COUNTER\n } else {\n // Lazily initialize persistent state on first no-option call.\n if (state.random === undefined) {\n state.random = freshRandom()\n }\n if (state.counter === undefined) {\n state.counter = randomUint32() & MAX_COUNTER\n }\n\n /**\n * Note: by default, Cloudflare Workers \"freezes\" time during request handling to prevent\n * side-channel attacks. This means that Date.now() will return the same value for the entire\n * duration of a request.\n * Implications:\n * - all ObjectIDs generated within a single request will share the same timestamp.\n * - monotonic ordering relies entirely on the ever-incrementing counter.\n */\n secs = Math.floor(Date.now() / 1000)\n random = state.random\n state.counter = (state.counter + 1) & MAX_COUNTER\n counter = state.counter\n }\n\n if (buf) {\n objectIdBytes(secs, random, counter, buf, offset)\n return buf\n }\n\n const bytes = objectIdBytes(secs, random, counter)\n return encodeObjectIdHex(bytes)\n}\n\n/**\n * Convert an ObjectID hex string to 12 bytes.\n */\nfunction toBytes(id: string): Uint8Array {\n return decodeObjectIdHex(id)\n}\n\n/**\n * Convert 12 bytes to an ObjectID hex string.\n */\nfunction fromBytes(bytes: Uint8Array): string {\n return encodeObjectIdHex(bytes)\n}\n\n/**\n * Extract the timestamp from an ObjectID string.\n * Returns Unix timestamp in milliseconds for API consistency with ulid/uuidv7/ksuid.\n * Note: ObjectID only has second precision, so the returned value will always end in 000.\n */\nfunction timestamp(id: string): number {\n const bytes = decodeObjectIdHex(id)\n // First 4 bytes are big-endian timestamp (seconds since Unix epoch)\n const secs = ((bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3]) >>> 0\n return secs * 1000\n}\n\n/**\n * Validate an ObjectID string format.\n * Case-insensitive (KTD7), matching bson's ObjectId.isValid() and this repo's existing\n * convention (ulid, ksuid) of accepting mixed-case input for parsing, even though\n * generation always emits lowercase (matching MongoDB driver output).\n */\nfunction isValid(id: unknown): id is string {\n return typeof id === 'string' && OBJECTID_REGEX.test(id)\n}\n\n/**\n * Generate a MongoDB ObjectID string or write the bytes into a buffer.\n *\n * ObjectID is a 12-byte identifier consisting of a 4-byte timestamp, a 5-byte\n * per-process random value, and a 3-byte always-incrementing counter, encoded\n * as a 24-character lowercase hex string. It is time-ordered and compatible\n * with MongoDB's own ObjectID implementation.\n *\n * @example\n * ```ts\n * import { objectid } from 'uniku/objectid'\n *\n * const id = objectid()\n * // => \"667c3f2a1e2b3c4d5e6f7081\"\n *\n * // Extract timestamp\n * const ts = objectid.timestamp(id)\n * console.log(new Date(ts))\n *\n * // Validate\n * objectid.isValid(id) // true\n *\n * // Convert to/from bytes (12 bytes)\n * const bytes = objectid.toBytes(id)\n * const restored = objectid.fromBytes(bytes)\n * ```\n */\nexport const objectid: ObjectId = Object.assign(objectIdFn, {\n toBytes,\n fromBytes,\n timestamp,\n isValid,\n NIL: '0'.repeat(24),\n MAX: 'f'.repeat(24),\n})\n\nexport { BufferError, InvalidInputError, ParseError, UniqueIdError } from '../errors'\n"],"mappings":"6LAcA,MAAM,EAAY,mBAKZC,EAAyB,MAAM,KACnC,CAAE,OAAQ,IAAK,EACd,EAAG,IAAS,EAAW,GAAQ,EAAK,IAAO,EAAU,EAAO,IAC9D,CAQK,EAAW,IAAI,WAAW,MAAM,CACtC,EAAS,KAAK,IAAI,CAElB,IAAK,IAAI,EAAI,EAAG,GAAK,EAAG,GAAK,EAC3B,EAAS,GAAoB,GAAK,EAEpC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,GAAK,EAC1B,EAAS,GAAoB,GAAK,GAAK,EACvC,EAAS,GAAoB,GAAK,GAAK,EAMzC,SAAgB,EAAkB,EAA2B,CAC3D,GAAI,EAAM,OAASD,GACjB,MAAM,IAAI,EACR,2BACA,iDAAgE,EAAM,SACvE,CAGH,IAAI,EAAU,GACd,IAAK,IAAI,EAAI,EAAG,EAAIA,GAAgB,GAAK,EACvC,GAAW,EAAa,EAAM,IAEhC,OAAO,EAMT,SAAgB,EAAkB,EAAyB,CACzD,GAAI,EAAI,SAAW,GACjB,MAAM,IAAI,EACR,0BACA,8CAAkE,EAAI,SACvE,CAGH,IAAM,EAAQ,IAAI,WAAWA,GAAe,CAC5C,IAAK,IAAI,EAAI,EAAG,EAAIA,GAAgB,GAAK,EAAG,CAC1C,IAAM,EAAU,EAAI,EACd,EAAU,EAAU,EACpB,EAAK,EAAS,EAAI,WAAW,EAAQ,EACrC,EAAK,EAAS,EAAI,WAAW,EAAQ,EAE3C,GAAI,IAAO,IACT,MAAM,IAAI,EAAW,wBAAyB,+BAA+B,EAAI,KAAW,CAE9F,GAAI,IAAO,IACT,MAAM,IAAI,EAAW,wBAAyB,+BAA+B,EAAI,KAAW,CAG9F,EAAM,GAAM,GAAM,EAAK,EAGzB,OAAO,ECvET,MAIM,EAAW,WACX,EAAc,SAGd,EAAiB,kBA+CjBE,EAAuB,CAC3B,OAAQ,IAAA,GACR,QAAS,IAAA,GACV,CAOD,SAAS,GAA0B,CACjC,IAAM,EAAQ,IAAI,WAAW,EAAa,CAE1C,OADA,EAAM,IAAI,EAAY,EAAa,CAAC,CAC7B,EAGT,SAAS,EAAc,EAAc,EAAoB,EAAiB,EAAkB,EAAS,EAAe,CAClH,GAAI,CAAC,EACH,EAAM,IAAI,WAAW,GAAe,CACpC,EAAS,UACA,EAAS,GAAK,EAAS,GAAiB,EAAI,OACrD,MAAM,IAAI,EACR,gCACA,uBAAuB,EAAO,GAAG,EAAS,GAAiB,EAAE,0BAC9D,CAIH,EAAiB,EAAK,EAAQ,EAAK,CAGnC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAc,GAAK,EACrC,EAAI,EAAS,EAAkB,GAAK,EAAO,GAQ7C,MAJA,GAAI,EAAS,EAAkB,GAAiB,IAAY,GAAM,IAClE,EAAI,EAAS,EAAkB,EAAe,GAAM,IAAY,EAAK,IACrE,EAAI,EAAS,EAAkB,EAAe,EAAgB,GAAK,EAAU,IAEtE,EAeT,SAAS,EACP,EACA,EACA,EAAS,EACM,CACf,IAAIC,EACAC,EACAC,EAEJ,GAAI,EAAS,CACX,IAAM,EAAY,EAAQ,OAC1B,GAAI,GAAa,EAAU,OAAS,EAClC,MAAM,IAAI,EACR,kCACA,gDACD,CAGH,IAAM,EAAU,EAAQ,KACxB,GAAI,IAAY,IAAA,KAAc,EAAU,GAAK,EAAU,GACrD,MAAM,IAAI,EAAkB,kCAAmC,mCAAmC,IAAW,CAG/G,IAAM,EAAa,EAAQ,QAC3B,GAAI,IAAe,IAAA,KAAc,EAAa,GAAK,EAAa,GAC9D,MAAM,IAAI,EAAkB,gCAAiC,iCAAiC,IAAc,CAO9G,EAAO,GAAW,KAAK,MAAM,KAAK,KAAK,CAAG,IAAK,CAC/C,EAAS,GAAa,GAAa,CACnC,EAAU,GAAc,GAAc,CAAG,OAGrC,EAAM,SAAW,IAAA,KACnB,EAAM,OAAS,GAAa,EAE1B,EAAM,UAAY,IAAA,KACpB,EAAM,QAAU,GAAc,CAAG,GAWnC,EAAO,KAAK,MAAM,KAAK,KAAK,CAAG,IAAK,CACpC,EAAS,EAAM,OACf,EAAM,QAAW,EAAM,QAAU,EAAK,EACtC,EAAU,EAAM,QASlB,OANI,GACF,EAAc,EAAM,EAAQ,EAAS,EAAK,EAAO,CAC1C,GAIF,EADO,EAAc,EAAM,EAAQ,EAAQ,CACnB,CAMjC,SAAS,EAAQ,EAAwB,CACvC,OAAO,EAAkB,EAAG,CAM9B,SAAS,EAAU,EAA2B,CAC5C,OAAO,EAAkB,EAAM,CAQjC,SAAS,EAAU,EAAoB,CACrC,IAAM,EAAQ,EAAkB,EAAG,CAGnC,QADe,EAAM,IAAM,GAAO,EAAM,IAAM,GAAO,EAAM,IAAM,EAAK,EAAM,MAAQ,GACtE,IAShB,SAAS,EAAQ,EAA2B,CAC1C,OAAO,OAAO,GAAO,UAAY,EAAe,KAAK,EAAG,CA8B1D,MAAaC,EAAqB,OAAO,OAAO,EAAY,CAC1D,UACA,YACA,YACA,UACA,IAAK,IAAI,OAAO,GAAG,CACnB,IAAK,IAAI,OAAO,GAAG,CACpB,CAAC"}
@@ -0,0 +1,2 @@
1
+ const e=globalThis.crypto.getRandomValues.bind(globalThis.crypto),t=new Uint8Array(256);let n=256;function r(){e(t),n=0}function i(i){if(i>256)return e(new Uint8Array(i));n+i>256&&r();let a=n;return n+=i,t.subarray(a,n)}function a(){n>252&&r();let e=t[n]*16777216+t[n+1]*65536+t[n+2]*256+t[n+3]>>>0;return n+=4,e}function o(){n>240&&r();let e=n;return n+=16,t.subarray(e,n)}export{a as n,o as r,i as t};
2
+ //# sourceMappingURL=random-C_nRoaUe.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"random-CGMm8owG.mjs","names":[],"sources":["../src/common/random.ts"],"sourcesContent":["const randomFill = /*@__PURE__*/ globalThis.crypto.getRandomValues.bind(globalThis.crypto)\n\n/**\n * Simple random byte pool for ID generation.\n *\n * Module-level state is per JavaScript isolate, so SharedArrayBuffer and Atomics\n * only add overhead here. Returned views are consumed synchronously by callers.\n */\n\nconst POOL_SIZE = 256\nconst pool = new Uint8Array(POOL_SIZE)\nlet poolOffset = POOL_SIZE\n\nfunction refillPool(): void {\n randomFill(pool)\n poolOffset = 0\n}\n\n/**\n * Return a view of `count` random bytes from the pool.\n */\nexport function randomBytes(count: number): Uint8Array {\n if (count > POOL_SIZE) {\n return randomFill(new Uint8Array(count))\n }\n\n if (poolOffset + count > POOL_SIZE) {\n refillPool()\n }\n\n const start = poolOffset\n poolOffset += count\n return pool.subarray(start, poolOffset)\n}\n\n/**\n * Generate a random unsigned 32-bit integer from the shared pool.\n */\nexport function randomUint32(): number {\n if (poolOffset > POOL_SIZE - 4) {\n refillPool()\n }\n\n const value =\n (pool[poolOffset] * 0x1000000 +\n pool[poolOffset + 1] * 0x10000 +\n pool[poolOffset + 2] * 0x100 +\n pool[poolOffset + 3]) >>>\n 0\n poolOffset += 4\n return value\n}\n\n/**\n * Generate 16 bytes of cryptographically strong random data.\n * Uses a pre-filled pool to minimize crypto API calls.\n */\nexport function rng(): Uint8Array {\n if (poolOffset > POOL_SIZE - 16) {\n refillPool()\n }\n\n const start = poolOffset\n poolOffset += 16\n return pool.subarray(start, poolOffset)\n}\n"],"mappings":"AAAA,MAAM,EAA2B,WAAW,OAAO,gBAAgB,KAAK,WAAW,OAAO,CAUpF,EAAO,IAAI,WAAW,IAAU,CACtC,IAAI,EAAa,IAEjB,SAAS,GAAmB,CAC1B,EAAW,EAAK,CAChB,EAAa,EAuBf,SAAgB,GAAuB,CACjC,EAAa,KACf,GAAY,CAGd,IAAM,EACH,EAAK,GAAc,SAClB,EAAK,EAAa,GAAK,MACvB,EAAK,EAAa,GAAK,IACvB,EAAK,EAAa,KACpB,EAEF,MADA,IAAc,EACP,EAOT,SAAgB,GAAkB,CAC5B,EAAa,KACf,GAAY,CAGd,IAAM,EAAQ,EAEd,MADA,IAAc,GACP,EAAK,SAAS,EAAO,EAAW"}
1
+ {"version":3,"file":"random-C_nRoaUe.mjs","names":[],"sources":["../src/common/random.ts"],"sourcesContent":["const randomFill = /*@__PURE__*/ globalThis.crypto.getRandomValues.bind(globalThis.crypto)\n\n/**\n * Simple random byte pool for ID generation.\n *\n * Module-level state is per JavaScript isolate, so SharedArrayBuffer and Atomics\n * only add overhead here. Returned views are consumed synchronously by callers.\n */\n\nconst POOL_SIZE = 256\nconst pool = new Uint8Array(POOL_SIZE)\nlet poolOffset = POOL_SIZE\n\nfunction refillPool(): void {\n randomFill(pool)\n poolOffset = 0\n}\n\n/**\n * Return a view of `count` random bytes from the pool.\n */\nexport function randomBytes(count: number): Uint8Array {\n if (count > POOL_SIZE) {\n return randomFill(new Uint8Array(count))\n }\n\n if (poolOffset + count > POOL_SIZE) {\n refillPool()\n }\n\n const start = poolOffset\n poolOffset += count\n return pool.subarray(start, poolOffset)\n}\n\n/**\n * Generate a random unsigned 32-bit integer from the shared pool.\n */\nexport function randomUint32(): number {\n if (poolOffset > POOL_SIZE - 4) {\n refillPool()\n }\n\n const value =\n (pool[poolOffset] * 0x1000000 +\n pool[poolOffset + 1] * 0x10000 +\n pool[poolOffset + 2] * 0x100 +\n pool[poolOffset + 3]) >>>\n 0\n poolOffset += 4\n return value\n}\n\n/**\n * Generate 16 bytes of cryptographically strong random data.\n * Uses a pre-filled pool to minimize crypto API calls.\n */\nexport function rng(): Uint8Array {\n if (poolOffset > POOL_SIZE - 16) {\n refillPool()\n }\n\n const start = poolOffset\n poolOffset += 16\n return pool.subarray(start, poolOffset)\n}\n"],"mappings":"AAAA,MAAM,EAA2B,WAAW,OAAO,gBAAgB,KAAK,WAAW,OAAO,CAUpF,EAAO,IAAI,WAAW,IAAU,CACtC,IAAI,EAAa,IAEjB,SAAS,GAAmB,CAC1B,EAAW,EAAK,CAChB,EAAa,EAMf,SAAgB,EAAY,EAA2B,CACrD,GAAI,EAAQ,IACV,OAAO,EAAW,IAAI,WAAW,EAAM,CAAC,CAGtC,EAAa,EAAQ,KACvB,GAAY,CAGd,IAAM,EAAQ,EAEd,MADA,IAAc,EACP,EAAK,SAAS,EAAO,EAAW,CAMzC,SAAgB,GAAuB,CACjC,EAAa,KACf,GAAY,CAGd,IAAM,EACH,EAAK,GAAc,SAClB,EAAK,EAAa,GAAK,MACvB,EAAK,EAAa,GAAK,IACvB,EAAK,EAAa,KACpB,EAEF,MADA,IAAc,EACP,EAOT,SAAgB,GAAkB,CAC5B,EAAa,KACf,GAAY,CAGd,IAAM,EAAQ,EAEd,MADA,IAAc,GACP,EAAK,SAAS,EAAO,EAAW"}
@@ -1,2 +1,2 @@
1
- import{n as e}from"../random-CGMm8owG.mjs";import{BufferError as t,InvalidInputError as n,ParseError as r,UniqueIdError as i}from"../errors.mjs";import{r as a,t as o}from"../bytes-DzcOKIx1.mjs";const s=`0123456789ABCDEFGHJKMNPQRSTVWXYZ`,c=new Uint8Array(65536);c.fill(255);for(let e=0;e<32;e+=1){let t=s.charCodeAt(e),n=s[e].toLowerCase().charCodeAt(0);c[t]=e,c[n]=e}function l(e,t){return new r(`ULID_INVALID_CHAR`,`Invalid ULID character: ${e[t]}`)}function u(){return new r(`ULID_TIMESTAMP_OVERFLOW`,`ULID timestamp exceeds 48 bits`)}function d(e){let t=c[e.charCodeAt(0)];if(t===255)throw l(e,0);if(t>7)throw u();let n=t;for(let t=1;t<10;t+=1){let r=c[e.charCodeAt(t)];if(r===255)throw l(e,t);n=n*32+r}return n}function f(e){return s[Math.floor(e/35184372088832)&31]+s[Math.floor(e/1099511627776)&31]+s[Math.floor(e/34359738368)&31]+s[Math.floor(e/1073741824)&31]+s[Math.floor(e/33554432)&31]+s[Math.floor(e/1048576)&31]+s[Math.floor(e/32768)&31]+s[Math.floor(e/1024)&31]+s[Math.floor(e/32)&31]+s[e&31]}function p(e){return s[e[0]>>3&31]+s[(e[0]<<2|e[1]>>6)&31]+s[e[1]>>1&31]+s[(e[1]<<4|e[2]>>4)&31]+s[(e[2]<<1|e[3]>>7)&31]+s[e[3]>>2&31]+s[(e[3]<<3|e[4]>>5)&31]+s[e[4]&31]+s[e[5]>>3&31]+s[(e[5]<<2|e[6]>>6)&31]+s[e[6]>>1&31]+s[(e[6]<<4|e[7]>>4)&31]+s[(e[7]<<1|e[8]>>7)&31]+s[e[8]>>2&31]+s[(e[8]<<3|e[9]>>5)&31]+s[e[9]&31]}function m(e){if(e.length!==26)throw new r(`ULID_INVALID_LENGTH`,`ULID string must be 26 characters`);return d(e)}function h(e){if(e.length!==26)throw new r(`ULID_INVALID_LENGTH`,`ULID string must be 26 characters`);let t=new Uint8Array(16),n=c[e.charCodeAt(0)],i=c[e.charCodeAt(1)],a=c[e.charCodeAt(2)],o=c[e.charCodeAt(3)],s=c[e.charCodeAt(4)],d=c[e.charCodeAt(5)],f=c[e.charCodeAt(6)],p=c[e.charCodeAt(7)],m=c[e.charCodeAt(8)],h=c[e.charCodeAt(9)],g=c[e.charCodeAt(10)],_=c[e.charCodeAt(11)],v=c[e.charCodeAt(12)],y=c[e.charCodeAt(13)],b=c[e.charCodeAt(14)],x=c[e.charCodeAt(15)],S=c[e.charCodeAt(16)],C=c[e.charCodeAt(17)],w=c[e.charCodeAt(18)],T=c[e.charCodeAt(19)],E=c[e.charCodeAt(20)],D=c[e.charCodeAt(21)],O=c[e.charCodeAt(22)],k=c[e.charCodeAt(23)],A=c[e.charCodeAt(24)],j=c[e.charCodeAt(25)];if((n|i|a|o|s|d|f|p|m|h|g|_|v|y|b|x|S|C|w|T|E|D|O|k|A|j)&128){for(let t=0;t<26;t+=1)if(c[e.charCodeAt(t)]===255)throw l(e,t)}if(n>7)throw u();return t[0]=n<<5|i,t[1]=a<<3|o>>2,t[2]=o<<6|s<<1|d>>4,t[3]=d<<4|f>>1,t[4]=f<<7|p<<2|m>>3,t[5]=m<<5|h,t[6]=g<<3|_>>2,t[7]=_<<6|v<<1|y>>4,t[8]=y<<4|b>>1,t[9]=b<<7|x<<2|S>>3,t[10]=S<<5|C,t[11]=w<<3|T>>2,t[12]=T<<6|E<<1|D>>4,t[13]=D<<4|O>>1,t[14]=O<<7|k<<2|A>>3,t[15]=A<<5|j,t}function g(e){if(e.length<16)throw new t(`ULID_BYTES_TOO_SHORT`,`Byte array must be at least 16 bytes`);let n=0;for(let t=0;t<6;t+=1)n=n*256+e[t];return f(n)+p(e.subarray(6,16))}const _=/^[0-7][0-9A-HJKMNP-TV-Z]{25}$/i,v={msecs:-1/0,lastRandom:new Uint8Array(10)};function y(e,n,r,i=0){if(!r)r=new Uint8Array(16),i=0;else if(i<0||i+16>r.length)throw new t(`ULID_BUFFER_OUT_OF_BOUNDS`,`ULID byte range ${i}:${i+15} is out of buffer bounds`);a(r,i,e);for(let e=0;e<10;e+=1)r[i+6+e]=n[e];return r}function b(t,r,i=0){let a,s,c=Date.now();if(t)if(a=t.msecs??c,t.random){if(t.random.length<10)throw new n(`ULID_RANDOM_BYTES_TOO_SHORT`,`Random bytes length must be >= 10 for ULID`);s=t.random}else s=e();else if(a=c,a>v.msecs)s=e(),v.msecs=a,v.lastRandom.set(s.subarray(0,10));else{if(a=v.msecs,!o(v.lastRandom))throw v.lastRandom.fill(255),new n(`ULID_RANDOM_OVERFLOW`,`ULID random component overflowed while preserving monotonic order`);s=v.lastRandom}return r?(y(a,s,r,i),r):f(a)+p(s)}function x(e){return typeof e==`string`&&_.test(e)}const S=Object.assign(b,{toBytes:e=>h(e),fromBytes:e=>g(e),timestamp:e=>m(e),isValid:x,NIL:`00000000000000000000000000`,MAX:`7ZZZZZZZZZZZZZZZZZZZZZZZZZ`});export{t as BufferError,n as InvalidInputError,r as ParseError,i as UniqueIdError,S as ulid};
1
+ import{r as e}from"../random-C_nRoaUe.mjs";import{BufferError as t,InvalidInputError as n,ParseError as r,UniqueIdError as i}from"../errors.mjs";import{r as a,t as o}from"../bytes-CbbFzz-v.mjs";const s=`0123456789ABCDEFGHJKMNPQRSTVWXYZ`,c=new Uint8Array(65536);c.fill(255);for(let e=0;e<32;e+=1){let t=s.charCodeAt(e),n=s[e].toLowerCase().charCodeAt(0);c[t]=e,c[n]=e}function l(e,t){return new r(`ULID_INVALID_CHAR`,`Invalid ULID character: ${e[t]}`)}function u(){return new r(`ULID_TIMESTAMP_OVERFLOW`,`ULID timestamp exceeds 48 bits`)}function d(e){let t=c[e.charCodeAt(0)];if(t===255)throw l(e,0);if(t>7)throw u();let n=t;for(let t=1;t<10;t+=1){let r=c[e.charCodeAt(t)];if(r===255)throw l(e,t);n=n*32+r}return n}function f(e){return s[Math.floor(e/35184372088832)&31]+s[Math.floor(e/1099511627776)&31]+s[Math.floor(e/34359738368)&31]+s[Math.floor(e/1073741824)&31]+s[Math.floor(e/33554432)&31]+s[Math.floor(e/1048576)&31]+s[Math.floor(e/32768)&31]+s[Math.floor(e/1024)&31]+s[Math.floor(e/32)&31]+s[e&31]}function p(e){return s[e[0]>>3&31]+s[(e[0]<<2|e[1]>>6)&31]+s[e[1]>>1&31]+s[(e[1]<<4|e[2]>>4)&31]+s[(e[2]<<1|e[3]>>7)&31]+s[e[3]>>2&31]+s[(e[3]<<3|e[4]>>5)&31]+s[e[4]&31]+s[e[5]>>3&31]+s[(e[5]<<2|e[6]>>6)&31]+s[e[6]>>1&31]+s[(e[6]<<4|e[7]>>4)&31]+s[(e[7]<<1|e[8]>>7)&31]+s[e[8]>>2&31]+s[(e[8]<<3|e[9]>>5)&31]+s[e[9]&31]}function m(e){if(e.length!==26)throw new r(`ULID_INVALID_LENGTH`,`ULID string must be 26 characters`);return d(e)}function h(e){if(e.length!==26)throw new r(`ULID_INVALID_LENGTH`,`ULID string must be 26 characters`);let t=new Uint8Array(16),n=c[e.charCodeAt(0)],i=c[e.charCodeAt(1)],a=c[e.charCodeAt(2)],o=c[e.charCodeAt(3)],s=c[e.charCodeAt(4)],d=c[e.charCodeAt(5)],f=c[e.charCodeAt(6)],p=c[e.charCodeAt(7)],m=c[e.charCodeAt(8)],h=c[e.charCodeAt(9)],g=c[e.charCodeAt(10)],_=c[e.charCodeAt(11)],v=c[e.charCodeAt(12)],y=c[e.charCodeAt(13)],b=c[e.charCodeAt(14)],x=c[e.charCodeAt(15)],S=c[e.charCodeAt(16)],C=c[e.charCodeAt(17)],w=c[e.charCodeAt(18)],T=c[e.charCodeAt(19)],E=c[e.charCodeAt(20)],D=c[e.charCodeAt(21)],O=c[e.charCodeAt(22)],k=c[e.charCodeAt(23)],A=c[e.charCodeAt(24)],j=c[e.charCodeAt(25)];if((n|i|a|o|s|d|f|p|m|h|g|_|v|y|b|x|S|C|w|T|E|D|O|k|A|j)&128){for(let t=0;t<26;t+=1)if(c[e.charCodeAt(t)]===255)throw l(e,t)}if(n>7)throw u();return t[0]=n<<5|i,t[1]=a<<3|o>>2,t[2]=o<<6|s<<1|d>>4,t[3]=d<<4|f>>1,t[4]=f<<7|p<<2|m>>3,t[5]=m<<5|h,t[6]=g<<3|_>>2,t[7]=_<<6|v<<1|y>>4,t[8]=y<<4|b>>1,t[9]=b<<7|x<<2|S>>3,t[10]=S<<5|C,t[11]=w<<3|T>>2,t[12]=T<<6|E<<1|D>>4,t[13]=D<<4|O>>1,t[14]=O<<7|k<<2|A>>3,t[15]=A<<5|j,t}function g(e){if(e.length<16)throw new t(`ULID_BYTES_TOO_SHORT`,`Byte array must be at least 16 bytes`);let n=0;for(let t=0;t<6;t+=1)n=n*256+e[t];return f(n)+p(e.subarray(6,16))}const _=/^[0-7][0-9A-HJKMNP-TV-Z]{25}$/i,v={msecs:-1/0,lastRandom:new Uint8Array(10)};function y(e,n,r,i=0){if(!r)r=new Uint8Array(16),i=0;else if(i<0||i+16>r.length)throw new t(`ULID_BUFFER_OUT_OF_BOUNDS`,`ULID byte range ${i}:${i+15} is out of buffer bounds`);a(r,i,e);for(let e=0;e<10;e+=1)r[i+6+e]=n[e];return r}function b(t,r,i=0){let a,s,c=Date.now();if(t)if(a=t.msecs??c,t.random){if(t.random.length<10)throw new n(`ULID_RANDOM_BYTES_TOO_SHORT`,`Random bytes length must be >= 10 for ULID`);s=t.random}else s=e();else if(a=c,a>v.msecs)s=e(),v.msecs=a,v.lastRandom.set(s.subarray(0,10));else{if(a=v.msecs,!o(v.lastRandom))throw v.lastRandom.fill(255),new n(`ULID_RANDOM_OVERFLOW`,`ULID random component overflowed while preserving monotonic order`);s=v.lastRandom}return r?(y(a,s,r,i),r):f(a)+p(s)}function x(e){return typeof e==`string`&&_.test(e)}const S=Object.assign(b,{toBytes:e=>h(e),fromBytes:e=>g(e),timestamp:e=>m(e),isValid:x,NIL:`00000000000000000000000000`,MAX:`7ZZZZZZZZZZZZZZZZZZZZZZZZZ`});export{t as BufferError,n as InvalidInputError,r as ParseError,i as UniqueIdError,S as ulid};
2
2
  //# sourceMappingURL=ulid.mjs.map
package/build/uuid/v4.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{n as e}from"../random-CGMm8owG.mjs";import{BufferError as t,InvalidInputError as n,ParseError as r,UniqueIdError as i}from"../errors.mjs";import{n as a,t as o}from"../uuid-Ub6ladEr.mjs";const s=globalThis.crypto.randomUUID.bind(globalThis.crypto),c=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function l(e,r,i=0){if(e.length<16)throw new n(`UUID_RANDOM_BYTES_TOO_SHORT`,`Random bytes length must be >= 16`);if(e[6]=e[6]&15|64,e[8]=e[8]&63|128,!r)return e;if(i<0||i+16>r.length)throw new t(`UUID_BUFFER_OUT_OF_BOUNDS`,`UUID byte range ${i}:${i+15} is out of buffer bounds`);for(let t=0;t<16;t+=1)r[i+t]=e[t];return r}function u(e,t,n){return!t&&!e?s():d(e,t,n)}function d(t,n,r){let i=l(t?.random??e(),n,r);return n??o(i)}function f(e){return typeof e==`string`&&c.test(e)}const p=Object.assign(u,{toBytes:a,fromBytes:o,isValid:f,NIL:`00000000-0000-0000-0000-000000000000`,MAX:`ffffffff-ffff-ffff-ffff-ffffffffffff`});export{t as BufferError,n as InvalidInputError,r as ParseError,i as UniqueIdError,p as uuidv4};
1
+ import{r as e}from"../random-C_nRoaUe.mjs";import{BufferError as t,InvalidInputError as n,ParseError as r,UniqueIdError as i}from"../errors.mjs";import{n as a,t as o}from"../uuid-C9VcXh5N.mjs";const s=globalThis.crypto.randomUUID.bind(globalThis.crypto),c=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function l(e,r,i=0){if(e.length<16)throw new n(`UUID_RANDOM_BYTES_TOO_SHORT`,`Random bytes length must be >= 16`);if(e[6]=e[6]&15|64,e[8]=e[8]&63|128,!r)return e;if(i<0||i+16>r.length)throw new t(`UUID_BUFFER_OUT_OF_BOUNDS`,`UUID byte range ${i}:${i+15} is out of buffer bounds`);for(let t=0;t<16;t+=1)r[i+t]=e[t];return r}function u(e,t,n){return!t&&!e?s():d(e,t,n)}function d(t,n,r){let i=l(t?.random??e(),n,r);return n??o(i)}function f(e){return typeof e==`string`&&c.test(e)}const p=Object.assign(u,{toBytes:a,fromBytes:o,isValid:f,NIL:`00000000-0000-0000-0000-000000000000`,MAX:`ffffffff-ffff-ffff-ffff-ffffffffffff`});export{t as BufferError,n as InvalidInputError,r as ParseError,i as UniqueIdError,p as uuidv4};
2
2
  //# sourceMappingURL=v4.mjs.map
package/build/uuid/v7.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{n as e}from"../random-CGMm8owG.mjs";import{BufferError as t,InvalidInputError as n,ParseError as r,UniqueIdError as i}from"../errors.mjs";import{n as a,t as o}from"../uuid-Ub6ladEr.mjs";const s=/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,c=new Uint8Array(16),l={msecs:-1/0,seq:0};function u(e,r,i,a,o=0){if(e.length<16)throw new n(`UUID_RANDOM_BYTES_TOO_SHORT`,`Random bytes length must be >= 16`);if(o<0||o+16>a.length)throw new t(`UUID_BUFFER_OUT_OF_BOUNDS`,`UUID byte range ${o}:${o+15} is out of buffer bounds`);return r??=Date.now(),i??=e[6]<<23|e[7]<<16|e[8]<<8|e[9],a[o++]=r/1099511627776&255,a[o++]=r/4294967296&255,a[o++]=r/16777216&255,a[o++]=r/65536&255,a[o++]=r/256&255,a[o++]=r&255,a[o++]=112|i>>>28&15,a[o++]=i>>>20&255,a[o++]=128|i>>>14&63,a[o++]=i>>>6&255,a[o++]=i<<2&255|e[10]&3,a[o++]=e[11],a[o++]=e[12],a[o++]=e[13],a[o++]=e[14],a[o++]=e[15],a}function d(t,n,r){let i;if(t)i=u(t.random??e(),t.msecs,t.seq,n??c,n?r:0);else{let t=Date.now(),a=e();t>l.msecs?(l.seq=a[6]<<23|a[7]<<16|a[8]<<8|a[9],l.msecs=t):(l.seq=l.seq+1|0,l.seq<0&&(l.seq=0,l.msecs++)),i=u(a,l.msecs,l.seq,n??c,n?r:0)}return n?i:o(i)}function f(e){let t=a(e),n=0;for(let e=0;e<6;e+=1)n=n*256+t[e];return n}function p(e){return typeof e==`string`&&s.test(e)}const m=Object.assign(d,{toBytes:a,fromBytes:o,timestamp:f,isValid:p,NIL:`00000000-0000-0000-0000-000000000000`,MAX:`ffffffff-ffff-ffff-ffff-ffffffffffff`});export{t as BufferError,n as InvalidInputError,r as ParseError,i as UniqueIdError,m as uuidv7};
1
+ import{r as e}from"../random-C_nRoaUe.mjs";import{BufferError as t,InvalidInputError as n,ParseError as r,UniqueIdError as i}from"../errors.mjs";import{n as a,t as o}from"../uuid-C9VcXh5N.mjs";const s=/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,c=new Uint8Array(16),l={msecs:-1/0,seq:0};function u(e,r,i,a,o=0){if(e.length<16)throw new n(`UUID_RANDOM_BYTES_TOO_SHORT`,`Random bytes length must be >= 16`);if(o<0||o+16>a.length)throw new t(`UUID_BUFFER_OUT_OF_BOUNDS`,`UUID byte range ${o}:${o+15} is out of buffer bounds`);return r??=Date.now(),i??=e[6]<<23|e[7]<<16|e[8]<<8|e[9],a[o++]=r/1099511627776&255,a[o++]=r/4294967296&255,a[o++]=r/16777216&255,a[o++]=r/65536&255,a[o++]=r/256&255,a[o++]=r&255,a[o++]=112|i>>>28&15,a[o++]=i>>>20&255,a[o++]=128|i>>>14&63,a[o++]=i>>>6&255,a[o++]=i<<2&255|e[10]&3,a[o++]=e[11],a[o++]=e[12],a[o++]=e[13],a[o++]=e[14],a[o++]=e[15],a}function d(t,n,r){let i;if(t)i=u(t.random??e(),t.msecs,t.seq,n??c,n?r:0);else{let t=Date.now(),a=e();t>l.msecs?(l.seq=a[6]<<23|a[7]<<16|a[8]<<8|a[9],l.msecs=t):(l.seq=l.seq+1|0,l.seq<0&&(l.seq=0,l.msecs++)),i=u(a,l.msecs,l.seq,n??c,n?r:0)}return n?i:o(i)}function f(e){let t=a(e),n=0;for(let e=0;e<6;e+=1)n=n*256+t[e];return n}function p(e){return typeof e==`string`&&s.test(e)}const m=Object.assign(d,{toBytes:a,fromBytes:o,timestamp:f,isValid:p,NIL:`00000000-0000-0000-0000-000000000000`,MAX:`ffffffff-ffff-ffff-ffff-ffffffffffff`});export{t as BufferError,n as InvalidInputError,r as ParseError,i as UniqueIdError,m as uuidv7};
2
2
  //# sourceMappingURL=v7.mjs.map
@@ -1,2 +1,2 @@
1
1
  import{ParseError as e}from"./errors.mjs";function t(e){return e>=48&&e<=57?e-48:e>=65&&e<=70?e-65+10:e>=97&&e<=102?e-97+10:-1}const n=[0,0,1,1,2,2,3,3,-1,4,4,5,5,-1,6,6,7,7,-1,8,8,9,9,-1,10,10,11,11,12,12,13,13,14,14,15,15],r=[!0,!1,!0,!1,!0,!1,!0,!1,!1,!0,!1,!0,!1,!1,!0,!1,!0,!1,!1,!0,!1,!0,!1,!1,!0,!1,!0,!1,!0,!1,!0,!1,!0,!1,!0,!1],i=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`));function a(e){return i[e[0]]+i[e[1]]+i[e[2]]+i[e[3]]+`-`+i[e[4]]+i[e[5]]+`-`+i[e[6]]+i[e[7]]+`-`+i[e[8]]+i[e[9]]+`-`+i[e[10]]+i[e[11]]+i[e[12]]+i[e[13]]+i[e[14]]+i[e[15]]}function o(i){if(i.length!==36)throw new e(`UUID_INVALID_LENGTH`,`UUID string must be 36 characters, got ${i.length}`);if(i[8]!==`-`||i[13]!==`-`||i[18]!==`-`||i[23]!==`-`)throw new e(`UUID_INVALID_SEPARATORS`,`UUID string has invalid separators at positions 8, 13, 18, 23. Received: "${i}"`);let a=new Uint8Array(16);for(let o=0;o<36;o+=1){let s=n[o];if(s===-1)continue;let c=t(i.charCodeAt(o));if(c===-1)throw new e(`UUID_INVALID_HEX_CHAR`,`UUID string contains invalid hex character at position ${o}`);r[o]?a[s]=c<<4:a[s]|=c}return a}export{o as n,a as t};
2
- //# sourceMappingURL=uuid-Ub6ladEr.mjs.map
2
+ //# sourceMappingURL=uuid-C9VcXh5N.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"uuid-Ub6ladEr.mjs","names":["UUID_CHAR_TO_BYTE: number[]","UUID_CHAR_IS_HIGH: boolean[]","HEX_TABLE: string[]"],"sources":["../src/uuid/common/hex.ts","../src/uuid/common/uuid.ts"],"sourcesContent":["// ASCII code ranges for hex character validation\nconst ASCII_0 = 48 // '0'\nconst ASCII_9 = 57 // '9'\nconst ASCII_A = 65 // 'A'\nconst ASCII_F = 70 // 'F'\nconst ASCII_a = 97 // 'a'\nconst ASCII_f = 102 // 'f'\n\n/**\n * Convert a hex character ASCII code to its numeric value (0-15).\n * Returns -1 for invalid hex characters.\n */\nexport function hexValue(code: number): number {\n if (code >= ASCII_0 && code <= ASCII_9) {\n return code - ASCII_0\n }\n if (code >= ASCII_A && code <= ASCII_F) {\n return code - ASCII_A + 10\n }\n if (code >= ASCII_a && code <= ASCII_f) {\n return code - ASCII_a + 10\n }\n return -1 // Invalid hex character\n}\n","import { ParseError } from '../../errors'\nimport { hexValue } from './hex'\n\nconst UUID_BYTE_LENGTH = 16\nconst UUID_STRING_LENGTH = 36\n\n// Mapping from UUID string position to byte index.\n// -1 indicates a dash position that should be skipped.\n// This avoids intermediate string allocations during parsing.\nconst UUID_CHAR_TO_BYTE: number[] = [\n 0,\n 0,\n 1,\n 1,\n 2,\n 2,\n 3,\n 3, // chars 0-7 → bytes 0-3\n -1, // char 8 is '-'\n 4,\n 4,\n 5,\n 5, // chars 9-12 → bytes 4-5\n -1, // char 13 is '-'\n 6,\n 6,\n 7,\n 7, // chars 14-17 → bytes 6-7\n -1, // char 18 is '-'\n 8,\n 8,\n 9,\n 9, // chars 19-22 → bytes 8-9\n -1, // char 23 is '-'\n 10,\n 10,\n 11,\n 11,\n 12,\n 12,\n 13,\n 13,\n 14,\n 14,\n 15,\n 15, // chars 24-35 → bytes 10-15\n]\n\n// Whether each position is the high nibble (true) or low nibble (false)\nconst UUID_CHAR_IS_HIGH: boolean[] = [\n true,\n false,\n true,\n false,\n true,\n false,\n true,\n false, // chars 0-7\n false, // dash (ignored)\n true,\n false,\n true,\n false, // chars 9-12\n false, // dash\n true,\n false,\n true,\n false, // chars 14-17\n false, // dash\n true,\n false,\n true,\n false, // chars 19-22\n false, // dash\n true,\n false,\n true,\n false,\n true,\n false,\n true,\n false,\n true,\n false,\n true,\n false, // chars 24-35\n]\n\n// Pre-computed lookup table for byte-to-hex conversion (0x00 -> \"00\", 0xff -> \"ff\")\n//\n// Note: this table must remain defined in the same module as `formatUuid`, otherwise the v8 optimizer\n// will cause a performance drop of ~36%.\nconst HEX_TABLE: string[] = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'))\n\nexport function formatUuid(bytes: Uint8Array): string {\n // Direct string concatenation - optimized for V8's string builder.\n // This approach avoids loop overhead and intermediate allocations.\n // See: https://github.com/uuidjs/uuid/pull/434\n return (\n HEX_TABLE[bytes[0]] +\n HEX_TABLE[bytes[1]] +\n HEX_TABLE[bytes[2]] +\n HEX_TABLE[bytes[3]] +\n '-' +\n HEX_TABLE[bytes[4]] +\n HEX_TABLE[bytes[5]] +\n '-' +\n HEX_TABLE[bytes[6]] +\n HEX_TABLE[bytes[7]] +\n '-' +\n HEX_TABLE[bytes[8]] +\n HEX_TABLE[bytes[9]] +\n '-' +\n HEX_TABLE[bytes[10]] +\n HEX_TABLE[bytes[11]] +\n HEX_TABLE[bytes[12]] +\n HEX_TABLE[bytes[13]] +\n HEX_TABLE[bytes[14]] +\n HEX_TABLE[bytes[15]]\n )\n}\n\nexport function parseUuid(value: string): Uint8Array {\n if (value.length !== UUID_STRING_LENGTH) {\n throw new ParseError('UUID_INVALID_LENGTH', `UUID string must be 36 characters, got ${value.length}`)\n }\n\n // Validate separator positions directly (more efficient than full loop)\n if (value[8] !== '-' || value[13] !== '-' || value[18] !== '-' || value[23] !== '-') {\n throw new ParseError(\n 'UUID_INVALID_SEPARATORS',\n `UUID string has invalid separators at positions 8, 13, 18, 23. Received: \"${value}\"`,\n )\n }\n\n // Parse bytes directly from UUID string without intermediate string allocations.\n // This avoids the 9 allocations (5 slices + 4 concatenations) of the naive approach.\n const bytes = new Uint8Array(UUID_BYTE_LENGTH)\n\n for (let i = 0; i < UUID_STRING_LENGTH; i += 1) {\n const byteIdx = UUID_CHAR_TO_BYTE[i]\n if (byteIdx === -1) continue // Skip dash positions\n\n const nibble = hexValue(value.charCodeAt(i))\n if (nibble === -1) {\n throw new ParseError('UUID_INVALID_HEX_CHAR', `UUID string contains invalid hex character at position ${i}`)\n }\n\n if (UUID_CHAR_IS_HIGH[i]) {\n bytes[byteIdx] = nibble << 4\n } else {\n bytes[byteIdx] |= nibble\n }\n }\n\n return bytes\n}\n"],"mappings":"0CAYA,SAAgB,EAAS,EAAsB,CAU7C,OATI,GAAQ,IAAW,GAAQ,GACtB,EAAO,GAEZ,GAAQ,IAAW,GAAQ,GACtB,EAAO,GAAU,GAEtB,GAAQ,IAAW,GAAQ,IACtB,EAAO,GAAU,GAEnB,GCnBT,MAMMA,EAA8B,CAClC,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACD,CAGKC,EAA+B,CACnC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACD,CAMKC,EAAsB,MAAM,KAAK,CAAE,OAAQ,IAAK,EAAG,EAAG,IAAM,EAAE,SAAS,GAAG,CAAC,SAAS,EAAG,IAAI,CAAC,CAElG,SAAgB,EAAW,EAA2B,CAIpD,OACE,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,IACA,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,IACA,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,IACA,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,IACA,EAAU,EAAM,KAChB,EAAU,EAAM,KAChB,EAAU,EAAM,KAChB,EAAU,EAAM,KAChB,EAAU,EAAM,KAChB,EAAU,EAAM,KAIpB,SAAgB,EAAU,EAA2B,CACnD,GAAI,EAAM,SAAW,GACnB,MAAM,IAAI,EAAW,sBAAuB,0CAA0C,EAAM,SAAS,CAIvG,GAAI,EAAM,KAAO,KAAO,EAAM,MAAQ,KAAO,EAAM,MAAQ,KAAO,EAAM,MAAQ,IAC9E,MAAM,IAAI,EACR,0BACA,6EAA6E,EAAM,GACpF,CAKH,IAAM,EAAQ,IAAI,WAAW,GAAiB,CAE9C,IAAK,IAAI,EAAI,EAAG,EAAI,GAAoB,GAAK,EAAG,CAC9C,IAAM,EAAU,EAAkB,GAClC,GAAI,IAAY,GAAI,SAEpB,IAAM,EAAS,EAAS,EAAM,WAAW,EAAE,CAAC,CAC5C,GAAI,IAAW,GACb,MAAM,IAAI,EAAW,wBAAyB,0DAA0D,IAAI,CAG1G,EAAkB,GACpB,EAAM,GAAW,GAAU,EAE3B,EAAM,IAAY,EAItB,OAAO"}
1
+ {"version":3,"file":"uuid-C9VcXh5N.mjs","names":["UUID_CHAR_TO_BYTE: number[]","UUID_CHAR_IS_HIGH: boolean[]","HEX_TABLE: string[]"],"sources":["../src/uuid/common/hex.ts","../src/uuid/common/uuid.ts"],"sourcesContent":["// ASCII code ranges for hex character validation\nconst ASCII_0 = 48 // '0'\nconst ASCII_9 = 57 // '9'\nconst ASCII_A = 65 // 'A'\nconst ASCII_F = 70 // 'F'\nconst ASCII_a = 97 // 'a'\nconst ASCII_f = 102 // 'f'\n\n/**\n * Convert a hex character ASCII code to its numeric value (0-15).\n * Returns -1 for invalid hex characters.\n */\nexport function hexValue(code: number): number {\n if (code >= ASCII_0 && code <= ASCII_9) {\n return code - ASCII_0\n }\n if (code >= ASCII_A && code <= ASCII_F) {\n return code - ASCII_A + 10\n }\n if (code >= ASCII_a && code <= ASCII_f) {\n return code - ASCII_a + 10\n }\n return -1 // Invalid hex character\n}\n","import { ParseError } from '../../errors'\nimport { hexValue } from './hex'\n\nconst UUID_BYTE_LENGTH = 16\nconst UUID_STRING_LENGTH = 36\n\n// Mapping from UUID string position to byte index.\n// -1 indicates a dash position that should be skipped.\n// This avoids intermediate string allocations during parsing.\nconst UUID_CHAR_TO_BYTE: number[] = [\n 0,\n 0,\n 1,\n 1,\n 2,\n 2,\n 3,\n 3, // chars 0-7 → bytes 0-3\n -1, // char 8 is '-'\n 4,\n 4,\n 5,\n 5, // chars 9-12 → bytes 4-5\n -1, // char 13 is '-'\n 6,\n 6,\n 7,\n 7, // chars 14-17 → bytes 6-7\n -1, // char 18 is '-'\n 8,\n 8,\n 9,\n 9, // chars 19-22 → bytes 8-9\n -1, // char 23 is '-'\n 10,\n 10,\n 11,\n 11,\n 12,\n 12,\n 13,\n 13,\n 14,\n 14,\n 15,\n 15, // chars 24-35 → bytes 10-15\n]\n\n// Whether each position is the high nibble (true) or low nibble (false)\nconst UUID_CHAR_IS_HIGH: boolean[] = [\n true,\n false,\n true,\n false,\n true,\n false,\n true,\n false, // chars 0-7\n false, // dash (ignored)\n true,\n false,\n true,\n false, // chars 9-12\n false, // dash\n true,\n false,\n true,\n false, // chars 14-17\n false, // dash\n true,\n false,\n true,\n false, // chars 19-22\n false, // dash\n true,\n false,\n true,\n false,\n true,\n false,\n true,\n false,\n true,\n false,\n true,\n false, // chars 24-35\n]\n\n// Pre-computed lookup table for byte-to-hex conversion (0x00 -> \"00\", 0xff -> \"ff\")\n//\n// Note: this table must remain defined in the same module as `formatUuid`, otherwise the v8 optimizer\n// will cause a performance drop of ~36%.\nconst HEX_TABLE: string[] = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'))\n\nexport function formatUuid(bytes: Uint8Array): string {\n // Direct string concatenation - optimized for V8's string builder.\n // This approach avoids loop overhead and intermediate allocations.\n // See: https://github.com/uuidjs/uuid/pull/434\n return (\n HEX_TABLE[bytes[0]] +\n HEX_TABLE[bytes[1]] +\n HEX_TABLE[bytes[2]] +\n HEX_TABLE[bytes[3]] +\n '-' +\n HEX_TABLE[bytes[4]] +\n HEX_TABLE[bytes[5]] +\n '-' +\n HEX_TABLE[bytes[6]] +\n HEX_TABLE[bytes[7]] +\n '-' +\n HEX_TABLE[bytes[8]] +\n HEX_TABLE[bytes[9]] +\n '-' +\n HEX_TABLE[bytes[10]] +\n HEX_TABLE[bytes[11]] +\n HEX_TABLE[bytes[12]] +\n HEX_TABLE[bytes[13]] +\n HEX_TABLE[bytes[14]] +\n HEX_TABLE[bytes[15]]\n )\n}\n\nexport function parseUuid(value: string): Uint8Array {\n if (value.length !== UUID_STRING_LENGTH) {\n throw new ParseError('UUID_INVALID_LENGTH', `UUID string must be 36 characters, got ${value.length}`)\n }\n\n // Validate separator positions directly (more efficient than full loop)\n if (value[8] !== '-' || value[13] !== '-' || value[18] !== '-' || value[23] !== '-') {\n throw new ParseError(\n 'UUID_INVALID_SEPARATORS',\n `UUID string has invalid separators at positions 8, 13, 18, 23. Received: \"${value}\"`,\n )\n }\n\n // Parse bytes directly from UUID string without intermediate string allocations.\n // This avoids the 9 allocations (5 slices + 4 concatenations) of the naive approach.\n const bytes = new Uint8Array(UUID_BYTE_LENGTH)\n\n for (let i = 0; i < UUID_STRING_LENGTH; i += 1) {\n const byteIdx = UUID_CHAR_TO_BYTE[i]\n if (byteIdx === -1) continue // Skip dash positions\n\n const nibble = hexValue(value.charCodeAt(i))\n if (nibble === -1) {\n throw new ParseError('UUID_INVALID_HEX_CHAR', `UUID string contains invalid hex character at position ${i}`)\n }\n\n if (UUID_CHAR_IS_HIGH[i]) {\n bytes[byteIdx] = nibble << 4\n } else {\n bytes[byteIdx] |= nibble\n }\n }\n\n return bytes\n}\n"],"mappings":"0CAYA,SAAgB,EAAS,EAAsB,CAU7C,OATI,GAAQ,IAAW,GAAQ,GACtB,EAAO,GAEZ,GAAQ,IAAW,GAAQ,GACtB,EAAO,GAAU,GAEtB,GAAQ,IAAW,GAAQ,IACtB,EAAO,GAAU,GAEnB,GCnBT,MAMMA,EAA8B,CAClC,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACD,CAGKC,EAA+B,CACnC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACD,CAMKC,EAAsB,MAAM,KAAK,CAAE,OAAQ,IAAK,EAAG,EAAG,IAAM,EAAE,SAAS,GAAG,CAAC,SAAS,EAAG,IAAI,CAAC,CAElG,SAAgB,EAAW,EAA2B,CAIpD,OACE,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,IACA,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,IACA,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,IACA,EAAU,EAAM,IAChB,EAAU,EAAM,IAChB,IACA,EAAU,EAAM,KAChB,EAAU,EAAM,KAChB,EAAU,EAAM,KAChB,EAAU,EAAM,KAChB,EAAU,EAAM,KAChB,EAAU,EAAM,KAIpB,SAAgB,EAAU,EAA2B,CACnD,GAAI,EAAM,SAAW,GACnB,MAAM,IAAI,EAAW,sBAAuB,0CAA0C,EAAM,SAAS,CAIvG,GAAI,EAAM,KAAO,KAAO,EAAM,MAAQ,KAAO,EAAM,MAAQ,KAAO,EAAM,MAAQ,IAC9E,MAAM,IAAI,EACR,0BACA,6EAA6E,EAAM,GACpF,CAKH,IAAM,EAAQ,IAAI,WAAW,GAAiB,CAE9C,IAAK,IAAI,EAAI,EAAG,EAAI,GAAoB,GAAK,EAAG,CAC9C,IAAM,EAAU,EAAkB,GAClC,GAAI,IAAY,GAAI,SAEpB,IAAM,EAAS,EAAS,EAAM,WAAW,EAAE,CAAC,CAC5C,GAAI,IAAW,GACb,MAAM,IAAI,EAAW,wBAAyB,0DAA0D,IAAI,CAG1G,EAAkB,GACpB,EAAM,GAAW,GAAU,EAE3B,EAAM,IAAY,EAItB,OAAO"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": false,
3
3
  "name": "uniku",
4
- "version": "0.1.0",
4
+ "version": "0.2.0",
5
5
  "description": "Minimal, tree-shakeable unique ID generators for every JavaScript runtime",
6
6
  "author": {
7
7
  "name": "Alberto Schiabel",
@@ -27,6 +27,8 @@
27
27
  "cuid2",
28
28
  "nanoid",
29
29
  "ksuid",
30
+ "objectid",
31
+ "mongodb",
30
32
  "unique",
31
33
  "id",
32
34
  "identifier",
@@ -91,6 +93,11 @@
91
93
  "import": "./build/ksuid/ksuid.mjs",
92
94
  "default": "./build/ksuid/ksuid.mjs"
93
95
  },
96
+ "./objectid": {
97
+ "types": "./build/objectid/objectid.d.mts",
98
+ "import": "./build/objectid/objectid.mjs",
99
+ "default": "./build/objectid/objectid.mjs"
100
+ },
94
101
  "./errors": {
95
102
  "types": "./build/errors.d.mts",
96
103
  "import": "./build/errors.mjs",
@@ -105,6 +112,7 @@
105
112
  "@owpz/ksuid": "^25.7.20",
106
113
  "@paralleldrive/cuid2": "^3.3.0",
107
114
  "@types/bun": "^1.3.8",
115
+ "bson": "^7.3.1",
108
116
  "nanoid": "^5.1.6",
109
117
  "typeid-js": "1.2.0",
110
118
  "ulid": "3.0.2",
@@ -0,0 +1,89 @@
1
+ import { BufferError, ParseError } from '../errors'
2
+
3
+ /**
4
+ * Hex encoding/decoding for ObjectID.
5
+ * Alphabet: 0-9a-f (lowercase on encode, case-insensitive on decode)
6
+ *
7
+ * ObjectID binary format: 12 bytes (96 bits)
8
+ * - 4 bytes: big-endian Unix timestamp in seconds
9
+ * - 5 bytes: per-process random value
10
+ * - 3 bytes: big-endian counter
11
+ *
12
+ * String format: 24 characters of hex
13
+ */
14
+
15
+ const HEX_CHARS = '0123456789abcdef'
16
+ const OBJECTID_BYTES = 12
17
+ const OBJECTID_STRING_LEN = 24
18
+
19
+ // Pre-computed encode table: byte value (0-255) -> 2-char lowercase hex string.
20
+ const ENCODE_TABLE: string[] = Array.from(
21
+ { length: 256 },
22
+ (_, byte) => HEX_CHARS[(byte >> 4) & 0xf] + HEX_CHARS[byte & 0xf],
23
+ )
24
+
25
+ // Pre-computed decode table covering every UTF-16 code unit charCodeAt can
26
+ // return, so lookups never go out of bounds and a single `=== 255` check
27
+ // rejects invalid input (including non-ASCII) without a per-character range
28
+ // check. Costs 128 KiB once at module load; valid inputs only touch the first
29
+ // 128 bytes, so cache behavior is unaffected.
30
+ // Note: unlike Base62, hex decoding is case-insensitive - 'a' and 'A' both decode to 10.
31
+ const DECODING = new Uint8Array(65536)
32
+ DECODING.fill(255) // 255 = invalid marker
33
+
34
+ for (let i = 0; i <= 9; i += 1) {
35
+ DECODING['0'.charCodeAt(0) + i] = i
36
+ }
37
+ for (let i = 0; i < 6; i += 1) {
38
+ DECODING['a'.charCodeAt(0) + i] = 10 + i
39
+ DECODING['A'.charCodeAt(0) + i] = 10 + i
40
+ }
41
+
42
+ /**
43
+ * Encode 12 ObjectID bytes to a 24-character lowercase hex string.
44
+ */
45
+ export function encodeObjectIdHex(bytes: Uint8Array): string {
46
+ if (bytes.length < OBJECTID_BYTES) {
47
+ throw new BufferError(
48
+ 'OBJECTID_BYTES_TOO_SHORT',
49
+ `ObjectID bytes must be at least ${OBJECTID_BYTES} bytes, got ${bytes.length}`,
50
+ )
51
+ }
52
+
53
+ let encoded = ''
54
+ for (let i = 0; i < OBJECTID_BYTES; i += 1) {
55
+ encoded += ENCODE_TABLE[bytes[i]]
56
+ }
57
+ return encoded
58
+ }
59
+
60
+ /**
61
+ * Decode a 24-character hex string to 12 ObjectID bytes.
62
+ */
63
+ export function decodeObjectIdHex(str: string): Uint8Array {
64
+ if (str.length !== OBJECTID_STRING_LEN) {
65
+ throw new ParseError(
66
+ 'OBJECTID_INVALID_LENGTH',
67
+ `ObjectID string must be ${OBJECTID_STRING_LEN} characters, got ${str.length}`,
68
+ )
69
+ }
70
+
71
+ const bytes = new Uint8Array(OBJECTID_BYTES)
72
+ for (let i = 0; i < OBJECTID_BYTES; i += 1) {
73
+ const hiIndex = i * 2
74
+ const loIndex = hiIndex + 1
75
+ const hi = DECODING[str.charCodeAt(hiIndex)]
76
+ const lo = DECODING[str.charCodeAt(loIndex)]
77
+
78
+ if (hi === 255) {
79
+ throw new ParseError('OBJECTID_INVALID_CHAR', `Invalid ObjectID character: ${str[hiIndex]}`)
80
+ }
81
+ if (lo === 255) {
82
+ throw new ParseError('OBJECTID_INVALID_CHAR', `Invalid ObjectID character: ${str[loIndex]}`)
83
+ }
84
+
85
+ bytes[i] = (hi << 4) | lo
86
+ }
87
+
88
+ return bytes
89
+ }
@@ -0,0 +1,266 @@
1
+ import { writeTimestamp32 } from '../common/bytes'
2
+ import { randomBytes, randomUint32 } from '../common/random'
3
+ import { BufferError, InvalidInputError } from '../errors'
4
+ import { decodeObjectIdHex, encodeObjectIdHex } from './hex'
5
+
6
+ /**
7
+ * MongoDB ObjectID
8
+ *
9
+ * A 96-bit (12-byte) identifier consisting of:
10
+ * - 4 bytes: big-endian Unix timestamp in seconds
11
+ * - 5 bytes: per-process random value
12
+ * - 3 bytes: big-endian counter, always incrementing (wraps at 0xFFFFFF back to 0)
13
+ *
14
+ * Encoded as a 24-character lowercase hex string.
15
+ */
16
+
17
+ const OBJECTID_BYTES = 12
18
+ const TIMESTAMP_BYTES = 4
19
+ const RANDOM_BYTES = 5
20
+ const COUNTER_BYTES = 3
21
+ const MAX_SECS = 0xffffffff
22
+ const MAX_COUNTER = 0xffffff
23
+
24
+ // Validation regex: case-insensitive per KTD7, matching bson's ObjectId.isValid()
25
+ const OBJECTID_REGEX = /^[0-9a-f]{24}$/i
26
+
27
+ export type ObjectIdOptions = {
28
+ /**
29
+ * 5 bytes of random data to use for the ObjectID's random field.
30
+ */
31
+ random?: Uint8Array
32
+ /**
33
+ * Timestamp in seconds since Unix epoch.
34
+ * Defaults to Math.floor(Date.now() / 1000).
35
+ */
36
+ secs?: number
37
+ /**
38
+ * 24-bit counter value (0 to 0xFFFFFF).
39
+ */
40
+ counter?: number
41
+ }
42
+
43
+ export type ObjectId = {
44
+ (): string
45
+ <TBuf extends Uint8Array = Uint8Array>(options: ObjectIdOptions | undefined, buf: TBuf, offset?: number): TBuf
46
+ (options?: ObjectIdOptions, buf?: undefined, offset?: number): string
47
+ toBytes(id: string): Uint8Array
48
+ fromBytes(bytes: Uint8Array): string
49
+ timestamp(id: string): number
50
+ isValid(id: unknown): id is string
51
+ /** The nil ObjectID (all zeros) */
52
+ NIL: string
53
+ /** The max ObjectID (all 0xff) */
54
+ MAX: string
55
+ }
56
+
57
+ type ObjectIdState = {
58
+ random: Uint8Array | undefined
59
+ counter: number | undefined
60
+ }
61
+
62
+ /**
63
+ * Module-level state for the per-process random value and the always-incrementing counter.
64
+ *
65
+ * IMPORTANT: This state persists across all objectid() calls in the module's lifetime.
66
+ * - In serverless/edge functions with warm starts, state persists between invocations.
67
+ * Unlike ULID/UUIDv7's per-timestamp sequence reset, the counter continuing to climb
68
+ * across warm starts is exactly the anti-collision behavior the ObjectID spec intends.
69
+ * - For isolated state, pass explicit `random`, `secs`, or `counter` via options.
70
+ * - Tests should mock Date.now() or provide explicit options for deterministic behavior.
71
+ */
72
+ const state: ObjectIdState = {
73
+ random: undefined,
74
+ counter: undefined,
75
+ }
76
+
77
+ /**
78
+ * Draw 5 fresh random bytes into a newly-owned buffer, copying immediately so the
79
+ * result is unaffected by any later pool refill triggered by other random draws
80
+ * (e.g. the counter's `randomUint32()` call) before these bytes are consumed.
81
+ */
82
+ function freshRandom(): Uint8Array {
83
+ const bytes = new Uint8Array(RANDOM_BYTES)
84
+ bytes.set(randomBytes(RANDOM_BYTES))
85
+ return bytes
86
+ }
87
+
88
+ function objectIdBytes(secs: number, random: Uint8Array, counter: number, buf?: Uint8Array, offset = 0): Uint8Array {
89
+ if (!buf) {
90
+ buf = new Uint8Array(OBJECTID_BYTES)
91
+ offset = 0
92
+ } else if (offset < 0 || offset + OBJECTID_BYTES > buf.length) {
93
+ throw new BufferError(
94
+ 'OBJECTID_BUFFER_OUT_OF_BOUNDS',
95
+ `ObjectID byte range ${offset}:${offset + OBJECTID_BYTES - 1} is out of buffer bounds`,
96
+ )
97
+ }
98
+
99
+ // Timestamp (32-bit big-endian seconds since Unix epoch) -> bytes 0-3
100
+ writeTimestamp32(buf, offset, secs)
101
+
102
+ // Random (5 bytes) -> bytes 4-8
103
+ for (let i = 0; i < RANDOM_BYTES; i += 1) {
104
+ buf[offset + TIMESTAMP_BYTES + i] = random[i]
105
+ }
106
+
107
+ // Counter (24-bit big-endian) -> bytes 9-11
108
+ buf[offset + TIMESTAMP_BYTES + RANDOM_BYTES] = (counter >>> 16) & 0xff
109
+ buf[offset + TIMESTAMP_BYTES + RANDOM_BYTES + 1] = (counter >>> 8) & 0xff
110
+ buf[offset + TIMESTAMP_BYTES + RANDOM_BYTES + COUNTER_BYTES - 1] = counter & 0xff
111
+
112
+ return buf
113
+ }
114
+
115
+ /*
116
+ * Overload: no buffer => return an ObjectID string.
117
+ */
118
+ function objectIdFn(options?: ObjectIdOptions, buf?: undefined, offset?: number): string
119
+ /*
120
+ * Overload: caller provides a buffer slice to fill with ObjectID bytes.
121
+ */
122
+ function objectIdFn<TBuf extends Uint8Array = Uint8Array>(
123
+ options: ObjectIdOptions | undefined,
124
+ buf: TBuf,
125
+ offset?: number,
126
+ ): TBuf
127
+ function objectIdFn<TBuf extends Uint8Array = Uint8Array>(
128
+ options?: ObjectIdOptions,
129
+ buf?: TBuf,
130
+ offset = 0,
131
+ ): string | TBuf {
132
+ let secs: number
133
+ let random: Uint8Array
134
+ let counter: number
135
+
136
+ if (options) {
137
+ const optRandom = options.random
138
+ if (optRandom && optRandom.length < RANDOM_BYTES) {
139
+ throw new InvalidInputError(
140
+ 'OBJECTID_RANDOM_BYTES_TOO_SHORT',
141
+ `Random bytes length must be >= ${RANDOM_BYTES} for ObjectID`,
142
+ )
143
+ }
144
+
145
+ const optSecs = options.secs
146
+ if (optSecs !== undefined && (optSecs < 0 || optSecs > MAX_SECS)) {
147
+ throw new InvalidInputError('OBJECTID_TIMESTAMP_OUT_OF_RANGE', `Timestamp must be between 0 and ${MAX_SECS}`)
148
+ }
149
+
150
+ const optCounter = options.counter
151
+ if (optCounter !== undefined && (optCounter < 0 || optCounter > MAX_COUNTER)) {
152
+ throw new InvalidInputError('OBJECTID_COUNTER_OUT_OF_RANGE', `Counter must be between 0 and ${MAX_COUNTER}`)
153
+ }
154
+
155
+ // Options bypass persistent state entirely: every field is sourced fresh (given
156
+ // value, or an independently-defaulted one), never read from or written to
157
+ // `state` (see KTD2). This is what makes options-based generation deterministic
158
+ // when all three fields are supplied.
159
+ secs = optSecs ?? Math.floor(Date.now() / 1000)
160
+ random = optRandom ?? freshRandom()
161
+ counter = optCounter ?? randomUint32() & MAX_COUNTER
162
+ } else {
163
+ // Lazily initialize persistent state on first no-option call.
164
+ if (state.random === undefined) {
165
+ state.random = freshRandom()
166
+ }
167
+ if (state.counter === undefined) {
168
+ state.counter = randomUint32() & MAX_COUNTER
169
+ }
170
+
171
+ /**
172
+ * Note: by default, Cloudflare Workers "freezes" time during request handling to prevent
173
+ * side-channel attacks. This means that Date.now() will return the same value for the entire
174
+ * duration of a request.
175
+ * Implications:
176
+ * - all ObjectIDs generated within a single request will share the same timestamp.
177
+ * - monotonic ordering relies entirely on the ever-incrementing counter.
178
+ */
179
+ secs = Math.floor(Date.now() / 1000)
180
+ random = state.random
181
+ state.counter = (state.counter + 1) & MAX_COUNTER
182
+ counter = state.counter
183
+ }
184
+
185
+ if (buf) {
186
+ objectIdBytes(secs, random, counter, buf, offset)
187
+ return buf
188
+ }
189
+
190
+ const bytes = objectIdBytes(secs, random, counter)
191
+ return encodeObjectIdHex(bytes)
192
+ }
193
+
194
+ /**
195
+ * Convert an ObjectID hex string to 12 bytes.
196
+ */
197
+ function toBytes(id: string): Uint8Array {
198
+ return decodeObjectIdHex(id)
199
+ }
200
+
201
+ /**
202
+ * Convert 12 bytes to an ObjectID hex string.
203
+ */
204
+ function fromBytes(bytes: Uint8Array): string {
205
+ return encodeObjectIdHex(bytes)
206
+ }
207
+
208
+ /**
209
+ * Extract the timestamp from an ObjectID string.
210
+ * Returns Unix timestamp in milliseconds for API consistency with ulid/uuidv7/ksuid.
211
+ * Note: ObjectID only has second precision, so the returned value will always end in 000.
212
+ */
213
+ function timestamp(id: string): number {
214
+ const bytes = decodeObjectIdHex(id)
215
+ // First 4 bytes are big-endian timestamp (seconds since Unix epoch)
216
+ const secs = ((bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3]) >>> 0
217
+ return secs * 1000
218
+ }
219
+
220
+ /**
221
+ * Validate an ObjectID string format.
222
+ * Case-insensitive (KTD7), matching bson's ObjectId.isValid() and this repo's existing
223
+ * convention (ulid, ksuid) of accepting mixed-case input for parsing, even though
224
+ * generation always emits lowercase (matching MongoDB driver output).
225
+ */
226
+ function isValid(id: unknown): id is string {
227
+ return typeof id === 'string' && OBJECTID_REGEX.test(id)
228
+ }
229
+
230
+ /**
231
+ * Generate a MongoDB ObjectID string or write the bytes into a buffer.
232
+ *
233
+ * ObjectID is a 12-byte identifier consisting of a 4-byte timestamp, a 5-byte
234
+ * per-process random value, and a 3-byte always-incrementing counter, encoded
235
+ * as a 24-character lowercase hex string. It is time-ordered and compatible
236
+ * with MongoDB's own ObjectID implementation.
237
+ *
238
+ * @example
239
+ * ```ts
240
+ * import { objectid } from 'uniku/objectid'
241
+ *
242
+ * const id = objectid()
243
+ * // => "667c3f2a1e2b3c4d5e6f7081"
244
+ *
245
+ * // Extract timestamp
246
+ * const ts = objectid.timestamp(id)
247
+ * console.log(new Date(ts))
248
+ *
249
+ * // Validate
250
+ * objectid.isValid(id) // true
251
+ *
252
+ * // Convert to/from bytes (12 bytes)
253
+ * const bytes = objectid.toBytes(id)
254
+ * const restored = objectid.fromBytes(bytes)
255
+ * ```
256
+ */
257
+ export const objectid: ObjectId = Object.assign(objectIdFn, {
258
+ toBytes,
259
+ fromBytes,
260
+ timestamp,
261
+ isValid,
262
+ NIL: '0'.repeat(24),
263
+ MAX: 'f'.repeat(24),
264
+ })
265
+
266
+ export { BufferError, InvalidInputError, ParseError, UniqueIdError } from '../errors'
@@ -1,2 +0,0 @@
1
- const e=globalThis.crypto.getRandomValues.bind(globalThis.crypto),t=new Uint8Array(256);let n=256;function r(){e(t),n=0}function i(){n>252&&r();let e=t[n]*16777216+t[n+1]*65536+t[n+2]*256+t[n+3]>>>0;return n+=4,e}function a(){n>240&&r();let e=n;return n+=16,t.subarray(e,n)}export{a as n,i as t};
2
- //# sourceMappingURL=random-CGMm8owG.mjs.map
@@ -1 +0,0 @@
1
- {"fileNames":["../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.float16.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.iterator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.error.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.temporal.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/errors.ts","../src/common/bytes.ts","../src/common/random.ts","../../../node_modules/.pnpm/@noble+hashes@2.0.1/node_modules/@noble/hashes/utils.d.ts","../../../node_modules/.pnpm/@noble+hashes@2.0.1/node_modules/@noble/hashes/sha3.d.ts","../src/cuid2/cuid2.ts","../src/ksuid/base62.ts","../src/ksuid/ksuid.ts","../src/nanoid/nanoid.ts","../src/uuid/common/hex.ts","../src/uuid/common/uuid.ts","../src/uuid/v7.ts","../src/typeid/typeid.ts","../src/ulid/crockford.ts","../src/ulid/ulid.ts","../src/uuid/v4.ts","../../../node_modules/.pnpm/@owpz+ksuid@25.7.20/node_modules/@owpz/ksuid/dist/ksuid.d.ts","../../../node_modules/.pnpm/@owpz+ksuid@25.7.20/node_modules/@owpz/ksuid/dist/base62.d.ts","../../../node_modules/.pnpm/@owpz+ksuid@25.7.20/node_modules/@owpz/ksuid/dist/uint128.d.ts","../../../node_modules/.pnpm/@owpz+ksuid@25.7.20/node_modules/@owpz/ksuid/dist/sequence.d.ts","../../../node_modules/.pnpm/@owpz+ksuid@25.7.20/node_modules/@owpz/ksuid/dist/sort.d.ts","../../../node_modules/.pnpm/@owpz+ksuid@25.7.20/node_modules/@owpz/ksuid/dist/compressed-set.d.ts","../../../node_modules/.pnpm/@owpz+ksuid@25.7.20/node_modules/@owpz/ksuid/dist/errors.d.ts","../../../node_modules/.pnpm/@owpz+ksuid@25.7.20/node_modules/@owpz/ksuid/dist/index.d.ts","../../../node_modules/.pnpm/@paralleldrive+cuid2@3.3.0/node_modules/@paralleldrive/cuid2/index.d.ts","../../../node_modules/.pnpm/nanoid@5.1.6/node_modules/nanoid/index.d.ts","../../../node_modules/.pnpm/typeid-js@1.2.0/node_modules/typeid-js/dist/index.d.ts","../../../node_modules/.pnpm/ulid@3.0.2/node_modules/ulid/dist/types.d.ts","../../../node_modules/.pnpm/ulid@3.0.2/node_modules/ulid/dist/ulid.d.ts","../../../node_modules/.pnpm/ulid@3.0.2/node_modules/ulid/dist/uuid.d.ts","../../../node_modules/.pnpm/ulid@3.0.2/node_modules/ulid/dist/crockford.d.ts","../../../node_modules/.pnpm/ulid@3.0.2/node_modules/ulid/dist/error.d.ts","../../../node_modules/.pnpm/ulid@3.0.2/node_modules/ulid/dist/constants.d.ts","../../../node_modules/.pnpm/ulid@3.0.2/node_modules/ulid/dist/index.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/types.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/max.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/nil.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/parse.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/stringify.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v1.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v1ToV6.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v35.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v3.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v4.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v5.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v6.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v6ToV1.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v7.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/validate.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/version.d.ts","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+pretty-format@4.1.9/node_modules/@vitest/pretty-format/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.9/node_modules/@vitest/utils/dist/display.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.9/node_modules/@vitest/utils/dist/types.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.9/node_modules/@vitest/utils/dist/helpers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.9/node_modules/@vitest/utils/dist/timers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.9/node_modules/@vitest/utils/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.9/node_modules/@vitest/utils/dist/types.d-BCElaP-c.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.9/node_modules/@vitest/utils/dist/diff.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.9/node_modules/@vitest/runner/dist/tasks.d-DEYaIMIu.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.9/node_modules/@vitest/runner/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/traces.d.D2T_R8rx.d.ts","../../../node_modules/.pnpm/vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0/node_modules/vite/types/hmrPayload.d.ts","../../../node_modules/.pnpm/vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0/node_modules/vite/dist/node/chunks/moduleRunnerTransport.d.ts","../../../node_modules/.pnpm/vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0/node_modules/vite/types/customEvent.d.ts","../../../node_modules/.pnpm/vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0/node_modules/vite/types/hot.d.ts","../../../node_modules/.pnpm/vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0/node_modules/vite/dist/node/module-runner.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.9/node_modules/@vitest/snapshot/dist/environment.d-DOJxxZV9.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.9/node_modules/@vitest/snapshot/dist/rawSnapshot.d-D_X3-62x.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.9/node_modules/@vitest/snapshot/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/config.d.A1h_Y6Jt.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/environment.d.CrsxCzP1.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/rpc.d.B_8sPU0w.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/worker.d.ZpHpO4yb.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/browser.d.BcoexmFG.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.9/node_modules/@vitest/spy/optional-types.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.9/node_modules/@vitest/spy/dist/index.d.ts","../../../node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.d.ts","../../../node_modules/.pnpm/@standard-schema+spec@1.1.0/node_modules/@standard-schema/spec/dist/index.d.ts","../../../node_modules/.pnpm/@types+deep-eql@4.0.2/node_modules/@types/deep-eql/index.d.ts","../../../node_modules/.pnpm/assertion-error@2.0.1/node_modules/assertion-error/index.d.ts","../../../node_modules/.pnpm/@types+chai@5.2.3/node_modules/@types/chai/index.d.ts","../../../node_modules/.pnpm/@vitest+expect@4.1.9/node_modules/@vitest/expect/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.9/node_modules/@vitest/runner/dist/utils.d.ts","../../../node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/benchmark.d.DAaHLpsq.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/global.d.DVsSRdQ5.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/optional-runtime-types.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/@vitest/mocker/dist/types.d-BjI5eAwu.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/@vitest/mocker/dist/index.d-B41z0AuW.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/@vitest/mocker/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/suite.d.udJtyAgw.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/chunks/evaluatedModules.d.BxJ5omdx.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/runners.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/dist/index.d.ts","../__tests__/bench/compat.bench.ts","../__tests__/bench/id.bench.ts","../__tests__/helpers/assertions.ts","../__tests__/helpers/randomness.ts","../__tests__/integration/compat.test.ts","../scripts/bench-results.ts","../__tests__/unit/bench-results.test.ts","../__tests__/unit/bytes.test.ts","../__tests__/unit/crockford.test.ts","../__tests__/unit/cuid2.test.ts","../__tests__/unit/ksuid.test.ts","../__tests__/unit/nanoid.test.ts","../__tests__/unit/random.test.ts","../__tests__/unit/typeid.test.ts","../__tests__/unit/ulid.test.ts","../__tests__/unit/uuid.codec.test.ts","../__tests__/unit/uuid.v4.test.ts","../__tests__/unit/uuid.v7.test.ts","../scripts/bench-compare.ts","../scripts/bench-summary.ts","../../../node_modules/.pnpm/ansis@4.2.0/node_modules/ansis/index.d.ts","../../../node_modules/.pnpm/rolldown@1.0.0-beta.57/node_modules/rolldown/dist/shared/logging-BpAvp7KV.d.mts","../../../node_modules/.pnpm/@oxc-project+types@0.103.0/node_modules/@oxc-project/types/types.d.ts","../../../node_modules/.pnpm/rolldown@1.0.0-beta.57/node_modules/rolldown/dist/shared/binding-CDyF6W3D.d.mts","../../../node_modules/.pnpm/@rolldown+pluginutils@1.0.0-beta.57/node_modules/@rolldown/pluginutils/dist/filter/composable-filters.d.ts","../../../node_modules/.pnpm/@rolldown+pluginutils@1.0.0-beta.57/node_modules/@rolldown/pluginutils/dist/filter/filter-vite-plugins.d.ts","../../../node_modules/.pnpm/@rolldown+pluginutils@1.0.0-beta.57/node_modules/@rolldown/pluginutils/dist/filter/simple-filters.d.ts","../../../node_modules/.pnpm/@rolldown+pluginutils@1.0.0-beta.57/node_modules/@rolldown/pluginutils/dist/filter/index.d.ts","../../../node_modules/.pnpm/@rolldown+pluginutils@1.0.0-beta.57/node_modules/@rolldown/pluginutils/dist/index.d.ts","../../../node_modules/.pnpm/rolldown@1.0.0-beta.57/node_modules/rolldown/dist/shared/define-config-kYHtCO-M.d.mts","../../../node_modules/.pnpm/rolldown@1.0.0-beta.57/node_modules/rolldown/dist/index.d.mts","../../../node_modules/.pnpm/hookable@6.0.1/node_modules/hookable/dist/index.d.mts","../../../node_modules/.pnpm/rolldown-plugin-dts@0.20.0_rolldown@1.0.0-beta.57_typescript@6.0.3/node_modules/rolldown-plugin-dts/dist/filename.d.mts","../../../node_modules/.pnpm/rolldown@1.0.0-beta.57/node_modules/rolldown/dist/shared/constructors-BnPlw43Q.d.mts","../../../node_modules/.pnpm/rolldown@1.0.0-beta.57/node_modules/rolldown/dist/experimental-index.d.mts","../../../node_modules/.pnpm/get-tsconfig@4.13.0/node_modules/get-tsconfig/dist/index.d.mts","../../../node_modules/.pnpm/rolldown-plugin-dts@0.20.0_rolldown@1.0.0-beta.57_typescript@6.0.3/node_modules/rolldown-plugin-dts/dist/index.d.mts","../../../node_modules/.pnpm/typescript@5.6.1-rc/node_modules/typescript/lib/typescript.d.ts","../../../node_modules/.pnpm/@arethetypeswrong+core@0.18.2/node_modules/@arethetypeswrong/core/dist/types.d.ts","../../../node_modules/.pnpm/@arethetypeswrong+core@0.18.2/node_modules/@arethetypeswrong/core/dist/utils.d.ts","../../../node_modules/.pnpm/@arethetypeswrong+core@0.18.2/node_modules/@arethetypeswrong/core/dist/createPackage.d.ts","../../../node_modules/.pnpm/@arethetypeswrong+core@0.18.2/node_modules/@arethetypeswrong/core/dist/checkPackage.d.ts","../../../node_modules/.pnpm/@arethetypeswrong+core@0.18.2/node_modules/@arethetypeswrong/core/dist/index.d.ts","../../../node_modules/.pnpm/publint@0.3.17/node_modules/publint/src/index.d.ts","../../../node_modules/.pnpm/tsdown@0.18.4_@arethetypeswrong+core@0.18.2_publint@0.3.17_typescript@6.0.3/node_modules/tsdown/dist/index-BfO1W_C3.d.mts","../../../node_modules/.pnpm/tsdown@0.18.4_@arethetypeswrong+core@0.18.2_publint@0.3.17_typescript@6.0.3/node_modules/tsdown/dist/config-NHDK5cAy.d.mts","../../../node_modules/.pnpm/tsdown@0.18.4_@arethetypeswrong+core@0.18.2_publint@0.3.17_typescript@6.0.3/node_modules/tsdown/dist/index.d.mts","../scripts/bundle-summary.ts","../../../node_modules/.pnpm/vitest@4.1.9_@types+node@25.1.0_@vitest+coverage-v8@4.1.9_vite@7.3.1_@types+node@25.1.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vitest/globals.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/utility.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/path/posix.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/path/win32.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/quic.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/test/reporters.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/util/types.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@25.1.0/node_modules/@types/node/index.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/client-stats.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/h2c-client.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/globals.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/s3.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/fetch.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/jsx.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/bun.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/extensions.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/devserver.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/ffi.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/html-rewriter.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/jsc.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/sqlite.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/vendor/expect-type/utils.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/vendor/expect-type/overloads.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/vendor/expect-type/branding.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/vendor/expect-type/messages.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/vendor/expect-type/index.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/test.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/wasm.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/overrides.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/deprecated.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/redis.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/shell.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/serve.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/sql.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/security.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/bundle.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/bun.ns.d.ts","../../../node_modules/.pnpm/bun-types@1.3.8/node_modules/bun-types/index.d.ts","../../../node_modules/.pnpm/@types+bun@1.3.8/node_modules/@types/bun/index.d.ts"],"fileIdsList":[[227,229,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[228,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[227,229,230,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[226,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[227,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[92,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,377,378,379,380,381,382,383],[105,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,377,378,379,380,381,382,383],[105,106,107,108,109,110,111,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[105,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[213,214,215,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[216,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383,386],[168,169,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,261,262,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,263,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,303,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,265,270,272,275,276,279,281,282,283,285,295,300,312,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,265,266,272,275,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,267,272,276,279,281,282,283,295,313,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,268,269,272,276,279,281,282,283,286,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,269,272,276,279,281,282,283,295,300,309,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,270,272,275,276,279,281,282,283,285,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,263,264,271,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,273,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,274,275,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,263,264,272,275,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,275,276,277,279,281,282,283,295,300,312,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,275,276,277,279,281,282,283,295,300,303,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,275,276,278,279,281,282,283,285,295,300,312,358,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,275,276,278,279,281,282,283,285,295,300,309,312,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,278,279,280,281,282,283,295,300,309,312,359,360,361,363,365,376,377,378,379,380,381,382,383],[241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,275,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,284,295,312,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,275,276,279,281,282,283,285,295,300,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,286,295,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,287,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,275,276,279,281,282,283,290,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,292,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,293,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,269,272,276,279,281,282,283,285,295,303,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,275,276,279,281,282,283,295,296,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,297,313,316,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,275,276,279,281,282,283,295,300,302,303,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,301,303,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,303,313,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,304,359,360,361,363,365,376,378,379,380,381,382,383],[243,261,264,272,276,279,281,282,283,295,300,306,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,300,305,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,275,276,279,281,282,283,295,307,308,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,307,308,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,269,272,276,279,281,282,283,285,295,300,309,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,310,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,285,295,311,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,278,279,281,282,283,293,295,312,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,313,314,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,269,272,276,279,281,282,283,295,314,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,300,315,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,284,295,316,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,317,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,267,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,269,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,313,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,358,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,312,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,318,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,290,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,303,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,308,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,275,276,277,279,281,282,283,290,295,300,303,312,315,316,318,358,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,300,319,359,360,361,363,365,376,378,379,380,381,382,383],[141,147,165,166,167,170,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[177,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[177,178,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[145,147,148,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[145,147,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[145,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[140,145,156,157,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[140,145,156,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[164,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[140,146,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[140,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[142,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[140,141,142,143,144,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,269,272,276,278,279,281,282,283,295,309,313,318,358,359,360,361,362,365,366,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,358,359,360,363,365,376,378,379,380,381,382,383],[243,264,269,272,276,279,281,282,283,290,295,300,303,309,313,318,358,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,320,359,360,361,363,364,365,366,367,368,369,375,376,377,378,379,380,381,382,383,384,385],[243,264,267,269,272,276,277,279,281,282,283,286,295,303,309,312,319,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,369,376,378,379,380,381,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,374,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,370,371,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,370,371,372,373,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,370,372,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,370,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,359,360,361,363,365,378,379,380,381,382,383],[183,184,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[183,184,185,186,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[183,185,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[183,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[219,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[219,221,223,224,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[212,218,222,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[210,212,218,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[211,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[212,218,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[210,211,212,217,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[233,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[209,219,220,225,231,232,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[219,233,234,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[116,117,118,119,120,121,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[116,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[116,243,264,269,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,312,324,327,330,331,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,300,312,327,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,312,327,331,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,300,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,321,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,325,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,312,323,324,327,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,285,295,309,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,320,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,320,321,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,285,295,312,323,327,359,360,361,363,365,376,377,378,379,380,381,382,383],[238,239,240,243,264,272,275,276,279,281,282,283,295,300,312,322,326,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,327,335,343,359,360,361,363,365,376,378,379,380,381,382,383],[239,243,264,272,276,279,281,282,283,295,325,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,327,352,353,359,360,361,363,365,376,378,379,380,381,382,383],[239,243,264,272,276,279,281,282,283,295,303,312,320,322,327,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,320,321,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,327,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,312,323,327,359,360,361,363,365,376,377,378,379,380,381,382,383],[238,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,321,322,323,325,326,327,328,329,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,353,354,355,356,357,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,327,345,348,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,327,335,336,337,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,325,327,336,338,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,326,359,360,361,363,365,376,378,379,380,381,382,383],[239,243,264,272,276,279,281,282,283,295,321,327,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,327,331,336,338,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,331,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,312,325,327,330,359,360,361,363,365,376,377,378,379,380,381,382,383],[239,243,264,272,276,279,281,282,283,295,323,327,335,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,300,359,360,361,363,365,376,377,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,327,345,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,338,359,360,361,363,365,376,378,379,380,381,382,383],[243,264,272,276,279,281,282,283,295,303,318,320,321,327,352,359,360,361,363,365,376,377,378,379,380,381,382,383],[123,124,125,126,127,128,129,131,132,133,134,135,136,137,138,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[123,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[123,130,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[151,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[151,152,153,154,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[153,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[149,172,173,175,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[149,150,162,175,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[140,147,149,150,158,175,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[155,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[140,149,150,158,171,174,175,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[149,150,155,158,175,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[149,172,173,174,175,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[149,155,159,160,161,175,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[140,145,147,149,150,155,158,159,160,161,162,163,165,171,172,173,174,175,176,179,180,181,182,187,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[140,147,149,150,158,159,172,173,174,175,180,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[188,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[94,96,97,100,101,103,104,112,113,114,115,122,139,188,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[94,96,97,100,101,103,104,188,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[94,96,97,100,103,104,112,113,114,122,139,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[194,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[90,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[102,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[94,191,192,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[96,191,192,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[97,191,192,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[91,188,192,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[100,101,104,191,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[103,188,191,192,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[99,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[104,191,192,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[100,188,191,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[194,243,264,272,276,279,281,282,283,287,295,359,360,361,363,365,376,378,379,380,381,382,383],[235,243,264,272,276,279,281,282,283,287,295,359,360,361,363,365,376,378,379,380,381,382,383],[89,91,93,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[89,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[89,90,91,95,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[89,100,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[89,90,91,102,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[89,98,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383],[89,91,99,243,264,272,276,279,281,282,283,295,359,360,361,363,365,376,378,379,380,381,382,383]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"1e9332c23e9a907175e0ffc6a49e236f97b48838cc8aec9ce7e4cec21e544b65","impliedFormat":1},{"version":"3753fbc1113dc511214802a2342280a8b284ab9094f6420e7aa171e868679f91","impliedFormat":1},{"version":"999ca32883495a866aa5737fe1babc764a469e4cde6ee6b136a4b9ae68853e4b","impliedFormat":1},{"version":"17f13ecb98cbc39243f2eee1f16d45cd8ec4706b03ee314f1915f1a8b42f6984","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"0bd714129fca875f7d4c477a1a392200b0bcd13fb2e80928cd334b63830ea047","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2c9037ae6cd2c52d80ceef0b3c5ffdb488627d71529cf4f63776daf11161c9a","affectsGlobalScope":true,"impliedFormat":1},{"version":"135d5cf4d345f59f1a9caadfafcd858d3d9cc68290db616cc85797224448cccc","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc238c3f81c2984751932b6aab223cd5b830e0ac6cad76389e5e9d2ffc03287d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4a07f9b76d361f572620927e5735b77d6d2101c23cdd94383eb5b706e7b36357","affectsGlobalScope":true,"impliedFormat":1},{"version":"7c4e8dc6ab834cc6baa0227e030606d29e3e8449a9f67cdf5605ea5493c4db29","affectsGlobalScope":true,"impliedFormat":1},{"version":"de7ba0fd02e06cd9a5bd4ab441ed0e122735786e67dde1e849cced1cd8b46b78","affectsGlobalScope":true,"impliedFormat":1},{"version":"6148e4e88d720a06855071c3db02069434142a8332cf9c182cda551adedf3156","affectsGlobalScope":true,"impliedFormat":1},{"version":"d63dba625b108316a40c95a4425f8d4294e0deeccfd6c7e59d819efa19e23409","affectsGlobalScope":true,"impliedFormat":1},{"version":"0568d6befee03dd435bed4fc25c4e46865b24bdcb8c563fdc21f580a2c301904","affectsGlobalScope":true,"impliedFormat":1},{"version":"30d62269b05b584741f19a5369852d5d34895aa2ac4fd948956f886d15f9cc0d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"ffbe6d7b295306b2ba88030f65b74c107d8d99bdcf596ea99c62a02f606108b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"996fb27b15277369c68a4ba46ed138b4e9e839a02fb4ec756f7997629242fd9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"79b712591b270d4778c89706ca2cfc56ddb8c3f895840e477388f1710dc5eda9","affectsGlobalScope":true,"impliedFormat":1},{"version":"20884846cef428b992b9bd032e70a4ef88e349263f63aeddf04dda837a7dba26","affectsGlobalScope":true,"impliedFormat":1},{"version":"5fcab789c73a97cd43828ee3cc94a61264cf24d4c44472ce64ced0e0f148bdb2","affectsGlobalScope":true,"impliedFormat":1},{"version":"db59a81f070c1880ad645b2c0275022baa6a0c4f0acdc58d29d349c6efcf0903","affectsGlobalScope":true,"impliedFormat":1},{"version":"673294292640f5722b700e7d814e17aaf7d93f83a48a2c9b38f33cbc940ad8b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"d786b48f934cbca483b3c6d0a798cb43bbb4ada283e76fb22c28e53ae05b9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"142efd4ce210576f777dc34df121777be89eda476942d6d6663b03dcb53be3ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"379bc41580c2d774f82e828c70308f24a005b490c25ba34d679d84bcf05c3d9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"ed484fb2aa8a1a23d0277056ec3336e0a0b52f9b8d6a961f338a642faf43235d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ffedae1d1c2d53fdbca1c96d3c7dda544281f7d262f99b6880634f8fd8d9820","affectsGlobalScope":true,"impliedFormat":1},{"version":"83a730b125d477dd264df8ba479afab27a3dae7152b005c214ab94dc7ee44fd3","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},"2071aeb41835ec5186707ca3c13b018f765490be78b4d406afb025694e0d74fb","c4b4044febc32f26a37238a099e5604d5ce00cb79c84f9d2a323bb95b060c2ca","b71b56f5ae7073a5c9726499ff6df85c0ba1744923f57e60d9c5780c89dfdd22",{"version":"79766c737b0a94c9d47424412054f0193d78dbfd3b71cfe2ec4f5efce419c081","impliedFormat":99},{"version":"ca8eb419554fb53a9a08c43b2f52b97fa880aa6fa9158dbba3b446b6a0843c77","impliedFormat":99},"b17343eeacc988370c241b262a7ad52f5db1fbafb59aa0fa5fb9d6a04113ad59","e4889c281d48c7a7501b2de7aa9952bf62fd27c5b00c64bd317612e9786bc0ba","e4269513d95288e3e7298300dae37931a555bcee43a48068a42105bb5a0d730c","62c772a0dcc0f64806d9d4f01b79d0a4677288f4cd2f42e9aea57bb2706ddb7a","161ccf3cf6d7cc3cae0e41cd47377524ceae1226366c484e39f2740fe1bd47a5","7e4c25650d6fb543b17fb3ed52dee88c023772d3a5392370a80cc111c8612be2","0b1aa34ea27a399b039986dc8961cb1c9439ec5df9a7f7af1bdc3a0fb1fc4938","f5a65ece4873c4cada3d21ced3a2f7830e0ee5f2ee4d688400096ad69fba3698","1d004c95aa29ee7baccbbf06ffe17ec86b24d1ab29496ab55b15607d155a8f7b","7693cbd5e7a0558e0ac67645e5acc3967c51de4dbfc820539619b967136031e7","4f3a485fe6a4e461e3aed2f4a7ee1a6d59b499a78397adb78915e4c9767b48eb",{"version":"88d1969f696ef8774a2027f993b4abc3727a2a6a7e35a405d4e0a49907533479","impliedFormat":1},{"version":"d101f81d3c7d799be7a675e56fc95efad531cf175c544c949a45ec830d64e034","impliedFormat":1},{"version":"dda5c530ade2da59efada3fe348f1f353c14253add8945de8a957249554ad84f","impliedFormat":1},{"version":"7acbf1f34eae6220491aa3074b6df443c3430510a855e044a37a4a87cee4aca0","impliedFormat":1},{"version":"38648b91220418198ab5572df6c39fce0617184380758a1b187fe1183ff3533b","impliedFormat":1},{"version":"c65df921afdcf942f95502f5ab1e662347c4700cd3b557c796b63767a6653a0b","impliedFormat":1},{"version":"e0d293ff5526bd757d3286ae43b52942c507dba11290648ce6e8faec5df776ed","impliedFormat":1},{"version":"154c6809ab81c1780157e6a202a7131c1b3d742bb7d1e86f2e96b78763e0b9e1","impliedFormat":1},{"version":"addd3530f4c5e62e0ac3e59088f512a820c02033d112c6a65dfb0e720a207253","impliedFormat":99},{"version":"fa4f7a50d9bf0f0848a6606ded81436678f64b3b7977a3a806ac5386573c7c88","impliedFormat":99},{"version":"be79291850df988e29e6a72fcec3703dbf85caec078d9631311f0b97d451094a","impliedFormat":1},{"version":"0828dd60d0ea50ec9edc32fedd4ac30dc4af97fc1b3e3ce07c9640ce1103d92a","impliedFormat":99},{"version":"607819aaa6c0016edc1760e120070a00689114a0e2812bfc8fc8d892a6c75c9a","impliedFormat":99},{"version":"76150b701d3d784a30b1fd081ed8e0a34b6da836129ba5539dc0c8221a9338d6","impliedFormat":99},{"version":"22960e9371a7d32f0a1c4492e3ff6c7ca6fdba7e2e73b0cbc7ab73e479e63d6a","impliedFormat":99},{"version":"d866d597fb9fb5c1361c12e3defcdc8b3166ac1c65f1ba6c653ed98513dcf522","impliedFormat":99},{"version":"b8b0748b78f316e47137b598294e78e815d8b5f87ddbf376dbefdda89435091d","impliedFormat":99},{"version":"c69bde68870dfad4077824357acfc599c564b063232d740229ca61b9fb3c1ccb","impliedFormat":99},{"version":"cff399d99c68e4fafdd5835d443a980622267a39ac6f3f59b9e3d60d60c4f133","impliedFormat":99},{"version":"6ada175c0c585e89569e8feb8ff6fc9fc443d7f9ca6340b456e0f94cbef559bf","impliedFormat":99},{"version":"e56e4d95fad615c97eb0ae39c329a4cda9c0af178273a9173676cc9b14b58520","impliedFormat":99},{"version":"73e8dfd5e7d2abc18bdb5c5873e64dbdd1082408dd1921cad6ff7130d8339334","impliedFormat":99},{"version":"fc820b2f0c21501f51f79b58a21d3fa7ae5659fc1812784dbfbb72af147659ee","impliedFormat":99},{"version":"4f041ef66167b5f9c73101e5fd8468774b09429932067926f9b2960cc3e4f99d","impliedFormat":99},{"version":"31501b8fc4279e78f6a05ca35e365e73c0b0c57d06dbe8faecb10c7254ce7714","impliedFormat":99},{"version":"7bc76e7d4bbe3764abaf054aed3a622c5cdbac694e474050d71ce9d4ab93ea4b","impliedFormat":99},{"version":"ff4e9db3eb1e95d7ba4b5765e4dc7f512b90fb3b588adfd5ca9b0d9d7a56a1ae","impliedFormat":99},{"version":"f205fd03cd15ea054f7006b7ef8378ef29c315149da0726f4928d291e7dce7b9","impliedFormat":99},{"version":"d683908557d53abeb1b94747e764b3bd6b6226273514b96a942340e9ce4b7be7","impliedFormat":99},{"version":"7c6d5704e2f236fddaf8dbe9131d998a4f5132609ef795b78c3b63f46317f88a","impliedFormat":99},{"version":"d05bd4d28c12545827349b0ac3a79c50658d68147dad38d13e97e22353544496","impliedFormat":99},{"version":"b6436d90a5487d9b3c3916b939f68e43f7eaca4b0bb305d897d5124180a122b9","impliedFormat":99},{"version":"04ace6bedd6f59c30ea6df1f0f8d432c728c8bc5c5fd0c5c1c80242d3ab51977","impliedFormat":99},{"version":"57a8a7772769c35ba7b4b1ba125f0812deec5c7102a0d04d9e15b1d22880c9e8","impliedFormat":99},{"version":"badcc9d59770b91987e962f8e3ddfa1e06671b0e4c5e2738bbd002255cad3f38","impliedFormat":99},{"version":"3a582c6e8906f5b094ccf0de6cc6f4f8a54b05a34f52517aba5c9c7f704f6b28","impliedFormat":99},{"version":"0528f6d21f7a02d4092895090d2dd86104bd5a3e79eced96d5a1a7dd90943d17","impliedFormat":99},{"version":"b5ce343886d23392be9c8280e9f24a87f1d7d3667f6672c2fe4aa61fa4ece7d4","impliedFormat":99},{"version":"72ce5b734c05da85c85a6f6dc05823b051d6aa41acaedeeb1d17c72f3b4efa72","impliedFormat":99},{"version":"b0857bb28fd5236ace84280f79a25093f919fd0eff13e47cc26ea03de60a7294","impliedFormat":99},{"version":"5e43e0824f10cd8c48e7a8c5c673638488925a12c31f0f9e0957965c290eb14c","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"49ab4f1d153a252779958fc87b700743d32b5ffa42addd70ae23ad3f429daa5c","impliedFormat":99},{"version":"53cf4076f42b29b8d411259d168d51b3a0274c42c8814e5b44dfa8803a35d4fc","impliedFormat":99},{"version":"a39461ee1f27cf3e6cfd63d21045713d26d521da55ea4d8efccb705f689e6dbb","impliedFormat":99},{"version":"61bb64660ee150f3ab618340e15cca0a81664801bede7c966ca0eca3a952fe63","impliedFormat":99},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"10073cdcf56982064c5337787cc59b79586131e1b28c106ede5bff362f912b70","impliedFormat":99},{"version":"72950913f4900b680f44d8cab6dd1ea0311698fc1eefb014eb9cdfc37ac4a734","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"ff0a83c9a0489a627e264ffcb63f2264b935b20a502afa3a018848139e3d8575","impliedFormat":99},{"version":"42a12f2faa483c9b48195ed794d22698162274e755f6e07219c2351c4f08d732","impliedFormat":99},{"version":"ec0c42bb0f465e4993f2bc68a6ce9df9a2dcbc7b83e21748f82f1b69561938e3","impliedFormat":99},{"version":"f50ff37a9cbbe74475f426474d9827083c7c2c138a954d28f1690df338f69291","impliedFormat":99},{"version":"61fd6c17235d530c40f543dd7c40afab091d91c1ef890baeed30db6d82b04b28","impliedFormat":99},{"version":"bcbd3becd08b4515225880abea0dbfbbf0d1181ce3af8f18f72f61edbe4febfb","impliedFormat":99},{"version":"091767bc841f937654ed597d49e023ed59850355e746ae1a6f20ab31076ee1fb","impliedFormat":99},{"version":"19c6d6135af59693698d384050b45a8a049493500add442f58e4bd7c8a255ab6","impliedFormat":99},{"version":"6a0dba12d55314638a8c51108b20fe2f68f1364a619d098918bda91c22dec154","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"4ead13a482c539b77394b2a97e3b877b809eac596390371cea490286f53b996a","impliedFormat":99},{"version":"06db2f8ba1d1dfacf04529cb731081ab23f133f29c7608ebdfbcab356996827c","impliedFormat":99},{"version":"bdd14f07b4eca0b4b5203b85b8dbc4d084c749fa590bee5ea613e1641dcd3b29","impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"5c935b7fc4ddc1410ea1cd7cd4e35ed106a6e4920dd27a9480a40fd224359dc3","affectsGlobalScope":true,"impliedFormat":99},{"version":"2b39c6cf59088713babbfc3e20ee85f1375d40e66953156fa658346b8346f24f","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"6987dfb4b0c4e02112cc4e548e7a77b3d9ddfeffa8c8a2db13ceac361a4567d9","impliedFormat":99},{"version":"4ffba3c5848b4fe62ee59b754fd5f256ad9656a0db6d37b9a2a8cb40dfc7ac21","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"5e2ba3d18d78aebbde1f34bde356e41e9c76eeaeaeee56a37036596a9eff4211","impliedFormat":99},{"version":"8280ae8ccc0493b32d1742d585357ab9f0a508ea050af25a5a20d64010d0a5cf","impliedFormat":99},{"version":"7adfd9f9056ecd4ae6c65fde2a98654960c662714c73f048478959d04c09e144","impliedFormat":99},{"version":"32b35cf0dc3a1b1a7118b61c34ce2ad1a29695851679f9ec34e0776f2ece2a69","impliedFormat":99},{"version":"b413fbc6658fe2774f8bf9a15cf4c53e586fc38a2d5256b3b9647da242c14389","impliedFormat":99},{"version":"59e5e964b84fdb2378e9455e4e59405030e4ed2b4c6f891ce395f17796af3cbb","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"64db14db2bf37ac089766fdb3c7e1160fabc10e9929bc2deeede7237e4419fc8","impliedFormat":1},{"version":"98b94085c9f78eba36d3d2314affe973e8994f99864b8708122750788825c771","impliedFormat":1},{"version":"90ba95a763101bb61b8a799731a2ed60b5016b8135c1a2d5186862d4b534d4a1","impliedFormat":99},"abe173ca7163b5f4e3ffeb0dae7013e22d6785d2eb4c6c2cd65f7ebbb762e926","5a1cc4877a03ae23d477928567cdaa431c9c03c8ed795c3fa3353b7e13c6f2df","f4cbf2116019d282482650488baec04b7cd3bca023c4d9198540292574f29d19","c27347e0b2045875b05389f1fa32f1b2c1cdadc574cd7e5088f6b4a6dceeaa8f","46c6894dc535c3f778ecd22b8f144f3b04063694a3559a31b357841b77b43dce","f138e0e33046dc428e0d9b0b9331013c1313af509fbc56f7c2e6abdad1eeac2b","c2437370f8359b1e4fa3560e4c1aa8fe28c8334c025d4fe3628b9f90f862bb1c","d93c1d139c6fbb7a52b0ed5960753f3fec07f1176bf81c8575364f83f2888ccc","57d9188e1e702be8dbdae6d5ea039d3f3362dd90a6f4aed81f695933e80a706f","8fa465c9908ca27cc40b18deb0412a94e56938d806a0e64cee4e99ab358addb5","0efa9a2bdec6277e820881c655adc295103d6e88935288cc696e6dc41b2fe0db","f4e6e75dd452375b6628db3614d53e08e1863a8a0d88a3a069bab602be3cf468","5fdffc7054cb1b76cf0005ef9e39bd238ce2340ae8e48acdb62dda557b66099f","f161a1daf66ec7b87dcf5c8be784c4c439c2c7c0c379e746f6e9ad25ca43e908","5bace53a9961623d749b02fbb0da0981a10c8ac12fb710654b04a9d787518c21","d9559f1a646e2eee7afe2949a92743b64e0d78615d8efb8586f7caa7565aeba5","32bfe8f8b331adc1591d4c87470dbb9be700a7e62cd74bdf658c0c6f02f4bcad","ae2d586c9d92afe1a762dd6484b00a750414c0dfde02e7757502cc3c73d25d0f","f540b6e2ca342dc3892ee9a0898e98d138e18622074afdab2ebac37e84cdbea0","30558e5850530dcf605e14c29aba868d0c73f0a8ed1258c085c5cf425cf81404",{"version":"a977fdb5392b77b576741ec4a239aa43304d78e5a260a6eee161a0da8b3b6535","impliedFormat":99},{"version":"c12c8c5cd9d4e7c0c478d2817485effeda603049e4b12f055842a70606e0c272","impliedFormat":99},{"version":"029088dbf6c4a83397cdd141d56f52927e8f099771203423683d4429208a8c93","impliedFormat":99},{"version":"8735b138d3f183410b06defb54d3d25525e002a340a5189903a8c85301d9d3ab","impliedFormat":99},{"version":"148debd12783ded0a60d115daeacd8136f77757ae89a05c4e18de6dd77646fd2","impliedFormat":99},{"version":"0088b02dca63c47b273a140d0a3944bdc6dc2eb765fff0ca98e3c3a2786b3a5a","impliedFormat":99},{"version":"a651d06b780fa354231f19b040cbcde484bede3218885752b4f9e9a8f72d3b5f","impliedFormat":99},{"version":"06e26f75bed4c8389a8a63f0e6d6a9068038873dc95d8d1338e8c370a0ae8bc3","impliedFormat":99},{"version":"a2155e2675fd1af52b0b70779371c28611cdd1076b29d0f68bf93b983e5ddce0","impliedFormat":99},{"version":"17bbd2d9f37bc18e00e5e77a10dc391161155cd92fc203275db766ef7450e5ff","impliedFormat":99},{"version":"945a117bbcd7038be748ed8f6ff317d0a789ef4101c5980d705000e01c3f5ade","impliedFormat":99},{"version":"8ca46f1b5f42358f35d944f34f7d5c0eeb6133ac8dac0e9ede6d8c8cf76b9b4c","affectsGlobalScope":true,"impliedFormat":99},{"version":"f2e887b706189648f258f15a7c6945bddfb4bae78dc06bf13e6bb40bb68b3c94","impliedFormat":99},{"version":"a8942160b7d16fdb000480a6463537aab15816f214807c86b9354c9f274bbc79","impliedFormat":99},{"version":"679a787fe9c1fea13921f2044aad8166c4d203234927908087a0e10ff7a257f5","impliedFormat":99},{"version":"83de03c3bc0bf6247fa576dd1ffaade6a2a4703d367b634fab0b81de0d89a9d1","impliedFormat":99},{"version":"63d363266f95ec0e28fc8218c93a16fafeef5429f5594a1f2d565bc6c8ae5e70","impliedFormat":99},{"version":"c66ffde3b8ce430c9cbfe345ea0418892b37f3258a67dd8dd6dec81be1a49eb7","impliedFormat":1},{"version":"872b85add4bf5f8939cf931062cac61fa55eceb364d6dbad754d83698cdd91eb","impliedFormat":99},{"version":"a46b644ee5497126e83ff1dfe09d565cf8a7b6c6798375a4890f4a7bd6b3db21","impliedFormat":99},{"version":"704d4661600867b1637927c236c8ab5cf417ab3218d5ca0e3c1cf04a2a710dd1","impliedFormat":99},{"version":"2d435196adf82be71769d429f1b1ae8bcd3daaf30ba660d1d3ad5083eaaa6ad5","impliedFormat":99},{"version":"b7a28c89d5aaa019d2d9d1f580acba0c46afc8628a857975f85912ac3922ea05","impliedFormat":99},{"version":"4fc892d424005fefe7446026dc6b6e12a814725df3844c7e698e16344287cec1","impliedFormat":99},{"version":"c2f3fbb10dde4f61253d1c7227ecdf1502a05cc86fc36260e4b1f90a0f73b9d0","impliedFormat":99},{"version":"88ecfd64b5b12d8cfd53d7e911c93d0924b52c977f2d3473d0d2e8cbbcc9d8a6","impliedFormat":99},{"version":"71f8cb65143f82b649a10892cab09710cccf3c0f9f4eaa03cfb8e54cd480d3c1","impliedFormat":99},"9b7d483f653753eebaaca45af36538cba9cbf136ddcbc361b75e55081259bd65",{"version":"8d7cbeea0454e05a3cdf3370c5df267072c4f1dc6c48a45a9ad750d7890443d7","affectsGlobalScope":true,"impliedFormat":99},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"438b41419b1df9f1fbe33b5e1b18f5853432be205991d1b19f5b7f351675541e","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"dd0109710de4cd93e245121ab86d8c66d20f3ead80074b68e9c3e349c4f53342","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"435b3711465425770ed2ee2f1cf00ce071835265e0851a7dc4600ab4b007550e","impliedFormat":1},{"version":"7e49f52a159435fc8df4de9dc377ef5860732ca2dc9efec1640531d3cf5da7a3","impliedFormat":1},{"version":"dd4bde4bdc2e5394aed6855e98cf135dfdf5dd6468cad842e03116d31bbcc9bc","impliedFormat":1},{"version":"4d4e879009a84a47c05350b8dca823036ba3a29a3038efed1be76c9f81e45edf","affectsGlobalScope":true,"impliedFormat":1},{"version":"cf83d90d5faf27b994c2e79af02e32b555dbfe42cd9bd1571445f2168d1f4e2d","impliedFormat":1},{"version":"9ba13b47cb450a438e3076c4a3f6afb9dc85e17eae50f26d4b2d72c0688c9251","impliedFormat":1},{"version":"b64cd4401633ea4ecadfd700ddc8323a13b63b106ac7127c1d2726f32424622c","impliedFormat":1},{"version":"37c6e5fe5715814412b43cc9b50b24c67a63c4e04e753e0d1305970d65417a60","impliedFormat":1},{"version":"0e28335ac43f4d94dd2fe6d9e6fa6813570640839addd10d309d7985f33a6308","impliedFormat":1},{"version":"ee0e4946247f842c6dd483cbb60a5e6b484fee07996e3a7bc7343dfb68a04c5d","impliedFormat":1},{"version":"ef051f42b7e0ef5ca04552f54c4552eac84099d64b6c5ad0ef4033574b6035b8","impliedFormat":1},{"version":"853a43154f1d01b0173d9cbd74063507ece57170bad7a3b68f3fa1229ad0a92f","impliedFormat":1},{"version":"56231e3c39a031bfb0afb797690b20ed4537670c93c0318b72d5180833d98b72","impliedFormat":1},{"version":"5cc7c39031bfd8b00ad58f32143d59eb6ffc24f5d41a20931269011dccd36c5e","impliedFormat":1},{"version":"b0b69c61b0f0ec8ca15db4c8c41f6e77f4cacb784d42bca948f42dea33e8757e","affectsGlobalScope":true,"impliedFormat":1},{"version":"f96a48183254c00d24575401f1a761b4ce4927d927407e7862a83e06ce5d6964","impliedFormat":1},{"version":"cc25940cfb27aa538e60d465f98bb5068d4d7d33131861ace43f04fe6947d68f","impliedFormat":1},{"version":"e6f370b5c1d52edabb93ef055d0c0c396a98be77db8aa022fcc3670787b8b5f5","impliedFormat":1},{"version":"01ff95aa1443e3f7248974e5a771f513cb2ac158c8898f470a1792f817bee497","impliedFormat":1},{"version":"9d96a7ce809392ff2cb99691acf7c62e632fe56897356ba013b689277aca3619","impliedFormat":1},{"version":"42a05d8f239f74587d4926aba8cc54792eed8e8a442c7adc9b38b516642aadfe","impliedFormat":1},{"version":"5d21b58d60383cc6ab9ad3d3e265d7d25af24a2c9b506247e0e50b0a884920be","impliedFormat":1},{"version":"101f482fd48cb4c7c0468dcc6d62c843d842977aea6235644b1edd05e81fbf22","impliedFormat":1},{"version":"ae6757460f37078884b1571a3de3ebaf724d827d7e1d53626c02b3c2a408ac63","affectsGlobalScope":true,"impliedFormat":1},{"version":"27c0a08e343c6a0ae17bd13ba6d44a9758236dc904cd5e4b43456996cd51f520","impliedFormat":1},{"version":"3ef397f12387eff17f550bc484ea7c27d21d43816bbe609d495107f44b97e933","impliedFormat":1},{"version":"1023282e2ba810bc07905d3668349fbd37a26411f0c8f94a70ef3c05fe523fcf","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"6f80e51ba310608cd71bcdc09a171d7bbfb3b316048601c9ec215ce16a8dcfbc","impliedFormat":1},{"version":"10947bb49601aeec9ea1dddf61ef6e4f8442f949bd40a8008e12b129deb037be","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f2c62938251b45715fd2a9887060ec4fbc8724727029d1cbce373747252bdd7","impliedFormat":1},{"version":"e3ace08b6bbd84655d41e244677b474fd995923ffef7149ddb68af8848b60b05","impliedFormat":1},{"version":"132580b0e86c48fab152bab850fc57a4b74fe915c8958d2ccb052b809a44b61c","impliedFormat":1},{"version":"af4ab0aa8908fc9a655bb833d3bc28e117c4f0e1038c5a891546158beb25accb","impliedFormat":1},{"version":"69c9a5a9392e8564bd81116e1ed93b13205201fb44cb35a7fde8c9f9e21c4b23","impliedFormat":1},{"version":"5f8fc37f8434691ffac1bfd8fc2634647da2c0e84253ab5d2dd19a7718915b35","impliedFormat":1},{"version":"5981c2340fd8b076cae8efbae818d42c11ffc615994cb060b1cd390795f1be2b","impliedFormat":1},{"version":"1641d32611fc7aa82cdd9fa38ff18349aac4eda9e032ced76b21943673887f9a","impliedFormat":1},{"version":"ed4f674fc8c0c993cc7e145069ac44129e03519b910c62be206a0cc777bdc60b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0250da3eb85c99624f974e77ef355cdf86f43980251bc371475c2b397ba55bcd","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"3d3a5f27ffbc06c885dd4d5f9ee20de61faf877fe2c3a7051c4825903d9a7fdc","impliedFormat":1},{"version":"12806f9f085598ef930edaf2467a5fa1789a878fba077cd27e85dc5851e11834","impliedFormat":1},{"version":"17d06eb5709839c7ce719f0c38ada6f308fb433f2cd6d8c87b35856e07400950","impliedFormat":1},{"version":"a43fe41c33d0a192a0ecaf9b92e87bef3709c9972e6d53c42c49251ccb962d69","impliedFormat":1},{"version":"a177959203c017fad3ecc4f3d96c8757a840957a4959a3ae00dab9d35961ca6c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc727ccf9b36e257ff982ea0badeffbfc2c151802f741bddff00c6af3b784cf","impliedFormat":1},{"version":"2a00d005e3af99cd1cfa75220e60c61b04bfb6be7ca7453bfe2ef6cca37cc03c","impliedFormat":1},{"version":"4844a4c9b4b1e812b257676ed8a80b3f3be0e29bf05e742cc2ea9c3c6865e6c6","impliedFormat":1},{"version":"064878a60367e0407c42fb7ba02a2ea4d83257357dc20088e549bd4d89433e9c","impliedFormat":1},{"version":"14d4bd22d1b05824971b98f7e91b2484c90f1a684805c330476641417c3d9735","impliedFormat":1},{"version":"586eaf66bace2e731cee0ddfbfac326ad74a83c1acfeac4afb2db85ad23226c7","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"d1a14d87cedcf4f0b8173720d6eb29cc02878bf2b6dabf9c9d9cee742f275368","impliedFormat":1},{"version":"41ef7992c555671a8fe54db302788adefa191ded810a50329b79d20a6772d14c","impliedFormat":1},{"version":"041a7781b9127ab568d2cdcce62c58fdea7c7407f40b8c50045d7866a2727130","impliedFormat":1},{"version":"b37f83e7deea729aa9ce5593f78905afb45b7532fdff63041d374f60059e7852","impliedFormat":1},{"version":"e1cb68f3ef3a8dd7b2a9dfb3de482ed6c0f1586ba0db4e7d73c1d2147b6ffc51","impliedFormat":1},{"version":"55cdbeebe76a1fa18bbd7e7bf73350a2173926bd3085bb050cf5a5397025ee4e","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"6e215dac8b234548d91b718f9c07d5b09473cd5cabb29053fcd8be0af190acb6","affectsGlobalScope":true,"impliedFormat":1},{"version":"dbecf494aac7d3ee1b23cdaafae0d0bfea8590567fc153db58fe00ed9fa66c24","impliedFormat":1},{"version":"f3d3e999a323c85c8a63ce90c6e4624ff89fe137a0e2508fddc08e0556d08abf","impliedFormat":1},{"version":"314607151cc203975193d5f44765f38597be3b0a43f466d3c1bfb17176dd3bd3","impliedFormat":1},{"version":"13b67080c26e140e8521f2cb7de76fd55af4ed4aaadffea8fd8be9e260c186fd","impliedFormat":1},{"version":"f40aad6c91017f20fc542f5701ec41e0f6aeba63c61bbf7aa13266ec29a50a3b","impliedFormat":1},{"version":"fc9e630f9302d0414ccd6c8ed2706659cff5ae454a56560c6122fa4a3fac5bbd","affectsGlobalScope":true,"impliedFormat":1},{"version":"aa0a44af370a2d7c1aac988a17836f57910a6c52689f52f5b3ac1d4c6cadcb23","impliedFormat":1},{"version":"0ac74c7586880e26b6a599c710b59284a284e084a2bbc82cd40fb3fbfdea71ae","affectsGlobalScope":true,"impliedFormat":1},{"version":"2ce12357dadbb8efc4e4ec4dab709c8071bf992722fc9adfea2fe0bd5b50923f","impliedFormat":1},{"version":"b5a907deaba678e5083ccdd7cc063a3a8c3413c688098f6de29d6e4cefabc85f","impliedFormat":1},{"version":"ffd344731abee98a0a85a735b19052817afd2156d97d1410819cd9bcd1bd575e","impliedFormat":1},{"version":"475e07c959f4766f90678425b45cf58ac9b95e50de78367759c1e5118e85d5c3","impliedFormat":1},{"version":"a524ae401b30a1b0814f1bbcdae459da97fa30ae6e22476e506bb3f82e3d9456","impliedFormat":1},{"version":"7375e803c033425e27cb33bae21917c106cb37b508fd242cccd978ef2ee244c7","impliedFormat":1},{"version":"eeb890c7e9218afdad2f30ad8a76b0b0b5161d11ce13b6723879de408e6bc47a","impliedFormat":1},{"version":"561c795984d06b91091780cebeac616e9e41d83240770e1af14e6ec083b713d5","impliedFormat":1},{"version":"dfbcc400ac6d20b941ccc7bd9031b9d9f54e4d495dd79117334e771959df4805","affectsGlobalScope":true,"impliedFormat":1},{"version":"944d65951e33a13068be5cd525ec42bf9bc180263ba0b723fa236970aa21f611","affectsGlobalScope":true,"impliedFormat":1},{"version":"6b386c7b6ce6f369d18246904fa5eac73566167c88fb6508feba74fa7501a384","affectsGlobalScope":true,"impliedFormat":1},{"version":"592a109e67b907ffd2078cd6f727d5c326e06eaada169eef8fb18546d96f6797","impliedFormat":1},{"version":"f2eb1e35cae499d57e34b4ac3650248776fe7dbd9a3ec34b23754cfd8c22fceb","impliedFormat":1},{"version":"fbed43a6fcf5b675f5ec6fc960328114777862b58a2bb19c109e8fc1906caa09","impliedFormat":1},{"version":"9e98bd421e71f70c75dae7029e316745c89fa7b8bc8b43a91adf9b82c206099c","impliedFormat":1},{"version":"fc803e6b01f4365f71f51f9ce13f71396766848204d4f7a1b2b6154434b84b15","impliedFormat":1},{"version":"f3afcc0d6f77a9ca2d2c5c92eb4b89cd38d6fa4bdc1410d626bd701760a977ec","impliedFormat":1},{"version":"c8109fe76467db6e801d0edfbc50e6826934686467c9418ce6b246232ce7f109","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6f803e4e45915d58e721c04ec17830c6e6678d1e3e00e28edf3d52720909cea","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be812b06e518320ba82e2aff3ac2ca37370a9df917db708f081b9043fa3315","impliedFormat":1}],"root":[[89,91],[94,104],[189,208],236],"options":{"allowJs":false,"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"isolatedDeclarations":true,"module":99,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":false,"noUnusedParameters":false,"outDir":"./","removeComments":true,"skipLibCheck":true,"strict":true,"target":99,"verbatimModuleSyntax":true},"referencedMap":[[230,1],[229,2],[231,3],[227,4],[228,5],[93,6],[92,7],[106,8],[110,9],[111,7],[112,10],[105,8],[108,11],[109,11],[107,8],[211,7],[113,7],[213,7],[214,7],[216,12],[215,7],[217,13],[167,7],[387,14],[170,15],[168,7],[261,16],[262,16],[263,17],[243,18],[264,19],[265,20],[266,21],[241,7],[267,22],[268,23],[269,24],[270,25],[271,26],[272,27],[273,27],[274,28],[275,29],[276,30],[277,31],[244,7],[242,7],[278,32],[279,33],[280,34],[320,35],[281,36],[282,37],[283,36],[284,38],[285,39],[286,40],[287,41],[288,41],[289,41],[290,42],[291,43],[292,44],[293,45],[294,46],[295,47],[296,47],[297,48],[298,7],[299,7],[300,49],[301,50],[302,49],[303,51],[304,52],[305,53],[306,54],[307,55],[308,56],[309,57],[310,58],[311,59],[312,60],[313,61],[314,62],[315,63],[316,64],[317,65],[245,36],[246,7],[247,66],[248,67],[249,7],[250,68],[251,7],[252,69],[253,70],[254,71],[255,71],[256,72],[257,7],[258,73],[259,74],[260,70],[318,75],[319,76],[171,77],[178,78],[179,79],[177,7],[140,7],[149,80],[148,81],[172,80],[156,82],[158,83],[157,84],[165,85],[164,7],[147,86],[141,87],[143,88],[145,89],[144,7],[146,87],[142,7],[209,7],[169,7],[363,90],[385,7],[384,7],[378,91],[365,92],[364,7],[361,93],[366,7],[359,94],[367,7],[386,95],[368,7],[362,7],[377,96],[379,97],[360,98],[383,99],[381,100],[380,101],[382,102],[369,7],[375,103],[372,104],[374,105],[373,106],[371,107],[370,7],[376,108],[185,109],[187,110],[186,111],[184,112],[183,7],[224,7],[220,7],[114,7],[232,7],[221,113],[225,114],[223,115],[219,116],[212,117],[222,118],[218,119],[210,7],[173,7],[166,7],[234,120],[233,121],[235,122],[115,7],[226,7],[87,7],[88,7],[14,7],[16,7],[15,7],[2,7],[17,7],[18,7],[19,7],[20,7],[21,7],[22,7],[23,7],[24,7],[3,7],[25,7],[26,7],[4,7],[27,7],[31,7],[28,7],[29,7],[30,7],[32,7],[33,7],[34,7],[5,7],[35,7],[36,7],[37,7],[38,7],[6,7],[42,7],[39,7],[40,7],[41,7],[43,7],[7,7],[44,7],[49,7],[50,7],[45,7],[46,7],[47,7],[48,7],[8,7],[54,7],[51,7],[52,7],[53,7],[55,7],[9,7],[56,7],[57,7],[58,7],[60,7],[59,7],[61,7],[62,7],[10,7],[63,7],[64,7],[65,7],[11,7],[66,7],[67,7],[68,7],[69,7],[70,7],[71,7],[12,7],[72,7],[73,7],[74,7],[75,7],[76,7],[1,7],[77,7],[78,7],[13,7],[79,7],[80,7],[81,7],[82,7],[83,7],[84,7],[85,7],[86,7],[121,7],[119,7],[120,7],[122,123],[116,7],[117,124],[118,125],[335,126],[347,127],[333,128],[348,129],[357,130],[324,131],[325,132],[323,133],[356,134],[351,135],[355,136],[327,137],[344,138],[326,139],[354,140],[321,141],[322,142],[328,143],[329,7],[334,144],[332,143],[239,145],[358,146],[349,147],[338,148],[337,143],[339,149],[342,150],[336,151],[340,152],[352,134],[330,153],[331,154],[343,155],[240,156],[346,157],[345,143],[341,158],[350,7],[238,7],[353,159],[139,160],[124,7],[125,7],[126,7],[127,7],[123,7],[128,161],[129,7],[131,162],[130,161],[132,161],[133,162],[134,161],[135,7],[136,161],[137,7],[138,7],[152,163],[155,164],[153,163],[151,7],[154,165],[174,166],[163,167],[159,168],[160,82],[181,169],[175,170],[161,171],[180,172],[150,7],[162,173],[188,174],[182,175],[237,176],[176,7],[189,177],[190,178],[191,7],[192,7],[193,179],[195,180],[196,181],[197,182],[198,183],[199,184],[200,185],[201,186],[202,187],[203,188],[204,189],[205,190],[206,191],[207,192],[194,7],[208,192],[236,193],[90,7],[91,7],[94,194],[89,7],[95,195],[96,196],[97,195],[101,197],[102,195],[103,198],[98,7],[99,199],[104,200],[100,200]],"affectedFilesPendingEmit":[[189,48],[190,48],[191,48],[192,48],[193,48],[195,48],[196,48],[197,48],[198,48],[199,48],[200,48],[201,48],[202,48],[203,48],[204,48],[205,48],[206,48],[207,48],[194,48],[208,48],[236,48],[90,48],[91,48],[94,48],[89,48],[95,48],[96,48],[97,48],[101,48],[102,48],[103,48],[98,48],[99,48],[104,48],[100,48]],"emitSignatures":[89,90,91,94,95,96,97,98,99,100,101,102,103,104,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,236],"version":"6.0.3"}