<?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>41372</bug_id>
          
          <creation_ts>2010-06-29 14:13:08 -0700</creation_ts>
          <short_desc>popstate event is not fired until document opts in by calling pushstate.</short_desc>
          <delta_ts>2010-09-01 18:01:29 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://people.mozilla.org/~jlebar/test/webkit/popstate-load.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Lebar">justin.lebar+bug</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fishd</cc>
    
    <cc>ishermandom+bugs</cc>
    
    <cc>mihaip</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>244474</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Lebar">justin.lebar+bug</who>
    <bug_when>2010-06-29 14:13:08 -0700</bug_when>
    <thetext>STR:

* Open the JS console
* Visit http://people.mozilla.org/~jlebar/test/webkit/popstate-load.html

Expected results:

* Console displays &quot;popstate&quot;.

Actual results:

* Console displays nothing.

Chrome 5.0.375.86 on Ubuntu 10.04.

It seems that the popstate event is not fired until the document opts in by calling pushstate.  That is, if you visit the test page, click back, and then click forward, the page also doesn&apos;t get a popstate event.  But if you click the pushstate button, then going back and forward always gives a popstate, even when you&apos;re going forward to the original page.

Step 10 in the history traversal algorithm [1] suggests that this is the wrong behavior.  The line at [2] which says &quot;the popstate event is fired when navigating to a session history entry  that represents a state object&quot; is, I think, misleading.  I&apos;ll post to whatwg to see if we can get that changed.

[1]: http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#history-traversal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244478</commentid>
    <comment_count>1</comment_count>
    <who name="Justin Lebar">justin.lebar+bug</who>
    <bug_when>2010-06-29 14:14:41 -0700</bug_when>
    <thetext>Forgot to include a link above:

[2]: http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#event-definitions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244482</commentid>
    <comment_count>2</comment_count>
    <who name="Justin Lebar">justin.lebar+bug</who>
    <bug_when>2010-06-29 14:17:44 -0700</bug_when>
    <thetext>I should note that the current implementation also isn&apos;t consistent with the language from [2] (&quot;the popstate event is fired when navigating to a session history entry that represents a state object&quot;).

After a pushstate, only the second history entry has a state object, but Chrome fires a popstate when you navigate to either the first or the second state object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244829</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-06-30 10:16:00 -0700</bug_when>
    <thetext>&gt; After a pushstate, only the second history entry has a state object, but Chrome 
&gt; fires a popstate when you navigate to either the first or the second state 
&gt; object.

When you pushstate, WebKit sets a null state object on the previous history entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245031</commentid>
    <comment_count>4</comment_count>
    <who name="Justin Lebar">justin.lebar+bug</who>
    <bug_when>2010-06-30 17:29:03 -0700</bug_when>
    <thetext>To note Hixie&apos;s response to my e-mail:

&gt; Section 6.5.9.1 [1] says:
&gt;
&gt; &gt; The popstate event is fired when navigating to a session history entry that represents a state object.

Note that this is not a normative statement (there&apos;s no &quot;must&quot; or
other RFC2119 term). It&apos;s just an informative description.


&gt; In contrast, section 6.5.9 [2] indicates in step 10 that a popstate
&gt; event is fired if the history entry represents a state object or the
&gt; first entry for a document.

Right, that&apos;s the actual requirement.

&gt; I think we can resolve this in the spec by changing the line from
&gt; 6.5.9.1 to:
&gt;
&gt; &gt; The popstate event is fired when navigating to a session history
&gt; &gt; entry.

This text does need fixing (I&apos;ve noted this e-mail and will fix it in due
course), but changing this text makes no difference to the requirments in
the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248298</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-07-08 10:14:56 -0700</bug_when>
    <thetext>&lt;rdar://problem/8171150&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268887</commentid>
    <comment_count>6</comment_count>
      <attachid>65340</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-24 16:22:15 -0700</bug_when>
    <thetext>Created attachment 65340
Test case for popstate not being fired

Looks like the 6.5.9.1 in spec was clarified:
http://html5.org/tools/web-apps-tracker?from=5273&amp;to=5274

Justin, it looks like your test case at http://people.mozilla.org/~jlebar/test/webkit/popstate-load.html is no longer there. I&apos;ve attached a (hopefully) similar test case. The output from Webkit is:

setting hash to #foo
going back
test complete

The output from Firefox 4.0b4:

popstate: null
setting hash to #foo
popstate: null
going back
popstate: null
test complete

It seems to be like Gecko is firing popstate too often here. We only actually do history traversal when going back (to the first entry in the document), so I would expect to only see the final popstate log line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268898</commentid>
    <comment_count>7</comment_count>
    <who name="Justin Lebar">justin.lebar+bug</who>
    <bug_when>2010-08-24 16:47:03 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Justin, it looks like your test case at http://people.mozilla.org/~jlebar/test/webkit/popstate-load.html is no longer there. I&apos;ve attached a (hopefully) similar test case.

Sorry; I accidentally nuked my webspace a few weeks ago.  Your testcase looks similar.

&gt; The output from Webkit is:
&gt; 
&gt; setting hash to #foo
&gt; going back
&gt; test complete
&gt; 
&gt; The output from Firefox 4.0b4:
&gt; 
&gt; popstate: null
&gt; setting hash to #foo
&gt; popstate: null
&gt; going back
&gt; popstate: null
&gt; test complete
&gt; 
&gt; It seems to be like Gecko is firing popstate too often here. We only actually do history traversal when going back (to the first entry in the document), so I would expect to only see the final popstate log line.

I don&apos;t think &quot;history traversal&quot; means &quot;go to a page you&apos;ve been to before.&quot;  You can traverse the history to a page you&apos;ve never visited before.

I checked with Hixie about this on #whatwg:

&lt;Hixie&gt; there are exactly two times popstate is fired
&lt;Hixie&gt; 1. during history traversal, if the document readiness is already &quot;complete&quot;
&lt;Hixie&gt; 2. after the browser stops parsing

(1) corresponds to http://www.whatwg.org/specs/web-apps/current-work/#history-traversal
(2) corresponds to http://www.whatwg.org/specs/web-apps/current-work/#the-end

The first popstate happens after we finish parsing the document.  Then when we set the hash to #foo.  This causes us to run algorithm 6.5.8 &quot;Navigating to a fragment identifier&quot; which causes a history traversal and a popstate.  Then we go back, which is also a history traversal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269472</commentid>
    <comment_count>8</comment_count>
      <attachid>65467</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-25 13:30:21 -0700</bug_when>
    <thetext>Created attachment 65467
Test case for popstate not being fired</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269490</commentid>
    <comment_count>9</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-25 14:07:42 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &lt;Hixie&gt; there are exactly two times popstate is fired
&gt; &lt;Hixie&gt; 1. during history traversal, if the document readiness is already &quot;complete&quot;
&gt; &lt;Hixie&gt; 2. after the browser stops parsing
&gt; 
&gt; (1) corresponds to http://www.whatwg.org/specs/web-apps/current-work/#history-traversal
&gt; (2) corresponds to http://www.whatwg.org/specs/web-apps/current-work/#the-end
&gt; 
&gt; The first popstate happens after we finish parsing the document.  Then when we set the hash to #foo.  This causes us to run algorithm 6.5.8 &quot;Navigating to a fragment identifier&quot; which causes a history traversal and a popstate.  Then we go back, which is also a history traversal.

Thanks for the explanation, that makes sense.

