<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>18987</bug_id>
          
          <creation_ts>2008-05-10 10:02:09 -0700</creation_ts>
          <short_desc>[GTK] Implement SharedBuffer::createWithContentsOfFile and KURL::fileSystemPath</short_desc>
          <delta_ts>2008-09-23 14:10:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Marco Barisione">marco.barisione</reporter>
          <assigned_to name="Marco Barisione">marco.barisione</assigned_to>
          <cc>zecke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>80077</commentid>
    <comment_count>0</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-10 10:02:09 -0700</bug_when>
    <thetext>SharedBuffer::createWithContentsOfFile and KURL::fileSystemPath are not implemented, this prevents user stylesheets to work.

I&apos;m writing a patch for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80080</commentid>
    <comment_count>1</comment_count>
      <attachid>21057</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-10 10:37:02 -0700</bug_when>
    <thetext>Created attachment 21057
Implement the missing functions

After this change &quot;user-stylesheet-uri&quot; works again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80167</commentid>
    <comment_count>2</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-05-12 04:58:09 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=21057) [edit]
&gt; Implement the missing functions
&gt; 
&gt; After this change &quot;user-stylesheet-uri&quot; works again.


The userstyle path is local by definition, why didn&apos;t you use g_file_get_contents? </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80169</commentid>
    <comment_count>3</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-12 05:23:33 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; The userstyle path is local by definition, why didn&apos;t you use
&gt; g_file_get_contents?

g_file_get_contents() allocates a new buffer that then must be copied in ther SharedBuffer. Maybe this is not a problem for a css file but this function is generic so I wanted to avoid a useless memory allocation.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80176</commentid>
    <comment_count>4</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-12 07:13:50 -0700</bug_when>
    <thetext>Hm, I realised that it will not work on Windows because I use g_io_channel_unix_get_fd.

The function is used only to read the template for directory listing when using FTP and to read CSS, so the files should be small enough to just use g_file_get_contents().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80180</commentid>
    <comment_count>5</comment_count>
      <attachid>21080</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-12 08:34:25 -0700</bug_when>
    <thetext>Created attachment 21080
Implement the missing functions and use g_file_contents() to read the file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84146</commentid>
    <comment_count>6</comment_count>
      <attachid>21080</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-06-23 09:31:40 -0700</bug_when>
    <thetext>Comment on attachment 21080
Implement the missing functions and use g_file_contents() to read the file

Sorry, I have to say r=- on this one. I will be on irc tomorrow we can resolve this and land the patch without waiting another month.

comments:
   - the goto is unusual, we tend to use early exits
   - KURL::fileSystemPath does not work with utf8 encoded paths as String path(char*) works only on latin1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84381</commentid>
    <comment_count>7</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-06-25 03:47:08 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; comments:
&gt;    - the goto is unusual, we tend to use early exits

The first version of the patch was based on the win port that uses gotos, when rewriting it to use g_file_get_contents() I din&apos;t change the structure of the code. I can fix it in the next version of the patch.

&gt;    - KURL::fileSystemPath does not work with utf8 encoded paths as String
&gt; path(char*) works only on latin1.

What do you mean?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87143</commentid>
    <comment_count>8</comment_count>
    <who name="Unavowed">unavowed</who>
    <bug_when>2008-07-28 04:50:55 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; comments:
&gt; &gt;    - the goto is unusual, we tend to use early exits
&gt; 
&gt; The first version of the patch was based on the win port that uses gotos, when
&gt; rewriting it to use g_file_get_contents() I din&apos;t change the structure of the
&gt; code. I can fix it in the next version of the patch.
&gt; 
&gt; &gt;    - KURL::fileSystemPath does not work with utf8 encoded paths as String
&gt; &gt; path(char*) works only on latin1.
&gt; 
&gt; What do you mean?
&gt; 

I think he means you should use String::fromUTF8() in String KURL::fileSystemPath(), instead of the normal String constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87955</commentid>
    <comment_count>9</comment_count>
      <attachid>22679</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-08-06 07:12:04 -0700</bug_when>
    <thetext>Created attachment 22679
Implement missing functions

I should have adressed all the problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88336</commentid>
    <comment_count>10</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-08-12 13:59:29 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created an attachment (id=22679) [edit]
&gt; Implement missing functions
&gt; 
&gt; I should have adressed all the problems.

Okay, SharedBuffer::createWithContentsOfFile is ready, if you want to land this go ahead.

KURL::fileSystemPath... in the windows port and other places early exits are popular. e.g.

if (!filename)
  return String();

other_code

also glib documentation and code do not agree.

+    gchar* filename = g_filename_from_uri(m_string.utf8().data(), 0, 0);

g_filename_from_uri takes the URI as ASCII and returns in filesystem encoding (I assume that is utf8). Should we assume m_string is a properly encoded URL (all ascii?) and that utf8() is not creating any issue?

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88892</commentid>
    <comment_count>11</comment_count>
      <attachid>22679</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-08-19 22:10:39 -0700</bug_when>
    <thetext>Comment on attachment 22679
Implement missing functions

A few comments:

In KURL::fileSystemPath, there&apos;s no need for the &quot;else&quot; since the &quot;if&quot; branch returns.

In SharedBuffer::createWithContentsOfFile, &quot;result&quot; should be declared at the point it is first used rather than towards the top of the function.

It also seems bad that this results in allocating twice the file size in memory.  Avoiding the extra allocation and memcpy would be a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89091</commentid>
    <comment_count>12</comment_count>
      <attachid>22679</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-22 02:00:21 -0700</bug_when>
    <thetext>Comment on attachment 22679
