<?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>45119</bug_id>
          
          <creation_ts>2010-09-02 11:38:46 -0700</creation_ts>
          <short_desc>Implement HTML5 definition of document.readyState</short_desc>
          <delta_ts>2010-09-07 09:58:21 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Tony Gentilcore">tonyg</reporter>
          <assigned_to name="Tony Gentilcore">tonyg</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>273472</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-09-02 11:38:46 -0700</bug_when>
    <thetext>Implement HTML5 definition of document.readyState</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273530</commentid>
    <comment_count>1</comment_count>
      <attachid>66405</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-09-02 13:32:47 -0700</bug_when>
    <thetext>Created attachment 66405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273566</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-02 14:11:13 -0700</bug_when>
    <thetext>Attachment 66405 did not build on mac:
Build output: http://queues.webkit.org/results/3927063</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273632</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-09-02 15:47:53 -0700</bug_when>
    <thetext>Maybe the test could have e.g. an image subresource to make a difference between DOMContentLoaded and onload?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273640</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-09-02 16:00:20 -0700</bug_when>
    <thetext>&gt; Maybe the test could have e.g. an image subresource to make a difference between DOMContentLoaded and onload?

Good call. But an image subresource could actually load before or after DCL, so the readyState might be loading or interactive depending on timing.

How about I add two subresources:
1. An external script (guaranteed to block parsing) and check readyState == &quot;loading&quot; in its onload handler.
2. Dynamically append an external script during the DCL event and check readyState == &quot;interactive&quot; in its onload handler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273650</commentid>
    <comment_count>5</comment_count>
      <attachid>66405</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-02 16:12:10 -0700</bug_when>
    <thetext>Comment on attachment 66405
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=66405&amp;action=prettypatch

&gt; WebCore/dom/Document.cpp:964
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();
&gt; +        return String();
Generally we omit the default case.  The compiler will warn us if we forget something from the enum.

&gt; WebCore/dom/XMLDocumentParserLibxml2.cpp:1319
&gt; +        // FIXME: This hack probably isn&apos;t the best way to accomplish this.
&gt; +        document()-&gt;setReadyState(Document::Complete); // Make the doc think it&apos;s done, so it will apply xsl sheets.
Yuck.  XML -&gt; tears.

&gt; WebCore/loader/FrameLoader.cpp:418
&gt; -        m_frame-&gt;document()-&gt;setParsing(false);
&gt; +        // FIXME: HTML5 doesn&apos;t tell us to set the state to complete when aborting, but we do anyway to match legacy behavior.
&gt; +        // http://www.whatwg.org/specs/web-apps/current-work/#the-end
&gt; +        m_frame-&gt;document()-&gt;setReadyState(Document::Complete);
Maybe file a bug against the spec?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274468</commentid>
    <comment_count>6</comment_count>
      <attachid>66603</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-09-05 21:02:11 -0700</bug_when>
    <thetext>Created attachment 66603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274469</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-09-05 21:04:32 -0700</bug_when>
    <thetext>&gt; Generally we omit the default case.  The compiler will warn us if we forget something from the enum.
Done.

&gt; Maybe file a bug against the spec?
Done. Linked in FIXME.

I was hoping to replace m_bParsing with either &quot;!m_parser || !m_parser-&gt;isParsing()&quot; or &quot;m_readyState == Loading&quot;, but it turns out m_bParsing is a little more subtle than that. I believe I can still clean it up, but probably not best in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274473</commentid>
    <comment_count>8</comment_count>
      <attachid>66605</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-09-05 21:35:14 -0700</bug_when>
    <thetext>Created attachment 66605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274493</commentid>
    <comment_count>9</comment_count>
      <attachid>66605</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-05 23:13:58 -0700</bug_when>
    <thetext>Comment on attachment 66605
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=66605&amp;action=prettypatch

Looks great.  Please be on the lookout for any compat issues.

&gt; LayoutTests/ChangeLog:9
&gt; +        * fast/dom/Document/readystate-expected.txt: Added.
&gt; +        * fast/dom/Document/readystate.html: Added. Reads readyState inline script, external script, deferred script, DOMContentLoaded, onload, and dynamic post-onload script.
Out of curiosity, did you cross-test this with other browsers?

&gt; LayoutTests/fast/dom/Document/readystate.html:5
&gt; +&lt;link rel=&quot;stylesheet&quot; href=&quot;../../js/resources/js-test-style.css&quot;&gt;
&gt; +&lt;script src=&quot;../../js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
Woah, crazy.  It&apos;s like a script test that doesn&apos;t use an external JS file.  In my ideal world, doing something like this would be as easy as dump-as-markup: just add a script tag.