What about the case where we navigate to two different fragments, and then go back twice (see updated test case attachment)? Gecko fires popstate for both history.back() calls, but it seems like first time (when going back from #state2 to #state1), the specified entry is not the first in the document, and it doesn&apos;t have a state object, so the conditions in step 10 of 6.5.9 (http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#history-traversal) don&apos;t apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269498</commentid>
    <comment_count>10</comment_count>
    <who name="Justin Lebar">justin.lebar+bug</who>
    <bug_when>2010-08-25 14:17:21 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; What about the case where we navigate to two different fragments, and then go back twice (see updated test case attachment)? Gecko fires popstate for both history.back() calls, but it seems like first time (when going back from #state2 to #state1), the specified entry is not the first in the document, and it doesn&apos;t have a state object, so the conditions in step 10 of 6.5.9 (http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#history-traversal) don&apos;t apply.

Hm...yes, I think you&apos;re reading that correctly.  FWIW I think that rule is way too confusing.  We should fire popState whenever the history entry changes, period.  That&apos;s much easier for people to understand.  Some pages might have to filter out noisy popstates, but that&apos;s better than the alternative.

Could you write to the WhatWG list about this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269525</commentid>
    <comment_count>11</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-25 14:56:32 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Hm...yes, I think you&apos;re reading that correctly.  FWIW I think that rule is way too confusing.  We should fire popState whenever the history entry changes, period.  That&apos;s much easier for people to understand.  Some pages might have to filter out noisy popstates, but that&apos;s better than the alternative.

I agree.
 
&gt; Could you write to the WhatWG list about this?

Done: http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-August/thread.html#28162</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269654</commentid>
    <comment_count>12</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-25 18:14:03 -0700</bug_when>
    <thetext>Now that I think about it some more, per the spec, I&apos;m not sure Firefox is right to be firing popstate when going from #state1 to #state2 either (in addition to when going back). In that case, #state2 (the new entry) is not the first entry in the document, and doesn&apos;t have a state object. Same thing for when going from the initial state to #state1.

However, this all may be moot if Hixie agrees that popstate should fire for all history traversals.

P.S. Thanks for getting Hixie to make this change http://html5.org/tools/web-apps-tracker?from=5345&amp;to=5346</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269960</commentid>
    <comment_count>13</comment_count>
      <attachid>65581</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-26 11:05:01 -0700</bug_when>
    <thetext>Created attachment 65581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269963</commentid>
    <comment_count>14</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-26 11:08:17 -0700</bug_when>
    <thetext>The attached patch modifies WebKit to fire popstate when:
- Navigating to a new document
- Navigating within the document (i.e. when changing the fragment)
- Navigating to a history item (different document (in the page cache or not), same document, or created via replaceState)

This matches Gecko and the proposed HTML5 spec change (that Hixie hasn&apos;t weight in on yet).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269973</commentid>
    <comment_count>15</comment_count>
      <attachid>65584</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-26 11:18:14 -0700</bug_when>
    <thetext>Created attachment 65584
Patch

Forgot to add new tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270122</commentid>
    <comment_count>16</comment_count>
      <attachid>65584</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-08-26 14:37:08 -0700</bug_when>
    <thetext>Comment on attachment 65584
Patch

&gt; diff --git a/WebCore/dom/Document.cpp b/WebCore/dom/Document.cpp
&gt; index 90939d33bae3c100b19f133cceab418558464ffc..7048c484f63a1eed460487301801656bbcdf430d 100644
&gt; --- a/WebCore/dom/Document.cpp
&gt; +++ b/WebCore/dom/Document.cpp
&gt; @@ -2003,6 +2003,10 @@ void Document::implicitClose()
&gt;      enqueuePageshowEvent(PageshowEventNotPersisted);
&gt;      if (m_pendingStateObject)
&gt;          enqueuePopstateEvent(m_pendingStateObject.release());
&gt; +    else {
&gt; +        RefPtr&lt;SerializedScriptValue&gt; nullStateObject = SerializedScriptValue::create();
&gt; +        enqueuePopstateEvent(nullStateObject.get());
&gt; +    }

and

&gt; diff --git a/WebCore/loader/FrameLoader.cpp b/WebCore/loader/FrameLoader.cpp
&gt; index 24888f27e9ea190672e203ef85630d59a935e208..37ccbdcbe5f91ae02ac44ef71a8a35e71efb2530 100644
&gt; --- a/WebCore/loader/FrameLoader.cpp
&gt; +++ b/WebCore/loader/FrameLoader.cpp
&gt; @@ -1169,10 +1169,13 @@ void FrameLoader::loadInSameDocument(const KURL&amp; url, SerializedScriptValue* sta
&gt;  
&gt;      m_client-&gt;dispatchDidNavigateWithinPage();
&gt;  
&gt; -    if (stateObject) {
&gt; +    if (stateObject)
&gt;          m_frame-&gt;document()-&gt;statePopped(stateObject);
&gt; -        m_client-&gt;dispatchDidPopStateWithinPage();
&gt; +    else {
&gt; +        RefPtr&lt;SerializedScriptValue&gt; nullStateObject = SerializedScriptValue::create();
&gt; +        m_frame-&gt;document()-&gt;statePopped(nullStateObject.get());
&gt;      }
&gt; +    m_client-&gt;dispatchDidPopStateWithinPage();

Since we&apos;ll be using the null SerializedScriptValue a lot more often now (every history navigation), we may as well make it a static shared object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270815</commentid>
    <comment_count>17</comment_count>
      <attachid>65788</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-27 16:54:07 -0700</bug_when>
    <thetext>Created attachment 65788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270816</commentid>
    <comment_count>18</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-27 16:55:04 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Since we&apos;ll be using the null SerializedScriptValue a lot more often now (every history navigation), we may as well make it a static shared object.

Sure, that makes sense. Latest version of the patch adds SerializedScriptValue::nullValue() to do this.

Also, the HTML5 spec was changed to reflect Gecko&apos;s behavior (and this patch): http://html5.org/tools/web-apps-tracker?from=5376&amp;to=5377</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273079</commentid>
    <comment_count>19</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-01 16:00:47 -0700</bug_when>
    <thetext>Brady, I was wondering if you have any other comments about the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273092</commentid>
    <comment_count>20</comment_count>
      <attachid>65788</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-09-01 16:15:14 -0700</bug_when>
    <thetext>Comment on attachment 65788
Patch

Okay looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273140</commentid>
    <comment_count>21</comment_count>
      <attachid>65788</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-01 18:01:23 -0700</bug_when>
    <thetext>Comment on attachment 65788
Patch

Clearing flags on attachment: 65788

Committed r66628: &lt;http://trac.webkit.org/changeset/66628&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273141</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-01 18:01:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>65340</attachid>
            <date>2010-08-24 16:22:15 -0700</date>
            <delta_ts>2010-08-25 13:30:21 -0700</delta_ts>
            <desc>Test case for popstate not being fired</desc>
            <filename>popstate-on-back.html</filename>
            <type>text/html</type>
            <size>769</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPC9oZWFkPgo8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+CjxzY3JpcHQ+CmZ1bmN0aW9uIHJ1blRlc3QoKQp7CiAgICBzZXRUaW1lb3V0KHN0ZXAs
IDApOwp9Cgp2YXIgY3VycmVudFN0ZXAgPSAwOwoKZnVuY3Rpb24gc3RlcCgpCnsKICAgIHN3aXRj
aCAoY3VycmVudFN0ZXArKykgewogICAgY2FzZSAwOgogICAgICAgIGxvZygnc2V0dGluZyBoYXNo
IHRvICNmb28nKTsKICAgICAgICBsb2NhdGlvbi5oYXNoID0gJyNmb28nOwogICAgICAgIGJyZWFr
OwogICAgY2FzZSAxOgogICAgICAgIGxvZygnZ29pbmcgYmFjaycpOwogICAgICAgIGhpc3Rvcnku
YmFjaygpOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAyOgogICAgICAgIGxvZygndGVzdCBjb21w
bGV0ZScpOwogICAgICAgIHJldHVybjsKICAgIGRlZmF1bHQ6CiAgICAgICAgbG9nKCd1bmV4cGVj
dGVkIHN0YXRlJyk7CiAgICAgICAgYnJlYWs7CiAgICB9CiAgICAKICAgIHNldFRpbWVvdXQoc3Rl
cCwgMCk7Cn0KCm9ucG9wc3RhdGUgPSBmdW5jdGlvbihldmVudCkKewogICAgbG9nKCdwb3BzdGF0
ZTogJyArIGV2ZW50LnN0YXRlKTsKfQoKZnVuY3Rpb24gbG9nKGxpbmUpCnsKICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoCiAgICAgICAgZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUobGluZSArICdcbicpKTsKfQo8L3NjcmlwdD4KCjxwcmUgaWQ9ImNvbnNv
bGUiPjwvcHJlPgoKPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>65467</attachid>
            <date>2010-08-25 13:30:21 -0700</date>
            <delta_ts>2010-08-25 13:30:21 -0700</delta_ts>
            <desc>Test case for popstate not being fired</desc>
            <filename>popstate-on-back.html</filename>
            <type>text/html</type>
            <size>922</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPC9oZWFkPgo8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+CjxzY3JpcHQ+CmZ1bmN0aW9uIHJ1blRlc3QoKQp7CiAgICBzZXRUaW1lb3V0KHN0ZXAs
IDApOwp9Cgp2YXIgY3VycmVudFN0ZXAgPSAwOwoKZnVuY3Rpb24gc3RlcCgpCnsKICAgIHN3aXRj
aCAoY3VycmVudFN0ZXArKykgewogICAgY2FzZSAwOgogICAgICAgIGxvZygnc2V0dGluZyBoYXNo
IHRvICNzdGF0ZTEnKTsKICAgICAgICBsb2NhdGlvbi5oYXNoID0gJyNzdGF0ZTEnOwogICAgICAg
IGJyZWFrOwogICAgY2FzZSAxOgogICAgICAgIGxvZygnc2V0dGluZyBoYXNoIHRvICNzdGF0ZTIn
KTsKICAgICAgICBsb2NhdGlvbi5oYXNoID0gJyNzdGF0ZTInOwogICAgICAgIGJyZWFrOwogICAg
Y2FzZSAyOgogICAgICAgIGxvZygnZ29pbmcgYmFjayB0byAjc3RhdGUxJyk7CiAgICAgICAgaGlz
dG9yeS5iYWNrKCk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIDM6CiAgICAgICAgbG9nKCdnb2lu
ZyBiYWNrIHRvIGluaXRpYWwgc3RhdGUnKTsKICAgICAgICBoaXN0b3J5LmJhY2soKTsKICAgICAg
ICBicmVhazsKICAgIGNhc2UgNDoKICAgICAgICBsb2coJ3Rlc3QgY29tcGxldGUnKTsKICAgICAg
ICByZXR1cm47CiAgICB9CiAgICAKICAgIHNldFRpbWVvdXQoc3RlcCwgMCk7Cn0KCm9ucG9wc3Rh
dGUgPSBmdW5jdGlvbihldmVudCkKewogICAgbG9nKCdwb3BzdGF0ZTogJyArIGV2ZW50LnN0YXRl
KTsKfQoKZnVuY3Rpb24gbG9nKGxpbmUpCnsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b25zb2xlJykuYXBwZW5kQ2hpbGQoCiAgICAgICAgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobGlu
ZSArICdcbicpKTsKfQo8L3NjcmlwdD4KCjxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgoKPC9ib2R5
Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65581</attachid>
            <date>2010-08-26 11:05:01 -0700</date>
            <delta_ts>2010-08-26 11:18:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41372-20100826110500.patch</filename>
            <type>text/plain</type>
            <size>23567</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiZDA1MDg0OWVjNTZlMDA0YjI1ZTk2NDcwYjI1ZGIzMzJiNzQ0MzNkLi4yZGMwOTZh
MzRmZDE0NmFjY2MwMjQ5ZmM5OTRhOTVhNjljNTMzNzUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMTAtMDgtMjYgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcG9wc3RhdGUgZXZl
bnQgaXMgbm90IGZpcmVkIHVudGlsIGRvY3VtZW50IG9wdHMgaW4gYnkgY2FsbGluZyBwdXNoc3Rh
dGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTM3
MgorCisgICAgICAgIEFkZCB0d28gdGVzdHMgdG8gY2hlY2sgaG93IG9mdGVuIHBvcHN0YXRlIGlz
IGJlaW5nIGZpcmVkIChmb3IgYm90aAorICAgICAgICBmcmFnbWVudCBjaGFuZ2VzIGFuZCBwYWdl
IGNoYW5nZXMsIGVzcGVjaWFsbHkgd2l0aCB0aGUgcGFnZSBjYWNoZQorICAgICAgICBlbmFibGVk
KS4KKworICAgICAgICBVcGRhdGUgZXhpc3Rpbmcgc3RhdGUgb2JqZWN0IHRlc3RzIHRvIGhhbmRs
ZSBwb3BzdGF0ZSBiZWluZyBmaXJlZCBmb3IKKyAgICAgICAgdGhlIHBhZ2UgYmVpbmcgbmF2aWdh
dGVkIHRvIChyaWdodCBhZnRlciBvbmxvYWQpLgorCisgICAgICAgICogZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQt
c2Nyb2xsLmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50
LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtYWRkZXZlbnRsaXN0ZW5lci5o
dG1sOgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1s
b2FkLWNvbXBsZXRlLWJvZHktYXR0cmlidXRlLmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIv
c3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtYm9keS1pbmxpbmUtYXR0
cmlidXRlLmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRl
LWFmdGVyLWxvYWQtY29tcGxldGUtd2luZG93LWF0dHJpYnV0ZS5odG1sOgorICAgICAgICAqIGZh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLmh0bWw6CisgICAg
ICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS10aGVuLXJlcGxhY2VzdGF0
ZS5odG1sOgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtd2l0
aC1mcmFnbWVudC11cmxzLWFuZC1oYXNoY2hhbmdlLmh0bWw6CisgICAgICAgICogZmFzdC9sb2Fk
ZXIvc3RhdGVvYmplY3RzL3JlcGxhY2VzdGF0ZS1pbi1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVwbGFjZXN0YXRlLXRoZW4tcHVzaHN0YXRlLmh0bWw6
CisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3Jlc291cmNlcy9yZXBsYWNlc3Rh
dGUtaW4taWZyYW1lLXdpbmRvdy1jaGlsZC5odG1sOgorCiAyMDEwLTA4LTI0ICBPamFuIFZhZmFp
ICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVu
dC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay13aXRoLWZyYWdtZW50LXNjcm9sbC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZp
Z2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xsLmh0bWwKaW5kZXggNzc1ZTg2Yzg2ZTM3Yjdm
YzZkNjExZTMwNGViYWYwODc1YmVkOTZmZS4uZGE1MDBhYjg1YjZiMzZkMzVhZmRkZmJkMDk3ZjQ1
MWJlZjQ1ODZjZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmpl
Y3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xs
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50
LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xsLmh0bWwKQEAgLTMy
LDcgKzMyLDcgQEAgZnVuY3Rpb24gcnVuVGhpcmRTdGFnZU9mVGVzdCgpCiAgICAgYWxlcnQoIkZp
bmFsIHN0YWdlIG9mIHRlc3QgbG9hZGVkIik7CiB9CiAKLWZ1bmN0aW9uIGxvYWRlZCgpCitmdW5j
dGlvbiBydW5UZXN0KCkKIHsKICAgICBhbGVydCgiTE9BREVEIik7CiAgICAgaWYgKCFzZXNzaW9u
U3RvcmFnZS5zdGFnZSkKQEAgLTQzLDggKzQzLDIwIEBAIGZ1bmN0aW9uIGxvYWRlZCgpCiAgICAg
ICAgIHJ1blRoaXJkU3RhZ2VPZlRlc3QoKTsKIH0KIAordmFyIGJlZ2FuVGVzdCA9IGZhbHNlOwor
CiBmdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCiB7CisgICAgLy8gVGhlIGZpcnN0IHRpbWUgcG9wc3Rh
dGUgZmlyZXMsIGl0J3MgYmVjYXVzZSB0aGUgcGFnZSBoYXMgZmluaXNoZWQgbG9hZGluZy4KKyAg
ICAvLyBPbmx5IHRoZW4gY2FuIHdlIGJlZ2luIHRoZSB0ZXN0LgorICAgIGlmICghYmVnYW5UZXN0
KSB7CisgICAgICAgIGJlZ2FuVGVzdCA9IHRydWU7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICAg
ICAgLy8gQ29udGludWUgd2l0aCB0aGUgaGFuZGxlciBpZiB3ZSd2ZSBhbHJlYWR5IGJlZ2FuIHRo
ZSB0ZXN0LgorICAgICAgICBpZiAoIXNlc3Npb25TdG9yYWdlLnN0YWdlKQorICAgICAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKICAgICBhbGVydCgiU3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50
LnN0YXRlICsgIiAodHlwZSAiICsgdHlwZW9mIGV2ZW50LnN0YXRlICsgIikiKTsKIAogICAgIC8v
IEZJWE1FOiBPbmNlIHRoZSBwb3BzdGF0ZSBhbmQgaGFzaGNoYW5nZSBldmVudHMgZmlyZSBhc3lu
Y2hyb25vdXNseSwgd2UKQEAgLTc5LDcgKzkxLDcgQEAgZnVuY3Rpb24gaGFzaENoYW5nZWQoKQog
fQogCiA8L3NjcmlwdD4KLTxib2R5IG9ubG9hZD0ibG9hZGVkKCk7IiBvbnBvcHN0YXRlPSJzdGF0
ZVBvcHBlZCgpOyIgb25oYXNoY2hhbmdlPSJoYXNoQ2hhbmdlZCgpOyIgb251bmxvYWQ9Ii8qIGRp
c2FibGUgcGFnZSBjYWNoZSAqLyI+Cis8Ym9keSBvbnBvcHN0YXRlPSJzdGF0ZVBvcHBlZCgpOyIg
b25oYXNoY2hhbmdlPSJoYXNoQ2hhbmdlZCgpOyIgb251bmxvYWQ9Ii8qIGRpc2FibGUgcGFnZSBj
YWNoZSAqLyI+CiA8cHJlPgogVGhpcyB0ZXN0OgogLUJ1aWxkcyB1cCBhIGxpc3Qgb2Ygc3RhdGUg
b2JqZWN0IGVudHJpZXMgd2l0aCBmcmFnbWVudCBVUkxzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1i
YWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQt
ZGVzdHJveWVkLW5hdmlnYXRlLWJhY2suaHRtbAppbmRleCBlZGJiMWMyODYxNTM4MjU4MGE2OWVk
ZmIxM2RlN2UwZjc0YmNjZGVmLi45ODJmZTgxYWNiYmIzNDY0N2ZiOGVmZDYyZmUwODVlYTc5ZGVh
Y2I4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9j
dW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2suaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2suaHRt
bApAQCAtMzEsNyArMzEsNyBAQCBmdW5jdGlvbiBydW5UaGlyZFN0YWdlT2ZUZXN0KCkKICAgICBh
bGVydCgiRmluYWwgc3RhZ2Ugb2YgdGVzdCBsb2FkZWQiKTsKIH0KIAotZnVuY3Rpb24gbG9hZGVk
KCkKK2Z1bmN0aW9uIHJ1blRlc3QoKQogewogICAgIGlmICghc2Vzc2lvblN0b3JhZ2Uuc3RhZ2Up
IHsKICAgICAgICAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRo
ZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCkBAIC00Miw4ICs0
MiwyMCBAQCBmdW5jdGlvbiBsb2FkZWQoKQogICAgICAgICBydW5UaGlyZFN0YWdlT2ZUZXN0KCk7
CiB9CiAKK3ZhciBiZWdhblRlc3QgPSBmYWxzZTsKKwogZnVuY3Rpb24gc3RhdGVQb3BwZWQoKQog
eworICAgIC8vIFRoZSBmaXJzdCB0aW1lIHBvcHN0YXRlIGZpcmVzLCBpdCdzIGJlY2F1c2UgdGhl
IHBhZ2UgaGFzIGZpbmlzaGVkIGxvYWRpbmcuCisgICAgLy8gT25seSB0aGVuIGNhbiB3ZSBiZWdp
biB0aGUgdGVzdC4KKyAgICBpZiAoIWJlZ2FuVGVzdCkgeworICAgICAgICBiZWdhblRlc3QgPSB0
cnVlOworICAgICAgICBydW5UZXN0KCk7CisgICAgICAgIC8vIENvbnRpbnVlIHdpdGggdGhlIGhh
bmRsZXIgaWYgd2UndmUgYWxyZWFkeSBiZWdhbiB0aGUgdGVzdC4KKyAgICAgICAgaWYgKCFzZXNz
aW9uU3RvcmFnZS5zdGFnZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCiAgICAg
YWxlcnQoIlN0YXRlIHBvcHBlZCAtICIgKyBldmVudC5zdGF0ZSArICIgKHR5cGUgIiArIHR5cGVv
ZiBldmVudC5zdGF0ZSArICIpIik7CiAgICAgaWYgKGV2ZW50LnN0YXRlID09ICJGaXJzdEVudHJ5
IikgewogICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZSgiRmlyc3RFbnRyeVdpbGxMYXRlckJl
UmVhY3RpdmF0ZWQiLCBudWxsLCAiP0ZpcnN0RW50cnlXaWxsTGF0ZXJCZVJlYWN0aXZhdGVkIik7
CkBAIC02Miw3ICs3NCw3IEBAIGZ1bmN0aW9uIHN0YXRlUG9wcGVkKCkKIH0KIAogPC9zY3JpcHQ+
Ci08Ym9keSBvbmxvYWQ9ImxvYWRlZCgpOyIgb25wb3BzdGF0ZT0ic3RhdGVQb3BwZWQoKTsiIG9u
dW5sb2FkPSIvKiBkaXNhYmxlIHBhZ2UgY2FjaGUgKi8iPgorPGJvZHkgb25wb3BzdGF0ZT0ic3Rh
dGVQb3BwZWQoKTsiIG9udW5sb2FkPSIvKiBkaXNhYmxlIHBhZ2UgY2FjaGUgKi8iPgogPHByZT4K
IFRoaXMgdGVzdDoKIC1CdWlsZHMgdXAgYSBsaXN0IG9mIHN0YXRlIG9iamVjdCBlbnRyaWVzIHdp
dGggZnJhZ21lbnQgVVJMcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0
YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLWFkZGV2ZW50bGlzdGVuZXIu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRl
ci1sb2FkLWNvbXBsZXRlLWFkZGV2ZW50bGlzdGVuZXIuaHRtbAppbmRleCA3NWI5NjlmMmM1NjJj
MjViMjFkNWYyOTc4MzdlZTJmMjIyOGZhNmY3Li4wMmUzNDRjNmQ0Nzk4YTg3Y2Y4MTJkZjhhODg5
MDUxMmJhZjdjNDE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9i
amVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS1hZGRldmVudGxpc3RlbmVyLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVy
LWxvYWQtY29tcGxldGUtYWRkZXZlbnRsaXN0ZW5lci5odG1sCkBAIC0yMCw4ICsyMCwxOCBAQCBm
dW5jdGlvbiBydW5UZXN0KCkKICAgICBoaXN0b3J5LmJhY2soKTsKIH0KIAordmFyIGJlZ2FuVGVz
dCA9IGZhbHNlOworCiBmdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCiB7CisgICAgLy8gVGhlIGZpcnN0
IHRpbWUgcG9wc3RhdGUgZmlyZXMsIGl0J3MgYmVjYXVzZSB0aGUgcGFnZSBoYXMgZmluaXNoZWQg
bG9hZGluZy4KKyAgICAvLyBPbmx5IHRoZW4gY2FuIHdlIGJlZ2luIHRoZSB0ZXN0LgorICAgIGlm
ICghYmVnYW5UZXN0KSB7CisgICAgICAgIGJlZ2FuVGVzdCA9IHRydWU7CisgICAgICAgIHJ1blRl
c3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBsb2coIlN0YXRlIHBvcHBl
ZCAtICIgKyBldmVudC5zdGF0ZSArICIgKHR5cGUgIiArIHR5cGVvZiBldmVudC5zdGF0ZSArICIp
Iik7CiAgICAgaWYgKGV2ZW50LnN0YXRlID09IG51bGwpCiAgICAgICAgIGhpc3RvcnkuZm9yd2Fy
ZCgpOwpAQCAtMzIsNyArNDIsNyBAQCBmdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCiB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLCBzdGF0ZVBvcHBlZCk7CiAKIDwvc2NyaXB0PgotPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKzxib2R5PgogPHByZT4KIFRoaXMgdGVzdCBkb2VzIHRo
ZSBmb2xsb3dpbmc6CiAtTGlzdGVucyBmb3IgdGhlIHBvcHN0YXRlIGV2ZW50IHVzaW5nIGFkZEV2
ZW50TGlzdGVuZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2Jq
ZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLWJvZHktYXR0cmlidXRlLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1j
b21wbGV0ZS1ib2R5LWF0dHJpYnV0ZS5odG1sCmluZGV4IDk1MDU3MzZiMzcwODdmZjc2NmY5Yzky
NTQyNWI0ZDE0NjYxMzdmN2QuLmNjMTdjMGM1MzMyNzJjYjI4NDU4NDE4ZWQ2YjQ1Y2NjMjgyZjY3
YWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3Bz
dGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLWJvZHktYXR0cmlidXRlLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxl
dGUtYm9keS1hdHRyaWJ1dGUuaHRtbApAQCAtMjAsOCArMjAsMTggQEAgZnVuY3Rpb24gcnVuVGVz
dCgpCiAgICAgaGlzdG9yeS5iYWNrKCk7CiB9CiAKK3ZhciBiZWdhblRlc3QgPSBmYWxzZTsKKwog
ZnVuY3Rpb24gc3RhdGVQb3BwZWQoKQogeworICAgIC8vIFRoZSBmaXJzdCB0aW1lIHBvcHN0YXRl
IGZpcmVzLCBpdCdzIGJlY2F1c2UgdGhlIHBhZ2UgaGFzIGZpbmlzaGVkIGxvYWRpbmcuCisgICAg
Ly8gT25seSB0aGVuIGNhbiB3ZSBiZWdpbiB0aGUgdGVzdC4KKyAgICBpZiAoIWJlZ2FuVGVzdCkg
eworICAgICAgICBiZWdhblRlc3QgPSB0cnVlOworICAgICAgICBydW5UZXN0KCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCiAgICAgbG9nKCJTdGF0ZSBwb3BwZWQgLSAiICsgZXZlbnQu
c3RhdGUgKyAiICh0eXBlICIgKyB0eXBlb2YgZXZlbnQuc3RhdGUgKyAiKSIpOwogICAgIGlmIChl
dmVudC5zdGF0ZSA9PSBudWxsKSB7CiAgICAgICAgIGRvY3VtZW50LmJvZHkub25wb3BzdGF0ZSA9
IHN0YXRlUG9wcGVkOwpAQCAtMzEsNyArNDEsNyBAQCBmdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCiB9
CiAKIDwvc2NyaXB0PgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKzxib2R5PgogPHByZT4K
IFRoaXMgdGVzdCBkb2VzIHRoZSBmb2xsb3dpbmc6CiAtVXNlcyBib2R5Lm9ucG9wc3RhdGUgdG8g
YWRkIGEgcG9wc3RhdGUgaGFuZGxlciAoYm90aCBieSB1c2luZyB0aGUgaW5saW5lIGF0dHJpYnV0
ZSBhbmQgYSBzY3JpcHQtYXNzaWduZWQgYXR0cmlidXRlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUt
Ym9keS1pbmxpbmUtYXR0cmlidXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0
ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS1ib2R5LWlubGluZS1hdHRyaWJ1
dGUuaHRtbAppbmRleCAyNmZjYTFjNmUyY2ZlZjQ1NzYwOWNjNDcwNTc3OTE5MzI0NjljMTcyLi4w
NWRhMzYzZjI0YTQ5NTYwNGRlZjhkMzAwMzU2YzI4Nzc2NDRmZjhkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21w
bGV0ZS1ib2R5LWlubGluZS1hdHRyaWJ1dGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS1ib2R5LWlubGlu
ZS1hdHRyaWJ1dGUuaHRtbApAQCAtMjAsOCArMjAsMTggQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAg
ICAgaGlzdG9yeS5iYWNrKCk7CiB9CiAKK3ZhciBiZWdhblRlc3QgPSBmYWxzZTsKKwogZnVuY3Rp
b24gc3RhdGVQb3BwZWQoKQogeworICAgIC8vIFRoZSBmaXJzdCB0aW1lIHBvcHN0YXRlIGZpcmVz
LCBpdCdzIGJlY2F1c2UgdGhlIHBhZ2UgaGFzIGZpbmlzaGVkIGxvYWRpbmcuCisgICAgLy8gT25s
eSB0aGVuIGNhbiB3ZSBiZWdpbiB0aGUgdGVzdC4KKyAgICBpZiAoIWJlZ2FuVGVzdCkgeworICAg
ICAgICBiZWdhblRlc3QgPSB0cnVlOworICAgICAgICBydW5UZXN0KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCiAgICAgbG9nKCJTdGF0ZSBwb3BwZWQgLSAiICsgZXZlbnQuc3RhdGUg
KyAiICh0eXBlICIgKyB0eXBlb2YgZXZlbnQuc3RhdGUgKyAiKSIpOwogICAgIGlmIChldmVudC5z
dGF0ZSA9PSBudWxsKSB7CiAgICAgICAgIGRvY3VtZW50LmJvZHkub25wb3BzdGF0ZSA9IHN0YXRl
UG9wcGVkOwpAQCAtMzEsNyArNDEsNyBAQCBmdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCiB9CiAKIDwv
c2NyaXB0PgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7IiBvbnBvcHN0YXRlPSJzdGF0ZVBvcHBl
ZCgpOyI+Cis8Ym9keSBvbnBvcHN0YXRlPSJzdGF0ZVBvcHBlZCgpOyI+CiA8cHJlPgogVGhpcyB0
ZXN0IGRvZXMgdGhlIGZvbGxvd2luZzoKIC1Vc2VzIGJvZHkub25wb3BzdGF0ZSB0byBhZGQgYSBw
b3BzdGF0ZSBoYW5kbGVyIChib3RoIGJ5IHVzaW5nIHRoZSBpbmxpbmUgYXR0cmlidXRlIGFuZCBh
IHNjcmlwdC1hc3NpZ25lZCBhdHRyaWJ1dGUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS13aW5kb3ct
YXR0cmlidXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9w
c3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS13aW5kb3ctYXR0cmlidXRlLmh0bWwKaW5kZXggNjI1
NjlhNWFiNWZkN2VlMGQzOGJlM2E2YzcwN2E0OThiNmY2MmYxMy4uNDk1Mzk2OGVkOTgwMjZiNWY0
MGM5YzY4OTAyMDJjYTQ0OTgyYTE3NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtd2luZG93LWF0dHJp
YnV0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3Bz
dGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLXdpbmRvdy1hdHRyaWJ1dGUuaHRtbApAQCAtMjAsOCAr
MjAsMTggQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgaGlzdG9yeS5iYWNrKCk7CiB9CiAKK3Zh
ciBiZWdhblRlc3QgPSBmYWxzZTsKKwogZnVuY3Rpb24gc3RhdGVQb3BwZWQoKQogeworICAgIC8v
IFRoZSBmaXJzdCB0aW1lIHBvcHN0YXRlIGZpcmVzLCBpdCdzIGJlY2F1c2UgdGhlIHBhZ2UgaGFz
IGZpbmlzaGVkIGxvYWRpbmcuCisgICAgLy8gT25seSB0aGVuIGNhbiB3ZSBiZWdpbiB0aGUgdGVz
dC4KKyAgICBpZiAoIWJlZ2FuVGVzdCkgeworICAgICAgICBiZWdhblRlc3QgPSB0cnVlOworICAg
ICAgICBydW5UZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBsb2coIlN0YXRl
IHBvcHBlZCAtICIgKyBldmVudC5zdGF0ZSArICIgKHR5cGUgIiArIHR5cGVvZiBldmVudC5zdGF0
ZSArICIpIik7CiAgICAgaWYgKGV2ZW50LnN0YXRlID09IG51bGwpCiAgICAgICAgIGhpc3Rvcnku
Zm9yd2FyZCgpOwpAQCAtMzIsNyArNDIsNyBAQCBmdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCiB3aW5k
b3cub25wb3BzdGF0ZSA9IHN0YXRlUG9wcGVkOwogCiA8L3NjcmlwdD4KLTxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpOyI+Cis8Ym9keT4KIDxwcmU+CiBUaGlzIHRlc3QgZG9lcyB0aGUgZm9sbG93aW5n
OgogLVVzZXMgd2luZG93Lm9ucG9wc3RhdGUgdG8gYWRkIGEgcG9wc3RhdGUgaGFuZGxlcgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1v
YmplY3QtdHlwZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9w
dXNoc3RhdGUtb2JqZWN0LXR5cGVzLmh0bWwKaW5kZXggMzk5MmM0ZDQ4MWM0ZThkMjhhNmY3M2I2
YWE0ZWZkMDBlNjdkMThjNC4uMDk4OTExNDNiYmJiNDJkNDI3Mzg1ZTViNDQ3MjBiYWU2MDVkOTk5
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hz
dGF0ZS1vYmplY3QtdHlwZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0
ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy5odG1sCkBAIC0xMCwxMSArMTAsMTIgQEAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogCiBmdW5jdGlvbiBsb2codHh0KQog
ewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dnZXIiKS5pbm5lclRleHQgKz0gdHh0
ICsgIlxuIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodHh0ICsgIlxuIikpOwogfQotICAgIAorCiBmdW5j
dGlvbiBydW5UZXN0KCkKIHsKKyAgICBiZWdhblRlc3QgPSB0cnVlOwogICAgIGhpc3RvcnkucmVw
bGFjZVN0YXRlKCJGaXJzdEVudHJ5IiwgIkluaXRpYWwgZW50cnkiKTsKICAgICBoaXN0b3J5LnB1
c2hTdGF0ZSh1bmRlZmluZWQsICJ1bmRlZmluZWQgZW50cnkiKTsKICAgICBoaXN0b3J5LnB1c2hT
dGF0ZShudWxsLCAibnVsbCBlbnRyeSIpOwpAQCAtMzksMTAgKzQwLDIwIEBAIGhpc3RvcnkucHVz
aFN0YXRlKFtGaWxlTGlzdF0sICJGaWxlTGlzdCBlbnRyeSIpOwogICAgIGhpc3RvcnkuYmFjaygp
OwogfQogCi1mdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCit2YXIgYmVnYW5UZXN0ID0gZmFsc2U7CisK
K29ucG9wc3RhdGUgPSBmdW5jdGlvbihldmVudCkKIHsKKyAgICAvLyBUaGUgZmlyc3QgdGltZSBw
b3BzdGF0ZSBmaXJlcywgaXQncyBiZWNhdXNlIHRoZSBwYWdlIGhhcyBmaW5pc2hlZCBsb2FkaW5n
LgorICAgIC8vIE9ubHkgdGhlbiBjYW4gd2UgYmVnaW4gdGhlIHRlc3QuCisgICAgaWYgKCFiZWdh
blRlc3QpIHsKKyAgICAgICAgYmVnYW5UZXN0ID0gdHJ1ZTsKKyAgICAgICAgcnVuVGVzdCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIGlmIChldmVudC5zdGF0ZSBpbnN0YW5j
ZW9mIERhdGUpCi0gICAgICAgIGxvZygiU3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlICog
MSArICIgKHR5cGUgIiArIHR5cGVvZiBldmVudC5zdGF0ZSArICIpIik7CisgICAgICAgIGxvZygi
U3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlLmdldFRpbWUoKSAgKyAiICh0eXBlICIgKyB0
eXBlb2YgZXZlbnQuc3RhdGUgKyAiKSIpOwogICAgIGVsc2UKICAgICAgICAgbG9nKCJTdGF0ZSBw
b3BwZWQgLSAiICsgZXZlbnQuc3RhdGUgKyAiICh0eXBlICIgKyB0eXBlb2YgZXZlbnQuc3RhdGUg
KyAiKSIpOwogCkBAIC01NCwxMCArNjUsMTAgQEAgZnVuY3Rpb24gc3RhdGVQb3BwZWQoKQogfQog
CiA8L3NjcmlwdD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyIgb25wb3BzdGF0ZT0ic3RhdGVQ
b3BwZWQoKTsiPgotPHByZSBpZD0ic29tZWVsZW1lbnQiPgorPGJvZHk+Cis8cD4KIFRoaXMgdGVz
dCBjYWxscyBwdXNoU3RhdGUgd2l0aCBzdGF0ZSBvYmplY3RzIG9mIGFsbCB0aGUgZGlmZmVyZW50
IG9iamVjdCB0eXBlcyBzdXBwb3J0ZWQgYnkgdGhlIEhUTUw1ICJpbnRlcm5hbCBzdHJ1Y3R1cmVk
IGNsb25pbmcgYWxnb3JpdGhtIiBhbmQgbWFrZXMgc3VyZSB0aGUgZXZlbnRzIGNvbnRhaW4gdGhl
IGV4cGVjdGVkIG9iamVjdHMgd2hlbiB0aGUgc3RhdGVzIGFyZSBwb3BwZWQuCi08L3ByZT48YnI+
Cis8L3A+CiA8cHJlIGlkPSJsb2dnZXIiPjwvcHJlPgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS10aGVu
LXJlcGxhY2VzdGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L3B1c2hzdGF0ZS10aGVuLXJlcGxhY2VzdGF0ZS5odG1sCmluZGV4IDk3NjAxM2UxN2RkMzIwYTE1
NWU4ZGYzOTUzYzVjYzFkNTRiMTE0NmYuLmRlNmYwOTM5NWJhODA1Y2U1NTY5NjdjMWI5MWE2MjIy
MWNkNGEwOTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0
cy9wdXNoc3RhdGUtdGhlbi1yZXBsYWNlc3RhdGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLXRoZW4tcmVwbGFjZXN0YXRlLmh0bWwKQEAg
LTIyLDggKzIyLDE4IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgIGhpc3RvcnkuYmFjaygpOwog
fQogCi1mdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCit2YXIgYmVnYW5UZXN0ID0gZmFsc2U7CisKK29u
cG9wc3RhdGUgPSBmdW5jdGlvbihldmVudCkKIHsKKyAgICAvLyBUaGUgZmlyc3QgdGltZSBwb3Bz
dGF0ZSBmaXJlcywgaXQncyBiZWNhdXNlIHRoZSBwYWdlIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgor
ICAgIC8vIE9ubHkgdGhlbiBjYW4gd2UgYmVnaW4gdGhlIHRlc3QuCisgICAgaWYgKCFiZWdhblRl
c3QpIHsKKyAgICAgICAgYmVnYW5UZXN0ID0gdHJ1ZTsKKyAgICAgICAgcnVuVGVzdCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgbG9nKCJTdGF0ZSBwb3BwZWQgLSAiICsgZXZlbnQu
c3RhdGUgKyAiICh0eXBlICIgKyB0eXBlb2YgZXZlbnQuc3RhdGUgKyAiKSIpOwogICAgIGlmIChl
dmVudC5zdGF0ZSA9PSBudWxsKQogICAgICAgICBoaXN0b3J5LmZvcndhcmQoKTsKQEAgLTMyLDcg
KzQyLDcgQEAgZnVuY3Rpb24gc3RhdGVQb3BwZWQoKQogfQogCiA8L3NjcmlwdD4KLTxib2R5IG9u
bG9hZD0icnVuVGVzdCgpOyIgb25wb3BzdGF0ZT0ic3RhdGVQb3BwZWQoKTsiPgorPGJvZHk+CiA8
cHJlPgogVGhpcyB0ZXN0IGRvZXMgdGhlIGZvbGxvd2luZzoKIC1NYWtlcyBhIGNhbGwgdG8gcHVz
aFN0YXRlKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0
cy9wdXNoc3RhdGUtd2l0aC1mcmFnbWVudC11cmxzLWFuZC1oYXNoY2hhbmdlLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLXdpdGgtZnJhZ21lbnQt
dXJscy1hbmQtaGFzaGNoYW5nZS5odG1sCmluZGV4IGU3MDE2MDE0NzY3OTJlYjk4ZDRhYzllZDZk
NDQ2MDZjYjQxZjRkMDAuLmE5MmQ3Y2M3NTEzOWRkYTQwOTVkYWEyZmI1ZmMwYTIzM2U3MTc1ZjYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3Rh
dGUtd2l0aC1mcmFnbWVudC11cmxzLWFuZC1oYXNoY2hhbmdlLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS13aXRoLWZyYWdtZW50LXVybHMt
YW5kLWhhc2hjaGFuZ2UuaHRtbApAQCAtNDQsOCArNDQsMTggQEAgZnVuY3Rpb24gbGFzdFBhdGhD
b21wb25lbnQoKQogICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24uaHJlZi5zcGxpdCgnLycpLnBv
cCgpOwogfQogCi1mdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCit2YXIgYmVnYW5UZXN0ID0gZmFsc2U7
CisKK29ucG9wc3RhdGUgPSBmdW5jdGlvbihldmVudCkKIHsKKyAgICAvLyBUaGUgZmlyc3QgdGlt
ZSBwb3BzdGF0ZSBmaXJlcywgaXQncyBiZWNhdXNlIHRoZSBwYWdlIGhhcyBmaW5pc2hlZCBsb2Fk
aW5nLgorICAgIC8vIE9ubHkgdGhlbiBjYW4gd2UgYmVnaW4gdGhlIHRlc3QuCisgICAgaWYgKCFi
ZWdhblRlc3QpIHsKKyAgICAgICAgYmVnYW5UZXN0ID0gdHJ1ZTsKKyAgICAgICAgcnVuVGVzdCgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbG9nKCJTdGF0ZSBwb3BwZWQgd2l0aCBl
dmVudCAiICsgZXZlbnQuc3RhdGUgKyAiICh0eXBlICIgKyB0eXBlb2YgZXZlbnQuc3RhdGUgKyAi
KSBhbmQgbGFzdCBwYXRoIGNvbXBvbmVudCAiICsgbGFzdFBhdGhDb21wb25lbnQoKSk7CiAgICAg
aWYgKGV2ZW50LnN0YXRlICE9ICJPcmlnaW5hbEVudHJ5IikKICAgICAgICAgc2V0VGltZW91dCgi
aGlzdG9yeS5iYWNrKCk7IiwgMCk7CkBAIC01MywxMyArNjMsMTMgQEAgZnVuY3Rpb24gc3RhdGVQ
b3BwZWQoKQogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CiB9CiAK
LWZ1bmN0aW9uIGhhc2hDaGFuZ2VkKCkKK29uaGFzaGNoYW5nZSA9IGZ1bmN0aW9uKCkKIHsKICAg
ICBsb2coIkhhc2ggY2hhbmdlIGZpcmVkIGFuZCBsYXN0IHBhdGggY29tcG9uZW50IGlzICIgKyBs
YXN0UGF0aENvbXBvbmVudCgpKTsKIH0KIAogPC9zY3JpcHQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKTsiIG9ucG9wc3RhdGU9InN0YXRlUG9wcGVkKCk7IiBvbmhhc2hjaGFuZ2U9Imhhc2hDaGFu
Z2VkKCk7Ij4KKzxib2R5PgogPHByZT4KIFRoaXMgdGVzdCBwdXNoZXMgYSBzZXJpZXMgb2Ygc3Rh
dGUgb2JqZWN0cyB3aXRoIGRpZmZlcmVudCBVUkxzIGFuZCBmcmFnbWVudCBpZGVudGlmaWVycyBt
ZWFudCB0byB0ZXN0IHRoZSBoYXNoQ2hhbmdlIGV2ZW50IGFzIHN0YXRlcyBhcmUgcG9wcGVkLgog
PC9wcmU+PGJyPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmpl
Y3RzL3JlcGxhY2VzdGF0ZS1pbi1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L3N0YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUtaW4taWZyYW1lLmh0bWwKaW5kZXggYjAxYzIxZTRh
MzEzYzg3OTlhMzE1OWRhMDMzZmUyMTJhMTQwMGIxYS4uMDMxYjAyNzVhNTk3OWU3MzVhYWI4ZmU4
Y2Y4OWJjNzAzNWFkMzE0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL3JlcGxhY2VzdGF0ZS1pbi1pZnJhbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVwbGFjZXN0YXRlLWluLWlmcmFtZS5odG1sCkBAIC0z
Myw3ICszMyw2IEBAIGZ1bmN0aW9uIHdpbmRvd0xvYWRlZCgpIHsKIAogb25sb2FkID0gZnVuY3Rp
b24oKSB7CiAgIHRlc3RXaW4gPSBvcGVuKCJyZXNvdXJjZXMvcmVwbGFjZXN0YXRlLWluLWlmcmFt
ZS13aW5kb3cuaHRtbCIpOwotICB0ZXN0V2luLm9ubG9hZCA9IHdpbmRvd0xvYWRlZDsKIH0KIDwv
c2NyaXB0PgogPGJvZHk+UEVORElORzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUtdGhlbi1wdXNoc3RhdGUuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUtdGhlbi1w
dXNoc3RhdGUuaHRtbAppbmRleCA4MjYyNjRhNGU3M2ZmMzdmMmI1ZGIxYjIzOTEzY2ZiOTM1Y2M2
YzkxLi43NmE1ZTFiNDExZjEyNjFjYjYzNTFlZmU2NWQzMjhiNDM4MWVhOTI4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVwbGFjZXN0YXRlLXRoZW4t
cHVzaHN0YXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L3JlcGxhY2VzdGF0ZS10aGVuLXB1c2hzdGF0ZS5odG1sCkBAIC0yMiw4ICsyMiwxOCBAQCBmdW5j
dGlvbiBydW5UZXN0KCkKICAgICBoaXN0b3J5LmJhY2soKTsKIH0KIAotZnVuY3Rpb24gc3RhdGVQ
b3BwZWQoKQordmFyIGJlZ2FuVGVzdCA9IGZhbHNlOworCitvbnBvcHN0YXRlID0gZnVuY3Rpb24o
ZXZlbnQpCiB7CisgICAgLy8gVGhlIGZpcnN0IHRpbWUgcG9wc3RhdGUgZmlyZXMsIGl0J3MgYmVj
YXVzZSB0aGUgcGFnZSBoYXMgZmluaXNoZWQgbG9hZGluZy4KKyAgICAvLyBPbmx5IHRoZW4gY2Fu
IHdlIGJlZ2luIHRoZSB0ZXN0LgorICAgIGlmICghYmVnYW5UZXN0KSB7CisgICAgICAgIGJlZ2Fu
VGVzdCA9IHRydWU7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIGxvZygiU3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlICsgIiAodHlwZSAiICsg
dHlwZW9mIGV2ZW50LnN0YXRlICsgIikiKTsKICAgICBpZiAoZXZlbnQuc3RhdGUgPT0gIk9yaWdp
bmFsSGlzdG9yeUl0ZW0iKQogICAgICAgICBoaXN0b3J5LmZvcndhcmQoKTsKQEAgLTMyLDcgKzQy
LDcgQEAgZnVuY3Rpb24gc3RhdGVQb3BwZWQoKQogfQogCiA8L3NjcmlwdD4KLTxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpOyIgb25wb3BzdGF0ZT0ic3RhdGVQb3BwZWQoKTsiPgorPGJvZHk+CiA8cHJl
PgogVGhpcyB0ZXN0IGRvZXMgdGhlIGZvbGxvd2luZzoKIC1NYWtlcyBhIGNhbGwgdG8gcmVwbGFj
ZVN0YXRlKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0
cy9yZXNvdXJjZXMvcmVwbGFjZXN0YXRlLWluLWlmcmFtZS13aW5kb3ctY2hpbGQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXNvdXJjZXMvcmVwbGFjZXN0YXRl
LWluLWlmcmFtZS13aW5kb3ctY2hpbGQuaHRtbAppbmRleCA4NjNlN2U0YzRjZmE5YjEyNWM4YzVm
Y2E5ZDdiODc2ZTM1Y2VmYTc1Li5jODNmOWM4MjgwNGRjMjg3YjBiM2Q0NzllMmMwN2ZlY2Q4NTk2
ZTUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVz
b3VyY2VzL3JlcGxhY2VzdGF0ZS1pbi1pZnJhbWUtd2luZG93LWNoaWxkLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3Jlc291cmNlcy9yZXBsYWNlc3RhdGUt
aW4taWZyYW1lLXdpbmRvdy1jaGlsZC5odG1sCkBAIC00LDYgKzQsMTIgQEAgb251bmxvYWQgPSBm
dW5jdGlvbigpIHsKIH0KIAogb25wb3BzdGF0ZSA9IGZ1bmN0aW9uKGUpIHsKKyAgaWYgKCFzZXNz
aW9uU3RvcmFnZS5iZWdhblRlc3QpIHsKKyAgICAgIHNlc3Npb25TdG9yYWdlLmJlZ2FuVGVzdCA9
IHRydWU7IAorICAgICAgdG9wLm9wZW5lci53aW5kb3dMb2FkZWQoKTsKKyAgICAgIHJldHVybjsK
KyAgfQorICAKICAgYWxlcnQoIm9ucG9wc3RhdGUiKTsKICAgdG9wLm9wZW5lci5ub3RpZnlEb25l
KHdpbmRvdyA9PSBwYXJlbnQgPyAiRkFJTCIgOiAiUEFTUyIpOwogfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMTJkMzA2OGNiOGFjOTI2
MWY3ZDE3MmRkNmRiYTU1N2QwOGFmN2RhLi42MzRhZmJjYzBkNjMzMWVlZjc3NTQ1MjM2ZjkxMWZm
MzFhNzQzNGJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEwLTA4LTI2ICBNaWhhaSBQYXJwYXJpdGEgIDxt
aWhhaXBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIHBvcHN0YXRlIGV2ZW50IGlzIG5vdCBmaXJlZCB1bnRpbCBkb2N1bWVudCBv
cHRzIGluIGJ5IGNhbGxpbmcgcHVzaHN0YXRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEzNzIKKworICAgICAgICBGaXJlIHBvcHN0YXRlIGV2ZW4g
d2hlbiB3ZSBkb24ndCBoYXZlIGEgc3RhdGUgb2JqZWN0IHdoZW4gYSBwYWdlIGlzIAorICAgICAg
ICBsb2FkZWQgKGZvciBib3RoIHJlZ3VsYXIgbG9hZHMgYW5kIHRob3NlIGZyb20gdGhlIHBhZ2Ug
Y2FjaGUpLiBBbHNvCisgICAgICAgIGZpcmUgcG9wc3RhdGUgd2hlbiBkb2luZyBpbi1kb2N1bWVu
dCBuYXZpZ2F0aW9uIHZpYSBmcmFnbWVudCBjaGFuZ2VzLgorCisgICAgICAgIFRlc3RzOiBwb3Bz
dGF0ZS1maXJlcy13aXRoLXBhZ2UtY2FjaGUuaHRtbCBhbmQKKyAgICAgICAgcG9wc3RhdGUtZmly
ZXMtb24taGlzdG9yeS10cmF2ZXJzYWwuaHRtbCBmcm9tIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0
cworCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjppbXBsaWNpdENsb3NlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KiBoaXN0b3J5L0NhY2hlZEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1l
QmFzZTo6cmVzdG9yZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkSW5TYW1lRG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZCk6CisgICAgICAgICog
bG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlD
b250cm9sbGVyOjpwdXNoU3RhdGUpOgorCiAyMDEwLTA4LTI0ICBBZGFtIEJhcnRoICA8YWJhcnRo
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggOTA5MzlkMzNiYWUzYzEwMGIxOWYxMzNjY2VhYjQxODU1ODQ2NGZmYy4uNzA0OGM0ODRm
NjNhMWVlZDQ2MDQ4NzMwMTgwMTY1NmJiY2RmNDMwZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjAwMyw2ICsy
MDAzLDEwIEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UoKQogICAgIGVucXVldWVQYWdl
c2hvd0V2ZW50KFBhZ2VzaG93RXZlbnROb3RQZXJzaXN0ZWQpOwogICAgIGlmIChtX3BlbmRpbmdT
dGF0ZU9iamVjdCkKICAgICAgICAgZW5xdWV1ZVBvcHN0YXRlRXZlbnQobV9wZW5kaW5nU3RhdGVP
YmplY3QucmVsZWFzZSgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbnVsbFN0YXRlT2JqZWN0ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoKTsKKyAgICAgICAgZW5xdWV1ZVBvcHN0YXRlRXZlbnQobnVsbFN0YXRlT2JqZWN0LmdldCgp
KTsKKyAgICB9CiAgICAgCiAgICAgaWYgKGYpCiAgICAgICAgIGYtPmxvYWRlcigpLT5oYW5kbGVk
T25sb2FkRXZlbnRzKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA5ODQzMDZmOWQzNDEwOWYyMTc3NjAwMmM1YzZkMDNk
NTAxOWIzYWViLi5iMzkwMjI2MDkzMThiZGU4NTQwMzkzNTFhZmIzYTEwNGM1YTkwODUwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKQEAgLTk5NCw2ICs5OTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4pOwogICAgIHZvaWQgZW5xdWV1ZVBhZ2VzaG93RXZlbnQoUGFnZXNob3dF
dmVudFBlcnNpc3RlbmNlKTsKICAgICB2b2lkIGVucXVldWVIYXNoY2hhbmdlRXZlbnQoY29uc3Qg
U3RyaW5nJiBvbGRVUkwsIGNvbnN0IFN0cmluZyYgbmV3VVJMKTsKKyAgICB2b2lkIGVucXVldWVQ
b3BzdGF0ZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVj
dCk7CiAKICAgICB2b2lkIGFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcihNZWRpYUNhblN0YXJ0TGlz
dGVuZXIqKTsKICAgICB2b2lkIHJlbW92ZU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcihNZWRpYUNhblN0
YXJ0TGlzdGVuZXIqKTsKQEAgLTEwNDUsNyArMTA0Niw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGNyZWF0ZVN0eWxlU2VsZWN0b3IoKTsKIAotICAgIHZvaWQgZW5xdWV1ZVBvcHN0YXRlRXZlbnQo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0KTsKICAgICB2b2lk
IHBlbmRpbmdFdmVudFRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+Kik7CiAKICAgICBQYXNzUmVm
UHRyPE5vZGVMaXN0PiBoYW5kbGVaZXJvUGFkZGluZyhjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhp
dFRlc3RSZXN1bHQmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRG
cmFtZS5jcHAgYi9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCmluZGV4IDFmNDg5NWYx
NTRkYWMxNmU0YWJkNDljNDZkNWNmNzQ0NmYxZmE0ODAuLjllOWE1M2E3OTNmNmIyNjAyNzE3N2M1
YWJhYzNjNzUyNDFmY2ViMGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFt
ZS5jcHAKKysrIGIvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlVHJhbnNpdGlvbkV2ZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTA2LDYgKzEwNywxMyBAQCB2b2lkIENhY2hlZEZy
YW1lQmFzZTo6cmVzdG9yZSgpCiAgICAgICAgIG1fY2hpbGRGcmFtZXNbaV0tPm9wZW4oKTsKIAog
ICAgIG1fZG9jdW1lbnQtPmVucXVldWVQYWdlc2hvd0V2ZW50KFBhZ2VzaG93RXZlbnRQZXJzaXN0
ZWQpOworICAgIAorICAgIEhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSA9IGZyYW1lLT5sb2FkZXIo
KS0+aGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpOworICAgIGlmIChoaXN0b3J5SXRlbSAmJiBoaXN0
b3J5SXRlbS0+c3RhdGVPYmplY3QoKSkKKyAgICAgICAgbV9kb2N1bWVudC0+ZW5xdWV1ZVBvcHN0
YXRlRXZlbnQoaGlzdG9yeUl0ZW0tPnN0YXRlT2JqZWN0KCkpOworICAgIGVsc2UKKyAgICAgICAg
bV9kb2N1bWVudC0+ZW5xdWV1ZVBvcHN0YXRlRXZlbnQoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoKSk7CisgICAgCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBpZiAobV9kb2N1
bWVudC0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpUT1VDSF9MSVNURU5FUikpCiAgICAgICAg
IG1fZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5uZWVkVG91Y2hFdmVudHMo
dHJ1ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMjQ4ODhmMjdlOWVhMTkwNjcyZTIwM2Vm
ODU2MzBkNTlhOTM1ZTIwOC4uMzdjY2JkY2JlNWY5MWFlMDJhYzQ0ZWY3MWE4YTM1ZTcxZWZiMjUz
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTE2OSwxMCArMTE2OSwxMyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpsb2FkSW5TYW1lRG9jdW1lbnQoY29uc3QgS1VSTCYgdXJsLCBTZXJpYWxpemVk
U2NyaXB0VmFsdWUqIHN0YQogCiAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkTmF2aWdhdGVXaXRo
aW5QYWdlKCk7CiAKLSAgICBpZiAoc3RhdGVPYmplY3QpIHsKKyAgICBpZiAoc3RhdGVPYmplY3Qp
CiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnN0YXRlUG9wcGVkKHN0YXRlT2JqZWN0KTsK
LSAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCk7CisgICAg
ZWxzZSB7CisgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG51bGxTdGF0ZU9i
amVjdCA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCk7CisgICAgICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPnN0YXRlUG9wcGVkKG51bGxTdGF0ZU9iamVjdC5nZXQoKSk7CiAgICAgfQor
ICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZSgpOwogICAgIAogICAg
IGlmIChoYXNoQ2hhbmdlKSB7CiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmVucXVldWVI
YXNoY2hhbmdlRXZlbnQob2xkVVJMLCB1cmwpOwpAQCAtMTk0OCw3ICsxOTUxLDggQEAgdm9pZCBG
cmFtZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0dGVkKFBhc3NSZWZQdHI8Q2FjaGVkUGFnZT4g
Y2FjaGVkUGFnZSkKIAogICAgICAgICAgICAgICAgICAgICBoaXN0b3J5KCktPnVwZGF0ZUZvckJh
Y2tGb3J3YXJkTmF2aWdhdGlvbigpOwogCi0gICAgICAgICAgICAgICAgICAgIGlmIChoaXN0b3J5
KCktPmN1cnJlbnRJdGVtKCkpCisgICAgICAgICAgICAgICAgICAgIC8vIEZvciBjYWNoZWQgcGFn
ZXMsIENhY2hlZEZyYW1lOjpyZXN0b3JlIHdpbGwgdGFrZSBjYXJlIG9mIGZpcmluZyB0aGUgcG9w
c3RhdGUgZXZlbnQgd2l0aCB0aGUgaGlzdG9yeSBpdGVtJ3Mgc3RhdGUgb2JqZWN0CisgICAgICAg
ICAgICAgICAgICAgIGlmIChoaXN0b3J5KCktPmN1cnJlbnRJdGVtKCkgJiYgIWNhY2hlZFBhZ2Up
CiAgICAgICAgICAgICAgICAgICAgICAgICBtX3BlbmRpbmdTdGF0ZU9iamVjdCA9IGhpc3Rvcnko
KS0+Y3VycmVudEl0ZW0oKS0+c3RhdGVPYmplY3QoKTsKIAogICAgICAgICAgICAgICAgICAgICAv
LyBDcmVhdGUgYSBkb2N1bWVudCB2aWV3IGZvciB0aGlzIGRvY3VtZW50LCBvciB1c2VkIHRoZSBj
YWNoZWQgdmlldy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVy
LmNwcCBiL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCAxNDRmYWE1
YTI4MzA0NDYxYTIyMjQzNjQ5MDQxOTQxMDYwYzcwOTdmLi4zZWFiZjU5ZTc2YTA0YzFmNjdmNWZi
NDIyZDEyYmM1YTY1Mzg0ZDM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29u
dHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBA
IC02NTUsMTIgKzY1NSw2IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnB1c2hTdGF0ZShQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QsCiAgICAgbV9jdXJyZW50
SXRlbS0+c2V0U3RhdGVPYmplY3Qoc3RhdGVPYmplY3QpOwogICAgIG1fY3VycmVudEl0ZW0tPnNl
dFVSTFN0cmluZyh1cmxTdHJpbmcpOwogCi0gICAgLy8gQ3JlYXRlIGEgbnVsbCBzdGF0ZSBvYmpl
Y3QgZm9yIHRoZSBwcmV2aW91cyBIaXN0b3J5SXRlbSBzbyB0aGF0IHdlIHdpbGwKLSAgICAvLyBn
ZW5lcmF0ZSBhIHBvcHN0YXRlIGV2ZW50IHdoZW4gbmF2aWdhdGluZyBiYWNrIHRvIGl0LgotICAg
IC8vIEZJWE1FOiBodHRwOi8vd2Via2l0Lm9yZy9iLzQxMzcyIGltcGxpZXMgdGhhdCB3ZSBzaG91
bGRuJ3QgbmVlZCB0aGlzLgotICAgIGlmICghbV9wcmV2aW91c0l0ZW0tPnN0YXRlT2JqZWN0KCkp
Ci0gICAgICAgIG1fcHJldmlvdXNJdGVtLT5zZXRTdGF0ZU9iamVjdChTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZSgpKTsKLQogICAgIHBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5hZGRJdGVt
KHRvcEl0ZW0ucmVsZWFzZSgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65584</attachid>
            <date>2010-08-26 11:18:14 -0700</date>
            <delta_ts>2010-08-27 16:54:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41372-20100826111813.patch</filename>
            <type>text/plain</type>
            <size>31774</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiZDA1MDg0OWVjNTZlMDA0YjI1ZTk2NDcwYjI1ZGIzMzJiNzQ0MzNkLi4wMTVhZWEx
YzY0NzBmMWI4MWZmYjJmMjIwMWYzMTU0YzFlYmI3MTUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAK
KzIwMTAtMDgtMjYgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcG9wc3RhdGUgZXZl
bnQgaXMgbm90IGZpcmVkIHVudGlsIGRvY3VtZW50IG9wdHMgaW4gYnkgY2FsbGluZyBwdXNoc3Rh
dGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTM3
MgorCisgICAgICAgIEFkZCB0d28gdGVzdHMgdG8gY2hlY2sgaG93IG9mdGVuIHBvcHN0YXRlIGlz
IGJlaW5nIGZpcmVkIChmb3IgYm90aAorICAgICAgICBmcmFnbWVudCBjaGFuZ2VzIGFuZCBwYWdl
IGNoYW5nZXMsIGVzcGVjaWFsbHkgd2l0aCB0aGUgcGFnZSBjYWNoZQorICAgICAgICBlbmFibGVk
KS4KKworICAgICAgICBVcGRhdGUgZXhpc3Rpbmcgc3RhdGUgb2JqZWN0IHRlc3RzIHRvIGhhbmRs
ZSBwb3BzdGF0ZSBiZWluZyBmaXJlZCBmb3IKKyAgICAgICAgdGhlIHBhZ2UgYmVpbmcgbmF2aWdh
dGVkIHRvIChyaWdodCBhZnRlciBvbmxvYWQpLgorCisgICAgICAgICogZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQt
c2Nyb2xsLmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50
LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtYWRkZXZlbnRsaXN0ZW5lci5o
dG1sOgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1s
b2FkLWNvbXBsZXRlLWJvZHktYXR0cmlidXRlLmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIv
c3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtYm9keS1pbmxpbmUtYXR0
cmlidXRlLmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRl
LWFmdGVyLWxvYWQtY29tcGxldGUtd2luZG93LWF0dHJpYnV0ZS5odG1sOgorICAgICAgICAqIGZh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1maXJlcy1vbi1oaXN0b3J5LXRyYXZlcnNh
bC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0
cy9wb3BzdGF0ZS1maXJlcy1vbi1oaXN0b3J5LXRyYXZlcnNhbC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtZmlyZXMtd2l0aC1wYWdlLWNh
Y2hlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmpl
Y3RzL3BvcHN0YXRlLWZpcmVzLXdpdGgtcGFnZS1jYWNoZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy5odG1sOgor
ICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtdGhlbi1yZXBsYWNl
c3RhdGUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRl
LXdpdGgtZnJhZ21lbnQtdXJscy1hbmQtaGFzaGNoYW5nZS5odG1sOgorICAgICAgICAqIGZhc3Qv
bG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUtaW4taWZyYW1lLmh0bWw6CisgICAgICAg
ICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3JlcGxhY2VzdGF0ZS10aGVuLXB1c2hzdGF0ZS5o
dG1sOgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXNvdXJjZXMvcG9wc3Rh
dGUtZmlyZXMtd2l0aC1wYWdlLWNhY2hlLTEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9s
b2FkZXIvc3RhdGVvYmplY3RzL3Jlc291cmNlcy9wb3BzdGF0ZS1maXJlcy13aXRoLXBhZ2UtY2Fj
aGUtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVz
b3VyY2VzL3JlcGxhY2VzdGF0ZS1pbi1pZnJhbWUtd2luZG93LWNoaWxkLmh0bWw6CisKIDIwMTAt
MDgtMjQgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBUb255IENoYW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQt
c2Nyb2xsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1l
bnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2std2l0aC1mcmFnbWVudC1zY3JvbGwuaHRtbAppbmRl
eCA3NzVlODZjODZlMzdiN2ZjNmQ2MTFlMzA0ZWJhZjA4NzViZWQ5NmZlLi5kYTUwMGFiODViNmIz
NmQzNWFmZGRmYmQwOTdmNDUxYmVmNDU4NmNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2std2l0
aC1mcmFnbWVudC1zY3JvbGwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0
ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2std2l0aC1mcmFnbWVudC1z
Y3JvbGwuaHRtbApAQCAtMzIsNyArMzIsNyBAQCBmdW5jdGlvbiBydW5UaGlyZFN0YWdlT2ZUZXN0
KCkKICAgICBhbGVydCgiRmluYWwgc3RhZ2Ugb2YgdGVzdCBsb2FkZWQiKTsKIH0KIAotZnVuY3Rp
b24gbG9hZGVkKCkKK2Z1bmN0aW9uIHJ1blRlc3QoKQogewogICAgIGFsZXJ0KCJMT0FERUQiKTsK
ICAgICBpZiAoIXNlc3Npb25TdG9yYWdlLnN0YWdlKQpAQCAtNDMsOCArNDMsMjAgQEAgZnVuY3Rp
b24gbG9hZGVkKCkKICAgICAgICAgcnVuVGhpcmRTdGFnZU9mVGVzdCgpOwogfQogCit2YXIgYmVn
YW5UZXN0ID0gZmFsc2U7CisKIGZ1bmN0aW9uIHN0YXRlUG9wcGVkKCkKIHsKKyAgICAvLyBUaGUg
Zmlyc3QgdGltZSBwb3BzdGF0ZSBmaXJlcywgaXQncyBiZWNhdXNlIHRoZSBwYWdlIGhhcyBmaW5p
c2hlZCBsb2FkaW5nLgorICAgIC8vIE9ubHkgdGhlbiBjYW4gd2UgYmVnaW4gdGhlIHRlc3QuCisg
ICAgaWYgKCFiZWdhblRlc3QpIHsKKyAgICAgICAgYmVnYW5UZXN0ID0gdHJ1ZTsKKyAgICAgICAg
cnVuVGVzdCgpOworICAgICAgICAvLyBDb250aW51ZSB3aXRoIHRoZSBoYW5kbGVyIGlmIHdlJ3Zl
IGFscmVhZHkgYmVnYW4gdGhlIHRlc3QuCisgICAgICAgIGlmICghc2Vzc2lvblN0b3JhZ2Uuc3Rh
Z2UpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIGFsZXJ0KCJTdGF0ZSBw
b3BwZWQgLSAiICsgZXZlbnQuc3RhdGUgKyAiICh0eXBlICIgKyB0eXBlb2YgZXZlbnQuc3RhdGUg
KyAiKSIpOwogCiAgICAgLy8gRklYTUU6IE9uY2UgdGhlIHBvcHN0YXRlIGFuZCBoYXNoY2hhbmdl
IGV2ZW50cyBmaXJlIGFzeW5jaHJvbm91c2x5LCB3ZQpAQCAtNzksNyArOTEsNyBAQCBmdW5jdGlv
biBoYXNoQ2hhbmdlZCgpCiB9CiAKIDwvc2NyaXB0PgotPGJvZHkgb25sb2FkPSJsb2FkZWQoKTsi
IG9ucG9wc3RhdGU9InN0YXRlUG9wcGVkKCk7IiBvbmhhc2hjaGFuZ2U9Imhhc2hDaGFuZ2VkKCk7
IiBvbnVubG9hZD0iLyogZGlzYWJsZSBwYWdlIGNhY2hlICovIj4KKzxib2R5IG9ucG9wc3RhdGU9
InN0YXRlUG9wcGVkKCk7IiBvbmhhc2hjaGFuZ2U9Imhhc2hDaGFuZ2VkKCk7IiBvbnVubG9hZD0i
LyogZGlzYWJsZSBwYWdlIGNhY2hlICovIj4KIDxwcmU+CiBUaGlzIHRlc3Q6CiAtQnVpbGRzIHVw
IGEgbGlzdCBvZiBzdGF0ZSBvYmplY3QgZW50cmllcyB3aXRoIGZyYWdtZW50IFVSTHMuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVz
dHJveWVkLW5hdmlnYXRlLWJhY2suaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRl
b2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay5odG1sCmluZGV4IGVkYmIx
YzI4NjE1MzgyNTgwYTY5ZWRmYjEzZGU3ZTBmNzRiY2NkZWYuLjk4MmZlODFhY2JiYjM0NjQ3ZmI4
ZWZkNjJmZTA4NWVhNzlkZWFjYjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay5odG1sCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQt
bmF2aWdhdGUtYmFjay5odG1sCkBAIC0zMSw3ICszMSw3IEBAIGZ1bmN0aW9uIHJ1blRoaXJkU3Rh
Z2VPZlRlc3QoKQogICAgIGFsZXJ0KCJGaW5hbCBzdGFnZSBvZiB0ZXN0IGxvYWRlZCIpOwogfQog
Ci1mdW5jdGlvbiBsb2FkZWQoKQorZnVuY3Rpb24gcnVuVGVzdCgpCiB7CiAgICAgaWYgKCFzZXNz
aW9uU3RvcmFnZS5zdGFnZSkgewogICAgICAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8g
aGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50
cmllcy4KQEAgLTQyLDggKzQyLDIwIEBAIGZ1bmN0aW9uIGxvYWRlZCgpCiAgICAgICAgIHJ1blRo
aXJkU3RhZ2VPZlRlc3QoKTsKIH0KIAordmFyIGJlZ2FuVGVzdCA9IGZhbHNlOworCiBmdW5jdGlv
biBzdGF0ZVBvcHBlZCgpCiB7CisgICAgLy8gVGhlIGZpcnN0IHRpbWUgcG9wc3RhdGUgZmlyZXMs
IGl0J3MgYmVjYXVzZSB0aGUgcGFnZSBoYXMgZmluaXNoZWQgbG9hZGluZy4KKyAgICAvLyBPbmx5
IHRoZW4gY2FuIHdlIGJlZ2luIHRoZSB0ZXN0LgorICAgIGlmICghYmVnYW5UZXN0KSB7CisgICAg
ICAgIGJlZ2FuVGVzdCA9IHRydWU7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgLy8gQ29u
dGludWUgd2l0aCB0aGUgaGFuZGxlciBpZiB3ZSd2ZSBhbHJlYWR5IGJlZ2FuIHRoZSB0ZXN0Lgor
ICAgICAgICBpZiAoIXNlc3Npb25TdG9yYWdlLnN0YWdlKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKICAgICBhbGVydCgiU3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlICsg
IiAodHlwZSAiICsgdHlwZW9mIGV2ZW50LnN0YXRlICsgIikiKTsKICAgICBpZiAoZXZlbnQuc3Rh
dGUgPT0gIkZpcnN0RW50cnkiKSB7CiAgICAgICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKCJGaXJz
dEVudHJ5V2lsbExhdGVyQmVSZWFjdGl2YXRlZCIsIG51bGwsICI/Rmlyc3RFbnRyeVdpbGxMYXRl
ckJlUmVhY3RpdmF0ZWQiKTsKQEAgLTYyLDcgKzc0LDcgQEAgZnVuY3Rpb24gc3RhdGVQb3BwZWQo
KQogfQogCiA8L3NjcmlwdD4KLTxib2R5IG9ubG9hZD0ibG9hZGVkKCk7IiBvbnBvcHN0YXRlPSJz
dGF0ZVBvcHBlZCgpOyIgb251bmxvYWQ9Ii8qIGRpc2FibGUgcGFnZSBjYWNoZSAqLyI+Cis8Ym9k
eSBvbnBvcHN0YXRlPSJzdGF0ZVBvcHBlZCgpOyIgb251bmxvYWQ9Ii8qIGRpc2FibGUgcGFnZSBj
YWNoZSAqLyI+CiA8cHJlPgogVGhpcyB0ZXN0OgogLUJ1aWxkcyB1cCBhIGxpc3Qgb2Ygc3RhdGUg
b2JqZWN0IGVudHJpZXMgd2l0aCBmcmFnbWVudCBVUkxzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUt
YWRkZXZlbnRsaXN0ZW5lci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmpl
Y3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtYWRkZXZlbnRsaXN0ZW5lci5odG1sCmlu
ZGV4IDc1Yjk2OWYyYzU2MmMyNWIyMWQ1ZjI5NzgzN2VlMmYyMjI4ZmE2ZjcuLjAyZTM0NGM2ZDQ3
OThhODdjZjgxMmRmOGE4ODkwNTEyYmFmN2M0MTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLWFkZGV2
ZW50bGlzdGVuZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVj
dHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS1hZGRldmVudGxpc3RlbmVyLmh0bWwKQEAg
LTIwLDggKzIwLDE4IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgIGhpc3RvcnkuYmFjaygpOwog
fQogCit2YXIgYmVnYW5UZXN0ID0gZmFsc2U7CisKIGZ1bmN0aW9uIHN0YXRlUG9wcGVkKCkKIHsK
KyAgICAvLyBUaGUgZmlyc3QgdGltZSBwb3BzdGF0ZSBmaXJlcywgaXQncyBiZWNhdXNlIHRoZSBw
YWdlIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgorICAgIC8vIE9ubHkgdGhlbiBjYW4gd2UgYmVnaW4g
dGhlIHRlc3QuCisgICAgaWYgKCFiZWdhblRlc3QpIHsKKyAgICAgICAgYmVnYW5UZXN0ID0gdHJ1
ZTsKKyAgICAgICAgcnVuVGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAg
IGxvZygiU3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlICsgIiAodHlwZSAiICsgdHlwZW9m
IGV2ZW50LnN0YXRlICsgIikiKTsKICAgICBpZiAoZXZlbnQuc3RhdGUgPT0gbnVsbCkKICAgICAg
ICAgaGlzdG9yeS5mb3J3YXJkKCk7CkBAIC0zMiw3ICs0Miw3IEBAIGZ1bmN0aW9uIHN0YXRlUG9w
cGVkKCkKIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsIHN0YXRlUG9wcGVkKTsK
IAogPC9zY3JpcHQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPGJvZHk+CiA8cHJlPgog
VGhpcyB0ZXN0IGRvZXMgdGhlIGZvbGxvd2luZzoKIC1MaXN0ZW5zIGZvciB0aGUgcG9wc3RhdGUg
ZXZlbnQgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtYm9keS1h
dHRyaWJ1dGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3Bz
dGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLWJvZHktYXR0cmlidXRlLmh0bWwKaW5kZXggOTUwNTcz
NmIzNzA4N2ZmNzY2ZjljOTI1NDI1YjRkMTQ2NjEzN2Y3ZC4uY2MxN2MwYzUzMzI3MmNiMjg0NTg0
MThlZDZiNDVjY2MyODJmNjdhZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
c3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtYm9keS1hdHRyaWJ1dGUu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUt
YWZ0ZXItbG9hZC1jb21wbGV0ZS1ib2R5LWF0dHJpYnV0ZS5odG1sCkBAIC0yMCw4ICsyMCwxOCBA
QCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICBoaXN0b3J5LmJhY2soKTsKIH0KIAordmFyIGJlZ2Fu
VGVzdCA9IGZhbHNlOworCiBmdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCiB7CisgICAgLy8gVGhlIGZp
cnN0IHRpbWUgcG9wc3RhdGUgZmlyZXMsIGl0J3MgYmVjYXVzZSB0aGUgcGFnZSBoYXMgZmluaXNo
ZWQgbG9hZGluZy4KKyAgICAvLyBPbmx5IHRoZW4gY2FuIHdlIGJlZ2luIHRoZSB0ZXN0LgorICAg
IGlmICghYmVnYW5UZXN0KSB7CisgICAgICAgIGJlZ2FuVGVzdCA9IHRydWU7CisgICAgICAgIHJ1
blRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBsb2coIlN0YXRlIHBv
cHBlZCAtICIgKyBldmVudC5zdGF0ZSArICIgKHR5cGUgIiArIHR5cGVvZiBldmVudC5zdGF0ZSAr
ICIpIik7CiAgICAgaWYgKGV2ZW50LnN0YXRlID09IG51bGwpIHsKICAgICAgICAgZG9jdW1lbnQu
Ym9keS5vbnBvcHN0YXRlID0gc3RhdGVQb3BwZWQ7CkBAIC0zMSw3ICs0MSw3IEBAIGZ1bmN0aW9u
IHN0YXRlUG9wcGVkKCkKIH0KIAogPC9zY3JpcHQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsi
PgorPGJvZHk+CiA8cHJlPgogVGhpcyB0ZXN0IGRvZXMgdGhlIGZvbGxvd2luZzoKIC1Vc2VzIGJv
ZHkub25wb3BzdGF0ZSB0byBhZGQgYSBwb3BzdGF0ZSBoYW5kbGVyIChib3RoIGJ5IHVzaW5nIHRo
ZSBpbmxpbmUgYXR0cmlidXRlIGFuZCBhIHNjcmlwdC1hc3NpZ25lZCBhdHRyaWJ1dGUpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0
ZXItbG9hZC1jb21wbGV0ZS1ib2R5LWlubGluZS1hdHRyaWJ1dGUuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLWJv
ZHktaW5saW5lLWF0dHJpYnV0ZS5odG1sCmluZGV4IDI2ZmNhMWM2ZTJjZmVmNDU3NjA5Y2M0NzA1
Nzc5MTkzMjQ2OWMxNzIuLjA1ZGEzNjNmMjRhNDk1NjA0ZGVmOGQzMDAzNTZjMjg3NzY0NGZmOGQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0
ZS1hZnRlci1sb2FkLWNvbXBsZXRlLWJvZHktaW5saW5lLWF0dHJpYnV0ZS5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNv
bXBsZXRlLWJvZHktaW5saW5lLWF0dHJpYnV0ZS5odG1sCkBAIC0yMCw4ICsyMCwxOCBAQCBmdW5j
dGlvbiBydW5UZXN0KCkKICAgICBoaXN0b3J5LmJhY2soKTsKIH0KIAordmFyIGJlZ2FuVGVzdCA9
IGZhbHNlOworCiBmdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCiB7CisgICAgLy8gVGhlIGZpcnN0IHRp
bWUgcG9wc3RhdGUgZmlyZXMsIGl0J3MgYmVjYXVzZSB0aGUgcGFnZSBoYXMgZmluaXNoZWQgbG9h
ZGluZy4KKyAgICAvLyBPbmx5IHRoZW4gY2FuIHdlIGJlZ2luIHRoZSB0ZXN0LgorICAgIGlmICgh
YmVnYW5UZXN0KSB7CisgICAgICAgIGJlZ2FuVGVzdCA9IHRydWU7CisgICAgICAgIHJ1blRlc3Qo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBsb2coIlN0YXRlIHBvcHBlZCAt
ICIgKyBldmVudC5zdGF0ZSArICIgKHR5cGUgIiArIHR5cGVvZiBldmVudC5zdGF0ZSArICIpIik7
CiAgICAgaWYgKGV2ZW50LnN0YXRlID09IG51bGwpIHsKICAgICAgICAgZG9jdW1lbnQuYm9keS5v
bnBvcHN0YXRlID0gc3RhdGVQb3BwZWQ7CkBAIC0zMSw3ICs0MSw3IEBAIGZ1bmN0aW9uIHN0YXRl
UG9wcGVkKCkKIH0KIAogPC9zY3JpcHQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiIG9ucG9w
c3RhdGU9InN0YXRlUG9wcGVkKCk7Ij4KKzxib2R5IG9ucG9wc3RhdGU9InN0YXRlUG9wcGVkKCk7
Ij4KIDxwcmU+CiBUaGlzIHRlc3QgZG9lcyB0aGUgZm9sbG93aW5nOgogLVVzZXMgYm9keS5vbnBv
cHN0YXRlIHRvIGFkZCBhIHBvcHN0YXRlIGhhbmRsZXIgKGJvdGggYnkgdXNpbmcgdGhlIGlubGlu
ZSBhdHRyaWJ1dGUgYW5kIGEgc2NyaXB0LWFzc2lnbmVkIGF0dHJpYnV0ZSkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2Fk
LWNvbXBsZXRlLXdpbmRvdy1hdHRyaWJ1dGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLXdpbmRvdy1hdHRyaWJ1
dGUuaHRtbAppbmRleCA2MjU2OWE1YWI1ZmQ3ZWUwZDM4YmUzYTZjNzA3YTQ5OGI2ZjYyZjEzLi40
OTUzOTY4ZWQ5ODAyNmI1ZjQwYzljNjg5MDIwMmNhNDQ5ODJhMTc3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21w
bGV0ZS13aW5kb3ctYXR0cmlidXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
c3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtd2luZG93LWF0dHJpYnV0
ZS5odG1sCkBAIC0yMCw4ICsyMCwxOCBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICBoaXN0b3J5
LmJhY2soKTsKIH0KIAordmFyIGJlZ2FuVGVzdCA9IGZhbHNlOworCiBmdW5jdGlvbiBzdGF0ZVBv
cHBlZCgpCiB7CisgICAgLy8gVGhlIGZpcnN0IHRpbWUgcG9wc3RhdGUgZmlyZXMsIGl0J3MgYmVj
YXVzZSB0aGUgcGFnZSBoYXMgZmluaXNoZWQgbG9hZGluZy4KKyAgICAvLyBPbmx5IHRoZW4gY2Fu
IHdlIGJlZ2luIHRoZSB0ZXN0LgorICAgIGlmICghYmVnYW5UZXN0KSB7CisgICAgICAgIGJlZ2Fu
VGVzdCA9IHRydWU7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIGxvZygiU3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlICsgIiAodHlwZSAiICsg
dHlwZW9mIGV2ZW50LnN0YXRlICsgIikiKTsKICAgICBpZiAoZXZlbnQuc3RhdGUgPT0gbnVsbCkK
ICAgICAgICAgaGlzdG9yeS5mb3J3YXJkKCk7CkBAIC0zMiw3ICs0Miw3IEBAIGZ1bmN0aW9uIHN0
YXRlUG9wcGVkKCkKIHdpbmRvdy5vbnBvcHN0YXRlID0gc3RhdGVQb3BwZWQ7CiAKIDwvc2NyaXB0
PgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKzxib2R5PgogPHByZT4KIFRoaXMgdGVzdCBk
b2VzIHRoZSBmb2xsb3dpbmc6CiAtVXNlcyB3aW5kb3cub25wb3BzdGF0ZSB0byBhZGQgYSBwb3Bz
dGF0ZSBoYW5kbGVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9i
amVjdHMvcG9wc3RhdGUtZmlyZXMtb24taGlzdG9yeS10cmF2ZXJzYWwtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWZpcmVzLW9uLWhp
c3RvcnktdHJhdmVyc2FsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmI1ZTI2NzQ1NzNiODgx
MzhhYmI2ZmJlZWY4MzY5ZWExMzk5YzViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWZpcmVzLW9uLWhpc3RvcnktdHJhdmVy
c2FsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUZXN0cyB0aGF0IHBvcHN0YXRlIGV2
ZW50cyBmaXJlIGZvciBhbGwgaGlzdG9yeSB0cmF2ZXJzYWxzIChpbmNsdWRpbmcgbmF2aWdhdGlv
biB0byBmcmFnbWVudHMpLCBub3QganVzdCB3aGVuIGdvaW5nIGJhY2sgdG8gYSBzdGF0ZSBvYmpl
Y3QgY3JlYXRlZCB2aWEgcHVzaFN0YXRlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
K3BvcHN0YXRlIGZpcmVkIHdpdGggc3RhdGUgbnVsbAorc2V0dGluZyBoYXNoIHRvICNzdGF0ZTEK
K3BvcHN0YXRlIGZpcmVkIHdpdGggc3RhdGUgbnVsbAorc2V0dGluZyBoYXNoIHRvICNzdGF0ZTIK
K3BvcHN0YXRlIGZpcmVkIHdpdGggc3RhdGUgbnVsbAorZ29pbmcgYmFjaworcG9wc3RhdGUgZmly
ZWQgd2l0aCBzdGF0ZSBudWxsCitnb2luZyBiYWNrCitwb3BzdGF0ZSBmaXJlZCB3aXRoIHN0YXRl
IG51bGwKK1BBU1MgcG9wc3RhdGVGaXJlQ291bnQgaXMgNQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1maXJlcy1vbi1oaXN0b3J5LXRyYXZlcnNh
bC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWZp
cmVzLW9uLWhpc3RvcnktdHJhdmVyc2FsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDMwMDMzNGIyZDM2NTFl
ZWQyYTU5NjliNThkNzU0MTg0OGI0YjM5YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1maXJlcy1vbi1oaXN0b3J5LXRyYXZl
cnNhbC5odG1sCkBAIC0wLDAgKzEsNjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9k
eT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdU
ZXN0cyB0aGF0IHBvcHN0YXRlIGV2ZW50cyBmaXJlIGZvciBhbGwgaGlzdG9yeSB0cmF2ZXJzYWxz
IChpbmNsdWRpbmcgbmF2aWdhdGlvbiB0byBmcmFnbWVudHMpLCBub3QganVzdCB3aGVuIGdvaW5n
IGJhY2sgdG8gYSBzdGF0ZSBvYmplY3QgY3JlYXRlZCB2aWEgcHVzaFN0YXRlLicpOworCitvbmxv
YWQgPSBmdW5jdGlvbigpCit7CisgICAgc2V0VGltZW91dChzdGVwLCAwKTsKK30KKwordmFyIGN1
cnJlbnRTdGVwID0gMDsKK3ZhciBwb3BzdGF0ZUZpcmVDb3VudCA9IDA7CisKK2Z1bmN0aW9uIHN0
ZXAoKQoreworICAgIHN3aXRjaCAoY3VycmVudFN0ZXApIHsKKyAgICBjYXNlIDA6CisgICAgICAg
IGRlYnVnKCdzZXR0aW5nIGhhc2ggdG8gI3N0YXRlMScpOworICAgICAgICBsb2NhdGlvbi5oYXNo
ID0gJyNzdGF0ZTEnOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE6CisgICAgICAgIGRlYnVn
KCdzZXR0aW5nIGhhc2ggdG8gI3N0YXRlMicpOworICAgICAgICBsb2NhdGlvbi5oYXNoID0gJyNz
dGF0ZTInOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIGRlYnVnKCdnb2lu
ZyBiYWNrJyk7CisgICAgICAgIGhpc3RvcnkuYmFjaygpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIDM6CisgICAgICAgIGRlYnVnKCdnb2luZyBiYWNrJyk7CisgICAgICAgIGhpc3RvcnkuYmFj
aygpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDQ6CisgICAgICAgIC8vIFRoZSA1IGV4cGVj
dGVkIHBvcHN0YXRlIGV2ZW50cyBhcmUgd2hlbjoKKyAgICAgICAgLy8gMS4gVGhlIHBhZ2UgbG9h
ZHMKKyAgICAgICAgLy8gMi4gTmF2aWdhdGluZyB0byAjc3RhdGUxCisgICAgICAgIC8vIDMuIE5h
dmlnYXRpbmcgdG8gI3N0YXRlMgorICAgICAgICAvLyA0LiBHb2luZyBiYWNrIHRvICNzdGF0ZTEK
KyAgICAgICAgLy8gNS4gR29pbmcgYmFjayB0byB0aGUgaW5pdGlhbCBwYWdlIHN0YXRlCisgICAg
ICAgIHNob3VsZEJlKCdwb3BzdGF0ZUZpcmVDb3VudCcsICc1Jyk7CisgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgdGVzdEZhaWxl
ZCgndW5leHBlY3RlZCBzdGF0ZTogJyArIGN1cnJlbnRTdGVwKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIAorICAgIGN1cnJlbnRTdGVwKys7CisgICAgCisgICAgc2V0VGltZW91dChzdGVw
LCAwKTsKK30KKworb25wb3BzdGF0ZSA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIGRlYnVnKCdw
b3BzdGF0ZSBmaXJlZCB3aXRoIHN0YXRlICcgKyBldmVudC5zdGF0ZSk7CisgICAgcG9wc3RhdGVG
aXJlQ291bnQrKzsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cit2YXIganNU
ZXN0SXNBc3luYyA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9i
amVjdHMvcG9wc3RhdGUtZmlyZXMtd2l0aC1wYWdlLWNhY2hlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1maXJlcy13aXRoLXBhZ2Ut
Y2FjaGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyNDM5MzY4YjcxNmEzN2U4Njc3NTA1OTNi
ZmZkMzUwOTczMTYzNDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtZmlyZXMtd2l0aC1wYWdlLWNhY2hlLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE2IEBACitUZXN0cyB0aGF0IHBvcHN0YXRlIGV2ZW50cyBmaXJlIHdoZW4g
bmF2aWdhdGluZyBiZXR3ZWVuIHBhZ2VzIChhbmQgaGlzdG9yeSBlbnRyaWVzIGNyZWF0ZWQgdmlh
IHB1c2hTdGF0ZSkgdGhhdCBhcmUgaW4gdGhlIHBhZ2UgY2FjaGUuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworcG9wc3RhdGUgZmlyZWQgd2l0aCBzdGF0ZSBudWxsCitwdXNoU3RhdGUg
d2l0aCBuZXcgc3RhdGUgb2JqZWN0IGZvciBwYWdlIDEKK2dvaW5nIHRvIHBhZ2UgMgorcG9wc3Rh
dGUgZmlyZWQgd2l0aCBzdGF0ZSBudWxsCitnb2luZyBiYWNrIHRvIHBhZ2UgMSB3aXRoIG5ldyBz
dGF0ZSBvYmplY3QKK3BvcHN0YXRlIGZpcmVkIHdpdGggc3RhdGUgbmV3U3RhdGUKK2dvaW5nIGJh
Y2sgdG8gcGFnZSAxIGluIGluaXRpYWwgc3RhdGUKK3BvcHN0YXRlIGZpcmVkIHdpdGggc3RhdGUg
bnVsbAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0
ZS1maXJlcy13aXRoLXBhZ2UtY2FjaGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0
YXRlb2JqZWN0cy9wb3BzdGF0ZS1maXJlcy13aXRoLXBhZ2UtY2FjaGUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NDkyY2Y0YzkxMmI3ZmIyOTAxYzIwMDQwMTYwYjkxZDZiYTIzZmMyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWZpcmVz
LXdpdGgtcGFnZS1jYWNoZS5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8Ym9keT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCdUZXN0cyB0aGF0IHBvcHN0YXRlIGV2ZW50cyBmaXJlIHdoZW4gbmF2aWdhdGlu
ZyBiZXR3ZWVuIHBhZ2VzIChhbmQgaGlzdG9yeSBlbnRyaWVzIGNyZWF0ZWQgdmlhIHB1c2hTdGF0
ZSkgdGhhdCBhcmUgaW4gdGhlIHBhZ2UgY2FjaGUuJyk7CisKK3ZhciB0ZXN0V2luZG93OworCitv
bmxvYWQgPSBmdW5jdGlvbigpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOwor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdFVz
ZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5JywgMSk7CisgICAgfQorICAgIHRlc3RXaW5kb3cgPSB3
aW5kb3cub3BlbigncmVzb3VyY2VzL3BvcHN0YXRlLWZpcmVzLXdpdGgtcGFnZS1jYWNoZS0xLmh0
bWwnKTsKKyAgICBpZiAoIXRlc3RXaW5kb3cpCisgICAgICAgIHRlc3RGYWlsZWQoJ0NvdWxkIG5v
dCBvcGVuIHRlc3Qgd2luZG93Jyk7Cit9CisKK3ZhciB0ZXN0V2luZG93UG9wc3RhdGVGaXJlQ291
bnQgPSAwOworCitmdW5jdGlvbiBvblRlc3RXaW5kb3dQb3BTdGF0ZShldmVudCkKK3sKKyAgICBk
ZWJ1ZygncG9wc3RhdGUgZmlyZWQgd2l0aCBzdGF0ZSAnICsgZXZlbnQuc3RhdGUpOworICAgIHRl
c3RXaW5kb3dQb3BzdGF0ZUZpcmVDb3VudCsrOworICAgIAorICAgIHN3aXRjaCAodGVzdFdpbmRv
d1BvcHN0YXRlRmlyZUNvdW50KSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGRlYnVn
KCdwdXNoU3RhdGUgd2l0aCBuZXcgc3RhdGUgb2JqZWN0IGZvciBwYWdlIDEnKTsKKyAgICAgICAg
ICAgIHRlc3RXaW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoJ25ld1N0YXRlJyk7CisgICAgICAgICAg
ICBkZWJ1ZygnZ29pbmcgdG8gcGFnZSAyJyk7CisgICAgICAgICAgICAvLyBTZXQgdGhlIGxvY2F0
aW9uIGluIGEgdGltZW91dCB0byBnZW5lcmF0ZSBhIGhpc3RvcnkgZW50cnkKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7dGVzdFdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJ3Jlc291
cmNlcy9wb3BzdGF0ZS1maXJlcy13aXRoLXBhZ2UtY2FjaGUtMi5odG1sJzt9LCAwKTsgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAorICAgICAgICBjYXNlIDI6Cisg
ICAgICAgICAgICBkZWJ1ZygnZ29pbmcgYmFjayB0byBwYWdlIDEgd2l0aCBuZXcgc3RhdGUgb2Jq
ZWN0Jyk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3Rlc3RXaW5kb3cuaGlz
dG9yeS5iYWNrKCk7fSwgMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzOgor
ICAgICAgICAgICAgZGVidWcoJ2dvaW5nIGJhY2sgdG8gcGFnZSAxIGluIGluaXRpYWwgc3RhdGUn
KTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7dGVzdFdpbmRvdy5oaXN0b3J5
LmJhY2soKTt9LCAwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDQ6CisgICAg
ICAgICAgICB0ZXN0V2luZG93LmNsb3NlKCk7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsg
ICAgICAgIAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCd1bmV4cGVjdGVkIHBvcCBzdGF0ZSBldmVudCBzdGF0ZScpOworICAgICAg
ICAgICAgYnJlYWs7ICAgICAgICAgICAgCisgICAgfQorfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKK3ZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBl
cy5odG1sCmluZGV4IDM5OTJjNGQ0ODFjNGU4ZDI4YTZmNzNiNmFhNGVmZDAwZTY3ZDE4YzQuLjA5
ODkxMTQzYmJiYjQyZDQyNzM4NWU1YjQ0NzIwYmFlNjA1ZDk5OWQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1v
YmplY3QtdHlwZXMuaHRtbApAQCAtMTAsMTEgKzEwLDEyIEBAIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKIAogZnVuY3Rpb24gbG9nKHR4dCkKIHsKLSAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJUZXh0ICs9IHR4dCArICJcbiI7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKHR4dCArICJcbiIpKTsKIH0KLSAgICAKKwogZnVuY3Rpb24gcnVuVGVzdCgpCiB7Cisg
ICAgYmVnYW5UZXN0ID0gdHJ1ZTsKICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZSgiRmlyc3RFbnRy
eSIsICJJbml0aWFsIGVudHJ5Iik7CiAgICAgaGlzdG9yeS5wdXNoU3RhdGUodW5kZWZpbmVkLCAi
dW5kZWZpbmVkIGVudHJ5Iik7CiAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgIm51bGwgZW50
cnkiKTsKQEAgLTM5LDEwICs0MCwyMCBAQCBoaXN0b3J5LnB1c2hTdGF0ZShbRmlsZUxpc3RdLCAi
RmlsZUxpc3QgZW50cnkiKTsKICAgICBoaXN0b3J5LmJhY2soKTsKIH0KIAotZnVuY3Rpb24gc3Rh
dGVQb3BwZWQoKQordmFyIGJlZ2FuVGVzdCA9IGZhbHNlOworCitvbnBvcHN0YXRlID0gZnVuY3Rp
b24oZXZlbnQpCiB7CisgICAgLy8gVGhlIGZpcnN0IHRpbWUgcG9wc3RhdGUgZmlyZXMsIGl0J3Mg
YmVjYXVzZSB0aGUgcGFnZSBoYXMgZmluaXNoZWQgbG9hZGluZy4KKyAgICAvLyBPbmx5IHRoZW4g
Y2FuIHdlIGJlZ2luIHRoZSB0ZXN0LgorICAgIGlmICghYmVnYW5UZXN0KSB7CisgICAgICAgIGJl
Z2FuVGVzdCA9IHRydWU7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKICAgICBpZiAoZXZlbnQuc3RhdGUgaW5zdGFuY2VvZiBEYXRlKQotICAgICAgICBs
b2coIlN0YXRlIHBvcHBlZCAtICIgKyBldmVudC5zdGF0ZSAqIDEgKyAiICh0eXBlICIgKyB0eXBl
b2YgZXZlbnQuc3RhdGUgKyAiKSIpOworICAgICAgICBsb2coIlN0YXRlIHBvcHBlZCAtICIgKyBl
dmVudC5zdGF0ZS5nZXRUaW1lKCkgICsgIiAodHlwZSAiICsgdHlwZW9mIGV2ZW50LnN0YXRlICsg
IikiKTsKICAgICBlbHNlCiAgICAgICAgIGxvZygiU3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0
YXRlICsgIiAodHlwZSAiICsgdHlwZW9mIGV2ZW50LnN0YXRlICsgIikiKTsKIApAQCAtNTQsMTAg
KzY1LDEwIEBAIGZ1bmN0aW9uIHN0YXRlUG9wcGVkKCkKIH0KIAogPC9zY3JpcHQ+Ci08Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKTsiIG9ucG9wc3RhdGU9InN0YXRlUG9wcGVkKCk7Ij4KLTxwcmUgaWQ9
InNvbWVlbGVtZW50Ij4KKzxib2R5PgorPHA+CiBUaGlzIHRlc3QgY2FsbHMgcHVzaFN0YXRlIHdp
dGggc3RhdGUgb2JqZWN0cyBvZiBhbGwgdGhlIGRpZmZlcmVudCBvYmplY3QgdHlwZXMgc3VwcG9y
dGVkIGJ5IHRoZSBIVE1MNSAiaW50ZXJuYWwgc3RydWN0dXJlZCBjbG9uaW5nIGFsZ29yaXRobSIg
YW5kIG1ha2VzIHN1cmUgdGhlIGV2ZW50cyBjb250YWluIHRoZSBleHBlY3RlZCBvYmplY3RzIHdo
ZW4gdGhlIHN0YXRlcyBhcmUgcG9wcGVkLgotPC9wcmU+PGJyPgorPC9wPgogPHByZSBpZD0ibG9n
Z2VyIj48L3ByZT4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtdGhlbi1yZXBsYWNlc3RhdGUuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtdGhlbi1yZXBs
YWNlc3RhdGUuaHRtbAppbmRleCA5NzYwMTNlMTdkZDMyMGExNTVlOGRmMzk1M2M1Y2MxZDU0YjEx
NDZmLi5kZTZmMDkzOTViYTgwNWNlNTU2OTY3YzFiOTFhNjIyMjFjZDRhMDk0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLXRoZW4tcmVw
bGFjZXN0YXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L3B1c2hzdGF0ZS10aGVuLXJlcGxhY2VzdGF0ZS5odG1sCkBAIC0yMiw4ICsyMiwxOCBAQCBmdW5j
dGlvbiBydW5UZXN0KCkKICAgICBoaXN0b3J5LmJhY2soKTsKIH0KIAotZnVuY3Rpb24gc3RhdGVQ
b3BwZWQoKQordmFyIGJlZ2FuVGVzdCA9IGZhbHNlOworCitvbnBvcHN0YXRlID0gZnVuY3Rpb24o
ZXZlbnQpCiB7CisgICAgLy8gVGhlIGZpcnN0IHRpbWUgcG9wc3RhdGUgZmlyZXMsIGl0J3MgYmVj
YXVzZSB0aGUgcGFnZSBoYXMgZmluaXNoZWQgbG9hZGluZy4KKyAgICAvLyBPbmx5IHRoZW4gY2Fu
IHdlIGJlZ2luIHRoZSB0ZXN0LgorICAgIGlmICghYmVnYW5UZXN0KSB7CisgICAgICAgIGJlZ2Fu
VGVzdCA9IHRydWU7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIGxvZygiU3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlICsgIiAodHlwZSAiICsg
dHlwZW9mIGV2ZW50LnN0YXRlICsgIikiKTsKICAgICBpZiAoZXZlbnQuc3RhdGUgPT0gbnVsbCkK
ICAgICAgICAgaGlzdG9yeS5mb3J3YXJkKCk7CkBAIC0zMiw3ICs0Miw3IEBAIGZ1bmN0aW9uIHN0
YXRlUG9wcGVkKCkKIH0KIAogPC9zY3JpcHQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiIG9u
cG9wc3RhdGU9InN0YXRlUG9wcGVkKCk7Ij4KKzxib2R5PgogPHByZT4KIFRoaXMgdGVzdCBkb2Vz
IHRoZSBmb2xsb3dpbmc6CiAtTWFrZXMgYSBjYWxsIHRvIHB1c2hTdGF0ZSgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLXdpdGgtZnJh
Z21lbnQtdXJscy1hbmQtaGFzaGNoYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
c3RhdGVvYmplY3RzL3B1c2hzdGF0ZS13aXRoLWZyYWdtZW50LXVybHMtYW5kLWhhc2hjaGFuZ2Uu
aHRtbAppbmRleCBlNzAxNjAxNDc2NzkyZWI5OGQ0YWM5ZWQ2ZDQ0NjA2Y2I0MWY0ZDAwLi5hOTJk
N2NjNzUxMzlkZGE0MDk1ZGFhMmZiNWZjMGEyMzNlNzE3NWY2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLXdpdGgtZnJhZ21lbnQtdXJs
cy1hbmQtaGFzaGNoYW5nZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRl
b2JqZWN0cy9wdXNoc3RhdGUtd2l0aC1mcmFnbWVudC11cmxzLWFuZC1oYXNoY2hhbmdlLmh0bWwK
QEAgLTQ0LDggKzQ0LDE4IEBAIGZ1bmN0aW9uIGxhc3RQYXRoQ29tcG9uZW50KCkKICAgICByZXR1
cm4gd2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoJy8nKS5wb3AoKTsKIH0KIAotZnVuY3Rpb24g
c3RhdGVQb3BwZWQoKQordmFyIGJlZ2FuVGVzdCA9IGZhbHNlOworCitvbnBvcHN0YXRlID0gZnVu
Y3Rpb24oZXZlbnQpCiB7CisgICAgLy8gVGhlIGZpcnN0IHRpbWUgcG9wc3RhdGUgZmlyZXMsIGl0
J3MgYmVjYXVzZSB0aGUgcGFnZSBoYXMgZmluaXNoZWQgbG9hZGluZy4KKyAgICAvLyBPbmx5IHRo
ZW4gY2FuIHdlIGJlZ2luIHRoZSB0ZXN0LgorICAgIGlmICghYmVnYW5UZXN0KSB7CisgICAgICAg
IGJlZ2FuVGVzdCA9IHRydWU7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIGxvZygiU3RhdGUgcG9wcGVkIHdpdGggZXZlbnQgIiArIGV2ZW50LnN0YXRl
ICsgIiAodHlwZSAiICsgdHlwZW9mIGV2ZW50LnN0YXRlICsgIikgYW5kIGxhc3QgcGF0aCBjb21w
b25lbnQgIiArIGxhc3RQYXRoQ29tcG9uZW50KCkpOwogICAgIGlmIChldmVudC5zdGF0ZSAhPSAi
T3JpZ2luYWxFbnRyeSIpCiAgICAgICAgIHNldFRpbWVvdXQoImhpc3RvcnkuYmFjaygpOyIsIDAp
OwpAQCAtNTMsMTMgKzYzLDEzIEBAIGZ1bmN0aW9uIHN0YXRlUG9wcGVkKCkKICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogfQogCi1mdW5jdGlvbiBoYXNoQ2hhbmdl
ZCgpCitvbmhhc2hjaGFuZ2UgPSBmdW5jdGlvbigpCiB7CiAgICAgbG9nKCJIYXNoIGNoYW5nZSBm
aXJlZCBhbmQgbGFzdCBwYXRoIGNvbXBvbmVudCBpcyAiICsgbGFzdFBhdGhDb21wb25lbnQoKSk7
CiB9CiAKIDwvc2NyaXB0PgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7IiBvbnBvcHN0YXRlPSJz
dGF0ZVBvcHBlZCgpOyIgb25oYXNoY2hhbmdlPSJoYXNoQ2hhbmdlZCgpOyI+Cis8Ym9keT4KIDxw
cmU+CiBUaGlzIHRlc3QgcHVzaGVzIGEgc2VyaWVzIG9mIHN0YXRlIG9iamVjdHMgd2l0aCBkaWZm
ZXJlbnQgVVJMcyBhbmQgZnJhZ21lbnQgaWRlbnRpZmllcnMgbWVhbnQgdG8gdGVzdCB0aGUgaGFz
aENoYW5nZSBldmVudCBhcyBzdGF0ZXMgYXJlIHBvcHBlZC4KIDwvcHJlPjxicj4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUtaW4t
aWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVwbGFj
ZXN0YXRlLWluLWlmcmFtZS5odG1sCmluZGV4IGIwMWMyMWU0YTMxM2M4Nzk5YTMxNTlkYTAzM2Zl
MjEyYTE0MDBiMWEuLjAzMWIwMjc1YTU5NzllNzM1YWFiOGZlOGNmODliYzcwMzVhZDMxNGEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3Rh
dGUtaW4taWZyYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmpl
Y3RzL3JlcGxhY2VzdGF0ZS1pbi1pZnJhbWUuaHRtbApAQCAtMzMsNyArMzMsNiBAQCBmdW5jdGlv
biB3aW5kb3dMb2FkZWQoKSB7CiAKIG9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICB0ZXN0V2luID0g
b3BlbigicmVzb3VyY2VzL3JlcGxhY2VzdGF0ZS1pbi1pZnJhbWUtd2luZG93Lmh0bWwiKTsKLSAg
dGVzdFdpbi5vbmxvYWQgPSB3aW5kb3dMb2FkZWQ7CiB9CiA8L3NjcmlwdD4KIDxib2R5PlBFTkRJ
Tkc8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVj
dHMvcmVwbGFjZXN0YXRlLXRoZW4tcHVzaHN0YXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9zdGF0ZW9iamVjdHMvcmVwbGFjZXN0YXRlLXRoZW4tcHVzaHN0YXRlLmh0bWwKaW5kZXgg
ODI2MjY0YTRlNzNmZjM3ZjJiNWRiMWIyMzkxM2NmYjkzNWNjNmM5MS4uNzZhNWUxYjQxMWYxMjYx
Y2I2MzUxZWZlNjVkMzI4YjQzODFlYTkyOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvc3RhdGVvYmplY3RzL3JlcGxhY2VzdGF0ZS10aGVuLXB1c2hzdGF0ZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUtdGhlbi1w
dXNoc3RhdGUuaHRtbApAQCAtMjIsOCArMjIsMTggQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAg
aGlzdG9yeS5iYWNrKCk7CiB9CiAKLWZ1bmN0aW9uIHN0YXRlUG9wcGVkKCkKK3ZhciBiZWdhblRl
c3QgPSBmYWxzZTsKKworb25wb3BzdGF0ZSA9IGZ1bmN0aW9uKGV2ZW50KQogeworICAgIC8vIFRo
ZSBmaXJzdCB0aW1lIHBvcHN0YXRlIGZpcmVzLCBpdCdzIGJlY2F1c2UgdGhlIHBhZ2UgaGFzIGZp
bmlzaGVkIGxvYWRpbmcuCisgICAgLy8gT25seSB0aGVuIGNhbiB3ZSBiZWdpbiB0aGUgdGVzdC4K
KyAgICBpZiAoIWJlZ2FuVGVzdCkgeworICAgICAgICBiZWdhblRlc3QgPSB0cnVlOworICAgICAg
ICBydW5UZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBsb2coIlN0YXRlIHBv
cHBlZCAtICIgKyBldmVudC5zdGF0ZSArICIgKHR5cGUgIiArIHR5cGVvZiBldmVudC5zdGF0ZSAr
ICIpIik7CiAgICAgaWYgKGV2ZW50LnN0YXRlID09ICJPcmlnaW5hbEhpc3RvcnlJdGVtIikKICAg
ICAgICAgaGlzdG9yeS5mb3J3YXJkKCk7CkBAIC0zMiw3ICs0Miw3IEBAIGZ1bmN0aW9uIHN0YXRl
UG9wcGVkKCkKIH0KIAogPC9zY3JpcHQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiIG9ucG9w
c3RhdGU9InN0YXRlUG9wcGVkKCk7Ij4KKzxib2R5PgogPHByZT4KIFRoaXMgdGVzdCBkb2VzIHRo
ZSBmb2xsb3dpbmc6CiAtTWFrZXMgYSBjYWxsIHRvIHJlcGxhY2VTdGF0ZSgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVzb3VyY2VzL3BvcHN0YXRl
LWZpcmVzLXdpdGgtcGFnZS1jYWNoZS0xLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9z
dGF0ZW9iamVjdHMvcmVzb3VyY2VzL3BvcHN0YXRlLWZpcmVzLXdpdGgtcGFnZS1jYWNoZS0xLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGIxOWViZGJiN2FlNzEyYzI0YWRkMDE5N2QzOTU1MWZjMjVjNzM2NAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9y
ZXNvdXJjZXMvcG9wc3RhdGUtZmlyZXMtd2l0aC1wYWdlLWNhY2hlLTEuaHRtbApAQCAtMCwwICsx
IEBACis8Ym9keSBvbnBvcHN0YXRlPSJvcGVuZXIub25UZXN0V2luZG93UG9wU3RhdGUoZXZlbnQp
Ij5wYWdlIDE8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3Jlc291cmNlcy9wb3BzdGF0ZS1m
aXJlcy13aXRoLXBhZ2UtY2FjaGUtMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL3Jlc291cmNlcy9wb3BzdGF0ZS1maXJlcy13aXRoLXBhZ2UtY2FjaGUtMi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE5Mjk2MTJhZWZlYWZlNGM0OGZlNWFmM2Y4ZjFmMzAyYWY0YTQyMDcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVz
b3VyY2VzL3BvcHN0YXRlLWZpcmVzLXdpdGgtcGFnZS1jYWNoZS0yLmh0bWwKQEAgLTAsMCArMSBA
QAorPGJvZHkgb25wb3BzdGF0ZT0ib3BlbmVyLm9uVGVzdFdpbmRvd1BvcFN0YXRlKGV2ZW50KSI+
cGFnZSAyPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXNvdXJjZXMvcmVwbGFjZXN0YXRl
LWluLWlmcmFtZS13aW5kb3ctY2hpbGQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0
YXRlb2JqZWN0cy9yZXNvdXJjZXMvcmVwbGFjZXN0YXRlLWluLWlmcmFtZS13aW5kb3ctY2hpbGQu
aHRtbAppbmRleCA4NjNlN2U0YzRjZmE5YjEyNWM4YzVmY2E5ZDdiODc2ZTM1Y2VmYTc1Li5jODNm
OWM4MjgwNGRjMjg3YjBiM2Q0NzllMmMwN2ZlY2Q4NTk2ZTUyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVzb3VyY2VzL3JlcGxhY2VzdGF0ZS1pbi1p
ZnJhbWUtd2luZG93LWNoaWxkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL3Jlc291cmNlcy9yZXBsYWNlc3RhdGUtaW4taWZyYW1lLXdpbmRvdy1jaGlsZC5o
dG1sCkBAIC00LDYgKzQsMTIgQEAgb251bmxvYWQgPSBmdW5jdGlvbigpIHsKIH0KIAogb25wb3Bz
dGF0ZSA9IGZ1bmN0aW9uKGUpIHsKKyAgaWYgKCFzZXNzaW9uU3RvcmFnZS5iZWdhblRlc3QpIHsK
KyAgICAgIHNlc3Npb25TdG9yYWdlLmJlZ2FuVGVzdCA9IHRydWU7IAorICAgICAgdG9wLm9wZW5l
ci53aW5kb3dMb2FkZWQoKTsKKyAgICAgIHJldHVybjsKKyAgfQorICAKICAgYWxlcnQoIm9ucG9w
c3RhdGUiKTsKICAgdG9wLm9wZW5lci5ub3RpZnlEb25lKHdpbmRvdyA9PSBwYXJlbnQgPyAiRkFJ
TCIgOiAiUEFTUyIpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBlMTJkMzA2OGNiOGFjOTI2MWY3ZDE3MmRkNmRiYTU1N2QwOGFmN2Rh
Li40Zjg0NGNkMzA2NzNiMDkyNzhjYWFhMzdlNzZhODE5YzAzNWYyZjE0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBA
CisyMDEwLTA4LTI2ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHBvcHN0YXRlIGV2
ZW50IGlzIG5vdCBmaXJlZCB1bnRpbCBkb2N1bWVudCBvcHRzIGluIGJ5IGNhbGxpbmcgcHVzaHN0
YXRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEz
NzIKKworICAgICAgICBGaXJlIHBvcHN0YXRlIGV2ZW4gd2hlbiB3ZSBkb24ndCBoYXZlIGEgc3Rh
dGUgb2JqZWN0IHdoZW4gYSBwYWdlIGlzIAorICAgICAgICBsb2FkZWQgKGZvciBib3RoIHJlZ3Vs
YXIgbG9hZHMgYW5kIHRob3NlIGZyb20gdGhlIHBhZ2UgY2FjaGUpLiBBbHNvCisgICAgICAgIGZp
cmUgcG9wc3RhdGUgd2hlbiBkb2luZyBpbi1kb2N1bWVudCBuYXZpZ2F0aW9uIHZpYSBmcmFnbWVu
dCBjaGFuZ2VzLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9w
c3RhdGUtZmlyZXMtb24taGlzdG9yeS10cmF2ZXJzYWwuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWZpcmVzLXdpdGgtcGFnZS1jYWNoZS5odG1s
CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmltcGxpY2l0Q2xvc2UpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAq
IGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRnJhbWVC
YXNlOjpyZXN0b3JlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0dGVkKToKKyAgICAgICAgKiBs
b2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNv
bnRyb2xsZXI6OnB1c2hTdGF0ZSk6CisKIDIwMTAtMDgtMjQgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCA5MDkzOWQzM2JhZTNjMTAwYjE5ZjEzM2NjZWFiNDE4NTU4NDY0ZmZjLi43MDQ4YzQ4NGY2
M2ExZWVkNDYwNDg3MzAxODAxNjU2YmJjZGY0MzBkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yMDAzLDYgKzIw
MDMsMTAgQEAgdm9pZCBEb2N1bWVudDo6aW1wbGljaXRDbG9zZSgpCiAgICAgZW5xdWV1ZVBhZ2Vz
aG93RXZlbnQoUGFnZXNob3dFdmVudE5vdFBlcnNpc3RlZCk7CiAgICAgaWYgKG1fcGVuZGluZ1N0
YXRlT2JqZWN0KQogICAgICAgICBlbnF1ZXVlUG9wc3RhdGVFdmVudChtX3BlbmRpbmdTdGF0ZU9i
amVjdC5yZWxlYXNlKCkpOworICAgIGVsc2UgeworICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBudWxsU3RhdGVPYmplY3QgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZSgpOworICAgICAgICBlbnF1ZXVlUG9wc3RhdGVFdmVudChudWxsU3RhdGVPYmplY3QuZ2V0KCkp
OworICAgIH0KICAgICAKICAgICBpZiAoZikKICAgICAgICAgZi0+bG9hZGVyKCktPmhhbmRsZWRP
bmxvYWRFdmVudHMoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDk4NDMwNmY5ZDM0MTA5ZjIxNzc2MDAyYzVjNmQwM2Q1
MDE5YjNhZWIuLmIzOTAyMjYwOTMxOGJkZTg1NDAzOTM1MWFmYjNhMTA0YzVhOTA4NTAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aApAQCAtOTk0LDYgKzk5NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVucXVldWVFdmVudChQYXNz
UmVmUHRyPEV2ZW50Pik7CiAgICAgdm9pZCBlbnF1ZXVlUGFnZXNob3dFdmVudChQYWdlc2hvd0V2
ZW50UGVyc2lzdGVuY2UpOwogICAgIHZvaWQgZW5xdWV1ZUhhc2hjaGFuZ2VFdmVudChjb25zdCBT
dHJpbmcmIG9sZFVSTCwgY29uc3QgU3RyaW5nJiBuZXdVUkwpOworICAgIHZvaWQgZW5xdWV1ZVBv
cHN0YXRlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0
KTsKIAogICAgIHZvaWQgYWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKE1lZGlhQ2FuU3RhcnRMaXN0
ZW5lciopOwogICAgIHZvaWQgcmVtb3ZlTWVkaWFDYW5TdGFydExpc3RlbmVyKE1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lciopOwpAQCAtMTA0NSw3ICsxMDQ2LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
Y3JlYXRlU3R5bGVTZWxlY3RvcigpOwogCi0gICAgdm9pZCBlbnF1ZXVlUG9wc3RhdGVFdmVudChQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QpOwogICAgIHZvaWQg
cGVuZGluZ0V2ZW50VGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4qKTsKIAogICAgIFBhc3NSZWZQ
dHI8Tm9kZUxpc3Q+IGhhbmRsZVplcm9QYWRkaW5nKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0
VGVzdFJlc3VsdCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZy
YW1lLmNwcCBiL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKaW5kZXggMWY0ODk1ZjE1
NGRhYzE2ZTRhYmQ0OWM0NmQ1Y2Y3NDQ2ZjFmYTQ4MC4uOWU5YTUzYTc5M2Y2YjI2MDI3MTc3YzVh
YmFjM2M3NTI0MWZjZWIwYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1l
LmNwcAorKysgYi9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2VUcmFuc2l0aW9uRXZlbnQuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0xMDYsNiArMTA3LDEzIEBAIHZvaWQgQ2FjaGVkRnJh
bWVCYXNlOjpyZXN0b3JlKCkKICAgICAgICAgbV9jaGlsZEZyYW1lc1tpXS0+b3BlbigpOwogCiAg
ICAgbV9kb2N1bWVudC0+ZW5xdWV1ZVBhZ2VzaG93RXZlbnQoUGFnZXNob3dFdmVudFBlcnNpc3Rl
ZCk7CisgICAgCisgICAgSGlzdG9yeUl0ZW0qIGhpc3RvcnlJdGVtID0gZnJhbWUtPmxvYWRlcigp
LT5oaXN0b3J5KCktPmN1cnJlbnRJdGVtKCk7CisgICAgaWYgKGhpc3RvcnlJdGVtICYmIGhpc3Rv
cnlJdGVtLT5zdGF0ZU9iamVjdCgpKQorICAgICAgICBtX2RvY3VtZW50LT5lbnF1ZXVlUG9wc3Rh
dGVFdmVudChoaXN0b3J5SXRlbS0+c3RhdGVPYmplY3QoKSk7CisgICAgZWxzZQorICAgICAgICBt
X2RvY3VtZW50LT5lbnF1ZXVlUG9wc3RhdGVFdmVudChTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZSgpKTsKKyAgICAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmIChtX2RvY3Vt
ZW50LT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OlRPVUNIX0xJU1RFTkVSKSkKICAgICAgICAg
bV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPm5lZWRUb3VjaEV2ZW50cyh0
cnVlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAyNDg4OGYyN2U5ZWExOTA2NzJlMjAzZWY4
NTYzMGQ1OWE5MzVlMjA4Li4zN2NjYmRjYmU1ZjkxYWUwMmFjNDRlZjcxYThhMzVlNzFlZmIyNTMw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xMTY5LDEwICsxMTY5LDEzIEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVudChjb25zdCBLVVJMJiB1cmwsIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSogc3RhCiAKICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWROYXZpZ2F0ZVdpdGhp
blBhZ2UoKTsKIAotICAgIGlmIChzdGF0ZU9iamVjdCkgeworICAgIGlmIChzdGF0ZU9iamVjdCkK
ICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c3RhdGVQb3BwZWQoc3RhdGVPYmplY3QpOwot
ICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRQb3BTdGF0ZVdpdGhpblBhZ2UoKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbnVsbFN0YXRlT2Jq
ZWN0ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKTsKKyAgICAgICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+c3RhdGVQb3BwZWQobnVsbFN0YXRlT2JqZWN0LmdldCgpKTsKICAgICB9Cisg
ICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCk7CiAgICAgCiAgICAg
aWYgKGhhc2hDaGFuZ2UpIHsKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZUhh
c2hjaGFuZ2VFdmVudChvbGRVUkwsIHVybCk7CkBAIC0xOTQ4LDcgKzE5NTEsOCBAQCB2b2lkIEZy
YW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9Db21taXR0ZWQoUGFzc1JlZlB0cjxDYWNoZWRQYWdlPiBj
YWNoZWRQYWdlKQogCiAgICAgICAgICAgICAgICAgICAgIGhpc3RvcnkoKS0+dXBkYXRlRm9yQmFj
a0ZvcndhcmROYXZpZ2F0aW9uKCk7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKGhpc3Rvcnko
KS0+Y3VycmVudEl0ZW0oKSkKKyAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGNhY2hlZCBwYWdl
cywgQ2FjaGVkRnJhbWU6OnJlc3RvcmUgd2lsbCB0YWtlIGNhcmUgb2YgZmlyaW5nIHRoZSBwb3Bz
dGF0ZSBldmVudCB3aXRoIHRoZSBoaXN0b3J5IGl0ZW0ncyBzdGF0ZSBvYmplY3QKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGhpc3RvcnkoKS0+Y3VycmVudEl0ZW0oKSAmJiAhY2FjaGVkUGFnZSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGVuZGluZ1N0YXRlT2JqZWN0ID0gaGlzdG9yeSgp
LT5jdXJyZW50SXRlbSgpLT5zdGF0ZU9iamVjdCgpOwogCiAgICAgICAgICAgICAgICAgICAgIC8v
IENyZWF0ZSBhIGRvY3VtZW50IHZpZXcgZm9yIHRoaXMgZG9jdW1lbnQsIG9yIHVzZWQgdGhlIGNh
Y2hlZCB2aWV3LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIu
Y3BwIGIvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IDE0NGZhYTVh
MjgzMDQ0NjFhMjIyNDM2NDkwNDE5NDEwNjBjNzA5N2YuLjNlYWJmNTllNzZhMDRjMWY2N2Y1ZmI0
MjJkMTJiYzVhNjUzODRkMzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250
cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAg
LTY1NSwxMiArNjU1LDYgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cHVzaFN0YXRlKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCwKICAgICBtX2N1cnJlbnRJ
dGVtLT5zZXRTdGF0ZU9iamVjdChzdGF0ZU9iamVjdCk7CiAgICAgbV9jdXJyZW50SXRlbS0+c2V0
VVJMU3RyaW5nKHVybFN0cmluZyk7CiAKLSAgICAvLyBDcmVhdGUgYSBudWxsIHN0YXRlIG9iamVj
dCBmb3IgdGhlIHByZXZpb3VzIEhpc3RvcnlJdGVtIHNvIHRoYXQgd2Ugd2lsbAotICAgIC8vIGdl
bmVyYXRlIGEgcG9wc3RhdGUgZXZlbnQgd2hlbiBuYXZpZ2F0aW5nIGJhY2sgdG8gaXQuCi0gICAg
Ly8gRklYTUU6IGh0dHA6Ly93ZWJraXQub3JnL2IvNDEzNzIgaW1wbGllcyB0aGF0IHdlIHNob3Vs
ZG4ndCBuZWVkIHRoaXMuCi0gICAgaWYgKCFtX3ByZXZpb3VzSXRlbS0+c3RhdGVPYmplY3QoKSkK
LSAgICAgICAgbV9wcmV2aW91c0l0ZW0tPnNldFN0YXRlT2JqZWN0KFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKCkpOwotCiAgICAgcGFnZS0+YmFja0ZvcndhcmRMaXN0KCktPmFkZEl0ZW0o
dG9wSXRlbS5yZWxlYXNlKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65788</attachid>
            <date>2010-08-27 16:54:07 -0700</date>
            <delta_ts>2010-09-01 18:01:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41372-20100827165406.patch</filename>
            <type>text/plain</type>
            <size>35374</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1YjdlMDRmODZmZTVmNzJkNTZjYTlmNTkxM2Y4YTMzZmM0NTgxOGIyLi43Y2E0NWI2
YWYyY2U1NTcyMzM1MDMyYmUzMTRkOTdlNGFiZWQxNmI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAK
KzIwMTAtMDgtMjcgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcG9wc3RhdGUgZXZl
bnQgaXMgbm90IGZpcmVkIHVudGlsIGRvY3VtZW50IG9wdHMgaW4gYnkgY2FsbGluZyBwdXNoc3Rh
dGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTM3
MgorCisgICAgICAgIEFkZCB0d28gdGVzdHMgdG8gY2hlY2sgaG93IG9mdGVuIHBvcHN0YXRlIGlz
IGJlaW5nIGZpcmVkIChmb3IgYm90aAorICAgICAgICBmcmFnbWVudCBjaGFuZ2VzIGFuZCBwYWdl
IGNoYW5nZXMsIGVzcGVjaWFsbHkgd2l0aCB0aGUgcGFnZSBjYWNoZQorICAgICAgICBlbmFibGVk
KS4KKworICAgICAgICBVcGRhdGUgZXhpc3Rpbmcgc3RhdGUgb2JqZWN0IHRlc3RzIHRvIGhhbmRs
ZSBwb3BzdGF0ZSBiZWluZyBmaXJlZCBmb3IKKyAgICAgICAgdGhlIHBhZ2UgYmVpbmcgbmF2aWdh
dGVkIHRvIChyaWdodCBhZnRlciBvbmxvYWQpLgorCisgICAgICAgICogZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQt
c2Nyb2xsLmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50
LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtYWRkZXZlbnRsaXN0ZW5lci5o
dG1sOgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1s
b2FkLWNvbXBsZXRlLWJvZHktYXR0cmlidXRlLmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIv
c3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtYm9keS1pbmxpbmUtYXR0
cmlidXRlLmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRl
LWFmdGVyLWxvYWQtY29tcGxldGUtd2luZG93LWF0dHJpYnV0ZS5odG1sOgorICAgICAgICAqIGZh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1maXJlcy1vbi1oaXN0b3J5LXRyYXZlcnNh
bC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0
cy9wb3BzdGF0ZS1maXJlcy1vbi1oaXN0b3J5LXRyYXZlcnNhbC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtZmlyZXMtd2l0aC1wYWdlLWNh
Y2hlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmpl
Y3RzL3BvcHN0YXRlLWZpcmVzLXdpdGgtcGFnZS1jYWNoZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy5odG1sOgor
ICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtdGhlbi1yZXBsYWNl
c3RhdGUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRl
LXdpdGgtZnJhZ21lbnQtdXJscy1hbmQtaGFzaGNoYW5nZS5odG1sOgorICAgICAgICAqIGZhc3Qv
bG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUtaW4taWZyYW1lLmh0bWw6CisgICAgICAg
ICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3JlcGxhY2VzdGF0ZS10aGVuLXB1c2hzdGF0ZS5o
dG1sOgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXNvdXJjZXMvcG9wc3Rh
dGUtZmlyZXMtd2l0aC1wYWdlLWNhY2hlLTEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9s
b2FkZXIvc3RhdGVvYmplY3RzL3Jlc291cmNlcy9wb3BzdGF0ZS1maXJlcy13aXRoLXBhZ2UtY2Fj
aGUtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVz
b3VyY2VzL3JlcGxhY2VzdGF0ZS1pbi1pZnJhbWUtd2luZG93LWNoaWxkLmh0bWw6CisKIDIwMTAt
MDgtMjcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQg
Zml4IG9ubHksIG5vdCByZXZpZXdlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay13aXRoLWZy
YWdtZW50LXNjcm9sbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xsLmh0
bWwKaW5kZXggNzc1ZTg2Yzg2ZTM3YjdmYzZkNjExZTMwNGViYWYwODc1YmVkOTZmZS4uZGE1MDBh
Yjg1YjZiMzZkMzVhZmRkZmJkMDk3ZjQ1MWJlZjQ1ODZjZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1i
YWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJh
Z21lbnQtc2Nyb2xsLmh0bWwKQEAgLTMyLDcgKzMyLDcgQEAgZnVuY3Rpb24gcnVuVGhpcmRTdGFn
ZU9mVGVzdCgpCiAgICAgYWxlcnQoIkZpbmFsIHN0YWdlIG9mIHRlc3QgbG9hZGVkIik7CiB9CiAK
LWZ1bmN0aW9uIGxvYWRlZCgpCitmdW5jdGlvbiBydW5UZXN0KCkKIHsKICAgICBhbGVydCgiTE9B
REVEIik7CiAgICAgaWYgKCFzZXNzaW9uU3RvcmFnZS5zdGFnZSkKQEAgLTQzLDggKzQzLDIwIEBA
IGZ1bmN0aW9uIGxvYWRlZCgpCiAgICAgICAgIHJ1blRoaXJkU3RhZ2VPZlRlc3QoKTsKIH0KIAor
dmFyIGJlZ2FuVGVzdCA9IGZhbHNlOworCiBmdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCiB7CisgICAg
Ly8gVGhlIGZpcnN0IHRpbWUgcG9wc3RhdGUgZmlyZXMsIGl0J3MgYmVjYXVzZSB0aGUgcGFnZSBo
YXMgZmluaXNoZWQgbG9hZGluZy4KKyAgICAvLyBPbmx5IHRoZW4gY2FuIHdlIGJlZ2luIHRoZSB0
ZXN0LgorICAgIGlmICghYmVnYW5UZXN0KSB7CisgICAgICAgIGJlZ2FuVGVzdCA9IHRydWU7Cisg
ICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgLy8gQ29udGludWUgd2l0aCB0aGUgaGFuZGxlciBp
ZiB3ZSd2ZSBhbHJlYWR5IGJlZ2FuIHRoZSB0ZXN0LgorICAgICAgICBpZiAoIXNlc3Npb25TdG9y
YWdlLnN0YWdlKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBhbGVydCgi
U3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlICsgIiAodHlwZSAiICsgdHlwZW9mIGV2ZW50
LnN0YXRlICsgIikiKTsKIAogICAgIC8vIEZJWE1FOiBPbmNlIHRoZSBwb3BzdGF0ZSBhbmQgaGFz
aGNoYW5nZSBldmVudHMgZmlyZSBhc3luY2hyb25vdXNseSwgd2UKQEAgLTc5LDcgKzkxLDcgQEAg
ZnVuY3Rpb24gaGFzaENoYW5nZWQoKQogfQogCiA8L3NjcmlwdD4KLTxib2R5IG9ubG9hZD0ibG9h
ZGVkKCk7IiBvbnBvcHN0YXRlPSJzdGF0ZVBvcHBlZCgpOyIgb25oYXNoY2hhbmdlPSJoYXNoQ2hh
bmdlZCgpOyIgb251bmxvYWQ9Ii8qIGRpc2FibGUgcGFnZSBjYWNoZSAqLyI+Cis8Ym9keSBvbnBv
cHN0YXRlPSJzdGF0ZVBvcHBlZCgpOyIgb25oYXNoY2hhbmdlPSJoYXNoQ2hhbmdlZCgpOyIgb251
bmxvYWQ9Ii8qIGRpc2FibGUgcGFnZSBjYWNoZSAqLyI+CiA8cHJlPgogVGhpcyB0ZXN0OgogLUJ1
aWxkcyB1cCBhIGxpc3Qgb2Ygc3RhdGUgb2JqZWN0IGVudHJpZXMgd2l0aCBmcmFnbWVudCBVUkxz
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3Vt
ZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2suaHRtbAppbmRl
eCBlZGJiMWMyODYxNTM4MjU4MGE2OWVkZmIxM2RlN2UwZjc0YmNjZGVmLi45ODJmZTgxYWNiYmIz
NDY0N2ZiOGVmZDYyZmUwODVlYTc5ZGVhY2I4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2suaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVz
dHJveWVkLW5hdmlnYXRlLWJhY2suaHRtbApAQCAtMzEsNyArMzEsNyBAQCBmdW5jdGlvbiBydW5U
aGlyZFN0YWdlT2ZUZXN0KCkKICAgICBhbGVydCgiRmluYWwgc3RhZ2Ugb2YgdGVzdCBsb2FkZWQi
KTsKIH0KIAotZnVuY3Rpb24gbG9hZGVkKCkKK2Z1bmN0aW9uIHJ1blRlc3QoKQogewogICAgIGlm
ICghc2Vzc2lvblN0b3JhZ2Uuc3RhZ2UpIHsKICAgICAgICAgLy8gTG9jYXRpb24gY2hhbmdlcyBu
ZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0
b3J5IGVudHJpZXMuCkBAIC00Miw4ICs0MiwyMCBAQCBmdW5jdGlvbiBsb2FkZWQoKQogICAgICAg
ICBydW5UaGlyZFN0YWdlT2ZUZXN0KCk7CiB9CiAKK3ZhciBiZWdhblRlc3QgPSBmYWxzZTsKKwog
ZnVuY3Rpb24gc3RhdGVQb3BwZWQoKQogeworICAgIC8vIFRoZSBmaXJzdCB0aW1lIHBvcHN0YXRl
IGZpcmVzLCBpdCdzIGJlY2F1c2UgdGhlIHBhZ2UgaGFzIGZpbmlzaGVkIGxvYWRpbmcuCisgICAg
Ly8gT25seSB0aGVuIGNhbiB3ZSBiZWdpbiB0aGUgdGVzdC4KKyAgICBpZiAoIWJlZ2FuVGVzdCkg
eworICAgICAgICBiZWdhblRlc3QgPSB0cnVlOworICAgICAgICBydW5UZXN0KCk7CisgICAgICAg
IC8vIENvbnRpbnVlIHdpdGggdGhlIGhhbmRsZXIgaWYgd2UndmUgYWxyZWFkeSBiZWdhbiB0aGUg
dGVzdC4KKyAgICAgICAgaWYgKCFzZXNzaW9uU3RvcmFnZS5zdGFnZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgCiAgICAgYWxlcnQoIlN0YXRlIHBvcHBlZCAtICIgKyBldmVudC5z
dGF0ZSArICIgKHR5cGUgIiArIHR5cGVvZiBldmVudC5zdGF0ZSArICIpIik7CiAgICAgaWYgKGV2
ZW50LnN0YXRlID09ICJGaXJzdEVudHJ5IikgewogICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0
ZSgiRmlyc3RFbnRyeVdpbGxMYXRlckJlUmVhY3RpdmF0ZWQiLCBudWxsLCAiP0ZpcnN0RW50cnlX
aWxsTGF0ZXJCZVJlYWN0aXZhdGVkIik7CkBAIC02Miw3ICs3NCw3IEBAIGZ1bmN0aW9uIHN0YXRl
UG9wcGVkKCkKIH0KIAogPC9zY3JpcHQ+Ci08Ym9keSBvbmxvYWQ9ImxvYWRlZCgpOyIgb25wb3Bz
dGF0ZT0ic3RhdGVQb3BwZWQoKTsiIG9udW5sb2FkPSIvKiBkaXNhYmxlIHBhZ2UgY2FjaGUgKi8i
PgorPGJvZHkgb25wb3BzdGF0ZT0ic3RhdGVQb3BwZWQoKTsiIG9udW5sb2FkPSIvKiBkaXNhYmxl
IHBhZ2UgY2FjaGUgKi8iPgogPHByZT4KIFRoaXMgdGVzdDoKIC1CdWlsZHMgdXAgYSBsaXN0IG9m
IHN0YXRlIG9iamVjdCBlbnRyaWVzIHdpdGggZnJhZ21lbnQgVVJMcy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNv
bXBsZXRlLWFkZGV2ZW50bGlzdGVuZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0
YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLWFkZGV2ZW50bGlzdGVuZXIu
aHRtbAppbmRleCA3NWI5NjlmMmM1NjJjMjViMjFkNWYyOTc4MzdlZTJmMjIyOGZhNmY3Li4wMmUz
NDRjNmQ0Nzk4YTg3Y2Y4MTJkZjhhODg5MDUxMmJhZjdjNDE1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0
ZS1hZGRldmVudGxpc3RlbmVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtYWRkZXZlbnRsaXN0ZW5lci5o
dG1sCkBAIC0yMCw4ICsyMCwxOCBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICBoaXN0b3J5LmJh
Y2soKTsKIH0KIAordmFyIGJlZ2FuVGVzdCA9IGZhbHNlOworCiBmdW5jdGlvbiBzdGF0ZVBvcHBl
ZCgpCiB7CisgICAgLy8gVGhlIGZpcnN0IHRpbWUgcG9wc3RhdGUgZmlyZXMsIGl0J3MgYmVjYXVz
ZSB0aGUgcGFnZSBoYXMgZmluaXNoZWQgbG9hZGluZy4KKyAgICAvLyBPbmx5IHRoZW4gY2FuIHdl
IGJlZ2luIHRoZSB0ZXN0LgorICAgIGlmICghYmVnYW5UZXN0KSB7CisgICAgICAgIGJlZ2FuVGVz
dCA9IHRydWU7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKICAgICBsb2coIlN0YXRlIHBvcHBlZCAtICIgKyBldmVudC5zdGF0ZSArICIgKHR5cGUgIiAr
IHR5cGVvZiBldmVudC5zdGF0ZSArICIpIik7CiAgICAgaWYgKGV2ZW50LnN0YXRlID09IG51bGwp
CiAgICAgICAgIGhpc3RvcnkuZm9yd2FyZCgpOwpAQCAtMzIsNyArNDIsNyBAQCBmdW5jdGlvbiBz
dGF0ZVBvcHBlZCgpCiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLCBzdGF0ZVBv
cHBlZCk7CiAKIDwvc2NyaXB0PgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKzxib2R5Pgog
PHByZT4KIFRoaXMgdGVzdCBkb2VzIHRoZSBmb2xsb3dpbmc6CiAtTGlzdGVucyBmb3IgdGhlIHBv
cHN0YXRlIGV2ZW50IHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRl
LWJvZHktYXR0cmlidXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVj
dHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS1ib2R5LWF0dHJpYnV0ZS5odG1sCmluZGV4
IDk1MDU3MzZiMzcwODdmZjc2NmY5YzkyNTQyNWI0ZDE0NjYxMzdmN2QuLmNjMTdjMGM1MzMyNzJj
YjI4NDU4NDE4ZWQ2YjQ1Y2NjMjgyZjY3YWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLWJvZHktYXR0
cmlidXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3Bv
cHN0YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtYm9keS1hdHRyaWJ1dGUuaHRtbApAQCAtMjAsOCAr
MjAsMTggQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgaGlzdG9yeS5iYWNrKCk7CiB9CiAKK3Zh
ciBiZWdhblRlc3QgPSBmYWxzZTsKKwogZnVuY3Rpb24gc3RhdGVQb3BwZWQoKQogeworICAgIC8v
IFRoZSBmaXJzdCB0aW1lIHBvcHN0YXRlIGZpcmVzLCBpdCdzIGJlY2F1c2UgdGhlIHBhZ2UgaGFz
IGZpbmlzaGVkIGxvYWRpbmcuCisgICAgLy8gT25seSB0aGVuIGNhbiB3ZSBiZWdpbiB0aGUgdGVz
dC4KKyAgICBpZiAoIWJlZ2FuVGVzdCkgeworICAgICAgICBiZWdhblRlc3QgPSB0cnVlOworICAg
ICAgICBydW5UZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCiAgICAgbG9nKCJT
dGF0ZSBwb3BwZWQgLSAiICsgZXZlbnQuc3RhdGUgKyAiICh0eXBlICIgKyB0eXBlb2YgZXZlbnQu
c3RhdGUgKyAiKSIpOwogICAgIGlmIChldmVudC5zdGF0ZSA9PSBudWxsKSB7CiAgICAgICAgIGRv
Y3VtZW50LmJvZHkub25wb3BzdGF0ZSA9IHN0YXRlUG9wcGVkOwpAQCAtMzEsNyArNDEsNyBAQCBm
dW5jdGlvbiBzdGF0ZVBvcHBlZCgpCiB9CiAKIDwvc2NyaXB0PgotPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCk7Ij4KKzxib2R5PgogPHByZT4KIFRoaXMgdGVzdCBkb2VzIHRoZSBmb2xsb3dpbmc6CiAt
VXNlcyBib2R5Lm9ucG9wc3RhdGUgdG8gYWRkIGEgcG9wc3RhdGUgaGFuZGxlciAoYm90aCBieSB1
c2luZyB0aGUgaW5saW5lIGF0dHJpYnV0ZSBhbmQgYSBzY3JpcHQtYXNzaWduZWQgYXR0cmlidXRl
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0
YXRlLWFmdGVyLWxvYWQtY29tcGxldGUtYm9keS1pbmxpbmUtYXR0cmlidXRlLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21w
bGV0ZS1ib2R5LWlubGluZS1hdHRyaWJ1dGUuaHRtbAppbmRleCAyNmZjYTFjNmUyY2ZlZjQ1NzYw
OWNjNDcwNTc3OTE5MzI0NjljMTcyLi4wNWRhMzYzZjI0YTQ5NTYwNGRlZjhkMzAwMzU2YzI4Nzc2
NDRmZjhkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMv
cG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS1ib2R5LWlubGluZS1hdHRyaWJ1dGUuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXIt
bG9hZC1jb21wbGV0ZS1ib2R5LWlubGluZS1hdHRyaWJ1dGUuaHRtbApAQCAtMjAsOCArMjAsMTgg
QEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgaGlzdG9yeS5iYWNrKCk7CiB9CiAKK3ZhciBiZWdh
blRlc3QgPSBmYWxzZTsKKwogZnVuY3Rpb24gc3RhdGVQb3BwZWQoKQogeworICAgIC8vIFRoZSBm
aXJzdCB0aW1lIHBvcHN0YXRlIGZpcmVzLCBpdCdzIGJlY2F1c2UgdGhlIHBhZ2UgaGFzIGZpbmlz
aGVkIGxvYWRpbmcuCisgICAgLy8gT25seSB0aGVuIGNhbiB3ZSBiZWdpbiB0aGUgdGVzdC4KKyAg
ICBpZiAoIWJlZ2FuVGVzdCkgeworICAgICAgICBiZWdhblRlc3QgPSB0cnVlOworICAgICAgICBy
dW5UZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCiAgICAgbG9nKCJTdGF0ZSBw
b3BwZWQgLSAiICsgZXZlbnQuc3RhdGUgKyAiICh0eXBlICIgKyB0eXBlb2YgZXZlbnQuc3RhdGUg
KyAiKSIpOwogICAgIGlmIChldmVudC5zdGF0ZSA9PSBudWxsKSB7CiAgICAgICAgIGRvY3VtZW50
LmJvZHkub25wb3BzdGF0ZSA9IHN0YXRlUG9wcGVkOwpAQCAtMzEsNyArNDEsNyBAQCBmdW5jdGlv
biBzdGF0ZVBvcHBlZCgpCiB9CiAKIDwvc2NyaXB0PgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7
IiBvbnBvcHN0YXRlPSJzdGF0ZVBvcHBlZCgpOyI+Cis8Ym9keSBvbnBvcHN0YXRlPSJzdGF0ZVBv
cHBlZCgpOyI+CiA8cHJlPgogVGhpcyB0ZXN0IGRvZXMgdGhlIGZvbGxvd2luZzoKIC1Vc2VzIGJv
ZHkub25wb3BzdGF0ZSB0byBhZGQgYSBwb3BzdGF0ZSBoYW5kbGVyIChib3RoIGJ5IHVzaW5nIHRo
ZSBpbmxpbmUgYXR0cmlidXRlIGFuZCBhIHNjcmlwdC1hc3NpZ25lZCBhdHRyaWJ1dGUpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0
ZXItbG9hZC1jb21wbGV0ZS13aW5kb3ctYXR0cmlidXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtYWZ0ZXItbG9hZC1jb21wbGV0ZS13aW5kb3ct
YXR0cmlidXRlLmh0bWwKaW5kZXggNjI1NjlhNWFiNWZkN2VlMGQzOGJlM2E2YzcwN2E0OThiNmY2
MmYxMy4uNDk1Mzk2OGVkOTgwMjZiNWY0MGM5YzY4OTAyMDJjYTQ0OTgyYTE3NyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWFmdGVyLWxv
YWQtY29tcGxldGUtd2luZG93LWF0dHJpYnV0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1hZnRlci1sb2FkLWNvbXBsZXRlLXdpbmRvdy1h
dHRyaWJ1dGUuaHRtbApAQCAtMjAsOCArMjAsMTggQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAg
aGlzdG9yeS5iYWNrKCk7CiB9CiAKK3ZhciBiZWdhblRlc3QgPSBmYWxzZTsKKwogZnVuY3Rpb24g
c3RhdGVQb3BwZWQoKQogeworICAgIC8vIFRoZSBmaXJzdCB0aW1lIHBvcHN0YXRlIGZpcmVzLCBp
dCdzIGJlY2F1c2UgdGhlIHBhZ2UgaGFzIGZpbmlzaGVkIGxvYWRpbmcuCisgICAgLy8gT25seSB0
aGVuIGNhbiB3ZSBiZWdpbiB0aGUgdGVzdC4KKyAgICBpZiAoIWJlZ2FuVGVzdCkgeworICAgICAg
ICBiZWdhblRlc3QgPSB0cnVlOworICAgICAgICBydW5UZXN0KCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBsb2coIlN0YXRlIHBvcHBlZCAtICIgKyBldmVudC5zdGF0ZSArICIgKHR5
cGUgIiArIHR5cGVvZiBldmVudC5zdGF0ZSArICIpIik7CiAgICAgaWYgKGV2ZW50LnN0YXRlID09
IG51bGwpCiAgICAgICAgIGhpc3RvcnkuZm9yd2FyZCgpOwpAQCAtMzIsNyArNDIsNyBAQCBmdW5j
dGlvbiBzdGF0ZVBvcHBlZCgpCiB3aW5kb3cub25wb3BzdGF0ZSA9IHN0YXRlUG9wcGVkOwogCiA8
L3NjcmlwdD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8Ym9keT4KIDxwcmU+CiBUaGlz
IHRlc3QgZG9lcyB0aGUgZm9sbG93aW5nOgogLVVzZXMgd2luZG93Lm9ucG9wc3RhdGUgdG8gYWRk
IGEgcG9wc3RhdGUgaGFuZGxlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
c3RhdGVvYmplY3RzL3BvcHN0YXRlLWZpcmVzLW9uLWhpc3RvcnktdHJhdmVyc2FsLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1maXJl
cy1vbi1oaXN0b3J5LXRyYXZlcnNhbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJiNWUyNjc0
NTczYjg4MTM4YWJiNmZiZWVmODM2OWVhMTM5OWM1YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1maXJlcy1vbi1oaXN0b3J5
LXRyYXZlcnNhbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGVzdHMgdGhhdCBwb3Bz
dGF0ZSBldmVudHMgZmlyZSBmb3IgYWxsIGhpc3RvcnkgdHJhdmVyc2FscyAoaW5jbHVkaW5nIG5h
dmlnYXRpb24gdG8gZnJhZ21lbnRzKSwgbm90IGp1c3Qgd2hlbiBnb2luZyBiYWNrIHRvIGEgc3Rh
dGUgb2JqZWN0IGNyZWF0ZWQgdmlhIHB1c2hTdGF0ZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCitwb3BzdGF0ZSBmaXJlZCB3aXRoIHN0YXRlIG51bGwKK3NldHRpbmcgaGFzaCB0byAj
c3RhdGUxCitwb3BzdGF0ZSBmaXJlZCB3aXRoIHN0YXRlIG51bGwKK3NldHRpbmcgaGFzaCB0byAj
c3RhdGUyCitwb3BzdGF0ZSBmaXJlZCB3aXRoIHN0YXRlIG51bGwKK2dvaW5nIGJhY2sKK3BvcHN0
YXRlIGZpcmVkIHdpdGggc3RhdGUgbnVsbAorZ29pbmcgYmFjaworcG9wc3RhdGUgZmlyZWQgd2l0
aCBzdGF0ZSBudWxsCitQQVNTIHBvcHN0YXRlRmlyZUNvdW50IGlzIDUKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtZmlyZXMtb24taGlzdG9yeS10
cmF2ZXJzYWwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3Bz
dGF0ZS1maXJlcy1vbi1oaXN0b3J5LXRyYXZlcnNhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzMDAzMzRi
MmQzNjUxZWVkMmE1OTY5YjU4ZDc1NDE4NDhiNGIzOWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtZmlyZXMtb24taGlzdG9y
eS10cmF2ZXJzYWwuaHRtbApAQCAtMCwwICsxLDY4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGJvZHk+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbignVGVzdHMgdGhhdCBwb3BzdGF0ZSBldmVudHMgZmlyZSBmb3IgYWxsIGhpc3RvcnkgdHJh
dmVyc2FscyAoaW5jbHVkaW5nIG5hdmlnYXRpb24gdG8gZnJhZ21lbnRzKSwgbm90IGp1c3Qgd2hl
biBnb2luZyBiYWNrIHRvIGEgc3RhdGUgb2JqZWN0IGNyZWF0ZWQgdmlhIHB1c2hTdGF0ZS4nKTsK
Kworb25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIHNldFRpbWVvdXQoc3RlcCwgMCk7Cit9CisK
K3ZhciBjdXJyZW50U3RlcCA9IDA7Cit2YXIgcG9wc3RhdGVGaXJlQ291bnQgPSAwOworCitmdW5j
dGlvbiBzdGVwKCkKK3sKKyAgICBzd2l0Y2ggKGN1cnJlbnRTdGVwKSB7CisgICAgY2FzZSAwOgor
ICAgICAgICBkZWJ1Zygnc2V0dGluZyBoYXNoIHRvICNzdGF0ZTEnKTsKKyAgICAgICAgbG9jYXRp
b24uaGFzaCA9ICcjc3RhdGUxJzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAxOgorICAgICAg
ICBkZWJ1Zygnc2V0dGluZyBoYXNoIHRvICNzdGF0ZTInKTsKKyAgICAgICAgbG9jYXRpb24uaGFz
aCA9ICcjc3RhdGUyJzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgICBkZWJ1
ZygnZ29pbmcgYmFjaycpOworICAgICAgICBoaXN0b3J5LmJhY2soKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSAzOgorICAgICAgICBkZWJ1ZygnZ29pbmcgYmFjaycpOworICAgICAgICBoaXN0
b3J5LmJhY2soKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA0OgorICAgICAgICAvLyBUaGUg
NSBleHBlY3RlZCBwb3BzdGF0ZSBldmVudHMgYXJlIHdoZW46CisgICAgICAgIC8vIDEuIFRoZSBw
YWdlIGxvYWRzCisgICAgICAgIC8vIDIuIE5hdmlnYXRpbmcgdG8gI3N0YXRlMQorICAgICAgICAv
LyAzLiBOYXZpZ2F0aW5nIHRvICNzdGF0ZTIKKyAgICAgICAgLy8gNC4gR29pbmcgYmFjayB0byAj
c3RhdGUxCisgICAgICAgIC8vIDUuIEdvaW5nIGJhY2sgdG8gdGhlIGluaXRpYWwgcGFnZSBzdGF0
ZQorICAgICAgICBzaG91bGRCZSgncG9wc3RhdGVGaXJlQ291bnQnLCAnNScpOworICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAgIHRl
c3RGYWlsZWQoJ3VuZXhwZWN0ZWQgc3RhdGU6ICcgKyBjdXJyZW50U3RlcCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICAKKyAgICBjdXJyZW50U3RlcCsrOworICAgIAorICAgIHNldFRpbWVv
dXQoc3RlcCwgMCk7Cit9CisKK29ucG9wc3RhdGUgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBk
ZWJ1ZygncG9wc3RhdGUgZmlyZWQgd2l0aCBzdGF0ZSAnICsgZXZlbnQuc3RhdGUpOworICAgIHBv
cHN0YXRlRmlyZUNvdW50Kys7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
dmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
c3RhdGVvYmplY3RzL3BvcHN0YXRlLWZpcmVzLXdpdGgtcGFnZS1jYWNoZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtZmlyZXMtd2l0
aC1wYWdlLWNhY2hlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjQzOTM2OGI3MTZhMzdlODY3
NzUwNTkzYmZmZDM1MDk3MzE2MzQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvc3RhdGVvYmplY3RzL3BvcHN0YXRlLWZpcmVzLXdpdGgtcGFnZS1jYWNoZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGVzdHMgdGhhdCBwb3BzdGF0ZSBldmVudHMgZmly
ZSB3aGVuIG5hdmlnYXRpbmcgYmV0d2VlbiBwYWdlcyAoYW5kIGhpc3RvcnkgZW50cmllcyBjcmVh
dGVkIHZpYSBwdXNoU3RhdGUpIHRoYXQgYXJlIGluIHRoZSBwYWdlIGNhY2hlLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK3BvcHN0YXRlIGZpcmVkIHdpdGggc3RhdGUgbnVsbAorcHVz
aFN0YXRlIHdpdGggbmV3IHN0YXRlIG9iamVjdCBmb3IgcGFnZSAxCitnb2luZyB0byBwYWdlIDIK
K3BvcHN0YXRlIGZpcmVkIHdpdGggc3RhdGUgbnVsbAorZ29pbmcgYmFjayB0byBwYWdlIDEgd2l0
aCBuZXcgc3RhdGUgb2JqZWN0Citwb3BzdGF0ZSBmaXJlZCB3aXRoIHN0YXRlIG5ld1N0YXRlCitn
b2luZyBiYWNrIHRvIHBhZ2UgMSBpbiBpbml0aWFsIHN0YXRlCitwb3BzdGF0ZSBmaXJlZCB3aXRo
IHN0YXRlIG51bGwKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMv
cG9wc3RhdGUtZmlyZXMtd2l0aC1wYWdlLWNhY2hlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9zdGF0ZW9iamVjdHMvcG9wc3RhdGUtZmlyZXMtd2l0aC1wYWdlLWNhY2hlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjQ5MmNmNGM5MTJiN2ZiMjkwMWMyMDA0MDE2MGI5MWQ2YmEyM2ZjMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0
ZS1maXJlcy13aXRoLXBhZ2UtY2FjaGUuaHRtbApAQCAtMCwwICsxLDYxIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGJvZHk+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbignVGVzdHMgdGhhdCBwb3BzdGF0ZSBldmVudHMgZmlyZSB3aGVuIG5h
dmlnYXRpbmcgYmV0d2VlbiBwYWdlcyAoYW5kIGhpc3RvcnkgZW50cmllcyBjcmVhdGVkIHZpYSBw
dXNoU3RhdGUpIHRoYXQgYXJlIGluIHRoZSBwYWdlIGNhY2hlLicpOworCit2YXIgdGVzdFdpbmRv
dzsKKworb25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRv
d3MoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdX
ZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleScsIDEpOworICAgIH0KKyAgICB0ZXN0V2lu
ZG93ID0gd2luZG93Lm9wZW4oJ3Jlc291cmNlcy9wb3BzdGF0ZS1maXJlcy13aXRoLXBhZ2UtY2Fj
aGUtMS5odG1sJyk7CisgICAgaWYgKCF0ZXN0V2luZG93KQorICAgICAgICB0ZXN0RmFpbGVkKCdD
b3VsZCBub3Qgb3BlbiB0ZXN0IHdpbmRvdycpOworfQorCit2YXIgdGVzdFdpbmRvd1BvcHN0YXRl
RmlyZUNvdW50ID0gMDsKKworZnVuY3Rpb24gb25UZXN0V2luZG93UG9wU3RhdGUoZXZlbnQpCit7
CisgICAgZGVidWcoJ3BvcHN0YXRlIGZpcmVkIHdpdGggc3RhdGUgJyArIGV2ZW50LnN0YXRlKTsK
KyAgICB0ZXN0V2luZG93UG9wc3RhdGVGaXJlQ291bnQrKzsKKyAgICAKKyAgICBzd2l0Y2ggKHRl
c3RXaW5kb3dQb3BzdGF0ZUZpcmVDb3VudCkgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAg
ICBkZWJ1ZygncHVzaFN0YXRlIHdpdGggbmV3IHN0YXRlIG9iamVjdCBmb3IgcGFnZSAxJyk7Cisg
ICAgICAgICAgICB0ZXN0V2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKCduZXdTdGF0ZScpOworICAg
ICAgICAgICAgZGVidWcoJ2dvaW5nIHRvIHBhZ2UgMicpOworICAgICAgICAgICAgLy8gU2V0IHRo
ZSBsb2NhdGlvbiBpbiBhIHRpbWVvdXQgdG8gZ2VuZXJhdGUgYSBoaXN0b3J5IGVudHJ5CisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3Rlc3RXaW5kb3cubG9jYXRpb24uaHJlZiA9
ICdyZXNvdXJjZXMvcG9wc3RhdGUtZmlyZXMtd2l0aC1wYWdlLWNhY2hlLTIuaHRtbCc7fSwgMCk7
ICAgICAgICAgICAgCisgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSAyOgorICAgICAgICAgICAgZGVidWcoJ2dvaW5nIGJhY2sgdG8gcGFnZSAxIHdpdGggbmV3IHN0
YXRlIG9iamVjdCcpOworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHt0ZXN0V2lu
ZG93Lmhpc3RvcnkuYmFjaygpO30sIDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgMzoKKyAgICAgICAgICAgIGRlYnVnKCdnb2luZyBiYWNrIHRvIHBhZ2UgMSBpbiBpbml0aWFs
IHN0YXRlJyk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3Rlc3RXaW5kb3cu
aGlzdG9yeS5iYWNrKCk7fSwgMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA0
OgorICAgICAgICAgICAgdGVzdFdpbmRvdy5jbG9zZSgpOworICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7ICAgICAgICAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgdGVzdEZhaWxlZCgndW5leHBlY3RlZCBwb3Agc3RhdGUgZXZlbnQgc3RhdGUnKTsK
KyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAorICAgIH0KK30KKwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7Cit2YXIganNUZXN0SXNBc3luYyA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1vYmpl
Y3QtdHlwZXMuaHRtbAppbmRleCAzOTkyYzRkNDgxYzRlOGQyOGE2ZjczYjZhYTRlZmQwMGU2N2Qx
OGM0Li4wOTg5MTE0M2JiYmI0MmQ0MjczODVlNWI0NDcyMGJhZTYwNWQ5OTlkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10
eXBlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNo
c3RhdGUtb2JqZWN0LXR5cGVzLmh0bWwKQEAgLTEwLDExICsxMCwxMiBAQCBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CiAKIGZ1bmN0aW9uIGxvZyh0eHQpCiB7Ci0gICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVyVGV4dCArPSB0eHQgKyAiXG4iOworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dnZXIiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSh0eHQgKyAiXG4iKSk7CiB9Ci0gICAgCisKIGZ1bmN0aW9uIHJ1blRlc3Qo
KQogeworICAgIGJlZ2FuVGVzdCA9IHRydWU7CiAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUoIkZp
cnN0RW50cnkiLCAiSW5pdGlhbCBlbnRyeSIpOwogICAgIGhpc3RvcnkucHVzaFN0YXRlKHVuZGVm
aW5lZCwgInVuZGVmaW5lZCBlbnRyeSIpOwogICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGwsICJu
dWxsIGVudHJ5Iik7CkBAIC0zOSwxMCArNDAsMjAgQEAgaGlzdG9yeS5wdXNoU3RhdGUoW0ZpbGVM
aXN0XSwgIkZpbGVMaXN0IGVudHJ5Iik7CiAgICAgaGlzdG9yeS5iYWNrKCk7CiB9CiAKLWZ1bmN0
aW9uIHN0YXRlUG9wcGVkKCkKK3ZhciBiZWdhblRlc3QgPSBmYWxzZTsKKworb25wb3BzdGF0ZSA9
IGZ1bmN0aW9uKGV2ZW50KQogeworICAgIC8vIFRoZSBmaXJzdCB0aW1lIHBvcHN0YXRlIGZpcmVz
LCBpdCdzIGJlY2F1c2UgdGhlIHBhZ2UgaGFzIGZpbmlzaGVkIGxvYWRpbmcuCisgICAgLy8gT25s
eSB0aGVuIGNhbiB3ZSBiZWdpbiB0aGUgdGVzdC4KKyAgICBpZiAoIWJlZ2FuVGVzdCkgeworICAg
ICAgICBiZWdhblRlc3QgPSB0cnVlOworICAgICAgICBydW5UZXN0KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCiAgICAgaWYgKGV2ZW50LnN0YXRlIGluc3RhbmNlb2YgRGF0ZSkKLSAg
ICAgICAgbG9nKCJTdGF0ZSBwb3BwZWQgLSAiICsgZXZlbnQuc3RhdGUgKiAxICsgIiAodHlwZSAi
ICsgdHlwZW9mIGV2ZW50LnN0YXRlICsgIikiKTsKKyAgICAgICAgbG9nKCJTdGF0ZSBwb3BwZWQg
LSAiICsgZXZlbnQuc3RhdGUuZ2V0VGltZSgpICArICIgKHR5cGUgIiArIHR5cGVvZiBldmVudC5z
dGF0ZSArICIpIik7CiAgICAgZWxzZQogICAgICAgICBsb2coIlN0YXRlIHBvcHBlZCAtICIgKyBl
dmVudC5zdGF0ZSArICIgKHR5cGUgIiArIHR5cGVvZiBldmVudC5zdGF0ZSArICIpIik7CiAKQEAg
LTU0LDEwICs2NSwxMCBAQCBmdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCiB9CiAKIDwvc2NyaXB0Pgot
PGJvZHkgb25sb2FkPSJydW5UZXN0KCk7IiBvbnBvcHN0YXRlPSJzdGF0ZVBvcHBlZCgpOyI+Ci08
cHJlIGlkPSJzb21lZWxlbWVudCI+Cis8Ym9keT4KKzxwPgogVGhpcyB0ZXN0IGNhbGxzIHB1c2hT
dGF0ZSB3aXRoIHN0YXRlIG9iamVjdHMgb2YgYWxsIHRoZSBkaWZmZXJlbnQgb2JqZWN0IHR5cGVz
IHN1cHBvcnRlZCBieSB0aGUgSFRNTDUgImludGVybmFsIHN0cnVjdHVyZWQgY2xvbmluZyBhbGdv
cml0aG0iIGFuZCBtYWtlcyBzdXJlIHRoZSBldmVudHMgY29udGFpbiB0aGUgZXhwZWN0ZWQgb2Jq
ZWN0cyB3aGVuIHRoZSBzdGF0ZXMgYXJlIHBvcHBlZC4KLTwvcHJlPjxicj4KKzwvcD4KIDxwcmUg
aWQ9ImxvZ2dlciI+PC9wcmU+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLXRoZW4tcmVwbGFjZXN0YXRl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLXRo
ZW4tcmVwbGFjZXN0YXRlLmh0bWwKaW5kZXggOTc2MDEzZTE3ZGQzMjBhMTU1ZThkZjM5NTNjNWNj
MWQ1NGIxMTQ2Zi4uZGU2ZjA5Mzk1YmE4MDVjZTU1Njk2N2MxYjkxYTYyMjIxY2Q0YTA5NCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS10
aGVuLXJlcGxhY2VzdGF0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRl
b2JqZWN0cy9wdXNoc3RhdGUtdGhlbi1yZXBsYWNlc3RhdGUuaHRtbApAQCAtMjIsOCArMjIsMTgg
QEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgaGlzdG9yeS5iYWNrKCk7CiB9CiAKLWZ1bmN0aW9u
IHN0YXRlUG9wcGVkKCkKK3ZhciBiZWdhblRlc3QgPSBmYWxzZTsKKworb25wb3BzdGF0ZSA9IGZ1
bmN0aW9uKGV2ZW50KQogeworICAgIC8vIFRoZSBmaXJzdCB0aW1lIHBvcHN0YXRlIGZpcmVzLCBp
dCdzIGJlY2F1c2UgdGhlIHBhZ2UgaGFzIGZpbmlzaGVkIGxvYWRpbmcuCisgICAgLy8gT25seSB0
aGVuIGNhbiB3ZSBiZWdpbiB0aGUgdGVzdC4KKyAgICBpZiAoIWJlZ2FuVGVzdCkgeworICAgICAg
ICBiZWdhblRlc3QgPSB0cnVlOworICAgICAgICBydW5UZXN0KCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBsb2coIlN0YXRlIHBvcHBlZCAtICIgKyBldmVudC5zdGF0ZSArICIgKHR5
cGUgIiArIHR5cGVvZiBldmVudC5zdGF0ZSArICIpIik7CiAgICAgaWYgKGV2ZW50LnN0YXRlID09
IG51bGwpCiAgICAgICAgIGhpc3RvcnkuZm9yd2FyZCgpOwpAQCAtMzIsNyArNDIsNyBAQCBmdW5j
dGlvbiBzdGF0ZVBvcHBlZCgpCiB9CiAKIDwvc2NyaXB0PgotPGJvZHkgb25sb2FkPSJydW5UZXN0
KCk7IiBvbnBvcHN0YXRlPSJzdGF0ZVBvcHBlZCgpOyI+Cis8Ym9keT4KIDxwcmU+CiBUaGlzIHRl
c3QgZG9lcyB0aGUgZm9sbG93aW5nOgogLU1ha2VzIGEgY2FsbCB0byBwdXNoU3RhdGUoKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS13
aXRoLWZyYWdtZW50LXVybHMtYW5kLWhhc2hjaGFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtd2l0aC1mcmFnbWVudC11cmxzLWFuZC1oYXNo
Y2hhbmdlLmh0bWwKaW5kZXggZTcwMTYwMTQ3Njc5MmViOThkNGFjOWVkNmQ0NDYwNmNiNDFmNGQw
MC4uYTkyZDdjYzc1MTM5ZGRhNDA5NWRhYTJmYjVmYzBhMjMzZTcxNzVmNiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS13aXRoLWZyYWdt
ZW50LXVybHMtYW5kLWhhc2hjaGFuZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLXdpdGgtZnJhZ21lbnQtdXJscy1hbmQtaGFzaGNoYW5n
ZS5odG1sCkBAIC00NCw4ICs0NCwxOCBAQCBmdW5jdGlvbiBsYXN0UGF0aENvbXBvbmVudCgpCiAg
ICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCcvJykucG9wKCk7CiB9CiAKLWZ1
bmN0aW9uIHN0YXRlUG9wcGVkKCkKK3ZhciBiZWdhblRlc3QgPSBmYWxzZTsKKworb25wb3BzdGF0
ZSA9IGZ1bmN0aW9uKGV2ZW50KQogeworICAgIC8vIFRoZSBmaXJzdCB0aW1lIHBvcHN0YXRlIGZp
cmVzLCBpdCdzIGJlY2F1c2UgdGhlIHBhZ2UgaGFzIGZpbmlzaGVkIGxvYWRpbmcuCisgICAgLy8g
T25seSB0aGVuIGNhbiB3ZSBiZWdpbiB0aGUgdGVzdC4KKyAgICBpZiAoIWJlZ2FuVGVzdCkgewor
ICAgICAgICBiZWdhblRlc3QgPSB0cnVlOworICAgICAgICBydW5UZXN0KCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICBsb2coIlN0YXRlIHBvcHBlZCB3aXRoIGV2ZW50ICIgKyBldmVu
dC5zdGF0ZSArICIgKHR5cGUgIiArIHR5cGVvZiBldmVudC5zdGF0ZSArICIpIGFuZCBsYXN0IHBh
dGggY29tcG9uZW50ICIgKyBsYXN0UGF0aENvbXBvbmVudCgpKTsKICAgICBpZiAoZXZlbnQuc3Rh
dGUgIT0gIk9yaWdpbmFsRW50cnkiKQogICAgICAgICBzZXRUaW1lb3V0KCJoaXN0b3J5LmJhY2so
KTsiLCAwKTsKQEAgLTUzLDEzICs2MywxMyBAQCBmdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCiAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKIH0KIAotZnVuY3Rpb24gaGFz
aENoYW5nZWQoKQorb25oYXNoY2hhbmdlID0gZnVuY3Rpb24oKQogewogICAgIGxvZygiSGFzaCBj
aGFuZ2UgZmlyZWQgYW5kIGxhc3QgcGF0aCBjb21wb25lbnQgaXMgIiArIGxhc3RQYXRoQ29tcG9u
ZW50KCkpOwogfQogCiA8L3NjcmlwdD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyIgb25wb3Bz
dGF0ZT0ic3RhdGVQb3BwZWQoKTsiIG9uaGFzaGNoYW5nZT0iaGFzaENoYW5nZWQoKTsiPgorPGJv
ZHk+CiA8cHJlPgogVGhpcyB0ZXN0IHB1c2hlcyBhIHNlcmllcyBvZiBzdGF0ZSBvYmplY3RzIHdp
dGggZGlmZmVyZW50IFVSTHMgYW5kIGZyYWdtZW50IGlkZW50aWZpZXJzIG1lYW50IHRvIHRlc3Qg
dGhlIGhhc2hDaGFuZ2UgZXZlbnQgYXMgc3RhdGVzIGFyZSBwb3BwZWQuCiA8L3ByZT48YnI+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVwbGFjZXN0
YXRlLWluLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L3JlcGxhY2VzdGF0ZS1pbi1pZnJhbWUuaHRtbAppbmRleCBiMDFjMjFlNGEzMTNjODc5OWEzMTU5
ZGEwMzNmZTIxMmExNDAwYjFhLi4wMzFiMDI3NWE1OTc5ZTczNWFhYjhmZThjZjg5YmM3MDM1YWQz
MTRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVw
bGFjZXN0YXRlLWluLWlmcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0
YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUtaW4taWZyYW1lLmh0bWwKQEAgLTMzLDcgKzMzLDYgQEAg
ZnVuY3Rpb24gd2luZG93TG9hZGVkKCkgewogCiBvbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgdGVz
dFdpbiA9IG9wZW4oInJlc291cmNlcy9yZXBsYWNlc3RhdGUtaW4taWZyYW1lLXdpbmRvdy5odG1s
Iik7Ci0gIHRlc3RXaW4ub25sb2FkID0gd2luZG93TG9hZGVkOwogfQogPC9zY3JpcHQ+CiA8Ym9k
eT5QRU5ESU5HPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL3JlcGxhY2VzdGF0ZS10aGVuLXB1c2hzdGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3JlcGxhY2VzdGF0ZS10aGVuLXB1c2hzdGF0ZS5odG1s
CmluZGV4IDgyNjI2NGE0ZTczZmYzN2YyYjVkYjFiMjM5MTNjZmI5MzVjYzZjOTEuLjc2YTVlMWI0
MTFmMTI2MWNiNjM1MWVmZTY1ZDMyOGI0MzgxZWE5MjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXBsYWNlc3RhdGUtdGhlbi1wdXNoc3RhdGUuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVwbGFjZXN0YXRl
LXRoZW4tcHVzaHN0YXRlLmh0bWwKQEAgLTIyLDggKzIyLDE4IEBAIGZ1bmN0aW9uIHJ1blRlc3Qo
KQogICAgIGhpc3RvcnkuYmFjaygpOwogfQogCi1mdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCit2YXIg
YmVnYW5UZXN0ID0gZmFsc2U7CisKK29ucG9wc3RhdGUgPSBmdW5jdGlvbihldmVudCkKIHsKKyAg
ICAvLyBUaGUgZmlyc3QgdGltZSBwb3BzdGF0ZSBmaXJlcywgaXQncyBiZWNhdXNlIHRoZSBwYWdl
IGhhcyBmaW5pc2hlZCBsb2FkaW5nLgorICAgIC8vIE9ubHkgdGhlbiBjYW4gd2UgYmVnaW4gdGhl
IHRlc3QuCisgICAgaWYgKCFiZWdhblRlc3QpIHsKKyAgICAgICAgYmVnYW5UZXN0ID0gdHJ1ZTsK
KyAgICAgICAgcnVuVGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbG9nKCJT
dGF0ZSBwb3BwZWQgLSAiICsgZXZlbnQuc3RhdGUgKyAiICh0eXBlICIgKyB0eXBlb2YgZXZlbnQu
c3RhdGUgKyAiKSIpOwogICAgIGlmIChldmVudC5zdGF0ZSA9PSAiT3JpZ2luYWxIaXN0b3J5SXRl
bSIpCiAgICAgICAgIGhpc3RvcnkuZm9yd2FyZCgpOwpAQCAtMzIsNyArNDIsNyBAQCBmdW5jdGlv
biBzdGF0ZVBvcHBlZCgpCiB9CiAKIDwvc2NyaXB0PgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7
IiBvbnBvcHN0YXRlPSJzdGF0ZVBvcHBlZCgpOyI+Cis8Ym9keT4KIDxwcmU+CiBUaGlzIHRlc3Qg
ZG9lcyB0aGUgZm9sbG93aW5nOgogLU1ha2VzIGEgY2FsbCB0byByZXBsYWNlU3RhdGUoKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3Jlc291cmNlcy9w
b3BzdGF0ZS1maXJlcy13aXRoLXBhZ2UtY2FjaGUtMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvc3RhdGVvYmplY3RzL3Jlc291cmNlcy9wb3BzdGF0ZS1maXJlcy13aXRoLXBhZ2UtY2Fj
aGUtMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiMTllYmRiYjdhZTcxMmMyNGFkZDAxOTdkMzk1NTFmYzI1
YzczNjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9i
amVjdHMvcmVzb3VyY2VzL3BvcHN0YXRlLWZpcmVzLXdpdGgtcGFnZS1jYWNoZS0xLmh0bWwKQEAg
LTAsMCArMSBAQAorPGJvZHkgb25wb3BzdGF0ZT0ib3BlbmVyLm9uVGVzdFdpbmRvd1BvcFN0YXRl
KGV2ZW50KSI+cGFnZSAxPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9yZXNvdXJjZXMvcG9w
c3RhdGUtZmlyZXMtd2l0aC1wYWdlLWNhY2hlLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL3N0YXRlb2JqZWN0cy9yZXNvdXJjZXMvcG9wc3RhdGUtZmlyZXMtd2l0aC1wYWdlLWNhY2hl
LTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xOTI5NjEyYWVmZWFmZTRjNDhmZTVhZjNmOGYxZjMwMmFmNGE0
MjA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmpl
Y3RzL3Jlc291cmNlcy9wb3BzdGF0ZS1maXJlcy13aXRoLXBhZ2UtY2FjaGUtMi5odG1sCkBAIC0w
LDAgKzEgQEAKKzxib2R5IG9ucG9wc3RhdGU9Im9wZW5lci5vblRlc3RXaW5kb3dQb3BTdGF0ZShl
dmVudCkiPnBhZ2UgMjwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVzb3VyY2VzL3JlcGxh
Y2VzdGF0ZS1pbi1pZnJhbWUtd2luZG93LWNoaWxkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9zdGF0ZW9iamVjdHMvcmVzb3VyY2VzL3JlcGxhY2VzdGF0ZS1pbi1pZnJhbWUtd2luZG93
LWNoaWxkLmh0bWwKaW5kZXggODYzZTdlNGM0Y2ZhOWIxMjVjOGM1ZmNhOWQ3Yjg3NmUzNWNlZmE3
NS4uYzgzZjljODI4MDRkYzI4N2IwYjNkNDc5ZTJjMDdmZWNkODU5NmU1MiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3Jlc291cmNlcy9yZXBsYWNlc3Rh
dGUtaW4taWZyYW1lLXdpbmRvdy1jaGlsZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL3N0YXRlb2JqZWN0cy9yZXNvdXJjZXMvcmVwbGFjZXN0YXRlLWluLWlmcmFtZS13aW5kb3ct
Y2hpbGQuaHRtbApAQCAtNCw2ICs0LDEyIEBAIG9udW5sb2FkID0gZnVuY3Rpb24oKSB7CiB9CiAK
IG9ucG9wc3RhdGUgPSBmdW5jdGlvbihlKSB7CisgIGlmICghc2Vzc2lvblN0b3JhZ2UuYmVnYW5U
ZXN0KSB7CisgICAgICBzZXNzaW9uU3RvcmFnZS5iZWdhblRlc3QgPSB0cnVlOyAKKyAgICAgIHRv
cC5vcGVuZXIud2luZG93TG9hZGVkKCk7CisgICAgICByZXR1cm47CisgIH0KKyAgCiAgIGFsZXJ0
KCJvbnBvcHN0YXRlIik7CiAgIHRvcC5vcGVuZXIubm90aWZ5RG9uZSh3aW5kb3cgPT0gcGFyZW50
ID8gIkZBSUwiIDogIlBBU1MiKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2ZhNjAxM2IyODcxMmQzYThjMTM3OTA2YzkzZTk3ODE4
NjMwMjM3OC4uODZkYjNlYzZjZTNjMzJjMjQ2MzZhNjRmOGQ0ZjM0OTU0MjU5ZTg4NyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNiBAQAorMjAxMC0wOC0yNyAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBwb3Bz
dGF0ZSBldmVudCBpcyBub3QgZmlyZWQgdW50aWwgZG9jdW1lbnQgb3B0cyBpbiBieSBjYWxsaW5n
IHB1c2hzdGF0ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQxMzcyCisKKyAgICAgICAgRmlyZSBwb3BzdGF0ZSBldmVuIHdoZW4gd2UgZG9uJ3QgaGF2
ZSBhIHN0YXRlIG9iamVjdCB3aGVuIGEgcGFnZSBpcyAKKyAgICAgICAgbG9hZGVkIChmb3IgYm90
aCByZWd1bGFyIGxvYWRzIGFuZCB0aG9zZSBmcm9tIHRoZSBwYWdlIGNhY2hlKS4gQWxzbworICAg
ICAgICBmaXJlIHBvcHN0YXRlIHdoZW4gZG9pbmcgaW4tZG9jdW1lbnQgbmF2aWdhdGlvbiB2aWEg
ZnJhZ21lbnQgY2hhbmdlcy4KKyAgICAgICAgVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggYm90aCBH
ZWNrbyBhbmQgcmVjZW50IHRoZSBIVE1MNSBzcGVjIGNoYW5nZToKKyAgICAgICAgaHR0cDovL2h0
bWw1Lm9yZy90b29scy93ZWItYXBwcy10cmFja2VyP2Zyb209NTM3NiZ0bz01Mzc3CisKKyAgICAg
ICAgVGVzdHM6IGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wb3BzdGF0ZS1maXJlcy1vbi1oaXN0
b3J5LXRyYXZlcnNhbC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9zdGF0ZW9iamVj
dHMvcG9wc3RhdGUtZmlyZXMtd2l0aC1wYWdlLWNhY2hlLmh0bWwKKworICAgICAgICAqIGJpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
aDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmltcGxpY2l0Q2xvc2UpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAq
IGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRnJhbWVC
YXNlOjpyZXN0b3JlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0dGVkKToKKyAgICAgICAgKiBs
b2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNv
bnRyb2xsZXI6OnB1c2hTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxl
cjo6cmVwbGFjZVN0YXRlKToKKwogMjAxMC0wOC0yNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEF0dGVtcHQgdG8gZml4IHRoZSBXaW5kb3dzIGJ1aWxkLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDAwZWMy
NWY1ODYxYmVkNDc1MTY3MjVhZDQwZjM2MzZmZTZmM2RjMjcuLmNhMThlYzBhYjgwMjUwZDBmMzFi
MGJmYjYxNjI0NmQwMDdiMmJlNDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTEwODAsNiArMTA4MCwxMiBAQCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNDb250ZXh0
UmVmIG9yaQogICAgIHJldHVybiBzZXJpYWxpemVkVmFsdWU7CiB9CiAKK1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSAKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBudWxsVmFsdWUs
IChTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgpKSk7CisgICAgcmV0dXJuIG51bGxWYWx1
ZS5nZXQoKTsKK30KKwogSlNWYWx1ZVJlZiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFs
aXplKEpTQ29udGV4dFJlZiBkZXN0aW5hdGlvbkNvbnRleHQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggMmI3ZDIyMjJhZTQ1NmJl
YWRiMjQwMDU2ZTRkOGQyNTBmZDk2Yjc2ZS4uMzJjZTQxODFmZWRkZmFhYjAwZTZmNjY0NTI0MzQ1
YzdlZmE5YzJiOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oCkBAIC0yMTMsNiArMjEzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShTZXJp
YWxpemVkU2NyaXB0VmFsdWVEYXRhKCkpKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
c3RhdGljIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogbnVsbFZhbHVlKCk7CiAKICAgICAgICAgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHJlbGVhc2UoKQogICAgICAgICB7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggMzk1ZWYx
YTViYTE1NDMxZTZmNDZmY2UyOGE4MmQ5OGVmZTU1MGE4NC4uMGI5MDhiODBhYTA2MjJiNTk1ZGU3
Y2QyNjMyMzhlNDk3NThhY2Q4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcApAQCAtMTA5Niw2ICsxMDk2LDEyIEBAIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgpCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoKSk7CiB9CiAKK1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSAKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBudWxs
VmFsdWUsIChTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgpKSk7CisgICAgcmV0dXJuIG51
bGxWYWx1ZS5nZXQoKTsKK30KKwogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6cmVsZWFzZSgpCiB7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gcmVzdWx0ID0gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSht
X2RhdGEsIFdpcmVEYXRhKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuaAppbmRleCAzNzEwYjVhMjMxMDVhNmYxNjkzMTY1MGVhNTA4YjAyYjQ3ZTllMGQyLi4y
NzVlNWYyZGU1Y2EyZDZiYWJjNGNhNDU5MmQyYjc5OGZhZWNlZjU1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlRnJv
bVdpcmUoU3RyaW5nIGRhdGEpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gY3JlYXRlKFN0cmluZyBkYXRhKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZSgpOworICAgIAorICAgIHN0YXRpYyBTZXJpYWxpemVk
U2NyaXB0VmFsdWUqIG51bGxWYWx1ZSgpOyAgICAKIAogICAgIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiByZWxlYXNlKCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1ZDgzNDc0NjdhZjdkMjBm
YjNmNTNjYjY3ZTkxOGI4ZDIyMjNjMzNmLi45YzA4ZmJhNTgxYTcwMzRkZjdkNzUyMGMyNjQyNmVk
NjQ1OTIxZDhlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC04Miw3ICs4Miw2IEBACiAjaW5jbHVkZSAiSFRNTFN0
eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUaXRsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VFRQUGFyc2Vycy5oIgotI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSGl0VGVz
dFJlcXVlc3QuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW1hZ2VM
b2FkZXIuaCIKQEAgLTIwMjAsOCArMjAxOSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxpY2l0Q2xv
c2UoKQogICAgIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCk7CiAgICAg
ZGlzcGF0Y2hXaW5kb3dMb2FkRXZlbnQoKTsKICAgICBlbnF1ZXVlUGFnZXNob3dFdmVudChQYWdl
c2hvd0V2ZW50Tm90UGVyc2lzdGVkKTsKLSAgICBpZiAobV9wZW5kaW5nU3RhdGVPYmplY3QpCi0g
ICAgICAgIGVucXVldWVQb3BzdGF0ZUV2ZW50KG1fcGVuZGluZ1N0YXRlT2JqZWN0LnJlbGVhc2Uo
KSk7CisgICAgZW5xdWV1ZVBvcHN0YXRlRXZlbnQobV9wZW5kaW5nU3RhdGVPYmplY3QgPyBtX3Bl
bmRpbmdTdGF0ZU9iamVjdC5yZWxlYXNlKCkgOiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxW
YWx1ZSgpKTsKICAgICAKICAgICBpZiAoZikKICAgICAgICAgZi0+bG9hZGVyKCktPmhhbmRsZWRP
bmxvYWRFdmVudHMoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDRjZmI2YmM4ZGIyZjNlNzI0ZTAyYjdkNDhjMWJhOGM3
ZjFiZTQ5YTguLjkyOWZmMzhjNWY0MDI1NWQ4ZjVjZTZiZTMwNWM0NDQ0YTliZjFkODYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aApAQCAtODUsNyArODUsNiBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiBjbGFzcyBI
VE1MSGVhZEVsZW1lbnQ7CiBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OwogY2xhc3MgSFRNTE1hcEVs
ZW1lbnQ7Ci1jbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIEhpdFRlc3RSZXF1ZXN0OwogY2xhc3Mg
SGl0VGVzdFJlc3VsdDsKIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7CkBAIC05OTQsNiAr
OTkzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+
KTsKICAgICB2b2lkIGVucXVldWVQYWdlc2hvd0V2ZW50KFBhZ2VzaG93RXZlbnRQZXJzaXN0ZW5j
ZSk7CiAgICAgdm9pZCBlbnF1ZXVlSGFzaGNoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYgb2xkVVJM
LCBjb25zdCBTdHJpbmcmIG5ld1VSTCk7CisgICAgdm9pZCBlbnF1ZXVlUG9wc3RhdGVFdmVudChQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QpOwogCiAgICAgdm9p
ZCBhZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIoTWVkaWFDYW5TdGFydExpc3RlbmVyKik7CiAgICAg
dm9pZCByZW1vdmVNZWRpYUNhblN0YXJ0TGlzdGVuZXIoTWVkaWFDYW5TdGFydExpc3RlbmVyKik7
CkBAIC0xMDYyLDcgKzEwNjIsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjcmVhdGVTdHlsZVNl
bGVjdG9yKCk7CiAKLSAgICB2b2lkIGVucXVldWVQb3BzdGF0ZUV2ZW50KFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCk7CiAgICAgdm9pZCBwZW5kaW5nRXZlbnRU
aW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiopOwogCiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4g
aGFuZGxlWmVyb1BhZGRpbmcoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0Jikg
Y29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvV2Vi
Q29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAppbmRleCAxZjQ4OTVmMTU0ZGFjMTZlNGFiZDQ5
YzQ2ZDVjZjc0NDZmMWZhNDgwLi5mMGE0ZmVkYjZiNzAzMDc4NTFmZjlkNTlhYTdkNTE5NmY5YjIy
ZTQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCisrKyBiL1dl
YkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJh
bWVWaWV3LmgiCisjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiUGFnZVRyYW5zaXRpb25FdmVudC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KQEAgLTEwNiw2ICsxMDcsMTAgQEAgdm9pZCBDYWNoZWRGcmFtZUJhc2U6OnJlc3Rv
cmUoKQogICAgICAgICBtX2NoaWxkRnJhbWVzW2ldLT5vcGVuKCk7CiAKICAgICBtX2RvY3VtZW50
LT5lbnF1ZXVlUGFnZXNob3dFdmVudChQYWdlc2hvd0V2ZW50UGVyc2lzdGVkKTsKKyAgICAKKyAg
ICBIaXN0b3J5SXRlbSogaGlzdG9yeUl0ZW0gPSBmcmFtZS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+
Y3VycmVudEl0ZW0oKTsKKyAgICBtX2RvY3VtZW50LT5lbnF1ZXVlUG9wc3RhdGVFdmVudChoaXN0
b3J5SXRlbSAmJiBoaXN0b3J5SXRlbS0+c3RhdGVPYmplY3QoKSA/IGhpc3RvcnlJdGVtLT5zdGF0
ZU9iamVjdCgpIDogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7CisgICAgCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBpZiAobV9kb2N1bWVudC0+aGFzTGlzdGVuZXJU
eXBlKERvY3VtZW50OjpUT1VDSF9MSVNURU5FUikpCiAgICAgICAgIG1fZG9jdW1lbnQtPnBhZ2Uo
KS0+Y2hyb21lKCktPmNsaWVudCgpLT5uZWVkVG91Y2hFdmVudHModHJ1ZSk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKaW5kZXggMWI0ZTQ4OTRiNGZhM2JiMjY2YzQ1MzdjOTY2N2UwYzU0MDFhZWU0OS4u
ZDM0YzgyNDU5MjY5NTgxN2E1ZTE0N2RjODAzNDk3Y2E0ZTZiZDQyYSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcApAQCAtMTE3MywxMCArMTE3Myw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRJblNh
bWVEb2N1bWVudChjb25zdCBLVVJMJiB1cmwsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc3RhCiAK
ICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWROYXZpZ2F0ZVdpdGhpblBhZ2UoKTsKIAotICAgIGlm
IChzdGF0ZU9iamVjdCkgewotICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zdGF0ZVBvcHBl
ZChzdGF0ZU9iamVjdCk7Ci0gICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZFBvcFN0YXRlV2l0
aGluUGFnZSgpOwotICAgIH0KKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zdGF0ZVBvcHBlZChz
dGF0ZU9iamVjdCA/IHN0YXRlT2JqZWN0IDogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFs
dWUoKSk7CisgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCk7CiAg
ICAgCiAgICAgaWYgKGhhc2hDaGFuZ2UpIHsKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
ZW5xdWV1ZUhhc2hjaGFuZ2VFdmVudChvbGRVUkwsIHVybCk7CkBAIC0xOTUyLDcgKzE5NTAsOCBA
QCB2b2lkIEZyYW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9Db21taXR0ZWQoUGFzc1JlZlB0cjxDYWNo
ZWRQYWdlPiBjYWNoZWRQYWdlKQogCiAgICAgICAgICAgICAgICAgICAgIGhpc3RvcnkoKS0+dXBk
YXRlRm9yQmFja0ZvcndhcmROYXZpZ2F0aW9uKCk7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGhpc3RvcnkoKS0+Y3VycmVudEl0ZW0oKSkKKyAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGNh
Y2hlZCBwYWdlcywgQ2FjaGVkRnJhbWU6OnJlc3RvcmUgd2lsbCB0YWtlIGNhcmUgb2YgZmlyaW5n
IHRoZSBwb3BzdGF0ZSBldmVudCB3aXRoIHRoZSBoaXN0b3J5IGl0ZW0ncyBzdGF0ZSBvYmplY3QK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGhpc3RvcnkoKS0+Y3VycmVudEl0ZW0oKSAmJiAhY2Fj
aGVkUGFnZSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGVuZGluZ1N0YXRlT2JqZWN0ID0g
aGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpLT5zdGF0ZU9iamVjdCgpOwogCiAgICAgICAgICAgICAg
ICAgICAgIC8vIENyZWF0ZSBhIGRvY3VtZW50IHZpZXcgZm9yIHRoaXMgZG9jdW1lbnQsIG9yIHVz
ZWQgdGhlIGNhY2hlZCB2aWV3LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNv
bnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4
IDExYTAyNzc2ZDM0NDQ2NTNlMzFmZDBiYzk3MmFiZTA3M2I5MjhkNDUuLjMyYTZhOTFhOGUyNWIx
OTJkMTA2YzRiZGVjZmUxODg0ZmVmMWIwZjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0hp
c3RvcnlDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxl
ci5jcHAKQEAgLTY1NywxMiArNjU3LDYgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cHVzaFN0
YXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCwKICAgICBt
X2N1cnJlbnRJdGVtLT5zZXRTdGF0ZU9iamVjdChzdGF0ZU9iamVjdCk7CiAgICAgbV9jdXJyZW50
SXRlbS0+c2V0VVJMU3RyaW5nKHVybFN0cmluZyk7CiAKLSAgICAvLyBDcmVhdGUgYSBudWxsIHN0
YXRlIG9iamVjdCBmb3IgdGhlIHByZXZpb3VzIEhpc3RvcnlJdGVtIHNvIHRoYXQgd2Ugd2lsbAot
ICAgIC8vIGdlbmVyYXRlIGEgcG9wc3RhdGUgZXZlbnQgd2hlbiBuYXZpZ2F0aW5nIGJhY2sgdG8g
aXQuCi0gICAgLy8gRklYTUU6IGh0dHA6Ly93ZWJraXQub3JnL2IvNDEzNzIgaW1wbGllcyB0aGF0
IHdlIHNob3VsZG4ndCBuZWVkIHRoaXMuCi0gICAgaWYgKCFtX3ByZXZpb3VzSXRlbS0+c3RhdGVP
YmplY3QoKSkKLSAgICAgICAgbV9wcmV2aW91c0l0ZW0tPnNldFN0YXRlT2JqZWN0KFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCkpOwotCiAgICAgcGFnZS0+YmFja0ZvcndhcmRMaXN0KCkt
PmFkZEl0ZW0odG9wSXRlbS5yZWxlYXNlKCkpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>