<?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>30412</bug_id>
          
          <creation_ts>2009-10-15 16:14:17 -0700</creation_ts>
          <short_desc>Web Inspector should get human readable DOM Exceptions</short_desc>
          <delta_ts>2009-10-19 10:23:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>6745</dup_id>
          
          <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>6745</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Weinstein">bweinstein</reporter>
          <assigned_to name="Brian Weinstein">bweinstein</assigned_to>
          <cc>ap</cc>
    
    <cc>joepeck</cc>
    
    <cc>pfeldman</cc>
    
    <cc>sam</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>154934</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-10-15 16:14:17 -0700</bug_when>
    <thetext>In the inspector, when you get a DOM exception, there should be a plain text English explanation of the error condition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154936</commentid>
    <comment_count>1</comment_count>
      <attachid>41251</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-10-15 16:17:50 -0700</bug_when>
    <thetext>Created attachment 41251
DOM Exceptions on Page JavaScript content - not console</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155048</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-10-16 01:59:18 -0700</bug_when>
    <thetext>Where are the descriptions of the exceptions from?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155107</commentid>
    <comment_count>3</comment_count>
      <attachid>41251</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-16 09:35:25 -0700</bug_when>
    <thetext>Comment on attachment 41251
DOM Exceptions on Page JavaScript content - not console

&gt; +    if (DOMCoreException* domException = toDOMCoreException(exception))
&gt; +        errorMessage = domException-&gt;longDescription();
&gt; +    else if (RangeException* rangeException = toRangeException(exception))
&gt; +        errorMessage = rangeException-&gt;longDescription();
&gt; +    else if (EventException* eventException = toEventException(exception))
&gt; +        errorMessage = eventException-&gt;longDescription();
&gt; +    else if (XMLHttpRequestException* xmlhttpException = toXMLHttpRequestException(exception))
&gt; +        errorMessage = xmlhttpException-&gt;longDescription();
&gt; +#if ENABLE(SVG)
&gt; +    else if (SVGException* svgException = toSVGException(exception))
&gt; +        errorMessage = svgException-&gt;longDescription();
&gt; +#endif
&gt; +#if ENABLE(XPATH)
&gt; +    else if (XPathException* pathException = toXPathException(exception))
&gt; +        errorMessage = pathException-&gt;longDescription();
&gt; +#endif

I&apos;d suggest putting all this logic into a toExceptionBase function that returns an ExceptionBase* or 0. I will need this same list, but having a separate function will make things a bit clearer if we have to do this elsewhere, and also factor out the call to the longDescription function.

&gt; +String ExceptionBase::longDescription() const
&gt; +{
&gt; +    return toString() + &quot;: &quot; + m_description;
&gt; +}

I think it would be better to just have a function returning m_description. The code to construct an error message by combining the &quot;Error: &quot; with the message and then with &quot;: &quot; and then with the description could go closer to where it&apos;s actually logged. I think having the format built into the exception object is not really so good. We have to do that in the case of toString but in this case we can, and should, factor it out.

What about test cases?

review- because of the lack of test cases for this new feature</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155113</commentid>
    <comment_count>4</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-10-16 09:54:08 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Where are the descriptions of the exceptions from?

Except for the ones below the FIXME, the descriptions are from the DOM specifications that define each of the exceptions. The DOM Core exceptions are from : http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-258A00AF</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155116</commentid>
    <comment_count>5</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-10-16 09:58:00 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 41251 [details])
&gt; &gt; +    if (DOMCoreException* domException = toDOMCoreException(exception))
&gt; &gt; +        errorMessage = domException-&gt;longDescription();
&gt; &gt; +    else if (RangeException* rangeException = toRangeException(exception))
&gt; &gt; +        errorMessage = rangeException-&gt;longDescription();
&gt; &gt; +    else if (EventException* eventException = toEventException(exception))
&gt; &gt; +        errorMessage = eventException-&gt;longDescription();
&gt; &gt; +    else if (XMLHttpRequestException* xmlhttpException = toXMLHttpRequestException(exception))
&gt; &gt; +        errorMessage = xmlhttpException-&gt;longDescription();
&gt; &gt; +#if ENABLE(SVG)
&gt; &gt; +    else if (SVGException* svgException = toSVGException(exception))
&gt; &gt; +        errorMessage = svgException-&gt;longDescription();
&gt; &gt; +#endif
&gt; &gt; +#if ENABLE(XPATH)
&gt; &gt; +    else if (XPathException* pathException = toXPathException(exception))
&gt; &gt; +        errorMessage = pathException-&gt;longDescription();
&gt; &gt; +#endif
&gt; 
&gt; I&apos;d suggest putting all this logic into a toExceptionBase function that returns
&gt; an ExceptionBase* or 0. I will need this same list, but having a separate
&gt; function will make things a bit clearer if we have to do this elsewhere, and
&gt; also factor out the call to the longDescription function.

This is a good idea, I will put this in a later patch.

&gt; 
&gt; &gt; +String ExceptionBase::longDescription() const
&gt; &gt; +{
&gt; &gt; +    return toString() + &quot;: &quot; + m_description;
&gt; &gt; +}
&gt; 
&gt; I think it would be better to just have a function returning m_description. The
&gt; code to construct an error message by combining the &quot;Error: &quot; with the message
&gt; and then with &quot;: &quot; and then with the description could go closer to where it&apos;s
&gt; actually logged. I think having the format built into the exception object is
&gt; not really so good. We have to do that in the case of toString but in this case
&gt; we can, and should, factor it out.

I&apos;m a little unclear about what this comment means, I understand that there should be a description() function that returns m_description, but are you saying that I should build the long description from JSDOMBindings instead of having a longDescription() function? If that&apos;s what you mean, then I can do that as well.

&gt; 
&gt; What about test cases?

Test cases are a little tricky, because this isn&apos;t supposed to change the way the DOM exception is reported to JavaScript, just the way it is logged to the user. I am working on adding something to the newly landed inspector test cases, that should work nicely for this case.
&gt; 
&gt; review- because of the lack of test cases for this new feature

 Thanks for the good review! I will have a new patch up soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155119</commentid>
    <comment_count>6</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-10-16 10:18:56 -0700</bug_when>
    <thetext>The problem I&apos;m running into writing a test case for this using the inspector is that I&apos;d like to do something like:

try {
    document.appendChild();
} catch (e) {
    console.log(e);
}

And check that output in the expected result, however, that doesn&apos;t follow the same code path that was fixed in this test.

If I just put in an unchecked call to document.appendChild(), it follows the reportException code path, but breaks JavaScript in the rest of the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155150</commentid>
    <comment_count>7</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-10-16 11:22:33 -0700</bug_when>
    <thetext>Why doesen&apos;t console.log(e) work? I would expect these descriptions to be available on the error object.

We also have support for Web Inspector tests now, take a look at:

http://trac.webkit.org/browser/trunk/LayoutTests/inspector/console-tests.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155151</commentid>
    <comment_count>8</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-10-16 11:28:29 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Why doesen&apos;t console.log(e) work? I would expect these descriptions to be
&gt; available on the error object.
&gt; 

I saw the inspector testing framework, and I tried to write a test like that, but  the issue is, as Sam explained to me, we can&apos;t change the exception toString method, because JavaScript developers look for that with how they handle their error messages.

console.log(exception) goes through the code path that calls the exception&apos;s toString method, the method I can&apos;t change.

When an unchecked exception happens (through something like &lt;script&gt;document.appendChild()&lt;/script&gt;), this goes through a different code path  (reportException) which is updated in this patch to use the new long description. The other paths (console.log(exception), and generating an exception through the console) use the exception.toString method which is not supposed to be changed. That is why writing an inspector test isn&apos;t working well for me right now, because I would have to throw an uncaught exception with this patch, which doesn&apos;t seem like a good idea. I could try it in a new test though.

This patch isn&apos;t the whole fix, I also need to fix the cases of console.log(exception), and typing something that generates an exception into the console, and I&apos;m not sure the best way to handle those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155175</commentid>
    <comment_count>9</comment_count>
      <attachid>41311</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-10-16 12:48:45 -0700</bug_when>
    <thetext>Created attachment 41311
Addresses Darin&apos;s Comments + Layout Tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155199</commentid>
    <comment_count>10</comment_count>
      <attachid>41311</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-10-16 13:35:49 -0700</bug_when>
    <thetext>Comment on attachment 41311
Addresses Darin&apos;s Comments + Layout Tests

&gt;  
&gt; +ExceptionBase* toExceptionBase(JSC::JSValue value)
&gt; +{
&gt; +    if (DOMCoreException* domException = toDOMCoreException(value))
&gt; +        return reinterpret_cast&lt;ExceptionBase*&gt;(domException);
&gt; +    else if (RangeException* rangeException = toRangeException(value))
&gt; +        return reinterpret_cast&lt;ExceptionBase*&gt;(rangeException);
&gt; +    else if (EventException* eventException = toEventException(value))
&gt; +        return reinterpret_cast&lt;ExceptionBase*&gt;(eventException);
&gt; +    else if (XMLHttpRequestException* xmlHttpException = toXMLHttpRequestException(value))
&gt; +        return reinterpret_cast&lt;ExceptionBase*&gt;(xmlHttpException);
&gt; +#if ENABLE(SVG)
&gt; +    else if (SVGException* svgException = toSVGException(value))
&gt; +        return reinterpret_cast&lt;ExceptionBase*&gt;(svgException);
&gt; +#endif
&gt; +#if ENABLE(XPATH)
&gt; +    else if (XPathException* pathException = toXPathException(value))
&gt; +        return reinterpret_cast&lt;ExceptionBase*&gt;(pathException);
&gt; +#endif
&gt; +    
&gt; +    return 0;
&gt; +}

This is in the wrong place.  For the most part, the DOM should not know about the bindings.  This should instead be in a new file in WebCore/bindings/js/ called something like JSExceptionBase.h/cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155206</commentid>
    <comment_count>11</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-10-16 13:42:16 -0700</bug_when>
    <thetext>&gt; This is in the wrong place.  For the most part, the DOM should not know about
&gt; the bindings.  This should instead be in a new file in WebCore/bindings/js/
&gt; called something like JSExceptionBase.h/cpp.

Ok, I will fix that and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155265</commentid>
    <comment_count>12</comment_count>
      <attachid>41332</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-10-16 15:01:42 -0700</bug_when>
    <thetext>Created attachment 41332
Addresses Sam&apos;s Comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155325</commentid>
    <comment_count>13</comment_count>
      <attachid>41332</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-16 17:54:54 -0700</bug_when>
    <thetext>Comment on attachment 41332
Addresses Sam&apos;s Comment

I was going to suggest putting that function inside JSDOMBinding.cpp rather than suggesting creating a new file. A new file is OK though.

New source files contributed by Apple engineers normally should have the BSD-style license, not LGPL.

&gt; +    if (DOMCoreException* domException = toDOMCoreException(value))
&gt; +        return reinterpret_cast&lt;ExceptionBase*&gt;(domException);
&gt; +    else if (RangeException* rangeException = toRangeException(value))
&gt; +        return reinterpret_cast&lt;ExceptionBase*&gt;(rangeException);
&gt; +    else if (EventException* eventException = toEventException(value))
&gt; +        return reinterpret_cast&lt;ExceptionBase*&gt;(eventException);
&gt; +    else if (XMLHttpRequestException* xmlHttpException = toXMLHttpRequestException(value))
&gt; +        return reinterpret_cast&lt;ExceptionBase*&gt;(xmlHttpException);
&gt; +#if ENABLE(SVG)
&gt; +    else if (SVGException* svgException = toSVGException(value))
&gt; +        return reinterpret_cast&lt;ExceptionBase*&gt;(svgException);
&gt; +#endif
&gt; +#if ENABLE(XPATH)
&gt; +    else if (XPathException* pathException = toXPathException(value))
&gt; +        return reinterpret_cast&lt;ExceptionBase*&gt;(pathException);
&gt; +#endif

We don&apos;t use else after return. So you can remove all those else.

&gt; +#ifndef JSExceptionBase_h
&gt; +#define JSExceptionBase_h
&gt; +
&gt; +#include &quot;ExceptionBase.h&quot;
&gt; +
&gt; +namespace WebCore {
&gt; +
&gt; +ExceptionBase* toExceptionBase(JSC::JSValue);
&gt; +
&gt; +} // namespace WebCore
&gt; +
&gt; +#endif // JSExceptionBase_h

This header only needs a forward-declaration of the classes ExceptionBase and JSC::JSValue, it doesn&apos;t actually have to include ExceptionBase.h.

&gt; +    &quot;index or size was negative, or greater than the allowed value&quot;,

These descriptions look like sentences, so they should have a capital letter at the start and a period at the end.

&gt; +        Adds tests for output of uncaught exceptions to the Web Inspector
&gt; +        Console. Tests DOM exceptions 1, 3, and 8 (INDEX_SIZE_ERR, NOT_FOUND_ERR, and
&gt; +        HIERARCHY_REQUEST_ERR).

Why not test them all? Is there any way to test more than one exception in the same test?

review+, but please consider the comments above</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155331</commentid>
    <comment_count>14</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-10-16 18:09:18 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 41332 [details])
&gt; I was going to suggest putting that function inside JSDOMBinding.cpp rather
&gt; than suggesting creating a new file. A new file is OK though.
&gt; 
&gt; New source files contributed by Apple engineers normally should have the
&gt; BSD-style license, not LGPL.

Fixed.

&gt; 
&gt; We don&apos;t use else after return. So you can remove all those else.
&gt; 

Done.

&gt; 
&gt; This header only needs a forward-declaration of the classes ExceptionBase and
&gt; JSC::JSValue, it doesn&apos;t actually have to include ExceptionBase.h.
&gt; 

Done.

&gt; &gt; +    &quot;index or size was negative, or greater than the allowed value&quot;,
&gt; 
&gt; These descriptions look like sentences, so they should have a capital letter at
&gt; the start and a period at the end.

Fixed.

&gt; 
&gt; &gt; +        Adds tests for output of uncaught exceptions to the Web Inspector
&gt; &gt; +        Console. Tests DOM exceptions 1, 3, and 8 (INDEX_SIZE_ERR, NOT_FOUND_ERR, and
&gt; &gt; +        HIERARCHY_REQUEST_ERR).
&gt; 
&gt; Why not test them all? Is there any way to test more than one exception in the
&gt; same test?

I&apos;m not sure how to test more than one in the same test, and the reason I didn&apos;t test them all is that I was unsure how to test them all. I will file a bug to add tests for all of the exceptions we are logging.

&gt; 
&gt; review+, but please consider the comments above

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155336</commentid>
    <comment_count>15</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-10-16 18:18:59 -0700</bug_when>
    <thetext>Part one landed in http://trac.webkit.org/changeset/49723.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155343</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-10-16 19:56:03 -0700</bug_when>
    <thetext>This caused three regression tests to start failing on the buildbot: &lt;http://build.webkit.org/results/Leopard%20Intel%20Release%20(Tests)/r49726%20(6180)/results.html&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155362</commentid>
    <comment_count>17</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-16 22:48:42 -0700</bug_when>
    <thetext>Inspector testing harness is only used for the tests that require validating the frontend state. I don&apos;t think your tests need that. Doesn&apos;t simple scenario where you initiate an error and compare the CONSOLE dump work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155745</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-10-19 09:34:56 -0700</bug_when>
    <thetext>This looks like a duplicate of bug 6745 to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155764</commentid>
    <comment_count>19</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-10-19 10:23:04 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 6745 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41251</attachid>
            <date>2009-10-15 16:17:50 -0700</date>
            <delta_ts>2009-10-16 12:48:45 -0700</delta_ts>
            <desc>DOM Exceptions on Page JavaScript content - not console</desc>
            <filename>inspector_exceptions.patch</filename>
            <type>text/plain</type>
            <size>12911</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTY2NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMDktMTAtMTUgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEZpeGVzIHBhcnQgb2YgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzA0MTI+LgorICAgICAgICBX