&gt; WebCore/dom/Document.cpp:962
&gt; +    switch (m_readyState) {
&gt; +    case Loading:
&gt; +        return &quot;loading&quot;;
&gt; +    case Interactive:
&gt; +        return &quot;interactive&quot;;
&gt; +    case Complete:
&gt; +        return &quot;complete&quot;;
Should we use DECLARE_STATIC_LOCAL so we don&apos;t have to create these string objects every time this API is called?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274702</commentid>
    <comment_count>10</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-09-06 10:40:10 -0700</bug_when>
    <thetext>&gt; Out of curiosity, did you cross-test this with other browsers?

Yes.

Legacy Chrome/Safari behave the same except defer isn&apos;t supported so that runs earlier and is &quot;loading&quot;, and &quot;interactive&quot; is called &quot;loaded&quot;.

Minefield behaves the same with one exception. The script which is dynamically appended in the DCL event runs before onload and thus is &quot;interactive&quot;. In WebKit it runs after onload and thus is &quot;complete&quot;. This behavioral difference should probably be investigated but is totally orthogonal to this change.

&gt; Woah, crazy.  It&apos;s like a script test that doesn&apos;t use an external JS file.  In my ideal world, doing something like this would be as easy as dump-as-markup: just add a script tag.

I liked being about to use shouldBeEqualToString for this test. Is there another pattern I should prefer?

&gt; Should we use DECLARE_STATIC_LOCAL so we don&apos;t have to create these string objects every time this API is called?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274703</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-06 10:42:50 -0700</bug_when>
    <thetext>&gt; I liked being about to use shouldBeEqualToString for this test. Is there another pattern I should prefer?

I meant &quot;crazy&quot; in an awesome way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274710</commentid>
    <comment_count>12</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-09-06 10:50:09 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; I liked being about to use shouldBeEqualToString for this test. Is there another pattern I should prefer?
&gt; 
&gt; I meant &quot;crazy&quot; in an awesome way.

I&apos;m still slightly conflicted. On one hand it is awesome that tests like this are clean and just involve writing a single file. But on the other hand, they can&apos;t be easily run in other browsers (due to the data: hack). For testing the other browsers, I had to write a separate test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274711</commentid>
    <comment_count>13</comment_count>
      <attachid>66658</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-09-06 10:52:51 -0700</bug_when>
    <thetext>Created attachment 66658
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274728</commentid>
    <comment_count>14</comment_count>
      <attachid>66658</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-06 11:33:22 -0700</bug_when>
    <thetext>Comment on attachment 66658
Patch for landing

Clearing flags on attachment: 66658

Committed r66841: &lt;http://trac.webkit.org/changeset/66841&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274729</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-06 11:33:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274793</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-06 15:20:20 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/66841 might have broken Leopard Intel Debug (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275105</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-09-07 09:58:21 -0700</bug_when>
    <thetext>&gt; I&apos;m still slightly conflicted.

I think that for a test like this, being able to compare to all other major browsers is important. It&apos;s likely that someone will need to modify it in the future for this purpose.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66405</attachid>
            <date>2010-09-02 13:32:47 -0700</date>
            <delta_ts>2010-09-05 21:02:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45119-20100902133246.patch</filename>
            <type>text/plain</type>
            <size>13014</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjYWIxNWMzMjVhOTVhYzg4ZmUwNzY4NzNhZjM0YmE1ZTNlMjAwNDJkLi44MTg2ZTVh
NzMzMTY3NTY5NDgyMzE0NzgxZjdiNTMwMDVmNTQwMzZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDktMDIgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgSFRN
TDUgZGVmaW5pdGlvbiBvZiBkb2N1bWVudC5yZWFkeVN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTExOQorCisgICAgICAgICogZmFzdC9kb20v
RG9jdW1lbnQvcmVhZHlzdGF0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL0RvY3VtZW50L3JlYWR5c3RhdGUuaHRtbDogQWRkZWQuIEp1c3QgYSBzaW1wbGUgdGVzdCB3
aGljaCByZWFkcyByZWFkeVN0YXRlIGlubGluZSwgaW4gRE9NQ29udGVudExvYWRlZCwgaW4gYSBk
ZWZlcnJlZCBzY3JpcHQsIGFuZCBvbmxvYWQuCisKIDIwMTAtMDktMDIgIEFuZHJleSBLb3N5YWtv
diAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHRlc3QgZml4Lgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcmVhZHlzdGF0ZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9yZWFkeXN0YXRlLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yZWY5YTlkNWViNWQ5YTFlNWNmMjg5NWI3ZDY3OGE0NTkxYmVl
MDI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcmVh
ZHlzdGF0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUZXN0cyB0aGF0IHRoZSBkb2N1
bWVudCdzIHJlYWR5U3RhdGUgaXMgc2V0IHByb3Blcmx5IGF0IHZhcmlvdXMgcGhhc2VzIGR1cmlu
ZyBsb2FkLgorUEFTUyBkb2N1bWVudC5yZWFkeVN0YXRlIGlzICJsb2FkaW5nIgorUEFTUyBkb2N1
bWVudC5yZWFkeVN0YXRlIGlzICJpbnRlcmFjdGl2ZSIKK1BBU1MgZG9jdW1lbnQucmVhZHlTdGF0
ZSBpcyAiaW50ZXJhY3RpdmUiCitQQVNTIGRvY3VtZW50LnJlYWR5U3RhdGUgaXMgImNvbXBsZXRl
IgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9yZWFkeXN0YXRl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9yZWFkeXN0YXRlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzBlYzdhODUwYzA5NGI1MjcyYzRjNmExZDQ4NGM1OWM2YjYyZmY5YQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3JlYWR5c3RhdGUuaHRt
bApAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQucmVhZHlTdGF0ZScsICdjb21w
bGV0ZScpOyI+CitUZXN0cyB0aGF0IHRoZSBkb2N1bWVudCdzIHJlYWR5U3RhdGUgaXMgc2V0IHBy
b3Blcmx5IGF0IHZhcmlvdXMgcGhhc2VzIGR1cmluZyBsb2FkLgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LnJlYWR5
U3RhdGUiLCAibG9hZGluZyIpOworCisgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNv
bnRlbnRMb2FkZWQiLCBmdW5jdGlvbigpIHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRv
Y3VtZW50LnJlYWR5U3RhdGUiLCAiaW50ZXJhY3RpdmUiKTsKKyAgfSwgZmFsc2UpOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IGRlZmVyIHNyYz0iZGF0YTp0ZXh0L2phdmFzY3JpcHQsc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdkb2N1bWVudC5yZWFkeVN0YXRlJywgJ2ludGVyYWN0aXZlJyk7Ij48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMDZiMGFhNjAxZGRhNDY1ZjgzYzE4ZTFiZWViZjVhZjA1YTVl
NmFlNC4uZDJjYjgyZmQyZTM3ZTIxZWMyZjdjYTVhNzNjY2IzOTJmMTg5MTM4NiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
OCBAQAorMjAxMC0wOS0wMiAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBIVE1MNSBkZWZpbml0aW9uIG9mIGRvY3VtZW50LnJlYWR5U3RhdGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MTE5CisKKyAgICAgICAgVGhlIGxl
Z2FjeSBiZWhhdmlvciB3YXMgImxvYWRpbmciIC0+ICJsb2FkZWQiIC0+ICJjb21wbGV0ZSIuIFRo
ZSBuZXcKKyAgICAgICAgSFRNTDUgYmVoYXZpb3IgaXMgImxvYWRpbmciIC0+ICJpbnRlcmFjdGl2
ZSIgLT4gImNvbXBsZXRlIi4gVGhlcmUgaXMKKyAgICAgICAgc29tZSBwb3RlbnRpYWwgZm9yIHRo
aXMgdG8gY2F1c2UgY29tcGF0IHByb2JsZW1zIGlmIGZvciBpbnN0YW5jZSBhCisgICAgICAgIHBh
Z2UgZXhwZWN0cyByZWFkeVN0YXRlIHRvIGJlICJsb2FkZWQiIGR1cmluZyB0aGUgRE9NQ29udGVu
dExvYWRlZCBldmVudC4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9Eb2N1bWVudC9yZWFkeXN0
YXRlLmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6RG9jdW1lbnQpOiBJbml0aWFsIHZhbHVlIGlzIENvbXBsZXRlIGJlY2F1c2Ug
YWNjb3JkaW5nIHRvIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50
LXdvcmsvI2RvbS1kb2N1bWVudC1yZWFkeXN0YXRlLAorICAgICAgICB3aGVuIGEgRG9jdW1lbnQg
aXMgY3JlYXRlZCB0aGUgaW5pdGlhbCB2YWx1ZSBpcyAiY29tcGxldGUiIHVubGVzcyBpdCBoYXMg
YSBwYXJzZXIgYXNzb2NpYXRlZCB3aXRoIGl0LCBpbiB3aGljaCBjYXNlIGl0IGlzICJsb2FkaW5n
Ii4KKyAgICAgICAgU28gdGhlIGN0b3Igc3RhcnRzIGl0IENvbXBsZXRlLCBhbmQgd2hlbiB0aGUg
cGFyc2VyIGlzIGNyZWF0ZWQgaXQgaXMgZmxpcHBlZCB0byBMb2FkaW5nLgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnNldFJlYWR5U3RhdGUpOiBOb24tdHJpdmlhbCBiaXQgY29waWVkIGZyb20gZm9ybWVyIHNldFBh
cnNpbmcgbWV0aG9kLgorICAgICAgICBXZSBvbmx5IGRvIHRoaXMgd2hlbiB0aGUgcmVhZHlTdGF0
ZSBmbGlwcyBmcm9tIExvYWRpbmcgdG8gSW50ZXJhY3RpdmUgb3IgQ29tcGxldGUsIHRoaXMgbWF0
Y2hlcyB0aGUgbGVnYWN5IGJlaGF2aW9yLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omlt
cGxpY2l0T3Blbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5n
KTogRXZlbiB0aG91Z2ggSFRNTERvY3VtZW50UGFyc2VyIGlzIG5vdyByZXNwb25zaWJsZSBmb3Ig
ZmxpcHBpbmcgdG8gSW50ZXJhY3RpdmUgYmVmb3JlIGl0IHJ1bnMgZGVmZXJyZWQgc2NyaXB0cyB3
ZSBzdGlsbCBmbGlwIGl0IGhlcmUgZm9yIG90aGVyIHBhcnNlcnMuCisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cGFyc2luZyk6CisgICAgICAg
ICogZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpY
TUxEb2N1bWVudFBhcnNlcjo6ZG9FbmQpOiBJJ20gc2NhcmVkIHRvIHRvdWNoIHRoaXMgaGFjaywg
YnV0IHRob3VnaHQgaXQgaXMgd29ydGggYWRkaW5nIGEgRklYTUUuCisgICAgICAgICogZG9tL1hN
TERvY3VtZW50UGFyc2VyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJz
ZXI6OmRvRW5kKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwcmVwYXJlVG9TdG9wUGFy
c2luZyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyk6IEl0IGxvb2tzIGxpa2UgYW4gYWJvcnRlZCBs
b2FkIHNob3VsZCBuZXZlciB0cmFuc2l0aW9uIHRvICJjb21wbGV0ZSIgYWNjb3JkaW5nIHRoZSBI
VE1MNS4gSSd2ZSBsZWZ0IHRoZSBsZWdhY3kgYmVoYXZpb3IgZm9yIG5vdyB0aG91Z2guCisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tDb21wbGV0ZWQpOiBUaGUgRnJhbWVMb2Fk
ZXIgbm93IHNldHMgdGhlIHN0YXRlIG9uIHRoZSBEb2N1bWVudCBpbnN0ZWFkIG9mIHRoZSBEb2N1
bWVudCBwb2xsaW5nIHRoZSBGcmFtZUxvYWRlci4KKwogMjAxMC0wOS0wMiAgTmF0ZSBDaGFwaW4g
IDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGgu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggYjk1ZWNiYjU2ZGMxYWNmMWE3MDhlYmQxYTVjOGNiNDBkMWU1OGFmZC4u
OGU1YzFjYTJiNmUwOGFiNTE3MWU3NDZiZmU5YzU4NGI2ODJjOWZiNyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
MzU2LDYgKzM1Niw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtV
UkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICAsIG1fY29tcGF0aWJpbGl0
eU1vZGUoTm9RdWlya3NNb2RlKQogICAgICwgbV9jb21wYXRpYmlsaXR5TW9kZUxvY2tlZChmYWxz
ZSkKICAgICAsIG1fZG9tVHJlZVZlcnNpb24oMCkKKyAgICAsIG1fcmVhZHlTdGF0ZShDb21wbGV0
ZSkKICAgICAsIG1fc3R5bGVTaGVldHMoU3R5bGVTaGVldExpc3Q6OmNyZWF0ZSh0aGlzKSkKICAg
ICAsIG1fc3R5bGVSZWNhbGNUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OnN0eWxlUmVjYWxjVGltZXJG
aXJlZCkKICAgICAsIG1fcGVuZGluZ1N0eWxlUmVjYWxjU2hvdWxkRm9yY2UoZmFsc2UpCkBAIC00
MjcsNyArNDI4LDYgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VS
TCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgIG1fZG9jTG9hZGVyID0gbmV3
IERvY0xvYWRlcih0aGlzKTsKIAogICAgIG1fdmlzdWFsbHlPcmRlcmVkID0gZmFsc2U7Ci0gICAg
bV9iUGFyc2luZyA9IGZhbHNlOwogICAgIG1fd2VsbEZvcm1lZCA9IGZhbHNlOwogCiAgICAgbV90
ZXh0Q29sb3IgPSBDb2xvcjo6YmxhY2s7CkBAIC05NTIsMTYgKzk1MiwzNSBAQCBFbGVtZW50KiBE
b2N1bWVudDo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNv
bnN0CiAKIFN0cmluZyBEb2N1bWVudDo6cmVhZHlTdGF0ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKEZy
YW1lKiBmID0gZnJhbWUoKSkgewotICAgICAgICBpZiAoZi0+bG9hZGVyKCktPmlzQ29tcGxldGUo
KSkgCi0gICAgICAgICAgICByZXR1cm4gImNvbXBsZXRlIjsKLSAgICAgICAgaWYgKHBhcnNpbmco
KSkgCi0gICAgICAgICAgICByZXR1cm4gImxvYWRpbmciOwotICAgICAgICByZXR1cm4gImxvYWRl
ZCI7Ci0gICAgICAgIC8vIEZJWE1FOiBXaGF0IGRvZXMgImludGVyYWN0aXZlIiBtZWFuPwotICAg
ICAgICAvLyBGSVhNRTogTWlzc2luZyBzdXBwb3J0IGZvciAidW5pbml0aWFsaXplZCIuCisgICAg
c3dpdGNoIChtX3JlYWR5U3RhdGUpIHsKKyAgICBjYXNlIExvYWRpbmc6CisgICAgICAgIHJldHVy
biAibG9hZGluZyI7CisgICAgY2FzZSBJbnRlcmFjdGl2ZToKKyAgICAgICAgcmV0dXJuICJpbnRl
cmFjdGl2ZSI7CisgICAgY2FzZSBDb21wbGV0ZToKKyAgICAgICAgcmV0dXJuICJjb21wbGV0ZSI7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKICAgICB9Ci0gICAgcmV0dXJuIFN0cmluZygpOworfQorCit2b2lkIERv
Y3VtZW50OjpzZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKK3sKKyAgICAvLyBG
SVhNRTogRmlyZSB0aGUgcmVhZHlzdGF0ZWNoYW5nZSBldmVudCBvbiB0aGlzIERvY3VtZW50Lgor
CisgICAgYm9vbCBqdXN0RmluaXNoZWRQYXJzaW5nID0gbV9yZWFkeVN0YXRlID09IExvYWRpbmcg
JiYgcmVhZHlTdGF0ZSAhPSBMb2FkaW5nOworCisgICAgbV9yZWFkeVN0YXRlID0gcmVhZHlTdGF0
ZTsKKworICAgIGlmIChqdXN0RmluaXNoZWRQYXJzaW5nICYmIHZpZXcoKSkKKyAgICAgICAgdmll
dygpLT5zY2hlZHVsZVJlbGF5b3V0KCk7CisKKyNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hF
RFVMSU5HCisgICAgaWYgKCFvd25lckVsZW1lbnQoKSAmJiBqdXN0RmluaXNoZWRQYXJzaW5nKQor
ICAgICAgICBwcmludGYoIlBhcnNpbmcgZmluaXNoZWQgYXQgJWRcbiIsIGVsYXBzZWRUaW1lKCkp
OworI2VuZGlmCisKIH0KIAogU3RyaW5nIERvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CkBAIC0x
ODY4LDcgKzE4ODcsNyBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdE9wZW4oKQogICAgIHNldENv
bXBhdGliaWxpdHlNb2RlKE5vUXVpcmtzTW9kZSk7CiAKICAgICBtX3BhcnNlciA9IGNyZWF0ZVBh
cnNlcigpOwotICAgIHNldFBhcnNpbmcodHJ1ZSk7CisgICAgc2V0UmVhZHlTdGF0ZShMb2FkaW5n
KTsKIAogICAgIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciogcGFyc2VyID0gc2NyaXB0YWJsZURv
Y3VtZW50UGFyc2VyKCk7CiAgICAgaWYgKG1fZnJhbWUgJiYgcGFyc2VyKQpAQCAtMjA4MSwxOCAr
MjEwMCw2IEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UoKQogI2VuZGlmCiB9CiAKLXZv
aWQgRG9jdW1lbnQ6OnNldFBhcnNpbmcoYm9vbCBiKQotewotICAgIG1fYlBhcnNpbmcgPSBiOwot
ICAgIGlmICghbV9iUGFyc2luZyAmJiB2aWV3KCkpCi0gICAgICAgIHZpZXcoKS0+c2NoZWR1bGVS
ZWxheW91dCgpOwotCi0jaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwotICAgIGlm
ICghb3duZXJFbGVtZW50KCkgJiYgIW1fYlBhcnNpbmcpCi0gICAgICAgIHByaW50ZigiUGFyc2lu
ZyBmaW5pc2hlZCBhdCAlZFxuIiwgZWxhcHNlZFRpbWUoKSk7Ci0jZW5kaWYKLX0KLQogYm9vbCBE
b2N1bWVudDo6c2hvdWxkU2NoZWR1bGVMYXlvdXQoKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24g
d2lsbCBvbmx5IGJlIGNhbGxlZCB3aGVuIEZyYW1lVmlldyB0aGlua3MgYSBsYXlvdXQgaXMgbmVl
ZGVkLgpAQCAtNDEwMyw3ICs0MTEwLDcgQEAgQ29sbGVjdGlvbkNhY2hlKiBEb2N1bWVudDo6bmFt
ZUNvbGxlY3Rpb25JbmZvKENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21pY1MKIAogdm9p
ZCBEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIHsKLSAgICBzZXRQYXJzaW5nKGZhbHNlKTsK
KyAgICBzZXRSZWFkeVN0YXRlKEludGVyYWN0aXZlKTsKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTUNvbnRlbnRMb2FkZWRFdmVudCwgdHJ1ZSwgZmFsc2Up
KTsKIAogICAgIGlmIChGcmFtZSogZiA9IGZyYW1lKCkpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDNlODA0Zjc2NTA0
MmQ3MTdiYzU2OTU5N2Q3OGE4ZjNmMDIwZTY3MDQuLmVmY2VhNjZiMDc4M2U1Y2NiMDgyZGFjNmJk
NDgxN2JmMmJkNzAzNzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNTgyLDkgKzU4MiwxNSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpblF1aXJrc01vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvbXBhdGliaWxpdHlNb2RlID09
IFF1aXJrc01vZGU7IH0KICAgICBib29sIGluTGltaXRlZFF1aXJrc01vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2NvbXBhdGliaWxpdHlNb2RlID09IExpbWl0ZWRRdWlya3NNb2RlOyB9CiAgICAgYm9v
bCBpbk5vUXVpcmtzTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcGF0aWJpbGl0eU1vZGUgPT0g
Tm9RdWlya3NNb2RlOyB9Ci0gICAgCi0gICAgdm9pZCBzZXRQYXJzaW5nKGJvb2wpOwotICAgIGJv
b2wgcGFyc2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYlBhcnNpbmc7IH0KKworICAgIGVudW0gUmVh
ZHlTdGF0ZSB7CisgICAgICAgIExvYWRpbmcsCisgICAgICAgIEludGVyYWN0aXZlLAorICAgICAg
ICBDb21wbGV0ZQorICAgIH07CisgICAgdm9pZCBzZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUpOwor
ICAgIGJvb2wgcGFyc2luZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZSA9PSBMb2FkaW5n
OyB9CisKICAgICBpbnQgbWluaW11bUxheW91dERlbGF5KCk7CiAKICAgICAvLyBUaGlzIG1ldGhv
ZCBpcyB1c2VkIGJ5IEFuZHJvaWQuCkBAIC0xMTU0LDcgKzExNjAsNyBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBtX2xvYWRpbmdTaGVldDsKICAgICBib29sIG1fdmlzdWFsbHlPcmRlcmVkOwotICAg
IGJvb2wgbV9iUGFyc2luZzsKKyAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKICAgICAKICAg
ICBUaW1lcjxEb2N1bWVudD4gbV9zdHlsZVJlY2FsY1RpbWVyOwogICAgIGJvb2wgbV9wZW5kaW5n
U3R5bGVSZWNhbGNTaG91bGRGb3JjZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAgYi9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwCmluZGV4IGQ5OWFiNGI5YWVhMzVlNGNhM2I3NGU5YzBmOGI2MTUyNTQ5ODc0YzYuLjg0
MzllMTEwZGE2YmI0NWNlNWYzN2JkOGQ3MWMwYjA3NTY1NTBlZmEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvV2ViQ29yZS9kb20vWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtMTMxNSw5ICsxMzE1LDEwIEBAIHZvaWQgWE1M
RG9jdW1lbnRQYXJzZXI6OmRvRW5kKCkKICAgICAgICAgdm9pZCogZG9jID0geG1sRG9jUHRyRm9y
U3RyaW5nKGRvY3VtZW50KCktPmRvY0xvYWRlcigpLCBtX29yaWdpbmFsU291cmNlRm9yVHJhbnNm
b3JtLCBkb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgIGRvY3VtZW50KCktPnNl
dFRyYW5zZm9ybVNvdXJjZShuZXcgVHJhbnNmb3JtU291cmNlKGRvYykpOwogCi0gICAgICAgIGRv
Y3VtZW50KCktPnNldFBhcnNpbmcoZmFsc2UpOyAvLyBNYWtlIHRoZSBkb2MgdGhpbmsgaXQncyBk
b25lLCBzbyBpdCB3aWxsIGFwcGx5IHhzbCBzaGVldHMuCisgICAgICAgIC8vIEZJWE1FOiBUaGlz
IGhhY2sgcHJvYmFibHkgaXNuJ3QgdGhlIGJlc3Qgd2F5IHRvIGFjY29tcGxpc2ggdGhpcy4KKyAg
ICAgICAgZG9jdW1lbnQoKS0+c2V0UmVhZHlTdGF0ZShEb2N1bWVudDo6Q29tcGxldGUpOyAvLyBN
YWtlIHRoZSBkb2MgdGhpbmsgaXQncyBkb25lLCBzbyBpdCB3aWxsIGFwcGx5IHhzbCBzaGVldHMu
CiAgICAgICAgIGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFJlY2FsY1N0eWxlSW1t
ZWRpYXRlbHkpOwotICAgICAgICBkb2N1bWVudCgpLT5zZXRQYXJzaW5nKHRydWUpOworICAgICAg
ICBkb2N1bWVudCgpLT5zZXRSZWFkeVN0YXRlKERvY3VtZW50OjpMb2FkaW5nKTsKICAgICAgICAg
RG9jdW1lbnRQYXJzZXI6OnN0b3BQYXJzaW5nKCk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlclF0LmNwcCBiL1dlYkNvcmUvZG9tL1hNTERv
Y3VtZW50UGFyc2VyUXQuY3BwCmluZGV4IGMxZjU5YWNmNjNlMTkzOTlhNDBhMWJhNGRjOWQ2MmI1
NWY0NTQ0NWIuLjk3Zjc2ZWUwMWJkMzA1MzU3NjdhMWY0YTY5MThhYzQ3YWVlMDE0YzUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwCisrKyBiL1dlYkNvcmUv
ZG9tL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwCkBAIC0yMTAsOSArMjEwLDExIEBAIHZvaWQgWE1M
RG9jdW1lbnRQYXJzZXI6OmRvRW5kKCkKICNpZiBFTkFCTEUoWFNMVCkKICAgICBpZiAobV9zYXdY
U0xUcmFuc2Zvcm0pIHsKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0VHJhbnNmb3JtU291cmNlKG5l
dyBUcmFuc2Zvcm1Tb3VyY2UobV9vcmlnaW5hbFNvdXJjZUZvclRyYW5zZm9ybSkpOwotICAgICAg
ICBkb2N1bWVudCgpLT5zZXRQYXJzaW5nKGZhbHNlKTsgLy8gTWFrZSB0aGUgZG9jIHRoaW5rIGl0
J3MgZG9uZSwgc28gaXQgd2lsbCBhcHBseSB4c2wgc2hlZXRzLgorCisgICAgICAgIC8vIEZJWE1F
OiBUaGlzIGhhY2sgcHJvYmFibHkgaXNuJ3QgdGhlIGJlc3Qgd2F5IHRvIGFjY29tcGxpc2ggdGhp
cy4KKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0UmVhZHlTdGF0ZShEb2N1bWVudDo6Q29tcGxldGUp
OyAvLyBNYWtlIHRoZSBkb2MgdGhpbmsgaXQncyBkb25lLCBzbyBpdCB3aWxsIGFwcGx5IHhzbCBz
aGVldHMuCiAgICAgICAgIGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFJlY2FsY1N0
eWxlSW1tZWRpYXRlbHkpOwotICAgICAgICBkb2N1bWVudCgpLT5zZXRQYXJzaW5nKHRydWUpOwor
ICAgICAgICBkb2N1bWVudCgpLT5zZXRSZWFkeVN0YXRlKERvY3VtZW50OjpMb2FkaW5nKTsKICAg
ICAgICAgRG9jdW1lbnRQYXJzZXI6OnN0b3BQYXJzaW5nKCk7CiAgICAgfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggOTc1ZmNiODdhZDBh
MTYyZTIwNTc5YzZhZWZlMDNjNmFkYmI5YTk1My4uOGZjY2VhNGUyYmZkYjI1YWQ0ZDNiODY0M2Qy
ZTk3NzNlMjU3MjA0ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1l
bnRQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2Vy
LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwcmVwYXJl
VG9TdG9wUGFyc2luZygpCiAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIGl0IGlzbid0IGRl
bGV0ZWQgeWV0LgogICAgIFJlZlB0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7
CiAKLSAgICAvLyBGSVhNRTogU2V0IHRoZSBjdXJyZW50IGRvY3VtZW50IHJlYWRpbmVzcyB0byAi
aW50ZXJhY3RpdmUiLgorICAgIGRvY3VtZW50KCktPnNldFJlYWR5U3RhdGUoRG9jdW1lbnQ6Oklu
dGVyYWN0aXZlKTsKIAogICAgIC8vIE5PVEU6IFRoaXMgcHVtcCBzaG91bGQgb25seSBldmVyIGVt
aXQgYnVmZmVyZWQgY2hhcmFjdGVyIHRva2VucywKICAgICAvLyBzbyBGb3JjZVN5bmNocm9ub3Vz
IHZzLiBBbGxvd1lpZWxkIHNob3VsZCBiZSBtZWFuaW5nbGVzcy4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAppbmRleCBjYmFiZTk5Yzc4ODEzZGRkZDVjMWZkZTYwY2Q5NDU4ZGMxNTVjZjdjLi4xMDQ2YjM0
YTkyMjVhMWFmOWQ4MTgzN2I0OWY3Njk1NWI4OTg3YTIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CkBAIC00MTMsNyArNDEzLDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmcoVW5sb2Fk
RXZlbnRQb2xpY3kgdW5sb2FkRXZlbnRQb2xpY3ksIERhdGFiYXNlUG9saWMKIAogICAgIGlmICht
X2ZyYW1lLT5kb2N1bWVudCgpICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPnBhcnNpbmcoKSkgewog
ICAgICAgICBmaW5pc2hlZFBhcnNpbmcoKTsKLSAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
c2V0UGFyc2luZyhmYWxzZSk7CisgICAgICAgIC8vIEZJWE1FOiBIVE1MNSBkb2Vzbid0IHRlbGwg
dXMgdG8gc2V0IHRoZSBzdGF0ZSB0byBjb21wbGV0ZSB3aGVuIGFib3J0aW5nLCBidXQgd2UgZG8g
YW55d2F5IHRvIG1hdGNoIGxlZ2FjeSBiZWhhdmlvci4KKyAgICAgICAgLy8gaHR0cDovL3d3dy53
aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jdGhlLWVuZAorICAgICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5zZXRSZWFkeVN0YXRlKERvY3VtZW50OjpDb21wbGV0ZSk7CiAg
ICAgfQogICAKICAgICBtX3dvcmtpbmdVUkwgPSBLVVJMKCk7CkBAIC04MzMsNiArODM1LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tDb21wbGV0ZWQoKQogCiAgICAgLy8gT0ssIGNvbXBsZXRl
ZC4KICAgICBtX2lzQ29tcGxldGUgPSB0cnVlOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnNl
dFJlYWR5U3RhdGUoRG9jdW1lbnQ6OkNvbXBsZXRlKTsKIAogICAgIFJlZlB0cjxGcmFtZT4gcHJv
dGVjdChtX2ZyYW1lKTsKICAgICBjaGVja0NhbGxJbXBsaWNpdENsb3NlKCk7IC8vIGlmIHdlIGRp
ZG4ndCBkbyBpdCBiZWZvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66603</attachid>
            <date>2010-09-05 21:02:11 -0700</date>
            <delta_ts>2010-09-05 21:35:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45119-20100905210210.patch</filename>
            <type>text/plain</type>
            <size>14039</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMGYwYTE5ZGEwMmVhZWI4Njc5OThkOTQ5MTBkOGVjM2Q1ZDQ5MTk0Li4zZjZiNGRj
YTc4MDQ5NTk3YWVlZGU3ZjdjOTQxZGVjYzNjYmRhYjFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDktMDIgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgSFRN
TDUgZGVmaW5pdGlvbiBvZiBkb2N1bWVudC5yZWFkeVN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTExOQorCisgICAgICAgICogZmFzdC9kb20v
RG9jdW1lbnQvcmVhZHlzdGF0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL0RvY3VtZW50L3JlYWR5c3RhdGUuaHRtbDogQWRkZWQuIFJlYWRzIHJlYWR5U3RhdGUgaW5s
aW5lIHNjcmlwdCwgZXh0ZXJuYWwgc2NyaXB0LCBkZWZlcnJlZCBzY3JpcHQsIERPTUNvbnRlbnRM
b2FkZWQsIG9ubG9hZCwgYW5kIGR5bmFtaWMgcG9zdC1vbmxvYWQgc2NyaXB0LgorCiAyMDEwLTA5
LTAyICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
RG9jdW1lbnQvcmVhZHlzdGF0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9E
b2N1bWVudC9yZWFkeXN0YXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGZjZWM3YTdmOGIz
ODBjNzYwMTU3N2NmNWMxZWI4ZGQ2MjRhMWI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vRG9jdW1lbnQvcmVhZHlzdGF0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MSBAQAorVGVzdHMgdGhhdCB0aGUgZG9jdW1lbnQncyByZWFkeVN0YXRlIGlzIHNldCBwcm9wZXJs
eSBhdCB2YXJpb3VzIHBoYXNlcyBkdXJpbmcgbG9hZC4KK1BBU1MgZG9jdW1lbnQucmVhZHlTdGF0
ZSBpcyAibG9hZGluZyIKK1BBU1MgZG9jdW1lbnQucmVhZHlTdGF0ZSBpcyAibG9hZGluZyIKK1BB
U1MgZG9jdW1lbnQucmVhZHlTdGF0ZSBpcyAiaW50ZXJhY3RpdmUiCitQQVNTIGRvY3VtZW50LnJl
YWR5U3RhdGUgaXMgImludGVyYWN0aXZlIgorUEFTUyBkb2N1bWVudC5yZWFkeVN0YXRlIGlzICJj
b21wbGV0ZSIKK1BBU1MgZG9jdW1lbnQucmVhZHlTdGF0ZSBpcyAiY29tcGxldGUiCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcmVhZHlzdGF0ZS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vRG9jdW1lbnQvcmVhZHlzdGF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwNDUxOGQ4
NWZhNGU3MTliMTQ2ZGFhZjIwOTRmY2Q1N2I5ZjUyMGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9yZWFkeXN0YXRlLmh0bWwKQEAgLTAsMCArMSwzMCBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2RvY3VtZW50LnJlYWR5U3RhdGUnLCAnY29tcGxldGUnKTsiPgorVGVzdHMg
dGhhdCB0aGUgZG9jdW1lbnQncyByZWFkeVN0YXRlIGlzIHNldCBwcm9wZXJseSBhdCB2YXJpb3Vz
IHBoYXNlcyBkdXJpbmcgbG9hZC4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBk
ZWZlciBzcmM9ImRhdGE6dGV4dC9qYXZhc2NyaXB0LHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9j
dW1lbnQucmVhZHlTdGF0ZScsICdpbnRlcmFjdGl2ZScpOyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iZGF0YTp0ZXh0L2phdmFzY3JpcHQsc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5y
ZWFkeVN0YXRlJywgJ2xvYWRpbmcnKTsiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgdmFyIGpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQucmVh
ZHlTdGF0ZSIsICJsb2FkaW5nIik7CisKKyAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9N
Q29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZG9jdW1lbnQucmVhZHlTdGF0ZSIsICJpbnRlcmFjdGl2ZSIpOworCisgICAgdmFyIGVsID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CisgICAgZWwuc3JjID0gImRhdGE6dGV4dC9q
YXZhc2NyaXB0LHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQucmVhZHlTdGF0ZScsICdj
b21wbGV0ZScpOyI7CisgICAgZWwub25sb2FkID0gZnVuY3Rpb24oKSB7IGZpbmlzaEpTVGVzdCgp
OyB9CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRD
aGlsZChlbCk7CisgIH0sIGZhbHNlKTsKKworICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxZjUxNGMxNjA4M2M2NWY4MDZhYTY0
OTlhZDkzMmViZjQxYmUxODQ1Li5hMTQ5NmRiNTQ2ZDkwODkwMDhmMzMzMDFhMjA1N2I1NTM0YzYy
ODcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQxIEBACisyMDEwLTA5LTAyICBUb255IEdlbnRpbGNvcmUgIDx0b255Z0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IEhUTUw1IGRlZmluaXRpb24gb2YgZG9jdW1lbnQucmVhZHlTdGF0ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUxMTkKKwor
ICAgICAgICBUaGUgbGVnYWN5IGJlaGF2aW9yIHdhcyAibG9hZGluZyIgLT4gImxvYWRlZCIgLT4g
ImNvbXBsZXRlIi4gVGhlIG5ldworICAgICAgICBIVE1MNSBiZWhhdmlvciBpcyAibG9hZGluZyIg
LT4gImludGVyYWN0aXZlIiAtPiAiY29tcGxldGUiLiBUaGVyZSBpcworICAgICAgICBzb21lIHBv
dGVudGlhbCBmb3IgdGhpcyB0byBjYXVzZSBjb21wYXQgcHJvYmxlbXMgaWYgZm9yIGluc3RhbmNl
IGEKKyAgICAgICAgcGFnZSBleHBlY3RzIHJlYWR5U3RhdGUgdG8gYmUgImxvYWRlZCIgZHVyaW5n
IHRoZSBET01Db250ZW50TG9hZGVkIGV2ZW50LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL0Rv
Y3VtZW50L3JlYWR5c3RhdGUuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6IEluaXRpYWwgdmFsdWUgaXMgQ29t
cGxldGUgYmVjYXVzZSBhY2NvcmRpbmcgdG8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dl
Yi1hcHBzL2N1cnJlbnQtd29yay8jZG9tLWRvY3VtZW50LXJlYWR5c3RhdGUsCisgICAgICAgIHdo
ZW4gYSBEb2N1bWVudCBpcyBjcmVhdGVkIHRoZSBpbml0aWFsIHZhbHVlIGlzICJjb21wbGV0ZSIg
dW5sZXNzIGl0IGhhcyBhIHBhcnNlciBhc3NvY2lhdGVkIHdpdGggaXQsIGluIHdoaWNoIGNhc2Ug
aXQgaXMgImxvYWRpbmciLgorICAgICAgICBTbyB0aGUgY3RvciBzdGFydHMgaXQgQ29tcGxldGUs
IGFuZCB3aGVuIHRoZSBwYXJzZXIgaXMgY3JlYXRlZCBpdCBpcyBmbGlwcGVkIHRvIExvYWRpbmcu
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6aW1wbGljaXRPcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpmaW5pc2hlZFBh
cnNpbmcpOiBFbnN1cmUgdGhhdCBYTUwgYW5kIEhUTUwgcGFyc2VyIGhhdmUgdHJhbnNpdGlvbiB0
byBTdG9wcGluZyBzdGF0ZS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBk
b20vRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRQYXJzZXI6
OnByZXBhcmVUb1N0b3BQYXJzaW5nKTogUHJldmlvdXNseSB0aGlzIHdhcyBiZWluZyBjYWxsZWQg
d2hlbiBwYXJzaW5nIGhhZCBzdG9wcGVkLgorICAgICAgICBJdCBpcyBiZXR0ZXIgdG8gZW5zdXJl
IGl0IGlzIG9ubHkgY2FsbGVkIHdoaWxlIHBhcnNpbmcuCisgICAgICAgICogZG9tL1hNTERvY3Vt
ZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjplbmQp
OiBUcmFuc2l0aW9uIHRvIHN0b3BwaW5nIGJlZm9yZSBjYWxsaW5nIGRvY3VtZW50IGZpbmlzaGVk
UGFyc2lvbmcoKS4KKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwcmVwYXJlVG9TdG9wUGFy
c2luZyk6IFNldCBzdGF0ZSB0byBpbnRlcmFjdGl2ZSBiZWZvcmUgcnVubmluZyBkZWZlcnJlZCBz
Y3JpcHRzLgorICAgICAgICBUaGlzIG1ldGhvZCBpcyBhbHNvIGNhbGxlZCB3aGVuIHBhcnNpbmcg
ZnJhZ21lbnRzLCBzbyB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkb25lIGluIHRoYXQgY2Fz
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6YXR0ZW1wdFRvUnVuRGVm
ZXJyZWRTY3JpcHRzQW5kRW5kKTogQWRkZWQuIEJyZWFrIG91dCB0aGlzIHBhcnQgcyB0aGF0IG5v
dGlmeUZpbmlzaGVkIGRvZXNuJ3QgZ28gdGhyb3VnaAorICAgICAgICB0aGUgYWRkaXRpb25hbCBz
dGVwcyBvZiBwdW1waW5nIHRva2VuaXplciwgc2V0dGluZyB0aGUgc3RhdGUsIGV0Yy4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6bm90aWZ5RmluaXNoZWQpOiBOb3cgdGhh
dCBwcmVwYXJlVG9TdG9wUGFyc2luZyBpcyBzcGxpdCB1cCwgd2UgbXVzdCBwcm90ZWN0LiBJdCBh
bHNvIG1ha2VzIHNlbnNlIHRvIGFkZCBhIGNvdXBsZSBvZiBBU1NFUlRzLgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3Rv
cExvYWRpbmcpOiBJdCBsb29rcyBsaWtlIGFuIGFib3J0ZWQgbG9hZCBzaG91bGQgbmV2ZXIgdHJh
bnNpdGlvbiB0byAiY29tcGxldGUiIGFjY29yZGluZyB0aGUgSFRNTDUuIEkndmUgbGVmdCB0aGUg
bGVnYWN5IGJlaGF2aW9yIGZvciBub3cgdGhvdWdoLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OmNoZWNrQ29tcGxldGVkKTogVGhlIEZyYW1lTG9hZGVyIG5vdyBzZXRzIHRoZSBzdGF0
ZSBvbiB0aGUgRG9jdW1lbnQgaW5zdGVhZCBvZiB0aGUgRG9jdW1lbnQgcG9sbGluZyB0aGUgRnJh
bWVMb2FkZXIuCisKIDIwMTAtMDktMDIgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIEZpbGwgdGhlIHNjcm9sbCBjb3JuZXIgd2l0aCB3aGl0ZSB3aGVuIHNob3VsZFBh
aW50Q3VzdG9tU2Nyb2xsYmFycyBpcwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGRiZjQ0N2Q2ODMwYjM5YmJmMDA1
YTAyYWU0ZGI5ZTM3ZDNlNTUyZTguLmY5OTg4MzZlZjY5Y2FhYjhiMWQ2YTViZDMxYzYwNDFhM2Zi
YTE1OWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM1Nyw2ICszNTcsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQo
RnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwp
CiAgICAgLCBtX2NvbXBhdGliaWxpdHlNb2RlTG9ja2VkKGZhbHNlKQogICAgICwgbV9kb21UcmVl
VmVyc2lvbigwKQogICAgICwgbV9zdHlsZVNoZWV0cyhTdHlsZVNoZWV0TGlzdDo6Y3JlYXRlKHRo
aXMpKQorICAgICwgbV9yZWFkeVN0YXRlKENvbXBsZXRlKQogICAgICwgbV9zdHlsZVJlY2FsY1Rp
bWVyKHRoaXMsICZEb2N1bWVudDo6c3R5bGVSZWNhbGNUaW1lckZpcmVkKQogICAgICwgbV9wZW5k
aW5nU3R5bGVSZWNhbGNTaG91bGRGb3JjZShmYWxzZSkKICAgICAsIG1fZnJhbWVFbGVtZW50c1No
b3VsZElnbm9yZVNjcm9sbGluZyhmYWxzZSkKQEAgLTk1MiwxOCArOTUzLDI0IEBAIEVsZW1lbnQq
IERvY3VtZW50OjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkg
Y29uc3QKIAogU3RyaW5nIERvY3VtZW50OjpyZWFkeVN0YXRlKCkgY29uc3QKIHsKLSAgICBpZiAo
RnJhbWUqIGYgPSBmcmFtZSgpKSB7Ci0gICAgICAgIGlmIChmLT5sb2FkZXIoKS0+aXNDb21wbGV0
ZSgpKSAKLSAgICAgICAgICAgIHJldHVybiAiY29tcGxldGUiOwotICAgICAgICBpZiAocGFyc2lu
ZygpKSAKLSAgICAgICAgICAgIHJldHVybiAibG9hZGluZyI7Ci0gICAgICAgIHJldHVybiAibG9h
ZGVkIjsKLSAgICAgICAgLy8gRklYTUU6IFdoYXQgZG9lcyAiaW50ZXJhY3RpdmUiIG1lYW4/Ci0g
ICAgICAgIC8vIEZJWE1FOiBNaXNzaW5nIHN1cHBvcnQgZm9yICJ1bmluaXRpYWxpemVkIi4KKyAg
ICBzd2l0Y2ggKG1fcmVhZHlTdGF0ZSkgeworICAgIGNhc2UgTG9hZGluZzoKKyAgICAgICAgcmV0
dXJuICJsb2FkaW5nIjsKKyAgICBjYXNlIEludGVyYWN0aXZlOgorICAgICAgICByZXR1cm4gImlu
dGVyYWN0aXZlIjsKKyAgICBjYXNlIENvbXBsZXRlOgorICAgICAgICByZXR1cm4gImNvbXBsZXRl
IjsKICAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQogCit2b2lkIERvY3VtZW50OjpzZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUgcmVhZHlTdGF0
ZSkKK3sKKyAgICAvLyBGSVhNRTogRmlyZSB0aGUgcmVhZHlzdGF0ZWNoYW5nZSBldmVudCBvbiB0
aGlzIERvY3VtZW50LgorICAgIG1fcmVhZHlTdGF0ZSA9IHJlYWR5U3RhdGU7Cit9CisKIFN0cmlu
ZyBEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAogewogICAgIGlmIChUZXh0UmVzb3VyY2VEZWNv
ZGVyKiBkID0gZGVjb2RlcigpKQpAQCAtMTg2OSw2ICsxODc2LDcgQEAgdm9pZCBEb2N1bWVudDo6
aW1wbGljaXRPcGVuKCkKIAogICAgIG1fcGFyc2VyID0gY3JlYXRlUGFyc2VyKCk7CiAgICAgc2V0
UGFyc2luZyh0cnVlKTsKKyAgICBzZXRSZWFkeVN0YXRlKExvYWRpbmcpOwogCiAgICAgU2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKTsK
ICAgICBpZiAobV9mcmFtZSAmJiBwYXJzZXIpCkBAIC00MTAzLDYgKzQxMTEsNyBAQCBDb2xsZWN0
aW9uQ2FjaGUqIERvY3VtZW50OjpuYW1lQ29sbGVjdGlvbkluZm8oQ29sbGVjdGlvblR5cGUgdHlw
ZSwgY29uc3QgQXRvbWljUwogCiB2b2lkIERvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcoKQogewor
ICAgIEFTU0VSVCghc2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgfHwgIW1fcGFyc2VyLT5pc1Bh
cnNpbmcoKSk7CiAgICAgc2V0UGFyc2luZyhmYWxzZSk7CiAgICAgZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01Db250ZW50TG9hZGVkRXZlbnQsIHRydWUsIGZhbHNl
KSk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCmluZGV4IDNlODA0Zjc2NTA0MmQ3MTdiYzU2OTU5N2Q3OGE4ZjNmMDIwZTY3MDQu
LjFiZWM2MDhlNWNhNmUwMDg3Y2M1YWE3MzA1NDc4Y2U1NjMyNjc0YjUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNTgy
LDcgKzU4MiwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpblF1aXJrc01vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2NvbXBhdGliaWxpdHlNb2RlID09IFF1aXJrc01vZGU7IH0KICAgICBib29sIGluTGlt
aXRlZFF1aXJrc01vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvbXBhdGliaWxpdHlNb2RlID09IExp
bWl0ZWRRdWlya3NNb2RlOyB9CiAgICAgYm9vbCBpbk5vUXVpcmtzTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29tcGF0aWJpbGl0eU1vZGUgPT0gTm9RdWlya3NNb2RlOyB9Ci0gICAgCisKKyAgICBl
bnVtIFJlYWR5U3RhdGUgeworICAgICAgICBMb2FkaW5nLAorICAgICAgICBJbnRlcmFjdGl2ZSwK
KyAgICAgICAgQ29tcGxldGUKKyAgICB9OworICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShSZWFkeVN0
YXRlKTsKICAgICB2b2lkIHNldFBhcnNpbmcoYm9vbCk7CiAgICAgYm9vbCBwYXJzaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9iUGFyc2luZzsgfQogICAgIGludCBtaW5pbXVtTGF5b3V0RGVsYXkoKTsK
QEAgLTExNTQsNiArMTE2MCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fbG9hZGluZ1NoZWV0
OwogICAgIGJvb2wgbV92aXN1YWxseU9yZGVyZWQ7CisgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3Rh
dGU7CiAgICAgYm9vbCBtX2JQYXJzaW5nOwogICAgIAogICAgIFRpbWVyPERvY3VtZW50PiBtX3N0
eWxlUmVjYWxjVGltZXI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5j
cHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNjM5ODYwYTJjYWU0YTk5
YTQzY2EwOWQ2NTRlYjY0NmY5ZWU0NzAwYy4uZWZiOTZiMGVlZDk5NTdiMTA2ZDliMTlmNGY2YzA3
OWZkNTliN2NmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuY3BwCisr
KyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmNwcApAQCAtNTIsOCArNTIsOCBAQCB2b2lk
IERvY3VtZW50UGFyc2VyOjpzdGFydFBhcnNpbmcoKQogCiB2b2lkIERvY3VtZW50UGFyc2VyOjpw
cmVwYXJlVG9TdG9wUGFyc2luZygpCiB7Ci0gICAgaWYgKG1fc3RhdGUgPT0gUGFyc2luZ1N0YXRl
KQotICAgICAgICBtX3N0YXRlID0gU3RvcHBpbmdTdGF0ZTsKKyAgICBBU1NFUlQobV9zdGF0ZSA9
PSBQYXJzaW5nU3RhdGUpOworICAgIG1fc3RhdGUgPSBTdG9wcGluZ1N0YXRlOwogfQogCiB2b2lk
IERvY3VtZW50UGFyc2VyOjpzdG9wUGFyc2luZygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Y
TUxEb2N1bWVudFBhcnNlci5jcHAgYi9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAK
aW5kZXggNWZiOGI1NDQ4MDQ5ODg3NGIzMWQ0ZDk5N2ViOWQzZmE1YTI0OTNmZC4uOWQ1ZmM4MjBm
YzI5NTczZGZhMjUwMGI2YTFlYjM3YzdiNjIzNTlmZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
WE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2Vy
LmNwcApAQCAtMjM0LDYgKzIzNCw5IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmVuZCgpCiAg
ICAgICAgIGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRp
YXRlbHkpOwogICAgIH0KIAorICAgIGlmIChpc1BhcnNpbmcoKSkKKyAgICAgICAgcHJlcGFyZVRv
U3RvcFBhcnNpbmcoKTsKKwogICAgIGNsZWFyQ3VycmVudE5vZGVTdGFjaygpOwogICAgIGRvY3Vt
ZW50KCktPmZpbmlzaGVkUGFyc2luZygpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuY3BwCmluZGV4IDk3NWZjYjg3YWQwYTE2MmUyMDU3OWM2YWVmZTAzYzZhZGJi
OWE5NTMuLmRjZDEwMTBjMDY4M2I0N2JjODNhZGY4YmEyNjI1ZjY0NjQ2ZGQ1MTAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTE1MiwxNiArMTUyLDIw
IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwcmVwYXJlVG9TdG9wUGFyc2luZygpCiAgICAg
Ly8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIGl0IGlzbid0IGRlbGV0ZWQgeWV0LgogICAgIFJlZlB0
cjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7CiAKLSAgICAvLyBGSVhNRTogU2V0
IHRoZSBjdXJyZW50IGRvY3VtZW50IHJlYWRpbmVzcyB0byAiaW50ZXJhY3RpdmUiLgotCiAgICAg
Ly8gTk9URTogVGhpcyBwdW1wIHNob3VsZCBvbmx5IGV2ZXIgZW1pdCBidWZmZXJlZCBjaGFyYWN0
ZXIgdG9rZW5zLAogICAgIC8vIHNvIEZvcmNlU3luY2hyb25vdXMgdnMuIEFsbG93WWllbGQgc2hv
dWxkIGJlIG1lYW5pbmdsZXNzLgogICAgIHB1bXBUb2tlbml6ZXJJZlBvc3NpYmxlKEZvcmNlU3lu
Y2hyb25vdXMpOworICAgIAorICAgIGlmIChpc1N0b3BwZWQoKSkKKyAgICAgICAgcmV0dXJuOwog
CiAgICAgRG9jdW1lbnRQYXJzZXI6OnByZXBhcmVUb1N0b3BQYXJzaW5nKCk7Ci0gICAgaWYgKG1f
c2NyaXB0UnVubmVyICYmICFtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9y
UGFyc2luZygpKQotICAgICAgICByZXR1cm47Ci0gICAgZW5kKCk7CisKKyAgICAvLyBXZSB3aWxs
IG5vdCBoYXZlIGEgc2NyaXB0UnVubmVyIHdoZW4gcGFyc2luZyBhIERvY3VtZW50RnJhZ21lbnQu
CisgICAgaWYgKG1fc2NyaXB0UnVubmVyKQorICAgICAgICBkb2N1bWVudCgpLT5zZXRSZWFkeVN0
YXRlKERvY3VtZW50OjpJbnRlcmFjdGl2ZSk7CisKKyAgICBhdHRlbXB0VG9SdW5EZWZlcnJlZFNj
cmlwdHNBbmRFbmQoKTsKIH0KIAogYm9vbCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NpbmdE
YXRhKCkgY29uc3QKQEAgLTM1Myw2ICszNTcsMTUgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6
OmVuZCgpCiAgICAgbV90cmVlQnVpbGRlci0+ZmluaXNoZWQoKTsKIH0KIAordm9pZCBIVE1MRG9j
dW1lbnRQYXJzZXI6OmF0dGVtcHRUb1J1bkRlZmVycmVkU2NyaXB0c0FuZEVuZCgpCit7CisgICAg
QVNTRVJUKGlzU3RvcHBpbmcoKSk7CisgICAgQVNTRVJUKCFoYXNJbnNlcnRpb25Qb2ludCgpKTsK
KyAgICBpZiAobV9zY3JpcHRSdW5uZXIgJiYgIW1fc2NyaXB0UnVubmVyLT5leGVjdXRlU2NyaXB0
c1dhaXRpbmdGb3JQYXJzaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBlbmQoKTsKK30KKwog
dm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmF0dGVtcHRUb0VuZCgpCiB7CiAgICAgLy8gZmluaXNo
KCkgaW5kaWNhdGVzIHdlIHdpbGwgbm90IHJlY2VpdmUgYW55IG1vcmUgZGF0YS4gSWYgd2UgYXJl
IHdhaXRpbmcgb24KQEAgLTQ2MCwxNyArNDczLDE3IEBAIGJvb2wgSFRNTERvY3VtZW50UGFyc2Vy
OjpzaG91bGRMb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKGNvbnN0IEF0b21pY1N0cmluZyYgc3Jj
CiAKIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSogY2FjaGVkUmVzb3VyY2UpCiB7Ci0gICAgaWYgKGlzU3RvcHBpbmcoKSkgewotICAgICAgICBw
cmVwYXJlVG9TdG9wUGFyc2luZygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgLy8g
cHVtcFRva2VuaXplciBjYW4gY2F1c2UgdGhpcyBwYXJzZXIgdG8gYmUgZGV0YWNoZWQgZnJvbSB0
aGUgRG9jdW1lbnQsCiAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIGl0IGlzbid0IGRlbGV0
ZWQgeWV0LgogICAgIFJlZlB0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7CiAK
ICAgICBBU1NFUlQobV9zY3JpcHRSdW5uZXIpOwogICAgIEFTU0VSVCghaW5TY3JpcHRFeGVjdXRp
b24oKSk7CisgICAgaWYgKGlzU3RvcHBpbmcoKSkgeworICAgICAgICBhdHRlbXB0VG9SdW5EZWZl
cnJlZFNjcmlwdHNBbmRFbmQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEFTU0VS
VChtX3RyZWVCdWlsZGVyLT5pc1BhdXNlZCgpKTsKICAgICAvLyBOb3RlOiBXZSBvbmx5IGV2ZXIg
d2FpdCBvbiBvbmUgc2NyaXB0IGF0IGEgdGltZSwgc28gd2UgYWx3YXlzIGtub3cgdGhpcwogICAg
IC8vIGlzIHRoZSBvbmUgd2Ugd2VyZSB3YWl0aW5nIG9uIGFuZCBjYW4gdW4tcGF1c2UgdGhlIHRy
ZWUgYnVpbGRlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmggYi9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4
IGEzMmI0Mzk2ZDM5Y2QwMDY1YmFmZDY0MmVkNjI1NDJkODBlZmU5YmMuLjBlNTA4ZGE3YmNlM2Jh
MjA5ZmVkNjQzZGVkOWFiOTU1YWYyZWJjOTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKKysrIGIvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuaApAQCAtMTE0LDYgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBiZWdp
bigpOwogICAgIHZvaWQgYXR0ZW1wdFRvRW5kKCk7CiAgICAgdm9pZCBlbmRJZkRlbGF5ZWQoKTsK
KyAgICB2b2lkIGF0dGVtcHRUb1J1bkRlZmVycmVkU2NyaXB0c0FuZEVuZCgpOwogICAgIHZvaWQg
ZW5kKCk7CiAKICAgICBib29sIGlzU2NoZWR1bGVkRm9yUmVzdW1lKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKaW5kZXggY2NiY2NjOWI4Y2JlNzhlOTM4YjdlNDVjNzc4MjA2ZDhhZjNjZGJj
Ni4uMDJhOTc0NTE2MTNmYjMwMjNjY2UxYmRlNDYzZjQzNmRlODNlM2RmZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcApAQCAtNDE5LDYgKzQxOSwxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wTG9h
ZGluZyhVbmxvYWRFdmVudFBvbGljeSB1bmxvYWRFdmVudFBvbGljeSwgRGF0YWJhc2VQb2xpYwog
ICAgIG1fd29ya2luZ1VSTCA9IEtVUkwoKTsKIAogICAgIGlmIChEb2N1bWVudCogZG9jID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKSkgeworICAgICAgICAvLyBGSVhNRTogSFRNTDUgZG9lc24ndCB0ZWxs
IHVzIHRvIHNldCB0aGUgc3RhdGUgdG8gY29tcGxldGUgd2hlbiBhYm9ydGluZywgYnV0IHdlIGRv
IGFueXdheSB0byBtYXRjaCBsZWdhY3kgYmVoYXZpb3IuCisgICAgICAgIC8vIGh0dHA6Ly93d3cu
dzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0xMDUzNworICAgICAgICBkb2MtPnNl
dFJlYWR5U3RhdGUoRG9jdW1lbnQ6OkNvbXBsZXRlKTsKKwogICAgICAgICBpZiAoRG9jTG9hZGVy
KiBkb2NMb2FkZXIgPSBkb2MtPmRvY0xvYWRlcigpKQogICAgICAgICAgICAgY2FjaGUoKS0+bG9h
ZGVyKCktPmNhbmNlbFJlcXVlc3RzKGRvY0xvYWRlcik7CiAKQEAgLTgzMiw2ICs4MzYsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpjaGVja0NvbXBsZXRlZCgpCiAKICAgICAvLyBPSywgY29tcGxldGVk
LgogICAgIG1faXNDb21wbGV0ZSA9IHRydWU7CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0
UmVhZHlTdGF0ZShEb2N1bWVudDo6Q29tcGxldGUpOwogCiAgICAgUmVmUHRyPEZyYW1lPiBwcm90
ZWN0KG1fZnJhbWUpOwogICAgIGNoZWNrQ2FsbEltcGxpY2l0Q2xvc2UoKTsgLy8gaWYgd2UgZGlk
bid0IGRvIGl0IGJlZm9yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66605</attachid>
            <date>2010-09-05 21:35:14 -0700</date>
            <delta_ts>2010-09-06 10:52:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45119-20100905213512.patch</filename>
            <type>text/plain</type>
            <size>14161</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMGYwYTE5ZGEwMmVhZWI4Njc5OThkOTQ5MTBkOGVjM2Q1ZDQ5MTk0Li4zZjZiNGRj
YTc4MDQ5NTk3YWVlZGU3ZjdjOTQxZGVjYzNjYmRhYjFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDktMDIgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgSFRN
TDUgZGVmaW5pdGlvbiBvZiBkb2N1bWVudC5yZWFkeVN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTExOQorCisgICAgICAgICogZmFzdC9kb20v
RG9jdW1lbnQvcmVhZHlzdGF0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL0RvY3VtZW50L3JlYWR5c3RhdGUuaHRtbDogQWRkZWQuIFJlYWRzIHJlYWR5U3RhdGUgaW5s
aW5lIHNjcmlwdCwgZXh0ZXJuYWwgc2NyaXB0LCBkZWZlcnJlZCBzY3JpcHQsIERPTUNvbnRlbnRM
b2FkZWQsIG9ubG9hZCwgYW5kIGR5bmFtaWMgcG9zdC1vbmxvYWQgc2NyaXB0LgorCiAyMDEwLTA5
LTAyICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
RG9jdW1lbnQvcmVhZHlzdGF0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9E
b2N1bWVudC9yZWFkeXN0YXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGZjZWM3YTdmOGIz
ODBjNzYwMTU3N2NmNWMxZWI4ZGQ2MjRhMWI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vRG9jdW1lbnQvcmVhZHlzdGF0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MSBAQAorVGVzdHMgdGhhdCB0aGUgZG9jdW1lbnQncyByZWFkeVN0YXRlIGlzIHNldCBwcm9wZXJs
eSBhdCB2YXJpb3VzIHBoYXNlcyBkdXJpbmcgbG9hZC4KK1BBU1MgZG9jdW1lbnQucmVhZHlTdGF0
ZSBpcyAibG9hZGluZyIKK1BBU1MgZG9jdW1lbnQucmVhZHlTdGF0ZSBpcyAibG9hZGluZyIKK1BB
U1MgZG9jdW1lbnQucmVhZHlTdGF0ZSBpcyAiaW50ZXJhY3RpdmUiCitQQVNTIGRvY3VtZW50LnJl
YWR5U3RhdGUgaXMgImludGVyYWN0aXZlIgorUEFTUyBkb2N1bWVudC5yZWFkeVN0YXRlIGlzICJj
b21wbGV0ZSIKK1BBU1MgZG9jdW1lbnQucmVhZHlTdGF0ZSBpcyAiY29tcGxldGUiCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcmVhZHlzdGF0ZS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vRG9jdW1lbnQvcmVhZHlzdGF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwNDUxOGQ4
NWZhNGU3MTliMTQ2ZGFhZjIwOTRmY2Q1N2I5ZjUyMGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9yZWFkeXN0YXRlLmh0bWwKQEAgLTAsMCArMSwzMCBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2RvY3VtZW50LnJlYWR5U3RhdGUnLCAnY29tcGxldGUnKTsiPgorVGVzdHMg
dGhhdCB0aGUgZG9jdW1lbnQncyByZWFkeVN0YXRlIGlzIHNldCBwcm9wZXJseSBhdCB2YXJpb3Vz
IHBoYXNlcyBkdXJpbmcgbG9hZC4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBk
ZWZlciBzcmM9ImRhdGE6dGV4dC9qYXZhc2NyaXB0LHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9j
dW1lbnQucmVhZHlTdGF0ZScsICdpbnRlcmFjdGl2ZScpOyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iZGF0YTp0ZXh0L2phdmFzY3JpcHQsc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5y
ZWFkeVN0YXRlJywgJ2xvYWRpbmcnKTsiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgdmFyIGpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQucmVh
ZHlTdGF0ZSIsICJsb2FkaW5nIik7CisKKyAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9N
Q29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZG9jdW1lbnQucmVhZHlTdGF0ZSIsICJpbnRlcmFjdGl2ZSIpOworCisgICAgdmFyIGVsID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CisgICAgZWwuc3JjID0gImRhdGE6dGV4dC9q
YXZhc2NyaXB0LHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQucmVhZHlTdGF0ZScsICdj
b21wbGV0ZScpOyI7CisgICAgZWwub25sb2FkID0gZnVuY3Rpb24oKSB7IGZpbmlzaEpTVGVzdCgp
OyB9CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRD
aGlsZChlbCk7CisgIH0sIGZhbHNlKTsKKworICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxZjUxNGMxNjA4M2M2NWY4MDZhYTY0
OTlhZDkzMmViZjQxYmUxODQ1Li5hMTQ5NmRiNTQ2ZDkwODkwMDhmMzMzMDFhMjA1N2I1NTM0YzYy
ODcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQxIEBACisyMDEwLTA5LTAyICBUb255IEdlbnRpbGNvcmUgIDx0b255Z0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IEhUTUw1IGRlZmluaXRpb24gb2YgZG9jdW1lbnQucmVhZHlTdGF0ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUxMTkKKwor
ICAgICAgICBUaGUgbGVnYWN5IGJlaGF2aW9yIHdhcyAibG9hZGluZyIgLT4gImxvYWRlZCIgLT4g
ImNvbXBsZXRlIi4gVGhlIG5ldworICAgICAgICBIVE1MNSBiZWhhdmlvciBpcyAibG9hZGluZyIg
LT4gImludGVyYWN0aXZlIiAtPiAiY29tcGxldGUiLiBUaGVyZSBpcworICAgICAgICBzb21lIHBv
dGVudGlhbCBmb3IgdGhpcyB0byBjYXVzZSBjb21wYXQgcHJvYmxlbXMgaWYgZm9yIGluc3RhbmNl
IGEKKyAgICAgICAgcGFnZSBleHBlY3RzIHJlYWR5U3RhdGUgdG8gYmUgImxvYWRlZCIgZHVyaW5n
IHRoZSBET01Db250ZW50TG9hZGVkIGV2ZW50LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL0Rv
Y3VtZW50L3JlYWR5c3RhdGUuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6IEluaXRpYWwgdmFsdWUgaXMgQ29t
cGxldGUgYmVjYXVzZSBhY2NvcmRpbmcgdG8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dl
Yi1hcHBzL2N1cnJlbnQtd29yay8jZG9tLWRvY3VtZW50LXJlYWR5c3RhdGUsCisgICAgICAgIHdo
ZW4gYSBEb2N1bWVudCBpcyBjcmVhdGVkIHRoZSBpbml0aWFsIHZhbHVlIGlzICJjb21wbGV0ZSIg
dW5sZXNzIGl0IGhhcyBhIHBhcnNlciBhc3NvY2lhdGVkIHdpdGggaXQsIGluIHdoaWNoIGNhc2Ug
aXQgaXMgImxvYWRpbmciLgorICAgICAgICBTbyB0aGUgY3RvciBzdGFydHMgaXQgQ29tcGxldGUs
IGFuZCB3aGVuIHRoZSBwYXJzZXIgaXMgY3JlYXRlZCBpdCBpcyBmbGlwcGVkIHRvIExvYWRpbmcu
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6aW1wbGljaXRPcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpmaW5pc2hlZFBh
cnNpbmcpOiBFbnN1cmUgdGhhdCBYTUwgYW5kIEhUTUwgcGFyc2VyIGhhdmUgdHJhbnNpdGlvbiB0
byBTdG9wcGluZyBzdGF0ZS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBk
b20vRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRQYXJzZXI6
OnByZXBhcmVUb1N0b3BQYXJzaW5nKTogUHJldmlvdXNseSB0aGlzIHdhcyBiZWluZyBjYWxsZWQg
d2hlbiBwYXJzaW5nIGhhZCBzdG9wcGVkLgorICAgICAgICBJdCBpcyBiZXR0ZXIgdG8gZW5zdXJl
IGl0IGlzIG9ubHkgY2FsbGVkIHdoaWxlIHBhcnNpbmcuCisgICAgICAgICogZG9tL1hNTERvY3Vt
ZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjplbmQp
OiBUcmFuc2l0aW9uIHRvIHN0b3BwaW5nIGJlZm9yZSBjYWxsaW5nIGRvY3VtZW50IGZpbmlzaGVk
UGFyc2lvbmcoKS4KKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwcmVwYXJlVG9TdG9wUGFy
c2luZyk6IFNldCBzdGF0ZSB0byBpbnRlcmFjdGl2ZSBiZWZvcmUgcnVubmluZyBkZWZlcnJlZCBz
Y3JpcHRzLgorICAgICAgICBUaGlzIG1ldGhvZCBpcyBhbHNvIGNhbGxlZCB3aGVuIHBhcnNpbmcg
ZnJhZ21lbnRzLCBzbyB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkb25lIGluIHRoYXQgY2Fz
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6YXR0ZW1wdFRvUnVuRGVm
ZXJyZWRTY3JpcHRzQW5kRW5kKTogQWRkZWQuIEJyZWFrIG91dCB0aGlzIHBhcnQgcyB0aGF0IG5v
dGlmeUZpbmlzaGVkIGRvZXNuJ3QgZ28gdGhyb3VnaAorICAgICAgICB0aGUgYWRkaXRpb25hbCBz
dGVwcyBvZiBwdW1waW5nIHRva2VuaXplciwgc2V0dGluZyB0aGUgc3RhdGUsIGV0Yy4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6bm90aWZ5RmluaXNoZWQpOiBOb3cgdGhh
dCBwcmVwYXJlVG9TdG9wUGFyc2luZyBpcyBzcGxpdCB1cCwgd2UgbXVzdCBwcm90ZWN0LiBJdCBh
bHNvIG1ha2VzIHNlbnNlIHRvIGFkZCBhIGNvdXBsZSBvZiBBU1NFUlRzLgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3Rv
cExvYWRpbmcpOiBJdCBsb29rcyBsaWtlIGFuIGFib3J0ZWQgbG9hZCBzaG91bGQgbmV2ZXIgdHJh
bnNpdGlvbiB0byAiY29tcGxldGUiIGFjY29yZGluZyB0aGUgSFRNTDUuIEkndmUgbGVmdCB0aGUg
bGVnYWN5IGJlaGF2aW9yIGZvciBub3cgdGhvdWdoLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OmNoZWNrQ29tcGxldGVkKTogVGhlIEZyYW1lTG9hZGVyIG5vdyBzZXRzIHRoZSBzdGF0
ZSBvbiB0aGUgRG9jdW1lbnQgaW5zdGVhZCBvZiB0aGUgRG9jdW1lbnQgcG9sbGluZyB0aGUgRnJh
bWVMb2FkZXIuCisKIDIwMTAtMDktMDIgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIEZpbGwgdGhlIHNjcm9sbCBjb3JuZXIgd2l0aCB3aGl0ZSB3aGVuIHNob3VsZFBh
aW50Q3VzdG9tU2Nyb2xsYmFycyBpcwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGRiZjQ0N2Q2ODMwYjM5YmJmMDA1
YTAyYWU0ZGI5ZTM3ZDNlNTUyZTguLmEzMmFhNmM5NzkxNTU3ZTdmZmZmMGVmNDVmYjhlYjg3ZjMx
OGU5YjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM1Nyw2ICszNTcsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQo
RnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwp
CiAgICAgLCBtX2NvbXBhdGliaWxpdHlNb2RlTG9ja2VkKGZhbHNlKQogICAgICwgbV9kb21UcmVl
VmVyc2lvbigwKQogICAgICwgbV9zdHlsZVNoZWV0cyhTdHlsZVNoZWV0TGlzdDo6Y3JlYXRlKHRo
aXMpKQorICAgICwgbV9yZWFkeVN0YXRlKENvbXBsZXRlKQogICAgICwgbV9zdHlsZVJlY2FsY1Rp
bWVyKHRoaXMsICZEb2N1bWVudDo6c3R5bGVSZWNhbGNUaW1lckZpcmVkKQogICAgICwgbV9wZW5k
aW5nU3R5bGVSZWNhbGNTaG91bGRGb3JjZShmYWxzZSkKICAgICAsIG1fZnJhbWVFbGVtZW50c1No
b3VsZElnbm9yZVNjcm9sbGluZyhmYWxzZSkKQEAgLTk1MiwxOCArOTUzLDI0IEBAIEVsZW1lbnQq
IERvY3VtZW50OjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkg
Y29uc3QKIAogU3RyaW5nIERvY3VtZW50OjpyZWFkeVN0YXRlKCkgY29uc3QKIHsKLSAgICBpZiAo
RnJhbWUqIGYgPSBmcmFtZSgpKSB7Ci0gICAgICAgIGlmIChmLT5sb2FkZXIoKS0+aXNDb21wbGV0
ZSgpKSAKLSAgICAgICAgICAgIHJldHVybiAiY29tcGxldGUiOwotICAgICAgICBpZiAocGFyc2lu
ZygpKSAKLSAgICAgICAgICAgIHJldHVybiAibG9hZGluZyI7Ci0gICAgICAgIHJldHVybiAibG9h
ZGVkIjsKLSAgICAgICAgLy8gRklYTUU6IFdoYXQgZG9lcyAiaW50ZXJhY3RpdmUiIG1lYW4/Ci0g
ICAgICAgIC8vIEZJWE1FOiBNaXNzaW5nIHN1cHBvcnQgZm9yICJ1bmluaXRpYWxpemVkIi4KKyAg
ICBzd2l0Y2ggKG1fcmVhZHlTdGF0ZSkgeworICAgIGNhc2UgTG9hZGluZzoKKyAgICAgICAgcmV0
dXJuICJsb2FkaW5nIjsKKyAgICBjYXNlIEludGVyYWN0aXZlOgorICAgICAgICByZXR1cm4gImlu
dGVyYWN0aXZlIjsKKyAgICBjYXNlIENvbXBsZXRlOgorICAgICAgICByZXR1cm4gImNvbXBsZXRl
IjsKICAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQogCit2b2lkIERvY3VtZW50OjpzZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUgcmVhZHlTdGF0
ZSkKK3sKKyAgICAvLyBGSVhNRTogRmlyZSB0aGUgcmVhZHlzdGF0ZWNoYW5nZSBldmVudCBvbiB0
aGlzIERvY3VtZW50LgorICAgIG1fcmVhZHlTdGF0ZSA9IHJlYWR5U3RhdGU7Cit9CisKIFN0cmlu
ZyBEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAogewogICAgIGlmIChUZXh0UmVzb3VyY2VEZWNv
ZGVyKiBkID0gZGVjb2RlcigpKQpAQCAtMTg2OSw2ICsxODc2LDcgQEAgdm9pZCBEb2N1bWVudDo6
aW1wbGljaXRPcGVuKCkKIAogICAgIG1fcGFyc2VyID0gY3JlYXRlUGFyc2VyKCk7CiAgICAgc2V0
UGFyc2luZyh0cnVlKTsKKyAgICBzZXRSZWFkeVN0YXRlKExvYWRpbmcpOwogCiAgICAgU2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKTsK
ICAgICBpZiAobV9mcmFtZSAmJiBwYXJzZXIpCkBAIC00MTAzLDYgKzQxMTEsOCBAQCBDb2xsZWN0
aW9uQ2FjaGUqIERvY3VtZW50OjpuYW1lQ29sbGVjdGlvbkluZm8oQ29sbGVjdGlvblR5cGUgdHlw
ZSwgY29uc3QgQXRvbWljUwogCiB2b2lkIERvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcoKQogewor
ICAgIEFTU0VSVCghc2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgfHwgIW1fcGFyc2VyLT5pc1Bh
cnNpbmcoKSk7CisgICAgQVNTRVJUKCFzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKSB8fCBtX3Jl
YWR5U3RhdGUgIT0gTG9hZGluZyk7CiAgICAgc2V0UGFyc2luZyhmYWxzZSk7CiAgICAgZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01Db250ZW50TG9hZGVkRXZlbnQs
IHRydWUsIGZhbHNlKSk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDNlODA0Zjc2NTA0MmQ3MTdiYzU2OTU5N2Q3OGE4
ZjNmMDIwZTY3MDQuLjFiZWM2MDhlNWNhNmUwMDg3Y2M1YWE3MzA1NDc4Y2U1NjMyNjc0YjUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaApAQCAtNTgyLDcgKzU4MiwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpblF1aXJrc01vZGUo
KSBjb25zdCB7IHJldHVybiBtX2NvbXBhdGliaWxpdHlNb2RlID09IFF1aXJrc01vZGU7IH0KICAg
ICBib29sIGluTGltaXRlZFF1aXJrc01vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvbXBhdGliaWxp
dHlNb2RlID09IExpbWl0ZWRRdWlya3NNb2RlOyB9CiAgICAgYm9vbCBpbk5vUXVpcmtzTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29tcGF0aWJpbGl0eU1vZGUgPT0gTm9RdWlya3NNb2RlOyB9Ci0g
ICAgCisKKyAgICBlbnVtIFJlYWR5U3RhdGUgeworICAgICAgICBMb2FkaW5nLAorICAgICAgICBJ
bnRlcmFjdGl2ZSwKKyAgICAgICAgQ29tcGxldGUKKyAgICB9OworICAgIHZvaWQgc2V0UmVhZHlT
dGF0ZShSZWFkeVN0YXRlKTsKICAgICB2b2lkIHNldFBhcnNpbmcoYm9vbCk7CiAgICAgYm9vbCBw
YXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9iUGFyc2luZzsgfQogICAgIGludCBtaW5pbXVtTGF5
b3V0RGVsYXkoKTsKQEAgLTExNTQsNiArMTE2MCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1f
bG9hZGluZ1NoZWV0OwogICAgIGJvb2wgbV92aXN1YWxseU9yZGVyZWQ7CisgICAgUmVhZHlTdGF0
ZSBtX3JlYWR5U3RhdGU7CiAgICAgYm9vbCBtX2JQYXJzaW5nOwogICAgIAogICAgIFRpbWVyPERv
Y3VtZW50PiBtX3N0eWxlUmVjYWxjVGltZXI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFBhcnNlci5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNjM5
ODYwYTJjYWU0YTk5YTQzY2EwOWQ2NTRlYjY0NmY5ZWU0NzAwYy4uZWZiOTZiMGVlZDk5NTdiMTA2
ZDliMTlmNGY2YzA3OWZkNTliN2NmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnRQ
YXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmNwcApAQCAtNTIsOCAr
NTIsOCBAQCB2b2lkIERvY3VtZW50UGFyc2VyOjpzdGFydFBhcnNpbmcoKQogCiB2b2lkIERvY3Vt
ZW50UGFyc2VyOjpwcmVwYXJlVG9TdG9wUGFyc2luZygpCiB7Ci0gICAgaWYgKG1fc3RhdGUgPT0g
UGFyc2luZ1N0YXRlKQotICAgICAgICBtX3N0YXRlID0gU3RvcHBpbmdTdGF0ZTsKKyAgICBBU1NF
UlQobV9zdGF0ZSA9PSBQYXJzaW5nU3RhdGUpOworICAgIG1fc3RhdGUgPSBTdG9wcGluZ1N0YXRl
OwogfQogCiB2b2lkIERvY3VtZW50UGFyc2VyOjpzdG9wUGFyc2luZygpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAgYi9XZWJDb3JlL2RvbS9YTUxEb2N1bWVu
dFBhcnNlci5jcHAKaW5kZXggNWZiOGI1NDQ4MDQ5ODg3NGIzMWQ0ZDk5N2ViOWQzZmE1YTI0OTNm
ZC4uNTU2NmRlM2JiZTFmZTBmOWE1YmQwNTM5NGQ3ZGEzMzEyNTVmMDJjYiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1hNTERv
Y3VtZW50UGFyc2VyLmNwcApAQCAtMjM0LDYgKzIzNCw5IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJz
ZXI6OmVuZCgpCiAgICAgICAgIGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFJlY2Fs
Y1N0eWxlSW1tZWRpYXRlbHkpOwogICAgIH0KIAorICAgIGlmIChpc1BhcnNpbmcoKSkKKyAgICAg
ICAgcHJlcGFyZVRvU3RvcFBhcnNpbmcoKTsKKyAgICBkb2N1bWVudCgpLT5zZXRSZWFkeVN0YXRl
KERvY3VtZW50OjpJbnRlcmFjdGl2ZSk7CiAgICAgY2xlYXJDdXJyZW50Tm9kZVN0YWNrKCk7CiAg
ICAgZG9jdW1lbnQoKS0+ZmluaXNoZWRQYXJzaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggOTc1ZmNiODdhZDBhMTYyZTIwNTc5YzZhZWZl
MDNjNmFkYmI5YTk1My4uZGNkMTAxMGMwNjgzYjQ3YmM4M2FkZjhiYTI2MjVmNjQ2NDZkZDUxMCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTUyLDE2
ICsxNTIsMjAgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByZXBhcmVUb1N0b3BQYXJzaW5n
KCkKICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVsZXRlZCB5ZXQuCiAg
ICAgUmVmUHRyPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCh0aGlzKTsKIAotICAgIC8vIEZJ
WE1FOiBTZXQgdGhlIGN1cnJlbnQgZG9jdW1lbnQgcmVhZGluZXNzIHRvICJpbnRlcmFjdGl2ZSIu
Ci0KICAgICAvLyBOT1RFOiBUaGlzIHB1bXAgc2hvdWxkIG9ubHkgZXZlciBlbWl0IGJ1ZmZlcmVk
IGNoYXJhY3RlciB0b2tlbnMsCiAgICAgLy8gc28gRm9yY2VTeW5jaHJvbm91cyB2cy4gQWxsb3dZ
aWVsZCBzaG91bGQgYmUgbWVhbmluZ2xlc3MuCiAgICAgcHVtcFRva2VuaXplcklmUG9zc2libGUo
Rm9yY2VTeW5jaHJvbm91cyk7CisgICAgCisgICAgaWYgKGlzU3RvcHBlZCgpKQorICAgICAgICBy
ZXR1cm47CiAKICAgICBEb2N1bWVudFBhcnNlcjo6cHJlcGFyZVRvU3RvcFBhcnNpbmcoKTsKLSAg
ICBpZiAobV9zY3JpcHRSdW5uZXIgJiYgIW1fc2NyaXB0UnVubmVyLT5leGVjdXRlU2NyaXB0c1dh
aXRpbmdGb3JQYXJzaW5nKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBlbmQoKTsKKworICAgIC8v
IFdlIHdpbGwgbm90IGhhdmUgYSBzY3JpcHRSdW5uZXIgd2hlbiBwYXJzaW5nIGEgRG9jdW1lbnRG
cmFnbWVudC4KKyAgICBpZiAobV9zY3JpcHRSdW5uZXIpCisgICAgICAgIGRvY3VtZW50KCktPnNl
dFJlYWR5U3RhdGUoRG9jdW1lbnQ6OkludGVyYWN0aXZlKTsKKworICAgIGF0dGVtcHRUb1J1bkRl
ZmVycmVkU2NyaXB0c0FuZEVuZCgpOwogfQogCiBib29sIEhUTUxEb2N1bWVudFBhcnNlcjo6cHJv
Y2Vzc2luZ0RhdGEoKSBjb25zdApAQCAtMzUzLDYgKzM1NywxNSBAQCB2b2lkIEhUTUxEb2N1bWVu
dFBhcnNlcjo6ZW5kKCkKICAgICBtX3RyZWVCdWlsZGVyLT5maW5pc2hlZCgpOwogfQogCit2b2lk
IEhUTUxEb2N1bWVudFBhcnNlcjo6YXR0ZW1wdFRvUnVuRGVmZXJyZWRTY3JpcHRzQW5kRW5kKCkK
K3sKKyAgICBBU1NFUlQoaXNTdG9wcGluZygpKTsKKyAgICBBU1NFUlQoIWhhc0luc2VydGlvblBv
aW50KCkpOworICAgIGlmIChtX3NjcmlwdFJ1bm5lciAmJiAhbV9zY3JpcHRSdW5uZXItPmV4ZWN1
dGVTY3JpcHRzV2FpdGluZ0ZvclBhcnNpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGVuZCgp
OworfQorCiB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6YXR0ZW1wdFRvRW5kKCkKIHsKICAgICAv
LyBmaW5pc2goKSBpbmRpY2F0ZXMgd2Ugd2lsbCBub3QgcmVjZWl2ZSBhbnkgbW9yZSBkYXRhLiBJ
ZiB3ZSBhcmUgd2FpdGluZyBvbgpAQCAtNDYwLDE3ICs0NzMsMTcgQEAgYm9vbCBIVE1MRG9jdW1l
bnRQYXJzZXI6OnNob3VsZExvYWRFeHRlcm5hbFNjcmlwdEZyb21TcmMoY29uc3QgQXRvbWljU3Ry
aW5nJiBzcmMKIAogdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKLSAgICBpZiAoaXNTdG9wcGluZygpKSB7Ci0g
ICAgICAgIHByZXBhcmVUb1N0b3BQYXJzaW5nKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
ICAgICAvLyBwdW1wVG9rZW5pemVyIGNhbiBjYXVzZSB0aGlzIHBhcnNlciB0byBiZSBkZXRhY2hl
ZCBmcm9tIHRoZSBEb2N1bWVudCwKICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNu
J3QgZGVsZXRlZCB5ZXQuCiAgICAgUmVmUHRyPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCh0
aGlzKTsKIAogICAgIEFTU0VSVChtX3NjcmlwdFJ1bm5lcik7CiAgICAgQVNTRVJUKCFpblNjcmlw
dEV4ZWN1dGlvbigpKTsKKyAgICBpZiAoaXNTdG9wcGluZygpKSB7CisgICAgICAgIGF0dGVtcHRU
b1J1bkRlZmVycmVkU2NyaXB0c0FuZEVuZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgQVNTRVJUKG1fdHJlZUJ1aWxkZXItPmlzUGF1c2VkKCkpOwogICAgIC8vIE5vdGU6IFdlIG9u
bHkgZXZlciB3YWl0IG9uIG9uZSBzY3JpcHQgYXQgYSB0aW1lLCBzbyB3ZSBhbHdheXMga25vdyB0
aGlzCiAgICAgLy8gaXMgdGhlIG9uZSB3ZSB3ZXJlIHdhaXRpbmcgb24gYW5kIGNhbiB1bi1wYXVz
ZSB0aGUgdHJlZSBidWlsZGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2Vy
LmgKaW5kZXggYTMyYjQzOTZkMzljZDAwNjViYWZkNjQyZWQ2MjU0MmQ4MGVmZTliYy4uMGU1MDhk
YTdiY2UzYmEyMDlmZWQ2NDNkZWQ5YWI5NTVhZjJlYmM5NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC0xMTQsNiArMTE0LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGJlZ2luKCk7CiAgICAgdm9pZCBhdHRlbXB0VG9FbmQoKTsKICAgICB2b2lkIGVuZElmRGVs
YXllZCgpOworICAgIHZvaWQgYXR0ZW1wdFRvUnVuRGVmZXJyZWRTY3JpcHRzQW5kRW5kKCk7CiAg
ICAgdm9pZCBlbmQoKTsKIAogICAgIGJvb2wgaXNTY2hlZHVsZWRGb3JSZXN1bWUoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBjY2JjY2M5YjhjYmU3OGU5MzhiN2U0NWM3NzgyMDZk
OGFmM2NkYmM2Li4wMmE5NzQ1MTYxM2ZiMzAyM2NjZTFiZGU0NjNmNDM2ZGU4M2UzZGZlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC00MTksNiArNDE5LDEwIEBAIHZvaWQgRnJhbWVMb2FkZXI6
OnN0b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9saWN5IHVubG9hZEV2ZW50UG9saWN5LCBEYXRhYmFz
ZVBvbGljCiAgICAgbV93b3JraW5nVVJMID0gS1VSTCgpOwogCiAgICAgaWYgKERvY3VtZW50KiBk
b2MgPSBtX2ZyYW1lLT5kb2N1bWVudCgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBIVE1MNSBkb2Vz
bid0IHRlbGwgdXMgdG8gc2V0IHRoZSBzdGF0ZSB0byBjb21wbGV0ZSB3aGVuIGFib3J0aW5nLCBi
dXQgd2UgZG8gYW55d2F5IHRvIG1hdGNoIGxlZ2FjeSBiZWhhdmlvci4KKyAgICAgICAgLy8gaHR0
cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTEwNTM3CisgICAgICAg
IGRvYy0+c2V0UmVhZHlTdGF0ZShEb2N1bWVudDo6Q29tcGxldGUpOworCiAgICAgICAgIGlmIChE
b2NMb2FkZXIqIGRvY0xvYWRlciA9IGRvYy0+ZG9jTG9hZGVyKCkpCiAgICAgICAgICAgICBjYWNo
ZSgpLT5sb2FkZXIoKS0+Y2FuY2VsUmVxdWVzdHMoZG9jTG9hZGVyKTsKIApAQCAtODMyLDYgKzgz
Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrQ29tcGxldGVkKCkKIAogICAgIC8vIE9LLCBj
b21wbGV0ZWQuCiAgICAgbV9pc0NvbXBsZXRlID0gdHJ1ZTsKKyAgICBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5zZXRSZWFkeVN0YXRlKERvY3VtZW50OjpDb21wbGV0ZSk7CiAKICAgICBSZWZQdHI8RnJh
bWU+IHByb3RlY3QobV9mcmFtZSk7CiAgICAgY2hlY2tDYWxsSW1wbGljaXRDbG9zZSgpOyAvLyBp
ZiB3ZSBkaWRuJ3QgZG8gaXQgYmVmb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66658</attachid>
            <date>2010-09-06 10:52:51 -0700</date>
            <delta_ts>2010-09-06 11:33:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-45119-20100906105249.patch</filename>
            <type>text/plain</type>
            <size>14309</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiNWJiZmIwYTM5MWY4NmVhYWMxMmVlMzEzMmZmOTI5YTcxZDBlYWU5Li5jZWQ0Y2Fm
MmFiOTljNjIwMDcwYWE4YzVjZGYzNmRmZjliNDUzZmM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDktMDIgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIEltcGxlbWVudCBIVE1MNSBk
ZWZpbml0aW9uIG9mIGRvY3VtZW50LnJlYWR5U3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MTE5CisKKyAgICAgICAgKiBmYXN0L2RvbS9Eb2N1
bWVudC9yZWFkeXN0YXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
RG9jdW1lbnQvcmVhZHlzdGF0ZS5odG1sOiBBZGRlZC4gUmVhZHMgcmVhZHlTdGF0ZSBpbmxpbmUg
c2NyaXB0LCBleHRlcm5hbCBzY3JpcHQsIGRlZmVycmVkIHNjcmlwdCwgRE9NQ29udGVudExvYWRl
ZCwgb25sb2FkLCBhbmQgZHluYW1pYyBwb3N0LW9ubG9hZCBzY3JpcHQuCisKIDIwMTAtMDktMDYg
IE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFudG9uaW8gR29tZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9E
b2N1bWVudC9yZWFkeXN0YXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0Rv
Y3VtZW50L3JlYWR5c3RhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkZmNlYzdhN2Y4YjM4
MGM3NjAxNTc3Y2Y1YzFlYjhkZDYyNGExYjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9Eb2N1bWVudC9yZWFkeXN0YXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEx
IEBACitUZXN0cyB0aGF0IHRoZSBkb2N1bWVudCdzIHJlYWR5U3RhdGUgaXMgc2V0IHByb3Blcmx5
IGF0IHZhcmlvdXMgcGhhc2VzIGR1cmluZyBsb2FkLgorUEFTUyBkb2N1bWVudC5yZWFkeVN0YXRl
IGlzICJsb2FkaW5nIgorUEFTUyBkb2N1bWVudC5yZWFkeVN0YXRlIGlzICJsb2FkaW5nIgorUEFT
UyBkb2N1bWVudC5yZWFkeVN0YXRlIGlzICJpbnRlcmFjdGl2ZSIKK1BBU1MgZG9jdW1lbnQucmVh
ZHlTdGF0ZSBpcyAiaW50ZXJhY3RpdmUiCitQQVNTIGRvY3VtZW50LnJlYWR5U3RhdGUgaXMgImNv
bXBsZXRlIgorUEFTUyBkb2N1bWVudC5yZWFkeVN0YXRlIGlzICJjb21wbGV0ZSIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9yZWFkeXN0YXRlLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9Eb2N1bWVudC9yZWFkeXN0YXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA0NTE4ZDg1
ZmE0ZTcxOWIxNDZkYWFmMjA5NGZjZDU3YjlmNTIwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3JlYWR5c3RhdGUuaHRtbApAQCAtMCwwICsxLDMwIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNob3VsZEJlRXF1
YWxUb1N0cmluZygnZG9jdW1lbnQucmVhZHlTdGF0ZScsICdjb21wbGV0ZScpOyI+CitUZXN0cyB0
aGF0IHRoZSBkb2N1bWVudCdzIHJlYWR5U3RhdGUgaXMgc2V0IHByb3Blcmx5IGF0IHZhcmlvdXMg
cGhhc2VzIGR1cmluZyBsb2FkLgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IGRl
ZmVyIHNyYz0iZGF0YTp0ZXh0L2phdmFzY3JpcHQsc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1
bWVudC5yZWFkeVN0YXRlJywgJ2ludGVyYWN0aXZlJyk7Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJkYXRhOnRleHQvamF2YXNjcmlwdCxzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LnJl
YWR5U3RhdGUnLCAnbG9hZGluZycpOyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICB2YXIganNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5yZWFk
eVN0YXRlIiwgImxvYWRpbmciKTsKKworICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01D
b250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKSB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJk
b2N1bWVudC5yZWFkeVN0YXRlIiwgImludGVyYWN0aXZlIik7CisKKyAgICB2YXIgZWwgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKKyAgICBlbC5zcmMgPSAiZGF0YTp0ZXh0L2ph
dmFzY3JpcHQsc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5yZWFkeVN0YXRlJywgJ2Nv
bXBsZXRlJyk7IjsKKyAgICBlbC5vbmxvYWQgPSBmdW5jdGlvbigpIHsgZmluaXNoSlNUZXN0KCk7
IH0KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENo
aWxkKGVsKTsKKyAgfSwgZmFsc2UpOworCisgIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk2NmQxZjYyMGMyYTgxOTU1NTIwNjhl
Njg2Zjk4NDk4ZDE2NTI2MGQuLjFkYTJmMzg0NWQ2ZDM5M2JmMzZlNmY0OWQzMGRmODk1OTQyZTYw
NmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDEgQEAKKzIwMTAtMDktMDIgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAg
IEltcGxlbWVudCBIVE1MNSBkZWZpbml0aW9uIG9mIGRvY3VtZW50LnJlYWR5U3RhdGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MTE5CisKKyAgICAg
ICAgVGhlIGxlZ2FjeSBiZWhhdmlvciB3YXMgImxvYWRpbmciIC0+ICJsb2FkZWQiIC0+ICJjb21w
bGV0ZSIuIFRoZSBuZXcKKyAgICAgICAgSFRNTDUgYmVoYXZpb3IgaXMgImxvYWRpbmciIC0+ICJp
bnRlcmFjdGl2ZSIgLT4gImNvbXBsZXRlIi4gVGhlcmUgaXMKKyAgICAgICAgc29tZSBwb3RlbnRp
YWwgZm9yIHRoaXMgdG8gY2F1c2UgY29tcGF0IHByb2JsZW1zIGlmIGZvciBpbnN0YW5jZSBhCisg
ICAgICAgIHBhZ2UgZXhwZWN0cyByZWFkeVN0YXRlIHRvIGJlICJsb2FkZWQiIGR1cmluZyB0aGUg
RE9NQ29udGVudExvYWRlZCBldmVudC4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9Eb2N1bWVu
dC9yZWFkeXN0YXRlLmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOiBJbml0aWFsIHZhbHVlIGlzIENvbXBsZXRl
IGJlY2F1c2UgYWNjb3JkaW5nIHRvIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBw
cy9jdXJyZW50LXdvcmsvI2RvbS1kb2N1bWVudC1yZWFkeXN0YXRlLAorICAgICAgICB3aGVuIGEg
RG9jdW1lbnQgaXMgY3JlYXRlZCB0aGUgaW5pdGlhbCB2YWx1ZSBpcyAiY29tcGxldGUiIHVubGVz
cyBpdCBoYXMgYSBwYXJzZXIgYXNzb2NpYXRlZCB3aXRoIGl0LCBpbiB3aGljaCBjYXNlIGl0IGlz
ICJsb2FkaW5nIi4KKyAgICAgICAgU28gdGhlIGN0b3Igc3RhcnRzIGl0IENvbXBsZXRlLCBhbmQg
d2hlbiB0aGUgcGFyc2VyIGlzIGNyZWF0ZWQgaXQgaXMgZmxpcHBlZCB0byBMb2FkaW5nLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omlt
cGxpY2l0T3Blbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5n
KTogRW5zdXJlIHRoYXQgWE1MIGFuZCBIVE1MIHBhcnNlciBoYXZlIHRyYW5zaXRpb24gdG8gU3Rv
cHBpbmcgc3RhdGUuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UGFyc2VyOjpwcmVw
YXJlVG9TdG9wUGFyc2luZyk6IFByZXZpb3VzbHkgdGhpcyB3YXMgYmVpbmcgY2FsbGVkIHdoZW4g
cGFyc2luZyBoYWQgc3RvcHBlZC4KKyAgICAgICAgSXQgaXMgYmV0dGVyIHRvIGVuc3VyZSBpdCBp
cyBvbmx5IGNhbGxlZCB3aGlsZSBwYXJzaW5nLgorICAgICAgICAqIGRvbS9YTUxEb2N1bWVudFBh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6ZW5kKTogVHJh
bnNpdGlvbiB0byBzdG9wcGluZyBiZWZvcmUgY2FsbGluZyBkb2N1bWVudCBmaW5pc2hlZFBhcnNp
b25nKCkuCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cHJlcGFyZVRvU3RvcFBhcnNpbmcp
OiBTZXQgc3RhdGUgdG8gaW50ZXJhY3RpdmUgYmVmb3JlIHJ1bm5pbmcgZGVmZXJyZWQgc2NyaXB0
cy4KKyAgICAgICAgVGhpcyBtZXRob2QgaXMgYWxzbyBjYWxsZWQgd2hlbiBwYXJzaW5nIGZyYWdt
ZW50cywgc28gd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZG9uZSBpbiB0aGF0IGNhc2UuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OmF0dGVtcHRUb1J1bkRlZmVycmVk
U2NyaXB0c0FuZEVuZCk6IEFkZGVkLiBCcmVhayBvdXQgdGhpcyBwYXJ0IHMgdGhhdCBub3RpZnlG
aW5pc2hlZCBkb2Vzbid0IGdvIHRocm91Z2gKKyAgICAgICAgdGhlIGFkZGl0aW9uYWwgc3RlcHMg
b2YgcHVtcGluZyB0b2tlbml6ZXIsIHNldHRpbmcgdGhlIHN0YXRlLCBldGMuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlzaGVkKTogTm93IHRoYXQgcHJl
cGFyZVRvU3RvcFBhcnNpbmcgaXMgc3BsaXQgdXAsIHdlIG11c3QgcHJvdGVjdC4gSXQgYWxzbyBt
YWtlcyBzZW5zZSB0byBhZGQgYSBjb3VwbGUgb2YgQVNTRVJUcy4KKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2Fk
aW5nKTogSXQgbG9va3MgbGlrZSBhbiBhYm9ydGVkIGxvYWQgc2hvdWxkIG5ldmVyIHRyYW5zaXRp
b24gdG8gImNvbXBsZXRlIiBhY2NvcmRpbmcgdGhlIEhUTUw1LiBJJ3ZlIGxlZnQgdGhlIGxlZ2Fj
eSBiZWhhdmlvciBmb3Igbm93IHRob3VnaC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
OjpjaGVja0NvbXBsZXRlZCk6IFRoZSBGcmFtZUxvYWRlciBub3cgc2V0cyB0aGUgc3RhdGUgb24g
dGhlIERvY3VtZW50IGluc3RlYWQgb2YgdGhlIERvY3VtZW50IHBvbGxpbmcgdGhlIEZyYW1lTG9h
ZGVyLgorCiAyMDEwLTA5LTA2ICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZGJmNDQ3ZDY4
MzBiMzliYmYwMDVhMDJhZTRkYjllMzdkM2U1NTJlOC4uYjgyYmMwNWI0Y2Y4ODE5NGMzN2JlYjU3
NDJkMzk1ODY4YWI0NzdlMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzU3LDYgKzM1Nyw3IEBAIERvY3VtZW50
OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBi
b29sIGlzSFRNTCkKICAgICAsIG1fY29tcGF0aWJpbGl0eU1vZGVMb2NrZWQoZmFsc2UpCiAgICAg
LCBtX2RvbVRyZWVWZXJzaW9uKDApCiAgICAgLCBtX3N0eWxlU2hlZXRzKFN0eWxlU2hlZXRMaXN0
OjpjcmVhdGUodGhpcykpCisgICAgLCBtX3JlYWR5U3RhdGUoQ29tcGxldGUpCiAgICAgLCBtX3N0
eWxlUmVjYWxjVGltZXIodGhpcywgJkRvY3VtZW50OjpzdHlsZVJlY2FsY1RpbWVyRmlyZWQpCiAg
ICAgLCBtX3BlbmRpbmdTdHlsZVJlY2FsY1Nob3VsZEZvcmNlKGZhbHNlKQogICAgICwgbV9mcmFt
ZUVsZW1lbnRzU2hvdWxkSWdub3JlU2Nyb2xsaW5nKGZhbHNlKQpAQCAtOTUyLDE4ICs5NTMsMjkg
QEAgRWxlbWVudCogRG9jdW1lbnQ6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYg
ZWxlbWVudElkKSBjb25zdAogCiBTdHJpbmcgRG9jdW1lbnQ6OnJlYWR5U3RhdGUoKSBjb25zdAog
ewotICAgIGlmIChGcmFtZSogZiA9IGZyYW1lKCkpIHsKLSAgICAgICAgaWYgKGYtPmxvYWRlcigp
LT5pc0NvbXBsZXRlKCkpIAotICAgICAgICAgICAgcmV0dXJuICJjb21wbGV0ZSI7Ci0gICAgICAg
IGlmIChwYXJzaW5nKCkpIAotICAgICAgICAgICAgcmV0dXJuICJsb2FkaW5nIjsKLSAgICAgICAg
cmV0dXJuICJsb2FkZWQiOwotICAgICAgICAvLyBGSVhNRTogV2hhdCBkb2VzICJpbnRlcmFjdGl2
ZSIgbWVhbj8KLSAgICAgICAgLy8gRklYTUU6IE1pc3Npbmcgc3VwcG9ydCBmb3IgInVuaW5pdGlh
bGl6ZWQiLgorICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBsb2FkaW5nLCAo
ImxvYWRpbmciKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGludGVy
YWN0aXZlLCAoImludGVyYWN0aXZlIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
U3RyaW5nLCBjb21wbGV0ZSwgKCJjb21wbGV0ZSIpKTsKKworICAgIHN3aXRjaCAobV9yZWFkeVN0
YXRlKSB7CisgICAgY2FzZSBMb2FkaW5nOgorICAgICAgICByZXR1cm4gbG9hZGluZzsKKyAgICBj
YXNlIEludGVyYWN0aXZlOgorICAgICAgICByZXR1cm4gaW50ZXJhY3RpdmU7CisgICAgY2FzZSBD
b21wbGV0ZToKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRlOwogICAgIH0KKworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAordm9pZCBEb2N1bWVudDo6
c2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlIHJlYWR5U3RhdGUpCit7CisgICAgLy8gRklYTUU6IEZp
cmUgdGhlIHJlYWR5c3RhdGVjaGFuZ2UgZXZlbnQgb24gdGhpcyBEb2N1bWVudC4KKyAgICBtX3Jl
YWR5U3RhdGUgPSByZWFkeVN0YXRlOworfQorCiBTdHJpbmcgRG9jdW1lbnQ6OmVuY29kaW5nKCkg
Y29uc3QKIHsKICAgICBpZiAoVGV4dFJlc291cmNlRGVjb2RlciogZCA9IGRlY29kZXIoKSkKQEAg
LTE4NjksNiArMTg4MSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxpY2l0T3BlbigpCiAKICAgICBt
X3BhcnNlciA9IGNyZWF0ZVBhcnNlcigpOwogICAgIHNldFBhcnNpbmcodHJ1ZSk7CisgICAgc2V0
UmVhZHlTdGF0ZShMb2FkaW5nKTsKIAogICAgIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciogcGFy
c2VyID0gc2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCk7CiAgICAgaWYgKG1fZnJhbWUgJiYgcGFy
c2VyKQpAQCAtNDEwMyw2ICs0MTE2LDggQEAgQ29sbGVjdGlvbkNhY2hlKiBEb2N1bWVudDo6bmFt
ZUNvbGxlY3Rpb25JbmZvKENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21pY1MKIAogdm9p
ZCBEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIHsKKyAgICBBU1NFUlQoIXNjcmlwdGFibGVE
b2N1bWVudFBhcnNlcigpIHx8ICFtX3BhcnNlci0+aXNQYXJzaW5nKCkpOworICAgIEFTU0VSVCgh
c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgfHwgbV9yZWFkeVN0YXRlICE9IExvYWRpbmcpOwog
ICAgIHNldFBhcnNpbmcoZmFsc2UpOwogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuRE9NQ29udGVudExvYWRlZEV2ZW50LCB0cnVlLCBmYWxzZSkpOwogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCAzZTgwNGY3NjUwNDJkNzE3YmM1Njk1OTdkNzhhOGYzZjAyMGU2NzA0Li4xYmVjNjA4ZTVj
YTZlMDA4N2NjNWFhNzMwNTQ3OGNlNTYzMjY3NGI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTU4Miw3ICs1ODIsMTMg
QEAgcHVibGljOgogICAgIGJvb2wgaW5RdWlya3NNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb21w
YXRpYmlsaXR5TW9kZSA9PSBRdWlya3NNb2RlOyB9CiAgICAgYm9vbCBpbkxpbWl0ZWRRdWlya3NN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb21wYXRpYmlsaXR5TW9kZSA9PSBMaW1pdGVkUXVpcmtz
TW9kZTsgfQogICAgIGJvb2wgaW5Ob1F1aXJrc01vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvbXBh
dGliaWxpdHlNb2RlID09IE5vUXVpcmtzTW9kZTsgfQotICAgIAorCisgICAgZW51bSBSZWFkeVN0
YXRlIHsKKyAgICAgICAgTG9hZGluZywKKyAgICAgICAgSW50ZXJhY3RpdmUsCisgICAgICAgIENv
bXBsZXRlCisgICAgfTsKKyAgICB2b2lkIHNldFJlYWR5U3RhdGUoUmVhZHlTdGF0ZSk7CiAgICAg
dm9pZCBzZXRQYXJzaW5nKGJvb2wpOwogICAgIGJvb2wgcGFyc2luZygpIGNvbnN0IHsgcmV0dXJu
IG1fYlBhcnNpbmc7IH0KICAgICBpbnQgbWluaW11bUxheW91dERlbGF5KCk7CkBAIC0xMTU0LDYg
KzExNjAsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2xvYWRpbmdTaGVldDsKICAgICBib29s
IG1fdmlzdWFsbHlPcmRlcmVkOworICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwogICAgIGJv
b2wgbV9iUGFyc2luZzsKICAgICAKICAgICBUaW1lcjxEb2N1bWVudD4gbV9zdHlsZVJlY2FsY1Rp
bWVyOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuY3BwIGIvV2ViQ29y
ZS9kb20vRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDYzOTg2MGEyY2FlNGE5OWE0M2NhMDlkNjU0
ZWI2NDZmOWVlNDcwMGMuLmVmYjk2YjBlZWQ5OTU3YjEwNmQ5YjE5ZjRmNmMwNzlmZDU5YjdjZjIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmNwcAorKysgYi9XZWJDb3Jl
L2RvbS9Eb2N1bWVudFBhcnNlci5jcHAKQEAgLTUyLDggKzUyLDggQEAgdm9pZCBEb2N1bWVudFBh
cnNlcjo6c3RhcnRQYXJzaW5nKCkKIAogdm9pZCBEb2N1bWVudFBhcnNlcjo6cHJlcGFyZVRvU3Rv
cFBhcnNpbmcoKQogewotICAgIGlmIChtX3N0YXRlID09IFBhcnNpbmdTdGF0ZSkKLSAgICAgICAg
bV9zdGF0ZSA9IFN0b3BwaW5nU3RhdGU7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gUGFyc2luZ1N0
YXRlKTsKKyAgICBtX3N0YXRlID0gU3RvcHBpbmdTdGF0ZTsKIH0KIAogdm9pZCBEb2N1bWVudFBh
cnNlcjo6c3RvcFBhcnNpbmcoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQ
YXJzZXIuY3BwIGIvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDVmYjhi
NTQ0ODA0OTg4NzRiMzFkNGQ5OTdlYjlkM2ZhNWEyNDkzZmQuLjU1NjZkZTNiYmUxZmUwZjlhNWJk
MDUzOTRkN2RhMzMxMjU1ZjAyY2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50
UGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTIz
NCw2ICsyMzQsOSBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjplbmQoKQogICAgICAgICBkb2N1
bWVudCgpLT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKICAg
ICB9CiAKKyAgICBpZiAoaXNQYXJzaW5nKCkpCisgICAgICAgIHByZXBhcmVUb1N0b3BQYXJzaW5n
KCk7CisgICAgZG9jdW1lbnQoKS0+c2V0UmVhZHlTdGF0ZShEb2N1bWVudDo6SW50ZXJhY3RpdmUp
OwogICAgIGNsZWFyQ3VycmVudE5vZGVTdGFjaygpOwogICAgIGRvY3VtZW50KCktPmZpbmlzaGVk
UGFyc2luZygpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1l
bnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CmluZGV4IDk3NWZjYjg3YWQwYTE2MmUyMDU3OWM2YWVmZTAzYzZhZGJiOWE5NTMuLmRjZDEwMTBj
MDY4M2I0N2JjODNhZGY4YmEyNjI1ZjY0NjQ2ZGQ1MTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTE1MiwxNiArMTUyLDIwIEBAIHZvaWQgSFRNTERv
Y3VtZW50UGFyc2VyOjpwcmVwYXJlVG9TdG9wUGFyc2luZygpCiAgICAgLy8gYnV0IHdlIG5lZWQg
dG8gZW5zdXJlIGl0IGlzbid0IGRlbGV0ZWQgeWV0LgogICAgIFJlZlB0cjxIVE1MRG9jdW1lbnRQ
YXJzZXI+IHByb3RlY3QodGhpcyk7CiAKLSAgICAvLyBGSVhNRTogU2V0IHRoZSBjdXJyZW50IGRv
Y3VtZW50IHJlYWRpbmVzcyB0byAiaW50ZXJhY3RpdmUiLgotCiAgICAgLy8gTk9URTogVGhpcyBw
dW1wIHNob3VsZCBvbmx5IGV2ZXIgZW1pdCBidWZmZXJlZCBjaGFyYWN0ZXIgdG9rZW5zLAogICAg
IC8vIHNvIEZvcmNlU3luY2hyb25vdXMgdnMuIEFsbG93WWllbGQgc2hvdWxkIGJlIG1lYW5pbmds
ZXNzLgogICAgIHB1bXBUb2tlbml6ZXJJZlBvc3NpYmxlKEZvcmNlU3luY2hyb25vdXMpOworICAg
IAorICAgIGlmIChpc1N0b3BwZWQoKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgRG9jdW1lbnRQ
YXJzZXI6OnByZXBhcmVUb1N0b3BQYXJzaW5nKCk7Ci0gICAgaWYgKG1fc2NyaXB0UnVubmVyICYm
ICFtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yUGFyc2luZygpKQotICAg
ICAgICByZXR1cm47Ci0gICAgZW5kKCk7CisKKyAgICAvLyBXZSB3aWxsIG5vdCBoYXZlIGEgc2Ny
aXB0UnVubmVyIHdoZW4gcGFyc2luZyBhIERvY3VtZW50RnJhZ21lbnQuCisgICAgaWYgKG1fc2Ny
aXB0UnVubmVyKQorICAgICAgICBkb2N1bWVudCgpLT5zZXRSZWFkeVN0YXRlKERvY3VtZW50OjpJ
bnRlcmFjdGl2ZSk7CisKKyAgICBhdHRlbXB0VG9SdW5EZWZlcnJlZFNjcmlwdHNBbmRFbmQoKTsK
IH0KIAogYm9vbCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NpbmdEYXRhKCkgY29uc3QKQEAg
LTM1Myw2ICszNTcsMTUgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmVuZCgpCiAgICAgbV90
cmVlQnVpbGRlci0+ZmluaXNoZWQoKTsKIH0KIAordm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmF0
dGVtcHRUb1J1bkRlZmVycmVkU2NyaXB0c0FuZEVuZCgpCit7CisgICAgQVNTRVJUKGlzU3RvcHBp
bmcoKSk7CisgICAgQVNTRVJUKCFoYXNJbnNlcnRpb25Qb2ludCgpKTsKKyAgICBpZiAobV9zY3Jp
cHRSdW5uZXIgJiYgIW1fc2NyaXB0UnVubmVyLT5leGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JQYXJz
aW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICBlbmQoKTsKK30KKwogdm9pZCBIVE1MRG9jdW1l
bnRQYXJzZXI6OmF0dGVtcHRUb0VuZCgpCiB7CiAgICAgLy8gZmluaXNoKCkgaW5kaWNhdGVzIHdl
IHdpbGwgbm90IHJlY2VpdmUgYW55IG1vcmUgZGF0YS4gSWYgd2UgYXJlIHdhaXRpbmcgb24KQEAg
LTQ2MCwxNyArNDczLDE3IEBAIGJvb2wgSFRNTERvY3VtZW50UGFyc2VyOjpzaG91bGRMb2FkRXh0
ZXJuYWxTY3JpcHRGcm9tU3JjKGNvbnN0IEF0b21pY1N0cmluZyYgc3JjCiAKIHZvaWQgSFRNTERv
Y3VtZW50UGFyc2VyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3Vy
Y2UpCiB7Ci0gICAgaWYgKGlzU3RvcHBpbmcoKSkgewotICAgICAgICBwcmVwYXJlVG9TdG9wUGFy
c2luZygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgLy8gcHVtcFRva2VuaXplciBj
YW4gY2F1c2UgdGhpcyBwYXJzZXIgdG8gYmUgZGV0YWNoZWQgZnJvbSB0aGUgRG9jdW1lbnQsCiAg
ICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIGl0IGlzbid0IGRlbGV0ZWQgeWV0LgogICAgIFJl
ZlB0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7CiAKICAgICBBU1NFUlQobV9z
Y3JpcHRSdW5uZXIpOwogICAgIEFTU0VSVCghaW5TY3JpcHRFeGVjdXRpb24oKSk7CisgICAgaWYg
KGlzU3RvcHBpbmcoKSkgeworICAgICAgICBhdHRlbXB0VG9SdW5EZWZlcnJlZFNjcmlwdHNBbmRF
bmQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEFTU0VSVChtX3RyZWVCdWlsZGVy
LT5pc1BhdXNlZCgpKTsKICAgICAvLyBOb3RlOiBXZSBvbmx5IGV2ZXIgd2FpdCBvbiBvbmUgc2Ny
aXB0IGF0IGEgdGltZSwgc28gd2UgYWx3YXlzIGtub3cgdGhpcwogICAgIC8vIGlzIHRoZSBvbmUg
d2Ugd2VyZSB3YWl0aW5nIG9uIGFuZCBjYW4gdW4tcGF1c2UgdGhlIHRyZWUgYnVpbGRlci4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmggYi9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IGEzMmI0Mzk2ZDM5Y2Qw
MDY1YmFmZDY0MmVkNjI1NDJkODBlZmU5YmMuLjBlNTA4ZGE3YmNlM2JhMjA5ZmVkNjQzZGVkOWFi
OTU1YWYyZWJjOTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmgKKysrIGIvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaApA
QCAtMTE0LDYgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBiZWdpbigpOwogICAgIHZvaWQg
YXR0ZW1wdFRvRW5kKCk7CiAgICAgdm9pZCBlbmRJZkRlbGF5ZWQoKTsKKyAgICB2b2lkIGF0dGVt
cHRUb1J1bkRlZmVycmVkU2NyaXB0c0FuZEVuZCgpOwogICAgIHZvaWQgZW5kKCk7CiAKICAgICBi
b29sIGlzU2NoZWR1bGVkRm9yUmVzdW1lKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5k
ZXggNzk4NmRkOTNlZGY2YmEyOGVkMThkZmUxYTZmNDJlZmE4ZmU1OWQ2NC4uZGM3YTFjZTgwNWIw
ZDk5YTE4ZGMyZmFhZjJhYWRhOWVhYjdiNzZhYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAt
NDI1LDYgKzQyNSwxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyhVbmxvYWRFdmVu
dFBvbGljeSB1bmxvYWRFdmVudFBvbGljeSwgRGF0YWJhc2VQb2xpYwogICAgIG1fd29ya2luZ1VS
TCA9IEtVUkwoKTsKIAogICAgIGlmIChEb2N1bWVudCogZG9jID0gbV9mcmFtZS0+ZG9jdW1lbnQo
KSkgeworICAgICAgICAvLyBGSVhNRTogSFRNTDUgZG9lc24ndCB0ZWxsIHVzIHRvIHNldCB0aGUg
c3RhdGUgdG8gY29tcGxldGUgd2hlbiBhYm9ydGluZywgYnV0IHdlIGRvIGFueXdheSB0byBtYXRj
aCBsZWdhY3kgYmVoYXZpb3IuCisgICAgICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVi
bGljL3Nob3dfYnVnLmNnaT9pZD0xMDUzNworICAgICAgICBkb2MtPnNldFJlYWR5U3RhdGUoRG9j
dW1lbnQ6OkNvbXBsZXRlKTsKKwogICAgICAgICBpZiAoRG9jTG9hZGVyKiBkb2NMb2FkZXIgPSBk
b2MtPmRvY0xvYWRlcigpKQogICAgICAgICAgICAgY2FjaGUoKS0+bG9hZGVyKCktPmNhbmNlbFJl
cXVlc3RzKGRvY0xvYWRlcik7CiAKQEAgLTgzOCw2ICs4NDIsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
OjpjaGVja0NvbXBsZXRlZCgpCiAKICAgICAvLyBPSywgY29tcGxldGVkLgogICAgIG1faXNDb21w
bGV0ZSA9IHRydWU7CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0UmVhZHlTdGF0ZShEb2N1
bWVudDo6Q29tcGxldGUpOwogCiAgICAgUmVmUHRyPEZyYW1lPiBwcm90ZWN0KG1fZnJhbWUpOwog
ICAgIGNoZWNrQ2FsbEltcGxpY2l0Q2xvc2UoKTsgLy8gaWYgd2UgZGlkbid0IGRvIGl0IGJlZm9y
ZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>