From: drh Date: Wed, 7 Sep 2016 18:20:09 +0000 (+0000) Subject: Merge recent enhancements from trunk. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4c12ada23db7c08c33d4548e065e02aa823aa9e7;p=thirdparty%2Fsqlite.git Merge recent enhancements from trunk. FossilOrigin-Name: 00759af053e0ea9bd73dba2cf6cad83598ea393b --- 4c12ada23db7c08c33d4548e065e02aa823aa9e7 diff --cc manifest index dc84c770d8,0d41570cd8..3e52376686 --- a/manifest +++ b/manifest @@@ -1,10 -1,10 +1,10 @@@ - C Merge\sall\schanges\sfrom\sthe\s3.14\srelease. - D 2016-08-08T14:21:10.199 -C Add\sthe\sext/misc/memvfs.c\sextension\sthat\simplements\sa\sVFS\sfor\sread-only\ndatabase\sfiles\scontained\sin\smemory. -D 2016-09-07T18:11:11.252 -F Makefile.in cfd8fb987cd7a6af046daa87daa146d5aad0e088 ++C Merge\srecent\senhancements\sfrom\strunk. ++D 2016-09-07T18:20:09.118 +F Makefile.in b0c3cd9e30ffb18d6952dbf3c2ee5ae07c6216d4 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 - F Makefile.msc c5b2eca5bdf5f73fe9eebf78f07755e2509fd629 -F Makefile.msc 5017381e4853b1472e01d5bb926be1268eba429c ++F Makefile.msc 217d91300f01f948706d05d901a91940a0085567 F README.md 8ecc12493ff9f820cdea6520a9016001cb2e59b7 - F VERSION cb29eb11e493dd85b3eeec4053c03949bf98478e + F VERSION 25e2e333adeff5965520bc8db999c658898c972d F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50 F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2 F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90 @@@ -249,15 -251,15 +251,15 @@@ F ext/rbu/rbufault.test cc0be8d5d392d98 F ext/rbu/rbufault2.test 9a7f19edd6ea35c4c9f807d8a3db0a03a5670c06 F ext/rbu/rbufault3.test 54a399888ac4af44c68f9f58afbed23149428bca F ext/rbu/rbufts.test 828cd689da825f0a7b7c53ffc1f6f7fdb6fa5bda - F ext/rbu/rbuprogress.test 2023a7df2c523e3df1cb532eff811cda385a789a + F ext/rbu/rbuprogress.test e3e25fb7622641b8f2df7c6b7a7eb6fddfc46a4b F ext/rbu/rbusave.test 0f43b6686084f426ddd040b878426452fd2c2f48 F ext/rbu/rbuvacuum.test 4a977447c15c2581ab668781d9ef4294382530e0 - F ext/rbu/rbuvacuum2.test 45009e127c3fb385e5c0fd5a8a63fb922a79d0ab - F ext/rbu/sqlite3rbu.c 948677ee0ec57da51148e6c5f64ac68afcf36ab2 - F ext/rbu/sqlite3rbu.h db8858120c9be14b60c9225f9da28221f5f6b945 - F ext/rbu/test_rbu.c 1a6bbc6982e32485a48df111d0bb1934d537eabd + F ext/rbu/rbuvacuum2.test 2569205b74ff40fbf3bda2fce33a58eb40eebdcc + F ext/rbu/sqlite3rbu.c e074c38798b90591f7f0cf0032d62f152ce5a95e + F ext/rbu/sqlite3rbu.h 6fb6294c34a9ca93b5894a33bca530c6f08decba + F ext/rbu/test_rbu.c 5aa22616afac6f71ebd3d9bc9bf1006cfabcca88 F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761 - F ext/rtree/rtree.c 45c6bec21cfe7579c5b81f2f236bd929b839694c -F ext/rtree/rtree.c 0b450226001c8ae4622e382b2aff79127581a763 ++F ext/rtree/rtree.c cd7e3d8f0ecc3d8797cde380947fc18821741853 F ext/rtree/rtree.h 834dbcb82dc85b2481cde6a07cdadfddc99e9b9e F ext/rtree/rtree1.test 42dadfc7b44a436cd74a1bebc0b9b689e4eaf7ec F ext/rtree/rtree2.test acbb3a4ce0f4fbc2c304d2b4b784cfa161856bba @@@ -300,11 -302,8 +302,11 @@@ F ext/session/session_common.tcl 9b696a F ext/session/sessionfault.test da273f2712b6411e85e71465a1733b8501dbf6f7 F ext/session/sessionfault2.test 04aa0bc9aa70ea43d8de82c4f648db4de1e990b0 F ext/session/sqlite3session.c 37485891b4add26cf61495df193c419f36556a32 - F ext/session/sqlite3session.h 69bf73cfd71e58f2ae5d2aa935b2c1a541aee555 - F ext/session/test_session.c 2caed9a659586428c63ca46e4900347b374487d4 + F ext/session/sqlite3session.h 7b9037818ee61f7429ca83e9866885ca6de5f764 + F ext/session/test_session.c eb0bd6c1ea791c1d66ee4ef94c16500dad936386 +F ext/sqlrr/README.txt 4239030e73023e72a2e727808cd433577d5bf730 +F ext/sqlrr/sqlrr.c 8d1e6571cd6a6beabdb5bcdfe3a0e723b914db41 +F ext/sqlrr/sqlrr.h 09e4f8929ad9bc2638732c0cc0db5eef8c417824 F ext/userauth/sqlite3userauth.h 19cb6f0e31316d0ee4afdfb7a85ef9da3333a220 F ext/userauth/user-auth.txt e6641021a9210364665fe625d067617d03f27b04 F ext/userauth/userauth.c 5fa3bdb492f481bbc1709fc83c91ebd13460c69e @@@ -323,17 -322,17 +325,17 @@@ F spec.template 86a4a43b99ebb3e75e6b9a7 F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786 F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a - F src/alter.c cc28ab933ae615b22add0d609794ffb6596b42ea - F src/analyze.c 37fedc80ac966ce1745811746e68e4d8fa64c7fe - F src/attach.c 771153bd1f4ab0b97a44a13dde2c7e5e1efeba22 - F src/auth.c 5c8e0f37f785f935f589496801edd19840485853 - F src/backup.c 17cd25a36d49330df2bacd2cadf2a61f3b525976 + F src/alter.c 299117695b1f21ac62dfc5b608588810ba22ed0d + F src/analyze.c 8b62b2cf4da85451534ac0af82cafc418d837f68 + F src/attach.c 4711ff365df4072b8c3dcd55db5d12dcf8ffa0c6 + F src/auth.c 930b376a9c56998557367e6f7f8aaeac82a2a792 + F src/backup.c 92c2e3b5fcb47626413717138617f4d32f08aea4 F src/bitvec.c 3ee4c8b2c94ed3a7377256e18199e6ff5cf33f63 F src/btmutex.c bc87dd3b062cc26edfe79918de2200ccb8d41e73 -F src/btree.c 2551bd3ecb8b8988fb8b23aabadfb214dbc38e46 +F src/btree.c 0a3308f223e400a4865ba611073888683fce4af6 F src/btree.h 075c45707c0f8f8af118f739f36df8098a08b7da F src/btreeInt.h c18b7d2a3494695133e4e60ee36061d37f45d9a5 - F src/build.c 7c3c780b703c09314032c8f6e4e7c1d80241a818 + F src/build.c c2ccfcdd99e18894a8750e215b8d9c5398a3c073 F src/callback.c 2e76147783386374bf01b227f752c81ec872d730 F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e F src/ctime.c e77f3dc297b4b65c96da78b4ae4272fdfae863d7 @@@ -348,10 -347,10 +350,10 @@@ F src/global.c c45ea22aff29334f6a9ec549 F src/hash.c 55b5fb474100cee0b901edaf203e26c970940f36 F src/hash.h ab34c5c54a9e9de2e790b24349ba5aab3dbb4fd4 F src/hwtime.h 747c1bbe9df21a92e9c50f3bbec1de841dc5e5da - F src/insert.c 8f4e9fcbd8e95e85f15647ba8b413b18d556ec2b + F src/insert.c 3edb5a1bda44df13531fedfcde5fbcc2fc04c222 -F src/legacy.c 75d3023be8f0d2b99d60f905090341a03358c58e +F src/legacy.c b419b813f192eef79d73f968511d2ee129525e21 F src/loadext.c dd7a2b77902cc66c22555aef02e1a682554b7aec - F src/main.c 8473928b7bcd24d492ff16c701dd0d4bbd3db190 -F src/main.c 9821bb4d2399bc5a0b8a5dfc06bede2d1520255c ++F src/main.c 8525df779c1bbf6c0350d6971cd9b37a8c10ba3a F src/malloc.c 1443d1ad95d67c21d77af7ae3f44678252f0efec F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 F src/mem1.c 6919bcf12f221868ea066eec27e579fed95ce98b @@@ -370,34 -369,33 +372,34 @@@ F src/os.c c03b50496df5815e8f6d45bae440 F src/os.h 8e976e59eb4ca1c0fca6d35ee803e38951cb0343 F src/os_common.h b2f4707a603e36811d9b1a13278bffd757857b85 F src/os_setup.h 0dbaea40a7d36bf311613d31342e0b99e2536586 - F src/os_unix.c defa2c6c6e01219459fa783d2f55841271c4eebc -F src/os_unix.c be9ca0f901a2b6c1bc93dc338f4863675180c189 -F src/os_win.c 520f23475f1de530c435d30b67b7b15fe90874b0 ++F src/os_unix.c 5f558f9433256f25d2f2dd852c7e93a84c05e1e4 +F src/os_win.c 8ba3403e276b0b01fd822bfcc162b83cacc80a1a F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a - F src/pager.c 5111055cd7c85e3b6f8de02fc1ae382397f89a62 -F src/pager.c bf5b71bde3e9b6110e7d6990607db881f6a471a2 -F src/pager.h 966d2769e76ae347c8a32c4165faf6e6cb64546d ++F src/pager.c 06b9b230273dbbd700a6f2bfe39d51be4bb0da03 +F src/pager.h 16644d79a66502f77389648ad5f2dca0ce0095de - F src/parse.y 99b676e6fc2f4e331ab93e76b3987cffdbd28efa + F src/parse.y ed6990c2d41eb0302eda90d5009c51fec792c850 F src/pcache.c 5583c8ade4b05075a60ba953ef471d1c1a9c05df F src/pcache.h 2cedcd8407eb23017d92790b112186886e179490 - F src/pcache1.c 9c2f433344e345da87f944c66e54b9e3e5d49693 - F src/pragma.c 1564ee0bc96aed8b39cfec2c5bb655e031b6431c -F src/pcache1.c 4bb7a6a5300c67d0b033d25adb509c120c03e812 -F src/pragma.c d932ba278654617cdd281f88a790a3185fca7c44 ++F src/pcache1.c 42fc9916238609e499c04e521138cecd42a20b90 ++F src/pragma.c 7a32fcc81f3c765621dba31a248dfbeb0342b569 F src/pragma.h 64c78a648751b9f4f297276c4eb7507b14b4628c - F src/prepare.c 9c56ea254317e27d3a1273fa812b8578b5e2f850 -F src/prepare.c 0fcf16eaacc90c1059055519a76b75b516a59a88 ++F src/prepare.c 9d96dd74aabcae932604807f178ccb5c420e160e F src/printf.c a5f0ca08ddede803c241266abb46356ec748ded1 F src/random.c ba2679f80ec82c4190062d756f22d0c358180696 - F src/resolve.c 0392c6686586b1d4dac9a4106959f03ddd70e9aa + F src/resolve.c d67b9a5cc33339256e2088c5a722745fc2ff5219 F src/rowset.c 7b7e7e479212e65b723bf40128c7b36dc5afdfac - F src/select.c f3c6e9065fb34f6a23af27ec7f1f717ffbfc2ee4 - F src/shell.c 79dda477be6c96eba6e952a934957ad36f87acc7 - F src/sqlite.h.in 5894333db09c72e6a0c8b75d1e61f1a5b269ba35 + F src/select.c fda7fd24b4d8e75479ae581329db0a0b0bf76633 + F src/shell.c de7c7e98846cacbfbe062cbd98bca899dfb720e3 -F src/sqlite.h.in 4a030e254e204570444b34bf7d40fb4a5416089e ++F src/sqlite.h.in bf745d785ea9d1ba3a89a71fc2b592727a400974 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 +F src/sqlite3_private.h a81a9c5f97c095cc3e86914a05f8fabe0011f4a1 F src/sqlite3ext.h 8648034aa702469afb553231677306cc6492a1ae - F src/sqliteInt.h 843e15ad1367967c74de7eeef088a6659613d395 -F src/sqliteInt.h 153099746007418dfa03a99c8355c8d47b0a1cc9 ++F src/sqliteInt.h ec1a08e3ebd7644a62237aafba28782fb14a41fb F src/sqliteLimit.h c0373387c287c8d0932510b5547ecde31b5da247 F src/status.c a9e66593dfb28a9e746cba7153f84d49c1ddc4b1 F src/table.c 5226df15ab9179b9ed558d89575ea0ce37b03fc9 F src/tclsqlite.c bdae822f21e229b6daced15938b6343ce44ef454 - F src/test1.c 82d5cdb9bc825b8882d32ad08896dfd7e85a2766 -F src/test1.c 8574e41c1bf103727909b37351b3690cc07bc8a7 ++F src/test1.c 90a6f4aece9d71c73879c43d67baac2ddf2e8d4e F src/test2.c b7174313e993754303a8b33c43df7c44b46857ab F src/test3.c 1339a40be39650ae83894b6578f971dc7f96ea8a F src/test4.c 18ec393bb4d0ad1de729f0b94da7267270f3d8e6 @@@ -412,10 -410,10 +414,10 @@@ F src/test_backup.c bf5da90c9926df0a4b9 F src/test_bestindex.c d23f80d334c59662af69191854c76b8d3d0c8c96 F src/test_blob.c a0f7ad49a0c9d4b72f693fe2a71c58d7e507174d F src/test_btree.c 8b2dc8b8848cf3a4db93f11578f075e82252a274 -F src/test_config.c 4d3d4a886416f369771d69a6dba926866deda788 +F src/test_config.c e91bd1471a56cf0267fd934f13e916b788e5f7af F src/test_demovfs.c a0c3bdd45ed044115c2c9f7779e56eafff18741e F src/test_devsym.c 4e58dec2602d8e139ca08659f62a62450587cb58 - F src/test_fs.c ac62ce7d5c0c23aa6932891cad5746945564c91c + F src/test_fs.c e16cbe68d3b107e00a907c20a9a02629870eb69b F src/test_func.c a2b4993da973b0ea60dd5d51a7066238ede8c329 F src/test_hexio.c 1d4469ca61ab202a1fcec6543f584d2407205e8d F src/test_init.c 4413c211a94b62157ca4c145b3f27c497f03c664 @@@ -442,36 -440,36 +444,36 @@@ F src/test_tclvar.c df9fe1213c2634687a9 F src/test_thread.c 911d15fb14e19c0c542bdc8aabf981c2f10a4858 F src/test_vfs.c f0186261a24de2671d080bcd8050732f0cb64f6e F src/test_vfstrace.c bab9594adc976cbe696ff3970728830b4c5ed698 - F src/test_windirent.c 8f5fada630348558d5745b334702f301da1ffc61 - F src/test_windirent.h b12055cab6227f7be10f5c19296f67c60cc5e2a5 + F src/test_windirent.c 600398db0198ca1c77ca183831bf456746b6f5c4 + F src/test_windirent.h 7edc57e2faa727026dbd5d010dd0e2e665d5aa01 F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9 F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c - F src/tokenize.c 3b29883b0ce4a6c6f643965b66b5ca6613178e59 - F src/treeview.c c56d6ddbed564efda746236b35bcbb8238daac4b - F src/trigger.c e14840ee0c3e549e758ec9bf3e4146e166002280 - F src/update.c 4f05ea8cddfa367d045e03589756c02199e8f9bd + F src/tokenize.c 78c8085bc7af1922aa687f0f4bbd716821330de5 + F src/treeview.c 70329ef46b86f94b16a98aacced793e0692217b5 + F src/trigger.c 11e20b3b12c847b3b9055594c0f1631266bb53fc + F src/update.c 8179e699dbd45b92934fd02d3d8e3732e8da8802 F src/utf.c 699001c79f28e48e9bcdf8a463da029ea660540c F src/util.c 810ec3f22e2d1b62e66c30fe3621ebdedd23584d - F src/vacuum.c 9dd2f5d276bc6094d8f1d85ecd41b30c1a002a43 - F src/vdbe.c 5260025793f47c1c51c04154f9762ef3ef310607 + F src/vacuum.c 913970b9d86dd6c2b8063ef1af421880f1464ec3 -F src/vdbe.c 751dd0a177615388f95123d723ce82395b938ce9 ++F src/vdbe.c 4581775c031f095a87752316a85de425ac8edf43 F src/vdbe.h 67bc551f7faf04c33493892e4b378aada823ed10 F src/vdbeInt.h c59381049af5c7751a83456c39b80d1a6fde1f9d - F src/vdbeapi.c facd9075897e1878446e76680b0519cc6ba199f2 - F src/vdbeaux.c a32d79aeaa88dc2b97c261172d952d395254a055 - F src/vdbeblob.c 83d2d266383157b02e2b809350bb197e89d7895b -F src/vdbeapi.c a32d61b7dd05e6890d8fd44d2805f55e2f5ba9f3 ++F src/vdbeapi.c 17e7b6517d964149abc12dadcbea84a2b71a741b + F src/vdbeaux.c 83458783d241cfd6691141c8a105832ee50258e5 + F src/vdbeblob.c 3e82a797b60c3b9fed7b8de8c539ca7607874937 F src/vdbemem.c 1ecaa5ee0caff07255f25d04e8dc88befb6f88d1 F src/vdbesort.c 91fda3909326860382b0ca8aa251e609c6a9d62c F src/vdbetrace.c 41963d5376f0349842b5fc4aaaaacd7d9cdc0834 - F src/vtab.c 6b3cfaff7e4397739d6b48511e777ca58c6d06d4 + F src/vtab.c e02cacb5c7ae742631edeb9ae9f53d399f093fd8 F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9 -F src/wal.c 02eeecc265f6ffd0597378f5d8ae9070b62a406a -F src/wal.h 6dd221ed384afdc204bc61e25c23ef7fd5a511f2 +F src/wal.c 25bc1cea2ab18a917548dd0a30c299c538878ef9 +F src/wal.h f38853cd771ff42f448de4f908238f2e2966ac8f - F src/walker.c 0f142b5bd3ed2041fc52d773880748b212e63354 - F src/where.c 5c9df42d50888be8274a5a0eb062eb0629869bd3 + F src/walker.c 2d2cc7fb0f320f7f415215d7247f3c584141ac09 + F src/where.c 4bbc3f1dcda64c96ed5f0ffe51be7c0d7adb6c62 F src/whereInt.h e5b939701a7ceffc5a3a8188a37f9746416ebcd0 F src/wherecode.c 99707d11907c71d289ee9553d2d1a22f1fd8ba41 - F src/whereexpr.c d7dcbf14ce1b5876c1f76496162c30fcba669563 + F src/whereexpr.c 98ce9f3b8d92b6f741b9f3498f9619695739256e -F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 +F test/8_3_names.test 05034aadccd2253ffe6cbefb06662b8aa4600f77 F test/affinity2.test a6d901b436328bd67a79b41bb0ac2663918fe3bd F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2 F test/aggnested.test b35b4cd69fc913f90d39a575e171e1116c3a4bb7 @@@ -626,9 -624,9 +628,9 @@@ F test/cursorhint.test 7bc346788390475e F test/cursorhint2.test 2b45341d32d1aae9991a00ef31ebca339b274255 F test/date.test 984ac1e3e5e031386866f034006148d3972b4a65 F test/dbstatus.test 73149851b3aff14fc6db478e58f9083a66422cf5 -F test/dbstatus2.test e93ab03bfae6d62d4d935f20de928c19ca0ed0ab +F test/dbstatus2.test 16194c6aa2d8a050f227890d2ed1eb5f8dcb8300 F test/default.test 0cb49b1c315a0d81c81d775e407f66906a2a604d - F test/delete.test e1bcdf8926234e27aac24b346ad83d3329ec8b6f + F test/delete.test acc38fca8ee4851467705b1c2cfea64cd26667e5 F test/delete2.test 3a03f2cca1f9a67ec469915cb8babd6485db43fa F test/delete3.test 555e84a00a99230b7d049d477a324a631126a6ab F test/delete4.test 21d2113217eeaacac2d99defe14fe6611615ae86 @@@ -658,10 -656,10 +660,10 @@@ F test/e_select2.test aceb80ab927d46fba F test/e_totalchanges.test b12ee5809d3e63aeb83238dd501a7bca7fd72c10 F test/e_update.test f46c2554d915c9197548681e8d8c33a267e84528 F test/e_uri.test 25385396082b67fd02ae0038b95a3b3575fe0519 - F test/e_vacuum.test 120f29ea56bdce4d43279527ece894ab5d1729d3 + F test/e_vacuum.test 9e5e47e4059a779c777f47e0f560fc82c99336df -F test/e_wal.test ae9a593207a77d711443ee69ffe081fda9243625 +F test/e_wal.test 95c21e45eefe4cc31e820f998b14f92d1cb3a1bf F test/e_walauto.test 248af31e73c98df23476a22bdb815524c9dc3ba8 -F test/e_walckpt.test 28c371a6bb5e5fe7f31679c1df1763a19d19e8a0 +F test/e_walckpt.test 9f20ab843538484c57069074b126699266ee5521 F test/e_walhook.test 4c0613a0c76e7a9d5c4c211e1b4cbcc1143914df F test/enc.test e54531cd6bf941ee6760be041dff19a104c7acea F test/enc2.test 83437a79ba1545a55fb549309175c683fb334473 @@@ -1514,7 -1512,7 +1517,7 @@@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a9 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 - P dacfff514034602361cd5325deba8d9b9691f865 d5e98057028abcf7217d0d2b2e29bbbcdf09d6de - R 1eb04bd85f02d76bdade72e725fe4877 -P d8451fe84d09db6ec7e1bd5f0708ea1b5e85f3d6 -R 40828d7c09ecd4e3a6b5df17d516ba22 ++P c3cd543f3380475509d7bab9bb6c7858a8402457 12b7782a9af91eab913e159149cb28b3f5a6557c ++R 3e75819e222efa28e21cfe9d58920b01 U drh - Z ceecc15bd203b97fbd4e9a7a7f4acafe -Z f7bf016242cf820d90b7abae39af230e ++Z 2580f9d8aa04fecaed6d9ec9d8dd285e diff --cc manifest.uuid index 5ad31eab9d,824ab0842b..2bc3167854 --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - c3cd543f3380475509d7bab9bb6c7858a8402457 -12b7782a9af91eab913e159149cb28b3f5a6557c ++00759af053e0ea9bd73dba2cf6cad83598ea393b