wao 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/accounts.js +96 -0
- package/cjs/ao.js +1543 -0
- package/cjs/aoconnect.js +758 -0
- package/cjs/ar.js +794 -0
- package/cjs/dirname.js +7 -0
- package/cjs/helpers.js +381 -0
- package/cjs/index.js +20 -0
- package/cjs/utils.js +438 -0
- package/esm/.cache/opt.json +1 -0
- package/esm/accounts.js +91 -0
- package/esm/ao.js +737 -0
- package/esm/aoconnect.js +318 -0
- package/esm/ar.js +243 -0
- package/esm/dirname.js +1 -0
- package/esm/helpers.js +161 -0
- package/esm/index.js +4 -0
- package/esm/lua/aos-sqlite.wasm +0 -0
- package/esm/lua/aos.wasm +0 -0
- package/esm/lua/aos2.lua +33 -0
- package/esm/lua/aos2_0_1.wasm +0 -0
- package/esm/lua/atomic-asset.lua +238 -0
- package/esm/lua/atomic-note-library.lua +2274 -0
- package/esm/lua/atomic-note.lua +11 -0
- package/esm/lua/collection-registry.lua +202 -0
- package/esm/lua/collection.lua +173 -0
- package/esm/lua/notebook.lua +173 -0
- package/esm/lua/profile.lua +858 -0
- package/esm/lua/profile000.lua +666 -0
- package/esm/lua/proxy.lua +24 -0
- package/esm/lua/registry.lua +858 -0
- package/esm/lua/registry000.lua +636 -0
- package/esm/test.js +94 -0
- package/esm/utils.js +342 -0
- package/package.json +21 -0
- package/test/.cache/opt.json +1 -0
- package/test/accounts.js +91 -0
- package/test/ao.js +737 -0
- package/test/aoconnect.js +318 -0
- package/test/ar.js +243 -0
- package/test/dirname.js +1 -0
- package/test/helpers.js +161 -0
- package/test/index.js +4 -0
- package/test/lua/aos-sqlite.wasm +0 -0
- package/test/lua/aos.wasm +0 -0
- package/test/lua/aos2.lua +33 -0
- package/test/lua/aos2_0_1.wasm +0 -0
- package/test/lua/atomic-asset.lua +238 -0
- package/test/lua/atomic-note-library.lua +2274 -0
- package/test/lua/atomic-note.lua +11 -0
- package/test/lua/collection-registry.lua +202 -0
- package/test/lua/collection.lua +173 -0
- package/test/lua/notebook.lua +173 -0
- package/test/lua/profile.lua +858 -0
- package/test/lua/profile000.lua +666 -0
- package/test/lua/proxy.lua +24 -0
- package/test/lua/registry.lua +858 -0
- package/test/lua/registry000.lua +636 -0
- package/test/package.json +21 -0
- package/test/test.js +94 -0
- package/test/utils.js +342 -0
package/esm/test.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Profile, AR, AO, Collection, Notebook } from "./index.js"
|
|
2
|
+
import { expect } from "chai"
|
|
3
|
+
import { createDataItemSigner, connect } from "@permaweb/aoconnect"
|
|
4
|
+
import { resolve } from "path"
|
|
5
|
+
import { readFileSync } from "fs"
|
|
6
|
+
export class Src {
|
|
7
|
+
constructor({ ar, base = "./lua", readFileSync, dir, resolve }) {
|
|
8
|
+
this.ar = ar
|
|
9
|
+
this.base = base
|
|
10
|
+
this.dir = dir
|
|
11
|
+
}
|
|
12
|
+
async upload(file, ext = "lua") {
|
|
13
|
+
const data = readFileSync(
|
|
14
|
+
`${this.dir}/${this.base}/${file}.${ext}`,
|
|
15
|
+
ext === "wasm" ? null : "utf8",
|
|
16
|
+
)
|
|
17
|
+
const res = await this.ar.post({ data })
|
|
18
|
+
return res.err ? null : res.id
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const setup = async ({ aoconnect, arweave } = {}) => {
|
|
23
|
+
console.error = () => {}
|
|
24
|
+
console.warn = () => {}
|
|
25
|
+
arweave ??= { port: 4000 }
|
|
26
|
+
aoconnect ??= {
|
|
27
|
+
MU_URL: "http://localhost:4002",
|
|
28
|
+
CU_URL: "http://localhost:4004",
|
|
29
|
+
GATEWAY_URL: "http://localhost:4000",
|
|
30
|
+
}
|
|
31
|
+
const dir = resolve(import.meta.dirname)
|
|
32
|
+
const thumbnail = readFileSync(`${dir}/assets/thumbnail.png`)
|
|
33
|
+
const banner = readFileSync(resolve(`${dir}/assets/banner.png`))
|
|
34
|
+
const ar = new AR(arweave)
|
|
35
|
+
await ar.gen("10")
|
|
36
|
+
const src = new Src({ ar, readFileSync, dir })
|
|
37
|
+
const notelib_src = await src.upload("atomic-note-library")
|
|
38
|
+
const registry_src = await src.upload("registry000")
|
|
39
|
+
const profile_src = await src.upload("profile000")
|
|
40
|
+
const collection_registry_src = await src.upload("collection-registry")
|
|
41
|
+
const notebook_src = await src.upload("notebook")
|
|
42
|
+
const note_src = await src.upload("atomic-note")
|
|
43
|
+
const proxy = await src.upload("proxy")
|
|
44
|
+
const wasm = await src.upload("aos-sqlite", "wasm")
|
|
45
|
+
const wasm2 = await src.upload("aos", "wasm")
|
|
46
|
+
const ao = new AO({ aoconnect, ar })
|
|
47
|
+
|
|
48
|
+
const { id: module_sqlite } = await ao.postModule({
|
|
49
|
+
data: await ar.data(wasm),
|
|
50
|
+
overwrite: true,
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
const { scheduler } = await ao.postScheduler({
|
|
54
|
+
url: "http://su",
|
|
55
|
+
overwrite: true,
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
const profile = new Profile({ profile_src, registry_src, ao })
|
|
59
|
+
await profile.createRegistry({})
|
|
60
|
+
const notebook = new Notebook({
|
|
61
|
+
notebook_src,
|
|
62
|
+
registry_src: collection_registry_src,
|
|
63
|
+
profile,
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
await notebook.createRegistry()
|
|
67
|
+
const { id: module } = await ao.postModule({ data: await ar.data(wasm2) })
|
|
68
|
+
const { pid: proxy_pid } = await ao.deploy({ src: proxy, module })
|
|
69
|
+
|
|
70
|
+
let opt = {
|
|
71
|
+
ar: { ...arweave },
|
|
72
|
+
profile: { registry_src, registry: profile.registry, profile_src },
|
|
73
|
+
ao: { module: module_sqlite, scheduler, aoconnect },
|
|
74
|
+
note: { proxy: proxy_pid, note_src, notelib_src },
|
|
75
|
+
notebook: {
|
|
76
|
+
notebook_src,
|
|
77
|
+
registry: notebook.registry,
|
|
78
|
+
registry_src: collection_registry_src,
|
|
79
|
+
},
|
|
80
|
+
}
|
|
81
|
+
return { opt, profile, ao, ar, thumbnail, banner }
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export const ok = obj => {
|
|
85
|
+
if (obj.err) console.log(obj.err)
|
|
86
|
+
expect(obj.err).to.eql(null)
|
|
87
|
+
return obj
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export const fail = obj => {
|
|
91
|
+
if (!obj.err) console.log(obj.res)
|
|
92
|
+
expect(obj.err).to.not.eql(null)
|
|
93
|
+
return obj
|
|
94
|
+
}
|
package/esm/utils.js
ADDED
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
import { clone, is, includes, fromPairs, map, isNil } from "ramda"
|
|
2
|
+
|
|
3
|
+
const allows = [
|
|
4
|
+
{ key: "allowed", val: "Allowed" },
|
|
5
|
+
{ key: "disallowed", val: "Disallowed" },
|
|
6
|
+
]
|
|
7
|
+
const allowsMap = fromPairs(allows.map(({ key, val }) => [key, val]))
|
|
8
|
+
const accesses = [
|
|
9
|
+
{ key: "none", val: "None" },
|
|
10
|
+
{ key: "one-time", val: "One-Time" },
|
|
11
|
+
]
|
|
12
|
+
const accessesMap = fromPairs(accesses.map(({ key, val }) => [key, val]))
|
|
13
|
+
const payments = [
|
|
14
|
+
{ key: "single", val: "Single" },
|
|
15
|
+
{ key: "random", val: "Random" },
|
|
16
|
+
{ key: "global", val: "Global" },
|
|
17
|
+
]
|
|
18
|
+
const paymentsMap = fromPairs(payments.map(({ key, val }) => [key, val]))
|
|
19
|
+
const dTerms = [
|
|
20
|
+
{ key: "credit", val: "With Credit" },
|
|
21
|
+
{ key: "indication", val: "With Indication" },
|
|
22
|
+
{ key: "passthrough", val: "With License Passthrough" },
|
|
23
|
+
{ key: "revenue", val: "With Revenue Share" },
|
|
24
|
+
{ key: "monthly", val: "With Monthly Fee" },
|
|
25
|
+
{ key: "one-time", val: "With One-Time Fee" },
|
|
26
|
+
]
|
|
27
|
+
const dtMap = fromPairs(dTerms.map(({ key, val }) => [key, val]))
|
|
28
|
+
const cTerms = [
|
|
29
|
+
{ key: "revenue", val: "With Revenue Share" },
|
|
30
|
+
{ key: "monthly", val: "With Monthly Fee" },
|
|
31
|
+
{ key: "one-time", val: "With One-Time Fee" },
|
|
32
|
+
]
|
|
33
|
+
const ctMap = fromPairs(cTerms.map(({ key, val }) => [key, val]))
|
|
34
|
+
const tTerms = [
|
|
35
|
+
{ key: "monthly", val: "With Monthly Fee" },
|
|
36
|
+
{ key: "one-time", val: "With One-Time Fee" },
|
|
37
|
+
]
|
|
38
|
+
const ttMap = fromPairs(tTerms.map(({ key, val }) => [key, val]))
|
|
39
|
+
|
|
40
|
+
const action = value => tag("Action", value)
|
|
41
|
+
const tag = (name, value) => ({ name, value: jsonToStr(value) })
|
|
42
|
+
|
|
43
|
+
const wait = ms => new Promise(res => setTimeout(() => res(), ms))
|
|
44
|
+
|
|
45
|
+
const tags = tags => fromPairs(map(v => [v.name, v.value])(tags))
|
|
46
|
+
const ltags = tags => fromPairs(map(v => [v.name.toLowerCase(), v.value])(tags))
|
|
47
|
+
|
|
48
|
+
const validAddress = addr => /^[a-zA-Z0-9_-]{43}$/.test(addr)
|
|
49
|
+
|
|
50
|
+
const isRegExp = obj => obj instanceof RegExp
|
|
51
|
+
|
|
52
|
+
const getTag = (_tags, name) => tags(_tags)[name] ?? null
|
|
53
|
+
|
|
54
|
+
const tagEq = (tags, name, val = null) => {
|
|
55
|
+
const tag = getTag(tags, name)
|
|
56
|
+
if (val === true) {
|
|
57
|
+
return tag !== null
|
|
58
|
+
} else if (isRegExp(val)) {
|
|
59
|
+
let ok = false
|
|
60
|
+
try {
|
|
61
|
+
ok = val.test(tag)
|
|
62
|
+
} catch (e) {}
|
|
63
|
+
return ok
|
|
64
|
+
} else return tag === val
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const searchTag = (res, name, val) => {
|
|
68
|
+
for (let v of res.Messages || []) {
|
|
69
|
+
if (tagEq(v.Tags || {}, name, val)) return v
|
|
70
|
+
}
|
|
71
|
+
return null
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const checkTag = (res, name, val) => {
|
|
75
|
+
for (let v of res.Messages || []) {
|
|
76
|
+
if (tagEq(v.Tags || {}, name, val)) return true
|
|
77
|
+
}
|
|
78
|
+
return false
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const isData = (data, res) => {
|
|
82
|
+
for (const v of res.Messages ?? []) {
|
|
83
|
+
if (isRegExp(data)) {
|
|
84
|
+
try {
|
|
85
|
+
if (data.test(v.Data)) return true
|
|
86
|
+
} catch (e) {}
|
|
87
|
+
} else {
|
|
88
|
+
if (data === true || v.Data === data) return true
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return false
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const query = txid => `query {
|
|
95
|
+
transactions(ids: ["${txid}"]) {
|
|
96
|
+
edges { node { id tags { name value } owner { address } } }
|
|
97
|
+
}
|
|
98
|
+
}`
|
|
99
|
+
|
|
100
|
+
const queries = to => `query {
|
|
101
|
+
transactions (recipients: ["${to}"]){
|
|
102
|
+
edges { node { id recipient tags { name value } owner { address } } }
|
|
103
|
+
}
|
|
104
|
+
}`
|
|
105
|
+
|
|
106
|
+
const isLocalhost = v => includes(v, ["localhost", "127.0.0.1"])
|
|
107
|
+
|
|
108
|
+
const udl = ({ payment, access, derivations, commercial, training }) => {
|
|
109
|
+
let tags = {
|
|
110
|
+
License: "dE0rmDfl9_OWjkDznNEXHaSO_JohJkRolvMzaCroUdw",
|
|
111
|
+
Currency: "xU9zFkq3X2ZQ6olwNVvr1vUWIjc3kXTWr7xKQD6dh10",
|
|
112
|
+
}
|
|
113
|
+
tags["Payment-Mode"] = paymentsMap[payment.mode]
|
|
114
|
+
if (payment.mode === "single") tags["Payment-Address"] = payment.recipient
|
|
115
|
+
let _access = accessesMap[access.mode]
|
|
116
|
+
if (access.mode === "one-time") _access += "-" + access.fee
|
|
117
|
+
tags["Access-Fee"] = _access
|
|
118
|
+
|
|
119
|
+
let _derivations = allowsMap[derivations.mode]
|
|
120
|
+
if (derivations.mode === "allowed") {
|
|
121
|
+
if (derivations.term === "revenue") {
|
|
122
|
+
_derivations += `-${dtMap[derivations.term].split(" ").join("-")}-${derivations.share}`
|
|
123
|
+
} else if (
|
|
124
|
+
derivations.term === "monthly" ||
|
|
125
|
+
derivations.term === "one-time"
|
|
126
|
+
) {
|
|
127
|
+
_derivations += `-${dtMap[derivations.term].split(" ").join("-")}-${derivations.fee}`
|
|
128
|
+
} else {
|
|
129
|
+
_derivations += `-${dtMap[derivations.term].split(" ").join("-")}-0`
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
tags["Derivations"] = _derivations
|
|
133
|
+
let _commercial = allowsMap[commercial.mode]
|
|
134
|
+
if (commercial.mode === "allowed") {
|
|
135
|
+
if (commercial.term === "revenue") {
|
|
136
|
+
_commercial += `-${ctMap[commercial.term].split(" ").join("-")}-${commercial.share}`
|
|
137
|
+
} else {
|
|
138
|
+
_commercial += `-${ctMap[commercial.term].split(" ").join("-")}-${commercial.fee}`
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
tags["Commercial-Use"] = _commercial
|
|
142
|
+
let _training = allowsMap[training.mode]
|
|
143
|
+
if (training.mode === "allowed") {
|
|
144
|
+
_training += `-${ttMap[training.term].split(" ").join("-")}-${training.fee}`
|
|
145
|
+
}
|
|
146
|
+
tags["Data-Model-Training"] = _training
|
|
147
|
+
return tags
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const modGet = get => {
|
|
151
|
+
let _get = clone(get)
|
|
152
|
+
if (is(Array, get)) {
|
|
153
|
+
_get = { obj: {} }
|
|
154
|
+
for (const v of get) {
|
|
155
|
+
if (typeof v === "string") _get.obj[v] = v
|
|
156
|
+
else if (is(Array, v)) _get.obj[v[0]] = v[1]
|
|
157
|
+
else if (is(Object, v)) for (const k in v) _get.obj[k] = v[k]
|
|
158
|
+
}
|
|
159
|
+
} else if (
|
|
160
|
+
is(Object, get) &&
|
|
161
|
+
isNil(get.data) &&
|
|
162
|
+
isNil(get.json) &&
|
|
163
|
+
isNil(get.name) &&
|
|
164
|
+
isNil(get.obj)
|
|
165
|
+
) {
|
|
166
|
+
_get = { obj: get }
|
|
167
|
+
}
|
|
168
|
+
return _get
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
const _getTagVal = (get, res) => {
|
|
172
|
+
let out = null
|
|
173
|
+
const _get = modGet(get)
|
|
174
|
+
if (typeof _get === "object" && _get.obj) {
|
|
175
|
+
out = {}
|
|
176
|
+
for (const k in _get.obj ?? {}) out[k] = _getTagVal(_get.obj[k], res)
|
|
177
|
+
} else {
|
|
178
|
+
for (const v of res.Messages ?? []) {
|
|
179
|
+
if (
|
|
180
|
+
(typeof _get === "object" && _get.data) ||
|
|
181
|
+
typeof _get === "boolean"
|
|
182
|
+
) {
|
|
183
|
+
if (v.Data) out = v.Data
|
|
184
|
+
try {
|
|
185
|
+
if (_get.json || _get === true) out = JSON.parse(out)
|
|
186
|
+
} catch (e) {}
|
|
187
|
+
} else if (typeof _get === "object" && typeof _get.name === "string") {
|
|
188
|
+
out = getTag(v.Tags ?? [], _get.name)
|
|
189
|
+
try {
|
|
190
|
+
if (_get.json) out = JSON.parse(out)
|
|
191
|
+
} catch (e) {}
|
|
192
|
+
} else out = getTag(v.Tags ?? [], _get)
|
|
193
|
+
if (out) break
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return out
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
const getTagVal = (get, res) => {
|
|
200
|
+
const _get = modGet(get)
|
|
201
|
+
return _getTagVal(_get, res)
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
const srcs = {
|
|
205
|
+
module: "cNlipBptaF9JeFAf4wUmpi43EojNanIBos3EfNrEOWo",
|
|
206
|
+
module_sqlite: "ghSkge2sIUD_F00ym5sEimC63BDBuBrq4b5OcwxOjiw",
|
|
207
|
+
module_aos2: "Do_Uc2Sju_ffp6Ev0AnLVdPtot15rvMjP-a9VVaA5fM",
|
|
208
|
+
|
|
209
|
+
notelib_src: "h35YJqJ0ve_2pxO5uV1tKTQ44k9WpTBOzk5lGpYcEWs",
|
|
210
|
+
note_src: "6BrngB9N_ujSka4BmsZ2HuRbbqePQFkNXQ-tATp03ZU",
|
|
211
|
+
notebook_src: "NKISXnq5XseLQd_u-lfO6ThBLuikLoontY47UlONrB4",
|
|
212
|
+
asset_src: "CT5qN5e97Fr0wJ8VVu_TRj6qPNWped52IPsJMJ2pd08",
|
|
213
|
+
collection_src: "cLzVDfhmC0JAADYyFkdLQbtEMtL4VxbeGv98TADbbRk",
|
|
214
|
+
bookreg_src: "4Bm1snpCEHIxYMDdAxiFf6ar81gKQHvElDFeDZbSnJU",
|
|
215
|
+
registry_src: "kBk-wRbK5aIZVqDJEzWhjYb5gnydHafrFG3wgItBvuI",
|
|
216
|
+
|
|
217
|
+
scheduler: "_GQ33BkPtZrqxA84vM8Zk-N2aO0toNNu_C-l-rawrBA",
|
|
218
|
+
authority: "fcoN_xJeisVsPXA-trzVAuIiqO3ydLQxM-L4XbrQKzY",
|
|
219
|
+
|
|
220
|
+
notelib_mid: "ls7QnjCPXDeAF6w7mA0cNAwv9hY7r-W1T31X1iEJMJU",
|
|
221
|
+
bookreg: "TFWDmf8a3_nw43GCm_CuYlYoylHAjCcFGbgHfDaGcsg",
|
|
222
|
+
thumb: "9v2GrtXpVpPWf9KBuTBdClARjjcDA3NqxFn8Kbn1f2M",
|
|
223
|
+
banner: "UuEwLRmuNmqLTDcKqgcxDEV1CWIR_uZ6rxzmKjODlrg",
|
|
224
|
+
proxy: "0uboI80S6vMxJD9Yn41Wdwnp9uAHEi4XLGQhBrp3qSQ",
|
|
225
|
+
render: "yXXAop3Yxm8QlZRzP46oRxZjCBp88YTpoSTPlTr4TcQ",
|
|
226
|
+
registry: "SNy4m-DrqxWl01YqGM4sxI8qCni-58re8uuJLvZPypY",
|
|
227
|
+
profile: "uEtSHyK9yDBABomez6ts3LI_8ULvO-rANSgDN_9OzEc",
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
const buildTags = (act, tags) => {
|
|
231
|
+
let _tags = []
|
|
232
|
+
if (act) _tags.push(action(act))
|
|
233
|
+
for (const k in tags) {
|
|
234
|
+
if (is(Array)(tags[k])) for (const v of tags[k]) _tags.push(tag(k, v))
|
|
235
|
+
else _tags.push(tag(k, tags[k]))
|
|
236
|
+
}
|
|
237
|
+
return _tags
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
const mergeOut = (out, out2, get) => {
|
|
241
|
+
const _get = modGet(get)
|
|
242
|
+
if (_get.obj) {
|
|
243
|
+
for (const k in out2 ?? {}) {
|
|
244
|
+
if (isNil(out?.[k])) {
|
|
245
|
+
if (!out) out = {}
|
|
246
|
+
out[k] = out2[k]
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return out
|
|
250
|
+
} else return out2
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
const mergeChecks = (check1, check2, check) => {
|
|
254
|
+
if (!isRegExp(check) && !includes(typeof check)(["string", "boolean"])) {
|
|
255
|
+
for (const k in check2 ?? {}) {
|
|
256
|
+
if (!check1) check1 = {}
|
|
257
|
+
check1[k] = check1[k] || check2[k]
|
|
258
|
+
}
|
|
259
|
+
return check1
|
|
260
|
+
} else return check1 || check2
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
const isOutComplete = (out, get) => {
|
|
264
|
+
if (isNil(out)) return false
|
|
265
|
+
const _get = modGet(get)
|
|
266
|
+
if (_get.obj) {
|
|
267
|
+
for (const k in out ?? {}) {
|
|
268
|
+
if (isNil(out[k])) return false
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
return true
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
const isCheckComplete = (checks, check) => {
|
|
275
|
+
let i = 0
|
|
276
|
+
for (const v of checks) {
|
|
277
|
+
if (
|
|
278
|
+
isRegExp(check[i]) ||
|
|
279
|
+
includes(typeof check[i])(["string", "boolean"])
|
|
280
|
+
) {
|
|
281
|
+
if (!v) return false
|
|
282
|
+
} else {
|
|
283
|
+
for (const k in v) {
|
|
284
|
+
if (!v[k]) return false
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
i++
|
|
288
|
+
}
|
|
289
|
+
return true
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
function isJSON(obj) {
|
|
293
|
+
if (obj === null || obj === undefined) return false
|
|
294
|
+
if (
|
|
295
|
+
typeof obj !== "object" ||
|
|
296
|
+
obj instanceof Buffer ||
|
|
297
|
+
obj instanceof ArrayBuffer ||
|
|
298
|
+
Array.isArray(obj)
|
|
299
|
+
) {
|
|
300
|
+
return false
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
try {
|
|
304
|
+
const str = JSON.stringify(obj)
|
|
305
|
+
const parsed = JSON.parse(str)
|
|
306
|
+
const isjson = typeof parsed === "object" && parsed !== null
|
|
307
|
+
return isjson ? str : false
|
|
308
|
+
} catch (e) {
|
|
309
|
+
return false
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
const jsonToStr = obj =>
|
|
314
|
+
isJSON(obj) || (is(Number, obj) ? Number(obj).toString() : obj)
|
|
315
|
+
|
|
316
|
+
export {
|
|
317
|
+
jsonToStr,
|
|
318
|
+
mergeChecks,
|
|
319
|
+
isCheckComplete,
|
|
320
|
+
mergeOut,
|
|
321
|
+
isOutComplete,
|
|
322
|
+
isRegExp,
|
|
323
|
+
buildTags,
|
|
324
|
+
srcs,
|
|
325
|
+
getTagVal,
|
|
326
|
+
isData,
|
|
327
|
+
query,
|
|
328
|
+
queries,
|
|
329
|
+
getTag,
|
|
330
|
+
tagEq,
|
|
331
|
+
searchTag,
|
|
332
|
+
checkTag,
|
|
333
|
+
validAddress,
|
|
334
|
+
ltags,
|
|
335
|
+
tags,
|
|
336
|
+
wait,
|
|
337
|
+
action,
|
|
338
|
+
tag,
|
|
339
|
+
isLocalhost,
|
|
340
|
+
udl,
|
|
341
|
+
isJSON,
|
|
342
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "wao",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "cjs/index.js",
|
|
6
|
+
"module": "esm/index.js",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=20.0.0"
|
|
9
|
+
},
|
|
10
|
+
"author": "",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@babel/plugin-transform-modules-commonjs": "^7.24.8",
|
|
14
|
+
"@permaweb/ao-loader": "^0.0.43",
|
|
15
|
+
"@permaweb/aoconnect": "^0.0.61",
|
|
16
|
+
"arbundles": "^0.11.1",
|
|
17
|
+
"arweave": "^1.15.1",
|
|
18
|
+
"base64url": "^3.0.1",
|
|
19
|
+
"ramda": "^0.30.1"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"ar":{"port":4000},"jwk":{"kty":"RSA","n":"vAiSYEBIogdeHhE1c-WoZOrrpsqing6sDQffTJYI7v2Hik7WkjhtxoXH3xlWk-dfUUXdntGEoaU9cBIdBz4EczxIkvBZ0e2bJQgDrZfbuQgy7RMdcvvCDQYXhQqF_DkmCbxDjpnP_W_Z3wL_7Sil5Ru5Jj_M_c6cyODuOiv8WZUZRi1KCoSuUVZr6dgiqGmzU_tBtZgoEtStKb29RHtT0PgpktWTYTk1nHWpOrA0mJMivrDdLmLfexFe_bPpZp-cW9MxOzbdj_jG3VpZE6iT6z-g2H2sQC2xROCvYMrhu2JrV447gOT81PKPw4sUw1aPE17GKg45p58aaa1c28-c0o_VF4CsgKh7SCURWpY0BUvWfw4tJX1l0CCu7OxdDT0pLzagy5mGke0vz-eQH_NEUeAyjqTzV_42WoTEisyGvR1wD9iEd_JKjJBWVII5fbZH3cMB3FDvgNaZRfCMNKQPMdF7evBUEXW0RwVF3Il5TfbIGmLQN01QV_U6L2XdZT69BESRHehUT0W5JM5Og1m9-Kn8ZKN1yL5XifpiGsZlGP5rNw1uKKMLopCAuYzngwjQq-nM-TrGXxlFFuX-L3tc3I8MdNXpTkdXT8xpUetVZrZ2W2oUfSpl8Bp4DvSkqIYssjbxQjMO7KNRO5HvTrWj9iMtuQLST5ooVvEdVmgTDOs","e":"AQAB","d":"U1MxGnoiNbsyF_zkRRG2h9Iaz3Toj0ZNNBETAStTliS_lajOKUncS6cpJVJjLXPQp4FgbmrGbaN-EFXWi0kOS8qhFoxwITk8ETL1_k1XTy20854O5M9v9LmIXqqFKXphwtqszVqX8uVIFS2NIBltOpQIfkyzmJ2gmNwkdZ7cWw5ZfuG-995IKT803xGqehstHsAvJDvjNkUM33x3jQth3y65rZn7j4_8k_MIJTvEcwBw2zQhL9cc1bqi76Z0fcepUH_MR0NO9-f0qE7LPozrz8oIiydV17Ln5W_0B96gHZvFma0r7TiMWgmLb8oIT2_iQ2EyS5y2K_OzjrUGe1oLUfdj-M_gNgFCEsVDsJU7R3JdZp-oR5_D-wYs6uCs4NzkvgiF96zmx0Dnvw6p_eH_vgtZJeD7gBbtzfbKwqwG1IGA8f7qywcdmYSF5igGcyoYhwAUcXDIZSh_So6YdNxN5CVzknTHiPZaPHMSxjK4LZ3YiQj-ajuTefRZgviKFcArOBSkjL2VacleKBOH9PZci_1jaTQklaYVwHJD1K9aWEuF2Jc3_G7dVET2SANHeg2RPjPHAnsk4vt7ratL4ao7N1SsudoumFrJ429Hd6Hu01GDE2gq0RYmBXhAZwXJ7WtGv1kizEHR__ASLpbi21zk2vBnnAiQfrni3xu1wLq5K5E","p":"_gUpJCExeTkLcnp7spqLyMxAk_Rrbgeyec0ra19zGWLFbkIm-tmA1g0mRM18DrLHsO6LTz2_cVjolAs4KQW_3RNMXd2VxS4gWbdtA5kcJIemydayduwVeIf3HHhVzzCAbaJ2144Bnmqsgq3QC3aV36hH9QlBCR95OTzn50FCvR3ryH-A1YZKjADu5dQfsvXFie4vY3qvLSBiivYyXqqTYRExHjtSImaluFTzWa78-HHjLUCVeRbS4AfFxlG6XQEFTKZLuAnO0mth2_IcAHCVbKlXGSt377fQHEYmZ7xKuOw5eyt6abx7CTk_DRJRfgwonbFITfBQwLU2s7SAwBJd1w","q":"vX-_7SauLYNBRP_bRFEiXyf-gf0BAFVCP-hbkqhd6z2CybooIRibL6ZAJ26GPWhWxFlaCUXQhUSABWoroo5mlef9QK297jPz49ZKZcfuem32eo60ZGPNGSrBfhtHmQc8tIqDFHjdLKPBJIvxk4P1gwQwRonYyik9lVUQMJ_sL-rLjNQ7i4x-oKaV-YsUhuBv9zaBD7H00jihWBPSYBX809N0hAXeJXLNwMoLZnmDLl1OJg0VccIuYLTaczT0j_BSULI6VTVifyUHppJntX1WkL0x6bjT25N9bXlwMPFvXi8DRKpaosgJHEUYRrlAbG1VoPdDGN-aqCSlzAIRSwrfDQ","dp":"hkqGKIKf3B1rTtcwBAkuMzbAQTfrf5z0Hu53sOkiOV59T8ALSXypXwBOpfsYRdEAPyqtXXQgfLTrKDESPKW8fAzSx6D4p-it06BkMo3EUg-g_n3RlYtUAoem_Vckzkcu7kcAmw6JDo4Iq4FmRlkn_LjDaei9iCwqczcexqQ6uy5RU4sMulWnnYJ0ye4t3_eMulHAnc_jQnEnh52GnYOCLMPg-sGTt3oazGukx1n6hQH4fxjwrLaDP0r8pM7aPobmnVIhH6eXvqhkcNn7McRTSsHvuO_BFWtQy1HOxfLGciL4dIRU0AeD6ClqiuePS5rz8gIiXonYtzhWNgUMN_69uw","dq":"aN5FrEv3oCA_ApxFD62Gw_oyEmWdJD4Kh6ti4epi70f_FPv8MTSYzOnIHwo_J8SSH98CwJbuKpIZ9uUmeLMtelAECsMblLMTiUaRrXnTM9WezXwjwFqqqf7LTapzGPC0W4U7vRyV6ZpFzJ_VdLlWKMcsoByw6E-iUP3eE8qsvmfFdY4N1dBOU0FdRdf96BZUYA69pZ3pylykjUWK6rnATMl8dYN5yGecDdDCNleQjRv9n3kmIOpBGCt9qLvpi66HHzlCpt0AQTSQ41GqKvnN6hOJh7pNI_qfMvI9cBhsdUa3HEzaE7N3tzlVke37BQYMmSO88grsX5jIV_nc8BZ4EQ","qi":"8XcLLnE-6jPJURB3K-BNPBylUxXwQwEeMs4MX7tFXqxnnh2A23tVhOXESEb6PDkKe2Gql78B6_WrbtiTozV_-c6M0VjqGHRor62dBCvef9mUpiPUxkbflwlmcbqGTuiCNZyoZxR-8Pf0E2al2WxEkKeQjkplNHWt433A6hbx3rx8HsWAdM4RhY3LMsddGpFMc5gjm5PmTKo33uC15X16SmpC00SeVDnKaoiWWI3005RmMP2Wfago9XCTEwBsWeozQC7R2zI3CuW7jX3W6UeUYPoEeS3Qa0suCP4CqCbfNwstl-SQhWtm2IVBpbOZTDQ6e0cYUyyMGVh1AMCoehHMrw"},"module_sqlite":"I2E4Uu9bVmxCmXmfSfwQ3hOosbGRIKpF5qebATBylzs","ao":{"module":"I2E4Uu9bVmxCmXmfSfwQ3hOosbGRIKpF5qebATBylzs","scheduler":"9uDpdXg7JjC8xonD61nylkcjA2QYIti7jqSKgxOuLWs","aoconnect":{"MU_URL":"http://localhost:4002","CU_URL":"http://localhost:4004","GATEWAY_URL":"http://localhost:4000"},"ar":{"port":4000},"authority":"XztbUZU7D8lAcWlbg0avCD0s2lMBbFGgTC4YzLcOR90"},"ao2":{"module":"KCRP66Aq-4uQ7R556SgaNtzDNSnRJW4DA1m5sgxirDk","scheduler":"9uDpdXg7JjC8xonD61nylkcjA2QYIti7jqSKgxOuLWs","aoconnect":{"MU_URL":"http://localhost:4002","CU_URL":"http://localhost:4004","GATEWAY_URL":"http://localhost:4000"},"ar":{"port":4000},"authority":"XztbUZU7D8lAcWlbg0avCD0s2lMBbFGgTC4YzLcOR90"},"profile":{"module":"I2E4Uu9bVmxCmXmfSfwQ3hOosbGRIKpF5qebATBylzs","registry_src":"maJGJ2tAa6zVtW1rGhngNlhEZDUqbCwO3r5mYxDBCsQ","registry":"yRmn7BZDk_c916ZNy8JBY-H52vYMrP8SBp-npeOgAbU","profile_src":"LNTKw-wvmybqSrxvtMYtdplOADLAey1c8FpNXoMa638","ao":{"module":"I2E4Uu9bVmxCmXmfSfwQ3hOosbGRIKpF5qebATBylzs","scheduler":"9uDpdXg7JjC8xonD61nylkcjA2QYIti7jqSKgxOuLWs","aoconnect":{"MU_URL":"http://localhost:4002","CU_URL":"http://localhost:4004","GATEWAY_URL":"http://localhost:4000"},"ar":{"port":4000},"authority":"XztbUZU7D8lAcWlbg0avCD0s2lMBbFGgTC4YzLcOR90"}},"note":{"proxy":"0uUOLKRlt-4zume2JnSeIYFlSK6-5mH51kdj6o3Q4jw","note_src":"XmteOz1FGAFKGLRtVQo65-ggchiQJ1bJ7OrHueZDK8I","profile":{"module":"I2E4Uu9bVmxCmXmfSfwQ3hOosbGRIKpF5qebATBylzs","registry_src":"maJGJ2tAa6zVtW1rGhngNlhEZDUqbCwO3r5mYxDBCsQ","registry":"yRmn7BZDk_c916ZNy8JBY-H52vYMrP8SBp-npeOgAbU","profile_src":"LNTKw-wvmybqSrxvtMYtdplOADLAey1c8FpNXoMa638","ao":{"module":"I2E4Uu9bVmxCmXmfSfwQ3hOosbGRIKpF5qebATBylzs","scheduler":"9uDpdXg7JjC8xonD61nylkcjA2QYIti7jqSKgxOuLWs","aoconnect":{"MU_URL":"http://localhost:4002","CU_URL":"http://localhost:4004","GATEWAY_URL":"http://localhost:4000"},"ar":{"port":4000},"authority":"XztbUZU7D8lAcWlbg0avCD0s2lMBbFGgTC4YzLcOR90"}}},"notebook":{"notebook_src":"cAa0NBOgYfQPRH6DEcKxrLBm4QExws4FCKAyP-LHufg","registry":"EGVoxgKS9V4z6w21RJ9HiM3Q6TcwgwdwX8INSUTUuKE","registry_src":"6EX6wZ8RfUHbSfUvhU5Aby7q52czm0T-RckiOrIG4Wc","profile":{"module":"I2E4Uu9bVmxCmXmfSfwQ3hOosbGRIKpF5qebATBylzs","registry_src":"maJGJ2tAa6zVtW1rGhngNlhEZDUqbCwO3r5mYxDBCsQ","registry":"yRmn7BZDk_c916ZNy8JBY-H52vYMrP8SBp-npeOgAbU","profile_src":"LNTKw-wvmybqSrxvtMYtdplOADLAey1c8FpNXoMa638","ao":{"module":"I2E4Uu9bVmxCmXmfSfwQ3hOosbGRIKpF5qebATBylzs","scheduler":"9uDpdXg7JjC8xonD61nylkcjA2QYIti7jqSKgxOuLWs","aoconnect":{"MU_URL":"http://localhost:4002","CU_URL":"http://localhost:4004","GATEWAY_URL":"http://localhost:4000"},"ar":{"port":4000},"authority":"XztbUZU7D8lAcWlbg0avCD0s2lMBbFGgTC4YzLcOR90"}}},"asset":{"asset_src":"sZe0uqoLAlzFtFcATqERh_Jg3yvyJ-P1Fp7MstYUr8E","profile":{"module":"I2E4Uu9bVmxCmXmfSfwQ3hOosbGRIKpF5qebATBylzs","registry_src":"maJGJ2tAa6zVtW1rGhngNlhEZDUqbCwO3r5mYxDBCsQ","registry":"yRmn7BZDk_c916ZNy8JBY-H52vYMrP8SBp-npeOgAbU","profile_src":"LNTKw-wvmybqSrxvtMYtdplOADLAey1c8FpNXoMa638","ao":{"module":"I2E4Uu9bVmxCmXmfSfwQ3hOosbGRIKpF5qebATBylzs","scheduler":"9uDpdXg7JjC8xonD61nylkcjA2QYIti7jqSKgxOuLWs","aoconnect":{"MU_URL":"http://localhost:4002","CU_URL":"http://localhost:4004","GATEWAY_URL":"http://localhost:4000"},"ar":{"port":4000},"authority":"XztbUZU7D8lAcWlbg0avCD0s2lMBbFGgTC4YzLcOR90"}}},"collection":{"collection_src":"5MGgg1uHqI04MS7ZZNJSDYld2CqxyC9Aws08k4VZey0","registry":"EGVoxgKS9V4z6w21RJ9HiM3Q6TcwgwdwX8INSUTUuKE","registry_src":"6EX6wZ8RfUHbSfUvhU5Aby7q52czm0T-RckiOrIG4Wc","profile":{"module":"I2E4Uu9bVmxCmXmfSfwQ3hOosbGRIKpF5qebATBylzs","registry_src":"maJGJ2tAa6zVtW1rGhngNlhEZDUqbCwO3r5mYxDBCsQ","registry":"yRmn7BZDk_c916ZNy8JBY-H52vYMrP8SBp-npeOgAbU","profile_src":"LNTKw-wvmybqSrxvtMYtdplOADLAey1c8FpNXoMa638","ao":{"module":"I2E4Uu9bVmxCmXmfSfwQ3hOosbGRIKpF5qebATBylzs","scheduler":"9uDpdXg7JjC8xonD61nylkcjA2QYIti7jqSKgxOuLWs","aoconnect":{"MU_URL":"http://localhost:4002","CU_URL":"http://localhost:4004","GATEWAY_URL":"http://localhost:4000"},"ar":{"port":4000},"authority":"XztbUZU7D8lAcWlbg0avCD0s2lMBbFGgTC4YzLcOR90"}}},"modules":{"aos2":"KCRP66Aq-4uQ7R556SgaNtzDNSnRJW4DA1m5sgxirDk","aos1":"WpmAgOtIAWrtwyrMpWQv8bsINlFo9N8qu8lXng-Hjv0","sqlite":"I2E4Uu9bVmxCmXmfSfwQ3hOosbGRIKpF5qebATBylzs"}}
|
package/test/accounts.js
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { createDataItemSigner } from "@permaweb/aoconnect"
|
|
2
|
+
|
|
3
|
+
const users = [
|
|
4
|
+
{
|
|
5
|
+
jwk: {
|
|
6
|
+
kty: "RSA",
|
|
7
|
+
n: "uZbloE0aCITj9JxuK8IhhMf1aCJzDKG9oK72Y6-D1p6VrSQ39irWxa5b2conpLnlI_8eiiwuUbDB1a_Zq98icah9I50Ky6E4iAc038yKILE3QVuJO0M_ykbDEeMaBufUFl78kQYFS9wRTUy9pDOdNp04TvN8cyB94w6ArubxAzavq95U2b2XEaMXWPCX5K8ahZmMc0OzAvNVoLBIXrrnkvB8hvIxbZAgVHmLl10A47O-7EADqa2_ErZA6He2PTnQexMUEWhyfqhRPLwrnzR5CfwnRKr8HDMsUETXz-tuCpGcDDsmPjLPutCjS4Cc46bxEfOdW2pfjAYX-epoeL-eiu7-dEf5fbEWoE_c_IKADgzl5D7t3GgojoHGBZof--Xse-R0vqgpw_w-ovDQnxzWlwtRBqwkWxqAY2v4KsNPMKVxS8eiiRatIMca8Q38wprJCOMs0hjlt-k5WFCez6ndvc0Ir2Zwo5ojk9RfpFv8pEgzqZEvaWwzkGNB5BP5_HOCS0s8zGTzo9xn8niPhyDYZi4__7jR1JVDKRK0Cc0dLO-yF6jDppAEXpUMRyJ-chb9_zJ-vcvztDrKfRK_pcHb7KyluiJHUPq4QBB5RAni9MXLBItEZzhFLMogU_sgWzkgdRFxHo7Ne2z_C-os0QAAXOE4WInq9j5Zs5TNuFTV5Rk",
|
|
8
|
+
e: "AQAB",
|
|
9
|
+
d: "BTKkOMKgDYgHSGUPMtuLi8f76BA676oiAPuVfAJA64RihchjZtoZTM0O1oEybgskz0bIaK9HFtOgAiecLZOgx9UjuBkgYcagqjKlePUmEzdTaFmzdLzz7urfcMNPCc15Y60CXt9vy4mc1HDnSM-HQi3SE2f_XswUqoTP9tYR_viLoAEomDaWohBSyZNndaiv0fkUdW_6dgUxqz_0ru6GKNfibPcgikSEm0kSL0mUCkyQ9tXuJFTw6om_NKORr5JMc_37TGeD-Wcma1CL2jgigbSVtvcg-3s1bQQYlUKvQM2GNNN9RTWwGrfYMvelrTySOOH9UL-gcHAFQOMfTO509rviDOwHBGzAa8mp4GIBPYiWHFwEmyNe7VPe_71AzxSjVzZo5Wn63xzpNRZCK8ujm2CHFehEMvlq63cM1kuh7YCLRytOsGWVjoMPe3vhO5RDwrQrhwFE5nYwzWHxH4dbsh8IsT8im-yfUqv8Er5aJsMFmhFMT1OUqlIQOQ6cRI9zJdjB_rwHWVLWqrw2RZLMXL_Wk8LSDtRqaBTqjRKaXLOHAsz7O-R2ZFKuHuAAuNNGysCIdAIVb7q9t01WEKQS2DKLmOaDRHeuMBQne-KWUSnWWkOo36gBiWajQa3lYyIBdeszaTi4Tvvk-yDtMHonqAuGVweuZgHMKIpL6y4Q0n8",
|
|
10
|
+
p: "9X70tZFhQYI6F3h9DX44G5jY4sP-GuiIkEBn27a_L8XmyG_WF9VYYIV0m5y7ZBhM6v3hC-m4iJKxDpAs3hj0UQn3KQDJOM3flxAEcWtFFSF2IE6vX79uB1B59JbSHcoDJA441JwdWpCCyQiIg-ryh0X1f3DMTPoWdcI-KD4NeFvuMkQFqgj9-Y_J4mhW88WzMHexwVEFGPYbJ0ZZ2Awny6co0__t9U2Cst721Bs8Hon7JH4pqEFO4dzY8YJ3scGVn01YPumDkKcUrOTxLgQxlsNZjzQqdRg3YEby3G_460aVMt2XT_MS6GpJ3QtOIpUZRWNVc4qZarUw1ko6G17zUw",
|
|
11
|
+
q: "wYfBHNc08gHPKSrR5rqhUPVTB8nALdwiSMka4mNVMji8DouF56s6eZPxP8IA5c5lcaRUFy70ofuFUduQw1vfy1VyzadMw7pIAWPmoi_L1fFbrfwHIuHYervPH3_wpg6kLFEbB9fdCX6ppypgVb9j54Ls6v0UYqj_Xr5S44ebndB6QqBIXZk3m5Njh7eAXMgBaoZSGHGWTk_p9fCnFFE0TC5QHRNggCzP4P_WmZ5wwgr9Ymx0Q9pPkKee0ph3nWO758lKyk7P3MLAFnFhbHlU6PF6Tq5aoEfjvvl7vNcnLuAXbSPSiriyjIktvHjVdCtJ3BMjlNE9EdLoWwGl-d2EYw",
|
|
12
|
+
dp: "k44mSYfDPBupDPhnuZd24-d_3PTOo5_GjWWYxy_VREKgDzNhLFwYTZOJXgrbezM78DZ-cKmfN79r2oP_49J97sOdojCNwa3ESUjgUseV8zh0hsCkmlk2KgFN_Bw22J7WOnKt5-SZpBid83VEkH3EHliHUX0b3tymaUtCDvAVKpWe2umVufjDpp-tSX9LXCQlKumWlso61SD_eyDG2Zucw8SKPrpibYGUICzxkNV50iU_JVULds0iO5GBd8_iX54qb2COvOmgIW67d5v39p-gqqxqBS_moRDYH-8lBCftJoT7ImKcEvrYD4frM4gbA6A4W0N0VgklY0TawMJGoLL2bw",
|
|
13
|
+
dq: "cUhft9wZN9frRXO1LlPsfZE8qwBjp_SFdQmS3RW8FwuyuOje1v8Z2XTJ8MJE-D_ajazdNDzeIbszDPlzQYeT9lfsPYlCnAd8gqPRqvpDXNZNDgjKvJZqu10YHp4rZWiInRBUvECVOCuWby2U-lxvxGKU__BocF_wK6tIpbsJUlVoW3urIG7BaCXcSuMVFjpU6d_6SiijDPAmSTo28uOds0IgzwQ6poyUmmXnXkCqTEtWirhlThqKHGihxTBORCjPIxxm1QlRDy5Idlqj5nUXSMuhBlF05wFtxKoQzjc6zmuKCu6_HUiD61OZHAu3FqsILvRdDY11K-vC6xKJ7zrFdQ",
|
|
14
|
+
qi: "D5o0OJycgyWor3HWRMXmjDJtgciMjXG0YIlKxHeb2q3xQ6SJttqW-ZKstPvUQEBOIe6CuEkGbj4K-PgtOTISmHD0PInTsqm6Jbe_MdRWxmN2cUAZd-aH466bsgq881TrIuxQsmnVROowDSSrXX0OpbO8he8vv_DRImKImkvnL8-YN_oTtO2b-f32VmSI7v9Ffu9x0MgTJU0PfAlo42czDfkkaXshqZPHO6t0Jq-vaPTnSfkQWS2nNvFunzs1HX8zjURzLiRufzT_0Er3fv0It9uYLD_lpPUON6EvZyUm46lPAivxgNQ04mtu0GVgFm0QlImH6xqLm5NU2f_Q0wUb6g",
|
|
15
|
+
},
|
|
16
|
+
addr: "Rix7e0HB-8OAaimcoYkxTZB-dStgTOHWUik1DvKD5vM",
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
jwk: {
|
|
20
|
+
kty: "RSA",
|
|
21
|
+
n: "mbXYDG_yPtr5tqM51zYRNNfa7bYfgwz116HYiERYeLCxMgQnybW3Gh-32j2pzDLsKEL1o8WOu09AugiG2NF60Zx_Y4Wr1dME0OgipYddJ2VesaK5vb48lv5K1J8Rd7w6OjMpk8392Bpnq2e9cruf2-ZtJhVzRsuBGAa2PvSo7IBJC11uCjlwcoAEyKMCOPriE8_ZdagFbFcfiH9m5ApByNmIH6wYB1at5GVbkYACqzyc1qV9XfZLuzJ6CO_2OMtbpjPeZ10GOXALqFY4JzBtGdyYgYD4RNb9Sah-SLI1bedxCRLjQjrxz_nXVmE-2hZmFCada5HKChhwqTdvtEd9DjGh8QHNJvE9K1_YqBy_twY-qdC09LKn3v-XzwiGdTWHxKRF5xbs59VL8HY3QP2ZPyE_nXehKuoQlw8_1-KnL1MYyYqYBnu0QEXC6NtUbidRHxAdNFepQRIbRPNDXbDa9G34I98AW4I-VhHc5kHSMW24wB1mBbUXXiNYhJ25JugQGZc6B-dY88wr4oy_eTexZ-9uCL4_tCSCTC7-VQcV2rpEI31sei8pQ_LU4SdwjMw3jocFFEBRmywo50YI2geGT7pO3iGuoLQ2QkLBsSQcJkSeVOSuOb1BCZjBjc6_3Et-wofBFtgX2jSOP0JJTy61Pg3DWYe34OF2IVr0fcF4U30",
|
|
22
|
+
e: "AQAB",
|
|
23
|
+
d: "IbB1deRjV9tut9T2rHCxPL_CwC8WoQaKK4TRjKxOJ8WyUKAQiGlHhHZHOZIiURsoH3rtk8ONEQjBywRracIgBSkj0pBNpUPm3lLCpT0R8byKEKz1wNydMwrxI8DpdzDOIktsZXTUmjTPXAYUw7zTwMK0UZCJ_45C8R0nfIzrKUrEt7T2lU8Zkj70zXTM2-hA_M6lfuAgsCo4QxaJWpnU6UykRSzW52TcIB8G_tDrxNQ4G-ORorKEzra1gJf3g2Mu5zKfIFCHOLeSFocvL4exoeVzl47I222zfh1r8Er-4uPDJpX5MV7x-P9tbwVJXUtjfC8qeZUujx_kMXJxDTZN9iM28kZRiyHlKu0QwceevRwAAsoLwVQq0nvEHxPM5iuGJL4bomtJzULS3nphoO3MvpI8XDG7L_9wIjfr_joOolPTQoiVjYDpcy8lxQ2ZFUYHc0LaIzfp3KUR7N0cfHtfXSXJAWnV4bBY_joVSkR3xw8I-MLJALSteTP_yjTnNs1ncUqel8ZBurKVWkWFC0ymxCszGOXyVJ3AFVjRdsi7x_PX9vJnbYy0A5fuFLbtEp2ha0j5mDSjPcE5DhZ71ATJtMr7nsa294_JMyMD_0rDbZNkFEB_dyIal_T3kqQqQbx5AKJsY1PQpEmJnSIOk97WLX23xXppFAzKKWdMBqUrNQE",
|
|
24
|
+
p: "1uBrjk44EnkgHMyA65ySgCnrUbLZI1w680TdCwpIs95Da2-z53twsaezS6Is6hLoZL4eNa0C259rhOMsKVaQGWQzulZxXgXy20i7v1S4md_zTgg85tws-HEj9hCugkoVU5BbWmUILMlu3sq_zNS9hN4IqgexxI6ws2TKea3xjGZKHkcnW8ut4WE1YzHmYF26x1bQyqIHnRwPYgpMXs5sx5cJrNLgVG2FluTpta0cMykqce5_oKKMEkwFxfedqQHyjdQLt4GucjpW_Hk2b5qK590iAirZv7J4seejg7O2su0tmRfRgKxPCxgi04za49FV-ErnsOUeVuxiLKidMi66LQ",
|
|
25
|
+
q: "tyCqf8LGUQmJVTteAbh7F2uGWtG2nYz3RJidlcJuFcu4Cf4vEdqtvFdLZuQmjOaSozeZGS_v-eiM2XQocZUfyZw7xyEuDxXQFCD9W1ZGSSJNS1w4EEGOKqgrahqho7Jwg04P5jbjJ-0fUhciXLcZQC7ptsbY3T83SN4ojj1UgB-aif0r4f-_LLvC_zgnhTxr5E7ATzyIPb65QXYSmUM2EFWB_2UPw8AWQodNZsDGT45pB6uN4f4lw0R5_xIeM-0z0EuY17dZgcZB4yKVY6_eHDVV4KopthgeIj5ebZtVT6mD54OZURNtm_1MoUkS4te106XezTmWKnjP6GhJefBgkQ",
|
|
26
|
+
dp: "C0QA35kiP3WyRVBDghbXZ3jLKaFi2QPA43g8zpNfdG62wi89E2nZYrcUI2cBS9Rp8r40_0Nu3uzgyjrO2ev76hjizWYy02ckcHLDxSg_9XFUZEbySnhIs03bQM9nFtWjgJoU8AxT_WUiNvQSUj7lIM4zThbRLyj8AqvKIc8I1v-V6zh3y8xF9YcPMYAwP-UqIcFfeQA9vfL2q4E2t9HCykQU8caslECZvGuMBUZqMBR8cTS75EQha-QoeVSeI3pCqUTwyFI4Pyzn2pzQSdGkbrudSNfOSsqkoU8vt3v4nDDrLxecmE5wZniBeu3rm_4hr77dntykVpJWI1lDxJnGkQ",
|
|
27
|
+
dq: "Pxd3BmthjfveH8pDWg5oAiqecF2-L8uoSS7XZAhHiyTTtEWpi9oubywYI0vJaFPsA2WdToswf4Y6OJUHdhJtkDVOdw2cY8AdH0I6Z6RytLGntaYA_sDHLTUhN_4S4GYS03oqiiMw4cmVN-AWi6DdhzpidQFPJ_Kmpmk7yb2hhj7dLFtYKhXFlLDfvrRnEUU-2rqzENmHCtbR1pbKU5lPYBNFpWr5InTkdmlNJnCWIkSrNORLDqhT9FF8Qn_IfhVj-4iAERnvMYHPo2R_2Yd223sYqj2V_1GR2DRqrhKNMtPxSOsTAFbUNaDwLMUTR6oPz-pet4_2h411-9kqL2O8sQ",
|
|
28
|
+
qi: "G8-51_DkhkqorPChF7jmBrlu94qW5mqRMZWB0OS2PsV8OG5-LsdmIMT5Pz_r-3EtxJ0VexxmjPk0RWjQydESd1u8mqGpScPBuAV0Th7QonHad4OtEnwiiQi7U3kmhDAH4C-BTxGxfy2zH-DLPHEVMwQsoGs0b-eEtlxn4q3iziSZMVQvuZUKqHFy3Uj5iRwzkozqUhK3jHEumTFWpyjre4oWQy-EtHRPQ_vlrYVoINkbOZSSXIVgPM8bhsuFEI9oAWtwxZPsfbezueHlNAb7wOLLoGwuR3_ILkvoVgSb2ZOVOa2keNyepWHC8LWQsV8tPHR6r2bQ5YWzCCYBZvf3vQ",
|
|
29
|
+
},
|
|
30
|
+
addr: "I7rrECHrYnAC_BIEbfHqs84UtK2ZJVNJfHaXEezVccQ",
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
jwk: {
|
|
34
|
+
kty: "RSA",
|
|
35
|
+
n: "xOm9h9pK0xtofkLwiTzp-H4QXXsj5nVEVYotY6YGWXItVQkRkSZfTYLvQpUmEMy4XxrOQvRl6l7KXdm71kDlSBvQT2mS-G0dL5mZd1kw3SZ90qs70Q-yemXNApgSgjPWckesSUOP6933x3BM75lVL--RTbNmGc8Cs5YqbL3drsrDoyI_PDXuxCDVpLqbM9hdtjM7PvCCz-e3Xl4Xi0SSYhSrvRQZ0sZgK6vIL-K7bihqfQlSuFEBZBm01PH4mxL_jX09ptaVDt8ApI91d6NMfwchZMOcodvKOxfFPfa17EZse4uI7N2-xYH4DTVyhTowmLoKH-rsNHnSP7QOoWeW3rVqm5OIlTy8WNoeIoIpC65pMnjmwebCv1AKqz50BhA0xEMaF5QWv-cZ-JsR1VWl3HnYX7YThVhEKx6gBboE8oftnxjBDWNmM5EcplHpHdnIKzOn4GlxJxjsQnG8lGP7o2kZiUvPjN4mV1dTUBGXv0wIGDWhCEV7HVhAwGnM0QLVHOEjtCgTDEdtO9RsltG3iOlFvoUEeJvK_qe7cyaV1GJOEhWkLHA5FDb-WrwdgW9gRMF1gyUdIjSLYP5sE0_ocugQIztEeyWuTm3phaL_4LRDyQOSGb-W0YwuVXdF6FrmEWZ-IntMqFUl4Wu3oKf93mDSO2Ow_D-rHwqM11NXc1k",
|
|
36
|
+
e: "AQAB",
|
|
37
|
+
d: "BGkKaFaX2okW95owg-THOVw6qee8mtuLBrhwzxyayhn5naZozCqC5wjhxEj0M8GfqoYLUx2t6UheU3V-OvlnbHLh1EZOA9e1ZOMvK2iZV9N8hqfa3KvNLueE5mpsb00E01JU76u-XdIyC8RxfX24PJN3mp9dqZvRmJ8D8ooN6Xpb1EiyB_taqCFmvGKik10LLxRc-H12DJaI-Wl1l2_kFtbI-7pNk5ADLoJrM8L20p8mNwhq37tB78SrBtVbLYv8IpmvJ3a2AXTpfh-pcGvKDMYZ3FImRrJi-4Mku40BFgDqZDNj0A-HLfcwGVZv99k6plBAzEy2DCNwKLwAoBXvUtUQ8nRk-Ec4NohFh0NMTlWhBIrRG40EVaMr7CEQYqar8WG7EQi03rqc85hMdWVaumsJzjXNfQrI3MXWOXd_nDN0BcFkxaVlptJAuHHnh97AkqPhehZ_KnpGpcO8V3eUzYZLxVauMwGDgAVfsfTc06Tct6Vb_R2Bt7rI2EnJ6kpN_-PZec6reKRuEm1Mn5gAGIcvlqyZdINxFMBoqjQD6mliMpHa3bYKox-t05LYA0ECs2I0RJAJWptZvQ7IiQZgzWmObcdktZSWZVhqJ2mVw-Vl2krIsaMmy1AZzJUSeiRQCxtaJme1S_24M7-Qm2lDgWqunpBaSJr2DfvW6yWVr2U",
|
|
38
|
+
p: "7g2Z7nevoE7Lzm1rqdoC2tyYIzsra6cdlPyl0KgAPix6ReRzJ84b2CZtvBS6r4D3g9MJm7PpbfSOesv_p4lA-KGeDHjn-1gL6ADFechmPw8wBAE1kOHRF_ibxP3fIJ6TGuGRaLhh0yHUORg5y6P487g8JsslMFZ3drW0mKj5-MCr2KhgcuybuEdxCi6ERKJrHIU0iBNBeE5P5SgHx7YJrC-K2SQZ8zjSIU21nkXlIaNtPkwK2x58NQIL8fTloT3wD2gavwLO6J4jWJi6QIDUiW8UGh48Nfmct0ycZMtFAK7PhsUcIPFwCwzuO3ML5j6KZDqVvSYVgkYxYmSq5YXZ5Q",
|
|
39
|
+
q: "08Ij3U6ojcVPo_PWLBJwyqm1EtaguQ8eEkyNzF_GmzEd19f3iBMOui9wvIjP3Krk8w1Fo0XQw72XGBHHoZzJd-M_Enxfl-Ch0Bk4EYUZrNXzfogFbXmH9p9jmgWB1f2nkSWxgXysj_3RVZ5y5fQ-mVY3Ge4o7rdOq2dVM1r9jZ4gU9baeI6VV0ZKkF2-3hhmIyqwTo79Bwrm9HzU96h9-29P3MWheQHnUlkTbskt0G-OLtq_1nvLMHC7IfiKrmiNi2WJAlLSRJ531kJ61nzwxlbOPx0qQk2fex9Kb1AkVdCQfNWFcvA2xyoOUq1Qt8kz6nKuxKC6CDZPk9Io1e7MZQ",
|
|
40
|
+
dp: "6GAykQwYTp5caId7f3QnMUoA4PNTcWTShasSmdpFUmvMeAmHN6YEnDz3BZAepE96Th5l1K4NAZ6mrswQJZTf7VSmmXo0ya-q_7AxFK5A0PGcZ2xew60LlSDDvcosUwU4iBcFAHpsU9ND_O_fCyBnVlHTtfK7vLHLMAAz6Imaae56UaYbcFPztjFW8R9zUiRR9qc5HlPdpvibGRC4d4UFcCWAnnKVOk2PIZ9f2L5V6z5C13sXZcoeaQg0bN4ogfuaKQ_we-Db5UrpKgT8WxbnYbkioFQ_ZljhWDTavbGHDCGYxvAGg0nrm33l1_Z3-Su3oBtoLBnPCTpH3spx4FeG2Q",
|
|
41
|
+
dq: "UUkTxU79arZT9OaTzwUhINp2NI4I0iDYdUPHpq0ZKtd20jUHwsc1_whY6TZHPDipfBcbJSqWkZzEVCv3CrWJrKihvHHbrAxBcQVNPYRvL6ZNOsPx-W0OYQAcFrKIfWFKInBqq_70qq1O3uPczSKtqOSscBq4wbHB1A_tZ7JE5EjPtf8ii-aHsyG7W6FwtAZ_pn4rgWxn-n0X3L_SbGLUQWEgMen3KuEtL7IbwIofOQSpepjjzOxmOej8HHUwnvRpaRoHtsmeB1MhQzDvwEfjkO8faqDCaQMs9fEz_HiyCfLuk8zO1ikZjeg56Ui4VGQ6toNhTP85ig93CpJAtKZe9Q",
|
|
42
|
+
qi: "by63I_jq8AEvZRkQiViTP7pjil75oNNjmYL9BXnIVF7ENiu6P935UxS1ceWVm3vtcW6xX2SuvhZ6ypHAti_JbYa0YQZwxqzDMB_Cvo-T5Qpfzg4EwIOnJ4x_Y6jaxf56KAmWEkSrE041ClD2xLWrlytqlwipGBronkuWTrx3S4-RDH-pqz_Tb3hPMUfBsumqtFejKqplRe_XAOVvrURTliVjNCXv_-TU4jyC--X_f79eBRxxCONPKHfEgKteAErWB0QOKSs46dWQjVEdOamwZZv5c6dQusbbgtzSHyfDhw3nDK5GVm7RF-hLLZRkBrzybH46a491ZQwp5mXFlnMq8Q",
|
|
43
|
+
},
|
|
44
|
+
addr: "aL1ZfFd2g90vy4TuF08OAVPhocB8obLG7sIyMv7_lHk",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
jwk: {
|
|
48
|
+
kty: "RSA",
|
|
49
|
+
n: "qrpDNYXNDf9wDbQSwnCc9eKTr71TIWF0FN5bEf7c2cByYlde99c4H_W4HPn0RjCusfHN8svSon7yGXbJA2SXMndbtbOO7MtXV3EhOOBjSheAiS_LmwUarTSb6pbRsQHremPD4KZR310Ur6A_kwdouEyW02guI7SBi1cLRT2x6lWrcJ3aeYYPQ1AUjV6L3emNJEL5MbKqF8CMnEzX6xBiEpK9b72osT31nJyUvqv4lRMwV1xxJeOagxaIwb6sPwErdTl5G-5Torrd2_GI9_f9GGDI6rGmNrfHoihr4sRwOROQLDGn-OkpoXsLXJswBl0KXsTgz5ctM5R6_LtDsZJCl9-JYenJPWgIBnsBvEWCKaq-nhy0KKPXLnhLqT5uQY35OtW8-Mud-VuV8KT8422SEobk6nobH6L-BQhdjM1h6bvqqo9cUqfrj-DK1mG8MZZcbHEhiyO5607cJPnIkSRKnccf0D0uZ90z_3jQEh1xojc-ouasPYyRfUNNEUmVV6Jeotmmaeip3t4GZE6ECmwNs12DFUS2RSVdOmmbY70i0YF6fcYEsne8B10GDUEMK5UDEu-zrmOmQTWRuYSUvBEHkHtV78BSHAExXw-bcvwyShlz3HI1H33I6x9GA67ES4Yx542fnLb1IwRm7ZcJVSQiqgoZn8DOc-sqBpY__UFlAec",
|
|
50
|
+
e: "AQAB",
|
|
51
|
+
d: "DL4_ZjJsMxqSwHflTvcWq1gnCHiIrz0Pa_LweEAX0V1tP3Lgp0rv3DU8JO_xPP-R1b1dnAnjpg_0pFSHiqww7uoWAdKuHQ8zOaPuxC7xELNlYcs1ltOpzi2j_HDkCokncuiy0t6HNBvF_5l_juSZx-ilLCo8CDU6cCFmOXWL68vkmOpnYSe4Lu2LKZKNI3PoMY5mldnzzgPbJ8JClL_FAJ7l6rFZpihT4Cv9z3RiZxPAfKmgcAdBKrF9ZRZSBzF529OXR-LuAjKRfPYjCfzMIUww4vexZA2R2V3MA7UAei1ZvW3taQWHGNybmGUK9iA7gtLBXWCEb4B3MTMNfMBIHd-xHUBYoLPDA1I1GCnw4cWYrvO1JODdWrI8quv6-hXrHe3HRU61YRtJVKUj5AAYCHWFZNPEkH9DbDKQASqTfjNPhzQ28rD4pREUx5Gwu1yA5tadKPBZJ267KaKZ7vVa0BGzG3icRU3G1v3KQFoZu15h6Rtd6ljPEbmCfNphYupGK78WBdUbX86gHlzqi2WAI5cDVgnn71_kaI12AcwUqJ3CnP5D3eTBZ5w6qZKgs-WoXenzwLe6Ly2xXA-9IGF7dibEa1DZ1UjHFDh_E5VlVX_oywqjPSM5Jb4NzqHKzA-345SFH1fEzT1a7DukUA0AvBMk3i6G255phhxVam56kCE",
|
|
52
|
+
p: "1Tqxjwzusm8I2OhXRIY5NSCpWRpzWVm_W8kF78BhdG9GwbBauZVsC7-UFQ203anmrylPzx3HZmm8fEp8JH37UQBKBcN600wI8SpCwDJrwc1qUkpzlUscrexUmVRcQvYB15UduvWVQ7zkaexGsVbsXUZK9XuCupgK0Po3pg0t5Cha2jvnYJmWVNGQf0cU5-CWYIziJcapgTS8YdY51OaISUYWwcVSeXhBSanbzPGOwZDrB7Nbh8oxSfmj8DmwDRCEebSgz6EIsy3hFwAlpe_W_6hVheZ1FelupPx4NUJL55iP2NZutlYu-8Nca51NaunSPiYRzKSfn57HcoHCoH2jYQ",
|
|
53
|
+
q: "zPkcXiIT9dS9qNwhEVy1ZZ2iZDuzwH1s9Ker2dQ0zUXoKYbpRltv5EjkUnzUuijGNUgQm9rulY-YqlVoJDjCjoQ8qR1kp2UFfNd3eiWLzQ-oW26cTiLfRthGrxIuxgOPFPop_uYynQQ0LpNXDlF381kDvRir21YF-dc4Jk0GwT-EXIo7x7zLftUe0pZKr9IPAHt-6c7ukqHvaEfTuZUbTmyJraCOJ81Nh101VlJ84jYKtVgZXGq3yAVencVl7I8rFJzvJSyow3e9nCja29hirR1E9dPp01Xh2QIm8nmrYJ4kRF-OjZQ4HeC62uo3mkiAmCubjOA261I9DxibCvvyRw",
|
|
54
|
+
dp: "tCF1RmeiblKmorcEofrR8TO6XG-f6meK5LsZrMRUj8xBdfbJbeXw9KvPKUn-9RNGscqwhUOe48GHXWh_H0TePjuETQIqjL27ACC3ay4tIfeqTgJfSku92p-_iBhgKKEyRTDPgNVeV28HdwQHZGEOJG3xfRfuBDvVR11aDYksr4X32kyo1k5pVRYEf8FIw-pSnxXlJgyBvYkTa4NSL6zgjSYMq31Kgxs37Eb2TFf0RUlrg4HdXQVORjQCbjoNo7vEbhxNjZl4hAXKFWgmZdwLQMawGQHq_6vHsNEnq7Zp8ShMvN3JgXelEUKknLSyZhNJbP80IjEgN_QmgXFlPbdlgQ",
|
|
55
|
+
dq: "ZoQpZgNRTGCswynl-BMQPtSKhes-SgXxWqQJ1ZbHGeve4_Yv8hqFaf3zBDafBsSh7cAvXmQvc-owBvFUdtlUpYcJ9-NVlkt2ZSw2-4aP123_XEuELahPV9WP9Lv5XNwm0e0U2AI2SkXx-2GB5w1kGvfoYMlYGwl5T64OzUk1Ga40-zvADnQkqzjYg6bbj_hVvH4HydTPidMoNFXIVUd4Ms8iRQ7KSqnqHsvFg3kaMOGqlWyMsqZFaOsWmX5DLf-lIlgjW8psVecrlFDytYYSRFchSHpGtoZ7wNfMtvWXe2lc5j2MxM7fCkJ98kO2r5mXh4Q39kul7ChjlYtO8D12vQ",
|
|
56
|
+
qi: "yIOFjrcvdERR93nm88D4k8gvwYo5qpyJp5wyFbqXNF6hR7ybp2Y_ebyxsf5CSWmxPWuqU5fF4c461tH7zMuk45cW809HukWfHZuMQBHIBNkKy5hbnYqBgnCCpnbqA_azyrL7Z562IKmoYeSLa2S-SykZlAN4sOnMNGCvDJvHsxd_9LVpM6qlkq85KqtuOdRh24xPdvYdXPjKu_qSV_LY-8PC4CzlVEgUeRLDH7tRukY5xMXJbr_ATSy-J2SJCItNHTPNcuJ6vWekCM1EfbXcL3NhY4AVjVUGVkiHfLjCcrr9i20Yokxbjsg7Iloj4HifO3pV3f6Hb40PTJAbFtlNhw",
|
|
57
|
+
},
|
|
58
|
+
addr: "oepP6rUoOskYDLycGPR9fuk7eJdYUgCqp6_WiLMpO2I",
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
jwk: {
|
|
62
|
+
kty: "RSA",
|
|
63
|
+
n: "rRdhSHGUHJ3ntvZqLgclHNvemDl_VUJTBD8qGMZFV0ZSNh03dg1N1kJZkqCOzSg9WXKejOteEq8_gxmd9DYMTf171HGu6mKvc1Wtqc5gvMmHKfzs_vBUC_KTqKkGzOlIlNYQKWIRzrCTaLmdhlJVaaeNdONeAR0xD06nsoQMJlonUsbGbLqG3lMKVho0tTL6WksmHqeb6jJDGbmxF-N1LwEnv_nQK_eCKmk-ijmTweikCDjZBSwhxcNE8IwraVBNk4udQaPTFXfrExs6gTUWJaOqmSPzZIk7R2d5s63krrCoekjuUeBie-ZXykgdoyRvAi6wk-XzTyOIVcfDnlAWNykbw4UBN5T4E4J5t5GnoYkAMkPGg2cLU9CqAlBjiZFBIOIa4FbIZrqvlhD0KLSUCQ_j2qhC30CJjX1mSUY-ObfBhXerg2GqlKTkHkm43itFuow2G47Im9PAOkrbei2yU3OB27Kph8dEN5eq-87SQmt9_an4iyXssrtBqZ2ErWYh04WVh4_svA6MEF1591aS5RMpKFadHUZ14IOhBf39GozpRVqB0p-z3_Irw_p7JVzQcb_6yIZ9Byf_ELOPad8xpXocsjN67FpNGKngCmX9YI0W03yugEfNI2CDOmZFz1iYgBHloK6PSps1nlOxVrt8MNHZPWwX-3YhckGvSr5hhmk",
|
|
64
|
+
e: "AQAB",
|
|
65
|
+
d: "Vna65GbEH2VrpfRCxxpPmjJk57K1HkBi2ti4rSaB5d5dW-XNWh28N57uQrYMj4Qd3UxJ0kgSto-vUMxfoGnNTLomfNGLGE9SqHDwrsXGghfDeqB7PMCNo2g6BYLlwD96P8sMyLdSAOcow6QRAdOoEf6eRXj8cN8FrklSsPSQYyoewZVE8nRcwbtGiwtNMAS2lZs7gA2m717LMRMW2UGIvIG9uwLNz-C0N35aPM8VNcSCCA9prVFFz5XDHsxONS3liqIv3GW7IFrGZUVxPLDpjsTKh_Qy9ZItt_YDD9P6S584kdlTnzfQymaejQ_oKiIdh8AN-dtg5rPvuzXuTGtiJLjGI8Y0LiFmpf8nKg6BnRESL-MhHCLvLkKzTT7-j9m21VvcbhdGUe4TE0ofLzXUYyETAsk4M4CwJTNKSBdS7L3exvLodXHCQM_OjWAzeaiUiIGWMVzmrtKh67wAFWQAvogmOhOkxPgeES25R60iix-DjtGFgMgNp2H_HbKQMtEynPpzwcvOrOzFhfAtfGFanKXryuKe4CpFcnbvy97B7fRipVS1bBBogfI_2mhx5EoQEtuSBHsqRlEn-kLLPxceVm_KGJ8QLFwFhhcf_5WuIDSqvM9O86YVkrN2eIjzoFb-z_M9o-5v4iSXvYykymGCgYSRYK5BRqvU29vRZCaI-D8",
|
|
66
|
+
p: "74nngtXGwzoomqFmwlL9d8raOS56N2shhJXU1_4qRgsHafJSI4A0NDwBDLa8xq0yze5QTrj4t_zVAKFub49pX0Kxm7_dqDwNIRZnsnPF8sOUjS0YUz0_oQXZItpevhFNxPKzyZmTV61KevZsH9tA-NwsX7yVRJ49MrWUolsrtHQmbU0fmEyXWODBMVD9euNJVEnPEwlZFOKqq03pUp1c1IbLk-kBGaUv7EEOO5r5yGj1ph7nslmPiY0h0gJE2hL5pHR0E_LFuZrqIV2n831WNEXs1iJ6ViZl1oYVDxp_xSXstrhyVJ5lQ7Lf2m6ox4Pxy1bXr_LK97JOOZKvxc859w",
|
|
67
|
+
q: "uPx_UmWmBUGifv0CIj4OijWrM8baz3yncDqqv6e8atlFNDDIQbTP_y9XBxMmMUGw_Sfdnut1VcxU3ikY9kZPUCjNuRaIPPh6PoV6A1QkFjmYiRaCjLGa3Qd4ystC0tdkkWGvn6jFn6lO5my1wzVjy_O9JUaCycT65waYyTXP3YNCosjwGO8jEWJEWS3a56F4X2C2efY0E_DstCD3G1DQvUlxYOMTrCiffnbV0ewb9MW4twOTL0WrzgSuA407RbEzo8NJvvuOSAFIKFFJVChjsITplyfVJ_Q8bydoak6MY7HkjWr4uwJlWg-Vv8nOGgeKnV-N73WAx1l0e-2z26Yqnw",
|
|
68
|
+
dp: "pGNPrkpnjbNsCjKaAuJRcNSVzohG96Fd70-kMlcLS-ZlwB-8nwBs0ywazE7cXryeERVrp5rpldq9kyE2WPlipy1uFiUmST5tBDgMEjvBrUjrubco6ncuI6OP0ItsWaQmavLkz4XFyHX0l05mBbbCcAcprMoO5nhyJ0rWJlXLOJw9guVauXpWo3gbHW0niB5TRLUilz3jFKI53jYp2biE7JVVQLy3NJJYwRokWmOQ6Cif7NFo0M0F5LAmdal49u_uwx3oS4hgiW_3Hc7YZBGwB0-1qX8f1d-kJAUAjszwwqu0N_F9BPVvKXaoiY9H5SR328RNYUKOaE7FwF0ao_YDIQ",
|
|
69
|
+
dq: "Q-sA3EHR6NAmVzWRmPzr3bbCuunh4JhF6aDAnEl7lkdbb0QR4n3-eBTrgP944FDcKLaAWh7dH7k7162DKri52haBIdmx_6DDUT00hRBZh4dyB7MqD3oN_-UEZoCmcj7-_5m8H4SZunsxKszzF0786x78bTksP-SAsl3rrsSBIzVUO-xGqwDyASnxKkT5wF26klox5SmOCVxFrAUGdRMA8N6MMCRvTqBDnu0GqGJmCUKnBRrc6VhNMgDp2wf5oSbkbNYAt4wouystURA3OhzyLRc_pG3NhzPXFICFh7J7PQdNgNarqA3DJIPgWWBAubHXJNy2ghrEQ20GpZGqnZSuxQ",
|
|
70
|
+
qi: "wA1-0QVgEN44olq30xj7JwhMGxXOCVR86e-ArYvxdVBg4gKW-WkNVw-COO1xdRH0OBMkpg99ugPj0BtNEr2ftFN3h1vsk1GJHhlnIm5YCjKw75f8rMGPSNSNGuoGj2wscfl0KfX82mdS4IRyY6A5sIc-tcn5zteeEkimdZgn2Uv5nhZYXSVqjysAIPBlNsakzJFhpSEz10cTWodEkn08Mp2wF6ZTLRXQzkYry5rGyARjfunQat63epWD-T-nVHETsahUIBMLnCAb9mmJCF0vzkntLVaLns2J-y4hl666sGz-EVqvon1K_bVav4_lE4idbDNsD7Bd9VhzGOJfqIBf0A",
|
|
71
|
+
},
|
|
72
|
+
addr: "wPQsT8DLcE1b33x0qa279O_N-6XdFMC37VLEmgyZz2s",
|
|
73
|
+
},
|
|
74
|
+
]
|
|
75
|
+
let mu = {
|
|
76
|
+
jwk: {
|
|
77
|
+
kty: "RSA",
|
|
78
|
+
n: "qNP1LCo1OihKjVZ8aqZzO54Kmx5OluCDr6VuAPOws5_RReB92dP-SGan17Y0nYr5c3IzX5tkT9KKtbAC3dEqSbyqqTe_lkfIM5cXYCVHSUVOBt8J51xLoOCNXQUjxF_14hOeo_5Qvkmvjck-ZM6ezGnG1Dw8WzDKMBm1oL9GYBfjz0ymvUYsxjt_emyOoaFz6FZ8Q12hiIXBSnalJWYgAmp9_jxcwL5SDcWXJF6m_8b3WonvZn0QiRLJTwnQQ0E3PUIeS5QbIIMHalzdCSrMwMkfAzojRoZJZhLZDNUgRAYNPLDprF2aam7K9QROGepqO7jds85hTq23AXxOs_zXNkhmhwKcnTGcwu6sVgBG8qbP5fvrXrsulf75tncLjj3X33HTRpVCMJ3qvyl1fDpBHblh3nIa6lQc7ZrsHEN-BsHpK9c7Bsf4vPnBDTDgYNZ0z8abd8jXdFeyrvipJLH_PZFMLkZO1hXpGqNFu6YS2AwZY6mGG8GOdxNrDl6IeD69MVfTatvU9x_NlfiykeHsHjYeS2wCScEpUNYmJls3CxDhDhy4KnjnwJNSFSmojMQs0LoR5dLu3283D08z7TP0UetG0-FzetquqhTJ7TpEb7g7HujPEcr2u7Vyd3Q3-3IaOxr5B9zK0mMcjAsxMl--tZUKJj9ry4UR-C4onQZDa2c",
|
|
79
|
+
e: "AQAB",
|
|
80
|
+
d: "Ao7bmyS0k8IChyu1TORiwJd_b6RA6pZSSHoINal7lu0n_ZgOMBu_MZekmWcgWva9GtuzHZK8LV1yTphxIq1Fp8JdD51RoNRLm0SBzSojb1_Gc-IzQzcpyjE80xj91r7heeB0OeXjkU6Kg2p2MI7U5yH_Kj4TaApQNfRdxSbAyTnzcLOnnxyOFx7VqqQ0cQyCNhYBYf_sL6ZfLGKp0-w9NewpJo4BlcYMdjr1NE7e1udL3ipS30mr03feZv0uE6bMUHhM_zYqRw7VMO5hRv9IBO_HMYRS_oGQYSSN91zPVViGINJJaBwu98ff-WBsUoYzv93oNg49eTS2niYlByMgm6KmTQ2apZTG0Ho0PCaifhjS26KWbwXiJt-ojVSPk-BnH4f49lRd7qgw-I1gM7ug9S1eCZHflLJT0_J13T6aVovpKeesm6PUs2zGKfv3kb3VgjwSZpkT67T9yQfphOILl3qhfhV5_Nfmst_wuTYQ7hIMwprnaPwcUgoOhF2Ye89VSMR8ERCRzrhgKDajIkaBnf_Z0u8BfCp5FAD54DoZGb0BHddwK9VYQfccEjkaKdf4QOiIZJgm6PWiK9EiYjJu_no3mxhGqwHOPFyX82h0RFQryKIcgaXXsD7LiNcZ18algCAI0uTtZp6-OOHKVRAsgnlqZ7fb4iwlMZyvb14Fcgk",
|
|
81
|
+
p: "0imAhWkgoMWN14UM15lWaqMrsudyfasZfA3kGdnx8Fv9bZpFIEfnS0p1mzINcUozyNmYIQUgG_w5DMBCGwBVMrF0aEDmOtxwMn1qmgETfr2BlXY1bNgBsM9lFOsmJo7YPN8SuD5RCVrwenr1YE6K9nQcnSGatX3qhFidqO4DyZx26OKgAIOlT1-qsparDKAFmwTeEi6rJWmSkXBTiGvoLrAgn8e6i4axCLLspl68vdZu2VUK9c_gxbYjgh0gFpJ2Hth1R6p3nroaZtQZ251i2_RWzUNdfOLSRbXl0mZ0AKMy7KL6YIs-5-fDcewhkAh3lkdJLaD-6ZtYjc2PV5t0aw",
|
|
82
|
+
q: "zaaLSG2z4nZ3FWxJMUcSvmCvmbDAlu0_t-tPHMQwSZ3uG9BCVr8-NI8UncuGi_HOyUpq8rCVZJe9gRJn1I3lkmLRQXig0yVB1ACrECfSAg90-IXDZWckC04DlkJNB5QYclbAjtHKbVmhW67kfWqMxHsWJvFLSh3qj3G4F5ujrtoQV4XrbxKZLclJrvIo7IcAxGTC_GS4JFKRp3r94i1m6rxwkU1vR1RZLc16MTTxw0h-CJ6otYwEc5a351VcwlP1yEjoTIFFHC7ILsgxnzAAHXjYoldum5ccnWy-U4cOJh1f9FfgLQa3y2yQ6OBNQ9WG-R7dhFwxZsbdA9srNk9D9Q",
|
|
83
|
+
dp: "VU53Vq_niJroCnV9Uv5w73QwRrxf4tbSz2IsFro61J_ibNzT9lh5cDxXJJnajwPZpUt9ztlvwSxOU_iuXJtz-dHCOJcvXPEhsbzqynxpV2bA9NQ4t2euuABXPXh90eTlrT-3L4ZMCooZVv4WH_OBwKw8-SMs00K7MOFvjaSfcPTL55gl7k-BiIiCl19FKyjBXb1KDwNWgScrUVHQ9m0mn9zqQTEnbX9M2QUXvihyYHRsJle4zTKGQHrASw5beg4VWEvwvxhY2dsc4GRz4osuF65Elakkh47iX12IXjEsIR4di6RUEWA0NpoC4XlB3l8xe5SQBa92CYj_FwA7kQoO5Q",
|
|
84
|
+
dq: "Hx2f3Wmb2hwKkJc9y9LxJxUB_MMdoLhs96sG4Vdd5wWaTWMJZo6xHsq3V9i_ltUTcKlt3SKSuBGtfqYGR8bggXGqL7nMu6Xbe_RN7bfYsq8cB65VjjY44ez_5fBKL2dc-4_cur9LXZg-Ld0cfU1t1xy4kVPZDHHSV7nhHNFTxtT_u_5rTPcHbkISgAHr5z3WA-ErD309z2Ee4LRfTaWI-ONiNNn-iFBe3etFHcTg_6csSqmW5UE2OzcGxF3KFy0U9yTw4QJ-LnF1oH5x46AjpFHwlT-dYLVQgxE9Cu5YWbQAHLxfEvD9Ri47DsFBb44TSgY9hhVc9CwKrNawhxsfMQ",
|
|
85
|
+
qi: "0Fg91oiiD94elAhcMshiMnzy8Q5tq-WoAQOpPBnYR7HyE4DsjWAWjP9EdopOpsKMM6QbC-bxJKUy0OTvluWUi8m7iR7SPHbgnglyjS8KyIZkckmQdnvOZNZuRrbXDBEzhQrTfdxi24d9QodVYAa-48Gm_PBV-mzBM8doxO5UXKP3cNfxNnJpo2dxbynTNgGQolxvd30jeMzgktpsShGGsiDeCkHJdfIJiI2SX90AnlJhRZlaCZpwUoiSODRqdIpdbgogJUh8-8w_CpfUmoe5MAcgOQxh3pdKSqJpoMAC32NeCFJ8iix31BsbtvxaZMo3OSTYeOgjStb9wX9NDQgJeg",
|
|
86
|
+
},
|
|
87
|
+
addr: "eNaLJLsMiWCSWvQKNbk_YT-9ydeWl9lrWwXxLVp9kcg",
|
|
88
|
+
}
|
|
89
|
+
for (const v of users) v.signer = createDataItemSigner(v.jwk)
|
|
90
|
+
mu.signer = createDataItemSigner(mu.jwk)
|
|
91
|
+
export default { users, mu }
|