<?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>39156</bug_id>
          
          <creation_ts>2010-05-15 04:31:10 -0700</creation_ts>
          <short_desc>FrameLoader: refactor FrameLoader::createWindow() to be a non-member, non-friend function</short_desc>
          <delta_ts>2010-08-11 10:40:54 -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>
          <dependson>39157</dependson>
          <blocked>29947</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Jerdonek">cjerdonek</reporter>
          <assigned_to name="Chris Jerdonek">cjerdonek</assigned_to>
          <cc>abarth</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>226223</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-15 04:31:10 -0700</bug_when>
    <thetext>The FrameLoader class shouldn&apos;t be responsible for creating windows.  Moving createWindow() out of the FrameLoader class is a good first step.  This will also increase encapsulation by reducing the number of public functions with access to FrameLoader&apos;s private data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226461</commentid>
    <comment_count>1</comment_count>
      <attachid>56183</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-16 03:26:52 -0700</bug_when>
    <thetext>Created attachment 56183
Proposed patch

Note that this will probably not build/apply until the patch for bug 39157 lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226462</commentid>
    <comment_count>2</comment_count>
      <attachid>56184</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-16 03:31:08 -0700</bug_when>
    <thetext>Created attachment 56184
Proposed patch (re-attaching newest)

As before, this will not apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226581</commentid>
    <comment_count>3</comment_count>
      <attachid>56184</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-16 18:13:31 -0700</bug_when>
    <thetext>Comment on attachment 56184
Proposed patch (re-attaching newest)

WebCore/loader/FrameLoader.cpp:3966
 +  Frame* createWindowFromFrameLoader(FrameLoader* sourceFrameLoader, FrameLoader* frameLoaderForFrameLookup, const FrameLoadRequest&amp; request, const WindowFeatures&amp; features, bool&amp; created)
I think sourceFrameLoader should be openerFrameLoader because that&apos;s the Frame that ends up being the opener.

It might make more sense to pass in the Frame as &quot;opener&quot; and then get the outgoing referrer, etc, from opener-&gt;loader()-&gt;...

The reason for do that is the Frame is the root object of a who constellation of objects, one of which is the FrameLoader.  We usually use the Frame as object to keep track of the context, not the FrameLoader.

createWindowFromFrameLoader also isn&apos;t a great name.  Maybe createWindow?

I&apos;m not sure this should be a free function.  It feels like it should be a member of something...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226606</commentid>
    <comment_count>4</comment_count>
      <attachid>56184</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-16 21:10:11 -0700</bug_when>
    <thetext>Comment on attachment 56184
Proposed patch (re-attaching newest)

I don&apos;t think the name createWindowFromFrameLoader is good. These names that mention the arguments don&apos;t usually work well in C++. Further, we almost always pass Frame* rather than FrameLoader* to functions, as a part of the general pattern of the Frame family of classes, so I suggest that first two arguments both be Frame*, not FrameLoader*.

The name createWindow seems OK to me, except for the fact that the non-web-browser meaning of window in computer operating systems competes a little bit with the misguided use of window to mean the per-frame global controller object, &quot;window&quot;.

I also wonder if FrameLoader.h/cpp is the right place for this.

I think I&apos;d say review+ if this was named createWindow and took two Frame*. It&apos;s OK that the function in JSDOMWindowCustom is also called createWindow because the arguments are different.

review- mainly because of the use of FrameLoader* as the argument type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226607</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-16 21:11:24 -0700</bug_when>
    <thetext>Looks like Adam and I made quite similar comments. I think it would make sense for this to be the member of something, maybe a static member, that should be responsible for creating windows. But I think it&apos;s OK as a free function too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226632</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-16 23:40:07 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 56184 [details])
