<?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>26332</bug_id>
          
          <creation_ts>2009-06-11 14:48:39 -0700</creation_ts>
          <short_desc>Upstream V8Helpers</short_desc>
          <delta_ts>2009-06-12 11:03:53 -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>WebCore Misc.</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="Nate Chapin">japhet</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>125381</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-06-11 14:48:39 -0700</bug_when>
    <thetext>See summary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125382</commentid>
    <comment_count>1</comment_count>
      <attachid>31173</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-06-11 14:53:53 -0700</bug_when>
    <thetext>Created attachment 31173
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125386</commentid>
    <comment_count>2</comment_count>
      <attachid>31173</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-06-11 15:26:43 -0700</bug_when>
    <thetext>Comment on attachment 31173
patch

Just a few issues to clear up so r- for now.

&gt; Index: WebCore/bindings/v8/V8Helpers.cpp

&gt; +#define max max
&gt; +#define min min
What is this about? (Why are they needed?)


&gt; +using WebCore::V8Custom;
Do we have a V8Custom namespace?

&gt; +void WrapNPObject(v8::Handle&lt;v8::Object&gt; object, NPObject* npObject)
WrapNPObject casing.  Should be wrapNPObject


&gt; +v8::Local&lt;v8::Context&gt; getV8Context(NPP npp, NPObject* npObject)
toV8Context would be more in keeping with WebKit naming (dglazkov helped me out here).


&gt; +WebCore::V8Proxy* GetV8Proxy(NPObject* npObject)
s/GetV8Proxy/toV8Proxy/


&gt; Index: WebCore/bindings/v8/V8Helpers.h

&gt; +// Retrieves the V8 Context from the NP context pr obj (at most 1 may be NULL).
I can&apos;t understand this comment at all.

&gt; +
&gt; +// Get V8Proxy object from an NPObject.
This comment doesn&apos;t seem to add anything at all (except a line of text that may get out of sync with the code).


&gt; +#endif  // V8Helpers_h
One space before trailing comments.


Why aren&apos;t the functions declared in the WebCore namespace like the rest of the functions in these headers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125393</commentid>
    <comment_count>3</comment_count>
      <attachid>31176</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-06-11 16:31:44 -0700</bug_when>
    <thetext>Created attachment 31176
patch2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125394</commentid>
    <comment_count>4</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-06-11 16:34:03 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 31173 [review])
&gt; Just a few issues to clear up so r- for now.
&gt; 
&gt; &gt; Index: WebCore/bindings/v8/V8Helpers.cpp
&gt; 
&gt; &gt; +#define max max
&gt; &gt; +#define min min
&gt; What is this about? (Why are they needed?)
No idea, don&apos;t think it&apos;s necessary.  Removed.
&gt; 
&gt; 
&gt; &gt; +using WebCore::V8Custom;
&gt; Do we have a V8Custom namespace?
V8Custom lives in V8CustomBinding.{h,cpp}.  However, this appears to be unnecessary, so I removed it.
&gt; 
&gt; &gt; +void WrapNPObject(v8::Handle&lt;v8::Object&gt; object, NPObject* npObject)
&gt; WrapNPObject casing.  Should be wrapNPObject
&gt; 
&gt; 
&gt; &gt; +v8::Local&lt;v8::Context&gt; getV8Context(NPP npp, NPObject* npObject)
&gt; toV8Context would be more in keeping with WebKit naming (dglazkov helped me out
&gt; here).
&gt; 
&gt; 
&gt; &gt; +WebCore::V8Proxy* GetV8Proxy(NPObject* npObject)
&gt; s/GetV8Proxy/toV8Proxy/
&gt; 
&gt; 
&gt; &gt; Index: WebCore/bindings/v8/V8Helpers.h
&gt; 
&gt; &gt; +// Retrieves the V8 Context from the NP context pr obj (at most 1 may be NULL).
&gt; I can&apos;t understand this comment at all.
Ditto.
&gt; 
&gt; &gt; +
&gt; &gt; +// Get V8Proxy object from an NPObject.
&gt; This comment doesn&apos;t seem to add anything at all (except a line of text that
&gt; may get out of sync with the code).
&gt; 
&gt; 
&gt; &gt; +#endif  // V8Helpers_h
&gt; One space before trailing comments.
&gt; 
&gt; 
&gt; Why aren&apos;t the functions declared in the WebCore namespace like the rest of the
&gt; functions in these headers?
&gt; 
Everything else fixed.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125395</commentid>
    <comment_count>5</comment_count>
      <attachid>31177</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-06-11 16:35:25 -0700</bug_when>
    <thetext>Created attachment 31177
