viem 0.4.0-main.20230418T011420 → 0.4.0-main.20230419T202802
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 +6 -0
- package/dist/cjs/errors/encoding.js +13 -1
- package/dist/cjs/errors/encoding.js.map +1 -1
- package/dist/cjs/errors/index.js +3 -2
- package/dist/cjs/errors/index.js.map +1 -1
- package/dist/cjs/errors/version.js +1 -1
- package/dist/cjs/utils/encoding/fromBytes.js +29 -12
- package/dist/cjs/utils/encoding/fromBytes.js.map +1 -1
- package/dist/cjs/utils/encoding/fromHex.js +32 -10
- package/dist/cjs/utils/encoding/fromHex.js.map +1 -1
- package/dist/cjs/utils/encoding/toBytes.js +31 -15
- package/dist/cjs/utils/encoding/toBytes.js.map +1 -1
- package/dist/cjs/utils/encoding/toHex.js +31 -20
- package/dist/cjs/utils/encoding/toHex.js.map +1 -1
- package/dist/esm/errors/encoding.js +11 -0
- package/dist/esm/errors/encoding.js.map +1 -1
- package/dist/esm/errors/index.js +1 -1
- package/dist/esm/errors/index.js.map +1 -1
- package/dist/esm/errors/version.js +1 -1
- package/dist/esm/utils/encoding/fromBytes.js +30 -13
- package/dist/esm/utils/encoding/fromBytes.js.map +1 -1
- package/dist/esm/utils/encoding/fromHex.js +31 -10
- package/dist/esm/utils/encoding/fromHex.js.map +1 -1
- package/dist/esm/utils/encoding/toBytes.js +31 -15
- package/dist/esm/utils/encoding/toBytes.js.map +1 -1
- package/dist/esm/utils/encoding/toHex.js +28 -17
- package/dist/esm/utils/encoding/toHex.js.map +1 -1
- package/dist/types/errors/encoding.d.ts +7 -0
- package/dist/types/errors/encoding.d.ts.map +1 -1
- package/dist/types/errors/index.d.ts +1 -1
- package/dist/types/errors/index.d.ts.map +1 -1
- package/dist/types/errors/version.d.ts +1 -1
- package/dist/types/utils/encoding/fromBytes.d.ts +95 -10
- package/dist/types/utils/encoding/fromBytes.d.ts.map +1 -1
- package/dist/types/utils/encoding/fromHex.d.ts +122 -12
- package/dist/types/utils/encoding/fromHex.d.ts.map +1 -1
- package/dist/types/utils/encoding/toBytes.d.ts +113 -9
- package/dist/types/utils/encoding/toBytes.d.ts.map +1 -1
- package/dist/types/utils/encoding/toHex.d.ts +120 -10
- package/dist/types/utils/encoding/toHex.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/errors/encoding.ts +9 -0
- package/src/errors/index.ts +1 -0
- package/src/errors/version.ts +1 -1
- package/src/utils/encoding/fromBytes.ts +147 -18
- package/src/utils/encoding/fromHex.ts +162 -19
- package/src/utils/encoding/toBytes.ts +148 -18
- package/src/utils/encoding/toHex.ts +151 -26
@@ -1,19 +1,31 @@
|
|
1
|
-
import { InvalidHexBooleanError } from '../../errors/index.js';
|
1
|
+
import { InvalidHexBooleanError, SizeOverflowError, } from '../../errors/index.js';
|
2
|
+
import { size as size_ } from '../data/size.js';
|
2
3
|
import { trim } from '../data/index.js';
|
3
4
|
import { hexToBytes } from './toBytes.js';
|
4
|
-
export function
|
5
|
+
export function assertSize(hexOrBytes, { size }) {
|
6
|
+
if (size_(hexOrBytes) > size)
|
7
|
+
throw new SizeOverflowError({
|
8
|
+
givenSize: size_(hexOrBytes),
|
9
|
+
maxSize: size,
|
10
|
+
});
|
11
|
+
}
|
12
|
+
export function fromHex(hex, toOrOpts) {
|
13
|
+
const opts = typeof toOrOpts === 'string' ? { to: toOrOpts } : toOrOpts;
|
14
|
+
const to = opts.to;
|
5
15
|
if (to === 'number')
|
6
|
-
return hexToNumber(hex);
|
16
|
+
return hexToNumber(hex, opts);
|
7
17
|
if (to === 'bigint')
|
8
|
-
return hexToBigInt(hex);
|
18
|
+
return hexToBigInt(hex, opts);
|
9
19
|
if (to === 'string')
|
10
|
-
return hexToString(hex);
|
20
|
+
return hexToString(hex, opts);
|
11
21
|
if (to === 'boolean')
|
12
|
-
return hexToBool(hex);
|
13
|
-
return hexToBytes(hex);
|
22
|
+
return hexToBool(hex, opts);
|
23
|
+
return hexToBytes(hex, opts);
|
14
24
|
}
|
15
25
|
export function hexToBigInt(hex, opts = {}) {
|
16
26
|
const { signed } = opts;
|
27
|
+
if (opts.size)
|
28
|
+
assertSize(hex, { size: opts.size });
|
17
29
|
const value = BigInt(hex);
|
18
30
|
if (!signed)
|
19
31
|
return value;
|
@@ -23,7 +35,12 @@ export function hexToBigInt(hex, opts = {}) {
|
|
23
35
|
return value;
|
24
36
|
return value - BigInt(`0x${'f'.padStart(size * 2, 'f')}`) - 1n;
|
25
37
|
}
|
26
|
-
export function hexToBool(
|
38
|
+
export function hexToBool(hex_, opts = {}) {
|
39
|
+
let hex = hex_;
|
40
|
+
if (opts.size) {
|
41
|
+
assertSize(hex, { size: opts.size });
|
42
|
+
hex = trim(hex);
|
43
|
+
}
|
27
44
|
if (trim(hex) === '0x0')
|
28
45
|
return false;
|
29
46
|
if (trim(hex) === '0x1')
|
@@ -33,8 +50,12 @@ export function hexToBool(hex) {
|
|
33
50
|
export function hexToNumber(hex, opts = {}) {
|
34
51
|
return Number(hexToBigInt(hex, opts));
|
35
52
|
}
|
36
|
-
export function hexToString(hex) {
|
37
|
-
|
53
|
+
export function hexToString(hex, opts = {}) {
|
54
|
+
let bytes = hexToBytes(hex);
|
55
|
+
if (opts.size) {
|
56
|
+
assertSize(bytes, { size: opts.size });
|
57
|
+
bytes = trim(bytes, { dir: 'right' });
|
58
|
+
}
|
38
59
|
return new TextDecoder().decode(bytes);
|
39
60
|
}
|
40
61
|
//# sourceMappingURL=fromHex.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"fromHex.js","sourceRoot":"","sources":["../../../../src/utils/encoding/fromHex.ts"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"fromHex.js","sourceRoot":"","sources":["../../../../src/utils/encoding/fromHex.ts"],"names":[],"mappings":"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"}
|
@@ -1,32 +1,43 @@
|
|
1
1
|
import { BaseError } from '../../errors/index.js';
|
2
2
|
import { isHex } from '../data/isHex.js';
|
3
|
+
import { pad } from '../data/pad.js';
|
4
|
+
import { assertSize } from './fromHex.js';
|
3
5
|
import { numberToHex } from './toHex.js';
|
4
6
|
const encoder = new TextEncoder();
|
5
|
-
export function toBytes(value) {
|
7
|
+
export function toBytes(value, opts = {}) {
|
6
8
|
if (typeof value === 'number' || typeof value === 'bigint')
|
7
|
-
return numberToBytes(value);
|
9
|
+
return numberToBytes(value, opts);
|
8
10
|
if (typeof value === 'boolean')
|
9
|
-
return boolToBytes(value);
|
11
|
+
return boolToBytes(value, opts);
|
10
12
|
if (isHex(value))
|
11
|
-
return hexToBytes(value);
|
12
|
-
return stringToBytes(value);
|
13
|
+
return hexToBytes(value, opts);
|
14
|
+
return stringToBytes(value, opts);
|
13
15
|
}
|
14
|
-
export function boolToBytes(value) {
|
16
|
+
export function boolToBytes(value, opts = {}) {
|
15
17
|
const bytes = new Uint8Array(1);
|
16
18
|
bytes[0] = Number(value);
|
19
|
+
if (typeof opts.size === 'number') {
|
20
|
+
assertSize(bytes, { size: opts.size });
|
21
|
+
return pad(bytes, { size: opts.size });
|
22
|
+
}
|
17
23
|
return bytes;
|
18
24
|
}
|
19
|
-
export function hexToBytes(hex_) {
|
20
|
-
let hex = hex_
|
21
|
-
if (
|
22
|
-
hex
|
23
|
-
|
25
|
+
export function hexToBytes(hex_, opts = {}) {
|
26
|
+
let hex = hex_;
|
27
|
+
if (opts.size) {
|
28
|
+
assertSize(hex, { size: opts.size });
|
29
|
+
hex = pad(hex, { dir: 'right', size: opts.size });
|
30
|
+
}
|
31
|
+
let hexString = hex.slice(2);
|
32
|
+
if (hexString.length % 2)
|
33
|
+
hexString = `0${hexString}`;
|
34
|
+
const bytes = new Uint8Array(hexString.length / 2);
|
24
35
|
for (let index = 0; index < bytes.length; index++) {
|
25
36
|
const start = index * 2;
|
26
|
-
const hexByte =
|
37
|
+
const hexByte = hexString.slice(start, start + 2);
|
27
38
|
const byte = Number.parseInt(hexByte, 16);
|
28
39
|
if (Number.isNaN(byte) || byte < 0)
|
29
|
-
throw new BaseError(`Invalid byte sequence ("${hexByte}" in "${
|
40
|
+
throw new BaseError(`Invalid byte sequence ("${hexByte}" in "${hexString}").`);
|
30
41
|
bytes[index] = byte;
|
31
42
|
}
|
32
43
|
return bytes;
|
@@ -35,7 +46,12 @@ export function numberToBytes(value, opts) {
|
|
35
46
|
const hex = numberToHex(value, opts);
|
36
47
|
return hexToBytes(hex);
|
37
48
|
}
|
38
|
-
export function stringToBytes(value) {
|
39
|
-
|
49
|
+
export function stringToBytes(value, opts = {}) {
|
50
|
+
const bytes = encoder.encode(value);
|
51
|
+
if (typeof opts.size === 'number') {
|
52
|
+
assertSize(bytes, { size: opts.size });
|
53
|
+
return pad(bytes, { dir: 'right', size: opts.size });
|
54
|
+
}
|
55
|
+
return bytes;
|
40
56
|
}
|
41
57
|
//# sourceMappingURL=toBytes.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"toBytes.js","sourceRoot":"","sources":["../../../../src/utils/encoding/toBytes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEjD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;
|
1
|
+
{"version":3,"file":"toBytes.js","sourceRoot":"","sources":["../../../../src/utils/encoding/toBytes.ts"],"names":[],"mappings":"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"}
|
@@ -1,25 +1,36 @@
|
|
1
1
|
import { pad } from '../data/index.js';
|
2
2
|
import { IntegerOutOfRangeError } from '../../errors/index.js';
|
3
|
+
import { assertSize } from './fromHex.js';
|
3
4
|
const hexes = Array.from({ length: 256 }, (_v, i) => i.toString(16).padStart(2, '0'));
|
4
|
-
export function
|
5
|
-
return `0x${Number(value)}`;
|
6
|
-
}
|
7
|
-
export function bytesToHex(value) {
|
8
|
-
let hex = '';
|
9
|
-
for (let i = 0; i < value.length; i++) {
|
10
|
-
hex += hexes[value[i]];
|
11
|
-
}
|
12
|
-
return `0x${hex}`;
|
13
|
-
}
|
14
|
-
export function toHex(value) {
|
5
|
+
export function toHex(value, opts = {}) {
|
15
6
|
if (typeof value === 'number' || typeof value === 'bigint')
|
16
|
-
return numberToHex(value);
|
7
|
+
return numberToHex(value, opts);
|
17
8
|
if (typeof value === 'string') {
|
18
|
-
return stringToHex(value);
|
9
|
+
return stringToHex(value, opts);
|
19
10
|
}
|
20
11
|
if (typeof value === 'boolean')
|
21
|
-
return boolToHex(value);
|
22
|
-
return bytesToHex(value);
|
12
|
+
return boolToHex(value, opts);
|
13
|
+
return bytesToHex(value, opts);
|
14
|
+
}
|
15
|
+
export function boolToHex(value, opts = {}) {
|
16
|
+
const hex = `0x${Number(value)}`;
|
17
|
+
if (typeof opts.size === 'number') {
|
18
|
+
assertSize(hex, { size: opts.size });
|
19
|
+
return pad(hex, { size: opts.size });
|
20
|
+
}
|
21
|
+
return hex;
|
22
|
+
}
|
23
|
+
export function bytesToHex(value, opts = {}) {
|
24
|
+
let hexString = '';
|
25
|
+
for (let i = 0; i < value.length; i++) {
|
26
|
+
hexString += hexes[value[i]];
|
27
|
+
}
|
28
|
+
const hex = `0x${hexString}`;
|
29
|
+
if (typeof opts.size === 'number') {
|
30
|
+
assertSize(hex, { size: opts.size });
|
31
|
+
return pad(hex, { dir: 'right', size: opts.size });
|
32
|
+
}
|
33
|
+
return hex;
|
23
34
|
}
|
24
35
|
export function numberToHex(value_, opts = {}) {
|
25
36
|
const { signed, size } = opts;
|
@@ -53,8 +64,8 @@ export function numberToHex(value_, opts = {}) {
|
|
53
64
|
return hex;
|
54
65
|
}
|
55
66
|
const encoder = new TextEncoder();
|
56
|
-
export function stringToHex(value_) {
|
67
|
+
export function stringToHex(value_, opts = {}) {
|
57
68
|
const value = encoder.encode(value_);
|
58
|
-
return
|
69
|
+
return bytesToHex(value, opts);
|
59
70
|
}
|
60
71
|
//# sourceMappingURL=toHex.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"toHex.js","sourceRoot":"","sources":["../../../../src/utils/encoding/toHex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAEtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;
|
1
|
+
{"version":3,"file":"toHex.js","sourceRoot":"","sources":["../../../../src/utils/encoding/toHex.ts"],"names":[],"mappings":"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"}
|
@@ -43,4 +43,11 @@ export declare class OffsetOutOfBoundsError extends BaseError {
|
|
43
43
|
offset: number;
|
44
44
|
});
|
45
45
|
}
|
46
|
+
export declare class SizeOverflowError extends BaseError {
|
47
|
+
name: string;
|
48
|
+
constructor({ givenSize, maxSize }: {
|
49
|
+
givenSize: number;
|
50
|
+
maxSize: number;
|
51
|
+
});
|
52
|
+
}
|
46
53
|
//# sourceMappingURL=encoding.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../../src/errors/encoding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,qBAAa,sBAAuB,SAAQ,SAAS;IAC1C,IAAI,SAA2B;gBAC5B,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAOvE;AAED,qBAAa,uBAAwB,SAAQ,SAAS;IAC3C,IAAI,SAA4B;gBAC7B,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;CAO3E;AAED,qBAAa,sBAAuB,SAAQ,SAAS;IAC1C,IAAI,SAA2B;gBAC5B,EACV,GAAG,EACH,GAAG,EACH,MAAM,EACN,IAAI,EACJ,KAAK,GACN,EAAE;QACD,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,GAAG,EAAE,MAAM,CAAA;QACX,MAAM,CAAC,EAAE,OAAO,CAAA;QAChB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;KACd;CAOF;AAED,qBAAa,wBAAyB,SAAQ,SAAS;IAC5C,IAAI,SAA6B;gBAC9B,KAAK,EAAE,SAAS;CAK7B;AAED,qBAAa,sBAAuB,SAAQ,SAAS;IAC1C,IAAI,SAA2B;gBAC5B,GAAG,EAAE,GAAG;CAKrB;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IACxC,IAAI,SAAyB;gBAC1B,KAAK,EAAE,GAAG;CAKvB;AAED,qBAAa,sBAAuB,SAAQ,SAAS;IAC1C,IAAI,SAA2B;gBAC5B,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAK3E"}
|
1
|
+
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../../src/errors/encoding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,qBAAa,sBAAuB,SAAQ,SAAS;IAC1C,IAAI,SAA2B;gBAC5B,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAOvE;AAED,qBAAa,uBAAwB,SAAQ,SAAS;IAC3C,IAAI,SAA4B;gBAC7B,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;CAO3E;AAED,qBAAa,sBAAuB,SAAQ,SAAS;IAC1C,IAAI,SAA2B;gBAC5B,EACV,GAAG,EACH,GAAG,EACH,MAAM,EACN,IAAI,EACJ,KAAK,GACN,EAAE;QACD,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,GAAG,EAAE,MAAM,CAAA;QACX,MAAM,CAAC,EAAE,OAAO,CAAA;QAChB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;KACd;CAOF;AAED,qBAAa,wBAAyB,SAAQ,SAAS;IAC5C,IAAI,SAA6B;gBAC9B,KAAK,EAAE,SAAS;CAK7B;AAED,qBAAa,sBAAuB,SAAQ,SAAS;IAC1C,IAAI,SAA2B;gBAC5B,GAAG,EAAE,GAAG;CAKrB;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IACxC,IAAI,SAAyB;gBAC1B,KAAK,EAAE,GAAG;CAKvB;AAED,qBAAa,sBAAuB,SAAQ,SAAS;IAC1C,IAAI,SAA2B;gBAC5B,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAK3E;AAED,qBAAa,iBAAkB,SAAQ,SAAS;IACrC,IAAI,SAAsB;gBACvB,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAK3E"}
|
@@ -6,7 +6,7 @@ export { BlockNotFoundError } from './block.js';
|
|
6
6
|
export { ChainDoesNotSupportContract, ChainMismatchError, ChainNotFoundError, InvalidChainIdError, } from './chain.js';
|
7
7
|
export { CallExecutionError, ContractFunctionExecutionError, ContractFunctionRevertedError, ContractFunctionZeroDataError, RawContractError, } from './contract.js';
|
8
8
|
export { SizeExceedsPaddingSizeError } from './data.js';
|
9
|
-
export { DataLengthTooLongError, DataLengthTooShortError, IntegerOutOfRangeError, InvalidBytesBooleanError, InvalidHexBooleanError, InvalidHexValueError, OffsetOutOfBoundsError, } from './encoding.js';
|
9
|
+
export { DataLengthTooLongError, DataLengthTooShortError, IntegerOutOfRangeError, InvalidBytesBooleanError, InvalidHexBooleanError, InvalidHexValueError, OffsetOutOfBoundsError, SizeOverflowError, } from './encoding.js';
|
10
10
|
export { EnsAvatarInvalidMetadataError, EnsAvatarInvalidNftUriError, EnsAvatarUnsupportedNamespaceError, EnsAvatarUriResolutionError, } from './ens.js';
|
11
11
|
export { EstimateGasExecutionError } from './estimateGas.js';
|
12
12
|
export { FilterTypeNotSupportedError } from './log.js';
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,iCAAiC,EACjC,+BAA+B,EAC/B,gCAAgC,EAChC,wBAAwB,EACxB,mCAAmC,EACnC,iCAAiC,EACjC,8BAA8B,EAC9B,2BAA2B,EAC3B,qBAAqB,EACrB,8BAA8B,EAC9B,qBAAqB,EACrB,iCAAiC,EACjC,8BAA8B,EAC9B,wBAAwB,EACxB,+BAA+B,EAC/B,iCAAiC,EACjC,sBAAsB,EACtB,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,iBAAiB,EACjB,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAE/C,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,kBAAkB,EAClB,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,EAC7B,gBAAgB,GACjB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAA;AAEvD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,iCAAiC,EACjC,+BAA+B,EAC/B,gCAAgC,EAChC,wBAAwB,EACxB,mCAAmC,EACnC,iCAAiC,EACjC,8BAA8B,EAC9B,2BAA2B,EAC3B,qBAAqB,EACrB,8BAA8B,EAC9B,qBAAqB,EACrB,iCAAiC,EACjC,8BAA8B,EAC9B,wBAAwB,EACxB,+BAA+B,EAC/B,iCAAiC,EACjC,sBAAsB,EACtB,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,iBAAiB,EACjB,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAE/C,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,kBAAkB,EAClB,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,EAC7B,gBAAgB,GACjB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAA;AAEvD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,EAC3B,kCAAkC,EAClC,2BAA2B,GAC5B,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAA;AAE5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAA;AAEtD,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,gCAAgC,EAChC,gBAAgB,GACjB,MAAM,WAAW,CAAA;AAElB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,qBAAqB,GACtB,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,8BAA8B,EAC9B,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,aAAa,EACb,yBAAyB,EACzB,gBAAgB,EAChB,wBAAwB,EACxB,2BAA2B,EAC3B,QAAQ,EACR,gBAAgB,EAChB,2BAA2B,EAC3B,yBAAyB,EACzB,eAAe,EACf,8BAA8B,EAC9B,wBAAwB,GACzB,MAAM,UAAU,CAAA;AAEjB,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,mCAAmC,EACnC,iCAAiC,EACjC,qCAAqC,EACrC,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,+BAA+B,EAC/B,qCAAqC,GACtC,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare const version = "0.4.0-main.
|
1
|
+
export declare const version = "0.4.0-main.20230419T202802";
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
@@ -1,25 +1,110 @@
|
|
1
1
|
import type { ByteArray, Hex } from '../../types/index.js';
|
2
2
|
import { bytesToHex } from './toHex.js';
|
3
|
+
export type FromBytesParameters<TTo extends 'string' | 'hex' | 'bigint' | 'number' | 'boolean'> = TTo | {
|
4
|
+
/** Size of the bytes. */
|
5
|
+
size?: number;
|
6
|
+
/** Type to convert to. */
|
7
|
+
to: TTo;
|
8
|
+
};
|
3
9
|
type FromBytesReturnType<TTo> = TTo extends 'string' ? string : TTo extends 'hex' ? Hex : TTo extends 'bigint' ? bigint : TTo extends 'number' ? number : TTo extends 'boolean' ? boolean : never;
|
4
10
|
/**
|
5
|
-
*
|
11
|
+
* Decodes a byte array into a UTF-8 string, hex value, number, bigint or boolean.
|
12
|
+
*
|
13
|
+
* - Docs: https://viem.sh/docs/utilities/fromBytes.html
|
14
|
+
* - Example: https://viem.sh/docs/utilities/fromBytes.html#usage
|
15
|
+
*
|
16
|
+
* @param bytes Byte array to decode.
|
17
|
+
* @param toOrOpts Type to convert to or options.
|
18
|
+
* @returns Decoded value.
|
19
|
+
*
|
20
|
+
* @example
|
21
|
+
* import { fromBytes } from 'viem'
|
22
|
+
* const data = fromBytes(new Uint8Array([1, 164]), 'number')
|
23
|
+
* // 420
|
24
|
+
*
|
25
|
+
* @example
|
26
|
+
* import { fromBytes } from 'viem'
|
27
|
+
* const data = fromBytes(
|
28
|
+
* new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]),
|
29
|
+
* 'string'
|
30
|
+
* )
|
31
|
+
* // 'Hello world'
|
6
32
|
*/
|
7
|
-
export declare function fromBytes<TTo extends 'string' | 'hex' | 'bigint' | 'number' | 'boolean'>(bytes: ByteArray,
|
33
|
+
export declare function fromBytes<TTo extends 'string' | 'hex' | 'bigint' | 'number' | 'boolean'>(bytes: ByteArray, toOrOpts: FromBytesParameters<TTo>): FromBytesReturnType<TTo>;
|
34
|
+
export type BytesToBigIntOpts = {
|
35
|
+
/** Whether or not the number of a signed representation. */
|
36
|
+
signed?: boolean;
|
37
|
+
/** Size of the bytes. */
|
38
|
+
size?: number;
|
39
|
+
};
|
8
40
|
/**
|
9
|
-
*
|
41
|
+
* Decodes a byte array into a bigint.
|
42
|
+
*
|
43
|
+
* - Docs: https://viem.sh/docs/utilities/fromBytes.html#bytestobigint
|
44
|
+
*
|
45
|
+
* @param bytes Byte array to decode.
|
46
|
+
* @param opts Options.
|
47
|
+
* @returns BigInt value.
|
48
|
+
*
|
49
|
+
* @example
|
50
|
+
* import { bytesToBigint } from 'viem'
|
51
|
+
* const data = bytesToBigint(new Uint8Array([1, 164]))
|
52
|
+
* // 420n
|
10
53
|
*/
|
11
|
-
export declare function bytesToBigint(bytes: ByteArray): bigint;
|
54
|
+
export declare function bytesToBigint(bytes: ByteArray, opts?: BytesToBigIntOpts): bigint;
|
55
|
+
export type BytesToBoolOpts = {
|
56
|
+
/** Size of the bytes. */
|
57
|
+
size?: number;
|
58
|
+
};
|
12
59
|
/**
|
13
|
-
*
|
60
|
+
* Decodes a byte array into a boolean.
|
61
|
+
*
|
62
|
+
* - Docs: https://viem.sh/docs/utilities/fromBytes.html#bytestobool
|
63
|
+
*
|
64
|
+
* @param bytes Byte array to decode.
|
65
|
+
* @param opts Options.
|
66
|
+
* @returns Boolean value.
|
67
|
+
*
|
68
|
+
* @example
|
69
|
+
* import { bytesToBool } from 'viem'
|
70
|
+
* const data = bytesToBool(new Uint8Array([1]))
|
71
|
+
* // true
|
14
72
|
*/
|
15
|
-
export declare function bytesToBool(
|
73
|
+
export declare function bytesToBool(bytes_: ByteArray, opts?: BytesToBoolOpts): boolean;
|
16
74
|
export { bytesToHex };
|
75
|
+
export type BytesToNumberOpts = BytesToBigIntOpts;
|
17
76
|
/**
|
18
|
-
*
|
77
|
+
* Decodes a byte array into a number.
|
78
|
+
*
|
79
|
+
* - Docs: https://viem.sh/docs/utilities/fromBytes.html#bytestonumber
|
80
|
+
*
|
81
|
+
* @param bytes Byte array to decode.
|
82
|
+
* @param opts Options.
|
83
|
+
* @returns Number value.
|
84
|
+
*
|
85
|
+
* @example
|
86
|
+
* import { bytesToNumber } from 'viem'
|
87
|
+
* const data = bytesToNumber(new Uint8Array([1, 164]))
|
88
|
+
* // 420
|
19
89
|
*/
|
20
|
-
export declare function bytesToNumber(bytes: ByteArray): number;
|
90
|
+
export declare function bytesToNumber(bytes: ByteArray, opts?: BytesToNumberOpts): number;
|
91
|
+
export type BytesToStringOpts = {
|
92
|
+
/** Size of the bytes. */
|
93
|
+
size?: number;
|
94
|
+
};
|
21
95
|
/**
|
22
|
-
*
|
96
|
+
* Decodes a byte array into a UTF-8 string.
|
97
|
+
*
|
98
|
+
* - Docs: https://viem.sh/docs/utilities/fromBytes.html#bytestostring
|
99
|
+
*
|
100
|
+
* @param bytes Byte array to decode.
|
101
|
+
* @param opts Options.
|
102
|
+
* @returns String value.
|
103
|
+
*
|
104
|
+
* @example
|
105
|
+
* import { bytesToString } from 'viem'
|
106
|
+
* const data = bytesToString(new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]))
|
107
|
+
* // 'Hello world'
|
23
108
|
*/
|
24
|
-
export declare function bytesToString(
|
109
|
+
export declare function bytesToString(bytes_: ByteArray, opts?: BytesToStringOpts): string;
|
25
110
|
//# sourceMappingURL=fromBytes.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"fromBytes.d.ts","sourceRoot":"","sources":["../../../../src/utils/encoding/fromBytes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;
|
1
|
+
{"version":3,"file":"fromBytes.d.ts","sourceRoot":"","sources":["../../../../src/utils/encoding/fromBytes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAG1D,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvC,MAAM,MAAM,mBAAmB,CAC7B,GAAG,SAAS,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,IAE5D,GAAG,GACH;IACE,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,0BAA0B;IAC1B,EAAE,EAAE,GAAG,CAAA;CACR,CAAA;AAEL,KAAK,mBAAmB,CAAC,GAAG,IAAI,GAAG,SAAS,QAAQ,GAChD,MAAM,GACN,GAAG,SAAS,KAAK,GACjB,GAAG,GACH,GAAG,SAAS,QAAQ,GACpB,MAAM,GACN,GAAG,SAAS,QAAQ,GACpB,MAAM,GACN,GAAG,SAAS,SAAS,GACrB,OAAO,GACP,KAAK,CAAA;AAET;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,SAAS,CACvB,GAAG,SAAS,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,EAE9D,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,mBAAmB,CAAC,GAAG,CAAC,GACjC,mBAAmB,CAAC,GAAG,CAAC,CAa1B;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE,iBAAsB,GAC3B,MAAM,CAIR;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,EACjB,IAAI,GAAE,eAAoB,GACzB,OAAO,CAST;AAED,OAAO,EAAE,UAAU,EAAE,CAAA;AAErB,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,CAAA;AAEjD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE,iBAAsB,GAC3B,MAAM,CAIR;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,IAAI,GAAE,iBAAsB,GAC3B,MAAM,CAOR"}
|
@@ -1,28 +1,138 @@
|
|
1
1
|
import type { ByteArray, Hex } from '../../types/index.js';
|
2
|
-
|
2
|
+
export declare function assertSize(hexOrBytes: Hex | ByteArray, { size }: {
|
3
|
+
size: number;
|
4
|
+
}): void;
|
5
|
+
export type FromHexParameters<TTo extends 'string' | 'bigint' | 'number' | 'bytes' | 'boolean'> = TTo | {
|
6
|
+
/** Size (in bytes) of the hex value. */
|
7
|
+
size?: number;
|
8
|
+
/** Type to convert to. */
|
9
|
+
to: TTo;
|
10
|
+
};
|
11
|
+
export type FromHexReturnType<TTo> = TTo extends 'string' ? string : TTo extends 'bigint' ? bigint : TTo extends 'number' ? number : TTo extends 'bytes' ? ByteArray : TTo extends 'boolean' ? boolean : never;
|
3
12
|
/**
|
4
|
-
*
|
13
|
+
* Decodes a hex string into a string, number, bigint, boolean, or byte array.
|
14
|
+
*
|
15
|
+
* - Docs: https://viem.sh/docs/utilities/fromHex.html
|
16
|
+
* - Example: https://viem.sh/docs/utilities/fromHex.html#usage
|
17
|
+
*
|
18
|
+
* @param hex Hex string to decode.
|
19
|
+
* @param toOrOpts Type to convert to or options.
|
20
|
+
* @returns Decoded value.
|
21
|
+
*
|
22
|
+
* @example
|
23
|
+
* import { fromHex } from 'viem'
|
24
|
+
* const data = fromHex('0x1a4', 'number')
|
25
|
+
* // 420
|
26
|
+
*
|
27
|
+
* @example
|
28
|
+
* import { fromHex } from 'viem'
|
29
|
+
* const data = fromHex('0x48656c6c6f20576f726c6421', 'string')
|
30
|
+
* // 'Hello world'
|
31
|
+
*
|
32
|
+
* @example
|
33
|
+
* import { fromHex } from 'viem'
|
34
|
+
* const data = fromHex('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {
|
35
|
+
* size: 32,
|
36
|
+
* to: 'string'
|
37
|
+
* })
|
38
|
+
* // 'Hello world'
|
5
39
|
*/
|
6
|
-
export declare function fromHex<TTo extends 'string' | 'bigint' | 'number' | 'bytes' | 'boolean'>(hex: Hex,
|
40
|
+
export declare function fromHex<TTo extends 'string' | 'bigint' | 'number' | 'bytes' | 'boolean'>(hex: Hex, toOrOpts: FromHexParameters<TTo>): FromHexReturnType<TTo>;
|
7
41
|
export type HexToBigIntOpts = {
|
42
|
+
/** Whether or not the number of a signed representation. */
|
8
43
|
signed?: boolean;
|
44
|
+
/** Size (in bytes) of the hex value. */
|
45
|
+
size?: number;
|
9
46
|
};
|
10
47
|
/**
|
11
|
-
*
|
48
|
+
* Decodes a hex value into a bigint.
|
49
|
+
*
|
50
|
+
* - Docs: https://viem.sh/docs/utilities/fromHex.html#hextobigint
|
51
|
+
*
|
52
|
+
* @param hex Hex value to decode.
|
53
|
+
* @param opts Options.
|
54
|
+
* @returns BigInt value.
|
55
|
+
*
|
56
|
+
* @example
|
57
|
+
* import { hexToBigInt } from 'viem'
|
58
|
+
* const data = hexToBigInt('0x1a4', { signed: true })
|
59
|
+
* // 420n
|
60
|
+
*
|
61
|
+
* @example
|
62
|
+
* import { hexToBigInt } from 'viem'
|
63
|
+
* const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })
|
64
|
+
* // 420n
|
12
65
|
*/
|
13
66
|
export declare function hexToBigInt(hex: Hex, opts?: HexToBigIntOpts): bigint;
|
67
|
+
export type HexToBoolOpts = {
|
68
|
+
/** Size (in bytes) of the hex value. */
|
69
|
+
size?: number;
|
70
|
+
};
|
14
71
|
/**
|
15
|
-
*
|
72
|
+
* Decodes a hex value into a boolean.
|
73
|
+
*
|
74
|
+
* - Docs: https://viem.sh/docs/utilities/fromHex.html#hextobool
|
75
|
+
*
|
76
|
+
* @param hex Hex value to decode.
|
77
|
+
* @param opts Options.
|
78
|
+
* @returns Boolean value.
|
79
|
+
*
|
80
|
+
* @example
|
81
|
+
* import { hexToBool } from 'viem'
|
82
|
+
* const data = hexToBool('0x1')
|
83
|
+
* // true
|
84
|
+
*
|
85
|
+
* @example
|
86
|
+
* import { hexToBool } from 'viem'
|
87
|
+
* const data = hexToBool('0x0000000000000000000000000000000000000000000000000000000000000001', { size: 32 })
|
88
|
+
* // true
|
16
89
|
*/
|
17
|
-
export declare function hexToBool(
|
18
|
-
type
|
90
|
+
export declare function hexToBool(hex_: Hex, opts?: HexToBoolOpts): boolean;
|
91
|
+
export type HexToNumberOpts = HexToBigIntOpts;
|
19
92
|
/**
|
20
|
-
*
|
93
|
+
* Decodes a hex string into a number.
|
94
|
+
*
|
95
|
+
* - Docs: https://viem.sh/docs/utilities/fromHex.html#hextonumber
|
96
|
+
*
|
97
|
+
* @param hex Hex value to decode.
|
98
|
+
* @param opts Options.
|
99
|
+
* @returns Number value.
|
100
|
+
*
|
101
|
+
* @example
|
102
|
+
* import { hexToNumber } from 'viem'
|
103
|
+
* const data = hexToNumber('0x1a4')
|
104
|
+
* // 420
|
105
|
+
*
|
106
|
+
* @example
|
107
|
+
* import { hexToNumber } from 'viem'
|
108
|
+
* const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })
|
109
|
+
* // 420
|
21
110
|
*/
|
22
|
-
export declare function hexToNumber(hex: Hex, opts?:
|
111
|
+
export declare function hexToNumber(hex: Hex, opts?: HexToNumberOpts): number;
|
112
|
+
export type HexToStringOpts = {
|
113
|
+
/** Size (in bytes) of the hex value. */
|
114
|
+
size?: number;
|
115
|
+
};
|
23
116
|
/**
|
24
|
-
*
|
117
|
+
* Decodes a hex value into a UTF-8 string.
|
118
|
+
*
|
119
|
+
* - Docs: https://viem.sh/docs/utilities/fromHex.html#hextostring
|
120
|
+
*
|
121
|
+
* @param hex Hex value to decode.
|
122
|
+
* @param opts Options.
|
123
|
+
* @returns String value.
|
124
|
+
*
|
125
|
+
* @example
|
126
|
+
* import { hexToString } from 'viem'
|
127
|
+
* const data = hexToString('0x48656c6c6f20576f726c6421')
|
128
|
+
* // 'Hello world!'
|
129
|
+
*
|
130
|
+
* @example
|
131
|
+
* import { hexToString } from 'viem'
|
132
|
+
* const data = hexToString('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {
|
133
|
+
* size: 32,
|
134
|
+
* })
|
135
|
+
* // 'Hello world'
|
25
136
|
*/
|
26
|
-
export declare function hexToString(hex: Hex): string;
|
27
|
-
export {};
|
137
|
+
export declare function hexToString(hex: Hex, opts?: HexToStringOpts): string;
|
28
138
|
//# sourceMappingURL=fromHex.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"fromHex.d.ts","sourceRoot":"","sources":["../../../../src/utils/encoding/fromHex.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"fromHex.d.ts","sourceRoot":"","sources":["../../../../src/utils/encoding/fromHex.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAK1D,wBAAgB,UAAU,CACxB,UAAU,EAAE,GAAG,GAAG,SAAS,EAC3B,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB,IAAI,CAMN;AAED,MAAM,MAAM,iBAAiB,CAC3B,GAAG,SAAS,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,IAE9D,GAAG,GACH;IACE,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,0BAA0B;IAC1B,EAAE,EAAE,GAAG,CAAA;CACR,CAAA;AAEL,MAAM,MAAM,iBAAiB,CAAC,GAAG,IAAI,GAAG,SAAS,QAAQ,GACrD,MAAM,GACN,GAAG,SAAS,QAAQ,GACpB,MAAM,GACN,GAAG,SAAS,QAAQ,GACpB,MAAM,GACN,GAAG,SAAS,OAAO,GACnB,SAAS,GACT,GAAG,SAAS,SAAS,GACrB,OAAO,GACP,KAAK,CAAA;AAET;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,OAAO,CACrB,GAAG,SAAS,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,EAChE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,CASpE;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,GAAE,eAAoB,GAAG,MAAM,CAaxE;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAStE;AAED,MAAM,MAAM,eAAe,GAAG,eAAe,CAAA;AAE7C;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,GAAE,eAAoB,GAAG,MAAM,CAExE;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,GAAE,eAAoB,GAAG,MAAM,CAOxE"}
|