Implement missing functions

We generally try to use a &quot;no else after return&quot; as well as &quot;prefer early return instead of long if blocks&quot; coding style in WebCore.  I would have written
+String KURL::fileSystemPath() const

instead as:

+String KURL::fileSystemPath() const
+{
+    gchar* filename = g_filename_from_uri(m_string.utf8().data(), 0, 0);
       if (!filename)
           return String();
       String path = String::fromUTF8(filename);
+    g_free(filename);
+    return path;
+}

Namespaces don&apos;t need a ; after them.  All namespaces closes should have a comment though.  So this is mostly right:
}; // namespace WebCore
just no need for the ;, and several other } namespace closes should have a comment.

Could we make up a GFreePtr?  Which just called g_free on its contents when they go out of scope?  That would get rid of about half of the lines of this patch... since they all deal with silly manual memory management. :(  You&apos;d have to add an accessor to GFreePtr to get a reference to the storage location of the data pointer so you could pass it to these sorts of methods which return raw pointers as argument references.

For example... does contents need to be free&apos;d here?

 if (!g_file_get_contents(filename, &amp;contents, &amp;size, &amp;error)) {
 43         LOG_ERROR(&quot;Failed to fully read contents of file %s - %s&quot;, filePath.utf8().data(), error-&gt;message);
 44         g_error_free(error);
 45         g_free(filename);
 46         return 0;
 47     }

IF we had a smart pointer, we wouldn&apos;t need to care. :(

bah!

 49     result = SharedBuffer::create();
 50     result-&gt;m_buffer.resize(size);
 51     if (result-&gt;m_buffer.size() != size) {
 52         g_free(filename);
 53         g_free(contents);
 54         return 0;
 55     }

That&apos;s not the way I would write that.

Instead:

RefPtr&lt;SharedBuffer&gt; result = SharedBuffer::create(contents, size);
g_free(contents);
g_free(fillename);

return result.release();

createWithContentsOfFile needs to be fixed.  Please consider adding a smart pointer to be used in the GTK port, this manual memory management is a good way to crasher + leaks bugs down the road.

Thanks for the patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90155</commentid>
    <comment_count>13</comment_count>
      <attachid>23169</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-09-04 06:35:35 -0700</bug_when>
    <thetext>Created attachment 23169
Implement the missing functions

(In reply to comment #10)
&gt; KURL::fileSystemPath... in the windows port and other places early exits are
&gt; popular. e.g.

Fixed.

&gt; g_filename_from_uri takes the URI as ASCII and returns in filesystem encoding
&gt; (I assume that is utf8). Should we assume m_string is a properly encoded URL
&gt; (all ascii?) and that utf8() is not creating any issue?

URIs should always be in ASCII, file names are in the glib file name encoding (it depends on the locale and you can also have file names containing random junk). This means that it&apos;s impossible to store every possible file name in a String (while it would be possible to use a CString). All the code in WebKit GTK currently assumes that the file names are encoded in UTF-8, I suggest that we accept this patch as-is and I will write a patch for a separate bug to fix it everywhere.


(In reply to comment #11)
&gt; In KURL::fileSystemPath, there&apos;s no need for the &quot;else&quot; since the &quot;if&quot; branch
&gt; returns.

Fixed.
 
&gt; In SharedBuffer::createWithContentsOfFile, &quot;result&quot; should be declared at the
&gt; point it is first used rather than towards the top of the function.

Fixed.

&gt; It also seems bad that this results in allocating twice the file size in
&gt; memory.  Avoiding the extra allocation and memcpy would be a good idea.

I know but it&apos;s the only easily portable solution. GIOChannel cannot be used as it has no way of retrieving the file size unless you get the underlying file descriptor, but this causes problems on Windows. Note that this function is used only to read the content of user stylesheets and for sure they are not huge.


(In reply to comment #12)
&gt; We generally try to use a &quot;no else after return&quot; as well as &quot;prefer early
&gt; return instead of long if blocks&quot; coding style in WebCore.

Fixed.

&gt; Namespaces don&apos;t need a ; after them.  All namespaces closes should have a
&gt; comment though.

Fixed.

&gt; Could we make up a GFreePtr?  Which just called g_free on its contents when
&gt; they go out of scope?

I will write a separate patch for this. In the meantime I think that this patch could go in and we could fix the g_free later.

&gt; Instead:
&gt; 
&gt; RefPtr&lt;SharedBuffer&gt; result = SharedBuffer::create(contents, size);
&gt; g_free(contents);
&gt; g_free(fillename);

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90158</commentid>
    <comment_count>14</comment_count>
      <attachid>23170</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-09-04 07:06:04 -0700</bug_when>
    <thetext>Created attachment 23170
Implement missing functions

Sorry, I forgot the ChangeLog entry in the previous</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92060</commentid>
    <comment_count>15</comment_count>
      <attachid>23170</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-09-21 19:08:35 -0700</bug_when>
    <thetext>Comment on attachment 23170
Implement missing functions

The implementations look sane. I assume KURL::fileSystemPath needs to be touched after/when handling bug #23441?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92381</commentid>
    <comment_count>16</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-09-23 14:10:08 -0700</bug_when>
    <thetext>Landed in r36812. Thanks for the patch and review!

zecke: bug # 23441? </thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21057</attachid>
            <date>2008-05-10 10:37:02 -0700</date>
            <delta_ts>2008-05-12 08:34:25 -0700</delta_ts>
            <desc>Implement the missing functions</desc>
            <filename>implement-file-stubs.patch</filename>
            <type>text/plain</type>
            <size>7065</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQkocmV2aXNpb25lIDMzMDI2KQorKysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQko
Y29waWEgbG9jYWxlKQpAQCAtMTAzMSw2ICsxMDMxLDcgQEAKIAlXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2d0ay9Gb250Q2FjaGVHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9Gb250R3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS2V5RXZlbnRHdGsuY3Bw
IFwKKwlXZWJDb3JlL3BsYXRmb3JtL2d0ay9LVVJMR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvTGFuZ3VhZ2UuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJp
bmdzR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTG9nZ2luZ0d0ay5jcHAgXApAQCAt
MTA0Myw2ICsxMDQ0LDcgQEAKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5j
cHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlYXJjaFBvcHVwTWVudUd0ay5jcHAgXAogCVdl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwIFwKKwlXZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TaGFyZWRCdWZmZXJHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRU
aW1lckd0ay5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1NvdW5kR3RrLmNwcCBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU3lzdGVtVGltZUd0ay5jcHAgXApJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2d0ay9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCShyZXZpc2lvbmUgMzMwMjYpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2d0ay9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCShjb3BpYSBsb2NhbGUp
CkBAIC0zMSwxMCArMzEsOCBAQAogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgogI2luY2x1ZGUgIkZUUERpcmVjdG9yeURvY3VtZW50LmgiCi0jaW5jbHVkZSAiS1VS
TC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5o
IgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IApAQCAtNjYsOSArNjQsNSBAQAogU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyAmY2hhbGxlbmdlU3RyaW5n
LCBjb25zdCBLVVJMICZ1cmwpIHsgcmV0dXJuIFN0cmluZygpOyB9CiBmbG9hdCB1c2VySWRsZVRp
bWUoKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiAwLjA7IH0KIAotU3RyaW5nIEtVUkw6OmZp
bGVTeXN0ZW1QYXRoKCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gU3RyaW5nKCk7
IH0KLQotUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIDA7
IH0KLQogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRCdWZmZXJHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAJ
KHJldmlzaW9uZSAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkQnVmZmVyR3RrLmNw
cAkocmV2aXNpb25lIDApCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OCBDb2xsYWJvcmEgTHRkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorCisjaW5jbHVkZSAiQ1N0
cmluZy5oIgorCisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lu
Y2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICBpZiAoZmls
ZVBhdGguaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGdjaGFyKiBmaWxlbmFt
ZSA9IGdfZmlsZW5hbWVfZnJvbV91dGY4KGZpbGVQYXRoLnV0ZjgoKS5kYXRhKCksIC0xLCAwLCAw
LCAwKTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEdJT0No
YW5uZWwqIGNoYW5uZWwgPSBnX2lvX2NoYW5uZWxfbmV3X2ZpbGUoZmlsZW5hbWUsICJyIiwgMCk7
CisgICAgZ19mcmVlKGZpbGVuYW1lKTsKKyAgICBpZiAoIWNoYW5uZWwpIHsKKyAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBmaWxlICVzIHRvIGNyZWF0ZSBzaGFyZWQgYnVmZmVyIiwg
ZmlsZVBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAg
IGdfaW9fY2hhbm5lbF9zZXRfZW5jb2RpbmcoY2hhbm5lbCwgMCwgMCk7CisKKyAgICAvLyBTdGF0
IHRoZSBmaWxlIHRvIGdldCBpdHMgc2l6ZS4KKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKKyAg
ICBpZiAoZnN0YXQoZ19pb19jaGFubmVsX3VuaXhfZ2V0X2ZkKGNoYW5uZWwpLCAmZmlsZVN0YXQp
IDwgMCkgeworICAgICAgICBnX2lvX2NoYW5uZWxfdW5yZWYoY2hhbm5lbCk7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdCA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgcmVzdWx0LT5tX2J1ZmZlci5yZXNpemUoZmlsZVN0YXQu
c3Rfc2l6ZSk7CisgICAgaWYgKHJlc3VsdC0+bV9idWZmZXIuc2l6ZSgpICE9IGZpbGVTdGF0LnN0
X3NpemUpIHsKKyAgICAgICAgZ19pb19jaGFubmVsX3VucmVmKGNoYW5uZWwpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisKKyAgICBnY2hhciogYnVmZmVyID0gcmVzdWx0LT5tX2J1ZmZlci5k
YXRhKCk7CisgICAgZ3NpemUgYnl0ZXNUb1JlYWQgPSBmaWxlU3RhdC5zdF9zaXplOworICAgIHdo
aWxlIChieXRlc1RvUmVhZCA+IDApIHsKKyAgICAgICAgZ3NpemUgYnl0ZXNSZWFkID0gMDsKKyAg
ICAgICAgR0Vycm9yKiBlcnJvciA9IDA7CisgICAgICAgIEdJT1N0YXR1cyBzdGF0dXMgPSBnX2lv
X2NoYW5uZWxfcmVhZF9jaGFycyAoY2hhbm5lbCwgYnVmZmVyLCBieXRlc1RvUmVhZCwgJmJ5dGVz
UmVhZCwgJmVycm9yKTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBHX0lPX1NUQVRVU19OT1JNQUwp
IHsKKyAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMg
b2YgZmlsZSAlcyAtICVzIiwgZmlsZVBhdGgudXRmOCgpLmRhdGEoKSwgZXJyb3ItPm1zZyk7Cisg
ICAgICAgICAgICBnX2Vycm9yX2ZyZWUoZXJyb3IpOworICAgICAgICAgICAgZ19pb19jaGFubmVs
X3VucmVmKGNoYW5uZWwpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAg
ICAgICBieXRlc1RvUmVhZCAtPSBieXRlc1JlYWQ7CisgICAgICAgIGJ1ZmZlciArPSBieXRlc1Jl
YWQ7CisgICAgfQorCisgICAgZ19pb19jaGFubmVsX3VucmVmKGNoYW5uZWwpOworICAgIGlmIChy
ZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgIGVsc2UKKyAgICAg
ICAgcmV0dXJuIDA7Cit9CisKK307IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2d0ay9LVVJMR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2d0ay9LVVJMR3RrLmNwcAkocmV2aXNpb25lIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2d0ay9L
VVJMR3RrLmNwcAkocmV2aXNpb25lIDApCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
ICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisKKyNpbmNsdWRlICJD
U3RyaW5nLmgiCisKKyNpbmNsdWRlIDxnbGliLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
U3RyaW5nIEtVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKK3sKKyAgICBnY2hhciogZmlsZW5h
bWUgPSBnX2ZpbGVuYW1lX2Zyb21fdXJpKG1fc3RyaW5nLnV0ZjgoKS5kYXRhKCksIDAsIDApOwor
ICAgIGlmIChmaWxlbmFtZSkgeworICAgICAgICBTdHJpbmcgcGF0aChmaWxlbmFtZSk7CisgICAg
ICAgIGdfZnJlZShmaWxlbmFtZSk7CisgICAgICAgIHJldHVybiBwYXRoOworICAgIH0gZWxzZQor
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK30KKwpJbmRleDogV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uZSAzMzAyNikKKysr
IFdlYkNvcmUvQ2hhbmdlTG9nCShjb3BpYSBsb2NhbGUpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDgt
MDUtMTAgIE1hcmNvIEJhcmlzaW9uZSAgPG1hcmNvQGJhcmlzaW9uZS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5ODcKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlIGFuZAorICAgICAgICBLVVJMOjpmaWxl
U3lzdGVtUGF0aAorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCBLVVJMR3RrLmNwcCBh
bmQgU2hhcmVkQnVmZmVyR3RrLmNwcC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvS1VSTEd0ay5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6ZmlsZVN5c3RlbVBhdGgpOiBJbXBs
ZW1lbnRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2hhcmVkQnVmZmVyR3RrLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSk6IEltcGxlbWVudGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZW1wb3JhcnlMaW5r
U3R1YnMuY3BwOiBSZW1vdmUgdGhlIG9sZCBzdHVicy4KKwogMjAwOC0wNS0wOSAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21080</attachid>
            <date>2008-05-12 08:34:25 -0700</date>
            <delta_ts>2008-08-06 07:12:04 -0700</delta_ts>
            <desc>Implement the missing functions and use g_file_contents() to read the file</desc>
            <filename>implement-file-stubs.patch</filename>
            <type>text/plain</type>
            <size>6193</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQkocmV2aXNpb25lIDMzMDQ0KQorKysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQko
Y29waWEgbG9jYWxlKQpAQCAtMTAzNCw2ICsxMDM0LDcgQEAKIAlXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2d0ay9Gb250Q2FjaGVHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9Gb250R3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS2V5RXZlbnRHdGsuY3Bw
IFwKKwlXZWJDb3JlL3BsYXRmb3JtL2d0ay9LVVJMR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvTGFuZ3VhZ2UuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJp
bmdzR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTG9nZ2luZ0d0ay5jcHAgXApAQCAt
MTA0Niw2ICsxMDQ3LDcgQEAKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5j
cHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlYXJjaFBvcHVwTWVudUd0ay5jcHAgXAogCVdl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwIFwKKwlXZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TaGFyZWRCdWZmZXJHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRU
aW1lckd0ay5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1NvdW5kR3RrLmNwcCBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU3lzdGVtVGltZUd0ay5jcHAgXApJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2d0ay9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCShyZXZpc2lvbmUgMzMwNDQpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2d0ay9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCShjb3BpYSBsb2NhbGUp
CkBAIC0zMSwxMCArMzEsOCBAQAogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgogI2luY2x1ZGUgIkZUUERpcmVjdG9yeURvY3VtZW50LmgiCi0jaW5jbHVkZSAiS1VS
TC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5o
IgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IApAQCAtNjYsOSArNjQsNSBAQAogU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyAmY2hhbGxlbmdlU3RyaW5n
LCBjb25zdCBLVVJMICZ1cmwpIHsgcmV0dXJuIFN0cmluZygpOyB9CiBmbG9hdCB1c2VySWRsZVRp
bWUoKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiAwLjA7IH0KIAotU3RyaW5nIEtVUkw6OmZp
bGVTeXN0ZW1QYXRoKCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gU3RyaW5nKCk7
IH0KLQotUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIDA7
IH0KLQogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRCdWZmZXJHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAJ
KHJldmlzaW9uZSAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkQnVmZmVyR3RrLmNw
cAkocmV2aXNpb25lIDApCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQ29sbGFib3JhIEx0ZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKworI2luY2x1ZGUgIkNT
dHJpbmcuaCIKKworI2luY2x1ZGUgPGdsaWIuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIGlmIChmaWxlUGF0aC5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgZ2NoYXIqIGZpbGVuYW1lID0gZ19maWxl
bmFtZV9mcm9tX3V0ZjgoZmlsZVBhdGgudXRmOCgpLmRhdGEoKSwgLTEsIDAsIDAsIDApOworICAg
IGlmICghZmlsZW5hbWUpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcmVzdWx0OworICAgIGdjaGFyKiBjb250ZW50czsKKyAgICBnc2l6ZSBzaXplOworICAg
IEdFcnJvciogZXJyb3IgPSAwOworICAgIGlmICghZ19maWxlX2dldF9jb250ZW50cyhmaWxlbmFt
ZSwgJmNvbnRlbnRzLCAmc2l6ZSwgJmVycm9yKSkgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMgLSAlcyIsIGZpbGVQYXRoLnV0Zjgo
KS5kYXRhKCksIGVycm9yLT5tc2cpOworICAgICAgICBnX2Vycm9yX2ZyZWUoZXJyb3IpOworICAg
ICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICByZXN1bHQtPm1fYnVmZmVyLnJlc2l6ZShzaXplKTsKKyAgICBpZiAocmVzdWx0
LT5tX2J1ZmZlci5zaXplKCkgIT0gc2l6ZSkgeworICAgICAgICByZXN1bHQgPSAwOworICAgICAg
ICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgbWVtY3B5KHJlc3VsdC0+bV9idWZmZXIuZGF0YSgp
LCBjb250ZW50cywgc2l6ZSk7CisKK2V4aXQ6CisgICAgZ19mcmVlKGZpbGVuYW1lKTsKKyAgICBn
X2ZyZWUoY29udGVudHMpOworICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworfQorCit9OyAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS1VSTEd0ay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS1VSTEd0ay5jcHAJKHJldmlz
aW9uZSAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS1VSTEd0ay5jcHAJKHJldmlzaW9uZSAw
KQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBM
dGQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2Ug
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh
cmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiS1VSTC5oIgorCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorCisjaW5jbHVkZSA8
Z2xpYi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyBLVVJMOjpmaWxlU3lzdGVt
UGF0aCgpIGNvbnN0Cit7CisgICAgZ2NoYXIqIGZpbGVuYW1lID0gZ19maWxlbmFtZV9mcm9tX3Vy
aShtX3N0cmluZy51dGY4KCkuZGF0YSgpLCAwLCAwKTsKKyAgICBpZiAoZmlsZW5hbWUpIHsKKyAg
ICAgICAgU3RyaW5nIHBhdGgoZmlsZW5hbWUpOworICAgICAgICBnX2ZyZWUoZmlsZW5hbWUpOwor
ICAgICAgICByZXR1cm4gcGF0aDsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIFN0cmluZygp
OworfQorCit9CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb25lIDMzMDQ0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKGNvcGlh
IGxvY2FsZSkKQEAgLTEsMyArMSwxOCBAQAorMjAwOC0wNS0xMiAgTWFyY28gQmFyaXNpb25lICA8
bWFyY29AYmFyaXNpb25lLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk4
NworICAgICAgICBbR1RLXSBJbXBsZW1lbnQgU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUgYW5kCisgICAgICAgIEtVUkw6OmZpbGVTeXN0ZW1QYXRoCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbTogQWRkIEtVUkxHdGsuY3BwIGFuZCBTaGFyZWRCdWZmZXJHdGsuY3BwLgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9LVVJMR3RrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpLVVJMOjpmaWxlU3lzdGVtUGF0aCk6IEltcGxlbWVudGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9TaGFyZWRCdWZmZXJHdGsuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKTogSW1wbGVtZW50ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHA6IFJlbW92ZSB0aGUgb2xk
IHN0dWJzLgorCiAyMDA4LTA1LTEyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSb2xsIG91dCByZWNlbnQgIHRocmVhZGluZyBjaGFuZ2VzIChyMzI4MDcs
IHIzMjgxMCwgcjMyODE5LCByMzI4MjIpIHRvIHNpbXBsaWZ5Cg==
</data>
<flag name="review"
          id="9218"
          type_id="1"
          status="-"
          setter="zecke"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22679</attachid>
            <date>2008-08-06 07:12:04 -0700</date>
            <delta_ts>2008-09-04 06:35:35 -0700</delta_ts>
            <desc>Implement missing functions</desc>
            <filename>file-stubs.patch</filename>
            <type>text/plain</type>
            <size>5468</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCmluZGV4IDU3OWJjYTMuLjAwYTBmZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTA4Miw2ICsxMDgyLDcgQEAg
d2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9G
b250Q2FjaGVHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3Rr
LmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS2V5RXZlbnRHdGsuY3BwIFwKKwlXZWJDb3Jl
L3BsYXRmb3JtL2d0ay9LVVJMR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTGFuZ3Vh
Z2UuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcCBc
CiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTG9nZ2luZ0d0ay5jcHAgXApAQCAtMTA5NCw2ICsxMDk1
LDcgQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5k
ZXJUaGVtZUd0ay5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlYXJjaFBvcHVwTWVudUd0
ay5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwIFwKKwlXZWJD
b3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRCdWZmZXJHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TaGFyZWRUaW1lckd0ay5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1NvdW5kR3Rr
LmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU3lzdGVtVGltZUd0ay5jcHAgXApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS1VSTEd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9LVVJMR3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzIz
ZTYxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS1VSTEd0ay5jcHAK
QEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRk
LgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
CisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg
Qm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIktVUkwuaCIKKworI2luY2x1ZGUgIkNTdHJpbmcuaCIKKworI2luY2x1ZGUgPGds
aWIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTdHJpbmcgS1VSTDo6ZmlsZVN5c3RlbVBh
dGgoKSBjb25zdAoreworICAgIGdjaGFyKiBmaWxlbmFtZSA9IGdfZmlsZW5hbWVfZnJvbV91cmko
bV9zdHJpbmcudXRmOCgpLmRhdGEoKSwgMCwgMCk7CisgICAgaWYgKGZpbGVuYW1lKSB7CisgICAg
ICAgIFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOChmaWxlbmFtZSk7CisgICAgICAgIGdf
ZnJlZShmaWxlbmFtZSk7CisgICAgICAgIHJldHVybiBwYXRoOworICAgIH0gZWxzZQorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRCdWZm
ZXJHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwMDJlNTAKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRCdWZmZXJHdGsuY3Bw
CkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0
ZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKworI2luY2x1ZGUgIkNTdHJpbmcuaCIKKworI2lu
Y2x1ZGUgPGdsaWIuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKQoreworICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiAwOworCisgICAgZ2NoYXIqIGZpbGVuYW1lID0gZ19maWxlbmFtZV9mcm9tX3V0Zjgo
ZmlsZVBhdGgudXRmOCgpLmRhdGEoKSwgLTEsIDAsIDAsIDApOworICAgIGlmICghZmlsZW5hbWUp
CisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzdWx0Owor
ICAgIGdjaGFyKiBjb250ZW50czsKKyAgICBnc2l6ZSBzaXplOworICAgIEdFcnJvciogZXJyb3Ig
PSAwOworICAgIGlmICghZ19maWxlX2dldF9jb250ZW50cyhmaWxlbmFtZSwgJmNvbnRlbnRzLCAm
c2l6ZSwgJmVycm9yKSkgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFk
IGNvbnRlbnRzIG9mIGZpbGUgJXMgLSAlcyIsIGZpbGVQYXRoLnV0ZjgoKS5kYXRhKCksIGVycm9y
LT5tZXNzYWdlKTsKKyAgICAgICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKKyAgICAgICAgZ19mcmVl
KGZpbGVuYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmVzdWx0ID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICByZXN1bHQtPm1fYnVmZmVyLnJlc2l6ZShzaXplKTsK
KyAgICBpZiAocmVzdWx0LT5tX2J1ZmZlci5zaXplKCkgIT0gc2l6ZSkgeworICAgICAgICBnX2Zy
ZWUoZmlsZW5hbWUpOworICAgICAgICBnX2ZyZWUoY29udGVudHMpOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisKKyAgICBtZW1jcHkocmVzdWx0LT5tX2J1ZmZlci5kYXRhKCksIGNvbnRlbnRz
LCBzaXplKTsKKworICAgIGdfZnJlZShmaWxlbmFtZSk7CisgICAgZ19mcmVlKGNvbnRlbnRzKTsK
KworICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworfQorCit9OyAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvVGVtcG9yYXJ5TGlua1N0dWJz
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKaW5kZXgg
NmQyZTlhNS4uYWRmODc4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvVGVtcG9y
YXJ5TGlua1N0dWJzLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9UZW1wb3JhcnlMaW5r
U3R1YnMuY3BwCkBAIC0zMSwxMCArMzEsOCBAQAogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkZUUERpcmVjdG9yeURvY3VtZW50LmgiCi0jaW5j
bHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGx1
Z2luVmlldy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPGZsb2F0Lmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNjcsOSArNjUsNSBAQCBWZWN0b3I8U3Ry
aW5nPiBzdXBwb3J0ZWRLZXlTaXplcygpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIFZlY3Rv
cjxTdHJpbmc+KCk7CiBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVu
c2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nICZjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0
IEtVUkwgJnVybCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KIGZsb2F0IHVzZXJJZGxlVGltZSgpIHsg
bm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIEZMVF9NQVg7IH0gLy8gcmV0dXJuIGFuIGFyYml0cmFy
aWx5IGhpZ2ggdXNlcklkbGVUaW1lIHNvIHRoYXQgcmVsZWFzaW5nIHBhZ2VzIGZyb20gdGhlIHBh
Z2UgY2FjaGUgaXNuJ3QgcG9zdHBvbmVkCiAKLVN0cmluZyBLVVJMOjpmaWxlU3lzdGVtUGF0aCgp
IGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIFN0cmluZygpOyB9Ci0KLVBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShj
b25zdCBTdHJpbmcmKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiAwOyB9Ci0KIH0KIAo=
</data>
<flag name="review"
          id="10048"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23169</attachid>
            <date>2008-09-04 06:35:35 -0700</date>
            <delta_ts>2008-09-04 07:08:50 -0700</delta_ts>
            <desc>Implement the missing functions</desc>
            <filename>implement-file-stubs.patch</filename>
            <type>text/plain</type>
            <size>5233</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCmluZGV4IDZlZjU0ZTguLjBjZTU3ZDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTkyMyw2ICsxOTIzLDcgQEAg
d2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVt
R3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS2V5RXZlbnRHdGsuY3BwIFwKIAlXZWJD
b3JlL3BsYXRmb3JtL2d0ay9LZXlib2FyZENvZGVzLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0tVUkxHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFnZS5jcHAgXAogCVdl
YkNvcmUvcGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwIFwKIAlXZWJDb3JlL3Bs
YXRmb3JtL2d0ay9Mb2dnaW5nR3RrLmNwcCBcCkBAIC0xOTM4LDYgKzE5MzksNyBAQCB3ZWJjb3Jl
Z3RrX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmgg
XAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwIFwKIAlXZWJDb3JlL3Bs
YXRmb3JtL2d0ay9TZWFyY2hQb3B1cE1lbnVHdGsuY3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2d0
ay9TaGFyZWRCdWZmZXJHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1l
ckd0ay5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1NvdW5kR3RrLmNwcCBcCiAJV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvU3lzdGVtVGltZUd0ay5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvS1VSTEd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9LVVJMR3RrLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzAzNDYyCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS1VSTEd0ay5jcHAKQEAgLTAsMCArMSwzOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIktVUkwu
aCIKKworI2luY2x1ZGUgIkNTdHJpbmcuaCIKKworI2luY2x1ZGUgPGdsaWIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitTdHJpbmcgS1VSTDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAorewor
ICAgIGdjaGFyKiBmaWxlbmFtZSA9IGdfZmlsZW5hbWVfZnJvbV91cmkobV9zdHJpbmcudXRmOCgp
LmRhdGEoKSwgMCwgMCk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOworCisgICAgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KGZpbGVuYW1lKTsKKyAg
ICBnX2ZyZWUoZmlsZW5hbWUpOworICAgIHJldHVybiBwYXRoOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRCdWZmZXJH
dGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkQnVmZmVyR3RrLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGJhNGI1Ci0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkQnVmZmVyR3RrLmNwcApAQCAtMCwwICsxLDU1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCisKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisKKyNpbmNsdWRlIDxnbGliLmg+CisK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
K3sKKyAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IGdjaGFyKiBmaWxlbmFtZSA9IGdfZmlsZW5hbWVfZnJvbV91dGY4KGZpbGVQYXRoLnV0ZjgoKS5k
YXRhKCksIC0xLCAwLCAwLCAwKTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIGdjaGFyKiBjb250ZW50czsKKyAgICBnc2l6ZSBzaXplOworICAgIEdFcnJvciog
ZXJyb3IgPSAwOworICAgIGlmICghZ19maWxlX2dldF9jb250ZW50cyhmaWxlbmFtZSwgJmNvbnRl
bnRzLCAmc2l6ZSwgJmVycm9yKSkgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxs
eSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMgLSAlcyIsIGZpbGVQYXRoLnV0ZjgoKS5kYXRhKCks
IGVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKKyAgICAgICAg
Z19mcmVlKGZpbGVuYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMsIHNp
emUpOworICAgIGdfZnJlZShmaWxlbmFtZSk7CisgICAgZ19mcmVlKGNvbnRlbnRzKTsKKworICAg
IHJldHVybiByZXN1bHQucmVsZWFzZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAppbmRleCA2ZDJlOWE1
Li5hZGY4Nzg0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9UZW1wb3JhcnlMaW5r
U3R1YnMuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5j
cHAKQEAgLTMxLDEwICszMSw4IEBACiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRnJh
bWVWaWV3LmgiCiAjaW5jbHVkZSAiRlRQRGlyZWN0b3J5RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3
LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8ZmxvYXQuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC02Nyw5ICs2NSw1IEBAIFZlY3RvcjxTdHJpbmc+IHN1
cHBvcnRlZEtleVNpemVzKCkgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gVmVjdG9yPFN0cmlu
Zz4oKTsKIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQg
a2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcgJmNoYWxsZW5nZVN0cmluZywgY29uc3QgS1VSTCAm
dXJsKSB7IHJldHVybiBTdHJpbmcoKTsgfQogZmxvYXQgdXNlcklkbGVUaW1lKCkgeyBub3RJbXBs
ZW1lbnRlZCgpOyByZXR1cm4gRkxUX01BWDsgfSAvLyByZXR1cm4gYW4gYXJiaXRyYXJpbHkgaGln
aCB1c2VySWRsZVRpbWUgc28gdGhhdCByZWxlYXNpbmcgcGFnZXMgZnJvbSB0aGUgcGFnZSBjYWNo
ZSBpc24ndCBwb3N0cG9uZWQKIAotU3RyaW5nIEtVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3Qg
eyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gU3RyaW5nKCk7IH0KLQotUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0
cmluZyYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIDA7IH0KLQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23170</attachid>
            <date>2008-09-04 07:06:04 -0700</date>
            <delta_ts>2008-09-21 19:08:35 -0700</delta_ts>
            <desc>Implement missing functions</desc>
            <filename>implement-file-stubs.patch</filename>
            <type>text/plain</type>
            <size>6116</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQkocmV2aXNpb25lIDM2MDg4KQorKysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQko
Y29waWEgbG9jYWxlKQpAQCAtMTkyMyw2ICsxOTIzLDcgQEAKIAlXZWJDb3JlL3BsYXRmb3JtL2d0
ay9GaWxlU3lzdGVtR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS2V5RXZlbnRHdGsu
Y3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9LZXlib2FyZENvZGVzLmggXAorCVdlYkNvcmUv
cGxhdGZvcm0vZ3RrL0tVUkxHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFn
ZS5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2dnaW5nR3RrLmNwcCBcCkBAIC0xOTM4LDYgKzE5Mzks
NyBAQAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmggXAogCVdlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9T
ZWFyY2hQb3B1cE1lbnVHdGsuY3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRCdWZm
ZXJHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHAgXAog
CVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1NvdW5kR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvU3lzdGVtVGltZUd0ay5jcHAgXApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvVGVtcG9y
YXJ5TGlua1N0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9UZW1w
b3JhcnlMaW5rU3R1YnMuY3BwCShyZXZpc2lvbmUgMzYwODgpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2d0ay9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCShjb3BpYSBsb2NhbGUpCkBAIC0zMSwxMCArMzEs
OCBAQAogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1
ZGUgIkZUUERpcmVjdG9yeURvY3VtZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgotI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPGZsb2F0Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpAQCAtNjcsOSArNjUsNSBAQAogU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5n
ZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyAmY2hhbGxlbmdlU3Ry
aW5nLCBjb25zdCBLVVJMICZ1cmwpIHsgcmV0dXJuIFN0cmluZygpOyB9CiBmbG9hdCB1c2VySWRs
ZVRpbWUoKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBGTFRfTUFYOyB9IC8vIHJldHVybiBh
biBhcmJpdHJhcmlseSBoaWdoIHVzZXJJZGxlVGltZSBzbyB0aGF0IHJlbGVhc2luZyBwYWdlcyBm
cm9tIHRoZSBwYWdlIGNhY2hlIGlzbid0IHBvc3Rwb25lZAogCi1TdHJpbmcgS1VSTDo6ZmlsZVN5
c3RlbVBhdGgoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBTdHJpbmcoKTsgfQot
Ci1QYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUoY29uc3QgU3RyaW5nJikgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gMDsgfQot
CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkQnVmZmVyR3RrLmNwcAkocmV2
aXNpb25lIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRCdWZmZXJHdGsuY3BwCShy
ZXZpc2lvbmUgMCkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBD
b2xsYWJvcmEgTHRkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorCisjaW5jbHVkZSAiQ1N0cmlu
Zy5oIgorCisjaW5jbHVkZSA8Z2xpYi5oPgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBnY2hhciogZmlsZW5hbWUgPSBnX2ZpbGVuYW1l
X2Zyb21fdXRmOChmaWxlUGF0aC51dGY4KCkuZGF0YSgpLCAtMSwgMCwgMCwgMCk7CisgICAgaWYg
KCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBnY2hhciogY29udGVudHM7Cisg
ICAgZ3NpemUgc2l6ZTsKKyAgICBHRXJyb3IqIGVycm9yID0gMDsKKyAgICBpZiAoIWdfZmlsZV9n
ZXRfY29udGVudHMoZmlsZW5hbWUsICZjb250ZW50cywgJnNpemUsICZlcnJvcikpIHsKKyAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxlICVzIC0g
JXMiLCBmaWxlUGF0aC51dGY4KCkuZGF0YSgpLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAgIGdf
ZXJyb3JfZnJlZShlcnJvcik7CisgICAgICAgIGdfZnJlZShmaWxlbmFtZSk7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdCA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLCBzaXplKTsKKyAgICBnX2ZyZWUoZmlsZW5hbWUpOwor
ICAgIGdfZnJlZShjb250ZW50cyk7CisKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS1VS
TEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS1VSTEd0ay5jcHAJ
KHJldmlzaW9uZSAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS1VSTEd0ay5jcHAJKHJldmlz
aW9uZSAwKQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxh
Ym9yYSBMdGQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiS1VSTC5oIgorCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorCisjaW5j
bHVkZSA8Z2xpYi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyBLVVJMOjpmaWxl
U3lzdGVtUGF0aCgpIGNvbnN0Cit7CisgICAgZ2NoYXIqIGZpbGVuYW1lID0gZ19maWxlbmFtZV9m
cm9tX3VyaShtX3N0cmluZy51dGY4KCkuZGF0YSgpLCAwLCAwKTsKKyAgICBpZiAoIWZpbGVuYW1l
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBTdHJpbmcgcGF0aCA9IFN0cmluZzo6
ZnJvbVVURjgoZmlsZW5hbWUpOworICAgIGdfZnJlZShmaWxlbmFtZSk7CisgICAgcmV0dXJuIHBh
dGg7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbmUgMzYwODgpCisrKyBX
ZWJDb3JlL0NoYW5nZUxvZwkoY29waWEgbG9jYWxlKQpAQCAtMSwzICsxLDE4IEBACisyMDA4LTA5
LTA0ICBNYXJjbyBCYXJpc2lvbmUgIDxtYXJjby5iYXJpc2lvbmVAY29sbGFib3JhLmNvLnVrPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTg3CisgICAgICAgIFtHVEtdIEltcGxl
bWVudCBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSBhbmQKKyAgICAgICAg
S1VSTDo6ZmlsZVN5c3RlbVBhdGgKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgS1VS
TEd0ay5jcHAgYW5kIFNoYXJlZEJ1ZmZlckd0ay5jcHAuCisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L0tVUkxHdGsuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmZpbGVTeXN0ZW1Q
YXRoKTogSW1wbGVtZW50ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0
ay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUpOiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVt
cG9yYXJ5TGlua1N0dWJzLmNwcDogUmVtb3ZlIHRoZSBvbGQgc3R1YnMuCisKIDIwMDgtMDktMDQg
IFRvciBBcm5lIFZlc3Riw7ggIDx0YXZlc3Rib0B0cm9sbHRlY2guY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uLgo=
</data>
<flag name="review"
          id="10312"
          type_id="1"
          status="+"
          setter="zecke"
    />
          </attachment>
      

    </bug>

</bugzilla>