patch3

Missed a couple items, I think everything&apos;s fixed now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125396</commentid>
    <comment_count>6</comment_count>
      <attachid>31177</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-06-11 16:40:44 -0700</bug_when>
    <thetext>Comment on attachment 31177
patch3

Looks good.  I&apos;ll do the following on landing.

&gt; +    // Get V8Proxy object from an NPObject.
Let&apos;s delete this comment as it doesn&apos;t seem to add anything.

&gt; +    WebCore::V8Proxy* toV8Proxy(NPObject*);
Remove WebCore::</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125397</commentid>
    <comment_count>7</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-06-11 16:42:41 -0700</bug_when>
    <thetext>Assign to levin for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125485</commentid>
    <comment_count>8</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-06-12 11:03:53 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/44626.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31173</attachid>
            <date>2009-06-11 14:53:53 -0700</date>
            <delta_ts>2009-06-11 16:31:44 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>5587</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDYxNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDktMDYtMTEgIE5hdGUgQ2hhcGluICA8amFwaGV0QGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBz
dHJlYW0gVjhIZWxwZXJzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNjMzMgorCisgICAgICAgICogYmluZGluZ3MvdjgvVjhIZWxwZXJzLmNwcDog
QWRkZWQuCisgICAgICAgIChXcmFwTlBPYmplY3QpOiBNb3ZlZCBmcm9tIHY4X2hlbHBlcnMuY3Bw
LgorICAgICAgICAoZ2V0VjhDb250ZXh0KTogTW92ZWQgZnJvbSB2OF9oZWxwZXJzLmNwcC4KKyAg
ICAgICAgKEdldFY4UHJveHkpOiBNb3ZlZCBmcm9tIHY4X2hlbHBlcnMuY3BwLgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4SGVscGVycy5oOiBBZGRlZC4KKwogMjAwOS0wNi0wMyAgRXJpYyBTZWlk
ZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGVscGVycy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEhlbHBlcnMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEhlbHBlcnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBA
CisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyogCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisqIG1ldDoKKyogCisq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyog
ZGlzdHJpYnV0aW9uLgorKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisqIAorKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVjhIZWxwZXJzLmgiCisKKyNkZWZpbmUgbWF4IG1heAorI2RlZmluZSBtaW4g
bWluCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiTlBWOE9iamVjdC5oIgorI2lu
Y2x1ZGUgIlY4SW5kZXguaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisKK3VzaW5nIFdlYkNvcmU6
OlY4Q3VzdG9tOworCit2b2lkIFdyYXBOUE9iamVjdCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9i
amVjdCwgTlBPYmplY3QqIG5wT2JqZWN0KQoreworICAgIFdlYkNvcmU6OlY4UHJveHk6OlNldERP
TVdyYXBwZXIob2JqZWN0LCBXZWJDb3JlOjpWOENsYXNzSW5kZXg6Ok5QT0JKRUNULCBucE9iamVj
dCk7Cit9CisKK3Y4OjpMb2NhbDx2ODo6Q29udGV4dD4gZ2V0VjhDb250ZXh0KE5QUCBucHAsIE5Q
T2JqZWN0KiBucE9iamVjdCkKK3sKKyAgICBWOE5QT2JqZWN0KiBvYmplY3QgPSByZWludGVycHJl
dF9jYXN0PFY4TlBPYmplY3QqPihucE9iamVjdCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OlY4UHJv
eHk6OkdldENvbnRleHQob2JqZWN0LT5yb290T2JqZWN0LT5mcmFtZSgpKTsKK30KKworV2ViQ29y
ZTo6VjhQcm94eSogR2V0VjhQcm94eShOUE9iamVjdCogbnBPYmplY3QpCit7CisgICAgVjhOUE9i
amVjdCogb2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxWOE5QT2JqZWN0Kj4obnBPYmplY3QpOwor
ICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9IG9iamVjdC0+cm9vdE9iamVjdC0+ZnJhbWUoKTsK
KyAgICByZXR1cm4gV2ViQ29yZTo6VjhQcm94eTo6cmV0cmlldmUoZnJhbWUpOworfQpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4SGVscGVycy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEhlbHBlcnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisqIAorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorKiBtZXQ6CisqIAorKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisqIGRp
c3RyaWJ1dGlvbi4KKyogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKiAKKyogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmbmRlZiBWOEhlbHBlcnNfaAor
I2RlZmluZSBWOEhlbHBlcnNfaAorCisjaW5jbHVkZSAibnBydW50aW1lLmgiCisjaW5jbHVkZSA8
djguaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICBjbGFzcyBWOFByb3h5OworfQorCisvLyBB
c3NvY2lhdGVzIGFuIE5QT2JqZWN0IHdpdGggYSBWOCBvYmplY3QuCit2b2lkIFdyYXBOUE9iamVj
dCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBOUE9iamVjdCopOworCisvLyBSZXRyaWV2ZXMgdGhl
IFY4IENvbnRleHQgZnJvbSB0aGUgTlAgY29udGV4dCBwciBvYmogKGF0IG1vc3QgMSBtYXkgYmUg
TlVMTCkuCit2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGdldFY4Q29udGV4dChOUFAsIE5QT2JqZWN0
Kik7CisKKy8vIEdldCBWOFByb3h5IG9iamVjdCBmcm9tIGFuIE5QT2JqZWN0LgorV2ViQ29yZTo6
VjhQcm94eSogR2V0VjhQcm94eShOUE9iamVjdCopOworCisjZW5kaWYgIC8vIFY4SGVscGVyc19o
Cg==
</data>
<flag name="review"
          id="15893"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31176</attachid>
            <date>2009-06-11 16:31:44 -0700</date>
            <delta_ts>2009-06-11 16:35:25 -0700</delta_ts>
            <desc>patch2</desc>
            <filename>patch2.txt</filename>
            <type>text/plain</type>
            <size>5679</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDQ0NjE3KQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDE3IEBADQorMjAwOS0wNi0xMSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAZ29v
