<?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>74626</bug_id>
          
          <creation_ts>2011-12-15 10:48:11 -0800</creation_ts>
          <short_desc>Support HTML documents in XHR.responseXML</short_desc>
          <delta_ts>2011-12-16 14:17:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>54162</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jarred Nicholls">jarred</reporter>
          <assigned_to name="Jarred Nicholls">jarred</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
    
    <cc>sng</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>522046</commentid>
    <comment_count>0</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-12-15 10:48:11 -0800</bug_when>
    <thetext>Bring XHR.responseXML behavior up to the latest W3C spec</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522063</commentid>
    <comment_count>1</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-12-15 10:54:41 -0800</bug_when>
    <thetext>Latest W3C XHR spec details for the responseXML attribute:
http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#the-responsexml-attribute
http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#document-response-entity-body</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522078</commentid>
    <comment_count>2</comment_count>
      <attachid>119467</attachid>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-12-15 11:07:53 -0800</bug_when>
    <thetext>Created attachment 119467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522128</commentid>
    <comment_count>3</comment_count>
      <attachid>119467</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-15 12:10:39 -0800</bug_when>
    <thetext>Comment on attachment 119467
Patch

Attachment 119467 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10910403

New failing tests:
fast/frames/iframe-reparenting.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522134</commentid>
    <comment_count>4</comment_count>
      <attachid>119467</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-15 12:21:32 -0800</bug_when>
    <thetext>Comment on attachment 119467
Patch

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

Looks great. I think that tests can be made much clearer, so you may want to post an updated patch for another quick review round despite already having an r+.

Please add a test verifying that scripts don&apos;t run in HTML documents loaded with XHR. We have one for XHTML, and we should have one for HTML.

Please also add a test checking for strict/quirks modes - it&apos;s not immediately obvious whether setContent gets it right.

&gt; Source/WebCore/ChangeLog:8
&gt; +        Latest XHR spec from the W3C:
&gt; +        http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#the-responsexml-attribute
&gt; +        http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#document-response-entity-body

Please mention what changed. A link to the spec provides extremely little information, especially since editor&apos;s draft text will change in the future.

Added support for HTML is something that should be in bug title, in fact. This is the big change.

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:227
&gt; +        bool isHTML = responseMIMEType() == &quot;text/html&quot;;

This appears to match existing code for XML types, but I don&apos;t see where the code that changes MIME type to lower case is. MIME types are not case sensitive.

Would you be willing to investigate this (not in this bug)?

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:237
&gt; +                m_responseXML = static_pointer_cast&lt;Document, HTMLDocument&gt;(HTMLDocument::create(0, m_url));

Why is this cast needed? PassRefPtr&lt;U&gt; can be assigned to RefPtr&lt;T&gt; when U inherits from T.

Can we remove m_responseXML to m_responseDocument now?