ZWIgSW5zcGVjdG9yIHNob3VsZCBnZXQgaHVtYW4gcmVhZGFibGUgRE9NIEV4Y2VwdGlvbnMuCisg
ICAgICAgIAorICAgICAgICBBZGQgYSBkZXNjcmlwdGlvbiBmaWVsZCB0byBFeGNlcHRpb25CYXNl
LCBhbmQgZXhwb3NlIGl0CisgICAgICAgIHRocm91Z2ggYSBsb25nRGVzY3JpcHRpb24gbWV0aG9k
LCB3aGljaCBpcyBjYWxsZWQgYnkgcmVwb3J0RXhjZXB0aW9uCisgICAgICAgIHRvIGFsbG93IHRo
ZSB1c2VyIHRvIGdldCBhIG1vcmUgZGV0YWlsZWQgZXJyb3IgZXhwbGFuYXRpb24gdGhyb3VnaCB0
aGUKKyAgICAgICAgV2ViIEluc3BlY3Rvci4KKyAgICAgICAgCisgICAgICAgIFRoaXMgb25seSBh
cHBsaWVzIHRvIGV4Y2VwdGlvbnMgdGhhdCBoYXBwZW4gZnJvbSB0aGUgc2NyaXB0IHdoZW4gaXQg
aXMgcnVuCisgICAgICAgIGluIHRoZSBwYWdlLCBET00gRXhjZXB0aW9ucyB0aGF0IGNvbWUgZnJv
bSBjb2RlIHJ1biBpbiB0aGUgY29uc29sZSB3aWxsIGNvbWUKKyAgICAgICAgaW4gYSBmdXR1cmUg
cGF0Y2guCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uKToKKyAgICAgICAgKiBkb20vRXhjZXB0aW9uQmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeGNlcHRpb25CYXNlOjpFeGNlcHRpb25CYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbkJhc2U6OmxvbmdEZXNjcmlwdGlvbik6CisgICAg
ICAgICogZG9tL0V4Y2VwdGlvbkJhc2UuaDoKKyAgICAgICAgKiBkb20vRXhjZXB0aW9uQ29kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RXhjZXB0aW9u
Q29kZURlc2NyaXB0aW9uKToKKyAgICAgICAgKiBkb20vRXhjZXB0aW9uQ29kZS5oOgorCiAyMDA5
LTEwLTE1ICBab2x0YW4gSG9ydmF0aCAgPHpvbHRhbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmNwcAkocmV2aXNpb24gNDk2NjMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2OCw2ICs0NjgsMjQgQEAgdm9pZCByZXBvcnRFeGNl
cHRpb24oRXhlY1N0YXRlKiBleGVjLCBKUwogICAgIFVTdHJpbmcgZXhjZXB0aW9uU291cmNlVVJM
ID0gZXhjZXB0aW9uT2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAic291cmNlVVJM
IikpLnRvU3RyaW5nKGV4ZWMpOwogICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CiAKKyAgICBp
ZiAoRE9NQ29yZUV4Y2VwdGlvbiogZG9tRXhjZXB0aW9uID0gdG9ET01Db3JlRXhjZXB0aW9uKGV4
Y2VwdGlvbikpCisgICAgICAgIGVycm9yTWVzc2FnZSA9IGRvbUV4Y2VwdGlvbi0+bG9uZ0Rlc2Ny
aXB0aW9uKCk7CisgICAgZWxzZSBpZiAoUmFuZ2VFeGNlcHRpb24qIHJhbmdlRXhjZXB0aW9uID0g
dG9SYW5nZUV4Y2VwdGlvbihleGNlcHRpb24pKQorICAgICAgICBlcnJvck1lc3NhZ2UgPSByYW5n
ZUV4Y2VwdGlvbi0+bG9uZ0Rlc2NyaXB0aW9uKCk7CisgICAgZWxzZSBpZiAoRXZlbnRFeGNlcHRp
b24qIGV2ZW50RXhjZXB0aW9uID0gdG9FdmVudEV4Y2VwdGlvbihleGNlcHRpb24pKQorICAgICAg
ICBlcnJvck1lc3NhZ2UgPSBldmVudEV4Y2VwdGlvbi0+bG9uZ0Rlc2NyaXB0aW9uKCk7CisgICAg
ZWxzZSBpZiAoWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24qIHhtbGh0dHBFeGNlcHRpb24gPSB0b1hN
TEh0dHBSZXF1ZXN0RXhjZXB0aW9uKGV4Y2VwdGlvbikpCisgICAgICAgIGVycm9yTWVzc2FnZSA9
IHhtbGh0dHBFeGNlcHRpb24tPmxvbmdEZXNjcmlwdGlvbigpOworI2lmIEVOQUJMRShTVkcpCisg
ICAgZWxzZSBpZiAoU1ZHRXhjZXB0aW9uKiBzdmdFeGNlcHRpb24gPSB0b1NWR0V4Y2VwdGlvbihl
eGNlcHRpb24pKQorICAgICAgICBlcnJvck1lc3NhZ2UgPSBzdmdFeGNlcHRpb24tPmxvbmdEZXNj
cmlwdGlvbigpOworI2VuZGlmCisjaWYgRU5BQkxFKFhQQVRIKQorICAgIGVsc2UgaWYgKFhQYXRo
RXhjZXB0aW9uKiBwYXRoRXhjZXB0aW9uID0gdG9YUGF0aEV4Y2VwdGlvbihleGNlcHRpb24pKQor
ICAgICAgICBlcnJvck1lc3NhZ2UgPSBwYXRoRXhjZXB0aW9uLT5sb25nRGVzY3JpcHRpb24oKTsK
KyNlbmRpZgorICAgIAorCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIEFTU0VSVChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIApJbmRleDogV2ViQ29yZS9kb20vRXhjZXB0aW9uQmFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXhjZXB0aW9uQmFzZS5jcHAJKHJldmlz
aW9uIDQ5NjYzKQorKysgV2ViQ29yZS9kb20vRXhjZXB0aW9uQmFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRXhjZXB0aW9uQmFzZTo6
RXhjZXB0aW9uQmFzZShjb25zdCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
KQogICAgIDogbV9jb2RlKGRlc2NyaXB0aW9uLmNvZGUpCiAgICAgLCBtX25hbWUoZGVzY3JpcHRp
b24ubmFtZSkKKyAgICAsIG1fZGVzY3JpcHRpb24oZGVzY3JpcHRpb24uZGVzY3JpcHRpb24pCiB7
CiAgICAgaWYgKGRlc2NyaXB0aW9uLm5hbWUpCiAgICAgICAgIG1fbWVzc2FnZSA9IFN0cmluZzo6
Zm9ybWF0KCIlczogJXMgRXhjZXB0aW9uICVkIiwgZGVzY3JpcHRpb24ubmFtZSwgZGVzY3JpcHRp
b24udHlwZU5hbWUsIGRlc2NyaXB0aW9uLmNvZGUpOwpAQCAtNDYsNCArNDcsOSBAQCBTdHJpbmcg
RXhjZXB0aW9uQmFzZTo6dG9TdHJpbmcoKSBjb25zdAogICAgIHJldHVybiAiRXJyb3I6ICIgKyBt
X21lc3NhZ2U7CiB9CiAKK1N0cmluZyBFeGNlcHRpb25CYXNlOjpsb25nRGVzY3JpcHRpb24oKSBj
b25zdAoreworICAgIHJldHVybiB0b1N0cmluZygpICsgIjogIiArIG1fZGVzY3JpcHRpb247Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0V4Y2VwdGlvbkJh
c2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FeGNlcHRpb25CYXNlLmgJKHJldmlzaW9u
IDQ5NjYzKQorKysgV2ViQ29yZS9kb20vRXhjZXB0aW9uQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIG1lc3Nh
Z2UoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KIAogICAgICAgICBTdHJpbmcgdG9TdHJp
bmcoKSBjb25zdDsKKyAgICAgICAgU3RyaW5nIGxvbmdEZXNjcmlwdGlvbigpIGNvbnN0OwogCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICBFeGNlcHRpb25CYXNlKGNvbnN0IEV4Y2VwdGlvbkNvZGVE
ZXNjcmlwdGlvbiYpOwpAQCAtNTAsNiArNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHVuc2lnbmVkIHNob3J0IG1fY29kZTsKICAgICAgICAgU3RyaW5nIG1fbmFtZTsKICAgICAg
ICAgU3RyaW5nIG1fbWVzc2FnZTsKKyAgICAgICAgU3RyaW5nIG1fZGVzY3JpcHRpb247CiAgICAg
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vRXhjZXB0aW9u
Q29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5jcHAJKHJl
dmlzaW9uIDQ5NjYzKQorKysgV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY1LDI1ICs2NSw3MCBAQCBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZXhjZXB0
aW9uTmFtZXNbCiAgICAgIlFVT1RBX0VYQ0VFREVEX0VSUiIKIH07CiAKK3N0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCBleGNlcHRpb25EZXNjcmlwdGlvbnNbXSA9IHsKKyAgICAiaW5kZXggb3Igc2l6
ZSB3YXMgbmVnYXRpdmUsIG9yIGdyZWF0ZXIgdGhhbiB0aGUgYWxsb3dlZCB2YWx1ZSIsCisgICAg
InRoZSBzcGVjaWZpZWQgcmFuZ2Ugb2YgdGV4dCBkaWQgbm90IGZpdCBpbnRvIGEgRE9NU3RyaW5n
IiwKKyAgICAiYW55IE5vZGUgd2FzIGluc2VydGVkIHNvbWV3aGVyZSBpdCBkb2Vzbid0IGJlbG9u
Zy4iLAorICAgICJhIE5vZGUgd2FzIHVzZWQgaW4gYSBkaWZmZXJlbnQgZG9jdW1lbnQgdGhhbiB0
aGUgb25lIHRoYXQgY3JlYXRlZCBpdCAodGhhdCBkb2Vzbid0IHN1cHBvcnQgaXQpIiwKKyAgICAi
YW4gaW52YWxpZCBvciBpbGxlZ2FsIGNoYXJhY3RlciB3YXMgc3BlY2lmaWVkLCBzdWNoIGFzIGlu
IGFuIFhNTCBuYW1lIiwKKyAgICAiZGF0YSB3YXMgc3BlY2lmaWVkIGZvciBhIE5vZGUgd2hpY2gg
ZG9lcyBub3Qgc3VwcG9ydCBkYXRhIiwKKyAgICAiYW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBtb2Rp
ZnkgYW4gb2JqZWN0IHdoZXJlIG1vZGlmaWNhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIiwKKyAgICAi
YW4gYXR0ZW1wdCB3YXMgbWFkZSB0byByZWZlcmVuY2UgYSBOb2RlIGluIGEgY29udGV4dCB3aGVy
ZSBpdCBkb2VzIG5vdCBleGlzdCIsCisgICAgInRoZSBpbXBsZW1lbnRhdGlvbiBkaWQgbm90IHN1
cHBvcnQgdGhlIHJlcXVlc3RlZCB0eXBlIG9mIG9iamVjdCBvciBvcGVyYXRpb24iLAorICAgICJh
biBhdHRlbXB0IHdhcyBtYWRlIHRvIGFkZCBhbiBhdHRyaWJ1dGUgdGhhdCBpcyBhbHJlYWR5IGlu
IHVzZSBlbHNld2hlcmUiLAorICAgICJhbiBhdHRlbXB0IHdhcyBtYWRlIHRvIHVzZSBhbiBvYmpl
Y3QgdGhhdCBpcyBub3QsIG9yIGlzIG5vIGxvbmdlciwgdXNhYmxlIiwKKyAgICAiYW4gaW52YWxp
ZCBvciBpbGxlZ2FsIHN0cmluZyB3YXMgc3BlY2lmaWVkIiwKKyAgICAiYW4gYXR0ZW1wdCB3YXMg
bWFkZSB0byBtb2RpZnkgdGhlIHR5cGUgb2YgdGhlIHVuZGVybHlpbmcgb2JqZWN0IiwKKyAgICAi
YW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBjcmVhdGUgb3IgY2hhbmdlIGFuIG9iamVjdCBpbiBhIHdh
eSB3aGljaCBpcyBpbmNvcnJlY3Qgd2l0aCByZWdhcmQgdG8gbmFtZXNwYWNlcyIsCisgICAgImEg
cGFyYW1ldGVyIG9yIGFuIG9wZXJhdGlvbiB3YXMgbm90IHN1cHBvcnRlZCBieSB0aGUgdW5kZXJs
eWluZyBvYmplY3QiLAorICAgICJhIGNhbGwgdG8gYSBtZXRob2Qgc3VjaCBhcyBpbnNlcnRCZWZv
cmUgb3IgcmVtb3ZlQ2hpbGQgd291bGQgbWFrZSB0aGUgTm9kZSBpbnZhbGlkIHdpdGggcmVzcGVj
dCB0byBcInBhcnRpYWwgdmFsaWRpdHlcIiwgdGhpcyBleGNlcHRpb24gd291bGQgYmUgcmFpc2Vk
IGFuZCB0aGUgb3BlcmF0aW9uIHdvdWxkIG5vdCBiZSBkb25lIiwKKyAgICAidGhlIHR5cGUgb2Yg
YW4gb2JqZWN0IHdhcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgZXhwZWN0ZWQgdHlwZSBvZiB0aGUg
cGFyYW1ldGVyIGFzc29jaWF0ZWQgdG8gdGhlIG9iamVjdCIsCisgICAgImFuIGF0dGVtcHQgd2Fz
IG1hZGUgdG8gYnJlYWsgdGhyb3VnaCB0aGUgc2VjdXJpdHkgcG9saWN5IG9mIHRoZSB1c2VyIGFn
ZW50IiwKKyAgICAvLyBGSVhNRTogQ291bGRuJ3QgZmluZCBhIGRlc2NyaXB0aW9uIGluIHRoZSBI
VE1ML0RPTSBzcGVjaWZpY2F0aW9ucyBmb3IgTkVUV09SS19FUlIsIEFCT1JUX0VSUiwgVVJMX01J
U01BVENIX0VSUiwgYW5kIFFVT1RBX0VYQ0VFREVEX0VSUgorICAgICJhIG5ldHdvcmsgZXJyb3Ig
b2NjdXJlZCIsCisgICAgInRoZSB1c2VyIGFib3J0ZWQgYSByZXF1ZXN0IiwKKyAgICAiYSB3b3Jr
ZXIgZ2xvYmFsIHNjb3BlIHJlcHJlc2VudGVkIGFuIGFic29sdXRlIFVSTCB0aGF0IGlzIG5vdCBl
cXVhbCB0byB0aGUgcmVzdWx0aW5nIGFic29sdXRlIFVSTCIsCisgICAgImFuIGF0dGVtcHQgd2Fz
IG1hZGUgdG8gYWRkIHNvbWV0aGluZyB0byBzdG9yYWdlIHRoYXQgZXhjZWVkZWQgdGhlIHF1b3Rh
IgorfTsKKwogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHJhbmdlRXhjZXB0aW9uTmFtZXNbXSA9
IHsKICAgICAiQkFEX0JPVU5EQVJZUE9JTlRTX0VSUiIsCiAgICAgIklOVkFMSURfTk9ERV9UWVBF
X0VSUiIKIH07CiAKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCByYW5nZUV4Y2VwdGlvbkRlc2Ny
aXB0aW9uc1tdID0geworICAgICJ0aGUgYm91bmRhcnktcG9pbnRzIG9mIGEgUmFuZ2UgZGlkIG5v
dCBtZWV0IHNwZWNpZmljIHJlcXVpcmVtZW50cyIsCisgICAgInRoZSBjb250YWluZXIgb2YgYW4g
Ym91bmRhcnktcG9pbnQgb2YgYSBSYW5nZSB3YXMgYmVpbmcgc2V0IHRvIGVpdGhlciBhIG5vZGUg
b2YgYW4gaW52YWxpZCB0eXBlIG9yIGEgbm9kZSB3aXRoIGFuIGFuY2VzdG9yIG9mIGFuIGludmFs
aWQgdHlwZSIKK307CisKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBldmVudEV4Y2VwdGlvbk5h
bWVzW10gPSB7CiAgICAgIlVOU1BFQ0lGSUVEX0VWRU5UX1RZUEVfRVJSIgogfTsKIAorc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IGV2ZW50RXhjZXB0aW9uRGVzY3JpcHRpb25zW10gPSB7CisgICAg
InRoZSBFdmVudCdzIHR5cGUgd2FzIG5vdCBzcGVjaWZpZWQgYnkgaW5pdGlhbGl6aW5nIHRoZSBl
dmVudCBiZWZvcmUgdGhlIG1ldGhvZCB3YXMgY2FsbGVkIgorfTsKKwogc3RhdGljIGNvbnN0IGNo
YXIqIGNvbnN0IHhtbEh0dHBSZXF1ZXN0RXhjZXB0aW9uTmFtZXNbXSA9IHsKICAgICAiTkVUV09S
S19FUlIiLAogICAgICJBQk9SVF9FUlIiCiB9OwogCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qg
eG1sSHR0cFJlcXVlc3RFeGNlcHRpb25EZXNjcmlwdGlvbnNbXSA9IHsKKyAgICAiYSBuZXR3b3Jr
IGVycm9yIG9jY3VyZWQgaW4gc3luY2hyb25vdXMgcmVxdWVzdHMiLAorICAgICJ0aGUgdXNlciBh
Ym9ydGVkIGEgcmVxdWVzdCBpbiBzeW5jaHJvbm91cyByZXF1ZXN0cyIKK307CisKICNpZiBFTkFC
TEUoWFBBVEgpCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgeHBhdGhFeGNlcHRpb25OYW1lc1td
ID0gewogICAgICJJTlZBTElEX0VYUFJFU1NJT05fRVJSIiwKICAgICAiVFlQRV9FUlIiCiB9Owor
CitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgeHBhdGhFeGNlcHRpb25EZXNjcmlwdGlvbnNbXSA9
IHsKKyAgICAidGhlIGV4cHJlc3Npb24gaGFkIGEgc3ludGF4IGVycm9yIG9yIG90aGVyd2lzZSBp
cyBub3QgYSBsZWdhbCBleHByZXNzaW9uIGFjY29yZGluZyB0byB0aGUgcnVsZXMgb2YgdGhlIHNw
ZWNpZmljIFhQYXRoRXZhbHVhdG9yIiwKKyAgICAidGhlIGV4cHJlc3Npb24gY291bGQgbm90IGJl
IGNvbnZlcnRlZCB0byByZXR1cm4gdGhlIHNwZWNpZmllZCB0eXBlIgorfTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFNWRykKQEAgLTkyLDYgKzEzNywxMiBAQCBzdGF0aWMgY29uc3QgY2hhciogY29u
c3Qgc3ZnRXhjZXB0aW9uTmFtCiAgICAgIlNWR19JTlZBTElEX1ZBTFVFX0VSUiIsCiAgICAgIlNW
R19NQVRSSVhfTk9UX0lOVkVSVEFCTEUiCiB9OworCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qg
c3ZnRXhjZXB0aW9uRGVzY3JpcHRpb25zW10gPSB7CisgICAgImFuIG9iamVjdCBvZiB0aGUgd3Jv
bmcgdHlwZSB3YXMgcGFzc2VkIHRvIGFuIG9wZXJhdGlvbiIsCisgICAgImFuIGludmFsaWQgdmFs
dWUgd2FzIHBhc3NlZCB0byBhbiBvcGVyYXRpb24gb3IgYXNzaWduZWQgdG8gYW4gYXR0cmlidXRl
IiwKKyAgICAiYW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBpbnZlcnQgYSBtYXRyaXggdGhhdCBpcyBu
b3QgaW52ZXJ0aWJsZSIKK307CiAjZW5kaWYKIAogdm9pZCBnZXRFeGNlcHRpb25Db2RlRGVzY3Jp
cHRpb24oRXhjZXB0aW9uQ29kZSBlYywgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uJiBkZXNjcmlw
dGlvbikKQEAgLTEwMSw2ICsxNTIsNyBAQCB2b2lkIGdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
bihFeGNlcHRpCiAgICAgY29uc3QgY2hhciogdHlwZU5hbWU7CiAgICAgaW50IGNvZGUgPSBlYzsK
ICAgICBjb25zdCBjaGFyKiBjb25zdCogbmFtZVRhYmxlOworICAgIGNvbnN0IGNoYXIqIGNvbnN0
KiBkZXNjcmlwdGlvblRhYmxlOwogICAgIGludCBuYW1lVGFibGVTaXplOwogICAgIGludCBuYW1l
VGFibGVPZmZzZXQ7CiAgICAgRXhjZXB0aW9uVHlwZSB0eXBlOwpAQCAtMTEwLDYgKzE2Miw3IEBA
IHZvaWQgZ2V0RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKEV4Y2VwdGkKICAgICAgICAgdHlwZU5h
bWUgPSAiRE9NIFJhbmdlIjsKICAgICAgICAgY29kZSAtPSBSYW5nZUV4Y2VwdGlvbjo6UmFuZ2VF
eGNlcHRpb25PZmZzZXQ7CiAgICAgICAgIG5hbWVUYWJsZSA9IHJhbmdlRXhjZXB0aW9uTmFtZXM7
CisgICAgICAgIGRlc2NyaXB0aW9uVGFibGUgPSByYW5nZUV4Y2VwdGlvbkRlc2NyaXB0aW9uczsK
ICAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IHNpemVvZihyYW5nZUV4Y2VwdGlvbk5hbWVzKSAvIHNp
emVvZihyYW5nZUV4Y2VwdGlvbk5hbWVzWzBdKTsKICAgICAgICAgbmFtZVRhYmxlT2Zmc2V0ID0g
UmFuZ2VFeGNlcHRpb246OkJBRF9CT1VOREFSWVBPSU5UU19FUlI7CiAgICAgfSBlbHNlIGlmIChj
b2RlID49IEV2ZW50RXhjZXB0aW9uOjpFdmVudEV4Y2VwdGlvbk9mZnNldCAmJiBjb2RlIDw9IEV2
ZW50RXhjZXB0aW9uOjpFdmVudEV4Y2VwdGlvbk1heCkgewpAQCAtMTE3LDYgKzE3MCw3IEBAIHZv
aWQgZ2V0RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKEV4Y2VwdGkKICAgICAgICAgdHlwZU5hbWUg
PSAiRE9NIEV2ZW50cyI7CiAgICAgICAgIGNvZGUgLT0gRXZlbnRFeGNlcHRpb246OkV2ZW50RXhj
ZXB0aW9uT2Zmc2V0OwogICAgICAgICBuYW1lVGFibGUgPSBldmVudEV4Y2VwdGlvbk5hbWVzOwor
ICAgICAgICBkZXNjcmlwdGlvblRhYmxlID0gZXZlbnRFeGNlcHRpb25EZXNjcmlwdGlvbnM7CiAg
ICAgICAgIG5hbWVUYWJsZVNpemUgPSBzaXplb2YoZXZlbnRFeGNlcHRpb25OYW1lcykgLyBzaXpl
b2YoZXZlbnRFeGNlcHRpb25OYW1lc1swXSk7CiAgICAgICAgIG5hbWVUYWJsZU9mZnNldCA9IEV2
ZW50RXhjZXB0aW9uOjpVTlNQRUNJRklFRF9FVkVOVF9UWVBFX0VSUjsKICAgICB9IGVsc2UgaWYg
KGNvZGUgPj0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb246OlhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9u
T2Zmc2V0ICYmIGNvZGUgPD0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb246OlhNTEh0dHBSZXF1ZXN0
RXhjZXB0aW9uTWF4KSB7CkBAIC0xMjQsNiArMTc4LDcgQEAgdm9pZCBnZXRFeGNlcHRpb25Db2Rl
RGVzY3JpcHRpb24oRXhjZXB0aQogICAgICAgICB0eXBlTmFtZSA9ICJYTUxIdHRwUmVxdWVzdCI7
CiAgICAgICAgIGNvZGUgLT0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb246OlhNTEh0dHBSZXF1ZXN0
RXhjZXB0aW9uT2Zmc2V0OwogICAgICAgICBuYW1lVGFibGUgPSB4bWxIdHRwUmVxdWVzdEV4Y2Vw
dGlvbk5hbWVzOworICAgICAgICBkZXNjcmlwdGlvblRhYmxlID0geG1sSHR0cFJlcXVlc3RFeGNl
cHRpb25EZXNjcmlwdGlvbnM7CiAgICAgICAgIG5hbWVUYWJsZVNpemUgPSBzaXplb2YoeG1sSHR0
cFJlcXVlc3RFeGNlcHRpb25OYW1lcykgLyBzaXplb2YoeG1sSHR0cFJlcXVlc3RFeGNlcHRpb25O
YW1lc1swXSk7CiAgICAgICAgIC8vIFhNTEh0dHBSZXF1ZXN0IGV4Y2VwdGlvbiBjb2RlcyBzdGFy
dCB3aXRoIDEwMSBhbmQgd2UgZG9uJ3Qgd2FudCAxMDAgZW1wdHkgZWxlbWVudHMgaW4gdGhlIG5h
bWUgYXJyYXkKICAgICAgICAgbmFtZVRhYmxlT2Zmc2V0ID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRp
b246Ok5FVFdPUktfRVJSOwpAQCAtMTMzLDYgKzE4OCw3IEBAIHZvaWQgZ2V0RXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uKEV4Y2VwdGkKICAgICAgICAgdHlwZU5hbWUgPSAiRE9NIFhQYXRoIjsKICAg
ICAgICAgY29kZSAtPSBYUGF0aEV4Y2VwdGlvbjo6WFBhdGhFeGNlcHRpb25PZmZzZXQ7CiAgICAg
ICAgIG5hbWVUYWJsZSA9IHhwYXRoRXhjZXB0aW9uTmFtZXM7CisgICAgICAgIGRlc2NyaXB0aW9u
VGFibGUgPSB4cGF0aEV4Y2VwdGlvbkRlc2NyaXB0aW9uczsKICAgICAgICAgbmFtZVRhYmxlU2l6
ZSA9IHNpemVvZih4cGF0aEV4Y2VwdGlvbk5hbWVzKSAvIHNpemVvZih4cGF0aEV4Y2VwdGlvbk5h
bWVzWzBdKTsKICAgICAgICAgLy8gWFBhdGggZXhjZXB0aW9uIGNvZGVzIHN0YXJ0IHdpdGggNTEg
YW5kIHdlIGRvbid0IHdhbnQgNTEgZW1wdHkgZWxlbWVudHMgaW4gdGhlIG5hbWUgYXJyYXkKICAg
ICAgICAgbmFtZVRhYmxlT2Zmc2V0ID0gWFBhdGhFeGNlcHRpb246OklOVkFMSURfRVhQUkVTU0lP
Tl9FUlI7CkBAIC0xNDMsNiArMTk5LDcgQEAgdm9pZCBnZXRFeGNlcHRpb25Db2RlRGVzY3JpcHRp
b24oRXhjZXB0aQogICAgICAgICB0eXBlTmFtZSA9ICJET00gU1ZHIjsKICAgICAgICAgY29kZSAt
PSBTVkdFeGNlcHRpb246OlNWR0V4Y2VwdGlvbk9mZnNldDsKICAgICAgICAgbmFtZVRhYmxlID0g
c3ZnRXhjZXB0aW9uTmFtZXM7CisgICAgICAgIGRlc2NyaXB0aW9uVGFibGUgPSBzdmdFeGNlcHRp
b25EZXNjcmlwdGlvbnM7CiAgICAgICAgIG5hbWVUYWJsZVNpemUgPSBzaXplb2Yoc3ZnRXhjZXB0
aW9uTmFtZXMpIC8gc2l6ZW9mKHN2Z0V4Y2VwdGlvbk5hbWVzWzBdKTsKICAgICAgICAgbmFtZVRh
YmxlT2Zmc2V0ID0gU1ZHRXhjZXB0aW9uOjpTVkdfV1JPTkdfVFlQRV9FUlI7CiAjZW5kaWYKQEAg
LTE1MCwxNyArMjA3LDIwIEBAIHZvaWQgZ2V0RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKEV4Y2Vw
dGkKICAgICAgICAgdHlwZSA9IERPTUV4Y2VwdGlvblR5cGU7CiAgICAgICAgIHR5cGVOYW1lID0g
IkRPTSI7CiAgICAgICAgIG5hbWVUYWJsZSA9IGV4Y2VwdGlvbk5hbWVzOworICAgICAgICBkZXNj
cmlwdGlvblRhYmxlID0gZXhjZXB0aW9uRGVzY3JpcHRpb25zOwogICAgICAgICBuYW1lVGFibGVT
aXplID0gc2l6ZW9mKGV4Y2VwdGlvbk5hbWVzKSAvIHNpemVvZihleGNlcHRpb25OYW1lc1swXSk7
CiAgICAgICAgIG5hbWVUYWJsZU9mZnNldCA9IElOREVYX1NJWkVfRVJSOwogICAgIH0KIAogICAg
IGRlc2NyaXB0aW9uLnR5cGVOYW1lID0gdHlwZU5hbWU7CiAgICAgZGVzY3JpcHRpb24ubmFtZSA9
IChlYyA+PSBuYW1lVGFibGVPZmZzZXQgJiYgZWMgLSBuYW1lVGFibGVPZmZzZXQgPCBuYW1lVGFi
bGVTaXplKSA/IG5hbWVUYWJsZVtlYyAtIG5hbWVUYWJsZU9mZnNldF0gOiAwOworICAgIGRlc2Ny
aXB0aW9uLmRlc2NyaXB0aW9uID0gKGVjID49IG5hbWVUYWJsZU9mZnNldCAmJiBlYyAtIG5hbWVU
YWJsZU9mZnNldCA8IG5hbWVUYWJsZVNpemUpID8gZGVzY3JpcHRpb25UYWJsZVtlYyAtIG5hbWVU
YWJsZU9mZnNldF0gOiAwOwogICAgIGRlc2NyaXB0aW9uLmNvZGUgPSBjb2RlOwogICAgIGRlc2Ny
aXB0aW9uLnR5cGUgPSB0eXBlOwogCiAgICAgLy8gQWxsIGV4Y2VwdGlvbnMgdXNlZCBpbiB0aGUg
RE9NIGNvZGUgc2hvdWxkIGhhdmUgbmFtZXMuCiAgICAgQVNTRVJUKGRlc2NyaXB0aW9uLm5hbWUp
OworICAgIEFTU0VSVChkZXNjcmlwdGlvbi5kZXNjcmlwdGlvbik7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmgJKHJldmlzaW9uIDQ5NjYzKQorKysgV2Vi
Q29yZS9kb20vRXhjZXB0aW9uQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3Nyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdHJ1Y3QgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9u
IHsKICAgICAgICAgY29uc3QgY2hhciogdHlwZU5hbWU7IC8vIGhhcyBzcGFjZXMgYW5kIGlzIHN1
aXRhYmxlIGZvciB1c2UgaW4gZXhjZXB0aW9uIGRlc2NyaXB0aW9uIHN0cmluZ3M7IG1heGltdW0g
bGVuZ3RoIGlzIDEwIGNoYXJhY3RlcnMKICAgICAgICAgY29uc3QgY2hhciogbmFtZTsgLy8gZXhj
ZXB0aW9uIG5hbWUsIGFsc28gaW50ZW5kZWQgZm9yIHVzZSBpbiBleGNlcHRpb24gZGVzY3JpcHRp
b24gc3RyaW5nczsgMCBpZiBuYW1lIG5vdCBrbm93bjsgbWF4aW11bSBsZW5ndGggaXMgMjcgY2hh
cmFjdGVycworICAgICAgICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbjsgLy8gZXhjZXB0aW9uIGRl
c2NyaXB0aW9uLCBpbnRlbmRlZCBmb3IgdXNlIGluIGV4Y2VwdGlvbiBzdHJpbmdzOyBtb3JlIHJl
YWRhYmxlIGV4cGxhbmF0aW9uIG9mIGVycm9yCiAgICAgICAgIGludCBjb2RlOyAvLyBudW1lcmlj
IHZhbHVlIG9mIHRoZSBleGNlcHRpb24gd2l0aGluIGEgcGFydGljdWxhciB0eXBlCiAgICAgICAg
IEV4Y2VwdGlvblR5cGUgdHlwZTsKICAgICB9Owo=
</data>
<flag name="review"
          id="22594"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="22595"
          type_id="3"
          status="-"
          setter="bweinstein"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41311</attachid>
            <date>2009-10-16 12:48:45 -0700</date>
            <delta_ts>2009-10-16 15:01:42 -0700</delta_ts>
            <desc>Addresses Darin&apos;s Comments + Layout Tests</desc>
            <filename>inspector_uncaught_descriptions.patch</filename>
            <type>text/plain</type>
            <size>20358</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTY5MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMDktMTAtMTYgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEZpeGVzIHBhcnQgb2YgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzA0MTI+LgorICAgICAgICBX
