]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Minor JS API tweaks prompted by documenting them.
authorstephan <stephan@noemail.net>
Mon, 3 Oct 2022 08:21:06 +0000 (08:21 +0000)
committerstephan <stephan@noemail.net>
Mon, 3 Oct 2022 08:21:06 +0000 (08:21 +0000)
FossilOrigin-Name: a82e6faaa642b09d241232c4daa67134d4dfa24bf3ca3725740346ca5269b381

ext/wasm/api/sqlite3-api-glue.js
ext/wasm/api/sqlite3-api-prologue.js
ext/wasm/api/sqlite3-wasm.c
ext/wasm/common/whwasmutil.js
ext/wasm/jaccwabyt/jaccwabyt.js
ext/wasm/jaccwabyt/jaccwabyt.md
manifest
manifest.uuid

index f80bade3852b1c57aa73252eff83b41fc1552113..bbd5b446f0cb3cc91ea9ac990827e10852c74e8f 100644 (file)
@@ -50,7 +50,7 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
            'flexible-string'-type arguments */
     const xString = wasm.xWrap.argAdapter('string');
     wasm.xWrap.argAdapter(
-      'flexible-string', (v)=>xString(util.arrayToString(v))
+      'flexible-string', (v)=>xString(util.flexibleString(v))
     );
   }
   
@@ -216,8 +216,8 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
        "*"/*xInverse*/, "*"/*xDestroy*/]
     );
 
-    const __setUdfResult = function(pCtx, val){
-      //console.warn("setUdfResult",typeof val, val);
+    const __udfSetResult = function(pCtx, val){
+      //console.warn("udfSetResult",typeof val, val);
       switch(typeof val) {
           case 'boolean':
             capi.sqlite3_result_int(pCtx, val ? 1 : 0);
@@ -259,9 +259,9 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
           default:
           toss3("Don't not how to handle this UDF result value:",(typeof val), val);
       };
-    }/*__setUdfResult()*/;
+    }/*__udfSetResult()*/;
 
-    const __convertUdfArgs = function(argc, pArgv){
+    const __udfConvertArgs = function(argc, pArgv){
       let i, pVal, valType, arg;
       const tgt = [];
       for(i = 0; i < argc; ++i){
@@ -307,9 +307,9 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
         tgt.push(arg);
       }
       return tgt;
-    }/*__convertUdfArgs()*/;
+    }/*__udfConvertArgs()*/;
 
