@semaphore-protocol/identity 4.0.0-beta → 4.0.0-beta.2
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/dist/index.browser.js +292 -246
- package/dist/index.node.cjs +1 -1
- package/dist/index.node.js +1 -1
- package/dist/types/identity.d.ts +3 -1
- package/package.json +5 -3
- package/src/identity.ts +3 -9
package/dist/index.browser.js
CHANGED
|
@@ -1,112 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module @semaphore-protocol/identity
|
|
3
|
-
* @version 4.0.0-beta
|
|
3
|
+
* @version 4.0.0-beta.2
|
|
4
4
|
* @file A library to create Semaphore identities.
|
|
5
5
|
* @copyright Ethereum Foundation 2024
|
|
6
6
|
* @license MIT
|
|
7
7
|
* @see [Github]{@link https://github.com/semaphore-protocol/semaphore/tree/main/packages/identity}
|
|
8
8
|
*/
|
|
9
9
|
/**
|
|
10
|
-
* @module @zk-kit/
|
|
11
|
-
* @version 0.
|
|
12
|
-
* @file
|
|
13
|
-
* @copyright Ethereum Foundation
|
|
10
|
+
* @module @zk-kit/utils
|
|
11
|
+
* @version 0.3.0
|
|
12
|
+
* @file Essential zero-knowledge utility library for JavaScript developers.
|
|
13
|
+
* @copyright Ethereum Foundation 2024
|
|
14
14
|
* @license MIT
|
|
15
|
-
* @see [Github]{@link https://github.com/privacy-scaling-explorations/zk-kit/tree/main/packages/
|
|
15
|
+
* @see [Github]{@link https://github.com/privacy-scaling-explorations/zk-kit/tree/main/packages/utils}
|
|
16
16
|
*/
|
|
17
|
-
function getDefaultExportFromCjs$1 (x) {
|
|
18
|
-
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
19
|
-
}
|
|
20
|
-
var poseidon5$1 = {};
|
|
21
|
-
const F$1 = BigInt('21888242871839275222246405745257275088548364400416034343698204186575808495617');
|
|
22
|
-
const N_ROUNDS_F$1 = 8;
|
|
23
|
-
const N_ROUNDS_P$1 = [56, 57, 56, 60, 60, 63, 64, 63, 60, 66, 60, 65, 70, 60, 64, 68];
|
|
24
|
-
const pow5$1 = v => {
|
|
25
|
-
let o = v * v;
|
|
26
|
-
return v * o * o % F$1;
|
|
27
|
-
};
|
|
28
|
-
function mix$1(state, M) {
|
|
29
|
-
const out = [];
|
|
30
|
-
for (let x = 0; x < state.length; x++) {
|
|
31
|
-
let o = 0n;
|
|
32
|
-
for (let y = 0; y < state.length; y++) {
|
|
33
|
-
o = o + M[x][y] * state[y];
|
|
34
|
-
}
|
|
35
|
-
out.push(o % F$1);
|
|
36
|
-
}
|
|
37
|
-
return out;
|
|
38
|
-
}
|
|
39
|
-
function poseidon$1(_inputs, opt) {
|
|
40
|
-
const inputs = _inputs.map(i => BigInt(i));
|
|
41
|
-
if (inputs.length <= 0) {
|
|
42
|
-
throw new Error('poseidon-lite: Not enough inputs');
|
|
43
|
-
}
|
|
44
|
-
if (inputs.length > N_ROUNDS_P$1.length) {
|
|
45
|
-
throw new Error('poseidon-lite: Too many inputs');
|
|
46
|
-
}
|
|
47
|
-
const t = inputs.length + 1;
|
|
48
|
-
const nRoundsF = N_ROUNDS_F$1;
|
|
49
|
-
const nRoundsP = N_ROUNDS_P$1[t - 2];
|
|
50
|
-
const {
|
|
51
|
-
C,
|
|
52
|
-
M
|
|
53
|
-
} = opt;
|
|
54
|
-
if (M.length !== t) {
|
|
55
|
-
throw new Error(`poseidon-lite: Incorrect M length, expected ${t} got ${M.length}`);
|
|
56
|
-
}
|
|
57
|
-
let state = [0n, ...inputs];
|
|
58
|
-
for (let x = 0; x < nRoundsF + nRoundsP; x++) {
|
|
59
|
-
for (let y = 0; y < state.length; y++) {
|
|
60
|
-
state[y] = state[y] + C[x * t + y];
|
|
61
|
-
if (x < nRoundsF / 2 || x >= nRoundsF / 2 + nRoundsP) state[y] = pow5$1(state[y]);else if (y === 0) state[y] = pow5$1(state[y]);
|
|
62
|
-
}
|
|
63
|
-
state = mix$1(state, M);
|
|
64
|
-
}
|
|
65
|
-
return state[0];
|
|
66
|
-
}
|
|
67
|
-
var poseidon_1$1 = poseidon$1;
|
|
68
|
-
getDefaultExportFromCjs$1(poseidon_1$1);
|
|
69
|
-
var unstringify$1 = {};
|
|
70
|
-
Object.defineProperty(unstringify$1, "__esModule", {
|
|
71
|
-
value: true
|
|
72
|
-
});
|
|
73
|
-
unstringify$1.default = unstringifyBigInts$1;
|
|
74
|
-
function unstringifyBigInts$1(o) {
|
|
75
|
-
if (Array.isArray(o)) {
|
|
76
|
-
return o.map(unstringifyBigInts$1);
|
|
77
|
-
} else if (typeof o == 'object') {
|
|
78
|
-
const res = {};
|
|
79
|
-
for (const [key, val] of Object.entries(o)) {
|
|
80
|
-
res[key] = unstringifyBigInts$1(val);
|
|
81
|
-
}
|
|
82
|
-
return res;
|
|
83
|
-
}
|
|
84
|
-
const byteArray = Uint8Array.from(atob(o), c => c.charCodeAt(0));
|
|
85
|
-
const hex = [...byteArray].map(x => x.toString(16).padStart(2, '0')).join('');
|
|
86
|
-
return BigInt(`0x${hex}`);
|
|
87
|
-
}
|
|
88
|
-
var _5 = {};
|
|
89
|
-
Object.defineProperty(_5, "__esModule", {
|
|
90
|
-
value: true
|
|
91
|
-
});
|
|
92
|
-
_5.default = void 0;
|
|
93
|
-
var _default$1 = {
|
|
94
|
-
C: ['FEhhRZjgD5jnrn3qRfvYO9loZT74OQzeLoa3Bq1AxlE=', 'CreykTiOXJ5DwNwfWR+4Ps22UCLhtwr0O4p7QMHf98M=', 'K3y7IXiW9SyajAiOZUryHoTN51SjzvWxXE1UZmEtat8=', 'K8aw3b4dcBtlcEKL3Byhvw2ln/O7u5X8K8ccDG5nplw=', 'EjpVoxmAOE89ILLOy8RO1gw4wR99IOknHvq5qQXu/Tw=', 'A3UBzIydyBkwmnafTfCY5YiwGFi8jrfieeKIO+n7jFM=', 'HCEW5H4DqGuxFpWwpfbatrmkYLHrlRqwHCWeyj/UfVE=', 'LBghNIkDLoWpyMuOmmWDm/rtE+V7wPrknb2uv1T1b5M=', 'Luj+09TSxxoEKer9jl2xcY8p4iJ5hf3yrYcDyDW54DE=', 'KMZNj17XqsAEySAp2em/kbqUNtHM6UuTFtERxwoMFxQ=', 'GKAdn/t0euDePoPHB/iyT2gshPFav1cbNCVKA0eGZeA=', 'HCHZK+8ZfnOyNOR3e2DbFOZCpWzucVFdVOGscc3nK9M=', 'CtQEzLyx4ZWJfLYMgJgeu51mpmd9u+2ti2RV/mLYB7E=', 'Cptt6DMGT5O2rbma9sAFlFy2VMt70UyLl6+LYMwfs4c=', 'ExKeP5MK7W1HaQMx/wncUWDvpY3c4sPmGA1FvsOqOm8=', 'DXphTImRUIqxzkiVgTuxyC8Yv3v8nigMzKGAeYOTh/E=', 'BTL37DbjAEGwSGmGh1yROkm93y9a9f6+jDHy9AlP/qU=', 'BrvLjo4YAgEpPnEvSVDxsLvugIydZCY8hNnYrhVcuJI=', 'D1WKTbGjrAf2Hi5r7pR/c1hr9A8hHOtPaHylZ4qdyzM=', 'K+FApgtbXy+O3XioGKlpsgxkPkGbzwtXfCSg0Oes/pg=', 'HEnEuanwn3ua1fdOusxxBRK46Ge6zifLDeoG6JuW9jE=', 'FwwacychsSzefzPkdqOaGqd6gcBuLqxQOEewDVl2Uts=', 'GcJ9DlL2XKNPTjGgaOSTMca/w52SQfnUwwIEFhXPJ/E=', 'LxvcUlT5Igwacx/FJ2lk2rJrOF+kC2sEvtmWDiVDugg=', 'BbQtL7zL9NOdK+kznKvp0Nxtkh6FXNkRVLY50o1KHPA=', 'EiAEBxWkGtWfT0EODAWkLF/TKsUv6dBviBiNcfYeCTU=', 'JflSZSYVW4OUZgn3u5UH3Ukl74cd7pFtkUTrtOzhNDw=', 'AXv+QoQpmud0C20OIElR4xSopdBFJBkUeXipWzR0JEQ=', 'Kl1HZAIcpx14qWdMtnCPFYjSzq81eMQRHPizWe7wic8=', 'F/Atq3RfvjwIEyH+XO+EXnuNBwslFNKbKnt9icwIFdo=', 'GdpiYm23GZtl9K3PV/pKPbqhdkp70VVwjubzeMie8BM=', 'D4jilfou2BtCbJH6aTZqc+33Xzm/GGNM0mbsQDiCngU=', 'H+McVUhUbHlI/k7hvXQS4ygO/30gywmqhfSfJ2YUgBc=', 'EP3BYTvb9n84vd5WGy+R5MxItZ+Y1kNjj9wK+tv+Em4=', 'HyYYwuvpV0UIucUvAADjPr/drRoD/da8pu9/AJMSe+8=', 'Ep/n/D76xqirI9um2IbzlNoR9ZU8+Y4oJpoNuip0XdM=', 'Fa/UzfHk+CDBYx1KuFykujuvz+5yvq3p+uYFIxAkSOM=', 'Hyx0ulw2fjcNco5x4VsmiFGnu4tFUoy3NJVgeayZsBI=', 'ETDhhy128vk2nPWble35zhnwH6icnDaybgne9nhtrTw=', 'E1I9Fz9+a623O2P8HJu9vuJCxhvGhlZJMydTOlwbHco=', 'FNpA0K9CemXxhBta3JZThlM2j3JUy1Zn3a27rXpXTNQ=', 'AJH5ZADkKX6oW7GGwXswToJjjlf9Yx/2MVl24aXdi4Y=', 'MDMpv5AxxVFbmjTUmmS7agJnvHtUoN7KXEUCd6ACzcs=', 'FO1H5VwdocLwXTwaGy5sGFCfyDNuz+nbc3kW4oP6ghs=', 'EWHxCzV3ddgQrVO8xKINWt0rAyUcdH3rBO6UxWXljWs=', 'F6ilCucs5wfyK8Bw65koUcqRTrlMxo6vu4qWpxTrgiE=', 'Gmxh15Xbr2L5klCzfsXfiGRaHBU3kdtjErky3CUOT2I=', 'H4vSq4qoQGZMTu4ZjEaE3EsFdyuyoIadpnIrFfRHoTM=', 'H/y4UqTwAnqXmfExzXS5jM+4y8BjSdj+/MYvEMj7Pi8=', 'A150LsUvGbNtSJxyD0Z/+td81TvC213dskayMCH3nxg=', 'Hfqu5BvflNeDqin8Yrfse1VnOqgY0wX9QtF1oF8uPYY=', 'KCE3hHegLplQBaVjUIhUCUW9Mz8tFFXwOKIZuMR5azo=', 'HbSk0PI4pXCxBhxu7IHALzH/3Up8GedjF08jjQSJdCE=', 'FL94iUV7ILehNns0o6U4IX1pO1JCav9ApLtyiTsXhMo=', 'LO1Swr8pb4fldBDD7JqUg6eW0WT2BJEnEJ/w06nAhGU=', 'Hd6sWAWn9K2k0EQe0QjjFJ1M5lhPSa5b39RtZ2buozQ=', 'Lja05enJe0YjBOjitfnciOHJ8hYboEBnP5ERI/BCrnA=', 'DGhA0csGZtxZ6JsYZSddihZLRHxe1kNHyu5jUCwjjV4=', 'E34uPonnHUYfTJvD6PEhgyYqTR21XFibLK6qwBI49Yw=', 'JQky57CtzyyE7Uv7YKNra4LlWqlHURV7HUV5Swgciq0=', 'FwpykvVjTAbdO/CatcnE7NSwDVzi81+XK0VVOR8WtC0=', 'DWjLvnconnjVy/UdcPG3W6IV30570BSdELLFDypPO4E=', 'DK90VjuQUl9kWm0gNuzRMG+h3GgLSdnOTtJMl0mXMXg=', 'IKfRwKJ/zOeP/jcvTFgwaxZvlFbtRs3rJV45W30w1Co=', 'BiPzImtUcLJ4m4pTBA5ERDOF6Wuc+gvk01AVFYpGhGU=', 'FjIwhojCXnkPV9aKU1AkEkKlYwU0feSlAJzka4zcuR8=', 'LeR5Om+ZzRTj9mQiEfTQt7z6NhWXxUT/y1pWfpB29H8=', 'HU0G0Z6hsJyteQhtUb3hFyWlVPqZVZyi8J87tz1yjGY=', 'BIDnR5pmp82ephyLKJdDiZCDUKvEqvwYzXXjPdEwwUQ=', 'MEMLAzaOvKqRJGlgSQvPkX14aBRj4ufXRL+0QzXawk0=', 'C1ezcyASfUxQ8mkSSw29yysfE1IkGl0SEDKD4InAx0I=', 'LPSJBlDSckDhlfYKT2mO2iSbjdYUsjN2tQF40t9tK48=', 'HiIcVSaJi/0S3oaFGg2XA3UaLyOQCKtfm307aRHGQYQ=', 'KOB0ha19mS7RpY8ynKEq3OTsaT6927KVLlTTOfLuvaU=', 'L0TWT4TeFtxnvV6tUe+x3IOByEUgwShU3V7zoHms1OA=', 'BQp2vDLr0d/ivjMPME7ces5xZ6t7oVFvQCHGLPDU+sI=', 'L1jEXl1lmmfXgTZyQfbDXYy0Y2HZeyiUfSlCHCcFlKk=', 'JejamuDkLoQOBLIwNw54K9tnU0hEMlujb8fl4WDGanQ=', 'L+xzTaIP4yAD6gTxJ/hEck84o2i6EMKVRCUr55YED38=', 'KIpnePOoOYio7Rcn8V6TtMsU9OOju7kd1tH6yv/9Xu8=', 'INzGx1/Yklm+f0BnULPbZ5olqM0nFdJFuRdTkKySLIQ=', 'F/QroQlC3yXLilQXgqGLb9Mc+WXREXjHsErEW03qXdM=', 'Ao7rhdEVqQQCDgxhSO7GYD6c7avGZKvudkqv1FWYa6U=', 'Cx187POnmyrT+imPbOp66V2AwCmezJGOn4ycPTjVnUA=', 'BEAznJdkzsecFu/bg0omJh244/Es4c9yLSPA4R/0zwc=', 'BspkfClyfBlioAIXfaLVBPSwel9+tXx5uI5reru9rVw=', 'LqEgqGT1xAk90ali6PATx7jvd4sE0rpb/DyrKGGbqeM=', 'K7c3VGxK7nwMwrqHwRV+KnfEeev7Xcdq27Oc+Gl2M/0=', 'DjDaZJBiXTPnnNUBdvVo+aLCjC9EmivVGiXRVoaAOpM=', 'DffKcnihNlC5GdhUl7LrsPcQNafCBDDUEx2QOrf1dSE=', 'J8xYn1v1hXlKus5Yn7inSi94TAmQuA/KppRAl/hw4tU=', 'IlXDajjIc13kXO30Uq+oQjMtMwQveOYMQ8dFVCGzJb8=', 'Ez2WAr0zeNafaBwnsFvf/Ji32GzKY9c6YMrtSFeE0Ic=', 'DhVI6UKunT4mhgaZuTcnyBeplIYWyT70rM2YGx3D14o=', 'DyDw5V2TaJ/gnsMS9q9HYnSC5L3goWAqjiyNboTopq4=', 'LlIyhIPLW3/y605FsS5RsmIyybwXtykpVMCp9r+lG7k=', 'ArIWLVM+BZpu2iq7dHEu2zp4YL7qld2KSr/JV2YIBPQ=', 'GeCSdxXRzG04lCmUf7Nzfa1zOXTGsuE+Wz1DJRlRbHQ=', 'DTqABFfXd4VjYwO4uU8X3P/LRgSIcqyfdO9/J+5XNwU=', 'LJdNGVJVehqsX3uuSZZhbaYZtz9EHE5QTcj+nPtVnjI=', 'B2a/7u3izPNwjhtP8wcUwiwdQ0zb6PVVFLq8LdXZe+8=', 'I9rI6lQIL8Ex4XOuVeRjDNTKfIcbKgpHnB505/GR5iw=', 'F9X7bCyzcBDj41irLVdTdocO0zGGuOrkmtO0fjQKjX8=', 'F13Kx22KgSYTm1g644hTKQJG5D54P6aQPsgAfxeMACM=', 'DE/Qj+3l0iGtt6v1SYmMkeW+foW/H9KmEb8YLMLnFlU=', 'J3k0uQnnLTo0dbsex2arejitWbEoMD/FAC8Cplvf5yk=', 'Dog0mZjf5wPxsYRST5w5TWAEzKz5y5UolujP2wsHi2g=', 'HxsgeLYLD84Hgk4qK8jK6O5nNRSwBwqLRXEMx4y7mUI=', 'LrFVlWbFNt28MW9kgtUfo0BVdldwD1uKhG6BKg7TNNE=', 'HE29wzXPZ2Q1Ugi0ydJD00VB1iPGad7Cw7oGa76vZ3M=', 'I3SmstpvjKuOXP6NgF3Tot/KHot+ul3IV0Ah/RJB47Q=', 'Gd00JTPMxgOplzjj+1pWm5TvcbPkn5D7h09hYXMwcvQ=', 'IX1m22x/s+/6UIgAWH0us8bQPYOFEy8vzOfzXycFzM8=', 'CBX7hZH+AQOM06OziyNvnvynfGGNO/xsKn+okpbH5k8=', 'K7lDtAwr1FamwXhTscqI6w/zb1l0sv+aX1CT6b9joW8=', 'EaUVP85llRPufLmXSubLpYHjtM0UVwxXCf7D2NP8guk=', 'G3K/0HY12FAbLv+HhaJJW650x2U8+Q5tXJ8URCaDbfQ=', 'FJAsBwDuyJeuF4uoyvhQ15Px2HUSvqDs6jnPax/uIz0=', 'CcE4xuCmFqSf+Q1DprBD87dFt4hlhW3EwaReL9hMs/Q=', 'BbWKPc5XsoGicdaYlQUtiHRYpxV4PoMX4CSmGjXsELw=', 'K+jSlSXAz91eazEl473jv1WOVfvoZ/AkRXqWdlR00Dc=', 'Bh1y948bqdxrTX93hCJdaoG9/Bta1sJDafnAVgUj2a0=', 'C/GK78rP+r30ES7drcphRXOLSAOzYUW7lRbbUBoGkuk=', 'LnPdEF+osuyTHYzfKexnnjqYAakwcafV6jBlklXwO8Y=', 'D4RA72Z8mugTN7pdjJJ6U0fecpaGCyEcrR7L+101mO8=', 'AE0wOy3qYnsnMb6D+TrDTn0U0XihOABVjKc5Y5XrEY8=', 'I0VBrXIECnDaKZajUmkjDJRpnu8xOk1IBQgAjLw9N8E=', 'DRI/HnLSa5K92P1z0UKGwxKtTCOstGsuCMFXEEQJ4XQ=', 'L7Ngd28N551wmO56pBI8Be5rBai+Rgp3TzoEjhOFRbs=', 'A2hcB5Q04WcnbFfTzHlwO339xBwVbqHot/mbaValUyY=', 'Jgrw4P/8yXcsFjGxeTRFZrR6qto2geuQNMb3XDcFwcc=', 'KGK0E3T4m2lSdLM7dz8lVJFuK/+f9nJUX8L0lWP2J2c=', 'AqmRL+FwMQInGJ6h5pHQNi8Ys4tACw7/GSyllRPrqNU=', 'COUTreaUoNisHz6/GpZEDTLHE9UFjhIk4HA0jCgfSm8=', 'FApKQx4u55QA7XRll42EdzITxigmT/gPIax6a2c9Cas=', 'KWr00BnLXffZWbKdVJw/BxICtOuotT3F7pee0UM3eSc=', 'AYMuKEp/TIFhSIK2k5/A8YVXO9ICPj5QV2VHC7gSs0k=', 'GoTVame/3T2WWr3NMpqnjU/pNDRJby0QOGH9GdZtcmA=', 'BAy4KEd3OSfSrv3AdIkDep0fdjHsp1yfsN2gy5294UM=', 'AQ3PCEzCnLfK7PJqpjO85O0rAZ8oh87nsaePidP6vi8=', 'B+3CKgkR6iFEJe9UK3dtsjsP5YF4ENQMcsqYqr2a+oM=', 'LupKsIrsd18hSEeeo2+7lpNtpYuki9HS06zUgXOqq+c=', 'HkDA6CV/5KYQBc3PrRSM9/R9G1z936oIJzhpVRgkXxk=', 'I6J4CVg70epR9DbeVEPhCPadRM31HcHwPiGUi0mAuHY=', 'LkZSsETb/kDmO2sjL81fPzmr+9IFHuaK3HVAgNSSUKk=', 'Eeer227Lr8Ln2M3v6ce5xQR160dds8LK9/fWf0hXdfI=', 'GZ1SNQzDDoxzgh+AIJbw5UehNVGye/a4mTlvY6xc+Oc=', 'D1ddbuZ8vs2YNFYk4DKjfIWafL7zCz/dyUnNCXhIQQE=', 'HEtvmiritBjmJlrLqclrBhhNBwKOX7eE80da53cv8Fc=', 'Lctc+Ilt458ijhV8DFWT9GJvubwiUgY4PbIDYKvwySU=', 'E0CrufThExhr3CbL30vMpQtTGhB/hjylRFdePPhw+OE=', 'I2jmkrcnh8uIcOqIjnFOAG9Z0rRGDPt0xIqMxzsdGls=', 'H6ua3ZuqSk9W8jFld1xvLZIqdjKpT5Y3S33IUnVvVLY=', 'DH97gjANPGzj+JV7oeSt1UxMAV4g2XZdIgVxwWq4aA8=', 'FdY+hr6s2Txgg2iOXZyPPGlHkp+fH5mrV4pMOpIu/wM=', 'C+hDrl+bB+UlcheK99ro7QXTaxLAYHhikpNV6nQCPZ4=', 'EzJ0nFI2lMtpNeCWOgfoGwWWfOHZUMC3MQWOySp6DJo=', 'JUOUCIEOB0wL3UWYuYFf7okruVylECns8Am/+lubloI=', 'BX6NGd2ZmpGNopsJQLODup/RXbCw9kmW3/Z/61X5p0I=', 'HgFON+mxF887SHDZmfK1XTU00Ka+mOnjV/pD8B5wop0=', 'Gk7STm4DrrzWvbEAUz3JZll6/hXIUbS4Y/boiQhMZHk=', 'JTQgAHCD8aqGOtR2CQXBA57UERyfBT8ncQRS+DzjapA=', 'InahRBlxcJr/5tKpkyAAHsRexyFVxXXd7srA4ydZqwY=', 'KJV90SGOp5n9NBHrGTJYU633rorhKB91MwL+fTHfp7A=', 'L9klcmq3lMiL11eWqj5/HmaS8pFM+AImfd8B43kCoAg=', 'HPilycdqhLFHyCONklPNVbR8DEPYKWbEY2ooZ0cF/Zo=', 'A3PLvDBuG6uecHc2hxXmIwtLLi5KHbnGdLjDWaQekQg=', 'BgKD0v5/I9/1E9kRCz3GJEi8SPUxzgweq1kgvyMpCkA=', 'DatGXW2RB0DzPvbMDq3HG/gRm9/Vo1J9yLv636pAJjw=', 'DLp7y8giSyqOSroXl3IwpobNZCHcDKU0bzRGtiQ5xMM=', 'HkNl2weQycT0RbBlPEZv8h25bDi0B2uovWi8tN6mkR0=', 'G7LbohmamrO8hu9fnef2xcoT1g6rQs7WjemPxkOACo0=', 'CtPBhwxtbvQO661SEjzRopE9nWLoC/usroEuCCAh+co=', 'AbCYyR57DLtcNFiAd8Dd+VMA3fYUk1YwwM46JickUwg=', 'Gf1cDqwU+udZi9TO6jseKZiwwWhJO21yrkG1duVbnD8=', 'DUdJ15zBY/FxEKQEpG/kJ8ZDTz/me357TM+mq5W9fhg=', 'Hrv+gRSkG7gJ4LMzmSQSMuuUCthyjIpRbUCtpEDb/c8=', 'JwTlthM9l2TW0/F9SdgzIj45N/gOufrqu/upuvS0wbg=', 'IWXhyAJzBbGuDjI1cWNeXVQNE9cQw/mjkLaRPxTQNeM=', 'LjSX5NNf2llsBq+mO8Og8uVdTuukrOtg5lCBrWOqi4o=', 'Ax2kNF7s1ttsD3sHx4Fdet0f4FRtc49NeatcV6qEHt8=', 'CJ7OVOR6pckI5D5fCHN8FDaWcIkAasqxyc0Z6sSiCHY=', 'L1PBXire0zxH9VoHBIPmzH84Ifv4qkBnfQVS7Z0Q2Ec=', 'FCqjT0suitDfeiGz45wAyLCqKFcJSAHqr9cr7+0Hf5M=', 'F66k2kx7zw11iLAU64tAl53Scl7aTmrOMxmCRnx/8r8=', 'DpcMGdGXSNjEZRBNjwIgA2P5pBeG8C8YJ3QrINwNFyc=', 'BLytnlU3lWQvWbr3FKa9tDL8RaCgt38aujqYI0dt+bk=', 'JCwL+82qdvcV29S6glxx/P7WccGxkB+khMh/gQMV0M4=', 'JdsTQ8JBBAcQI/tu002ZCQeDEeHv6FrwoRsZEU+p55A=', 'L/5NnEIKWenNx8Masr81GHyhR8uJijlC3rNnd4YDaoA=', 'EluwOvPizxi75vW1kOs7+NDRumO+aWSD6Y8oO8fNB6M=', 'CBa+QnRbfbtM7/5bjiTqYP2LcZ3rpQA3rHt1lIdFxrw=', 'ERFg+az27DYNG2pxIxOg28viPmRCAFVHHS7kxd7bNdQ=', 'E3eXjhsfaokl+o57eUG9+PtZq5VCNCQZKD2CA0Nck5E=', 'De/B2IghZu88zeU6TyNvuoPThGIZN87lfkIaUT0NM5c=', 'L4+lx4xwbjpdSgPyp6OVMEbX6Uy4in7zUOZ7W6Dw3r8=', 'GiqVfsCnI9phwhNLqwvxe+sA5tzYRpDCMNy55Y2pSCc=', 'HN+HEJlfXgNBK0p/aZUy+f0B8OoWeo38Hd834oBa3e8=', 'Jv0xRxgow2rjbCe3SAVLDAxP5SObMBaZ43Ze6+zBiUY=', 'B3XZlswsRFbzA6LB+QB2R+Eakh2f6j97kmFDuZ0voL4=', 'AW+5M3cIymOM39qRvQ2uprlyJO97IGJnKt3RvRi7iQA=', 'LDkvvn0/3kL8pPlHi7Q5MxJYJVNW8YSvb3bxGQVBF9c=', 'GHoqO/eaafo+UInvnx/Vb9tHxV7s53qiKKo94bSGvLE=', 'AnGoY6KAoyZB/6M1ELLt0njJhjA1lTLz5Qaydf1dIM4=', 'FVdFnJx0yUqgDlr2mh4xEvtpU3zol+wMcYlY2WUW8qs=', 'Ko4myo1kfZpjiFFuqdz/iQg9U55YFowqUMba4w8QnyE=', 'Ict1IZTPQ/O1GULrAEDrqd4rz7HCo/rpeSS3EPJoMs0=', 'LCba+Za+JHrNbdSsrWDTi1pHHmMiGI0CwTfny0hDd+w=', 'AkAXbuDnmC7r6Spo0+OjjCaCGswPXQWM+ME3vKLSbxs=', 'JjbglzyGXBvZdN142qqNCoTNr2vhrUfs8qDRjxFzGPI=', 'GehPTyWnmUlgQWYdxdl1toH24GdEzuibe+XZ/eF0SsA=', 'Dr+JBko68kfKHzb281cBiOJx4LMmxPsmZk6J4UVMoRA=', 'Jcfpe0db4A6LVZo4xFI2T0ycUx/suKxpj3/XPOIucew=', 'BETJnlkjU+WuyqMCrdkBwU2MVScKFgr+1EKe9VmK108=', 'E424iHgwVl8mk9Dg8C5OeeFEln8LpTsDUZq6dktcmUo=', 'JNQPRiEU/p7gKq/PdLT8ok4a42XcdcO1K7E8u7LyHt0=', 'IeZdbY7kN2C8pA5zC130xM86inMtsUj0spUbTGHWjow=', 'JI3XlmnsCdvwNQoV1sdcapvarO/KFNUTAJePE9GrbRw=', 'K4I4wVSPnL4p/TXPkee0jw69p+Y57faf6NWrp5JNU2I=', 'JDn9I5JX84GBx7489RPxv3I166lPa4lCqUy93s9vYvc=', 'IAlYI1KBphuixL4KoygqGMdLbSYvXefC4z0rs+iT3+w=', 'Dh7KXfiO5fYM+n4f5b77txn62CEfqbLQL8wjMZDBfxI=', 'JrU0J/mz6ix2nZxmD8YIgaFpwScy0AG3FY7ksbhCyiQ=', 'IPOz9Kyv6fivPgZmGzqPd4+igSUiudcKZ0As/42ysbQ=', 'IR5dKznWJSCnpifs6MrLrJ+XUG3vTsKGkoumwn1GOxc=', 'C7dD7jSAISnFVnMa7Z0wLc0IUxPOVy9iQtE4MuU2tLQ=', 'I8smYbSI7nHkx1P/I65L0l2KRAlPZrZTKXfiIUDrpcs=', 'A6NaoxI5Ec20U1uu0zWfX2pSBbnJPvMdNTI6R4B7i8k=', 'J4A4SKCu2WqT+pQ7ZjXkUCF+E39K3nSmLXkXMicUtpc=', 'DLN4OcLJp/95iEy+x19B6b5eR8dtYVOCMb2BYpltb2c=', 'HwAm0L8fjh3VQjzC/sH7XNqh7NxMPLIY287vd8ANL5M=', 'AqfXu5cLim7S7mb6u7qVa22jsQD1tfuSju9C+XCCc8k=', 'DP1/QhXkNMjaF+wyWLC8YFrRqy6QqklDUeTuQLvEkfo=', 'GAsRtyBiKhVoSdxvf25/VxZZvmloIjDF7ZrDOXAKfN4=', 'BOlqllvOPToKJKSkV8lRWCyHE0nOfu4aq/5XipTGUBE=', 'FZMfeCtF9/tlbyzb0fdwXDU6I/4dMKWkahUi7RYN860=', 'LiluV8l6Uwms0m/r9VrJY6VETBxfcDrYig17l7ndOLE=', 'JhV7zreOhGu7Ji+aHgbUJxveWlvOjwQZlS+X/9E+rKg=', 'IZTriYR9aw8Yl/Z18ZwMVrYbEySO/zyjbjT7nRx57kM=', 'I1C/NUd2VomRUa193pbqeFfhVQFEcAjatrPSfI/6J08=', 'GkhvCuWRys2vCcWKScTReVQFQ1NAgZ4APwRp0RC3dSs=', 'G1bc92+yPMSoNNRVpAZeEzVxQCt98wnVm8MQXUKowwE=', 'GnSdeWSvC3ICkT7yBMZT8rS/tlzqt7aFIzq1nOO7aSU=', 'GK5ZAHP5aWlq92L/pOjw67+X+Mx4fjfN3R8yG+O+rbs=', 'IcR7J12C3eZGDV52mplCEUSxxanaWSlK3py7MXED8kk=', 'BHPdvVLnN+UnNk6OtjIHl1w41f1swysnIQKwgs0VGPs=', 'CxL6yVttOogdiSZXyEJOZFrE5rAFFfkC1ZRXQwKybgI=', 'CK52FqJgz2ZX+Pc6woRYjSxfB/9CXYN6p83O9j4+IQM=', 'A52vaHYoC4Doc78qMv0oNKg8aXV7rdWKiI74Gekmzig=', 'Jeex10cKPHXxPwtWVGyOCfLY7+/wbvdm+ceDyoadEw0=', 'Ho/TY0w/92QYTQNDX5hYSxG1sVrrnHUmLaPx6iwqnno=', 'JB3MUaw3gIpBXdHjwoHwWv8ReJ3Ayv3XejVITgmT+aQ=', 'H/wxU8Vu+XVZMs6ivgVzdJva/hxPoHgaS4tAeM6ddUc=', 'F2MNYtmj5RDIik1Dw2D5K8D6ALZgMa3sKb2VQ/06F+4=', 'KYBADt0ddOPWnbVFjSzNX6vbI27BaoKkMBoKtZ6kpuk=', 'MDT7JDZhI+xtyvytNXJtv7FhlMA23NZI+mlDm/zQDNQ=', 'Gqfo9Bicqd/z2yq3ZIvgojkplc5GBB4EaA3KitcjLfA=', 'H6GV+DSmnmI3L2DrSX2hZ2RurhQVPYA7OdxdEfXXgAs=', 'DyPxx01fv2GVrVpq7l5WmTxUd+hFP1uToNe6/TMwNtM=', 'AWVW+sk0inNatQqgiclxUbPKrwogo0+52TcFBaFRVyk=', 'I9kreTZIEQ/Fru8GM/DHfKyw27yhh5uKb25d9EXl9ws=', 'LkwQ7F5l4vI5u8Q8EwMd8mhqtA/XmjBLBdYRuCPyO3M=', 'EkGLv9d7Y61eFoZK2cMv+/xaPdm3jsK3kyn+XgqNKVM=', 'HkqKrOFavB1bdqnoSEMdLAanj3K2vrsSk+bFjlGFaW0=', 'Dz6WEH3s29aHLCDqCaz5LN8Xo+4dEzFIgJLZYXbet1U=', 'ASw3gCB/OVzCHesKvZUWge6jJJjdumzol6j58MI1cGc=', 'E+qxtOZyuhscG7kBdpMB8eVlnQPqEMYd4kd/8KwiFCE=', 'INxmSrsgt0VsBmKc43oeyxonpOiyTjG0i5xGNaowMj4=', 'LGseLP6njiw2eF52qM+xsFfpRx8k9bORF1w97LAeAA8=', 'GIySYlX1t689qWNVcpwqhnCrTCxwQASBsqyQN0Dgxas=', 'L5kTII4J49bp5vumOE/QdquJ8mYpduPjDghwuzDrVPI=', 'KzOAPZCIlwbnFPcgtWKNJvtgtUWh8+nOSaaukSsCQIY=', 'JsyrwQ6wQyfLXMPd4quzbwlwhsl+c4wTPJ9XB350iwk=', 'GxauDXxUQIy3X9kx8kZ1HysMPcINeegqJTG3bCK01d8=', 'EdC7RhvYryhE9J8PhAyU75UYslETRHQtH1Q4/j1BWuQ=', 'IzAxhHtHa+rQEY09szjokTPsQg1nPlBK1kclnfZVVx4=', 'H4TpeJW+5DjrPJLcmxhGya0pwWQ4ewautu0YQe2MTco=', 'J39/m1QvDCu19FvtBU8JYkU2AQw8+UUtInMZMyf4AdY=', 'HvyckGnlBouqwT0uZkVkG30n6A/CMHcWFTXERoLuV6k=', 'DW7Ed3YeLvusTxSzvz1SV6meZMPyX+EE+vmIsg/l/0Q=', 'Dg59fFUBmZt9Fhc7WbfK4fIDvvIa6/ACUYgUOcz5MBM=', 'IXvvL08SxtzJHCBYojORy3feU8puRNzcbqPTb+oybqY=', 'BXgMiK3wFTG1D4F+P+RER9KbNaqKOJxx6M8SJqzvaLo=', 'GHM4h6ays7TJDY5JkBluI0ReR9fqWTnr+4mj7j1ntL0=', 'ILrOY6z8rgscnyvuJLjp2oW6WX03sJBXIMTxXbIxsHo=', 'Fm6llTdaZ4asUn7p7O1z7Wv1UIdqvK86yStCyAiwDY8=', 'MEJiqe/0BArPQ+Mi1vUmdq4vhT7C56gNsAxIjPkXx04=', 'ImuscFAWbl9tt4zQsS028wW26MmgVRFK13Ceb1ckW2s=', 'JrL1OcVzgp9qypG6qVRQW8XD604d8dY4WCcX+98jiMw=', 'BqD79M1S6Tul5MbEr2XbAu6WKX+K0gDy8c/yUudptVE=', 'LLnCQRLTU0Gs6siDYPtSiSTli27KwyG5+ynmqjNo/yM=', 'IOiKTWB1Jt0H/gijVSpEZpEp64f8wLE6rI/or9kwFSE=', 'FURkmivXPjunLzlt+R3WVAHdj69R3jJfuu251TatlPw=', 'GYAHdFeZVxLETafhdxMljj+Os1S/2A7Z6vPsuvaWAQU=', 'JdHSL/E+dwXTwIX5f8Tk9pFLgv+qXSCR7GTaxCN2Xvc=', 'L+yZDvVW7+EDWkZP9VgedAZ0Rc1Uq8r2uMA5n+DSTPw=', 'G9lWNQbZVE7z5IMOE1RQEsV5N5wtzBMwQWxK5JvE7GE=', 'AK/80XumADxW36hVcfwpc3siWoDUgOfdft7AHxTyMBA=', 'I2cNuu+WaIHwf5GaLYgxKMeyPPdnpHeysuB2K8DbwYs=', 'H5OlMpFzlMfiL9F6vupjicZv164t2fAvhg9tlpR/Dt0=', 'LeQun1N7fWGwITdxwOdPVVUSvge2pQk0c04sW+tAvjc=', 'JcVX9FuZeBzTfTuyKTFmKmf3izd4LIhbRWu5bVXohAQ=', 'IHTItwlwXJiIU4p/ijxK/2R3Mb0W+OJU+nTqnyvnZiw=', 'Jzg1WVYpgTiUnkQhcdak5LdO8gZXQNt8/DoLYP1XOss=', 'E9Nq0KTr64GWl3hkllnGXLfQxBzFGYcf23Gp6moMqlY=', 'CKLBi6QTgTSMGs+/lhdxaAa0YqFpG8LjQ7ebgIXjdrA=', 'BZCS/Dla7ShYB7v1V62aEEH1nAeYIrEIhFeIL+57YSw=', 'FhkkFRtaWtLYysEZUiqZGpBvFehTHccFZ/ayg3HMJOM=', 'HGjKj3qhdlkHVAXvY0G45popi5pNcvO7hUswnkuoehs=', 'J/XQO8ocggf3I5pLLPc65VmhWqN+e93fOqsF7sXOVZI=', 'Dsv/SEaWKpddNH6pqPxGX7RoYVV2IvLCVkp+Y5gzwWk=', 'J3xN4jY9i1tFbPxaf/jkb/LsjapZhV9a1kvAUh86xWc=', 'GxGGLFKs01G3pGR5P0+7V/7Jn4MrYyJvldF1yNL8CLI=', 'BqcZxYTHT/vdchjrVly0yL2GyS49+zxz4VJyAapRI04=', 'Iw5K3uy3mYd/fOmljINrmdUzWEoZXB13oxOr4cfRJr0=', 'ELEJuGSAnEdnoTPM5sutbIhigXO46lHozKhYMMp95SI=', 'DiEReXDc+9SxUmslNjbzd1ONO0+q61qLJL9iANFMxZE=', 'Jmc0mXhAE2L2sXk57rDmT/VWB+vbNccHHbRrs+e6R3g=', 'BQAPpf2lBeApoTv+MEwmew2GxywDm6v20/8C7iRr4C4=', 'Jk2eCUrtX0GmAkIiCjSihAiQh7JDapv86BdMyb6MLiA=', 'CAdvnEdD3mEw/2Is9AHt0skvJL/hFPPF5ySJF0YxXEc=', 'EyNwq927Cx3VfypSDCUza9fO3pS5W79cIVHW2I5kG2Q=', 'CP8RFreiJ7/f1EZaZ4kIgrYVyMTBfyjY0klY7fYC3cs=', 'K8sLDbi54+ArfpwclGD92cbNmFYjMuZI2KPgq5RZdSA=', 'EupozmiBvsrX+KaxF7A6uXb3q9WX+QOwvyMNINIalDo=', 'J0OcmKdmiAZ6CXsZtv3X141fiOJ04Nj+peprdAb92n8=', 'AvQNCtBfVlLjHvlECtcevIQZ45NJOTfwXwBJnQKpnjY=', 'L78EKEMn7k9oDwa9OQ4wnQ0TrMdLnFsUtjBZuMx6v/U=', 'G+aG1T4qitV6gosGUUJc/Gl4xwJ+2/JH9rZyPCHfhuc=', 'JoO0JehaUI+WhS8UtCIPz+n3rYsXv+/A40jEfKeLtX8=', 'FtrOmy6AEuMdscfr5nLYa75hoao+FpPg7d/A3gqd2VE=', 'J6Mh+MfTyQIuli9/7y48hItFOdu3WqE58wQw/lRbzts=', 'BszXIQ3uHWsOIreeEtGQgtgHi3iNcQB7leendO2GplE=', 'CkHdQiIWU3Ur7zUPbXSpF7bLsf12o6EhZvTQvpeOQCY=', 'IgoCiB5NR6yU2VDN+DhidNF4LifL0NhFl43uyRKY8WU=', 'DiFVpUX+Xzy7Y5dgZYnqwZzZJjkznGsBcpikrTQItLk=', 'Dw8ZxikeUVRqJnxgzHdOX7nQiLrFMHgtiR7Br0uEcHM=', 'DpJbzRxt20o6HGfsje771AxTwNM+eu7xtGeVrtWUPJ0=', 'KtAAsXSKu4Es1uVBEoa5/z7wpb09JZo25F7wW561vus=', 'CmWqIy0y7W6N5j0c3/68Lz+mFkZcJ6r5fozT3P9khlI=', 'AmPYRwq0scYddNjoliQvTyYdyxZ6OgaSOJPXyyyT1qE=', 'KQHZRq3clLBA/VgATZpfjNGSZUDHqGEs7BxYy2DCs6U=', 'GInPqCCfSVLfkCLbncWDtXF6BpbaQc7mSTfQzWMh5pM=', 'I2Bk1xy2xkyEdHrCX8+NiBUC5fA7/4dWG4WhFrHzmso=', 'L/ehdP/Owphi4E9dvcc+vzZhVwAzV2KQwMH2zYztJ64=', 'GeckoddCyrEDRV8AQO33RaJpanEITJPjInFUUN1Nb1s=', 'A+7TiStvDmxdoQWcXzeTmFg1qig1AKgSmQSpTIfxYb8=', 'COK4Jzv6MMGshQMG2R5Gip6NBQkq7ky8gMaHJIRjujA=', 'B63Mp22DN3KIOaG2rDs+1Cr7h9cq+Y9S9Bby7FiyjOw=', 'Fx7zeJa64rECCgpYOb1ReEzhG7QjfVSMFxFp0y+hm0A=', 'IP/fy4b00AUGTtvClpGMMy0y++/xcp3lBWomq7w6Nfo=', 'COzXpvFzXu2GuqCU5gj0iPONuzmPz+1LmUODoMqORkc=', 'HD9dhuWSH96YkBifHYxhh1QohgDmkovBgqxNXkyfDMs=', 'KcYRhO2dRg8zdVihr2Oap+PAl15AFO2OvK1KJdUeq/M=', 'De/UWyiVhygiituy29rval6bGmSQKnNPQCuM77irO1Y=', 'CnTqItigkzYGBhAXmsHYL/+pSS33be7U6mDgEzsIEag=', 'A6N78S2vFADSl6xKwTuiTBfcJi2xbIUj3u5ODM3ppoA=', 'Ef4XkNWrv1k1/yIxjk9//mmWatovkTa1T4MOrLCmU2g=', 'AYFlhC9AY3XyNGaGkVr7FL8f4FZMiFjuO94Kuj3l9o8=', 'Jh2yXnz/Wp+3LydrH5JgtmcwD7fTYbUP1cDotplbBfk=', 'KjrDMUsrZueW++Nt93jF5GlyMgzEPsgHBIgmtnBLp8Q=', 'I8qkuA7PqZ6dP+orvB2782nRv8iTfQPQdAYcMP2M12s=', 'J9smAIXiJImN8UXyP2NfIGbY5OEk5YHoxiYZKbHf4Qc=', 'J09sX9NKeE1rkV7wXUJO5sC6u/Np55qxOLgWe1YY7H8=', 'LDop4TqE0moJEckona8apM9YQKraBwHVfiPfx5babaE=', 'HqIQ8gAaM00+gB9OUycNQtp6rzF6VTtCgqp46qIoLm0=', 'JU2+tSiEtpnBun+g1ugNYQkDsYo+UJw2NRzMOwJJRuM=', 'BZ54HWWJbr4OS6JtwvKZB/R7ze2kososcT2FBeox/V0=', 'C1sc7GPULV5hXcJpuIWiTO8wPseMly3RfNuz6RXMT/s=', 'KnwBXpw7LFfKi30m05obzIXW/6y32fvWbSqPHWTtDJI=', 'Kbc2uRHXGnnPY9im94bxG9Wr7iQWHcVnp8hR6uHkO1E=', 'KFdFqQp/49Ca9agIcEvGnG8XAeVzkS31zB4mXVlsQUE=', 'LZAbgZXDyWyMNuuZ/sATTsK4MEroEL0w2lVOMICCZxU=', 'GQXTUYNV6rp4WbWR7XuMnCU5gPBFDb31TXp3groFg5I=', 'I+gTAm/AuABk0ZtcVCiUL99+/qgL+o7ECVJyv9t7TJ8=', 'I8ChmiUsh+axwcIbGnmAAgDD+/8+MwDn5VaAcd6e+4E=', 'EcSuYHuuSSQTv2LNqiwoaO0f7G3AYxsGfKYPqxJbnio=', 'LNBV67fuRoY2XepFDwRv9iQF+uGxr8n7AXB8+B2g47k=', 'BTyf7y4CH6miD62iL96hUFtYoxWbu0czfb95GyFbFFI=', 'CjW9dOh8urqr6JrRMZ0snoY7TGMcIZOMmlOVv5eHKp8=', 'HBFQVlOc4gzVoE0aXEPisA++g7JZAb429d3EZm/Dg/4=', 'JClUBH5Xcv073tWQ7IvrTFQvLiZMjD4oTNxHNQXFGpA=', 'Diq9MVtHwNyThJwM3yZ+gRy9vbIApufCtn7ffLAXQhQ=', 'KCs3AgwIkNdRw/12lQ2AaGaOHf6uYh3VUtLeiH2i6nU=', 'KJM4UiZrUtnqa1u5I9nZTy5aW+XHeOdeB5QsI0tkO9k=', 'CZq2dlUFuhGY7xQOd7eVTU++eaBWznK6zjnASMANo88=', 'KvIR2OCsLY/af4SbjyKaIlxhhrVXYsensq4tHdhcV8s=', 'DNBw8jQBSigJq5DHHB2mHpipYyL+3Zm2qq4coQTz+s8=', 'Jnk+KryNPDDGBib7qhWPJjWH1r0Vgz1EixFiZLkwJWo=', 'IlvjbtDuheH4Ra2oTldIpWaZFSET/2G1BWtti95gwZ0=', 'AhdPSe2wLVFU0r7KLckrnMWVOD2h/ejwnkte4+paBl4=', 'D2SJHCyLAg5Gw1lMt1jwvdzb0JvQMIgW+0FzSoaYcsM=', 'GSqEyi+Z02mR4tKx3v85idHBVsI54Q6fVhQOGFRXYGc=', 'Kd/Ne2PwWr8nU6jDQda3pgxiQ7BMmhuLMyC7oEpNR4c=', 'HuJ61rm1qGdzOvxhorPnalK6PkvV5let6R/AOIGduls=', 'CrR3PxUMP4rTvJU49DzsOVp+NzGulz/v62I6CSF+ZMc=', 'E8NSoC9ZUYYgLLC5n6WMVUKrZ/m206Cv0QPe7/bYD0E=', 'KpfPLBDEv7/SmfZ8UqFp+SwFt9rFakHE3U/ofIJGzhQ=', 'AL7LtHBCvX+Mn2u0IhYtGu0ImihIL3/RarBqEyhf5wI=', 'AI5E2iHXOGkbiBdX7zftKcW9n3pEUPz1MpCpLMLKIXY=', 'KyBai21LcGPZMfO7XTRkBThD/n++S4PBeIP4ZSeIKhg=', 'LZ4yp8kFVv4QjSVawB513zOPzWOyv4TBkoDUJymIY/w=', 'KaMiqEwlvS3fbi5CACKNlavWNJoCJmrB27pSBzjOypc=', 'BnjJv8by3wEvT+VeM7torBTO0d8NAhUnkgidBG2CjEM=', 'D6/zpedCV5T+IKfg62FbixdgOUt/IwQoajrkAJEk2yM=', 'H49bYRr5/rnOqGwIQFgSBVPkBBA67iE/WkHR0CVBwNM=', 'Fgh12EeWAvlvQKzC0ELuUsFYi2op3kKEllptxskw6gc=', 'Fth6UYOjFqHXCvyVHv4s1mfHcyj8/aRYy/X+MEX0bZ4='],
|
|
95
|
-
M: [['EkZm+AVh7VkW8vBwsb0kjG1T9E0nPZVqDIe5F2kqTRg=', 'EZJPAv0ZsJJVqqHPRuoFGOPXv+70dCFglJEBHbC9CwI=', 'JH+n8CIwShmU/1BUVsIgHvm3FzaUmNP/zkRmAe2d+EU=', 'A/17Ge8shh8i93/4EPVOJ3vJTrdsAtedmGvj3N8FHD8=', 'GL1BI5w+cVeaZ3RD7P+9VVqB7u6mk1Kmi2fIVjwMKgY=', 'LXjDpdKN6f81vwoldjUZblcwyn9ASTJ3B4zXXai069w='], ['ClFKXCJ/TOyV36Ap6N0STDSJWqRrsnwJEfN4DVAVVAo=', 'GS4W0X2VayV7haZS7v3y7glYnqxb6AkVd1cj0ssdoG0=', 'KYzgweMRO7k1xwWOd3K1M7GqnbDAkmvciRflYFyjrBA=', 'CUy06DYhr9Jx5BvHFyfwFY69YSI5rJ1pixf+S+Bbf8g=', 'A9iAOVvpPCfWSa9f0ULnazORjLiEHVooFzvVz30yh5E=', 'KO6ua1hmrWjkQ7uvkWgNt9fiswN+OP72G0LLzP/OyoE='], ['J4u0mntORK6kbrD4gstpKAGm5g/dW1wjxjzWXMzk/go=', 'Bj7ewb7YMfUGr422SNb96hRTRYh+i9z/EJA1odm2dNc=', 'G67xy1UJtSakIGH7U2V/mbMjJQDoVRksvoyUDgaMR18=', 'EyRWSse9+eIhZOmFjX+o42ixZerqPa9Otn7lnA3y5dQ=', 'AFdhuMauyxqMpOpN/CyDdgZKSoAEzu2iEKVSQFYt3BM=', 'EMnigxWdWMtMsuNf3oOjuh/cKAAu2ZY9KpnxhheKFI0='], ['DDmen2eqQHB6ID/u+wuVi72tzsXKNJAdJT0CaiQZ9qI=', 'CD8N8/GgNR0DMOw/9gLKjMNTt/bnYscQcYTNe0I0SfY=', 'Gmdk1ZQ/xKcgtMChn9uMcRmEMHKHpYubX59dWCEssmM=', 'ARpjom/qv4f6Zr3mbMJakiyWOC12xqf/SPFTe+rtaDo=', 'CMp7ZGV8NUjzK+9bY60kKIpBwLJRCZrSf5Q0MH4+ZNQ=', 'AZmCcEcek2GVVEawzbi+qRXsBnXxzWSN3LBDA1B6RIk='], ['HWs9X26jacJvgl0jYpM+qjHqNewKd8H72eAcoVI+RDI=', 'EZ7xiLs90NMjBpdsGZQehmS+aH56aWkton2iFabwbUA=', 'LZ4KtcBok9/f0DSBOBuoa25ikt9WCdcfLGSy2aefgJ4=', 'JfFmMb93Bg9+o0CHwCW/E1eEMZ7wjNouMUGe4KUp5lg=', 'FEx6EdpafF2rrj8z+9A8rYbRi8WUx5pJfsuYlO21VPE=', 'D5cRYmJ3I/P+rayyiwwQTLj3TeUIdS+o18DbKvE96O4='], ['JL5RAJVDYgbdCr0LDLuVyIOrMEqlJZixppMG7JgaaI0=', 'IRYQ4q1KN3Qm+t9waLDBpsKZoWTBwaYD6u2USHDQubk=', 'FaZ9mBBBsfbwnz+evv2GTnedOvCBV3hqwHdQXlDsefw=', 'BJMn+nnSjBKiyCQGlH938Gd1sCh0aLMTaHdwHb58lZg=', 'IwlA3MUjJlj/nClpej/UFtFw6MmY8aqF3qDELXn5Uao=', 'GxIcBJzRFZ4okAfgydqZlcxLq0wm+4iOw5cqii5laWQ=']]
|
|
96
|
-
};
|
|
97
|
-
_5.default = _default$1;
|
|
98
|
-
Object.defineProperty(poseidon5$1, "__esModule", {
|
|
99
|
-
value: true
|
|
100
|
-
});
|
|
101
|
-
var poseidon5_2 = poseidon5$1.poseidon5 = poseidon5;
|
|
102
|
-
var _poseidon$1 = _interopRequireDefault$1(poseidon_1$1);
|
|
103
|
-
var _unstringify$1 = _interopRequireDefault$1(unstringify$1);
|
|
104
|
-
var _$1 = _interopRequireDefault$1(_5);
|
|
105
|
-
function _interopRequireDefault$1(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
106
|
-
const c$1 = (0, _unstringify$1.default)(_$1.default);
|
|
107
|
-
function poseidon5(inputs) {
|
|
108
|
-
return (0, _poseidon$1.default)(inputs, c$1);
|
|
109
|
-
}
|
|
110
17
|
function isZero(a) {
|
|
111
18
|
return !a;
|
|
112
19
|
}
|
|
@@ -119,9 +26,12 @@ function shiftRight(a, n) {
|
|
|
119
26
|
function mul(a, b) {
|
|
120
27
|
return a * b;
|
|
121
28
|
}
|
|
29
|
+
function gt(a, b) {
|
|
30
|
+
return a > b;
|
|
31
|
+
}
|
|
122
32
|
function bits(n) {
|
|
123
|
-
|
|
124
|
-
|
|
33
|
+
const res = [];
|
|
34
|
+
let E = n;
|
|
125
35
|
while (E) {
|
|
126
36
|
if (E & BigInt(1)) {
|
|
127
37
|
res.push(1);
|
|
@@ -133,92 +43,100 @@ function bits(n) {
|
|
|
133
43
|
}
|
|
134
44
|
return res;
|
|
135
45
|
}
|
|
136
|
-
var
|
|
137
|
-
|
|
46
|
+
var scalar = Object.freeze({
|
|
47
|
+
__proto__: null,
|
|
48
|
+
bits: bits,
|
|
49
|
+
gt: gt,
|
|
50
|
+
isOdd: isOdd,
|
|
51
|
+
isZero: isZero,
|
|
52
|
+
mul: mul,
|
|
53
|
+
shiftRight: shiftRight
|
|
54
|
+
});
|
|
55
|
+
class F1Field {
|
|
56
|
+
constructor(order) {
|
|
138
57
|
this.one = BigInt(1);
|
|
139
58
|
this.zero = BigInt(0);
|
|
140
59
|
this._order = order;
|
|
141
60
|
this._half = order >> this.one;
|
|
142
61
|
this._negone = this._order - this.one;
|
|
143
62
|
}
|
|
144
|
-
|
|
63
|
+
e(res) {
|
|
64
|
+
if (res < 0) {
|
|
65
|
+
let nres = -res;
|
|
66
|
+
if (nres >= this._order) {
|
|
67
|
+
nres %= this._order;
|
|
68
|
+
}
|
|
69
|
+
return this._order - nres;
|
|
70
|
+
}
|
|
145
71
|
return res >= this._order ? res % this._order : res;
|
|
146
|
-
}
|
|
147
|
-
|
|
72
|
+
}
|
|
73
|
+
mul(a, b) {
|
|
148
74
|
return (a * b) % this._order;
|
|
149
|
-
}
|
|
150
|
-
|
|
75
|
+
}
|
|
76
|
+
sub(a, b) {
|
|
151
77
|
return a >= b ? a - b : this._order - b + a;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
|
|
78
|
+
}
|
|
79
|
+
add(a, b) {
|
|
80
|
+
const res = a + b;
|
|
155
81
|
return res >= this._order ? res - this._order : res;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
var newr = a % this._order;
|
|
82
|
+
}
|
|
83
|
+
inv(a) {
|
|
84
|
+
let t = this.zero;
|
|
85
|
+
let r = this._order;
|
|
86
|
+
let newt = this.one;
|
|
87
|
+
let newr = a % this._order;
|
|
163
88
|
while (newr) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
89
|
+
const q = r / newr;
|
|
90
|
+
[t, newt] = [newt, t - q * newt];
|
|
91
|
+
[r, newr] = [newr, r - q * newr];
|
|
167
92
|
}
|
|
168
93
|
if (t < this.zero) {
|
|
169
94
|
t += this._order;
|
|
170
95
|
}
|
|
171
96
|
return t;
|
|
172
|
-
}
|
|
173
|
-
|
|
97
|
+
}
|
|
98
|
+
div(a, b) {
|
|
174
99
|
return this.mul(a, this.inv(b));
|
|
175
|
-
}
|
|
176
|
-
|
|
100
|
+
}
|
|
101
|
+
eq(a, b) {
|
|
177
102
|
return a === b;
|
|
178
|
-
}
|
|
179
|
-
|
|
103
|
+
}
|
|
104
|
+
square(a) {
|
|
180
105
|
return (a * a) % this._order;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
106
|
+
}
|
|
107
|
+
lt(a, b) {
|
|
108
|
+
const aa = a > this._half ? a - this._order : a;
|
|
109
|
+
const bb = b > this._half ? b - this._order : b;
|
|
185
110
|
return aa < bb;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
111
|
+
}
|
|
112
|
+
geq(a, b) {
|
|
113
|
+
const aa = a > this._half ? a - this._order : a;
|
|
114
|
+
const bb = b > this._half ? b - this._order : b;
|
|
190
115
|
return aa >= bb;
|
|
191
|
-
}
|
|
192
|
-
|
|
116
|
+
}
|
|
117
|
+
neg(a) {
|
|
193
118
|
return a ? this._order - a : a;
|
|
194
|
-
}
|
|
195
|
-
|
|
119
|
+
}
|
|
120
|
+
isZero(a) {
|
|
196
121
|
return a === this.zero;
|
|
197
|
-
}
|
|
198
|
-
|
|
122
|
+
}
|
|
123
|
+
pow(base, e) {
|
|
199
124
|
if (isZero(e)) {
|
|
200
125
|
return this.one;
|
|
201
126
|
}
|
|
202
|
-
|
|
127
|
+
const n = bits(e);
|
|
203
128
|
if (n.length === 0) {
|
|
204
129
|
return this.one;
|
|
205
130
|
}
|
|
206
|
-
|
|
207
|
-
for (
|
|
131
|
+
let res = base;
|
|
132
|
+
for (let i = n.length - 2; i >= 0; i -= 1) {
|
|
208
133
|
res = this.square(res);
|
|
209
134
|
if (n[i]) {
|
|
210
135
|
res = this.mul(res, base);
|
|
211
136
|
}
|
|
212
137
|
}
|
|
213
138
|
return res;
|
|
214
|
-
}
|
|
215
|
-
return Field;
|
|
216
|
-
}());
|
|
217
|
-
function pruneBuffer(buff) {
|
|
218
|
-
buff[0] &= 0xf8;
|
|
219
|
-
buff[31] &= 0x7f;
|
|
220
|
-
buff[31] |= 0x40;
|
|
221
|
-
return buff;
|
|
139
|
+
}
|
|
222
140
|
}
|
|
223
141
|
function isStringifiedBigint(s) {
|
|
224
142
|
try {
|
|
@@ -239,81 +157,67 @@ function isBigNumberish(value) {
|
|
|
239
157
|
(typeof value === "string" && isHexadecimal(value)) ||
|
|
240
158
|
Buffer.isBuffer(value));
|
|
241
159
|
}
|
|
242
|
-
function
|
|
243
|
-
|
|
244
|
-
}
|
|
245
|
-
function isSignature(signature) {
|
|
246
|
-
return (typeof signature === "object" &&
|
|
247
|
-
Object.prototype.hasOwnProperty.call(signature, "R8") &&
|
|
248
|
-
Object.prototype.hasOwnProperty.call(signature, "S") &&
|
|
249
|
-
isPoint(signature.R8) &&
|
|
250
|
-
isStringifiedBigint(signature.S));
|
|
251
|
-
}
|
|
252
|
-
function int2hex(n) {
|
|
253
|
-
var hex = n.toString(16);
|
|
160
|
+
function bigintToHexadecimal(n) {
|
|
161
|
+
let hex = n.toString(16);
|
|
254
162
|
if (hex.length % 2 !== 0) {
|
|
255
|
-
hex =
|
|
163
|
+
hex = `0${hex}`;
|
|
256
164
|
}
|
|
257
165
|
return hex;
|
|
258
166
|
}
|
|
259
|
-
function
|
|
167
|
+
function bigNumberishToBuffer(value) {
|
|
260
168
|
if (typeof value === "number" ||
|
|
261
169
|
typeof value === "bigint" ||
|
|
262
170
|
(typeof value === "string" && isStringifiedBigint(value))) {
|
|
263
|
-
|
|
171
|
+
const hex = bigintToHexadecimal(BigInt(value));
|
|
264
172
|
return Buffer.from(hex, "hex");
|
|
265
173
|
}
|
|
266
174
|
return value;
|
|
267
175
|
}
|
|
268
|
-
function
|
|
269
|
-
return BigInt(
|
|
176
|
+
function bufferToBigint(buffer) {
|
|
177
|
+
return BigInt(`0x${buffer.toString("hex")}`);
|
|
270
178
|
}
|
|
271
|
-
function
|
|
179
|
+
function bigNumberishToBigint(value) {
|
|
272
180
|
if (typeof value === "number" ||
|
|
273
181
|
typeof value === "bigint" ||
|
|
274
182
|
(typeof value === "string" && isStringifiedBigint(value)) ||
|
|
275
183
|
(typeof value === "string" && isHexadecimal(value))) {
|
|
276
184
|
return BigInt(value);
|
|
277
185
|
}
|
|
278
|
-
return
|
|
186
|
+
return bufferToBigint(value);
|
|
279
187
|
}
|
|
280
|
-
function
|
|
281
|
-
return BigInt(
|
|
188
|
+
function leBufferToBigint(buffer) {
|
|
189
|
+
return BigInt(`0x${Buffer.from(buffer).reverse().toString("hex")}`);
|
|
282
190
|
}
|
|
283
|
-
function
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
Buffer.from(hex, "hex").reverse()
|
|
191
|
+
function leBigintToBuffer(n) {
|
|
192
|
+
const hex = bigintToHexadecimal(n);
|
|
193
|
+
const buffer = Buffer.alloc(32, 0);
|
|
194
|
+
const fromHex = Buffer.from(hex, "hex").reverse();
|
|
195
|
+
fromHex.copy(buffer, 0);
|
|
287
196
|
return buffer;
|
|
288
197
|
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
return buff2int(Buffer.from(message));
|
|
306
|
-
}
|
|
307
|
-
var r = BigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617");
|
|
308
|
-
var Fr = new Field(r);
|
|
309
|
-
var Base8 = [
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* @module @zk-kit/baby-jubjub
|
|
201
|
+
* @version 0.2.0
|
|
202
|
+
* @file A JavaScript library for adding points to the curve.
|
|
203
|
+
* @copyright Ethereum Foundation 2024
|
|
204
|
+
* @license MIT
|
|
205
|
+
* @see [Github]{@link https://github.com/privacy-scaling-explorations/zk-kit/tree/main/packages/baby-jubjub}
|
|
206
|
+
*/
|
|
207
|
+
/**
|
|
208
|
+
* Constants and curve parameters for BabyJubJub elliptic curve operations.
|
|
209
|
+
* See: {@link https://eips.ethereum.org/EIPS/eip-2494}
|
|
210
|
+
*/
|
|
211
|
+
const r = BigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617");
|
|
212
|
+
const Fr = new F1Field(r);
|
|
213
|
+
const Base8 = [
|
|
310
214
|
Fr.e(BigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553")),
|
|
311
215
|
Fr.e(BigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203"))
|
|
312
216
|
];
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
217
|
+
const a = Fr.e(BigInt("168700"));
|
|
218
|
+
const d = Fr.e(BigInt("168696"));
|
|
219
|
+
const order = BigInt("21888242871839275222246405745257275088614511777268538073601725287587578984328");
|
|
220
|
+
const subOrder = scalar.shiftRight(order, BigInt(3));
|
|
317
221
|
/**
|
|
318
222
|
* Performs point addition on the Baby Jubjub elliptic curve,
|
|
319
223
|
* calculating a third point from two given points.
|
|
@@ -321,48 +225,156 @@ var subOrder = shiftRight(order, BigInt(3));
|
|
|
321
225
|
* Then P1 + P2 = (x3, y3) is calculated in the following way:
|
|
322
226
|
* x3 = (x1*y2 + y1*x2)/(1 + d*x1*x2*y1*y2)
|
|
323
227
|
* y3 = (y1*y2 - a*x1*x2)/(1 - d*x1*x2*y1*y2)
|
|
324
|
-
* @param p1
|
|
325
|
-
* @param p2
|
|
228
|
+
* @param p1 First point on the curve.
|
|
229
|
+
* @param p2 Second point on the curve.
|
|
326
230
|
* @returns Resultant third point on the curve.
|
|
327
231
|
*/
|
|
328
232
|
function addPoint(p1, p2) {
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
233
|
+
const beta = Fr.mul(p1[0], p2[1]);
|
|
234
|
+
const gamma = Fr.mul(p1[1], p2[0]);
|
|
235
|
+
const delta = Fr.mul(Fr.sub(p1[1], Fr.mul(a, p1[0])), Fr.add(p2[0], p2[1]));
|
|
236
|
+
const tau = Fr.mul(beta, gamma);
|
|
237
|
+
const dtau = Fr.mul(d, tau);
|
|
238
|
+
const p3x = Fr.div(Fr.add(beta, gamma), Fr.add(Fr.one, dtau));
|
|
239
|
+
const p3y = Fr.div(Fr.add(delta, Fr.sub(Fr.mul(a, beta), gamma)), Fr.sub(Fr.one, dtau));
|
|
336
240
|
return [p3x, p3y];
|
|
337
241
|
}
|
|
338
242
|
/**
|
|
339
243
|
* Performs a scalar multiplication by starting from the 'base' point and 'adding'
|
|
340
244
|
* it to itself 'e' times.
|
|
341
|
-
* @param base
|
|
342
|
-
* @param e
|
|
245
|
+
* @param base The base point used as a starting point.
|
|
246
|
+
* @param e A secret number representing the private key.
|
|
343
247
|
* @returns The resulting point representing the public key.
|
|
344
248
|
*/
|
|
345
249
|
function mulPointEscalar(base, e) {
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
while (!isZero(rem)) {
|
|
350
|
-
if (isOdd(rem)) {
|
|
250
|
+
let res = [Fr.e(BigInt(0)), Fr.e(BigInt(1))];
|
|
251
|
+
let rem = e;
|
|
252
|
+
let exp = base;
|
|
253
|
+
while (!scalar.isZero(rem)) {
|
|
254
|
+
if (scalar.isOdd(rem)) {
|
|
351
255
|
res = addPoint(res, exp);
|
|
352
256
|
}
|
|
353
257
|
exp = addPoint(exp, exp);
|
|
354
|
-
rem = shiftRight(rem, BigInt(1));
|
|
258
|
+
rem = scalar.shiftRight(rem, BigInt(1));
|
|
355
259
|
}
|
|
356
260
|
return res;
|
|
357
261
|
}
|
|
262
|
+
/**
|
|
263
|
+
* Determines if a given point lies on the Baby Jubjub elliptic curve by verifying the curve equation.
|
|
264
|
+
* This function checks if the point satisfies the curve equation `ax^2 + y^2 = 1 + dx^2y^2`.
|
|
265
|
+
* @param p The point to check, represented as a pair of bigint values.
|
|
266
|
+
* @returns True if the point is on the curve, otherwise false.
|
|
267
|
+
*/
|
|
358
268
|
function inCurve(p) {
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
269
|
+
const x1 = BigInt(p[0]);
|
|
270
|
+
const y1 = BigInt(p[1]);
|
|
271
|
+
const x2 = Fr.square(x1);
|
|
272
|
+
const y2 = Fr.square(y1);
|
|
363
273
|
return Fr.eq(Fr.add(Fr.mul(a, x2), y2), Fr.add(Fr.one, Fr.mul(Fr.mul(x2, y2), d)));
|
|
364
274
|
}
|
|
365
|
-
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* @module @zk-kit/eddsa-poseidon
|
|
278
|
+
* @version 0.6.0
|
|
279
|
+
* @file A JavaScript EdDSA library for secure signing and verification using Poseidon the Baby Jubjub elliptic curve.
|
|
280
|
+
* @copyright Ethereum Foundation 2024
|
|
281
|
+
* @license MIT
|
|
282
|
+
* @see [Github]{@link https://github.com/privacy-scaling-explorations/zk-kit/tree/main/packages/eddsa-poseidon}
|
|
283
|
+
*/
|
|
284
|
+
function getDefaultExportFromCjs$1 (x) {
|
|
285
|
+
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
286
|
+
}
|
|
287
|
+
var poseidon5$1 = {};
|
|
288
|
+
const F$1 = BigInt('21888242871839275222246405745257275088548364400416034343698204186575808495617');
|
|
289
|
+
const N_ROUNDS_F$1 = 8;
|
|
290
|
+
const N_ROUNDS_P$1 = [56, 57, 56, 60, 60, 63, 64, 63, 60, 66, 60, 65, 70, 60, 64, 68];
|
|
291
|
+
const pow5$1 = v => {
|
|
292
|
+
let o = v * v;
|
|
293
|
+
return v * o * o % F$1;
|
|
294
|
+
};
|
|
295
|
+
function mix$1(state, M) {
|
|
296
|
+
const out = [];
|
|
297
|
+
for (let x = 0; x < state.length; x++) {
|
|
298
|
+
let o = 0n;
|
|
299
|
+
for (let y = 0; y < state.length; y++) {
|
|
300
|
+
o = o + M[x][y] * state[y];
|
|
301
|
+
}
|
|
302
|
+
out.push(o % F$1);
|
|
303
|
+
}
|
|
304
|
+
return out;
|
|
305
|
+
}
|
|
306
|
+
function poseidon$1(_inputs, opt) {
|
|
307
|
+
const inputs = _inputs.map(i => BigInt(i));
|
|
308
|
+
if (inputs.length <= 0) {
|
|
309
|
+
throw new Error('poseidon-lite: Not enough inputs');
|
|
310
|
+
}
|
|
311
|
+
if (inputs.length > N_ROUNDS_P$1.length) {
|
|
312
|
+
throw new Error('poseidon-lite: Too many inputs');
|
|
313
|
+
}
|
|
314
|
+
const t = inputs.length + 1;
|
|
315
|
+
const nRoundsF = N_ROUNDS_F$1;
|
|
316
|
+
const nRoundsP = N_ROUNDS_P$1[t - 2];
|
|
317
|
+
const {
|
|
318
|
+
C,
|
|
319
|
+
M
|
|
320
|
+
} = opt;
|
|
321
|
+
if (M.length !== t) {
|
|
322
|
+
throw new Error(`poseidon-lite: Incorrect M length, expected ${t} got ${M.length}`);
|
|
323
|
+
}
|
|
324
|
+
let state = [0n, ...inputs];
|
|
325
|
+
for (let x = 0; x < nRoundsF + nRoundsP; x++) {
|
|
326
|
+
for (let y = 0; y < state.length; y++) {
|
|
327
|
+
state[y] = state[y] + C[x * t + y];
|
|
328
|
+
if (x < nRoundsF / 2 || x >= nRoundsF / 2 + nRoundsP) state[y] = pow5$1(state[y]);else if (y === 0) state[y] = pow5$1(state[y]);
|
|
329
|
+
}
|
|
330
|
+
state = mix$1(state, M);
|
|
331
|
+
}
|
|
332
|
+
return state[0];
|
|
333
|
+
}
|
|
334
|
+
var poseidon_1$1 = poseidon$1;
|
|
335
|
+
getDefaultExportFromCjs$1(poseidon_1$1);
|
|
336
|
+
var unstringify$1 = {};
|
|
337
|
+
Object.defineProperty(unstringify$1, "__esModule", {
|
|
338
|
+
value: true
|
|
339
|
+
});
|
|
340
|
+
unstringify$1.default = unstringifyBigInts$1;
|
|
341
|
+
function unstringifyBigInts$1(o) {
|
|
342
|
+
if (Array.isArray(o)) {
|
|
343
|
+
return o.map(unstringifyBigInts$1);
|
|
344
|
+
} else if (typeof o == 'object') {
|
|
345
|
+
const res = {};
|
|
346
|
+
for (const [key, val] of Object.entries(o)) {
|
|
347
|
+
res[key] = unstringifyBigInts$1(val);
|
|
348
|
+
}
|
|
349
|
+
return res;
|
|
350
|
+
}
|
|
351
|
+
const byteArray = Uint8Array.from(atob(o), c => c.charCodeAt(0));
|
|
352
|
+
const hex = [...byteArray].map(x => x.toString(16).padStart(2, '0')).join('');
|
|
353
|
+
return BigInt(`0x${hex}`);
|
|
354
|
+
}
|
|
355
|
+
var _5 = {};
|
|
356
|
+
Object.defineProperty(_5, "__esModule", {
|
|
357
|
+
value: true
|
|
358
|
+
});
|
|
359
|
+
_5.default = void 0;
|
|
360
|
+
var _default$1 = {
|
|
361
|
+
C: ['FEhhRZjgD5jnrn3qRfvYO9loZT74OQzeLoa3Bq1AxlE=', 'CreykTiOXJ5DwNwfWR+4Ps22UCLhtwr0O4p7QMHf98M=', 'K3y7IXiW9SyajAiOZUryHoTN51SjzvWxXE1UZmEtat8=', 'K8aw3b4dcBtlcEKL3Byhvw2ln/O7u5X8K8ccDG5nplw=', 'EjpVoxmAOE89ILLOy8RO1gw4wR99IOknHvq5qQXu/Tw=', 'A3UBzIydyBkwmnafTfCY5YiwGFi8jrfieeKIO+n7jFM=', 'HCEW5H4DqGuxFpWwpfbatrmkYLHrlRqwHCWeyj/UfVE=', 'LBghNIkDLoWpyMuOmmWDm/rtE+V7wPrknb2uv1T1b5M=', 'Luj+09TSxxoEKer9jl2xcY8p4iJ5hf3yrYcDyDW54DE=', 'KMZNj17XqsAEySAp2em/kbqUNtHM6UuTFtERxwoMFxQ=', 'GKAdn/t0euDePoPHB/iyT2gshPFav1cbNCVKA0eGZeA=', 'HCHZK+8ZfnOyNOR3e2DbFOZCpWzucVFdVOGscc3nK9M=', 'CtQEzLyx4ZWJfLYMgJgeu51mpmd9u+2ti2RV/mLYB7E=', 'Cptt6DMGT5O2rbma9sAFlFy2VMt70UyLl6+LYMwfs4c=', 'ExKeP5MK7W1HaQMx/wncUWDvpY3c4sPmGA1FvsOqOm8=', 'DXphTImRUIqxzkiVgTuxyC8Yv3v8nigMzKGAeYOTh/E=', 'BTL37DbjAEGwSGmGh1yROkm93y9a9f6+jDHy9AlP/qU=', 'BrvLjo4YAgEpPnEvSVDxsLvugIydZCY8hNnYrhVcuJI=', 'D1WKTbGjrAf2Hi5r7pR/c1hr9A8hHOtPaHylZ4qdyzM=', 'K+FApgtbXy+O3XioGKlpsgxkPkGbzwtXfCSg0Oes/pg=', 'HEnEuanwn3ua1fdOusxxBRK46Ge6zifLDeoG6JuW9jE=', 'FwwacychsSzefzPkdqOaGqd6gcBuLqxQOEewDVl2Uts=', 'GcJ9DlL2XKNPTjGgaOSTMca/w52SQfnUwwIEFhXPJ/E=', 'LxvcUlT5Igwacx/FJ2lk2rJrOF+kC2sEvtmWDiVDugg=', 'BbQtL7zL9NOdK+kznKvp0Nxtkh6FXNkRVLY50o1KHPA=', 'EiAEBxWkGtWfT0EODAWkLF/TKsUv6dBviBiNcfYeCTU=', 'JflSZSYVW4OUZgn3u5UH3Ukl74cd7pFtkUTrtOzhNDw=', 'AXv+QoQpmud0C20OIElR4xSopdBFJBkUeXipWzR0JEQ=', 'Kl1HZAIcpx14qWdMtnCPFYjSzq81eMQRHPizWe7wic8=', 'F/Atq3RfvjwIEyH+XO+EXnuNBwslFNKbKnt9icwIFdo=', 'GdpiYm23GZtl9K3PV/pKPbqhdkp70VVwjubzeMie8BM=', 'D4jilfou2BtCbJH6aTZqc+33Xzm/GGNM0mbsQDiCngU=', 'H+McVUhUbHlI/k7hvXQS4ygO/30gywmqhfSfJ2YUgBc=', 'EP3BYTvb9n84vd5WGy+R5MxItZ+Y1kNjj9wK+tv+Em4=', 'HyYYwuvpV0UIucUvAADjPr/drRoD/da8pu9/AJMSe+8=', 'Ep/n/D76xqirI9um2IbzlNoR9ZU8+Y4oJpoNuip0XdM=', 'Fa/UzfHk+CDBYx1KuFykujuvz+5yvq3p+uYFIxAkSOM=', 'Hyx0ulw2fjcNco5x4VsmiFGnu4tFUoy3NJVgeayZsBI=', 'ETDhhy128vk2nPWble35zhnwH6icnDaybgne9nhtrTw=', 'E1I9Fz9+a623O2P8HJu9vuJCxhvGhlZJMydTOlwbHco=', 'FNpA0K9CemXxhBta3JZThlM2j3JUy1Zn3a27rXpXTNQ=', 'AJH5ZADkKX6oW7GGwXswToJjjlf9Yx/2MVl24aXdi4Y=', 'MDMpv5AxxVFbmjTUmmS7agJnvHtUoN7KXEUCd6ACzcs=', 'FO1H5VwdocLwXTwaGy5sGFCfyDNuz+nbc3kW4oP6ghs=', 'EWHxCzV3ddgQrVO8xKINWt0rAyUcdH3rBO6UxWXljWs=', 'F6ilCucs5wfyK8Bw65koUcqRTrlMxo6vu4qWpxTrgiE=', 'Gmxh15Xbr2L5klCzfsXfiGRaHBU3kdtjErky3CUOT2I=', 'H4vSq4qoQGZMTu4ZjEaE3EsFdyuyoIadpnIrFfRHoTM=', 'H/y4UqTwAnqXmfExzXS5jM+4y8BjSdj+/MYvEMj7Pi8=', 'A150LsUvGbNtSJxyD0Z/+td81TvC213dskayMCH3nxg=', 'Hfqu5BvflNeDqin8Yrfse1VnOqgY0wX9QtF1oF8uPYY=', 'KCE3hHegLplQBaVjUIhUCUW9Mz8tFFXwOKIZuMR5azo=', 'HbSk0PI4pXCxBhxu7IHALzH/3Up8GedjF08jjQSJdCE=', 'FL94iUV7ILehNns0o6U4IX1pO1JCav9ApLtyiTsXhMo=', 'LO1Swr8pb4fldBDD7JqUg6eW0WT2BJEnEJ/w06nAhGU=', 'Hd6sWAWn9K2k0EQe0QjjFJ1M5lhPSa5b39RtZ2buozQ=', 'Lja05enJe0YjBOjitfnciOHJ8hYboEBnP5ERI/BCrnA=', 'DGhA0csGZtxZ6JsYZSddihZLRHxe1kNHyu5jUCwjjV4=', 'E34uPonnHUYfTJvD6PEhgyYqTR21XFibLK6qwBI49Yw=', 'JQky57CtzyyE7Uv7YKNra4LlWqlHURV7HUV5Swgciq0=', 'FwpykvVjTAbdO/CatcnE7NSwDVzi81+XK0VVOR8WtC0=', 'DWjLvnconnjVy/UdcPG3W6IV30570BSdELLFDypPO4E=', 'DK90VjuQUl9kWm0gNuzRMG+h3GgLSdnOTtJMl0mXMXg=', 'IKfRwKJ/zOeP/jcvTFgwaxZvlFbtRs3rJV45W30w1Co=', 'BiPzImtUcLJ4m4pTBA5ERDOF6Wuc+gvk01AVFYpGhGU=', 'FjIwhojCXnkPV9aKU1AkEkKlYwU0feSlAJzka4zcuR8=', 'LeR5Om+ZzRTj9mQiEfTQt7z6NhWXxUT/y1pWfpB29H8=', 'HU0G0Z6hsJyteQhtUb3hFyWlVPqZVZyi8J87tz1yjGY=', 'BIDnR5pmp82ephyLKJdDiZCDUKvEqvwYzXXjPdEwwUQ=', 'MEMLAzaOvKqRJGlgSQvPkX14aBRj4ufXRL+0QzXawk0=', 'C1ezcyASfUxQ8mkSSw29yysfE1IkGl0SEDKD4InAx0I=', 'LPSJBlDSckDhlfYKT2mO2iSbjdYUsjN2tQF40t9tK48=', 'HiIcVSaJi/0S3oaFGg2XA3UaLyOQCKtfm307aRHGQYQ=', 'KOB0ha19mS7RpY8ynKEq3OTsaT6927KVLlTTOfLuvaU=', 'L0TWT4TeFtxnvV6tUe+x3IOByEUgwShU3V7zoHms1OA=', 'BQp2vDLr0d/ivjMPME7ces5xZ6t7oVFvQCHGLPDU+sI=', 'L1jEXl1lmmfXgTZyQfbDXYy0Y2HZeyiUfSlCHCcFlKk=', 'JejamuDkLoQOBLIwNw54K9tnU0hEMlujb8fl4WDGanQ=', 'L+xzTaIP4yAD6gTxJ/hEck84o2i6EMKVRCUr55YED38=', 'KIpnePOoOYio7Rcn8V6TtMsU9OOju7kd1tH6yv/9Xu8=', 'INzGx1/Yklm+f0BnULPbZ5olqM0nFdJFuRdTkKySLIQ=', 'F/QroQlC3yXLilQXgqGLb9Mc+WXREXjHsErEW03qXdM=', 'Ao7rhdEVqQQCDgxhSO7GYD6c7avGZKvudkqv1FWYa6U=', 'Cx187POnmyrT+imPbOp66V2AwCmezJGOn4ycPTjVnUA=', 'BEAznJdkzsecFu/bg0omJh244/Es4c9yLSPA4R/0zwc=', 'BspkfClyfBlioAIXfaLVBPSwel9+tXx5uI5reru9rVw=', 'LqEgqGT1xAk90ali6PATx7jvd4sE0rpb/DyrKGGbqeM=', 'K7c3VGxK7nwMwrqHwRV+KnfEeev7Xcdq27Oc+Gl2M/0=', 'DjDaZJBiXTPnnNUBdvVo+aLCjC9EmivVGiXRVoaAOpM=', 'DffKcnihNlC5GdhUl7LrsPcQNafCBDDUEx2QOrf1dSE=', 'J8xYn1v1hXlKus5Yn7inSi94TAmQuA/KppRAl/hw4tU=', 'IlXDajjIc13kXO30Uq+oQjMtMwQveOYMQ8dFVCGzJb8=', 'Ez2WAr0zeNafaBwnsFvf/Ji32GzKY9c6YMrtSFeE0Ic=', 'DhVI6UKunT4mhgaZuTcnyBeplIYWyT70rM2YGx3D14o=', 'DyDw5V2TaJ/gnsMS9q9HYnSC5L3goWAqjiyNboTopq4=', 'LlIyhIPLW3/y605FsS5RsmIyybwXtykpVMCp9r+lG7k=', 'ArIWLVM+BZpu2iq7dHEu2zp4YL7qld2KSr/JV2YIBPQ=', 'GeCSdxXRzG04lCmUf7Nzfa1zOXTGsuE+Wz1DJRlRbHQ=', 'DTqABFfXd4VjYwO4uU8X3P/LRgSIcqyfdO9/J+5XNwU=', 'LJdNGVJVehqsX3uuSZZhbaYZtz9EHE5QTcj+nPtVnjI=', 'B2a/7u3izPNwjhtP8wcUwiwdQ0zb6PVVFLq8LdXZe+8=', 'I9rI6lQIL8Ex4XOuVeRjDNTKfIcbKgpHnB505/GR5iw=', 'F9X7bCyzcBDj41irLVdTdocO0zGGuOrkmtO0fjQKjX8=', 'F13Kx22KgSYTm1g644hTKQJG5D54P6aQPsgAfxeMACM=', 'DE/Qj+3l0iGtt6v1SYmMkeW+foW/H9KmEb8YLMLnFlU=', 'J3k0uQnnLTo0dbsex2arejitWbEoMD/FAC8Cplvf5yk=', 'Dog0mZjf5wPxsYRST5w5TWAEzKz5y5UolujP2wsHi2g=', 'HxsgeLYLD84Hgk4qK8jK6O5nNRSwBwqLRXEMx4y7mUI=', 'LrFVlWbFNt28MW9kgtUfo0BVdldwD1uKhG6BKg7TNNE=', 'HE29wzXPZ2Q1Ugi0ydJD00VB1iPGad7Cw7oGa76vZ3M=', 'I3SmstpvjKuOXP6NgF3Tot/KHot+ul3IV0Ah/RJB47Q=', 'Gd00JTPMxgOplzjj+1pWm5TvcbPkn5D7h09hYXMwcvQ=', 'IX1m22x/s+/6UIgAWH0us8bQPYOFEy8vzOfzXycFzM8=', 'CBX7hZH+AQOM06OziyNvnvynfGGNO/xsKn+okpbH5k8=', 'K7lDtAwr1FamwXhTscqI6w/zb1l0sv+aX1CT6b9joW8=', 'EaUVP85llRPufLmXSubLpYHjtM0UVwxXCf7D2NP8guk=', 'G3K/0HY12FAbLv+HhaJJW650x2U8+Q5tXJ8URCaDbfQ=', 'FJAsBwDuyJeuF4uoyvhQ15Px2HUSvqDs6jnPax/uIz0=', 'CcE4xuCmFqSf+Q1DprBD87dFt4hlhW3EwaReL9hMs/Q=', 'BbWKPc5XsoGicdaYlQUtiHRYpxV4PoMX4CSmGjXsELw=', 'K+jSlSXAz91eazEl473jv1WOVfvoZ/AkRXqWdlR00Dc=', 'Bh1y948bqdxrTX93hCJdaoG9/Bta1sJDafnAVgUj2a0=', 'C/GK78rP+r30ES7drcphRXOLSAOzYUW7lRbbUBoGkuk=', 'LnPdEF+osuyTHYzfKexnnjqYAakwcafV6jBlklXwO8Y=', 'D4RA72Z8mugTN7pdjJJ6U0fecpaGCyEcrR7L+101mO8=', 'AE0wOy3qYnsnMb6D+TrDTn0U0XihOABVjKc5Y5XrEY8=', 'I0VBrXIECnDaKZajUmkjDJRpnu8xOk1IBQgAjLw9N8E=', 'DRI/HnLSa5K92P1z0UKGwxKtTCOstGsuCMFXEEQJ4XQ=', 'L7Ngd28N551wmO56pBI8Be5rBai+Rgp3TzoEjhOFRbs=', 'A2hcB5Q04WcnbFfTzHlwO339xBwVbqHot/mbaValUyY=', 'Jgrw4P/8yXcsFjGxeTRFZrR6qto2geuQNMb3XDcFwcc=', 'KGK0E3T4m2lSdLM7dz8lVJFuK/+f9nJUX8L0lWP2J2c=', 'AqmRL+FwMQInGJ6h5pHQNi8Ys4tACw7/GSyllRPrqNU=', 'COUTreaUoNisHz6/GpZEDTLHE9UFjhIk4HA0jCgfSm8=', 'FApKQx4u55QA7XRll42EdzITxigmT/gPIax6a2c9Cas=', 'KWr00BnLXffZWbKdVJw/BxICtOuotT3F7pee0UM3eSc=', 'AYMuKEp/TIFhSIK2k5/A8YVXO9ICPj5QV2VHC7gSs0k=', 'GoTVame/3T2WWr3NMpqnjU/pNDRJby0QOGH9GdZtcmA=', 'BAy4KEd3OSfSrv3AdIkDep0fdjHsp1yfsN2gy5294UM=', 'AQ3PCEzCnLfK7PJqpjO85O0rAZ8oh87nsaePidP6vi8=', 'B+3CKgkR6iFEJe9UK3dtsjsP5YF4ENQMcsqYqr2a+oM=', 'LupKsIrsd18hSEeeo2+7lpNtpYuki9HS06zUgXOqq+c=', 'HkDA6CV/5KYQBc3PrRSM9/R9G1z936oIJzhpVRgkXxk=', 'I6J4CVg70epR9DbeVEPhCPadRM31HcHwPiGUi0mAuHY=', 'LkZSsETb/kDmO2sjL81fPzmr+9IFHuaK3HVAgNSSUKk=', 'Eeer227Lr8Ln2M3v6ce5xQR160dds8LK9/fWf0hXdfI=', 'GZ1SNQzDDoxzgh+AIJbw5UehNVGye/a4mTlvY6xc+Oc=', 'D1ddbuZ8vs2YNFYk4DKjfIWafL7zCz/dyUnNCXhIQQE=', 'HEtvmiritBjmJlrLqclrBhhNBwKOX7eE80da53cv8Fc=', 'Lctc+Ilt458ijhV8DFWT9GJvubwiUgY4PbIDYKvwySU=', 'E0CrufThExhr3CbL30vMpQtTGhB/hjylRFdePPhw+OE=', 'I2jmkrcnh8uIcOqIjnFOAG9Z0rRGDPt0xIqMxzsdGls=', 'H6ua3ZuqSk9W8jFld1xvLZIqdjKpT5Y3S33IUnVvVLY=', 'DH97gjANPGzj+JV7oeSt1UxMAV4g2XZdIgVxwWq4aA8=', 'FdY+hr6s2Txgg2iOXZyPPGlHkp+fH5mrV4pMOpIu/wM=', 'C+hDrl+bB+UlcheK99ro7QXTaxLAYHhikpNV6nQCPZ4=', 'EzJ0nFI2lMtpNeCWOgfoGwWWfOHZUMC3MQWOySp6DJo=', 'JUOUCIEOB0wL3UWYuYFf7okruVylECns8Am/+lubloI=', 'BX6NGd2ZmpGNopsJQLODup/RXbCw9kmW3/Z/61X5p0I=', 'HgFON+mxF887SHDZmfK1XTU00Ka+mOnjV/pD8B5wop0=', 'Gk7STm4DrrzWvbEAUz3JZll6/hXIUbS4Y/boiQhMZHk=', 'JTQgAHCD8aqGOtR2CQXBA57UERyfBT8ncQRS+DzjapA=', 'InahRBlxcJr/5tKpkyAAHsRexyFVxXXd7srA4ydZqwY=', 'KJV90SGOp5n9NBHrGTJYU633rorhKB91MwL+fTHfp7A=', 'L9klcmq3lMiL11eWqj5/HmaS8pFM+AImfd8B43kCoAg=', 'HPilycdqhLFHyCONklPNVbR8DEPYKWbEY2ooZ0cF/Zo=', 'A3PLvDBuG6uecHc2hxXmIwtLLi5KHbnGdLjDWaQekQg=', 'BgKD0v5/I9/1E9kRCz3GJEi8SPUxzgweq1kgvyMpCkA=', 'DatGXW2RB0DzPvbMDq3HG/gRm9/Vo1J9yLv636pAJjw=', 'DLp7y8giSyqOSroXl3IwpobNZCHcDKU0bzRGtiQ5xMM=', 'HkNl2weQycT0RbBlPEZv8h25bDi0B2uovWi8tN6mkR0=', 'G7LbohmamrO8hu9fnef2xcoT1g6rQs7WjemPxkOACo0=', 'CtPBhwxtbvQO661SEjzRopE9nWLoC/usroEuCCAh+co=', 'AbCYyR57DLtcNFiAd8Dd+VMA3fYUk1YwwM46JickUwg=', 'Gf1cDqwU+udZi9TO6jseKZiwwWhJO21yrkG1duVbnD8=', 'DUdJ15zBY/FxEKQEpG/kJ8ZDTz/me357TM+mq5W9fhg=', 'Hrv+gRSkG7gJ4LMzmSQSMuuUCthyjIpRbUCtpEDb/c8=', 'JwTlthM9l2TW0/F9SdgzIj45N/gOufrqu/upuvS0wbg=', 'IWXhyAJzBbGuDjI1cWNeXVQNE9cQw/mjkLaRPxTQNeM=', 'LjSX5NNf2llsBq+mO8Og8uVdTuukrOtg5lCBrWOqi4o=', 'Ax2kNF7s1ttsD3sHx4Fdet0f4FRtc49NeatcV6qEHt8=', 'CJ7OVOR6pckI5D5fCHN8FDaWcIkAasqxyc0Z6sSiCHY=', 'L1PBXire0zxH9VoHBIPmzH84Ifv4qkBnfQVS7Z0Q2Ec=', 'FCqjT0suitDfeiGz45wAyLCqKFcJSAHqr9cr7+0Hf5M=', 'F66k2kx7zw11iLAU64tAl53Scl7aTmrOMxmCRnx/8r8=', 'DpcMGdGXSNjEZRBNjwIgA2P5pBeG8C8YJ3QrINwNFyc=', 'BLytnlU3lWQvWbr3FKa9tDL8RaCgt38aujqYI0dt+bk=', 'JCwL+82qdvcV29S6glxx/P7WccGxkB+khMh/gQMV0M4=', 'JdsTQ8JBBAcQI/tu002ZCQeDEeHv6FrwoRsZEU+p55A=', 'L/5NnEIKWenNx8Masr81GHyhR8uJijlC3rNnd4YDaoA=', 'EluwOvPizxi75vW1kOs7+NDRumO+aWSD6Y8oO8fNB6M=', 'CBa+QnRbfbtM7/5bjiTqYP2LcZ3rpQA3rHt1lIdFxrw=', 'ERFg+az27DYNG2pxIxOg28viPmRCAFVHHS7kxd7bNdQ=', 'E3eXjhsfaokl+o57eUG9+PtZq5VCNCQZKD2CA0Nck5E=', 'De/B2IghZu88zeU6TyNvuoPThGIZN87lfkIaUT0NM5c=', 'L4+lx4xwbjpdSgPyp6OVMEbX6Uy4in7zUOZ7W6Dw3r8=', 'GiqVfsCnI9phwhNLqwvxe+sA5tzYRpDCMNy55Y2pSCc=', 'HN+HEJlfXgNBK0p/aZUy+f0B8OoWeo38Hd834oBa3e8=', 'Jv0xRxgow2rjbCe3SAVLDAxP5SObMBaZ43Ze6+zBiUY=', 'B3XZlswsRFbzA6LB+QB2R+Eakh2f6j97kmFDuZ0voL4=', 'AW+5M3cIymOM39qRvQ2uprlyJO97IGJnKt3RvRi7iQA=', 'LDkvvn0/3kL8pPlHi7Q5MxJYJVNW8YSvb3bxGQVBF9c=', 'GHoqO/eaafo+UInvnx/Vb9tHxV7s53qiKKo94bSGvLE=', 'AnGoY6KAoyZB/6M1ELLt0njJhjA1lTLz5Qaydf1dIM4=', 'FVdFnJx0yUqgDlr2mh4xEvtpU3zol+wMcYlY2WUW8qs=', 'Ko4myo1kfZpjiFFuqdz/iQg9U55YFowqUMba4w8QnyE=', 'Ict1IZTPQ/O1GULrAEDrqd4rz7HCo/rpeSS3EPJoMs0=', 'LCba+Za+JHrNbdSsrWDTi1pHHmMiGI0CwTfny0hDd+w=', 'AkAXbuDnmC7r6Spo0+OjjCaCGswPXQWM+ME3vKLSbxs=', 'JjbglzyGXBvZdN142qqNCoTNr2vhrUfs8qDRjxFzGPI=', 'GehPTyWnmUlgQWYdxdl1toH24GdEzuibe+XZ/eF0SsA=', 'Dr+JBko68kfKHzb281cBiOJx4LMmxPsmZk6J4UVMoRA=', 'Jcfpe0db4A6LVZo4xFI2T0ycUx/suKxpj3/XPOIucew=', 'BETJnlkjU+WuyqMCrdkBwU2MVScKFgr+1EKe9VmK108=', 'E424iHgwVl8mk9Dg8C5OeeFEln8LpTsDUZq6dktcmUo=', 'JNQPRiEU/p7gKq/PdLT8ok4a42XcdcO1K7E8u7LyHt0=', 'IeZdbY7kN2C8pA5zC130xM86inMtsUj0spUbTGHWjow=', 'JI3XlmnsCdvwNQoV1sdcapvarO/KFNUTAJePE9GrbRw=', 'K4I4wVSPnL4p/TXPkee0jw69p+Y57faf6NWrp5JNU2I=', 'JDn9I5JX84GBx7489RPxv3I166lPa4lCqUy93s9vYvc=', 'IAlYI1KBphuixL4KoygqGMdLbSYvXefC4z0rs+iT3+w=', 'Dh7KXfiO5fYM+n4f5b77txn62CEfqbLQL8wjMZDBfxI=', 'JrU0J/mz6ix2nZxmD8YIgaFpwScy0AG3FY7ksbhCyiQ=', 'IPOz9Kyv6fivPgZmGzqPd4+igSUiudcKZ0As/42ysbQ=', 'IR5dKznWJSCnpifs6MrLrJ+XUG3vTsKGkoumwn1GOxc=', 'C7dD7jSAISnFVnMa7Z0wLc0IUxPOVy9iQtE4MuU2tLQ=', 'I8smYbSI7nHkx1P/I65L0l2KRAlPZrZTKXfiIUDrpcs=', 'A6NaoxI5Ec20U1uu0zWfX2pSBbnJPvMdNTI6R4B7i8k=', 'J4A4SKCu2WqT+pQ7ZjXkUCF+E39K3nSmLXkXMicUtpc=', 'DLN4OcLJp/95iEy+x19B6b5eR8dtYVOCMb2BYpltb2c=', 'HwAm0L8fjh3VQjzC/sH7XNqh7NxMPLIY287vd8ANL5M=', 'AqfXu5cLim7S7mb6u7qVa22jsQD1tfuSju9C+XCCc8k=', 'DP1/QhXkNMjaF+wyWLC8YFrRqy6QqklDUeTuQLvEkfo=', 'GAsRtyBiKhVoSdxvf25/VxZZvmloIjDF7ZrDOXAKfN4=', 'BOlqllvOPToKJKSkV8lRWCyHE0nOfu4aq/5XipTGUBE=', 'FZMfeCtF9/tlbyzb0fdwXDU6I/4dMKWkahUi7RYN860=', 'LiluV8l6Uwms0m/r9VrJY6VETBxfcDrYig17l7ndOLE=', 'JhV7zreOhGu7Ji+aHgbUJxveWlvOjwQZlS+X/9E+rKg=', 'IZTriYR9aw8Yl/Z18ZwMVrYbEySO/zyjbjT7nRx57kM=', 'I1C/NUd2VomRUa193pbqeFfhVQFEcAjatrPSfI/6J08=', 'GkhvCuWRys2vCcWKScTReVQFQ1NAgZ4APwRp0RC3dSs=', 'G1bc92+yPMSoNNRVpAZeEzVxQCt98wnVm8MQXUKowwE=', 'GnSdeWSvC3ICkT7yBMZT8rS/tlzqt7aFIzq1nOO7aSU=', 'GK5ZAHP5aWlq92L/pOjw67+X+Mx4fjfN3R8yG+O+rbs=', 'IcR7J12C3eZGDV52mplCEUSxxanaWSlK3py7MXED8kk=', 'BHPdvVLnN+UnNk6OtjIHl1w41f1swysnIQKwgs0VGPs=', 'CxL6yVttOogdiSZXyEJOZFrE5rAFFfkC1ZRXQwKybgI=', 'CK52FqJgz2ZX+Pc6woRYjSxfB/9CXYN6p83O9j4+IQM=', 'A52vaHYoC4Doc78qMv0oNKg8aXV7rdWKiI74Gekmzig=', 'Jeex10cKPHXxPwtWVGyOCfLY7+/wbvdm+ceDyoadEw0=', 'Ho/TY0w/92QYTQNDX5hYSxG1sVrrnHUmLaPx6iwqnno=', 'JB3MUaw3gIpBXdHjwoHwWv8ReJ3Ayv3XejVITgmT+aQ=', 'H/wxU8Vu+XVZMs6ivgVzdJva/hxPoHgaS4tAeM6ddUc=', 'F2MNYtmj5RDIik1Dw2D5K8D6ALZgMa3sKb2VQ/06F+4=', 'KYBADt0ddOPWnbVFjSzNX6vbI27BaoKkMBoKtZ6kpuk=', 'MDT7JDZhI+xtyvytNXJtv7FhlMA23NZI+mlDm/zQDNQ=', 'Gqfo9Bicqd/z2yq3ZIvgojkplc5GBB4EaA3KitcjLfA=', 'H6GV+DSmnmI3L2DrSX2hZ2RurhQVPYA7OdxdEfXXgAs=', 'DyPxx01fv2GVrVpq7l5WmTxUd+hFP1uToNe6/TMwNtM=', 'AWVW+sk0inNatQqgiclxUbPKrwogo0+52TcFBaFRVyk=', 'I9kreTZIEQ/Fru8GM/DHfKyw27yhh5uKb25d9EXl9ws=', 'LkwQ7F5l4vI5u8Q8EwMd8mhqtA/XmjBLBdYRuCPyO3M=', 'EkGLv9d7Y61eFoZK2cMv+/xaPdm3jsK3kyn+XgqNKVM=', 'HkqKrOFavB1bdqnoSEMdLAanj3K2vrsSk+bFjlGFaW0=', 'Dz6WEH3s29aHLCDqCaz5LN8Xo+4dEzFIgJLZYXbet1U=', 'ASw3gCB/OVzCHesKvZUWge6jJJjdumzol6j58MI1cGc=', 'E+qxtOZyuhscG7kBdpMB8eVlnQPqEMYd4kd/8KwiFCE=', 'INxmSrsgt0VsBmKc43oeyxonpOiyTjG0i5xGNaowMj4=', 'LGseLP6njiw2eF52qM+xsFfpRx8k9bORF1w97LAeAA8=', 'GIySYlX1t689qWNVcpwqhnCrTCxwQASBsqyQN0Dgxas=', 'L5kTII4J49bp5vumOE/QdquJ8mYpduPjDghwuzDrVPI=', 'KzOAPZCIlwbnFPcgtWKNJvtgtUWh8+nOSaaukSsCQIY=', 'JsyrwQ6wQyfLXMPd4quzbwlwhsl+c4wTPJ9XB350iwk=', 'GxauDXxUQIy3X9kx8kZ1HysMPcINeegqJTG3bCK01d8=', 'EdC7RhvYryhE9J8PhAyU75UYslETRHQtH1Q4/j1BWuQ=', 'IzAxhHtHa+rQEY09szjokTPsQg1nPlBK1kclnfZVVx4=', 'H4TpeJW+5DjrPJLcmxhGya0pwWQ4ewautu0YQe2MTco=', 'J39/m1QvDCu19FvtBU8JYkU2AQw8+UUtInMZMyf4AdY=', 'HvyckGnlBouqwT0uZkVkG30n6A/CMHcWFTXERoLuV6k=', 'DW7Ed3YeLvusTxSzvz1SV6meZMPyX+EE+vmIsg/l/0Q=', 'Dg59fFUBmZt9Fhc7WbfK4fIDvvIa6/ACUYgUOcz5MBM=', 'IXvvL08SxtzJHCBYojORy3feU8puRNzcbqPTb+oybqY=', 'BXgMiK3wFTG1D4F+P+RER9KbNaqKOJxx6M8SJqzvaLo=', 'GHM4h6ays7TJDY5JkBluI0ReR9fqWTnr+4mj7j1ntL0=', 'ILrOY6z8rgscnyvuJLjp2oW6WX03sJBXIMTxXbIxsHo=', 'Fm6llTdaZ4asUn7p7O1z7Wv1UIdqvK86yStCyAiwDY8=', 'MEJiqe/0BArPQ+Mi1vUmdq4vhT7C56gNsAxIjPkXx04=', 'ImuscFAWbl9tt4zQsS028wW26MmgVRFK13Ceb1ckW2s=', 'JrL1OcVzgp9qypG6qVRQW8XD604d8dY4WCcX+98jiMw=', 'BqD79M1S6Tul5MbEr2XbAu6WKX+K0gDy8c/yUudptVE=', 'LLnCQRLTU0Gs6siDYPtSiSTli27KwyG5+ynmqjNo/yM=', 'IOiKTWB1Jt0H/gijVSpEZpEp64f8wLE6rI/or9kwFSE=', 'FURkmivXPjunLzlt+R3WVAHdj69R3jJfuu251TatlPw=', 'GYAHdFeZVxLETafhdxMljj+Os1S/2A7Z6vPsuvaWAQU=', 'JdHSL/E+dwXTwIX5f8Tk9pFLgv+qXSCR7GTaxCN2Xvc=', 'L+yZDvVW7+EDWkZP9VgedAZ0Rc1Uq8r2uMA5n+DSTPw=', 'G9lWNQbZVE7z5IMOE1RQEsV5N5wtzBMwQWxK5JvE7GE=', 'AK/80XumADxW36hVcfwpc3siWoDUgOfdft7AHxTyMBA=', 'I2cNuu+WaIHwf5GaLYgxKMeyPPdnpHeysuB2K8DbwYs=', 'H5OlMpFzlMfiL9F6vupjicZv164t2fAvhg9tlpR/Dt0=', 'LeQun1N7fWGwITdxwOdPVVUSvge2pQk0c04sW+tAvjc=', 'JcVX9FuZeBzTfTuyKTFmKmf3izd4LIhbRWu5bVXohAQ=', 'IHTItwlwXJiIU4p/ijxK/2R3Mb0W+OJU+nTqnyvnZiw=', 'Jzg1WVYpgTiUnkQhcdak5LdO8gZXQNt8/DoLYP1XOss=', 'E9Nq0KTr64GWl3hkllnGXLfQxBzFGYcf23Gp6moMqlY=', 'CKLBi6QTgTSMGs+/lhdxaAa0YqFpG8LjQ7ebgIXjdrA=', 'BZCS/Dla7ShYB7v1V62aEEH1nAeYIrEIhFeIL+57YSw=', 'FhkkFRtaWtLYysEZUiqZGpBvFehTHccFZ/ayg3HMJOM=', 'HGjKj3qhdlkHVAXvY0G45popi5pNcvO7hUswnkuoehs=', 'J/XQO8ocggf3I5pLLPc65VmhWqN+e93fOqsF7sXOVZI=', 'Dsv/SEaWKpddNH6pqPxGX7RoYVV2IvLCVkp+Y5gzwWk=', 'J3xN4jY9i1tFbPxaf/jkb/LsjapZhV9a1kvAUh86xWc=', 'GxGGLFKs01G3pGR5P0+7V/7Jn4MrYyJvldF1yNL8CLI=', 'BqcZxYTHT/vdchjrVly0yL2GyS49+zxz4VJyAapRI04=', 'Iw5K3uy3mYd/fOmljINrmdUzWEoZXB13oxOr4cfRJr0=', 'ELEJuGSAnEdnoTPM5sutbIhigXO46lHozKhYMMp95SI=', 'DiEReXDc+9SxUmslNjbzd1ONO0+q61qLJL9iANFMxZE=', 'Jmc0mXhAE2L2sXk57rDmT/VWB+vbNccHHbRrs+e6R3g=', 'BQAPpf2lBeApoTv+MEwmew2GxywDm6v20/8C7iRr4C4=', 'Jk2eCUrtX0GmAkIiCjSihAiQh7JDapv86BdMyb6MLiA=', 'CAdvnEdD3mEw/2Is9AHt0skvJL/hFPPF5ySJF0YxXEc=', 'EyNwq927Cx3VfypSDCUza9fO3pS5W79cIVHW2I5kG2Q=', 'CP8RFreiJ7/f1EZaZ4kIgrYVyMTBfyjY0klY7fYC3cs=', 'K8sLDbi54+ArfpwclGD92cbNmFYjMuZI2KPgq5RZdSA=', 'EupozmiBvsrX+KaxF7A6uXb3q9WX+QOwvyMNINIalDo=', 'J0OcmKdmiAZ6CXsZtv3X141fiOJ04Nj+peprdAb92n8=', 'AvQNCtBfVlLjHvlECtcevIQZ45NJOTfwXwBJnQKpnjY=', 'L78EKEMn7k9oDwa9OQ4wnQ0TrMdLnFsUtjBZuMx6v/U=', 'G+aG1T4qitV6gosGUUJc/Gl4xwJ+2/JH9rZyPCHfhuc=', 'JoO0JehaUI+WhS8UtCIPz+n3rYsXv+/A40jEfKeLtX8=', 'FtrOmy6AEuMdscfr5nLYa75hoao+FpPg7d/A3gqd2VE=', 'J6Mh+MfTyQIuli9/7y48hItFOdu3WqE58wQw/lRbzts=', 'BszXIQ3uHWsOIreeEtGQgtgHi3iNcQB7leendO2GplE=', 'CkHdQiIWU3Ur7zUPbXSpF7bLsf12o6EhZvTQvpeOQCY=', 'IgoCiB5NR6yU2VDN+DhidNF4LifL0NhFl43uyRKY8WU=', 'DiFVpUX+Xzy7Y5dgZYnqwZzZJjkznGsBcpikrTQItLk=', 'Dw8ZxikeUVRqJnxgzHdOX7nQiLrFMHgtiR7Br0uEcHM=', 'DpJbzRxt20o6HGfsje771AxTwNM+eu7xtGeVrtWUPJ0=', 'KtAAsXSKu4Es1uVBEoa5/z7wpb09JZo25F7wW561vus=', 'CmWqIy0y7W6N5j0c3/68Lz+mFkZcJ6r5fozT3P9khlI=', 'AmPYRwq0scYddNjoliQvTyYdyxZ6OgaSOJPXyyyT1qE=', 'KQHZRq3clLBA/VgATZpfjNGSZUDHqGEs7BxYy2DCs6U=', 'GInPqCCfSVLfkCLbncWDtXF6BpbaQc7mSTfQzWMh5pM=', 'I2Bk1xy2xkyEdHrCX8+NiBUC5fA7/4dWG4WhFrHzmso=', 'L/ehdP/Owphi4E9dvcc+vzZhVwAzV2KQwMH2zYztJ64=', 'GeckoddCyrEDRV8AQO33RaJpanEITJPjInFUUN1Nb1s=', 'A+7TiStvDmxdoQWcXzeTmFg1qig1AKgSmQSpTIfxYb8=', 'COK4Jzv6MMGshQMG2R5Gip6NBQkq7ky8gMaHJIRjujA=', 'B63Mp22DN3KIOaG2rDs+1Cr7h9cq+Y9S9Bby7FiyjOw=', 'Fx7zeJa64rECCgpYOb1ReEzhG7QjfVSMFxFp0y+hm0A=', 'IP/fy4b00AUGTtvClpGMMy0y++/xcp3lBWomq7w6Nfo=', 'COzXpvFzXu2GuqCU5gj0iPONuzmPz+1LmUODoMqORkc=', 'HD9dhuWSH96YkBifHYxhh1QohgDmkovBgqxNXkyfDMs=', 'KcYRhO2dRg8zdVihr2Oap+PAl15AFO2OvK1KJdUeq/M=', 'De/UWyiVhygiituy29rval6bGmSQKnNPQCuM77irO1Y=', 'CnTqItigkzYGBhAXmsHYL/+pSS33be7U6mDgEzsIEag=', 'A6N78S2vFADSl6xKwTuiTBfcJi2xbIUj3u5ODM3ppoA=', 'Ef4XkNWrv1k1/yIxjk9//mmWatovkTa1T4MOrLCmU2g=', 'AYFlhC9AY3XyNGaGkVr7FL8f4FZMiFjuO94Kuj3l9o8=', 'Jh2yXnz/Wp+3LydrH5JgtmcwD7fTYbUP1cDotplbBfk=', 'KjrDMUsrZueW++Nt93jF5GlyMgzEPsgHBIgmtnBLp8Q=', 'I8qkuA7PqZ6dP+orvB2782nRv8iTfQPQdAYcMP2M12s=', 'J9smAIXiJImN8UXyP2NfIGbY5OEk5YHoxiYZKbHf4Qc=', 'J09sX9NKeE1rkV7wXUJO5sC6u/Np55qxOLgWe1YY7H8=', 'LDop4TqE0moJEckona8apM9YQKraBwHVfiPfx5babaE=', 'HqIQ8gAaM00+gB9OUycNQtp6rzF6VTtCgqp46qIoLm0=', 'JU2+tSiEtpnBun+g1ugNYQkDsYo+UJw2NRzMOwJJRuM=', 'BZ54HWWJbr4OS6JtwvKZB/R7ze2kososcT2FBeox/V0=', 'C1sc7GPULV5hXcJpuIWiTO8wPseMly3RfNuz6RXMT/s=', 'KnwBXpw7LFfKi30m05obzIXW/6y32fvWbSqPHWTtDJI=', 'Kbc2uRHXGnnPY9im94bxG9Wr7iQWHcVnp8hR6uHkO1E=', 'KFdFqQp/49Ca9agIcEvGnG8XAeVzkS31zB4mXVlsQUE=', 'LZAbgZXDyWyMNuuZ/sATTsK4MEroEL0w2lVOMICCZxU=', 'GQXTUYNV6rp4WbWR7XuMnCU5gPBFDb31TXp3groFg5I=', 'I+gTAm/AuABk0ZtcVCiUL99+/qgL+o7ECVJyv9t7TJ8=', 'I8ChmiUsh+axwcIbGnmAAgDD+/8+MwDn5VaAcd6e+4E=', 'EcSuYHuuSSQTv2LNqiwoaO0f7G3AYxsGfKYPqxJbnio=', 'LNBV67fuRoY2XepFDwRv9iQF+uGxr8n7AXB8+B2g47k=', 'BTyf7y4CH6miD62iL96hUFtYoxWbu0czfb95GyFbFFI=', 'CjW9dOh8urqr6JrRMZ0snoY7TGMcIZOMmlOVv5eHKp8=', 'HBFQVlOc4gzVoE0aXEPisA++g7JZAb429d3EZm/Dg/4=', 'JClUBH5Xcv073tWQ7IvrTFQvLiZMjD4oTNxHNQXFGpA=', 'Diq9MVtHwNyThJwM3yZ+gRy9vbIApufCtn7ffLAXQhQ=', 'KCs3AgwIkNdRw/12lQ2AaGaOHf6uYh3VUtLeiH2i6nU=', 'KJM4UiZrUtnqa1u5I9nZTy5aW+XHeOdeB5QsI0tkO9k=', 'CZq2dlUFuhGY7xQOd7eVTU++eaBWznK6zjnASMANo88=', 'KvIR2OCsLY/af4SbjyKaIlxhhrVXYsensq4tHdhcV8s=', 'DNBw8jQBSigJq5DHHB2mHpipYyL+3Zm2qq4coQTz+s8=', 'Jnk+KryNPDDGBib7qhWPJjWH1r0Vgz1EixFiZLkwJWo=', 'IlvjbtDuheH4Ra2oTldIpWaZFSET/2G1BWtti95gwZ0=', 'AhdPSe2wLVFU0r7KLckrnMWVOD2h/ejwnkte4+paBl4=', 'D2SJHCyLAg5Gw1lMt1jwvdzb0JvQMIgW+0FzSoaYcsM=', 'GSqEyi+Z02mR4tKx3v85idHBVsI54Q6fVhQOGFRXYGc=', 'Kd/Ne2PwWr8nU6jDQda3pgxiQ7BMmhuLMyC7oEpNR4c=', 'HuJ61rm1qGdzOvxhorPnalK6PkvV5let6R/AOIGduls=', 'CrR3PxUMP4rTvJU49DzsOVp+NzGulz/v62I6CSF+ZMc=', 'E8NSoC9ZUYYgLLC5n6WMVUKrZ/m206Cv0QPe7/bYD0E=', 'KpfPLBDEv7/SmfZ8UqFp+SwFt9rFakHE3U/ofIJGzhQ=', 'AL7LtHBCvX+Mn2u0IhYtGu0ImihIL3/RarBqEyhf5wI=', 'AI5E2iHXOGkbiBdX7zftKcW9n3pEUPz1MpCpLMLKIXY=', 'KyBai21LcGPZMfO7XTRkBThD/n++S4PBeIP4ZSeIKhg=', 'LZ4yp8kFVv4QjSVawB513zOPzWOyv4TBkoDUJymIY/w=', 'KaMiqEwlvS3fbi5CACKNlavWNJoCJmrB27pSBzjOypc=', 'BnjJv8by3wEvT+VeM7torBTO0d8NAhUnkgidBG2CjEM=', 'D6/zpedCV5T+IKfg62FbixdgOUt/IwQoajrkAJEk2yM=', 'H49bYRr5/rnOqGwIQFgSBVPkBBA67iE/WkHR0CVBwNM=', 'Fgh12EeWAvlvQKzC0ELuUsFYi2op3kKEllptxskw6gc=', 'Fth6UYOjFqHXCvyVHv4s1mfHcyj8/aRYy/X+MEX0bZ4='],
|
|
362
|
+
M: [['EkZm+AVh7VkW8vBwsb0kjG1T9E0nPZVqDIe5F2kqTRg=', 'EZJPAv0ZsJJVqqHPRuoFGOPXv+70dCFglJEBHbC9CwI=', 'JH+n8CIwShmU/1BUVsIgHvm3FzaUmNP/zkRmAe2d+EU=', 'A/17Ge8shh8i93/4EPVOJ3vJTrdsAtedmGvj3N8FHD8=', 'GL1BI5w+cVeaZ3RD7P+9VVqB7u6mk1Kmi2fIVjwMKgY=', 'LXjDpdKN6f81vwoldjUZblcwyn9ASTJ3B4zXXai069w='], ['ClFKXCJ/TOyV36Ap6N0STDSJWqRrsnwJEfN4DVAVVAo=', 'GS4W0X2VayV7haZS7v3y7glYnqxb6AkVd1cj0ssdoG0=', 'KYzgweMRO7k1xwWOd3K1M7GqnbDAkmvciRflYFyjrBA=', 'CUy06DYhr9Jx5BvHFyfwFY69YSI5rJ1pixf+S+Bbf8g=', 'A9iAOVvpPCfWSa9f0ULnazORjLiEHVooFzvVz30yh5E=', 'KO6ua1hmrWjkQ7uvkWgNt9fiswN+OP72G0LLzP/OyoE='], ['J4u0mntORK6kbrD4gstpKAGm5g/dW1wjxjzWXMzk/go=', 'Bj7ewb7YMfUGr422SNb96hRTRYh+i9z/EJA1odm2dNc=', 'G67xy1UJtSakIGH7U2V/mbMjJQDoVRksvoyUDgaMR18=', 'EyRWSse9+eIhZOmFjX+o42ixZerqPa9Otn7lnA3y5dQ=', 'AFdhuMauyxqMpOpN/CyDdgZKSoAEzu2iEKVSQFYt3BM=', 'EMnigxWdWMtMsuNf3oOjuh/cKAAu2ZY9KpnxhheKFI0='], ['DDmen2eqQHB6ID/u+wuVi72tzsXKNJAdJT0CaiQZ9qI=', 'CD8N8/GgNR0DMOw/9gLKjMNTt/bnYscQcYTNe0I0SfY=', 'Gmdk1ZQ/xKcgtMChn9uMcRmEMHKHpYubX59dWCEssmM=', 'ARpjom/qv4f6Zr3mbMJakiyWOC12xqf/SPFTe+rtaDo=', 'CMp7ZGV8NUjzK+9bY60kKIpBwLJRCZrSf5Q0MH4+ZNQ=', 'AZmCcEcek2GVVEawzbi+qRXsBnXxzWSN3LBDA1B6RIk='], ['HWs9X26jacJvgl0jYpM+qjHqNewKd8H72eAcoVI+RDI=', 'EZ7xiLs90NMjBpdsGZQehmS+aH56aWkton2iFabwbUA=', 'LZ4KtcBok9/f0DSBOBuoa25ikt9WCdcfLGSy2aefgJ4=', 'JfFmMb93Bg9+o0CHwCW/E1eEMZ7wjNouMUGe4KUp5lg=', 'FEx6EdpafF2rrj8z+9A8rYbRi8WUx5pJfsuYlO21VPE=', 'D5cRYmJ3I/P+rayyiwwQTLj3TeUIdS+o18DbKvE96O4='], ['JL5RAJVDYgbdCr0LDLuVyIOrMEqlJZixppMG7JgaaI0=', 'IRYQ4q1KN3Qm+t9waLDBpsKZoWTBwaYD6u2USHDQubk=', 'FaZ9mBBBsfbwnz+evv2GTnedOvCBV3hqwHdQXlDsefw=', 'BJMn+nnSjBKiyCQGlH938Gd1sCh0aLMTaHdwHb58lZg=', 'IwlA3MUjJlj/nClpej/UFtFw6MmY8aqF3qDELXn5Uao=', 'GxIcBJzRFZ4okAfgydqZlcxLq0wm+4iOw5cqii5laWQ=']]
|
|
363
|
+
};
|
|
364
|
+
_5.default = _default$1;
|
|
365
|
+
Object.defineProperty(poseidon5$1, "__esModule", {
|
|
366
|
+
value: true
|
|
367
|
+
});
|
|
368
|
+
var poseidon5_2 = poseidon5$1.poseidon5 = poseidon5;
|
|
369
|
+
var _poseidon$1 = _interopRequireDefault$1(poseidon_1$1);
|
|
370
|
+
var _unstringify$1 = _interopRequireDefault$1(unstringify$1);
|
|
371
|
+
var _$1 = _interopRequireDefault$1(_5);
|
|
372
|
+
function _interopRequireDefault$1(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
373
|
+
const c$1 = (0, _unstringify$1.default)(_$1.default);
|
|
374
|
+
function poseidon5(inputs) {
|
|
375
|
+
return (0, _poseidon$1.default)(inputs, c$1);
|
|
376
|
+
}
|
|
377
|
+
let Blake$2 = class Blake {
|
|
366
378
|
_lengthCarry (arr) {
|
|
367
379
|
for (let j = 0; j < arr.length; ++j) {
|
|
368
380
|
if (arr[j] < 0x0100000000) break
|
|
@@ -382,7 +394,7 @@ class Blake$2 {
|
|
|
382
394
|
}
|
|
383
395
|
while (offset < data.length) block[this._blockOffset++] = data[offset++];
|
|
384
396
|
}
|
|
385
|
-
}
|
|
397
|
+
};
|
|
386
398
|
Blake$2.sigma = [
|
|
387
399
|
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
|
|
388
400
|
[14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3],
|
|
@@ -710,10 +722,44 @@ var lib = {
|
|
|
710
722
|
};
|
|
711
723
|
getDefaultExportFromCjs$1(lib);
|
|
712
724
|
function hash(message) {
|
|
713
|
-
|
|
725
|
+
const engine = new lib.Blake512();
|
|
714
726
|
engine.update(message);
|
|
715
727
|
return engine.digest();
|
|
716
728
|
}
|
|
729
|
+
function pruneBuffer(buff) {
|
|
730
|
+
buff[0] &= 0xf8;
|
|
731
|
+
buff[31] &= 0x7f;
|
|
732
|
+
buff[31] |= 0x40;
|
|
733
|
+
return buff;
|
|
734
|
+
}
|
|
735
|
+
function isPoint(point) {
|
|
736
|
+
return Array.isArray(point) && point.length === 2 && isStringifiedBigint(point[0]) && isStringifiedBigint(point[1]);
|
|
737
|
+
}
|
|
738
|
+
function isSignature(signature) {
|
|
739
|
+
return (typeof signature === "object" &&
|
|
740
|
+
Object.prototype.hasOwnProperty.call(signature, "R8") &&
|
|
741
|
+
Object.prototype.hasOwnProperty.call(signature, "S") &&
|
|
742
|
+
isPoint(signature.R8) &&
|
|
743
|
+
isStringifiedBigint(signature.S));
|
|
744
|
+
}
|
|
745
|
+
function checkPrivateKey(privateKey) {
|
|
746
|
+
if (isBigNumberish(privateKey)) {
|
|
747
|
+
return bigNumberishToBuffer(privateKey);
|
|
748
|
+
}
|
|
749
|
+
if (typeof privateKey !== "string") {
|
|
750
|
+
throw TypeError("Invalid private key type. Supported types: number, bigint, buffer, string.");
|
|
751
|
+
}
|
|
752
|
+
return Buffer.from(privateKey);
|
|
753
|
+
}
|
|
754
|
+
function checkMessage(message) {
|
|
755
|
+
if (isBigNumberish(message)) {
|
|
756
|
+
return bigNumberishToBigint(message);
|
|
757
|
+
}
|
|
758
|
+
if (typeof message !== "string") {
|
|
759
|
+
throw TypeError("Invalid message type. Supported types: number, bigint, buffer, string.");
|
|
760
|
+
}
|
|
761
|
+
return bufferToBigint(Buffer.from(message));
|
|
762
|
+
}
|
|
717
763
|
/**
|
|
718
764
|
* Hashes the 32-byte private key using Blake1, prunes the lower 32 bytes
|
|
719
765
|
* of the buffer and converts it to a little-endian integer.
|
|
@@ -726,10 +772,10 @@ function hash(message) {
|
|
|
726
772
|
*/
|
|
727
773
|
function deriveSecretScalar(privateKey) {
|
|
728
774
|
privateKey = checkPrivateKey(privateKey);
|
|
729
|
-
|
|
775
|
+
let hash$1 = hash(privateKey);
|
|
730
776
|
hash$1 = hash$1.slice(0, 32);
|
|
731
777
|
hash$1 = pruneBuffer(hash$1);
|
|
732
|
-
return shiftRight(
|
|
778
|
+
return scalar.shiftRight(leBufferToBigint(hash$1), BigInt(3)).toString();
|
|
733
779
|
}
|
|
734
780
|
/**
|
|
735
781
|
* Derives a public key from a given private key using the
|
|
@@ -741,8 +787,8 @@ function deriveSecretScalar(privateKey) {
|
|
|
741
787
|
* @returns The derived public key.
|
|
742
788
|
*/
|
|
743
789
|
function derivePublicKey(privateKey) {
|
|
744
|
-
|
|
745
|
-
|
|
790
|
+
const s = deriveSecretScalar(privateKey);
|
|
791
|
+
const publicKey = mulPointEscalar(Base8, BigInt(s));
|
|
746
792
|
return [publicKey[0].toString(), publicKey[1].toString()];
|
|
747
793
|
}
|
|
748
794
|
/**
|
|
@@ -755,17 +801,17 @@ function derivePublicKey(privateKey) {
|
|
|
755
801
|
function signMessage(privateKey, message) {
|
|
756
802
|
privateKey = checkPrivateKey(privateKey);
|
|
757
803
|
message = checkMessage(message);
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
804
|
+
const hash$1 = hash(privateKey);
|
|
805
|
+
const sBuff = pruneBuffer(hash$1.slice(0, 32));
|
|
806
|
+
const s = leBufferToBigint(sBuff);
|
|
807
|
+
const A = mulPointEscalar(Base8, scalar.shiftRight(s, BigInt(3)));
|
|
808
|
+
const msgBuff = leBigintToBuffer(message);
|
|
809
|
+
const rBuff = hash(Buffer.concat([hash$1.slice(32, 64), msgBuff]));
|
|
810
|
+
const Fr = new F1Field(subOrder);
|
|
811
|
+
const r = Fr.e(leBufferToBigint(rBuff));
|
|
812
|
+
const R8 = mulPointEscalar(Base8, r);
|
|
813
|
+
const hm = poseidon5_2([R8[0], R8[1], A[0], A[1], message]);
|
|
814
|
+
const S = Fr.add(r, Fr.mul(hm, s));
|
|
769
815
|
return {
|
|
770
816
|
R8: [R8[0].toString(), R8[1].toString()],
|
|
771
817
|
S: S.toString()
|
|
@@ -787,14 +833,14 @@ function verifySignature(message, signature, publicKey) {
|
|
|
787
833
|
return false;
|
|
788
834
|
}
|
|
789
835
|
message = checkMessage(message);
|
|
790
|
-
|
|
836
|
+
const _signature = {
|
|
791
837
|
R8: [BigInt(signature.R8[0]), BigInt(signature.R8[1])],
|
|
792
838
|
S: BigInt(signature.S)
|
|
793
839
|
};
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
840
|
+
const _publicKey = [BigInt(publicKey[0]), BigInt(publicKey[1])];
|
|
841
|
+
const hm = poseidon5_2([signature.R8[0], signature.R8[1], publicKey[0], publicKey[1], message]);
|
|
842
|
+
const pLeft = mulPointEscalar(Base8, BigInt(signature.S));
|
|
843
|
+
let pRight = mulPointEscalar(_publicKey, scalar.mul(hm, BigInt(8)));
|
|
798
844
|
pRight = addPoint(_signature.R8, pRight);
|
|
799
845
|
return Fr.eq(BigInt(pLeft[0]), pRight[0]) && Fr.eq(pLeft[1], pRight[1]);
|
|
800
846
|
}
|
package/dist/index.node.cjs
CHANGED
package/dist/index.node.js
CHANGED
package/dist/types/identity.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Point } from "@zk-kit/baby-jubjub";
|
|
2
|
+
import { Signature } from "@zk-kit/eddsa-poseidon";
|
|
3
|
+
import type { BigNumberish } from "@zk-kit/utils";
|
|
2
4
|
/**
|
|
3
5
|
* The Semaphore identity is essentially an {@link https://www.rfc-editor.org/rfc/rfc8032 | EdDSA}
|
|
4
6
|
* public/private key pair. The {@link https://github.com/privacy-scaling-explorations/zk-kit/tree/main/packages/eddsa-poseidon | EdDSA implementation}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@semaphore-protocol/identity",
|
|
3
|
-
"version": "4.0.0-beta",
|
|
3
|
+
"version": "4.0.0-beta.2",
|
|
4
4
|
"description": "A library to create Semaphore identities.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -45,7 +45,9 @@
|
|
|
45
45
|
"rollup-plugin-typescript2": "^0.36.0"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@zk-kit/
|
|
49
|
-
"poseidon
|
|
48
|
+
"@zk-kit/baby-jubjub": "0.2.0",
|
|
49
|
+
"@zk-kit/eddsa-poseidon": "0.6.0",
|
|
50
|
+
"@zk-kit/utils": "0.3.0",
|
|
51
|
+
"poseidon-lite": "0.2.0"
|
|
50
52
|
}
|
|
51
53
|
}
|
package/src/identity.ts
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Signature,
|
|
5
|
-
derivePublicKey,
|
|
6
|
-
deriveSecretScalar,
|
|
7
|
-
signMessage,
|
|
8
|
-
verifySignature
|
|
9
|
-
} from "@zk-kit/eddsa-poseidon"
|
|
1
|
+
import type { Point } from "@zk-kit/baby-jubjub"
|
|
2
|
+
import { Signature, derivePublicKey, deriveSecretScalar, signMessage, verifySignature } from "@zk-kit/eddsa-poseidon"
|
|
3
|
+
import type { BigNumberish } from "@zk-kit/utils"
|
|
10
4
|
import { poseidon2 } from "poseidon-lite/poseidon2"
|
|
11
5
|
import { randomNumber } from "./random-number.node"
|
|
12
6
|
|