@atproto/repo 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/LICENSE +21 -0
- package/README.md +1 -1
- package/build.js +0 -8
- package/dist/data-diff.d.ts +11 -9
- package/dist/index.d.ts +0 -1
- package/dist/index.js +1620 -2953
- package/dist/index.js.map +4 -4
- package/dist/logger.d.ts +2 -1
- package/dist/mst/mst.d.ts +10 -6
- package/dist/readable-repo.d.ts +1 -1
- package/dist/repo.d.ts +1 -4
- package/dist/storage/index.d.ts +0 -1
- package/dist/storage/memory-blockstore.d.ts +7 -12
- package/dist/storage/types.d.ts +28 -0
- package/dist/sync/consumer.d.ts +13 -17
- package/dist/sync/provider.d.ts +1 -5
- package/dist/types.d.ts +228 -39
- package/dist/util.d.ts +3 -5
- package/package.json +17 -24
- package/src/data-diff.ts +46 -44
- package/src/index.ts +0 -1
- package/src/logger.ts +2 -1
- package/src/mst/diff.ts +14 -36
- package/src/mst/mst.ts +14 -4
- package/src/readable-repo.ts +3 -3
- package/src/repo.ts +49 -70
- package/src/storage/index.ts +0 -1
- package/src/storage/memory-blockstore.ts +18 -77
- package/src/storage/types.ts +29 -0
- package/src/sync/consumer.ts +170 -116
- package/src/sync/provider.ts +2 -40
- package/src/types.ts +51 -24
- package/src/util.ts +24 -79
- package/tests/_util.ts +38 -67
- package/tests/mst.test.ts +4 -1
- package/tests/{sync/narrow.test.ts → proofs.test.ts} +9 -20
- package/tests/repo.test.ts +5 -4
- package/tests/sync.test.ts +97 -0
- package/tsconfig.build.json +1 -1
- package/tsconfig.json +3 -3
- package/dist/src/block-map.d.ts +0 -23
- package/dist/src/blockstore/index.d.ts +0 -2
- package/dist/src/blockstore/ipld-store.d.ts +0 -27
- package/dist/src/blockstore/memory-blockstore.d.ts +0 -13
- package/dist/src/blockstore/persistent-blockstore.d.ts +0 -12
- package/dist/src/cid-set.d.ts +0 -14
- package/dist/src/collection.d.ts +0 -22
- package/dist/src/data-diff.d.ts +0 -34
- package/dist/src/error.d.ts +0 -21
- package/dist/src/index.d.ts +0 -7
- package/dist/src/logger.d.ts +0 -2
- package/dist/src/mst/diff.d.ts +0 -33
- package/dist/src/mst/index.d.ts +0 -4
- package/dist/src/mst/mst.d.ts +0 -106
- package/dist/src/mst/util.d.ts +0 -9
- package/dist/src/mst/walker.d.ts +0 -22
- package/dist/src/parse.d.ts +0 -11
- package/dist/src/readable-repo.d.ts +0 -25
- package/dist/src/repo.d.ts +0 -39
- package/dist/src/storage/error.d.ts +0 -22
- package/dist/src/storage/index.d.ts +0 -1
- package/dist/src/storage/memory-blobstore.d.ts +0 -1
- package/dist/src/storage/memory-blockstore.d.ts +0 -28
- package/dist/src/storage/readable-blockstore.d.ts +0 -21
- package/dist/src/storage/repo-storage.d.ts +0 -18
- package/dist/src/storage/sync-storage.d.ts +0 -15
- package/dist/src/storage/types.d.ts +0 -12
- package/dist/src/storage/util.d.ts +0 -17
- package/dist/src/structure.d.ts +0 -39
- package/dist/src/sync/consumer.d.ts +0 -19
- package/dist/src/sync/index.d.ts +0 -2
- package/dist/src/sync/producer.d.ts +0 -13
- package/dist/src/sync/provider.d.ts +0 -11
- package/dist/src/sync.d.ts +0 -9
- package/dist/src/types.d.ts +0 -368
- package/dist/src/util.d.ts +0 -13
- package/dist/src/verify.d.ts +0 -5
- package/dist/storage/repo-storage.d.ts +0 -19
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- package/dist/verify.d.ts +0 -32
- package/src/storage/repo-storage.ts +0 -43
- package/src/verify.ts +0 -268
- package/tests/rebase.test.ts +0 -37
- package/tests/sync/checkout.test.ts +0 -75
- package/tests/sync/diff.test.ts +0 -92
- package/tsconfig.build.tsbuildinfo +0 -1
- package/update-pkg.js +0 -14
package/src/verify.ts
DELETED
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
import { CID } from 'multiformats/cid'
|
|
2
|
-
import { MemoryBlockstore, ReadableBlockstore, RepoStorage } from './storage'
|
|
3
|
-
import DataDiff from './data-diff'
|
|
4
|
-
import SyncStorage from './storage/sync-storage'
|
|
5
|
-
import ReadableRepo from './readable-repo'
|
|
6
|
-
import Repo from './repo'
|
|
7
|
-
import CidSet from './cid-set'
|
|
8
|
-
import * as util from './util'
|
|
9
|
-
import { RecordClaim, RepoContents, RepoContentsWithCids } from './types'
|
|
10
|
-
import { def } from './types'
|
|
11
|
-
import { MST } from './mst'
|
|
12
|
-
import { cidForCbor } from '@atproto/common'
|
|
13
|
-
|
|
14
|
-
export type VerifiedCheckout = {
|
|
15
|
-
contents: RepoContents
|
|
16
|
-
newCids: CidSet
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export type VerifiedCheckoutWithCids = {
|
|
20
|
-
commit: CID
|
|
21
|
-
contents: RepoContentsWithCids
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export const verifyCheckout = async (
|
|
25
|
-
storage: ReadableBlockstore,
|
|
26
|
-
head: CID,
|
|
27
|
-
did: string,
|
|
28
|
-
signingKey: string,
|
|
29
|
-
): Promise<VerifiedCheckout> => {
|
|
30
|
-
const repo = await verifyRepoRoot(storage, head, did, signingKey)
|
|
31
|
-
const diff = await DataDiff.of(repo.data, null)
|
|
32
|
-
const newCids = new CidSet([repo.cid]).addSet(diff.newCids)
|
|
33
|
-
|
|
34
|
-
const contents: RepoContents = {}
|
|
35
|
-
for (const add of diff.addList()) {
|
|
36
|
-
const { collection, rkey } = util.parseDataKey(add.key)
|
|
37
|
-
if (!contents[collection]) {
|
|
38
|
-
contents[collection] = {}
|
|
39
|
-
}
|
|
40
|
-
const record = await storage.readRecord(add.cid)
|
|
41
|
-
contents[collection][rkey] = record
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return {
|
|
45
|
-
contents,
|
|
46
|
-
newCids,
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export const verifyCheckoutWithCids = async (
|
|
51
|
-
storage: ReadableBlockstore,
|
|
52
|
-
head: CID,
|
|
53
|
-
did: string,
|
|
54
|
-
signingKey: string,
|
|
55
|
-
): Promise<VerifiedCheckoutWithCids> => {
|
|
56
|
-
const repo = await verifyRepoRoot(storage, head, did, signingKey)
|
|
57
|
-
const diff = await DataDiff.of(repo.data, null)
|
|
58
|
-
|
|
59
|
-
const contents: RepoContentsWithCids = {}
|
|
60
|
-
for (const add of diff.addList()) {
|
|
61
|
-
const { collection, rkey } = util.parseDataKey(add.key)
|
|
62
|
-
contents[collection] ??= {}
|
|
63
|
-
contents[collection][rkey] = {
|
|
64
|
-
cid: add.cid,
|
|
65
|
-
value: await storage.readRecord(add.cid),
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return {
|
|
70
|
-
commit: repo.cid,
|
|
71
|
-
contents,
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// @NOTE only verifies the root, not the repo contents
|
|
76
|
-
const verifyRepoRoot = async (
|
|
77
|
-
storage: ReadableBlockstore,
|
|
78
|
-
head: CID,
|
|
79
|
-
did: string,
|
|
80
|
-
signingKey: string,
|
|
81
|
-
): Promise<ReadableRepo> => {
|
|
82
|
-
const repo = await ReadableRepo.load(storage, head)
|
|
83
|
-
if (repo.did !== did) {
|
|
84
|
-
throw new RepoVerificationError(`Invalid repo did: ${repo.did}`)
|
|
85
|
-
}
|
|
86
|
-
const validSig = await util.verifyCommitSig(repo.commit, signingKey)
|
|
87
|
-
if (!validSig) {
|
|
88
|
-
throw new RepoVerificationError(
|
|
89
|
-
`Invalid signature on commit: ${repo.cid.toString()}`,
|
|
90
|
-
)
|
|
91
|
-
}
|
|
92
|
-
return repo
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
export type VerifiedUpdate = {
|
|
96
|
-
commit: CID
|
|
97
|
-
prev: CID | null
|
|
98
|
-
diff: DataDiff
|
|
99
|
-
newCids: CidSet
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
export const verifyFullHistory = async (
|
|
103
|
-
storage: RepoStorage,
|
|
104
|
-
head: CID,
|
|
105
|
-
did: string,
|
|
106
|
-
signingKey: string,
|
|
107
|
-
): Promise<VerifiedUpdate[]> => {
|
|
108
|
-
const commitPath = await storage.getCommitPath(head, null)
|
|
109
|
-
if (commitPath === null) {
|
|
110
|
-
throw new RepoVerificationError('Could not find shared history')
|
|
111
|
-
} else if (commitPath.length < 1) {
|
|
112
|
-
throw new RepoVerificationError('Expected at least one commit')
|
|
113
|
-
}
|
|
114
|
-
const baseRepo = await Repo.load(storage, commitPath[0])
|
|
115
|
-
const baseDiff = await DataDiff.of(baseRepo.data, null)
|
|
116
|
-
const baseRepoCids = new CidSet([baseRepo.cid]).addSet(baseDiff.newCids)
|
|
117
|
-
const init: VerifiedUpdate = {
|
|
118
|
-
commit: baseRepo.cid,
|
|
119
|
-
prev: null,
|
|
120
|
-
diff: baseDiff,
|
|
121
|
-
newCids: baseRepoCids,
|
|
122
|
-
}
|
|
123
|
-
const updates = await verifyCommitPath(
|
|
124
|
-
baseRepo,
|
|
125
|
-
storage,
|
|
126
|
-
commitPath.slice(1),
|
|
127
|
-
did,
|
|
128
|
-
signingKey,
|
|
129
|
-
)
|
|
130
|
-
return [init, ...updates]
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export const verifyUpdates = async (
|
|
134
|
-
repo: ReadableRepo,
|
|
135
|
-
updateStorage: RepoStorage,
|
|
136
|
-
updateRoot: CID,
|
|
137
|
-
did: string,
|
|
138
|
-
signingKey: string,
|
|
139
|
-
): Promise<VerifiedUpdate[]> => {
|
|
140
|
-
const commitPath = await updateStorage.getCommitPath(updateRoot, repo.cid)
|
|
141
|
-
if (commitPath === null) {
|
|
142
|
-
throw new RepoVerificationError('Could not find shared history')
|
|
143
|
-
}
|
|
144
|
-
const syncStorage = new SyncStorage(updateStorage, repo.storage)
|
|
145
|
-
return verifyCommitPath(repo, syncStorage, commitPath, did, signingKey)
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
export const verifyCommitPath = async (
|
|
149
|
-
baseRepo: ReadableRepo,
|
|
150
|
-
storage: ReadableBlockstore,
|
|
151
|
-
commitPath: CID[],
|
|
152
|
-
did: string,
|
|
153
|
-
signingKey: string,
|
|
154
|
-
): Promise<VerifiedUpdate[]> => {
|
|
155
|
-
const updates: VerifiedUpdate[] = []
|
|
156
|
-
if (commitPath.length === 0) return updates
|
|
157
|
-
let prevRepo = baseRepo
|
|
158
|
-
for (const commit of commitPath) {
|
|
159
|
-
const nextRepo = await ReadableRepo.load(storage, commit)
|
|
160
|
-
const diff = await DataDiff.of(nextRepo.data, prevRepo.data)
|
|
161
|
-
|
|
162
|
-
if (nextRepo.did !== did) {
|
|
163
|
-
throw new RepoVerificationError(`Invalid repo did: ${nextRepo.did}`)
|
|
164
|
-
}
|
|
165
|
-
if (!util.metaEqual(nextRepo.commit, prevRepo.commit)) {
|
|
166
|
-
throw new RepoVerificationError('Not supported: repo metadata updated')
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
const validSig = await util.verifyCommitSig(nextRepo.commit, signingKey)
|
|
170
|
-
if (!validSig) {
|
|
171
|
-
throw new RepoVerificationError(
|
|
172
|
-
`Invalid signature on commit: ${nextRepo.cid.toString()}`,
|
|
173
|
-
)
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
const newCids = new CidSet([nextRepo.cid]).addSet(diff.newCids)
|
|
177
|
-
|
|
178
|
-
updates.push({
|
|
179
|
-
commit: nextRepo.cid,
|
|
180
|
-
prev: prevRepo.cid,
|
|
181
|
-
diff,
|
|
182
|
-
newCids,
|
|
183
|
-
})
|
|
184
|
-
prevRepo = nextRepo
|
|
185
|
-
}
|
|
186
|
-
return updates
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
export const verifyProofs = async (
|
|
190
|
-
proofs: Uint8Array,
|
|
191
|
-
claims: RecordClaim[],
|
|
192
|
-
did: string,
|
|
193
|
-
didKey: string,
|
|
194
|
-
): Promise<{ verified: RecordClaim[]; unverified: RecordClaim[] }> => {
|
|
195
|
-
const car = await util.readCarWithRoot(proofs)
|
|
196
|
-
const blockstore = new MemoryBlockstore(car.blocks)
|
|
197
|
-
const commit = await blockstore.readObj(car.root, def.commit)
|
|
198
|
-
if (commit.did !== did) {
|
|
199
|
-
throw new RepoVerificationError(`Invalid repo did: ${commit.did}`)
|
|
200
|
-
}
|
|
201
|
-
const validSig = await util.verifyCommitSig(commit, didKey)
|
|
202
|
-
if (!validSig) {
|
|
203
|
-
throw new RepoVerificationError(
|
|
204
|
-
`Invalid signature on commit: ${car.root.toString()}`,
|
|
205
|
-
)
|
|
206
|
-
}
|
|
207
|
-
const mst = MST.load(blockstore, commit.data)
|
|
208
|
-
const verified: RecordClaim[] = []
|
|
209
|
-
const unverified: RecordClaim[] = []
|
|
210
|
-
for (const claim of claims) {
|
|
211
|
-
const found = await mst.get(
|
|
212
|
-
util.formatDataKey(claim.collection, claim.rkey),
|
|
213
|
-
)
|
|
214
|
-
const record = found ? await blockstore.readObj(found, def.map) : null
|
|
215
|
-
if (claim.record === null) {
|
|
216
|
-
if (record === null) {
|
|
217
|
-
verified.push(claim)
|
|
218
|
-
} else {
|
|
219
|
-
unverified.push(claim)
|
|
220
|
-
}
|
|
221
|
-
} else {
|
|
222
|
-
const expected = await cidForCbor(claim.record)
|
|
223
|
-
if (expected.equals(found)) {
|
|
224
|
-
verified.push(claim)
|
|
225
|
-
} else {
|
|
226
|
-
unverified.push(claim)
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
return { verified, unverified }
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
export const verifyRecords = async (
|
|
234
|
-
proofs: Uint8Array,
|
|
235
|
-
did: string,
|
|
236
|
-
signingKey: string,
|
|
237
|
-
): Promise<RecordClaim[]> => {
|
|
238
|
-
const car = await util.readCarWithRoot(proofs)
|
|
239
|
-
const blockstore = new MemoryBlockstore(car.blocks)
|
|
240
|
-
const commit = await blockstore.readObj(car.root, def.commit)
|
|
241
|
-
if (commit.did !== did) {
|
|
242
|
-
throw new RepoVerificationError(`Invalid repo did: ${commit.did}`)
|
|
243
|
-
}
|
|
244
|
-
const validSig = await util.verifyCommitSig(commit, signingKey)
|
|
245
|
-
if (!validSig) {
|
|
246
|
-
throw new RepoVerificationError(
|
|
247
|
-
`Invalid signature on commit: ${car.root.toString()}`,
|
|
248
|
-
)
|
|
249
|
-
}
|
|
250
|
-
const mst = MST.load(blockstore, commit.data)
|
|
251
|
-
|
|
252
|
-
const records: RecordClaim[] = []
|
|
253
|
-
const leaves = await mst.reachableLeaves()
|
|
254
|
-
for (const leaf of leaves) {
|
|
255
|
-
const { collection, rkey } = util.parseDataKey(leaf.key)
|
|
256
|
-
const record = await blockstore.attemptReadRecord(leaf.value)
|
|
257
|
-
if (record) {
|
|
258
|
-
records.push({
|
|
259
|
-
collection,
|
|
260
|
-
rkey,
|
|
261
|
-
record,
|
|
262
|
-
})
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
return records
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
export class RepoVerificationError extends Error {}
|
package/tests/rebase.test.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import * as crypto from '@atproto/crypto'
|
|
2
|
-
import { Repo } from '../src/repo'
|
|
3
|
-
import { MemoryBlockstore } from '../src/storage'
|
|
4
|
-
import * as util from './_util'
|
|
5
|
-
import { Secp256k1Keypair } from '@atproto/crypto'
|
|
6
|
-
|
|
7
|
-
describe('Rebases', () => {
|
|
8
|
-
let storage: MemoryBlockstore
|
|
9
|
-
let keypair: crypto.Keypair
|
|
10
|
-
let repo: Repo
|
|
11
|
-
|
|
12
|
-
it('fills a repo with data', async () => {
|
|
13
|
-
storage = new MemoryBlockstore()
|
|
14
|
-
keypair = await Secp256k1Keypair.create()
|
|
15
|
-
repo = await Repo.create(storage, keypair.did(), keypair)
|
|
16
|
-
const filled = await util.fillRepo(repo, keypair, 100)
|
|
17
|
-
repo = filled.repo
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
it('rebases the repo & preserves contents', async () => {
|
|
21
|
-
const dataCidBefore = await repo.data.getPointer()
|
|
22
|
-
const contents = await repo.getContents()
|
|
23
|
-
repo = await repo.rebase(keypair)
|
|
24
|
-
const rebasedContents = await repo.getContents()
|
|
25
|
-
expect(rebasedContents).toEqual(contents)
|
|
26
|
-
const dataCidAfter = await repo.data.getPointer()
|
|
27
|
-
expect(dataCidAfter.equals(dataCidBefore)).toBeTruthy()
|
|
28
|
-
})
|
|
29
|
-
|
|
30
|
-
it('only keeps around relevant cids', async () => {
|
|
31
|
-
const allCids = await repo.data.allCids()
|
|
32
|
-
allCids.add(repo.cid)
|
|
33
|
-
for (const cid of storage.blocks.cids()) {
|
|
34
|
-
expect(allCids.has(cid)).toBeTruthy()
|
|
35
|
-
}
|
|
36
|
-
})
|
|
37
|
-
})
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import * as crypto from '@atproto/crypto'
|
|
2
|
-
import { CidSet, Repo, RepoContents, RepoVerificationError } from '../../src'
|
|
3
|
-
import { MemoryBlockstore } from '../../src/storage'
|
|
4
|
-
import * as sync from '../../src/sync'
|
|
5
|
-
|
|
6
|
-
import * as util from '../_util'
|
|
7
|
-
import { streamToBuffer } from '@atproto/common'
|
|
8
|
-
import { CarReader } from '@ipld/car/reader'
|
|
9
|
-
|
|
10
|
-
describe('Checkout Sync', () => {
|
|
11
|
-
let storage: MemoryBlockstore
|
|
12
|
-
let syncStorage: MemoryBlockstore
|
|
13
|
-
let repo: Repo
|
|
14
|
-
let keypair: crypto.Keypair
|
|
15
|
-
let repoData: RepoContents
|
|
16
|
-
|
|
17
|
-
const repoDid = 'did:example:test'
|
|
18
|
-
|
|
19
|
-
beforeAll(async () => {
|
|
20
|
-
storage = new MemoryBlockstore()
|
|
21
|
-
keypair = await crypto.Secp256k1Keypair.create()
|
|
22
|
-
repo = await Repo.create(storage, repoDid, keypair)
|
|
23
|
-
syncStorage = new MemoryBlockstore()
|
|
24
|
-
const filled = await util.fillRepo(repo, keypair, 20)
|
|
25
|
-
repo = filled.repo
|
|
26
|
-
repoData = filled.data
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
it('sync a non-historical repo checkout', async () => {
|
|
30
|
-
const checkoutCar = await streamToBuffer(
|
|
31
|
-
sync.getCheckout(storage, repo.cid),
|
|
32
|
-
)
|
|
33
|
-
const checkout = await sync.loadCheckout(
|
|
34
|
-
syncStorage,
|
|
35
|
-
checkoutCar,
|
|
36
|
-
repoDid,
|
|
37
|
-
keypair.did(),
|
|
38
|
-
)
|
|
39
|
-
const checkoutRepo = await Repo.load(syncStorage, checkout.root)
|
|
40
|
-
const contents = await checkoutRepo.getContents()
|
|
41
|
-
expect(contents).toEqual(repoData)
|
|
42
|
-
expect(checkout.contents).toEqual(repoData)
|
|
43
|
-
})
|
|
44
|
-
|
|
45
|
-
it('does not sync unneeded blocks during checkout', async () => {
|
|
46
|
-
const commitPath = await storage.getCommitPath(repo.cid, null)
|
|
47
|
-
if (!commitPath) {
|
|
48
|
-
throw new Error('Could not get commitPath')
|
|
49
|
-
}
|
|
50
|
-
const hasGenesisCommit = await syncStorage.has(commitPath[0])
|
|
51
|
-
expect(hasGenesisCommit).toBeFalsy()
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
it('does not sync duplicate blocks', async () => {
|
|
55
|
-
const carBytes = await streamToBuffer(sync.getCheckout(storage, repo.cid))
|
|
56
|
-
const car = await CarReader.fromBytes(carBytes)
|
|
57
|
-
const cids = new CidSet()
|
|
58
|
-
for await (const block of car.blocks()) {
|
|
59
|
-
if (cids.has(block.cid)) {
|
|
60
|
-
throw new Error(`duplicate block: :${block.cid.toString()}`)
|
|
61
|
-
}
|
|
62
|
-
cids.add(block.cid)
|
|
63
|
-
}
|
|
64
|
-
})
|
|
65
|
-
|
|
66
|
-
it('throws on a bad signature', async () => {
|
|
67
|
-
const badRepo = await util.addBadCommit(repo, keypair)
|
|
68
|
-
const checkoutCar = await streamToBuffer(
|
|
69
|
-
sync.getCheckout(storage, badRepo.cid),
|
|
70
|
-
)
|
|
71
|
-
await expect(
|
|
72
|
-
sync.loadCheckout(syncStorage, checkoutCar, repoDid, keypair.did()),
|
|
73
|
-
).rejects.toThrow(RepoVerificationError)
|
|
74
|
-
})
|
|
75
|
-
})
|
package/tests/sync/diff.test.ts
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import * as crypto from '@atproto/crypto'
|
|
2
|
-
import { Repo, RepoContents } from '../../src'
|
|
3
|
-
import { MemoryBlockstore } from '../../src/storage'
|
|
4
|
-
import * as sync from '../../src/sync'
|
|
5
|
-
|
|
6
|
-
import * as util from '../_util'
|
|
7
|
-
import { streamToBuffer } from '@atproto/common'
|
|
8
|
-
|
|
9
|
-
describe('Diff Sync', () => {
|
|
10
|
-
let storage: MemoryBlockstore
|
|
11
|
-
let syncStorage: MemoryBlockstore
|
|
12
|
-
let repo: Repo
|
|
13
|
-
let keypair: crypto.Keypair
|
|
14
|
-
let repoData: RepoContents
|
|
15
|
-
|
|
16
|
-
const repoDid = 'did:example:test'
|
|
17
|
-
|
|
18
|
-
beforeAll(async () => {
|
|
19
|
-
storage = new MemoryBlockstore()
|
|
20
|
-
keypair = await crypto.Secp256k1Keypair.create()
|
|
21
|
-
repo = await Repo.create(storage, repoDid, keypair)
|
|
22
|
-
syncStorage = new MemoryBlockstore()
|
|
23
|
-
})
|
|
24
|
-
|
|
25
|
-
let syncRepo: Repo
|
|
26
|
-
|
|
27
|
-
it('syncs an empty repo', async () => {
|
|
28
|
-
const car = await streamToBuffer(sync.getFullRepo(storage, repo.cid))
|
|
29
|
-
const loaded = await sync.loadFullRepo(
|
|
30
|
-
syncStorage,
|
|
31
|
-
car,
|
|
32
|
-
repoDid,
|
|
33
|
-
keypair.did(),
|
|
34
|
-
)
|
|
35
|
-
syncRepo = await Repo.load(syncStorage, loaded.root)
|
|
36
|
-
const data = await syncRepo.data.list(10)
|
|
37
|
-
expect(data.length).toBe(0)
|
|
38
|
-
})
|
|
39
|
-
|
|
40
|
-
it('syncs a repo that is starting from scratch', async () => {
|
|
41
|
-
const filled = await util.fillRepo(repo, keypair, 100)
|
|
42
|
-
repo = filled.repo
|
|
43
|
-
repoData = filled.data
|
|
44
|
-
|
|
45
|
-
const car = await streamToBuffer(sync.getFullRepo(storage, repo.cid))
|
|
46
|
-
const loaded = await sync.loadFullRepo(
|
|
47
|
-
syncStorage,
|
|
48
|
-
car,
|
|
49
|
-
repoDid,
|
|
50
|
-
keypair.did(),
|
|
51
|
-
)
|
|
52
|
-
syncRepo = await Repo.load(syncStorage, loaded.root)
|
|
53
|
-
const contents = await syncRepo.getContents()
|
|
54
|
-
expect(contents).toEqual(repoData)
|
|
55
|
-
await util.verifyRepoDiff(loaded.writeLog, {}, repoData)
|
|
56
|
-
})
|
|
57
|
-
|
|
58
|
-
it('syncs a repo that is behind', async () => {
|
|
59
|
-
// add more to providers's repo & have consumer catch up
|
|
60
|
-
const beforeData = structuredClone(repoData)
|
|
61
|
-
const edited = await util.editRepo(repo, repoData, keypair, {
|
|
62
|
-
adds: 20,
|
|
63
|
-
updates: 20,
|
|
64
|
-
deletes: 20,
|
|
65
|
-
})
|
|
66
|
-
repo = edited.repo
|
|
67
|
-
repoData = edited.data
|
|
68
|
-
const diffCar = await streamToBuffer(
|
|
69
|
-
sync.getCommits(storage, repo.cid, syncRepo.cid),
|
|
70
|
-
)
|
|
71
|
-
const loaded = await sync.loadDiff(
|
|
72
|
-
syncRepo,
|
|
73
|
-
diffCar,
|
|
74
|
-
repoDid,
|
|
75
|
-
keypair.did(),
|
|
76
|
-
)
|
|
77
|
-
syncRepo = await Repo.load(syncStorage, loaded.root)
|
|
78
|
-
const contents = await syncRepo.getContents()
|
|
79
|
-
expect(contents).toEqual(repoData)
|
|
80
|
-
await util.verifyRepoDiff(loaded.writeLog, beforeData, repoData)
|
|
81
|
-
})
|
|
82
|
-
|
|
83
|
-
it('throws on a bad signature', async () => {
|
|
84
|
-
const badRepo = await util.addBadCommit(repo, keypair)
|
|
85
|
-
const diffCar = await streamToBuffer(
|
|
86
|
-
sync.getCommits(storage, badRepo.cid, syncRepo.cid),
|
|
87
|
-
)
|
|
88
|
-
await expect(
|
|
89
|
-
sync.loadDiff(syncRepo, diffCar, repoDid, keypair.did()),
|
|
90
|
-
).rejects.toThrow('Invalid signature on commit')
|
|
91
|
-
})
|
|
92
|
-
})
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.esnext.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/typescript/lib/lib.webworker.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/zod/lib/helpers/typealiases.d.ts","../../node_modules/zod/lib/helpers/util.d.ts","../../node_modules/zod/lib/zoderror.d.ts","../../node_modules/zod/lib/locales/en.d.ts","../../node_modules/zod/lib/errors.d.ts","../../node_modules/zod/lib/helpers/parseutil.d.ts","../../node_modules/zod/lib/helpers/enumutil.d.ts","../../node_modules/zod/lib/helpers/errorutil.d.ts","../../node_modules/zod/lib/helpers/partialutil.d.ts","../../node_modules/zod/lib/types.d.ts","../../node_modules/zod/lib/external.d.ts","../../node_modules/zod/lib/index.d.ts","../../node_modules/zod/index.d.ts","../nsid/src/index.ts","../common-web/src/check.ts","../common-web/src/util.ts","../common-web/src/async.ts","../common-web/src/tid.ts","../../node_modules/multiformats/types/src/bases/interface.d.ts","../../node_modules/multiformats/types/src/hashes/interface.d.ts","../../node_modules/multiformats/types/src/cid.d.ts","../../node_modules/uint8arrays/types/src/compare.d.ts","../../node_modules/uint8arrays/types/src/concat.d.ts","../../node_modules/uint8arrays/types/src/equals.d.ts","../../node_modules/multiformats/types/src/bases/base.d.ts","../../node_modules/uint8arrays/types/src/util/bases.d.ts","../../node_modules/uint8arrays/types/src/from-string.d.ts","../../node_modules/uint8arrays/types/src/to-string.d.ts","../../node_modules/uint8arrays/types/src/xor.d.ts","../../node_modules/uint8arrays/types/src/index.d.ts","../common-web/src/ipld.ts","../common-web/src/types.ts","../common-web/src/times.ts","../../node_modules/graphemer/lib/graphemeriterator.d.ts","../../node_modules/graphemer/lib/graphemer.d.ts","../../node_modules/graphemer/lib/index.d.ts","../common-web/src/strings.ts","../common-web/src/index.ts","../identifier/src/reserved.ts","../identifier/src/handle.ts","../identifier/src/did.ts","../identifier/src/index.ts","../uri/src/validation.ts","../uri/src/index.ts","../../node_modules/iso-datestring-validator/dist/is-valid-date/is-valid-date.function.d.ts","../../node_modules/iso-datestring-validator/dist/is-valid-iso-datestring/is-valid-iso-datestring.function.d.ts","../../node_modules/iso-datestring-validator/dist/is-valid-time/is-valid-time.function.d.ts","../../node_modules/iso-datestring-validator/dist/is-valid-year-month/is-valid-year-month.function.d.ts","../../node_modules/iso-datestring-validator/dist/index.d.ts","../lexicon/src/validators/formats.ts","../lexicon/src/validators/primitives.ts","../lexicon/src/blob-refs.ts","../lexicon/src/validators/blob.ts","../lexicon/src/validators/complex.ts","../lexicon/src/validators/xrpc.ts","../lexicon/src/validation.ts","../lexicon/src/lexicons.ts","../lexicon/src/util.ts","../lexicon/src/types.ts","../lexicon/src/serialize.ts","../lexicon/src/index.ts","../common/src/fs.ts","../../node_modules/multiformats/types/src/hashes/digest.d.ts","../../node_modules/multiformats/types/src/hashes/hasher.d.ts","../../node_modules/multiformats/types/src/varint.d.ts","../../node_modules/multiformats/types/src/bytes.d.ts","../../node_modules/multiformats/types/src/index.d.ts","../../node_modules/multiformats/types/src/codecs/interface.d.ts","../../node_modules/multiformats/types/src/block.d.ts","../../node_modules/multiformats/types/src/codecs/raw.d.ts","../../node_modules/multiformats/types/src/hashes/sha2.d.ts","../../node_modules/@ipld/dag-cbor/types/index.d.ts","../common/src/ipld.ts","../../node_modules/cbor-x/index.d.ts","../common/src/ipld-multi.ts","../../node_modules/@types/node/ts4.8/assert.d.ts","../../node_modules/@types/node/ts4.8/assert/strict.d.ts","../../node_modules/@types/node/ts4.8/globals.d.ts","../../node_modules/@types/node/ts4.8/async_hooks.d.ts","../../node_modules/@types/node/ts4.8/buffer.d.ts","../../node_modules/@types/node/ts4.8/child_process.d.ts","../../node_modules/@types/node/ts4.8/cluster.d.ts","../../node_modules/@types/node/ts4.8/console.d.ts","../../node_modules/@types/node/ts4.8/constants.d.ts","../../node_modules/@types/node/ts4.8/crypto.d.ts","../../node_modules/@types/node/ts4.8/dgram.d.ts","../../node_modules/@types/node/ts4.8/diagnostics_channel.d.ts","../../node_modules/@types/node/ts4.8/dns.d.ts","../../node_modules/@types/node/ts4.8/dns/promises.d.ts","../../node_modules/@types/node/ts4.8/domain.d.ts","../../node_modules/@types/node/ts4.8/dom-events.d.ts","../../node_modules/@types/node/ts4.8/events.d.ts","../../node_modules/@types/node/ts4.8/fs.d.ts","../../node_modules/@types/node/ts4.8/fs/promises.d.ts","../../node_modules/@types/node/ts4.8/http.d.ts","../../node_modules/@types/node/ts4.8/http2.d.ts","../../node_modules/@types/node/ts4.8/https.d.ts","../../node_modules/@types/node/ts4.8/inspector.d.ts","../../node_modules/@types/node/ts4.8/module.d.ts","../../node_modules/@types/node/ts4.8/net.d.ts","../../node_modules/@types/node/ts4.8/os.d.ts","../../node_modules/@types/node/ts4.8/path.d.ts","../../node_modules/@types/node/ts4.8/perf_hooks.d.ts","../../node_modules/@types/node/ts4.8/process.d.ts","../../node_modules/@types/node/ts4.8/punycode.d.ts","../../node_modules/@types/node/ts4.8/querystring.d.ts","../../node_modules/@types/node/ts4.8/readline.d.ts","../../node_modules/@types/node/ts4.8/readline/promises.d.ts","../../node_modules/@types/node/ts4.8/repl.d.ts","../../node_modules/@types/node/ts4.8/stream.d.ts","../../node_modules/@types/node/ts4.8/stream/promises.d.ts","../../node_modules/@types/node/ts4.8/stream/consumers.d.ts","../../node_modules/@types/node/ts4.8/stream/web.d.ts","../../node_modules/@types/node/ts4.8/string_decoder.d.ts","../../node_modules/@types/node/ts4.8/test.d.ts","../../node_modules/@types/node/ts4.8/timers.d.ts","../../node_modules/@types/node/ts4.8/timers/promises.d.ts","../../node_modules/@types/node/ts4.8/tls.d.ts","../../node_modules/@types/node/ts4.8/trace_events.d.ts","../../node_modules/@types/node/ts4.8/tty.d.ts","../../node_modules/@types/node/ts4.8/url.d.ts","../../node_modules/@types/node/ts4.8/util.d.ts","../../node_modules/@types/node/ts4.8/v8.d.ts","../../node_modules/@types/node/ts4.8/vm.d.ts","../../node_modules/@types/node/ts4.8/wasi.d.ts","../../node_modules/@types/node/ts4.8/worker_threads.d.ts","../../node_modules/@types/node/ts4.8/zlib.d.ts","../../node_modules/@types/node/ts4.8/globals.global.d.ts","../../node_modules/@types/node/ts4.8/index.d.ts","../../node_modules/pino-abstract-transport/index.d.ts","../../node_modules/pino-pretty/index.d.ts","../../node_modules/pino-std-serializers/index.d.ts","../../node_modules/sonic-boom/types/index.d.ts","../../node_modules/pino/pino.d.ts","../common/src/logger.ts","../common/src/streams.ts","../common/src/index.ts","./src/block-map.ts","./src/cid-set.ts","./src/error.ts","../../node_modules/@ipld/car/types/api.d.ts","../../node_modules/@ipld/car/types/lib/coding.d.ts","../../node_modules/@ipld/car/types/lib/reader-browser.d.ts","../../node_modules/@ipld/car/types/lib/reader.d.ts","../../node_modules/@ipld/car/types/lib/writer-browser.d.ts","../../node_modules/@ipld/car/types/lib/writer.d.ts","../crypto/src/const.ts","../../node_modules/@noble/curves/abstract/utils.d.ts","../../node_modules/@noble/curves/abstract/modular.d.ts","../../node_modules/@noble/curves/abstract/curve.d.ts","../../node_modules/@noble/curves/abstract/weierstrass.d.ts","../../node_modules/@noble/curves/abstract/hash-to-curve.d.ts","../../node_modules/@noble/curves/p256.d.ts","../crypto/src/p256/encoding.ts","../../node_modules/@noble/curves/secp256k1.d.ts","../crypto/src/secp256k1/encoding.ts","../../node_modules/@noble/hashes/utils.d.ts","../../node_modules/@noble/hashes/_sha2.d.ts","../../node_modules/@noble/hashes/sha256.d.ts","../crypto/src/p256/operations.ts","../crypto/src/types.ts","../crypto/src/p256/plugin.ts","../crypto/src/secp256k1/operations.ts","../crypto/src/secp256k1/plugin.ts","../crypto/src/plugins.ts","../crypto/src/did.ts","../crypto/src/multibase.ts","../crypto/src/sha.ts","../crypto/src/random.ts","../crypto/src/verify.ts","../crypto/src/p256/keypair.ts","../crypto/src/secp256k1/keypair.ts","../crypto/src/index.ts","./src/types.ts","./src/logger.ts","./src/readable-repo.ts","./src/repo.ts","./src/util.ts","./src/parse.ts","./src/storage/readable-blockstore.ts","./src/storage/repo-storage.ts","./src/storage/memory-blockstore.ts","./src/storage/sync-storage.ts","./src/storage/types.ts","./src/storage/index.ts","./src/mst/util.ts","./src/mst/mst.ts","./src/mst/walker.ts","./src/mst/diff.ts","./src/mst/index.ts","./src/data-diff.ts","./src/verify.ts","./src/sync/consumer.ts","./src/sync/provider.ts","./src/sync/index.ts","./src/index.ts","../../node_modules/@babel/types/lib/index.d.ts","../../node_modules/@types/babel__generator/index.d.ts","../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../node_modules/@types/babel__template/index.d.ts","../../node_modules/@types/babel__traverse/index.d.ts","../../node_modules/@types/babel__core/index.d.ts","../../node_modules/@types/bn.js/index.d.ts","../../node_modules/@types/connect/index.d.ts","../../node_modules/@types/body-parser/index.d.ts","../../node_modules/@types/cors/index.d.ts","../../node_modules/@types/elliptic/index.d.ts","../../node_modules/@types/range-parser/index.d.ts","../../node_modules/@types/qs/index.d.ts","../../node_modules/@types/express-serve-static-core/index.d.ts","../../node_modules/@types/mime/mime.d.ts","../../node_modules/@types/mime/index.d.ts","../../node_modules/@types/serve-static/index.d.ts","../../node_modules/@types/express/index.d.ts","../../node_modules/@types/graceful-fs/index.d.ts","../../node_modules/@types/http-errors/index.d.ts","../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../node_modules/@types/istanbul-lib-report/index.d.ts","../../node_modules/@types/istanbul-reports/index.d.ts","../../node_modules/@jest/expect-utils/build/index.d.ts","../../node_modules/chalk/index.d.ts","../../node_modules/@sinclair/typebox/typebox.d.ts","../../node_modules/@jest/schemas/build/index.d.ts","../../node_modules/pretty-format/build/index.d.ts","../../node_modules/jest-diff/build/index.d.ts","../../node_modules/jest-matcher-utils/build/index.d.ts","../../node_modules/expect/build/index.d.ts","../../node_modules/@types/jest/index.d.ts","../../node_modules/@types/json-schema/index.d.ts","../../node_modules/@types/jsonwebtoken/index.d.ts","../../node_modules/@types/minimatch/index.d.ts","../../node_modules/@types/minimist/index.d.ts","../../node_modules/@types/nodemailer/lib/dkim/index.d.ts","../../node_modules/@types/nodemailer/lib/mailer/mail-message.d.ts","../../node_modules/@types/nodemailer/lib/xoauth2/index.d.ts","../../node_modules/@types/nodemailer/lib/mailer/index.d.ts","../../node_modules/@types/nodemailer/lib/mime-node/index.d.ts","../../node_modules/@types/nodemailer/lib/smtp-connection/index.d.ts","../../node_modules/@types/nodemailer/lib/shared/index.d.ts","../../node_modules/@types/nodemailer/lib/json-transport/index.d.ts","../../node_modules/@types/nodemailer/lib/sendmail-transport/index.d.ts","../../node_modules/@types/nodemailer/lib/ses-transport/index.d.ts","../../node_modules/@types/nodemailer/lib/smtp-pool/index.d.ts","../../node_modules/@types/nodemailer/lib/smtp-transport/index.d.ts","../../node_modules/@types/nodemailer/lib/stream-transport/index.d.ts","../../node_modules/@types/nodemailer/index.d.ts","../../node_modules/@types/normalize-package-data/index.d.ts","../../node_modules/@types/parse-json/index.d.ts","../../node_modules/pg-types/index.d.ts","../../node_modules/pg-protocol/dist/messages.d.ts","../../node_modules/pg-protocol/dist/serializer.d.ts","../../node_modules/pg-protocol/dist/parser.d.ts","../../node_modules/pg-protocol/dist/index.d.ts","../../node_modules/@types/pg/index.d.ts","../../node_modules/@types/prettier/index.d.ts","../../node_modules/@types/sharp/index.d.ts","../../node_modules/@types/stack-utils/index.d.ts","../../node_modules/@types/ws/index.d.ts","../../node_modules/@types/yargs-parser/index.d.ts","../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f20c05dbfe50a208301d2a1da37b9931bce0466eb5a1f4fe240971b4ecc82b67","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9","746d62152361558ea6d6115cf0da4dd10ede041d14882ede3568bce5dc4b4f1f","d11a03592451da2d1065e09e61f4e2a9bf68f780f4f6623c18b57816a9679d17","aea179452def8a6152f98f63b191b84e7cbd69b0e248c91e61fb2e52328abe8c",{"version":"9b087de7268e4efc5f215347a62656663933d63c0b1d7b624913240367b999ea","affectsGlobalScope":true},{"version":"3260e3386d9535b804205bdddb5618a9a27735bd22927f48ad54363abcd23d45","affectsGlobalScope":true},{"version":"adb09ec0a64fc17dbbc4a228b3b18aa5f01db3440a6b0cbb02354df58674d584","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"55f400eec64d17e888e278f4def2f254b41b89515d3b88ad75d5e05f019daddd","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"775d9c9fd150d5de79e0450f35bc8b8f94ae64e3eb5da12725ff2a649dccc777","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"6c55633c733c8378db65ac3da7a767c3cf2cf3057f0565a9124a16a3a2019e87","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"34c839eaaa6d78c8674ae2c37af2236dee6831b13db7b4ef4df3ec889a04d4f2","affectsGlobalScope":true},{"version":"34478567f8a80171f88f2f30808beb7da15eac0538ae91282dd33dce928d98ed","affectsGlobalScope":true},{"version":"ab7d58e6161a550ff92e5aff755dc37fe896245348332cd5f1e1203479fe0ed1","affectsGlobalScope":true},{"version":"6bda95ea27a59a276e46043b7065b55bd4b316c25e70e29b572958fa77565d43","affectsGlobalScope":true},{"version":"aedb8de1abb2ff1095c153854a6df7deae4a5709c37297f9d6e9948b6806fa66","affectsGlobalScope":true},{"version":"a4da0551fd39b90ca7ce5f68fb55d4dc0c1396d589b612e1902f68ee090aaada","affectsGlobalScope":true},{"version":"11ffe3c281f375fff9ffdde8bbec7669b4dd671905509079f866f2354a788064","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"5487b97cfa28b26b4a9ef0770f872bdbebd4c46124858de00f242c3eed7519f4","7a01f546ace66019156e4232a1bee2fabc2f8eabeb052473d926ee1693956265","fb53b1c6a6c799b7e3cc2de3fb5c9a1c04a1c60d4380a37792d84c5f8b33933b","8485b6da53ec35637d072e516631d25dae53984500de70a6989058f24354666f","ebe80346928736532e4a822154eb77f57ef3389dbe2b3ba4e571366a15448ef2","c2cb3c8ff388781258ea9ddbcd8a947f751bddd6886e1d3b3ea09ddaa895df80","f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","98a9cc18f661d28e6bd31c436e1984f3980f35e0f0aa9cf795c54f8ccb667ffe","c76b0c5727302341d0bdfa2cc2cee4b19ff185b554edb6e8543f0661d8487116","19903057d0249e45c579bef2b771c37609e4853a8b88adbb0b6b63f9e1d1f372","f5ef066942e4f0bd98200aa6a6694b831e73200c9b3ade77ad0aa2409e8fe1b1","b9e99cd94f4166a245f5158f7286c05406e2a4c694619bceb7a4f3519d1d768e","5568d7c32e5cf5f35e092649f4e5e168c3114c800b1d7545b7ae5e0415704802","d4e48a50f33cfdf5e5480849afd0462e43e2860b5dcf758f9a58487651d48a57","2eac0c94868a313867d229d227285d116b05dda41fe5540057fef78effe2ad5a","164cc5d22b4a28b195d3102f440b8446116ef0657fa1d5cf0343c4daf586bb73","0158f65dd661b1917cabf88db0753f9e054b4d0e242893ef1273cafd59bd6a5e","2ebb0df55a1828c9b4954ccc27ffb2d48a8b343f31e68d74265c2afad331c8de","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","5d3e07dbeabff37885262d9b4bd21c3185d95a09a268ab795f81135046a32bf4","7d309fbde13b5e30eff77c07a28b66451b0b50b83564d0cfa6a2a52c8b69aae6","90cf3b12cd05d01c42193be1cd25af2c8dbef608ae143e5eaacf73cdb99840d2","4e37a214f2cd5a350affba5580d1d7c01ca83da6393ef2c13a66d74fc7b95eac","3157fa89ebde7e5d5499da49d8ae13e523c1de12d5c1285251c17b7672887b1e","729b819a6779d842c3a6908ba4ed93d9fe50e2533d989f05f55a4811b3dd9910","e47d9ea931ddade1deee3946884e8dc7aafbf4af74f9ecb85ef77c895100bd39","0841c3aed9354ad025302d5c7cde53916825047646e559d918b62a31500aebe7","7c515715da56f17e695e2c3611cf073d2cebfd417497652b35f9042b7235d5b2","a4942fc385f0368be5a50d7e7280c5c6ad47b082a9eaa0284042c89ce2df9e08","91072b0ddd41ce84a3c85f36cf927f2e7b1724f7ce71accf16715d99bafc113a","68927171b834eaccf92e5d7cfcd70f837b2f23415e95a0a474b4ed39acd3b190","041fc48f8e494a20975cb09760b3329dd20a9bf9b30a005bea5388035d58cb86","cef9f120bb3c8fa482010add8056cd37b279a1588f583c36ff48bf898af3305e","12d843cd781a162fe691c4ec7fecb615e7314833d857300f0221cf7738373835","6916623e037f249c736693584bc79009c70b92debb4997cedbf9c82475bf6f57","6e4f34b9b8e1870373f35117b7a45f7438712bcd473ba30a01748999ccf104e9","095e4a36318cdc81369b6b7a311123f1aa654a6d450acb4b33e94877f0c218b1","cf4eca11030b5f9ec3937e21b77dbc074a777930daab31e81c9497b4032af2b9","3427489aee752759c7683018993ca681c8635e8b2b6fc6a4219f0e80c5b43583","e2c6ed5a413803bb1bb69682da20f790df16c161bb8ba8a14d5c093318e9b232","3b517cf900c258d29107284d5a63e41f6c0cb053bc3d80903b40299cb2124f7d","86f581a7081d39ce5ca401cebc27cf521ac6814d4751ab2431628b508bbd42bf","38c30bde16d1745f093865f4a31b2a50946c672fca3b5e0bad80c91e0342ba98","c25cbf6880557c1dc347b2180fee88703b2afcd6427788a446a7b8d41f885ecf","d0a24e00653be2a93b83449af73d3dfdecd6d80e67ea2d600d81e2ba40f43558","d0cfa8040af641c79e548c12c1ad91ef0cb5bd09146b6f630959931594f43d3b","3f1647fae43442e77958d732c6680060fe420bfd38f8b8c9273bc7c57e0b29ef","9073a0de3bb3da4da39a57c03369283866c50bb7476c1dc238ef4c3e267fb9b5","d56436ff9eaaf3ad8755d6605b25d0a632bb0c72102f2fac80342a42323384e8","b91670b2f11ea83de3af5ff2ff0799ae90f535eca1c7c897a4130c586b908763","46271b051d5295b55550f57a6b88756a3fd62464eeff5f14967484a6d7e5925a","a952889d3f903a3b81c461553ee7cba0aef5cd6c07ee7c19555921b060c3e278","284c08a0472ec3e784dd5425c8e5ad492538eab344d0181bdc11de0039d00a62","408d5512547a2ea96ba9ad94794292eb4ca2df61adb642588fd2b3f9081c573f","09108e84d17bf3d9c27d8425d02d7fc792d745ea56819d9ef1824b1466ef7899","3379180ffc10e9e4266552e85f0d9d5c3f91f83ebeba74cbf20e455aff5a6a4e","b36786a6a9a46aeb178fe212379be5c7d395328d8648f0c3cddc75c7f8b98ff8","d9208a2f5b99acb5ab5f4d65c9dd3e48877ca5c7bf830d47b68925f26e521614","1f41c6a2208de55bc7f4b9c75dc003e6b5d2a592b411e69387879c34cbb9e60c","f9504071cbaadb1ffbf236a1a4740f4d7711ee0b19acce20c2e1ab05b09e767f","18bb8183f7b99634111b309a592c828b42fe79f1015a19864042cbed2c4a7907","414bbfcb7cbe0e523d6a782cc433e6e84c02285efc8cccfd8c8a543182a448de","853c5447ea8851049c1d008e130d23030d9fe3b5a8405a0ae7e55b00e173692d","ba0b552579e1bbafd93208f9bc84a61838148bd17f22a8ea55c46eea9c895e7a","87b44430497cae7542bbd5ac2fb6663df6a465dea7a46be58a49cd9416530439","32b67d761db3999f1e482d0add405b695d3ec5607e07ae4c963a96334c331814","1428847d803b8342711c0b22208df4f83590cce15ef2c8f36ba53cea24f4616d","6bea75e2b9873f7c123ffef3edf16e7c49ff7cefd2756543d51786fb354c3211","ebb7adfc90de5d2001075bfc4b8e2530c7649d1cd219d75589b45cba22d06782","7b684ae75736b26fddc21144deda04c3ae391f95f8eb241ceb23b27096f76963","2f686fbec43c87bc9b9c3d0e237f780e0e822d2c3a9a25fc99a16030a294b764","2cb05bc199aa0aedcedced658aa99b423c2f7e56f11bd301adb6415e8c464696","86d9d09e43ca251e14a43cec731bca0458adf1775b00129d095c58a4a9972dad","5700bec2d07017bf20dd1790f6cf75afedac77f72ae3f30734d183199bec5b21","9e36f4def5f57b523d9fa08e2d7d061fb9c35aecb792951b5cb1a4cafd171ad6","7e771891adaa85b690266bc37bd6eb43bc57eecc4b54693ead36467e7369952a","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"02873d070f9cb79f50833fbf4a9a27ac578a2edf8ddb8421eba1b37faba83bfb","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"c0db280fa6b09d7b8d6720a19a47f485956a41ee0e6914f1b704033eb69c6058","affectsGlobalScope":true},"0c0cee62cb619aed81133b904f644515ba3064487002a7da83fd8aa07b1b4abd","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","afcc1c426b76db7ec80e563d4fb0ba9e6bcc6e63c2d7e9342e649dc56d26347f","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","489532ff54b714f0e0939947a1c560e516d3ae93d51d639ab02e907a0e950114","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},{"version":"816ad2e607a96de5bcac7d437f843f5afd8957f1fa5eefa6bba8e4ed7ca8fd84","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","d903fafe96674bc0b2ac38a5be4a8fc07b14c2548d1cdb165a80ea24c44c0c54","b01a80007e448d035a16c74b5c95a5405b2e81b12fabcf18b75aa9eb9ef28990","04eb6578a588d6a46f50299b55f30e3a04ef27d0c5a46c57d8fcc211cd530faa","dbe5aa5a5dd8bd1c6a8d11b1310c3f0cdabaacc78a37b394a8c7b14faeb5fb84","2c828a5405191d006115ab34e191b8474bc6c86ffdc401d1a9864b1b6e088a58",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"d4ac44f01d42f541631c5fc88d0ed8efac29a3a3ad9a745d9fd58f8b61ed132e","7c013aa892414a7fdcfd861ae524a668eaa3ede8c7c0acafaf611948122c8d93","b0973c3cbcdc59b37bf477731d468696ecaf442593ec51bab497a613a580fe30",{"version":"4989e92ba5b69b182d2caaea6295af52b7dc73a4f7a2e336a676722884e7139d","affectsGlobalScope":true},{"version":"b3624aed92dab6da8484280d3cb3e2f4130ec3f4ef3f8201c95144ae9e898bb6","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","210d54cd652ec0fec8c8916e4af59bb341065576ecda039842f9ffb2e908507c","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","3163f47436da41706c6e2b3c1511f3b7cce9f9f3905b2f3e01246c48b4ba7d14","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","69ee23dd0d215b09907ad30d23f88b7790c93329d1faf31d7835552a10cf7cbf","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","213fc4f2b172d8beb74b77d7c1b41488d67348066d185e4263470cbb010cd6e8",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","4c8525f256873c7ba3135338c647eaf0ca7115a1a2805ae2d0056629461186ce","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"f0900cd5d00fe1263ff41201fb8073dbeb984397e4af3b8002a5c207a30bdc33","affectsGlobalScope":true},{"version":"f7db71191aa7aac5d6bc927ed6e7075c2763d22c7238227ec0c63c8cf5cb6a8b","affectsGlobalScope":true},"06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa",{"version":"da26af7362f53d122283bc69fed862b9a9fe27e01bc6a69d1d682e0e5a4df3e6","affectsGlobalScope":true},"8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"652ee9c5103e89102d87bc20d167a02a0e3e5e53665674466c8cfea8a9e418c7","0d47fc0aed3e69968b3e168c4f2afba7f02fe81b7d40f34c5fbe4c8ed14222ac","955081e7442259cc2cbf0f7f122bc2fa10387c3c5298a8bd4cd402dbcefce4cf","043e933c8127f2215f940035bfac94354b82a49f419bb77af0045f0c57e6a05e","9d9f4da63084ac107eddda8b4ea92d7ee443e0c86601e8c844943b82fd3ef6f8","bde15a4b72e85c0816548fe37f82ae6fe9a6238e5b60ebe9a9449f9293e2d456","dacf98eb56a73c300285659e07ecc8ca9289c99a506e94ad9685d4728cc1561a","9a7013ab5645b17c715281600606b7107e3139b89e2f861b79565a0632ddcb9d","e677c6eb2bc3f6453afcf0f198e319448e42508ceae8d5a120e4320e9695bf91",{"version":"85c3c3100a025a18fa0d96d41d2ece17d03b3d24e5d6654ec56adcb1648c9ec5","signature":"fb161978bd818122b6cd023f0f1fa8a93ee1601f798516a11991dae9accbbb7f"},{"version":"584c4be65261db0ea0c1f48d01fc8a9b33ff27a81280b2b37755106fa631fdb1","signature":"2f1b2df4cfc93709cfb32ff94a3b1ba48c20b0cde6458342be96062473a4fae5"},{"version":"d1a17975e0b0b664d94895198f84ee20cd06e3ad33402b389f79e709732a6ae4","signature":"bd744ce332ffd02be7445dac59ff2e2bb13d7da12a4c40aeeb75c42f10982d42"},"30d9b4052cd71f8f90cc5d3205950539d27f49803676ec13d4e5b1dd58733c2f","a6006cdf560a2b722ca2943c7ba5429eb2b61389dc89889315d77c5980b1b3a1","5ad9fe68a14e80eb7c761ee5c22a1aaedf37e1109cff3e49eee2da4f75e38a50","3e434e0f832573b4e40417408a7f82a3aca2a651912626986828bcfcb3f4aab5","e000fe1ac81a9dd7ed058ee62fc4b8d523b71122cb144045d05630bf751c75ee","75aa316561ed73fbc9679e62f4e3cfc3285e1dd04637016ce3990e5fe13957f3","b86a270598e5424a18bffef7ceadb47d90cba86f0c38e9dfe830cee5b3bc86ec","1253b8e9b5c56f9d301ebb1370d2bb427f66132a51e8b6716af6f665dc200c07","21920ee9ec85cc0591d16e4f45bffdcfc64b6bd62e59896036730f330e267db3","d0b3609e8e7afed0fd0570152255458407e67249b94f6603afdfd68599423f21","51f039379b8f5c5c68137e8387682982aefd8c3e4bc6d7ddfdb2c4fdd949a87a","0f4154a3ba7d3fc454ca43c94c286ef178eb21cf7e74056fd263811253ba1f6a","0abe52fb9f112becef29400328d7b18267acb82f3189ac79a514a790fc42513c","5364d9a8ca9001bd547e6ebdbf8f4669d77fcaa915853c0f18d53b4230bb4890","7b4d6ac7d8eeb705af896d6a0262e928a9da37853964d6200e582d9c91400dc3","f848e2bb3ac9cd397d65b90c6d4f079bea33e9adc5eaef56941f35d83af63305","3c3ca314a2b01902ef19b499be6e052925a849f14e2d9185afb323df3d3a72b6","1e7146a407bf85762b80681cd4aa3b544000e30c9b24d04685dfa69f82a48fd9","a3c42863fed9b49c35144d60aa0b2865b5fede65ea0050a28f45381af6dae035","638435a8fcd108eac7a717fb79ff5a955c9db334a04b518f5722985bcbf5282e","8748195866b57fd35a9fc67f04a5086ee19e0d46f6ee197d87e77a7d475a85af","ec824e6f76dce81ea30941d11a6143a32fdce3d8a82cbf8f889c34c4874a0d0e","9f37eb594c8db551dbf57fa50166b0fd4f50dbfd876ee1d60193a238f52eac3e","d1bdab0aff5ee23ac869abce94c7389f2010f18118e979e2f8e76a38f629faa9","dba391c789c85b1d249eb24656e6524d1a0b9a203dca53848365db60a7fcc1fa","c3195a40ae5577d8e1b1ab01691cb5e10ca50b45e04318457ab818a187a92b0d","023c4d29a969c3d938c1f27b0787ce987a248180642353992730e36af657b555","682f2b8fa18ca664a458af7420142e47330bee4d5ccd8f0b1397a78a64bb42ea","786b90eb033e8fa3f1b0d80aa6e260c37a765507f2062eae5fece27d0871b0aa","122603f97b5fdb8e65bc04e368702c742b32366ec01a989e66de2ecf7cec7ef4","3e346ae0a52a10eaef90a659f4af82aad13368d3a0e0c2e87711f12211ec31de","b9bb7165e222d121e47e79ad83308238b8ddee28fc67039e531453ba3a3e0cd9","410dfc003d78ffa9ed87d208f1d3974e55c9260b3dd7b7e602dceca1c13cc3d2",{"version":"8652d726671873595381d463b094f378ce02b3f5512d5780f95f9b76c2395015","signature":"aee608370cc8dd4050f2ad9cbf3c57889546761b926a299fdef440f06295b7a8"},{"version":"046e4a93ed85a529216936f87c551bfce05c2d87e32cf6dd786def95f9fc83e4","signature":"25d0df9893c6c7f0421353081826302fdd9d0fe32880e50cdbf20c868b8ade89"},{"version":"f93dc3ef302f287b19cb3fcfcc8df6c4368af514102cb6e3b847e148d74d9e59","signature":"232f095c1ebd67908f5259f284d5ab56bf8171deda2f7441a5f4a5cb08e69dd9"},{"version":"a40a4141d19e651a81375ee1e6276e1349a20d25126317012f9c699bfbdb0091","signature":"539c11f1142909c37b49731cd74a6f5b4c6719bcbc04da9bcf43da3a38e7282f"},{"version":"2ac7a6ef7c529be2dbfec5f284d1f6358f1976f33901b75c79da7904fed0f2b2","signature":"3a0556cca9d9c37ce9d7960a21b2817161a859354d53bee43915f4498f7a7a1d"},{"version":"268c12ad884211d5fb70389e6a1b99d6890d9da276eb88136502955ef18b77bd","signature":"7ef50a3ac4bccdbb6cd7967f3aab92c2f13d0366deb4f48ccef11116d92d7e02"},{"version":"32215582a3ff844f6bfd33687d5a1b6e4b9af2850212a5fab53f2b445a9b0bda","signature":"e2d6efa4d26b26a48f87e40bd5035cb527d31243e55294b50c47c18073301089"},{"version":"caaa7312cd7250823823a6e802a581354c2718303a03452886c0c3e00e910320","signature":"fb24b2d6e3a3da5763362295410d4c3a47e6933fa6055996b90b9597183c9764"},{"version":"8ef6119e7a1c031c988e4b54a0a0296479d173f50418f44f243075b2365d47cb","signature":"9527afacc5979e335404f1b062c57ce1baaa232761c5c6fe5f202885830d8ae8"},{"version":"7540365b67437c6a7d3be2ddbcc92a32fe5b6f86fcf80e5851e918b9d4634488","signature":"ceb99f589f77bd7e38e9a3150edcc3bab2a382c178b6abfe6421cd1aa40b7eb0"},{"version":"dde127551216403f257d032a5b8a3fcccc6700c13d6cee5c4d5a88c5cc008981","signature":"e35bca4921a9e5e4611e9ce4e514e147aafcb9d2095f12996bcc977e6203abea"},{"version":"8df59da6bf1d96d47fa5494f7f24aec9670a0896f1a36f3c3b46749cbfe7c650","signature":"ab763776c8830c2d8b97efa551809820592f81054278645c48b54e26b8f34d0c"},{"version":"eab7156808b48d5deb92f9f9adf541a6222719f933f0e2ff2207bcad87ddaeb0","signature":"5cd556a8f15651feec06265f5eb12450d97c1448b9092f7cf33d97fe0d1e207c"},{"version":"e340e799ddd687fa0af235ddecafbdf2ab928efb3041ba80f6f61516345b5ba6","signature":"81bc4e001b4ccb887b564c3986fc760f47832428f3172d6c10446b3d625577d4"},{"version":"b6056a5b387d97fde02c6082d0404fc75a0703df32402138d641148e38f61819","signature":"3e436c6eabd877ce317a1d70a4c5f89608a8442a21be9063081e11b35f2e308b"},{"version":"e84c420c90d3943263ca61abcf546d13351773d281b3c4d13da9f6640d004b67","signature":"a5a605bf95832d399770755224462d48e36fafc441dd623b27602d930591cbb5"},{"version":"bd419cdb3ee43aa8858080f0730d05c91745a440d6b80eb802b31ac04ef7a624","signature":"daf02811f0fe444cdfc78618b80d280d1ab43dcb21dd2d2f081eeaea5a0c7870"},{"version":"3993f22d195871fbea70ba78d7aba7122ff7ed3fcd5905cb4a4e1df968f00ae5","signature":"a5a8a3818fb3890f3457a76bd2ff2a5d855d3f5ee1d90ea5965a97fdb1c41994"},{"version":"75f070a82726bda86f77699e9b72d44e90f428880e74ef5a44316ebaade61512","signature":"e84d0074d063e034bc87fb022f33d324de14f12871ebf863fb056f56116f064c"},{"version":"3db70245314e874e40d32523b4ef3d883732ef7de4272996c5585b7de4829f6e","signature":"8b59ef1e1e28fed0a671c677db2ee792b5f28bc4b06bacaf0164172ab3699ea7"},{"version":"b10fdf0fcac43271078ab67b6d5839989f8d27b41735aed705c0d63e247aec2a","signature":"848fd2b53ad72b1da1a12644411a50532256bb2d9c5f5befab1cc371e166f576"},{"version":"f39d2de319422679b851d2e8ed98f9c86aed4738f35fd4d67ac1cabaff6324fa","signature":"851504cb609dcd266086a06ab8896f1191b634a551287773bcfd87465c2c245e"},{"version":"063d7464353a06490b5c42b1fcf32e2507256197b6543d043ad16f2077154f99","signature":"d79e433bb2ba02d33b98a65f5e1c3892e6419d0c3a427ac3675c9ab56f6baf2d"},"c561efdf5ba0b62619745d4761fe2d9756f23db972e039367d15922fed67fd2f","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","7ec238b220ea991b6643e24191b1f552a65956d5f6de4c6144e700b9985265d8","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","dae3d1adc67ac3dbd1cd471889301339ec439837b5df565982345be20c8fca9a","5426e62886b7be7806312d31a00e8f7dccd6fe63ba9bbefe99ee2eab29cc48a3","01f7828047b5c6703d3c601473618b448f5506a88fcac852638b0715c3abf4eb","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","6fbd58e4015b9ae31ea977d4d549eb24a1102cc798b57ec5d70868b542c06612","b8a427b9fe88504a6fb092e21adfe272d144394a2ced7f9e4adc3de7efa6e216","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc",{"version":"ae3fe461989bbd951344efc1f1fe932360ce7392e6126bdb225a82a1bbaf15ee","affectsGlobalScope":true},"5b9ecf7da4d71cf3832dbb8336150fa924631811f488ad4690c2dfec2b4fb1d7","951c85f75aac041dddbedfedf565886a7b494e29ec1532e2a9b4a6180560b50e","f47887b61c6cf2f48746980390d6cb5b8013518951d912cfb37fe748071942be","15c88bfd1b8dc7231ff828ae8df5d955bae5ebca4cf2bcb417af5821e52299ae","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","f463d61cf39c3a6a5f96cdf7adfdb72a0b1d663f7b5d5b6dd042adba835430c2","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","763e521cf114b80e0dd0e21ca49b9f8ae62e8999555a5e7bade8ce36b33001c2","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","3e6bbb0883148627ca0854a9f62d820aaf1a0f1842f5568176721fef156b8f23","ffcc5500e77223169833fc6eb59b3a507944a1f89574e0a1276b0ea7fc22c4a4","22f13de9e2fe5f0f4724797abd3d34a1cdd6e47ef81fc4933fea3b8bf4ad524b","e3ba509d3dce019b3190ceb2f3fc88e2610ab717122dabd91a9efaa37804040d","cda0cb09b995489b7f4c57f168cd31b83dcbaa7aad49612734fb3c9c73f6e4f2","f72f8428f3c1caa22e9c247d046603b85b442c0dae7b77a7a0bc092c18867cb7",{"version":"195f63105abc03e72b6a176e3e34dfb5ac932b55db378fdc7874b1617e24b465","affectsGlobalScope":true},"f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","bb4ed283cfb3db7ec1d4bb79c37f5e96d39b340f1f4de995c4b0b836c8d5fa05","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","bb654d426b82e0846cd4bd7de91d637039ecdfd63c94447373490178f80846fe","db90f54098b237753ac9c846e39cd49aa538dcad07a2e1c68a138f3c0f8e621d","92ad68795c32309fb43576cacb38bd2677deeed38f5730dcd4a8c5e65463ae15","4b16417aab5a4b276fd4a7db95120a8c7b4d49a6d68ddfe075e9f46dcbf22f00","eecb2ea10a1500dcc6bdeff14be1fb43806f63a9b8562e16e1b4fc8baa8dfa8d","221a6ab66d611349faaf80af49c7a34d95623787610fd153fed4da0811abdcae","f3d84d6f83cf131e4db335dc8100898adbeb01dd4cf4e2fe695ab220eac98be4","6521aaade4e1d23cbc4b665083b004aeaca23f3347ba2422f88d1828968a0056","e79130cf2ba010f2b79747bf43b086252ad041b130768331a1144c0a86185877","e9709ed827c40789c669736fc78e2ab603605e8e81325d1e6d7a5eb451810dd0","dafce7a7b279977940b6b4b50017625e4f922f73094433d2875994bdc0b27e87","6fc76efbb61d3336833ef44ff3f37552667f26c2a73b368f3b4b259f19f2c234","479496e5bb48f2f5e981ef646665bc09fd9ab080e86e9ea882ca4369411604af","6c559dee3c6251c261b67df08e01d4cbc89cbd7a63300150c636705733cebfff","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","f60e3e3060207ac982da13363181fd7ee4beecc19a7c569f0d6bb034331066c2","17230b34bb564a3a2e36f9d3985372ccab4ad1722df2c43f7c5c2b553f68e5db","87ed0f84f0691d5c724b23159db96342e6b04ac69201b02c65936f4281ce1fbe","13868c5792808236b17dfe2803eafce911ea4d09d3b2fda95391891a494f988f","0dfe35191a04e8f9dc7caeb9f52f2ee07402736563d12cbccd15fb5f31ac877f","eee8abb8503852554eec94e4f77339dbe8927f5f7dfecac41d9479d64bbfc475","93c4fc5b5237c09bc9ed65cb8f0dc1d89034406ab40500b89701341994897142","9adb78bae51a473d33f40da9bdb50c0e491d1cc7a5db776665853effa0cd3374","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","77c5c7f8578d139c74102a29384f5f4f0792a12d819ddcdcaf8307185ff2d45d","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","28288f5e5f8b7b895ed2abe6359c1da3e0d14a64b5aef985071285671f347c01"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"emitDeclarationOnly":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"jsx":1,"module":1,"noImplicitAny":false,"outDir":"./dist","removeComments":true,"rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"strictPropertyInitialization":false,"target":7},"fileIdsList":[[178,253],[178],[77,178],[77,178,197],[123,178,197,198],[149,178,185,197,199],[77,178,197,198],[77,149,178,185,197,201],[124,178],[178,278],[178,205],[178,204,205,206],[178,204,205,207,208],[178,213],[178,213,214],[178,253,254,255,256,257],[178,253,255],[178,185],[151,178,185,260],[151,178,185],[151,178],[178,259],[148,151,178,185,264,265],[178,261,265,266,269],[149,178,185],[178,273],[178,274],[178,280,283],[178,267],[178,268],[132,178],[135,178],[136,141,169,178],[137,148,149,156,166,177,178],[137,138,148,156,178],[139,178],[140,141,149,157,178],[141,166,174,178],[142,144,148,156,178],[143,178],[144,145,178],[148,178],[146,148,178],[148,149,150,166,177,178],[148,149,150,163,166,169,178],[178,182],[151,156,166,177,178],[148,149,151,152,156,166,174,177,178],[151,153,166,174,177,178],[132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184],[148,154,178],[155,177,178],[144,148,156,166,178],[157,178],[158,178],[135,159,178],[160,176,178,182],[161,178],[162,178],[148,163,164,178],[163,165,178,180],[136,148,166,167,168,169,178],[136,166,168,178],[166,167,178],[169,178],[170,178],[148,172,173,178],[172,173,178],[141,156,166,174,178],[175,178],[156,176,178],[136,151,162,177,178],[141,178],[166,178,179],[178,180],[178,181],[136,141,148,150,159,166,177,178,180,182],[166,178,183],[178,185,290,292,296,297,298,299,300,301],[166,178,185],[148,178,185,290,292,293,295,302],[148,156,166,177,178,185,289,290,291,293,294,295,302],[166,178,185,292,293],[166,178,185,292,294],[178,185,290,292,293,295,302],[166,178,185,294],[148,156,166,174,178,185,291,293,295],[148,178,185,290,292,293,294,295,302],[148,166,178,185,290,291,292,293,294,295,302],[148,166,178,185,290,292,293,295,302],[151,166,178,185,295],[148,166,174,178,185,305,306,309,310],[151,178,185,268],[148,151,153,166,174,177,178,183,185],[178,315],[166,178],[178,276,282],[90,178],[91,178],[101,102,103,104,178],[178,280],[178,277,281],[75,178],[76,123,124,178],[75,76,178],[76,178],[76,119,178],[120,178],[77,119,120,121,122,178],[178,185,306,307,308],[166,178,185,306],[166,178,185,186,190],[148,178,182,187,188,189],[178,279],[148,178,185],[82,178],[78,79,80,83,84,85,178],[75,81,178],[68,178],[59,60,178],[57,58,59,61,62,66,178],[58,59,178],[67,178],[59,178],[57,58,59,62,63,64,65,178],[57,58,68,178],[72,178],[69,178],[71,72,73,74,87,88,89,93,178],[77,86,178],[86,92,178],[69,71,77,178],[94,150,178],[94,118,129,131,178,191,192],[77,130,178],[77,94,123,125,126,127,128,141,166,178],[178,190],[86,178,203,210,212,221],[178,203,217,218,220,222,223,224,225,226,227,228],[84,86,178],[178,209],[82,86,178,203,209,215,217,222],[178,203,209,215,222],[178,203,216,217],[178,218,220],[84,86,178,213,224],[178,211],[82,86,178,203,211,215,217,222],[178,203,211,215,222],[178,203,217,219],[86,178,215],[86,178,221,222],[95,178],[95,96,97,178],[69,77,94,178],[108,113,115,116,178],[69,110,112,114,115,178],[77,94,108,178],[69,70,114,178],[69,110,113,115,178],[110,111,113,114,115,178],[108,113,115,178],[107,109,113,114,115,178],[70,77,94,98,100,105,115,178],[77,94,106,113,115,178],[107,110,113,115,178],[77,86,117,178,193],[123,178],[123,178,195,246],[178,194,195,230,233,234,241,246,247,248,251],[178,193],[178,243,244,247],[178,242,243,244,245],[69,123,178,193,194,195,196,197,235,241,242],[86,123,178,193,229,241,243],[178,243],[77,117,178,193,194,196,234],[77,178,196,230,231,234,235,241,246],[77,178,194,229,230,231,232,234,241,246,247],[178,236,237,238,239,240],[77,178,194,195,196,230,237,246,247],[77,117,178,193,194,196,234,235],[77,178,194,230,236],[77,178,194,236],[77,166,178],[77,178,195,196,230,233,234,241,248],[178,249,250],[77,178,195,196,202,230,234,241,246],[69,117,123,178,193,194],[77,117,128,166,178,193,194,196,197,200,202,229,230,233,235,241,246,247],[77,178,193,195,230,232,233,234,239,241,246,247],[99,178],[70,98,178],[77,117],[123],[123,195,246],[77],[194,195,230,233,234,241,246,247,248,251],[190],[243,247],[242,243,244,245],[69,123,194,195,197,241],[123,241,243],[243],[77,117,193,194],[77,230,241,246],[77,229,230,232,241,246],[236,237,238,239,240],[77,194,230,237],[77,194,230,236],[77,194,236],[77,166],[77,230,233,241,248],[249,250],[77,202,230,241],[69,71,117,123,194],[77,117,166,194,197,202,229,230,241,247],[77,195,230,232,241,247]],"referencedMap":[[255,1],[253,2],[197,3],[198,4],[199,5],[200,6],[201,7],[202,8],[128,9],[276,2],[279,10],[206,11],[208,12],[205,2],[204,2],[207,12],[209,13],[211,13],[214,14],[215,15],[213,2],[278,2],[258,16],[254,1],[256,17],[257,1],[259,18],[261,19],[260,20],[262,21],[263,22],[266,23],[270,24],[271,25],[272,2],[273,2],[274,26],[275,27],[284,28],[285,2],[286,18],[268,29],[267,30],[287,2],[288,2],[132,31],[133,31],[135,32],[136,33],[137,34],[138,35],[139,36],[140,37],[141,38],[142,39],[143,40],[144,41],[145,41],[147,42],[146,43],[148,42],[149,44],[150,45],[134,46],[184,2],[151,47],[152,48],[153,49],[185,50],[154,51],[155,52],[156,53],[157,54],[158,55],[159,56],[160,57],[161,58],[162,59],[163,60],[164,60],[165,61],[166,62],[168,63],[167,64],[169,65],[170,66],[171,2],[172,67],[173,68],[174,69],[175,70],[176,71],[177,72],[178,73],[179,74],[180,75],[181,76],[182,77],[183,78],[302,79],[289,80],[296,81],[292,82],[290,83],[293,84],[297,85],[298,81],[295,86],[294,87],[299,88],[300,89],[301,90],[291,91],[303,2],[304,2],[310,92],[311,2],[265,2],[264,2],[269,93],[312,80],[313,2],[314,94],[315,2],[316,95],[130,96],[277,2],[283,97],[91,98],[90,2],[92,99],[105,100],[101,2],[102,2],[103,2],[104,2],[281,101],[282,102],[81,103],[75,2],[125,104],[122,2],[77,105],[124,2],[126,9],[119,106],[120,107],[76,2],[127,108],[123,109],[121,2],[309,110],[306,18],[308,111],[307,18],[305,2],[186,80],[187,112],[188,20],[190,113],[280,114],[189,115],[11,2],[12,2],[15,2],[14,2],[2,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[3,2],[4,2],[27,2],[24,2],[25,2],[26,2],[28,2],[29,2],[30,2],[5,2],[31,2],[32,2],[33,2],[34,2],[6,2],[35,2],[36,2],[37,2],[38,2],[7,2],[39,2],[44,2],[45,2],[40,2],[41,2],[42,2],[43,2],[8,2],[49,2],[46,2],[47,2],[48,2],[50,2],[9,2],[51,2],[52,2],[53,2],[54,2],[55,2],[1,2],[10,2],[56,2],[13,2],[78,2],[79,2],[80,2],[83,116],[86,117],[84,116],[82,118],[85,2],[69,119],[61,120],[67,121],[63,2],[64,2],[62,122],[65,119],[57,2],[58,2],[68,123],[60,124],[66,125],[59,126],[73,127],[71,128],[94,129],[87,130],[93,131],[74,127],[89,2],[88,132],[72,2],[118,133],[193,134],[131,135],[129,136],[191,137],[192,96],[203,2],[222,138],[229,139],[223,140],[210,141],[227,142],[216,143],[218,144],[221,145],[225,146],[212,147],[228,148],[219,149],[220,150],[224,151],[217,2],[226,152],[97,2],[96,153],[98,154],[95,2],[108,155],[117,156],[113,157],[116,158],[115,159],[114,160],[112,161],[109,162],[110,163],[106,164],[107,165],[111,166],[70,2],[194,167],[195,168],[247,169],[196,3],[252,170],[231,171],[245,172],[246,173],[243,174],[242,175],[244,176],[235,177],[232,178],[233,179],[241,180],[238,181],[236,182],[237,183],[239,184],[240,185],[249,186],[251,187],[250,188],[230,189],[234,190],[248,191],[100,192],[99,193]],"exportedModulesMap":[[255,1],[253,2],[197,3],[198,4],[199,5],[200,6],[201,7],[202,8],[128,9],[276,2],[279,10],[206,11],[208,12],[205,2],[204,2],[207,12],[209,13],[211,13],[214,14],[215,15],[213,2],[278,2],[258,16],[254,1],[256,17],[257,1],[259,18],[261,19],[260,20],[262,21],[263,22],[266,23],[270,24],[271,25],[272,2],[273,2],[274,26],[275,27],[284,28],[285,2],[286,18],[268,29],[267,30],[287,2],[288,2],[132,31],[133,31],[135,32],[136,33],[137,34],[138,35],[139,36],[140,37],[141,38],[142,39],[143,40],[144,41],[145,41],[147,42],[146,43],[148,42],[149,44],[150,45],[134,46],[184,2],[151,47],[152,48],[153,49],[185,50],[154,51],[155,52],[156,53],[157,54],[158,55],[159,56],[160,57],[161,58],[162,59],[163,60],[164,60],[165,61],[166,62],[168,63],[167,64],[169,65],[170,66],[171,2],[172,67],[173,68],[174,69],[175,70],[176,71],[177,72],[178,73],[179,74],[180,75],[181,76],[182,77],[183,78],[302,79],[289,80],[296,81],[292,82],[290,83],[293,84],[297,85],[298,81],[295,86],[294,87],[299,88],[300,89],[301,90],[291,91],[303,2],[304,2],[310,92],[311,2],[265,2],[264,2],[269,93],[312,80],[313,2],[314,94],[315,2],[316,95],[130,96],[277,2],[283,97],[91,98],[90,2],[92,99],[105,100],[101,2],[102,2],[103,2],[104,2],[281,101],[282,102],[81,103],[75,2],[125,104],[122,2],[77,105],[124,2],[126,9],[119,106],[120,107],[76,2],[127,108],[123,109],[121,2],[309,110],[306,18],[308,111],[307,18],[305,2],[186,80],[187,112],[188,20],[190,113],[280,114],[189,115],[11,2],[12,2],[15,2],[14,2],[2,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[3,2],[4,2],[27,2],[24,2],[25,2],[26,2],[28,2],[29,2],[30,2],[5,2],[31,2],[32,2],[33,2],[34,2],[6,2],[35,2],[36,2],[37,2],[38,2],[7,2],[39,2],[44,2],[45,2],[40,2],[41,2],[42,2],[43,2],[8,2],[49,2],[46,2],[47,2],[48,2],[50,2],[9,2],[51,2],[52,2],[53,2],[54,2],[55,2],[1,2],[10,2],[56,2],[13,2],[78,2],[79,2],[80,2],[83,116],[86,117],[84,116],[82,118],[85,2],[69,119],[61,120],[67,121],[63,2],[64,2],[62,122],[65,119],[57,2],[58,2],[68,123],[60,124],[66,125],[59,126],[73,127],[71,128],[94,129],[87,130],[93,131],[74,127],[89,2],[88,132],[72,2],[118,133],[193,134],[131,135],[129,136],[191,137],[192,96],[203,2],[222,138],[229,139],[223,140],[210,141],[227,142],[216,143],[218,144],[221,145],[225,146],[212,147],[228,148],[219,149],[220,150],[224,151],[217,2],[226,152],[97,2],[96,153],[98,154],[95,2],[108,155],[117,156],[113,157],[116,158],[115,159],[114,160],[112,161],[109,162],[110,163],[106,164],[107,165],[111,166],[70,2],[194,194],[195,195],[247,196],[196,197],[252,198],[231,199],[245,200],[246,201],[243,202],[242,203],[244,204],[235,205],[232,206],[233,207],[241,208],[238,209],[236,205],[237,210],[239,211],[240,212],[249,213],[251,214],[250,215],[230,216],[234,217],[248,218],[100,192],[99,193]],"semanticDiagnosticsPerFile":[255,253,197,198,199,200,201,202,128,276,279,206,208,205,204,207,209,211,214,215,213,278,258,254,256,257,259,261,260,262,263,266,270,271,272,273,274,275,284,285,286,268,267,287,288,132,133,135,136,137,138,139,140,141,142,143,144,145,147,146,148,149,150,134,184,151,152,153,185,154,155,156,157,158,159,160,161,162,163,164,165,166,168,167,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,302,289,296,292,290,293,297,298,295,294,299,300,301,291,303,304,310,311,265,264,269,312,313,314,315,316,130,277,283,91,90,92,105,101,102,103,104,281,282,81,75,125,122,77,124,126,119,120,76,127,123,121,309,306,308,307,305,186,187,188,190,280,189,11,12,15,14,2,16,17,18,19,20,21,22,23,3,4,27,24,25,26,28,29,30,5,31,32,33,34,6,35,36,37,38,7,39,44,45,40,41,42,43,8,49,46,47,48,50,9,51,52,53,54,55,1,10,56,13,78,79,80,83,86,84,82,85,69,61,67,63,64,62,65,57,58,68,60,66,59,73,71,94,87,93,74,89,88,72,118,193,131,129,191,192,203,222,229,223,210,227,216,218,221,225,212,228,219,220,224,217,226,97,96,98,95,108,117,113,116,115,114,112,109,110,106,107,111,70,194,195,247,196,252,231,245,246,243,242,244,235,232,233,241,238,236,237,239,240,249,251,250,230,234,248,100,99],"latestChangedDtsFile":"./dist/util.d.ts"},"version":"4.8.4"}
|
package/update-pkg.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
const pkgJson = require('@npmcli/package-json')
|
|
2
|
-
|
|
3
|
-
if (process.argv.includes('--update-main-to-dist')) {
|
|
4
|
-
return pkgJson
|
|
5
|
-
.load(__dirname)
|
|
6
|
-
.then((pkg) => pkg.update({ main: 'dist/index.js' }))
|
|
7
|
-
.then((pkg) => pkg.save())
|
|
8
|
-
}
|
|
9
|
-
if (process.argv.includes('--update-main-to-src')) {
|
|
10
|
-
return pkgJson
|
|
11
|
-
.load(__dirname)
|
|
12
|
-
.then((pkg) => pkg.update({ main: 'src/index.ts' }))
|
|
13
|
-
.then((pkg) => pkg.save())
|
|
14
|
-
}
|