ZWIgSW5zcGVjdG9yIHNob3VsZCBnZXQgaHVtYW4gcmVhZGFibGUgRE9NIEV4Y2VwdGlvbnMuCisg
ICAgICAgIAorICAgICAgICBBZGQgYSBkZXNjcmlwdGlvbiBmaWVsZCB0byBFeGNlcHRpb25CYXNl
LCBhbmQgZXhwb3NlIGl0CisgICAgICAgIHRocm91Z2ggYSBsb25nRGVzY3JpcHRpb24gbWV0aG9k
LCB3aGljaCBpcyBjYWxsZWQgYnkgcmVwb3J0RXhjZXB0aW9uCisgICAgICAgIHRvIGFsbG93IHRo
ZSB1c2VyIHRvIGdldCBhIG1vcmUgZGV0YWlsZWQgZXJyb3IgZXhwbGFuYXRpb24gdGhyb3VnaCB0
aGUKKyAgICAgICAgV2ViIEluc3BlY3Rvci4KKyAgICAgICAgCisgICAgICAgIFRoaXMgb25seSBh
cHBsaWVzIHRvIGV4Y2VwdGlvbnMgdGhhdCBoYXBwZW4gZnJvbSB0aGUgc2NyaXB0IHdoZW4gaXQg
aXMgcnVuCisgICAgICAgIGluIHRoZSBwYWdlLCBET00gRXhjZXB0aW9ucyB0aGF0IGNvbWUgZnJv
bSBjb2RlIHJ1biBpbiB0aGUgY29uc29sZSB3aWxsIGNvbWUKKyAgICAgICAgaW4gYSBmdXR1cmUg
cGF0Y2guCisKKyAgICAgICAgVGVzdHM6IGluc3BlY3Rvci91bmNhdWdodC1kb20xLWV4Y2VwdGlv
bi5odG1sCisgICAgICAgICAgICAgICBpbnNwZWN0b3IvdW5jYXVnaHQtZG9tMy1leGNlcHRpb24u
aHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9yL3VuY2F1Z2h0LWRvbTgtZXhjZXB0aW9uLmh0
bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpyZXBvcnRFeGNlcHRpb24pOgorICAgICAgICAqIGRvbS9FeGNlcHRpb25CYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbkJhc2U6OkV4Y2VwdGlvbkJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9FeGNlcHRpb25CYXNlKToKKyAgICAgICAgKiBkb20vRXhjZXB0aW9u
QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6RXhjZXB0aW9uQmFzZTo6ZGVzY3JpcHRpb24pOgor
ICAgICAgICAqIGRvbS9FeGNlcHRpb25Db2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6Cisg
ICAgICAgIChXZWJDb3JlOjpnZXRFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24pOgorICAgICAgICAq
IGRvbS9FeGNlcHRpb25Db2RlLmg6CisKIDIwMDktMTAtMTYgIEtldmluIE9sbGl2aWVyICA8a2V2
aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgd3hNU1cgYnVpbGQgZml4LCBidWlsZCB0
aGUgTVNXIHNvdXJjZSB0byBnZXQgbWV0aG9kcyB0aGF0IHVzZSB0aGUgTVNXIHZlcnNpb24gb2YK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHJldmlzaW9uIDQ5NjYzKQor
KysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiRE9NQ29yZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJFeGNl
cHRpb25CYXNlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiSFRNTEF1ZGlvRWxlbWVudC5oIgpAQCAtNDY4LDYgKzQ2OSw5IEBAIHZv
aWQgcmVwb3J0RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlMKICAgICBVU3RyaW5nIGV4Y2Vw
dGlvblNvdXJjZVVSTCA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgInNvdXJjZVVSTCIpKS50b1N0cmluZyhleGVjKTsKICAgICBleGVjLT5jbGVhckV4Y2VwdGlv
bigpOwogCisgICAgaWYgKEV4Y2VwdGlvbkJhc2UqIGV4Y2VwdGlvbkJhc2UgPSB0b0V4Y2VwdGlv
bkJhc2UoZXhjZXB0aW9uKSkKKyAgICAgICAgZXJyb3JNZXNzYWdlID0gZXhjZXB0aW9uQmFzZS0+
bWVzc2FnZSgpICsgIjogIiAgKyBleGNlcHRpb25CYXNlLT5kZXNjcmlwdGlvbigpOworCiAgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHN0YXRpY19j
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKIApJbmRleDogV2ViQ29yZS9kb20vRXhjZXB0aW9uQmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vRXhjZXB0aW9uQmFzZS5jcHAJKHJldmlzaW9uIDQ5NjYzKQorKysgV2ViQ29y
ZS9kb20vRXhjZXB0aW9uQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSwyMyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuaCIKIAorI2lu
Y2x1ZGUgIkpTRE9NQ29yZUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkpTRXZlbnRFeGNlcHRpb24u
aCIKKyNpbmNsdWRlICJKU1JhbmdlRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiSlNYTUxIdHRwUmVx
dWVzdEV4Y2VwdGlvbi5oIgorI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiSlNTVkdFeGNlcHRp
b24uaCIKKyNlbmRpZgorI2lmIEVOQUJMRShYUEFUSCkKKyNpbmNsdWRlICJKU1hQYXRoRXhjZXB0
aW9uLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBFeGNlcHRpb25CYXNlOjpF
eGNlcHRpb25CYXNlKGNvbnN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24p
CiAgICAgOiBtX2NvZGUoZGVzY3JpcHRpb24uY29kZSkKICAgICAsIG1fbmFtZShkZXNjcmlwdGlv
bi5uYW1lKQorICAgICwgbV9kZXNjcmlwdGlvbihkZXNjcmlwdGlvbi5kZXNjcmlwdGlvbikKIHsK
ICAgICBpZiAoZGVzY3JpcHRpb24ubmFtZSkKICAgICAgICAgbV9tZXNzYWdlID0gU3RyaW5nOjpm
b3JtYXQoIiVzOiAlcyBFeGNlcHRpb24gJWQiLCBkZXNjcmlwdGlvbi5uYW1lLCBkZXNjcmlwdGlv
bi50eXBlTmFtZSwgZGVzY3JpcHRpb24uY29kZSk7CkBAIC00Niw0ICs1OCwyNiBAQCBTdHJpbmcg
RXhjZXB0aW9uQmFzZTo6dG9TdHJpbmcoKSBjb25zdAogICAgIHJldHVybiAiRXJyb3I6ICIgKyBt
X21lc3NhZ2U7CiB9CiAKK0V4Y2VwdGlvbkJhc2UqIHRvRXhjZXB0aW9uQmFzZShKU0M6OkpTVmFs
dWUgdmFsdWUpCit7CisgICAgaWYgKERPTUNvcmVFeGNlcHRpb24qIGRvbUV4Y2VwdGlvbiA9IHRv
RE9NQ29yZUV4Y2VwdGlvbih2YWx1ZSkpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PEV4Y2VwdGlvbkJhc2UqPihkb21FeGNlcHRpb24pOworICAgIGVsc2UgaWYgKFJhbmdlRXhjZXB0
aW9uKiByYW5nZUV4Y2VwdGlvbiA9IHRvUmFuZ2VFeGNlcHRpb24odmFsdWUpKQorICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb25CYXNlKj4ocmFuZ2VFeGNlcHRpb24pOwor
ICAgIGVsc2UgaWYgKEV2ZW50RXhjZXB0aW9uKiBldmVudEV4Y2VwdGlvbiA9IHRvRXZlbnRFeGNl
cHRpb24odmFsdWUpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb25C
YXNlKj4oZXZlbnRFeGNlcHRpb24pOworICAgIGVsc2UgaWYgKFhNTEh0dHBSZXF1ZXN0RXhjZXB0
aW9uKiB4bWxIdHRwRXhjZXB0aW9uID0gdG9YTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbih2YWx1ZSkp
CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbkJhc2UqPih4bWxIdHRw
RXhjZXB0aW9uKTsKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGVsc2UgaWYgKFNWR0V4Y2VwdGlvbiog
c3ZnRXhjZXB0aW9uID0gdG9TVkdFeGNlcHRpb24odmFsdWUpKQorICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxFeGNlcHRpb25CYXNlKj4oc3ZnRXhjZXB0aW9uKTsKKyNlbmRpZgorI2lm
IEVOQUJMRShYUEFUSCkKKyAgICBlbHNlIGlmIChYUGF0aEV4Y2VwdGlvbiogcGF0aEV4Y2VwdGlv
biA9IHRvWFBhdGhFeGNlcHRpb24odmFsdWUpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxFeGNlcHRpb25CYXNlKj4ocGF0aEV4Y2VwdGlvbik7CisjZW5kaWYKKyAgICAKKyAgICBy
ZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20v
RXhjZXB0aW9uQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2Uu
aAkocmV2aXNpb24gNDk2NjMpCisrKyBXZWJDb3JlL2RvbS9FeGNlcHRpb25CYXNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB1
bnNpZ25lZCBzaG9ydCBjb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlOyB9CiAgICAgICAgIFN0
cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgICAgIFN0cmluZyBtZXNz
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9CisgICAgICAgIFN0cmluZyBkZXNjcmlw
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRpb247IH0KIAogICAgICAgICBTdHJpbmcg
dG9TdHJpbmcoKSBjb25zdDsKIApAQCAtNTAsOCArNTEsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB1bnNpZ25lZCBzaG9ydCBtX2NvZGU7CiAgICAgICAgIFN0cmluZyBtX25hbWU7
CiAgICAgICAgIFN0cmluZyBtX21lc3NhZ2U7CisgICAgICAgIFN0cmluZyBtX2Rlc2NyaXB0aW9u
OwogICAgIH07CiAKKyAgICBFeGNlcHRpb25CYXNlKiB0b0V4Y2VwdGlvbkJhc2UoSlNDOjpKU1Zh
bHVlIHZhbHVlKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRXhjZXB0
aW9uQmFzZV9oCkluZGV4OiBXZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmNwcAkocmV2aXNpb24gNDk2NjMpCisrKyBX
ZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsMjUgKzY1
LDcwIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBleGNlcHRpb25OYW1lc1sKICAgICAiUVVP
VEFfRVhDRUVERURfRVJSIgogfTsKIAorc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGV4Y2VwdGlv
bkRlc2NyaXB0aW9uc1tdID0geworICAgICJpbmRleCBvciBzaXplIHdhcyBuZWdhdGl2ZSwgb3Ig
Z3JlYXRlciB0aGFuIHRoZSBhbGxvd2VkIHZhbHVlIiwKKyAgICAidGhlIHNwZWNpZmllZCByYW5n
ZSBvZiB0ZXh0IGRpZCBub3QgZml0IGludG8gYSBET01TdHJpbmciLAorICAgICJhbnkgTm9kZSB3
YXMgaW5zZXJ0ZWQgc29tZXdoZXJlIGl0IGRvZXNuJ3QgYmVsb25nLiIsCisgICAgImEgTm9kZSB3
YXMgdXNlZCBpbiBhIGRpZmZlcmVudCBkb2N1bWVudCB0aGFuIHRoZSBvbmUgdGhhdCBjcmVhdGVk
IGl0ICh0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBpdCkiLAorICAgICJhbiBpbnZhbGlkIG9yIGlsbGVn
YWwgY2hhcmFjdGVyIHdhcyBzcGVjaWZpZWQsIHN1Y2ggYXMgaW4gYW4gWE1MIG5hbWUiLAorICAg
ICJkYXRhIHdhcyBzcGVjaWZpZWQgZm9yIGEgTm9kZSB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IGRh
dGEiLAorICAgICJhbiBhdHRlbXB0IHdhcyBtYWRlIHRvIG1vZGlmeSBhbiBvYmplY3Qgd2hlcmUg
bW9kaWZpY2F0aW9ucyBhcmUgbm90IGFsbG93ZWQiLAorICAgICJhbiBhdHRlbXB0IHdhcyBtYWRl
IHRvIHJlZmVyZW5jZSBhIE5vZGUgaW4gYSBjb250ZXh0IHdoZXJlIGl0IGRvZXMgbm90IGV4aXN0
IiwKKyAgICAidGhlIGltcGxlbWVudGF0aW9uIGRpZCBub3Qgc3VwcG9ydCB0aGUgcmVxdWVzdGVk
IHR5cGUgb2Ygb2JqZWN0IG9yIG9wZXJhdGlvbiIsCisgICAgImFuIGF0dGVtcHQgd2FzIG1hZGUg
dG8gYWRkIGFuIGF0dHJpYnV0ZSB0aGF0IGlzIGFscmVhZHkgaW4gdXNlIGVsc2V3aGVyZSIsCisg
ICAgImFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gdXNlIGFuIG9iamVjdCB0aGF0IGlzIG5vdCwgb3Ig
aXMgbm8gbG9uZ2VyLCB1c2FibGUiLAorICAgICJhbiBpbnZhbGlkIG9yIGlsbGVnYWwgc3RyaW5n
IHdhcyBzcGVjaWZpZWQiLAorICAgICJhbiBhdHRlbXB0IHdhcyBtYWRlIHRvIG1vZGlmeSB0aGUg
dHlwZSBvZiB0aGUgdW5kZXJseWluZyBvYmplY3QiLAorICAgICJhbiBhdHRlbXB0IHdhcyBtYWRl
IHRvIGNyZWF0ZSBvciBjaGFuZ2UgYW4gb2JqZWN0IGluIGEgd2F5IHdoaWNoIGlzIGluY29ycmVj
dCB3aXRoIHJlZ2FyZCB0byBuYW1lc3BhY2VzIiwKKyAgICAiYSBwYXJhbWV0ZXIgb3IgYW4gb3Bl
cmF0aW9uIHdhcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSB1bmRlcmx5aW5nIG9iamVjdCIsCisgICAg
ImEgY2FsbCB0byBhIG1ldGhvZCBzdWNoIGFzIGluc2VydEJlZm9yZSBvciByZW1vdmVDaGlsZCB3
b3VsZCBtYWtlIHRoZSBOb2RlIGludmFsaWQgd2l0aCByZXNwZWN0IHRvIFwicGFydGlhbCB2YWxp
ZGl0eVwiLCB0aGlzIGV4Y2VwdGlvbiB3b3VsZCBiZSByYWlzZWQgYW5kIHRoZSBvcGVyYXRpb24g
d291bGQgbm90IGJlIGRvbmUiLAorICAgICJ0aGUgdHlwZSBvZiBhbiBvYmplY3Qgd2FzIGluY29t
cGF0aWJsZSB3aXRoIHRoZSBleHBlY3RlZCB0eXBlIG9mIHRoZSBwYXJhbWV0ZXIgYXNzb2NpYXRl
ZCB0byB0aGUgb2JqZWN0IiwKKyAgICAiYW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBicmVhayB0aHJv
dWdoIHRoZSBzZWN1cml0eSBwb2xpY3kgb2YgdGhlIHVzZXIgYWdlbnQiLAorICAgIC8vIEZJWE1F
OiBDb3VsZG4ndCBmaW5kIGEgZGVzY3JpcHRpb24gaW4gdGhlIEhUTUwvRE9NIHNwZWNpZmljYXRp
b25zIGZvciBORVRXT1JLX0VSUiwgQUJPUlRfRVJSLCBVUkxfTUlTTUFUQ0hfRVJSLCBhbmQgUVVP
VEFfRVhDRUVERURfRVJSCisgICAgImEgbmV0d29yayBlcnJvciBvY2N1cmVkIiwKKyAgICAidGhl
IHVzZXIgYWJvcnRlZCBhIHJlcXVlc3QiLAorICAgICJhIHdvcmtlciBnbG9iYWwgc2NvcGUgcmVw
cmVzZW50ZWQgYW4gYWJzb2x1dGUgVVJMIHRoYXQgaXMgbm90IGVxdWFsIHRvIHRoZSByZXN1bHRp
bmcgYWJzb2x1dGUgVVJMIiwKKyAgICAiYW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBhZGQgc29tZXRo
aW5nIHRvIHN0b3JhZ2UgdGhhdCBleGNlZWRlZCB0aGUgcXVvdGEiCit9OworCiBzdGF0aWMgY29u
c3QgY2hhciogY29uc3QgcmFuZ2VFeGNlcHRpb25OYW1lc1tdID0gewogICAgICJCQURfQk9VTkRB
UllQT0lOVFNfRVJSIiwKICAgICAiSU5WQUxJRF9OT0RFX1RZUEVfRVJSIgogfTsKIAorc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IHJhbmdlRXhjZXB0aW9uRGVzY3JpcHRpb25zW10gPSB7CisgICAg
InRoZSBib3VuZGFyeS1wb2ludHMgb2YgYSBSYW5nZSBkaWQgbm90IG1lZXQgc3BlY2lmaWMgcmVx
dWlyZW1lbnRzIiwKKyAgICAidGhlIGNvbnRhaW5lciBvZiBhbiBib3VuZGFyeS1wb2ludCBvZiBh
IFJhbmdlIHdhcyBiZWluZyBzZXQgdG8gZWl0aGVyIGEgbm9kZSBvZiBhbiBpbnZhbGlkIHR5cGUg
b3IgYSBub2RlIHdpdGggYW4gYW5jZXN0b3Igb2YgYW4gaW52YWxpZCB0eXBlIgorfTsKKwogc3Rh
dGljIGNvbnN0IGNoYXIqIGNvbnN0IGV2ZW50RXhjZXB0aW9uTmFtZXNbXSA9IHsKICAgICAiVU5T
UEVDSUZJRURfRVZFTlRfVFlQRV9FUlIiCiB9OwogCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qg
ZXZlbnRFeGNlcHRpb25EZXNjcmlwdGlvbnNbXSA9IHsKKyAgICAidGhlIEV2ZW50J3MgdHlwZSB3
YXMgbm90IHNwZWNpZmllZCBieSBpbml0aWFsaXppbmcgdGhlIGV2ZW50IGJlZm9yZSB0aGUgbWV0
aG9kIHdhcyBjYWxsZWQiCit9OworCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgeG1sSHR0cFJl
cXVlc3RFeGNlcHRpb25OYW1lc1tdID0gewogICAgICJORVRXT1JLX0VSUiIsCiAgICAgIkFCT1JU
X0VSUiIKIH07CiAKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB4bWxIdHRwUmVxdWVzdEV4Y2Vw
dGlvbkRlc2NyaXB0aW9uc1tdID0geworICAgICJhIG5ldHdvcmsgZXJyb3Igb2NjdXJlZCBpbiBz
eW5jaHJvbm91cyByZXF1ZXN0cyIsCisgICAgInRoZSB1c2VyIGFib3J0ZWQgYSByZXF1ZXN0IGlu
IHN5bmNocm9ub3VzIHJlcXVlc3RzIgorfTsKKwogI2lmIEVOQUJMRShYUEFUSCkKIHN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCB4cGF0aEV4Y2VwdGlvbk5hbWVzW10gPSB7CiAgICAgIklOVkFMSURf
RVhQUkVTU0lPTl9FUlIiLAogICAgICJUWVBFX0VSUiIKIH07CisKK3N0YXRpYyBjb25zdCBjaGFy
KiBjb25zdCB4cGF0aEV4Y2VwdGlvbkRlc2NyaXB0aW9uc1tdID0geworICAgICJ0aGUgZXhwcmVz
c2lvbiBoYWQgYSBzeW50YXggZXJyb3Igb3Igb3RoZXJ3aXNlIGlzIG5vdCBhIGxlZ2FsIGV4cHJl
c3Npb24gYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBvZiB0aGUgc3BlY2lmaWMgWFBhdGhFdmFsdWF0
b3IiLAorICAgICJ0aGUgZXhwcmVzc2lvbiBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHJldHVy
biB0aGUgc3BlY2lmaWVkIHR5cGUiCit9OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU1ZHKQpAQCAt
OTIsNiArMTM3LDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzdmdFeGNlcHRpb25OYW0K
ICAgICAiU1ZHX0lOVkFMSURfVkFMVUVfRVJSIiwKICAgICAiU1ZHX01BVFJJWF9OT1RfSU5WRVJU
QUJMRSIKIH07CisKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzdmdFeGNlcHRpb25EZXNjcmlw
dGlvbnNbXSA9IHsKKyAgICAiYW4gb2JqZWN0IG9mIHRoZSB3cm9uZyB0eXBlIHdhcyBwYXNzZWQg
dG8gYW4gb3BlcmF0aW9uIiwKKyAgICAiYW4gaW52YWxpZCB2YWx1ZSB3YXMgcGFzc2VkIHRvIGFu
IG9wZXJhdGlvbiBvciBhc3NpZ25lZCB0byBhbiBhdHRyaWJ1dGUiLAorICAgICJhbiBhdHRlbXB0
IHdhcyBtYWRlIHRvIGludmVydCBhIG1hdHJpeCB0aGF0IGlzIG5vdCBpbnZlcnRpYmxlIgorfTsK
ICNlbmRpZgogCiB2b2lkIGdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihFeGNlcHRpb25Db2Rl
IGVjLCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQpAQCAtMTAxLDYgKzE1
Miw3IEBAIHZvaWQgZ2V0RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKEV4Y2VwdGkKICAgICBjb25z
dCBjaGFyKiB0eXBlTmFtZTsKICAgICBpbnQgY29kZSA9IGVjOwogICAgIGNvbnN0IGNoYXIqIGNv
bnN0KiBuYW1lVGFibGU7CisgICAgY29uc3QgY2hhciogY29uc3QqIGRlc2NyaXB0aW9uVGFibGU7
CiAgICAgaW50IG5hbWVUYWJsZVNpemU7CiAgICAgaW50IG5hbWVUYWJsZU9mZnNldDsKICAgICBF
eGNlcHRpb25UeXBlIHR5cGU7CkBAIC0xMTAsNiArMTYyLDcgQEAgdm9pZCBnZXRFeGNlcHRpb25D
b2RlRGVzY3JpcHRpb24oRXhjZXB0aQogICAgICAgICB0eXBlTmFtZSA9ICJET00gUmFuZ2UiOwog
ICAgICAgICBjb2RlIC09IFJhbmdlRXhjZXB0aW9uOjpSYW5nZUV4Y2VwdGlvbk9mZnNldDsKICAg
ICAgICAgbmFtZVRhYmxlID0gcmFuZ2VFeGNlcHRpb25OYW1lczsKKyAgICAgICAgZGVzY3JpcHRp
b25UYWJsZSA9IHJhbmdlRXhjZXB0aW9uRGVzY3JpcHRpb25zOwogICAgICAgICBuYW1lVGFibGVT
aXplID0gc2l6ZW9mKHJhbmdlRXhjZXB0aW9uTmFtZXMpIC8gc2l6ZW9mKHJhbmdlRXhjZXB0aW9u
TmFtZXNbMF0pOwogICAgICAgICBuYW1lVGFibGVPZmZzZXQgPSBSYW5nZUV4Y2VwdGlvbjo6QkFE
X0JPVU5EQVJZUE9JTlRTX0VSUjsKICAgICB9IGVsc2UgaWYgKGNvZGUgPj0gRXZlbnRFeGNlcHRp
b246OkV2ZW50RXhjZXB0aW9uT2Zmc2V0ICYmIGNvZGUgPD0gRXZlbnRFeGNlcHRpb246OkV2ZW50
RXhjZXB0aW9uTWF4KSB7CkBAIC0xMTcsNiArMTcwLDcgQEAgdm9pZCBnZXRFeGNlcHRpb25Db2Rl
RGVzY3JpcHRpb24oRXhjZXB0aQogICAgICAgICB0eXBlTmFtZSA9ICJET00gRXZlbnRzIjsKICAg
ICAgICAgY29kZSAtPSBFdmVudEV4Y2VwdGlvbjo6RXZlbnRFeGNlcHRpb25PZmZzZXQ7CiAgICAg
ICAgIG5hbWVUYWJsZSA9IGV2ZW50RXhjZXB0aW9uTmFtZXM7CisgICAgICAgIGRlc2NyaXB0aW9u
VGFibGUgPSBldmVudEV4Y2VwdGlvbkRlc2NyaXB0aW9uczsKICAgICAgICAgbmFtZVRhYmxlU2l6
ZSA9IHNpemVvZihldmVudEV4Y2VwdGlvbk5hbWVzKSAvIHNpemVvZihldmVudEV4Y2VwdGlvbk5h
bWVzWzBdKTsKICAgICAgICAgbmFtZVRhYmxlT2Zmc2V0ID0gRXZlbnRFeGNlcHRpb246OlVOU1BF
Q0lGSUVEX0VWRU5UX1RZUEVfRVJSOwogICAgIH0gZWxzZSBpZiAoY29kZSA+PSBYTUxIdHRwUmVx
dWVzdEV4Y2VwdGlvbjo6WE1MSHR0cFJlcXVlc3RFeGNlcHRpb25PZmZzZXQgJiYgY29kZSA8PSBY
TUxIdHRwUmVxdWVzdEV4Y2VwdGlvbjo6WE1MSHR0cFJlcXVlc3RFeGNlcHRpb25NYXgpIHsKQEAg
LTEyNCw2ICsxNzgsNyBAQCB2b2lkIGdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihFeGNlcHRp
CiAgICAgICAgIHR5cGVOYW1lID0gIlhNTEh0dHBSZXF1ZXN0IjsKICAgICAgICAgY29kZSAtPSBY
TUxIdHRwUmVxdWVzdEV4Y2VwdGlvbjo6WE1MSHR0cFJlcXVlc3RFeGNlcHRpb25PZmZzZXQ7CiAg
ICAgICAgIG5hbWVUYWJsZSA9IHhtbEh0dHBSZXF1ZXN0RXhjZXB0aW9uTmFtZXM7CisgICAgICAg
IGRlc2NyaXB0aW9uVGFibGUgPSB4bWxIdHRwUmVxdWVzdEV4Y2VwdGlvbkRlc2NyaXB0aW9uczsK
ICAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IHNpemVvZih4bWxIdHRwUmVxdWVzdEV4Y2VwdGlvbk5h
bWVzKSAvIHNpemVvZih4bWxIdHRwUmVxdWVzdEV4Y2VwdGlvbk5hbWVzWzBdKTsKICAgICAgICAg
Ly8gWE1MSHR0cFJlcXVlc3QgZXhjZXB0aW9uIGNvZGVzIHN0YXJ0IHdpdGggMTAxIGFuZCB3ZSBk
b24ndCB3YW50IDEwMCBlbXB0eSBlbGVtZW50cyBpbiB0aGUgbmFtZSBhcnJheQogICAgICAgICBu
YW1lVGFibGVPZmZzZXQgPSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbjo6TkVUV09SS19FUlI7CkBA
IC0xMzMsNiArMTg4LDcgQEAgdm9pZCBnZXRFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oRXhjZXB0
aQogICAgICAgICB0eXBlTmFtZSA9ICJET00gWFBhdGgiOwogICAgICAgICBjb2RlIC09IFhQYXRo
RXhjZXB0aW9uOjpYUGF0aEV4Y2VwdGlvbk9mZnNldDsKICAgICAgICAgbmFtZVRhYmxlID0geHBh
dGhFeGNlcHRpb25OYW1lczsKKyAgICAgICAgZGVzY3JpcHRpb25UYWJsZSA9IHhwYXRoRXhjZXB0
aW9uRGVzY3JpcHRpb25zOwogICAgICAgICBuYW1lVGFibGVTaXplID0gc2l6ZW9mKHhwYXRoRXhj
ZXB0aW9uTmFtZXMpIC8gc2l6ZW9mKHhwYXRoRXhjZXB0aW9uTmFtZXNbMF0pOwogICAgICAgICAv
LyBYUGF0aCBleGNlcHRpb24gY29kZXMgc3RhcnQgd2l0aCA1MSBhbmQgd2UgZG9uJ3Qgd2FudCA1
MSBlbXB0eSBlbGVtZW50cyBpbiB0aGUgbmFtZSBhcnJheQogICAgICAgICBuYW1lVGFibGVPZmZz
ZXQgPSBYUGF0aEV4Y2VwdGlvbjo6SU5WQUxJRF9FWFBSRVNTSU9OX0VSUjsKQEAgLTE0Myw2ICsx
OTksNyBAQCB2b2lkIGdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihFeGNlcHRpCiAgICAgICAg
IHR5cGVOYW1lID0gIkRPTSBTVkciOwogICAgICAgICBjb2RlIC09IFNWR0V4Y2VwdGlvbjo6U1ZH
RXhjZXB0aW9uT2Zmc2V0OwogICAgICAgICBuYW1lVGFibGUgPSBzdmdFeGNlcHRpb25OYW1lczsK
KyAgICAgICAgZGVzY3JpcHRpb25UYWJsZSA9IHN2Z0V4Y2VwdGlvbkRlc2NyaXB0aW9uczsKICAg
ICAgICAgbmFtZVRhYmxlU2l6ZSA9IHNpemVvZihzdmdFeGNlcHRpb25OYW1lcykgLyBzaXplb2Yo
c3ZnRXhjZXB0aW9uTmFtZXNbMF0pOwogICAgICAgICBuYW1lVGFibGVPZmZzZXQgPSBTVkdFeGNl
cHRpb246OlNWR19XUk9OR19UWVBFX0VSUjsKICNlbmRpZgpAQCAtMTUwLDE3ICsyMDcsMjAgQEAg
dm9pZCBnZXRFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oRXhjZXB0aQogICAgICAgICB0eXBlID0g
RE9NRXhjZXB0aW9uVHlwZTsKICAgICAgICAgdHlwZU5hbWUgPSAiRE9NIjsKICAgICAgICAgbmFt
ZVRhYmxlID0gZXhjZXB0aW9uTmFtZXM7CisgICAgICAgIGRlc2NyaXB0aW9uVGFibGUgPSBleGNl
cHRpb25EZXNjcmlwdGlvbnM7CiAgICAgICAgIG5hbWVUYWJsZVNpemUgPSBzaXplb2YoZXhjZXB0
aW9uTmFtZXMpIC8gc2l6ZW9mKGV4Y2VwdGlvbk5hbWVzWzBdKTsKICAgICAgICAgbmFtZVRhYmxl
T2Zmc2V0ID0gSU5ERVhfU0laRV9FUlI7CiAgICAgfQogCiAgICAgZGVzY3JpcHRpb24udHlwZU5h
bWUgPSB0eXBlTmFtZTsKICAgICBkZXNjcmlwdGlvbi5uYW1lID0gKGVjID49IG5hbWVUYWJsZU9m
ZnNldCAmJiBlYyAtIG5hbWVUYWJsZU9mZnNldCA8IG5hbWVUYWJsZVNpemUpID8gbmFtZVRhYmxl
W2VjIC0gbmFtZVRhYmxlT2Zmc2V0XSA6IDA7CisgICAgZGVzY3JpcHRpb24uZGVzY3JpcHRpb24g
PSAoZWMgPj0gbmFtZVRhYmxlT2Zmc2V0ICYmIGVjIC0gbmFtZVRhYmxlT2Zmc2V0IDwgbmFtZVRh
YmxlU2l6ZSkgPyBkZXNjcmlwdGlvblRhYmxlW2VjIC0gbmFtZVRhYmxlT2Zmc2V0XSA6IDA7CiAg
ICAgZGVzY3JpcHRpb24uY29kZSA9IGNvZGU7CiAgICAgZGVzY3JpcHRpb24udHlwZSA9IHR5cGU7
CiAKICAgICAvLyBBbGwgZXhjZXB0aW9ucyB1c2VkIGluIHRoZSBET00gY29kZSBzaG91bGQgaGF2
ZSBuYW1lcy4KICAgICBBU1NFUlQoZGVzY3JpcHRpb24ubmFtZSk7CisgICAgQVNTRVJUKGRlc2Ny
aXB0aW9uLmRlc2NyaXB0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V4
Y2VwdGlvbkNvZGUuaAkocmV2aXNpb24gNDk2NjMpCisrKyBXZWJDb3JlL2RvbS9FeGNlcHRpb25D
b2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIHN0cnVjdCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gewogICAgICAgICBjb25zdCBj
aGFyKiB0eXBlTmFtZTsgLy8gaGFzIHNwYWNlcyBhbmQgaXMgc3VpdGFibGUgZm9yIHVzZSBpbiBl
eGNlcHRpb24gZGVzY3JpcHRpb24gc3RyaW5nczsgbWF4aW11bSBsZW5ndGggaXMgMTAgY2hhcmFj
dGVycwogICAgICAgICBjb25zdCBjaGFyKiBuYW1lOyAvLyBleGNlcHRpb24gbmFtZSwgYWxzbyBp
bnRlbmRlZCBmb3IgdXNlIGluIGV4Y2VwdGlvbiBkZXNjcmlwdGlvbiBzdHJpbmdzOyAwIGlmIG5h
bWUgbm90IGtub3duOyBtYXhpbXVtIGxlbmd0aCBpcyAyNyBjaGFyYWN0ZXJzCisgICAgICAgIGNv
bnN0IGNoYXIqIGRlc2NyaXB0aW9uOyAvLyBleGNlcHRpb24gZGVzY3JpcHRpb24sIGludGVuZGVk
IGZvciB1c2UgaW4gZXhjZXB0aW9uIHN0cmluZ3M7IG1vcmUgcmVhZGFibGUgZXhwbGFuYXRpb24g
b2YgZXJyb3IKICAgICAgICAgaW50IGNvZGU7IC8vIG51bWVyaWMgdmFsdWUgb2YgdGhlIGV4Y2Vw
dGlvbiB3aXRoaW4gYSBwYXJ0aWN1bGFyIHR5cGUKICAgICAgICAgRXhjZXB0aW9uVHlwZSB0eXBl
OwogICAgIH07CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0OTY5MCkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDA5LTEwLTE2ICBCcmlhbiBX
ZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlcyBwYXJ0IG9mIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzMwNDEyPi4KKyAgICAgICAgV2ViIEluc3BlY3RvciBzaG91bGQgZ2V0IGh1bWFuIHJlYWRh
YmxlIERPTSBFeGNlcHRpb25zLgorICAgICAgICAKKyAgICAgICAgQWRkcyB0ZXN0cyBmb3IgdW5j
YXVnaHQgZXhjZXB0aW9ucyBvZiBET00gRXhjZXB0aW9ucyAxLCAzLCBhbmQgOCAKKyAgICAgICAg
KElOREVYX1NJWkVfRVJSLCBOT1RfRk9VTkRfRVJSLCBhbmQgSElFUkFSQ0hZX1JFUVVFU1RfRVJS
KS4KKworICAgICAgICAqIGluc3BlY3Rvci91bmNhdWdodC1kb20xLWV4Y2VwdGlvbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci91bmNhdWdodC1kb20xLWV4Y2VwdGlv
bi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvdW5jYXVnaHQtZG9tMy1leGNlcHRp
b24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvdW5jYXVnaHQtZG9t
My1leGNlcHRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3VuY2F1Z2h0LWRv
bTgtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3Vu
Y2F1Z2h0LWRvbTgtZXhjZXB0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDA5LTEwLTE2ICBUb3IgQXJu
ZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBBcml5YSBIaWRheWF0LgpJbmRleDogTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuY2F1Z2h0
LWRvbTEtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdW5jYXVnaHQtZG9tMS1leGNlcHRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuY2F1Z2h0LWRvbTEtZXhjZXB0aW9uLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMTk6IElOREVYX1NJWkVfRVJSOiBET00gRXhjZXB0aW9uIDE6IGluZGV4IG9yIHNpemUgd2Fz
IG5lZ2F0aXZlLCBvciBncmVhdGVyIHRoYW4gdGhlIGFsbG93ZWQgdmFsdWUKK0FMRVJUOiBFeGNl
cHRpb24gdGltZW91dCBleGNlZWRlZC4KK1RoaXMgdGVzdHMgdGhhdCB3ZSBhcmUgZ2V0dGluZyB0
aGUgY29ycmVjdCBtZXNzYWdlIGZvciBET00gRXhjZXB0aW9uIDE6IElOREVYX1NJWkVfRVJSLgor
CisKSW5kZXg6IExheW91dFRlc3RzL2luc3BlY3Rvci91bmNhdWdodC1kb20xLWV4Y2VwdGlvbi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2luc3BlY3Rvci91bmNhdWdodC1kb20xLWV4
Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuY2F1
Z2h0LWRvbTEtZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcgQEAKKzxo
dG1sPg0KKzxoZWFkPg0KKzxzY3JpcHQgc3JjPSJldmFsdWF0ZS1pbi1mcm9udGVuZC5qcyI+PC9z
Y3JpcHQ+DQorPHNjcmlwdD4NCisNCitmdW5jdGlvbiBkb2l0KCkNCit7DQorICAgIC8vIFNpbmNl
IHRoZSBleGNlcHRpb24gd2lsbCBraWxsIGV4ZWN1dGlvbiwgbWFrZSBhIHNob3J0IHRpbWVvdXQu
DQorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQorICAgICAgICBhbGVydCgiRXhjZXB0aW9u
IHRpbWVvdXQgZXhjZWVkZWQuIikNCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsNCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbG9zZVdlYkluc3Bl
Y3RvcigpOw0KKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsN
CisgICAgICAgIH0NCisgICAgfSwgNTAwKTsNCisNCisgICAgdmFyIHAgPSBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgpOw0KKyAgICBwLnRleHRDb250ZW50ID0gImZvbyI7DQorICAgIHAuc3BsaXRU
ZXh0KDEwMDAwKTsNCit9DQorDQorPC9zY3JpcHQ+DQorPC9oZWFkPg0KKw0KKzxib2R5IG9ubG9h
ZD0ib25sb2FkKCkiPg0KKzxwPg0KK1RoaXMgdGVzdHMgdGhhdCB3ZSBhcmUgZ2V0dGluZyB0aGUg
Y29ycmVjdCBtZXNzYWdlIGZvciBET00gRXhjZXB0aW9uIDE6IElOREVYX1NJWkVfRVJSLg0KKzwv
cD4NCisNCis8ZGl2IGlkPSJmcm9udGVuZC1zY3JpcHQiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPg0K
KzwvZGl2Pg0KKw0KKzxkaXYgaWQ9Im91dHB1dCI+DQorPC9kaXY+DQorDQorPC9ib2R5Pg0KKzwv
aHRtbD4NCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5jYXVn
aHQtZG9tMS1leGNlcHRpb24uaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQog
ICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5jYXVnaHQtZG9tMy1leGNlcHRp
b24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2luc3BlY3Rvci91bmNh
dWdodC1kb20zLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvdW5jYXVnaHQtZG9tMy1leGNlcHRpb24tZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNzogSElFUkFS
Q0hZX1JFUVVFU1RfRVJSOiBET00gRXhjZXB0aW9uIDM6IGFueSBOb2RlIHdhcyBpbnNlcnRlZCBz
b21ld2hlcmUgaXQgZG9lc24ndCBiZWxvbmcuCitBTEVSVDogRXhjZXB0aW9uIHRpbWVvdXQgZXhj
ZWVkZWQuCitUaGlzIHRlc3RzIHRoYXQgd2UgYXJlIGdldHRpbmcgdGhlIGNvcnJlY3QgbWVzc2Fn
ZSBmb3IgRE9NIEV4Y2VwdGlvbiAzOiBISUVSQVJDSFlfUkVRVUVTVF9FUlIuCisKKwpJbmRleDog
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuY2F1Z2h0LWRvbTMtZXhjZXB0aW9uLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuY2F1Z2h0LWRvbTMtZXhjZXB0aW9uLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5jYXVnaHQtZG9tMy1l
eGNlcHRpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorPGh0bWw+DQorPGhl
YWQ+DQorPHNjcmlwdCBzcmM9ImV2YWx1YXRlLWluLWZyb250ZW5kLmpzIj48L3NjcmlwdD4NCis8
c2NyaXB0Pg0KKw0KK2Z1bmN0aW9uIGRvaXQoKQ0KK3sNCisgICAgLy8gU2luY2UgdGhlIGV4Y2Vw
dGlvbiB3aWxsIGtpbGwgZXhlY3V0aW9uLCBtYWtlIGEgc2hvcnQgdGltZW91dC4NCisgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsNCisgICAgICAgIGFsZXJ0KCJFeGNlcHRpb24gdGltZW91dCBl
eGNlZWRlZC4iKQ0KKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgew0K
KyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7DQor
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOw0KKyAgICAgICAg
fQ0KKyAgICB9LCA1MDApOw0KKw0KKyAgICBkb2N1bWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCkpOw0KK30NCisNCis8L3NjcmlwdD4NCis8L2hlYWQ+DQorDQorPGJvZHkg
b25sb2FkPSJvbmxvYWQoKSI+DQorPHA+DQorVGhpcyB0ZXN0cyB0aGF0IHdlIGFyZSBnZXR0aW5n
IHRoZSBjb3JyZWN0IG1lc3NhZ2UgZm9yIERPTSBFeGNlcHRpb24gMzogSElFUkFSQ0hZX1JFUVVF
U1RfRVJSLg0KKzwvcD4NCisNCis8ZGl2IGlkPSJmcm9udGVuZC1zY3JpcHQiIHN0eWxlPSJkaXNw
bGF5Om5vbmUiPg0KKzwvZGl2Pg0KKw0KKzxkaXYgaWQ9Im91dHB1dCI+DQorPC9kaXY+DQorDQor
PC9ib2R5Pg0KKzwvaHRtbD4NCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdW5jYXVnaHQtZG9tMy1leGNlcHRpb24uaHRtbApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46
ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5jYXVnaHQt
ZG9tOC1leGNlcHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2lu
c3BlY3Rvci91bmNhdWdodC1kb204LWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5jYXVnaHQtZG9tOC1leGNlcHRpb24tZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSAxNzogTk9UX0ZPVU5EX0VSUjogRE9NIEV4Y2VwdGlvbiA4OiBhbiBhdHRlbXB0IHdhcyBtYWRl
IHRvIHJlZmVyZW5jZSBhIE5vZGUgaW4gYSBjb250ZXh0IHdoZXJlIGl0IGRvZXMgbm90IGV4aXN0
CitBTEVSVDogRXhjZXB0aW9uIHRpbWVvdXQgZXhjZWVkZWQuCitUaGlzIHRlc3RzIHRoYXQgd2Ug
YXJlIGdldHRpbmcgdGhlIGNvcnJlY3QgbWVzc2FnZSBmb3IgRE9NIEV4Y2VwdGlvbiA4OiBOT1Rf
Rk9VTkRfRVJSLgorCisKSW5kZXg6IExheW91dFRlc3RzL2luc3BlY3Rvci91bmNhdWdodC1kb204
LWV4Y2VwdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2luc3BlY3Rvci91bmNh
dWdodC1kb204LWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3VuY2F1Z2h0LWRvbTgtZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzUgQEAKKzxodG1sPg0KKzxoZWFkPg0KKzxzY3JpcHQgc3JjPSJldmFsdWF0ZS1pbi1mcm9u
dGVuZC5qcyI+PC9zY3JpcHQ+DQorPHNjcmlwdD4NCisNCitmdW5jdGlvbiBkb2l0KCkNCit7DQor
ICAgIC8vIFNpbmNlIHRoZSBleGNlcHRpb24gd2lsbCBraWxsIGV4ZWN1dGlvbiwgbWFrZSBhIHNo
b3J0IHRpbWVvdXQuDQorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQorICAgICAgICBhbGVy
dCgiRXhjZXB0aW9uIHRpbWVvdXQgZXhjZWVkZWQuIikNCisgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsNCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5j
bG9zZVdlYkluc3BlY3RvcigpOw0KKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsNCisgICAgICAgIH0NCisgICAgfSwgNTAwKTsNCisNCisgICAgZG9jdW1lbnQu
YXBwZW5kQ2hpbGQoKTsNCit9DQorDQorPC9zY3JpcHQ+DQorPC9oZWFkPg0KKw0KKzxib2R5IG9u
bG9hZD0ib25sb2FkKCkiPg0KKzxwPg0KK1RoaXMgdGVzdHMgdGhhdCB3ZSBhcmUgZ2V0dGluZyB0
aGUgY29ycmVjdCBtZXNzYWdlIGZvciBET00gRXhjZXB0aW9uIDg6IE5PVF9GT1VORF9FUlIuDQor
PC9wPg0KKw0KKzxkaXYgaWQ9ImZyb250ZW5kLXNjcmlwdCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+
DQorPC9kaXY+DQorDQorPGRpdiBpZD0ib3V0cHV0Ij4NCis8L2Rpdj4NCisNCis8L2JvZHk+DQor
PC9odG1sPg0KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2luc3BlY3Rvci91bmNh
dWdodC1kb204LWV4Y2VwdGlvbi5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxl
CiAgICsgKgoK
</data>
<flag name="review"
          id="22672"
          type_id="1"
          status="-"
          setter="sam"
    />
    <flag name="commit-queue"
          id="22673"
          type_id="3"
          status="-"
          setter="bweinstein"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41332</attachid>
            <date>2009-10-16 15:01:42 -0700</date>
            <delta_ts>2009-10-16 18:19:23 -0700</delta_ts>
            <desc>Addresses Sam&apos;s Comment</desc>
            <filename>inspector_newfiles.patch</filename>
            <type>text/plain</type>
            <size>28221</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTcwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMDktMTAtMTYgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEZpeGVzIHBhcnQgb2YgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzA0MTI+LgorICAgICAgICBX