&gt; LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML.html:60
&gt; +        var tests = [{

These tests are not checking variations of the same behavior, they are completely unrelated.

I strongly encourage you to split these into separate tests with their own expectations. This test is largely incomprehensible due to lots of things combined together, and failures in it will be very difficult to investigate when they happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522197</commentid>
    <comment_count>5</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-12-15 13:29:52 -0800</bug_when>
    <thetext>Thanks very much for the review!

(In reply to comment #4)
&gt; (From update of attachment 119467 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119467&amp;action=review
&gt; 
&gt; Looks great. I think that tests can be made much clearer, so you may want to post an updated patch for another quick review round despite already having an r+.
&gt; 
&gt; Please add a test verifying that scripts don&apos;t run in HTML documents loaded with XHR. We have one for XHTML, and we should have one for HTML.

Good call.

&gt; 
&gt; Please also add a test checking for strict/quirks modes - it&apos;s not immediately obvious whether setContent gets it right.

Ok sure that&apos;s simple.  I&apos;m not sure of how valuable of a test it is, but there&apos;s no harm in it I suppose.

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Latest XHR spec from the W3C:
&gt; &gt; +        http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#the-responsexml-attribute
&gt; &gt; +        http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#document-response-entity-body
&gt; 
&gt; Please mention what changed. A link to the spec provides extremely little information, especially since editor&apos;s draft text will change in the future.
&gt; 
&gt; Added support for HTML is something that should be in bug title, in fact. This is the big change.

Totally, I&apos;m spazzing today and meant to be verbose in the WebCore ChangeLog but not in the LayoutTests, and I ended up forgetting to fill in WebCore.

&gt; 
&gt; &gt; Source/WebCore/xml/XMLHttpRequest.cpp:227
&gt; &gt; +        bool isHTML = responseMIMEType() == &quot;text/html&quot;;
&gt; 
&gt; This appears to match existing code for XML types, but I don&apos;t see where the code that changes MIME type to lower case is. MIME types are not case sensitive.
&gt; 
&gt; Would you be willing to investigate this (not in this bug)?

I just did and in fact I should use equalIgnoringCase() here, particularly because someone can override the MIME type and may use mixed case.  Thanks!

&gt; 
&gt; &gt; Source/WebCore/xml/XMLHttpRequest.cpp:237
&gt; &gt; +                m_responseXML = static_pointer_cast&lt;Document, HTMLDocument&gt;(HTMLDocument::create(0, m_url));
&gt; 
&gt; Why is this cast needed? PassRefPtr&lt;U&gt; can be assigned to RefPtr&lt;T&gt; when U inherits from T.

I had a ternary (? :) statement and needed the types to be the same, but didn&apos;t change it back when I turned this into an if statement.  Thanks.

&gt; 
&gt; Can we remove m_responseXML to m_responseDocument now?

Yep!

&gt; 
&gt; &gt; LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML.html:60
&gt; &gt; +        var tests = [{
&gt; 
&gt; These tests are not checking variations of the same behavior, they are completely unrelated.
&gt; 
&gt; I strongly encourage you to split these into separate tests with their own expectations. This test is largely incomprehensible due to lots of things combined together, and failures in it will be very difficult to investigate when they happen.

Yeah I will split this test into multiple tests - the idea was to treat it as a unit test &quot;suite&quot; for responseXML, and unit test suites usually cover a complete function.  Nevertheless I can split them out.

I&apos;ll throw out a new patch soon, as soon as I figure out why trunk builds are broken w/ CSS Filters enabled :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522202</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-15 13:32:38 -0800</bug_when>
    <thetext>&gt; I just did and in fact I should use equalIgnoringCase() here, particularly because someone can override the MIME type and may use mixed case.

Thanks. Eventually, we&apos;ll need to take care of XML MIME types, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522208</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-15 13:34:44 -0800</bug_when>
    <thetext>By the way, this is largely a duplicate of bug 40982. It&apos;s usually best to fix the oldest duplicate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522213</commentid>
    <comment_count>8</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-12-15 13:43:35 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; By the way, this is largely a duplicate of bug 40982. It&apos;s usually best to fix the oldest duplicate.

Ah, thanks for pointing that out.  This patch does resolve that bug as well as the other compliancy issues (&quot;text&quot; responseType and error flag handling).  I can mark that one as being blocked by this so it&apos;s reporter is notified, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522480</commentid>
    <comment_count>9</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-12-15 20:23:48 -0800</bug_when>
    <thetext>*** Bug 40982 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522769</commentid>
    <comment_count>10</comment_count>
      <attachid>119618</attachid>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-12-16 09:11:32 -0800</bug_when>
    <thetext>Created attachment 119618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522886</commentid>
    <comment_count>11</comment_count>
      <attachid>119618</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-16 11:52:48 -0800</bug_when>
    <thetext>Comment on attachment 119618
Patch

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

Thank you! Separating the tests made them much easier to follow indeed.

Please do follow up with a bug on XML MIME type case sensitivity. Even for HTML, we still have a case sensitive comparison in XMLHttpRequest::didReceiveData!

I have s few comments, some of which need to be addressed. It doesn&apos;t appear necessary to have another review round, but you are of course welcome to post the patch for review again if you see a need for it.

&gt; Source/WebCore/ChangeLog:3
&gt; +        Bring XHR.responseXML behavior up to the latest W3C spec (error handling, HTML doc support, responseType compliance)

I still think that the correct title would be &quot;Support HTML documents in XHR.responseXML&quot;. It does make sense to structure your effort by API, but for people following WebKit development, HTML support is an order of magnitude more interesting than the other changes. In fact, if the other changes were anything major, I would have suggested moving those into separate patches.

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:227
&gt; +        bool isHTML = equalIgnoringCase(responseMIMEType(), &quot;text/html&quot;);

It would seem more robust to perform lowercasing earlier (either store a normalized content type, or have responseMIMEType() perform it). Not something that would be appropriate to do in this patch.

&gt; LayoutTests/fast/frames/iframe-reparenting.html:67
&gt;      xhr.open(&quot;GET&quot;,&quot;data:text/html,&lt;html xmlns=&apos;http://www.w3.org/1999/xhtml&apos;&gt;&lt;body id=&apos;body&apos;&gt;Hello&lt;/body&gt;&lt;/html&gt;&quot;, false);
&gt; +    xhr.responseType = &apos;document&apos;;

I would have changed data URL MIME type instead, so that the test would take the same code path as before. It used to perform XML parsing.

&gt; LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-after-error.html:6
&gt; +        description(&apos;This tests the XMLHttpRequest responseXML attribute accessibility after a network error.&apos;);

Maybe s/accessibility/availability/ ?

&gt; LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-after-error.html:18
&gt; +            shouldBeNull(&apos;xhr.responseXML&apos;);

How did this test fail before your changes? There is no data, so it seems that parsing would have failed anyway, producing a null document.

&gt; LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-html-no-responsetype.html:41
&gt; +    &lt;!-- Leave these break tags malformed/open to test HTML parsing.
&gt; +         They should be siblings to div#description, and not nested within one another.
&gt; +         The XMLDocument parser would treat the second &lt;br&gt; as a child to the first. --&gt;
&gt; +    &lt;br&gt;&lt;br&gt;
&gt; +
&gt; +    &lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
&gt; +
&gt; +    &lt;script&gt;
&gt; +        // This code will manipulate the first BR node by adding an &quot;id&quot; to it.
&gt; +        // This same BR will be inspected after XHR loads the document to see
&gt; +        // if this script executed or not.  If it didn&apos;t execute, the first BR
&gt; +        // will not have an &quot;id&quot; specified and the test passes.
&gt; +        var br = document.querySelector(&apos;div#description + br&apos;);
&gt; +        br.id = &apos;break-tag&apos;;
&gt; +    &lt;/script&gt;

Please remove this part, it&apos;s not used in this test.

&gt; LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-xml-no-responsetype.html:6
&gt; +        description(&apos;This tests the XMLHttpRequest responseXML loading an XML document with no specified responseType.&apos;);

Is this test needed? We have lots of tests for responseXML that were written before responseType existed.

&gt; LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-xml-text-responsetype.html:13
&gt; +            shouldThrow(&apos;xhr.responseXML&apos;, &apos;&quot;Error: INVALID_STATE_ERR: DOM Exception 11&quot;&apos;);

Whenever possible, I prefer tests that can pass in other browsers. Hardcoding error string will unnecessarily limit PASS to WebKit, or maybe even to WebKit with JSC (or V8) bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522912</commentid>
    <comment_count>12</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-12-16 12:13:15 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 119618 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119618&amp;action=review
&gt; 
&gt; Thank you! Separating the tests made them much easier to follow indeed.
&gt; 
&gt; Please do follow up with a bug on XML MIME type case sensitivity. Even for HTML, we still have a case sensitive comparison in XMLHttpRequest::didReceiveData!

Yep, I&apos;m going to do a separate bug for this :)  Already have down where I&apos;m making changes.

&gt; 
&gt; I have s few comments, some of which need to be addressed. It doesn&apos;t appear necessary to have another review round, but you are of course welcome to post the patch for review again if you see a need for it.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        Bring XHR.responseXML behavior up to the latest W3C spec (error handling, HTML doc support, responseType compliance)
&gt; 
&gt; I still think that the correct title would be &quot;Support HTML documents in XHR.responseXML&quot;. It does make sense to structure your effort by API, but for people following WebKit development, HTML support is an order of magnitude more interesting than the other changes. In fact, if the other changes were anything major, I would have suggested moving those into separate patches.

Okay this is fine.  You don&apos;t mind that the other compliance corrections are a part of this patch?

&gt; 
&gt; &gt; Source/WebCore/xml/XMLHttpRequest.cpp:227
&gt; &gt; +        bool isHTML = equalIgnoringCase(responseMIMEType(), &quot;text/html&quot;);
&gt; 
&gt; It would seem more robust to perform lowercasing earlier (either store a normalized content type, or have responseMIMEType() perform it). Not something that would be appropriate to do in this patch.

I can do a separate patch to cache a lowercased MIME type string in responseMIMEType(), which is reset along with all the other buffers in clearBuffers()..or wherever it makes sense (we can have that conversation on that patch).

&gt; 
&gt; &gt; LayoutTests/fast/frames/iframe-reparenting.html:67
&gt; &gt;      xhr.open(&quot;GET&quot;,&quot;data:text/html,&lt;html xmlns=&apos;http://www.w3.org/1999/xhtml&apos;&gt;&lt;body id=&apos;body&apos;&gt;Hello&lt;/body&gt;&lt;/html&gt;&quot;, false);
&gt; &gt; +    xhr.responseType = &apos;document&apos;;
&gt; 
&gt; I would have changed data URL MIME type instead, so that the test would take the same code path as before. It used to perform XML parsing.

Will change.

&gt; 
&gt; &gt; LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-after-error.html:6
&gt; &gt; +        description(&apos;This tests the XMLHttpRequest responseXML attribute accessibility after a network error.&apos;);
&gt; 
&gt; Maybe s/accessibility/availability/ ?
&gt; 
&gt; &gt; LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-after-error.html:18
&gt; &gt; +            shouldBeNull(&apos;xhr.responseXML&apos;);
&gt; 
&gt; How did this test fail before your changes? There is no data, so it seems that parsing would have failed anyway, producing a null document.

Yes this is true, the output is the same and I&apos;ve already considered dropping this test since it&apos;s not capable of proving the path of the code in a black-box manner.  You&apos;re ok with me dropping it, or do you have any ideas on how to test the error flag check is occurring?  The current test assumes knowledge of the code: 1) an error has occurred because of a forced network error, and 2) the readyState is DONE - so with the knowledge of the code itself, you can deduct we are exiting the function early and not attempting to create a Document.  But this is not an acceptable black-box test as-is.

&gt; 
&gt; &gt; LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-html-no-responsetype.html:41
&gt; &gt; +    &lt;!-- Leave these break tags malformed/open to test HTML parsing.
&gt; &gt; +         They should be siblings to div#description, and not nested within one another.
&gt; &gt; +         The XMLDocument parser would treat the second &lt;br&gt; as a child to the first. --&gt;
&gt; &gt; +    &lt;br&gt;&lt;br&gt;
&gt; &gt; +
&gt; &gt; +    &lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
&gt; &gt; +
&gt; &gt; +    &lt;script&gt;
&gt; &gt; +        // This code will manipulate the first BR node by adding an &quot;id&quot; to it.
&gt; &gt; +        // This same BR will be inspected after XHR loads the document to see
&gt; &gt; +        // if this script executed or not.  If it didn&apos;t execute, the first BR
&gt; &gt; +        // will not have an &quot;id&quot; specified and the test passes.
&gt; &gt; +        var br = document.querySelector(&apos;div#description + br&apos;);
&gt; &gt; +        br.id = &apos;break-tag&apos;;
&gt; &gt; +    &lt;/script&gt;
&gt; 
&gt; Please remove this part, it&apos;s not used in this test.

Yep.

&gt; 
&gt; &gt; LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-xml-no-responsetype.html:6
&gt; &gt; +        description(&apos;This tests the XMLHttpRequest responseXML loading an XML document with no specified responseType.&apos;);
&gt; 
&gt; Is this test needed? We have lots of tests for responseXML that were written before responseType existed.

True, I can remove it.

&gt; 
&gt; &gt; LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-xml-text-responsetype.html:13
&gt; &gt; +            shouldThrow(&apos;xhr.responseXML&apos;, &apos;&quot;Error: INVALID_STATE_ERR: DOM Exception 11&quot;&apos;);
&gt; 
&gt; Whenever possible, I prefer tests that can pass in other browsers. Hardcoding error string will unnecessarily limit PASS to WebKit, or maybe even to WebKit with JSC (or V8) bindings.

That&apos;s true, this would only pass in WebKit browers (this does happen to work in V8 and JSC, but I got lucky).  I&apos;ll leave out the string and just call shouldThrow(&apos;xhr.responseXML&apos;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522967</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-16 13:08:33 -0800</bug_when>
    <thetext>&gt; You&apos;re ok with me dropping it, or do you have any ideas on how to test the error flag check is occurring?

I&apos;m a little confused here. For &quot;resources/xmlhttprequest-get-data.xml/i/dont/exist&quot;, you&apos;re getting an onerror callback. Why? Can you use a PHP script to have the same HTTP status code, but with an XML response body?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522968</commentid>
    <comment_count>14</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-12-16 13:10:56 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; You&apos;re ok with me dropping it, or do you have any ideas on how to test the error flag check is occurring?
&gt; 
&gt; I&apos;m a little confused here. For &quot;resources/xmlhttprequest-get-data.xml/i/dont/exist&quot;, you&apos;re getting an onerror callback. Why? Can you use a PHP script to have the same HTTP status code, but with an XML response body?

Easy cheesy :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523013</commentid>
    <comment_count>15</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-12-16 14:03:29 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; You&apos;re ok with me dropping it, or do you have any ideas on how to test the error flag check is occurring?
&gt; 
&gt; I&apos;m a little confused here. For &quot;resources/xmlhttprequest-get-data.xml/i/dont/exist&quot;, you&apos;re getting an onerror callback. Why? Can you use a PHP script to have the same HTTP status code, but with an XML response body?

Ok I misread this.  So the idea here was to trip the m_error flag to true, which only occurs on a network error or when abort() is called (we don&apos;t have timeout support it seems, which I will be adding no doubt!).  A network error is unrelated to an HTTP error (rightfully so), so unfortunately the idea of returning an HTTP error status code w/ XML data will not work: the error flag will not be triggered and the &quot;load&quot; event is fired.

I&apos;m going to remove the aforementioned test, and will do response availability tests when adding in timeout support (because then this is easily testable w/ timeout support).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523018</commentid>
    <comment_count>16</comment_count>
      <attachid>119667</attachid>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-12-16 14:11:33 -0800</bug_when>
    <thetext>Created attachment 119667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523023</commentid>
    <comment_count>17</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-12-16 14:17:06 -0800</bug_when>
    <thetext>Committed r103106: &lt;http://trac.webkit.org/changeset/103106&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119467</attachid>
            <date>2011-12-15 11:07:53 -0800</date>
            <delta_ts>2011-12-16 09:11:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74626-20111215140750.patch</filename>
            <type>text/plain</type>
            <size>12894</size>
            <attacher name="Jarred Nicholls">jarred</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyOTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGRiMDIwNDUyMjgzMmJi
OGQzMTAzNjJmZWU5ZjVhY2MyYzJmM2EyMi4uMjVkYTE5MmUzNTUzY2E0YTEwZGM4MGY2Zjg2NWY0
Mjk5YTM4N2E1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTEyLTE1ICBKYXJy
ZWQgTmljaG9sbHMgIDxqYXJyZWRAc2VuY2hhLmNvbT4KKworICAgICAgICBCcmluZyBYSFIucmVz
cG9uc2VYTUwgYmVoYXZpb3IgdXAgdG8gdGhlIGxhdGVzdCBXM0Mgc3BlYworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2MjYKKworICAgICAgICBMYXRl
c3QgWEhSIHNwZWMgZnJvbSB0aGUgVzNDOgorICAgICAgICBodHRwOi8vZHZjcy53My5vcmcvaGcv
eGhyL3Jhdy1maWxlL3RpcC9PdmVydmlldy5odG1sI3RoZS1yZXNwb25zZXhtbC1hdHRyaWJ1dGUK
KyAgICAgICAgaHR0cDovL2R2Y3MudzMub3JnL2hnL3hoci9yYXctZmlsZS90aXAvT3ZlcnZpZXcu
aHRtbCNkb2N1bWVudC1yZXNwb25zZS1lbnRpdHktYm9keQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QveG1saHR0cHJlcXVlc3QveG1s
aHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwuaHRtbAorCisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVhNTCk6
CisKIDIwMTEtMTItMTUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDI4MjkuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAppbmRleCBkMmFjODRhZjQ3NTNkZTlkNjM3OTEwYTU4MzhhMGNlNDc0OGY1
N2NhLi5lZmE0NmNmNTJkMTAyMjFmNTFjYjdmYWRmODQwMzkyZTY0MWZiMzZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogI2luY2x1ZGUg
IkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCiAj
aW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKICNpbmNsdWRlICJF
dmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJGaWxlLmgiCisjaW5jbHVkZSAiSFRNTERvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJIVFRQVmFsaWRhdGlvbi5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgpAQCAtMjE1LDIwICsyMTUsMjgg
QEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVRleHQoRXhjZXB0aW9uQ29kZSYgZWMp
CiAKIERvY3VtZW50KiBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VYTUwoRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgaWYgKG1fcmVzcG9uc2VUeXBlQ29kZSAhPSBSZXNwb25zZVR5cGVEZWZhdWx0
ICYmIG1fcmVzcG9uc2VUeXBlQ29kZSAhPSBSZXNwb25zZVR5cGVUZXh0ICYmIG1fcmVzcG9uc2VU
eXBlQ29kZSAhPSBSZXNwb25zZVR5cGVEb2N1bWVudCkgeworICAgIGlmIChtX3Jlc3BvbnNlVHlw
ZUNvZGUgIT0gUmVzcG9uc2VUeXBlRGVmYXVsdCAmJiBtX3Jlc3BvbnNlVHlwZUNvZGUgIT0gUmVz
cG9uc2VUeXBlRG9jdW1lbnQpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKG1fc3RhdGUgIT0gRE9ORSkKKyAgICBp
ZiAobV9lcnJvciB8fCBtX3N0YXRlICE9IERPTkUpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
aWYgKCFtX2NyZWF0ZWREb2N1bWVudCkgewotICAgICAgICBpZiAoKG1fcmVzcG9uc2UuaXNIVFRQ
KCkgJiYgIXJlc3BvbnNlSXNYTUwoKSkgfHwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dv
cmtlckNvbnRleHQoKSkgewotICAgICAgICAgICAgLy8gVGhlIFczQyBzcGVjIHJlcXVpcmVzIHRo
aXMuCisgICAgICAgIGJvb2wgaXNIVE1MID0gcmVzcG9uc2VNSU1FVHlwZSgpID09ICJ0ZXh0L2h0
bWwiOworCisgICAgICAgIC8vIFRoZSBXM0Mgc3BlYyByZXF1aXJlcyB0aGUgZmluYWwgTUlNRSB0
eXBlIHRvIGJlIHNvbWUgdmFsaWQgWE1MIHR5cGUsIG9yIHRleHQvaHRtbC4KKyAgICAgICAgLy8g
SWYgaXQgaXMgdGV4dC9odG1sLCB0aGVuIHRoZSByZXNwb25zZVR5cGUgb2YgImRvY3VtZW50IiBt
dXN0IGhhdmUgYmVlbiBzdXBwbGllZCBleHBsaWNpdGx5LgorICAgICAgICBpZiAoKG1fcmVzcG9u
c2UuaXNIVFRQKCkgJiYgIXJlc3BvbnNlSXNYTUwoKSAmJiAhaXNIVE1MKQorICAgICAgICAgICAg
fHwgKGlzSFRNTCAmJiBtX3Jlc3BvbnNlVHlwZUNvZGUgPT0gUmVzcG9uc2VUeXBlRGVmYXVsdCkK
KyAgICAgICAgICAgIHx8IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrZXJDb250ZXh0
KCkpIHsKICAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwgPSAwOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgbV9yZXNwb25zZVhNTCA9IERvY3VtZW50OjpjcmVhdGUoMCwgbV91cmwpOwor
ICAgICAgICAgICAgaWYgKGlzSFRNTCkKKyAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlWE1MID0g
c3RhdGljX3BvaW50ZXJfY2FzdDxEb2N1bWVudCwgSFRNTERvY3VtZW50PihIVE1MRG9jdW1lbnQ6
OmNyZWF0ZSgwLCBtX3VybCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1f
cmVzcG9uc2VYTUwgPSBEb2N1bWVudDo6Y3JlYXRlKDAsIG1fdXJsKTsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBTZXQgTGFzdC1Nb2RpZmllZC4KICAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwtPnNl
dENvbnRlbnQobV9yZXNwb25zZUJ1aWxkZXIudG9TdHJpbmdQcmVzZXJ2ZUNhcGFjaXR5KCkpOwog
ICAgICAgICAgICAgbV9yZXNwb25zZVhNTC0+c2V0U2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmln
aW4oKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZWZiNGYwZmUxMDMzNjRkMjM0NThjODM2Y2E5Y2RiMDc4NGU3MjcwZi4u
ZmY4OWFkYmMxY2MyMzY5MjZlMTU4MjI3OTk1NmY4MjNmNDJhNGQwMCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDExLTEyLTE1ICBKYXJyZWQgTmljaG9sbHMgIDxqYXJyZWRAc2VuY2hhLmNvbT4K
KworICAgICAgICBCcmluZyBYSFIucmVzcG9uc2VYTUwgYmVoYXZpb3IgdXAgdG8gdGhlIGxhdGVz
dCBXM0Mgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzQ2MjYKKworICAgICAgICBBIG5ldyB0ZXN0IHRoYXQgY292ZXJzIHRoZSBmdW5jdGlvbmFs
aXR5IGFzIGRlc2NyaWJlZCBpbiB0aGUgc3BlYzoKKyAgICAgICAgaHR0cDovL2R2Y3MudzMub3Jn
L2hnL3hoci9yYXctZmlsZS90aXAvT3ZlcnZpZXcuaHRtbCN0aGUtcmVzcG9uc2V4bWwtYXR0cmli
dXRlCisgICAgICAgIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy94aHIvcmF3LWZpbGUvdGlwL092ZXJ2
aWV3Lmh0bWwjZG9jdW1lbnQtcmVzcG9uc2UtZW50aXR5LWJvZHkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QveG1saHR0cHJlcXVlc3QvcmVz
b3VyY2VzL3htbGh0dHByZXF1ZXN0LWdldC1pbnZhbGlkLWRhdGEueG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVx
dWVzdC1yZXNwb25zZVhNTC5odG1sOiBBZGRlZC4KKwogMjAxMS0xMi0xNSAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjEwMjgyOS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QvcmVz
b3VyY2VzL3htbGh0dHByZXF1ZXN0LWdldC1pbnZhbGlkLWRhdGEueG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMveG1saHR0cHJlcXVlc3QtZ2V0LWludmFsaWQt
ZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzEwNmM5ZmZjNzQ4NzIyNDI5NjRhY2VhY2JlM2I3ZWFjNjJl
NGVhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3Qv
cmVzb3VyY2VzL3htbGh0dHByZXF1ZXN0LWdldC1pbnZhbGlkLWRhdGEueG1sCkBAIC0wLDAgKzEs
OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgZG9jIFsKKzwhQVRUTElTVCBk
IGlkIElEICNJTVBMSUVEPgorXT4KKzxkb2M+CisgIDxmb28geG1sbnM9ImZvb2JhciI+T25lPC9m
b28+IDx4OmJhciB4bWxuczp4PSJiYXJmb28iPlR3bzwveDpiYXI+CisgIDxkIGlkPSJpZDMiPlRo
cmVlCis8L2RvYz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3Qv
eG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWEyOGI4NmY5YmZhY2M4YWMyYmJiOGZhMTllYjMxN2FjN2NmMjk3NgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJl
cXVlc3QtcmVzcG9uc2VYTUwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDggQEAKK1RoaXMgdGVz
dHMgdGhlIFhNTEh0dHBSZXF1ZXN0IHJlc3BvbnNlWE1MIGF0dHJpYnV0ZQorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworCitUZXN0IGxvYWRpbmcgWE1MIGRhdGEgd2l0aCBubyByZXNw
b25zZVR5cGUgc2V0OgorUEFTUyBbb2JqZWN0IERvY3VtZW50XSBpcyBub24tbnVsbC4KK1BBU1Mg
eGhyLnJlc3BvbnNlWE1MIGluc3RhbmNlb2YgRG9jdW1lbnQgaXMgdHJ1ZQorUEFTUyBbb2JqZWN0
IEVsZW1lbnRdIGlzIG5vbi1udWxsLgorUEFTUyBpZDMudGV4dENvbnRlbnQgaXMgIlRocmVlIgor
CitUZXN0IGxvYWRpbmcgWE1MIGRhdGEgd2l0aCAiZG9jdW1lbnQiIHJlc3BvbnNlVHlwZSBzZXQ6
CitQQVNTIFtvYmplY3QgRG9jdW1lbnRdIGlzIG5vbi1udWxsLgorUEFTUyB4aHIucmVzcG9uc2VY
TUwgaW5zdGFuY2VvZiBEb2N1bWVudCBpcyB0cnVlCitQQVNTIFtvYmplY3QgRWxlbWVudF0gaXMg
bm9uLW51bGwuCitQQVNTIGlkMy50ZXh0Q29udGVudCBpcyAiVGhyZWUiCisKK1Rlc3QgbG9hZGlu
ZyBYTUwgZGF0YSB3aXRoICJ0ZXh0IiByZXNwb25zZVR5cGUgc2V0OgorUEFTUyB4aHIucmVzcG9u
c2VYTUwgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxMS4KKworVGVzdCBsb2FkaW5nIG1hbGZvcm1lZCBYTUwgZGF0YSB3aXRoICJkb2N1bWVu
dCIgcmVzcG9uc2VUeXBlIHNldDoKK1BBU1MgeGhyLnJlc3BvbnNlWE1MIGlzIG51bGwKKworVGVz
dCBsb2FkaW5nIEhUTUwgZGF0YSB3aXRoIG5vIHJlc3BvbnNlVHlwZSBzZXQ6CitQQVNTIHhoci5y
ZXNwb25zZVhNTCBpcyBudWxsCisKK1Rlc3QgbG9hZGluZyBIVE1MIGRhdGEgd2l0aCAiZG9jdW1l
bnQiIHJlc3BvbnNlVHlwZSBzZXQ6CitQQVNTIFtvYmplY3QgSFRNTERvY3VtZW50XSBpcyBub24t
bnVsbC4KK1BBU1MgeGhyLnJlc3BvbnNlWE1MIGluc3RhbmNlb2YgRG9jdW1lbnQgaXMgdHJ1ZQor
VGhlIHR3byBvcGVuIDxicj4gZWxlbWVudHMgc2hvdWxkIGJlIHNpYmxpbmdzIG9mIG9uZSBhbm90
aGVyIGFuZCBub3QgbmVzdGVkIHBlciBIVE1MIHBhcnNlciBzcGVjLgorUEFTUyBjaGlsZHJlbi5s
ZW5ndGggaXMgNAorUEFTUyBjaGlsZHJlblswXS50YWdOYW1lIGlzICJESVYiCitQQVNTIGNoaWxk
cmVuWzBdLmlkIGlzICJkZXNjcmlwdGlvbiIKK1BBU1MgY2hpbGRyZW5bMV0udGFnTmFtZSBpcyAi
QlIiCitQQVNTIGNoaWxkcmVuWzJdLnRhZ05hbWUgaXMgIkJSIgorCitUZXN0IHJlc3BvbnNlWE1M
IGFjY2VzcyBhZnRlciBhIG5ldHdvcmsgZXJyb3I6CitPbiBhIG5ldHdvcmsgZXJyb3IsIHRoZSBz
dGF0ZSBpcyBET05FIGJ1dCB0aGUgZXJyb3IgZmxhZyBzaG91bGQgYWxzbyBiZSBjaGVja2VkIHRv
IHJlc3RyaWN0IGFjY2VzcyBhdHRlbXB0cyB0byByZXNwb25zZVhNTC4KK1BBU1MgeGhyLnJlYWR5
U3RhdGUgaXMgNAorUEFTUyB4aHIucmVzcG9uc2VYTUwgaXMgbnVsbAorCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVz
cG9uc2VYTUwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDIzYjUyMzI5YmE5ZDUyY2Q2MDhkYjc5OTFlM2Yw
MjFkMmE3ZGRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVx
dWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC5odG1sCkBAIC0wLDAgKzEsMTQxIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAg
ZGVzY3JpcHRpb24oJ1RoaXMgdGVzdHMgdGhlIFhNTEh0dHBSZXF1ZXN0IHJlc3BvbnNlWE1MIGF0
dHJpYnV0ZScpOworICAgICAgICB2YXIgeGhyLCBpZDMsIGRvYywgY2hpbGRyZW47CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9hZFhNTFdpdGhOb1Jlc3BvbnNlVHlwZSgpIHsKKyAgICAgICAgICAgIHNo
b3VsZEJlTm9uTnVsbCh4aHIucmVzcG9uc2VYTUwpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVl
KCd4aHIucmVzcG9uc2VYTUwgaW5zdGFuY2VvZiBEb2N1bWVudCcpOworCisgICAgICAgICAgICBp
ZDMgPSB4aHIucmVzcG9uc2VYTUwuZ2V0RWxlbWVudEJ5SWQoJ2lkMycpOworICAgICAgICAgICAg
c2hvdWxkQmVOb25OdWxsKGlkMyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J2lkMy50ZXh0Q29udGVudCcsICdUaHJlZScpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gbG9hZFhNTFdpdGhEb2NSZXNwb25zZVR5cGUoKSB7CisgICAgICAgICAgICBzaG91bGRCZU5v
bk51bGwoeGhyLnJlc3BvbnNlWE1MKTsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgneGhyLnJl
c3BvbnNlWE1MIGluc3RhbmNlb2YgRG9jdW1lbnQnKTsKKworICAgICAgICAgICAgaWQzID0geGhy
LnJlc3BvbnNlWE1MLmdldEVsZW1lbnRCeUlkKCdpZDMnKTsKKyAgICAgICAgICAgIHNob3VsZEJl
Tm9uTnVsbChpZDMpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdpZDMudGV4
dENvbnRlbnQnLCAnVGhyZWUnKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGxvYWRY
TUxXaXRoVGV4dFJlc3BvbnNlVHlwZSgpIHsKKyAgICAgICAgICAgIHNob3VsZFRocm93KCd4aHIu
cmVzcG9uc2VYTUwnLCAnIkVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAx
MSInKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGxvYWRJbnZhbGlkWE1MV2l0aERv
Y1Jlc3BvbnNlVHlwZSgpIHsKKyAgICAgICAgICAgIHNob3VsZEJlTnVsbCgneGhyLnJlc3BvbnNl
WE1MJyk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBsb2FkSFRNTFdpdGhOb1Jlc3Bv
bnNlVHlwZSgpIHsKKyAgICAgICAgICAgIHNob3VsZEJlTnVsbCgneGhyLnJlc3BvbnNlWE1MJyk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBsb2FkSFRNTFdpdGhEb2NSZXNwb25zZVR5
cGUoKSB7CisgICAgICAgICAgICBzaG91bGRCZU5vbk51bGwoeGhyLnJlc3BvbnNlWE1MKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlVHJ1ZSgneGhyLnJlc3BvbnNlWE1MIGluc3RhbmNlb2YgRG9jdW1l
bnQnKTsKKworICAgICAgICAgICAgZGVidWcoJ1RoZSB0d28gb3BlbiAmbHQ7YnImZ3Q7IGVsZW1l
bnRzIHNob3VsZCBiZSBzaWJsaW5ncyBvZiBvbmUgYW5vdGhlciBhbmQgbm90IG5lc3RlZCBwZXIg
SFRNTCBwYXJzZXIgc3BlYy4nKTsKKworICAgICAgICAgICAgLy8gR2V0IHRoZSBjaGlsZHJlbiBv
ZiB0aGUgYm9keSB0YWcsIHVzaW5nIFFTQSB0byBza2lwIGFsbCB0ZXh0IG5vZGVzLgorICAgICAg
ICAgICAgY2hpbGRyZW4gPSB4aHIucmVzcG9uc2VYTUwucXVlcnlTZWxlY3RvckFsbCgnYm9keSA+
IConKTsKKyAgICAgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ2NoaWxkcmVuLmxlbmd0aCcsIDQp
OworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdjaGlsZHJlblswXS50YWdOYW1l
JywgJ0RJVicpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdjaGlsZHJlblsw
XS5pZCcsICdkZXNjcmlwdGlvbicpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdjaGlsZHJlblsxXS50YWdOYW1lJywgJ0JSJyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2NoaWxkcmVuWzJdLnRhZ05hbWUnLCAnQlInKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG5ldHdvcmtFcnJvcigpIHsKKyAgICAgICAgICAgIGRlYnVnKCdPbiBhIG5l
dHdvcmsgZXJyb3IsIHRoZSBzdGF0ZSBpcyBET05FIGJ1dCB0aGUgZXJyb3IgZmxhZyBzaG91bGQg
YWxzbyBiZSBjaGVja2VkIHRvIHJlc3RyaWN0IGFjY2VzcyBhdHRlbXB0cyB0byByZXNwb25zZVhN
TC4nKTsKKyAgICAgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ3hoci5yZWFkeVN0YXRlJywgNCk7
CisgICAgICAgICAgICBzaG91bGRCZU51bGwoJ3hoci5yZXNwb25zZVhNTCcpOworICAgICAgICB9
CisKKyAgICAgICAgdmFyIHRlc3RzID0gW3sKKyAgICAgICAgICAgICAgICBkZXNjOiAnPGJyIC8+
VGVzdCBsb2FkaW5nIFhNTCBkYXRhIHdpdGggbm8gcmVzcG9uc2VUeXBlIHNldDonLAorICAgICAg
ICAgICAgICAgIHVybDogJ3Jlc291cmNlcy94bWxodHRwcmVxdWVzdC1nZXQtZGF0YS54bWwnLAor
ICAgICAgICAgICAgICAgIG9ubG9hZDogbG9hZFhNTFdpdGhOb1Jlc3BvbnNlVHlwZQorICAgICAg
ICAgICAgfSwgeworICAgICAgICAgICAgICAgIGRlc2M6ICc8YnIgLz5UZXN0IGxvYWRpbmcgWE1M
IGRhdGEgd2l0aCAiZG9jdW1lbnQiIHJlc3BvbnNlVHlwZSBzZXQ6JywKKyAgICAgICAgICAgICAg
ICB1cmw6ICdyZXNvdXJjZXMveG1saHR0cHJlcXVlc3QtZ2V0LWRhdGEueG1sJywKKyAgICAgICAg
ICAgICAgICByZXNwb25zZVR5cGU6ICdkb2N1bWVudCcsCisgICAgICAgICAgICAgICAgb25sb2Fk
OiBsb2FkWE1MV2l0aERvY1Jlc3BvbnNlVHlwZQorICAgICAgICAgICAgfSwgeworICAgICAgICAg
ICAgICAgIGRlc2M6ICc8YnIgLz5UZXN0IGxvYWRpbmcgWE1MIGRhdGEgd2l0aCAidGV4dCIgcmVz
cG9uc2VUeXBlIHNldDonLAorICAgICAgICAgICAgICAgIHVybDogJ3Jlc291cmNlcy94bWxodHRw
cmVxdWVzdC1nZXQtZGF0YS54bWwnLAorICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ3Rl
eHQnLAorICAgICAgICAgICAgICAgIG9ubG9hZDogbG9hZFhNTFdpdGhUZXh0UmVzcG9uc2VUeXBl
CisgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgZGVzYzogJzxiciAvPlRlc3QgbG9h
ZGluZyBtYWxmb3JtZWQgWE1MIGRhdGEgd2l0aCAiZG9jdW1lbnQiIHJlc3BvbnNlVHlwZSBzZXQ6
JywKKyAgICAgICAgICAgICAgICB1cmw6ICdyZXNvdXJjZXMveG1saHR0cHJlcXVlc3QtZ2V0LWlu
dmFsaWQtZGF0YS54bWwnLAorICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2RvY3VtZW50
JywKKyAgICAgICAgICAgICAgICBvbmxvYWQ6IGxvYWRJbnZhbGlkWE1MV2l0aERvY1Jlc3BvbnNl
VHlwZQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIGRlc2M6ICc8YnIgLz5UZXN0
IGxvYWRpbmcgSFRNTCBkYXRhIHdpdGggbm8gcmVzcG9uc2VUeXBlIHNldDonLAorICAgICAgICAg
ICAgICAgIHVybDogd2luZG93LmxvY2F0aW9uLCAvLyBXaWxsIGxvYWQgcGFnZSBhcyB0ZXh0L2h0
bWwgTUlNRSB0eXBlLgorICAgICAgICAgICAgICAgIG9ubG9hZDogbG9hZEhUTUxXaXRoTm9SZXNw
b25zZVR5cGUKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgICBkZXNjOiAnPGJyIC8+
VGVzdCBsb2FkaW5nIEhUTUwgZGF0YSB3aXRoICJkb2N1bWVudCIgcmVzcG9uc2VUeXBlIHNldDon
LAorICAgICAgICAgICAgICAgIHVybDogd2luZG93LmxvY2F0aW9uLCAvLyBXaWxsIGxvYWQgcGFn
ZSBhcyB0ZXh0L2h0bWwgTUlNRSB0eXBlLgorICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTog
J2RvY3VtZW50JywKKyAgICAgICAgICAgICAgICBvbmxvYWQ6IGxvYWRIVE1MV2l0aERvY1Jlc3Bv
bnNlVHlwZQorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgIGRlc2M6ICc8YnIgLz5U
ZXN0IHJlc3BvbnNlWE1MIGFjY2VzcyBhZnRlciBhIG5ldHdvcmsgZXJyb3I6JywKKyAgICAgICAg
ICAgICAgICB1cmw6ICdyZXNvdXJjZXMveG1saHR0cHJlcXVlc3QtZ2V0LWRhdGEueG1sL2kvZG9u
dC9leGlzdCcsCisgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnZG9jdW1lbnQnLAorICAg
ICAgICAgICAgICAgIG9uZXJyb3I6IG5ldHdvcmtFcnJvcgorICAgICAgICAgICAgfV0sCisgICAg
ICAgICAgICBpID0gLTEsCisKKyAgICAgICAgICAgIG5leHQgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoKytpID09IHRlc3RzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAg
ICBkZWJ1ZygnJyk7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgdmFyIHRlc3QgPSB0ZXN0c1tpXTsKKyAgICAgICAgICAgICAgICB4aHIgPSBuZXcgWE1MSHR0
cFJlcXVlc3QoKTsKKyAgICAgICAgICAgICAgICBkZWJ1Zyh0ZXN0LmRlc2MpOworICAgICAgICAg
ICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVz
dC5vbmxvYWQoKTsKKyAgICAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgICAg
IH07CisgICAgICAgICAgICAgICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHRlc3Qub25lcnJvcikgeworICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdC5vbmVycm9yKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdYSFIgZXJyb3Igb2NjdXJyZWQgd2hpbGUgbG9hZGlu
ZyAiJyArIHRlc3QudXJsICsgJyInKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB4
aHIub3BlbignR0VUJywgdGVzdC51cmwpOworCisgICAgICAgICAgICAgICAgaWYgKHRlc3QucmVz
cG9uc2VUeXBlKSB7CisgICAgICAgICAgICAgICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSB0ZXN0
LnJlc3BvbnNlVHlwZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgeGhyLnNl
bmQobnVsbCk7CisgICAgICAgICAgICB9OworCisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKyAgICAgICAgbmV4dCgpOworICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKworICAgIDwhLS0gTGVhdmUg
dGhlc2UgYnJlYWsgdGFncyBtYWxmb3JtZWQvb3BlbiB0byB0ZXN0IEhUTUwgcGFyc2luZy4KKyAg
ICAgICAgIFRoZXkgc2hvdWxkIGJlIHNpYmxpbmdzIHRvIGRpdiNkZXNjcmlwdGlvbiwgYW5kIG5v
dCBuZXN0ZWQgd2l0aGluIG9uZSBhbm90aGVyLgorICAgICAgICAgVGhlIFhNTERvY3VtZW50IHBh
cnNlciB3b3VsZCB0cmVhdCB0aGUgc2Vjb25kIDxicj4gYXMgYSBjaGlsZCB0byB0aGUgZmlyc3Qu
IC0tPgorICAgIDxicj48YnI+CisKKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119618</attachid>
            <date>2011-12-16 09:11:32 -0800</date>
            <delta_ts>2011-12-16 14:11:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74626-20111216121131.patch</filename>
            <type>text/plain</type>
            <size>35665</size>
            <attacher name="Jarred Nicholls">jarred</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJiYjI1ZjViNzI0ZTc0
YWJiNzFhNTRmMDQ0ZmU1MGY2MmNiOTJkNC4uOTExZmJiZmRkNjY5MzQ0YTAyNTkzMzEwMDNjMmU2
YTBlMWFkMmY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDExLTEyLTE2ICBKYXJy
ZWQgTmljaG9sbHMgIDxqYXJyZWRAc2VuY2hhLmNvbT4KKworICAgICAgICBCcmluZyBYSFIucmVz
cG9uc2VYTUwgYmVoYXZpb3IgdXAgdG8gdGhlIGxhdGVzdCBXM0Mgc3BlYyAoZXJyb3IgaGFuZGxp
bmcsIEhUTUwgZG9jIHN1cHBvcnQsIHJlc3BvbnNlVHlwZSBjb21wbGlhbmNlKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2MjYKKworICAgICAgICBM
YXRlc3QgVzNDIFhIUiBzcGVjIGRldGFpbHMgZm9yIHRoZSByZXNwb25zZVhNTCBhdHRyaWJ1dGU6
CisgICAgICAgIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy94aHIvcmF3LWZpbGUvdGlwL092ZXJ2aWV3
Lmh0bWwjdGhlLXJlc3BvbnNleG1sLWF0dHJpYnV0ZQorICAgICAgICBodHRwOi8vZHZjcy53My5v
cmcvaGcveGhyL3Jhdy1maWxlL3RpcC9PdmVydmlldy5odG1sI2RvY3VtZW50LXJlc3BvbnNlLWVu
dGl0eS1ib2R5CisKKyAgICAgICAgWEhSLnJlc3BvbnNlWE1MIHdhcyBub3QgY29tcGxpYW50IHBl
ciB0aGUgbGF0ZXN0IGVkaXRvcidzIGRyYWZ0IG9mIHRoZSBYSFIgc3BlYy4KKyAgICAgICAgVGhl
IGZvbGxvd2luZyBjb21wbGlhbmNlIGlzc3VlIGhhdmUgYmVlbiBjb3JyZWN0ZWQ6CisgICAgICAg
ICAgLSBBIHJlc3BvbnNlVHlwZSBvZiAidGV4dCIgc2hvdWxkIGRpc2FsbG93IGFjY2VzcyB0byBy
ZXNwb25zZVhNTCBieSB0aHJvd2luZyBhbiBJbnZhbGlkU3RhdGUgZXhjZXB0aW9uLgorICAgICAg
ICAgIC0gV2hlbiB0aGUgZXJyb3IgZmxhZyBpcyB0b2dnbGVkLCByZXNwb25zZVhNTCBzaG91bGQg
cmV0dXJuICJudWxsIiBpbW1lZGlhdGVseSBhbmQgbm90IGF0dGVtcHQgdG8gY3JlYXRlIGEgbmV3
IERvY3VtZW50LgorICAgICAgICAgIC0gcmVzcG9uc2VYTUwgc2hvdWxkIHJldHVybiBhIHZhbGlk
IEhUTUwgZG9jdW1lbnQgd2hlbiB0aGUgTUlNRSB0eXBlIGlzICJ0ZXh0L2h0bWwiLCBidXQgb25s
eSB3aGVuIHRoZSBjYWxsZXIgaGFzCisgICAgICAgICAgICBleHBsaWNpdGx5IHNldCByZXNwb25z
ZVR5cGUgdG8gImRvY3VtZW50Ii4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0czogZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1y
ZXNwb25zZVhNTC1hZnRlci1lcnJvci5odG1sCisgICAgICAgICAgICAgICBmYXN0L3htbGh0dHBy
ZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLWh0bWwtZG9jdW1lbnQtcmVzcG9uc2V0
eXBlLXF1aXJrcy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0
dHByZXF1ZXN0LXJlc3BvbnNlWE1MLWh0bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLXN0cmljdC5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJl
c3BvbnNlWE1MLWh0bWwtbm8tcmVzcG9uc2V0eXBlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
eG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwtaW52YWxpZC14bWwuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNw
b25zZVhNTC14bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwteG1sLW5vLXJlc3Bv
bnNldHlwZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHBy
ZXF1ZXN0LXJlc3BvbnNlWE1MLXhtbC10ZXh0LXJlc3BvbnNldHlwZS5odG1sCisKKyAgICAgICAg
KiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVl
c3Q6OnJlc3BvbnNlWE1MKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjbGVh
clJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6IFJlbmFt
ZSBtX3Jlc3BvbnNlWE1MIHRvIG1fcmVzcG9uc2VEb2N1bWVudAorICAgICAgICAoV2ViQ29yZTo6
WE1MSHR0cFJlcXVlc3Q6Om9wdGlvbmFsUmVzcG9uc2VYTUwpOgorCiAyMDExLTEyLTE2ICBNaWto
YWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU2Nyb2xsIG5v
bi12aXNpYmxlIGVkaXQgY29udHJvbHMgYW5kIGNhcmV0IGludG8gdGhlIGNlbnRlciBvZiB0aGUg
dmlldyB3aGVuIHN0YXJ0aW5nIHR5cGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCmluZGV4IGQyYWM4NGFmNDc1M2RlOWQ2Mzc5MTBhNTgzOGEwY2U0NzQ4ZjU3Y2EuLjQ4Yzcx
M2NkMTljZmVhODUxNjNiOTc0NGU3YTcyNzk2NjQyNDgwNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcApAQCAtMjcsMTMgKzI3LDEzIEBACiAjaW5jbHVkZSAiQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKICNpbmNsdWRlICJE
T01JbXBsZW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZl
bnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVu
ZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIkZpbGUuaCIKKyNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIkhUVFBWYWxpZGF0aW9uLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCkBAIC0yMTUsMzAgKzIxNSwzOCBAQCBTdHJpbmcg
WE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlVGV4dChFeGNlcHRpb25Db2RlJiBlYykKIAogRG9jdW1l
bnQqIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVhNTChFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAg
ICBpZiAobV9yZXNwb25zZVR5cGVDb2RlICE9IFJlc3BvbnNlVHlwZURlZmF1bHQgJiYgbV9yZXNw
b25zZVR5cGVDb2RlICE9IFJlc3BvbnNlVHlwZVRleHQgJiYgbV9yZXNwb25zZVR5cGVDb2RlICE9
IFJlc3BvbnNlVHlwZURvY3VtZW50KSB7CisgICAgaWYgKG1fcmVzcG9uc2VUeXBlQ29kZSAhPSBS
ZXNwb25zZVR5cGVEZWZhdWx0ICYmIG1fcmVzcG9uc2VUeXBlQ29kZSAhPSBSZXNwb25zZVR5cGVE
b2N1bWVudCkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKLSAgICBpZiAobV9zdGF0ZSAhPSBET05FKQorICAgIGlmIChtX2Vycm9y
IHx8IG1fc3RhdGUgIT0gRE9ORSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoIW1fY3Jl
YXRlZERvY3VtZW50KSB7Ci0gICAgICAgIGlmICgobV9yZXNwb25zZS5pc0hUVFAoKSAmJiAhcmVz
cG9uc2VJc1hNTCgpKSB8fCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzV29ya2VyQ29udGV4
dCgpKSB7Ci0gICAgICAgICAgICAvLyBUaGUgVzNDIHNwZWMgcmVxdWlyZXMgdGhpcy4KLSAgICAg
ICAgICAgIG1fcmVzcG9uc2VYTUwgPSAwOworICAgICAgICBib29sIGlzSFRNTCA9IGVxdWFsSWdu
b3JpbmdDYXNlKHJlc3BvbnNlTUlNRVR5cGUoKSwgInRleHQvaHRtbCIpOworCisgICAgICAgIC8v
IFRoZSBXM0Mgc3BlYyByZXF1aXJlcyB0aGUgZmluYWwgTUlNRSB0eXBlIHRvIGJlIHNvbWUgdmFs
aWQgWE1MIHR5cGUsIG9yIHRleHQvaHRtbC4KKyAgICAgICAgLy8gSWYgaXQgaXMgdGV4dC9odG1s
LCB0aGVuIHRoZSByZXNwb25zZVR5cGUgb2YgImRvY3VtZW50IiBtdXN0IGhhdmUgYmVlbiBzdXBw
bGllZCBleHBsaWNpdGx5LgorICAgICAgICBpZiAoKG1fcmVzcG9uc2UuaXNIVFRQKCkgJiYgIXJl
c3BvbnNlSXNYTUwoKSAmJiAhaXNIVE1MKQorICAgICAgICAgICAgfHwgKGlzSFRNTCAmJiBtX3Jl
c3BvbnNlVHlwZUNvZGUgPT0gUmVzcG9uc2VUeXBlRGVmYXVsdCkKKyAgICAgICAgICAgIHx8IHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrZXJDb250ZXh0KCkpIHsKKyAgICAgICAgICAg
IG1fcmVzcG9uc2VEb2N1bWVudCA9IDA7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBt
X3Jlc3BvbnNlWE1MID0gRG9jdW1lbnQ6OmNyZWF0ZSgwLCBtX3VybCk7CisgICAgICAgICAgICBp
ZiAoaXNIVE1MKQorICAgICAgICAgICAgICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IEhUTUxEb2N1
bWVudDo6Y3JlYXRlKDAsIG1fdXJsKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlKDAsIG1fdXJsKTsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBTZXQgTGFzdC1Nb2RpZmllZC4KLSAgICAgICAgICAgIG1fcmVzcG9u
c2VYTUwtPnNldENvbnRlbnQobV9yZXNwb25zZUJ1aWxkZXIudG9TdHJpbmdQcmVzZXJ2ZUNhcGFj
aXR5KCkpOwotICAgICAgICAgICAgbV9yZXNwb25zZVhNTC0+c2V0U2VjdXJpdHlPcmlnaW4oc2Vj
dXJpdHlPcmlnaW4oKSk7Ci0gICAgICAgICAgICBpZiAoIW1fcmVzcG9uc2VYTUwtPndlbGxGb3Jt
ZWQoKSkKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlWE1MID0gMDsKKyAgICAgICAgICAgIG1f
cmVzcG9uc2VEb2N1bWVudC0+c2V0Q29udGVudChtX3Jlc3BvbnNlQnVpbGRlci50b1N0cmluZ1By
ZXNlcnZlQ2FwYWNpdHkoKSk7CisgICAgICAgICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQtPnNldFNl
Y3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKCkpOworICAgICAgICAgICAgaWYgKCFtX3Jlc3Bv
bnNlRG9jdW1lbnQtPndlbGxGb3JtZWQoKSkKKyAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlRG9j
dW1lbnQgPSAwOwogICAgICAgICB9CiAgICAgICAgIG1fY3JlYXRlZERvY3VtZW50ID0gdHJ1ZTsK
ICAgICB9CiAKLSAgICByZXR1cm4gbV9yZXNwb25zZVhNTC5nZXQoKTsKKyAgICByZXR1cm4gbV9y
ZXNwb25zZURvY3VtZW50LmdldCgpOwogfQogCiAjaWYgRU5BQkxFKFhIUl9SRVNQT05TRV9CTE9C
KQpAQCAtNzQwLDcgKzc0OCw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VC
dWZmZXJzKCkKIHsKICAgICBtX3Jlc3BvbnNlQnVpbGRlci5jbGVhcigpOwogICAgIG1fY3JlYXRl
ZERvY3VtZW50ID0gZmFsc2U7Ci0gICAgbV9yZXNwb25zZVhNTCA9IDA7CisgICAgbV9yZXNwb25z
ZURvY3VtZW50ID0gMDsKICNpZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JMT0IpCiAgICAgbV9yZXNw
b25zZUJsb2IgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4
IGRkNjU4ZjgzNDljMzNkZTdiZDA4ZjkwNjc3MmViYTQ5OTMyNjVmNWUuLmJjYmEwOTg0MzYxYTk1
NGFiNDU0M2RhNmJiOGY3MDNiODU0MDEzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5oCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRSZXNwb25zZUhl
YWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAg
ICBTdHJpbmcgcmVzcG9uc2VUZXh0KEV4Y2VwdGlvbkNvZGUmKTsKICAgICBEb2N1bWVudCogcmVz
cG9uc2VYTUwoRXhjZXB0aW9uQ29kZSYpOwotICAgIERvY3VtZW50KiBvcHRpb25hbFJlc3BvbnNl
WE1MKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVhNTC5nZXQoKTsgfQorICAgIERvY3VtZW50
KiBvcHRpb25hbFJlc3BvbnNlWE1MKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZURvY3VtZW50
LmdldCgpOyB9CiAjaWYgRU5BQkxFKFhIUl9SRVNQT05TRV9CTE9CKQogICAgIEJsb2IqIHJlc3Bv
bnNlQmxvYihFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgQmxvYiogb3B0aW9uYWxSZXNwb25z
ZUJsb2IoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlQmxvYi5nZXQoKTsgfQpAQCAtMjA2LDcg
KzIwNiw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmdCdWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVy
OwogICAgIG11dGFibGUgYm9vbCBtX2NyZWF0ZWREb2N1bWVudDsKLSAgICBtdXRhYmxlIFJlZlB0
cjxEb2N1bWVudD4gbV9yZXNwb25zZVhNTDsKKyAgICBtdXRhYmxlIFJlZlB0cjxEb2N1bWVudD4g
bV9yZXNwb25zZURvY3VtZW50OwogICAgIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyOwogICAgIG11dGFibGUgUmVmUHRyPEFycmF5QnVmZmVyPiBtX3Jl
c3BvbnNlQXJyYXlCdWZmZXI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGE0M2VmNjQ1Y2Q5MDQ2NzMyZDA0NGRjMjgyZTRj
MWJmYTdjYTJkMi4uNmJlYTFkZjNiMWM2ZWUyNjc2ZjBmZTcwNDRlYjhmZWJhOGI3YWI5MSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQwIEBACisyMDExLTEyLTE2ICBKYXJyZWQgTmljaG9sbHMgIDxqYXJyZWRA
c2VuY2hhLmNvbT4KKworICAgICAgICBCcmluZyBYSFIucmVzcG9uc2VYTUwgYmVoYXZpb3IgdXAg
dG8gdGhlIGxhdGVzdCBXM0Mgc3BlYyAoZXJyb3IgaGFuZGxpbmcsIEhUTUwgZG9jIHN1cHBvcnQs
IHJlc3BvbnNlVHlwZSBjb21wbGlhbmNlKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2MjYKKworICAgICAgICBMYXRlc3QgVzNDIFhIUiBzcGVjIGRl
dGFpbHMgZm9yIHRoZSByZXNwb25zZVhNTCBhdHRyaWJ1dGU6CisgICAgICAgIGh0dHA6Ly9kdmNz
LnczLm9yZy9oZy94aHIvcmF3LWZpbGUvdGlwL092ZXJ2aWV3Lmh0bWwjdGhlLXJlc3BvbnNleG1s
LWF0dHJpYnV0ZQorICAgICAgICBodHRwOi8vZHZjcy53My5vcmcvaGcveGhyL3Jhdy1maWxlL3Rp
cC9PdmVydmlldy5odG1sI2RvY3VtZW50LXJlc3BvbnNlLWVudGl0eS1ib2R5CisKKyAgICAgICAg
WEhSLnJlc3BvbnNlWE1MIHdhcyBub3QgY29tcGxpYW50IHBlciB0aGUgbGF0ZXN0IGVkaXRvcidz
IGRyYWZ0IG9mIHRoZSBYSFIgc3BlYy4KKyAgICAgICAgVGhlIGZvbGxvd2luZyBjb21wbGlhbmNl
IGlzc3VlIGhhdmUgYmVlbiBjb3JyZWN0ZWQ6CisgICAgICAgICAgLSBBIHJlc3BvbnNlVHlwZSBv
ZiAidGV4dCIgc2hvdWxkIGRpc2FsbG93IGFjY2VzcyB0byByZXNwb25zZVhNTCBieSB0aHJvd2lu
ZyBhbiBJbnZhbGlkU3RhdGUgZXhjZXB0aW9uLgorICAgICAgICAgIC0gV2hlbiB0aGUgZXJyb3Ig
ZmxhZyBpcyB0b2dnbGVkLCByZXNwb25zZVhNTCBzaG91bGQgcmV0dXJuICJudWxsIiBpbW1lZGlh
dGVseSBhbmQgbm90IGF0dGVtcHQgdG8gY3JlYXRlIGEgbmV3IERvY3VtZW50LgorICAgICAgICAg
IC0gcmVzcG9uc2VYTUwgc2hvdWxkIHJldHVybiBhIHZhbGlkIEhUTUwgZG9jdW1lbnQgd2hlbiB0
aGUgTUlNRSB0eXBlIGlzICJ0ZXh0L2h0bWwiLCBidXQgb25seSB3aGVuIHRoZSBjYWxsZXIgaGFz
CisgICAgICAgICAgICBleHBsaWNpdGx5IHNldCByZXNwb25zZVR5cGUgdG8gImRvY3VtZW50Ii4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3Qv
ZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy5odG1sOgorICAgICAgICAqIGZhc3QveG1saHR0cHJl
cXVlc3QvcmVzb3VyY2VzL3htbGh0dHByZXF1ZXN0LWdldC1pbnZhbGlkLWRhdGEueG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNl
WE1MLWFmdGVyLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC94bWxo
dHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC1hZnRlci1lcnJvci5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3Bv
bnNlWE1MLWh0bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLXF1aXJrcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9u
c2VYTUwtaHRtbC1kb2N1bWVudC1yZXNwb25zZXR5cGUtcXVpcmtzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwtaHRt
bC1kb2N1bWVudC1yZXNwb25zZXR5cGUtc3RyaWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC1odG1s
LWRvY3VtZW50LXJlc3BvbnNldHlwZS1zdHJpY3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC1odG1sLW5vLXJlc3Bv
bnNldHlwZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QveG1saHR0cHJlcXVl
c3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwtaHRtbC1uby1yZXNwb25zZXR5cGUuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNw
b25zZVhNTC1pbnZhbGlkLXhtbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
eG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwtaW52YWxpZC14bWwuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1y
ZXNwb25zZVhNTC14bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhN
TC14bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
eG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwteG1sLW5vLXJlc3BvbnNl
dHlwZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QveG1saHR0cHJlcXVlc3Qv
eG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwteG1sLW5vLXJlc3BvbnNldHlwZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNl
WE1MLXhtbC10ZXh0LXJlc3BvbnNldHlwZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwteG1sLXRleHQt
cmVzcG9uc2V0eXBlLmh0bWw6IEFkZGVkLgorCiAyMDExLTEyLTE2ICBNaWtoYWlsIE5hZ2Fub3Yg
IDxtbmFnYW5vdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU2Nyb2xsIG5vbi12aXNpYmxlIGVk
aXQgY29udHJvbHMgYW5kIGNhcmV0IGludG8gdGhlIGNlbnRlciBvZiB0aGUgdmlldyB3aGVuIHN0
YXJ0aW5nIHR5cGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFt
ZS1yZXBhcmVudGluZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFy
ZW50aW5nLmh0bWwKaW5kZXggZWMxYjViYmViMGVhMDA3OTI0ZjIyYWE5NmFmN2ZhZWU4NjIxZTBi
OC4uNmNlYzg4NzdkZTY1YTE5NGZlZWE2NjM4YmM3MjQyNDQyZTc0N2M3MCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLmh0bWwKQEAgLTY0LDYgKzY0
LDcgQEAgZmluaXNoID0gZnVuY3Rpb24oKQogICAgIC8vIExhc3QgdGVzdCAtIHZlcmlmeSB0aGF0
IG5vbi1hdHRhY2hlZCBkb2N1bWVudCBkb2VzIG5vdCBrZWVwIGlmcmFtZSBhbGl2ZSBldmVuIGlm
IGFkb3B0Tm9kZSgpIGlzIHVzZWQuCiAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgp
OwogICAgIHhoci5vcGVuKCJHRVQiLCJkYXRhOnRleHQvaHRtbCw8aHRtbCB4bWxucz0naHR0cDov
L3d3dy53My5vcmcvMTk5OS94aHRtbCc+PGJvZHkgaWQ9J2JvZHknPkhlbGxvPC9ib2R5PjwvaHRt
bD4iLCBmYWxzZSk7CisgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdkb2N1bWVudCc7CiAgICAgeGhy
LnNlbmQobnVsbCk7CiAgICAgdmFyIGRvYyA9IHhoci5yZXNwb25zZVhNTDsKICAgICBsb2coZG9j
LmdldEVsZW1lbnRCeUlkKCJib2R5IikuaW5uZXJUZXh0ID09ICJIZWxsbyIgPyAiUEFTUzogWEhS
LWxvYWRlZCBEb2N1bWVudCBpcyBjb3JyZWN0LiIgOiAiRkFJTDogWEhSLWxvYWRlZCBkb2N1bWVu
dCBpcyBub3QgY29ycmVjdC4iKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL3htbGh0dHByZXF1ZXN0LWdldC1pbnZhbGlkLWRhdGEueG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMveG1saHR0cHJlcXVlc3Qt
Z2V0LWludmFsaWQtZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzEwNmM5ZmZjNzQ4NzIyNDI5NjRhY2Vh
Y2JlM2I3ZWFjNjJlNGVhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QveG1s
aHR0cHJlcXVlc3QvcmVzb3VyY2VzL3htbGh0dHByZXF1ZXN0LWdldC1pbnZhbGlkLWRhdGEueG1s
CkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgZG9jIFsK
KzwhQVRUTElTVCBkIGlkIElEICNJTVBMSUVEPgorXT4KKzxkb2M+CisgIDxmb28geG1sbnM9ImZv
b2JhciI+T25lPC9mb28+IDx4OmJhciB4bWxuczp4PSJiYXJmb28iPlR3bzwveDpiYXI+CisgIDxk
IGlkPSJpZDMiPlRocmVlCis8L2RvYz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QveG1s
aHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwtYWZ0ZXItZXJyb3ItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1y
ZXNwb25zZVhNTC1hZnRlci1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWYzMzk1MWI4
ZThhMWE0ZDkxYjkwY2VkY2I3MmE0OTMwMWI4N2NjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwtYWZ0
ZXItZXJyb3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdHMgdGhlIFhN
TEh0dHBSZXF1ZXN0IHJlc3BvbnNlWE1MIGF0dHJpYnV0ZSBhY2Nlc3NpYmlsaXR5IGFmdGVyIGEg
bmV0d29yayBlcnJvci4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK09uIGEgbmV0
d29yayBlcnJvciwgdGhlIHN0YXRlIGlzIERPTkUgYnV0IHRoZSBlcnJvciBmbGFnIHNob3VsZCBh
bHNvIGJlIGNoZWNrZWQgdG8gcmVzdHJpY3QgYWNjZXNzIGF0dGVtcHRzIHRvIHJlc3BvbnNlWE1M
LgorUEFTUyB4aHIucmVhZHlTdGF0ZSBpcyA0CitQQVNTIHhoci5yZXNwb25zZVhNTCBpcyBudWxs
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1y
ZXNwb25zZVhNTC1hZnRlci1lcnJvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVx
dWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC1hZnRlci1lcnJvci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA4ZTI1ZDA0MWMxOTgyNmYwYzI1MzE1NDRlNzg0N2Q5YTU2ZDljNjIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJl
c3BvbnNlWE1MLWFmdGVyLWVycm9yLmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9u
KCdUaGlzIHRlc3RzIHRoZSBYTUxIdHRwUmVxdWVzdCByZXNwb25zZVhNTCBhdHRyaWJ1dGUgYWNj
ZXNzaWJpbGl0eSBhZnRlciBhIG5ldHdvcmsgZXJyb3IuJyk7CisKKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICBkZWJ1ZygnT24gYSBuZXR3b3JrIGVycm9yLCB0
aGUgc3RhdGUgaXMgRE9ORSBidXQgdGhlIGVycm9yIGZsYWcgc2hvdWxkIGFsc28gYmUgY2hlY2tl
ZCB0byByZXN0cmljdCBhY2Nlc3MgYXR0ZW1wdHMgdG8gcmVzcG9uc2VYTUwuJyk7CisgICAgICAg
IHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKSwgCisgICAgICAgICAgICB1cmwgPSAncmVz
b3VyY2VzL3htbGh0dHByZXF1ZXN0LWdldC1kYXRhLnhtbC9pL2RvbnQvZXhpc3QnOworICAgICAg
ICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCdUaGUg
WEhSIHJlcXVlc3QgdG8gYSBub24tZXhpc3RlbnQgcmVzb3VyY2Ugc3VjY2VlZGVkOiAiJyArIHVy
bCArICciJyk7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfTsKKyAgICAg
ICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHNob3VsZEV2YWx1YXRl
VG8oJ3hoci5yZWFkeVN0YXRlJywgNCk7CisgICAgICAgICAgICBzaG91bGRCZU51bGwoJ3hoci5y
ZXNwb25zZVhNTCcpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH07Cisg
ICAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwpOworICAgICAgICB4aHIuc2VuZChudWxsKTsKKyAg
ICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1
ZXN0LXJlc3BvbnNlWE1MLWh0bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLXF1aXJrcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJl
c3BvbnNlWE1MLWh0bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLXF1aXJrcy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTk5ODg2ODc4YWFhNmY2MTkwNmU0N2M5MDRjZjcyODBmMzBiZTg3ZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJl
cXVlc3QtcmVzcG9uc2VYTUwtaHRtbC1kb2N1bWVudC1yZXNwb25zZXR5cGUtcXVpcmtzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDI1IEBACitUaGlzIHRlc3RzIHRoZSBYTUxIdHRwUmVxdWVzdCBy
ZXNwb25zZVhNTCBsb2FkaW5nIGFuIEhUTUwgZG9jdW1lbnQgaW4gUXVpcmtzIE1vZGUgd2l0aCBy
ZXNwb25zZVR5cGUgImRvY3VtZW50Ii4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgeGhyLnJlc3BvbnNlWE1MIGlzIG5vbi1udWxsLgorUEFTUyB4aHIucmVzcG9uc2VYTUwg
aW5zdGFuY2VvZiBEb2N1bWVudCBpcyB0cnVlCitUaGUgdHdvIG9wZW4gPGJyPiBlbGVtZW50cyBz
aG91bGQgYmUgc2libGluZ3Mgb2Ygb25lIGFub3RoZXIgYW5kIG5vdCBuZXN0ZWQgcGVyIEhUTUwg
cGFyc2VyIHNwZWMuCitQQVNTIGNoaWxkcmVuLmxlbmd0aCBpcyA1CitQQVNTIGNoaWxkcmVuWzBd
LnRhZ05hbWUgaXMgIkRJViIKK1BBU1MgY2hpbGRyZW5bMF0uaWQgaXMgImRlc2NyaXB0aW9uIgor
UEFTUyBjaGlsZHJlblsxXS50YWdOYW1lIGlzICJCUiIKK1BBU1MgY2hpbGRyZW5bMl0udGFnTmFt
ZSBpcyAiQlIiCitQQVNTIGNoaWxkcmVuWzNdLnRhZ05hbWUgaXMgIkRJViIKK1BBU1MgY2hpbGRy
ZW5bM10uaWQgaXMgImNvbnNvbGUiCitQQVNTIGNoaWxkcmVuWzRdLnRhZ05hbWUgaXMgIlNDUklQ
VCIKK1BBU1MgY2hpbGRyZW5bMV0uaWQgaXMgbm90ICJicmVhay10YWciCitQQVNTIHhoci5yZXNw
b25zZVhNTC5jb21wYXRNb2RlIGlzICJCYWNrQ29tcGF0IgorUEFTUyB4aHIucmVzcG9uc2VYTUwu
Y29tcGF0TW9kZSBpcyAiQmFja0NvbXBhdCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC94
bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC1odG1sLWRvY3VtZW50LXJl
c3BvbnNldHlwZS1xdWlya3MuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3Qv
eG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwtaHRtbC1kb2N1bWVudC1yZXNwb25zZXR5cGUtcXVp
cmtzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I3MTRmZDY1YjBhZDlmYmQzOTkzNzU1ZTczN2MwN2JhYmEy
MmZhMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3Qv
eG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwtaHRtbC1kb2N1bWVudC1yZXNwb25zZXR5cGUtcXVp
cmtzLmh0bWwKQEAgLTAsMCArMSw3MiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
PgorICAgICAgICBkZXNjcmlwdGlvbignVGhpcyB0ZXN0cyB0aGUgWE1MSHR0cFJlcXVlc3QgcmVz
cG9uc2VYTUwgbG9hZGluZyBhbiBIVE1MIGRvY3VtZW50IGluIFF1aXJrcyBNb2RlIHdpdGggcmVz
cG9uc2VUeXBlICJkb2N1bWVudCIuJyk7CisKKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCksCisgICAgICAg
ICAgICB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZiwKKyAgICAgICAgICAgIGNoaWxkcmVuOwor
ICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzaG91bGRCZU5v
bk51bGwoJ3hoci5yZXNwb25zZVhNTCcpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCd4aHIu
cmVzcG9uc2VYTUwgaW5zdGFuY2VvZiBEb2N1bWVudCcpOworCisgICAgICAgICAgICBkZWJ1Zygn
VGhlIHR3byBvcGVuICZsdDticiZndDsgZWxlbWVudHMgc2hvdWxkIGJlIHNpYmxpbmdzIG9mIG9u
ZSBhbm90aGVyIGFuZCBub3QgbmVzdGVkIHBlciBIVE1MIHBhcnNlciBzcGVjLicpOworCisgICAg
ICAgICAgICAvLyBHZXQgdGhlIGNoaWxkcmVuIG9mIHRoZSBib2R5IHRhZywgdXNpbmcgUVNBIHRv
IHNraXAgYWxsIHRleHQgbm9kZXMuCisgICAgICAgICAgICBjaGlsZHJlbiA9IHhoci5yZXNwb25z
ZVhNTC5xdWVyeVNlbGVjdG9yQWxsKCdib2R5ID4gKicpOworCisgICAgICAgICAgICAvLyBUZXN0
IHRoYXQgdGhlIEhUTUwgcGFyc2VyIHdhcyB1c2VkIGJ5IGNvbmZpcm1pbmcgdGhlIHR3byBCUiB0
YWdzIGFyZSBhZGphY2VudCBzaWJsaW5ncworICAgICAgICAgICAgLy8gYW5kIG5vdCBuZXN0ZWQg
d2l0aGluIG9uZSBhbm90aGVyLCBub3IgbmVzdGluZyB0aGUgZGl2I2NvbnNvbGUgbm9kZS4KKyAg
ICAgICAgICAgIC8vIFRoZXJlIHNob3VsZCBiZSA1IG5vbi10ZXh0IGNoaWxkcmVuIGFsdG9nZXRo
ZXIuCisgICAgICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCdjaGlsZHJlbi5sZW5ndGgnLCA1KTsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnY2hpbGRyZW5bMF0udGFnTmFtZScs
ICdESVYnKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnY2hpbGRyZW5bMF0u
aWQnLCAnZGVzY3JpcHRpb24nKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
Y2hpbGRyZW5bMV0udGFnTmFtZScsICdCUicpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdjaGlsZHJlblsyXS50YWdOYW1lJywgJ0JSJyk7CisgICAgICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ2NoaWxkcmVuWzNdLnRhZ05hbWUnLCAnRElWJyk7CisgICAgICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2NoaWxkcmVuWzNdLmlkJywgJ2NvbnNvbGUnKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnY2hpbGRyZW5bNF0udGFnTmFtZScsICdT
Q1JJUFQnKTsKKworICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmaXJzdCBCUiB0YWcgZG9l
c24ndCBoYXZlIGFuICJpZCIgc2V0LCB3aGljaCB3aWxsIHByb3ZlCisgICAgICAgICAgICAvLyB0
aGUgZmlyc3Qgc2NyaXB0IGluIHRoaXMgZG9jdW1lbnQgd2FzIG5vdCBleGVjdXRlZC4KKyAgICAg
ICAgICAgIHNob3VsZE5vdEJlKCdjaGlsZHJlblsxXS5pZCcsICciYnJlYWstdGFnIicpOworCisg
ICAgICAgICAgICAvLyBUaGUgcGFyc2VkIEhUTUwgZG9jdW1lbnQgaW4gcmVzcG9uc2VYTUwgc2hv
dWxkIGJlIHRoZSBzYW1lIGNvbXBhdE1vZGUgYXMgdGhpcyBkb2N1bWVudC4KKyAgICAgICAgICAg
IC8vIFRoaXMgZG9jdW1lbnQgaXMgaW4gcXVpcmtzIG1vZGUgZHVlIHRvIGEgbWlzc2luZyBET0NU
WVBFLgorICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd4aHIucmVzcG9uc2VYTUwu
Y29tcGF0TW9kZScsICdCYWNrQ29tcGF0Jyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ3hoci5yZXNwb25zZVhNTC5jb21wYXRNb2RlJywgZG9jdW1lbnQuY29tcGF0TW9kZSk7
CisKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9OworICAgICAgICB4aHIu
b25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgnVGhlIFhIUiBy
ZXF1ZXN0IHRvIGFuIGV4aXN0aW5nIHJlc291cmNlIGZhaWxlZDogIicgKyB1cmwgKyAnIicpOwor
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHhoci5vcGVu
KCdHRVQnLCB1cmwpOworICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2RvY3VtZW50JzsKKyAg
ICAgICAgeGhyLnNlbmQobnVsbCk7CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorCisgICAgPCEtLSBMZWF2ZSB0aGVz
ZSBicmVhayB0YWdzIG1hbGZvcm1lZC9vcGVuIHRvIHRlc3QgSFRNTCBwYXJzaW5nLgorICAgICAg
ICAgVGhleSBzaG91bGQgYmUgc2libGluZ3MgdG8gZGl2I2Rlc2NyaXB0aW9uLCBhbmQgbm90IG5l
c3RlZCB3aXRoaW4gb25lIGFub3RoZXIuCisgICAgICAgICBUaGUgWE1MRG9jdW1lbnQgcGFyc2Vy
IHdvdWxkIHRyZWF0IHRoZSBzZWNvbmQgPGJyPiBhcyBhIGNoaWxkIHRvIHRoZSBmaXJzdC4gLS0+
CisgICAgPGJyPjxicj4KKworICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCisgICAgPHNj
cmlwdD4KKyAgICAgICAgLy8gVGhpcyBjb2RlIHdpbGwgbWFuaXB1bGF0ZSB0aGUgZmlyc3QgQlIg
bm9kZSBieSBhZGRpbmcgYW4gImlkIiB0byBpdC4KKyAgICAgICAgLy8gVGhpcyBzYW1lIEJSIHdp
bGwgYmUgaW5zcGVjdGVkIGFmdGVyIFhIUiBsb2FkcyB0aGUgZG9jdW1lbnQgdG8gc2VlCisgICAg
ICAgIC8vIGlmIHRoaXMgc2NyaXB0IGV4ZWN1dGVkIG9yIG5vdC4gIElmIGl0IGRpZG4ndCBleGVj
dXRlLCB0aGUgZmlyc3QgQlIKKyAgICAgICAgLy8gd2lsbCBub3QgaGF2ZSBhbiAiaWQiIHNwZWNp
ZmllZCBhbmQgdGhlIHRlc3QgcGFzc2VzLgorICAgICAgICB2YXIgYnIgPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCdkaXYjZGVzY3JpcHRpb24gKyBicicpOworICAgICAgICBici5pZCA9ICdicmVh
ay10YWcnOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC1o
dG1sLWRvY3VtZW50LXJlc3BvbnNldHlwZS1zdHJpY3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC1odG1sLWRv
Y3VtZW50LXJlc3BvbnNldHlwZS1zdHJpY3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0NDY1
NGRkODkyNmY3N2YyYzIwYjJhYTJiN2JjY2RiNDk5MmJiMmMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1M
LWh0bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLXN0cmljdC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwyNSBAQAorVGhpcyB0ZXN0cyB0aGUgWE1MSHR0cFJlcXVlc3QgcmVzcG9uc2VYTUwgbG9hZGlu
ZyBhbiBIVE1MIGRvY3VtZW50IGluIFN0cmljdCBNb2RlIHdpdGggcmVzcG9uc2VUeXBlICJkb2N1
bWVudCIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHhoci5yZXNwb25z
ZVhNTCBpcyBub24tbnVsbC4KK1BBU1MgeGhyLnJlc3BvbnNlWE1MIGluc3RhbmNlb2YgRG9jdW1l
bnQgaXMgdHJ1ZQorVGhlIHR3byBvcGVuIDxicj4gZWxlbWVudHMgc2hvdWxkIGJlIHNpYmxpbmdz
IG9mIG9uZSBhbm90aGVyIGFuZCBub3QgbmVzdGVkIHBlciBIVE1MIHBhcnNlciBzcGVjLgorUEFT
UyBjaGlsZHJlbi5sZW5ndGggaXMgNQorUEFTUyBjaGlsZHJlblswXS50YWdOYW1lIGlzICJESVYi
CitQQVNTIGNoaWxkcmVuWzBdLmlkIGlzICJkZXNjcmlwdGlvbiIKK1BBU1MgY2hpbGRyZW5bMV0u
dGFnTmFtZSBpcyAiQlIiCitQQVNTIGNoaWxkcmVuWzJdLnRhZ05hbWUgaXMgIkJSIgorUEFTUyBj
aGlsZHJlblszXS50YWdOYW1lIGlzICJESVYiCitQQVNTIGNoaWxkcmVuWzNdLmlkIGlzICJjb25z
b2xlIgorUEFTUyBjaGlsZHJlbls0XS50YWdOYW1lIGlzICJTQ1JJUFQiCitQQVNTIGNoaWxkcmVu
WzFdLmlkIGlzIG5vdCAiYnJlYWstdGFnIgorUEFTUyB4aHIucmVzcG9uc2VYTUwuY29tcGF0TW9k
ZSBpcyAiQ1NTMUNvbXBhdCIKK1BBU1MgeGhyLnJlc3BvbnNlWE1MLmNvbXBhdE1vZGUgaXMgIkNT
UzFDb21wYXQiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1s
aHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwtaHRtbC1kb2N1bWVudC1yZXNwb25zZXR5cGUtc3RyaWN0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJl
c3BvbnNlWE1MLWh0bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLXN0cmljdC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgxNWE2YTZiMTY5OTBhMzE0YWI2Yjc5M2NkZDZiYzFjMGQxN2M1MGEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJl
c3BvbnNlWE1MLWh0bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLXN0cmljdC5odG1sCkBAIC0wLDAg
KzEsNzMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
PgorICAgICAgICBkZXNjcmlwdGlvbignVGhpcyB0ZXN0cyB0aGUgWE1MSHR0cFJlcXVlc3QgcmVz
cG9uc2VYTUwgbG9hZGluZyBhbiBIVE1MIGRvY3VtZW50IGluIFN0cmljdCBNb2RlIHdpdGggcmVz
cG9uc2VUeXBlICJkb2N1bWVudCIuJyk7CisKKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCksCisgICAgICAg
ICAgICB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZiwKKyAgICAgICAgICAgIGNoaWxkcmVuOwor
ICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzaG91bGRCZU5v
bk51bGwoJ3hoci5yZXNwb25zZVhNTCcpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCd4aHIu
cmVzcG9uc2VYTUwgaW5zdGFuY2VvZiBEb2N1bWVudCcpOworCisgICAgICAgICAgICBkZWJ1Zygn
VGhlIHR3byBvcGVuICZsdDticiZndDsgZWxlbWVudHMgc2hvdWxkIGJlIHNpYmxpbmdzIG9mIG9u
ZSBhbm90aGVyIGFuZCBub3QgbmVzdGVkIHBlciBIVE1MIHBhcnNlciBzcGVjLicpOworCisgICAg
ICAgICAgICAvLyBHZXQgdGhlIGNoaWxkcmVuIG9mIHRoZSBib2R5IHRhZywgdXNpbmcgUVNBIHRv
IHNraXAgYWxsIHRleHQgbm9kZXMuCisgICAgICAgICAgICBjaGlsZHJlbiA9IHhoci5yZXNwb25z
ZVhNTC5xdWVyeVNlbGVjdG9yQWxsKCdib2R5ID4gKicpOworCisgICAgICAgICAgICAvLyBUZXN0
IHRoYXQgdGhlIEhUTUwgcGFyc2VyIHdhcyB1c2VkIGJ5IGNvbmZpcm1pbmcgdGhlIHR3byBCUiB0
YWdzIGFyZSBhZGphY2VudCBzaWJsaW5ncworICAgICAgICAgICAgLy8gYW5kIG5vdCBuZXN0ZWQg
d2l0aGluIG9uZSBhbm90aGVyLCBub3IgbmVzdGluZyB0aGUgZGl2I2NvbnNvbGUgbm9kZS4KKyAg
ICAgICAgICAgIC8vIFRoZXJlIHNob3VsZCBiZSA1IG5vbi10ZXh0IGNoaWxkcmVuIGFsdG9nZXRo
ZXIuCisgICAgICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCdjaGlsZHJlbi5sZW5ndGgnLCA1KTsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnY2hpbGRyZW5bMF0udGFnTmFtZScs
ICdESVYnKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnY2hpbGRyZW5bMF0u
aWQnLCAnZGVzY3JpcHRpb24nKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
Y2hpbGRyZW5bMV0udGFnTmFtZScsICdCUicpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdjaGlsZHJlblsyXS50YWdOYW1lJywgJ0JSJyk7CisgICAgICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ2NoaWxkcmVuWzNdLnRhZ05hbWUnLCAnRElWJyk7CisgICAgICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2NoaWxkcmVuWzNdLmlkJywgJ2NvbnNvbGUnKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnY2hpbGRyZW5bNF0udGFnTmFtZScsICdT
Q1JJUFQnKTsKKworICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmaXJzdCBCUiB0YWcgZG9l
c24ndCBoYXZlIGFuICJpZCIgc2V0LCB3aGljaCB3aWxsIHByb3ZlCisgICAgICAgICAgICAvLyB0
aGUgZmlyc3Qgc2NyaXB0IGluIHRoaXMgZG9jdW1lbnQgd2FzIG5vdCBleGVjdXRlZC4KKyAgICAg
ICAgICAgIHNob3VsZE5vdEJlKCdjaGlsZHJlblsxXS5pZCcsICciYnJlYWstdGFnIicpOworCisg
ICAgICAgICAgICAvLyBUaGUgcGFyc2VkIEhUTUwgZG9jdW1lbnQgaW4gcmVzcG9uc2VYTUwgc2hv
dWxkIGJlIHRoZSBzYW1lIGNvbXBhdE1vZGUgYXMgdGhpcyBkb2N1bWVudC4KKyAgICAgICAgICAg
IC8vIFRoaXMgZG9jdW1lbnQgaXMgaW4gc3RyaWN0IG1vZGUgZHVlIHRvIHRoZSBIVE1MNSBET0NU
WVBFIGJlaW5nIHByZXNlbnQuCisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3ho
ci5yZXNwb25zZVhNTC5jb21wYXRNb2RlJywgJ0NTUzFDb21wYXQnKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygneGhyLnJlc3BvbnNlWE1MLmNvbXBhdE1vZGUnLCBkb2N1bWVu
dC5jb21wYXRNb2RlKTsKKworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH07
CisgICAgICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0RmFp
bGVkKCdUaGUgWEhSIHJlcXVlc3QgdG8gYW4gZXhpc3RpbmcgcmVzb3VyY2UgZmFpbGVkOiAiJyAr
IHVybCArICciJyk7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfTsKKyAg
ICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVybCk7CisgICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAn
ZG9jdW1lbnQnOworICAgICAgICB4aHIuc2VuZChudWxsKTsKKyAgICA8L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisKKyAgICA8
IS0tIExlYXZlIHRoZXNlIGJyZWFrIHRhZ3MgbWFsZm9ybWVkL29wZW4gdG8gdGVzdCBIVE1MIHBh
cnNpbmcuCisgICAgICAgICBUaGV5IHNob3VsZCBiZSBzaWJsaW5ncyB0byBkaXYjZGVzY3JpcHRp
b24sIGFuZCBub3QgbmVzdGVkIHdpdGhpbiBvbmUgYW5vdGhlci4KKyAgICAgICAgIFRoZSBYTUxE
b2N1bWVudCBwYXJzZXIgd291bGQgdHJlYXQgdGhlIHNlY29uZCA8YnI+IGFzIGEgY2hpbGQgdG8g
dGhlIGZpcnN0LiAtLT4KKyAgICA8YnI+PGJyPgorCisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisKKyAgICA8c2NyaXB0PgorICAgICAgICAvLyBUaGlzIGNvZGUgd2lsbCBtYW5pcHVsYXRl
IHRoZSBmaXJzdCBCUiBub2RlIGJ5IGFkZGluZyBhbiAiaWQiIHRvIGl0LgorICAgICAgICAvLyBU
aGlzIHNhbWUgQlIgd2lsbCBiZSBpbnNwZWN0ZWQgYWZ0ZXIgWEhSIGxvYWRzIHRoZSBkb2N1bWVu
dCB0byBzZWUKKyAgICAgICAgLy8gaWYgdGhpcyBzY3JpcHQgZXhlY3V0ZWQgb3Igbm90LiAgSWYg
aXQgZGlkbid0IGV4ZWN1dGUsIHRoZSBmaXJzdCBCUgorICAgICAgICAvLyB3aWxsIG5vdCBoYXZl
IGFuICJpZCIgc3BlY2lmaWVkIGFuZCB0aGUgdGVzdCBwYXNzZXMuCisgICAgICAgIHZhciBiciA9
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdiNkZXNjcmlwdGlvbiArIGJyJyk7CisgICAgICAg
IGJyLmlkID0gJ2JyZWFrLXRhZyc7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0
LXJlc3BvbnNlWE1MLWh0bWwtbm8tcmVzcG9uc2V0eXBlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwtaHRtbC1u
by1yZXNwb25zZXR5cGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1YzM4YjVkYWQ5MzU5YTAz
YTU0MmFmMjkyNzQ4MzA4OWI0Y2I4ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLWh0bWwtbm8tcmVz
cG9uc2V0eXBlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRlc3RzIHRoZSBY
TUxIdHRwUmVxdWVzdCByZXNwb25zZVhNTCBsb2FkaW5nIGFuIEhUTUwgZG9jdW1lbnQgd2l0aCBu
byBzcGVjaWZpZWQgcmVzcG9uc2VUeXBlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyB4aHIucmVzcG9uc2VYTUwgaXMgbnVsbAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLWh0bWwtbm8tcmVz
cG9uc2V0eXBlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHBy
ZXF1ZXN0LXJlc3BvbnNlWE1MLWh0bWwtbm8tcmVzcG9uc2V0eXBlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2QzZDY1YWIwZTZiNWE3Y2EyYTRjYjVhZTUwZTRiMTgxMTdlOWM1YwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9u
c2VYTUwtaHRtbC1uby1yZXNwb25zZXR5cGUuaHRtbApAQCAtMCwwICsxLDQzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3Jp
cHRpb24oJ1RoaXMgdGVzdHMgdGhlIFhNTEh0dHBSZXF1ZXN0IHJlc3BvbnNlWE1MIGxvYWRpbmcg
YW4gSFRNTCBkb2N1bWVudCB3aXRoIG5vIHNwZWNpZmllZCByZXNwb25zZVR5cGUuJyk7CisKKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICB2YXIgeGhyID0gbmV3
IFhNTEh0dHBSZXF1ZXN0KCksCisgICAgICAgICAgICB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJl
ZjsKKyAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgc2hvdWxk
QmVOdWxsKCd4aHIucmVzcG9uc2VYTUwnKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICB9OworICAgICAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgdGVzdEZhaWxlZCgnVGhlIFhIUiByZXF1ZXN0IHRvIGFuIGV4aXN0aW5nIHJlc291cmNlIGZh
aWxlZDogIicgKyB1cmwgKyAnIicpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH07CisgICAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwpOworICAgICAgICB4aHIuc2VuZChu
dWxsKTsKKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+CisKKyAgICA8IS0tIExlYXZlIHRoZXNlIGJyZWFrIHRhZ3MgbWFs
Zm9ybWVkL29wZW4gdG8gdGVzdCBIVE1MIHBhcnNpbmcuCisgICAgICAgICBUaGV5IHNob3VsZCBi
ZSBzaWJsaW5ncyB0byBkaXYjZGVzY3JpcHRpb24sIGFuZCBub3QgbmVzdGVkIHdpdGhpbiBvbmUg
YW5vdGhlci4KKyAgICAgICAgIFRoZSBYTUxEb2N1bWVudCBwYXJzZXIgd291bGQgdHJlYXQgdGhl
IHNlY29uZCA8YnI+IGFzIGEgY2hpbGQgdG8gdGhlIGZpcnN0LiAtLT4KKyAgICA8YnI+PGJyPgor
CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKyAgICA8c2NyaXB0PgorICAgICAgICAv
LyBUaGlzIGNvZGUgd2lsbCBtYW5pcHVsYXRlIHRoZSBmaXJzdCBCUiBub2RlIGJ5IGFkZGluZyBh
biAiaWQiIHRvIGl0LgorICAgICAgICAvLyBUaGlzIHNhbWUgQlIgd2lsbCBiZSBpbnNwZWN0ZWQg
YWZ0ZXIgWEhSIGxvYWRzIHRoZSBkb2N1bWVudCB0byBzZWUKKyAgICAgICAgLy8gaWYgdGhpcyBz
Y3JpcHQgZXhlY3V0ZWQgb3Igbm90LiAgSWYgaXQgZGlkbid0IGV4ZWN1dGUsIHRoZSBmaXJzdCBC
UgorICAgICAgICAvLyB3aWxsIG5vdCBoYXZlIGFuICJpZCIgc3BlY2lmaWVkIGFuZCB0aGUgdGVz
dCBwYXNzZXMuCisgICAgICAgIHZhciBiciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdiNk
ZXNjcmlwdGlvbiArIGJyJyk7CisgICAgICAgIGJyLmlkID0gJ2JyZWFrLXRhZyc7CisgICAgPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3ht
bGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLWludmFsaWQteG1sLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qt
cmVzcG9uc2VYTUwtaW52YWxpZC14bWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2MjcwODc3
MjM0YmI2OWI5YjA1YjA1NmEzNzY2Y2M5MTRjNWY3OWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLWlu
dmFsaWQteG1sLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUaGlzIHRlc3RzIHRoZSBY
TUxIdHRwUmVxdWVzdCByZXNwb25zZVhNTCBhdHRyaWJ1dGUgdmFsdWUgd2hlbiBnaXZlbiBpbnZh
bGlkIFhNTCBkYXRhLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB4aHIu
cmVhZHlTdGF0ZSBpcyA0CitQQVNTIHhoci5yZXNwb25zZVhNTCBpcyBudWxsCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC1p
bnZhbGlkLXhtbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRw
cmVxdWVzdC1yZXNwb25zZVhNTC1pbnZhbGlkLXhtbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkN2U1N2U5
NTBlYmFlMzIwMzYzZDlhOGU5NTNjYzk5NzNiMTc3YzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLWlu
dmFsaWQteG1sLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCdUaGlzIHRlc3Rz
IHRoZSBYTUxIdHRwUmVxdWVzdCByZXNwb25zZVhNTCBhdHRyaWJ1dGUgdmFsdWUgd2hlbiBnaXZl
biBpbnZhbGlkIFhNTCBkYXRhLicpOworCisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKyAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpLAorICAgICAgICAg
ICAgdXJsID0gJ3Jlc291cmNlcy94bWxodHRwcmVxdWVzdC1nZXQtaW52YWxpZC1kYXRhLnhtbCc7
CisgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHNob3VsZEV2
YWx1YXRlVG8oJ3hoci5yZWFkeVN0YXRlJywgNCk7CisgICAgICAgICAgICBzaG91bGRCZU51bGwo
J3hoci5yZXNwb25zZVhNTCcpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IH07CisgICAgICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0
RmFpbGVkKCdUaGUgWEhSIHJlcXVlc3QgdG8gYW4gZXhpc3RpbmcgcmVzb3VyY2UgZmFpbGVkOiAi
JyArIHVybCArICciJyk7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfTsK
KyAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVybCk7CisgICAgICAgIHhoci5zZW5kKG51bGwpOwor
ICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJl
cXVlc3QtcmVzcG9uc2VYTUwteG1sLWRvY3VtZW50LXJlc3BvbnNldHlwZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNl
WE1MLXhtbC1kb2N1bWVudC1yZXNwb25zZXR5cGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIy
ZTEwYzViZGZiNzdmMTJlZWJkZDY2YTljYTY0ZmEzYmJkMTVlZjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNl
WE1MLXhtbC1kb2N1bWVudC1yZXNwb25zZXR5cGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMg
QEAKK1RoaXMgdGVzdHMgdGhlIFhNTEh0dHBSZXF1ZXN0IHJlc3BvbnNlWE1MIGxvYWRpbmcgYW4g
WE1MIGRvY3VtZW50IHdpdGggcmVzcG9uc2VUeXBlICJkb2N1bWVudCIuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIHhoci5yZXNwb25zZVhNTCBpcyBub24tbnVsbC4KK1BB
U1MgeGhyLnJlc3BvbnNlWE1MIGluc3RhbmNlb2YgRG9jdW1lbnQgaXMgdHJ1ZQorUEFTUyBpZDMg
aXMgbm9uLW51bGwuCitQQVNTIGlkMy50ZXh0Q29udGVudCBpcyAiVGhyZWUiCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC14
bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHBy
ZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLXhtbC1kb2N1bWVudC1yZXNwb25zZXR5
cGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45YTAzMWQ0OGYyMGUyOWU2NjEzMGNhZmQxYmU0YmE0YjU2NDA0
NTZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC94
bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC14bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLmh0bWwK
QEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRoZSBYTUxIdHRwUmVx
dWVzdCByZXNwb25zZVhNTCBsb2FkaW5nIGFuIFhNTCBkb2N1bWVudCB3aXRoIHJlc3BvbnNlVHlw
ZSAiZG9jdW1lbnQiLicpOworCisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KyAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpLAorICAgICAgICAgICAgdXJs
ID0gJ3Jlc291cmNlcy94bWxodHRwcmVxdWVzdC1nZXQtZGF0YS54bWwnLAorICAgICAgICAgICAg
aWQzOworICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzaG91
bGRCZU5vbk51bGwoJ3hoci5yZXNwb25zZVhNTCcpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVl
KCd4aHIucmVzcG9uc2VYTUwgaW5zdGFuY2VvZiBEb2N1bWVudCcpOworCisgICAgICAgICAgICBp
ZDMgPSB4aHIucmVzcG9uc2VYTUwuZ2V0RWxlbWVudEJ5SWQoJ2lkMycpOworICAgICAgICAgICAg
c2hvdWxkQmVOb25OdWxsKCdpZDMnKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnaWQzLnRleHRDb250ZW50JywgJ1RocmVlJyk7CisKKyAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9OworICAgICAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgdGVzdEZhaWxlZCgnVGhlIFhIUiByZXF1ZXN0IHRvIGFuIGV4aXN0aW5nIHJlc291
cmNlIGZhaWxlZDogIicgKyB1cmwgKyAnIicpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH07CisgICAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwpOworICAgICAgICB4aHIu
cmVzcG9uc2VUeXBlID0gJ2RvY3VtZW50JzsKKyAgICAgICAgeGhyLnNlbmQobnVsbCk7CisgICAg
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVz
dC1yZXNwb25zZVhNTC14bWwtbm8tcmVzcG9uc2V0eXBlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwteG1sLW5v
LXJlc3BvbnNldHlwZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg3NjIzODNhMzc5ZTQ4YjVm
NDIwNDk0MmY2ZTM1YjQxODZmY2MwMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwteG1sLW5vLXJlc3Bv
bnNldHlwZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGhpcyB0ZXN0cyB0aGUgWE1M
SHR0cFJlcXVlc3QgcmVzcG9uc2VYTUwgbG9hZGluZyBhbiBYTUwgZG9jdW1lbnQgd2l0aCBubyBz
cGVjaWZpZWQgcmVzcG9uc2VUeXBlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyB4aHIucmVzcG9uc2VYTUwgaXMgbm9uLW51bGwuCitQQVNTIHhoci5yZXNwb25zZVhNTCBp
bnN0YW5jZW9mIERvY3VtZW50IGlzIHRydWUKK1BBU1MgaWQzIGlzIG5vbi1udWxsLgorUEFTUyBp
ZDMudGV4dENvbnRlbnQgaXMgIlRocmVlIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QveG1saHR0
cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwteG1sLW5vLXJlc3BvbnNldHlwZS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNw
b25zZVhNTC14bWwtbm8tcmVzcG9uc2V0eXBlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmJlMTExNzljOWMw
ZjY0MmRkMmZmMzM4OTZhMzRjZDgxMDk2YTBlNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwteG1sLW5v
LXJlc3BvbnNldHlwZS5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgICBkZXNjcmlwdGlvbignVGhpcyB0
ZXN0cyB0aGUgWE1MSHR0cFJlcXVlc3QgcmVzcG9uc2VYTUwgbG9hZGluZyBhbiBYTUwgZG9jdW1l
bnQgd2l0aCBubyBzcGVjaWZpZWQgcmVzcG9uc2VUeXBlLicpOworCisgICAgICAgIHdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVz
dCgpLAorICAgICAgICAgICAgdXJsID0gJ3Jlc291cmNlcy94bWxodHRwcmVxdWVzdC1nZXQtZGF0
YS54bWwnLAorICAgICAgICAgICAgaWQzOworICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBzaG91bGRCZU5vbk51bGwoJ3hoci5yZXNwb25zZVhNTCcpOworICAg
ICAgICAgICAgc2hvdWxkQmVUcnVlKCd4aHIucmVzcG9uc2VYTUwgaW5zdGFuY2VvZiBEb2N1bWVu
dCcpOworCisgICAgICAgICAgICBpZDMgPSB4aHIucmVzcG9uc2VYTUwuZ2V0RWxlbWVudEJ5SWQo
J2lkMycpOworICAgICAgICAgICAgc2hvdWxkQmVOb25OdWxsKCdpZDMnKTsKKyAgICAgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygnaWQzLnRleHRDb250ZW50JywgJ1RocmVlJyk7CisKKyAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9OworICAgICAgICB4aHIub25lcnJv
ciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgnVGhlIFhIUiByZXF1ZXN0
IHRvIGFuIGV4aXN0aW5nIHJlc291cmNlIGZhaWxlZDogIicgKyB1cmwgKyAnIicpOworICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHhoci5vcGVuKCdHRVQn
LCB1cmwpOworICAgICAgICB4aHIuc2VuZChudWxsKTsKKyAgICA8L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLXhtbC10
ZXh0LXJlc3BvbnNldHlwZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHBy
ZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLXhtbC10ZXh0LXJlc3BvbnNldHlwZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVkNmQ0YzE5YjE3OTc1Yjk2YmI0ZDE3MDgzYzVmYjNh
YTE2MGNjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVl
c3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwteG1sLXRleHQtcmVzcG9uc2V0eXBlLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3RzIHRoZSBYTUxIdHRwUmVxdWVzdCBy
ZXNwb25zZVhNTCBsb2FkaW5nIGFuIFhNTCBkb2N1bWVudCB3aXRoIHJlc3BvbnNlVHlwZSAidGV4
dCIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHhoci5yZXNwb25zZVhN
TCB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9u
IDExLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVl
c3QtcmVzcG9uc2VYTUwteG1sLXRleHQtcmVzcG9uc2V0eXBlLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLXhtbC10ZXh0LXJl
c3BvbnNldHlwZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNmUwMWE3MDAxZTMyYzE4NjFjMjJiZjNhOGE1
ZTVjNjUyMjcwYzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHBy
ZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLXhtbC10ZXh0LXJlc3BvbnNldHlwZS5o
dG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0PgorICAgICAgICBkZXNjcmlwdGlvbignVGhpcyB0ZXN0cyB0aGUgWE1MSHR0
cFJlcXVlc3QgcmVzcG9uc2VYTUwgbG9hZGluZyBhbiBYTUwgZG9jdW1lbnQgd2l0aCByZXNwb25z
ZVR5cGUgInRleHQiLicpOworCisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KyAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpLAorICAgICAgICAgICAgdXJs
ID0gJ3Jlc291cmNlcy94bWxodHRwcmVxdWVzdC1nZXQtZGF0YS54bWwnLAorICAgICAgICAgICAg
aWQzOworICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzaG91
bGRUaHJvdygneGhyLnJlc3BvbnNlWE1MJywgJyJFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERP
TSBFeGNlcHRpb24gMTEiJyk7CisKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9OworICAgICAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVz
dEZhaWxlZCgnVGhlIFhIUiByZXF1ZXN0IHRvIGFuIGV4aXN0aW5nIHJlc291cmNlIGZhaWxlZDog
IicgKyB1cmwgKyAnIicpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH07
CisgICAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwpOworICAgICAgICB4aHIucmVzcG9uc2VUeXBl
ID0gJ3RleHQnOworICAgICAgICB4aHIuc2VuZChudWxsKTsKKyAgICA8L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119667</attachid>
            <date>2011-12-16 14:11:33 -0800</date>
            <delta_ts>2011-12-16 14:11:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74626-20111216171130.patch</filename>
            <type>text/plain</type>
            <size>29633</size>
            <attacher name="Jarred Nicholls">jarred</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjZmNGQ5ODFmYjFkYTUy
YWVkN2Q0Y2RkODkwN2RiYzU0MWI3YTZmMS4uMTA2NmNhODE3ZmRhMWJhNTlhZjA2NmM3ZWU5ZDc1
ZTgxOTVjYzFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDExLTEyLTE2ICBKYXJy
ZWQgTmljaG9sbHMgIDxqYXJyZWRAc2VuY2hhLmNvbT4KKworICAgICAgICBTdXBwb3J0IEhUTUwg
ZG9jdW1lbnRzIGluIFhIUi5yZXNwb25zZVhNTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2MjYKKworICAgICAgICBMYXRlc3QgVzNDIFhIUiBzcGVj
IGRldGFpbHMgZm9yIHRoZSByZXNwb25zZVhNTCBhdHRyaWJ1dGU6CisgICAgICAgIGh0dHA6Ly9k
dmNzLnczLm9yZy9oZy94aHIvcmF3LWZpbGUvdGlwL092ZXJ2aWV3Lmh0bWwjdGhlLXJlc3BvbnNl
eG1sLWF0dHJpYnV0ZQorICAgICAgICBodHRwOi8vZHZjcy53My5vcmcvaGcveGhyL3Jhdy1maWxl
L3RpcC9PdmVydmlldy5odG1sI2RvY3VtZW50LXJlc3BvbnNlLWVudGl0eS1ib2R5CisKKyAgICAg
ICAgWEhSLnJlc3BvbnNlWE1MIHdhcyBub3QgY29tcGxpYW50IHBlciB0aGUgbGF0ZXN0IGVkaXRv
cidzIGRyYWZ0IG9mIHRoZSBYSFIgc3BlYy4KKyAgICAgICAgVGhlIGZvbGxvd2luZyBjb21wbGlh
bmNlIGlzc3VlIGhhdmUgYmVlbiBjb3JyZWN0ZWQ6CisgICAgICAgICAgLSBBIHJlc3BvbnNlVHlw
ZSBvZiAidGV4dCIgc2hvdWxkIGRpc2FsbG93IGFjY2VzcyB0byByZXNwb25zZVhNTCBieSB0aHJv
d2luZyBhbiBJbnZhbGlkU3RhdGUgZXhjZXB0aW9uLgorICAgICAgICAgIC0gV2hlbiB0aGUgZXJy
b3IgZmxhZyBpcyB0b2dnbGVkLCByZXNwb25zZVhNTCBzaG91bGQgcmV0dXJuICJudWxsIiBpbW1l
ZGlhdGVseSBhbmQgbm90IGF0dGVtcHQgdG8gY3JlYXRlIGEgbmV3IERvY3VtZW50LgorICAgICAg
ICAgIC0gcmVzcG9uc2VYTUwgc2hvdWxkIHJldHVybiBhIHZhbGlkIEhUTUwgZG9jdW1lbnQgd2hl
biB0aGUgTUlNRSB0eXBlIGlzICJ0ZXh0L2h0bWwiLCBidXQgb25seSB3aGVuIHRoZSBjYWxsZXIg
aGFzCisgICAgICAgICAgICBleHBsaWNpdGx5IHNldCByZXNwb25zZVR5cGUgdG8gImRvY3VtZW50
Ii4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAg
IFRlc3RzOiBmYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLWh0
bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLXF1aXJrcy5odG1sCisgICAgICAgICAgICAgICBmYXN0
L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLWh0bWwtZG9jdW1lbnQt
cmVzcG9uc2V0eXBlLXN0cmljdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3htbGh0dHByZXF1
ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLWh0bWwtbm8tcmVzcG9uc2V0eXBlLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9u
c2VYTUwtaW52YWxpZC14bWwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC94bWxodHRwcmVxdWVz
dC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC14bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVz
cG9uc2VYTUwteG1sLXRleHQtcmVzcG9uc2V0eXBlLmh0bWwKKworICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9u
c2VYTUwpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VC
dWZmZXJzKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDogUmVuYW1lIG1fcmVzcG9u
c2VYTUwgdG8gbV9yZXNwb25zZURvY3VtZW50CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6b3B0aW9uYWxSZXNwb25zZVhNTCk6CisKIDIwMTEtMTItMTYgIEJyYW5pbWlyIExhbWJv
diAgPGJsYW1ib3ZAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIHN2Zy9jbGlwLXBh
dGgvY2xpcC1pbi1tYXNrLnN2ZyBmYWlscyBvbiBXaW5kb3dzIGFuZCBMaW51eApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggZDJhYzg0YWY0NzUzZGU5ZDYzNzkxMGE1ODM4
YTBjZTQ3NDhmNTdjYS4uNDhjNzEzY2QxOWNmZWE4NTE2M2I5NzQ0ZTdhNzI3OTY2NDI0ODA2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0yNywxMyArMjcsMTMgQEAK
ICNpbmNsdWRlICJDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCIKICNpbmNsdWRlICJET01Gb3Jt
RGF0YS5oIgogI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCiAj
aW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1ZGUgIkhUTUxE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiSFRUUFZhbGlk
YXRpb24uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKQEAgLTIxNSwz
MCArMjE1LDM4IEBAIFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VUZXh0KEV4Y2VwdGlv
bkNvZGUmIGVjKQogCiBEb2N1bWVudCogWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlWE1MKEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIGlmIChtX3Jlc3BvbnNlVHlwZUNvZGUgIT0gUmVzcG9uc2VU
eXBlRGVmYXVsdCAmJiBtX3Jlc3BvbnNlVHlwZUNvZGUgIT0gUmVzcG9uc2VUeXBlVGV4dCAmJiBt
X3Jlc3BvbnNlVHlwZUNvZGUgIT0gUmVzcG9uc2VUeXBlRG9jdW1lbnQpIHsKKyAgICBpZiAobV9y
ZXNwb25zZVR5cGVDb2RlICE9IFJlc3BvbnNlVHlwZURlZmF1bHQgJiYgbV9yZXNwb25zZVR5cGVD
b2RlICE9IFJlc3BvbnNlVHlwZURvY3VtZW50KSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFU
RV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChtX3N0YXRlICE9IERP
TkUpCisgICAgaWYgKG1fZXJyb3IgfHwgbV9zdGF0ZSAhPSBET05FKQogICAgICAgICByZXR1cm4g
MDsKIAogICAgIGlmICghbV9jcmVhdGVkRG9jdW1lbnQpIHsKLSAgICAgICAgaWYgKChtX3Jlc3Bv
bnNlLmlzSFRUUCgpICYmICFyZXNwb25zZUlzWE1MKCkpIHx8IHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNXb3JrZXJDb250ZXh0KCkpIHsKLSAgICAgICAgICAgIC8vIFRoZSBXM0Mgc3BlYyBy
ZXF1aXJlcyB0aGlzLgotICAgICAgICAgICAgbV9yZXNwb25zZVhNTCA9IDA7CisgICAgICAgIGJv
b2wgaXNIVE1MID0gZXF1YWxJZ25vcmluZ0Nhc2UocmVzcG9uc2VNSU1FVHlwZSgpLCAidGV4dC9o
dG1sIik7CisKKyAgICAgICAgLy8gVGhlIFczQyBzcGVjIHJlcXVpcmVzIHRoZSBmaW5hbCBNSU1F
IHR5cGUgdG8gYmUgc29tZSB2YWxpZCBYTUwgdHlwZSwgb3IgdGV4dC9odG1sLgorICAgICAgICAv
LyBJZiBpdCBpcyB0ZXh0L2h0bWwsIHRoZW4gdGhlIHJlc3BvbnNlVHlwZSBvZiAiZG9jdW1lbnQi
IG11c3QgaGF2ZSBiZWVuIHN1cHBsaWVkIGV4cGxpY2l0bHkuCisgICAgICAgIGlmICgobV9yZXNw
b25zZS5pc0hUVFAoKSAmJiAhcmVzcG9uc2VJc1hNTCgpICYmICFpc0hUTUwpCisgICAgICAgICAg
ICB8fCAoaXNIVE1MICYmIG1fcmVzcG9uc2VUeXBlQ29kZSA9PSBSZXNwb25zZVR5cGVEZWZhdWx0
KQorICAgICAgICAgICAgfHwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckNvbnRl
eHQoKSkgeworICAgICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gMDsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwgPSBEb2N1bWVudDo6Y3JlYXRlKDAsIG1f
dXJsKTsKKyAgICAgICAgICAgIGlmIChpc0hUTUwpCisgICAgICAgICAgICAgICAgbV9yZXNwb25z
ZURvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUoMCwgbV91cmwpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IERvY3VtZW50OjpjcmVh
dGUoMCwgbV91cmwpOwogICAgICAgICAgICAgLy8gRklYTUU6IFNldCBMYXN0LU1vZGlmaWVkLgot
ICAgICAgICAgICAgbV9yZXNwb25zZVhNTC0+c2V0Q29udGVudChtX3Jlc3BvbnNlQnVpbGRlci50
b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHkoKSk7Ci0gICAgICAgICAgICBtX3Jlc3BvbnNlWE1MLT5z
ZXRTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbigpKTsKLSAgICAgICAgICAgIGlmICghbV9y
ZXNwb25zZVhNTC0+d2VsbEZvcm1lZCgpKQotICAgICAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwg
PSAwOworICAgICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50LT5zZXRDb250ZW50KG1fcmVzcG9u
c2VCdWlsZGVyLnRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpKTsKKyAgICAgICAgICAgIG1fcmVz
cG9uc2VEb2N1bWVudC0+c2V0U2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4oKSk7CisgICAg
ICAgICAgICBpZiAoIW1fcmVzcG9uc2VEb2N1bWVudC0+d2VsbEZvcm1lZCgpKQorICAgICAgICAg
ICAgICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IDA7CiAgICAgICAgIH0KICAgICAgICAgbV9jcmVh
dGVkRG9jdW1lbnQgPSB0cnVlOwogICAgIH0KIAotICAgIHJldHVybiBtX3Jlc3BvbnNlWE1MLmdl
dCgpOworICAgIHJldHVybiBtX3Jlc3BvbnNlRG9jdW1lbnQuZ2V0KCk7CiB9CiAKICNpZiBFTkFC
TEUoWEhSX1JFU1BPTlNFX0JMT0IpCkBAIC03NDAsNyArNzQ4LDcgQEAgdm9pZCBYTUxIdHRwUmVx
dWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogewogICAgIG1fcmVzcG9uc2VCdWlsZGVyLmNs
ZWFyKCk7CiAgICAgbV9jcmVhdGVkRG9jdW1lbnQgPSBmYWxzZTsKLSAgICBtX3Jlc3BvbnNlWE1M
ID0gMDsKKyAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSAwOwogI2lmIEVOQUJMRShYSFJfUkVTUE9O
U0VfQkxPQikKICAgICBtX3Jlc3BvbnNlQmxvYiA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmgKaW5kZXggZGQ2NThmODM0OWMzM2RlN2JkMDhmOTA2NzcyZWJhNDk5MzI2
NWY1ZS4uYmNiYTA5ODQzNjFhOTU0YWI0NTQzZGE2YmI4ZjcwM2I4NTQwMTNmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAg
U3RyaW5nIGdldFJlc3BvbnNlSGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0
aW9uQ29kZSYpIGNvbnN0OwogICAgIFN0cmluZyByZXNwb25zZVRleHQoRXhjZXB0aW9uQ29kZSYp
OwogICAgIERvY3VtZW50KiByZXNwb25zZVhNTChFeGNlcHRpb25Db2RlJik7Ci0gICAgRG9jdW1l
bnQqIG9wdGlvbmFsUmVzcG9uc2VYTUwoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlWE1MLmdl
dCgpOyB9CisgICAgRG9jdW1lbnQqIG9wdGlvbmFsUmVzcG9uc2VYTUwoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlRG9jdW1lbnQuZ2V0KCk7IH0KICNpZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JM
T0IpCiAgICAgQmxvYiogcmVzcG9uc2VCbG9iKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBC
bG9iKiBvcHRpb25hbFJlc3BvbnNlQmxvYigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VCbG9i
LmdldCgpOyB9CkBAIC0yMDYsNyArMjA2LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZ0J1aWxk
ZXIgbV9yZXNwb25zZUJ1aWxkZXI7CiAgICAgbXV0YWJsZSBib29sIG1fY3JlYXRlZERvY3VtZW50
OwotICAgIG11dGFibGUgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlWE1MOworICAgIG11dGFi
bGUgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAgICAgCiAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CiAgICAgbXV0YWJsZSBSZWZQ
dHI8QXJyYXlCdWZmZXI+IG1fcmVzcG9uc2VBcnJheUJ1ZmZlcjsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZTk2ZTlhNDZh
YTRlMGRjYjI4ZDYyMzJhMDYzOWMzMzJiZTEzZTk1Li5mYzIwNDBhOTc5NWE2MDA0YmY2Yjc4NDhh
NjZkNDdkNmU4N2VkY2JlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMTItMTYgIEphcnJl
ZCBOaWNob2xscyAgPGphcnJlZEBzZW5jaGEuY29tPgorCisgICAgICAgIFN1cHBvcnQgSFRNTCBk
b2N1bWVudHMgaW4gWEhSLnJlc3BvbnNlWE1MCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NDYyNgorCisgICAgICAgIExhdGVzdCBXM0MgWEhSIHNwZWMg
ZGV0YWlscyBmb3IgdGhlIHJlc3BvbnNlWE1MIGF0dHJpYnV0ZToKKyAgICAgICAgaHR0cDovL2R2
Y3MudzMub3JnL2hnL3hoci9yYXctZmlsZS90aXAvT3ZlcnZpZXcuaHRtbCN0aGUtcmVzcG9uc2V4
bWwtYXR0cmlidXRlCisgICAgICAgIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy94aHIvcmF3LWZpbGUv
dGlwL092ZXJ2aWV3Lmh0bWwjZG9jdW1lbnQtcmVzcG9uc2UtZW50aXR5LWJvZHkKKworICAgICAg
ICBYSFIucmVzcG9uc2VYTUwgd2FzIG5vdCBjb21wbGlhbnQgcGVyIHRoZSBsYXRlc3QgZWRpdG9y
J3MgZHJhZnQgb2YgdGhlIFhIUiBzcGVjLgorICAgICAgICBUaGUgZm9sbG93aW5nIGNvbXBsaWFu
Y2UgaXNzdWUgaGF2ZSBiZWVuIGNvcnJlY3RlZDoKKyAgICAgICAgICAtIEEgcmVzcG9uc2VUeXBl
IG9mICJ0ZXh0IiBzaG91bGQgZGlzYWxsb3cgYWNjZXNzIHRvIHJlc3BvbnNlWE1MIGJ5IHRocm93
aW5nIGFuIEludmFsaWRTdGF0ZSBleGNlcHRpb24uCisgICAgICAgICAgLSBXaGVuIHRoZSBlcnJv
ciBmbGFnIGlzIHRvZ2dsZWQsIHJlc3BvbnNlWE1MIHNob3VsZCByZXR1cm4gIm51bGwiIGltbWVk
aWF0ZWx5IGFuZCBub3QgYXR0ZW1wdCB0byBjcmVhdGUgYSBuZXcgRG9jdW1lbnQuCisgICAgICAg
ICAgLSByZXNwb25zZVhNTCBzaG91bGQgcmV0dXJuIGEgdmFsaWQgSFRNTCBkb2N1bWVudCB3aGVu
IHRoZSBNSU1FIHR5cGUgaXMgInRleHQvaHRtbCIsIGJ1dCBvbmx5IHdoZW4gdGhlIGNhbGxlciBo
YXMKKyAgICAgICAgICAgIGV4cGxpY2l0bHkgc2V0IHJlc3BvbnNlVHlwZSB0byAiZG9jdW1lbnQi
LgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAg
KiBmYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmcuaHRtbDoKKyAgICAgICAgKiBmYXN0L3ht
bGh0dHByZXF1ZXN0L3Jlc291cmNlcy94bWxodHRwcmVxdWVzdC1nZXQtaW52YWxpZC1kYXRhLnht
bDogQWRkZWQuCisgICAgICAgICogZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1y
ZXNwb25zZVhNTC1odG1sLWRvY3VtZW50LXJlc3BvbnNldHlwZS1xdWlya3MtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJl
c3BvbnNlWE1MLWh0bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLXF1aXJrcy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1M
LWh0bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLXN0cmljdC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwt
aHRtbC1kb2N1bWVudC1yZXNwb25zZXR5cGUtc3RyaWN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwtaHRtbC1uby1y
ZXNwb25zZXR5cGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3htbGh0dHBy
ZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLWh0bWwtbm8tcmVzcG9uc2V0eXBlLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qt
cmVzcG9uc2VYTUwtaW52YWxpZC14bWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLWludmFsaWQteG1s
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVl
c3QtcmVzcG9uc2VYTUwteG1sLWRvY3VtZW50LXJlc3BvbnNldHlwZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9u
c2VYTUwteG1sLWRvY3VtZW50LXJlc3BvbnNldHlwZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLXhtbC10ZXh0LXJl
c3BvbnNldHlwZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QveG1saHR0cHJl
cXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwteG1sLXRleHQtcmVzcG9uc2V0eXBlLmh0
bWw6IEFkZGVkLgorCiAyMDExLTEyLTE2ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5j
b20+CiAKICAgICAgICAgW2Nocm9taXVtXSBtZWRpYS9ldmVudC1hdHRyaWJ1dGVzLmh0bWwgaXMg
Zmxha3kgb24gYWxsIHBsYXRmb3JtcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvaWZyYW1lLXJlcGFyZW50aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJh
bWUtcmVwYXJlbnRpbmcuaHRtbAppbmRleCBlYzFiNWJiZWIwZWEwMDc5MjRmMjJhYTk2YWY3ZmFl
ZTg2MjFlMGI4Li5iNzFhNWJkMGUzYjlmZDFiZDFlMDY3ZTk2MGY4MjgwOTU0N2U5Mjg4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmcuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmcuaHRtbApAQCAt
NjMsNyArNjMsNyBAQCBmaW5pc2ggPSBmdW5jdGlvbigpCiAKICAgICAvLyBMYXN0IHRlc3QgLSB2
ZXJpZnkgdGhhdCBub24tYXR0YWNoZWQgZG9jdW1lbnQgZG9lcyBub3Qga2VlcCBpZnJhbWUgYWxp
dmUgZXZlbiBpZiBhZG9wdE5vZGUoKSBpcyB1c2VkLgogICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0
cFJlcXVlc3QoKTsKLSAgICB4aHIub3BlbigiR0VUIiwiZGF0YTp0ZXh0L2h0bWwsPGh0bWwgeG1s
bnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPjxib2R5IGlkPSdib2R5Jz5IZWxsbzwv
Ym9keT48L2h0bWw+IiwgZmFsc2UpOworICAgIHhoci5vcGVuKCJHRVQiLCJkYXRhOmFwcGxpY2F0
aW9uL3hodG1sK3htbCw8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+
PGJvZHkgaWQ9J2JvZHknPkhlbGxvPC9ib2R5PjwvaHRtbD4iLCBmYWxzZSk7CiAgICAgeGhyLnNl
bmQobnVsbCk7CiAgICAgdmFyIGRvYyA9IHhoci5yZXNwb25zZVhNTDsKICAgICBsb2coZG9jLmdl
dEVsZW1lbnRCeUlkKCJib2R5IikuaW5uZXJUZXh0ID09ICJIZWxsbyIgPyAiUEFTUzogWEhSLWxv
YWRlZCBEb2N1bWVudCBpcyBjb3JyZWN0LiIgOiAiRkFJTDogWEhSLWxvYWRlZCBkb2N1bWVudCBp
cyBub3QgY29ycmVjdC4iKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJl
cXVlc3QvcmVzb3VyY2VzL3htbGh0dHByZXF1ZXN0LWdldC1pbnZhbGlkLWRhdGEueG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMveG1saHR0cHJlcXVlc3QtZ2V0
LWludmFsaWQtZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzEwNmM5ZmZjNzQ4NzIyNDI5NjRhY2VhY2Jl
M2I3ZWFjNjJlNGVhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL3htbGh0dHByZXF1ZXN0LWdldC1pbnZhbGlkLWRhdGEueG1sCkBA
IC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgZG9jIFsKKzwh
QVRUTElTVCBkIGlkIElEICNJTVBMSUVEPgorXT4KKzxkb2M+CisgIDxmb28geG1sbnM9ImZvb2Jh
ciI+T25lPC9mb28+IDx4OmJhciB4bWxuczp4PSJiYXJmb28iPlR3bzwveDpiYXI+CisgIDxkIGlk
PSJpZDMiPlRocmVlCis8L2RvYz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QveG1saHR0
cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwtaHRtbC1kb2N1bWVudC1yZXNwb25z
ZXR5cGUtcXVpcmtzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVl
c3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwtaHRtbC1kb2N1bWVudC1yZXNwb25zZXR5cGUt
cXVpcmtzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTk4ODY4NzhhYWE2ZjYxOTA2ZTQ3Yzkw
NGNmNzI4MGYzMGJlODdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC94bWxo
dHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC1odG1sLWRvY3VtZW50LXJlc3Bv
bnNldHlwZS1xdWlya3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAKK1RoaXMgdGVzdHMg
dGhlIFhNTEh0dHBSZXF1ZXN0IHJlc3BvbnNlWE1MIGxvYWRpbmcgYW4gSFRNTCBkb2N1bWVudCBp
biBRdWlya3MgTW9kZSB3aXRoIHJlc3BvbnNlVHlwZSAiZG9jdW1lbnQiLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyB4aHIucmVzcG9uc2VYTUwgaXMgbm9uLW51bGwuCitQ
QVNTIHhoci5yZXNwb25zZVhNTCBpbnN0YW5jZW9mIERvY3VtZW50IGlzIHRydWUKK1RoZSB0d28g
b3BlbiA8YnI+IGVsZW1lbnRzIHNob3VsZCBiZSBzaWJsaW5ncyBvZiBvbmUgYW5vdGhlciBhbmQg
bm90IG5lc3RlZCBwZXIgSFRNTCBwYXJzZXIgc3BlYy4KK1BBU1MgY2hpbGRyZW4ubGVuZ3RoIGlz
IDUKK1BBU1MgY2hpbGRyZW5bMF0udGFnTmFtZSBpcyAiRElWIgorUEFTUyBjaGlsZHJlblswXS5p
ZCBpcyAiZGVzY3JpcHRpb24iCitQQVNTIGNoaWxkcmVuWzFdLnRhZ05hbWUgaXMgIkJSIgorUEFT
UyBjaGlsZHJlblsyXS50YWdOYW1lIGlzICJCUiIKK1BBU1MgY2hpbGRyZW5bM10udGFnTmFtZSBp
cyAiRElWIgorUEFTUyBjaGlsZHJlblszXS5pZCBpcyAiY29uc29sZSIKK1BBU1MgY2hpbGRyZW5b
NF0udGFnTmFtZSBpcyAiU0NSSVBUIgorUEFTUyBjaGlsZHJlblsxXS5pZCBpcyBub3QgImJyZWFr
LXRhZyIKK1BBU1MgeGhyLnJlc3BvbnNlWE1MLmNvbXBhdE1vZGUgaXMgIkJhY2tDb21wYXQiCitQ
QVNTIHhoci5yZXNwb25zZVhNTC5jb21wYXRNb2RlIGlzICJCYWNrQ29tcGF0IgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNl
WE1MLWh0bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLXF1aXJrcy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC1odG1sLWRvY3Vt
ZW50LXJlc3BvbnNldHlwZS1xdWlya3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjcxNGZkNjViMGFkOWZi
ZDM5OTM3NTVlNzM3YzA3YmFiYTIyZmEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC1odG1sLWRvY3Vt
ZW50LXJlc3BvbnNldHlwZS1xdWlya3MuaHRtbApAQCAtMCwwICsxLDcyIEBACis8aHRtbD4KKzxo
ZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRo
ZSBYTUxIdHRwUmVxdWVzdCByZXNwb25zZVhNTCBsb2FkaW5nIGFuIEhUTUwgZG9jdW1lbnQgaW4g
UXVpcmtzIE1vZGUgd2l0aCByZXNwb25zZVR5cGUgImRvY3VtZW50Ii4nKTsKKworICAgICAgICB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0
cFJlcXVlc3QoKSwKKyAgICAgICAgICAgIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLAorICAg
ICAgICAgICAgY2hpbGRyZW47CisgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIHNob3VsZEJlTm9uTnVsbCgneGhyLnJlc3BvbnNlWE1MJyk7CisgICAgICAgICAg
ICBzaG91bGRCZVRydWUoJ3hoci5yZXNwb25zZVhNTCBpbnN0YW5jZW9mIERvY3VtZW50Jyk7CisK
KyAgICAgICAgICAgIGRlYnVnKCdUaGUgdHdvIG9wZW4gJmx0O2JyJmd0OyBlbGVtZW50cyBzaG91
bGQgYmUgc2libGluZ3Mgb2Ygb25lIGFub3RoZXIgYW5kIG5vdCBuZXN0ZWQgcGVyIEhUTUwgcGFy
c2VyIHNwZWMuJyk7CisKKyAgICAgICAgICAgIC8vIEdldCB0aGUgY2hpbGRyZW4gb2YgdGhlIGJv
ZHkgdGFnLCB1c2luZyBRU0EgdG8gc2tpcCBhbGwgdGV4dCBub2Rlcy4KKyAgICAgICAgICAgIGNo
aWxkcmVuID0geGhyLnJlc3BvbnNlWE1MLnF1ZXJ5U2VsZWN0b3JBbGwoJ2JvZHkgPiAqJyk7CisK
KyAgICAgICAgICAgIC8vIFRlc3QgdGhhdCB0aGUgSFRNTCBwYXJzZXIgd2FzIHVzZWQgYnkgY29u
ZmlybWluZyB0aGUgdHdvIEJSIHRhZ3MgYXJlIGFkamFjZW50IHNpYmxpbmdzCisgICAgICAgICAg
ICAvLyBhbmQgbm90IG5lc3RlZCB3aXRoaW4gb25lIGFub3RoZXIsIG5vciBuZXN0aW5nIHRoZSBk
aXYjY29uc29sZSBub2RlLgorICAgICAgICAgICAgLy8gVGhlcmUgc2hvdWxkIGJlIDUgbm9uLXRl
eHQgY2hpbGRyZW4gYWx0b2dldGhlci4KKyAgICAgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ2No
aWxkcmVuLmxlbmd0aCcsIDUpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdj
aGlsZHJlblswXS50YWdOYW1lJywgJ0RJVicpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdjaGlsZHJlblswXS5pZCcsICdkZXNjcmlwdGlvbicpOworICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdjaGlsZHJlblsxXS50YWdOYW1lJywgJ0JSJyk7CisgICAgICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2NoaWxkcmVuWzJdLnRhZ05hbWUnLCAnQlInKTsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnY2hpbGRyZW5bM10udGFnTmFtZScs
ICdESVYnKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnY2hpbGRyZW5bM10u
aWQnLCAnY29uc29sZScpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdjaGls
ZHJlbls0XS50YWdOYW1lJywgJ1NDUklQVCcpOworCisgICAgICAgICAgICAvLyBNYWtlIHN1cmUg
dGhlIGZpcnN0IEJSIHRhZyBkb2Vzbid0IGhhdmUgYW4gImlkIiBzZXQsIHdoaWNoIHdpbGwgcHJv
dmUKKyAgICAgICAgICAgIC8vIHRoZSBmaXJzdCBzY3JpcHQgaW4gdGhpcyBkb2N1bWVudCB3YXMg
bm90IGV4ZWN1dGVkLgorICAgICAgICAgICAgc2hvdWxkTm90QmUoJ2NoaWxkcmVuWzFdLmlkJywg
JyJicmVhay10YWciJyk7CisKKyAgICAgICAgICAgIC8vIFRoZSBwYXJzZWQgSFRNTCBkb2N1bWVu
dCBpbiByZXNwb25zZVhNTCBzaG91bGQgYmUgdGhlIHNhbWUgY29tcGF0TW9kZSBhcyB0aGlzIGRv
Y3VtZW50LgorICAgICAgICAgICAgLy8gVGhpcyBkb2N1bWVudCBpcyBpbiBxdWlya3MgbW9kZSBk
dWUgdG8gYSBtaXNzaW5nIERPQ1RZUEUuCisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ3hoci5yZXNwb25zZVhNTC5jb21wYXRNb2RlJywgJ0JhY2tDb21wYXQnKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygneGhyLnJlc3BvbnNlWE1MLmNvbXBhdE1vZGUnLCBk
b2N1bWVudC5jb21wYXRNb2RlKTsKKworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH07CisgICAgICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0
ZXN0RmFpbGVkKCdUaGUgWEhSIHJlcXVlc3QgdG8gYW4gZXhpc3RpbmcgcmVzb3VyY2UgZmFpbGVk
OiAiJyArIHVybCArICciJyk7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fTsKKyAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVybCk7CisgICAgICAgIHhoci5yZXNwb25zZVR5
cGUgPSAnZG9jdW1lbnQnOworICAgICAgICB4aHIuc2VuZChudWxsKTsKKyAgICA8L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisK
KyAgICA8IS0tIExlYXZlIHRoZXNlIGJyZWFrIHRhZ3MgbWFsZm9ybWVkL29wZW4gdG8gdGVzdCBI
VE1MIHBhcnNpbmcuCisgICAgICAgICBUaGV5IHNob3VsZCBiZSBzaWJsaW5ncyB0byBkaXYjZGVz
Y3JpcHRpb24sIGFuZCBub3QgbmVzdGVkIHdpdGhpbiBvbmUgYW5vdGhlci4KKyAgICAgICAgIFRo
ZSBYTUxEb2N1bWVudCBwYXJzZXIgd291bGQgdHJlYXQgdGhlIHNlY29uZCA8YnI+IGFzIGEgY2hp
bGQgdG8gdGhlIGZpcnN0LiAtLT4KKyAgICA8YnI+PGJyPgorCisgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisKKyAgICA8c2NyaXB0PgorICAgICAgICAvLyBUaGlzIGNvZGUgd2lsbCBtYW5p
cHVsYXRlIHRoZSBmaXJzdCBCUiBub2RlIGJ5IGFkZGluZyBhbiAiaWQiIHRvIGl0LgorICAgICAg
ICAvLyBUaGlzIHNhbWUgQlIgd2lsbCBiZSBpbnNwZWN0ZWQgYWZ0ZXIgWEhSIGxvYWRzIHRoZSBk
b2N1bWVudCB0byBzZWUKKyAgICAgICAgLy8gaWYgdGhpcyBzY3JpcHQgZXhlY3V0ZWQgb3Igbm90
LiAgSWYgaXQgZGlkbid0IGV4ZWN1dGUsIHRoZSBmaXJzdCBCUgorICAgICAgICAvLyB3aWxsIG5v
dCBoYXZlIGFuICJpZCIgc3BlY2lmaWVkIGFuZCB0aGUgdGVzdCBwYXNzZXMuCisgICAgICAgIHZh
ciBiciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdiNkZXNjcmlwdGlvbiArIGJyJyk7Cisg
ICAgICAgIGJyLmlkID0gJ2JyZWFrLXRhZyc7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHBy
ZXF1ZXN0LXJlc3BvbnNlWE1MLWh0bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLXN0cmljdC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0
LXJlc3BvbnNlWE1MLWh0bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLXN0cmljdC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTQ0NjU0ZGQ4OTI2Zjc3ZjJjMjBiMmFhMmI3YmNjZGI0OTkyYmIyYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0
cHJlcXVlc3QtcmVzcG9uc2VYTUwtaHRtbC1kb2N1bWVudC1yZXNwb25zZXR5cGUtc3RyaWN0LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBACitUaGlzIHRlc3RzIHRoZSBYTUxIdHRwUmVxdWVz
dCByZXNwb25zZVhNTCBsb2FkaW5nIGFuIEhUTUwgZG9jdW1lbnQgaW4gU3RyaWN0IE1vZGUgd2l0
aCByZXNwb25zZVR5cGUgImRvY3VtZW50Ii4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgeGhyLnJlc3BvbnNlWE1MIGlzIG5vbi1udWxsLgorUEFTUyB4aHIucmVzcG9uc2VY
TUwgaW5zdGFuY2VvZiBEb2N1bWVudCBpcyB0cnVlCitUaGUgdHdvIG9wZW4gPGJyPiBlbGVtZW50
cyBzaG91bGQgYmUgc2libGluZ3Mgb2Ygb25lIGFub3RoZXIgYW5kIG5vdCBuZXN0ZWQgcGVyIEhU
TUwgcGFyc2VyIHNwZWMuCitQQVNTIGNoaWxkcmVuLmxlbmd0aCBpcyA1CitQQVNTIGNoaWxkcmVu
WzBdLnRhZ05hbWUgaXMgIkRJViIKK1BBU1MgY2hpbGRyZW5bMF0uaWQgaXMgImRlc2NyaXB0aW9u
IgorUEFTUyBjaGlsZHJlblsxXS50YWdOYW1lIGlzICJCUiIKK1BBU1MgY2hpbGRyZW5bMl0udGFn
TmFtZSBpcyAiQlIiCitQQVNTIGNoaWxkcmVuWzNdLnRhZ05hbWUgaXMgIkRJViIKK1BBU1MgY2hp
bGRyZW5bM10uaWQgaXMgImNvbnNvbGUiCitQQVNTIGNoaWxkcmVuWzRdLnRhZ05hbWUgaXMgIlND
UklQVCIKK1BBU1MgY2hpbGRyZW5bMV0uaWQgaXMgbm90ICJicmVhay10YWciCitQQVNTIHhoci5y
ZXNwb25zZVhNTC5jb21wYXRNb2RlIGlzICJDU1MxQ29tcGF0IgorUEFTUyB4aHIucmVzcG9uc2VY
TUwuY29tcGF0TW9kZSBpcyAiQ1NTMUNvbXBhdCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC1odG1sLWRvY3VtZW50
LXJlc3BvbnNldHlwZS1zdHJpY3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVl
c3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwtaHRtbC1kb2N1bWVudC1yZXNwb25zZXR5cGUt
c3RyaWN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODE1YTZhNmIxNjk5MGEzMTRhYjZiNzkzY2RkNmJjMWMw
ZDE3YzUwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVl
c3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwtaHRtbC1kb2N1bWVudC1yZXNwb25zZXR5cGUt
c3RyaWN0Lmh0bWwKQEAgLTAsMCArMSw3MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRo
ZSBYTUxIdHRwUmVxdWVzdCByZXNwb25zZVhNTCBsb2FkaW5nIGFuIEhUTUwgZG9jdW1lbnQgaW4g
U3RyaWN0IE1vZGUgd2l0aCByZXNwb25zZVR5cGUgImRvY3VtZW50Ii4nKTsKKworICAgICAgICB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0
cFJlcXVlc3QoKSwKKyAgICAgICAgICAgIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLAorICAg
ICAgICAgICAgY2hpbGRyZW47CisgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIHNob3VsZEJlTm9uTnVsbCgneGhyLnJlc3BvbnNlWE1MJyk7CisgICAgICAgICAg
ICBzaG91bGRCZVRydWUoJ3hoci5yZXNwb25zZVhNTCBpbnN0YW5jZW9mIERvY3VtZW50Jyk7CisK
KyAgICAgICAgICAgIGRlYnVnKCdUaGUgdHdvIG9wZW4gJmx0O2JyJmd0OyBlbGVtZW50cyBzaG91
bGQgYmUgc2libGluZ3Mgb2Ygb25lIGFub3RoZXIgYW5kIG5vdCBuZXN0ZWQgcGVyIEhUTUwgcGFy
c2VyIHNwZWMuJyk7CisKKyAgICAgICAgICAgIC8vIEdldCB0aGUgY2hpbGRyZW4gb2YgdGhlIGJv
ZHkgdGFnLCB1c2luZyBRU0EgdG8gc2tpcCBhbGwgdGV4dCBub2Rlcy4KKyAgICAgICAgICAgIGNo
aWxkcmVuID0geGhyLnJlc3BvbnNlWE1MLnF1ZXJ5U2VsZWN0b3JBbGwoJ2JvZHkgPiAqJyk7CisK
KyAgICAgICAgICAgIC8vIFRlc3QgdGhhdCB0aGUgSFRNTCBwYXJzZXIgd2FzIHVzZWQgYnkgY29u
ZmlybWluZyB0aGUgdHdvIEJSIHRhZ3MgYXJlIGFkamFjZW50IHNpYmxpbmdzCisgICAgICAgICAg
ICAvLyBhbmQgbm90IG5lc3RlZCB3aXRoaW4gb25lIGFub3RoZXIsIG5vciBuZXN0aW5nIHRoZSBk
aXYjY29uc29sZSBub2RlLgorICAgICAgICAgICAgLy8gVGhlcmUgc2hvdWxkIGJlIDUgbm9uLXRl
eHQgY2hpbGRyZW4gYWx0b2dldGhlci4KKyAgICAgICAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ2No
aWxkcmVuLmxlbmd0aCcsIDUpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdj
aGlsZHJlblswXS50YWdOYW1lJywgJ0RJVicpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdjaGlsZHJlblswXS5pZCcsICdkZXNjcmlwdGlvbicpOworICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdjaGlsZHJlblsxXS50YWdOYW1lJywgJ0JSJyk7CisgICAgICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2NoaWxkcmVuWzJdLnRhZ05hbWUnLCAnQlInKTsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnY2hpbGRyZW5bM10udGFnTmFtZScs
ICdESVYnKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnY2hpbGRyZW5bM10u
aWQnLCAnY29uc29sZScpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdjaGls
ZHJlbls0XS50YWdOYW1lJywgJ1NDUklQVCcpOworCisgICAgICAgICAgICAvLyBNYWtlIHN1cmUg
dGhlIGZpcnN0IEJSIHRhZyBkb2Vzbid0IGhhdmUgYW4gImlkIiBzZXQsIHdoaWNoIHdpbGwgcHJv
dmUKKyAgICAgICAgICAgIC8vIHRoZSBmaXJzdCBzY3JpcHQgaW4gdGhpcyBkb2N1bWVudCB3YXMg
bm90IGV4ZWN1dGVkLgorICAgICAgICAgICAgc2hvdWxkTm90QmUoJ2NoaWxkcmVuWzFdLmlkJywg
JyJicmVhay10YWciJyk7CisKKyAgICAgICAgICAgIC8vIFRoZSBwYXJzZWQgSFRNTCBkb2N1bWVu
dCBpbiByZXNwb25zZVhNTCBzaG91bGQgYmUgdGhlIHNhbWUgY29tcGF0TW9kZSBhcyB0aGlzIGRv
Y3VtZW50LgorICAgICAgICAgICAgLy8gVGhpcyBkb2N1bWVudCBpcyBpbiBzdHJpY3QgbW9kZSBk
dWUgdG8gdGhlIEhUTUw1IERPQ1RZUEUgYmVpbmcgcHJlc2VudC4KKyAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygneGhyLnJlc3BvbnNlWE1MLmNvbXBhdE1vZGUnLCAnQ1NTMUNvbXBh
dCcpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd4aHIucmVzcG9uc2VYTUwu
Y29tcGF0TW9kZScsIGRvY3VtZW50LmNvbXBhdE1vZGUpOworCisgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfTsKKyAgICAgICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1RoZSBYSFIgcmVxdWVzdCB0byBhbiBleGlzdGluZyBy
ZXNvdXJjZSBmYWlsZWQ6ICInICsgdXJsICsgJyInKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9OworICAgICAgICB4aHIub3BlbignR0VUJywgdXJsKTsKKyAgICAgICAg
eGhyLnJlc3BvbnNlVHlwZSA9ICdkb2N1bWVudCc7CisgICAgICAgIHhoci5zZW5kKG51bGwpOwor
ICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKworICAgIDwhLS0gTGVhdmUgdGhlc2UgYnJlYWsgdGFncyBtYWxmb3JtZWQv
b3BlbiB0byB0ZXN0IEhUTUwgcGFyc2luZy4KKyAgICAgICAgIFRoZXkgc2hvdWxkIGJlIHNpYmxp
bmdzIHRvIGRpdiNkZXNjcmlwdGlvbiwgYW5kIG5vdCBuZXN0ZWQgd2l0aGluIG9uZSBhbm90aGVy
LgorICAgICAgICAgVGhlIFhNTERvY3VtZW50IHBhcnNlciB3b3VsZCB0cmVhdCB0aGUgc2Vjb25k
IDxicj4gYXMgYSBjaGlsZCB0byB0aGUgZmlyc3QuIC0tPgorICAgIDxicj48YnI+CisKKyAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworICAgIDxzY3JpcHQ+CisgICAgICAgIC8vIFRoaXMg
Y29kZSB3aWxsIG1hbmlwdWxhdGUgdGhlIGZpcnN0IEJSIG5vZGUgYnkgYWRkaW5nIGFuICJpZCIg
dG8gaXQuCisgICAgICAgIC8vIFRoaXMgc2FtZSBCUiB3aWxsIGJlIGluc3BlY3RlZCBhZnRlciBY
SFIgbG9hZHMgdGhlIGRvY3VtZW50IHRvIHNlZQorICAgICAgICAvLyBpZiB0aGlzIHNjcmlwdCBl
eGVjdXRlZCBvciBub3QuICBJZiBpdCBkaWRuJ3QgZXhlY3V0ZSwgdGhlIGZpcnN0IEJSCisgICAg
ICAgIC8vIHdpbGwgbm90IGhhdmUgYW4gImlkIiBzcGVjaWZpZWQgYW5kIHRoZSB0ZXN0IHBhc3Nl
cy4KKyAgICAgICAgdmFyIGJyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2I2Rlc2NyaXB0
aW9uICsgYnInKTsKKyAgICAgICAgYnIuaWQgPSAnYnJlYWstdGFnJzsKKyAgICA8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJl
cXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwtaHRtbC1uby1yZXNwb25zZXR5cGUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVz
dC1yZXNwb25zZVhNTC1odG1sLW5vLXJlc3BvbnNldHlwZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjFmYmJmODBhZmRjMWEyNjI1ZGExNDY1MDg1Mzg1ZjVhN2Y5MWY4NQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVz
cG9uc2VYTUwtaHRtbC1uby1yZXNwb25zZXR5cGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAg
QEAKK1RoaXMgdGVzdHMgdGhlIFhNTEh0dHBSZXF1ZXN0IHJlc3BvbnNlWE1MIGxvYWRpbmcgYW4g
SFRNTCBkb2N1bWVudCB3aXRoIG5vIHNwZWNpZmllZCByZXNwb25zZVR5cGUuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHhoci5yZXNwb25zZVhNTCBpcyBudWxsCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25z
ZVhNTC1odG1sLW5vLXJlc3BvbnNldHlwZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC94bWxodHRw
cmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC1odG1sLW5vLXJlc3BvbnNldHlwZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhlN2NiYzRkNGMzOGUzYjZkYTI0ODY0MjM4ZmE3ZjIwZDdjOTgzMGMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0
dHByZXF1ZXN0LXJlc3BvbnNlWE1MLWh0bWwtbm8tcmVzcG9uc2V0eXBlLmh0bWwKQEAgLTAsMCAr
MSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+
CisgICAgICAgIGRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRoZSBYTUxIdHRwUmVxdWVzdCByZXNw
b25zZVhNTCBsb2FkaW5nIGFuIEhUTUwgZG9jdW1lbnQgd2l0aCBubyBzcGVjaWZpZWQgcmVzcG9u
c2VUeXBlLicpOworCisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAg
ICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpLAorICAgICAgICAgICAgdXJsID0gd2lu
ZG93LmxvY2F0aW9uLmhyZWY7CisgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIHNob3VsZEJlTnVsbCgneGhyLnJlc3BvbnNlWE1MJyk7CisgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfTsKKyAgICAgICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1RoZSBYSFIgcmVxdWVzdCB0byBhbiBleGlz
dGluZyByZXNvdXJjZSBmYWlsZWQ6ICInICsgdXJsICsgJyInKTsKKyAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9OworICAgICAgICB4aHIub3BlbignR0VUJywgdXJsKTsKKyAg
ICAgICAgeGhyLnNlbmQobnVsbCk7CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC94
bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC1pbnZhbGlkLXhtbC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0
LXJlc3BvbnNlWE1MLWludmFsaWQteG1sLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjI3MDg3
NzIzNGJiNjliOWIwNWIwNTZhMzc2NmNjOTE0YzVmNzlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC1p
bnZhbGlkLXhtbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGhpcyB0ZXN0cyB0aGUg
WE1MSHR0cFJlcXVlc3QgcmVzcG9uc2VYTUwgYXR0cmlidXRlIHZhbHVlIHdoZW4gZ2l2ZW4gaW52
YWxpZCBYTUwgZGF0YS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgeGhy
LnJlYWR5U3RhdGUgaXMgNAorUEFTUyB4aHIucmVzcG9uc2VYTUwgaXMgbnVsbAorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwt
aW52YWxpZC14bWwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0
cHJlcXVlc3QtcmVzcG9uc2VYTUwtaW52YWxpZC14bWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWVlYmQy
MDRjYzAzZjMyZjNjZmJmNmE3ZjYzNmJkN2JiYjliOGYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC1p
bnZhbGlkLXhtbC5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgICBkZXNjcmlwdGlvbignVGhpcyB0ZXN0
cyB0aGUgWE1MSHR0cFJlcXVlc3QgcmVzcG9uc2VYTUwgYXR0cmlidXRlIHZhbHVlIHdoZW4gZ2l2
ZW4gaW52YWxpZCBYTUwgZGF0YS4nKTsKKworICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKSwKKyAgICAgICAg
ICAgIHVybCA9ICdyZXNvdXJjZXMveG1saHR0cHJlcXVlc3QtZ2V0LWludmFsaWQtZGF0YS54bWwn
OworICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzaG91bGRF
dmFsdWF0ZVRvKCd4aHIucmVhZHlTdGF0ZScsIDQpOworICAgICAgICAgICAgc2hvdWxkQmVOdWxs
KCd4aHIucmVzcG9uc2VYTUwnKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9OworICAgICAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVz
dEZhaWxlZCgnVGhlIFhIUiByZXF1ZXN0IHRvIGFuIGV4aXN0aW5nIHJlc291cmNlIGZhaWxlZDog
IicgKyB1cmwgKyAnIicpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH07
CisgICAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwpOworICAgICAgICB4aHIucmVzcG9uc2VUeXBl
ID0gJ2RvY3VtZW50JzsKKyAgICAgICAgeGhyLnNlbmQobnVsbCk7CisgICAgPC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhN
TC14bWwtZG9jdW1lbnQtcmVzcG9uc2V0eXBlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwteG1sLWRvY3VtZW50
LXJlc3BvbnNldHlwZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjJlMTBjNWJkZmI3N2YxMmVl
YmRkNjZhOWNhNjRmYTNiYmQxNWVmNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwteG1sLWRvY3VtZW50
LXJlc3BvbnNldHlwZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGhpcyB0ZXN0cyB0
aGUgWE1MSHR0cFJlcXVlc3QgcmVzcG9uc2VYTUwgbG9hZGluZyBhbiBYTUwgZG9jdW1lbnQgd2l0
aCByZXNwb25zZVR5cGUgImRvY3VtZW50Ii4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgeGhyLnJlc3BvbnNlWE1MIGlzIG5vbi1udWxsLgorUEFTUyB4aHIucmVzcG9uc2VY
TUwgaW5zdGFuY2VvZiBEb2N1bWVudCBpcyB0cnVlCitQQVNTIGlkMyBpcyBub24tbnVsbC4KK1BB
U1MgaWQzLnRleHRDb250ZW50IGlzICJUaHJlZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3ht
bGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLXhtbC1kb2N1bWVudC1yZXNw
b25zZXR5cGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJl
cXVlc3QtcmVzcG9uc2VYTUwteG1sLWRvY3VtZW50LXJlc3BvbnNldHlwZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjlhMDMxZDQ4ZjIwZTI5ZTY2MTMwY2FmZDFiZTRiYTRiNTY0MDQ1NmEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJl
c3BvbnNlWE1MLXhtbC1kb2N1bWVudC1yZXNwb25zZXR5cGUuaHRtbApAQCAtMCwwICsxLDM2IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAg
ICAgZGVzY3JpcHRpb24oJ1RoaXMgdGVzdHMgdGhlIFhNTEh0dHBSZXF1ZXN0IHJlc3BvbnNlWE1M
IGxvYWRpbmcgYW4gWE1MIGRvY3VtZW50IHdpdGggcmVzcG9uc2VUeXBlICJkb2N1bWVudCIuJyk7
CisKKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICB2YXIgeGhy
ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCksCisgICAgICAgICAgICB1cmwgPSAncmVzb3VyY2VzL3ht
bGh0dHByZXF1ZXN0LWdldC1kYXRhLnhtbCcsCisgICAgICAgICAgICBpZDM7CisgICAgICAgIHho
ci5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHNob3VsZEJlTm9uTnVsbCgneGhy
LnJlc3BvbnNlWE1MJyk7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoJ3hoci5yZXNwb25zZVhN
TCBpbnN0YW5jZW9mIERvY3VtZW50Jyk7CisKKyAgICAgICAgICAgIGlkMyA9IHhoci5yZXNwb25z
ZVhNTC5nZXRFbGVtZW50QnlJZCgnaWQzJyk7CisgICAgICAgICAgICBzaG91bGRCZU5vbk51bGwo
J2lkMycpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdpZDMudGV4dENvbnRl
bnQnLCAnVGhyZWUnKTsKKworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH07
CisgICAgICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0RmFp
bGVkKCdUaGUgWEhSIHJlcXVlc3QgdG8gYW4gZXhpc3RpbmcgcmVzb3VyY2UgZmFpbGVkOiAiJyAr
IHVybCArICciJyk7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfTsKKyAg
ICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVybCk7CisgICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAn
ZG9jdW1lbnQnOworICAgICAgICB4aHIuc2VuZChudWxsKTsKKyAgICA8L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLXht
bC10ZXh0LXJlc3BvbnNldHlwZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3htbGh0
dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLXhtbC10ZXh0LXJlc3BvbnNldHlw
ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVkNmQ0YzE5YjE3OTc1Yjk2YmI0ZDE3MDgzYzVm
YjNhYTE2MGNjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJl
cXVlc3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VYTUwteG1sLXRleHQtcmVzcG9uc2V0eXBlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3RzIHRoZSBYTUxIdHRwUmVxdWVz
dCByZXNwb25zZVhNTCBsb2FkaW5nIGFuIFhNTCBkb2N1bWVudCB3aXRoIHJlc3BvbnNlVHlwZSAi
dGV4dCIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHhoci5yZXNwb25z
ZVhNTCB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0
aW9uIDExLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJl
cXVlc3QtcmVzcG9uc2VYTUwteG1sLXRleHQtcmVzcG9uc2V0eXBlLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLXhtbC10ZXh0
LXJlc3BvbnNldHlwZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkNzQ0MzE2MDIwNDBkNGQzZmYxYjYyYWUy
NjE2NTVmOGE0NzU0M2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3htbGh0
dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlWE1MLXhtbC10ZXh0LXJlc3BvbnNldHlw
ZS5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0PgorICAgICAgICBkZXNjcmlwdGlvbignVGhpcyB0ZXN0cyB0aGUgWE1M
SHR0cFJlcXVlc3QgcmVzcG9uc2VYTUwgbG9hZGluZyBhbiBYTUwgZG9jdW1lbnQgd2l0aCByZXNw
b25zZVR5cGUgInRleHQiLicpOworCisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKyAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpLAorICAgICAgICAgICAg
dXJsID0gJ3Jlc291cmNlcy94bWxodHRwcmVxdWVzdC1nZXQtZGF0YS54bWwnLAorICAgICAgICAg
ICAgaWQzOworICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBz
aG91bGRUaHJvdygneGhyLnJlc3BvbnNlWE1MJyk7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgfTsKKyAgICAgICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHRlc3RGYWlsZWQoJ1RoZSBYSFIgcmVxdWVzdCB0byBhbiBleGlzdGluZyByZXNvdXJj
ZSBmYWlsZWQ6ICInICsgdXJsICsgJyInKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICB9OworICAgICAgICB4aHIub3BlbignR0VUJywgdXJsKTsKKyAgICAgICAgeGhyLnJl
c3BvbnNlVHlwZSA9ICd0ZXh0JzsKKyAgICAgICAgeGhyLnNlbmQobnVsbCk7CisgICAgPC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>