Z2xlLmNvbT4NCisNCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAg
ICAgICAgVXBzdHJlYW0gVjhIZWxwZXJzLg0KKw0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MzMyDQorDQorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
SGVscGVycy5jcHA6IEFkZGVkLg0KKyAgICAgICAgKHdyYXBOUE9iamVjdCk6IE1vdmVkIGZyb20g
djhfaGVscGVycy5jcHAuDQorICAgICAgICAodG9WOENvbnRleHQpOiBNb3ZlZCBmcm9tIHY4X2hl
bHBlcnMuY3BwLg0KKyAgICAgICAgKHRvVjhQcm94eSk6IE1vdmVkIGZyb20gdjhfaGVscGVycy5j
cHAuDQorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4SGVscGVycy5oOiBBZGRlZC4NCisNCiAyMDA5
LTA2LTAzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4NCiANCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLg0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhIZWxwZXJz
LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhIZWxwZXJzLmNwcAko
cmV2aXNpb24gMCkNCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGVscGVycy5jcHAJKHJldmlz
aW9uIDApDQpAQCAtMCwwICsxLDU5IEBADQorLyoNCisqIENvcHlyaWdodCAoQykgMjAwOCwgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyogDQorKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUNCisqIG1ldDoNCisqIA0KKyogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCisq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUNCisqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXINCisqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCisqIGRpc3RyaWJ1dGlvbi4NCisqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMN
CisqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tDQorKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLg0KKyogDQorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQorKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KKyog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SDQorKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVA0KKyogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQorKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
DQorKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwNCisqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0KKyogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KKyogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFDQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyovDQorDQorI2luY2x1ZGUgImNvbmZpZy5oIg0K
KyNpbmNsdWRlICJWOEhlbHBlcnMuaCINCisNCisjaW5jbHVkZSAiRE9NV2luZG93LmgiDQorI2lu
Y2x1ZGUgIk5QVjhPYmplY3QuaCINCisjaW5jbHVkZSAiVjhJbmRleC5oIg0KKyNpbmNsdWRlICJW
OFByb3h5LmgiDQorDQorbmFtZXNwYWNlIFdlYkNvcmUgew0KKw0KK3ZvaWQgd3JhcE5QT2JqZWN0
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCBOUE9iamVjdCogbnBPYmplY3QpDQorew0K
KyAgICBWOFByb3h5OjpTZXRET01XcmFwcGVyKG9iamVjdCwgVjhDbGFzc0luZGV4OjpOUE9CSkVD
VCwgbnBPYmplY3QpOw0KK30NCisNCit2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHRvVjhDb250ZXh0
KE5QUCBucHAsIE5QT2JqZWN0KiBucE9iamVjdCkNCit7DQorICAgIFY4TlBPYmplY3QqIG9iamVj
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VjhOUE9iamVjdCo+KG5wT2JqZWN0KTsNCisgICAgcmV0dXJu
IFY4UHJveHk6OkdldENvbnRleHQob2JqZWN0LT5yb290T2JqZWN0LT5mcmFtZSgpKTsNCit9DQor
DQorVjhQcm94eSogdG9WOFByb3h5KE5QT2JqZWN0KiBucE9iamVjdCkNCit7DQorICAgIFY4TlBP
YmplY3QqIG9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VjhOUE9iamVjdCo+KG5wT2JqZWN0KTsN
CisgICAgRnJhbWUqIGZyYW1lID0gb2JqZWN0LT5yb290T2JqZWN0LT5mcmFtZSgpOw0KKyAgICBy
ZXR1cm4gVjhQcm94eTo6cmV0cmlldmUoZnJhbWUpOw0KK30NCisNCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlDQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhlbHBlcnMuaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhIZWxwZXJzLmgJKHJldmlzaW9uIDApDQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEhlbHBlcnMuaAkocmV2aXNpb24gMCkNCkBAIC0wLDAgKzEs
NTEgQEANCisvKg0KKyogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorKiANCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQ0KKyogbWV0Og0KKyogDQorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKyogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0K
KyogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcg0KKyogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KKyogZGlzdHJpYnV0aW9uLg0KKyogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cw0KKyogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20NCisqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uDQorKiANCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMNCisqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQorKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1INCisqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUDQorKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCisqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QNCisqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLA0KKyogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQorKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQorKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UNCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuDQorKi8NCisNCisjaWZuZGVmIFY4SGVscGVyc19oDQorI2RlZmlu
ZSBWOEhlbHBlcnNfaA0KKw0KKyNpbmNsdWRlICJucHJ1bnRpbWUuaCINCisjaW5jbHVkZSA8djgu
aD4NCisNCituYW1lc3BhY2UgV2ViQ29yZSB7DQorICBjbGFzcyBWOFByb3h5Ow0KKw0KKy8vIEFz
c29jaWF0ZXMgYW4gTlBPYmplY3Qgd2l0aCBhIFY4IG9iamVjdC4NCit2b2lkIHdyYXBOUE9iamVj
dCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBOUE9iamVjdCopOw0KKw0KKy8vIFJldHJpZXZlcyB0
aGUgVjggQ29udGV4dCBmcm9tIHRoZSBOUCBjb250ZXh0IHByIG9iaiAoYXQgbW9zdCAxIG1heSBi
ZSBOVUxMKS4NCit2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHRvVjhDb250ZXh0KE5QUCwgTlBPYmpl
Y3QqKTsNCisNCisvLyBHZXQgVjhQcm94eSBvYmplY3QgZnJvbSBhbiBOUE9iamVjdC4NCitXZWJD
b3JlOjpWOFByb3h5KiB0b1Y4UHJveHkoTlBPYmplY3QqKTsNCisNCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlDQorDQorI2VuZGlmICAvLyBWOEhlbHBlcnNfaA0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31177</attachid>
            <date>2009-06-11 16:35:25 -0700</date>
            <delta_ts>2009-06-11 16:40:44 -0700</delta_ts>
            <desc>patch3</desc>
            <filename>patch3.txt</filename>
            <type>text/plain</type>
            <size>5618</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDQ0NjE3KQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDE3IEBADQorMjAwOS0wNi0xMSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAZ29v