-    const __setUdfError = (pCtx, e)=>{
+    const __udfSetError = (pCtx, e)=>{
       if(e instanceof sqlite3.WasmAllocError){
         capi.sqlite3_result_error_nomem(pCtx);
       }else{
@@ -319,25 +319,25 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
 
     const __xFunc = function(callback){
       return function(pCtx, argc, pArgv){
-        try{ __setUdfResult(pCtx, callback(pCtx, ...__convertUdfArgs(argc, pArgv))) }
+        try{ __udfSetResult(pCtx, callback(pCtx, ...__udfConvertArgs(argc, pArgv))) }
         catch(e){
           //console.error('xFunc() caught:',e);
-          __setUdfError(pCtx, e);
+          __udfSetError(pCtx, e);
         }
       };
     };
 
     const __xInverseAndStep = function(callback){
       return function(pCtx, argc, pArgv){
-        try{ callback(pCtx, ...__convertUdfArgs(argc, pArgv)) }
-        catch(e){ __setUdfError(pCtx, e) }
+        try{ callback(pCtx, ...__udfConvertArgs(argc, pArgv)) }
+        catch(e){ __udfSetError(pCtx, e) }
       };
     };
 
     const __xFinalAndValue = function(callback){
       return function(pCtx){
-        try{ __setUdfResult(pCtx, callback(pCtx)) }
-        catch(e){ __setUdfError(pCtx, e) }
+        try{ __udfSetResult(pCtx, callback(pCtx)) }
+        catch(e){ __udfSetError(pCtx, e) }
       };
     };
 
@@ -446,7 +446,7 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
     };
     /**
        A helper for UDFs implemented in JS and bound to WASM by the
-       client. Given a JS value, setUdfResult(pCtx,X) calls one of the
+       client. Given a JS value, udfSetResult(pCtx,X) calls one of the
        sqlite3_result_xyz(pCtx,...)  routines, depending on X's data
        type:
 
@@ -458,9 +458,9 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
 
        Anything else triggers sqlite3_result_error().
     */
-    capi.sqlite3_create_function_v2.setUdfResult =
-      capi.sqlite3_create_function.setUdfResult =
-      capi.sqlite3_create_window_function.setUdfResult = __setUdfResult;
+    capi.sqlite3_create_function_v2.udfSetResult =
+      capi.sqlite3_create_function.udfSetResult =
+      capi.sqlite3_create_window_function.udfSetResult = __udfSetResult;
 
     /**
        A helper for UDFs implemented in JS and bound to WASM by the
@@ -480,9 +480,9 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
        The conversion will throw only on allocation error or an internal
        error.
     */
-    capi.sqlite3_create_function_v2.convertUdfArgs =
-      capi.sqlite3_create_function.convertUdfArgs =
-      capi.sqlite3_create_window_function.convertUdfArgs = __convertUdfArgs;
+    capi.sqlite3_create_function_v2.udfConvertArgs =
+      capi.sqlite3_create_function.udfConvertArgs =
+      capi.sqlite3_create_window_function.udfConvertArgs = __udfConvertArgs;
 
     /**
        A helper for UDFs implemented in JS and bound to WASM by the
@@ -492,9 +492,9 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
        depending on whether the 2nd argument is a
        sqlite3.WasmAllocError object or not.
     */
-    capi.sqlite3_create_function_v2.setUdfError =
-      capi.sqlite3_create_function.setUdfError =
-      capi.sqlite3_create_window_function.setUdfError = __setUdfError;
+    capi.sqlite3_create_function_v2.udfSetError =
+      capi.sqlite3_create_function.udfSetError =
+      capi.sqlite3_create_window_function.udfSetError = __udfSetError;
 
   }/*sqlite3_create_function_v2() and sqlite3_create_window_function() proxies*/;
 
index f21655b823d7785b0e3c1ec6e48125265e2d71bb..83e47cc93c49471b6c92f36cea8d33c42cbf838c 100644 (file)
@@ -260,10 +260,10 @@ self.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(
 
   /**
      If v is-a Array, its join('') result is returned.  If
-     isSQLableTypedArray(v) then typedArrayToString(v) is
+     isSQLableTypedArray(v) is true then typedArrayToString(v) is
      returned. Else v is returned as-is.
   */
-  const arrayToString = function(v){
+  const flexibleString = function(v){
     if(isSQLableTypedArray(v)) return typedArrayToString(v);
     else if(Array.isArray(v)) return v.join('');
     return v;
@@ -516,7 +516,7 @@ self.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(
        removed.
     */
     util:{
-      affirmBindableTypedArray, arrayToString,
+      affirmBindableTypedArray, flexibleString,
       bigIntFits32, bigIntFits64, bigIntFitsDouble,
       isBindableTypedArray,
       isInt32, isSQLableTypedArray, isTypedArray, 
index b9454155d7f5792c60ff4f8b0a0b3b46dae93805..59001379e6cc3df7aee08dc44d8b29f1a1ffc8a6 100644 (file)
@@ -615,9 +615,9 @@ const char * sqlite3_wasm_enum_json(void){
     StructBinder {
       M(iVersion,"i");
       M(xClose,"i(p)");
-      M(xRead,"i(ppij)");
-      M(xWrite,"i(ppij)");
-      M(xTruncate,"i(pj)");
+      M(xRead,"i(ppiI)");
+      M(xWrite,"i(ppiI)");
+      M(xTruncate,"i(pI)");
       M(xSync,"i(pi)");
       M(xFileSize,"i(pp)");
       M(xLock,"i(pi)");
@@ -630,8 +630,8 @@ const char * sqlite3_wasm_enum_json(void){
       M(xShmLock,"i(piii)");
       M(xShmBarrier,"v(p)");
       M(xShmUnmap,"i(pi)");
-      M(xFetch,"i(pjip)");
-      M(xUnfetch,"i(pjp)");
+      M(xFetch,"i(pIip)");
+      M(xUnfetch,"i(pIp)");
     } _StructBinder;
 #undef CurrentStruct
 
index ed3d7714bc39a06dcae5fdac347804c53312cda8..b127595660c3a9150cda972c4f3d5a25d1e0e9dd 100644 (file)
@@ -377,17 +377,19 @@ self.WhWasmUtilInstaller = function(target){
 
      - Emscripten: `x...`, where the first x is a letter representing
        the result type and subsequent letters represent the argument
-       types. See below.
+       types. Functions with no arguments have only a single
+       letter. See below.
 
      - Jaccwabyt: `x(...)` where `x` is the letter representing the
        result type and letters in the parens (if any) represent the
-       argument types. See below.
+       argument types. Functions with no arguments use `x()`. See
+       below.
 
      Supported letters:
 
      - `i` = int32
      - `p` = int32 ("pointer")
-     - `j` = int64
+     - `j` or `I` = int64
      - `f` = float32
      - `d` = float64
      - `v` = void, only legal for use as the result type
@@ -402,6 +404,9 @@ self.WhWasmUtilInstaller = function(target){
 
      Sidebar: this code is developed together with Jaccwabyt, thus the
      support for its signature format.
+
+     The arguments may be supplied in either order: (func,sig) or
+     (sig,func).
   */
   target.jsFuncToWasm = function f(func, sig){
     /** Attribution: adapted up from Emscripten-generated glue code,
@@ -410,9 +415,14 @@ self.WhWasmUtilInstaller = function(target){
     if(!f._){/*static init...*/
       f._ = {
         // Map of signature letters to type IR values
-        sigTypes: Object.create(null),
+        sigTypes: Object.assign(Object.create(null),{
+          i: 'i32', p: 'i32', P: 'i32', s: 'i32',
+          j: 'i64', I: 'i64', f: 'f32', d: 'f64'
+        }),
         // Map of type IR values to WASM type code values
-        typeCodes: Object.create(null),
+        typeCodes: Object.assign(Object.create(null),{
+          f64: 0x7c, f32: 0x7d, i64: 0x7e, i32: 0x7f
+        }),
         /** Encodes n, which must be <2^14 (16384), into target array
             tgt, as a little-endian value, using the given method
             ('push' or 'unshift'). */
@@ -452,11 +462,12 @@ self.WhWasmUtilInstaller = function(target){
             invalid. */
         pushSigType: (dest, letter)=>dest.push(f._.typeCodes[f._.letterType(letter)])
       };
-      f._.sigTypes.i = f._.sigTypes.p = f._.sigTypes.P = f._.sigTypes.s = 'i32';
-      f._.sigTypes.j = 'i64'; f._.sigTypes.f = 'f32'; f._.sigTypes.d = 'f64';
-      f._.typeCodes['i32'] = 0x7f; f._.typeCodes['i64'] = 0x7e;
-      f._.typeCodes['f32'] = 0x7d; f._.typeCodes['f64'] = 0x7c;
     }/*static init*/
+    if('string'===typeof func){
+      const x = sig;
+      sig = func;
+      func = x;
+    }
     const sigParams = f._.sigParams(sig);
     const wasmCode = [0x01/*count: 1*/, 0x60/*function*/];
     f._.uleb128Encode(wasmCode, 'push', sigParams.length);
index 14c93b3a2e8b7625f56acc6ee75235e91be27151..ce0d8dd1f143bc9d08577412c3bce02e73004f00 100644 (file)
@@ -123,7 +123,7 @@ self.Jaccwabyt = function StructBinderFactory(config){
     switch(sigLetter(s)){
         case 'i': return 'i32';
         case 'p': case 'P': case 's': return ptrIR;
-        case 'j': return 'i64';
+        case 'j': case 'I': return 'i64';
         case 'f': return 'float';
         case 'd': return 'double';
     }
@@ -135,7 +135,7 @@ self.Jaccwabyt = function StructBinderFactory(config){
     switch(sigLetter(s)){
         case 'i': return 4;
         case 'p': case 'P': case 's': return ptrSizeof;
-        case 'j': return 8;
+        case 'j': case 'I': return 8;
         case 'f': return 4 /* C-side floats, not JS-side */;
         case 'd': return 8;
     }
@@ -168,7 +168,7 @@ self.Jaccwabyt = function StructBinderFactory(config){
           break;
         }
         case 'i': return 'getInt32';
-        case 'j': return affirmBigIntArray() && 'getBigInt64';
+        case 'j': case 'I': return affirmBigIntArray() && 'getBigInt64';
         case 'f': return 'getFloat32';
         case 'd': return 'getFloat64';
     }
@@ -186,7 +186,7 @@ self.Jaccwabyt = function StructBinderFactory(config){
           break;
         }
         case 'i': return 'setInt32';
-        case 'j': return affirmBigIntArray() && 'setBigInt64';
+        case 'j': case 'I': return affirmBigIntArray() && 'setBigInt64';
         case 'f': return 'setFloat32';
         case 'd': return 'setFloat64';
     }
@@ -200,7 +200,7 @@ self.Jaccwabyt = function StructBinderFactory(config){
   const sigDVSetWrapper = function(s){
     switch(sigLetter(s)) {
         case 'i': case 'f': case 'd': return Number;
-        case 'j': return affirmBigIntArray() && BigInt;
+        case 'j': case 'I': return affirmBigIntArray() && BigInt;
         case 'p': case 'P': case 's':
           switch(ptrSizeof){
               case 4: return Number;
@@ -361,7 +361,7 @@ self.Jaccwabyt = function StructBinderFactory(config){
      framework's native format or in Emscripten format.
   */
   const __memberSignature = function f(obj,memberName,emscriptenFormat=false){
-    if(!f._) f._ = (x)=>x.replace(/[^vipPsjrd]/g,'').replace(/[pPs]/g,'i');
+    if(!f._) f._ = (x)=>x.replace(/[^viIpPsjrd]/g,'').replace(/[pPs]/g,'i');
     const m = __lookupMember(obj.structInfo, memberName, true);
     return emscriptenFormat ? f._(m.signature) : m.signature;
   };
@@ -571,7 +571,7 @@ self.Jaccwabyt = function StructBinderFactory(config){
         direct reuse in each accessor function. */
       f._ = {getters: {}, setters: {}, sw:{}};
       const a = ['i','p','P','s','f','d','v()'];
-      if(bigIntEnabled) a.push('j');
+      if(bigIntEnabled) a.push('j','I');
       a.forEach(function(v){
         //const ir = sigIR(v);
         f._.getters[v] = sigDVGetter(v) /* DataView[MethodName] values for GETTERS */;
@@ -579,8 +579,8 @@ self.Jaccwabyt = function StructBinderFactory(config){
         f._.sw[v] = sigDVSetWrapper(v)  /* BigInt or Number ctor to wrap around values
                                            for conversion */;
       });
-      const rxSig1 = /^[ipPsjfd]$/,
-            rxSig2 = /^[vipPsjfd]\([ipPsjfd]*\)$/;
+      const rxSig1 = /^[iIpPsjfd]$/,
+            rxSig2 = /^[viIpPsjfd]\([iIpPsjfd]*\)$/;
       f.sigCheck = function(obj, name, key,sig){
         if(Object.prototype.hasOwnProperty.call(obj, key)){
           toss(obj.structName,'already has a property named',key+'.');
index edcba260a7425451c33e2ff4ecb569f282cb0a98..023d7973b2af8412208db1c921453fbd5c3909c0 100644 (file)
@@ -275,10 +275,10 @@ supported letters are:
 
 - **`v`** = `void` (only used as return type for function pointer members)
 - **`i`** = `int32` (4 bytes)
-- **`j`** = `int64` (8 bytes) is only really usable if this code is built
-  with BigInt support (e.g. using the Emscripten `-sWASM_BIGINT` build
-  flag). Without that, this API may throw when encountering the `j`
-  signature entry.
+- **`j`** or **`I`** = `int64` (8 bytes) is only really usable if this
+  code is built with BigInt support (e.g. using the Emscripten
+  `-sWASM_BIGINT` build flag). Without that, this API may throw when
+  encountering this signature entry.
 - **`f`** = `float` (4 bytes)
 - **`d`** = `double` (8 bytes)
 - **`p`** = `int32` (but see below!)
index 2c0461c342dfe0c5817333280a5ef12e8f255468..6a03f73bab9ed79d823dc7d95781b2ce589a86a8 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C More\scleanups\sin\sthe\sUDF\sargument\sand\sresult\shandling,\sin\sparticular\sint64.\sConsolidate\ssome\sduplicate\sint64/bigint\srange\schecking\scode.\sExpose\sthe\sUDF\slow-level\sutilities\s(arg/result\sconversion)\sto\sclient\scode.\sAdd\sthe\ssqlite3_context\spointer\sto\sthe\sJS-side\sUDF\swrappers\sfor\sAPI\sconsistency.
-D 2022-10-02T22:50:04.828
+C Minor\sJS\sAPI\stweaks\sprompted\sby\sdocumenting\sthem.
+D 2022-10-03T08:21:06.951
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -485,19 +485,19 @@ F ext/wasm/api/post-js-footer.js b64319261d920211b8700004d08b956a6c285f3b0bba814
 F ext/wasm/api/post-js-header.js 2e5c886398013ba2af88028ecbced1e4b22dc96a86467f1ecc5ba9e64ef90a8b
 F ext/wasm/api/pre-js.js 2db711eb637991b383fc6b5c0f3df65ec48a7201e5730e304beba8de2d3f9b0b
 F ext/wasm/api/sqlite3-api-cleanup.js 5d22d1d3818ecacb23bfa223d5970cd0617d8cdbb48c8bc4bbd463f05b021a99
-F ext/wasm/api/sqlite3-api-glue.js b962bad752b62366651dae26c0b969d297f81e17879685025fb12130786509cb
+F ext/wasm/api/sqlite3-api-glue.js df974b8a8374ec5f0e25b6a891401f07804471008a1a655717bb86cf7fc899ff
 F ext/wasm/api/sqlite3-api-oo1.js 484f9ea5c7140d07745f4b534a1f6dd67120c65ef34abcf7cdb3a388d73f5ef4
 F ext/wasm/api/sqlite3-api-opfs.js 1b097808b7b081b0f0700cf97d49ef19760e401706168edff9cd45cf9169f541
-F ext/wasm/api/sqlite3-api-prologue.js bf270c17e759814decf57f6dd29fee9b5e44dd89a798a1ba9ba1e34d6f76ceaf
+F ext/wasm/api/sqlite3-api-prologue.js b827e2353799b54fffaa9577f51ebf08b8dedc58dcabe344c73be977235da227
 F ext/wasm/api/sqlite3-api-worker1.js 7f4f46cb6b512a48572d7567233896e6a9c46570c44bdc3d13419730c7c221c8
 F ext/wasm/api/sqlite3-wasi.h 25356084cfe0d40458a902afb465df8c21fc4152c1d0a59b563a3fba59a068f9
-F ext/wasm/api/sqlite3-wasm.c 2a0f9e4bf1b141a787918951360601128d6a0a190a31a8e5cfe237c99fa640c6
+F ext/wasm/api/sqlite3-wasm.c 074c1c80b52bd808baf1228adc3336b3aeb2649579d041fc199ead747b5892aa
 F ext/wasm/batch-runner.html c363032aba7a525920f61f8be112a29459f73f07e46f0ba3b7730081a617826e
 F ext/wasm/batch-runner.js ce92650a6681586c89bef26ceae96674a55ca5a9727815202ca62e1a00ff5015
 F ext/wasm/common/SqliteTestUtil.js 647bf014bd30bdd870a7e9001e251d12fc1c9ec9ce176a1004b838a4b33c5c05
 F ext/wasm/common/emscripten.css 3d253a6fdb8983a2ac983855bfbdd4b6fa1ff267c28d69513dd6ef1f289ada3f
 F ext/wasm/common/testing.css 3a5143699c2b73a85b962271e1a9b3241b30d90e30d895e4f55665e648572962
-F ext/wasm/common/whwasmutil.js 427eb8b695bd5f38497601a6bda933e83d1a5900b75f5f1af8dbb381898d2ee4
+F ext/wasm/common/whwasmutil.js 0ea155094dc9b18ee97a37b7b26e0601fee4822f5f1d2f5853a57542b45598d9
 F ext/wasm/demo-123-worker.html e419b66495d209b5211ec64903b4cfb3ca7df20d652b41fcd28bf018a773234f
 F ext/wasm/demo-123.html aa281d33b7eefa755f3122b7b5a18f39a42dc5fb69c8879171bf14b4c37c4ec4
 F ext/wasm/demo-123.js 9fbc5cd3af842d361e9f8353ae4af9f471c2b2517e55446474406620485b9ee6
@@ -509,8 +509,8 @@ F ext/wasm/fiddle/fiddle-worker.js ebf6e95fe031738cd9f79d1ccdf6d80640a2884a43f70
 F ext/wasm/fiddle/fiddle.html 5daf54e8f3d7777cbb1ca4f93affe28858dbfff25841cb4ab81d694efed28ec2
 F ext/wasm/fiddle/fiddle.js 974b995119ac443685d7d94d3b3c58c6a36540e9eb3fed7069d5653284071715
 F ext/wasm/index.html 63b370619e4f849ac76f1baed435c05edc29dbb6795bc7c1c935561ff667dd27
-F ext/wasm/jaccwabyt/jaccwabyt.js 0d7f32817456a0f3937fcfd934afeb32154ca33580ab264dab6c285e6dbbd215
-F ext/wasm/jaccwabyt/jaccwabyt.md 9aa6951b529a8b29f578ec8f0355713c39584c92cf1708f63ba0cf917cb5b68e
+F ext/wasm/jaccwabyt/jaccwabyt.js db2c75f12426760eb921c281eef7fd139f23cd61d16d8638689ee162e90ef2f6
+F ext/wasm/jaccwabyt/jaccwabyt.md 48088122e9d23b1b385bb7bcf48a2d83f926b470d6928b6b3f9b41c2de94830c
 F ext/wasm/jaccwabyt/jaccwabyt_test.c 39e4b865a33548f943e2eb9dd0dc8d619a80de05d5300668e9960fff30d0d36f
 F ext/wasm/jaccwabyt/jaccwabyt_test.exports 5ff001ef975c426ffe88d7d8a6e96ec725e568d2c2307c416902059339c06f19
 F ext/wasm/scratchpad-wasmfs-main.html 20cf6f1a8f368e70d01e8c17200e3eaa90f1c8e1029186d836d14b83845fbe06
@@ -2029,8 +2029,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P d3bad9347c5423fa7f19ae729461636f1043c99a1f01f168efa10bebefb1cdd1
-R 46b070d886b6400d4ed82000c86b9d6e
+P 10ab77af952abf09f93f342a9d07a3b133f2c4c0a3588df3390cd3a923cafae4
+R 12182f4e06ca014e75dafbecebb22765
 U stephan
-Z fc77e81a038294d78aff4ec7221b0be3
+Z 53ad4d279050a64639e6682eb9a83efd
 # Remove this line to create a well-formed Fossil manifest.
index e633b1fc49fe343906173947fb20040f96b4354d..78e90e96de76fbcefc9f5a34f579f890e9a5b153 100644 (file)
@@ -1 +1 @@
-10ab77af952abf09f93f342a9d07a3b133f2c4c0a3588df3390cd3a923cafae4
\ No newline at end of file
+a82e6faaa642b09d241232c4daa67134d4dfa24bf3ca3725740346ca5269b381
\ No newline at end of file