&gt; WebCore/loader/FrameLoader.cpp:3966
&gt;  +  Frame* createWindowFromFrameLoader(FrameLoader* sourceFrameLoader, FrameLoader* 
&gt; ...
&gt; I&apos;m not sure this should be a free function.  It feels like it should be a member of something...

(In reply to comment #4)
&gt; I also wonder if FrameLoader.h/cpp is the right place for this.

(In reply to comment #5)
&gt; Looks like Adam and I made quite similar comments. I think it would make sense for this to be the member of something, maybe a static member, that should be responsible for creating windows. But I think it&apos;s OK as a free function too.

Thanks, guys, for the helpful comments.  With respect to making FrameLoader::createWindow() a free function, the intent was not for it to stay that way.

The intent was to be incremental and first separate the function from the class.  As we continue refactoring and grow to see the right abstractions, we can later move this to an appropriate class/location.  In the meantime, hopefully separating it out will make it slightly easier to think about FrameLoader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227561</commentid>
    <comment_count>7</comment_count>
      <attachid>56426</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-18 17:08:39 -0700</bug_when>
    <thetext>Created attachment 56426
Proposed patch 2

Addressing your comments.

(In reply to comment #3)
&gt; I&apos;m not sure this should be a free function.  It feels like it should be a member of something...

(In reply to comment #4)
&gt; I also wonder if FrameLoader.h/cpp is the right place for this.

(In reply to comment #5)
&gt; I think it would make sense for this to be the member of something, maybe a static member, that should be responsible for creating windows. But I think it&apos;s OK as a free function too.

I also added a FIXME to move this to a more appropriate location/class per my comment 6.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227587</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-18 17:40:35 -0700</bug_when>
    <thetext>Attachment 56426 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2304281</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227677</commentid>
    <comment_count>9</comment_count>
      <attachid>56455</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-18 22:50:29 -0700</bug_when>
    <thetext>Created attachment 56455
Proposed patch 3

Qualified the call to createWindow() in BindingDOMWindow.h.

The compiler was interpreting the call to createWindow() in BindingDOMWindow.h as a dependent name because it has the same name as BindingDOMWindow&lt;Binding&gt;::createWindow() -- even though the signature is different.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229895</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-24 13:59:29 -0700</bug_when>
    <thetext>Darin or Adam, can one of you review the newest patch that addresses both or your comments?

Adam, if createWindow() being a free function is a blocking issue for you, can you confirm that you thought the Page class is an appropriate location?  I&apos;ve added a FIXME to move it, so we can always do that later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240192</commentid>
    <comment_count>11</comment_count>
      <attachid>56455</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-18 15:50:09 -0700</bug_when>
    <thetext>Comment on attachment 56455
Proposed patch 3

WebCore/bindings/generic/BindingDOMWindow.h:93
 +      Frame* newFrame = WebCore::createWindow(callingFrame, openerFrame, frameRequest, windowFeatures, created);
Do we need the WebCore:: prefix here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263320</commentid>
    <comment_count>12</comment_count>
      <attachid>56455</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-11 10:13:51 -0700</bug_when>
    <thetext>Comment on attachment 56455
Proposed patch 3

Turns out we do because otherwise we&apos;ll call the member function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263333</commentid>
    <comment_count>13</comment_count>
      <attachid>56455</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-11 10:40:49 -0700</bug_when>
    <thetext>Comment on attachment 56455
Proposed patch 3

Clearing flags on attachment: 56455

Committed r65164: &lt;http://trac.webkit.org/changeset/65164&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263334</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-11 10:40:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56183</attachid>
            <date>2010-05-16 03:26:52 -0700</date>
            <delta_ts>2010-05-16 03:31:08 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>_patch-39156-1.diff</filename>
            <type>text/plain</type>
            <size>9798</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGE1NTRmNy4uYjhmMmFlYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNS0xNiAgQ2hyaXMgSmVyZG9u
ZWsgIDxjamVyZG9uZWtAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcmVkIEZyYW1lTG9hZGVyOjpjcmVhdGVXaW5kb3co
KSBvdXQgb2YgdGhlIEZyYW1lTG9hZGVyIGNsYXNzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTE1NgorCisgICAgICAgICogYmluZGluZ3MvZ2Vu
ZXJpYy9CaW5kaW5nRE9NV2luZG93Lmg6CisgICAgICAgIChXZWJDb3JlOjo6OmNyZWF0ZVdpbmRv
dyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2luZG93RnJvbUZyYW1lTG9hZGVyKToKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKwogMjAxMC0wNS0xNSAgQ2hyaXMgSmVyZG9u
ZWsgIDxjamVyZG9uZWtAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9CaW5kaW5nRE9N
V2luZG93LmggYi9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oCmlu
ZGV4IGI0NmJkZjkuLjFiYjQ5YmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJp
Yy9CaW5kaW5nRE9NV2luZG93LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRp
bmdET01XaW5kb3cuaApAQCAtOTIsNyArOTIsNyBAQCBGcmFtZSogQmluZGluZ0RPTVdpbmRvdzxC
aW5kaW5nPjo6Y3JlYXRlV2luZG93KFN0YXRlPEJpbmRpbmc+KiBzdGF0ZSwKICAgICAvLyBmcmFt
ZSBuYW1lLCBpbiBjYXNlIHRoZSBhY3RpdmUgZnJhbWUgaXMgZGlmZmVyZW50IGZyb20gdGhlIG9w
ZW5lciBmcmFtZSwKICAgICAvLyBhbmQgdGhlIG5hbWUgcmVmZXJlbmNlcyBhIGZyYW1lIHJlbGF0
aXZlIHRvIHRoZSBvcGVuZXIgZnJhbWUsIGZvciBleGFtcGxlCiAgICAgLy8gIl9zZWxmIiBvciAi
X3BhcmVudCIuCi0gICAgRnJhbWUqIG5ld0ZyYW1lID0gY2FsbGluZ0ZyYW1lLT5sb2FkZXIoKS0+
Y3JlYXRlV2luZG93KG9wZW5lckZyYW1lLT5sb2FkZXIoKSwgZnJhbWVSZXF1ZXN0LCB3aW5kb3dG
ZWF0dXJlcywgY3JlYXRlZCk7CisgICAgRnJhbWUqIG5ld0ZyYW1lID0gY3JlYXRlV2luZG93RnJv
bUZyYW1lTG9hZGVyKGNhbGxpbmdGcmFtZS0+bG9hZGVyKCksIG9wZW5lckZyYW1lLT5sb2FkZXIo
KSwgZnJhbWVSZXF1ZXN0LCB3aW5kb3dGZWF0dXJlcywgY3JlYXRlZCk7CiAgICAgaWYgKCFuZXdG
cmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKaW5kZXggNjU2ZDU4MC4uMjk0MGUzYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTczMiw3ICs3MzIsNyBAQCBzdGF0aWMgRnJhbWUq
IGNyZWF0ZVdpbmRvdyhFeGVjU3RhdGUqIGV4ZWMsIEZyYW1lKiBsZXhpY2FsRnJhbWUsIEZyYW1l
KiBkeW5hbWljRgogICAgIC8vIFdlIHBhc3MgaW4gdGhlIG9wZW5lciBmcmFtZSBoZXJlIHNvIGl0
IGNhbiBiZSB1c2VkIGZvciBsb29raW5nIHVwIHRoZSBmcmFtZSBuYW1lLCBpbiBjYXNlIHRoZSBh
Y3RpdmUgZnJhbWUKICAgICAvLyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3BlbmVyIGZyYW1lLCBh
bmQgdGhlIG5hbWUgcmVmZXJlbmNlcyBhIGZyYW1lIHJlbGF0aXZlIHRvIHRoZSBvcGVuZXIgZnJh
bWUsIGZvciBleGFtcGxlCiAgICAgLy8gIl9zZWxmIiBvciAiX3BhcmVudCIuCi0gICAgRnJhbWUq
IG5ld0ZyYW1lID0gbGV4aWNhbEZyYW1lLT5sb2FkZXIoKS0+Y3JlYXRlV2luZG93KG9wZW5lckZy
YW1lLT5sb2FkZXIoKSwgZnJhbWVSZXF1ZXN0LCB3aW5kb3dGZWF0dXJlcywgY3JlYXRlZCk7Cisg
ICAgRnJhbWUqIG5ld0ZyYW1lID0gY3JlYXRlV2luZG93RnJvbUZyYW1lTG9hZGVyKGxleGljYWxG
cmFtZS0+bG9hZGVyKCksIG9wZW5lckZyYW1lLT5sb2FkZXIoKSwgZnJhbWVSZXF1ZXN0LCB3aW5k
b3dGZWF0dXJlcywgY3JlYXRlZCk7CiAgICAgaWYgKCFuZXdGcmFtZSkKICAgICAgICAgcmV0dXJu
IDA7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAxNWIwNDY1Li5iYWMxM2Q4IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCkBAIC0yNjgsNzEgKzI2OCw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNl
dERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCiAgICAgfQogfQogCi1GcmFtZSogRnJhbWVMb2Fk
ZXI6OmNyZWF0ZVdpbmRvdyhGcmFtZUxvYWRlciogZnJhbWVMb2FkZXJGb3JGcmFtZUxvb2t1cCwg
Y29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZl
YXR1cmVzLCBib29sJiBjcmVhdGVkKQoteyAKLSAgICBBU1NFUlQoIWZlYXR1cmVzLmRpYWxvZyB8
fCByZXF1ZXN0LmZyYW1lTmFtZSgpLmlzRW1wdHkoKSk7Ci0KLSAgICBpZiAoIXJlcXVlc3QuZnJh
bWVOYW1lKCkuaXNFbXB0eSgpICYmIHJlcXVlc3QuZnJhbWVOYW1lKCkgIT0gIl9ibGFuayIpIHsK
LSAgICAgICAgRnJhbWUqIGZyYW1lID0gZnJhbWVMb2FkZXJGb3JGcmFtZUxvb2t1cC0+ZnJhbWUo
KS0+dHJlZSgpLT5maW5kKHJlcXVlc3QuZnJhbWVOYW1lKCkpOwotICAgICAgICBpZiAoZnJhbWUg
JiYgc2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkgewotICAgICAgICAgICAgaWYgKCFyZXF1
ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBm
cmFtZS0+bG9hZGVyKCktPmxvYWRGcmFtZVJlcXVlc3QocmVxdWVzdCwgZmFsc2UsIGZhbHNlLCAw
LCAwLCBTZW5kUmVmZXJyZXIpOwotICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+
cGFnZSgpKQotICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5mb2N1cygpOwotICAgICAg
ICAgICAgY3JlYXRlZCA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIGZyYW1lOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgLy8gU2FuZGJveGVkIGZyYW1lcyBjYW5ub3Qgb3BlbiBuZXcgYXV4
aWxpYXJ5IGJyb3dzaW5nIGNvbnRleHRzLgotICAgIGlmIChpc0RvY3VtZW50U2FuZGJveGVkKCpt
X2ZyYW1lLCBTYW5kYm94TmF2aWdhdGlvbikpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8g
RklYTUU6IFNldHRpbmcgdGhlIHJlZmVycmVyIHNob3VsZCBiZSB0aGUgY2FsbGVyJ3MgcmVzcG9u
c2liaWxpdHkuCi0gICAgRnJhbWVMb2FkUmVxdWVzdCByZXF1ZXN0V2l0aFJlZmVycmVyID0gcmVx
dWVzdDsKLSAgICByZXF1ZXN0V2l0aFJlZmVycmVyLnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBS
ZWZlcnJlcihtX291dGdvaW5nUmVmZXJyZXIpOwotICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChy
ZXF1ZXN0V2l0aFJlZmVycmVyLnJlc291cmNlUmVxdWVzdCgpLCBvdXRnb2luZ09yaWdpbigpKTsK
LQotICAgIFBhZ2UqIG9sZFBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0gICAgaWYgKCFvbGRQYWdl
KQotICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgCi0gICAgUGFnZSogcGFnZSA9IG9sZFBhZ2Ut
PmNocm9tZSgpLT5jcmVhdGVXaW5kb3cobV9mcmFtZSwgcmVxdWVzdFdpdGhSZWZlcnJlciwgZmVh
dHVyZXMpOwotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBGcmFtZSog
ZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKLSAgICBpZiAocmVxdWVzdC5mcmFtZU5hbWUoKSAh
PSAiX2JsYW5rIikKLSAgICAgICAgZnJhbWUtPnRyZWUoKS0+c2V0TmFtZShyZXF1ZXN0LmZyYW1l
TmFtZSgpKTsKLQotICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRUb29sYmFyc1Zpc2libGUoZmVhdHVy
ZXMudG9vbEJhclZpc2libGUgfHwgZmVhdHVyZXMubG9jYXRpb25CYXJWaXNpYmxlKTsKLSAgICBw
YWdlLT5jaHJvbWUoKS0+c2V0U3RhdHVzYmFyVmlzaWJsZShmZWF0dXJlcy5zdGF0dXNCYXJWaXNp
YmxlKTsKLSAgICBwYWdlLT5jaHJvbWUoKS0+c2V0U2Nyb2xsYmFyc1Zpc2libGUoZmVhdHVyZXMu
c2Nyb2xsYmFyc1Zpc2libGUpOwotICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRNZW51YmFyVmlzaWJs
ZShmZWF0dXJlcy5tZW51QmFyVmlzaWJsZSk7Ci0gICAgcGFnZS0+Y2hyb21lKCktPnNldFJlc2l6
YWJsZShmZWF0dXJlcy5yZXNpemFibGUpOwotCi0gICAgLy8gJ3gnIGFuZCAneScgc3BlY2lmeSB0
aGUgbG9jYXRpb24gb2YgdGhlIHdpbmRvdywgd2hpbGUgJ3dpZHRoJyBhbmQgJ2hlaWdodCcgCi0g
ICAgLy8gc3BlY2lmeSB0aGUgc2l6ZSBvZiB0aGUgcGFnZS4gV2UgY2FuIG9ubHkgcmVzaXplIHRo
ZSB3aW5kb3csIHNvIAotICAgIC8vIGFkanVzdCBmb3IgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0
aGUgd2luZG93IHNpemUgYW5kIHRoZSBwYWdlIHNpemUuCi0KLSAgICBGbG9hdFJlY3Qgd2luZG93
UmVjdCA9IHBhZ2UtPmNocm9tZSgpLT53aW5kb3dSZWN0KCk7Ci0gICAgRmxvYXRTaXplIHBhZ2VT
aXplID0gcGFnZS0+Y2hyb21lKCktPnBhZ2VSZWN0KCkuc2l6ZSgpOwotICAgIGlmIChmZWF0dXJl
cy54U2V0KQotICAgICAgICB3aW5kb3dSZWN0LnNldFgoZmVhdHVyZXMueCk7Ci0gICAgaWYgKGZl
YXR1cmVzLnlTZXQpCi0gICAgICAgIHdpbmRvd1JlY3Quc2V0WShmZWF0dXJlcy55KTsKLSAgICBp
ZiAoZmVhdHVyZXMud2lkdGhTZXQpCi0gICAgICAgIHdpbmRvd1JlY3Quc2V0V2lkdGgoZmVhdHVy
ZXMud2lkdGggKyAod2luZG93UmVjdC53aWR0aCgpIC0gcGFnZVNpemUud2lkdGgoKSkpOwotICAg
IGlmIChmZWF0dXJlcy5oZWlnaHRTZXQpCi0gICAgICAgIHdpbmRvd1JlY3Quc2V0SGVpZ2h0KGZl
YXR1cmVzLmhlaWdodCArICh3aW5kb3dSZWN0LmhlaWdodCgpIC0gcGFnZVNpemUuaGVpZ2h0KCkp
KTsKLSAgICBwYWdlLT5jaHJvbWUoKS0+c2V0V2luZG93UmVjdCh3aW5kb3dSZWN0KTsKLQotICAg
IHBhZ2UtPmNocm9tZSgpLT5zaG93KCk7Ci0KLSAgICBjcmVhdGVkID0gdHJ1ZTsKLSAgICByZXR1
cm4gZnJhbWU7Ci19Ci0KIGJvb2wgRnJhbWVMb2FkZXI6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIHJldHVybiBtX2NsaWVudC0+Y2FuSGFu
ZGxlUmVxdWVzdChyZXF1ZXN0KTsKQEAgLTQwMjgsNCArMzk2Myw3MiBAQCBib29sIEZyYW1lTG9h
ZGVyQ2xpZW50OjpoYXNIVE1MVmlldygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0Zy
YW1lKiBjcmVhdGVXaW5kb3dGcm9tRnJhbWVMb2FkZXIoRnJhbWVMb2FkZXIqIHNvdXJjZUZyYW1l
TG9hZGVyLCBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXJGb3JGcmFtZUxvb2t1cCwgY29uc3QgRnJh
bWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBi
b29sJiBjcmVhdGVkKQoreworICAgIEFTU0VSVChzb3VyY2VGcmFtZUxvYWRlcik7CisgICAgQVNT
RVJUKCFmZWF0dXJlcy5kaWFsb2cgfHwgcmVxdWVzdC5mcmFtZU5hbWUoKS5pc0VtcHR5KCkpOwor
CisgICAgaWYgKCFyZXF1ZXN0LmZyYW1lTmFtZSgpLmlzRW1wdHkoKSAmJiByZXF1ZXN0LmZyYW1l
TmFtZSgpICE9ICJfYmxhbmsiKSB7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IGZyYW1lTG9hZGVy
Rm9yRnJhbWVMb29rdXAtPmZyYW1lKCktPnRyZWUoKS0+ZmluZChyZXF1ZXN0LmZyYW1lTmFtZSgp
KTsKKyAgICAgICAgaWYgKGZyYW1lICYmIHNvdXJjZUZyYW1lTG9hZGVyLT5zaG91bGRBbGxvd05h
dmlnYXRpb24oZnJhbWUpKSB7CisgICAgICAgICAgICBpZiAoIXJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCkudXJsKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+
bG9hZEZyYW1lUmVxdWVzdChyZXF1ZXN0LCBmYWxzZSwgZmFsc2UsIDAsIDAsIFNlbmRSZWZlcnJl
cik7CisgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCisgICAgICAg
ICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmZvY3VzKCk7CisgICAgICAgICAgICBjcmVhdGVkID0g
ZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gZnJhbWU7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBGcmFtZSogc291cmNlRnJhbWUgPSBzb3VyY2VGcmFtZUxvYWRlci0+ZnJhbWUoKTsKKworICAg
IC8vIFNhbmRib3hlZCBmcmFtZXMgY2Fubm90IG9wZW4gbmV3IGF1eGlsaWFyeSBicm93c2luZyBj
b250ZXh0cy4KKyAgICBpZiAoaXNEb2N1bWVudFNhbmRib3hlZCgqc291cmNlRnJhbWUsIFNhbmRi
b3hOYXZpZ2F0aW9uKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBGSVhNRTogU2V0dGlu
ZyB0aGUgcmVmZXJyZXIgc2hvdWxkIGJlIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eS4KKyAg
ICBGcmFtZUxvYWRSZXF1ZXN0IHJlcXVlc3RXaXRoUmVmZXJyZXIgPSByZXF1ZXN0OworICAgIHJl
cXVlc3RXaXRoUmVmZXJyZXIucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVyKHNvdXJj
ZUZyYW1lTG9hZGVyLT5vdXRnb2luZ1JlZmVycmVyKCkpOworICAgIEZyYW1lTG9hZGVyOjphZGRI
VFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdFdpdGhSZWZlcnJlci5yZXNvdXJjZVJlcXVlc3QoKSwg
c291cmNlRnJhbWVMb2FkZXItPm91dGdvaW5nT3JpZ2luKCkpOworCisgICAgUGFnZSogb2xkUGFn
ZSA9IHNvdXJjZUZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFvbGRQYWdlKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIFBhZ2UqIHBhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS0+Y3JlYXRlV2luZG93
KHNvdXJjZUZyYW1lLCByZXF1ZXN0V2l0aFJlZmVycmVyLCBmZWF0dXJlcyk7CisgICAgaWYgKCFw
YWdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5G
cmFtZSgpOworICAgIGlmIChyZXF1ZXN0LmZyYW1lTmFtZSgpICE9ICJfYmxhbmsiKQorICAgICAg
ICBmcmFtZS0+dHJlZSgpLT5zZXROYW1lKHJlcXVlc3QuZnJhbWVOYW1lKCkpOworCisgICAgcGFn
ZS0+Y2hyb21lKCktPnNldFRvb2xiYXJzVmlzaWJsZShmZWF0dXJlcy50b29sQmFyVmlzaWJsZSB8
fCBmZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGUpOworICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRT
dGF0dXNiYXJWaXNpYmxlKGZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUpOworICAgIHBhZ2UtPmNo
cm9tZSgpLT5zZXRTY3JvbGxiYXJzVmlzaWJsZShmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSk7
CisgICAgcGFnZS0+Y2hyb21lKCktPnNldE1lbnViYXJWaXNpYmxlKGZlYXR1cmVzLm1lbnVCYXJW
aXNpYmxlKTsKKyAgICBwYWdlLT5jaHJvbWUoKS0+c2V0UmVzaXphYmxlKGZlYXR1cmVzLnJlc2l6
YWJsZSk7CisKKyAgICAvLyAneCcgYW5kICd5JyBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiB0aGUg
d2luZG93LCB3aGlsZSAnd2lkdGgnIGFuZCAnaGVpZ2h0JworICAgIC8vIHNwZWNpZnkgdGhlIHNp
emUgb2YgdGhlIHBhZ2UuIFdlIGNhbiBvbmx5IHJlc2l6ZSB0aGUgd2luZG93LCBzbworICAgIC8v
IGFkanVzdCBmb3IgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgd2luZG93IHNpemUgYW5kIHRo
ZSBwYWdlIHNpemUuCisKKyAgICBGbG9hdFJlY3Qgd2luZG93UmVjdCA9IHBhZ2UtPmNocm9tZSgp
LT53aW5kb3dSZWN0KCk7CisgICAgRmxvYXRTaXplIHBhZ2VTaXplID0gcGFnZS0+Y2hyb21lKCkt
PnBhZ2VSZWN0KCkuc2l6ZSgpOworICAgIGlmIChmZWF0dXJlcy54U2V0KQorICAgICAgICB3aW5k
b3dSZWN0LnNldFgoZmVhdHVyZXMueCk7CisgICAgaWYgKGZlYXR1cmVzLnlTZXQpCisgICAgICAg
IHdpbmRvd1JlY3Quc2V0WShmZWF0dXJlcy55KTsKKyAgICBpZiAoZmVhdHVyZXMud2lkdGhTZXQp
CisgICAgICAgIHdpbmRvd1JlY3Quc2V0V2lkdGgoZmVhdHVyZXMud2lkdGggKyAod2luZG93UmVj
dC53aWR0aCgpIC0gcGFnZVNpemUud2lkdGgoKSkpOworICAgIGlmIChmZWF0dXJlcy5oZWlnaHRT
ZXQpCisgICAgICAgIHdpbmRvd1JlY3Quc2V0SGVpZ2h0KGZlYXR1cmVzLmhlaWdodCArICh3aW5k
b3dSZWN0LmhlaWdodCgpIC0gcGFnZVNpemUuaGVpZ2h0KCkpKTsKKyAgICBwYWdlLT5jaHJvbWUo
KS0+c2V0V2luZG93UmVjdCh3aW5kb3dSZWN0KTsKKworICAgIHBhZ2UtPmNocm9tZSgpLT5zaG93
KCk7CisKKyAgICBjcmVhdGVkID0gdHJ1ZTsKKyAgICByZXR1cm4gZnJhbWU7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmggYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGRlMDE0MDUuLjk4ZGIxOGMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMTI0LDEwICsxMjQsNiBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgdm9pZCByZXBvcnRMb2NhbExvYWRGYWlsZWQoRnJhbWUqLCBjb25zdCBTdHJpbmcmIHVy
bCk7CiAKLSAgICAvLyBDYWxsZWQgYnkgY3JlYXRlV2luZG93IGluIEpTRE9NV2luZG93QmFzZS5j
cHAsIGUuZy4gdG8gZnVsZmlsbCBhIG1vZGFsIGRpYWxvZyBjcmVhdGlvbgotICAgIC8vIEZJWE1F
OiBNb3ZlIHRoaXMgbWV0aG9kIG91dHNpZGUgb2YgdGhlIEZyYW1lTG9hZGVyIGNsYXNzLgotICAg
IEZyYW1lKiBjcmVhdGVXaW5kb3coRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyRm9yRnJhbWVMb29r
dXAsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGJvb2wm
IGNyZWF0ZWQpOwotCiAgICAgdW5zaWduZWQgbG9uZyBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9y
JiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSk7CiAKICAgICBib29sIGNh
bkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC01MzgsNiArNTM0LDkg
QEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAorLy8gQ2FsbGVkIGJ5IGNyZWF0ZVdpbmRvdyBpbiBK
U0RPTVdpbmRvd0Jhc2UuY3BwLCBlLmcuIHRvIGZ1bGZpbGwgYSBtb2RhbCBkaWFsb2cgY3JlYXRp
b24KK0ZyYW1lKiBjcmVhdGVXaW5kb3dGcm9tRnJhbWVMb2FkZXIoRnJhbWVMb2FkZXIqIHNvdXJj
ZUZyYW1lLCBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXJGb3JGcmFtZUxvb2t1cCwgY29uc3QgRnJh
bWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgYm9vbCYgY3JlYXRlZCk7CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEZyYW1lTG9hZGVyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56184</attachid>
            <date>2010-05-16 03:31:08 -0700</date>
            <delta_ts>2010-05-18 17:08:39 -0700</delta_ts>
            <desc>Proposed patch (re-attaching newest)</desc>
            <filename>_patch-39156-2.diff</filename>
            <type>text/plain</type>
            <size>10815</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGE1NTRmNy4uYzI1ZTg0YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0wNS0xNiAgQ2hyaXMgSmVyZG9u
ZWsgIDxjamVyZG9uZWtAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcmVkIEZyYW1lTG9hZGVyOjpjcmVhdGVXaW5kb3co
KSBvdXQgb2YgdGhlIEZyYW1lTG9hZGVyIGNsYXNzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTE1NgorCisgICAgICAgIE5vIG5ldyBmdW5jdGlv
bmFsaXR5LCBzbyBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9nZW5lcmljL0Jp
bmRpbmdET01XaW5kb3cuaDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6Y3JlYXRlV2luZG93KToKKyAg
ICAgICAgICAtIFVwZGF0ZWQgdGhlIGNhbGwgdG8gRnJhbWVMb2FkZXI6OmNyZWF0ZVdpbmRvdygp
LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICAgLSBVcGRhdGVkIHRoZSBjYWxsIHRv
IEZyYW1lTG9hZGVyOjpjcmVhdGVXaW5kb3coKS4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2luZG93RnJvbUZyYW1lTG9hZGVyKToK
KyAgICAgICAgICAtIE1vdmVkIEZyYW1lTG9hZGVyOjpjcmVhdGVXaW5kb3coKSBvdXQgb2YgdGhl
IEZyYW1lTG9hZGVyIGNsYXNzCisgICAgICAgICAgICB0byBhIG5vbi1tZW1iZXIsIG5vbi1mcmll
bmQgZnVuY3Rpb24gY2FsbGVkIGNyZWF0ZVdpbmRvd0Zyb21GcmFtZUxvYWRlcigpLgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAgIC0gVXBkYXRlZCB0aGUgaGVhZGVy
IGZpbGUgdG8gcmVmbGVjdCB0aGUgYWJvdmUgY2hhbmdlIHRvIEZyYW1lTG9hZGVyLmNwcC4KKwog
MjAxMC0wNS0xNSAgQ2hyaXMgSmVyZG9uZWsgIDxjamVyZG9uZWtAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvZ2VuZXJpYy9CaW5kaW5nRE9NV2luZG93LmggYi9XZWJDb3JlL2JpbmRpbmdzL2dlbmVy
aWMvQmluZGluZ0RPTVdpbmRvdy5oCmluZGV4IGI0NmJkZjkuLjFiYjQ5YmIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9CaW5kaW5nRE9NV2luZG93LmgKKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdET01XaW5kb3cuaApAQCAtOTIsNyArOTIsNyBAQCBG
cmFtZSogQmluZGluZ0RPTVdpbmRvdzxCaW5kaW5nPjo6Y3JlYXRlV2luZG93KFN0YXRlPEJpbmRp
bmc+KiBzdGF0ZSwKICAgICAvLyBmcmFtZSBuYW1lLCBpbiBjYXNlIHRoZSBhY3RpdmUgZnJhbWUg
aXMgZGlmZmVyZW50IGZyb20gdGhlIG9wZW5lciBmcmFtZSwKICAgICAvLyBhbmQgdGhlIG5hbWUg
cmVmZXJlbmNlcyBhIGZyYW1lIHJlbGF0aXZlIHRvIHRoZSBvcGVuZXIgZnJhbWUsIGZvciBleGFt
cGxlCiAgICAgLy8gIl9zZWxmIiBvciAiX3BhcmVudCIuCi0gICAgRnJhbWUqIG5ld0ZyYW1lID0g
Y2FsbGluZ0ZyYW1lLT5sb2FkZXIoKS0+Y3JlYXRlV2luZG93KG9wZW5lckZyYW1lLT5sb2FkZXIo
KSwgZnJhbWVSZXF1ZXN0LCB3aW5kb3dGZWF0dXJlcywgY3JlYXRlZCk7CisgICAgRnJhbWUqIG5l
d0ZyYW1lID0gY3JlYXRlV2luZG93RnJvbUZyYW1lTG9hZGVyKGNhbGxpbmdGcmFtZS0+bG9hZGVy
KCksIG9wZW5lckZyYW1lLT5sb2FkZXIoKSwgZnJhbWVSZXF1ZXN0LCB3aW5kb3dGZWF0dXJlcywg
Y3JlYXRlZCk7CiAgICAgaWYgKCFuZXdGcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggNjU2ZDU4MC4uMjk0MGUz
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTczMiw3
ICs3MzIsNyBAQCBzdGF0aWMgRnJhbWUqIGNyZWF0ZVdpbmRvdyhFeGVjU3RhdGUqIGV4ZWMsIEZy
YW1lKiBsZXhpY2FsRnJhbWUsIEZyYW1lKiBkeW5hbWljRgogICAgIC8vIFdlIHBhc3MgaW4gdGhl
IG9wZW5lciBmcmFtZSBoZXJlIHNvIGl0IGNhbiBiZSB1c2VkIGZvciBsb29raW5nIHVwIHRoZSBm
cmFtZSBuYW1lLCBpbiBjYXNlIHRoZSBhY3RpdmUgZnJhbWUKICAgICAvLyBpcyBkaWZmZXJlbnQg
ZnJvbSB0aGUgb3BlbmVyIGZyYW1lLCBhbmQgdGhlIG5hbWUgcmVmZXJlbmNlcyBhIGZyYW1lIHJl
bGF0aXZlIHRvIHRoZSBvcGVuZXIgZnJhbWUsIGZvciBleGFtcGxlCiAgICAgLy8gIl9zZWxmIiBv
ciAiX3BhcmVudCIuCi0gICAgRnJhbWUqIG5ld0ZyYW1lID0gbGV4aWNhbEZyYW1lLT5sb2FkZXIo
KS0+Y3JlYXRlV2luZG93KG9wZW5lckZyYW1lLT5sb2FkZXIoKSwgZnJhbWVSZXF1ZXN0LCB3aW5k
b3dGZWF0dXJlcywgY3JlYXRlZCk7CisgICAgRnJhbWUqIG5ld0ZyYW1lID0gY3JlYXRlV2luZG93
RnJvbUZyYW1lTG9hZGVyKGxleGljYWxGcmFtZS0+bG9hZGVyKCksIG9wZW5lckZyYW1lLT5sb2Fk
ZXIoKSwgZnJhbWVSZXF1ZXN0LCB3aW5kb3dGZWF0dXJlcywgY3JlYXRlZCk7CiAgICAgaWYgKCFu
ZXdGcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAx
NWIwNDY1Li5iY2NkMmViIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xNzEsOCArMTcxLDgg
QEAgc3RhdGljIGlubGluZSBib29sIGNhblJlZmVyVG9QYXJlbnRGcmFtZUVuY29kaW5nKGNvbnN0
IEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWUKIH0KIAogLy8gUmV0dXJuIHdoZXRoZXIgdGhlIGRv
Y3VtZW50IGFzc29jaWF0ZWQgdG8gdGhlIGdpdmVuIGZyYW1lIGlzIHNhbmRib3hlZC4KLS8vIFRo
aXMgaXMgb3V0c2lkZSB0aGUgRnJhbWVMb2FkZXIgY2xhc3MgaW4gcGFydCBmb3IgdGhlIEZJWE1F
IHRvIG1vdmUgRnJhbWVMb2FkZXI6OmNyZWF0ZVdpbmRvdygpCi0vLyBvdXQgb2YgdGhlIEZyYW1l
TG9hZGVyIGNsYXNzLgorLy8gVGhpcyBpcyBvdXRzaWRlIHRoZSBGcmFtZUxvYWRlciBjbGFzcyBp
biBwYXJ0IGJlY2F1c2UgY3JlYXRlV2luZG93RnJvbUZyYW1lTG9hZGVyKCkKKy8vIGlzIGEgbm9u
LW1lbWJlciBmdW5jdGlvbiB0aGF0IGNhbGxzIGl0LgogLy8KIC8vIEZJWE1FOiBpc0RvY3VtZW50
U2FuZGJveGVkIHNob3VsZCBldmVudHVhbGx5IHJlcGxhY2UgaXNTYW5kYm94ZWQuCiBzdGF0aWMg
Ym9vbCBpc0RvY3VtZW50U2FuZGJveGVkKGNvbnN0IEZyYW1lJiBmcmFtZSwgU2FuZGJveEZsYWdz
IG1hc2spCkBAIC0yNjgsNzEgKzI2OCw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldERlZmVyc0xv
YWRpbmcoYm9vbCBkZWZlcnMpCiAgICAgfQogfQogCi1GcmFtZSogRnJhbWVMb2FkZXI6OmNyZWF0
ZVdpbmRvdyhGcmFtZUxvYWRlciogZnJhbWVMb2FkZXJGb3JGcmFtZUxvb2t1cCwgY29uc3QgRnJh
bWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBi
b29sJiBjcmVhdGVkKQoteyAKLSAgICBBU1NFUlQoIWZlYXR1cmVzLmRpYWxvZyB8fCByZXF1ZXN0
LmZyYW1lTmFtZSgpLmlzRW1wdHkoKSk7Ci0KLSAgICBpZiAoIXJlcXVlc3QuZnJhbWVOYW1lKCku
aXNFbXB0eSgpICYmIHJlcXVlc3QuZnJhbWVOYW1lKCkgIT0gIl9ibGFuayIpIHsKLSAgICAgICAg
RnJhbWUqIGZyYW1lID0gZnJhbWVMb2FkZXJGb3JGcmFtZUxvb2t1cC0+ZnJhbWUoKS0+dHJlZSgp
LT5maW5kKHJlcXVlc3QuZnJhbWVOYW1lKCkpOwotICAgICAgICBpZiAoZnJhbWUgJiYgc2hvdWxk
QWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkgewotICAgICAgICAgICAgaWYgKCFyZXF1ZXN0LnJlc291
cmNlUmVxdWVzdCgpLnVybCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+bG9h
ZGVyKCktPmxvYWRGcmFtZVJlcXVlc3QocmVxdWVzdCwgZmFsc2UsIGZhbHNlLCAwLCAwLCBTZW5k
UmVmZXJyZXIpOwotICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQot
ICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5mb2N1cygpOwotICAgICAgICAgICAgY3Jl
YXRlZCA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIGZyYW1lOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgLy8gU2FuZGJveGVkIGZyYW1lcyBjYW5ub3Qgb3BlbiBuZXcgYXV4aWxpYXJ5IGJy
b3dzaW5nIGNvbnRleHRzLgotICAgIGlmIChpc0RvY3VtZW50U2FuZGJveGVkKCptX2ZyYW1lLCBT
YW5kYm94TmF2aWdhdGlvbikpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gRklYTUU6IFNl
dHRpbmcgdGhlIHJlZmVycmVyIHNob3VsZCBiZSB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHku
Ci0gICAgRnJhbWVMb2FkUmVxdWVzdCByZXF1ZXN0V2l0aFJlZmVycmVyID0gcmVxdWVzdDsKLSAg
ICByZXF1ZXN0V2l0aFJlZmVycmVyLnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBSZWZlcnJlciht
X291dGdvaW5nUmVmZXJyZXIpOwotICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0V2l0
aFJlZmVycmVyLnJlc291cmNlUmVxdWVzdCgpLCBvdXRnb2luZ09yaWdpbigpKTsKLQotICAgIFBh
Z2UqIG9sZFBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0gICAgaWYgKCFvbGRQYWdlKQotICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgCi0gICAgUGFnZSogcGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgp
LT5jcmVhdGVXaW5kb3cobV9mcmFtZSwgcmVxdWVzdFdpdGhSZWZlcnJlciwgZmVhdHVyZXMpOwot
ICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBGcmFtZSogZnJhbWUgPSBw
YWdlLT5tYWluRnJhbWUoKTsKLSAgICBpZiAocmVxdWVzdC5mcmFtZU5hbWUoKSAhPSAiX2JsYW5r
IikKLSAgICAgICAgZnJhbWUtPnRyZWUoKS0+c2V0TmFtZShyZXF1ZXN0LmZyYW1lTmFtZSgpKTsK
LQotICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRUb29sYmFyc1Zpc2libGUoZmVhdHVyZXMudG9vbEJh
clZpc2libGUgfHwgZmVhdHVyZXMubG9jYXRpb25CYXJWaXNpYmxlKTsKLSAgICBwYWdlLT5jaHJv
bWUoKS0+c2V0U3RhdHVzYmFyVmlzaWJsZShmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlKTsKLSAg
ICBwYWdlLT5jaHJvbWUoKS0+c2V0U2Nyb2xsYmFyc1Zpc2libGUoZmVhdHVyZXMuc2Nyb2xsYmFy
c1Zpc2libGUpOwotICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRNZW51YmFyVmlzaWJsZShmZWF0dXJl
cy5tZW51QmFyVmlzaWJsZSk7Ci0gICAgcGFnZS0+Y2hyb21lKCktPnNldFJlc2l6YWJsZShmZWF0
dXJlcy5yZXNpemFibGUpOwotCi0gICAgLy8gJ3gnIGFuZCAneScgc3BlY2lmeSB0aGUgbG9jYXRp
b24gb2YgdGhlIHdpbmRvdywgd2hpbGUgJ3dpZHRoJyBhbmQgJ2hlaWdodCcgCi0gICAgLy8gc3Bl
Y2lmeSB0aGUgc2l6ZSBvZiB0aGUgcGFnZS4gV2UgY2FuIG9ubHkgcmVzaXplIHRoZSB3aW5kb3cs
IHNvIAotICAgIC8vIGFkanVzdCBmb3IgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgd2luZG93
IHNpemUgYW5kIHRoZSBwYWdlIHNpemUuCi0KLSAgICBGbG9hdFJlY3Qgd2luZG93UmVjdCA9IHBh
Z2UtPmNocm9tZSgpLT53aW5kb3dSZWN0KCk7Ci0gICAgRmxvYXRTaXplIHBhZ2VTaXplID0gcGFn
ZS0+Y2hyb21lKCktPnBhZ2VSZWN0KCkuc2l6ZSgpOwotICAgIGlmIChmZWF0dXJlcy54U2V0KQot
ICAgICAgICB3aW5kb3dSZWN0LnNldFgoZmVhdHVyZXMueCk7Ci0gICAgaWYgKGZlYXR1cmVzLnlT
ZXQpCi0gICAgICAgIHdpbmRvd1JlY3Quc2V0WShmZWF0dXJlcy55KTsKLSAgICBpZiAoZmVhdHVy
ZXMud2lkdGhTZXQpCi0gICAgICAgIHdpbmRvd1JlY3Quc2V0V2lkdGgoZmVhdHVyZXMud2lkdGgg
KyAod2luZG93UmVjdC53aWR0aCgpIC0gcGFnZVNpemUud2lkdGgoKSkpOwotICAgIGlmIChmZWF0
dXJlcy5oZWlnaHRTZXQpCi0gICAgICAgIHdpbmRvd1JlY3Quc2V0SGVpZ2h0KGZlYXR1cmVzLmhl
aWdodCArICh3aW5kb3dSZWN0LmhlaWdodCgpIC0gcGFnZVNpemUuaGVpZ2h0KCkpKTsKLSAgICBw
YWdlLT5jaHJvbWUoKS0+c2V0V2luZG93UmVjdCh3aW5kb3dSZWN0KTsKLQotICAgIHBhZ2UtPmNo
cm9tZSgpLT5zaG93KCk7Ci0KLSAgICBjcmVhdGVkID0gdHJ1ZTsKLSAgICByZXR1cm4gZnJhbWU7
Ci19Ci0KIGJvb2wgRnJhbWVMb2FkZXI6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIHJldHVybiBtX2NsaWVudC0+Y2FuSGFuZGxlUmVxdWVz
dChyZXF1ZXN0KTsKQEAgLTQwMjgsNCArMzk2Myw3MiBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50
OjpoYXNIVE1MVmlldygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0ZyYW1lKiBjcmVh
dGVXaW5kb3dGcm9tRnJhbWVMb2FkZXIoRnJhbWVMb2FkZXIqIHNvdXJjZUZyYW1lTG9hZGVyLCBG
cmFtZUxvYWRlciogZnJhbWVMb2FkZXJGb3JGcmFtZUxvb2t1cCwgY29uc3QgRnJhbWVMb2FkUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBib29sJiBjcmVh
dGVkKQoreworICAgIEFTU0VSVChzb3VyY2VGcmFtZUxvYWRlcik7CisgICAgQVNTRVJUKCFmZWF0
dXJlcy5kaWFsb2cgfHwgcmVxdWVzdC5mcmFtZU5hbWUoKS5pc0VtcHR5KCkpOworCisgICAgaWYg
KCFyZXF1ZXN0LmZyYW1lTmFtZSgpLmlzRW1wdHkoKSAmJiByZXF1ZXN0LmZyYW1lTmFtZSgpICE9
ICJfYmxhbmsiKSB7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IGZyYW1lTG9hZGVyRm9yRnJhbWVM
b29rdXAtPmZyYW1lKCktPnRyZWUoKS0+ZmluZChyZXF1ZXN0LmZyYW1lTmFtZSgpKTsKKyAgICAg
ICAgaWYgKGZyYW1lICYmIHNvdXJjZUZyYW1lTG9hZGVyLT5zaG91bGRBbGxvd05hdmlnYXRpb24o
ZnJhbWUpKSB7CisgICAgICAgICAgICBpZiAoIXJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJs
KCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+bG9hZEZyYW1l
UmVxdWVzdChyZXF1ZXN0LCBmYWxzZSwgZmFsc2UsIDAsIDAsIFNlbmRSZWZlcnJlcik7CisgICAg
ICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCisgICAgICAgICAgICAgICAg
cGFnZS0+Y2hyb21lKCktPmZvY3VzKCk7CisgICAgICAgICAgICBjcmVhdGVkID0gZmFsc2U7Cisg
ICAgICAgICAgICByZXR1cm4gZnJhbWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBGcmFtZSog
c291cmNlRnJhbWUgPSBzb3VyY2VGcmFtZUxvYWRlci0+ZnJhbWUoKTsKKworICAgIC8vIFNhbmRi
b3hlZCBmcmFtZXMgY2Fubm90IG9wZW4gbmV3IGF1eGlsaWFyeSBicm93c2luZyBjb250ZXh0cy4K
KyAgICBpZiAoaXNEb2N1bWVudFNhbmRib3hlZCgqc291cmNlRnJhbWUsIFNhbmRib3hOYXZpZ2F0
aW9uKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBGSVhNRTogU2V0dGluZyB0aGUgcmVm
ZXJyZXIgc2hvdWxkIGJlIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eS4KKyAgICBGcmFtZUxv
YWRSZXF1ZXN0IHJlcXVlc3RXaXRoUmVmZXJyZXIgPSByZXF1ZXN0OworICAgIHJlcXVlc3RXaXRo
UmVmZXJyZXIucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVyKHNvdXJjZUZyYW1lTG9h
ZGVyLT5vdXRnb2luZ1JlZmVycmVyKCkpOworICAgIEZyYW1lTG9hZGVyOjphZGRIVFRQT3JpZ2lu
SWZOZWVkZWQocmVxdWVzdFdpdGhSZWZlcnJlci5yZXNvdXJjZVJlcXVlc3QoKSwgc291cmNlRnJh
bWVMb2FkZXItPm91dGdvaW5nT3JpZ2luKCkpOworCisgICAgUGFnZSogb2xkUGFnZSA9IHNvdXJj
ZUZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFvbGRQYWdlKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIFBhZ2UqIHBhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS0+Y3JlYXRlV2luZG93KHNvdXJjZUZy
YW1lLCByZXF1ZXN0V2l0aFJlZmVycmVyLCBmZWF0dXJlcyk7CisgICAgaWYgKCFwYWdlKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOwor
ICAgIGlmIChyZXF1ZXN0LmZyYW1lTmFtZSgpICE9ICJfYmxhbmsiKQorICAgICAgICBmcmFtZS0+
dHJlZSgpLT5zZXROYW1lKHJlcXVlc3QuZnJhbWVOYW1lKCkpOworCisgICAgcGFnZS0+Y2hyb21l
KCktPnNldFRvb2xiYXJzVmlzaWJsZShmZWF0dXJlcy50b29sQmFyVmlzaWJsZSB8fCBmZWF0dXJl
cy5sb2NhdGlvbkJhclZpc2libGUpOworICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRTdGF0dXNiYXJW
aXNpYmxlKGZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUpOworICAgIHBhZ2UtPmNocm9tZSgpLT5z
ZXRTY3JvbGxiYXJzVmlzaWJsZShmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSk7CisgICAgcGFn
ZS0+Y2hyb21lKCktPnNldE1lbnViYXJWaXNpYmxlKGZlYXR1cmVzLm1lbnVCYXJWaXNpYmxlKTsK
KyAgICBwYWdlLT5jaHJvbWUoKS0+c2V0UmVzaXphYmxlKGZlYXR1cmVzLnJlc2l6YWJsZSk7CisK
KyAgICAvLyAneCcgYW5kICd5JyBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiB0aGUgd2luZG93LCB3
aGlsZSAnd2lkdGgnIGFuZCAnaGVpZ2h0JworICAgIC8vIHNwZWNpZnkgdGhlIHNpemUgb2YgdGhl
IHBhZ2UuIFdlIGNhbiBvbmx5IHJlc2l6ZSB0aGUgd2luZG93LCBzbworICAgIC8vIGFkanVzdCBm
b3IgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgd2luZG93IHNpemUgYW5kIHRoZSBwYWdlIHNp
emUuCisKKyAgICBGbG9hdFJlY3Qgd2luZG93UmVjdCA9IHBhZ2UtPmNocm9tZSgpLT53aW5kb3dS
ZWN0KCk7CisgICAgRmxvYXRTaXplIHBhZ2VTaXplID0gcGFnZS0+Y2hyb21lKCktPnBhZ2VSZWN0
KCkuc2l6ZSgpOworICAgIGlmIChmZWF0dXJlcy54U2V0KQorICAgICAgICB3aW5kb3dSZWN0LnNl
dFgoZmVhdHVyZXMueCk7CisgICAgaWYgKGZlYXR1cmVzLnlTZXQpCisgICAgICAgIHdpbmRvd1Jl
Y3Quc2V0WShmZWF0dXJlcy55KTsKKyAgICBpZiAoZmVhdHVyZXMud2lkdGhTZXQpCisgICAgICAg
IHdpbmRvd1JlY3Quc2V0V2lkdGgoZmVhdHVyZXMud2lkdGggKyAod2luZG93UmVjdC53aWR0aCgp
IC0gcGFnZVNpemUud2lkdGgoKSkpOworICAgIGlmIChmZWF0dXJlcy5oZWlnaHRTZXQpCisgICAg
ICAgIHdpbmRvd1JlY3Quc2V0SGVpZ2h0KGZlYXR1cmVzLmhlaWdodCArICh3aW5kb3dSZWN0Lmhl
aWdodCgpIC0gcGFnZVNpemUuaGVpZ2h0KCkpKTsKKyAgICBwYWdlLT5jaHJvbWUoKS0+c2V0V2lu
ZG93UmVjdCh3aW5kb3dSZWN0KTsKKworICAgIHBhZ2UtPmNocm9tZSgpLT5zaG93KCk7CisKKyAg
ICBjcmVhdGVkID0gdHJ1ZTsKKyAgICByZXR1cm4gZnJhbWU7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGRlMDE0MDUuLjk4ZGIxOGMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaApAQCAtMTI0LDEwICsxMjQsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9p
ZCByZXBvcnRMb2NhbExvYWRGYWlsZWQoRnJhbWUqLCBjb25zdCBTdHJpbmcmIHVybCk7CiAKLSAg
ICAvLyBDYWxsZWQgYnkgY3JlYXRlV2luZG93IGluIEpTRE9NV2luZG93QmFzZS5jcHAsIGUuZy4g
dG8gZnVsZmlsbCBhIG1vZGFsIGRpYWxvZyBjcmVhdGlvbgotICAgIC8vIEZJWE1FOiBNb3ZlIHRo
aXMgbWV0aG9kIG91dHNpZGUgb2YgdGhlIEZyYW1lTG9hZGVyIGNsYXNzLgotICAgIEZyYW1lKiBj
cmVhdGVXaW5kb3coRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyRm9yRnJhbWVMb29rdXAsIGNvbnN0
IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGJvb2wmIGNyZWF0ZWQp
OwotCiAgICAgdW5zaWduZWQgbG9uZyBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIFN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9yJiwgUmVzb3Vy
Y2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSk7CiAKICAgICBib29sIGNhbkhhbmRsZVJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC01MzgsNiArNTM0LDkgQEAgcHJpdmF0
ZToKICNlbmRpZgogfTsKIAorLy8gQ2FsbGVkIGJ5IGNyZWF0ZVdpbmRvdyBpbiBKU0RPTVdpbmRv
d0Jhc2UuY3BwLCBlLmcuIHRvIGZ1bGZpbGwgYSBtb2RhbCBkaWFsb2cgY3JlYXRpb24KK0ZyYW1l
KiBjcmVhdGVXaW5kb3dGcm9tRnJhbWVMb2FkZXIoRnJhbWVMb2FkZXIqIHNvdXJjZUZyYW1lLCBG
cmFtZUxvYWRlciogZnJhbWVMb2FkZXJGb3JGcmFtZUxvb2t1cCwgY29uc3QgRnJhbWVMb2FkUmVx
dWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgYm9vbCYgY3JlYXRlZCk7CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEZyYW1lTG9hZGVyX2gK
</data>
<flag name="review"
          id="40576"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56426</attachid>
            <date>2010-05-18 17:08:39 -0700</date>
            <delta_ts>2010-05-18 22:50:29 -0700</delta_ts>
            <desc>Proposed patch 2</desc>
            <filename>_patch-39156-3.diff</filename>
            <type>text/plain</type>
            <size>10970</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODRkNDllYy4uOWQ5M2JmYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wNS0xNiAgQ2hyaXMgSmVyZG9u
ZWsgIDxjamVyZG9uZWtAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcmVkIEZyYW1lTG9hZGVyOjpjcmVhdGVXaW5kb3co
KSBvdXQgb2YgdGhlIEZyYW1lTG9hZGVyIGNsYXNzCisgICAgICAgIHNpbmNlIEZyYW1lTG9hZGVy
IHNob3VsZCBub3QgYmUgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHdpbmRvd3MuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MTU2CisKKyAgICAg
ICAgTm8gbmV3IGZ1bmN0aW9uYWxpdHksIHNvIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIGJp
bmRpbmdzL2dlbmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oOgorICAgICAgICAoV2ViQ29yZTo6Ojpj
cmVhdGVXaW5kb3cpOgorICAgICAgICAgIC0gVXBkYXRlZCB0aGUgY2FsbCB0byBGcmFtZUxvYWRl
cidzIGNyZWF0ZVdpbmRvdygpLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICAgLSBV
cGRhdGVkIHRoZSBjYWxsIHRvIEZyYW1lTG9hZGVyJ3MgY3JlYXRlV2luZG93KCkuCisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRv
d0Zyb21GcmFtZUxvYWRlcik6CisgICAgICAgICAgLSBNYWRlIEZyYW1lTG9hZGVyOjpjcmVhdGVX
aW5kb3coKSBub24tbWVtYmVyLCBub24tZnJpZW5kIGFuZCBjaGFuZ2VkIGl0CisgICAgICAgICAg
ICB0byBhY2NlcHQgRnJhbWUqIHBhcmFtZXRlcnMgaW5zdGVhZCBvZiBGcmFtZUxvYWRlciouCisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICAgLSBVcGRhdGVkIHRoZSBo
ZWFkZXIgZmlsZSB0byByZWZsZWN0IHRoZSBhYm92ZSBjaGFuZ2UgdG8gRnJhbWVMb2FkZXIuY3Bw
LgorCiAyMDEwLTA1LTE4ICBDaHJpcyBKZXJkb25layAgPGNqZXJkb25la0B3ZWJraXQub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9nZW5lcmljL0JpbmRpbmdET01XaW5kb3cuaCBiL1dlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9CaW5kaW5nRE9NV2luZG93LmgKaW5kZXggYjQ2YmRmOS4uNjg0ODY2OSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdET01XaW5kb3cuaAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL2dlbmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oCkBAIC04OCwxMSArODgsOSBA
QCBGcmFtZSogQmluZGluZ0RPTVdpbmRvdzxCaW5kaW5nPjo6Y3JlYXRlV2luZG93KFN0YXRlPEJp
bmRpbmc+KiBzdGF0ZSwKICAgICAvLyBpc3N1ZXMgdG8gcGFzcyB0aGUgVVJMIGluc3RlYWQgb2Yg
IiIuCiAKICAgICBib29sIGNyZWF0ZWQ7Ci0gICAgLy8gV2UgcGFzcyBpbiB0aGUgb3BlbmVyIGZy
YW1lIGhlcmUgc28gaXQgY2FuIGJlIHVzZWQgZm9yIGxvb2tpbmcgdXAgdGhlCi0gICAgLy8gZnJh
bWUgbmFtZSwgaW4gY2FzZSB0aGUgYWN0aXZlIGZyYW1lIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBv
cGVuZXIgZnJhbWUsCi0gICAgLy8gYW5kIHRoZSBuYW1lIHJlZmVyZW5jZXMgYSBmcmFtZSByZWxh
dGl2ZSB0byB0aGUgb3BlbmVyIGZyYW1lLCBmb3IgZXhhbXBsZQotICAgIC8vICJfc2VsZiIgb3Ig
Il9wYXJlbnQiLgotICAgIEZyYW1lKiBuZXdGcmFtZSA9IGNhbGxpbmdGcmFtZS0+bG9hZGVyKCkt
PmNyZWF0ZVdpbmRvdyhvcGVuZXJGcmFtZS0+bG9hZGVyKCksIGZyYW1lUmVxdWVzdCwgd2luZG93
RmVhdHVyZXMsIGNyZWF0ZWQpOworICAgIC8vIFdlIHBhc3MgdGhlIG9wZW5lciBmcmFtZSBmb3Ig
dGhlIGxvb2t1cEZyYW1lIGluIGNhc2UgdGhlIGFjdGl2ZSBmcmFtZSBpcyBkaWZmZXJlbnQgZnJv
bQorICAgIC8vIHRoZSBvcGVuZXIgZnJhbWUsIGFuZCB0aGUgbmFtZSByZWZlcmVuY2VzIGEgZnJh
bWUgcmVsYXRpdmUgdG8gdGhlIG9wZW5lciBmcmFtZS4KKyAgICBGcmFtZSogbmV3RnJhbWUgPSBj
cmVhdGVXaW5kb3coY2FsbGluZ0ZyYW1lLCBvcGVuZXJGcmFtZSwgZnJhbWVSZXF1ZXN0LCB3aW5k
b3dGZWF0dXJlcywgY3JlYXRlZCk7CiAgICAgaWYgKCFuZXdGcmFtZSkKICAgICAgICAgcmV0dXJu
IDA7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggNjU2
ZDU4MC4uOThmODA0ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHAKQEAgLTcyOSwxMCArNzI5LDkgQEAgc3RhdGljIEZyYW1lKiBjcmVhdGVXaW5kb3coRXhlY1N0
YXRlKiBleGVjLCBGcmFtZSogbGV4aWNhbEZyYW1lLCBGcmFtZSogZHluYW1pY0YKICAgICAvLyBX
ZSdkIGhhdmUgdG8gcmVzb2x2ZSBhbGwgdGhvc2UgaXNzdWVzIHRvIHBhc3MgdGhlIFVSTCBpbnN0
ZWFkIG9mICIiLgogCiAgICAgYm9vbCBjcmVhdGVkOwotICAgIC8vIFdlIHBhc3MgaW4gdGhlIG9w
ZW5lciBmcmFtZSBoZXJlIHNvIGl0IGNhbiBiZSB1c2VkIGZvciBsb29raW5nIHVwIHRoZSBmcmFt
ZSBuYW1lLCBpbiBjYXNlIHRoZSBhY3RpdmUgZnJhbWUKLSAgICAvLyBpcyBkaWZmZXJlbnQgZnJv
bSB0aGUgb3BlbmVyIGZyYW1lLCBhbmQgdGhlIG5hbWUgcmVmZXJlbmNlcyBhIGZyYW1lIHJlbGF0
aXZlIHRvIHRoZSBvcGVuZXIgZnJhbWUsIGZvciBleGFtcGxlCi0gICAgLy8gIl9zZWxmIiBvciAi
X3BhcmVudCIuCi0gICAgRnJhbWUqIG5ld0ZyYW1lID0gbGV4aWNhbEZyYW1lLT5sb2FkZXIoKS0+
Y3JlYXRlV2luZG93KG9wZW5lckZyYW1lLT5sb2FkZXIoKSwgZnJhbWVSZXF1ZXN0LCB3aW5kb3dG
ZWF0dXJlcywgY3JlYXRlZCk7CisgICAgLy8gV2UgcGFzcyB0aGUgb3BlbmVyIGZyYW1lIGZvciB0
aGUgbG9va3VwRnJhbWUgaW4gY2FzZSB0aGUgYWN0aXZlIGZyYW1lIGlzIGRpZmZlcmVudCBmcm9t
CisgICAgLy8gdGhlIG9wZW5lciBmcmFtZSwgYW5kIHRoZSBuYW1lIHJlZmVyZW5jZXMgYSBmcmFt
ZSByZWxhdGl2ZSB0byB0aGUgb3BlbmVyIGZyYW1lLgorICAgIEZyYW1lKiBuZXdGcmFtZSA9IGNy
ZWF0ZVdpbmRvdyhsZXhpY2FsRnJhbWUsIG9wZW5lckZyYW1lLCBmcmFtZVJlcXVlc3QsIHdpbmRv
d0ZlYXR1cmVzLCBjcmVhdGVkKTsKICAgICBpZiAoIW5ld0ZyYW1lKQogICAgICAgICByZXR1cm4g
MDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDM2YjM4ZTguLjcxM2MzYTkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKQEAgLTI3MCw3MSArMjcwLDYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0
RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKICAgICB9CiB9CiAKLUZyYW1lKiBGcmFtZUxvYWRl
cjo6Y3JlYXRlV2luZG93KEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlckZvckZyYW1lTG9va3VwLCBj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVh
dHVyZXMsIGJvb2wmIGNyZWF0ZWQpCi17IAotICAgIEFTU0VSVCghZmVhdHVyZXMuZGlhbG9nIHx8
IHJlcXVlc3QuZnJhbWVOYW1lKCkuaXNFbXB0eSgpKTsKLQotICAgIGlmICghcmVxdWVzdC5mcmFt
ZU5hbWUoKS5pc0VtcHR5KCkgJiYgcmVxdWVzdC5mcmFtZU5hbWUoKSAhPSAiX2JsYW5rIikgewot
ICAgICAgICBGcmFtZSogZnJhbWUgPSBmcmFtZUxvYWRlckZvckZyYW1lTG9va3VwLT5mcmFtZSgp
LT50cmVlKCktPmZpbmQocmVxdWVzdC5mcmFtZU5hbWUoKSk7Ci0gICAgICAgIGlmIChmcmFtZSAm
JiBzaG91bGRBbGxvd05hdmlnYXRpb24oZnJhbWUpKSB7Ci0gICAgICAgICAgICBpZiAoIXJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGZy
YW1lLT5sb2FkZXIoKS0+bG9hZEZyYW1lUmVxdWVzdChyZXF1ZXN0LCBmYWxzZSwgZmFsc2UsIDAs
IDAsIFNlbmRSZWZlcnJlcik7Ci0gICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5w
YWdlKCkpCi0gICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmZvY3VzKCk7Ci0gICAgICAg
ICAgICBjcmVhdGVkID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gZnJhbWU7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICAvLyBTYW5kYm94ZWQgZnJhbWVzIGNhbm5vdCBvcGVuIG5ldyBhdXhp
bGlhcnkgYnJvd3NpbmcgY29udGV4dHMuCi0gICAgaWYgKGlzRG9jdW1lbnRTYW5kYm94ZWQobV9m
cmFtZSwgU2FuZGJveE5hdmlnYXRpb24pKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIEZJ
WE1FOiBTZXR0aW5nIHRoZSByZWZlcnJlciBzaG91bGQgYmUgdGhlIGNhbGxlcidzIHJlc3BvbnNp
YmlsaXR5LgotICAgIEZyYW1lTG9hZFJlcXVlc3QgcmVxdWVzdFdpdGhSZWZlcnJlciA9IHJlcXVl
c3Q7Ci0gICAgcmVxdWVzdFdpdGhSZWZlcnJlci5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQUmVm
ZXJyZXIobV9vdXRnb2luZ1JlZmVycmVyKTsKLSAgICBhZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVx
dWVzdFdpdGhSZWZlcnJlci5yZXNvdXJjZVJlcXVlc3QoKSwgb3V0Z29pbmdPcmlnaW4oKSk7Ci0K
LSAgICBQYWdlKiBvbGRQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwotICAgIGlmICghb2xkUGFnZSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIAotICAgIFBhZ2UqIHBhZ2UgPSBvbGRQYWdlLT5j
aHJvbWUoKS0+Y3JlYXRlV2luZG93KG1fZnJhbWUsIHJlcXVlc3RXaXRoUmVmZXJyZXIsIGZlYXR1
cmVzKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgRnJhbWUqIGZy
YW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAgaWYgKHJlcXVlc3QuZnJhbWVOYW1lKCkgIT0g
Il9ibGFuayIpCi0gICAgICAgIGZyYW1lLT50cmVlKCktPnNldE5hbWUocmVxdWVzdC5mcmFtZU5h
bWUoKSk7Ci0KLSAgICBwYWdlLT5jaHJvbWUoKS0+c2V0VG9vbGJhcnNWaXNpYmxlKGZlYXR1cmVz
LnRvb2xCYXJWaXNpYmxlIHx8IGZlYXR1cmVzLmxvY2F0aW9uQmFyVmlzaWJsZSk7Ci0gICAgcGFn
ZS0+Y2hyb21lKCktPnNldFN0YXR1c2JhclZpc2libGUoZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJs
ZSk7Ci0gICAgcGFnZS0+Y2hyb21lKCktPnNldFNjcm9sbGJhcnNWaXNpYmxlKGZlYXR1cmVzLnNj
cm9sbGJhcnNWaXNpYmxlKTsKLSAgICBwYWdlLT5jaHJvbWUoKS0+c2V0TWVudWJhclZpc2libGUo
ZmVhdHVyZXMubWVudUJhclZpc2libGUpOwotICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRSZXNpemFi
bGUoZmVhdHVyZXMucmVzaXphYmxlKTsKLQotICAgIC8vICd4JyBhbmQgJ3knIHNwZWNpZnkgdGhl
IGxvY2F0aW9uIG9mIHRoZSB3aW5kb3csIHdoaWxlICd3aWR0aCcgYW5kICdoZWlnaHQnIAotICAg
IC8vIHNwZWNpZnkgdGhlIHNpemUgb2YgdGhlIHBhZ2UuIFdlIGNhbiBvbmx5IHJlc2l6ZSB0aGUg
d2luZG93LCBzbyAKLSAgICAvLyBhZGp1c3QgZm9yIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhl
IHdpbmRvdyBzaXplIGFuZCB0aGUgcGFnZSBzaXplLgotCi0gICAgRmxvYXRSZWN0IHdpbmRvd1Jl
Y3QgPSBwYWdlLT5jaHJvbWUoKS0+d2luZG93UmVjdCgpOwotICAgIEZsb2F0U2l6ZSBwYWdlU2l6
ZSA9IHBhZ2UtPmNocm9tZSgpLT5wYWdlUmVjdCgpLnNpemUoKTsKLSAgICBpZiAoZmVhdHVyZXMu
eFNldCkKLSAgICAgICAgd2luZG93UmVjdC5zZXRYKGZlYXR1cmVzLngpOwotICAgIGlmIChmZWF0
dXJlcy55U2V0KQotICAgICAgICB3aW5kb3dSZWN0LnNldFkoZmVhdHVyZXMueSk7Ci0gICAgaWYg
KGZlYXR1cmVzLndpZHRoU2V0KQotICAgICAgICB3aW5kb3dSZWN0LnNldFdpZHRoKGZlYXR1cmVz
LndpZHRoICsgKHdpbmRvd1JlY3Qud2lkdGgoKSAtIHBhZ2VTaXplLndpZHRoKCkpKTsKLSAgICBp
ZiAoZmVhdHVyZXMuaGVpZ2h0U2V0KQotICAgICAgICB3aW5kb3dSZWN0LnNldEhlaWdodChmZWF0
dXJlcy5oZWlnaHQgKyAod2luZG93UmVjdC5oZWlnaHQoKSAtIHBhZ2VTaXplLmhlaWdodCgpKSk7
Ci0gICAgcGFnZS0+Y2hyb21lKCktPnNldFdpbmRvd1JlY3Qod2luZG93UmVjdCk7Ci0KLSAgICBw
YWdlLT5jaHJvbWUoKS0+c2hvdygpOwotCi0gICAgY3JlYXRlZCA9IHRydWU7Ci0gICAgcmV0dXJu
IGZyYW1lOwotfQotCiBib29sIEZyYW1lTG9hZGVyOjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gbV9jbGllbnQtPmNhbkhhbmRs
ZVJlcXVlc3QocmVxdWVzdCk7CkBAIC00MDI2LDQgKzM5NjEsNjkgQEAgYm9vbCBGcmFtZUxvYWRl
ckNsaWVudDo6aGFzSFRNTFZpZXcoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitGcmFt
ZSogY3JlYXRlV2luZG93KEZyYW1lKiBvcGVuZXJGcmFtZSwgRnJhbWUqIGxvb2t1cEZyYW1lLCBj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVh
dHVyZXMsIGJvb2wmIGNyZWF0ZWQpCit7CisgICAgQVNTRVJUKCFmZWF0dXJlcy5kaWFsb2cgfHwg
cmVxdWVzdC5mcmFtZU5hbWUoKS5pc0VtcHR5KCkpOworCisgICAgaWYgKCFyZXF1ZXN0LmZyYW1l
TmFtZSgpLmlzRW1wdHkoKSAmJiByZXF1ZXN0LmZyYW1lTmFtZSgpICE9ICJfYmxhbmsiKSB7Cisg
ICAgICAgIEZyYW1lKiBmcmFtZSA9IGxvb2t1cEZyYW1lLT50cmVlKCktPmZpbmQocmVxdWVzdC5m
cmFtZU5hbWUoKSk7CisgICAgICAgIGlmIChmcmFtZSAmJiBvcGVuZXJGcmFtZS0+bG9hZGVyKCkt
PnNob3VsZEFsbG93TmF2aWdhdGlvbihmcmFtZSkpIHsKKyAgICAgICAgICAgIGlmICghcmVxdWVz
dC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgZnJh
bWUtPmxvYWRlcigpLT5sb2FkRnJhbWVSZXF1ZXN0KHJlcXVlc3QsIGZhbHNlLCBmYWxzZSwgMCwg
MCwgU2VuZFJlZmVycmVyKTsKKyAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBh
Z2UoKSkKKyAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Zm9jdXMoKTsKKyAgICAgICAg
ICAgIGNyZWF0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBmcmFtZTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIFNhbmRib3hlZCBmcmFtZXMgY2Fubm90IG9wZW4gbmV3IGF1eGls
aWFyeSBicm93c2luZyBjb250ZXh0cy4KKyAgICBpZiAoaXNEb2N1bWVudFNhbmRib3hlZChvcGVu
ZXJGcmFtZSwgU2FuZGJveE5hdmlnYXRpb24pKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8v
IEZJWE1FOiBTZXR0aW5nIHRoZSByZWZlcnJlciBzaG91bGQgYmUgdGhlIGNhbGxlcidzIHJlc3Bv
bnNpYmlsaXR5LgorICAgIEZyYW1lTG9hZFJlcXVlc3QgcmVxdWVzdFdpdGhSZWZlcnJlciA9IHJl
cXVlc3Q7CisgICAgcmVxdWVzdFdpdGhSZWZlcnJlci5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQ
UmVmZXJyZXIob3BlbmVyRnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpOworICAg
IEZyYW1lTG9hZGVyOjphZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdFdpdGhSZWZlcnJlci5y
ZXNvdXJjZVJlcXVlc3QoKSwgb3BlbmVyRnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ09yaWdpbigp
KTsKKworICAgIFBhZ2UqIG9sZFBhZ2UgPSBvcGVuZXJGcmFtZS0+cGFnZSgpOworICAgIGlmICgh
b2xkUGFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBQYWdlKiBwYWdlID0gb2xkUGFnZS0+
Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhvcGVuZXJGcmFtZSwgcmVxdWVzdFdpdGhSZWZlcnJlciwg
ZmVhdHVyZXMpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBGcmFt
ZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKKyAgICBpZiAocmVxdWVzdC5mcmFtZU5hbWUo
KSAhPSAiX2JsYW5rIikKKyAgICAgICAgZnJhbWUtPnRyZWUoKS0+c2V0TmFtZShyZXF1ZXN0LmZy
YW1lTmFtZSgpKTsKKworICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRUb29sYmFyc1Zpc2libGUoZmVh
dHVyZXMudG9vbEJhclZpc2libGUgfHwgZmVhdHVyZXMubG9jYXRpb25CYXJWaXNpYmxlKTsKKyAg
ICBwYWdlLT5jaHJvbWUoKS0+c2V0U3RhdHVzYmFyVmlzaWJsZShmZWF0dXJlcy5zdGF0dXNCYXJW
aXNpYmxlKTsKKyAgICBwYWdlLT5jaHJvbWUoKS0+c2V0U2Nyb2xsYmFyc1Zpc2libGUoZmVhdHVy
ZXMuc2Nyb2xsYmFyc1Zpc2libGUpOworICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRNZW51YmFyVmlz
aWJsZShmZWF0dXJlcy5tZW51QmFyVmlzaWJsZSk7CisgICAgcGFnZS0+Y2hyb21lKCktPnNldFJl
c2l6YWJsZShmZWF0dXJlcy5yZXNpemFibGUpOworCisgICAgLy8gJ3gnIGFuZCAneScgc3BlY2lm
eSB0aGUgbG9jYXRpb24gb2YgdGhlIHdpbmRvdywgd2hpbGUgJ3dpZHRoJyBhbmQgJ2hlaWdodCcK
KyAgICAvLyBzcGVjaWZ5IHRoZSBzaXplIG9mIHRoZSBwYWdlLiBXZSBjYW4gb25seSByZXNpemUg
dGhlIHdpbmRvdywgc28KKyAgICAvLyBhZGp1c3QgZm9yIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4g
dGhlIHdpbmRvdyBzaXplIGFuZCB0aGUgcGFnZSBzaXplLgorCisgICAgRmxvYXRSZWN0IHdpbmRv
d1JlY3QgPSBwYWdlLT5jaHJvbWUoKS0+d2luZG93UmVjdCgpOworICAgIEZsb2F0U2l6ZSBwYWdl
U2l6ZSA9IHBhZ2UtPmNocm9tZSgpLT5wYWdlUmVjdCgpLnNpemUoKTsKKyAgICBpZiAoZmVhdHVy
ZXMueFNldCkKKyAgICAgICAgd2luZG93UmVjdC5zZXRYKGZlYXR1cmVzLngpOworICAgIGlmIChm
ZWF0dXJlcy55U2V0KQorICAgICAgICB3aW5kb3dSZWN0LnNldFkoZmVhdHVyZXMueSk7CisgICAg
aWYgKGZlYXR1cmVzLndpZHRoU2V0KQorICAgICAgICB3aW5kb3dSZWN0LnNldFdpZHRoKGZlYXR1
cmVzLndpZHRoICsgKHdpbmRvd1JlY3Qud2lkdGgoKSAtIHBhZ2VTaXplLndpZHRoKCkpKTsKKyAg
ICBpZiAoZmVhdHVyZXMuaGVpZ2h0U2V0KQorICAgICAgICB3aW5kb3dSZWN0LnNldEhlaWdodChm
ZWF0dXJlcy5oZWlnaHQgKyAod2luZG93UmVjdC5oZWlnaHQoKSAtIHBhZ2VTaXplLmhlaWdodCgp
KSk7CisgICAgcGFnZS0+Y2hyb21lKCktPnNldFdpbmRvd1JlY3Qod2luZG93UmVjdCk7CisKKyAg
ICBwYWdlLT5jaHJvbWUoKS0+c2hvdygpOworCisgICAgY3JlYXRlZCA9IHRydWU7CisgICAgcmV0
dXJuIGZyYW1lOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApp
bmRleCBjZWRiMjk1Li5hZmU0NWJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTEyNCwxMCArMTI0
LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVwb3J0TG9jYWxMb2FkRmFpbGVkKEZy
YW1lKiwgY29uc3QgU3RyaW5nJiB1cmwpOwogCi0gICAgLy8gQ2FsbGVkIGJ5IGNyZWF0ZVdpbmRv
dyBpbiBKU0RPTVdpbmRvd0Jhc2UuY3BwLCBlLmcuIHRvIGZ1bGZpbGwgYSBtb2RhbCBkaWFsb2cg
Y3JlYXRpb24KLSAgICAvLyBGSVhNRTogTW92ZSB0aGlzIG1ldGhvZCBvdXRzaWRlIG9mIHRoZSBG
cmFtZUxvYWRlciBjbGFzcy4KLSAgICBGcmFtZSogY3JlYXRlV2luZG93KEZyYW1lTG9hZGVyKiBm
cmFtZUxvYWRlckZvckZyYW1lTG9va3VwLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3Qg
V2luZG93RmVhdHVyZXMmLCBib29sJiBjcmVhdGVkKTsKLQogICAgIHVuc2lnbmVkIGxvbmcgbG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTdG9yZWRDcmVk
ZW50aWFscywgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4m
IGRhdGEpOwogCiAgICAgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwpAQCAtNTQwLDYgKzUzNiwxNSBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCisvLyBUaGlz
IGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBjcmVhdGVXaW5kb3coKSBpbiBKU0RPTVdpbmRvd0Jhc2Uu
Y3BwLCBmb3IgZXhhbXBsZSwgZm9yCisvLyBtb2RhbCBkaWFsb2cgY3JlYXRpb24uICBUaGUgbG9v
a3VwRnJhbWUgaXMgZm9yIGxvb2tpbmcgdXAgdGhlIGZyYW1lIG5hbWUgaW4gY2FzZQorLy8gdGhl
IGZyYW1lIG5hbWUgcmVmZXJlbmNlcyBhIGZyYW1lIGRpZmZlcmVudCBmcm9tIHRoZSBvcGVuZXJG
cmFtZSwgZS5nLiB3aGVuIGl0IGlzCisvLyAiX3NlbGYiIG9yICJfcGFyZW50Ii4KKy8vCisvLyBG
SVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgZnVuY3Rpb24gcGFydCBvZiBhbiBhcHByb3ByaWF0
ZSBjbGFzcyAobm90IEZyYW1lTG9hZGVyKQorLy8gYW5kIG1vdmluZyBpdCB0byBhIG1vcmUgYXBw
cm9wcmlhdGUgbG9jYXRpb24uCitGcmFtZSogY3JlYXRlV2luZG93KEZyYW1lKiBvcGVuZXJGcmFt
ZSwgRnJhbWUqIGxvb2t1cEZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2lu
ZG93RmVhdHVyZXMmLCBib29sJiBjcmVhdGVkKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRnJhbWVMb2FkZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56455</attachid>
            <date>2010-05-18 22:50:29 -0700</date>
            <delta_ts>2010-08-11 10:40:49 -0700</delta_ts>
            <desc>Proposed patch 3</desc>
            <filename>_patch-39156-4.diff</filename>
            <type>text/plain</type>
            <size>10971</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmFhZGUyNy4uYjRmYTVmNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wNS0xNiAgQ2hyaXMgSmVyZG9u
ZWsgIDxjamVyZG9uZWtAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcmVkIEZyYW1lTG9hZGVyOjpjcmVhdGVXaW5kb3co
KSBvdXQgb2YgdGhlIEZyYW1lTG9hZGVyIGNsYXNzCisgICAgICAgIHNpbmNlIEZyYW1lTG9hZGVy
IHNob3VsZCBub3QgYmUgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHdpbmRvd3MuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MTU2CisKKyAgICAg
ICAgTm8gbmV3IGZ1bmN0aW9uYWxpdHksIHNvIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIGJp
bmRpbmdzL2dlbmVyaWMvQmluZGluZ0RPTVdpbmRvdy5oOgorICAgICAgICAoV2ViQ29yZTo6Ojpj
cmVhdGVXaW5kb3cpOgorICAgICAgICAgIC0gVXBkYXRlZCB0aGUgY2FsbCB0byBGcmFtZUxvYWRl
cidzIGNyZWF0ZVdpbmRvdygpLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICAgLSBV
cGRhdGVkIHRoZSBjYWxsIHRvIEZyYW1lTG9hZGVyJ3MgY3JlYXRlV2luZG93KCkuCisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRv
d0Zyb21GcmFtZUxvYWRlcik6CisgICAgICAgICAgLSBNYWRlIEZyYW1lTG9hZGVyOjpjcmVhdGVX
aW5kb3coKSBub24tbWVtYmVyLCBub24tZnJpZW5kIGFuZCBjaGFuZ2VkIGl0CisgICAgICAgICAg
ICB0byBhY2NlcHQgRnJhbWUqIHBhcmFtZXRlcnMgaW5zdGVhZCBvZiBGcmFtZUxvYWRlciouCisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICAgLSBVcGRhdGVkIHRoZSBo
ZWFkZXIgZmlsZSB0byByZWZsZWN0IHRoZSBhYm92ZSBjaGFuZ2UgdG8gRnJhbWVMb2FkZXIuY3Bw
LgorCiAyMDEwLTA1LTE4ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
Z2VuZXJpYy9CaW5kaW5nRE9NV2luZG93LmggYi9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQmlu
ZGluZ0RPTVdpbmRvdy5oCmluZGV4IGI0NmJkZjkuLjIyMDY4OGYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvZ2VuZXJpYy9CaW5kaW5nRE9NV2luZG93LmgKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL0JpbmRpbmdET01XaW5kb3cuaApAQCAtODgsMTEgKzg4LDkgQEAgRnJhbWUq
IEJpbmRpbmdET01XaW5kb3c8QmluZGluZz46OmNyZWF0ZVdpbmRvdyhTdGF0ZTxCaW5kaW5nPiog
c3RhdGUsCiAgICAgLy8gaXNzdWVzIHRvIHBhc3MgdGhlIFVSTCBpbnN0ZWFkIG9mICIiLgogCiAg
ICAgYm9vbCBjcmVhdGVkOwotICAgIC8vIFdlIHBhc3MgaW4gdGhlIG9wZW5lciBmcmFtZSBoZXJl
IHNvIGl0IGNhbiBiZSB1c2VkIGZvciBsb29raW5nIHVwIHRoZQotICAgIC8vIGZyYW1lIG5hbWUs
IGluIGNhc2UgdGhlIGFjdGl2ZSBmcmFtZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3BlbmVyIGZy
YW1lLAotICAgIC8vIGFuZCB0aGUgbmFtZSByZWZlcmVuY2VzIGEgZnJhbWUgcmVsYXRpdmUgdG8g
dGhlIG9wZW5lciBmcmFtZSwgZm9yIGV4YW1wbGUKLSAgICAvLyAiX3NlbGYiIG9yICJfcGFyZW50
Ii4KLSAgICBGcmFtZSogbmV3RnJhbWUgPSBjYWxsaW5nRnJhbWUtPmxvYWRlcigpLT5jcmVhdGVX
aW5kb3cob3BlbmVyRnJhbWUtPmxvYWRlcigpLCBmcmFtZVJlcXVlc3QsIHdpbmRvd0ZlYXR1cmVz
LCBjcmVhdGVkKTsKKyAgICAvLyBXZSBwYXNzIHRoZSBvcGVuZXIgZnJhbWUgZm9yIHRoZSBsb29r
dXBGcmFtZSBpbiBjYXNlIHRoZSBhY3RpdmUgZnJhbWUgaXMgZGlmZmVyZW50IGZyb20KKyAgICAv
LyB0aGUgb3BlbmVyIGZyYW1lLCBhbmQgdGhlIG5hbWUgcmVmZXJlbmNlcyBhIGZyYW1lIHJlbGF0
aXZlIHRvIHRoZSBvcGVuZXIgZnJhbWUuCisgICAgRnJhbWUqIG5ld0ZyYW1lID0gV2ViQ29yZTo6
Y3JlYXRlV2luZG93KGNhbGxpbmdGcmFtZSwgb3BlbmVyRnJhbWUsIGZyYW1lUmVxdWVzdCwgd2lu
ZG93RmVhdHVyZXMsIGNyZWF0ZWQpOwogICAgIGlmICghbmV3RnJhbWUpCiAgICAgICAgIHJldHVy
biAwOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDY1
NmQ1ODAuLjk4ZjgwNGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCkBAIC03MjksMTAgKzcyOSw5IEBAIHN0YXRpYyBGcmFtZSogY3JlYXRlV2luZG93KEV4ZWNT
dGF0ZSogZXhlYywgRnJhbWUqIGxleGljYWxGcmFtZSwgRnJhbWUqIGR5bmFtaWNGCiAgICAgLy8g
V2UnZCBoYXZlIHRvIHJlc29sdmUgYWxsIHRob3NlIGlzc3VlcyB0byBwYXNzIHRoZSBVUkwgaW5z
dGVhZCBvZiAiIi4KIAogICAgIGJvb2wgY3JlYXRlZDsKLSAgICAvLyBXZSBwYXNzIGluIHRoZSBv
cGVuZXIgZnJhbWUgaGVyZSBzbyBpdCBjYW4gYmUgdXNlZCBmb3IgbG9va2luZyB1cCB0aGUgZnJh
bWUgbmFtZSwgaW4gY2FzZSB0aGUgYWN0aXZlIGZyYW1lCi0gICAgLy8gaXMgZGlmZmVyZW50IGZy
b20gdGhlIG9wZW5lciBmcmFtZSwgYW5kIHRoZSBuYW1lIHJlZmVyZW5jZXMgYSBmcmFtZSByZWxh
dGl2ZSB0byB0aGUgb3BlbmVyIGZyYW1lLCBmb3IgZXhhbXBsZQotICAgIC8vICJfc2VsZiIgb3Ig
Il9wYXJlbnQiLgotICAgIEZyYW1lKiBuZXdGcmFtZSA9IGxleGljYWxGcmFtZS0+bG9hZGVyKCkt
PmNyZWF0ZVdpbmRvdyhvcGVuZXJGcmFtZS0+bG9hZGVyKCksIGZyYW1lUmVxdWVzdCwgd2luZG93
RmVhdHVyZXMsIGNyZWF0ZWQpOworICAgIC8vIFdlIHBhc3MgdGhlIG9wZW5lciBmcmFtZSBmb3Ig
dGhlIGxvb2t1cEZyYW1lIGluIGNhc2UgdGhlIGFjdGl2ZSBmcmFtZSBpcyBkaWZmZXJlbnQgZnJv
bQorICAgIC8vIHRoZSBvcGVuZXIgZnJhbWUsIGFuZCB0aGUgbmFtZSByZWZlcmVuY2VzIGEgZnJh
bWUgcmVsYXRpdmUgdG8gdGhlIG9wZW5lciBmcmFtZS4KKyAgICBGcmFtZSogbmV3RnJhbWUgPSBj
cmVhdGVXaW5kb3cobGV4aWNhbEZyYW1lLCBvcGVuZXJGcmFtZSwgZnJhbWVSZXF1ZXN0LCB3aW5k
b3dGZWF0dXJlcywgY3JlYXRlZCk7CiAgICAgaWYgKCFuZXdGcmFtZSkKICAgICAgICAgcmV0dXJu
IDA7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAzNmIzOGU4Li43MTNjM2E5IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCkBAIC0yNzAsNzEgKzI3MCw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNl
dERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCiAgICAgfQogfQogCi1GcmFtZSogRnJhbWVMb2Fk
ZXI6OmNyZWF0ZVdpbmRvdyhGcmFtZUxvYWRlciogZnJhbWVMb2FkZXJGb3JGcmFtZUxvb2t1cCwg
Y29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZl
YXR1cmVzLCBib29sJiBjcmVhdGVkKQoteyAKLSAgICBBU1NFUlQoIWZlYXR1cmVzLmRpYWxvZyB8
fCByZXF1ZXN0LmZyYW1lTmFtZSgpLmlzRW1wdHkoKSk7Ci0KLSAgICBpZiAoIXJlcXVlc3QuZnJh
bWVOYW1lKCkuaXNFbXB0eSgpICYmIHJlcXVlc3QuZnJhbWVOYW1lKCkgIT0gIl9ibGFuayIpIHsK
LSAgICAgICAgRnJhbWUqIGZyYW1lID0gZnJhbWVMb2FkZXJGb3JGcmFtZUxvb2t1cC0+ZnJhbWUo
KS0+dHJlZSgpLT5maW5kKHJlcXVlc3QuZnJhbWVOYW1lKCkpOwotICAgICAgICBpZiAoZnJhbWUg
JiYgc2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkgewotICAgICAgICAgICAgaWYgKCFyZXF1
ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBm
cmFtZS0+bG9hZGVyKCktPmxvYWRGcmFtZVJlcXVlc3QocmVxdWVzdCwgZmFsc2UsIGZhbHNlLCAw
LCAwLCBTZW5kUmVmZXJyZXIpOwotICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+
cGFnZSgpKQotICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5mb2N1cygpOwotICAgICAg
ICAgICAgY3JlYXRlZCA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIGZyYW1lOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgLy8gU2FuZGJveGVkIGZyYW1lcyBjYW5ub3Qgb3BlbiBuZXcgYXV4
aWxpYXJ5IGJyb3dzaW5nIGNvbnRleHRzLgotICAgIGlmIChpc0RvY3VtZW50U2FuZGJveGVkKG1f
ZnJhbWUsIFNhbmRib3hOYXZpZ2F0aW9uKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBG
SVhNRTogU2V0dGluZyB0aGUgcmVmZXJyZXIgc2hvdWxkIGJlIHRoZSBjYWxsZXIncyByZXNwb25z
aWJpbGl0eS4KLSAgICBGcmFtZUxvYWRSZXF1ZXN0IHJlcXVlc3RXaXRoUmVmZXJyZXIgPSByZXF1
ZXN0OwotICAgIHJlcXVlc3RXaXRoUmVmZXJyZXIucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJl
ZmVycmVyKG1fb3V0Z29pbmdSZWZlcnJlcik7Ci0gICAgYWRkSFRUUE9yaWdpbklmTmVlZGVkKHJl
cXVlc3RXaXRoUmVmZXJyZXIucmVzb3VyY2VSZXF1ZXN0KCksIG91dGdvaW5nT3JpZ2luKCkpOwot
Ci0gICAgUGFnZSogb2xkUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAgICBpZiAoIW9sZFBhZ2Up
Ci0gICAgICAgIHJldHVybiAwOwotICAgICAgICAKLSAgICBQYWdlKiBwYWdlID0gb2xkUGFnZS0+
Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhtX2ZyYW1lLCByZXF1ZXN0V2l0aFJlZmVycmVyLCBmZWF0
dXJlcyk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEZyYW1lKiBm
cmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOwotICAgIGlmIChyZXF1ZXN0LmZyYW1lTmFtZSgpICE9
ICJfYmxhbmsiKQotICAgICAgICBmcmFtZS0+dHJlZSgpLT5zZXROYW1lKHJlcXVlc3QuZnJhbWVO
YW1lKCkpOwotCi0gICAgcGFnZS0+Y2hyb21lKCktPnNldFRvb2xiYXJzVmlzaWJsZShmZWF0dXJl
cy50b29sQmFyVmlzaWJsZSB8fCBmZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGUpOwotICAgIHBh
Z2UtPmNocm9tZSgpLT5zZXRTdGF0dXNiYXJWaXNpYmxlKGZlYXR1cmVzLnN0YXR1c0JhclZpc2li
bGUpOwotICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRTY3JvbGxiYXJzVmlzaWJsZShmZWF0dXJlcy5z
Y3JvbGxiYXJzVmlzaWJsZSk7Ci0gICAgcGFnZS0+Y2hyb21lKCktPnNldE1lbnViYXJWaXNpYmxl
KGZlYXR1cmVzLm1lbnVCYXJWaXNpYmxlKTsKLSAgICBwYWdlLT5jaHJvbWUoKS0+c2V0UmVzaXph
YmxlKGZlYXR1cmVzLnJlc2l6YWJsZSk7Ci0KLSAgICAvLyAneCcgYW5kICd5JyBzcGVjaWZ5IHRo
ZSBsb2NhdGlvbiBvZiB0aGUgd2luZG93LCB3aGlsZSAnd2lkdGgnIGFuZCAnaGVpZ2h0JyAKLSAg
ICAvLyBzcGVjaWZ5IHRoZSBzaXplIG9mIHRoZSBwYWdlLiBXZSBjYW4gb25seSByZXNpemUgdGhl
IHdpbmRvdywgc28gCi0gICAgLy8gYWRqdXN0IGZvciB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRo
ZSB3aW5kb3cgc2l6ZSBhbmQgdGhlIHBhZ2Ugc2l6ZS4KLQotICAgIEZsb2F0UmVjdCB3aW5kb3dS
ZWN0ID0gcGFnZS0+Y2hyb21lKCktPndpbmRvd1JlY3QoKTsKLSAgICBGbG9hdFNpemUgcGFnZVNp
emUgPSBwYWdlLT5jaHJvbWUoKS0+cGFnZVJlY3QoKS5zaXplKCk7Ci0gICAgaWYgKGZlYXR1cmVz
LnhTZXQpCi0gICAgICAgIHdpbmRvd1JlY3Quc2V0WChmZWF0dXJlcy54KTsKLSAgICBpZiAoZmVh
dHVyZXMueVNldCkKLSAgICAgICAgd2luZG93UmVjdC5zZXRZKGZlYXR1cmVzLnkpOwotICAgIGlm
IChmZWF0dXJlcy53aWR0aFNldCkKLSAgICAgICAgd2luZG93UmVjdC5zZXRXaWR0aChmZWF0dXJl
cy53aWR0aCArICh3aW5kb3dSZWN0LndpZHRoKCkgLSBwYWdlU2l6ZS53aWR0aCgpKSk7Ci0gICAg
aWYgKGZlYXR1cmVzLmhlaWdodFNldCkKLSAgICAgICAgd2luZG93UmVjdC5zZXRIZWlnaHQoZmVh
dHVyZXMuaGVpZ2h0ICsgKHdpbmRvd1JlY3QuaGVpZ2h0KCkgLSBwYWdlU2l6ZS5oZWlnaHQoKSkp
OwotICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRXaW5kb3dSZWN0KHdpbmRvd1JlY3QpOwotCi0gICAg
cGFnZS0+Y2hyb21lKCktPnNob3coKTsKLQotICAgIGNyZWF0ZWQgPSB0cnVlOwotICAgIHJldHVy
biBmcmFtZTsKLX0KLQogYm9vbCBGcmFtZUxvYWRlcjo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgcmV0dXJuIG1fY2xpZW50LT5jYW5IYW5k
bGVSZXF1ZXN0KHJlcXVlc3QpOwpAQCAtNDAyNiw0ICszOTYxLDY5IEBAIGJvb2wgRnJhbWVMb2Fk
ZXJDbGllbnQ6Omhhc0hUTUxWaWV3KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorRnJh
bWUqIGNyZWF0ZVdpbmRvdyhGcmFtZSogb3BlbmVyRnJhbWUsIEZyYW1lKiBsb29rdXBGcmFtZSwg
Y29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZl
YXR1cmVzLCBib29sJiBjcmVhdGVkKQoreworICAgIEFTU0VSVCghZmVhdHVyZXMuZGlhbG9nIHx8
IHJlcXVlc3QuZnJhbWVOYW1lKCkuaXNFbXB0eSgpKTsKKworICAgIGlmICghcmVxdWVzdC5mcmFt
ZU5hbWUoKS5pc0VtcHR5KCkgJiYgcmVxdWVzdC5mcmFtZU5hbWUoKSAhPSAiX2JsYW5rIikgewor
ICAgICAgICBGcmFtZSogZnJhbWUgPSBsb29rdXBGcmFtZS0+dHJlZSgpLT5maW5kKHJlcXVlc3Qu
ZnJhbWVOYW1lKCkpOworICAgICAgICBpZiAoZnJhbWUgJiYgb3BlbmVyRnJhbWUtPmxvYWRlcigp
LT5zaG91bGRBbGxvd05hdmlnYXRpb24oZnJhbWUpKSB7CisgICAgICAgICAgICBpZiAoIXJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGZy
YW1lLT5sb2FkZXIoKS0+bG9hZEZyYW1lUmVxdWVzdChyZXF1ZXN0LCBmYWxzZSwgZmFsc2UsIDAs
IDAsIFNlbmRSZWZlcnJlcik7CisgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5w
YWdlKCkpCisgICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmZvY3VzKCk7CisgICAgICAg
ICAgICBjcmVhdGVkID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gZnJhbWU7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBTYW5kYm94ZWQgZnJhbWVzIGNhbm5vdCBvcGVuIG5ldyBhdXhp
bGlhcnkgYnJvd3NpbmcgY29udGV4dHMuCisgICAgaWYgKGlzRG9jdW1lbnRTYW5kYm94ZWQob3Bl
bmVyRnJhbWUsIFNhbmRib3hOYXZpZ2F0aW9uKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAv
LyBGSVhNRTogU2V0dGluZyB0aGUgcmVmZXJyZXIgc2hvdWxkIGJlIHRoZSBjYWxsZXIncyByZXNw
b25zaWJpbGl0eS4KKyAgICBGcmFtZUxvYWRSZXF1ZXN0IHJlcXVlc3RXaXRoUmVmZXJyZXIgPSBy
ZXF1ZXN0OworICAgIHJlcXVlc3RXaXRoUmVmZXJyZXIucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRU
UFJlZmVycmVyKG9wZW5lckZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKTsKKyAg
ICBGcmFtZUxvYWRlcjo6YWRkSFRUUE9yaWdpbklmTmVlZGVkKHJlcXVlc3RXaXRoUmVmZXJyZXIu
cmVzb3VyY2VSZXF1ZXN0KCksIG9wZW5lckZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdPcmlnaW4o
KSk7CisKKyAgICBQYWdlKiBvbGRQYWdlID0gb3BlbmVyRnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAo
IW9sZFBhZ2UpCisgICAgICAgIHJldHVybiAwOworCisgICAgUGFnZSogcGFnZSA9IG9sZFBhZ2Ut
PmNocm9tZSgpLT5jcmVhdGVXaW5kb3cob3BlbmVyRnJhbWUsIHJlcXVlc3RXaXRoUmVmZXJyZXIs
IGZlYXR1cmVzKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiAwOworCisgICAgRnJh
bWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgaWYgKHJlcXVlc3QuZnJhbWVOYW1l
KCkgIT0gIl9ibGFuayIpCisgICAgICAgIGZyYW1lLT50cmVlKCktPnNldE5hbWUocmVxdWVzdC5m
cmFtZU5hbWUoKSk7CisKKyAgICBwYWdlLT5jaHJvbWUoKS0+c2V0VG9vbGJhcnNWaXNpYmxlKGZl
YXR1cmVzLnRvb2xCYXJWaXNpYmxlIHx8IGZlYXR1cmVzLmxvY2F0aW9uQmFyVmlzaWJsZSk7Cisg
ICAgcGFnZS0+Y2hyb21lKCktPnNldFN0YXR1c2JhclZpc2libGUoZmVhdHVyZXMuc3RhdHVzQmFy
VmlzaWJsZSk7CisgICAgcGFnZS0+Y2hyb21lKCktPnNldFNjcm9sbGJhcnNWaXNpYmxlKGZlYXR1
cmVzLnNjcm9sbGJhcnNWaXNpYmxlKTsKKyAgICBwYWdlLT5jaHJvbWUoKS0+c2V0TWVudWJhclZp
c2libGUoZmVhdHVyZXMubWVudUJhclZpc2libGUpOworICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRS
ZXNpemFibGUoZmVhdHVyZXMucmVzaXphYmxlKTsKKworICAgIC8vICd4JyBhbmQgJ3knIHNwZWNp
ZnkgdGhlIGxvY2F0aW9uIG9mIHRoZSB3aW5kb3csIHdoaWxlICd3aWR0aCcgYW5kICdoZWlnaHQn
CisgICAgLy8gc3BlY2lmeSB0aGUgc2l6ZSBvZiB0aGUgcGFnZS4gV2UgY2FuIG9ubHkgcmVzaXpl
IHRoZSB3aW5kb3csIHNvCisgICAgLy8gYWRqdXN0IGZvciB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVu
IHRoZSB3aW5kb3cgc2l6ZSBhbmQgdGhlIHBhZ2Ugc2l6ZS4KKworICAgIEZsb2F0UmVjdCB3aW5k
b3dSZWN0ID0gcGFnZS0+Y2hyb21lKCktPndpbmRvd1JlY3QoKTsKKyAgICBGbG9hdFNpemUgcGFn
ZVNpemUgPSBwYWdlLT5jaHJvbWUoKS0+cGFnZVJlY3QoKS5zaXplKCk7CisgICAgaWYgKGZlYXR1
cmVzLnhTZXQpCisgICAgICAgIHdpbmRvd1JlY3Quc2V0WChmZWF0dXJlcy54KTsKKyAgICBpZiAo
ZmVhdHVyZXMueVNldCkKKyAgICAgICAgd2luZG93UmVjdC5zZXRZKGZlYXR1cmVzLnkpOworICAg
IGlmIChmZWF0dXJlcy53aWR0aFNldCkKKyAgICAgICAgd2luZG93UmVjdC5zZXRXaWR0aChmZWF0
dXJlcy53aWR0aCArICh3aW5kb3dSZWN0LndpZHRoKCkgLSBwYWdlU2l6ZS53aWR0aCgpKSk7Cisg
ICAgaWYgKGZlYXR1cmVzLmhlaWdodFNldCkKKyAgICAgICAgd2luZG93UmVjdC5zZXRIZWlnaHQo
ZmVhdHVyZXMuaGVpZ2h0ICsgKHdpbmRvd1JlY3QuaGVpZ2h0KCkgLSBwYWdlU2l6ZS5oZWlnaHQo
KSkpOworICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRXaW5kb3dSZWN0KHdpbmRvd1JlY3QpOworCisg
ICAgcGFnZS0+Y2hyb21lKCktPnNob3coKTsKKworICAgIGNyZWF0ZWQgPSB0cnVlOworICAgIHJl
dHVybiBmcmFtZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgK
aW5kZXggY2VkYjI5NS4uYWZlNDViYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0xMjQsMTAgKzEy
NCw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHJlcG9ydExvY2FsTG9hZEZhaWxlZChG
cmFtZSosIGNvbnN0IFN0cmluZyYgdXJsKTsKIAotICAgIC8vIENhbGxlZCBieSBjcmVhdGVXaW5k
b3cgaW4gSlNET01XaW5kb3dCYXNlLmNwcCwgZS5nLiB0byBmdWxmaWxsIGEgbW9kYWwgZGlhbG9n
IGNyZWF0aW9uCi0gICAgLy8gRklYTUU6IE1vdmUgdGhpcyBtZXRob2Qgb3V0c2lkZSBvZiB0aGUg
RnJhbWVMb2FkZXIgY2xhc3MuCi0gICAgRnJhbWUqIGNyZWF0ZVdpbmRvdyhGcmFtZUxvYWRlciog
ZnJhbWVMb2FkZXJGb3JGcmFtZUxvb2t1cCwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0
IFdpbmRvd0ZlYXR1cmVzJiwgYm9vbCYgY3JlYXRlZCk7Ci0KICAgICB1bnNpZ25lZCBsb25nIGxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3RvcmVkQ3Jl
ZGVudGlhbHMsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+
JiBkYXRhKTsKIAogICAgIGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKTsKQEAgLTU0MCw2ICs1MzYsMTUgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAorLy8gVGhp
cyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgY3JlYXRlV2luZG93KCkgaW4gSlNET01XaW5kb3dCYXNl
LmNwcCwgZm9yIGV4YW1wbGUsIGZvcgorLy8gbW9kYWwgZGlhbG9nIGNyZWF0aW9uLiAgVGhlIGxv
b2t1cEZyYW1lIGlzIGZvciBsb29raW5nIHVwIHRoZSBmcmFtZSBuYW1lIGluIGNhc2UKKy8vIHRo
ZSBmcmFtZSBuYW1lIHJlZmVyZW5jZXMgYSBmcmFtZSBkaWZmZXJlbnQgZnJvbSB0aGUgb3BlbmVy
RnJhbWUsIGUuZy4gd2hlbiBpdCBpcworLy8gIl9zZWxmIiBvciAiX3BhcmVudCIuCisvLworLy8g
RklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGZ1bmN0aW9uIHBhcnQgb2YgYW4gYXBwcm9wcmlh
dGUgY2xhc3MgKG5vdCBGcmFtZUxvYWRlcikKKy8vIGFuZCBtb3ZpbmcgaXQgdG8gYSBtb3JlIGFw
cHJvcHJpYXRlIGxvY2F0aW9uLgorRnJhbWUqIGNyZWF0ZVdpbmRvdyhGcmFtZSogb3BlbmVyRnJh
bWUsIEZyYW1lKiBsb29rdXBGcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdp
bmRvd0ZlYXR1cmVzJiwgYm9vbCYgY3JlYXRlZCk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEZyYW1lTG9hZGVyX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>