googlefs: De-Googlize, rename to WebSearchFS

DuckDuckGo terms of use say "don't use our name for your app", so go for
a generic "Web Search". Mention them in the README, however.

Their terms of use say "don't remove our branding", but the results from
the HTML page have pretty much no branding. There's a logo at the top of
the page, but the terms of use also say "don't use our logo". So I guess
we're fine here.

Change-Id: Ib24a95faf4e727769ae00c1cb74fab79abde0379
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5498
Reviewed-by: Adrien Destugues <[email protected]>
This commit is contained in:
PulkoMandy
2023-02-08 18:42:37 +00:00
committed by waddlesplash
parent 5a369046a3
commit 96e28a400a
41 changed files with 937 additions and 1112 deletions
+1 -1
View File
@@ -8,7 +8,6 @@ SubInclude HAIKU_TOP src add-ons kernel file_systems cdda ;
SubInclude HAIKU_TOP src add-ons kernel file_systems exfat ;
SubInclude HAIKU_TOP src add-ons kernel file_systems ext2 ;
SubInclude HAIKU_TOP src add-ons kernel file_systems fat ;
SubInclude HAIKU_TOP src add-ons kernel file_systems googlefs ;
SubInclude HAIKU_TOP src add-ons kernel file_systems iso9660 ;
SubInclude HAIKU_TOP src add-ons kernel file_systems netfs ;
SubInclude HAIKU_TOP src add-ons kernel file_systems nfs ;
@@ -20,6 +19,7 @@ SubInclude HAIKU_TOP src add-ons kernel file_systems reiserfs ;
SubInclude HAIKU_TOP src add-ons kernel file_systems udf ;
SubInclude HAIKU_TOP src add-ons kernel file_systems ufs2 ;
SubInclude HAIKU_TOP src add-ons kernel file_systems userlandfs ;
SubInclude HAIKU_TOP src add-ons kernel file_systems websearchfs ;
SubInclude HAIKU_TOP src add-ons kernel file_systems xfs ;
SubInclude HAIKU_TOP src add-ons kernel file_systems layers ;
@@ -1,29 +0,0 @@
Welcome to the Google™ FileSystem for BeOS™, Zeta™ and Haiku®.
Copyright© 2004, 2005, François Revol.
Google is a trademark of Google,Inc.
BeOS is a trademark of PalmSource.
Zeta is a trademark of yellowTAB GmbH.
Haiku is a trademark of Haiku, Inc.
REQUIRES BONE
mkdir /google; ndmount googlefs /google
Use "Search Google" query template in this folder to ask google anything.
or:
query -v /google '((name=="*QUESTION*")&&(BEOS:TYPE=="application/x-vnd.Be-bookmark"))'
where QUESTION is what you want to ask google. (googlefs currently filters queries to only answer those)
( you will want to pipe that to catattr:
query -v /google '((name=="*site:bebits.com bone*")&&(BEOS:TYPE=="application/x-vnd.Be-bookmark"))' | xargs catattr META:url
note that won't work with sync_unlink true in the settings)
Included are 2 scripts, google and imlucky that runs such a query using the arguments given on the command line.
An addon for Ingo Weinhold's UserlandFS is provided, compiled with debug printouts, so you can see it at work.
To use it, startUserlandFSServer and run:
ufs_mount googlefs /dev/zero /google
Enjoy.
@@ -1,622 +0,0 @@
/*
* Copyright 2004-2008, François Revol, <[email protected]>.
* Distributed under the terms of the MIT License.
*/
#include <SupportDefs.h>
#include <TypeConstants.h>
#include "googlefs.h"
#define SZSTR(s) sizeof(s), s
#define SZTAB(s) sizeof(s), s
// #pragma mark - root folder icons
#if 0
/* old one */
const char google_icon_M[] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x1b, 0xd9, 0xd9, 0x1d, 0xff, 0xff,
0xff, 0xff, 0x1d, 0x82, 0x82, 0x19, 0xff, 0xff, 0x1e, 0xd8, 0x64, 0x63, 0x63, 0xd8, 0x1b, 0xff,
0xff, 0x1a, 0x2c, 0x2d, 0x2d, 0x2c, 0xc4, 0x1d, 0x62, 0x63, 0x1c, 0x3f, 0x1e, 0x63, 0xd8, 0x1d,
0x1a, 0x2c, 0xca, 0x1a, 0x1d, 0x82, 0x2d, 0xa3, 0xd8, 0x62, 0x3f, 0x3f, 0x3f, 0x1e, 0xd8, 0x1a,
0x82, 0x2d, 0x1a, 0x3f, 0x3f, 0x3f, 0xa3, 0x2d, 0xd8, 0x62, 0x0e, 0x1e, 0x3f, 0x1f, 0xd8, 0x62,
0x82, 0x2d, 0x1d, 0x3f, 0x3f, 0x0f, 0x82, 0x2e, 0x63, 0x83, 0x0a, 0x1e, 0x3f, 0xfd, 0x64, 0x1b,
0x19, 0x2c, 0x5a, 0x3f, 0x1e, 0x0b, 0xc4, 0xeb, 0x1a, 0x64, 0xd8, 0xd9, 0xd9, 0x64, 0x83, 0xff,
0xff, 0xca, 0x2c, 0xa3, 0x5a, 0xc4, 0x2e, 0x82, 0xff, 0x1b, 0x83, 0x8a, 0x89, 0x17, 0x17, 0xff,
0xff, 0x1a, 0xa9, 0x2e, 0x2e, 0xca, 0x82, 0x17, 0xff, 0xff, 0xff, 0x17, 0x17, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x1a, 0x1a, 0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
const char google_icon_L[] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1c, 0x1b, 0x1c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x1c, 0x62, 0x63, 0xd8, 0xd8, 0xd8, 0x63, 0x62, 0x1d, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x1e, 0x1e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0x1a, 0xd8, 0xd8, 0xd8, 0xf8, 0xd8, 0xf8, 0xd8, 0xd8, 0x63, 0x1b, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x1a, 0x18, 0xa3, 0xc4, 0xc4, 0xc4, 0xa9, 0x82, 0x1a, 0xff, 0xff, 0xff,
0xff, 0x1a, 0xd8, 0xd8, 0x64, 0x84, 0x83, 0x63, 0x63, 0x84, 0xf8, 0xd8, 0x63, 0x1b, 0xff, 0xff,
0xff, 0xff, 0xff, 0x1c, 0xa3, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0xc4, 0x1a, 0xff, 0xff,
0x1c, 0x63, 0xf8, 0x84, 0x83, 0x1d, 0x1f, 0x3f, 0x1f, 0x1c, 0x63, 0x64, 0xd8, 0x63, 0x1d, 0xff,
0xff, 0xff, 0x1c, 0xc4, 0x2c, 0x2c, 0x2d, 0x2e, 0x2e, 0x2e, 0x2e, 0x2c, 0x2c, 0x2c, 0x19, 0xff,
0x62, 0xd8, 0x84, 0x63, 0x1f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1e, 0x63, 0xf8, 0xd8, 0x62, 0xff,
0xff, 0x1a, 0xa3, 0x2c, 0x2d, 0x2e, 0xa3, 0x1a, 0x1c, 0x1a, 0x82, 0x2e, 0x2d, 0x2c, 0xc4, 0x1b,
0x63, 0xf8, 0x84, 0x1d, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1b, 0xf8, 0xd8, 0x63, 0x1a,
0xff, 0x18, 0x2c, 0x2d, 0x2f, 0x82, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1a, 0x2d, 0x2c, 0x2c, 0xa9,
0xd8, 0x64, 0x83, 0x1f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1e, 0xd8, 0xd8, 0x83, 0x1a,
0x1a, 0xa3, 0x2c, 0xeb, 0xa9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x82, 0x2d, 0x2c, 0xca,
0xd8, 0x64, 0x83, 0x1f, 0x19, 0x1b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1f, 0xd8, 0xd8, 0x83, 0x1a,
0x1a, 0xc4, 0x2c, 0x2f, 0x61, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1d, 0xc4, 0x2c, 0xeb,
0xd8, 0xf8, 0x83, 0x15, 0x01, 0x03, 0x1b, 0x3f, 0x3f, 0x3f, 0x3f, 0x1e, 0xd8, 0xf8, 0x83, 0x1a,
0x1a, 0xc4, 0x2c, 0x2f, 0x1c, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1c, 0x1b, 0x1e, 0xc4, 0x2d, 0x2f,
0x83, 0xd8, 0x64, 0x0f, 0x00, 0x01, 0x19, 0x3f, 0x3f, 0x3f, 0x3f, 0xfd, 0xd8, 0x64, 0x14, 0x1a,
0x1a, 0xc4, 0x2c, 0x2d, 0xda, 0x3f, 0x3f, 0x3f, 0x3f, 0x1c, 0x04, 0x02, 0x16, 0xc4, 0x2d, 0x2f,
0x89, 0xf8, 0xd8, 0x63, 0x12, 0x15, 0x1f, 0x3f, 0x3f, 0x3f, 0xfe, 0xd8, 0xf8, 0x84, 0x18, 0xff,
0x1a, 0xa9, 0x2c, 0x2c, 0x82, 0x3f, 0x3f, 0x3f, 0x3f, 0x1b, 0x02, 0x00, 0xa9, 0x2c, 0x2e, 0x2f,
0x1a, 0x83, 0xf8, 0xf8, 0xd8, 0xfd, 0x1f, 0x1f, 0x1e, 0xfd, 0xd8, 0xf8, 0x84, 0x89, 0x1a, 0xff,
0xff, 0x82, 0x2d, 0x2c, 0x2c, 0xda, 0x3f, 0x3f, 0x3f, 0x3f, 0x17, 0x13, 0xc4, 0x2d, 0xeb, 0xa9,
0x1a, 0x1a, 0x83, 0x84, 0x64, 0xf8, 0xd8, 0xd8, 0xd8, 0xf8, 0xf8, 0x84, 0x89, 0x1b, 0xff, 0xff,
0xff, 0x1a, 0xca, 0x2d, 0x2c, 0x2c, 0x5a, 0x1e, 0x3f, 0x1f, 0xda, 0xc4, 0x2c, 0xeb, 0x2f, 0x18,
0xff, 0xff, 0x1a, 0x89, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x8a, 0x89, 0x1b, 0xff, 0xff, 0xff,
0xff, 0xff, 0x19, 0xeb, 0x2d, 0x2c, 0x2c, 0x2c, 0xc4, 0x2c, 0x2c, 0x2c, 0x2e, 0x2f, 0x13, 0xff,
0xff, 0xff, 0xff, 0x1a, 0x17, 0x89, 0x89, 0x8a, 0x89, 0x89, 0x18, 0x1a, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x19, 0xca, 0x2e, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0xeb, 0x2f, 0x13, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1a, 0x1a, 0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x1c, 0xa9, 0xca, 0xeb, 0xeb, 0xeb, 0xca, 0xa9, 0x18, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1a, 0x1a, 0x18, 0x61, 0x1b, 0x1a, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
#endif
// icons by ahwayakchih
const char google_icon_M[] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1b, 0xd9, 0xd9, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x82, 0x82, 0x19, 0xff, 0xff, 0xff, 0xd8, 0x64, 0x63, 0x63, 0xd8, 0xff, 0xff,
0xff, 0xff, 0x2c, 0x2d, 0x2d, 0x2c, 0xc4, 0xff, 0x62, 0x63, 0x1c, 0x3f, 0x1e, 0x63, 0xd8, 0xff,
0xff, 0x2c, 0xca, 0x1a, 0x1d, 0x82, 0x2d, 0xa3, 0xd8, 0x62, 0x3f, 0x3f, 0x3f, 0x1e, 0xd8, 0x1a,
0x82, 0x2d, 0x1a, 0x3f, 0x3f, 0x3f, 0xa3, 0x2d, 0xd8, 0x62, 0x0e, 0x1e, 0x3f, 0x1f, 0xd8, 0x62,
0x82, 0x2d, 0x1d, 0x3f, 0x3f, 0x0f, 0x82, 0x2e, 0x63, 0x83, 0x0a, 0x1e, 0x3f, 0xfd, 0x64, 0xff,
0xff, 0x2c, 0x5a, 0x3f, 0x1e, 0x0b, 0xc4, 0xeb, 0xff, 0x64, 0xd8, 0xd9, 0xd9, 0x64, 0x83, 0xff,
0xff, 0xca, 0x2c, 0xa3, 0x5a, 0xc4, 0x2e, 0x82, 0xff, 0xff, 0x83, 0x8a, 0x89, 0x17, 0xff, 0xff,
0xff, 0xff, 0xa9, 0x2e, 0x2e, 0xca, 0x82, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
const char google_icon_L[] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x00,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x1b,
0x09, 0x08, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x00, 0x04, 0x1c,
0x1b, 0x1c, 0x08, 0x09, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x1b, 0x09, 0x08,
0x1c, 0x1c, 0x1b, 0x1c, 0x08, 0x09, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x00, 0x04, 0x1c, 0x1b, 0x1c,
0x08, 0x09, 0x1c, 0x1b, 0x1c, 0x1b, 0x09, 0x08, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x1b, 0x09, 0x08, 0x1c, 0x1c,
0x1b, 0x1c, 0x08, 0x09, 0x1c, 0x1b, 0x1c, 0x1b, 0x09, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x00, 0x04, 0x1c, 0x1b, 0x1c, 0x08, 0x09,
0x1c, 0x1b, 0x1c, 0x1b, 0x09, 0x08, 0x1c, 0x1c, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x1b, 0x09, 0x08, 0x1c, 0x1c, 0x1b, 0x1c,
0x08, 0x09, 0x1c, 0x1b, 0x1c, 0x1b, 0x09, 0x00, 0x1c, 0x00, 0xd9, 0x00, 0x00, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x04, 0x04, 0x1c, 0x1c, 0x1b, 0x09, 0x08, 0x1c, 0x1b,
0x1c, 0x1c, 0x08, 0x09, 0x1b, 0x1c, 0x1c, 0x00, 0x15, 0x00, 0xd1, 0xd9, 0xd9, 0x00, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x3f, 0x08, 0x09, 0x1b, 0x1c, 0x1b, 0x1c, 0x09, 0x08,
0x1c, 0x1b, 0x1c, 0x1c, 0x08, 0x00, 0x1c, 0x00, 0x15, 0x00, 0xd1, 0xd1, 0xd9, 0x00, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x04, 0x04, 0x04, 0x1c, 0x3f, 0x3f, 0x08, 0x09, 0x1b, 0x1c, 0x1b, 0x1c,
0x09, 0x08, 0x1c, 0x1b, 0x1c, 0x00, 0x15, 0x00, 0x15, 0x00, 0xd1, 0xd9, 0xaa, 0x01, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x04, 0x3f, 0x08, 0x09, 0x1b, 0x1c, 0x3f, 0x3f, 0x08, 0x09, 0x1b, 0x1c,
0x1b, 0x1c, 0x09, 0x00, 0x1b, 0x00, 0x15, 0x00, 0x0f, 0x00, 0xd9, 0xaa, 0xaa, 0x00, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x04, 0x3f, 0x3f, 0x3f, 0x08, 0x09, 0x1b, 0x1c, 0x3f, 0x3f, 0x08, 0x09,
0x1b, 0x1c, 0x1b, 0x00, 0x16, 0x00, 0x15, 0x00, 0x0f, 0xd9, 0xaa, 0xaa, 0xaa, 0x00, 0xff, 0xff,
0xff, 0xff, 0xff, 0x00, 0x04, 0x3f, 0x1b, 0x1c, 0x3f, 0x3f, 0x08, 0x09, 0x1b, 0x1c, 0x3f, 0x3f,
0x08, 0x00, 0x1c, 0x00, 0x15, 0x00, 0x0f, 0x00, 0xd9, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0xff, 0xff,
0xff, 0xff, 0x00, 0xd9, 0x04, 0x3f, 0x1b, 0x1c, 0x1b, 0x1c, 0x3f, 0x3f, 0x08, 0x09, 0x1b, 0x1c,
0x3f, 0x00, 0x15, 0x00, 0x15, 0x00, 0x0f, 0xd9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x0f, 0xff,
0xff, 0x00, 0xd9, 0xd1, 0x04, 0x15, 0x1a, 0x19, 0x1c, 0x1b, 0x1c, 0x1c, 0x3f, 0x3f, 0x08, 0x00,
0x1c, 0x00, 0x15, 0x00, 0x0f, 0x00, 0x63, 0xd8, 0xd8, 0xd8, 0x63, 0x62, 0xaa, 0x00, 0x0f, 0xff,
0xff, 0x00, 0xd9, 0xd9, 0x04, 0x0f, 0x15, 0x15, 0x1a, 0x19, 0x1c, 0x1c, 0x1b, 0x1c, 0x3f, 0x00,
0x15, 0x00, 0x15, 0x00, 0xd8, 0xd8, 0xd8, 0xf8, 0xd8, 0xf8, 0xd8, 0xd8, 0x63, 0x0f, 0x0f, 0xff,
0xff, 0x00, 0x83, 0x83, 0xd9, 0xd9, 0x0f, 0xa3, 0xc4, 0xc4, 0xc4, 0xa9, 0x82, 0x1c, 0x1b, 0x00,
0x15, 0x00, 0x0f, 0xd8, 0xd8, 0x64, 0x84, 0x83, 0x63, 0x63, 0x84, 0xf8, 0xd8, 0x63, 0xff, 0xff,
0xff, 0x00, 0x83, 0x83, 0x83, 0xa3, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0xc4, 0x1c, 0x00,
0x15, 0x00, 0x63, 0xf8, 0x84, 0x83, 0x1d, 0x3f, 0x3f, 0x3f, 0x1c, 0x63, 0x64, 0xd8, 0x63, 0xff,
0xff, 0x00, 0x83, 0x83, 0xc4, 0x2c, 0x2c, 0x2d, 0xeb, 0xeb, 0xeb, 0xeb, 0x2c, 0x2c, 0x2c, 0x00,
0x0f, 0x62, 0xd8, 0x84, 0x63, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1e, 0x63, 0xf8, 0xd8, 0x62,
0xff, 0x00, 0x83, 0xa3, 0x2c, 0x2d, 0xeb, 0xa3, 0x1a, 0x1c, 0x1a, 0x82, 0xeb, 0x2d, 0x2c, 0xc4,
0x0f, 0x63, 0xf8, 0x84, 0x1d, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1b, 0xf8, 0xd8, 0x63,
0xff, 0x00, 0x83, 0x2c, 0x2d, 0x2f, 0x82, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1a, 0x2d, 0x2c, 0x2c,
0xa9, 0xd8, 0x64, 0x83, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1e, 0xd8, 0xd8, 0x83,
0xff, 0x00, 0xa3, 0x2c, 0xeb, 0xa9, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x82, 0x2d, 0x2c,
0xca, 0xd8, 0x64, 0x83, 0x3f, 0x19, 0x1b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xd8, 0xd8, 0x83,
0xff, 0x00, 0xc4, 0x2c, 0x2f, 0x19, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1d, 0xc4, 0x2c,
0xeb, 0xd8, 0xf8, 0x83, 0x15, 0x01, 0x03, 0x1b, 0x3f, 0x3f, 0x3f, 0x3f, 0x1e, 0xd8, 0xf8, 0x83,
0xff, 0x00, 0xc4, 0x2c, 0x2f, 0x1c, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1c, 0x1b, 0x1e, 0xc4, 0x2d,
0x2f, 0x83, 0xd8, 0x64, 0x0f, 0x00, 0x01, 0x19, 0x3f, 0x3f, 0x3f, 0x3f, 0xfd, 0xd8, 0x64, 0x14,
0xff, 0x00, 0xc4, 0x2c, 0x2d, 0xda, 0x3f, 0x3f, 0x3f, 0x3f, 0x1c, 0x04, 0x02, 0x16, 0xc4, 0x2d,
0x2f, 0x89, 0xf8, 0xd8, 0x63, 0x12, 0x15, 0x3f, 0x3f, 0x3f, 0x3f, 0xfe, 0xd8, 0xf8, 0x84, 0x14,
0xff, 0xff, 0xa9, 0x2c, 0x2c, 0x82, 0x3f, 0x3f, 0x3f, 0x3f, 0x1b, 0x02, 0x00, 0xa9, 0x2c, 0xeb,
0x2f, 0xaa, 0x83, 0xf8, 0xf8, 0xd8, 0xfd, 0x3f, 0x3f, 0x1e, 0xfd, 0xd8, 0xf8, 0x84, 0x89, 0xff,
0xff, 0xff, 0x82, 0x2d, 0x2c, 0x2c, 0xda, 0x3f, 0x3f, 0x3f, 0x3f, 0x17, 0x13, 0xc4, 0x2d, 0xeb,
0xa9, 0x00, 0x0f, 0x83, 0x84, 0x64, 0xf8, 0xd8, 0xd8, 0xd8, 0xf8, 0xf8, 0x84, 0x89, 0xff, 0xff,
0xff, 0xff, 0xff, 0xca, 0x2d, 0x2c, 0x2c, 0x5a, 0x1e, 0x3f, 0x3f, 0xda, 0xc4, 0x2c, 0xeb, 0x2f,
0x00, 0x0f, 0x0f, 0xff, 0x89, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x8a, 0x89, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xeb, 0x2d, 0x2c, 0x2c, 0x2c, 0xc4, 0x2c, 0x2c, 0x2c, 0xeb, 0x2f, 0x00,
0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x89, 0x89, 0x8a, 0x89, 0x89, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xca, 0xeb, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0xeb, 0x2f, 0x00, 0x0f,
0x0e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa9, 0xca, 0xeb, 0xeb, 0xeb, 0xca, 0xa9, 0x00, 0x0e, 0x0f,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
const char google_icon_HVIF[] = {
0x6e, 0x63, 0x69, 0x66, 0x12, 0x03, 0x99, 0x66, 0x33, 0x02, 0x00, 0x06,
0x02, 0xb8, 0x7f, 0xa1, 0x3b, 0x71, 0xab, 0xbb, 0xc2, 0xa0, 0xb8, 0xba,
0x5d, 0x4b, 0x18, 0xa2, 0x49, 0x9b, 0x1d, 0x00, 0xff, 0xcc, 0x99, 0xff,
0xbd, 0x87, 0x52, 0x02, 0x00, 0x06, 0x02, 0x3b, 0x93, 0xe4, 0xb9, 0x93,
0xe4, 0x39, 0x93, 0xe4, 0x3b, 0x93, 0xe4, 0x49, 0xa8, 0x8a, 0x47, 0x9b,
0x06, 0x7c, 0x99, 0x66, 0x33, 0xc0, 0xb7, 0x87, 0x59, 0x02, 0x00, 0x06,
0x02, 0x37, 0xb8, 0xfe, 0x38, 0x79, 0x61, 0xbb, 0x32, 0x4b, 0x3a, 0x67,
0x9b, 0x4a, 0x8e, 0x15, 0x48, 0x6e, 0x2b, 0x00, 0xc8, 0x8c, 0x51, 0xff,
0xff, 0xcc, 0x99, 0x02, 0x00, 0x16, 0x02, 0x38, 0x00, 0x17, 0xb9, 0xff,
0xf7, 0x3a, 0x33, 0x30, 0x38, 0x33, 0x4f, 0x4a, 0x5e, 0xc6, 0x4a, 0x0f,
0x65, 0x00, 0x67, 0xff, 0xff, 0x02, 0x00, 0x06, 0x02, 0xbb, 0x12, 0xa8,
0x3a, 0x8f, 0x8c, 0xba, 0x8f, 0x8c, 0xbb, 0x12, 0xa8, 0x4b, 0x34, 0x46,
0x4a, 0xf0, 0x63, 0x00, 0x99, 0x66, 0x33, 0xff, 0x68, 0x3a, 0x0e, 0x02,
0x00, 0x06, 0x02, 0x3a, 0x0e, 0xd7, 0x3b, 0x6e, 0x12, 0xbb, 0x6e, 0x12,
0x3a, 0x0e, 0xd7, 0x49, 0x97, 0xce, 0x48, 0x60, 0xc5, 0x00, 0xff, 0xe6,
0xce, 0xff, 0xff, 0xcc, 0x99, 0x02, 0x00, 0x06, 0x02, 0x3a, 0x46, 0xde,
0x3b, 0x49, 0xec, 0xbb, 0x49, 0xec, 0x3a, 0x46, 0xde, 0x4a, 0x60, 0x61,
0x4a, 0x4d, 0xe6, 0x00, 0xad, 0x8a, 0x67, 0xff, 0x7e, 0x4e, 0x1e, 0x02,
0x00, 0x06, 0x02, 0x38, 0x0d, 0x6f, 0x3b, 0xdd, 0xb9, 0xbb, 0xdd, 0xb9,
0x38, 0x0d, 0x6f, 0x49, 0x75, 0xc0, 0x4a, 0x03, 0x71, 0x00, 0xee, 0xce,
0xae, 0xff, 0xcc, 0x99, 0x66, 0x03, 0x01, 0x00, 0x00, 0x04, 0x00, 0x75,
0x02, 0x00, 0x06, 0x03, 0x38, 0x00, 0x17, 0xb9, 0xff, 0xf7, 0x3a, 0x33,
0x30, 0x38, 0x33, 0x4f, 0x4a, 0x5e, 0xc6, 0x4a, 0x0f, 0x65, 0x00, 0x4b,
0x41, 0x16, 0xbd, 0xba, 0xb0, 0x88, 0xff, 0xfc, 0xf8, 0xe8, 0x03, 0x01,
0x00, 0x00, 0x05, 0x00, 0x02, 0x01, 0x06, 0x02, 0x3b, 0x40, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x40, 0x00, 0x48, 0x60, 0x00, 0x4a,
0xe0, 0x00, 0x00, 0xf3, 0xf8, 0xfa, 0xff, 0xbd, 0xdc, 0xe9, 0x03, 0x01,
0x00, 0x00, 0x02, 0x01, 0x06, 0x03, 0x3d, 0x04, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3d, 0x04, 0x00, 0x47, 0x58, 0x00, 0x4a, 0x50, 0x00,
0x00, 0xff, 0xff, 0xff, 0x7c, 0xff, 0x06, 0x06, 0xff, 0x3c, 0x25, 0x25,
0x02, 0x01, 0x06, 0x03, 0x3d, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3d, 0x04, 0x00, 0x47, 0x58, 0x00, 0x4a, 0x50, 0x00, 0x00, 0xff,
0xff, 0xff, 0x7c, 0xff, 0xea, 0x05, 0xff, 0x3c, 0x25, 0x25, 0x10, 0x0a,
0x04, 0x2c, 0x40, 0x3c, 0x47, 0x3c, 0x4c, 0x2c, 0x44, 0x0a, 0x06, 0x2a,
0x40, 0x2a, 0x4c, 0x42, 0x58, 0x5a, 0x40, 0x5a, 0x36, 0x42, 0x2c, 0x0a,
0x04, 0x2a, 0x40, 0x42, 0x4c, 0x5a, 0x36, 0x42, 0x2c, 0x0a, 0x06, 0xc6,
0x88, 0xbd, 0xf6, 0xc8, 0xa6, 0xbc, 0x05, 0xc0, 0xaf, 0xb8, 0xb3, 0xb8,
0x6e, 0xbf, 0x95, 0xba, 0x6c, 0xc0, 0x94, 0x42, 0x34, 0x0a, 0x04, 0xc6,
0x88, 0xbd, 0xf6, 0xc0, 0x69, 0xc3, 0x92, 0xba, 0x6c, 0xc0, 0x94, 0x42,
0x34, 0x0a, 0x04, 0x42, 0x58, 0x5a, 0x40, 0x5a, 0x36, 0x42, 0x4c, 0x0a,
0x06, 0x26, 0x32, 0x26, 0x4e, 0x42, 0x5c, 0x44, 0x5a, 0x44, 0x3c, 0x28,
0x30, 0x0a, 0x04, 0x26, 0x32, 0x42, 0x3e, 0x44, 0x3c, 0x28, 0x30, 0x0a,
0x04, 0x42, 0x5c, 0x44, 0x5a, 0x44, 0x3c, 0x42, 0x3e, 0x0a, 0x04, 0x26,
0x4e, 0x42, 0x5c, 0x42, 0x3e, 0x26, 0x32, 0x0a, 0x07, 0x42, 0x5e, 0x54,
0x5e, 0x56, 0x5c, 0x4b, 0x57, 0x62, 0x40, 0x5c, 0x3e, 0x42, 0x3e, 0x0a,
0x09, 0x58, 0x54, 0x50, 0x50, 0x5c, 0x50, 0x54, 0x4c, 0x60, 0x4c, 0x58,
0x48, 0x64, 0x48, 0x58, 0x42, 0x46, 0x54, 0x0a, 0x05, 0x46, 0x45, 0x46,
0x36, 0x36, 0x2f, 0x36, 0x43, 0xc0, 0x58, 0xc3, 0x3c, 0x0a, 0x0a, 0x23,
0x2f, 0x2d, 0x49, 0x4a, 0x5b, 0x5c, 0x2c, 0x50, 0x2a, 0x4c, 0x2c, 0x3a,
0x28, 0x38, 0x2d, 0x30, 0x2b, 0xb9, 0x57, 0xba, 0xa7, 0x02, 0x04, 0x32,
0x46, 0xbb, 0xee, 0x46, 0xb8, 0x69, 0x46, 0x2a, 0x4e, 0x2a, 0xc3, 0x91,
0x2a, 0xc7, 0x16, 0x32, 0x56, 0xb8, 0x69, 0x56, 0xbb, 0xee, 0x56, 0x3a,
0x4e, 0x3a, 0xc7, 0x16, 0x3a, 0xc3, 0x91, 0x08, 0x04, 0x23, 0xb3, 0xe5,
0xcb, 0x34, 0xb4, 0x18, 0xcb, 0x81, 0xcb, 0x5a, 0x24, 0xcb, 0xa7, 0x1a,
0x0a, 0x0a, 0x02, 0x0a, 0x0b, 0x20, 0x1c, 0x20, 0x0a, 0x09, 0x01, 0x01,
0x30, 0x1c, 0x20, 0x01, 0x17, 0x84, 0x10, 0x04, 0x0a, 0x01, 0x01, 0x02,
0x20, 0x1c, 0x20, 0x0a, 0x02, 0x01, 0x03, 0x20, 0x1c, 0x20, 0x0a, 0x03,
0x01, 0x04, 0x20, 0x1c, 0x20, 0x0a, 0x05, 0x01, 0x05, 0x20, 0x1c, 0x20,
0x0a, 0x0c, 0x01, 0x0c, 0x30, 0x28, 0x14, 0x01, 0x17, 0x84, 0x10, 0x04,
0x0a, 0x0b, 0x01, 0x0c, 0x20, 0x28, 0x14, 0x0a, 0x0c, 0x01, 0x0c, 0x30,
0x24, 0x18, 0x01, 0x17, 0x84, 0x10, 0x04, 0x0a, 0x0b, 0x01, 0x0c, 0x20,
0x24, 0x18, 0x0a, 0x0c, 0x01, 0x0c, 0x30, 0x20, 0x1c, 0x01, 0x17, 0x84,
0x10, 0x04, 0x0a, 0x0b, 0x01, 0x0c, 0x20, 0x20, 0x1c, 0x0a, 0x0c, 0x01,
0x0c, 0x30, 0x1c, 0x20, 0x01, 0x17, 0x84, 0x10, 0x04, 0x0a, 0x0b, 0x01,
0x0c, 0x20, 0x1c, 0x20, 0x0a, 0x09, 0x01, 0x06, 0x30, 0x1c, 0x20, 0x01,
0x17, 0x84, 0x00, 0x04, 0x0a, 0x06, 0x01, 0x07, 0x20, 0x1c, 0x20, 0x0a,
0x07, 0x01, 0x08, 0x20, 0x1c, 0x20, 0x0a, 0x08, 0x01, 0x09, 0x20, 0x1c,
0x20, 0x0a, 0x00, 0x01, 0x00, 0x20, 0x1e, 0x24, 0x0a, 0x0c, 0x01, 0x00,
0x20, 0x1c, 0x20, 0x0a, 0x10, 0x01, 0x0e, 0x30, 0xb0, 0x42, 0xb5, 0xbd,
0x01, 0x17, 0x84, 0x00, 0x04, 0x0a, 0x0e, 0x01, 0x0e, 0x20, 0xb0, 0x42,
0xb5, 0xbd, 0x0a, 0x0f, 0x01, 0x0e, 0x02, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x46, 0xe8, 0x00, 0x4a, 0xb6,
0x00, 0x0a, 0x11, 0x01, 0x0e, 0x30, 0xb7, 0xfb, 0xb3, 0x8c, 0x01, 0x17,
0x84, 0x00, 0x04, 0x0a, 0x0e, 0x01, 0x0e, 0x20, 0xb7, 0xfb, 0xb3, 0x8c,
0x0a, 0x0f, 0x01, 0x0e, 0x02, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3c, 0x00, 0x00, 0x48, 0xc0, 0x00, 0x4a, 0x6e, 0x00
};
const char google_icon_SVG[] = {
0x54, 0x1f, 0x00, 0x00, 0x78, 0xda, 0xed, 0x98, 0x5d, 0x6f, 0xdb, 0x36, 0x14, 0x86, 0xef, 0xf3,
0x2b, 0x08, 0xe5, 0xa6, 0x06, 0x6c, 0x86, 0x3c, 0xfc, 0x10, 0x95, 0xda, 0x29, 0xb0, 0x00, 0xab,
0x2f, 0x54, 0x0c, 0xd8, 0x1a, 0xdf, 0x2b, 0x32, 0xed, 0x08, 0x73, 0x24, 0x4f, 0x72, 0xb2, 0xb8,
0xbf, 0x7e, 0x87, 0xfa, 0x48, 0x6b, 0xc7, 0xcd, 0x58, 0xc3, 0xf5, 0x12, 0x2c, 0x32, 0x20, 0x91,
0x32, 0x25, 0x91, 0xef, 0x79, 0x78, 0xc8, 0x73, 0x86, 0x1f, 0x1e, 0x6e, 0x17, 0xe4, 0xde, 0x96,
0x55, 0x56, 0xe4, 0xa3, 0x80, 0x53, 0x16, 0x10, 0x9b, 0xa7, 0xc5, 0x34, 0xcb, 0xe7, 0xa3, 0xe0,
0xea, 0xf3, 0xaf, 0x03, 0x13, 0x90, 0x6a, 0x95, 0xe4, 0xd3, 0x64, 0x51, 0xe4, 0x76, 0x14, 0xac,
0x6d, 0x15, 0x7c, 0xb8, 0x38, 0x19, 0x56, 0xf7, 0x73, 0xf2, 0x77, 0x36, 0x5d, 0xdd, 0x8c, 0x02,
0x2d, 0x03, 0x72, 0x63, 0xb3, 0xf9, 0xcd, 0xaa, 0x29, 0xa7, 0xc5, 0xa2, 0x28, 0x07, 0x59, 0xbe,
0xb2, 0xe5, 0xb2, 0x58, 0x24, 0xab, 0xfa, 0xcd, 0x8b, 0x2c, 0xb7, 0x49, 0xf9, 0xfb, 0xc7, 0x5f,
0x82, 0x8b, 0x13, 0x32, 0x9c, 0xe3, 0x89, 0x0c, 0x97, 0xc9, 0xea, 0x06, 0x5f, 0xbe, 0x5e, 0xe0,
0x7b, 0x67, 0xd9, 0x62, 0x71, 0x7e, 0xca, 0xea, 0xe3, 0x3d, 0x71, 0xb5, 0x41, 0xb1, 0x4c, 0xd2,
0x6c, 0xb5, 0x3e, 0x67, 0x54, 0x2a, 0x63, 0x02, 0x7c, 0xa2, 0x39, 0xa6, 0xa3, 0xe0, 0x93, 0x90,
0x44, 0xc3, 0x58, 0x41, 0xac, 0xb0, 0xc0, 0x62, 0x29, 0x88, 0x52, 0xb1, 0xd6, 0x44, 0x40, 0xac,
0x19, 0x11, 0x6c, 0x2c, 0xe4, 0x44, 0xc3, 0x97, 0xc7, 0x67, 0xf0, 0xf8, 0xa4, 0x34, 0xc1, 0x07,
0xa4, 0x21, 0xd2, 0x8c, 0xf1, 0x19, 0x05, 0x44, 0xca, 0xb1, 0x96, 0x31, 0xde, 0x97, 0x6c, 0xac,
0x8d, 0x2b, 0x08, 0x19, 0x0b, 0x83, 0xcd, 0xc6, 0x4a, 0x7f, 0xf9, 0xfa, 0xc5, 0x55, 0x99, 0xe4,
0xd5, 0xac, 0x28, 0x6f, 0x47, 0xc1, 0x6d, 0xb2, 0x2a, 0xb3, 0x87, 0x77, 0xbc, 0xcf, 0xf0, 0xc7,
0xfb, 0x03, 0xd9, 0x67, 0x3d, 0xd7, 0xf0, 0x6c, 0xf7, 0x88, 0x72, 0x14, 0xed, 0x3d, 0xde, 0x29,
0x8b, 0x3f, 0x2d, 0x0e, 0x8f, 0x37, 0xc3, 0x6b, 0xea, 0x83, 0x5a, 0xbf, 0x73, 0xf9, 0x58, 0x77,
0x1a, 0xa5, 0xc9, 0xf2, 0xbc, 0xfa, 0xeb, 0x2e, 0x29, 0xed, 0xe6, 0x80, 0x39, 0x8e, 0x0a, 0x26,
0x12, 0xbb, 0x27, 0x89, 0xd2, 0xb1, 0x32, 0xae, 0x0a, 0xe0, 0xaa, 0x1c, 0xe2, 0xfa, 0xdf, 0x7d,
0x3a, 0xdc, 0x98, 0xe5, 0x63, 0x99, 0x4c, 0x33, 0x9b, 0xaf, 0x48, 0x86, 0x9f, 0x9a, 0xb7, 0x15,
0x24, 0xa1, 0x2b, 0x5e, 0xe5, 0xd9, 0xaa, 0x1a, 0x05, 0x77, 0x95, 0x2d, 0xff, 0x40, 0xa3, 0xd8,
0xdf, 0xf2, 0xab, 0xca, 0x06, 0xe4, 0x81, 0xa3, 0xc1, 0x23, 0xaa, 0xc2, 0x80, 0xac, 0xb1, 0x08,
0x8c, 0x2a, 0xc0, 0xbb, 0x30, 0x0a, 0x14, 0xde, 0x45, 0x70, 0xd6, 0x58, 0x94, 0x86, 0xb2, 0xd0,
0x19, 0x1d, 0xbf, 0x56, 0xad, 0x8a, 0x25, 0x29, 0x66, 0xb3, 0xca, 0x22, 0x2a, 0xcc, 0x81, 0x55,
0x2c, 0x07, 0x35, 0x2e, 0xa3, 0xe0, 0x74, 0x36, 0x4b, 0xd3, 0x28, 0x0a, 0xce, 0x76, 0x34, 0xe5,
0x5b, 0x4d, 0xaf, 0xa7, 0x26, 0xc4, 0x4f, 0x35, 0x43, 0x38, 0xdb, 0x1c, 0xc3, 0x6e, 0x3b, 0xdc,
0x95, 0x8b, 0x77, 0xa7, 0x8f, 0x23, 0xeb, 0xed, 0xd0, 0xd6, 0x29, 0x89, 0xf2, 0xa2, 0xb0, 0x3f,
0x55, 0x55, 0xee, 0xa5, 0x6a, 0x48, 0x4d, 0xa3, 0x69, 0x48, 0x41, 0x37, 0x92, 0x0a, 0x4d, 0x25,
0x34, 0x92, 0x0e, 0x42, 0xca, 0xe4, 0x4e, 0x49, 0xa9, 0x34, 0x46, 0x6f, 0x89, 0x15, 0x45, 0x5a,
0x0b, 0xb1, 0x53, 0x57, 0x46, 0x43, 0x25, 0xc2, 0x6d, 0x71, 0x43, 0x14, 0x37, 0xda, 0x5b, 0x5c,
0xbe, 0x25, 0xae, 0x8c, 0x28, 0x03, 0x02, 0x21, 0x55, 0x1c, 0x27, 0x2b, 0x15, 0x02, 0xf5, 0xa5,
0xda, 0x71, 0x4c, 0x9d, 0xca, 0x78, 0xe6, 0x31, 0x17, 0x54, 0x03, 0x11, 0x1c, 0x51, 0x8a, 0xb9,
0xa1, 0x5a, 0xe0, 0x3c, 0xa4, 0xcc, 0x38, 0x33, 0x00, 0x4e, 0xee, 0xaf, 0x6f, 0x38, 0xb0, 0x31,
0xc0, 0xcb, 0x18, 0xf8, 0xfd, 0x48, 0x36, 0xe6, 0x90, 0xd4, 0x84, 0x2d, 0xe1, 0x21, 0x15, 0x2d,
0xe1, 0x38, 0x86, 0xd0, 0x8b, 0xf0, 0xd4, 0x98, 0x54, 0x71, 0x2f, 0xc2, 0xbf, 0x9d, 0x0c, 0x7b,
0x18, 0x01, 0x9e, 0x31, 0x82, 0x40, 0xb1, 0xd1, 0xe3, 0xa1, 0xd8, 0xd1, 0x51, 0xc5, 0x16, 0x7e,
0xe4, 0x8b, 0x0e, 0x7d, 0xd7, 0x93, 0x56, 0x6c, 0x2c, 0x02, 0x6f, 0xc4, 0x76, 0xfe, 0x46, 0xf9,
0x88, 0xfd, 0x0c, 0xf6, 0xdb, 0x62, 0x6b, 0x23, 0x12, 0x66, 0xf7, 0x16, 0x5b, 0xf4, 0x9e, 0xac,
0x4d, 0x5b, 0x1e, 0x5a, 0xca, 0xc9, 0x4b, 0x5b, 0x4f, 0x70, 0x95, 0x13, 0xa1, 0xeb, 0x1e, 0x00,
0xe1, 0x6a, 0x22, 0x94, 0xe3, 0x42, 0x46, 0xb8, 0x12, 0xd2, 0xb0, 0x5e, 0x03, 0x45, 0xe8, 0xd5,
0x61, 0xd3, 0x1f, 0x70, 0xf0, 0x03, 0x40, 0x7a, 0x01, 0x00, 0x8a, 0x72, 0x68, 0x08, 0x40, 0x97,
0xa7, 0x3a, 0xef, 0x27, 0x9a, 0xbb, 0xd0, 0x2c, 0x33, 0xda, 0x87, 0x00, 0x79, 0x2d, 0x39, 0xd7,
0xdf, 0x73, 0x7c, 0x12, 0xe4, 0xb6, 0xe3, 0x4b, 0xae, 0x19, 0xee, 0x33, 0xbc, 0xa6, 0x67, 0x3a,
0x33, 0xd6, 0xec, 0x4d, 0x8c, 0xec, 0x1d, 0xc7, 0x18, 0x2f, 0x1f, 0x1f, 0xd9, 0x1f, 0x18, 0x3f,
0x7a, 0xd4, 0x1b, 0x3d, 0x9d, 0x12, 0xbd, 0xa3, 0xd8, 0xe2, 0xe5, 0xc3, 0xc3, 0xd0, 0x5d, 0xfa,
0xc1, 0xa3, 0xdf, 0xe0, 0xe9, 0x94, 0xe8, 0x1d, 0xc5, 0x16, 0x2f, 0x1f, 0x1e, 0xff, 0x8d, 0x4b,
0xf8, 0x06, 0x4f, 0xa7, 0x44, 0xef, 0x28, 0xb6, 0xd8, 0x0b, 0x9e, 0xcd, 0x9e, 0x69, 0xc2, 0xcd,
0x44, 0x6a, 0xb7, 0xf9, 0xc2, 0x50, 0x5f, 0x60, 0xe4, 0x6f, 0x26, 0x60, 0x62, 0x43, 0xb8, 0x8e,
0xdd, 0x7f, 0x07, 0x46, 0xc4, 0x78, 0x21, 0x82, 0xfb, 0x6c, 0x10, 0x0d, 0x22, 0x03, 0xa0, 0x51,
0x17, 0x2b, 0x33, 0xaa, 0xa3, 0x16, 0x11, 0x89, 0xdb, 0x6e, 0xbf, 0x58, 0xd9, 0xea, 0xd4, 0x1e,
0x23, 0x92, 0x30, 0xbd, 0xa7, 0xc2, 0x3a, 0x55, 0x45, 0xad, 0xea, 0x4f, 0x94, 0x34, 0xf2, 0x8b,
0xcd, 0xa0, 0x0e, 0x12, 0x9c, 0xa4, 0x18, 0x86, 0xb5, 0x93, 0x4e, 0x33, 0x0a, 0x5d, 0xf6, 0x81,
0xd1, 0xc8, 0x4b, 0xd1, 0x64, 0x6a, 0x12, 0x1d, 0x7a, 0x29, 0x1a, 0x5a, 0x69, 0xf9, 0xfe, 0xe1,
0x42, 0xf4, 0x34, 0x5c, 0xf8, 0x16, 0xd1, 0x5a, 0xdb, 0x89, 0x66, 0x87, 0xce, 0x3b, 0xf8, 0xa5,
0x73, 0x04, 0x06, 0x5d, 0x2d, 0xa2, 0xdc, 0x85, 0xe9, 0x6d, 0xfc, 0x15, 0x52, 0xe7, 0x75, 0x6a,
0x41, 0x85, 0xcb, 0xf7, 0x78, 0x08, 0x6a, 0x6d, 0x6a, 0x13, 0x3f, 0x44, 0x1d, 0xa0, 0x5a, 0xef,
0x9f, 0x71, 0x60, 0x4f, 0x18, 0xed, 0x66, 0xfe, 0x04, 0x31, 0x6d, 0x5d, 0xc1, 0x41, 0x1c, 0x51,
0x17, 0x55, 0x6e, 0xa6, 0x8f, 0xc0, 0xa5, 0x8f, 0x00, 0xbd, 0x5d, 0xe4, 0x12, 0x74, 0xae, 0xaa,
0x27, 0xbe, 0x89, 0x23, 0xe8, 0x3f, 0xbb, 0x6c, 0xb6, 0xce, 0xee, 0x80, 0x1f, 0xdc, 0x1c, 0xa1,
0x93, 0x30, 0x59, 0xec, 0x26, 0xe6, 0xdf, 0x53, 0x55, 0xe9, 0x43, 0x6d, 0xf7, 0x74, 0x5d, 0x5f,
0xca, 0x26, 0xfd, 0xdb, 0x3d, 0xf3, 0xf9, 0x49, 0x1f, 0x18, 0x15, 0xa1, 0x8e, 0xea, 0x8e, 0xb4,
0x45, 0x2e, 0xf0, 0xaa, 0xfa, 0x02, 0x17, 0x16, 0x2f, 0xaf, 0xe7, 0x8e, 0xef, 0x2c, 0x8c, 0xd2,
0x18, 0x78, 0xd2, 0x9e, 0x69, 0xa6, 0xbd, 0x10, 0x14, 0x29, 0x28, 0x50, 0x1d, 0x82, 0x9b, 0xaa,
0x78, 0xac, 0x49, 0x9b, 0x3c, 0xf2, 0xde, 0xf3, 0x8b, 0x13, 0x47, 0xcb, 0x99, 0x4b, 0x1c, 0xbb,
0xcb, 0x11, 0xa0, 0xff, 0x64, 0x75, 0x36, 0xa6, 0x29, 0xe8, 0x4b, 0x3c, 0xe3, 0x92, 0x20, 0x39,
0x69, 0x1a, 0x28, 0x89, 0xfc, 0xe2, 0xf9, 0x12, 0xc0, 0xdd, 0xc4, 0x2a, 0xe8, 0xb6, 0x01, 0x38,
0xd0, 0x2f, 0x41, 0xb7, 0x8f, 0x37, 0x0d, 0xdc, 0x0b, 0xdd, 0x6b, 0xfd, 0x68, 0xd0, 0xd4, 0xa0,
0xfe, 0xf5, 0xd9, 0x93, 0x0a, 0x38, 0x3c, 0x15, 0xc0, 0x04, 0x6f, 0xa9, 0xa8, 0x8b, 0x3c, 0xea,
0x4b, 0xed, 0x47, 0x84, 0x98, 0x99, 0x59, 0xe2, 0x99, 0x33, 0x9e, 0xa6, 0x36, 0xfa, 0x11, 0x0b,
0x6f, 0x1a, 0x75, 0x3b, 0xa5, 0xf6, 0xe2, 0x8d, 0xe8, 0xe9, 0x4b, 0xfe, 0xf3, 0x61, 0xa0, 0xd1,
0x55, 0x67, 0x7d, 0xd5, 0xe7, 0x9c, 0x6a, 0xbc, 0xc8, 0xda, 0x31, 0x78, 0x22, 0x29, 0x5e, 0xbf,
0xa3, 0xb2, 0x09, 0x53, 0xc7, 0x77, 0x54, 0xe2, 0xd5, 0x38, 0x2a, 0xdc, 0x8c, 0x20, 0x1b, 0x3f,
0xc0, 0x84, 0xfc, 0x9f, 0xba, 0x29, 0xd9, 0x7b, 0x55, 0x26, 0x7c, 0x9d, 0x4e, 0x0a, 0xa0, 0x2f,
0xcc, 0x86, 0xbb, 0x1d, 0x9e, 0xcd, 0x2f, 0x4e, 0x86, 0x67, 0xd5, 0x3d, 0x5e, 0xfe, 0x01, 0xe0,
0x04, 0x88, 0xf2
};
// #pragma mark - root folder attribute list
//0x6949434F 7 "BEOS:D:STD_ICON" 49 44 58 5A 05 53 00
uint8 root_folder_attrs_1[] = { 0x49, 0x44, 0x58, 0x5A, 0x05, 0x53, 0x00 }; // needed for SVG icons in Zeta...
uint64 root_folder_attrs_2 = 0xdeadbeef50385038LL; // volume id, just in case
struct attr_entry root_folder_attrs[] = {
{ "BEOS:TYPE", /*B_MIME_STRING_TYPE*/'MIMS', SZSTR("application/x-vnd.Be-directory") },
{ "BEOS:M:STD_ICON", 'MICN', 16*16, (char *)google_icon_M },
{ "BEOS:L:STD_ICON", 'ICON', 32*32, (char *)google_icon_L },
{ "BEOS:V:STD_ICON", 'zICO', sizeof(google_icon_SVG), (char *)google_icon_SVG },
{ "BEOS:D:STD_ICON", 0x6949434F, sizeof(root_folder_attrs_1), &root_folder_attrs_1 },
{ "BEOS:ICON", 'VICN', sizeof(google_icon_HVIF), (char *)google_icon_HVIF },
//{ "BEOS:EMBLEMS", 'CSTR', SZSTR("palm") },
{ "be:volume_id", B_UINT64_TYPE, sizeof(root_folder_attrs_2), &root_folder_attrs_2 },
{ NULL, 0, 0, NULL } /* end of list */
};
static uint8 folders_attrs_1[] = {
0x52, 0x56, 0xf2, 0x4f, 0x15, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x54, 0x69, 0x74, 0x6c,
0x65, 0x00, 0x00, 0x00, 0x20, 0x42, 0x00, 0x00, 0x02, 0x43, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00,
0x00, 0x00, 0x4d, 0x45, 0x54, 0x41, 0x3a, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x00, 0x52, 0x7d, 0xfb,
0x77, 0x52, 0x54, 0x53, 0x43, 0x00, 0x01, 0x52, 0x56, 0xf2, 0x4f, 0x15, 0x00, 0x00, 0x00, 0x03,
0x00, 0x00, 0x00, 0x55, 0x52, 0x4c, 0x00, 0x00, 0x00, 0x39, 0x43, 0x00, 0x00, 0x2a, 0x43, 0x00,
0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4d, 0x45, 0x54, 0x41, 0x3a, 0x75, 0x72, 0x6c, 0x00,
0x52, 0x54, 0x5b, 0xe3, 0x52, 0x54, 0x53, 0x43, 0x00, 0x01, 0x52, 0x56, 0xf2, 0x4f, 0x15, 0x00,
0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x00, 0x00,
0x00, 0xb9, 0x43, 0x00, 0x00, 0x02, 0x43, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x4d,
0x45, 0x54, 0x41, 0x3a, 0x6b, 0x65, 0x79, 0x77, 0x00, 0x52, 0xdc, 0xf3, 0xdb, 0x52, 0x54, 0x53,
0x43, 0x00, 0x01, 0x52, 0x56, 0xf2, 0x4f, 0x15, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4d,
0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x00, 0x00, 0xc0, 0x00, 0x44, 0x00, 0x00, 0x16, 0x43,
0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x2f, 0x6d, 0x6f,
0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x00, 0x45, 0x6d, 0x4b, 0x5d, 0x45, 0x4d, 0x49, 0x54, 0x01,
0x00, 0x52, 0x56, 0xf2, 0x4f, 0x15, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x47, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x00, 0x00, 0x00, 0x2a, 0x44, 0x00, 0x00,
0xa0, 0x41, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x47, 0x4f, 0x4f, 0x47, 0x4c, 0x45,
0x3a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x00, 0x47, 0xde, 0xef, 0xfc, 0x47, 0x4e, 0x4f, 0x4c, 0x00,
0x01 };
static uint8 folders_attrs_2[] = {
0x52, 0xf5, 0x5e, 0x6f, 0x0a, 0x00, 0x00, 0x00, 0x74, 0x73, 0x6c, 0x54, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x47, 0xde, 0xef, 0xfc, 0x47, 0x4e, 0x4f, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01 };
struct attr_entry folders_attrs[] = {
{ "BEOS:TYPE", /*B_MIME_STRING_TYPE*/'MIMS', SZSTR("application/x-vnd.Be-directory") },
{ "_trk/columns_le", 'RAWT', SZTAB(folders_attrs_1) },
{ "_trk/viewstate_le", 'RAWT', SZTAB(folders_attrs_2) },
{ "", 'RAWT', SZTAB(folders_attrs_2) },
{ NULL, 0, 0, NULL } /* end of list */
};
struct attr_entry bookmark_attrs[] = {
{ "BEOS:TYPE", /*B_MIME_STRING_TYPE*/'MIMS', SZSTR("application/x-vnd.Be-bookmark") },
{ NULL, 0, 0, NULL } /* end of list */
};
/* for debugging */
//static int32 fake_bm_attr_1 = 1;
struct attr_entry fake_bookmark_attrs[] = {
{ "BEOS:TYPE", /*B_MIME_STRING_TYPE*/'MIMS', SZSTR("application/x-vnd.Be-bookmark") },
{ "META:title", 'CSTR', SZSTR("Plop!") },
{ "META:url", 'CSTR', SZSTR("http://127.0.0.1/") },
{ "META:keyw", 'CSTR', SZSTR("plop") },
//{ "GOOGLE:order", 'LONG', sizeof(int32), &fake_bm_attr_1 },
{ NULL, 0, 0, NULL } /* end of list */
};
static uint8 template_1_attrs_1 = 1;
static int32 template_1_attrs_2 = 1;
static uint8 template_1_attrs_3[] = {
0x31, 0x42, 0x4F, 0x46, 0x01, 0x00, 0x00, 0x98, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x0F, 0x47, 0x4E, 0x4F, 0x4C, 0x04, 0x0C, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6F, 0x6E,
0x44, 0x61, 0x74, 0x65, 0x51, 0xEA, 0xC7, 0x41, 0x0F, 0x47, 0x4E, 0x4C, 0x4C, 0x08, 0x08, 0x63,
0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B,
0x52, 0x54, 0x53, 0x43, 0x08, 0x0A, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4E, 0x61, 0x6D, 0x65,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x41, 0x0B, 0x52, 0x54, 0x53, 0x43, 0x10, 0x0A, 0x76,
0x6F, 0x6C, 0x75, 0x6D, 0x65, 0x4E, 0x61, 0x6D, 0x65, 0x07, 0x00, 0x00, 0x00, 0x47, 0x6F, 0x6F,
0x67, 0x6C, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x52, 0x54, 0x53, 0x43, 0x10, 0x07,
0x66, 0x73, 0x68, 0x4E, 0x61, 0x6D, 0x65, 0x09, 0x00, 0x00, 0x00, 0x67, 0x6F, 0x6F, 0x67, 0x6C,
0x65, 0x66, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00 };
static int32 template_1_attrs_4 = 0x4662796E;
static uint8 template_1_attrs_5[] = {
0x00, 0x00, 0x06, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00 };
static int32 template_1_attrs_6 = 0x00000027;
static int32 template_1_attrs_7 = 0x00000000;
static uint8 template_1_attrs_8[] = {
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x82, 0x43, 0x00, 0x00, 0xA0, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xE0, 0x9F, 0x44, 0x00, 0xC0, 0x7F, 0x44, 0xFF, 0xFF, 0xFF, 0xFF };
static uint8 template_1_attrs_9[] = {
0x00, 0x00, 0x00, 0x00, 0x58, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x44,
0x00, 0x00, 0x0c, 0x44 };
/*static uint8 template_1_attrs_10[] = {
0x52, 0x56, 0xf2, 0x4f, 0x15, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x54, 0x69, 0x74, 0x6c,
0x65, 0x00, 0x00, 0x00, 0x20, 0x42, 0x00, 0x00, 0x50, 0x43, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00,
0x00, 0x00, 0x4d, 0x45, 0x54, 0x41, 0x3a, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x00, 0x52, 0x7d, 0xfb,
0x77, 0x52, 0x54, 0x53, 0x43, 0x00, 0x01, 0x52, 0x56, 0xf2, 0x4f, 0x15, 0x00, 0x00, 0x00, 0x03,
0x00, 0x00, 0x00, 0x55, 0x52, 0x4c, 0x00, 0x00, 0x80, 0x83, 0x43, 0x00, 0x80, 0x85, 0x43, 0x00,
0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4d, 0x45, 0x54, 0x41, 0x3a, 0x75, 0x72, 0x6c, 0x00,
0x52, 0x54, 0x5b, 0xe3, 0x52, 0x54, 0x53, 0x43, 0x00, 0x01, 0x52, 0x56, 0xf2, 0x4f, 0x15, 0x00,
0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x00, 0x00,
0x40, 0x08, 0x44, 0x00, 0x00, 0x02, 0x43, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x4d,
0x45, 0x54, 0x41, 0x3a, 0x6b, 0x65, 0x79, 0x77, 0x00, 0x52, 0xdc, 0xf3, 0xdb, 0x52, 0x54, 0x53,
0x43, 0x00, 0x01, 0x52, 0x56, 0xf2, 0x4f, 0x15, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4d,
0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x00, 0x00, 0x80, 0x2c, 0x44, 0x00, 0x00, 0x16, 0x43,
0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x2f, 0x6d, 0x6f,
0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x00, 0x45, 0x6d, 0x4b, 0x5d, 0x45, 0x4d, 0x49, 0x54, 0x01,
0x00, 0x52, 0x56, 0xf2, 0x4f, 0x15, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x47, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x00, 0x00, 0xc0, 0x55, 0x44, 0x00, 0x00,
0x70, 0x41, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x47, 0x4f, 0x4f, 0x47, 0x4c, 0x45,
0x3a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x00, 0x47, 0xde, 0xef, 0xfc, 0x47, 0x4e, 0x4f, 0x4c, 0x00,
0x00 };*/
static uint8 template_1_attrs_11[] = {
0x52, 0xf5, 0x5e, 0x6f, 0x0a, 0x00, 0x00, 0x00, 0x74, 0x73, 0x6c, 0x54, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x47, 0xde, 0xef, 0xfc, 0x47, 0x4e, 0x4f, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01 };
struct attr_entry template_1_attrs[] = {
{ "BEOS:TYPE", /*B_MIME_STRING_TYPE*/'MIMS', SZSTR("application/x-vnd.Be-queryTemplate") },
{ "_trk/qrystr", 'CSTR', SZSTR("((name==\"*[aA][nN][yY] [qQ][uU][eE][sS][tT][iI][oO][nN] [yY][oO][uU]\\'[dD] [lL][iI][kK][eE] [tT][oO] [aA][sS][kK] [gG][oO][oO][gG][lL][eE] ?*\")&&(BEOS:TYPE==\"application/x-vnd.Be-bookmark\"))") },
{ "_trk/queryDynamicDate", 'BOOL', 1, &template_1_attrs_1 },
{ "_trk/recentQuery", 'LONG', sizeof(int32), &template_1_attrs_2 },
{ "_trk/qryvol1", 'MSGG', SZTAB(template_1_attrs_3) },
{ "_trk/qryinitmime", 'CSTR', SZSTR("Bookmark") },
{ "_trk/qryinitmode", 'LONG', sizeof(int32), &template_1_attrs_4 },
{ "_trk/qrymoreoptions_le", 'RAWT', SZTAB(template_1_attrs_5) },
{ "_trk/qryinitstr", 'CSTR', SZSTR("Any question you'd like to ask google ?") },
{ "_trk/focusedView", 'CSTR', SZSTR("TextControl") },
{ "_trk/focusedSelEnd", 'LONG', sizeof(int32), &template_1_attrs_6 },
{ "_trk/focusedSelStart", 'LONG', sizeof(int32), &template_1_attrs_7 },
{ "_trk/xtpinfo_le", 'RAWT', SZTAB(template_1_attrs_8) },
{ "_trk/pinfo_le", 'RAWT', SZTAB(template_1_attrs_9) },
{ "_trk/columns_le", 'RAWT', SZTAB(folders_attrs_1)/*SZTAB(template_1_attrs_10)*/ },
{ "_trk/viewstate_le", 'RAWT', SZTAB(template_1_attrs_11) },
{ NULL, 0, 0, NULL } /* end of list */
};
static int32 text_attrs_1 = 0x0000FFFF;
static int32 text_attrs_2 = 0x00000000;
static uint8 text_attrs_3 = 1;
static uint8 text_attrs_4[] = {
0x41, 0x6c, 0x69, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
0x53, 0x77, 0x69, 0x73, 0x37, 0x32, 0x31, 0x20, 0x42, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x52, 0x6f, 0x6d, 0x61, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x41, 0x60, 0x00, 0x00, 0x42, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x28, 0x53, 0x77, 0x69, 0x73, 0x37, 0x32, 0x31, 0x20, 0x42, 0x54, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x52, 0x6f, 0x6d, 0x61, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x41, 0x60, 0x00, 0x00, 0x42, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x53, 0x77, 0x69, 0x73, 0x37, 0x32, 0x31, 0x20,
0x42, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6f, 0x6d, 0x61, 0x6e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x60, 0x00, 0x00, 0x42, 0xb4, 0x00, 0x00,
0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x53, 0x77, 0x69, 0x73,
0x37, 0x32, 0x31, 0x20, 0x42, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6f, 0x6d, 0x61,
0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x60, 0x00, 0x00,
0x42, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47,
0x53, 0x77, 0x69, 0x73, 0x37, 0x32, 0x31, 0x20, 0x42, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x52, 0x6f, 0x6d, 0x61, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x41, 0x20, 0x00, 0x00, 0x42, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00 };
struct attr_entry text_attrs[] = {
{ "BEOS:TYPE", /*B_MIME_STRING_TYPE*/'MIMS', SZSTR("text/plain") },
{ "be:encoding", 'LONG', sizeof(int32), &text_attrs_1 },
{ "alignment", 'LONG', sizeof(int32), &text_attrs_2 },
{ "wrap", 'BOOL', sizeof(uint8), &text_attrs_3 },
{ "styles", 'RAWT', SZTAB(text_attrs_4) },
{ NULL, 0, 0, NULL } /* end of list */
};
char *readmestr = \
"Welcome to the Google™ FileSystem for BeOS™, Zeta™ and Haiku®.\n"
"Copyright© 2004-2008, François Revol.\n"
"Google is a trademark of Google, Inc.\n"
"BeOS is a trademark of ACCESS.\n"
"Zeta is a trademark of yellowTAB GmbH.\n"
"Haiku is a trademark of Haiku, Inc.\n"
"\n"
"Use \"Search Google\" query template in this folder to ask google anything.\n"
"\n";
struct attr_entry mailto_me_bookmark_attrs[] = {
{ "BEOS:TYPE", /*B_MIME_STRING_TYPE*/'MIMS', SZSTR("application/x-person") },
{ "META:email", 'CSTR', SZSTR("[email protected]") },
{ "META:name", 'CSTR', SZSTR("François Revol") },
{ "META:country", 'CSTR', SZSTR("France") },
{ "META:nickname", 'CSTR', SZSTR("mmu_man") },
//{ "META:company", 'CSTR', SZSTR("yellowTAB GmbH") },
{ "META:url", 'CSTR', SZSTR("http://revolf.free.fr/") },
{ "META:group", 'CSTR', SZSTR("") },
{ "IM:connections", 'CSTR', SZSTR("icq:77792625;gtalk:[email protected];yahoo:mmu_man;msn:[email protected]") },
#if 0
{ "BEOS:TYPE", /*B_MIME_STRING_TYPE*/'MIMS', SZSTR("application/x-vnd.Be-bookmark") },
{ "META:title", 'CSTR', SZSTR("Report googlefs bugs") },
{ "META:url", 'CSTR', SZSTR("mailto:[email protected]"/*"&subject=googlefs bug report""&body=Hi, I found a bug in GoogleFS."*/) },
{ "META:keyw", 'CSTR', SZSTR("googlefs") },
//{ "GOOGLE:order", 'LONG', sizeof(int32), &fake_bm_attr_1 },
#endif
{ NULL, 0, 0, NULL } /* end of list */
};
#if 0
File: Search Google a
Type Size Name Value
---------- ---------- ---------------------------------- -----------------------------------------------------------------
'MIMS' 35 "BEOS:TYPE" "application/x-vnd.Be-queryTemplate"
STRING 191 "_trk/qrystr" "((name==\"*[aA][nN][yY] [qQ][uU][eE][sS][tT][iI][oO][nN] [yY][o"
"O][uU]\\'[dD] [lL][iI][kK][eE] [tT][oO] [aA][sS][kK] [gG][oO][o"
"O][gG][lL][eE] ?*\")&&(BEOS:TYPE==\"application/x-vnd.Be-bookma"
"rk\"))"
BOOL 1 "_trk/queryDynamicDate" TRUE
INT32 4 "_trk/recentQuery" 1 0x00000001
01 0F 47 4E 4F 4C 04 0C-63 72 65 61 74 69 6F 6E ..GNOL..creation
44 61 74 65 51 EA C7 41-0F 47 4E 4C 4C 08 08 63 DateQ..A.GNLL..c
61 70 61 63 69 74 79 00-00 00 00 00 00 00 00 0B apacity.........
52 54 53 43 08 0A 64 65-76 69 63 65 4E 61 6D 65 RTSC..deviceName
01 00 00 00 00 00 70 41-0B 52 54 53 43 10 0A 76 ......pA.RTSC..v
6F 6C 75 6D 65 4E 61 6D-65 07 00 00 00 47 6F 6F olumeName....Goo
67 6C 65 00 00 00 00 00-00 0B 52 54 53 43 10 07 gle.......RTSC..
66 73 68 4E 61 6D 65 09-00 00 00 67 6F 6F 67 6C fshName....googl
65 66 73 00 00 00 00 00- efs.....
STRING 9 "_trk/qryinitmime" "Bookmark"
INT32 4 "_trk/qryinitmode" 1180858734 0x4662796E
RAW 36 "_trk/qrymoreoptions_le" 00 00 06 EC 00 00 00 00-01 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
00 00 00 00 - ....
STRING 40 "_trk/qryinitstr" "Any question you'd like to ask google ?"
STRING 12 "_trk/focusedView" "TextControl"
INT32 4 "_trk/focusedSelEnd" 39 0x00000027
INT32 4 "_trk/focusedSelStart" 0 0x00000000
RAW 60 "_trk/xtpinfo_le" FF FF FF FF 00 00 00 00-00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00-00 00 00 00 01 00 00 00 ................
00 00 82 43 00 00 A0 42-00 00 00 00 00 00 00 00 ...C...B........
00 E0 9F 44 00 C0 7F 44-FF FF FF FF ...D...D....
#endif
#if 0
, 0x41, 0x6E, 0x79, 0x20, 0x71, 0x75, 0x65, 0x73-74, 0x69, 0x6F, 0x6E, 0x20, 0x79, 0x6F, 0x75
, 0x27, 0x64, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20-74, 0x6F, 0x20, 0x61, 0x73, 0x6B, 0x20, 0x67
, 0x6F, 0x6F, 0x67, 0x6C, 0x65, 0x20, 0x3F, 0x00-, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x
, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6F, 0x6E, 0x74-72, 0x6F, 0x6C, 0x00, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x
, 0x27, 0x00, 0x00, 0x00, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x-, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x
, 0x00, 0x00, 0x00, 0x00, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x-, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x
#endif
@@ -1,2 +0,0 @@
#!/bin/sh
query -v /google/ '((name=="*'"$*"'*")&&(BEOS:TYPE=="application/x-vnd.Be-bookmark"))' | xargs catattr META:url
@@ -1,2 +0,0 @@
#!/bin/sh
query -v /google/ '((name=="*'"$*"'*")&&(BEOS:TYPE=="application/x-vnd.Be-bookmark"))' | xargs catattr META:url | head -1
@@ -1,55 +0,0 @@
/*
* Copyright 2004-2008, François Revol, <[email protected]>.
* Distributed under the terms of the MIT License.
*/
#ifndef _GOOGLE_REQUEST_H
#define _GOOGLE_REQUEST_H
#ifdef __cplusplus
#include <UrlRequest.h>
using namespace BPrivate::Network;
extern "C" {
#else
struct BUrlRequest;
typedef struct BUrlRequest BUrlRequest;
#endif
struct google_request {
struct google_request *next;
struct fs_volume *volume;
struct fs_node *query_node; /* root folder for that query */
char *query_string;
BUrlRequest *cnx;
struct google_result *results;
long nextid;
};
/* those are quite arbitrary values */
#define GR_MAX_NAME 70
#define GR_MAX_PROTO 16
#define GR_MAX_URL 1024
#define GR_MAX_SNIPSET 256
struct google_result {
struct google_result *next;
long id;
char name[GR_MAX_NAME];
char proto[GR_MAX_PROTO];
char url[GR_MAX_URL];
char snipset[GR_MAX_SNIPSET];
char cache_url[GR_MAX_URL];
char similar_url[GR_MAX_URL];
};
extern status_t google_request_process(struct google_request *req);
extern status_t google_request_process_async(struct google_request *req);
extern status_t google_request_close(struct google_request *req);
extern status_t google_request_open(const char *query_string, struct fs_volume *volume, struct fs_node *query_node, struct google_request **req);
extern status_t google_request_free(struct google_request *req);
extern int google_parse_results(const char *html, size_t htmlsize, long *nextid, struct google_result **results);
#ifdef __cplusplus
}
#endif
#endif /* _GOOGLE_REQUEST_H */
@@ -1,10 +0,0 @@
======================
pointers to docs
parsing google results from python (+ diffs on User-Agent ?):
http://forums.devshed.com/archive/t-154742
perl hack: plain old XML instead of SOAP:
http://hacks.oreilly.com/pub/h/173
http://www.webmasterworld.com/forum10003/2856.htm
@@ -1,4 +1,4 @@
SubDir HAIKU_TOP src add-ons kernel file_systems googlefs ;
SubDir HAIKU_TOP src add-ons kernel file_systems websearchfs ;
local userlandFSTop = [ FDirName $(HAIKU_TOP) src add-ons kernel file_systems
userlandfs ] ;
@@ -8,15 +8,14 @@ UsePrivateHeaders shared ;
UsePrivateHeaders netservices ;
#SubDirCcFlags -DTRACK_FILENAME ;
#SubDirCcFlags -DDEBUG_GOOGLEFS=1 ;
SubDirCcFlags -D_IMPEXP_KERNEL= ;
Addon googlefs :
Addon websearchfs :
attrs.c
google_request.cpp
googlefs.c
duckduckgo_request.cpp
websearchfs.c
lists2.c
parse_google_html.c
parse_duckduckgo_html.c
query.c
settings.c
string_utils.c
@@ -0,0 +1,29 @@
Welcome to the Web Search FileSystem for BeOS™, Zeta™ and Haiku®.
Copyright© 2004, 2005, François Revol.
DuckDuckGo is a trademark of DuckDuckGo.
BeOS is a trademark of PalmSource.
Zeta is a trademark of yellowTAB GmbH.
Haiku is a trademark of Haiku, Inc.
REQUIRES USERLANDFS
mkdir /Web; mount -t userlandfs -p websearchfs /Web
Use "Search the Web" query template in this folder to search anything on the web.
The search results are kindly provided by DuckDuckGo (https://duckduckgo.com).
or from the commande line:
query -v /Web '((name=="*QUESTION*")&&(BEOS:TYPE=="application/x-vnd.Be-bookmark"))'
where QUESTION is what you want to search. (websearchfs currently filters queries to only answer those).
You will want to pipe that to catattr to get the URLs:
query -v /Web '((name=="*site:haiku-os.org userlandfs*")&&(BEOS:TYPE=="application/x-vnd.Be-bookmark"))' | xargs catattr META:url
(note that won't work with sync_unlink true in the settings)
Included are 2 scripts, search and imlucky that runs such a query using the arguments given on the command line.
Enjoy.
@@ -0,0 +1,555 @@
/*
* Copyright 2004-2008, François Revol, <[email protected]>.
* Distributed under the terms of the MIT License.
*/
#include <SupportDefs.h>
#include <TypeConstants.h>
#include "websearchfs.h"
#define SZSTR(s) sizeof(s), s
#define SZTAB(s) sizeof(s), s
// #pragma mark - root folder icons
// icons by ahwayakchih
const char websearch_icon_HVIF[] = {
0x6e, 0x63, 0x69, 0x66, 0x09, 0x05, 0x00, 0x02, 0x01, 0x02, 0x02, 0x3b,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x40, 0x00, 0x48,
0x60, 0x00, 0x4a, 0xe0, 0x00, 0x00, 0xdc, 0xf3, 0xff, 0x5e, 0xff, 0x5f,
0x94, 0xaa, 0x78, 0x02, 0x00, 0x16, 0x02, 0x34, 0x4f, 0xd5, 0x34, 0x79,
0x20, 0xba, 0x5f, 0xcc, 0x3a, 0x38, 0x28, 0x47, 0xb3, 0xd1, 0x4b, 0x15,
0x01, 0x00, 0xd4, 0xff, 0x47, 0x05, 0xff, 0x05, 0x00, 0x04, 0x00, 0x57,
0x02, 0x01, 0x06, 0x03, 0x3d, 0x8a, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xbd, 0x8a, 0xfe, 0x48, 0xf1, 0x07, 0x48, 0xa0, 0x78, 0x31, 0x32,
0xe4, 0xff, 0xc8, 0x00, 0x66, 0xff, 0xff, 0x00, 0x34, 0xcc, 0x02, 0x01,
0x06, 0x03, 0x3d, 0x0a, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbd,
0x0a, 0xfe, 0x48, 0xf1, 0x07, 0x48, 0xa0, 0x78, 0x54, 0x09, 0xb4, 0xb6,
0xd8, 0x03, 0x37, 0x84, 0xff, 0x05, 0x1d, 0x61, 0x02, 0x01, 0x06, 0x04,
0x3d, 0x95, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x95, 0x0b,
0x49, 0x4f, 0xbc, 0x47, 0x9b, 0xec, 0x00, 0xd5, 0xff, 0xd5, 0x4c, 0x6e,
0xff, 0x6e, 0x90, 0x1e, 0xbc, 0x1e, 0xff, 0x04, 0xb2, 0x04, 0x10, 0x0a,
0x0a, 0x23, 0x2f, 0x2d, 0x49, 0x4a, 0x5b, 0x5c, 0x2c, 0x50, 0x2a, 0x4c,
0x2c, 0x3a, 0x28, 0x38, 0x2d, 0x30, 0x2b, 0xb9, 0x57, 0xba, 0xa7, 0x02,
0x04, 0x32, 0x46, 0xbb, 0xee, 0x46, 0xb8, 0x69, 0x46, 0x2a, 0x4e, 0x2a,
0xc3, 0x91, 0x2a, 0xc7, 0x16, 0x32, 0x56, 0xb8, 0x69, 0x56, 0xbb, 0xee,
0x56, 0x3a, 0x4e, 0x3a, 0xc7, 0x16, 0x3a, 0xc3, 0x91, 0x06, 0x06, 0xba,
0x06, 0x2b, 0x54, 0x24, 0x5a, 0xb4, 0xbe, 0xca, 0xc1, 0xb4, 0x8b, 0xca,
0x8e, 0xb4, 0xf1, 0xca, 0xf4, 0x26, 0x5c, 0x2c, 0x55, 0x54, 0x02, 0x04,
0x3c, 0x26, 0xc2, 0xff, 0x26, 0xb9, 0x50, 0x26, 0x26, 0x3c, 0x26, 0xb9,
0x50, 0x26, 0xc2, 0xff, 0x3c, 0x52, 0xb9, 0x50, 0x52, 0xc2, 0xff, 0x52,
0x52, 0x3c, 0x52, 0xc2, 0xff, 0x52, 0xb9, 0x50, 0x02, 0x6e, 0xc5, 0xdc,
0xb8, 0xb6, 0xc7, 0x13, 0xba, 0xa0, 0xc4, 0xca, 0xb7, 0x06, 0xc1, 0x10,
0xb5, 0x79, 0xc3, 0x07, 0xb5, 0xd5, 0xc0, 0xa2, 0xb5, 0x65, 0xbf, 0xc2,
0xb5, 0x5b, 0xc0, 0x32, 0xb5, 0x5b, 0xbd, 0xbc, 0xb5, 0x5b, 0xba, 0x69,
0xb7, 0xba, 0xbb, 0xc5, 0xb6, 0x3a, 0xb8, 0xf9, 0xb9, 0x4f, 0xb8, 0x9d,
0xbd, 0x9c, 0xb8, 0x4f, 0xbb, 0x7e, 0xb8, 0xc7, 0xbe, 0x9a, 0xb9, 0x24,
0xbf, 0x77, 0xb8, 0xe0, 0xbe, 0xe7, 0xb9, 0xde, 0xc1, 0x1f, 0xbc, 0xe0,
0xc3, 0x32, 0xbb, 0x38, 0xc2, 0x79, 0xbe, 0xc5, 0xc4, 0x05, 0xc2, 0xd8,
0xc3, 0x1a, 0xc0, 0xfb, 0xc3, 0xfc, 0xc2, 0xc6, 0xc2, 0xc1, 0xc2, 0x2f,
0xc2, 0xb7, 0xc2, 0x7a, 0xc2, 0xbe, 0xc2, 0x2f, 0xc2, 0xb7, 0xc2, 0x27,
0xc2, 0xb7, 0xc2, 0x27, 0xc2, 0xb7, 0xc2, 0x27, 0xc2, 0xb7, 0xc2, 0x41,
0xc2, 0xbd, 0xc2, 0x41, 0xc2, 0xbd, 0xc2, 0x06, 0xc2, 0xb0, 0xc1, 0x99,
0xc2, 0xdb, 0xc1, 0xd0, 0xc2, 0xcb, 0xc1, 0x59, 0xc2, 0xee, 0xc0, 0xd4,
0xc2, 0xdd, 0xc1, 0x15, 0xc2, 0xe5, 0xc0, 0x51, 0xc2, 0xce, 0xbf, 0x43,
0xc3, 0x13, 0xbf, 0xb0, 0xc2, 0xb4, 0xbf, 0x3d, 0xc3, 0x13, 0xbf, 0x36,
0xc3, 0x13, 0xbf, 0x36, 0xc3, 0x13, 0xbf, 0x36, 0xc3, 0x13, 0xbf, 0x20,
0xc3, 0x13, 0xbf, 0x20, 0xc3, 0x13, 0xbf, 0x20, 0xc3, 0x13, 0xbd, 0xed,
0xc3, 0x13, 0xbe, 0x23, 0xc3, 0x13, 0xbd, 0xb9, 0xc2, 0xed, 0xbd, 0x57,
0xc2, 0xdf, 0xbd, 0x87, 0xc2, 0xe3, 0xbd, 0x54, 0xc2, 0xdc, 0xbd, 0x3e,
0xc2, 0xc3, 0xbd, 0x3e, 0xc2, 0xc3, 0xbd, 0x31, 0xc2, 0xb4, 0xbd, 0x13,
0xc2, 0xa5, 0xbd, 0x26, 0xc2, 0xab, 0xbd, 0x13, 0xc2, 0xa5, 0xbc, 0xa4,
0xc2, 0x7e, 0xbc, 0xa4, 0xc2, 0x7e, 0xbc, 0xa4, 0xc2, 0x7e, 0xbc, 0x31,
0xc2, 0x54, 0xbc, 0x31, 0xc2, 0x54, 0xbc, 0x27, 0xc2, 0x51, 0xbc, 0x12,
0xc2, 0x4f, 0xbc, 0x1d, 0xc2, 0x50, 0xbc, 0x10, 0xc2, 0x4b, 0xbc, 0x0f,
0xc2, 0x42, 0xbc, 0x11, 0xc2, 0x46, 0xbc, 0x0f, 0xc2, 0x42, 0xbb, 0xf5,
0xc2, 0x19, 0xbb, 0xf5, 0xc2, 0x19, 0xbb, 0xd3, 0xc1, 0xde, 0xbb, 0x68,
0xc1, 0x95, 0xbb, 0xae, 0xc1, 0xa4, 0xbb, 0x71, 0xc1, 0x6e, 0xbb, 0x58,
0xc1, 0x29, 0xbb, 0x63, 0xc1, 0x4e, 0xbb, 0x4b, 0xc1, 0x01, 0xbb, 0x4b,
0xc0, 0xad, 0xbb, 0x48, 0xc0, 0xd7, 0xbb, 0x4b, 0xc0, 0xad, 0xbb, 0x4e,
0xc0, 0x87, 0xbb, 0x4e, 0xc0, 0x87, 0xbb, 0x52, 0xc0, 0x54, 0xbb, 0x4d,
0xbf, 0xee, 0xbb, 0x55, 0xc0, 0x21, 0xbb, 0x9e, 0xbf, 0x93, 0xbb, 0xa9,
0xbe, 0xbf, 0xbb, 0xb0, 0xbf, 0x36, 0xbb, 0xa9, 0xbe, 0xbf, 0xbb, 0xa7,
0xbe, 0x93, 0xbb, 0xa7, 0xbe, 0x93, 0xbb, 0xa7, 0xbe, 0x53, 0xbb, 0xbc,
0xbe, 0x2f, 0xbb, 0xa8, 0xbe, 0x4b, 0xbb, 0xbc, 0xbe, 0x2f, 0xbb, 0xc7,
0xbe, 0x21, 0xbb, 0xc7, 0xbe, 0x21, 0xbc, 0x00, 0xbd, 0xd5, 0xbb, 0xe3,
0xbc, 0xfc, 0xbc, 0x5b, 0xbd, 0x3d, 0xbb, 0xe3, 0xbc, 0xfc, 0xba, 0xb7,
0xbc, 0x58, 0xba, 0xb7, 0xbc, 0x58, 0xba, 0xb7, 0xbc, 0x58, 0xba, 0x8b,
0xbc, 0x44, 0xba, 0x90, 0xbc, 0x46, 0xba, 0x8b, 0xbc, 0x44, 0xba, 0x8b,
0xbc, 0x42, 0xba, 0x8b, 0xbc, 0x42, 0xba, 0x89, 0xbb, 0xea, 0xba, 0x23,
0xbb, 0x79, 0xba, 0x6a, 0xbb, 0xad, 0xba, 0x23, 0xbb, 0x79, 0xba, 0x12,
0xbb, 0x6b, 0xba, 0x12, 0xbb, 0x6b, 0xba, 0x12, 0xbb, 0x6b, 0xb9, 0xf8,
0xbb, 0x49, 0xb9, 0xf8, 0xbb, 0x49, 0xb9, 0xf8, 0xbb, 0x49, 0xb9, 0xae,
0xba, 0xf0, 0xb9, 0xae, 0xba, 0xf0, 0xb9, 0x7e, 0xba, 0xc3, 0xb9, 0x28,
0xba, 0xb1, 0xb9, 0x50, 0xba, 0xb5, 0xb9, 0x24, 0xba, 0xa9, 0xb9, 0x1b,
0xba, 0x9a, 0xb9, 0x20, 0xba, 0xa1, 0xb9, 0x84, 0xba, 0x6e, 0xb9, 0xde,
0xb9, 0x97, 0xb9, 0xb5, 0xb9, 0xf9, 0xb9, 0xf6, 0xb9, 0x5d, 0xba, 0x36,
0xb8, 0xf0, 0xba, 0x0b, 0xb9, 0x1f, 0xba, 0x5e, 0xb8, 0xc4, 0xba, 0x78,
0xb8, 0x5e, 0xba, 0x83, 0xb8, 0x9e, 0xba, 0xcc, 0xb8, 0x3d, 0xbb, 0x61,
0xb7, 0xe7, 0xbb, 0x18, 0xb8, 0x13, 0xbb, 0x61, 0xb7, 0xe7, 0xbb, 0x6b,
0xb7, 0xe1, 0xbb, 0x6b, 0xb7, 0xe1, 0xbb, 0x6b, 0xb7, 0xe1, 0xbb, 0xfe,
0xb7, 0x87, 0xbb, 0xfe, 0xb7, 0x87, 0xbc, 0x65, 0xb7, 0x4a, 0xbc, 0xb6,
0xb6, 0x84, 0xbc, 0x94, 0xb6, 0xf6, 0xbc, 0xf5, 0xb6, 0x8a, 0xbd, 0x58,
0xb6, 0x65, 0xbd, 0x2d, 0xb6, 0x7b, 0xbd, 0xa8, 0xb6, 0x95, 0xbe, 0x6d,
0xb6, 0x51, 0xbe, 0x29, 0xb6, 0x97, 0xbe, 0x6f, 0xb6, 0x50, 0xbe, 0x88,
0xb6, 0x4f, 0xbe, 0x7c, 0xb6, 0x4f, 0xbe, 0x62, 0xb6, 0xa0, 0xbe, 0xe1,
0xb7, 0x2f, 0xbe, 0x88, 0xb7, 0x0e, 0xbe, 0xe4, 0xb7, 0x33, 0xbe, 0xe9,
0xb7, 0x3e, 0xbe, 0xe5, 0xb7, 0x3a, 0xbe, 0xd8, 0xb7, 0x44, 0xbe, 0xc6,
0xb7, 0x4a, 0xbe, 0xc6, 0xb7, 0x4a, 0xbe, 0xc6, 0xb7, 0x4a, 0xbe, 0x75,
0xb7, 0xa5, 0xbe, 0x75, 0xb7, 0xa5, 0xbe, 0x63, 0xb7, 0xdd, 0xbe, 0x90,
0xb8, 0x49, 0xbe, 0x74, 0xb8, 0x17, 0xbe, 0x91, 0xb8, 0x4c, 0xbe, 0x92,
0xb8, 0x52, 0xbe, 0x92, 0xb8, 0x52, 0xbe, 0x94, 0xb8, 0x5c, 0xbe, 0x9d,
0xb8, 0x7a, 0xbe, 0x97, 0xb8, 0x6b, 0xbe, 0x94, 0xb8, 0x84, 0xbe, 0x8c,
0xb8, 0x8d, 0xbe, 0x8c, 0xb8, 0x8d, 0xbe, 0x3a, 0xb8, 0xf0, 0xbd, 0x92,
0xb9, 0x8f, 0xbd, 0xb7, 0xb9, 0x06, 0xbd, 0x92, 0xb9, 0x8f, 0xbd, 0x8d,
0xb9, 0xa1, 0xbd, 0x8d, 0xb9, 0xa1, 0xbd, 0x64, 0xb9, 0xd8, 0xbd, 0x7e,
0xba, 0x55, 0xbd, 0x59, 0xba, 0x19, 0xbd, 0x7b, 0xba, 0x5c, 0xbd, 0x77,
0xba, 0x63, 0xbd, 0x77, 0xba, 0x63, 0xbd, 0x56, 0xba, 0xa0, 0xbd, 0x4d,
0xbb, 0x2c, 0xbd, 0x39, 0xba, 0xe6, 0xbd, 0x60, 0xbb, 0x70, 0xbd, 0xcc,
0xbb, 0xce, 0xbd, 0x98, 0xbb, 0xa2, 0xbd, 0xff, 0xbb, 0xfa, 0xbe, 0x73,
0xbc, 0x3f, 0xbe, 0x33, 0xbc, 0x27, 0xbe, 0xbe, 0xbc, 0x5c, 0xbf, 0x5e,
0xbc, 0x42, 0xbf, 0x12, 0xbc, 0x56, 0xbf, 0x5e, 0xbc, 0x42, 0xbf, 0xac,
0x37, 0xbf, 0xac, 0x37, 0xbf, 0xd0, 0xbc, 0x1e, 0xc0, 0x1c, 0xbc, 0x0f,
0xbf, 0xf5, 0xbc, 0x0b, 0xc0, 0x46, 0xbc, 0x14, 0xc0, 0x83, 0xbc, 0x4e,
0xc0, 0x66, 0xbc, 0x35, 0xc0, 0x4d, 0xbc, 0xd9, 0xc0, 0xf4, 0xbd, 0xda,
0xc0, 0xb6, 0xbd, 0x63, 0xc0, 0xf4, 0xbd, 0xda, 0xc1, 0x07, 0xbd, 0xf9,
0xc1, 0x02, 0xbd, 0xf2, 0xc0, 0xba, 0xbe, 0x84, 0xc1, 0x27, 0xbf, 0x91,
0xc0, 0xb2, 0xbf, 0x1d, 0xc1, 0x27, 0xbf, 0x91, 0xc1, 0x33, 0xbf, 0x9d,
0xc1, 0x33, 0xbf, 0x9d, 0xc1, 0x31, 0xc0, 0x0f, 0xc1, 0xc5, 0xc0, 0xf9,
0xc1, 0x35, 0xc0, 0xd6, 0xc2, 0x59, 0xc1, 0x1c, 0xc3, 0x48, 0xc0, 0x59,
0xc2, 0xee, 0xc0, 0xc9, 0xc3, 0x48, 0xc0, 0x59, 0xc3, 0x6b, 0xc0, 0x2f,
0xc3, 0x6b, 0xc0, 0x2f, 0xc3, 0x6b, 0xc0, 0x2f, 0xc3, 0x88, 0xc0, 0x19,
0xc3, 0x88, 0xc0, 0x19, 0xc3, 0xa8, 0xc0, 0x03, 0xc3, 0xdb, 0xbf, 0xc5,
0xc3, 0xc9, 0xbf, 0xe8, 0xc3, 0xee, 0xbf, 0xa0, 0xc4, 0x09, 0xbf, 0x52,
0xc3, 0xf0, 0xbf, 0x73, 0xc4, 0x09, 0xbf, 0x52, 0xc4, 0x09, 0xbf, 0x53,
0xc4, 0x09, 0xbf, 0x53, 0xc4, 0x0d, 0xbf, 0x9a, 0xc4, 0x95, 0xbf, 0xc1,
0xc4, 0x50, 0xbf, 0xce, 0xc4, 0xeb, 0xbf, 0xb3, 0xc5, 0x42, 0xbf, 0x10,
0xc5, 0x1f, 0xbf, 0x56, 0xc5, 0x42, 0xbf, 0x10, 0xc5, 0x51, 0xbe, 0xf2,
0xc5, 0x51, 0xbe, 0xf2, 0xc5, 0x51, 0xbe, 0xf2, 0xc5, 0x55, 0xbe, 0xeb,
0xc5, 0x55, 0xbe, 0xeb, 0xc5, 0x7f, 0xbe, 0xa3, 0xc5, 0x68, 0xbd, 0xfc,
0xc5, 0x9e, 0xbe, 0x47, 0xc5, 0x3a, 0xbd, 0xbb, 0xc4, 0xa3, 0xbd, 0xdf,
0xc4, 0xe1, 0xbd, 0xaa, 0xc4, 0xa3, 0xbd, 0xca, 0xc4, 0xa3, 0xbd, 0xb5,
0xc4, 0xa3, 0xbd, 0xb5, 0xc4, 0xa3, 0xbd, 0xb5, 0xc4, 0xa5, 0xbd, 0x31,
0xc4, 0xa5, 0xbd, 0x31, 0xc4, 0xa8, 0xbd, 0x1e, 0xc4, 0xe8, 0xbc, 0xdf,
0xc4, 0xd2, 0xbc, 0xf5, 0xc4, 0xe8, 0xbc, 0xdf, 0xc4, 0xfe, 0xbc, 0xc9,
0xc4, 0xfe, 0xbc, 0xc9, 0xc4, 0xfe, 0xbc, 0xc9, 0xc5, 0x16, 0xbc, 0xb3,
0xc5, 0x16, 0xbc, 0xb3, 0xc5, 0x45, 0xbc, 0x8b, 0xc5, 0x82, 0xbc, 0x20,
0xc5, 0x71, 0xbc, 0x5e, 0xc5, 0x8c, 0xbc, 0x05, 0xc5, 0x88, 0xbb, 0xbc,
0xc5, 0x86, 0xbb, 0xd9, 0xc5, 0x88, 0xbb, 0xbc, 0xc5, 0x87, 0xbb, 0xa8,
0xc5, 0x87, 0xbb, 0xa8, 0xc5, 0x87, 0xbb, 0xa8, 0xc5, 0x88, 0xbb, 0x9d,
0xc5, 0x88, 0xbb, 0x9d, 0xc5, 0x8d, 0xbb, 0x61, 0x4e, 0xba, 0xfa, 0xc5,
0x84, 0xbb, 0x24, 0xc5, 0x8a, 0xba, 0xda, 0xc5, 0xc2, 0xba, 0x5d, 0xc5,
0xb0, 0xba, 0xa2, 0xc5, 0xc4, 0xba, 0x62, 0xc5, 0xcb, 0xba, 0x70, 0xc5,
0xcb, 0xba, 0x70, 0xc5, 0xd9, 0xba, 0x8e, 0xc6, 0x0f, 0xba, 0xd4, 0xc5,
0xed, 0xba, 0xb3, 0xc6, 0x0a, 0xbb, 0x1f, 0xc6, 0x48, 0xbb, 0xaa, 0xc6,
0x27, 0xbb, 0x67, 0xc6, 0x69, 0xbb, 0xeb, 0xc6, 0x6f, 0xbc, 0x7b, 0xc6,
0x70, 0xbc, 0x33, 0xc6, 0x6f, 0xbc, 0x7b, 0xc6, 0x72, 0xbc, 0xc4, 0xc6,
0x72, 0xbc, 0xc4, 0xc6, 0x74, 0xbc, 0xea, 0xc6, 0x6e, 0xbd, 0x37, 0xc6,
0x78, 0xbd, 0x11, 0xc6, 0x64, 0xbd, 0x5a, 0xc6, 0x49, 0xbd, 0x9c, 0xc6,
0x52, 0xbd, 0x79, 0xc6, 0x33, 0xbd, 0xec, 0xc6, 0x2c, 0xbe, 0x92, 0xc6,
0x2d, 0xbe, 0x3f, 0xc6, 0x21, 0xbe, 0xd5, 0xc6, 0x7f, 0xbf, 0x2c, 0xc6,
0x48, 0xbf, 0x16, 0xc7, 0x50, 0xbd, 0x0f, 0x00, 0x06, 0xbc, 0x12, 0xb6,
0xe4, 0xbc, 0x12, 0xb6, 0xe4, 0xbc, 0x32, 0xb6, 0xb0, 0xbc, 0x55, 0xb6,
0x38, 0xbc, 0x47, 0xb6, 0x74, 0xbb, 0x81, 0xb6, 0xab, 0xba, 0x2b, 0xb8,
0x02, 0xba, 0xc4, 0xb7, 0x47, 0xba, 0x88, 0xb7, 0xe3, 0xbb, 0x30, 0xb7,
0x7e, 0xba, 0xdd, 0xb7, 0xb0, 0xbb, 0x59, 0xb7, 0x65, 0xbb, 0xaa, 0xb7,
0x33, 0xbb, 0x82, 0xb7, 0x4d, 0xbb, 0xcb, 0xb7, 0x1d, 0xbc, 0x12, 0xb6,
0xe4, 0xbb, 0xfc, 0xb7, 0x07, 0xbc, 0x12, 0xb6, 0xe4, 0x00, 0x1d, 0xba,
0xcd, 0xbf, 0xd1, 0xba, 0xcd, 0xbf, 0xd1, 0xba, 0xeb, 0xbf, 0xaa, 0xbb,
0x29, 0xbf, 0x5c, 0xbb, 0x13, 0xbf, 0x89, 0xbb, 0x43, 0xbf, 0x24, 0xbb,
0x34, 0xbe, 0x93, 0xbb, 0x34, 0xbe, 0xd0, 0xbb, 0x34, 0xbe, 0x4d, 0xbb,
0x60, 0xbd, 0xea, 0xbb, 0x34, 0xbe, 0x25, 0xbb, 0x80, 0xbd, 0xbe, 0xbb,
0xab, 0xbd, 0x60, 0xbb, 0xa1, 0xbd, 0x98, 0xbb, 0x48, 0xbd, 0x2a, 0xba,
0x81, 0xbc, 0xbe, 0xba, 0xe5, 0xbc, 0xf3, 0xba, 0x67, 0xbc, 0xb1, 0xba,
0x20, 0xbc, 0x83, 0xba, 0x2d, 0xbc, 0xa0, 0xba, 0x0f, 0xbc, 0x5b, 0xba,
0x0d, 0xbc, 0x02, 0xba, 0x1f, 0xbc, 0x28, 0xb9, 0xfe, 0xbb, 0xe5, 0xb9,
0xba, 0xbb, 0xb6, 0xb9, 0xd0, 0xbb, 0xd0, 0xb9, 0x9b, 0xbb, 0x91, 0xb9,
0x5f, 0xbb, 0x44, 0xb9, 0x83, 0xbb, 0x66, 0xb9, 0x3d, 0xbb, 0x24, 0xb8,
0xf0, 0xbb, 0x2d, 0xb9, 0x1c, 0xbb, 0x16, 0xb8, 0xc0, 0xbb, 0x48, 0xb8,
0xbe, 0xba, 0xdf, 0xb8, 0xc3, 0xba, 0xff, 0xb8, 0xb1, 0xbb, 0x14, 0xb8,
0x9f, 0xbb, 0x7e, 0xb8, 0xa7, 0xbb, 0x49, 0xb8, 0xc9, 0xbb, 0x7e, 0xb8,
0xc5, 0xbb, 0xb2, 0xb8, 0xc3, 0xbb, 0x8a, 0xb8, 0xc6, 0xbb, 0xdb, 0xb8,
0xc9, 0xbc, 0x2e, 0xb8, 0xc7, 0xbc, 0x05, 0xb8, 0xd0, 0xbc, 0x40, 0xb8,
0xba, 0xbc, 0x49, 0xb8, 0xcb, 0xbc, 0x49, 0xb8, 0xb4, 0xbc, 0x4b, 0xb8,
0xaa, 0xbc, 0x4e, 0xb8, 0xaf, 0xbc, 0x4d, 0xb8, 0xa0, 0xbc, 0x57, 0xb8,
0x93, 0xbc, 0x4b, 0xb8, 0x98, 0xbc, 0x56, 0xb8, 0x82, 0xbc, 0x4a, 0xb8,
0x8f, 0xbd, 0x10, 0xb8, 0x8e, 0xbd, 0x00, 0xb8, 0x93, 0xbd, 0x49, 0xb8,
0xe1, 0xbd, 0xe7, 0xb8, 0x8d, 0xbe, 0x03, 0xb9, 0x0d, 0xbe, 0x04, 0xb9,
0x23, 0xbe, 0x75, 0xb9, 0x06, 0xbe, 0x4b, 0xb9, 0x46, 0xbe, 0xa8, 0xb9,
0x85, 0xbf, 0x00, 0xb9, 0x73, 0xbe, 0xc1, 0xb9, 0x97, 0xbf, 0x3e, 0xb9,
0xa3, 0xbf, 0xc1, 0xb9, 0x98, 0xbf, 0x81, 0xb9, 0xb0, 0xc0, 0x11, 0xba,
0x17, 0xc0, 0x5f, 0xb9, 0xdb, 0xc0, 0x2e, 0xba, 0x25, 0xc0, 0xb3, 0xba,
0x75, 0xc1, 0x27, 0xba, 0x3d, 0xc0, 0xe7, 0xba, 0x8f, 0xc1, 0x44, 0xba,
0xc0, 0xc1, 0x7f, 0xba, 0xa9, 0xc1, 0x60, 0xba, 0xd8, 0xc1, 0x9f, 0xba,
0xfc, 0xc1, 0x7c, 0xba, 0xe4, 0xc1, 0x9d, 0xba, 0xdd, 0xc1, 0x3a, 0xba,
0xd7, 0xc0, 0xa6, 0xba, 0xd3, 0xc0, 0xef, 0xba, 0xdb, 0xc0, 0x61, 0xba,
0xcd, 0xbf, 0xd1, 0xba, 0xea, 0xc0, 0x13, 0xba, 0xcd, 0xbf, 0xd1, 0x00,
0x09, 0xbd, 0x5e, 0xb5, 0xd7, 0xbd, 0x5e, 0xb5, 0xd7, 0xbd, 0x81, 0xb5,
0xee, 0xbd, 0xb1, 0xb6, 0x0e, 0xbd, 0x84, 0xb6, 0x05, 0xbd, 0xd0, 0xb6,
0x13, 0xbe, 0x19, 0xb6, 0x01, 0xbe, 0x01, 0xb6, 0x1a, 0xbe, 0x55, 0xb5,
0xc3, 0xbe, 0xf6, 0xb5, 0xc4, 0xbe, 0xb0, 0xb5, 0xef, 0xbf, 0x2d, 0xb5,
0xa2, 0xbf, 0xa3, 0xb5, 0x5e, 0xbf, 0x5b, 0xb5, 0x5e, 0xbf, 0xce, 0xb5,
0x5d, 0xc0, 0x0c, 0xb5, 0x8c, 0xbf, 0xe9, 0xb5, 0x78, 0xc0, 0x3c, 0xb5,
0xa7, 0xc0, 0x90, 0xb5, 0x66, 0xc0, 0x64, 0xb5, 0x75, 0xbf, 0x3a, 0xb5,
0x41, 0xbc, 0xa7, 0xb6, 0x0e, 0xbd, 0xdd, 0xb5, 0x7a, 0xbc, 0xec, 0xb6,
0x23, 0xbd, 0x5e, 0xb5, 0xd7, 0xbd, 0x29, 0xb6, 0x01, 0xbd, 0x5e, 0xb5,
0xd7, 0x00, 0x05, 0xbf, 0x35, 0xb6, 0xea, 0xbf, 0x35, 0xb6, 0xea, 0xbf,
0x55, 0xb6, 0xec, 0xbf, 0x9a, 0xb6, 0xf5, 0xbf, 0x7b, 0xb7, 0x02, 0xbf,
0xce, 0xb6, 0xe0, 0xbf, 0x87, 0xb6, 0x7d, 0xbf, 0x9c, 0xb6, 0x93, 0xbf,
0x78, 0xb6, 0x6d, 0xbf, 0x3c, 0xb6, 0x64, 0xbf, 0x2f, 0xb6, 0x23, 0xbf,
0x45, 0xb6, 0x90, 0xbf, 0x35, 0xb6, 0xea, 0xbf, 0x6b, 0xb6, 0xcc, 0xbf,
0x35, 0xb6, 0xea, 0x00, 0x04, 0xba, 0x07, 0xb8, 0x7f, 0xba, 0x07, 0xb8,
0x7f, 0xba, 0x0c, 0xb8, 0x68, 0xb9, 0xef, 0xb8, 0x50, 0xb9, 0xfe, 0xb8,
0x5f, 0xb9, 0x82, 0xb8, 0xe4, 0xb8, 0xf0, 0xba, 0x35, 0xb9, 0x2c, 0xb9,
0x88, 0xb9, 0x7e, 0x31, 0xba, 0x07, 0xb8, 0x7f, 0xb9, 0x74, 0xb8, 0xf0,
0xba, 0x07, 0xb8, 0x7f, 0x00, 0x66, 0xc6, 0xf7, 0xbc, 0x24, 0xc6, 0xf7,
0xbc, 0x24, 0xc6, 0xdc, 0xbb, 0x0a, 0xc6, 0x00, 0x2f, 0xc6, 0x8b, 0xb9,
0xf2, 0xc5, 0xb9, 0xb8, 0x7c, 0xc4, 0xff, 0xb7, 0x9c, 0xc5, 0x63, 0xb8,
0x05, 0xc4, 0xce, 0xb7, 0x68, 0xc4, 0x63, 0xb7, 0x09, 0xc4, 0x9a, 0xb7,
0x37, 0xc4, 0x52, 0xb6, 0xfb, 0xc4, 0x28, 0xb6, 0xef, 0xc4, 0x40, 0xb6,
0xe2, 0xc4, 0x12, 0xb6, 0xfa, 0xc4, 0x07, 0xb6, 0xc1, 0xc4, 0x01, 0xb6,
0xd1, 0xc3, 0x16, 0xb6, 0x0f, 0xc0, 0xd0, 0xb5, 0x6f, 0xc1, 0xf9, 0xb5,
0x9a, 0xc0, 0xfb, 0xb5, 0x8b, 0xc1, 0x5f, 0xb5, 0x9c, 0xc1, 0x31, 0xb5,
0x89, 0xc1, 0x70, 0xb5, 0xa2, 0xc1, 0x79, 0xb5, 0xc9, 0xc1, 0x9f, 0xb5,
0xbd, 0xc1, 0x2d, 0xb5, 0xe2, 0xc0, 0x8a, 0xb5, 0xc9, 0xc0, 0xd7, 0xb5,
0xc4, 0xc0, 0x5a, 0xb5, 0xcd, 0xc0, 0x3f, 0xb6, 0x0e, 0xc0, 0x43, 0xb5,
0xdd, 0xc0, 0x3d, 0xb6, 0x29, 0xc0, 0x40, 0xb6, 0x76, 0xc0, 0x36, 0xb6,
0x5d, 0xc0, 0x4b, 0xb6, 0x94, 0xc0, 0xb6, 0xb6, 0x5f, 0xc0, 0xa8, 0xb6,
0x6f, 0xc0, 0xcd, 0xb6, 0x43, 0xc0, 0xf1, 0xb6, 0x1a, 0xc0, 0xb1, 0xb6,
0x08, 0xc1, 0x08, 0xb6, 0x4b, 0xc0, 0xd0, 0xb6, 0xb1, 0xc1, 0x3a, 0xb6,
0xd6, 0xc0, 0xb5, 0xb6, 0xa7, 0xc0, 0x66, 0xb6, 0x89, 0xc0, 0x83, 0xb6,
0x7c, 0xc0, 0x64, 0xb6, 0x8a, 0xc0, 0x5d, 0xb6, 0xaf, 0xc0, 0x5f, 0xb6,
0xab, 0xc0, 0x53, 0xb6, 0xc0, 0xc0, 0x31, 0xb6, 0xd0, 0xc0, 0x44, 0xb6,
0xcb, 0xbf, 0xe6, 0xb6, 0xe5, 0xbf, 0x94, 0xb7, 0x41, 0xbf, 0xb0, 0xb6,
0xef, 0xbf, 0x87, 0xb7, 0x69, 0xbf, 0x5d, 0xb7, 0x91, 0xbf, 0x88, 0xb7,
0x81, 0xbf, 0x3b, 0xb7, 0x9d, 0xbe, 0xf7, 0xb7, 0xb2, 0xbf, 0x17, 0xb7,
0xa4, 0xbe, 0xcc, 0xb7, 0xc7, 0xbe, 0xfa, 0xb8, 0x1c, 0xbe, 0xea, 0xb7,
0xff, 0xbf, 0x06, 0xb8, 0x30, 0xbf, 0x19, 0xb8, 0x6c, 0xbf, 0x03, 0xb8,
0x60, 0xbf, 0x59, 0xb8, 0x91, 0xbf, 0xbe, 0xb7, 0xe0, 0xbf, 0xa3, 0xb8,
0x02, 0xbf, 0xe1, 0xb7, 0xb3, 0xc0, 0x38, 0xb7, 0xad, 0xc0, 0x08, 0xb7,
0xbd, 0xc0, 0x4f, 0xb7, 0xa6, 0xc0, 0x84, 0xb7, 0x77, 0xc0, 0x6c, 0xb7,
0x6e, 0xc0, 0xd3, 0xb7, 0x95, 0xc0, 0xf8, 0xb8, 0x3e, 0xc0, 0xeb, 0xb7,
0xf4, 0xc1, 0x10, 0xb8, 0x3f, 0xc1, 0x35, 0xb8, 0x10, 0xc1, 0x00, 0xb8,
0x02, 0xc1, 0x0d, 0xb7, 0xe5, 0xc0, 0xec, 0xb7, 0x70, 0x43, 0xb7, 0xab,
0xc1, 0x25, 0xb7, 0x95, 0xc1, 0x5f, 0xb7, 0xfd, 0xc1, 0x4d, 0xb7, 0xbd,
0xc1, 0x70, 0xb8, 0x3d, 0xc1, 0xc2, 0xb8, 0x20, 0xc1, 0x8e, 0xb8, 0x60,
0xc1, 0xcf, 0xb8, 0x13, 0xc1, 0xfd, 0xb7, 0xd5, 0xc1, 0xe2, 0xb7, 0xbd,
0xc2, 0x14, 0xb7, 0xea, 0xc1, 0xf1, 0xb8, 0x38, 0xc2, 0x15, 0xb8, 0x2f,
0xc2, 0x06, 0xb8, 0x4b, 0xc2, 0x3a, 0xb8, 0x3d, 0xc2, 0x22, 0xb8, 0x43,
0xc2, 0x5a, 0xb8, 0x34, 0xc2, 0x8b, 0xb8, 0x42, 0xc2, 0x6c, 0xb8, 0x36,
0xc2, 0xaf, 0xb8, 0x50, 0xc2, 0xfa, 0xb8, 0x57, 0xc2, 0xd5, 0xb8, 0x54,
0xc3, 0x20, 0xb8, 0x59, 0xc3, 0x47, 0xb8, 0x98, 0xc3, 0x35, 0xb8, 0x7b,
0xc3, 0x77, 0xb8, 0xe7, 0xc2, 0x4a, 0xb8, 0xc5, 0xc2, 0x59, 0xb8, 0xc6,
0xc2, 0x28, 0xb8, 0xc3, 0xc1, 0xe2, 0xb8, 0xd0, 0xc2, 0x02, 0xb8, 0xc2,
0xc1, 0xc9, 0xb8, 0xda, 0xc1, 0x99, 0xb8, 0xf0, 0xc1, 0xb6, 0x2f, 0xc1,
0x79, 0xb8, 0xe5, 0xc1, 0x3f, 0xb8, 0xb6, 0xc1, 0x5b, 0xb8, 0xc8, 0xc1,
0x18, 0xb8, 0x9c, 0xc0, 0xc5, 0xb8, 0x72, 0xc0, 0xef, 0xb8, 0x85, 0xc0,
0x7f, 0xb8, 0x53, 0xbf, 0xe3, 0xb8, 0x4f, 0xc0, 0x2f, 0xb8, 0x3f, 0xbf,
0xbf, 0xb8, 0x56, 0xbf, 0x7f, 0xb8, 0x7c, 0xbf, 0x9c, 0xb8, 0x66, 0xbf,
0x5c, 0xb8, 0x97, 0xbf, 0x11, 0xb8, 0xa4, 0xbf, 0x35, 0xb8, 0x7f, 0xbe,
0xdc, 0xb8, 0xdc, 0xbe, 0x6e, 0xb9, 0x42, 0xbe, 0xb6, 0xb9, 0x1f, 0xbe,
0x51, 0xb9, 0x50, 0xbe, 0x19, 0xb9, 0x76, 0xbe, 0x2e, 0xb9, 0x5c, 0xbe,
0x04, 0xb9, 0x90, 0xbd, 0xf6, 0xb9, 0xd1, 0xbe, 0x04, 0xb9, 0xb4, 0xbd,
0xe9, 0xb9, 0xee, 0xbd, 0xe2, 0xba, 0x1d, 0xbd, 0xca, 0xb9, 0xfc, 0xbd,
0xf8, 0xba, 0x3c, 0xbd, 0xef, 0xba, 0x76, 0xbd, 0xfe, 0xba, 0x53, 0xbd,
0xd9, 0xba, 0xa9, 0xbd, 0xc9, 0xbb, 0x27, 0xbd, 0x9f, 0xba, 0xef, 0xbd,
0xf2, 0x35, 0xbe, 0x71, 0xbb, 0xbc, 0xbe, 0x3a, 0xbb, 0x94, 0xbe, 0xaf,
0xbb, 0xe9, 0xbf, 0x41, 0xbb, 0xd2, 0xbe, 0xfb, 0xbb, 0xe5, 0xbf, 0x83,
0xbb, 0xc1, 0xc0, 0x09, 0xbb, 0x9c, 0xbf, 0xc5, 0xbb, 0xa1, 0xc0, 0x5f,
0xbb, 0x96, 0xc0, 0xdd, 0xbc, 0x03, 0xc0, 0xa1, 0xbb, 0xcd, 0xc1, 0x04,
0xbc, 0x26, 0xc0, 0xf5, 0xbc, 0x67, 0xc1, 0x14, 0xbc, 0x34, 0xc0, 0xd3,
0xbc, 0x9f, 0xc1, 0x03, 0xbd, 0x00, 0xc0, 0xe8, 0xbc, 0xc8, 0xc1, 0x1f,
0xbd, 0x37, 0xc1, 0x59, 0xbd, 0xa3, 0xc1, 0x3c, 0xbd, 0x6d, 0xc1, 0x66,
0xbd, 0xba, 0xc1, 0x82, 0xbd, 0xe8, 0xc1, 0x77, 0xbd, 0xd0, 0xc1, 0x8e,
0xbe, 0x04, 0xc1, 0x6d, 0xbe, 0x2d, 0xc1, 0x7b, 0xbe, 0x15, 0xc1, 0x52,
0xbe, 0x5e, 0xc1, 0x3f, 0xbe, 0xcf, 0xc1, 0x3f, 0xbe, 0x97, 0xc1, 0x3f,
0xbf, 0x0e, 0xc1, 0x85, 0xbf, 0x4c, 0xc1, 0x5d, 0xbf, 0x24, 0xc1, 0xaa,
0xbf, 0x71, 0xc1, 0xa4, 0xbf, 0xe3, 0xc1, 0xa8, 0xbf, 0xb3, 0xc1, 0xa0,
0xc0, 0x25, 0xc1, 0xdb, 0xc0, 0x87, 0xc1, 0xb3, 0xc0, 0x53, 0xc2, 0x16,
0xc0, 0x8a, 0xc2, 0x89, 0xc0, 0x6c, 0xc2, 0x53, 0xc0, 0x86, 0xc2, 0xcb,
0xc0, 0x4d, 0xc3, 0x19, 0xbf, 0xde, 0xc2, 0xe8, 0xc0, 0x0f, 0xc3, 0x47,
0xbf, 0xb0, 0xc3, 0x86, 0xbf, 0x66, 0xc3, 0x78, 0xbf, 0xab, 0xc3, 0x96,
0xbf, 0x13, 0xc3, 0xfe, 0xbe, 0xbf, 0xc3, 0xc2, 0xbe, 0xf2, 0xc4, 0x35,
0xbe, 0x90, 0xc4, 0x30, 0xbe, 0x0c, 0xc4, 0x2e, 0xbe, 0x4d, 0xc4, 0x32,
0xbd, 0xc0, 0xc4, 0x33, 0xbd, 0x22, 0xc4, 0x29, 0xbd, 0x6d, 0xc4, 0x3c,
0xbc, 0xde, 0xc4, 0xab, 0xbc, 0x78, 0xc4, 0x7e, 0xbc, 0xa7, 0xc4, 0xcd,
0xbc, 0x56, 0xc5, 0x12, 0xbc, 0x03, 0xc5, 0x05, 0xbc, 0x34, 0xc5, 0x19,
0xbb, 0xe7, 0xc5, 0x13, 0xbb, 0xa8, 0xc5, 0x13, 0x36, 0xc5, 0x13, 0xbb,
0x93, 0xc5, 0x11, 0x35, 0xc5, 0x1a, 0xbb, 0x71, 0xc4, 0xf8, 0xbb, 0x29,
0xc4, 0x7e, 0xbb, 0x2c, 0xc4, 0x8a, 0xbb, 0x5d, 0xc4, 0x76, 0xbb, 0x0e,
0xc4, 0x8b, 0xbb, 0x01, 0xc4, 0x77, 0xbb, 0x14, 0xc4, 0xa1, 0xba, 0xed,
0xc4, 0x78, 0xba, 0xcd, 0xc4, 0x8b, 0xba, 0xd8, 0xc4, 0x42, 0xba, 0xad,
0xc3, 0xf1, 0xba, 0x66, 0xc4, 0x18, 0xba, 0x9a, 0xc3, 0xcc, 0xba, 0x36,
0xc3, 0x91, 0xb9, 0xcb, 0xc3, 0xae, 0xba, 0x00, 0xc3, 0x89, 0xb9, 0xbe,
0xc3, 0x6c, 0xb9, 0x3b, 0xc3, 0x42, 0xb9, 0x2e, 0xc3, 0x9a, 0xb9, 0x4a,
0xc3, 0xe2, 0xb9, 0xa3, 0xc3, 0xc4, 0xb9, 0x81, 0xc4, 0x19, 0xb9, 0xdf,
0xc4, 0x6d, 0xba, 0x6a, 0xc4, 0x4a, 0xba, 0x20, 0xc4, 0x6e, 0xba, 0x73,
0xc4, 0x96, 0xba, 0x8a, 0xc4, 0x8f, 0xba, 0x85, 0xc4, 0xaf, 0xba, 0x9c,
0xc4, 0xea, 0xba, 0xa8, 0xc4, 0xca, 0xba, 0xab, 0xc5, 0x33, 0xba, 0xa2,
0xc5, 0x5a, 0xba, 0x20, 0xc5, 0x55, 0xba, 0x61, 0xc5, 0x62, 0xb9, 0xc7,
0xc4, 0xe8, 0xb9, 0xaf, 0xc5, 0x1d, 0xb9, 0xda, 0xc4, 0xca, 0xb9, 0x97,
0xc4, 0x9e, 0xb9, 0x58, 0xc4, 0xb6, 0xb9, 0x75, 0xc4, 0x8f, 0xb9, 0x46,
0xc4, 0x74, 0xb9, 0x0e, 0xc4, 0x66, 0xb9, 0x2a, 0xc4, 0x93, 0xb8, 0xf9,
0xc4, 0xbd, 0xb9, 0x1d, 0xc4, 0x9f, 0xb9, 0x0b, 0xc4, 0xe0, 0xb9, 0x32,
0xc5, 0x2c, 0xb9, 0x51, 0xc5, 0x05, 0xb9, 0x44, 0xc5, 0x55, 0xb9, 0x5e,
0xc5, 0xb4, 0xb9, 0x6c, 0xc5, 0x92, 0xb9, 0x52, 0xc5, 0xc9, 0xb9, 0x7c,
0xc5, 0xe7, 0xb9, 0xb8, 0xc5, 0xd9, 0xb9, 0xa2, 0xc5, 0xfe, 0xb9, 0xdc,
0xc6, 0x27, 0xba, 0x26, 0xc6, 0x14, 0xba, 0x00, 0xc6, 0x45, 0xba, 0x61,
0xc6, 0x94, 0xba, 0x9f, 0xc6, 0x4d, 0xba, 0x89, 0xc6, 0x67, 0xba, 0xe8,
0xc6, 0xb6, 0xbb, 0x83, 0xc6, 0x93, 0xbb, 0x3f, 0xc6, 0xdf, 0xbb, 0xd4,
0xc6, 0xe3, 0xbc, 0x7c, 0xc6, 0xe4, 0xbc, 0x23, 0xc6, 0xe2, 0xbc, 0xce,
0xc6, 0xd0, 0xbd, 0x79, 0xc6, 0xf5, 0xbd, 0x2c, 0xc6, 0xa7, 0xbd, 0xcc,
0xc6, 0x9f, 0xbe, 0x9a, 0xc6, 0x9f, 0xbe, 0x3e, 0xc6, 0xa1, 0xbe, 0x95,
0xc6, 0xa5, 0xbe, 0x88, 0xc6, 0xa3, 0xbe, 0x8d, 0xc6, 0xa2, 0xbe, 0x8f,
0xc6, 0xa1, 0xbe, 0xc0, 0xc6, 0x96, 0xbe, 0xbe, 0xc6, 0xb2, 0xbe, 0xc4,
0xc6, 0xd6, 0xbe, 0x02, 0xc6, 0xd2, 0xbe, 0x15, 0xc6, 0xf6, 0xbd, 0x65,
0xc6, 0xf7, 0xbc, 0x24, 0xc7, 0x00, 0xbc, 0xc4, 0xc6, 0xf7, 0xbc, 0x24,
0x00, 0x08, 0xc3, 0x01, 0xb7, 0xd8, 0xc3, 0x01, 0xb7, 0xd8, 0xc2, 0xe6,
0xb7, 0xdc, 0xc2, 0xd4, 0xb7, 0xa4, 0xc2, 0xe8, 0xb7, 0xae, 0xc2, 0xb1,
0xb7, 0x92, 0xc2, 0x69, 0xb7, 0xb8, 0xc2, 0x88, 0xb7, 0xa7, 0xc2, 0x04,
0xb7, 0xef, 0xc2, 0x36, 0xb7, 0x43, 0xc2, 0x21, 0xb7, 0x7b, 0xc2, 0x39,
0xb7, 0x3a, 0xc2, 0x85, 0xb7, 0x44, 0xc2, 0x7a, 0xb7, 0x46, 0xc2, 0xa7,
0xb7, 0x40, 0xc2, 0xf3, 0xb7, 0x4f, 0xc2, 0xd8, 0xb7, 0x31, 0xc3, 0x0c,
0xb7, 0x6b, 0xc3, 0x3c, 0xb7, 0xa1, 0xc3, 0x1f, 0xb7, 0x87, 0xc3, 0x60,
0xb7, 0xc2, 0xc3, 0x01, 0xb7, 0xd8, 0xc3, 0x1c, 0xb7, 0xd4, 0xc3, 0x01,
0xb7, 0xd8, 0x00, 0x04, 0xbb, 0x53, 0xc2, 0x03, 0xbb, 0x53, 0xc2, 0x03,
0xbb, 0x45, 0xc2, 0x0d, 0xbb, 0x26, 0xc2, 0x21, 0xbb, 0x38, 0xc2, 0x1d,
0xbb, 0x55, 0xc2, 0x49, 0xbb, 0xba, 0xc2, 0x91, 0xbb, 0x87, 0xc2, 0x6e,
0xbb, 0x92, 0xc2, 0x65, 0xbb, 0x53, 0xc2, 0x03, 0xbb, 0x84, 0xc2, 0x27,
0xbb, 0x53, 0xc2, 0x03, 0x00, 0x05, 0xc4, 0xf4, 0xbe, 0x2e, 0xc4, 0xf4,
0xbe, 0x2e, 0xc4, 0xd3, 0xbe, 0x57, 0xc4, 0x8c, 0xbe, 0xa4, 0xc4, 0xa6,
0xbe, 0x76, 0xc4, 0x6e, 0xbe, 0xda, 0xc4, 0x7d, 0xbf, 0x53, 0xc4, 0x7d,
0xbf, 0x18, 0xc4, 0xb6, 0xbf, 0x38, 0xc4, 0xed, 0xbe, 0xb9, 0xc4, 0xd0,
0xbe, 0xec, 0xc5, 0x02, 0xbe, 0x93, 0xc4, 0xf4, 0xbe, 0x2e, 0xc5, 0x31,
0xbe, 0x48, 0xc4, 0xf4, 0xbe, 0x2e, 0x00, 0x09, 0xc2, 0x13, 0xc3, 0x27,
0xc2, 0x13, 0xc3, 0x27, 0xc1, 0x7f, 0xc3, 0x90, 0xbf, 0xf7, 0xc3, 0x45,
0xc0, 0x9d, 0xc3, 0x32, 0xbf, 0xd0, 0xc3, 0x49, 0xbf, 0x8e, 0xc3, 0x6a,
0xbf, 0xac, 0xc3, 0x50, 0xbf, 0x67, 0xc3, 0x8c, 0xbf, 0x20, 0xc3, 0x86,
0xbf, 0x56, 0xc3, 0x86, 0xbe, 0xaf, 0xc3, 0x86, 0xbd, 0xcd, 0xc3, 0x86,
0xbe, 0x3e, 0xc3, 0x86, 0xbe, 0xc1, 0xc3, 0xcb, 0xc0, 0xc0, 0xc3, 0xba,
0xbf, 0xc4, 0xc3, 0xdd, 0xc1, 0x37, 0xc3, 0xaa, 0xc2, 0x21, 0xc3, 0x67,
0xc1, 0xaf, 0xc3, 0x8e, 0xc2, 0x2a, 0xc3, 0x64, 0xc2, 0x62, 0xc3, 0x2b,
0xc2, 0x80, 0xc3, 0x37, 0xc2, 0x49, 0xc3, 0x22, 0xc2, 0x13, 0xc3, 0x27,
0xc2, 0x2a, 0xc3, 0x31, 0xc2, 0x13, 0xc3, 0x27, 0x02, 0x04, 0x48, 0x44,
0xc8, 0x37, 0x44, 0xbd, 0xa8, 0x44, 0x30, 0x4f, 0x30, 0xc3, 0x4e, 0x30,
0xc8, 0x25, 0x48, 0x5a, 0xbd, 0xa8, 0x5a, 0xc8, 0x37, 0x5a, 0x60, 0x4f,
0x60, 0xc8, 0x25, 0x60, 0xc3, 0x4e, 0x0a, 0x0a, 0x05, 0x01, 0x0f, 0x00,
0x0a, 0x04, 0x01, 0x03, 0x10, 0x01, 0x17, 0x84, 0x00, 0x04, 0x0a, 0x06,
0x01, 0x03, 0x00, 0x0a, 0x07, 0x01, 0x04, 0x02, 0x40, 0x65, 0xc8, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x65, 0xc8, 0xc6, 0x97, 0x79, 0xbf,
0x1c, 0xdb, 0x0a, 0x08, 0x0a, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0d,
0x0e, 0x05, 0x0c, 0x02, 0x40, 0x65, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0x65, 0xc8, 0xc6, 0x97, 0x79, 0xbf, 0x1c, 0xdb, 0x0a, 0x03,
0x01, 0x01, 0x02, 0x3d, 0xff, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3d, 0xff, 0x88, 0x48, 0xa0, 0x71, 0x40, 0x02, 0xb1, 0x0a, 0x00, 0x01,
0x02, 0x12, 0x41, 0xff, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
0xff, 0x88, 0xc1, 0xf3, 0x87, 0xcb, 0xdf, 0x74, 0x01, 0x17, 0x82, 0x00,
0x04, 0x0a, 0x02, 0x01, 0x02, 0x02, 0x41, 0xff, 0x88, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x41, 0xff, 0x88, 0xc1, 0xf3, 0x87, 0xcb, 0xdf, 0x74,
0x0a, 0x00, 0x01, 0x01, 0x12, 0x41, 0xff, 0x88, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x41, 0xff, 0x88, 0xc1, 0xf3, 0x87, 0xcb, 0xdf, 0x74, 0x01,
0x17, 0x82, 0x00, 0x04, 0x0a, 0x01, 0x01, 0x01, 0x02, 0x41, 0xff, 0x88,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xff, 0x88, 0xc1, 0xf3, 0x87,
0xcb, 0xdf, 0x74
};
// #pragma mark - root folder attribute list
//0x6949434F 7 "BEOS:D:STD_ICON" 49 44 58 5A 05 53 00
uint8 root_folder_attrs_1[] = { 0x49, 0x44, 0x58, 0x5A, 0x05, 0x53, 0x00 }; // needed for SVG icons in Zeta...
uint64 root_folder_attrs_2 = 0xdeadbeef50385038LL; // volume id, just in case
struct attr_entry root_folder_attrs[] = {
{ "BEOS:TYPE", /*B_MIME_STRING_TYPE*/'MIMS', SZSTR("application/x-vnd.Be-directory") },
{ "BEOS:ICON", 'VICN', sizeof(websearch_icon_HVIF), (char *)websearch_icon_HVIF },
//{ "BEOS:EMBLEMS", 'CSTR', SZSTR("palm") },
{ "be:volume_id", B_UINT64_TYPE, sizeof(root_folder_attrs_2), &root_folder_attrs_2 },
{ NULL, 0, 0, NULL } /* end of list */
};
static uint8 folders_attrs_1[] = {
0x52, 0x56, 0xf2, 0x4f, 0x15, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x54, 0x69, 0x74, 0x6c,
0x65, 0x00, 0x00, 0x00, 0x20, 0x42, 0x00, 0x00, 0x02, 0x43, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00,
0x00, 0x00, 0x4d, 0x45, 0x54, 0x41, 0x3a, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x00, 0x52, 0x7d, 0xfb,
0x77, 0x52, 0x54, 0x53, 0x43, 0x00, 0x01, 0x52, 0x56, 0xf2, 0x4f, 0x15, 0x00, 0x00, 0x00, 0x03,
0x00, 0x00, 0x00, 0x55, 0x52, 0x4c, 0x00, 0x00, 0x00, 0x39, 0x43, 0x00, 0x00, 0x2a, 0x43, 0x00,
0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4d, 0x45, 0x54, 0x41, 0x3a, 0x75, 0x72, 0x6c, 0x00,
0x52, 0x54, 0x5b, 0xe3, 0x52, 0x54, 0x53, 0x43, 0x00, 0x01, 0x52, 0x56, 0xf2, 0x4f, 0x15, 0x00,
0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x00, 0x00,
0x00, 0xb9, 0x43, 0x00, 0x00, 0x02, 0x43, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x4d,
0x45, 0x54, 0x41, 0x3a, 0x6b, 0x65, 0x79, 0x77, 0x00, 0x52, 0xdc, 0xf3, 0xdb, 0x52, 0x54, 0x53,
0x43, 0x00, 0x01, 0x52, 0x56, 0xf2, 0x4f, 0x15, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4d,
0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x00, 0x00, 0xc0, 0x00, 0x44, 0x00, 0x00, 0x16, 0x43,
0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x2f, 0x6d, 0x6f,
0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x00, 0x45, 0x6d, 0x4b, 0x5d, 0x45, 0x4d, 0x49, 0x54, 0x01,
0x00, 0x52, 0x56, 0xf2, 0x4f, 0x15, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x47, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x00, 0x00, 0x00, 0x2a, 0x44, 0x00, 0x00,
0xa0, 0x41, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x47, 0x4f, 0x4f, 0x47, 0x4c, 0x45,
0x3a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x00, 0x47, 0xde, 0xef, 0xfc, 0x47, 0x4e, 0x4f, 0x4c, 0x00,
0x01 };
static uint8 folders_attrs_2[] = {
0x52, 0xf5, 0x5e, 0x6f, 0x0a, 0x00, 0x00, 0x00, 0x74, 0x73, 0x6c, 0x54, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x47, 0xde, 0xef, 0xfc, 0x47, 0x4e, 0x4f, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01 };
struct attr_entry folders_attrs[] = {
{ "BEOS:TYPE", /*B_MIME_STRING_TYPE*/'MIMS', SZSTR("application/x-vnd.Be-directory") },
{ "_trk/columns_le", 'RAWT', SZTAB(folders_attrs_1) },
{ "_trk/viewstate_le", 'RAWT', SZTAB(folders_attrs_2) },
{ "", 'RAWT', SZTAB(folders_attrs_2) },
{ NULL, 0, 0, NULL } /* end of list */
};
struct attr_entry bookmark_attrs[] = {
{ "BEOS:TYPE", /*B_MIME_STRING_TYPE*/'MIMS', SZSTR("application/x-vnd.Be-bookmark") },
{ NULL, 0, 0, NULL } /* end of list */
};
/* for debugging */
//static int32 fake_bm_attr_1 = 1;
struct attr_entry fake_bookmark_attrs[] = {
{ "BEOS:TYPE", /*B_MIME_STRING_TYPE*/'MIMS', SZSTR("application/x-vnd.Be-bookmark") },
{ "META:title", 'CSTR', SZSTR("Plop!") },
{ "META:url", 'CSTR', SZSTR("http://127.0.0.1/") },
{ "META:keyw", 'CSTR', SZSTR("plop") },
{ NULL, 0, 0, NULL } /* end of list */
};
static uint8 template_1_attrs_1 = 1;
static int32 template_1_attrs_2 = 1;
static uint8 template_1_attrs_3[] = {
0x31, 0x42, 0x4F, 0x46, 0x01, 0x00, 0x00, 0x98, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x0F, 0x47, 0x4E, 0x4F, 0x4C, 0x04, 0x0C, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6F, 0x6E,
0x44, 0x61, 0x74, 0x65, 0x51, 0xEA, 0xC7, 0x41, 0x0F, 0x47, 0x4E, 0x4C, 0x4C, 0x08, 0x08, 0x63,
0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B,
0x52, 0x54, 0x53, 0x43, 0x08, 0x0A, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4E, 0x61, 0x6D, 0x65,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x41, 0x0B, 0x52, 0x54, 0x53, 0x43, 0x10, 0x0A, 0x76,
0x6F, 0x6C, 0x75, 0x6D, 0x65, 0x4E, 0x61, 0x6D, 0x65, 0x07, 0x00, 0x00, 0x00, 0x47, 0x6F, 0x6F,
0x67, 0x6C, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x52, 0x54, 0x53, 0x43, 0x10, 0x07,
0x66, 0x73, 0x68, 0x4E, 0x61, 0x6D, 0x65, 0x09, 0x00, 0x00, 0x00, 0x67, 0x6F, 0x6F, 0x67, 0x6C,
0x65, 0x66, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00 };
static int32 template_1_attrs_4 = 0x4662796E;
static uint8 template_1_attrs_5[] = {
0x00, 0x00, 0x06, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00 };
static int32 template_1_attrs_6 = 0x00000027;
static int32 template_1_attrs_7 = 0x00000000;
static uint8 template_1_attrs_8[] = {
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x82, 0x43, 0x00, 0x00, 0xA0, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xE0, 0x9F, 0x44, 0x00, 0xC0, 0x7F, 0x44, 0xFF, 0xFF, 0xFF, 0xFF };
static uint8 template_1_attrs_9[] = {
0x00, 0x00, 0x00, 0x00, 0x58, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x44,
0x00, 0x00, 0x0c, 0x44 };
static uint8 template_1_attrs_11[] = {
0x52, 0xf5, 0x5e, 0x6f, 0x0a, 0x00, 0x00, 0x00, 0x74, 0x73, 0x6c, 0x54, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x47, 0xde, 0xef, 0xfc, 0x47, 0x4e, 0x4f, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01 };
struct attr_entry template_1_attrs[] = {
{ "BEOS:TYPE", /*B_MIME_STRING_TYPE*/'MIMS', SZSTR("application/x-vnd.Be-queryTemplate") },
{ "_trk/qrystr", 'CSTR', SZSTR("((name==\"*[aA][nN][yY][tT][hH][iI][nN][gG] [yY][oO][uU]\\'[dD] [lL][iI][kK][eE] [tT][oO] [sS][eE][aA][rR][cC][hH] ?*\")&&(BEOS:TYPE==\"application/x-vnd.Be-bookmark\"))") },
{ "_trk/queryDynamicDate", 'BOOL', 1, &template_1_attrs_1 },
{ "_trk/recentQuery", 'LONG', sizeof(int32), &template_1_attrs_2 },
{ "_trk/qryvol1", 'MSGG', SZTAB(template_1_attrs_3) },
{ "_trk/qryinitmime", 'CSTR', SZSTR("Bookmark") },
{ "_trk/qryinitmode", 'LONG', sizeof(int32), &template_1_attrs_4 },
{ "_trk/qrymoreoptions_le", 'RAWT', SZTAB(template_1_attrs_5) },
{ "_trk/qryinitstr", 'CSTR', SZSTR("Anything you'd like to search ?") },
{ "_trk/focusedView", 'CSTR', SZSTR("TextControl") },
{ "_trk/focusedSelEnd", 'LONG', sizeof(int32), &template_1_attrs_6 },
{ "_trk/focusedSelStart", 'LONG', sizeof(int32), &template_1_attrs_7 },
{ "_trk/xtpinfo_le", 'RAWT', SZTAB(template_1_attrs_8) },
{ "_trk/pinfo_le", 'RAWT', SZTAB(template_1_attrs_9) },
{ "_trk/columns_le", 'RAWT', SZTAB(folders_attrs_1)/*SZTAB(template_1_attrs_10)*/ },
{ "_trk/viewstate_le", 'RAWT', SZTAB(template_1_attrs_11) },
{ NULL, 0, 0, NULL } /* end of list */
};
static int32 text_attrs_1 = 0x0000FFFF;
static int32 text_attrs_2 = 0x00000000;
static uint8 text_attrs_3 = 1;
static uint8 text_attrs_4[] = {
0x41, 0x6c, 0x69, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
0x53, 0x77, 0x69, 0x73, 0x37, 0x32, 0x31, 0x20, 0x42, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x52, 0x6f, 0x6d, 0x61, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x41, 0x60, 0x00, 0x00, 0x42, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x28, 0x53, 0x77, 0x69, 0x73, 0x37, 0x32, 0x31, 0x20, 0x42, 0x54, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x52, 0x6f, 0x6d, 0x61, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x41, 0x60, 0x00, 0x00, 0x42, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x53, 0x77, 0x69, 0x73, 0x37, 0x32, 0x31, 0x20,
0x42, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6f, 0x6d, 0x61, 0x6e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x60, 0x00, 0x00, 0x42, 0xb4, 0x00, 0x00,
0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x53, 0x77, 0x69, 0x73,
0x37, 0x32, 0x31, 0x20, 0x42, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6f, 0x6d, 0x61,
0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x60, 0x00, 0x00,
0x42, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47,
0x53, 0x77, 0x69, 0x73, 0x37, 0x32, 0x31, 0x20, 0x42, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x52, 0x6f, 0x6d, 0x61, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x41, 0x20, 0x00, 0x00, 0x42, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00 };
struct attr_entry text_attrs[] = {
{ "BEOS:TYPE", /*B_MIME_STRING_TYPE*/'MIMS', SZSTR("text/plain") },
{ "be:encoding", 'LONG', sizeof(int32), &text_attrs_1 },
{ "alignment", 'LONG', sizeof(int32), &text_attrs_2 },
{ "wrap", 'BOOL', sizeof(uint8), &text_attrs_3 },
{ "styles", 'RAWT', SZTAB(text_attrs_4) },
{ NULL, 0, 0, NULL } /* end of list */
};
char *readmestr = \
"Welcome to the Web Search FileSystem for BeOS™, Zeta™ and Haiku®.\n"
"Copyright© 2004-2008, François Revol.\n"
"DuckDuckGo is a trademark of DuckDuckGo.\n"
"BeOS is a trademark of ACCESS.\n"
"Zeta is a trademark of yellowTAB GmbH.\n"
"Haiku is a trademark of Haiku, Inc.\n"
"\n"
"Use \"Search the Web\" query template in this folder to search anything.\n"
"\n";
struct attr_entry mailto_me_bookmark_attrs[] = {
{ "BEOS:TYPE", /*B_MIME_STRING_TYPE*/'MIMS', SZSTR("application/x-person") },
{ "META:email", 'CSTR', SZSTR("[email protected]") },
{ "META:name", 'CSTR', SZSTR("François Revol") },
{ "META:country", 'CSTR', SZSTR("France") },
{ "META:nickname", 'CSTR', SZSTR("mmu_man") },
//{ "META:company", 'CSTR', SZSTR("yellowTAB GmbH") },
{ "META:url", 'CSTR', SZSTR("http://revolf.free.fr/") },
{ "META:group", 'CSTR', SZSTR("") },
{ "IM:connections", 'CSTR', SZSTR("icq:77792625;gtalk:[email protected];yahoo:mmu_man;msn:[email protected]") },
{ NULL, 0, 0, NULL } /* end of list */
};
@@ -1,11 +1,10 @@
File: Search Google a
File: Search The Web a
Type Size Name Value
---------- ---------- ---------------------------------- -----------------------------------------------------------------
'MIMS' 35 "BEOS:TYPE" "application/x-vnd.Be-queryTemplate"
STRING 191 "_trk/qrystr" "((name==\"*[aA][nN][yY] [qQ][uU][eE][sS][tT][iI][oO][nN] [yY][o"
"O][uU]\\'[dD] [lL][iI][kK][eE] [tT][oO] [aA][sS][kK] [gG][oO][o"
"O][gG][lL][eE] ?*\")&&(BEOS:TYPE==\"application/x-vnd.Be-bookma"
"rk\"))"
STRING 191 "_trk/qrystr" "((name==\"*[aA][nN][yY][tT][hH][iI][nN][gG] [yY][oO][uU]\\'[dD]"
"[lL][iI][kK][eE] [tT][oO] [sS][eE][aA][rR][cC][hH] ?*\")&&(BEOS"
":TYPE==\"application/x-vnd.Be-bookmark\"))"
BOOL 1 "_trk/queryDynamicDate" TRUE
INT32 4 "_trk/recentQuery" 1 0x00000001
MESSAGE 152 "_trk/qryvol1" 31 42 4F 46 01 00 00 98-98 00 00 00 00 00 00 00 1BOF............
@@ -23,7 +22,7 @@ INT32 4 "_trk/qryinitmode" 1180858734 0x4662796
RAW 36 "_trk/qrymoreoptions_le" 00 00 06 EC 00 00 00 00-01 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
00 00 00 00 - ....
STRING 40 "_trk/qryinitstr" "Any question you'd like to ask google ?"
STRING 40 "_trk/qryinitstr" "Anything you'd like to search ?"
STRING 12 "_trk/focusedView" "TextControl"
INT32 4 "_trk/focusedSelEnd" 39 0x00000027
INT32 4 "_trk/focusedSelStart" 0 0x00000000
+2
View File
@@ -0,0 +1,2 @@
#!/bin/sh
open `query -v /Web/ '((name=="*'"$*"'*")&&(BEOS:TYPE=="application/x-vnd.Be-bookmark"))' | xargs catattr META:url | head -1`
@@ -0,0 +1,2 @@
#!/bin/sh
query -v /Web/ '((name=="*'"$*"'*")&&(BEOS:TYPE=="application/x-vnd.Be-bookmark"))' | xargs catattr META:url
@@ -8,7 +8,7 @@
-attribute "META:title" -attrName "Title" \
-attrType 'CSTR' -attrWidth 130 -attrAlignment left \
-attrViewable 1 -attrEditable 1 -attrExtra 0 \
-attribute "GOOGLE:order" -attrName "Google order" \
-attribute "WEBSEARCH:order" -attrName "Search result order" \
-attrType 'LONG' -attrWidth 40 -attrAlignment right \
-attrViewable 1 -attrEditable 1 -attrExtra 0 \
-miniIcon ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff00003f1b0000ffffffff\
@@ -1,11 +1,6 @@
# googlefs configuration file
# websearchfs configuration file
#
# IP of the google server to query
server 66.102.11.99
# alternative one:
#server 74.125.45.100
# max number of vnodes allowed in the fs (to limit RAM usage)
# 10 <= allowed <= 1000000
max_nodes 5000
@@ -12,9 +12,9 @@
#include <arpa/inet.h>
#include <malloc.h>
#include <sys/socket.h>
#include "google_request.h"
#include "duckduckgo_request.h"
#include "googlefs.h"
#include "websearchfs.h"
#include "lists2.h"
#include "settings.h"
#include "string_utils.h"
@@ -25,21 +25,23 @@
using namespace BPrivate::Network;
#define DO_PUBLISH
//#define FAKE_INPUT "/boot/home/devel/drivers/googlefs/log2.html"
//#define FAKE_INPUT "/boot/home/devel/drivers/websearchfs/log2.html"
#define TESTURL "http://www.google.com/search?hl=en&ie=UTF-8&num=50&q=beos"
#define TESTURL "http://www.duckduckgo.com/search?hl=en&ie=UTF-8&num=50&q=beos"
#define BASEURL "https://html.duckduckgo.com/html/?kd=-1"
// kd=-1 disables redirection of all URLs through duckduckgo servers
#define FMT_NUM "&num=%u"
// TODO remove this, duckduckgo does not have this option
#define FMT_Q "&q=%s"
/* parse_google_html.c */
extern int google_parse_results(const char *html, size_t htmlsize, long *nextid, struct google_result **results);
/* parse_duckduckgo_html.c */
extern int duckduckgo_parse_results(const char *html, size_t htmlsize, long *nextid, struct duckduckgo_result **results);
status_t google_request_process(struct google_request *req)
status_t duckduckgo_request_process(struct duckduckgo_request *req)
{
struct BUrlRequest *cnx = NULL;
struct google_result *res;
struct duckduckgo_result *res;
status_t err;
int count;
char *p = NULL;
@@ -62,7 +64,7 @@ status_t google_request_process(struct google_request *req)
sprintf(url+strlen(url), FMT_NUM, (unsigned int)max_results);
sprintf(url+strlen(url), FMT_Q, p);
fprintf(stderr, "google_request: final URL: %s\n", url);
fprintf(stderr, "duckduckgo_request: final URL: %s\n", url);
cnx = BUrlProtocolRoster::MakeRequest(url, &output, NULL);
if (cnx == NULL)
@@ -71,11 +73,11 @@ status_t google_request_process(struct google_request *req)
t = cnx->Run();
wait_for_thread(t, &err);
fprintf(stderr, "google_request: buffer @ %p, len %ld\n", output.Buffer(), output.BufferLength());
fprintf(stderr, "duckduckgo_request: buffer @ %p, len %ld\n", output.Buffer(), output.BufferLength());
{
int fd;
// debug output
fd = open("/tmp/google.html", O_CREAT|O_TRUNC|O_RDWR, 0644);
fd = open("/tmp/duckduckgo.html", O_CREAT|O_TRUNC|O_RDWR, 0644);
write(fd, output.Buffer(), output.BufferLength());
close(fd);
}
@@ -100,19 +102,19 @@ status_t google_request_process(struct google_request *req)
close(fd);
}
#endif /* FAKE_INPUT */
err = count = google_parse_results((const char*)output.Buffer(), output.BufferLength(),
err = count = duckduckgo_parse_results((const char*)output.Buffer(), output.BufferLength(),
&req->nextid, &req->results);
if (err < 0)
goto err_get;
#ifdef DO_PUBLISH
while ((res = SLL_DEQUEUE(req->results, next))) {
res->next = NULL;
googlefs_push_result_to_query(req, res);
websearchfs_push_result_to_query(req, res);
}
#endif
free(url);
free(p);
// request is kept and deleted in google_request_close
// request is kept and deleted in duckduckgo_request_close
return B_OK;
@@ -126,12 +128,12 @@ err_con:
return err;
}
status_t google_request_process_async(struct google_request *req)
status_t duckduckgo_request_process_async(struct duckduckgo_request *req)
{
return ENOSYS;
}
status_t google_request_close(struct google_request *req)
status_t duckduckgo_request_close(struct duckduckgo_request *req)
{
if (!req)
return EINVAL;
@@ -142,15 +144,15 @@ status_t google_request_close(struct google_request *req)
return B_OK;
}
status_t google_request_open(const char *query_string, struct fs_volume *volume, struct fs_node *query_node, struct google_request **req)
status_t duckduckgo_request_open(const char *query_string, struct fs_volume *volume, struct fs_node *query_node, struct duckduckgo_request **req)
{
struct google_request *r;
struct duckduckgo_request *r;
if (!req)
return EINVAL;
r = (google_request*)malloc(sizeof(struct google_request));
r = (duckduckgo_request*)malloc(sizeof(struct duckduckgo_request));
if (!r)
return ENOMEM;
memset(r, 0, sizeof(struct google_request));
memset(r, 0, sizeof(struct duckduckgo_request));
r->query_string = strdup(query_string);
r->volume = volume;
r->query_node = query_node;
@@ -158,7 +160,7 @@ status_t google_request_open(const char *query_string, struct fs_volume *volume,
return B_OK;
}
status_t google_request_free(struct google_request *req)
status_t duckduckgo_request_free(struct duckduckgo_request *req)
{
if (!req)
return EINVAL;
@@ -0,0 +1,55 @@
/*
* Copyright 2004-2008, François Revol, <revol@free.fr>.
* Distributed under the terms of the MIT License.
*/
#ifndef _DUCKDUCKGO_REQUEST_H
#define _DUCKDUCKGO_REQUEST_H
#ifdef __cplusplus
#include <UrlRequest.h>
using namespace BPrivate::Network;
extern "C" {
#else
struct BUrlRequest;
typedef struct BUrlRequest BUrlRequest;
#endif
struct duckduckgo_request {
struct duckduckgo_request *next;
struct fs_volume *volume;
struct fs_node *query_node; /* root folder for that query */
char *query_string;
BUrlRequest *cnx;
struct duckduckgo_result *results;
long nextid;
};
/* those are quite arbitrary values */
#define GR_MAX_NAME 70
#define GR_MAX_PROTO 16
#define GR_MAX_URL 1024
#define GR_MAX_SNIPSET 256
struct duckduckgo_result {
struct duckduckgo_result *next;
long id;
char name[GR_MAX_NAME];
char proto[GR_MAX_PROTO];
char url[GR_MAX_URL];
char snipset[GR_MAX_SNIPSET];
char cache_url[GR_MAX_URL];
char similar_url[GR_MAX_URL];
};
extern status_t duckduckgo_request_process(struct duckduckgo_request *req);
extern status_t duckduckgo_request_process_async(struct duckduckgo_request *req);
extern status_t duckduckgo_request_close(struct duckduckgo_request *req);
extern status_t duckduckgo_request_open(const char *query_string, struct fs_volume *volume, struct fs_node *query_node, struct duckduckgo_request **req);
extern status_t duckduckgo_request_free(struct duckduckgo_request *req);
extern int duckduckgo_parse_results(const char *html, size_t htmlsize, long *nextid, struct duckduckgo_result **results);
#ifdef __cplusplus
}
#endif
#endif /* _DUCKDUCKGO_REQUEST_H */
@@ -11,7 +11,7 @@
#include <unistd.h>
#include <OS.h>
#include <KernelExport.h>
#include "google_request.h"
#include "duckduckgo_request.h"
#include "string_utils.h"
#define TESTME
@@ -21,7 +21,7 @@
#undef TESTME
#endif
#define DBG "googlefs: parse_html: "
#define DBG "duckduckgofs: parse_html: "
#ifdef TESTME
#define BUFSZ (128*1024)
@@ -40,9 +40,9 @@ int dbgstep = 0;
#define G_BEGIN_CACHESIM " <a class=fl href=\""
#define G_END_CACHESIM "\">"
int google_parse_results(const char *html, size_t htmlsize, long *nextid, struct google_result **results)
int duckduckgo_parse_results(const char *html, size_t htmlsize, long *nextid, struct duckduckgo_result **results)
{
struct google_result *res = NULL, *nres = NULL, *prev = NULL;
struct duckduckgo_result *res = NULL, *nres = NULL, *prev = NULL;
char *p, *q;
char *nextresult = NULL;
long numres = 0;
@@ -60,7 +60,6 @@ int google_parse_results(const char *html, size_t htmlsize, long *nextid, struct
return EINVAL;
}
PRST;
// p = strstr(html, "<title>Google Search:");
p = strstr(html, "DuckDuckGo");
if (!p) return EINVAL;
PRST;
@@ -85,12 +84,12 @@ int google_parse_results(const char *html, size_t htmlsize, long *nextid, struct
#ifdef TESTME
dbgstep = 0;
#endif
nres = malloc(sizeof(struct google_result));
nres = malloc(sizeof(struct duckduckgo_result));
if (!nres) {
// XXX: cleanup!
goto err0;
}
memset(nres, 0, sizeof(struct google_result));
memset(nres, 0, sizeof(struct duckduckgo_result));
nres->id = (*nextid)++; //- 1;
PRST;
@@ -119,7 +118,6 @@ int google_parse_results(const char *html, size_t htmlsize, long *nextid, struct
urlp[itemlen] = '\0';
/* find name */
//<b>Google</b> Web APIs - FAQ</a><table
item = p;
p = strstr(p, G_END_NAME);
if (!p) break;
@@ -158,7 +156,6 @@ int google_parse_results(const char *html, size_t htmlsize, long *nextid, struct
#if 0
/* find snipset */
//<td class=j><font size=-1><b>...</b> a custom Java client library, documentation on <b>how</b> <b>to</b> use the <b>...</b> You can find it at http://<b>api</b>.<b>google</b>.com/GoogleSearch.wsdl <b>...</b> need to get started is in <b>googleapi</b>.jar <b>...</b> <br>
if (!p) break;
q = strstr(p, G_BEGIN_SNIPSET);
if (q && (!nextresult || (q < nextresult))) {
@@ -194,7 +191,6 @@ int google_parse_results(const char *html, size_t htmlsize, long *nextid, struct
#endif
/* find cache/similar url */
// <a class=fl href="http://216.239.59.104/search?q=cache:vR7BaPWutnkJ:www.google.com/apis/api_faq.html+google+api++help+%22frequently+asked%22+-plop&hl=en&lr=lang_en&ie=UTF-8">Cached</a>
for (i = 0; i < 2; i++) {
if (!p) break;
q = strstr(p, G_BEGIN_CACHESIM);
@@ -249,8 +245,8 @@ err0:
#ifdef TESTME
int main(int argc, char **argv)
{
struct google_result *results;
struct google_result *tag1 = (void*)0xaaaa5555, *res = NULL, *tag2 = (void*)0x5555aaaa;
struct duckduckgo_result *results;
struct duckduckgo_result *tag1 = (void*)0xaaaa5555, *res = NULL, *tag2 = (void*)0x5555aaaa;
size_t len;
char *p;
int err;
@@ -261,7 +257,7 @@ int main(int argc, char **argv)
p[BUFSZ+4-1] = '\0';
*(uint32 *)p = 0xa5a5a5a5;
*(uint32 *)(&p[BUFSZ+4]) = 0x5a5a5a5a;
err = google_parse_results(p+4, len, &nextid, &results);
err = duckduckgo_parse_results(p+4, len, &nextid, &results);
printf("error 0x%08x\n", err);
if (err < 0)
return 1;
@@ -10,7 +10,7 @@
#include <sys/param.h>
#ifndef TEST_RB
//#include "lock.h"
#include "googlefs.h"
#include "websearchfs.h"
#endif
#ifdef TEST_RB
@@ -11,10 +11,7 @@
#include <stdio.h>
#define DEFAULT_GOOGLE_SERVER "74.125.136.105"
#define DEFAULT_MAX_VNODES 5000
char google_server[20] = DEFAULT_GOOGLE_SERVER;
int google_server_port = 80;
uint32 max_vnodes = DEFAULT_MAX_VNODES;
uint32 max_results = 50;
bool sync_unlink_queries = false;
@@ -23,19 +20,11 @@ status_t load_settings(void)
{
void *handle;
const char *val;
handle = load_driver_settings("googlefs");
handle = load_driver_settings("websearchfs");
if (!handle)
return ENOENT;
fprintf(stderr, "googlefs: loaded settings\n");
val = get_driver_parameter(handle, "server", \
DEFAULT_GOOGLE_SERVER, DEFAULT_GOOGLE_SERVER);
strncpy(google_server, val, 20);
google_server[20-1] = '\0';
val = get_driver_parameter(handle, "port", "80", "80");
google_server_port = strtoul(val, NULL, 10);
fprintf(stderr, "websearchfs: loaded settings\n");
val = get_driver_parameter(handle, "max_nodes", "5000", "5000");
max_vnodes = strtoul(val, NULL, 10);
@@ -49,10 +38,9 @@ status_t load_settings(void)
sync_unlink_queries = get_driver_boolean_parameter(handle, "sync_unlink", false, true);
fprintf(stderr, "googlefs: settings: server = %s\n", google_server);
fprintf(stderr, "googlefs: settings: max_nodes = %" B_PRIu32 "\n", max_vnodes);
fprintf(stderr, "googlefs: settings: max_results = %" B_PRIu32 " \n", max_results);
fprintf(stderr, "googlefs: settings: sync_unlink = %c\n", sync_unlink_queries?'t':'f');
fprintf(stderr, "websearchfs: settings: max_nodes = %" B_PRIu32 "\n", max_vnodes);
fprintf(stderr, "websearchfs: settings: max_results = %" B_PRIu32 " \n", max_results);
fprintf(stderr, "websearchfs: settings: sync_unlink = %c\n", sync_unlink_queries?'t':'f');
unload_driver_settings(handle);
return B_OK;
}
@@ -10,8 +10,6 @@ extern "C" {
#endif
/* settings */
extern char google_server[20];
extern int google_server_port;
extern uint32 max_vnodes;
extern uint32 max_results;
extern bool sync_unlink_queries;
@@ -5,7 +5,7 @@
#ifndef _VNIDPOOL_H
#define _VNIDPOOL_H
#include "googlefs.h"
#include "websearchfs.h"
typedef struct vnidpool {
lock lock;
@@ -2,8 +2,8 @@
* Copyright 2004-2008, François Revol, <revol@free.fr>.
* Distributed under the terms of the MIT License.
*/
#ifndef _GOOGLEFS_H
#define _GOOGLEFS_H
#ifndef _WEBSEARCHFS_H
#define _WEBSEARCHFS_H
/* wrappers */
#ifdef __HAIKU__
@@ -34,13 +34,13 @@ typedef dev_t nspace_id;
#include <SupportDefs.h>
/* should be more than enough */
//#define GOOGLEFS_NAME_LEN B_OS_NAME_LENGTH
//#define GOOGLEFS_NAME_LEN 64 /* GR_MAX_NAME */
/* some google results are a bit more than 64 */
#define GOOGLEFS_NAME_LEN 70 /* GR_MAX_NAME */
//#define WEBSEARCHFS_NAME_LEN B_OS_NAME_LENGTH
//#define WEBSEARCHFS_NAME_LEN 64 /* GR_MAX_NAME */
/* some DuckDuckGo results are a bit more than 64 */
#define WEBSEARCHFS_NAME_LEN 70 /* GR_MAX_NAME */
#define GOOGLEFS_NAME "googlefs"
#define GOOGLEFS_PRETTY_NAME "Google Bookmark File System"
#define WEBSEARCHFS_NAME "websearchfs"
#define WEBSEARCHFS_PRETTY_NAME "Web Search Bookmark File System"
#define MAX_VNIDS 5000
@@ -73,7 +73,7 @@ struct fs_node
struct fs_node *parent, *children;
struct fs_file_cookie *opened; /* opened on this node */
char name[GOOGLEFS_NAME_LEN];
char name[WEBSEARCHFS_NAME_LEN];
ino_t vnid;
lock l;
@@ -82,8 +82,8 @@ struct fs_node
int qcompleted:1;
int hidden:1; /* don't list in readdir */
struct stat st; /* including S_IFDIR in st_mode */
struct google_request *request; /* set on root folder for a query */
struct google_result *result; /* for query results */
struct duckduckgo_request *request; /* set on root folder for a query */
struct duckduckgo_result *result; /* for query results */
struct attr_entry *attrs_indirect;
struct attr_entry attrs[10];
void *data;
@@ -128,12 +128,13 @@ typedef struct fs_file_cookie fs_file_cookie;
ino_t new_vnid(fs_nspace *ns);
int googlefs_event(fs_nspace *ns, fs_node *node, int flags);
int websearchfs_event(fs_nspace *ns, fs_node *node, int flags);
/* used by the requester to publish entries in queries
* result = NULL to notify end of list
*/
extern int googlefs_push_result_to_query(struct google_request *request, struct google_result *result);
extern int websearchfs_push_result_to_query(struct duckduckgo_request *request,
struct duckduckgo_result *result);
#ifdef __cplusplus
}
@@ -1,5 +1,5 @@
/*
** googlefs.rdef
** websearchfs.rdef
**
** Automatically generated by BResourceParser on
** Saturday, January 20, 2007 at 01:48:42.