ZWIgSW5zcGVjdG9yIHNob3VsZCBnZXQgaHVtYW4gcmVhZGFibGUgRE9NIEV4Y2VwdGlvbnMuCisK
KyAgICAgICAgQWRkIGEgZGVzY3JpcHRpb24gZmllbGQgdG8gRXhjZXB0aW9uQmFzZSwgYW5kIGNh
bGwgaXQgdGhyb3VnaCAKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uIHdoaWNoIGFsbG93cyB0aGUg
dXNlci9kZXZlbG9wZXIgdG8gZ2V0IGEgbW9yZSBkZXRhaWxlZAorICAgICAgICBhbmQgY29oZXJl
bnQgZXJyb3IgZXhwbGFuYXRpb24gdGhyb3VnaCB0aGUgV2ViIEluc3BlY3Rvci4KKworICAgICAg
ICBUaGlzIG9ubHkgYXBwbGllcyB0byBleGNlcHRpb25zIHRoYXQgY29tZSBmcm9tIGEgc2NyaXB0
IG9uIHRoZSBwYWdlIHdoZW4KKyAgICAgICAgaXQgaXMgcnVuLiBET00gRXhjZXB0aW9ucyB0aGF0
IGNvbWUgZnJvbSB0aGUgY29kZSBydW4gaW4gdGhlIGNvbnNvbGUsIG9yIERPTQorICAgICAgICBl
eGNlcHRpb25zIHRoYXQgYXJlIGNhdWdodCBhbmQgbG9nZ2VkIHdpbGwgY29tZSBpbiBhIGZ1dHVy
ZSBwYXRjaC4KKworICAgICAgICBUZXN0czogaW5zcGVjdG9yL3VuY2F1Z2h0LWRvbTEtZXhjZXB0
aW9uLmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci91bmNhdWdodC1kb20zLWV4Y2VwdGlv
bi5odG1sCisgICAgICAgICAgICAgICBpbnNwZWN0b3IvdW5jYXVnaHQtZG9tOC1leGNlcHRpb24u
aHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V4Y2Vw
dGlvbkJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvRXhjZXB0aW9uQmFzZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNFeGNlcHRpb25CYXNlLmg6IEFkZGVkLgorICAgICAg
ICAqIGRvbS9FeGNlcHRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbkJh
c2U6OkV4Y2VwdGlvbkJhc2UpOgorICAgICAgICAqIGRvbS9FeGNlcHRpb25CYXNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpFeGNlcHRpb25CYXNlOjpkZXNjcmlwdGlvbik6CisgICAgICAgICogZG9t
L0V4Y2VwdGlvbkNvZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNv
cmU6OmdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbik6CisgICAgICAgICogZG9tL0V4Y2VwdGlv
bkNvZGUuaDoKKwogMjAwOS0xMC0xNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDQ5NjY3
KQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTQ4Niw2ICs0ODYs
OCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldC5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0V4
Y2VwdGlvbkJhc2UuY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0V4Y2VwdGlvbkJh
c2UuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5oJywKSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNDk2NjcpCisrKyBXZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yOTIwMiw2ICsyOTIw
MiwxNCBAQAogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRXZlbnRUYXJnZXQu
aCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KKyAgICAgICAgICAgICAgICA8RmlsZQ0KKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0V4Y2VwdGlvbkJhc2UuY3BwIg0KKwkJCQkJ
Pg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRp
bmdzXGpzXEpTRXhjZXB0aW9uQmFzZS5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQogCQkJCTxG
aWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTR2VvbG9jYXRpb25DdXN0
b20uY3BwIg0KIAkJCQkJPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiA0OTY2NykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MzksNiArNjM5LDggQEAKIAkJMzFD
MEZGNEMwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFDMEZGNDYwRTRDRUZE
RDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oICovOyB9OwogCQkzMUMwRkY0
RDBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFDMEZGNDcwRTRDRUZERDAw
N0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5tbSAqLzsgfTsKIAkJMzFDMEZGNEUw
RTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUMwRkY0ODBFNENF
RkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50SW50ZXJuYWwuaCAqLzsgfTsK
KwkJMzMxNEFDRUIxMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzE0QUNFOTEwODkyMDg2
MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmNwcCAqLzsgfTsKKwkJMzMxNEFDRUMxMDg5MjA4
NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzMxNEFDRUExMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0
aW9uQmFzZS5oICovOyB9OwogCQkzMzUwM0M5QTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0
aW9uUHJlc2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMzUwM0M5OTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uUHJlc2VudGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzM1MDND
QTMxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzNTAzQzlGMTAxNzlBRDcwMDNCNDdFMSAv
KiBKU05vdGlmaWNhdGlvbi5jcHAgKi87IH07CiAJCTMzNTAzQ0E0MTAxNzlBRDcwMDNCNDdFMSAv
KiBKU05vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzM1MDNDQTAxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uLmggKi87
IH07CkBAIC01ODM4LDYgKzU4NDAsOCBAQAogCQkzMUMwRkY0NjBFNENFRkREMDA3RDZGRTUgLyog
RE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMUMwRkY0NzBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NV2ViS2l0VHJh
bnNpdGlvbkV2ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUMwRkY0ODBF
NENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50SW50ZXJuYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50SW50
ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzMxNEFDRTkxMDg5MjA4NjAw
MEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0V4Y2VwdGlvbkJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMzE0QUNFQTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXhjZXB0aW9uQmFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzMzNGNzA0RTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0
aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBOb3RpZmljYXRpb24uaWRsOyBwYXRoID0g
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMzNGNzA0RjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5oOyBwYXRoID0gbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM1MDND
OTkxMDE3OUE3NDAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvblByZXNlbnRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgZmls
ZUVuY29kaW5nID0gNDsgbmFtZSA9IE5vdGlmaWNhdGlvblByZXNlbnRlci5oOyBwYXRoID0gbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QcmVzZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE0MjQyLDYgKzE0MjQ2LDggQEAKIAkJCQlCQ0JGQjUzQjBEQ0QyOUNGMDAxOUIz
RTUgLyogSlNET01XaW5kb3dTaGVsbC5oICovLAogCQkJCUJDNjA5MDFFMEU5MUI4RUMwMDBDNjhC
NSAvKiBKU0V2ZW50VGFyZ2V0LmNwcCAqLywKIAkJCQlCQzYwOTAxRDBFOTFCOEVDMDAwQzY4QjUg
LyogSlNFdmVudFRhcmdldC5oICovLAorCQkJCTMzMTRBQ0U5MTA4OTIwODYwMDBGMEU1NiAvKiBK
U0V4Y2VwdGlvbkJhc2UuY3BwICovLAorCQkJCTMzMTRBQ0VBMTA4OTIwODYwMDBGMEU1NiAvKiBK
U0V4Y2VwdGlvbkJhc2UuaCAqLywKIAkJCQlDMDkxNTg4NDBEQjQyMDkyMDBFNTVBRjQgLyogSlNJ
bnNwZWN0ZWRPYmplY3RXcmFwcGVyLmNwcCAqLywKIAkJCQlDMDkxNTg4NTBEQjQyMDkyMDBFNTVB
RjQgLyogSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyLmggKi8sCiAJCQkJQzA5MTU4ODYwREI0MjA5
MjAwRTU1QUY0IC8qIEpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNwcCAqLywKQEAgLTE4MDM0
LDYgKzE4MDQwLDcgQEAKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nl
c3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhT
TFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRGNEQ2RTAwRUNG
OUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTMzMTRBQ0VDMTA4OTIwODYw
MDBGMEU1NiAvKiBKU0V4Y2VwdGlvbkJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjAxNjUsNiAr
MjAxNzIsNyBAQAogCQkJCTkzRjE5QjA1MDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29y
TGlieHNsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkg
LyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3REQ0RDg2MEZERjRE
NkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMzMTRBQ0VC
MTA4OTIwODYwMDBGMEU1NiAvKiBKU0V4Y2VwdGlvbkJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZpc2lvbiA0OTY2NykKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkRPTUNvcmVFeGNlcHRpb24uaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiRXhjZXB0
aW9uQmFzZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkhUTUxBdWRpb0VsZW1lbnQuaCIKQEAgLTM1LDYgKzM2LDcgQEAKICNpbmNs
dWRlICJKU0RPTUNvcmVFeGNlcHRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5o
IgogI2luY2x1ZGUgIkpTRXZlbnRFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJKU0V4Y2VwdGlvbkJh
c2UuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJKU1JhbmdlRXhjZXB0aW9uLmgi
CiAjaW5jbHVkZSAiSlNYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5oIgpAQCAtNDY4LDYgKzQ3MCw5
IEBAIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlMKICAgICBVU3RyaW5n
IGV4Y2VwdGlvblNvdXJjZVVSTCA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZp
ZXIoZXhlYywgInNvdXJjZVVSTCIpKS50b1N0cmluZyhleGVjKTsKICAgICBleGVjLT5jbGVhckV4
Y2VwdGlvbigpOwogCisgICAgaWYgKEV4Y2VwdGlvbkJhc2UqIGV4Y2VwdGlvbkJhc2UgPSB0b0V4
Y2VwdGlvbkJhc2UoZXhjZXB0aW9uKSkKKyAgICAgICAgZXJyb3JNZXNzYWdlID0gZXhjZXB0aW9u
QmFzZS0+bWVzc2FnZSgpICsgIjogIiAgKyBleGNlcHRpb25CYXNlLT5kZXNjcmlwdGlvbigpOwor
CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHN0
YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4Y2VwdGlvbkJhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFeGNlcHRpb25CYXNlLmNwcAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFeGNlcHRpb25CYXNlLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorLyoNCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQorICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMN
CisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyDQorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0KKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCisg
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUNCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4NCisgKg0KKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljDQorICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCisgKiAgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAg
MDIxMTAtMTMwMSAgVVNBDQorICovDQorIA0KKyNpbmNsdWRlICJjb25maWcuaCINCisjaW5jbHVk
ZSAiSlNFeGNlcHRpb25CYXNlLmgiDQorDQorI2luY2x1ZGUgIkpTRE9NQ29yZUV4Y2VwdGlvbi5o
Ig0KKyNpbmNsdWRlICJKU0V2ZW50RXhjZXB0aW9uLmgiDQorI2luY2x1ZGUgIkpTUmFuZ2VFeGNl
cHRpb24uaCINCisjaW5jbHVkZSAiSlNYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5oIg0KKyNpZiBF
TkFCTEUoU1ZHKQ0KKyNpbmNsdWRlICJKU1NWR0V4Y2VwdGlvbi5oIg0KKyNlbmRpZg0KKyNpZiBF
TkFCTEUoWFBBVEgpDQorI2luY2x1ZGUgIkpTWFBhdGhFeGNlcHRpb24uaCINCisjZW5kaWYNCisg
DQorbmFtZXNwYWNlIFdlYkNvcmUgew0KKyANCitFeGNlcHRpb25CYXNlKiB0b0V4Y2VwdGlvbkJh
c2UoSlNDOjpKU1ZhbHVlIHZhbHVlKQ0KK3sNCisgICAgaWYgKERPTUNvcmVFeGNlcHRpb24qIGRv
bUV4Y2VwdGlvbiA9IHRvRE9NQ29yZUV4Y2VwdGlvbih2YWx1ZSkpDQorICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb25CYXNlKj4oZG9tRXhjZXB0aW9uKTsNCisgICAgZWxz
ZSBpZiAoUmFuZ2VFeGNlcHRpb24qIHJhbmdlRXhjZXB0aW9uID0gdG9SYW5nZUV4Y2VwdGlvbih2
YWx1ZSkpDQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb25CYXNlKj4o
cmFuZ2VFeGNlcHRpb24pOw0KKyAgICBlbHNlIGlmIChFdmVudEV4Y2VwdGlvbiogZXZlbnRFeGNl
cHRpb24gPSB0b0V2ZW50RXhjZXB0aW9uKHZhbHVlKSkNCisgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PEV4Y2VwdGlvbkJhc2UqPihldmVudEV4Y2VwdGlvbik7DQorICAgIGVsc2UgaWYg
KFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uKiB4bWxIdHRwRXhjZXB0aW9uID0gdG9YTUxIdHRwUmVx
dWVzdEV4Y2VwdGlvbih2YWx1ZSkpDQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxF
eGNlcHRpb25CYXNlKj4oeG1sSHR0cEV4Y2VwdGlvbik7DQorI2lmIEVOQUJMRShTVkcpDQorICAg
IGVsc2UgaWYgKFNWR0V4Y2VwdGlvbiogc3ZnRXhjZXB0aW9uID0gdG9TVkdFeGNlcHRpb24odmFs
dWUpKQ0KKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uQmFzZSo+KHN2
Z0V4Y2VwdGlvbik7DQorI2VuZGlmDQorI2lmIEVOQUJMRShYUEFUSCkNCisgICAgZWxzZSBpZiAo
WFBhdGhFeGNlcHRpb24qIHBhdGhFeGNlcHRpb24gPSB0b1hQYXRoRXhjZXB0aW9uKHZhbHVlKSkN
CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbkJhc2UqPihwYXRoRXhj
ZXB0aW9uKTsNCisjZW5kaWYNCisgICAgDQorICAgIHJldHVybiAwOw0KK30NCisNCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlDQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4Y2VwdGlvbkJh
c2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhjZXB0aW9uQmFzZS5o
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4Y2VwdGlvbkJhc2UuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAorLyoNCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQorICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMN
CisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyDQorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0KKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCisg
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUNCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4NCisgKg0KKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljDQorICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCisgKiAgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAg
MDIxMTAtMTMwMSAgVVNBDQorICovDQorIA0KKyNpZm5kZWYgSlNFeGNlcHRpb25CYXNlX2gNCisj
ZGVmaW5lIEpTRXhjZXB0aW9uQmFzZV9oDQorDQorI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuaCIN
CisNCituYW1lc3BhY2UgV2ViQ29yZSB7DQorDQorRXhjZXB0aW9uQmFzZSogdG9FeGNlcHRpb25C
YXNlKEpTQzo6SlNWYWx1ZSk7DQorDQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQ0KKw0KKyNlbmRp
ZiAvLyBKU0V4Y2VwdGlvbkJhc2VfaA0KSW5kZXg6IFdlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2UuY3BwCShyZXZpc2lv
biA0OTY2NykKKysrIFdlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEV4Y2VwdGlvbkJhc2U6OkV4
Y2VwdGlvbkJhc2UoY29uc3QgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikK
ICAgICA6IG1fY29kZShkZXNjcmlwdGlvbi5jb2RlKQogICAgICwgbV9uYW1lKGRlc2NyaXB0aW9u
Lm5hbWUpCisgICAgLCBtX2Rlc2NyaXB0aW9uKGRlc2NyaXB0aW9uLmRlc2NyaXB0aW9uKQogewog
ICAgIGlmIChkZXNjcmlwdGlvbi5uYW1lKQogICAgICAgICBtX21lc3NhZ2UgPSBTdHJpbmc6OmZv
cm1hdCgiJXM6ICVzIEV4Y2VwdGlvbiAlZCIsIGRlc2NyaXB0aW9uLm5hbWUsIGRlc2NyaXB0aW9u
LnR5cGVOYW1lLCBkZXNjcmlwdGlvbi5jb2RlKTsKSW5kZXg6IFdlYkNvcmUvZG9tL0V4Y2VwdGlv
bkJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FeGNlcHRpb25CYXNlLmgJKHJldmlz
aW9uIDQ5NjY3KQorKysgV2ViQ29yZS9kb20vRXhjZXB0aW9uQmFzZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdW5zaWduZWQg
c2hvcnQgY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQogICAgICAgICBTdHJpbmcgbmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgICAgICBTdHJpbmcgbWVzc2FnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQorICAgICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBj
b25zdCB7IHJldHVybiBtX2Rlc2NyaXB0aW9uOyB9CiAKICAgICAgICAgU3RyaW5nIHRvU3RyaW5n
KCkgY29uc3Q7CiAKQEAgLTUwLDYgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBtX2NvZGU7CiAgICAgICAgIFN0cmluZyBtX25hbWU7CiAgICAgICAg
IFN0cmluZyBtX21lc3NhZ2U7CisgICAgICAgIFN0cmluZyBtX2Rlc2NyaXB0aW9uOwogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0V4Y2VwdGlvbkNv
ZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuY3BwCShyZXZp
c2lvbiA0OTY2NykKKysrIFdlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NSwyNSArNjUsNzAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGV4Y2VwdGlv
bk5hbWVzWwogICAgICJRVU9UQV9FWENFRURFRF9FUlIiCiB9OwogCitzdGF0aWMgY29uc3QgY2hh
ciogY29uc3QgZXhjZXB0aW9uRGVzY3JpcHRpb25zW10gPSB7CisgICAgImluZGV4IG9yIHNpemUg
d2FzIG5lZ2F0aXZlLCBvciBncmVhdGVyIHRoYW4gdGhlIGFsbG93ZWQgdmFsdWUiLAorICAgICJ0
aGUgc3BlY2lmaWVkIHJhbmdlIG9mIHRleHQgZGlkIG5vdCBmaXQgaW50byBhIERPTVN0cmluZyIs
CisgICAgImFueSBOb2RlIHdhcyBpbnNlcnRlZCBzb21ld2hlcmUgaXQgZG9lc24ndCBiZWxvbmcu
IiwKKyAgICAiYSBOb2RlIHdhcyB1c2VkIGluIGEgZGlmZmVyZW50IGRvY3VtZW50IHRoYW4gdGhl
IG9uZSB0aGF0IGNyZWF0ZWQgaXQgKHRoYXQgZG9lc24ndCBzdXBwb3J0IGl0KSIsCisgICAgImFu
IGludmFsaWQgb3IgaWxsZWdhbCBjaGFyYWN0ZXIgd2FzIHNwZWNpZmllZCwgc3VjaCBhcyBpbiBh
biBYTUwgbmFtZSIsCisgICAgImRhdGEgd2FzIHNwZWNpZmllZCBmb3IgYSBOb2RlIHdoaWNoIGRv
ZXMgbm90IHN1cHBvcnQgZGF0YSIsCisgICAgImFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gbW9kaWZ5
IGFuIG9iamVjdCB3aGVyZSBtb2RpZmljYXRpb25zIGFyZSBub3QgYWxsb3dlZCIsCisgICAgImFu
IGF0dGVtcHQgd2FzIG1hZGUgdG8gcmVmZXJlbmNlIGEgTm9kZSBpbiBhIGNvbnRleHQgd2hlcmUg
aXQgZG9lcyBub3QgZXhpc3QiLAorICAgICJ0aGUgaW1wbGVtZW50YXRpb24gZGlkIG5vdCBzdXBw
b3J0IHRoZSByZXF1ZXN0ZWQgdHlwZSBvZiBvYmplY3Qgb3Igb3BlcmF0aW9uIiwKKyAgICAiYW4g
YXR0ZW1wdCB3YXMgbWFkZSB0byBhZGQgYW4gYXR0cmlidXRlIHRoYXQgaXMgYWxyZWFkeSBpbiB1
c2UgZWxzZXdoZXJlIiwKKyAgICAiYW4gYXR0ZW1wdCB3YXMgbWFkZSB0byB1c2UgYW4gb2JqZWN0
IHRoYXQgaXMgbm90LCBvciBpcyBubyBsb25nZXIsIHVzYWJsZSIsCisgICAgImFuIGludmFsaWQg
b3IgaWxsZWdhbCBzdHJpbmcgd2FzIHNwZWNpZmllZCIsCisgICAgImFuIGF0dGVtcHQgd2FzIG1h
ZGUgdG8gbW9kaWZ5IHRoZSB0eXBlIG9mIHRoZSB1bmRlcmx5aW5nIG9iamVjdCIsCisgICAgImFu
IGF0dGVtcHQgd2FzIG1hZGUgdG8gY3JlYXRlIG9yIGNoYW5nZSBhbiBvYmplY3QgaW4gYSB3YXkg
d2hpY2ggaXMgaW5jb3JyZWN0IHdpdGggcmVnYXJkIHRvIG5hbWVzcGFjZXMiLAorICAgICJhIHBh
cmFtZXRlciBvciBhbiBvcGVyYXRpb24gd2FzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHVuZGVybHlp
bmcgb2JqZWN0IiwKKyAgICAiYSBjYWxsIHRvIGEgbWV0aG9kIHN1Y2ggYXMgaW5zZXJ0QmVmb3Jl
IG9yIHJlbW92ZUNoaWxkIHdvdWxkIG1ha2UgdGhlIE5vZGUgaW52YWxpZCB3aXRoIHJlc3BlY3Qg
dG8gXCJwYXJ0aWFsIHZhbGlkaXR5XCIsIHRoaXMgZXhjZXB0aW9uIHdvdWxkIGJlIHJhaXNlZCBh
bmQgdGhlIG9wZXJhdGlvbiB3b3VsZCBub3QgYmUgZG9uZSIsCisgICAgInRoZSB0eXBlIG9mIGFu
IG9iamVjdCB3YXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIGV4cGVjdGVkIHR5cGUgb2YgdGhlIHBh
cmFtZXRlciBhc3NvY2lhdGVkIHRvIHRoZSBvYmplY3QiLAorICAgICJhbiBhdHRlbXB0IHdhcyBt
YWRlIHRvIGJyZWFrIHRocm91Z2ggdGhlIHNlY3VyaXR5IHBvbGljeSBvZiB0aGUgdXNlciBhZ2Vu
dCIsCisgICAgLy8gRklYTUU6IENvdWxkbid0IGZpbmQgYSBkZXNjcmlwdGlvbiBpbiB0aGUgSFRN
TC9ET00gc3BlY2lmaWNhdGlvbnMgZm9yIE5FVFdPUktfRVJSLCBBQk9SVF9FUlIsIFVSTF9NSVNN
QVRDSF9FUlIsIGFuZCBRVU9UQV9FWENFRURFRF9FUlIKKyAgICAiYSBuZXR3b3JrIGVycm9yIG9j
Y3VyZWQiLAorICAgICJ0aGUgdXNlciBhYm9ydGVkIGEgcmVxdWVzdCIsCisgICAgImEgd29ya2Vy
IGdsb2JhbCBzY29wZSByZXByZXNlbnRlZCBhbiBhYnNvbHV0ZSBVUkwgdGhhdCBpcyBub3QgZXF1
YWwgdG8gdGhlIHJlc3VsdGluZyBhYnNvbHV0ZSBVUkwiLAorICAgICJhbiBhdHRlbXB0IHdhcyBt
YWRlIHRvIGFkZCBzb21ldGhpbmcgdG8gc3RvcmFnZSB0aGF0IGV4Y2VlZGVkIHRoZSBxdW90YSIK
K307CisKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCByYW5nZUV4Y2VwdGlvbk5hbWVzW10gPSB7
CiAgICAgIkJBRF9CT1VOREFSWVBPSU5UU19FUlIiLAogICAgICJJTlZBTElEX05PREVfVFlQRV9F
UlIiCiB9OwogCitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgcmFuZ2VFeGNlcHRpb25EZXNjcmlw
dGlvbnNbXSA9IHsKKyAgICAidGhlIGJvdW5kYXJ5LXBvaW50cyBvZiBhIFJhbmdlIGRpZCBub3Qg
bWVldCBzcGVjaWZpYyByZXF1aXJlbWVudHMiLAorICAgICJ0aGUgY29udGFpbmVyIG9mIGFuIGJv
dW5kYXJ5LXBvaW50IG9mIGEgUmFuZ2Ugd2FzIGJlaW5nIHNldCB0byBlaXRoZXIgYSBub2RlIG9m
IGFuIGludmFsaWQgdHlwZSBvciBhIG5vZGUgd2l0aCBhbiBhbmNlc3RvciBvZiBhbiBpbnZhbGlk
IHR5cGUiCit9OworCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZXZlbnRFeGNlcHRpb25OYW1l
c1tdID0gewogICAgICJVTlNQRUNJRklFRF9FVkVOVF9UWVBFX0VSUiIKIH07CiAKK3N0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBldmVudEV4Y2VwdGlvbkRlc2NyaXB0aW9uc1tdID0geworICAgICJ0
aGUgRXZlbnQncyB0eXBlIHdhcyBub3Qgc3BlY2lmaWVkIGJ5IGluaXRpYWxpemluZyB0aGUgZXZl
bnQgYmVmb3JlIHRoZSBtZXRob2Qgd2FzIGNhbGxlZCIKK307CisKIHN0YXRpYyBjb25zdCBjaGFy
KiBjb25zdCB4bWxIdHRwUmVxdWVzdEV4Y2VwdGlvbk5hbWVzW10gPSB7CiAgICAgIk5FVFdPUktf
RVJSIiwKICAgICAiQUJPUlRfRVJSIgogfTsKIAorc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHht
bEh0dHBSZXF1ZXN0RXhjZXB0aW9uRGVzY3JpcHRpb25zW10gPSB7CisgICAgImEgbmV0d29yayBl
cnJvciBvY2N1cmVkIGluIHN5bmNocm9ub3VzIHJlcXVlc3RzIiwKKyAgICAidGhlIHVzZXIgYWJv
cnRlZCBhIHJlcXVlc3QgaW4gc3luY2hyb25vdXMgcmVxdWVzdHMiCit9OworCiAjaWYgRU5BQkxF
KFhQQVRIKQogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHhwYXRoRXhjZXB0aW9uTmFtZXNbXSA9
IHsKICAgICAiSU5WQUxJRF9FWFBSRVNTSU9OX0VSUiIsCiAgICAgIlRZUEVfRVJSIgogfTsKKwor
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHhwYXRoRXhjZXB0aW9uRGVzY3JpcHRpb25zW10gPSB7
CisgICAgInRoZSBleHByZXNzaW9uIGhhZCBhIHN5bnRheCBlcnJvciBvciBvdGhlcndpc2UgaXMg
bm90IGEgbGVnYWwgZXhwcmVzc2lvbiBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIG9mIHRoZSBzcGVj
aWZpYyBYUGF0aEV2YWx1YXRvciIsCisgICAgInRoZSBleHByZXNzaW9uIGNvdWxkIG5vdCBiZSBj
b252ZXJ0ZWQgdG8gcmV0dXJuIHRoZSBzcGVjaWZpZWQgdHlwZSIKK307CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShTVkcpCkBAIC05Miw2ICsxMzcsMTIgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0
IHN2Z0V4Y2VwdGlvbk5hbQogICAgICJTVkdfSU5WQUxJRF9WQUxVRV9FUlIiLAogICAgICJTVkdf
TUFUUklYX05PVF9JTlZFUlRBQkxFIgogfTsKKworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHN2
Z0V4Y2VwdGlvbkRlc2NyaXB0aW9uc1tdID0geworICAgICJhbiBvYmplY3Qgb2YgdGhlIHdyb25n
IHR5cGUgd2FzIHBhc3NlZCB0byBhbiBvcGVyYXRpb24iLAorICAgICJhbiBpbnZhbGlkIHZhbHVl
IHdhcyBwYXNzZWQgdG8gYW4gb3BlcmF0aW9uIG9yIGFzc2lnbmVkIHRvIGFuIGF0dHJpYnV0ZSIs
CisgICAgImFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gaW52ZXJ0IGEgbWF0cml4IHRoYXQgaXMgbm90
IGludmVydGlibGUiCit9OwogI2VuZGlmCiAKIHZvaWQgZ2V0RXhjZXB0aW9uQ29kZURlc2NyaXB0
aW9uKEV4Y2VwdGlvbkNvZGUgZWMsIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24pCkBAIC0xMDEsNiArMTUyLDcgQEAgdm9pZCBnZXRFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24o
RXhjZXB0aQogICAgIGNvbnN0IGNoYXIqIHR5cGVOYW1lOwogICAgIGludCBjb2RlID0gZWM7CiAg
ICAgY29uc3QgY2hhciogY29uc3QqIG5hbWVUYWJsZTsKKyAgICBjb25zdCBjaGFyKiBjb25zdCog
ZGVzY3JpcHRpb25UYWJsZTsKICAgICBpbnQgbmFtZVRhYmxlU2l6ZTsKICAgICBpbnQgbmFtZVRh
YmxlT2Zmc2V0OwogICAgIEV4Y2VwdGlvblR5cGUgdHlwZTsKQEAgLTExMCw2ICsxNjIsNyBAQCB2
b2lkIGdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihFeGNlcHRpCiAgICAgICAgIHR5cGVOYW1l
ID0gIkRPTSBSYW5nZSI7CiAgICAgICAgIGNvZGUgLT0gUmFuZ2VFeGNlcHRpb246OlJhbmdlRXhj
ZXB0aW9uT2Zmc2V0OwogICAgICAgICBuYW1lVGFibGUgPSByYW5nZUV4Y2VwdGlvbk5hbWVzOwor
ICAgICAgICBkZXNjcmlwdGlvblRhYmxlID0gcmFuZ2VFeGNlcHRpb25EZXNjcmlwdGlvbnM7CiAg
ICAgICAgIG5hbWVUYWJsZVNpemUgPSBzaXplb2YocmFuZ2VFeGNlcHRpb25OYW1lcykgLyBzaXpl
b2YocmFuZ2VFeGNlcHRpb25OYW1lc1swXSk7CiAgICAgICAgIG5hbWVUYWJsZU9mZnNldCA9IFJh
bmdlRXhjZXB0aW9uOjpCQURfQk9VTkRBUllQT0lOVFNfRVJSOwogICAgIH0gZWxzZSBpZiAoY29k
ZSA+PSBFdmVudEV4Y2VwdGlvbjo6RXZlbnRFeGNlcHRpb25PZmZzZXQgJiYgY29kZSA8PSBFdmVu
dEV4Y2VwdGlvbjo6RXZlbnRFeGNlcHRpb25NYXgpIHsKQEAgLTExNyw2ICsxNzAsNyBAQCB2b2lk
IGdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihFeGNlcHRpCiAgICAgICAgIHR5cGVOYW1lID0g
IkRPTSBFdmVudHMiOwogICAgICAgICBjb2RlIC09IEV2ZW50RXhjZXB0aW9uOjpFdmVudEV4Y2Vw
dGlvbk9mZnNldDsKICAgICAgICAgbmFtZVRhYmxlID0gZXZlbnRFeGNlcHRpb25OYW1lczsKKyAg
ICAgICAgZGVzY3JpcHRpb25UYWJsZSA9IGV2ZW50RXhjZXB0aW9uRGVzY3JpcHRpb25zOwogICAg
ICAgICBuYW1lVGFibGVTaXplID0gc2l6ZW9mKGV2ZW50RXhjZXB0aW9uTmFtZXMpIC8gc2l6ZW9m
KGV2ZW50RXhjZXB0aW9uTmFtZXNbMF0pOwogICAgICAgICBuYW1lVGFibGVPZmZzZXQgPSBFdmVu
dEV4Y2VwdGlvbjo6VU5TUEVDSUZJRURfRVZFTlRfVFlQRV9FUlI7CiAgICAgfSBlbHNlIGlmIChj
b2RlID49IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uOjpYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbk9m
ZnNldCAmJiBjb2RlIDw9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uOjpYTUxIdHRwUmVxdWVzdEV4
Y2VwdGlvbk1heCkgewpAQCAtMTI0LDYgKzE3OCw3IEBAIHZvaWQgZ2V0RXhjZXB0aW9uQ29kZURl
c2NyaXB0aW9uKEV4Y2VwdGkKICAgICAgICAgdHlwZU5hbWUgPSAiWE1MSHR0cFJlcXVlc3QiOwog
ICAgICAgICBjb2RlIC09IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uOjpYTUxIdHRwUmVxdWVzdEV4
Y2VwdGlvbk9mZnNldDsKICAgICAgICAgbmFtZVRhYmxlID0geG1sSHR0cFJlcXVlc3RFeGNlcHRp
b25OYW1lczsKKyAgICAgICAgZGVzY3JpcHRpb25UYWJsZSA9IHhtbEh0dHBSZXF1ZXN0RXhjZXB0
aW9uRGVzY3JpcHRpb25zOwogICAgICAgICBuYW1lVGFibGVTaXplID0gc2l6ZW9mKHhtbEh0dHBS
ZXF1ZXN0RXhjZXB0aW9uTmFtZXMpIC8gc2l6ZW9mKHhtbEh0dHBSZXF1ZXN0RXhjZXB0aW9uTmFt
ZXNbMF0pOwogICAgICAgICAvLyBYTUxIdHRwUmVxdWVzdCBleGNlcHRpb24gY29kZXMgc3RhcnQg
d2l0aCAxMDEgYW5kIHdlIGRvbid0IHdhbnQgMTAwIGVtcHR5IGVsZW1lbnRzIGluIHRoZSBuYW1l
IGFycmF5CiAgICAgICAgIG5hbWVUYWJsZU9mZnNldCA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9u
OjpORVRXT1JLX0VSUjsKQEAgLTEzMyw2ICsxODgsNyBAQCB2b2lkIGdldEV4Y2VwdGlvbkNvZGVE
ZXNjcmlwdGlvbihFeGNlcHRpCiAgICAgICAgIHR5cGVOYW1lID0gIkRPTSBYUGF0aCI7CiAgICAg
ICAgIGNvZGUgLT0gWFBhdGhFeGNlcHRpb246OlhQYXRoRXhjZXB0aW9uT2Zmc2V0OwogICAgICAg
ICBuYW1lVGFibGUgPSB4cGF0aEV4Y2VwdGlvbk5hbWVzOworICAgICAgICBkZXNjcmlwdGlvblRh
YmxlID0geHBhdGhFeGNlcHRpb25EZXNjcmlwdGlvbnM7CiAgICAgICAgIG5hbWVUYWJsZVNpemUg
PSBzaXplb2YoeHBhdGhFeGNlcHRpb25OYW1lcykgLyBzaXplb2YoeHBhdGhFeGNlcHRpb25OYW1l
c1swXSk7CiAgICAgICAgIC8vIFhQYXRoIGV4Y2VwdGlvbiBjb2RlcyBzdGFydCB3aXRoIDUxIGFu
ZCB3ZSBkb24ndCB3YW50IDUxIGVtcHR5IGVsZW1lbnRzIGluIHRoZSBuYW1lIGFycmF5CiAgICAg
ICAgIG5hbWVUYWJsZU9mZnNldCA9IFhQYXRoRXhjZXB0aW9uOjpJTlZBTElEX0VYUFJFU1NJT05f
RVJSOwpAQCAtMTQzLDYgKzE5OSw3IEBAIHZvaWQgZ2V0RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9u
KEV4Y2VwdGkKICAgICAgICAgdHlwZU5hbWUgPSAiRE9NIFNWRyI7CiAgICAgICAgIGNvZGUgLT0g
U1ZHRXhjZXB0aW9uOjpTVkdFeGNlcHRpb25PZmZzZXQ7CiAgICAgICAgIG5hbWVUYWJsZSA9IHN2
Z0V4Y2VwdGlvbk5hbWVzOworICAgICAgICBkZXNjcmlwdGlvblRhYmxlID0gc3ZnRXhjZXB0aW9u
RGVzY3JpcHRpb25zOwogICAgICAgICBuYW1lVGFibGVTaXplID0gc2l6ZW9mKHN2Z0V4Y2VwdGlv
bk5hbWVzKSAvIHNpemVvZihzdmdFeGNlcHRpb25OYW1lc1swXSk7CiAgICAgICAgIG5hbWVUYWJs
ZU9mZnNldCA9IFNWR0V4Y2VwdGlvbjo6U1ZHX1dST05HX1RZUEVfRVJSOwogI2VuZGlmCkBAIC0x
NTAsMTcgKzIwNywyMCBAQCB2b2lkIGdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihFeGNlcHRp
CiAgICAgICAgIHR5cGUgPSBET01FeGNlcHRpb25UeXBlOwogICAgICAgICB0eXBlTmFtZSA9ICJE
T00iOwogICAgICAgICBuYW1lVGFibGUgPSBleGNlcHRpb25OYW1lczsKKyAgICAgICAgZGVzY3Jp
cHRpb25UYWJsZSA9IGV4Y2VwdGlvbkRlc2NyaXB0aW9uczsKICAgICAgICAgbmFtZVRhYmxlU2l6
ZSA9IHNpemVvZihleGNlcHRpb25OYW1lcykgLyBzaXplb2YoZXhjZXB0aW9uTmFtZXNbMF0pOwog
ICAgICAgICBuYW1lVGFibGVPZmZzZXQgPSBJTkRFWF9TSVpFX0VSUjsKICAgICB9CiAKICAgICBk
ZXNjcmlwdGlvbi50eXBlTmFtZSA9IHR5cGVOYW1lOwogICAgIGRlc2NyaXB0aW9uLm5hbWUgPSAo
ZWMgPj0gbmFtZVRhYmxlT2Zmc2V0ICYmIGVjIC0gbmFtZVRhYmxlT2Zmc2V0IDwgbmFtZVRhYmxl
U2l6ZSkgPyBuYW1lVGFibGVbZWMgLSBuYW1lVGFibGVPZmZzZXRdIDogMDsKKyAgICBkZXNjcmlw
dGlvbi5kZXNjcmlwdGlvbiA9IChlYyA+PSBuYW1lVGFibGVPZmZzZXQgJiYgZWMgLSBuYW1lVGFi
bGVPZmZzZXQgPCBuYW1lVGFibGVTaXplKSA/IGRlc2NyaXB0aW9uVGFibGVbZWMgLSBuYW1lVGFi
bGVPZmZzZXRdIDogMDsKICAgICBkZXNjcmlwdGlvbi5jb2RlID0gY29kZTsKICAgICBkZXNjcmlw
dGlvbi50eXBlID0gdHlwZTsKIAogICAgIC8vIEFsbCBleGNlcHRpb25zIHVzZWQgaW4gdGhlIERP
TSBjb2RlIHNob3VsZCBoYXZlIG5hbWVzLgogICAgIEFTU0VSVChkZXNjcmlwdGlvbi5uYW1lKTsK
KyAgICBBU1NFUlQoZGVzY3JpcHRpb24uZGVzY3JpcHRpb24pOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5oCShyZXZpc2lvbiA0OTY2NykKKysrIFdlYkNv
cmUvZG9tL0V4Y2VwdGlvbkNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgc3RydWN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiB7
CiAgICAgICAgIGNvbnN0IGNoYXIqIHR5cGVOYW1lOyAvLyBoYXMgc3BhY2VzIGFuZCBpcyBzdWl0
YWJsZSBmb3IgdXNlIGluIGV4Y2VwdGlvbiBkZXNjcmlwdGlvbiBzdHJpbmdzOyBtYXhpbXVtIGxl
bmd0aCBpcyAxMCBjaGFyYWN0ZXJzCiAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWU7IC8vIGV4Y2Vw
dGlvbiBuYW1lLCBhbHNvIGludGVuZGVkIGZvciB1c2UgaW4gZXhjZXB0aW9uIGRlc2NyaXB0aW9u
IHN0cmluZ3M7IDAgaWYgbmFtZSBub3Qga25vd247IG1heGltdW0gbGVuZ3RoIGlzIDI3IGNoYXJh
Y3RlcnMKKyAgICAgICAgY29uc3QgY2hhciogZGVzY3JpcHRpb247IC8vIGV4Y2VwdGlvbiBkZXNj
cmlwdGlvbiwgaW50ZW5kZWQgZm9yIHVzZSBpbiBleGNlcHRpb24gc3RyaW5nczsgbW9yZSByZWFk
YWJsZSBleHBsYW5hdGlvbiBvZiBlcnJvcgogICAgICAgICBpbnQgY29kZTsgLy8gbnVtZXJpYyB2
YWx1ZSBvZiB0aGUgZXhjZXB0aW9uIHdpdGhpbiBhIHBhcnRpY3VsYXIgdHlwZQogICAgICAgICBF
eGNlcHRpb25UeXBlIHR5cGU7CiAgICAgfTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ5NzAxKQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MDktMTAtMTYgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVzIHBhcnQgb2Yg
PGh0dHA6Ly93ZWJraXQub3JnL2IvMzA0MTI+LgorICAgICAgICBXZWIgSW5zcGVjdG9yIHNob3Vs
ZCBnZXQgaHVtYW4gcmVhZGFibGUgRE9NIEV4Y2VwdGlvbnMuCisgICAgICAgIAorICAgICAgICBB
ZGRzIHRlc3RzIGZvciBvdXRwdXQgb2YgdW5jYXVnaHQgZXhjZXB0aW9ucyB0byB0aGUgV2ViIElu
c3BlY3RvcgorICAgICAgICBDb25zb2xlLiBUZXN0cyBET00gZXhjZXB0aW9ucyAxLCAzLCBhbmQg
OCAoSU5ERVhfU0laRV9FUlIsIE5PVF9GT1VORF9FUlIsIGFuZAorICAgICAgICBISUVSQVJDSFlf
UkVRVUVTVF9FUlIpLgorCisgICAgICAgICogaW5zcGVjdG9yL3VuY2F1Z2h0LWRvbTEtZXhjZXB0
aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3VuY2F1Z2h0LWRv
bTEtZXhjZXB0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci91bmNhdWdodC1k
b20zLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci91
bmNhdWdodC1kb20zLWV4Y2VwdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
dW5jYXVnaHQtZG9tOC1leGNlcHRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvdW5jYXVnaHQtZG9tOC1leGNlcHRpb24uaHRtbDogQWRkZWQuCisKIDIwMDktMTAt
MTYgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuY2F1Z2h0LWRv
bTEtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdW5jYXVnaHQtZG9tMS1leGNlcHRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuY2F1Z2h0LWRvbTEtZXhjZXB0aW9uLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MTk6IElOREVYX1NJWkVfRVJSOiBET00gRXhjZXB0aW9uIDE6IGluZGV4IG9yIHNpemUgd2FzIG5l
Z2F0aXZlLCBvciBncmVhdGVyIHRoYW4gdGhlIGFsbG93ZWQgdmFsdWUKK0FMRVJUOiBFeGNlcHRp
b24gdGltZW91dCBleGNlZWRlZC4KK1RoaXMgdGVzdHMgdGhhdCB3ZSBhcmUgZ2V0dGluZyB0aGUg
Y29ycmVjdCBtZXNzYWdlIGZvciBET00gRXhjZXB0aW9uIDE6IElOREVYX1NJWkVfRVJSLgorCisK
SW5kZXg6IExheW91dFRlc3RzL2luc3BlY3Rvci91bmNhdWdodC1kb20xLWV4Y2VwdGlvbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2luc3BlY3Rvci91bmNhdWdodC1kb20xLWV4Y2Vw
dGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuY2F1Z2h0
LWRvbTEtZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcgQEAKKzxodG1s
Pg0KKzxoZWFkPg0KKzxzY3JpcHQgc3JjPSJldmFsdWF0ZS1pbi1mcm9udGVuZC5qcyI+PC9zY3Jp
cHQ+DQorPHNjcmlwdD4NCisNCitmdW5jdGlvbiBkb2l0KCkNCit7DQorICAgIC8vIFNpbmNlIHRo
ZSBleGNlcHRpb24gd2lsbCBraWxsIGV4ZWN1dGlvbiwgbWFrZSBhIHNob3J0IHRpbWVvdXQuDQor
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQorICAgICAgICBhbGVydCgiRXhjZXB0aW9uIHRp
bWVvdXQgZXhjZWVkZWQuIikNCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsNCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbG9zZVdlYkluc3BlY3Rv
cigpOw0KKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsNCisg
ICAgICAgIH0NCisgICAgfSwgNTAwKTsNCisNCisgICAgdmFyIHAgPSBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgpOw0KKyAgICBwLnRleHRDb250ZW50ID0gImZvbyI7DQorICAgIHAuc3BsaXRUZXh0
KDEwMDAwKTsNCit9DQorDQorPC9zY3JpcHQ+DQorPC9oZWFkPg0KKw0KKzxib2R5IG9ubG9hZD0i
b25sb2FkKCkiPg0KKzxwPg0KK1RoaXMgdGVzdHMgdGhhdCB3ZSBhcmUgZ2V0dGluZyB0aGUgY29y
cmVjdCBtZXNzYWdlIGZvciBET00gRXhjZXB0aW9uIDE6IElOREVYX1NJWkVfRVJSLg0KKzwvcD4N
CisNCis8ZGl2IGlkPSJmcm9udGVuZC1zY3JpcHQiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPg0KKzwv
ZGl2Pg0KKw0KKzxkaXYgaWQ9Im91dHB1dCI+DQorPC9kaXY+DQorDQorPC9ib2R5Pg0KKzwvaHRt
bD4NCkluZGV4OiBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5jYXVnaHQtZG9tMy1leGNlcHRpb24t
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2luc3BlY3Rvci91bmNhdWdo
dC1kb20zLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9pbnNwZWN0b3IvdW5jYXVnaHQtZG9tMy1leGNlcHRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDUgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNzogSElFUkFSQ0hZ
X1JFUVVFU1RfRVJSOiBET00gRXhjZXB0aW9uIDM6IGFueSBOb2RlIHdhcyBpbnNlcnRlZCBzb21l
d2hlcmUgaXQgZG9lc24ndCBiZWxvbmcuCitBTEVSVDogRXhjZXB0aW9uIHRpbWVvdXQgZXhjZWVk
ZWQuCitUaGlzIHRlc3RzIHRoYXQgd2UgYXJlIGdldHRpbmcgdGhlIGNvcnJlY3QgbWVzc2FnZSBm
b3IgRE9NIEV4Y2VwdGlvbiAzOiBISUVSQVJDSFlfUkVRVUVTVF9FUlIuCisKKwpJbmRleDogTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3VuY2F1Z2h0LWRvbTMtZXhjZXB0aW9uLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuY2F1Z2h0LWRvbTMtZXhjZXB0aW9uLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5jYXVnaHQtZG9tMy1leGNl
cHRpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorPGh0bWw+DQorPGhlYWQ+
DQorPHNjcmlwdCBzcmM9ImV2YWx1YXRlLWluLWZyb250ZW5kLmpzIj48L3NjcmlwdD4NCis8c2Ny
aXB0Pg0KKw0KK2Z1bmN0aW9uIGRvaXQoKQ0KK3sNCisgICAgLy8gU2luY2UgdGhlIGV4Y2VwdGlv
biB3aWxsIGtpbGwgZXhlY3V0aW9uLCBtYWtlIGEgc2hvcnQgdGltZW91dC4NCisgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsNCisgICAgICAgIGFsZXJ0KCJFeGNlcHRpb24gdGltZW91dCBleGNl
ZWRlZC4iKQ0KKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgew0KKyAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7DQorICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOw0KKyAgICAgICAgfQ0K
KyAgICB9LCA1MDApOw0KKw0KKyAgICBkb2N1bWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCkpOw0KK30NCisNCis8L3NjcmlwdD4NCis8L2hlYWQ+DQorDQorPGJvZHkgb25s
b2FkPSJvbmxvYWQoKSI+DQorPHA+DQorVGhpcyB0ZXN0cyB0aGF0IHdlIGFyZSBnZXR0aW5nIHRo
ZSBjb3JyZWN0IG1lc3NhZ2UgZm9yIERPTSBFeGNlcHRpb24gMzogSElFUkFSQ0hZX1JFUVVFU1Rf
RVJSLg0KKzwvcD4NCisNCis8ZGl2IGlkPSJmcm9udGVuZC1zY3JpcHQiIHN0eWxlPSJkaXNwbGF5
Om5vbmUiPg0KKzwvZGl2Pg0KKw0KKzxkaXYgaWQ9Im91dHB1dCI+DQorPC9kaXY+DQorDQorPC9i
b2R5Pg0KKzwvaHRtbD4NCkluZGV4OiBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5jYXVnaHQtZG9t
OC1leGNlcHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2luc3Bl
Y3Rvci91bmNhdWdodC1kb204LWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5jYXVnaHQtZG9tOC1leGNlcHRpb24tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAx
NzogTk9UX0ZPVU5EX0VSUjogRE9NIEV4Y2VwdGlvbiA4OiBhbiBhdHRlbXB0IHdhcyBtYWRlIHRv
IHJlZmVyZW5jZSBhIE5vZGUgaW4gYSBjb250ZXh0IHdoZXJlIGl0IGRvZXMgbm90IGV4aXN0CitB
TEVSVDogRXhjZXB0aW9uIHRpbWVvdXQgZXhjZWVkZWQuCitUaGlzIHRlc3RzIHRoYXQgd2UgYXJl
IGdldHRpbmcgdGhlIGNvcnJlY3QgbWVzc2FnZSBmb3IgRE9NIEV4Y2VwdGlvbiA4OiBOT1RfRk9V
TkRfRVJSLgorCisKSW5kZXg6IExheW91dFRlc3RzL2luc3BlY3Rvci91bmNhdWdodC1kb204LWV4
Y2VwdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2luc3BlY3Rvci91bmNhdWdo
dC1kb204LWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3VuY2F1Z2h0LWRvbTgtZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzUgQEAKKzxodG1sPg0KKzxoZWFkPg0KKzxzY3JpcHQgc3JjPSJldmFsdWF0ZS1pbi1mcm9udGVu
ZC5qcyI+PC9zY3JpcHQ+DQorPHNjcmlwdD4NCisNCitmdW5jdGlvbiBkb2l0KCkNCit7DQorICAg
IC8vIFNpbmNlIHRoZSBleGNlcHRpb24gd2lsbCBraWxsIGV4ZWN1dGlvbiwgbWFrZSBhIHNob3J0
IHRpbWVvdXQuDQorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQorICAgICAgICBhbGVydCgi
RXhjZXB0aW9uIHRpbWVvdXQgZXhjZWVkZWQuIikNCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsNCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbG9z
ZVdlYkluc3BlY3RvcigpOw0KKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsNCisgICAgICAgIH0NCisgICAgfSwgNTAwKTsNCisNCisgICAgZG9jdW1lbnQuYXBw
ZW5kQ2hpbGQoKTsNCit9DQorDQorPC9zY3JpcHQ+DQorPC9oZWFkPg0KKw0KKzxib2R5IG9ubG9h
ZD0ib25sb2FkKCkiPg0KKzxwPg0KK1RoaXMgdGVzdHMgdGhhdCB3ZSBhcmUgZ2V0dGluZyB0aGUg
Y29ycmVjdCBtZXNzYWdlIGZvciBET00gRXhjZXB0aW9uIDg6IE5PVF9GT1VORF9FUlIuDQorPC9w
Pg0KKw0KKzxkaXYgaWQ9ImZyb250ZW5kLXNjcmlwdCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+DQor
PC9kaXY+DQorDQorPGRpdiBpZD0ib3V0cHV0Ij4NCis8L2Rpdj4NCisNCis8L2JvZHk+DQorPC9o
dG1sPg0K
</data>

          </attachment>
      

    </bug>

</bugzilla>