@provablehq/wasm 0.11.10 → 0.11.11
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/mainnet/aleo_wasm.d.ts +13 -13
- package/dist/mainnet/aleo_wasm.wasm +0 -0
- package/dist/mainnet/index.cjs +50 -50
- package/dist/mainnet/index.cjs.map +1 -1
- package/dist/mainnet/index.js +50 -50
- package/dist/mainnet/index.js.map +1 -1
- package/dist/mainnet/worker.js +50 -50
- package/dist/mainnet/worker.js.map +1 -1
- package/dist/testnet/aleo_wasm.d.ts +25 -25
- package/dist/testnet/aleo_wasm.wasm +0 -0
- package/dist/testnet/index.cjs +80 -80
- package/dist/testnet/index.cjs.map +1 -1
- package/dist/testnet/index.js +80 -80
- package/dist/testnet/index.js.map +1 -1
- package/dist/testnet/worker.js +80 -80
- package/dist/testnet/worker.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,6 +9,18 @@ export function initThreadPool(url: URL, num_threads: number): Promise<void>;
|
|
|
9
9
|
* Values above 4 are clamped to debug.
|
|
10
10
|
*/
|
|
11
11
|
export function setWasmLogLevel(level: number): void;
|
|
12
|
+
/**
|
|
13
|
+
* Verify a batch SNARK proof against multiple verifying keys and their corresponding public inputs.
|
|
14
|
+
*
|
|
15
|
+
* This function verifies a batch proof produced by Aleo programs that may not be deployed on chain.
|
|
16
|
+
* Each verifying key is paired with one or more sets of public inputs (instances).
|
|
17
|
+
*
|
|
18
|
+
* @param {Array<string>} verifying_keys Array of verifying key strings, one per circuit
|
|
19
|
+
* @param {Array<Array<Array<string>>>} inputs 3D array of field element strings [circuit_idx][instance_idx][field_idx]
|
|
20
|
+
* @param {Proof} proof The batch proof to verify
|
|
21
|
+
* @returns {boolean} True if the batch proof is valid, false otherwise
|
|
22
|
+
*/
|
|
23
|
+
export function snarkVerifyBatch(verifying_keys: Array<any>, inputs: Array<any>, proof: Proof): boolean;
|
|
12
24
|
/**
|
|
13
25
|
* Verify an execution. Executions with multiple transitions must have the program source code and
|
|
14
26
|
* verifying keys of imported functions supplied from outside to correctly verify. Also, this does
|
|
@@ -23,18 +35,6 @@ export function setWasmLogLevel(level: number): void;
|
|
|
23
35
|
* @returns {boolean} True if the execution is valid, false otherwise
|
|
24
36
|
*/
|
|
25
37
|
export function verifyFunctionExecution(execution: Execution, verifying_key: VerifyingKey, program: Program, function_id: string, imports: object | null | undefined, imported_verifying_keys: object | null | undefined, block_height: number, program_imports?: ProgramImports | null): boolean;
|
|
26
|
-
/**
|
|
27
|
-
* Verify a batch SNARK proof against multiple verifying keys and their corresponding public inputs.
|
|
28
|
-
*
|
|
29
|
-
* This function verifies a batch proof produced by Aleo programs that may not be deployed on chain.
|
|
30
|
-
* Each verifying key is paired with one or more sets of public inputs (instances).
|
|
31
|
-
*
|
|
32
|
-
* @param {Array<string>} verifying_keys Array of verifying key strings, one per circuit
|
|
33
|
-
* @param {Array<Array<Array<string>>>} inputs 3D array of field element strings [circuit_idx][instance_idx][field_idx]
|
|
34
|
-
* @param {Proof} proof The batch proof to verify
|
|
35
|
-
* @returns {boolean} True if the batch proof is valid, false otherwise
|
|
36
|
-
*/
|
|
37
|
-
export function snarkVerifyBatch(verifying_keys: Array<any>, inputs: Array<any>, proof: Proof): boolean;
|
|
38
38
|
/**
|
|
39
39
|
* Verify a SNARK proof against a verifying key and public inputs.
|
|
40
40
|
*
|
|
@@ -47,19 +47,6 @@ export function snarkVerifyBatch(verifying_keys: Array<any>, inputs: Array<any>,
|
|
|
47
47
|
* @returns {boolean} True if the proof is valid, false otherwise
|
|
48
48
|
*/
|
|
49
49
|
export function snarkVerify(verifying_key: VerifyingKey, inputs: Array<any>, proof: Proof): boolean;
|
|
50
|
-
export function stringToField(string: string): Field;
|
|
51
|
-
/**
|
|
52
|
-
* Set test consensus version heights for testing.
|
|
53
|
-
*
|
|
54
|
-
* @param {string | undefined} heights The block heights at which each consensus version applies. This input should be a simple csv list of block heights and there should be one number for each consensus version. If left undefined, the default test heights will be applied.
|
|
55
|
-
*
|
|
56
|
-
* @example
|
|
57
|
-
* import { getOrInitConsensusVersionTestHeights } from '@provablehq/sdk';
|
|
58
|
-
*
|
|
59
|
-
* Set the consensus version heights.
|
|
60
|
-
* getOrInitConsensusVersionTestHeights("0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18");
|
|
61
|
-
*/
|
|
62
|
-
export function getOrInitConsensusVersionTestHeights(heights?: string | null): Array<any>;
|
|
63
50
|
/**
|
|
64
51
|
* Returns the maximum number of imports allowed in a program by the
|
|
65
52
|
* snarkVM network implementation this SDK was built against.
|
|
@@ -72,6 +59,19 @@ export function getOrInitConsensusVersionTestHeights(heights?: string | null): A
|
|
|
72
59
|
* const maxImports = getMaxProgramImports();
|
|
73
60
|
*/
|
|
74
61
|
export function getMaxProgramImports(): number;
|
|
62
|
+
/**
|
|
63
|
+
* Set test consensus version heights for testing.
|
|
64
|
+
*
|
|
65
|
+
* @param {string | undefined} heights The block heights at which each consensus version applies. This input should be a simple csv list of block heights and there should be one number for each consensus version. If left undefined, the default test heights will be applied.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* import { getOrInitConsensusVersionTestHeights } from '@provablehq/sdk';
|
|
69
|
+
*
|
|
70
|
+
* Set the consensus version heights.
|
|
71
|
+
* getOrInitConsensusVersionTestHeights("0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20");
|
|
72
|
+
*/
|
|
73
|
+
export function getOrInitConsensusVersionTestHeights(heights?: string | null): Array<any>;
|
|
74
|
+
export function stringToField(string: string): Field;
|
|
75
75
|
/**
|
|
76
76
|
* Public address of an Aleo account
|
|
77
77
|
*/
|
|
Binary file
|
package/dist/testnet/index.cjs
CHANGED
|
@@ -320,6 +320,38 @@ function addBorrowedObject(obj) {
|
|
|
320
320
|
heap[--stack_pointer] = obj;
|
|
321
321
|
return stack_pointer;
|
|
322
322
|
}
|
|
323
|
+
/**
|
|
324
|
+
* Verify a batch SNARK proof against multiple verifying keys and their corresponding public inputs.
|
|
325
|
+
*
|
|
326
|
+
* This function verifies a batch proof produced by Aleo programs that may not be deployed on chain.
|
|
327
|
+
* Each verifying key is paired with one or more sets of public inputs (instances).
|
|
328
|
+
*
|
|
329
|
+
* @param {Array<string>} verifying_keys Array of verifying key strings, one per circuit
|
|
330
|
+
* @param {Array<Array<Array<string>>>} inputs 3D array of field element strings [circuit_idx][instance_idx][field_idx]
|
|
331
|
+
* @param {Proof} proof The batch proof to verify
|
|
332
|
+
* @returns {boolean} True if the batch proof is valid, false otherwise
|
|
333
|
+
* @param {Array<any>} verifying_keys
|
|
334
|
+
* @param {Array<any>} inputs
|
|
335
|
+
* @param {Proof} proof
|
|
336
|
+
* @returns {boolean}
|
|
337
|
+
*/
|
|
338
|
+
function snarkVerifyBatch(verifying_keys, inputs, proof) {
|
|
339
|
+
try {
|
|
340
|
+
const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16);
|
|
341
|
+
_assertClass(proof, Proof);
|
|
342
|
+
wasm$1.snarkVerifyBatch(retptr, addHeapObject(verifying_keys), addHeapObject(inputs), proof.__wbg_ptr);
|
|
343
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
344
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
345
|
+
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
346
|
+
if (r2) {
|
|
347
|
+
throw takeObject(r1);
|
|
348
|
+
}
|
|
349
|
+
return r0 !== 0;
|
|
350
|
+
} finally {
|
|
351
|
+
wasm$1.__wbindgen_add_to_stack_pointer(16);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
|
|
323
355
|
/**
|
|
324
356
|
* Verify an execution. Executions with multiple transitions must have the program source code and
|
|
325
357
|
* verifying keys of imported functions supplied from outside to correctly verify. Also, this does
|
|
@@ -368,38 +400,6 @@ function verifyFunctionExecution(execution, verifying_key, program, function_id,
|
|
|
368
400
|
}
|
|
369
401
|
}
|
|
370
402
|
|
|
371
|
-
/**
|
|
372
|
-
* Verify a batch SNARK proof against multiple verifying keys and their corresponding public inputs.
|
|
373
|
-
*
|
|
374
|
-
* This function verifies a batch proof produced by Aleo programs that may not be deployed on chain.
|
|
375
|
-
* Each verifying key is paired with one or more sets of public inputs (instances).
|
|
376
|
-
*
|
|
377
|
-
* @param {Array<string>} verifying_keys Array of verifying key strings, one per circuit
|
|
378
|
-
* @param {Array<Array<Array<string>>>} inputs 3D array of field element strings [circuit_idx][instance_idx][field_idx]
|
|
379
|
-
* @param {Proof} proof The batch proof to verify
|
|
380
|
-
* @returns {boolean} True if the batch proof is valid, false otherwise
|
|
381
|
-
* @param {Array<any>} verifying_keys
|
|
382
|
-
* @param {Array<any>} inputs
|
|
383
|
-
* @param {Proof} proof
|
|
384
|
-
* @returns {boolean}
|
|
385
|
-
*/
|
|
386
|
-
function snarkVerifyBatch(verifying_keys, inputs, proof) {
|
|
387
|
-
try {
|
|
388
|
-
const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16);
|
|
389
|
-
_assertClass(proof, Proof);
|
|
390
|
-
wasm$1.snarkVerifyBatch(retptr, addHeapObject(verifying_keys), addHeapObject(inputs), proof.__wbg_ptr);
|
|
391
|
-
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
392
|
-
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
393
|
-
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
394
|
-
if (r2) {
|
|
395
|
-
throw takeObject(r1);
|
|
396
|
-
}
|
|
397
|
-
return r0 !== 0;
|
|
398
|
-
} finally {
|
|
399
|
-
wasm$1.__wbindgen_add_to_stack_pointer(16);
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
|
|
403
403
|
/**
|
|
404
404
|
* Verify a SNARK proof against a verifying key and public inputs.
|
|
405
405
|
*
|
|
@@ -434,25 +434,20 @@ function snarkVerify(verifying_key, inputs, proof) {
|
|
|
434
434
|
}
|
|
435
435
|
|
|
436
436
|
/**
|
|
437
|
-
*
|
|
438
|
-
*
|
|
437
|
+
* Returns the maximum number of imports allowed in a program by the
|
|
438
|
+
* snarkVM network implementation this SDK was built against.
|
|
439
|
+
*
|
|
440
|
+
* @returns {number} The maximum number of program imports.
|
|
441
|
+
*
|
|
442
|
+
* @example
|
|
443
|
+
* import { getMaxProgramImports } from '@provablehq/sdk';
|
|
444
|
+
*
|
|
445
|
+
* const maxImports = getMaxProgramImports();
|
|
446
|
+
* @returns {number}
|
|
439
447
|
*/
|
|
440
|
-
function
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
const ptr0 = passStringToWasm0(string, wasm$1.__wbindgen_export, wasm$1.__wbindgen_export2);
|
|
444
|
-
const len0 = WASM_VECTOR_LEN;
|
|
445
|
-
wasm$1.stringToField(retptr, ptr0, len0);
|
|
446
|
-
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
447
|
-
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
448
|
-
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
449
|
-
if (r2) {
|
|
450
|
-
throw takeObject(r1);
|
|
451
|
-
}
|
|
452
|
-
return Field.__wrap(r0);
|
|
453
|
-
} finally {
|
|
454
|
-
wasm$1.__wbindgen_add_to_stack_pointer(16);
|
|
455
|
-
}
|
|
448
|
+
function getMaxProgramImports() {
|
|
449
|
+
const ret = wasm$1.getMaxProgramImports();
|
|
450
|
+
return ret >>> 0;
|
|
456
451
|
}
|
|
457
452
|
|
|
458
453
|
/**
|
|
@@ -464,7 +459,7 @@ function stringToField(string) {
|
|
|
464
459
|
* import { getOrInitConsensusVersionTestHeights } from '@provablehq/sdk';
|
|
465
460
|
*
|
|
466
461
|
* Set the consensus version heights.
|
|
467
|
-
* getOrInitConsensusVersionTestHeights("0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18");
|
|
462
|
+
* getOrInitConsensusVersionTestHeights("0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20");
|
|
468
463
|
* @param {string | null} [heights]
|
|
469
464
|
* @returns {Array<any>}
|
|
470
465
|
*/
|
|
@@ -476,20 +471,25 @@ function getOrInitConsensusVersionTestHeights(heights) {
|
|
|
476
471
|
}
|
|
477
472
|
|
|
478
473
|
/**
|
|
479
|
-
*
|
|
480
|
-
*
|
|
481
|
-
*
|
|
482
|
-
* @returns {number} The maximum number of program imports.
|
|
483
|
-
*
|
|
484
|
-
* @example
|
|
485
|
-
* import { getMaxProgramImports } from '@provablehq/sdk';
|
|
486
|
-
*
|
|
487
|
-
* const maxImports = getMaxProgramImports();
|
|
488
|
-
* @returns {number}
|
|
474
|
+
* @param {string} string
|
|
475
|
+
* @returns {Field}
|
|
489
476
|
*/
|
|
490
|
-
function
|
|
491
|
-
|
|
492
|
-
|
|
477
|
+
function stringToField(string) {
|
|
478
|
+
try {
|
|
479
|
+
const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16);
|
|
480
|
+
const ptr0 = passStringToWasm0(string, wasm$1.__wbindgen_export, wasm$1.__wbindgen_export2);
|
|
481
|
+
const len0 = WASM_VECTOR_LEN;
|
|
482
|
+
wasm$1.stringToField(retptr, ptr0, len0);
|
|
483
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
484
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
485
|
+
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
486
|
+
if (r2) {
|
|
487
|
+
throw takeObject(r1);
|
|
488
|
+
}
|
|
489
|
+
return Field.__wrap(r0);
|
|
490
|
+
} finally {
|
|
491
|
+
wasm$1.__wbindgen_add_to_stack_pointer(16);
|
|
492
|
+
}
|
|
493
493
|
}
|
|
494
494
|
|
|
495
495
|
function passArrayJsValueToWasm0(array, malloc) {
|
|
@@ -511,16 +511,16 @@ function getArrayJsValueFromWasm0(ptr, len) {
|
|
|
511
511
|
}
|
|
512
512
|
return result;
|
|
513
513
|
}
|
|
514
|
-
function
|
|
515
|
-
wasm$1.
|
|
514
|
+
function __wasm_bindgen_func_elem_7556(arg0, arg1) {
|
|
515
|
+
wasm$1.__wasm_bindgen_func_elem_7556(arg0, arg1);
|
|
516
516
|
}
|
|
517
517
|
|
|
518
|
-
function
|
|
519
|
-
wasm$1.
|
|
518
|
+
function __wasm_bindgen_func_elem_8995(arg0, arg1, arg2) {
|
|
519
|
+
wasm$1.__wasm_bindgen_func_elem_8995(arg0, arg1, addHeapObject(arg2));
|
|
520
520
|
}
|
|
521
521
|
|
|
522
|
-
function
|
|
523
|
-
wasm$1.
|
|
522
|
+
function __wasm_bindgen_func_elem_7828(arg0, arg1, arg2, arg3) {
|
|
523
|
+
wasm$1.__wasm_bindgen_func_elem_7828(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
|
|
524
524
|
}
|
|
525
525
|
|
|
526
526
|
const __wbindgen_enum_RequestCredentials = ["omit", "same-origin", "include"];
|
|
@@ -19325,7 +19325,7 @@ function __wbg_get_imports(memory) {
|
|
|
19325
19325
|
const ret = getObject(arg0).length;
|
|
19326
19326
|
return ret;
|
|
19327
19327
|
};
|
|
19328
|
-
imports.wbg.
|
|
19328
|
+
imports.wbg.__wbg_log_873fe7a781ebc826 = function(arg0, arg1) {
|
|
19329
19329
|
console.log(getStringFromWasm0(arg0, arg1));
|
|
19330
19330
|
};
|
|
19331
19331
|
imports.wbg.__wbg_new_1acc0b6eea89d040 = function() {
|
|
@@ -19343,7 +19343,7 @@ function __wbg_get_imports(memory) {
|
|
|
19343
19343
|
const a = state0.a;
|
|
19344
19344
|
state0.a = 0;
|
|
19345
19345
|
try {
|
|
19346
|
-
return
|
|
19346
|
+
return __wasm_bindgen_func_elem_7828(a, state0.b, arg0, arg1);
|
|
19347
19347
|
} finally {
|
|
19348
19348
|
state0.a = a;
|
|
19349
19349
|
}
|
|
@@ -19515,7 +19515,7 @@ function __wbg_get_imports(memory) {
|
|
|
19515
19515
|
const ret = Signature.__wrap(arg0);
|
|
19516
19516
|
return addHeapObject(ret);
|
|
19517
19517
|
};
|
|
19518
|
-
imports.wbg.
|
|
19518
|
+
imports.wbg.__wbg_spawnWorker_087de831e4bfd369 = function(arg0, arg1, arg2, arg3) {
|
|
19519
19519
|
const ret = spawnWorker(getObject(arg0), getObject(arg1), getObject(arg2), arg3 >>> 0);
|
|
19520
19520
|
return addHeapObject(ret);
|
|
19521
19521
|
};
|
|
@@ -19599,7 +19599,7 @@ function __wbg_get_imports(memory) {
|
|
|
19599
19599
|
};
|
|
19600
19600
|
imports.wbg.__wbindgen_cast_19cdf6e41653eb6c = function(arg0, arg1) {
|
|
19601
19601
|
// Cast intrinsic for `Closure(Closure { dtor_idx: 397, function: Function { arguments: [Externref], shim_idx: 398, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
|
|
19602
|
-
const ret = makeMutClosure(arg0, arg1, wasm$1.
|
|
19602
|
+
const ret = makeMutClosure(arg0, arg1, wasm$1.__wasm_bindgen_func_elem_7555, __wasm_bindgen_func_elem_8995);
|
|
19603
19603
|
return addHeapObject(ret);
|
|
19604
19604
|
};
|
|
19605
19605
|
imports.wbg.__wbindgen_cast_2241b6af4c4b2941 = function(arg0, arg1) {
|
|
@@ -19617,11 +19617,6 @@ function __wbg_get_imports(memory) {
|
|
|
19617
19617
|
const ret = BigInt.asUintN(64, arg0);
|
|
19618
19618
|
return addHeapObject(ret);
|
|
19619
19619
|
};
|
|
19620
|
-
imports.wbg.__wbindgen_cast_601de75c058a35e1 = function(arg0, arg1) {
|
|
19621
|
-
// Cast intrinsic for `Closure(Closure { dtor_idx: 397, function: Function { arguments: [], shim_idx: 528, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
|
|
19622
|
-
const ret = makeMutClosure(arg0, arg1, wasm$1.__wasm_bindgen_func_elem_7505, __wasm_bindgen_func_elem_7506);
|
|
19623
|
-
return addHeapObject(ret);
|
|
19624
|
-
};
|
|
19625
19620
|
imports.wbg.__wbindgen_cast_9ae0607507abb057 = function(arg0) {
|
|
19626
19621
|
// Cast intrinsic for `I64 -> Externref`.
|
|
19627
19622
|
const ret = arg0;
|
|
@@ -19632,6 +19627,11 @@ function __wbg_get_imports(memory) {
|
|
|
19632
19627
|
const ret = arg0;
|
|
19633
19628
|
return addHeapObject(ret);
|
|
19634
19629
|
};
|
|
19630
|
+
imports.wbg.__wbindgen_cast_dc45e30c78fa2793 = function(arg0, arg1) {
|
|
19631
|
+
// Cast intrinsic for `Closure(Closure { dtor_idx: 397, function: Function { arguments: [], shim_idx: 533, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
|
|
19632
|
+
const ret = makeMutClosure(arg0, arg1, wasm$1.__wasm_bindgen_func_elem_7555, __wasm_bindgen_func_elem_7556);
|
|
19633
|
+
return addHeapObject(ret);
|
|
19634
|
+
};
|
|
19635
19635
|
imports.wbg.__wbindgen_cast_e7b45dd881f38ce3 = function(arg0, arg1) {
|
|
19636
19636
|
// Cast intrinsic for `U128 -> Externref`.
|
|
19637
19637
|
const ret = (BigInt.asUintN(64, arg0) | (BigInt.asUintN(64, arg1) << BigInt(64)));
|
|
@@ -19639,7 +19639,7 @@ function __wbg_get_imports(memory) {
|
|
|
19639
19639
|
};
|
|
19640
19640
|
imports.wbg.__wbindgen_cast_eb522c22a7f98ff2 = function(arg0, arg1) {
|
|
19641
19641
|
// Cast intrinsic for `Closure(Closure { dtor_idx: 397, function: Function { arguments: [NamedExternref("MessageEvent")], shim_idx: 398, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
|
|
19642
|
-
const ret = makeMutClosure(arg0, arg1, wasm$1.
|
|
19642
|
+
const ret = makeMutClosure(arg0, arg1, wasm$1.__wasm_bindgen_func_elem_7555, __wasm_bindgen_func_elem_8995);
|
|
19643
19643
|
return addHeapObject(ret);
|
|
19644
19644
|
};
|
|
19645
19645
|
imports.wbg.__wbindgen_link_b9f45ffe079ef2c1 = function(arg0) {
|