Z2xlLmNvbT4NCisNCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAg
ICAgICAgVXBzdHJlYW0gVjhIZWxwZXJzLg0KKw0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MzMyDQorDQorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
SGVscGVycy5jcHA6IEFkZGVkLg0KKyAgICAgICAgKHdyYXBOUE9iamVjdCk6IE1vdmVkIGZyb20g
djhfaGVscGVycy5jcHAuDQorICAgICAgICAodG9WOENvbnRleHQpOiBNb3ZlZCBmcm9tIHY4X2hl
bHBlcnMuY3BwLg0KKyAgICAgICAgKHRvVjhQcm94eSk6IE1vdmVkIGZyb20gdjhfaGVscGVycy5j
cHAuDQorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4SGVscGVycy5oOiBBZGRlZC4NCisNCiAyMDA5
LTA2LTAzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4NCiANCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLg0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhIZWxwZXJz
LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhIZWxwZXJzLmNwcAko
cmV2aXNpb24gMCkNCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGVscGVycy5jcHAJKHJldmlz
aW9uIDApDQpAQCAtMCwwICsxLDU5IEBADQorLyoNCisqIENvcHlyaWdodCAoQykgMjAwOCwgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyogDQorKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUNCisqIG1ldDoNCisqIA0KKyogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCisq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUNCisqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXINCisqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCisqIGRpc3RyaWJ1dGlvbi4NCisqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMN
CisqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tDQorKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLg0KKyogDQorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQorKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KKyog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SDQorKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVA0KKyogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQorKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
DQorKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwNCisqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0KKyogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KKyogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFDQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyovDQorDQorI2luY2x1ZGUgImNvbmZpZy5oIg0K
KyNpbmNsdWRlICJWOEhlbHBlcnMuaCINCisNCisjaW5jbHVkZSAiRE9NV2luZG93LmgiDQorI2lu
Y2x1ZGUgIk5QVjhPYmplY3QuaCINCisjaW5jbHVkZSAiVjhJbmRleC5oIg0KKyNpbmNsdWRlICJW
OFByb3h5LmgiDQorDQorbmFtZXNwYWNlIFdlYkNvcmUgew0KKw0KK3ZvaWQgd3JhcE5QT2JqZWN0
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCBOUE9iamVjdCogbnBPYmplY3QpDQorew0K
KyAgICBWOFByb3h5OjpTZXRET01XcmFwcGVyKG9iamVjdCwgVjhDbGFzc0luZGV4OjpOUE9CSkVD
VCwgbnBPYmplY3QpOw0KK30NCisNCit2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHRvVjhDb250ZXh0
KE5QUCBucHAsIE5QT2JqZWN0KiBucE9iamVjdCkNCit7DQorICAgIFY4TlBPYmplY3QqIG9iamVj
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VjhOUE9iamVjdCo+KG5wT2JqZWN0KTsNCisgICAgcmV0dXJu
IFY4UHJveHk6OkdldENvbnRleHQob2JqZWN0LT5yb290T2JqZWN0LT5mcmFtZSgpKTsNCit9DQor
DQorVjhQcm94eSogdG9WOFByb3h5KE5QT2JqZWN0KiBucE9iamVjdCkNCit7DQorICAgIFY4TlBP
YmplY3QqIG9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VjhOUE9iamVjdCo+KG5wT2JqZWN0KTsN
CisgICAgRnJhbWUqIGZyYW1lID0gb2JqZWN0LT5yb290T2JqZWN0LT5mcmFtZSgpOw0KKyAgICBy
ZXR1cm4gVjhQcm94eTo6cmV0cmlldmUoZnJhbWUpOw0KK30NCisNCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlDQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhlbHBlcnMuaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhIZWxwZXJzLmgJKHJldmlzaW9uIDApDQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEhlbHBlcnMuaAkocmV2aXNpb24gMCkNCkBAIC0wLDAgKzEs
NTAgQEANCisvKg0KKyogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorKiANCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQ0KKyogbWV0Og0KKyogDQorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKyogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0K
KyogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcg0KKyogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KKyogZGlzdHJpYnV0aW9uLg0KKyogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cw0KKyogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20NCisqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uDQorKiANCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMNCisqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQorKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1INCisqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUDQorKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCisqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QNCisqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLA0KKyogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQorKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQorKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UNCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuDQorKi8NCisNCisjaWZuZGVmIFY4SGVscGVyc19oDQorI2RlZmlu
ZSBWOEhlbHBlcnNfaA0KKw0KKyNpbmNsdWRlICJucHJ1bnRpbWUuaCINCisjaW5jbHVkZSA8djgu
aD4NCisNCituYW1lc3BhY2UgV2ViQ29yZSB7DQorICAgIGNsYXNzIFY4UHJveHk7DQorDQorICAg
IC8vIEFzc29jaWF0ZXMgYW4gTlBPYmplY3Qgd2l0aCBhIFY4IG9iamVjdC4NCisgICAgdm9pZCB3
cmFwTlBPYmplY3Qodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgTlBPYmplY3QqKTsNCisNCisgICAg
djg6OkxvY2FsPHY4OjpDb250ZXh0PiB0b1Y4Q29udGV4dChOUFAsIE5QT2JqZWN0Kik7DQorDQor
ICAgIC8vIEdldCBWOFByb3h5IG9iamVjdCBmcm9tIGFuIE5QT2JqZWN0Lg0KKyAgICBXZWJDb3Jl
OjpWOFByb3h5KiB0b1Y4UHJveHkoTlBPYmplY3QqKTsNCisNCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlDQorDQorI2VuZGlmIC8vIFY4SGVscGVyc19oDQo=
</data>
<flag name="review"
          id="15895"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>