<?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>21248</bug_id>
          
          <creation_ts>2008-09-30 12:01:55 -0700</creation_ts>
          <short_desc>Support placeholder on textarea</short_desc>
          <delta_ts>2009-08-24 12:10:24 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://phroggy.com/placeholder.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>19264</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Lyttle">webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>arv</cc>
    
    <cc>contact</cc>
    
    <cc>darin</cc>
    
    <cc>emacemac7</cc>
    
    <cc>eric</cc>
    
    <cc>michelangelo</cc>
    
    <cc>mike</cc>
    
    <cc>ojan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>93400</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Lyttle">webkit</who>
    <bug_when>2008-09-30 12:01:55 -0700</bug_when>
    <thetext>There&apos;s no reason why &lt;textarea&gt; shouldn&apos;t support the placeholder property, just like other text input fields do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95215</commentid>
    <comment_count>1</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2008-10-13 15:24:52 -0700</bug_when>
    <thetext>I&apos;d add also that contentEditable elements and designMode documents should support it as well. Really any text-input should support it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115857</commentid>
    <comment_count>2</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2009-03-30 11:51:56 -0700</bug_when>
    <thetext>This has now been added in the HTML5 draft.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117712</commentid>
    <comment_count>3</comment_count>
    <who name="sideshowbarker">mike</who>
    <bug_when>2009-04-15 20:38:39 -0700</bug_when>
    <thetext>http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#the-textarea-element
http://html5.org/tools/web-apps-tracker?from=2920&amp;to=2921</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128161</commentid>
    <comment_count>4</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-06-25 04:35:28 -0700</bug_when>
    <thetext>*** Bug 26507 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128163</commentid>
    <comment_count>5</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-06-25 04:36:19 -0700</bug_when>
    <thetext>I&apos;m making a patch for this.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128395</commentid>
    <comment_count>6</comment_count>
      <attachid>31906</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-06-25 22:30:04 -0700</bug_when>
    <thetext>Created attachment 31906
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128431</commentid>
    <comment_count>7</comment_count>
      <attachid>31906</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-26 01:23:08 -0700</bug_when>
    <thetext>Comment on attachment 31906
Proposed patch

It&apos;s sad we can&apos;t share more code here.  Adele should really comment here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128446</commentid>
    <comment_count>8</comment_count>
      <attachid>31919</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-06-26 01:48:25 -0700</bug_when>
    <thetext>Created attachment 31919
Proposed patch (rev.2)

Some small changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129259</commentid>
    <comment_count>9</comment_count>
      <attachid>32114</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-06-30 23:32:12 -0700</bug_when>
    <thetext>Created attachment 32114
Proposed patch (rev.3)

Update for the rename of css/html4.css.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137876</commentid>
    <comment_count>10</comment_count>
      <attachid>32114</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-07 08:02:42 -0700</bug_when>
    <thetext>Comment on attachment 32114
Proposed patch (rev.3)

Looks really good. Just a few comments.

&gt; +String HTMLTextAreaElement::placeholder() const
&gt; +{
&gt; +    return getAttribute(placeholderAttr).string();
&gt; +}
&gt; +
&gt; +void HTMLTextAreaElement::setPlaceholder(const String&amp; value)
&gt; +{
&gt; +    setAttribute(placeholderAttr, value);
&gt; +}

These are not great. There&apos;s no need to convert to a plain string here, and in fact it&apos;s bad for performance. The right way to do this nowadays is to just put [Reflect] in the IDL file and not define a setPlaceholder function in the .h and .cpp file at all, so that should be done here.

Since there are a couple call sites that do want placeholder, it would be OK to keep it but it could return const AtomicString&amp; instead of String to avoid a bit of reference count churn and you probably would only have to use the string() function in one place.

&gt; +    if ((oldPlaceholderShouldBeVisible != m_placeholderShouldBeVisible || placeholderValueChanged)
&gt; +        &amp;&amp; renderer())
&gt; +        static_cast&lt;RenderTextControlMultiLine*&gt;(renderer())-&gt;updatePlaceholderVisibility();

Indenting here is awkward.

&gt; +    bool placeholderShouldBeVisible() const { return m_placeholderShouldBeVisible; }

I think it would be a better design for the HTMLTextAreaElement to tell the 

&gt; +    virtual void dispatchFocusEvent();
&gt; +    virtual void dispatchBlurEvent();

These overrides should be private, not public, because we generally want all functions to be as private as possible.

&gt; +    void setPlaceholderShouldBeVisible(bool visible) { m_placeholderShouldBeVisible = visible; }

I don&apos;t think you need this setter function. It doesn&apos;t seem to add any abstraction.

&gt; +                 attribute  DOMString            placeholder;

Just adding the [Reflect] attribute here will do the trick.

&gt; +void RenderTextControl::updatePlaceholderVisibility()
&gt; +{
&gt; +    RefPtr&lt;RenderStyle&gt; textBlockStyle = createInnerTextStyle(parentStyle());
&gt; +    HTMLElement* innerText = innerTextElement();
&gt; +    innerText-&gt;renderer()-&gt;setStyle(textBlockStyle);
&gt; +
&gt; +    for (Node* n = innerText-&gt;firstChild(); n; n = n-&gt;traverseNextNode(innerText)) {
&gt; +        if (RenderObject* renderer = n-&gt;renderer())
&gt; +            renderer-&gt;setStyle(textBlockStyle);
&gt; +    }
&gt; +
&gt; +    updateFromElement();
&gt; +}

I know you must moved this from one class to another, but this function needs some comments. It&apos;s unclear why updatePlaceholderVisibility needs to update the style of all the renderers and then call updateFromElement. A comment could explain the relationship. Also, we could consider moving code to set the text block style into a separate function, since the name of that function would help document it.

&gt; -    if (result.innerNode() == node() || result.innerNode() == innerTextElement())
&gt; +    HTMLTextAreaElement* textArea = static_cast&lt;HTMLTextAreaElement*&gt;(node());
&gt; +    if (result.innerNode() == node()
&gt; +        || !textArea-&gt;placeholderShouldBeVisible() &amp;&amp; result.innerNode() == innerTextElement()
&gt; +        || textArea-&gt;placeholderShouldBeVisible() &amp;&amp; result.innerNode()-&gt;isDescendantOf(innerTextElement()))
&gt;          hitInnerTextElement(result, x, y, tx, ty);

The way the formatting makes the clauses of the if statement line up with its body makes things like this hard to read.

I think you could consider fixing that by using a boolean local variable; the name of the boolean could even help document a bit. I think the code also needs a comment. The rule here is slightly unclear unless the reader really aware of how placeholders should behave.

I&apos;m not so sure that it&apos;s great to move the m_placeholderVisible data member into the RenderTextControl base class. While it&apos;s true that both derived classes use it, the base class does not.

&gt; +RenderStyle* RenderTextControlMultiLine::parentStyle()

I don&apos;t understand the use of &quot;parent&quot; in this name. This isn&apos;t really the style of the renderer&apos;s parent, because if so it wouldn&apos;t need to be a virtual function. I know the local variable was named that, but a local variable has less scope than a member function, and naming is slightly less critical when the name is that tightly scoped. But could we give this function a name that&apos;s more precise? Sorry, I don&apos;t have a specific name to suggest.

&gt; +protected:
&gt; +    virtual RenderStyle* parentStyle();

This can and should be private instead of protected. You can override a function with a private function, and we should make things as private as possible. If we ever did want to derive from this class we could make it protected at that time.

&gt; +protected:
&gt; +    virtual RenderStyle* parentStyle();

Ditto.

review- because at least some of the changes above should be made</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138878</commentid>
    <comment_count>11</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-10 19:03:34 -0700</bug_when>
    <thetext>Thank you for the comments!

(In reply to comment #10)
&gt; (From update of attachment 32114 [details])
&gt; Looks really good. Just a few comments.
&gt; 
&gt; &gt; +String HTMLTextAreaElement::placeholder() const
&gt; &gt; +{
&gt; &gt; +    return getAttribute(placeholderAttr).string();
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +void HTMLTextAreaElement::setPlaceholder(const String&amp; value)
&gt; &gt; +{
&gt; &gt; +    setAttribute(placeholderAttr, value);
&gt; &gt; +}
&gt; 
&gt; These are not great. There&apos;s no need to convert to a plain string here, and in
&gt; fact it&apos;s bad for performance. The right way to do this nowadays is to just put
&gt; [Reflect] in the IDL file and not define a setPlaceholder function in the .h
&gt; and .cpp file at all, so that should be done here.

Ok, I changed this to [Reflect].

&gt; Indenting here is awkward.

Fixed.

&gt; &gt; +    bool placeholderShouldBeVisible() const { return m_placeholderShouldBeVisible; }
&gt; 
&gt; I think it would be a better design for the HTMLTextAreaElement to tell the 

I agree.  When I looked at the existing placeholder code first time, I had an impression that the code was complex.  I think the reason is that both of a DOM node and a renderer have flags for placeholder visibility.
I have removed the flag of InputElemntData, and updated many place to tell the visibility from a DOM node to a renderer.

&gt; &gt; +    virtual void dispatchFocusEvent();
&gt; &gt; +    virtual void dispatchBlurEvent();
&gt; 
&gt; These overrides should be private, not public, because we generally want all
&gt; functions to be as private as possible.

Fixed.

&gt; &gt; +    void setPlaceholderShouldBeVisible(bool visible) { m_placeholderShouldBeVisible = visible; }
&gt; 
&gt; I don&apos;t think you need this setter function. It doesn&apos;t seem to add any
&gt; abstraction.

Removed.

&gt; &gt; +void RenderTextControl::updatePlaceholderVisibility()
&gt; &gt; +{
&gt; &gt; +    RefPtr&lt;RenderStyle&gt; textBlockStyle = createInnerTextStyle(parentStyle());
&gt; &gt; +    HTMLElement* innerText = innerTextElement();
&gt; &gt; +    innerText-&gt;renderer()-&gt;setStyle(textBlockStyle);
&gt; &gt; +
&gt; &gt; +    for (Node* n = innerText-&gt;firstChild(); n; n = n-&gt;traverseNextNode(innerText)) {
&gt; &gt; +        if (RenderObject* renderer = n-&gt;renderer())
&gt; &gt; +            renderer-&gt;setStyle(textBlockStyle);
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    updateFromElement();
&gt; &gt; +}
&gt; 
&gt; I know you must moved this from one class to another, but this function needs
&gt; some comments. It&apos;s unclear why updatePlaceholderVisibility needs to update the
&gt; style of all the renderers and then call updateFromElement. A comment could
&gt; explain the relationship. Also, we could consider moving code to set the text
&gt; block style into a separate function, since the name of that function would
&gt; help document it.

I have addded a new method, setInnerTextStyle().

&gt; &gt; -    if (result.innerNode() == node() || result.innerNode() == innerTextElement())
&gt; &gt; +    HTMLTextAreaElement* textArea = static_cast&lt;HTMLTextAreaElement*&gt;(node());
&gt; &gt; +    if (result.innerNode() == node()
&gt; &gt; +        || !textArea-&gt;placeholderShouldBeVisible() &amp;&amp; result.innerNode() == innerTextElement()
&gt; &gt; +        || textArea-&gt;placeholderShouldBeVisible() &amp;&amp; result.innerNode()-&gt;isDescendantOf(innerTextElement()))
&gt; &gt;          hitInnerTextElement(result, x, y, tx, ty);
&gt; 
&gt; The way the formatting makes the clauses of the if statement line up with its
&gt; body makes things like this hard to read.
&gt; 
&gt; I think you could consider fixing that by using a boolean local variable; the
&gt; name of the boolean could even help document a bit. I think the code also needs
&gt; a comment. The rule here is slightly unclear unless the reader really aware of
&gt; how placeholders should behave.

Done.

&gt; I&apos;m not so sure that it&apos;s great to move the m_placeholderVisible data member
&gt; into the RenderTextControl base class. While it&apos;s true that both derived
&gt; classes use it, the base class does not.

In the next patch, RenderTextControl refers m_placeholderVisible.

&gt; &gt; +RenderStyle* RenderTextControlMultiLine::parentStyle()

Renamed it to textBaseStyle().

&gt; &gt; +protected:
&gt; &gt; +    virtual RenderStyle* parentStyle();
&gt; 
&gt; This can and should be private instead of protected. You can override a
&gt; function with a private function, and we should make things as private as
&gt; possible. If we ever did want to derive from this class we could make it
&gt; protected at that time.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138880</commentid>
    <comment_count>12</comment_count>
      <attachid>34534</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-10 19:11:12 -0700</bug_when>
    <thetext>Created attachment 34534
Proposed patch (rev.4)

Sorry for the large patch.
* The most of changes in HTMLInputElment, InputElment, WMLInputElement are trivial. (removal of unused parameters)
* We have a bug about maxlength.  The patch accidentally fixes it because of RenderTextControlSingleLine::updateFromElement() change.  input-text-maxlength-expected.txt had wrong expected data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141895</commentid>
    <comment_count>13</comment_count>
      <attachid>34534</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-21 09:47:05 -0700</bug_when>
    <thetext>Comment on attachment 34534
Proposed patch (rev.4)

This looks great.  I&apos;m just sad we can&apos;s share implementations:

+    static void dispatchFocusEvent(InputElement*, Element*);
+    static void dispatchBlurEvent(InputElement*, Element*);
+    static bool placeholderShouldBeVisible(const InputElement*, const Element*);
+    static void updatePlaceholderVisibility(InputElement*, Element*, bool placeholderValueChanged = false);

We could put those on HTMLFormControlElement... or on a new HTMLTextControlElement subclass.  Or on some class which both of these used (since &quot;having&quot; placeholder text does not necessarily mean you need to &quot;be&quot; a classs which can have placehodler text.  We could use &apos;has a&apos; instead of &apos;is a&apos; to share code.)

I&apos;m going to approve this as is.  I would like you to consider a follow-up patch to share more of this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141931</commentid>
    <comment_count>14</comment_count>
      <attachid>34534</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-21 12:07:12 -0700</bug_when>
    <thetext>Comment on attachment 34534
Proposed patch (rev.4)

Rejecting patch 34534 from commit-queue.  This patch will require manual commit.

[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;] failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141932</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-21 12:07:40 -0700</bug_when>
    <thetext>fast/forms/input-text-maxlength.html -&gt; failed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142278</commentid>
    <comment_count>16</comment_count>
      <attachid>38467</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-23 22:40:35 -0700</bug_when>
    <thetext>Created attachment 38467
Proposed patch (rev.5)

Updated test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142279</commentid>
    <comment_count>17</comment_count>
      <attachid>38468</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-23 22:46:24 -0700</bug_when>
    <thetext>Created attachment 38468
Proposed patch (rev.6)

Oops, I found LayoutTests/ChangeLog in the rev.5 was incomplete.  Corrected it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142280</commentid>
    <comment_count>18</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-23 22:49:18 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; I&apos;m going to approve this as is.  I would like you to consider a follow-up
&gt; patch to share more of this code.

Sure.  I&apos;ll try it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142289</commentid>
    <comment_count>19</comment_count>
      <attachid>38468</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-24 01:15:44 -0700</bug_when>
    <thetext>Comment on attachment 38468
Proposed patch (rev.6)

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142290</commentid>
    <comment_count>20</comment_count>
      <attachid>38468</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-24 01:28:58 -0700</bug_when>
    <thetext>Comment on attachment 38468
Proposed patch (rev.6)

Clearing flags on attachment: 38468

Committed r47702: &lt;http://trac.webkit.org/changeset/47702&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142291</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-24 01:29:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142335</commentid>
    <comment_count>22</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-08-24 11:11:01 -0700</bug_when>
    <thetext>4 textarea tests are still failing after this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142352</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-24 11:40:28 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; 4 textarea tests are still failing after this change.

On what platform?  I assume windows since mac is green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142353</commentid>
    <comment_count>24</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-24 11:41:54 -0700</bug_when>
    <thetext>http://build.webkit.org/results/Windows%20Release%20(Tests)/r47719%20(3707)/results.html

Looks like windows will need new baselines or these tests will need to be converted not to be render tree dumps. tkent could do the test conversion, or we can just land the windows results from the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142355</commentid>
    <comment_count>25</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-24 11:46:21 -0700</bug_when>
    <thetext>Will land windows results from the bot, shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142362</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-24 12:10:24 -0700</bug_when>
    <thetext>Committed r47721: &lt;http://trac.webkit.org/changeset/47721&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31906</attachid>
            <date>2009-06-25 22:30:04 -0700</date>
            <delta_ts>2009-06-26 01:48:25 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>textarea@placeholder.diff</filename>
            <type>text/plain</type>
            <size>32793</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTI0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMDktMDYtMjUgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciB0aGUgcGxhY2Vob2xkZXIgYXR0cmlidXRlIGFuZCBET00gcHJvcGVydHkg
b2YgdGhlIHRleHRhcmVhIGVsZW1lbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTI0OAorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL3RleHRh
cmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zv
cm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1zdHlsZS5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC1hdHRyaWJ1dGUuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFsdWUuaHRt
bAorCisgICAgICAgICogY3NzL2h0bWw0LmNzczoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJl
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6SFRN
TFRleHRBcmVhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IFVwZGF0ZXMgdGhlIHBsYWNlaG9sZGVyIHN0YXRlLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6c2V0VmFsdWUpOiBVcGRhdGVz
IHRoZSBwbGFjZWhvbGRlciBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OnBsYWNlaG9sZGVyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFy
ZWFFbGVtZW50OjpzZXRQbGFjZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRBcmVhRWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCk6IFVwZGF0
ZXMgdGhlIHBsYWNlaG9sZGVyIHN0YXRlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVh
RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQpOiBVcGRhdGVzIHRoZSBwbGFjZWhvbGRlciBzdGF0
ZS4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRQbGFjZWhvbGRl
clNob3VsZEJlVmlzaWJsZSk6IEFkZGVkLgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5pZGw6IEFkZGVkIHRoZSBwbGFjZWhvbGRlciBwcm9wZXJ0eS4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwOiBNb3ZlZCBzb21lIGNvZGUgZnJvbSBSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUgdG8gUmVuZGVyVGV4dENvbnRyb2wuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6UmVuZGVyVGV4dENvbnRyb2wpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmg6IE1vdmVkIHNvbWUgY29kZSBm
cm9tIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSB0byBSZW5kZXJUZXh0Q29udHJvbC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6Om5vZGVBdFBvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjp1cGRhdGVGcm9tRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6Y3Jl
YXRlSW5uZXJUZXh0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xN
dWx0aUxpbmU6OnBhcmVudFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xNdWx0aUxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmNwcDogTW92ZWQgc29tZSBjb2RlIGZyb20gUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lIHRvIFJlbmRlclRleHRDb250cm9sLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpwYXJlbnRTdHlsZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oOiBNb3ZlZCBz
b21lIGNvZGUgZnJvbSBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUgdG8gUmVuZGVyVGV4dENv
bnRyb2wuCisKIDIwMDktMDYtMjUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9jc3Mv
aHRtbDQuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2h0bWw0LmNzcwkocmV2aXNpb24g
NDUxMzQpCisrKyBXZWJDb3JlL2Nzcy9odG1sNC5jc3MJKHdvcmtpbmcgY29weSkKQEAgLTM2Miw3
ICszNjIsNyBAQCB0ZXh0YXJlYSB7CiAgICAgcGFkZGluZzogMnB4OwogfQogCi1pbnB1dDo6LXdl
YmtpdC1pbnB1dC1wbGFjZWhvbGRlciwgaXNpbmRleDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRl
ciB7CitpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciwgaXNpbmRleDo6LXdlYmtpdC1p
bnB1dC1wbGFjZWhvbGRlciwgdGV4dGFyZWE6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewog
ICAgIGNvbG9yOiBkYXJrR3JheTsKIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJl
YUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcAkocmV2aXNpb24gNDUxMzQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAgSFRNTFRleHRBcmVhRWxl
bWVudDo6SFRNTFRleHRBcmVhRWxlbWVudAogICAgICwgbV93cmFwKFNvZnRXcmFwKQogICAgICwg
bV9jYWNoZWRTZWxlY3Rpb25TdGFydCgtMSkKICAgICAsIG1fY2FjaGVkU2VsZWN0aW9uRW5kKC0x
KQorICAgICwgbV9wbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZShmYWxzZSkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZSh0ZXh0YXJlYVRhZykpOwogICAgIHNldEZvcm1Db250cm9sVmFsdWVNYXRj
aGVzUmVuZGVyZXIodHJ1ZSk7CkBAIC0xODAsNiArMTgxLDggQEAgdm9pZCBIVE1MVGV4dEFyZWFF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dAogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGFs
aWduQXR0cikgewogICAgICAgICAvLyBEb24ndCBtYXAgJ2FsaWduJyBhdHRyaWJ1dGUuICBUaGlz
IG1hdGNoZXMgd2hhdCBGaXJlZm94LCBPcGVyYSBhbmQgSUUgZG8uCiAgICAgICAgIC8vIFNlZSBo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDc1CisgICAgfSBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gcGxhY2Vob2xkZXJBdHRyKSB7CisgICAgICAgIHVwZGF0ZVBsYWNl
aG9sZGVyVmlzaWJpbGl0eSh0cnVlKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBv
bmZvY3VzQXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkuZm9jdXNFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7
CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uYmx1ckF0dHIpCkBAIC0yOTYsNiArMjk5
LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1ZShjb25zdAogCiAgICAgbV92
YWx1ZSA9IG5vcm1hbGl6ZWRWYWx1ZTsKICAgICBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1Jl
bmRlcmVyKHRydWUpOworICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSgpOwogICAgIGlm
IChpbkRvY3VtZW50KCkpCiAgICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQo
KTsKICAgICBpZiAocmVuZGVyZXIoKSkKQEAgLTM5NSw0ICszOTksMzcgQEAgYm9vbCBIVE1MVGV4
dEFyZWFFbGVtZW50OjpzaG91bGRVc2VJbnB1dAogICAgIHJldHVybiB0cnVlOwogfQogCitTdHJp
bmcgSFRNTFRleHRBcmVhRWxlbWVudDo6cGxhY2Vob2xkZXIoKSBjb25zdAoreworICAgIHJldHVy
biBnZXRBdHRyaWJ1dGUocGxhY2Vob2xkZXJBdHRyKS5zdHJpbmcoKTsKK30KKwordm9pZCBIVE1M
VGV4dEFyZWFFbGVtZW50OjpzZXRQbGFjZWhvbGRlcihjb25zdCBTdHJpbmcmIHZhbHVlKQorewor
ICAgIHNldEF0dHJpYnV0ZShwbGFjZWhvbGRlckF0dHIsIHZhbHVlKTsKK30KKwordm9pZCBIVE1M
VGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoYm9vbCBwbGFjZWhv
bGRlclZhbHVlQ2hhbmdlZCkKK3sKKyAgICBib29sIG9sZFBsYWNlaG9sZGVyU2hvdWxkQmVWaXNp
YmxlID0gbV9wbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZTsKKyAgICBtX3BsYWNlaG9sZGVyU2hv
dWxkQmVWaXNpYmxlID0gdmFsdWUoKS5pc0VtcHR5KCkKKyAgICAgICAgJiYgZG9jdW1lbnQoKS0+
Zm9jdXNlZE5vZGUoKSAhPSB0aGlzCisgICAgICAgICYmICFwbGFjZWhvbGRlcigpLmlzRW1wdHko
KTsKKyAgICBpZiAoKG9sZFBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlICE9IG1fcGxhY2Vob2xk
ZXJTaG91bGRCZVZpc2libGUgfHwgcGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQpCisgICAgICAgICYm
IHJlbmRlcmVyKCkpCisgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lKj4ocmVuZGVyZXIoKSktPnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSgpOworfQorCit2
b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCgpCit7CisgICAgdXBk
YXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KCk7CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdp
dGhTdGF0ZTo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTFRleHRBcmVhRWxl
bWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoKQoreworICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJp
bGl0eSgpOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoQmx1
ckV2ZW50KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmgJKHJldmlzaW9uIDQ1MTM0KQorKysgV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsMTAgKzkxLDE4IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRVc2VJbnB1dE1ldGhvZCgpIGNvbnN0OwogCisgICAgU3RyaW5n
IHBsYWNlaG9sZGVyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQbGFjZWhvbGRlcihjb25zdCBTdHJp
bmcmKTsKKyAgICBib29sIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9wbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaEZvY3VzRXZlbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoKTsK
KwogcHJpdmF0ZToKICAgICBlbnVtIFdyYXBNZXRob2QgeyBOb1dyYXAsIFNvZnRXcmFwLCBIYXJk
V3JhcCB9OwogCiAgICAgdm9pZCB1cGRhdGVWYWx1ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0UGxh
Y2Vob2xkZXJTaG91bGRCZVZpc2libGUoYm9vbCB2aXNpYmxlKSB7IG1fcGxhY2Vob2xkZXJTaG91
bGRCZVZpc2libGUgPSB2aXNpYmxlOyB9CisgICAgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclZpc2li
aWxpdHkoYm9vbCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdlZCA9IGZhbHNlKTsKIAogICAgIGludCBt
X3Jvd3M7CiAgICAgaW50IG1fY29sczsKQEAgLTEwMiw2ICsxMTAsNyBAQCBwcml2YXRlOgogICAg
IG11dGFibGUgU3RyaW5nIG1fdmFsdWU7CiAgICAgaW50IG1fY2FjaGVkU2VsZWN0aW9uU3RhcnQ7
CiAgICAgaW50IG1fY2FjaGVkU2VsZWN0aW9uRW5kOworICAgIGJvb2wgbV9wbGFjZWhvbGRlclNo
b3VsZEJlVmlzaWJsZTsKIH07CiAKIH0gLy9uYW1lc3BhY2UKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5pZGwJKHJldmlzaW9uIDQ1MTM0KQorKysgV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBAIG1vZHVs
ZSBodG1sIHsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAg
ICBkaXNhYmxlZDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAg
ICAgICBhdXRvZm9jdXM7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxs
VG9OdWxsU3RyaW5nXSBET01TdHJpbmcgICAgICAgICAgICBuYW1lOworICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGUgIERPTVN0cmluZyAgICAgICAgICAgIHBsYWNlaG9sZGVyOwogICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAgICAgIHJlYWRPbmx5OwogICAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGUgIGxvbmcgICAgICAgICAgICAgICAgIHJvd3M7CiAgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSAgRE9NU3RyaW5nICAgICAgICAgICAgdHlwZTsKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAJKHJldmlzaW9uIDQ1MTM0KQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02OSw2ICs2OSw3IEBAIHN0YXRpYyBDb2xvciBkaXNhYmxlZFRleHRDb2xvcihjb25zdCBDb2wK
IAogUmVuZGVyVGV4dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9sKE5vZGUqIG5vZGUpCiAgICAg
OiBSZW5kZXJCbG9jayhub2RlKQorICAgICwgbV9wbGFjZWhvbGRlclZpc2libGUoZmFsc2UpCiAg
ICAgLCBtX2VkaXRlZChmYWxzZSkKICAgICAsIG1fdXNlckVkaXRlZChmYWxzZSkKIHsKQEAgLTUz
Myw0ICs1MzQsMTggQEAgSFRNTEVsZW1lbnQqIFJlbmRlclRleHRDb250cm9sOjppbm5lclRleAog
ICAgIHJldHVybiBtX2lubmVyVGV4dC5nZXQoKTsKIH0KIAordm9pZCBSZW5kZXJUZXh0Q29udHJv
bDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KCkKK3sKKyAgICBSZWZQdHI8UmVuZGVyU3R5
bGU+IHRleHRCbG9ja1N0eWxlID0gY3JlYXRlSW5uZXJUZXh0U3R5bGUocGFyZW50U3R5bGUoKSk7
CisgICAgSFRNTEVsZW1lbnQqIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKTsKKyAgICBp
bm5lclRleHQtPnJlbmRlcmVyKCktPnNldFN0eWxlKHRleHRCbG9ja1N0eWxlKTsKKworICAgIGZv
ciAoTm9kZSogbiA9IGlubmVyVGV4dC0+Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+dHJhdmVyc2VO
ZXh0Tm9kZShpbm5lclRleHQpKSB7CisgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gbi0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHJlbmRlcmVyLT5zZXRTdHlsZSh0ZXh0Qmxv
Y2tTdHlsZSk7CisgICAgfQorCisgICAgdXBkYXRlRnJvbUVsZW1lbnQoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5o
CShyZXZpc2lvbiA0NTEzNCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogICAgIFZpc2libGVQ
b3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQgaW5kZXgpOwogICAgIGludCBpbmRl
eEZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKIAorICAgIHZvaWQg
dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KCk7CisKIHByb3RlY3RlZDoKICAgICBSZW5kZXJU
ZXh0Q29udHJvbChOb2RlKik7CiAKQEAgLTkxLDEwICs5MywxMyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB2b2lkIGFkanVzdENvbnRyb2xIZWlnaHRCYXNlZE9uTGluZUhlaWdodChpbnQgbGlu
ZUhlaWdodCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYWNoZVNlbGVjdGlvbihpbnQgc3RhcnQs
IGludCBlbmQpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0
ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUoKSA9IDA7CiAKICAgICBmcmll
bmQgY2xhc3MgVGV4dEl0ZXJhdG9yOwogICAgIEhUTUxFbGVtZW50KiBpbm5lclRleHRFbGVtZW50
KCkgY29uc3Q7CiAKKyAgICBib29sIG1fcGxhY2Vob2xkZXJWaXNpYmxlOworCiBwcml2YXRlOgog
ICAgIFN0cmluZyBmaW5pc2hUZXh0KFZlY3RvcjxVQ2hhcj4mKSBjb25zdDsKIApJbmRleDogV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAkocmV2
aXNpb24gNDUxMzQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRp
TGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDEwIEBAIGJvb2wgUmVuZGVyVGV4
dENvbnRyb2xNdWx0aUxpbmU6Om5vZGVBdFAKICAgICBpZiAoIVJlbmRlclRleHRDb250cm9sOjpu
b2RlQXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIHgsIHksIHR4LCB0eSwgaGl0VGVzdEFjdGlvbikp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChyZXN1bHQuaW5uZXJOb2RlKCkgPT0g
bm9kZSgpIHx8IHJlc3VsdC5pbm5lck5vZGUoKSA9PSBpbm5lclRleHRFbGVtZW50KCkpCisgICAg
SFRNTFRleHRBcmVhRWxlbWVudCogdGV4dEFyZWEgPSBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFF
bGVtZW50Kj4obm9kZSgpKTsKKyAgICBpZiAocmVzdWx0LmlubmVyTm9kZSgpID09IG5vZGUoKQor
ICAgICAgICB8fCAhdGV4dEFyZWEtPnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgJiYgcmVz
dWx0LmlubmVyTm9kZSgpID09IGlubmVyVGV4dEVsZW1lbnQoKQorICAgICAgICB8fCB0ZXh0QXJl
YS0+cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSAmJiByZXN1bHQuaW5uZXJOb2RlKCktPmlz
RGVzY2VuZGFudE9mKGlubmVyVGV4dEVsZW1lbnQoKSkpCiAgICAgICAgIGhpdElubmVyVGV4dEVs
ZW1lbnQocmVzdWx0LCB4LCB5LCB0eCwgdHkpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC05Miw3
ICs5NSwxNCBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjp1cGRhdGVGCiAgICAg
Y3JlYXRlU3VidHJlZUlmTmVlZGVkKDApOwogICAgIFJlbmRlclRleHRDb250cm9sOjp1cGRhdGVG
cm9tRWxlbWVudCgpOwogCi0gICAgc2V0SW5uZXJUZXh0VmFsdWUoc3RhdGljX2Nhc3Q8SFRNTFRl
eHRBcmVhRWxlbWVudCo+KG5vZGUoKSktPnZhbHVlKCkpOworICAgIEhUTUxUZXh0QXJlYUVsZW1l
bnQqIHRleHRBcmVhID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KG5vZGUoKSk7
CisgICAgLy9ib29sIHBsYWNlaG9sZGVyVmlzaWJpbGl0eVNob3VsZENoYW5nZSA9IG1fcGxhY2Vo
b2xkZXJWaXNpYmxlICE9IHRleHRBcmVhLT5wbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpOwor
ICAgIG1fcGxhY2Vob2xkZXJWaXNpYmxlID0gdGV4dEFyZWEtPnBsYWNlaG9sZGVyU2hvdWxkQmVW
aXNpYmxlKCk7CisKKyAgICBpZiAobV9wbGFjZWhvbGRlclZpc2libGUpIHsKKyAgICAgICAgc2V0
SW5uZXJUZXh0VmFsdWUodGV4dEFyZWEtPnBsYWNlaG9sZGVyKCkpOworICAgIH0gZWxzZSAvL2lm
ICghdGV4dEFyZWEtPmZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoKSB8fCBwbGFjZWhv
bGRlclZpc2liaWxpdHlTaG91bGRDaGFuZ2UpIHsKKyAgICAgICAgc2V0SW5uZXJUZXh0VmFsdWUo
dGV4dEFyZWEtPnZhbHVlKCkpOwogfQogCiB2b2lkIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5l
OjpjYWNoZVNlbGVjdGlvbihpbnQgc3RhcnQsIGludCBlbmQpCkBAIC0xMDIsOCArMTEyLDE2IEBA
IHZvaWQgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OmNhY2hlU2UKIAogUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OmNyZWF0ZUlubmVyVGV4dFN0
eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdAogewotICAgIFJlZlB0cjxS
ZW5kZXJTdHlsZT4gdGV4dEJsb2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7Ci0gICAg
dGV4dEJsb2NrU3R5bGUtPmluaGVyaXRGcm9tKHN0YXJ0U3R5bGUpOworICAgIEhUTUxUZXh0QXJl
YUVsZW1lbnQqIHRleHRBcmVhID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KG5v
ZGUoKSk7CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiB0ZXh0QmxvY2tTdHlsZTsKKyAgICBpZiAo
dGV4dEFyZWEtPnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkpIHsKKyAgICAgICAgaWYgKFJl
bmRlclN0eWxlKiBwc2V1ZG9TdHlsZSA9IGdldENhY2hlZFBzZXVkb1N0eWxlKElOUFVUX1BMQUNF
SE9MREVSKSkKKyAgICAgICAgICAgIHRleHRCbG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25l
KHBzZXVkb1N0eWxlKTsKKyAgICB9IAorICAgIGlmICghdGV4dEJsb2NrU3R5bGUpIHsKKyAgICAg
ICAgdGV4dEJsb2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7ICAgCisgICAgICAgIHRl
eHRCbG9ja1N0eWxlLT5pbmhlcml0RnJvbShzdGFydFN0eWxlKTsKKyAgICB9CiAKICAgICBhZGp1
c3RJbm5lclRleHRTdHlsZShzdGFydFN0eWxlLCB0ZXh0QmxvY2tTdHlsZS5nZXQoKSk7CiAKQEAg
LTExMSw3ICsxMjksNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJv
CiAgICAgLy8gVGhlbiBoZXJlIHdlIHNob3VsZCBzZXQgdGhlIHRleHRCbG9ja1N0eWxlIGFwcHJv
cHJpYXRlbHkgYmFzZWQgb2ZmIHRoaXMKICAgICAvLyBvYmplY3QncyBzdHlsZSgpLT53aGl0ZVNw
YWNlKCkgYW5kIHN0eWxlLT53b3JkV3JhcCgpLgogICAgIC8vIFNldCB3b3JkIHdyYXAgcHJvcGVy
dHkgYmFzZWQgb24gd3JhcCBhdHRyaWJ1dGUuCi0gICAgaWYgKHN0YXRpY19jYXN0PEhUTUxUZXh0
QXJlYUVsZW1lbnQqPihub2RlKCkpLT5zaG91bGRXcmFwVGV4dCgpKSB7CisgICAgaWYgKHRleHRB
cmVhLT5zaG91bGRXcmFwVGV4dCgpKSB7CiAgICAgICAgIHRleHRCbG9ja1N0eWxlLT5zZXRXaGl0
ZVNwYWNlKFBSRV9XUkFQKTsKICAgICAgICAgdGV4dEJsb2NrU3R5bGUtPnNldFdvcmRXcmFwKEJy
ZWFrV29yZFdyYXApOwogICAgIH0gZWxzZSB7CkBAIC0xMjQsNCArMTQyLDkgQEAgUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gUmVuZGVyVGV4dENvbnRybwogICAgIHJldHVybiB0ZXh0QmxvY2tTdHls
ZS5yZWxlYXNlKCk7CiB9CiAKK1JlbmRlclN0eWxlKiBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZTo6cGFyZW50U3R5bGUoKQoreworICAgIHJldHVybiBzdHlsZSgpOworfQorCiB9CkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgJKHJldmlz
aW9uIDQ1MTM0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYs
IGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHksIEhpdFRlc3RBY3Rpb24pOwogICAgIHZvaWQg
Zm9yd2FyZEV2ZW50KEV2ZW50Kik7CiAKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIFJlbmRlclN0
eWxlKiBwYXJlbnRTdHlsZSgpOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgaW50IHByZWZlcnJl
ZENvbnRlbnRXaWR0aChmbG9hdCBjaGFyV2lkdGgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBh
ZGp1c3RDb250cm9sSGVpZ2h0QmFzZWRPbkxpbmVIZWlnaHQoaW50IGxpbmVIZWlnaHQpOwpJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
Y3BwCShyZXZpc2lvbiA0NTEzNCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDYgQEAgdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoTm9kZSogbm9kZSkKICAgICA6IFJlbmRlclRleHRDb250
cm9sKG5vZGUpCi0gICAgLCBtX3BsYWNlaG9sZGVyVmlzaWJsZShmYWxzZSkKICAgICAsIG1fc2Vh
cmNoUG9wdXBJc1Zpc2libGUoZmFsc2UpCiAgICAgLCBtX3Nob3VsZERyYXdDYXBzTG9ja0luZGlj
YXRvcihmYWxzZSkKICAgICAsIG1fc2VhcmNoRXZlbnRUaW1lcih0aGlzLCAmUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lOjpzZWFyY2hFdmVudFRpbWVyRmlyZWQpCkBAIC03NCwyMCArNzMsOSBA
QCBib29sIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6cGxhY2VoCiAgICAgcmV0dXJuIGlu
cHV0RWxlbWVudCgpLT5wbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpOwogfQogCi12b2lkIFJl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KCkK
K1JlbmRlclN0eWxlKiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnBhcmVudFN0eWxlKCkK
IHsKLSAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBtX2lubmVyQmxvY2sgPyBtX2lubmVy
QmxvY2stPnJlbmRlcmVyKCktPnN0eWxlKCkgOiBzdHlsZSgpOwotCi0gICAgUmVmUHRyPFJlbmRl
clN0eWxlPiB0ZXh0QmxvY2tTdHlsZSA9IGNyZWF0ZUlubmVyVGV4dFN0eWxlKHBhcmVudFN0eWxl
KTsKLSAgICBIVE1MRWxlbWVudCogaW5uZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpOwotICAg
IGlubmVyVGV4dC0+cmVuZGVyZXIoKS0+c2V0U3R5bGUodGV4dEJsb2NrU3R5bGUpOwotCi0gICAg
Zm9yIChOb2RlKiBuID0gaW5uZXJUZXh0LT5maXJzdENoaWxkKCk7IG47IG4gPSBuLT50cmF2ZXJz
ZU5leHROb2RlKGlubmVyVGV4dCkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSBuLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgcmVuZGVyZXItPnNldFN0eWxlKHRleHRC
bG9ja1N0eWxlKTsKLSAgICB9Ci0KLSAgICB1cGRhdGVGcm9tRWxlbWVudCgpOworICAgIHJldHVy
biBtX2lubmVyQmxvY2sgPyBtX2lubmVyQmxvY2stPnJlbmRlcmVyKCktPnN0eWxlKCkgOiBzdHls
ZSgpOwogfQogCiB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6YWRkU2VhcmNoUmVz
dWx0KCkKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZS5oCShyZXZpc2lvbiA0NTEzNCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgcGxhY2Vob2xkZXJJc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBt
X3BsYWNlaG9sZGVyVmlzaWJsZTsgfQogICAgIGJvb2wgcGxhY2Vob2xkZXJTaG91bGRCZVZpc2li
bGUoKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSgpOwogCiAg
ICAgdm9pZCBhZGRTZWFyY2hSZXN1bHQoKTsKICAgICB2b2lkIHN0b3BTZWFyY2hFdmVudFRpbWVy
KCk7CkBAIC03Miw2ICs3MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xs
VG9wKGludCk7CiAgICAgdmlydHVhbCBib29sIHNjcm9sbChTY3JvbGxEaXJlY3Rpb24sIFNjcm9s
bEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyID0gMS4wZik7CiAKK3Byb3RlY3RlZDoKKyAg
ICB2aXJ0dWFsIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSgpOworCiBwcml2YXRlOgogICAgIGlu
dCB0ZXh0QmxvY2tXaWR0aCgpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IHByZWZlcnJlZENvbnRl
bnRXaWR0aChmbG9hdCBjaGFyV2lkdGgpIGNvbnN0OwpAQCAtMTIwLDcgKzEyMiw2IEBAIHByaXZh
dGU6CiAgICAgSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQoKSBjb25zdDsKIAogcHJpdmF0ZToK
LSAgICBib29sIG1fcGxhY2Vob2xkZXJWaXNpYmxlOwogICAgIGJvb2wgbV9zZWFyY2hQb3B1cElz
VmlzaWJsZTsKICAgICBib29sIG1fc2hvdWxkRHJhd0NhcHNMb2NrSW5kaWNhdG9yOwogCkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA0NTI0NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDA5LTA2LTI1ICBLZW50IFRhbXVyYSAgPHRrZW50QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIFRlc3RzIGZvciB0aGUgcGxhY2Vob2xkZXIgYXR0cmlidXRlIGFuZCBET00g
cHJvcGVydHkgb2YgdGhlIHRleHRhcmVhIGVsZW1lbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0OAorCisgICAgICAgICogZmFzdC9mb3Jtcy9y
ZXNvdXJjZXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZG9tLXByb3BlcnR5LmpzOiBDb3BpZWQgZnJv
bSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy9wbGFjZWhvbGRlci1kb20tcHJvcGVy
dHkuanMuCisgICAgICAgICogZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1kb20tcHJv
cGVydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3RleHRhcmVh
LXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3BsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5odG1sLgorICAgICAgICAqIGZhc3Qv
Zm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1zdHlsZS5odG1sOiBDb3Bp
ZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3BsYWNlaG9sZGVyLXBzZXVkby1zdHlsZS5o
dG1sLgorICAgICAgICAqIGZhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LWF0dHJp
YnV0ZS5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3BsYWNlaG9sZGVy
LXNldC1hdHRyaWJ1dGUuaHRtbC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNl
aG9sZGVyLXNldC12YWx1ZS5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3BsYWNlaG9sZGVyLXNldC12YWx1ZS5odG1sLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0
L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1zdHlsZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9s
ZGVyLXNldC1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFsdWUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKwogMjAwOS0wNi0yNSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFj
ZWhvbGRlci1kb20tcHJvcGVydHktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1kb20tcHJvcGVydHktZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitUZXN0IGZvciBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDgKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgdGV4dGFyZWEucGxhY2Vob2xkZXIgaXMgIiIKK1BBU1MgdGV4dGFy
ZWEucGxhY2Vob2xkZXIgaXMgInAxIgorUEFTUyB0ZXh0YXJlYS52YWx1ZSBpcyAiIgorUEFTUyB0
ZXh0YXJlYS5nZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIikgaXMgInAyIgorUEFTUyB0ZXh0YXJl
YS5wbGFjZWhvbGRlciBpcyAicDIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1w
bGFjZWhvbGRlci1kb20tcHJvcGVydHkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5odG1sCShyZXZpc2lv
biA0NTEzNCkJKGZyb20gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wbGFjZWhvbGRlci1kb20tcHJv
cGVydHkuaHRtbDo0NTEzNCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxh
Y2Vob2xkZXItZG9tLXByb3BlcnR5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvcGxhY2Vob2xkZXItZG9tLXByb3BlcnR5LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJl
YS1wbGFjZWhvbGRlci1kb20tcHJvcGVydHkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5odG1sCShyZXZp
c2lvbiA0NTEzNCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xk
ZXItZG9tLXByb3BlcnR5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsNyArNyw3IEBACiA8Ym9k
eT4KIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9w
ZXJ0eS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJl
YS1wbGFjZWhvbGRlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAor
ICAKK1BBU1MgZWxlbWVudC5wbGFjZWhvbGRlciBpcyAiZm9vYmFyIgorUEFTUyBlbGVtZW50LnBs
YWNlaG9sZGVyIGlzICIiCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEt
cGxhY2Vob2xkZXItcHNldWRvLXN0eWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1wc2V1ZG8tc3R5bGUuaHRtbAkocmV2aXNp
b24gNDUxMzQpCShmcm9tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcGxhY2Vob2xkZXItcHNldWRv
LXN0eWxlLmh0bWw6NDUxMzQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBs
YWNlaG9sZGVyLXBzZXVkby1zdHlsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIg
QEAKKzxzdHlsZT4KK2lucHV0LnJlZDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CisgICAg
Y29sb3I6IHJnYigxMDAsIDAsIDApOworfQorPC9zdHlsZT4KK1RoaXMgdGVzdHMgdGhhdCB5b3Ug
Y2FuIHNldCB0aGUgcGxhY2Vob2xkZXIgdGV4dCBjb2xvci48YnI+Cis8aW5wdXQgY2xhc3M9InJl
ZCIgcGxhY2Vob2xkZXI9InRleHQiPgorPGlucHV0IGNsYXNzPSJyZWQiIHR5cGU9InNlYXJjaCIg
cGxhY2Vob2xkZXI9InNlYXJjaCI+Cis8aW5wdXQgY2xhc3M9InJlZCIgdHlwZT0icGFzc3dvcmQi
IHBsYWNlaG9sZGVyPSJwYXNzd29yZCI+Cis8aW5wdXQgY2xhc3M9InJlZCIgZGlzYWJsZWQgcGxh
Y2Vob2xkZXI9ImRpc2FibGVkIHRleHQiPgorPGlucHV0IHBsYWNlaG9sZGVyPSJkZWZhdWx0Ij4K
KzxpbnB1dCBwbGFjZWhvbGRlcj0iZGVmYXVsdCBkaXNhYmxlZCI+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1zdHlsZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItcHNl
dWRvLXN0eWxlLmh0bWwJKHJldmlzaW9uIDQ1MTM0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy90ZXh0YXJlYS1wbGFjZWhvbGRlci1wc2V1ZG8tc3R5bGUuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSwxMiArMSwxMCBAQAogPHN0eWxlPgotaW5wdXQucmVkOjotd2Via2l0LWlucHV0LXBsYWNl
aG9sZGVyIHsKK3RleHRhcmVhLnJlZDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICAg
Y29sb3I6IHJnYigxMDAsIDAsIDApOwogfQogPC9zdHlsZT4KIFRoaXMgdGVzdHMgdGhhdCB5b3Ug
Y2FuIHNldCB0aGUgcGxhY2Vob2xkZXIgdGV4dCBjb2xvci48YnI+Ci08aW5wdXQgY2xhc3M9InJl
ZCIgcGxhY2Vob2xkZXI9InRleHQiPgotPGlucHV0IGNsYXNzPSJyZWQiIHR5cGU9InNlYXJjaCIg
cGxhY2Vob2xkZXI9InNlYXJjaCI+Ci08aW5wdXQgY2xhc3M9InJlZCIgdHlwZT0icGFzc3dvcmQi
IHBsYWNlaG9sZGVyPSJwYXNzd29yZCI+Ci08aW5wdXQgY2xhc3M9InJlZCIgZGlzYWJsZWQgcGxh
Y2Vob2xkZXI9ImRpc2FibGVkIHRleHQiPgotPGlucHV0IHBsYWNlaG9sZGVyPSJkZWZhdWx0Ij4K
LTxpbnB1dCBwbGFjZWhvbGRlcj0iZGVmYXVsdCBkaXNhYmxlZCI+Cis8dGV4dGFyZWEgY2xhc3M9
InJlZCIgcGxhY2Vob2xkZXI9InRleHQiPjwvdGV4dGFyZWE+Cis8dGV4dGFyZWEgY2xhc3M9InJl
ZCIgZGlzYWJsZWQgcGxhY2Vob2xkZXI9ImRpc2FibGVkIHRleHQiPjwvdGV4dGFyZWE+Cis8dGV4
dGFyZWEgcGxhY2Vob2xkZXI9ImRlZmF1bHQiPjwvdGV4dGFyZWE+Cis8dGV4dGFyZWEgZGlzYWJs
ZWQgcGxhY2Vob2xkZXI9ImRlZmF1bHQgZGlzYWJsZWQiPjwvdGV4dGFyZWE+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC1hdHRyaWJ1dGUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9s
ZGVyLXNldC1hdHRyaWJ1dGUuaHRtbAkocmV2aXNpb24gNDUxMzQpCShmcm9tIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvcGxhY2Vob2xkZXItc2V0LWF0dHJpYnV0ZS5odG1sOjQ1MTM0KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtYXR0cmlidXRlLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMSBAQAorPHNjcmlwdD4KKworZnVuY3Rpb24g
ZmluaXNoVGVzdCgpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0Jykuc2V0
QXR0cmlidXRlKCdwbGFjZWhvbGRlcicsJ1BsYWNlaG9sZGVyJyk7CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisgICAgc2V0VGltZW91dChmaW5pc2hUZXN0LCAwKTsKK30KKworPC9zY3JpcHQ+Cis8Ym9k
eSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5JZiB5b3UgY2FuIHNlZSB0aGUgd29yZCAiUGxhY2Vob2xk
ZXIiIGluIHRoZSB0ZXh0IGZpZWxkLCB0aGVuIGFsbCBpcyB3ZWxsLjwvcD4KKzxwPjxpbnB1dCB0
eXBlPSJ0ZXh0IiBpZD0iaW5wdXQiPjwvcD4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LWF0dHJpYnV0ZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LWF0
dHJpYnV0ZS5odG1sCShyZXZpc2lvbiA0NTEzNCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
dGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LWF0dHJpYnV0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0yLDcgKzIsNyBAQAogCiBmdW5jdGlvbiBmaW5pc2hUZXN0KCkKIHsKLSAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnaW5wdXQnKS5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywnUGxhY2Vo
b2xkZXInKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dGFyZWEnKS5zZXRBdHRy
aWJ1dGUoJ3BsYWNlaG9sZGVyJywnUGxhY2Vob2xkZXInKTsKICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CiB9CkBAIC0xNiw2ICsxNiw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiA8L3NjcmlwdD4KIDxi
b2R5IG9ubG9hZD0idGVzdCgpIj4KLTxwPklmIHlvdSBjYW4gc2VlIHRoZSB3b3JkICJQbGFjZWhv
bGRlciIgaW4gdGhlIHRleHQgZmllbGQsIHRoZW4gYWxsIGlzIHdlbGwuPC9wPgotPHA+PGlucHV0
IHR5cGU9InRleHQiIGlkPSJpbnB1dCI+PC9wPgorPHA+SWYgeW91IGNhbiBzZWUgdGhlIHdvcmQg
IlBsYWNlaG9sZGVyIiBpbiB0aGUgdGV4dCBhcmVhLCB0aGVuIGFsbCBpcyB3ZWxsLjwvcD4KKzxw
Pjx0ZXh0YXJlYSBpZD0idGV4dGFyZWEiPjwvdGV4dGFyZWE+PC9wPgogPC9ib2R5PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFsdWUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9s
ZGVyLXNldC12YWx1ZS5odG1sCShyZXZpc2lvbiA0NTEzNCkJKGZyb20gTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9wbGFjZWhvbGRlci1zZXQtdmFsdWUuaHRtbDo0NTEzNCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LXZhbHVlLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICBmdW5jdGlvbiBydW5UZXN0KCkK
KyAgICB7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoZmllbGQnKS52YWx1
ZSA9ICdOZXcgdGV4dCc7CisgICAgfQorICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKyAgPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NTA4Ij5odHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjQ1MDg8L2E+LiBTZWFyY2ggZmllbGQgZG9lcyBub3QgcmVkcmF3IGlmIHZh
bHVlIHNldCwgd2hlbiBpdCBoYXMgcGxhY2Vob2xkZXIgdGV4dC48L3A+CisKKyAgPGlucHV0IGlk
PSJzZWFyY2hmaWVsZCIgdHlwZT0ic2VhcmNoIiBwbGFjZWhvbGRlcj0iUGxhY2Vob2xkZXIgdGV4
dCI+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFsdWUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9s
ZGVyLXNldC12YWx1ZS5odG1sCShyZXZpc2lvbiA0NTEzNCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LXZhbHVlLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTMsMTMgKzMsMTMgQEAKICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJz
ZXQ9InV0Zi04Ij4KICAgICBmdW5jdGlvbiBydW5UZXN0KCkKICAgICB7Ci0gICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoZmllbGQnKS52YWx1ZSA9ICdOZXcgdGV4dCc7CisgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dCcpLnZhbHVlID0gJ05ldyB0ZXh0JzsKICAg
ICB9CiAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotICA8
cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjQ1MDgiPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDUwODwv
YT4uIFNlYXJjaCBmaWVsZCBkb2VzIG5vdCByZWRyYXcgaWYgdmFsdWUgc2V0LCB3aGVuIGl0IGhh
cyBwbGFjZWhvbGRlciB0ZXh0LjwvcD4KKyAgPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4Ij5odHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg8L2E+LjwvcD4KIAotICA8aW5wdXQgaWQ9InNlYXJj
aGZpZWxkIiB0eXBlPSJzZWFyY2giIHBsYWNlaG9sZGVyPSJQbGFjZWhvbGRlciB0ZXh0Ij4KKyAg
PHRleHRhcmVhIGlkPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iUGxhY2Vob2xkZXIgdGV4dCI+PC90ZXh0
YXJlYT4KIDwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXh0YXJlYS1wbGFj
ZWhvbGRlci1kb20tcHJvcGVydHkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9yZXNvdXJjZXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZG9tLXByb3BlcnR5LmpzCShyZXZp
c2lvbiA0NTEzNCkJKGZyb20gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvcGxhY2Vo
b2xkZXItZG9tLXByb3BlcnR5LmpzOjQ1MTM0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9y
ZXNvdXJjZXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZG9tLXByb3BlcnR5LmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTQgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IGZvciA8YSBocmVmPSdodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MDMnPmh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwMzwvYT4iKTsKKwordmFyIGlucHV0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJp
bnB1dC5wbGFjZWhvbGRlciIsICcnKTsKKworaW5wdXQuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRl
ciIsICJwMSIpCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImlucHV0LnBsYWNlaG9sZGVyIiwgJ3Ax
Jyk7CisKK2lucHV0LnBsYWNlaG9sZGVyID0gJ3AyJzsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygi
aW5wdXQuZ2V0QXR0cmlidXRlKCdwbGFjZWhvbGRlcicpIiwgJ3AyJyk7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImlucHV0LnBsYWNlaG9sZGVyIiwgJ3AyJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvdGV4
dGFyZWEtcGxhY2Vob2xkZXItZG9tLXByb3BlcnR5LmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0
eS5qcwkocmV2aXNpb24gNDUxMzQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNl
cy90ZXh0YXJlYS1wbGFjZWhvbGRlci1kb20tcHJvcGVydHkuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTQgKzEsMTUgQEAKLWRlc2NyaXB0aW9uKCJUZXN0IGZvciA8YSBocmVmPSdodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MDMnPmh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwMzwvYT4iKTsKK2Rlc2NyaXB0aW9uKCdUZXN0IGZvciA8
YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDgiPmh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODwvYT4nKTsKIAotdmFy
IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKK3ZhciB0ZXh0YXJlYSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7CiAKLXNob3VsZEJlRXF1YWxUb1N0
cmluZygiaW5wdXQucGxhY2Vob2xkZXIiLCAnJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rl
eHRhcmVhLnBsYWNlaG9sZGVyJywgJycpOwogCi1pbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9s
ZGVyIiwgInAxIikKLXNob3VsZEJlRXF1YWxUb1N0cmluZygiaW5wdXQucGxhY2Vob2xkZXIiLCAn
cDEnKTsKK3RleHRhcmVhLnNldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInLCAncDEnKQorc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCd0ZXh0YXJlYS5wbGFjZWhvbGRlcicsICdwMScpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCd0ZXh0YXJlYS52YWx1ZScsICcnKTsKIAotaW5wdXQucGxhY2Vob2xkZXIg
PSAncDInOwotc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbnB1dC5nZXRBdHRyaWJ1dGUoJ3BsYWNl
aG9sZGVyJykiLCAncDInKTsKLXNob3VsZEJlRXF1YWxUb1N0cmluZygiaW5wdXQucGxhY2Vob2xk
ZXIiLCAncDInKTsKK3RleHRhcmVhLnBsYWNlaG9sZGVyID0gJ3AyJzsKK3Nob3VsZEJlRXF1YWxU
b1N0cmluZygndGV4dGFyZWEuZ2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIpJywgJ3AyJyk7Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ3RleHRhcmVhLnBsYWNlaG9sZGVyJywgJ3AyJyk7CiAKIHZh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItcHNldWRvLXN0eWxlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy90
ZXh0YXJlYS1wbGFjZWhvbGRlci1wc2V1ZG8tc3R5bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vo
b2xkZXItcHNldWRvLXN0eWxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
NSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sg
e0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4
LDgpIHNpemUgNzg0eDU4NAorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
MzI4eDE4CisgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDMyODogIlRoaXMgdGVzdHMg
dGhhdCB5b3UgY2FuIHNldCB0aGUgcGxhY2Vob2xkZXIgdGV4dCBjb2xvci4iCisgICAgICBSZW5k
ZXJCUiB7QlJ9IGF0ICgzMjgsMTQpIHNpemUgMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDEzMyw0MCkgc2l6ZSA0eDE4CisgICAgICAgIHRleHQgcnVuIGF0ICgxMzMsNDApIHdpZHRo
IDQ6ICIgIgorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyNzAsNDApIHNpemUgNHgxOAor
ICAgICAgICB0ZXh0IHJ1biBhdCAoMjcwLDQwKSB3aWR0aCA0OiAiICIKKyAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoNDA3LDQwKSBzaXplIDR4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDQw
Nyw0MCkgd2lkdGggNDogIiAiCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSAweDAKK2xheWVyIGF0ICgxMCwyOCkgc2l6ZSAxMjl4MzIgY2xpcCBhdCAoMTEsMjkpIHNpemUg
MTI3eDMwCisgIFJlbmRlclRleHRDb250cm9sIHtURVhUQVJFQX0gYXQgKDIsMjApIHNpemUgMTI5
eDMyIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSAxMjN4MTMgW2NvbG9yPSM2NDAwMDBdCisg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMngxMworICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCAyMjogInRleHQiCitsYXllciBhdCAoMTQ3LDI4KSBzaXplIDEy
OXgzMiBjbGlwIGF0ICgxNDgsMjkpIHNpemUgMTI3eDMwCisgIFJlbmRlclRleHRDb250cm9sIHtU
RVhUQVJFQX0gYXQgKDEzOSwyMCkgc2l6ZSAxMjl4MzIgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRl
cjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBz
aXplIDEyM3gxMyBbY29sb3I9I0I4MDAwMF0KKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDcweDEzCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDcwOiAiZGlz
YWJsZWQgdGV4dCIKK2xheWVyIGF0ICgyODQsMjgpIHNpemUgMTI5eDMyIGNsaXAgYXQgKDI4NSwy
OSkgc2l6ZSAxMjd4MzAKKyAgUmVuZGVyVGV4dENvbnRyb2wge1RFWFRBUkVBfSBhdCAoMjc2LDIw
KSBzaXplIDEyOXgzMiBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAw
MDApXQorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgMTIzeDEzIFtjb2xvcj0j
QTlBOUE5XQorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzh4MTMKKyAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzg6ICJkZWZhdWx0IgorbGF5ZXIgYXQgKDQy
MSwyOCkgc2l6ZSAxMjl4MzIgY2xpcCBhdCAoNDIyLDI5KSBzaXplIDEyN3gzMAorICBSZW5kZXJU
ZXh0Q29udHJvbCB7VEVYVEFSRUF9IGF0ICg0MTMsMjApIHNpemUgMTI5eDMyIFtiZ2NvbG9yPSNG
RkZGRkZdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDMsMykgc2l6ZSAxMjN4MTMgW2NvbG9yPSNBOUE5QTldCisgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA4NngxMworICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3
aWR0aCA4NjogImRlZmF1bHQgZGlzYWJsZWQiCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtYXR0cmlidXRlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy90
ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtYXR0cmlidXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNl
aG9sZGVyLXNldC1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE0IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCww
KSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9j
ayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQg
KDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3
ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNDM5eDE4Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDM5OiAiSWYgeW91IGNhbiBzZWUgdGhl
IHdvcmQgXCJQbGFjZWhvbGRlclwiIGluIHRoZSB0ZXh0IGFyZWEsIHRoZW4gYWxsIGlzIHdlbGwu
IgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDM0KSBzaXplIDc4NHgzNgorbGF5ZXIgYXQg
KDEwLDQ0KSBzaXplIDEyOXgzMiBjbGlwIGF0ICgxMSw0NSkgc2l6ZSAxMjd4MzAKKyAgUmVuZGVy
VGV4dENvbnRyb2wge1RFWFRBUkVBfSBhdCAoMiwyKSBzaXplIDEyOXgzMiBbYmdjb2xvcj0jRkZG
RkZGXSBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgzLDMpIHNpemUgMTIzeDEzIFtjb2xvcj0jQTlBOUE5XQorICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgNjJ4MTMKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggNjI6ICJQbGFjZWhvbGRlciIKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC12YWx1ZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxh
Y2Vob2xkZXItc2V0LXZhbHVlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC12YWx1
ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKK2xheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQK
KyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA1M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDUzOiAiVGVzdCBmb3IgIgorICAgICAgICBSZW5kZXJJbmxpbmUge0F9IGF0
ICgwLDApIHNpemUgMzA1eDE4IFtjb2xvcj0jMDAwMEVFXQorICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoNTMsMCkgc2l6ZSAzMDV4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICg1
MywwKSB3aWR0aCAzMDU6ICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjEyNDgiCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMzU4LDApIHNpemUgNHgxOAor
ICAgICAgICAgIHRleHQgcnVuIGF0ICgzNTgsMCkgd2lkdGggNDogIi4iCisgICAgICBSZW5kZXJC
bG9jayAoYW5vbnltb3VzKSBhdCAoMCwzNCkgc2l6ZSA3ODR4MzYKKyAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDB4MAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSAweDAKK2xheWVyIGF0ICgxMCw0NCkgc2l6ZSAxMjl4MzIgY2xpcCBhdCAoMTEsNDUpIHNpemUg
MTI3eDMwCisgIFJlbmRlclRleHRDb250cm9sIHtURVhUQVJFQX0gYXQgKDIsMikgc2l6ZSAxMjl4
MzIgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDEyM3gxMworICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgNDh4MTMKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggNDg6ICJOZXcgdGV4dCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31919</attachid>
            <date>2009-06-26 01:48:25 -0700</date>
            <delta_ts>2009-06-30 23:33:13 -0700</delta_ts>
            <desc>Proposed patch (rev.2)</desc>
            <filename>textarea@placeholder-2.diff</filename>
            <type>text/plain</type>
            <size>32639</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTI0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMDktMDYtMjUgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciB0aGUgcGxhY2Vob2xkZXIgYXR0cmlidXRlIGFuZCBET00gcHJvcGVydHkg
b2YgdGhlIHRleHRhcmVhIGVsZW1lbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTI0OAorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL3RleHRh
cmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zv
cm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1zdHlsZS5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC1hdHRyaWJ1dGUuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFsdWUuaHRt
bAorCisgICAgICAgICogY3NzL2h0bWw0LmNzczogIEFkZGVkIHRleHRhcmVhOjotd2Via2l0LWlu
cHV0LXBsYWNlaG9sZGVyIGRlZmluaXRpb24uCisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OkhUTUxU
ZXh0QXJlYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBVcGRhdGVzIHRoZSBwbGFjZWhvbGRlciBzdGF0ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlKTogVXBkYXRlcyB0
aGUgcGxhY2Vob2xkZXIgc3RhdGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVt
ZW50OjpwbGFjZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVh
RWxlbWVudDo6c2V0UGxhY2Vob2xkZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
ZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQpOiBVcGRhdGVz
IHRoZSBwbGFjZWhvbGRlciBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KTogVXBkYXRlcyB0aGUgcGxhY2Vob2xkZXIgc3RhdGUu
CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6c2V0UGxhY2Vob2xkZXJT
aG91bGRCZVZpc2libGUpOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuaWRsOiBBZGRlZCB0aGUgcGxhY2Vob2xkZXIgcHJvcGVydHkuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmNwcDogTW92ZWQgc29tZSBjb2RlIGZyb20gUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lIHRvIFJlbmRlclRleHRDb250cm9sLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9sKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHRDb250cm9sOjp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOiBNb3ZlZCBzb21lIGNvZGUgZnJv
bSBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUgdG8gUmVuZGVyVGV4dENvbnRyb2wuCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpub2RlQXRQb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6dXBkYXRlRnJvbUVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OmNyZWF0
ZUlubmVyVGV4dFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sTXVs
dGlMaW5lOjpwYXJlbnRTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZS5jcHA6IE1vdmVkIHNvbWUgY29kZSBmcm9tIFJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZSB0byBSZW5kZXJUZXh0Q29udHJvbC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6cGFyZW50U3R5bGUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaDogTW92ZWQgc29t
ZSBjb2RlIGZyb20gUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lIHRvIFJlbmRlclRleHRDb250
cm9sLgorCiAyMDA5LTA2LTI1ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvY3NzL2h0
bWw0LmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9odG1sNC5jc3MJKHJldmlzaW9uIDQ1
MTM0KQorKysgV2ViQ29yZS9jc3MvaHRtbDQuY3NzCSh3b3JraW5nIGNvcHkpCkBAIC0zNjIsNyAr
MzYyLDcgQEAgdGV4dGFyZWEgewogICAgIHBhZGRpbmc6IDJweDsKIH0KIAotaW5wdXQ6Oi13ZWJr
aXQtaW5wdXQtcGxhY2Vob2xkZXIsIGlzaW5kZXg6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIg
eworaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsIGlzaW5kZXg6Oi13ZWJraXQtaW5w
dXQtcGxhY2Vob2xkZXIsIHRleHRhcmVhOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAg
ICBjb2xvcjogZGFya0dyYXk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDQ1MTM0KQorKysgV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBAIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6OkhUTUxUZXh0QXJlYUVsZW1lbnQKICAgICAsIG1fd3JhcChTb2Z0V3JhcCkKICAgICAsIG1f
Y2FjaGVkU2VsZWN0aW9uU3RhcnQoLTEpCiAgICAgLCBtX2NhY2hlZFNlbGVjdGlvbkVuZCgtMSkK
KyAgICAsIG1fcGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoZmFsc2UpCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUodGV4dGFyZWFUYWcpKTsKICAgICBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hl
c1JlbmRlcmVyKHRydWUpOwpAQCAtMTgwLDYgKzE4MSw4IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHQKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGln
bkF0dHIpIHsKICAgICAgICAgLy8gRG9uJ3QgbWFwICdhbGlnbicgYXR0cmlidXRlLiAgVGhpcyBt
YXRjaGVzIHdoYXQgRmlyZWZveCwgT3BlcmEgYW5kIElFIGRvLgogICAgICAgICAvLyBTZWUgaHR0
cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA3NQorICAgIH0gZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IHBsYWNlaG9sZGVyQXR0cikgeworICAgICAgICB1cGRhdGVQbGFjZWhv
bGRlclZpc2liaWxpdHkodHJ1ZSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25m
b2N1c0F0dHIpCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmZvY3VzRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwog
ICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmJsdXJBdHRyKQpAQCAtMjk2LDYgKzI5OSw3
IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0VmFsdWUoY29uc3QKIAogICAgIG1fdmFs
dWUgPSBub3JtYWxpemVkVmFsdWU7CiAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5k
ZXJlcih0cnVlKTsKKyAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoKTsKICAgICBpZiAo
aW5Eb2N1bWVudCgpKQogICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7
CiAgICAgaWYgKHJlbmRlcmVyKCkpCkBAIC0zOTUsNCArMzk5LDM3IEBAIGJvb2wgSFRNTFRleHRB
cmVhRWxlbWVudDo6c2hvdWxkVXNlSW5wdXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorU3RyaW5n
IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBsYWNlaG9sZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
Z2V0QXR0cmlidXRlKHBsYWNlaG9sZGVyQXR0cikuc3RyaW5nKCk7Cit9CisKK3ZvaWQgSFRNTFRl
eHRBcmVhRWxlbWVudDo6c2V0UGxhY2Vob2xkZXIoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAg
ICBzZXRBdHRyaWJ1dGUocGxhY2Vob2xkZXJBdHRyLCB2YWx1ZSk7Cit9CisKK3ZvaWQgSFRNTFRl
eHRBcmVhRWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGJvb2wgcGxhY2Vob2xk
ZXJWYWx1ZUNoYW5nZWQpCit7CisgICAgYm9vbCBvbGRQbGFjZWhvbGRlclNob3VsZEJlVmlzaWJs
ZSA9IG1fcGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGU7CisgICAgbV9wbGFjZWhvbGRlclNob3Vs
ZEJlVmlzaWJsZSA9IHZhbHVlKCkuaXNFbXB0eSgpCisgICAgICAgICYmIGRvY3VtZW50KCktPmZv
Y3VzZWROb2RlKCkgIT0gdGhpcworICAgICAgICAmJiAhcGxhY2Vob2xkZXIoKS5pc0VtcHR5KCk7
CisgICAgaWYgKChvbGRQbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSAhPSBtX3BsYWNlaG9sZGVy
U2hvdWxkQmVWaXNpYmxlIHx8IHBsYWNlaG9sZGVyVmFsdWVDaGFuZ2VkKQorICAgICAgICAmJiBy
ZW5kZXJlcigpKQorICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZSo+KHJlbmRlcmVyKCkpLT51cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoKTsKK30KKwordm9p
ZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoKQoreworICAgIHVwZGF0
ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSgpOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRo
U3RhdGU6OmRpc3BhdGNoRm9jdXNFdmVudCgpOworfQorCit2b2lkIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCkKK3sKKyAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxp
dHkoKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaXNwYXRjaEJsdXJF
dmVudCgpOworfQorCiB9IC8vIG5hbWVzcGFjZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5oCShyZXZpc2lvbiA0NTEzNCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDEwICs5MSwxOCBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25zdDsKIAorICAgIFN0cmluZyBw
bGFjZWhvbGRlcigpIGNvbnN0OworICAgIHZvaWQgc2V0UGxhY2Vob2xkZXIoY29uc3QgU3RyaW5n
Jik7CisgICAgYm9vbCBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hGb2N1c0V2ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQmx1ckV2ZW50KCk7CisK
IHByaXZhdGU6CiAgICAgZW51bSBXcmFwTWV0aG9kIHsgTm9XcmFwLCBTb2Z0V3JhcCwgSGFyZFdy
YXAgfTsKIAogICAgIHZvaWQgdXBkYXRlVmFsdWUoKSBjb25zdDsKKyAgICB2b2lkIHNldFBsYWNl
aG9sZGVyU2hvdWxkQmVWaXNpYmxlKGJvb2wgdmlzaWJsZSkgeyBtX3BsYWNlaG9sZGVyU2hvdWxk
QmVWaXNpYmxlID0gdmlzaWJsZTsgfQorICAgIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmls
aXR5KGJvb2wgcGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQgPSBmYWxzZSk7CiAKICAgICBpbnQgbV9y
b3dzOwogICAgIGludCBtX2NvbHM7CkBAIC0xMDIsNiArMTEwLDcgQEAgcHJpdmF0ZToKICAgICBt
dXRhYmxlIFN0cmluZyBtX3ZhbHVlOwogICAgIGludCBtX2NhY2hlZFNlbGVjdGlvblN0YXJ0Owog
ICAgIGludCBtX2NhY2hlZFNlbGVjdGlvbkVuZDsKKyAgICBib29sIG1fcGxhY2Vob2xkZXJTaG91
bGRCZVZpc2libGU7CiB9OwogCiB9IC8vbmFtZXNwYWNlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuaWRsCShyZXZpc2lvbiA0NTEzNCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQCBtb2R1bGUg
aHRtbCB7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgYm9vbGVhbiAgICAgICAgICAgICAg
ZGlzYWJsZWQ7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgYm9vbGVhbiAgICAgICAgICAg
ICAgYXV0b2ZvY3VzOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIFtDb252ZXJ0TnVsbFRv
TnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAgICAgICAgbmFtZTsKKyAgICAgICAgICAgICAgICAg
YXR0cmlidXRlICBET01TdHJpbmcgICAgICAgICAgICBwbGFjZWhvbGRlcjsKICAgICAgICAgICAg
ICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICByZWFkT25seTsKICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlICBsb25nICAgICAgICAgICAgICAgICByb3dzOwogICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgIERPTVN0cmluZyAgICAgICAgICAgIHR5cGU7CkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCShyZXZpc2lvbiA0NTEzNCkKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjksNiArNjksNyBAQCBzdGF0aWMgQ29sb3IgZGlzYWJsZWRUZXh0Q29sb3IoY29uc3QgQ29sCiAK
IFJlbmRlclRleHRDb250cm9sOjpSZW5kZXJUZXh0Q29udHJvbChOb2RlKiBub2RlKQogICAgIDog
UmVuZGVyQmxvY2sobm9kZSkKKyAgICAsIG1fcGxhY2Vob2xkZXJWaXNpYmxlKGZhbHNlKQogICAg
ICwgbV9lZGl0ZWQoZmFsc2UpCiAgICAgLCBtX3VzZXJFZGl0ZWQoZmFsc2UpCiB7CkBAIC01MzMs
NCArNTM0LDE4IEBAIEhUTUxFbGVtZW50KiBSZW5kZXJUZXh0Q29udHJvbDo6aW5uZXJUZXgKICAg
ICByZXR1cm4gbV9pbm5lclRleHQuZ2V0KCk7CiB9CiAKK3ZvaWQgUmVuZGVyVGV4dENvbnRyb2w6
OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSgpCit7CisgICAgUmVmUHRyPFJlbmRlclN0eWxl
PiB0ZXh0QmxvY2tTdHlsZSA9IGNyZWF0ZUlubmVyVGV4dFN0eWxlKHBhcmVudFN0eWxlKCkpOwor
ICAgIEhUTUxFbGVtZW50KiBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50KCk7CisgICAgaW5u
ZXJUZXh0LT5yZW5kZXJlcigpLT5zZXRTdHlsZSh0ZXh0QmxvY2tTdHlsZSk7CisKKyAgICBmb3Ig
KE5vZGUqIG4gPSBpbm5lclRleHQtPmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPnRyYXZlcnNlTmV4
dE5vZGUoaW5uZXJUZXh0KSkgeworICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IG4tPnJlbmRlcmVyKCkpCisgICAgICAgICAgICByZW5kZXJlci0+c2V0U3R5bGUodGV4dEJsb2Nr
U3R5bGUpOworICAgIH0KKworICAgIHVwZGF0ZUZyb21FbGVtZW50KCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAko
cmV2aXNpb24gNDUxMzQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKICAgICBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4KTsKICAgICBpbnQgaW5kZXhG
b3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAKKyAgICB2b2lkIHVw
ZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSgpOworCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyVGV4
dENvbnRyb2woTm9kZSopOwogCkBAIC05MSwxMCArOTMsMTMgQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RDb250cm9sSGVpZ2h0QmFzZWRPbkxpbmVIZWlnaHQoaW50IGxpbmVI
ZWlnaHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FjaGVTZWxlY3Rpb24oaW50IHN0YXJ0LCBp
bnQgZW5kKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjcmVhdGVJ
bm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKCkgPSAwOwogCiAgICAgZnJpZW5k
IGNsYXNzIFRleHRJdGVyYXRvcjsKICAgICBIVE1MRWxlbWVudCogaW5uZXJUZXh0RWxlbWVudCgp
IGNvbnN0OwogCisgICAgYm9vbCBtX3BsYWNlaG9sZGVyVmlzaWJsZTsKKwogcHJpdmF0ZToKICAg
ICBTdHJpbmcgZmluaXNoVGV4dChWZWN0b3I8VUNoYXI+JikgY29uc3Q7CiAKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAJKHJldmlz
aW9uIDQ1MTM0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCwxMCBAQCBib29sIFJlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lOjpub2RlQXRQCiAgICAgaWYgKCFSZW5kZXJUZXh0Q29udHJvbDo6bm9k
ZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCB4LCB5LCB0eCwgdHksIGhpdFRlc3RBY3Rpb24pKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAocmVzdWx0LmlubmVyTm9kZSgpID09IG5v
ZGUoKSB8fCByZXN1bHQuaW5uZXJOb2RlKCkgPT0gaW5uZXJUZXh0RWxlbWVudCgpKQorICAgIEhU
TUxUZXh0QXJlYUVsZW1lbnQqIHRleHRBcmVhID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxl
bWVudCo+KG5vZGUoKSk7CisgICAgaWYgKHJlc3VsdC5pbm5lck5vZGUoKSA9PSBub2RlKCkKKyAg
ICAgICAgfHwgIXRleHRBcmVhLT5wbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpICYmIHJlc3Vs
dC5pbm5lck5vZGUoKSA9PSBpbm5lclRleHRFbGVtZW50KCkKKyAgICAgICAgfHwgdGV4dEFyZWEt
PnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgJiYgcmVzdWx0LmlubmVyTm9kZSgpLT5pc0Rl
c2NlbmRhbnRPZihpbm5lclRleHRFbGVtZW50KCkpKQogICAgICAgICBoaXRJbm5lclRleHRFbGVt
ZW50KHJlc3VsdCwgeCwgeSwgdHgsIHR5KTsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtOTIsNyAr
OTUsMTIgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6dXBkYXRlRgogICAgIGNy
ZWF0ZVN1YnRyZWVJZk5lZWRlZCgwKTsKICAgICBSZW5kZXJUZXh0Q29udHJvbDo6dXBkYXRlRnJv
bUVsZW1lbnQoKTsKIAotICAgIHNldElubmVyVGV4dFZhbHVlKHN0YXRpY19jYXN0PEhUTUxUZXh0
QXJlYUVsZW1lbnQqPihub2RlKCkpLT52YWx1ZSgpKTsKKyAgICBIVE1MVGV4dEFyZWFFbGVtZW50
KiB0ZXh0QXJlYSA9IHN0YXRpY19jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQqPihub2RlKCkpOwor
ICAgIG1fcGxhY2Vob2xkZXJWaXNpYmxlID0gdGV4dEFyZWEtPnBsYWNlaG9sZGVyU2hvdWxkQmVW
aXNpYmxlKCk7CisgICAgaWYgKG1fcGxhY2Vob2xkZXJWaXNpYmxlKQorICAgICAgICBzZXRJbm5l
clRleHRWYWx1ZSh0ZXh0QXJlYS0+cGxhY2Vob2xkZXIoKSk7CisgICAgZWxzZQorICAgICAgICBz
ZXRJbm5lclRleHRWYWx1ZSh0ZXh0QXJlYS0+dmFsdWUoKSk7CiB9CiAKIHZvaWQgUmVuZGVyVGV4
dENvbnRyb2xNdWx0aUxpbmU6OmNhY2hlU2VsZWN0aW9uKGludCBzdGFydCwgaW50IGVuZCkKQEAg
LTEwMiw4ICsxMTAsMTYgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6Y2FjaGVT
ZQogCiBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6
Y3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0
CiB7Ci0gICAgUmVmUHRyPFJlbmRlclN0eWxlPiB0ZXh0QmxvY2tTdHlsZSA9IFJlbmRlclN0eWxl
OjpjcmVhdGUoKTsKLSAgICB0ZXh0QmxvY2tTdHlsZS0+aW5oZXJpdEZyb20oc3RhcnRTdHlsZSk7
CisgICAgSFRNTFRleHRBcmVhRWxlbWVudCogdGV4dEFyZWEgPSBzdGF0aWNfY2FzdDxIVE1MVGV4
dEFyZWFFbGVtZW50Kj4obm9kZSgpKTsKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHRleHRCbG9j
a1N0eWxlOworICAgIGlmICh0ZXh0QXJlYS0+cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSkg
eworICAgICAgICBpZiAoUmVuZGVyU3R5bGUqIHBzZXVkb1N0eWxlID0gZ2V0Q2FjaGVkUHNldWRv
U3R5bGUoSU5QVVRfUExBQ0VIT0xERVIpKQorICAgICAgICAgICAgdGV4dEJsb2NrU3R5bGUgPSBS
ZW5kZXJTdHlsZTo6Y2xvbmUocHNldWRvU3R5bGUpOworICAgIH0gCisgICAgaWYgKCF0ZXh0Qmxv
Y2tTdHlsZSkgeworICAgICAgICB0ZXh0QmxvY2tTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUo
KTsgICAKKyAgICAgICAgdGV4dEJsb2NrU3R5bGUtPmluaGVyaXRGcm9tKHN0YXJ0U3R5bGUpOwor
ICAgIH0KIAogICAgIGFkanVzdElubmVyVGV4dFN0eWxlKHN0YXJ0U3R5bGUsIHRleHRCbG9ja1N0
eWxlLmdldCgpKTsKIApAQCAtMTExLDcgKzEyNyw3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
IFJlbmRlclRleHRDb250cm8KICAgICAvLyBUaGVuIGhlcmUgd2Ugc2hvdWxkIHNldCB0aGUgdGV4
dEJsb2NrU3R5bGUgYXBwcm9wcmlhdGVseSBiYXNlZCBvZmYgdGhpcwogICAgIC8vIG9iamVjdCdz
IHN0eWxlKCktPndoaXRlU3BhY2UoKSBhbmQgc3R5bGUtPndvcmRXcmFwKCkuCiAgICAgLy8gU2V0
IHdvcmQgd3JhcCBwcm9wZXJ0eSBiYXNlZCBvbiB3cmFwIGF0dHJpYnV0ZS4KLSAgICBpZiAoc3Rh
dGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KG5vZGUoKSktPnNob3VsZFdyYXBUZXh0KCkp
IHsKKyAgICBpZiAodGV4dEFyZWEtPnNob3VsZFdyYXBUZXh0KCkpIHsKICAgICAgICAgdGV4dEJs
b2NrU3R5bGUtPnNldFdoaXRlU3BhY2UoUFJFX1dSQVApOwogICAgICAgICB0ZXh0QmxvY2tTdHls
ZS0+c2V0V29yZFdyYXAoQnJlYWtXb3JkV3JhcCk7CiAgICAgfSBlbHNlIHsKQEAgLTEyNCw0ICsx
NDAsOSBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvCiAgICAgcmV0
dXJuIHRleHRCbG9ja1N0eWxlLnJlbGVhc2UoKTsKIH0KIAorUmVuZGVyU3R5bGUqIFJlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lOjpwYXJlbnRTdHlsZSgpCit7CisgICAgcmV0dXJuIHN0eWxlKCk7
Cit9CisKIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xN
dWx0aUxpbmUuaAkocmV2aXNpb24gNDUxMzQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3Qm
LCBIaXRUZXN0UmVzdWx0JiwgaW50IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSwgSGl0VGVzdEFj
dGlvbik7CiAgICAgdm9pZCBmb3J3YXJkRXZlbnQoRXZlbnQqKTsKIAorcHJvdGVjdGVkOgorICAg
IHZpcnR1YWwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKCk7CisKIHByaXZhdGU6CiAgICAgdmly
dHVhbCBpbnQgcHJlZmVycmVkQ29udGVudFdpZHRoKGZsb2F0IGNoYXJXaWR0aCkgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIGFkanVzdENvbnRyb2xIZWlnaHRCYXNlZE9uTGluZUhlaWdodChpbnQg
bGluZUhlaWdodCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZS5jcHAJKHJldmlzaW9uIDQ1MTM0KQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAs
NyArNTAsNiBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShOb2RlKiBub2RlKQogICAg
IDogUmVuZGVyVGV4dENvbnRyb2wobm9kZSkKLSAgICAsIG1fcGxhY2Vob2xkZXJWaXNpYmxlKGZh
bHNlKQogICAgICwgbV9zZWFyY2hQb3B1cElzVmlzaWJsZShmYWxzZSkKICAgICAsIG1fc2hvdWxk
RHJhd0NhcHNMb2NrSW5kaWNhdG9yKGZhbHNlKQogICAgICwgbV9zZWFyY2hFdmVudFRpbWVyKHRo
aXMsICZSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNlYXJjaEV2ZW50VGltZXJGaXJlZCkK
QEAgLTc0LDIwICs3Myw5IEBAIGJvb2wgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpwbGFj
ZWgKICAgICByZXR1cm4gaW5wdXRFbGVtZW50KCktPnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxl
KCk7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp1cGRhdGVQbGFjZWhv
bGRlclZpc2liaWxpdHkoKQorUmVuZGVyU3R5bGUqIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZTo6cGFyZW50U3R5bGUoKQogewotICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IG1faW5u
ZXJCbG9jayA/IG1faW5uZXJCbG9jay0+cmVuZGVyZXIoKS0+c3R5bGUoKSA6IHN0eWxlKCk7Ci0K
LSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHRleHRCbG9ja1N0eWxlID0gY3JlYXRlSW5uZXJUZXh0
U3R5bGUocGFyZW50U3R5bGUpOwotICAgIEhUTUxFbGVtZW50KiBpbm5lclRleHQgPSBpbm5lclRl
eHRFbGVtZW50KCk7Ci0gICAgaW5uZXJUZXh0LT5yZW5kZXJlcigpLT5zZXRTdHlsZSh0ZXh0Qmxv
Y2tTdHlsZSk7Ci0KLSAgICBmb3IgKE5vZGUqIG4gPSBpbm5lclRleHQtPmZpcnN0Q2hpbGQoKTsg
bjsgbiA9IG4tPnRyYXZlcnNlTmV4dE5vZGUoaW5uZXJUZXh0KSkgewotICAgICAgICBpZiAoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IG4tPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICByZW5kZXJl
ci0+c2V0U3R5bGUodGV4dEJsb2NrU3R5bGUpOwotICAgIH0KLQotICAgIHVwZGF0ZUZyb21FbGVt
ZW50KCk7CisgICAgcmV0dXJuIG1faW5uZXJCbG9jayA/IG1faW5uZXJCbG9jay0+cmVuZGVyZXIo
KS0+c3R5bGUoKSA6IHN0eWxlKCk7CiB9CiAKIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lOjphZGRTZWFyY2hSZXN1bHQoKQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgJKHJldmlzaW9uIDQ1MTM0KQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDcgKzQzLDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBwbGFjZWhvbGRlcklzVmlzaWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGxhY2Vob2xkZXJWaXNpYmxlOyB9CiAgICAgYm9vbCBwbGFjZWhv
bGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJW
aXNpYmlsaXR5KCk7CiAKICAgICB2b2lkIGFkZFNlYXJjaFJlc3VsdCgpOwogICAgIHZvaWQgc3Rv
cFNlYXJjaEV2ZW50VGltZXIoKTsKQEAgLTcyLDYgKzcxLDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRTY3JvbGxUb3AoaW50KTsKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsKFNjcm9s
bERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIgPSAxLjBmKTsK
IAorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKCk7CisK
IHByaXZhdGU6CiAgICAgaW50IHRleHRCbG9ja1dpZHRoKCkgY29uc3Q7CiAgICAgdmlydHVhbCBp
bnQgcHJlZmVycmVkQ29udGVudFdpZHRoKGZsb2F0IGNoYXJXaWR0aCkgY29uc3Q7CkBAIC0xMjAs
NyArMTIyLDYgQEAgcHJpdmF0ZToKICAgICBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCgpIGNv
bnN0OwogCiBwcml2YXRlOgotICAgIGJvb2wgbV9wbGFjZWhvbGRlclZpc2libGU7CiAgICAgYm9v
bCBtX3NlYXJjaFBvcHVwSXNWaXNpYmxlOwogICAgIGJvb2wgbV9zaG91bGREcmF3Q2Fwc0xvY2tJ
bmRpY2F0b3I7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ1MjQ3KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMDYtMjUgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGVzdHMgZm9yIHRoZSBwbGFjZWhvbGRlciBh
dHRyaWJ1dGUgYW5kIERPTSBwcm9wZXJ0eSBvZiB0aGUgdGV4dGFyZWEgZWxlbWVudC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4CisKKyAgICAg
ICAgKiBmYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1kb20tcHJvcGVy
dHkuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3BsYWNl
aG9sZGVyLWRvbS1wcm9wZXJ0eS5qcy4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3RleHRhcmVhLXBs
YWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZG9tLXByb3BlcnR5Lmh0bWw6IENvcGllZCBm
cm9tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcGxhY2Vob2xkZXItZG9tLXByb3BlcnR5Lmh0bWwu
CisgICAgICAgICogZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItcHNldWRv
LXN0eWxlLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcGxhY2Vob2xk
ZXItcHNldWRvLXN0eWxlLmh0bWwuCisgICAgICAgICogZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFj
ZWhvbGRlci1zZXQtYXR0cmlidXRlLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvcGxhY2Vob2xkZXItc2V0LWF0dHJpYnV0ZS5odG1sLgorICAgICAgICAqIGZhc3QvZm9y
bXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LXZhbHVlLmh0bWw6IENvcGllZCBmcm9tIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvcGxhY2Vob2xkZXItc2V0LXZhbHVlLmh0bWwuCisgICAgICAgICog
cGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItcHNldWRvLXN0eWxl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMv
dGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNl
dC12YWx1ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDA5LTA2LTI1ICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZG9t
LXByb3BlcnR5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRv
bS1wcm9wZXJ0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0OAorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0ZXh0YXJlYS5wbGFjZWhvbGRlciBp
cyAiIgorUEFTUyB0ZXh0YXJlYS5wbGFjZWhvbGRlciBpcyAicDEiCitQQVNTIHRleHRhcmVhLnZh
bHVlIGlzICIiCitQQVNTIHRleHRhcmVhLmdldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiKSBpcyAi
cDIiCitQQVNTIHRleHRhcmVhLnBsYWNlaG9sZGVyIGlzICJwMiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZG9tLXByb3Bl
cnR5Lmh0bWwJKHJldmlzaW9uIDQ1MTM0KQkoZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Bs
YWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5odG1sOjQ1MTM0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1kb20tcHJvcGVydHkuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wbGFjZWhvbGRlci1kb20tcHJvcGVydHkuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZG9tLXBy
b3BlcnR5Lmh0bWwJKHJldmlzaW9uIDQ1MTM0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90
ZXh0YXJlYS1wbGFjZWhvbGRlci1kb20tcHJvcGVydHkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
Nyw3ICs3LDcgQEAKIDxib2R5PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcGxhY2Vob2xkZXItZG9tLXBy
b3BlcnR5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGV4dGFyZWEtcGxh
Y2Vob2xkZXItZG9tLXByb3BlcnR5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJl
YS1wbGFjZWhvbGRlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0IEBACisgIAorUEFTUyBlbGVtZW50LnBsYWNlaG9sZGVyIGlzICJmb29iYXIi
CitQQVNTIGVsZW1lbnQucGxhY2Vob2xkZXIgaXMgIiIKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1wc2V1ZG8tc3R5bGUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1z
dHlsZS5odG1sCShyZXZpc2lvbiA0NTEzNCkJKGZyb20gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9w
bGFjZWhvbGRlci1wc2V1ZG8tc3R5bGUuaHRtbDo0NTEzNCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItcHNldWRvLXN0eWxlLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMiBAQAorPHN0eWxlPgoraW5wdXQucmVkOjotd2Via2l0LWlucHV0LXBs
YWNlaG9sZGVyIHsKKyAgICBjb2xvcjogcmdiKDEwMCwgMCwgMCk7Cit9Cis8L3N0eWxlPgorVGhp
cyB0ZXN0cyB0aGF0IHlvdSBjYW4gc2V0IHRoZSBwbGFjZWhvbGRlciB0ZXh0IGNvbG9yLjxicj4K
KzxpbnB1dCBjbGFzcz0icmVkIiBwbGFjZWhvbGRlcj0idGV4dCI+Cis8aW5wdXQgY2xhc3M9InJl
ZCIgdHlwZT0ic2VhcmNoIiBwbGFjZWhvbGRlcj0ic2VhcmNoIj4KKzxpbnB1dCBjbGFzcz0icmVk
IiB0eXBlPSJwYXNzd29yZCIgcGxhY2Vob2xkZXI9InBhc3N3b3JkIj4KKzxpbnB1dCBjbGFzcz0i
cmVkIiBkaXNhYmxlZCBwbGFjZWhvbGRlcj0iZGlzYWJsZWQgdGV4dCI+Cis8aW5wdXQgcGxhY2Vo
b2xkZXI9ImRlZmF1bHQiPgorPGlucHV0IHBsYWNlaG9sZGVyPSJkZWZhdWx0IGRpc2FibGVkIj4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItcHNldWRv
LXN0eWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJl
YS1wbGFjZWhvbGRlci1wc2V1ZG8tc3R5bGUuaHRtbAkocmV2aXNpb24gNDUxMzQpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1zdHlsZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICsxLDEwIEBACiA8c3R5bGU+Ci1pbnB1dC5yZWQ6Oi13
ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewordGV4dGFyZWEucmVkOjotd2Via2l0LWlucHV0LXBs
YWNlaG9sZGVyIHsKICAgICBjb2xvcjogcmdiKDEwMCwgMCwgMCk7CiB9CiA8L3N0eWxlPgogVGhp
cyB0ZXN0cyB0aGF0IHlvdSBjYW4gc2V0IHRoZSBwbGFjZWhvbGRlciB0ZXh0IGNvbG9yLjxicj4K
LTxpbnB1dCBjbGFzcz0icmVkIiBwbGFjZWhvbGRlcj0idGV4dCI+Ci08aW5wdXQgY2xhc3M9InJl
ZCIgdHlwZT0ic2VhcmNoIiBwbGFjZWhvbGRlcj0ic2VhcmNoIj4KLTxpbnB1dCBjbGFzcz0icmVk
IiB0eXBlPSJwYXNzd29yZCIgcGxhY2Vob2xkZXI9InBhc3N3b3JkIj4KLTxpbnB1dCBjbGFzcz0i
cmVkIiBkaXNhYmxlZCBwbGFjZWhvbGRlcj0iZGlzYWJsZWQgdGV4dCI+Ci08aW5wdXQgcGxhY2Vo
b2xkZXI9ImRlZmF1bHQiPgotPGlucHV0IHBsYWNlaG9sZGVyPSJkZWZhdWx0IGRpc2FibGVkIj4K
Kzx0ZXh0YXJlYSBjbGFzcz0icmVkIiBwbGFjZWhvbGRlcj0idGV4dCI+PC90ZXh0YXJlYT4KKzx0
ZXh0YXJlYSBjbGFzcz0icmVkIiBkaXNhYmxlZCBwbGFjZWhvbGRlcj0iZGlzYWJsZWQgdGV4dCI+
PC90ZXh0YXJlYT4KKzx0ZXh0YXJlYSBwbGFjZWhvbGRlcj0iZGVmYXVsdCI+PC90ZXh0YXJlYT4K
Kzx0ZXh0YXJlYSBkaXNhYmxlZCBwbGFjZWhvbGRlcj0iZGVmYXVsdCBkaXNhYmxlZCI+PC90ZXh0
YXJlYT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXIt
c2V0LWF0dHJpYnV0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
dGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LWF0dHJpYnV0ZS5odG1sCShyZXZpc2lvbiA0NTEzNCkJ
KGZyb20gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wbGFjZWhvbGRlci1zZXQtYXR0cmlidXRlLmh0
bWw6NDUxMzQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVy
LXNldC1hdHRyaWJ1dGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIxIEBACis8c2Ny
aXB0PgorCitmdW5jdGlvbiBmaW5pc2hUZXN0KCkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnaW5wdXQnKS5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywnUGxhY2Vob2xkZXInKTsK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBzZXRUaW1lb3V0KGZpbmlzaFRlc3QsIDApOworfQor
Cis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPklmIHlvdSBjYW4gc2VlIHRo
ZSB3b3JkICJQbGFjZWhvbGRlciIgaW4gdGhlIHRleHQgZmllbGQsIHRoZW4gYWxsIGlzIHdlbGwu
PC9wPgorPHA+PGlucHV0IHR5cGU9InRleHQiIGlkPSJpbnB1dCI+PC9wPgorPC9ib2R5PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtYXR0cmli
dXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1w
bGFjZWhvbGRlci1zZXQtYXR0cmlidXRlLmh0bWwJKHJldmlzaW9uIDQ1MTM0KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtYXR0cmlidXRlLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBACiAKIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKQog
ewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dCcpLnNldEF0dHJpYnV0ZSgncGxh
Y2Vob2xkZXInLCdQbGFjZWhvbGRlcicpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0
ZXh0YXJlYScpLnNldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInLCdQbGFjZWhvbGRlcicpOwogICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKIH0KQEAgLTE2LDYgKzE2LDYgQEAgZnVuY3Rpb24gdGVzdCgp
CiAKIDwvc2NyaXB0PgogPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgotPHA+SWYgeW91IGNhbiBzZWUg
dGhlIHdvcmQgIlBsYWNlaG9sZGVyIiBpbiB0aGUgdGV4dCBmaWVsZCwgdGhlbiBhbGwgaXMgd2Vs
bC48L3A+Ci08cD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0Ij48L3A+Cis8cD5JZiB5b3Ug
Y2FuIHNlZSB0aGUgd29yZCAiUGxhY2Vob2xkZXIiIGluIHRoZSB0ZXh0IGFyZWEsIHRoZW4gYWxs
IGlzIHdlbGwuPC9wPgorPHA+PHRleHRhcmVhIGlkPSJ0ZXh0YXJlYSI+PC90ZXh0YXJlYT48L3A+
CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9s
ZGVyLXNldC12YWx1ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
dGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LXZhbHVlLmh0bWwJKHJldmlzaW9uIDQ1MTM0KQkoZnJv
bSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3BsYWNlaG9sZGVyLXNldC12YWx1ZS5odG1sOjQ1MTM0
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFs
dWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxoZWFkPgor
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorICAgIGZ1
bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
ZWFyY2hmaWVsZCcpLnZhbHVlID0gJ05ldyB0ZXh0JzsKKyAgICB9CisgIDwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICA8cD5UZXN0IGZvciA8YSBocmVmPSJo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ1MDgiPmh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDUwODwvYT4uIFNlYXJjaCBmaWVsZCBkb2Vz
IG5vdCByZWRyYXcgaWYgdmFsdWUgc2V0LCB3aGVuIGl0IGhhcyBwbGFjZWhvbGRlciB0ZXh0Ljwv
cD4KKworICA8aW5wdXQgaWQ9InNlYXJjaGZpZWxkIiB0eXBlPSJzZWFyY2giIHBsYWNlaG9sZGVy
PSJQbGFjZWhvbGRlciB0ZXh0Ij4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9s
ZGVyLXNldC12YWx1ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
dGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LXZhbHVlLmh0bWwJKHJldmlzaW9uIDQ1MTM0KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFsdWUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMywxMyArMywxMyBAQAogICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgogICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAg
IHsKLSAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2hmaWVsZCcpLnZhbHVlID0g
J05ldyB0ZXh0JzsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0JykudmFsdWUg
PSAnTmV3IHRleHQnOwogICAgIH0KICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+Ci0gIDxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNDUwOCI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI0NTA4PC9hPi4gU2VhcmNoIGZpZWxkIGRvZXMgbm90IHJlZHJhdyBpZiB2YWx1
ZSBzZXQsIHdoZW4gaXQgaGFzIHBsYWNlaG9sZGVyIHRleHQuPC9wPgorICA8cD5UZXN0IGZvciA8
YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDgiPmh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODwvYT4uPC9wPgogCi0g
IDxpbnB1dCBpZD0ic2VhcmNoZmllbGQiIHR5cGU9InNlYXJjaCIgcGxhY2Vob2xkZXI9IlBsYWNl
aG9sZGVyIHRleHQiPgorICA8dGV4dGFyZWEgaWQ9InRleHQiIHBsYWNlaG9sZGVyPSJQbGFjZWhv
bGRlciB0ZXh0Ij48L3RleHRhcmVhPgogPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3Vy
Y2VzL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1kb20t
cHJvcGVydHkuanMJKHJldmlzaW9uIDQ1MTM0KQkoZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3Jlc291cmNlcy9wbGFjZWhvbGRlci1kb20tcHJvcGVydHkuanM6NDUxMzQpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1kb20tcHJvcGVy
dHkuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorZGVzY3JpcHRpb24oIlRlc3Qg
Zm9yIDxhIGhyZWY9J2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkw
Myc+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTAzPC9hPiIpOwor
Cit2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworCitzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImlucHV0LnBsYWNlaG9sZGVyIiwgJycpOworCitpbnB1dC5zZXRBdHRy
aWJ1dGUoInBsYWNlaG9sZGVyIiwgInAxIikKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiaW5wdXQu
cGxhY2Vob2xkZXIiLCAncDEnKTsKKworaW5wdXQucGxhY2Vob2xkZXIgPSAncDInOworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJpbnB1dC5nZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJykiLCAncDIn
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiaW5wdXQucGxhY2Vob2xkZXIiLCAncDInKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3Jlc291cmNlcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1kb20tcHJvcGVydHkuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvdGV4dGFyZWEtcGxhY2Vo
b2xkZXItZG9tLXByb3BlcnR5LmpzCShyZXZpc2lvbiA0NTEzNCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvcmVzb3VyY2VzL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5qcwko
d29ya2luZyBjb3B5KQpAQCAtMSwxNCArMSwxNSBAQAotZGVzY3JpcHRpb24oIlRlc3QgZm9yIDxh
IGhyZWY9J2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwMyc+aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTAzPC9hPiIpOworZGVzY3Jp
cHRpb24oJ1Rlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTI0OCI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MjQ4PC9hPicpOwogCi12YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIp
OwordmFyIHRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTsKIAot
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbnB1dC5wbGFjZWhvbGRlciIsICcnKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygndGV4dGFyZWEucGxhY2Vob2xkZXInLCAnJyk7CiAKLWlucHV0LnNldEF0
dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCAicDEiKQotc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbnB1
dC5wbGFjZWhvbGRlciIsICdwMScpOwordGV4dGFyZWEuc2V0QXR0cmlidXRlKCdwbGFjZWhvbGRl
cicsICdwMScpCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3RleHRhcmVhLnBsYWNlaG9sZGVyJywg
J3AxJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3RleHRhcmVhLnZhbHVlJywgJycpOwogCi1p
bnB1dC5wbGFjZWhvbGRlciA9ICdwMic7Ci1zaG91bGRCZUVxdWFsVG9TdHJpbmcoImlucHV0Lmdl
dEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInKSIsICdwMicpOwotc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJpbnB1dC5wbGFjZWhvbGRlciIsICdwMicpOwordGV4dGFyZWEucGxhY2Vob2xkZXIgPSAncDIn
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXh0YXJlYS5nZXRBdHRyaWJ1dGUoInBsYWNlaG9s
ZGVyIiknLCAncDInKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygndGV4dGFyZWEucGxhY2Vob2xk
ZXInLCAncDInKTsKIAogdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1wc2V1
ZG8tc3R5bGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1zdHlsZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jt
cy90ZXh0YXJlYS1wbGFjZWhvbGRlci1wc2V1ZG8tc3R5bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM1IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVu
ZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVy
Qm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAzMjh4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MzI4OiAiVGhpcyB0ZXN0cyB0aGF0IHlvdSBjYW4gc2V0IHRoZSBwbGFjZWhvbGRlciB0ZXh0IGNv
bG9yLiIKKyAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDMyOCwxNCkgc2l6ZSAweDAKKyAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMTMzLDQwKSBzaXplIDR4MTgKKyAgICAgICAgdGV4dCBydW4g
YXQgKDEzMyw0MCkgd2lkdGggNDogIiAiCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDI3
MCw0MCkgc2l6ZSA0eDE4CisgICAgICAgIHRleHQgcnVuIGF0ICgyNzAsNDApIHdpZHRoIDQ6ICIg
IgorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg0MDcsNDApIHNpemUgNHgxOAorICAgICAg
ICB0ZXh0IHJ1biBhdCAoNDA3LDQwKSB3aWR0aCA0OiAiICIKKyAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorbGF5ZXIgYXQgKDEwLDI4KSBzaXplIDEyOXgzMiBjbGlw
IGF0ICgxMSwyOSkgc2l6ZSAxMjd4MzAKKyAgUmVuZGVyVGV4dENvbnRyb2wge1RFWFRBUkVBfSBh
dCAoMiwyMCkgc2l6ZSAxMjl4MzIgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDFweCBzb2xp
ZCAjMDAwMDAwKV0KKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDEyM3gxMyBb
Y29sb3I9IzY0MDAwMF0KKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDIy
eDEzCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIyOiAidGV4dCIKK2xheWVyIGF0
ICgxNDcsMjgpIHNpemUgMTI5eDMyIGNsaXAgYXQgKDE0OCwyOSkgc2l6ZSAxMjd4MzAKKyAgUmVu
ZGVyVGV4dENvbnRyb2wge1RFWFRBUkVBfSBhdCAoMTM5LDIwKSBzaXplIDEyOXgzMiBbYmdjb2xv
cj0jRkZGRkZGXSBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgzLDMpIHNpemUgMTIzeDEzIFtjb2xvcj0jQjgwMDAwXQorICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzB4MTMKKyAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggNzA6ICJkaXNhYmxlZCB0ZXh0IgorbGF5ZXIgYXQgKDI4NCwyOCkgc2l6ZSAxMjl4
MzIgY2xpcCBhdCAoMjg1LDI5KSBzaXplIDEyN3gzMAorICBSZW5kZXJUZXh0Q29udHJvbCB7VEVY
VEFSRUF9IGF0ICgyNzYsMjApIHNpemUgMTI5eDMyIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6
ICgxcHggc29saWQgIzAwMDAwMCldCisgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6
ZSAxMjN4MTMgW2NvbG9yPSNBOUE5QTldCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSAzOHgxMworICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzODogImRlZmF1
bHQiCitsYXllciBhdCAoNDIxLDI4KSBzaXplIDEyOXgzMiBjbGlwIGF0ICg0MjIsMjkpIHNpemUg
MTI3eDMwCisgIFJlbmRlclRleHRDb250cm9sIHtURVhUQVJFQX0gYXQgKDQxMywyMCkgc2l6ZSAx
Mjl4MzIgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAg
ICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDEyM3gxMyBbY29sb3I9I0E5QTlBOV0K
KyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDg2eDEzCisgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDg2OiAiZGVmYXVsdCBkaXNhYmxlZCIKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC1h
dHRyaWJ1dGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC1hdHRyaWJ1dGUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9y
bXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBS
ZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5k
ZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQ
fSBhdCAoMCwwKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSA0Mzl4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0Mzk6ICJJ
ZiB5b3UgY2FuIHNlZSB0aGUgd29yZCBcIlBsYWNlaG9sZGVyXCIgaW4gdGhlIHRleHQgYXJlYSwg
dGhlbiBhbGwgaXMgd2VsbC4iCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMzQpIHNpemUg
Nzg0eDM2CitsYXllciBhdCAoMTAsNDQpIHNpemUgMTI5eDMyIGNsaXAgYXQgKDExLDQ1KSBzaXpl
IDEyN3gzMAorICBSZW5kZXJUZXh0Q29udHJvbCB7VEVYVEFSRUF9IGF0ICgyLDIpIHNpemUgMTI5
eDMyIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSAxMjN4MTMgW2NvbG9yPSNBOUE5QTldCisg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA2MngxMworICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCA2MjogIlBsYWNlaG9sZGVyIgpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LXZhbHVlLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9m
b3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFsdWUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxh
Y2Vob2xkZXItc2V0LXZhbHVlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
MiBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sg
e0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4
LDgpIHNpemUgNzg0eDU4NAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0
eDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDUzeDE4CisgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTM6ICJUZXN0IGZvciAiCisgICAgICAgIFJl
bmRlcklubGluZSB7QX0gYXQgKDAsMCkgc2l6ZSAzMDV4MTggW2NvbG9yPSMwMDAwRUVdCisgICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg1MywwKSBzaXplIDMwNXgxOAorICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDUzLDApIHdpZHRoIDMwNTogImh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTI0OCIKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgz
NTgsMCkgc2l6ZSA0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDM1OCwwKSB3aWR0aCA0OiAi
LiIKKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDM0KSBzaXplIDc4NHgzNgor
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorbGF5ZXIgYXQgKDEwLDQ0KSBzaXplIDEyOXgzMiBjbGlw
IGF0ICgxMSw0NSkgc2l6ZSAxMjd4MzAKKyAgUmVuZGVyVGV4dENvbnRyb2wge1RFWFRBUkVBfSBh
dCAoMiwyKSBzaXplIDEyOXgzMiBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMXB4IHNvbGlk
ICMwMDAwMDApXQorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgMTIzeDEzCisg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0OHgxMworICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCA0ODogIk5ldyB0ZXh0Igo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32114</attachid>
            <date>2009-06-30 23:32:12 -0700</date>
            <delta_ts>2009-08-10 19:11:12 -0700</delta_ts>
            <desc>Proposed patch (rev.3)</desc>
            <filename>textarea@placeholder-3.diff</filename>
            <type>text/plain</type>
            <size>32642</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTQxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMDktMDYtMjUgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciB0aGUgcGxhY2Vob2xkZXIgYXR0cmlidXRlIGFuZCBET00gcHJvcGVydHkg
b2YgdGhlIHRleHRhcmVhIGVsZW1lbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTI0OAorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL3RleHRh
cmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zv
cm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1zdHlsZS5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC1hdHRyaWJ1dGUuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFsdWUuaHRt
bAorCisgICAgICAgICogY3NzL2h0bWwuY3NzOiAgQWRkZWQgdGV4dGFyZWE6Oi13ZWJraXQtaW5w
dXQtcGxhY2Vob2xkZXIgZGVmaW5pdGlvbi4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6SFRNTFRl
eHRBcmVhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6IFVwZGF0ZXMgdGhlIHBsYWNlaG9sZGVyIHN0YXRlLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6c2V0VmFsdWUpOiBVcGRhdGVzIHRo
ZSBwbGFjZWhvbGRlciBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnBsYWNlaG9sZGVyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFF
bGVtZW50OjpzZXRQbGFjZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRl
eHRBcmVhRWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCk6IFVwZGF0ZXMg
dGhlIHBsYWNlaG9sZGVyIHN0YXRlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxl
bWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQpOiBVcGRhdGVzIHRoZSBwbGFjZWhvbGRlciBzdGF0ZS4K
KyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKTogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRQbGFjZWhvbGRlclNo
b3VsZEJlVmlzaWJsZSk6IEFkZGVkLgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5pZGw6IEFkZGVkIHRoZSBwbGFjZWhvbGRlciBwcm9wZXJ0eS4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwOiBNb3ZlZCBzb21lIGNvZGUgZnJvbSBSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUgdG8gUmVuZGVyVGV4dENvbnRyb2wuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUZXh0Q29udHJvbDo6UmVuZGVyVGV4dENvbnRyb2wpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dENvbnRyb2w6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmg6IE1vdmVkIHNvbWUgY29kZSBmcm9t
IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSB0byBSZW5kZXJUZXh0Q29udHJvbC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6Om5vZGVBdFBvaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjp1cGRhdGVGcm9tRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6Y3JlYXRl
SW5uZXJUZXh0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmU6OnBhcmVudFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLmNwcDogTW92ZWQgc29tZSBjb2RlIGZyb20gUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lIHRvIFJlbmRlclRleHRDb250cm9sLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpwYXJlbnRTdHlsZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oOiBNb3ZlZCBzb21l
IGNvZGUgZnJvbSBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUgdG8gUmVuZGVyVGV4dENvbnRy
b2wuCisKIDIwMDktMDYtMzAgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViQ29yZS9jc3MvaHRtbC5j
c3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvaHRtbC5jc3MJKHJldmlzaW9uIDQ1NDE5KQor
KysgV2ViQ29yZS9jc3MvaHRtbC5jc3MJKHdvcmtpbmcgY29weSkKQEAgLTM2Miw3ICszNjIsNyBA
QCB0ZXh0YXJlYSB7CiAgICAgcGFkZGluZzogMnB4OwogfQogCi1pbnB1dDo6LXdlYmtpdC1pbnB1
dC1wbGFjZWhvbGRlciwgaXNpbmRleDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CitpbnB1
dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciwgaXNpbmRleDo6LXdlYmtpdC1pbnB1dC1wbGFj
ZWhvbGRlciwgdGV4dGFyZWE6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgIGNvbG9y
OiBkYXJrR3JheTsKIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAko
cmV2aXNpb24gNDU0MTkpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAgSFRNTFRleHRBcmVhRWxlbWVudDo6SFRN
TFRleHRBcmVhRWxlbWVudAogICAgICwgbV93cmFwKFNvZnRXcmFwKQogICAgICwgbV9jYWNoZWRT
ZWxlY3Rpb25TdGFydCgtMSkKICAgICAsIG1fY2FjaGVkU2VsZWN0aW9uRW5kKC0xKQorICAgICwg
bV9wbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZShmYWxzZSkKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZSh0ZXh0YXJlYVRhZykpOwogICAgIHNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVy
ZXIodHJ1ZSk7CkBAIC0xODAsNiArMTgxLDggQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dAogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0cikg
ewogICAgICAgICAvLyBEb24ndCBtYXAgJ2FsaWduJyBhdHRyaWJ1dGUuICBUaGlzIG1hdGNoZXMg
d2hhdCBGaXJlZm94LCBPcGVyYSBhbmQgSUUgZG8uCiAgICAgICAgIC8vIFNlZSBodHRwOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDc1CisgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gcGxhY2Vob2xkZXJBdHRyKSB7CisgICAgICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlz
aWJpbGl0eSh0cnVlKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmZvY3VzQXR0
cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZm9jdXNF
dmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uYmx1ckF0dHIpCkBAIC0yOTYsNiArMjk5LDcgQEAgdm9p
ZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1ZShjb25zdAogCiAgICAgbV92YWx1ZSA9IG5v
cm1hbGl6ZWRWYWx1ZTsKICAgICBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKHRy
dWUpOworICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSgpOwogICAgIGlmIChpbkRvY3Vt
ZW50KCkpCiAgICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBp
ZiAocmVuZGVyZXIoKSkKQEAgLTM5NSw0ICszOTksMzcgQEAgYm9vbCBIVE1MVGV4dEFyZWFFbGVt
ZW50OjpzaG91bGRVc2VJbnB1dAogICAgIHJldHVybiB0cnVlOwogfQogCitTdHJpbmcgSFRNTFRl
eHRBcmVhRWxlbWVudDo6cGxhY2Vob2xkZXIoKSBjb25zdAoreworICAgIHJldHVybiBnZXRBdHRy
aWJ1dGUocGxhY2Vob2xkZXJBdHRyKS5zdHJpbmcoKTsKK30KKwordm9pZCBIVE1MVGV4dEFyZWFF
bGVtZW50OjpzZXRQbGFjZWhvbGRlcihjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIHNldEF0
dHJpYnV0ZShwbGFjZWhvbGRlckF0dHIsIHZhbHVlKTsKK30KKwordm9pZCBIVE1MVGV4dEFyZWFF
bGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoYm9vbCBwbGFjZWhvbGRlclZhbHVl
Q2hhbmdlZCkKK3sKKyAgICBib29sIG9sZFBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlID0gbV9w
bGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZTsKKyAgICBtX3BsYWNlaG9sZGVyU2hvdWxkQmVWaXNp
YmxlID0gdmFsdWUoKS5pc0VtcHR5KCkKKyAgICAgICAgJiYgZG9jdW1lbnQoKS0+Zm9jdXNlZE5v
ZGUoKSAhPSB0aGlzCisgICAgICAgICYmICFwbGFjZWhvbGRlcigpLmlzRW1wdHkoKTsKKyAgICBp
ZiAoKG9sZFBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlICE9IG1fcGxhY2Vob2xkZXJTaG91bGRC
ZVZpc2libGUgfHwgcGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQpCisgICAgICAgICYmIHJlbmRlcmVy
KCkpCisgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKj4ocmVu
ZGVyZXIoKSktPnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSgpOworfQorCit2b2lkIEhUTUxU
ZXh0QXJlYUVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCgpCit7CisgICAgdXBkYXRlUGxhY2Vo
b2xkZXJWaXNpYmlsaXR5KCk7CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6
ZGlzcGF0Y2hGb2N1c0V2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6ZGlz
cGF0Y2hCbHVyRXZlbnQoKQoreworICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSgpOwor
ICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoQmx1ckV2ZW50KCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgJ
KHJldmlzaW9uIDQ1NDE5KQorKysgV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtOTEsMTAgKzkxLDE4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRVc2VJbnB1dE1ldGhvZCgpIGNvbnN0OwogCisgICAgU3RyaW5nIHBsYWNlaG9s
ZGVyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQbGFjZWhvbGRlcihjb25zdCBTdHJpbmcmKTsKKyAg
ICBib29sIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9wbGFj
ZWhvbGRlclNob3VsZEJlVmlzaWJsZTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3Vz
RXZlbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoKTsKKwogcHJpdmF0
ZToKICAgICBlbnVtIFdyYXBNZXRob2QgeyBOb1dyYXAsIFNvZnRXcmFwLCBIYXJkV3JhcCB9Owog
CiAgICAgdm9pZCB1cGRhdGVWYWx1ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0UGxhY2Vob2xkZXJT
aG91bGRCZVZpc2libGUoYm9vbCB2aXNpYmxlKSB7IG1fcGxhY2Vob2xkZXJTaG91bGRCZVZpc2li
bGUgPSB2aXNpYmxlOyB9CisgICAgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoYm9v
bCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdlZCA9IGZhbHNlKTsKIAogICAgIGludCBtX3Jvd3M7CiAg
ICAgaW50IG1fY29sczsKQEAgLTEwMiw2ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUg
U3RyaW5nIG1fdmFsdWU7CiAgICAgaW50IG1fY2FjaGVkU2VsZWN0aW9uU3RhcnQ7CiAgICAgaW50
IG1fY2FjaGVkU2VsZWN0aW9uRW5kOworICAgIGJvb2wgbV9wbGFjZWhvbGRlclNob3VsZEJlVmlz
aWJsZTsKIH07CiAKIH0gLy9uYW1lc3BhY2UKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5pZGwJKHJldmlzaW9uIDQ1NDE5KQorKysgV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBAIG1vZHVsZSBodG1sIHsK
ICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICBkaXNhYmxl
ZDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICBhdXRv
Zm9jdXM7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxsU3Ry
aW5nXSBET01TdHJpbmcgICAgICAgICAgICBuYW1lOworICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUgIERPTVN0cmluZyAgICAgICAgICAgIHBsYWNlaG9sZGVyOwogICAgICAgICAgICAgICAgICBh
dHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAgICAgIHJlYWRPbmx5OwogICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGUgIGxvbmcgICAgICAgICAgICAgICAgIHJvd3M7CiAgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSAgRE9NU3RyaW5nICAgICAgICAgICAgdHlwZTsKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAJKHJldmlzaW9uIDQ1NDE5KQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2
OSw3IEBAIHN0YXRpYyBDb2xvciBkaXNhYmxlZFRleHRDb2xvcihjb25zdCBDb2wKIAogUmVuZGVy
VGV4dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9sKE5vZGUqIG5vZGUpCiAgICAgOiBSZW5kZXJC
bG9jayhub2RlKQorICAgICwgbV9wbGFjZWhvbGRlclZpc2libGUoZmFsc2UpCiAgICAgLCBtX2Vk
aXRlZChmYWxzZSkKICAgICAsIG1fdXNlckVkaXRlZChmYWxzZSkKIHsKQEAgLTUzMyw0ICs1MzQs
MTggQEAgSFRNTEVsZW1lbnQqIFJlbmRlclRleHRDb250cm9sOjppbm5lclRleAogICAgIHJldHVy
biBtX2lubmVyVGV4dC5nZXQoKTsKIH0KIAordm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6dXBkYXRl
UGxhY2Vob2xkZXJWaXNpYmlsaXR5KCkKK3sKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHRleHRC
bG9ja1N0eWxlID0gY3JlYXRlSW5uZXJUZXh0U3R5bGUocGFyZW50U3R5bGUoKSk7CisgICAgSFRN
TEVsZW1lbnQqIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKTsKKyAgICBpbm5lclRleHQt
PnJlbmRlcmVyKCktPnNldFN0eWxlKHRleHRCbG9ja1N0eWxlKTsKKworICAgIGZvciAoTm9kZSog
biA9IGlubmVyVGV4dC0+Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZShp
bm5lclRleHQpKSB7CisgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbi0+cmVu
ZGVyZXIoKSkKKyAgICAgICAgICAgIHJlbmRlcmVyLT5zZXRTdHlsZSh0ZXh0QmxvY2tTdHlsZSk7
CisgICAgfQorCisgICAgdXBkYXRlRnJvbUVsZW1lbnQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCShyZXZpc2lv
biA0NTQxOSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgJKHdvcmtp
bmcgY29weSkKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogICAgIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQgaW5kZXgpOwogICAgIGludCBpbmRleEZvclZpc2li
bGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKIAorICAgIHZvaWQgdXBkYXRlUGxh
Y2Vob2xkZXJWaXNpYmlsaXR5KCk7CisKIHByb3RlY3RlZDoKICAgICBSZW5kZXJUZXh0Q29udHJv
bChOb2RlKik7CiAKQEAgLTkxLDEwICs5MywxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2
b2lkIGFkanVzdENvbnRyb2xIZWlnaHRCYXNlZE9uTGluZUhlaWdodChpbnQgbGluZUhlaWdodCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYWNoZVNlbGVjdGlvbihpbnQgc3RhcnQsIGludCBlbmQp
ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyVGV4
dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUoKSA9IDA7CiAKICAgICBmcmllbmQgY2xhc3Mg
VGV4dEl0ZXJhdG9yOwogICAgIEhUTUxFbGVtZW50KiBpbm5lclRleHRFbGVtZW50KCkgY29uc3Q7
CiAKKyAgICBib29sIG1fcGxhY2Vob2xkZXJWaXNpYmxlOworCiBwcml2YXRlOgogICAgIFN0cmlu
ZyBmaW5pc2hUZXh0KFZlY3RvcjxVQ2hhcj4mKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAkocmV2aXNpb24gNDU0
MTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDEwIEBAIGJvb2wgUmVuZGVyVGV4dENvbnRyb2xN
dWx0aUxpbmU6Om5vZGVBdFAKICAgICBpZiAoIVJlbmRlclRleHRDb250cm9sOjpub2RlQXRQb2lu
dChyZXF1ZXN0LCByZXN1bHQsIHgsIHksIHR4LCB0eSwgaGl0VGVzdEFjdGlvbikpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGlmIChyZXN1bHQuaW5uZXJOb2RlKCkgPT0gbm9kZSgpIHx8
IHJlc3VsdC5pbm5lck5vZGUoKSA9PSBpbm5lclRleHRFbGVtZW50KCkpCisgICAgSFRNTFRleHRB
cmVhRWxlbWVudCogdGV4dEFyZWEgPSBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4o
bm9kZSgpKTsKKyAgICBpZiAocmVzdWx0LmlubmVyTm9kZSgpID09IG5vZGUoKQorICAgICAgICB8
fCAhdGV4dEFyZWEtPnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgJiYgcmVzdWx0LmlubmVy
Tm9kZSgpID09IGlubmVyVGV4dEVsZW1lbnQoKQorICAgICAgICB8fCB0ZXh0QXJlYS0+cGxhY2Vo
b2xkZXJTaG91bGRCZVZpc2libGUoKSAmJiByZXN1bHQuaW5uZXJOb2RlKCktPmlzRGVzY2VuZGFu
dE9mKGlubmVyVGV4dEVsZW1lbnQoKSkpCiAgICAgICAgIGhpdElubmVyVGV4dEVsZW1lbnQocmVz
dWx0LCB4LCB5LCB0eCwgdHkpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC05Miw3ICs5NSwxMiBA
QCB2b2lkIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjp1cGRhdGVGCiAgICAgY3JlYXRlU3Vi
dHJlZUlmTmVlZGVkKDApOwogICAgIFJlbmRlclRleHRDb250cm9sOjp1cGRhdGVGcm9tRWxlbWVu
dCgpOwogCi0gICAgc2V0SW5uZXJUZXh0VmFsdWUoc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxl
bWVudCo+KG5vZGUoKSktPnZhbHVlKCkpOworICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQqIHRleHRB
cmVhID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KG5vZGUoKSk7CisgICAgbV9w
bGFjZWhvbGRlclZpc2libGUgPSB0ZXh0QXJlYS0+cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUo
KTsKKyAgICBpZiAobV9wbGFjZWhvbGRlclZpc2libGUpCisgICAgICAgIHNldElubmVyVGV4dFZh
bHVlKHRleHRBcmVhLT5wbGFjZWhvbGRlcigpKTsKKyAgICBlbHNlCisgICAgICAgIHNldElubmVy
VGV4dFZhbHVlKHRleHRBcmVhLT52YWx1ZSgpKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZTo6Y2FjaGVTZWxlY3Rpb24oaW50IHN0YXJ0LCBpbnQgZW5kKQpAQCAtMTAyLDgg
KzExMCwxNiBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpjYWNoZVNlCiAKIFBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpjcmVhdGVJ
bm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3QKIHsKLSAg
ICBSZWZQdHI8UmVuZGVyU3R5bGU+IHRleHRCbG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0
ZSgpOwotICAgIHRleHRCbG9ja1N0eWxlLT5pbmhlcml0RnJvbShzdGFydFN0eWxlKTsKKyAgICBI
VE1MVGV4dEFyZWFFbGVtZW50KiB0ZXh0QXJlYSA9IHN0YXRpY19jYXN0PEhUTUxUZXh0QXJlYUVs
ZW1lbnQqPihub2RlKCkpOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gdGV4dEJsb2NrU3R5bGU7
CisgICAgaWYgKHRleHRBcmVhLT5wbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpKSB7CisgICAg
ICAgIGlmIChSZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBnZXRDYWNoZWRQc2V1ZG9TdHlsZShJ
TlBVVF9QTEFDRUhPTERFUikpCisgICAgICAgICAgICB0ZXh0QmxvY2tTdHlsZSA9IFJlbmRlclN0
eWxlOjpjbG9uZShwc2V1ZG9TdHlsZSk7CisgICAgfSAKKyAgICBpZiAoIXRleHRCbG9ja1N0eWxl
KSB7CisgICAgICAgIHRleHRCbG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOyAgIAor
ICAgICAgICB0ZXh0QmxvY2tTdHlsZS0+aW5oZXJpdEZyb20oc3RhcnRTdHlsZSk7CisgICAgfQog
CiAgICAgYWRqdXN0SW5uZXJUZXh0U3R5bGUoc3RhcnRTdHlsZSwgdGV4dEJsb2NrU3R5bGUuZ2V0
KCkpOwogCkBAIC0xMTEsNyArMTI3LDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gUmVuZGVy
VGV4dENvbnRybwogICAgIC8vIFRoZW4gaGVyZSB3ZSBzaG91bGQgc2V0IHRoZSB0ZXh0QmxvY2tT
dHlsZSBhcHByb3ByaWF0ZWx5IGJhc2VkIG9mZiB0aGlzCiAgICAgLy8gb2JqZWN0J3Mgc3R5bGUo
KS0+d2hpdGVTcGFjZSgpIGFuZCBzdHlsZS0+d29yZFdyYXAoKS4KICAgICAvLyBTZXQgd29yZCB3
cmFwIHByb3BlcnR5IGJhc2VkIG9uIHdyYXAgYXR0cmlidXRlLgotICAgIGlmIChzdGF0aWNfY2Fz
dDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4obm9kZSgpKS0+c2hvdWxkV3JhcFRleHQoKSkgeworICAg
IGlmICh0ZXh0QXJlYS0+c2hvdWxkV3JhcFRleHQoKSkgewogICAgICAgICB0ZXh0QmxvY2tTdHls
ZS0+c2V0V2hpdGVTcGFjZShQUkVfV1JBUCk7CiAgICAgICAgIHRleHRCbG9ja1N0eWxlLT5zZXRX
b3JkV3JhcChCcmVha1dvcmRXcmFwKTsKICAgICB9IGVsc2UgewpAQCAtMTI0LDQgKzE0MCw5IEBA
IFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlclRleHRDb250cm8KICAgICByZXR1cm4gdGV4
dEJsb2NrU3R5bGUucmVsZWFzZSgpOwogfQogCitSZW5kZXJTdHlsZSogUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmU6OnBhcmVudFN0eWxlKCkKK3sKKyAgICByZXR1cm4gc3R5bGUoKTsKK30KKwog
fQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZS5oCShyZXZpc2lvbiA0NTQxOSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRl
c3RSZXN1bHQmLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5LCBIaXRUZXN0QWN0aW9uKTsK
ICAgICB2b2lkIGZvcndhcmRFdmVudChFdmVudCopOwogCitwcm90ZWN0ZWQ6CisgICAgdmlydHVh
bCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUoKTsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGlu
dCBwcmVmZXJyZWRDb250ZW50V2lkdGgoZmxvYXQgY2hhcldpZHRoKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0Q29udHJvbEhlaWdodEJhc2VkT25MaW5lSGVpZ2h0KGludCBsaW5lSGVp
Z2h0KTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmNwcAkocmV2aXNpb24gNDU0MTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2
IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKE5vZGUqIG5vZGUpCiAgICAgOiBSZW5k
ZXJUZXh0Q29udHJvbChub2RlKQotICAgICwgbV9wbGFjZWhvbGRlclZpc2libGUoZmFsc2UpCiAg
ICAgLCBtX3NlYXJjaFBvcHVwSXNWaXNpYmxlKGZhbHNlKQogICAgICwgbV9zaG91bGREcmF3Q2Fw
c0xvY2tJbmRpY2F0b3IoZmFsc2UpCiAgICAgLCBtX3NlYXJjaEV2ZW50VGltZXIodGhpcywgJlJl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c2VhcmNoRXZlbnRUaW1lckZpcmVkKQpAQCAtNzQs
MjAgKzczLDkgQEAgYm9vbCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnBsYWNlaAogICAg
IHJldHVybiBpbnB1dEVsZW1lbnQoKS0+cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKTsKIH0K
IAotdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnVwZGF0ZVBsYWNlaG9sZGVyVmlz
aWJpbGl0eSgpCitSZW5kZXJTdHlsZSogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpwYXJl
bnRTdHlsZSgpCiB7Ci0gICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gbV9pbm5lckJsb2Nr
ID8gbV9pbm5lckJsb2NrLT5yZW5kZXJlcigpLT5zdHlsZSgpIDogc3R5bGUoKTsKLQotICAgIFJl
ZlB0cjxSZW5kZXJTdHlsZT4gdGV4dEJsb2NrU3R5bGUgPSBjcmVhdGVJbm5lclRleHRTdHlsZShw
YXJlbnRTdHlsZSk7Ci0gICAgSFRNTEVsZW1lbnQqIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1l
bnQoKTsKLSAgICBpbm5lclRleHQtPnJlbmRlcmVyKCktPnNldFN0eWxlKHRleHRCbG9ja1N0eWxl
KTsKLQotICAgIGZvciAoTm9kZSogbiA9IGlubmVyVGV4dC0+Zmlyc3RDaGlsZCgpOyBuOyBuID0g
bi0+dHJhdmVyc2VOZXh0Tm9kZShpbm5lclRleHQpKSB7Ci0gICAgICAgIGlmIChSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gbi0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHJlbmRlcmVyLT5zZXRT
dHlsZSh0ZXh0QmxvY2tTdHlsZSk7Ci0gICAgfQotCi0gICAgdXBkYXRlRnJvbUVsZW1lbnQoKTsK
KyAgICByZXR1cm4gbV9pbm5lckJsb2NrID8gbV9pbm5lckJsb2NrLT5yZW5kZXJlcigpLT5zdHls
ZSgpIDogc3R5bGUoKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmFk
ZFNlYXJjaFJlc3VsdCgpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuaAkocmV2aXNpb24gNDU0MTkpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyAr
NDMsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIHBsYWNlaG9sZGVySXNWaXNpYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9wbGFjZWhvbGRlclZpc2libGU7IH0KICAgICBib29sIHBsYWNlaG9sZGVyU2hv
dWxkQmVWaXNpYmxlKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxp
dHkoKTsKIAogICAgIHZvaWQgYWRkU2VhcmNoUmVzdWx0KCk7CiAgICAgdm9pZCBzdG9wU2VhcmNo
RXZlbnRUaW1lcigpOwpAQCAtNzIsNiArNzEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldFNjcm9sbFRvcChpbnQpOwogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGwoU2Nyb2xsRGlyZWN0
aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciA9IDEuMGYpOwogCitwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUoKTsKKwogcHJpdmF0
ZToKICAgICBpbnQgdGV4dEJsb2NrV2lkdGgoKSBjb25zdDsKICAgICB2aXJ0dWFsIGludCBwcmVm
ZXJyZWRDb250ZW50V2lkdGgoZmxvYXQgY2hhcldpZHRoKSBjb25zdDsKQEAgLTEyMCw3ICsxMjIs
NiBAQCBwcml2YXRlOgogICAgIElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KCkgY29uc3Q7CiAK
IHByaXZhdGU6Ci0gICAgYm9vbCBtX3BsYWNlaG9sZGVyVmlzaWJsZTsKICAgICBib29sIG1fc2Vh
cmNoUG9wdXBJc1Zpc2libGU7CiAgICAgYm9vbCBtX3Nob3VsZERyYXdDYXBzTG9ja0luZGljYXRv
cjsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDU0MTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0wNi0yNSAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisgICAgICAgIAorICAgICAgICBUZXN0cyBmb3IgdGhlIHBsYWNlaG9sZGVyIGF0dHJpYnV0
ZSBhbmQgRE9NIHByb3BlcnR5IG9mIHRoZSB0ZXh0YXJlYSBlbGVtZW50LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDgKKworICAgICAgICAqIGZh
c3QvZm9ybXMvcmVzb3VyY2VzL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5qczog
Q29waWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvcGxhY2Vob2xkZXIt
ZG9tLXByb3BlcnR5LmpzLgorICAgICAgICAqIGZhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xk
ZXItZG9tLXByb3BlcnR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy90ZXh0YXJlYS1wbGFjZWhvbGRlci1kb20tcHJvcGVydHkuaHRtbDogQ29waWVkIGZyb20gTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9wbGFjZWhvbGRlci1kb20tcHJvcGVydHkuaHRtbC4KKyAgICAg
ICAgKiBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1wc2V1ZG8tc3R5bGUu
aHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wbGFjZWhvbGRlci1wc2V1
ZG8tc3R5bGUuaHRtbC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVy
LXNldC1hdHRyaWJ1dGUuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9w
bGFjZWhvbGRlci1zZXQtYXR0cmlidXRlLmh0bWwuCisgICAgICAgICogZmFzdC9mb3Jtcy90ZXh0
YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFsdWUuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9wbGFjZWhvbGRlci1zZXQtdmFsdWUuaHRtbC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1wc2V1ZG8tc3R5bGUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy90ZXh0YXJl
YS1wbGFjZWhvbGRlci1zZXQtYXR0cmlidXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LXZhbHVl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMDktMDYtMzAgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgRGFuIEJlcm5z
dGVpbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXIt
ZG9tLXByb3BlcnR5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVy
LWRvbS1wcm9wZXJ0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAK
K1Rlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0OAor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0ZXh0YXJlYS5wbGFjZWhvbGRl
ciBpcyAiIgorUEFTUyB0ZXh0YXJlYS5wbGFjZWhvbGRlciBpcyAicDEiCitQQVNTIHRleHRhcmVh
LnZhbHVlIGlzICIiCitQQVNTIHRleHRhcmVhLmdldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiKSBp
cyAicDIiCitQQVNTIHRleHRhcmVhLnBsYWNlaG9sZGVyIGlzICJwMiIKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZG9tLXBy
b3BlcnR5Lmh0bWwJKHJldmlzaW9uIDQ1MTM0KQkoZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3BsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5odG1sOjQ1MTM0KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1kb20tcHJvcGVydHkuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wbGFjZWhvbGRlci1kb20tcHJvcGVydHku
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZG9t
LXByb3BlcnR5Lmh0bWwJKHJldmlzaW9uIDQ1MTM0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy90ZXh0YXJlYS1wbGFjZWhvbGRlci1kb20tcHJvcGVydHkuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtNyw3ICs3LDcgQEAKIDxib2R5PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcGxhY2Vob2xkZXItZG9t
LXByb3BlcnR5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGV4dGFyZWEt
cGxhY2Vob2xkZXItZG9tLXByb3BlcnR5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5Pgog
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRl
ci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0
YXJlYS1wbGFjZWhvbGRlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0IEBACisgIAorUEFTUyBlbGVtZW50LnBsYWNlaG9sZGVyIGlzICJmb29i
YXIiCitQQVNTIGVsZW1lbnQucGxhY2Vob2xkZXIgaXMgIiIKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1wc2V1ZG8tc3R5bGUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVk
by1zdHlsZS5odG1sCShyZXZpc2lvbiA0NTEzNCkJKGZyb20gTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9wbGFjZWhvbGRlci1wc2V1ZG8tc3R5bGUuaHRtbDo0NTEzNCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItcHNldWRvLXN0eWxlLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMiBAQAorPHN0eWxlPgoraW5wdXQucmVkOjotd2Via2l0LWlucHV0
LXBsYWNlaG9sZGVyIHsKKyAgICBjb2xvcjogcmdiKDEwMCwgMCwgMCk7Cit9Cis8L3N0eWxlPgor
VGhpcyB0ZXN0cyB0aGF0IHlvdSBjYW4gc2V0IHRoZSBwbGFjZWhvbGRlciB0ZXh0IGNvbG9yLjxi
cj4KKzxpbnB1dCBjbGFzcz0icmVkIiBwbGFjZWhvbGRlcj0idGV4dCI+Cis8aW5wdXQgY2xhc3M9
InJlZCIgdHlwZT0ic2VhcmNoIiBwbGFjZWhvbGRlcj0ic2VhcmNoIj4KKzxpbnB1dCBjbGFzcz0i
cmVkIiB0eXBlPSJwYXNzd29yZCIgcGxhY2Vob2xkZXI9InBhc3N3b3JkIj4KKzxpbnB1dCBjbGFz
cz0icmVkIiBkaXNhYmxlZCBwbGFjZWhvbGRlcj0iZGlzYWJsZWQgdGV4dCI+Cis8aW5wdXQgcGxh
Y2Vob2xkZXI9ImRlZmF1bHQiPgorPGlucHV0IHBsYWNlaG9sZGVyPSJkZWZhdWx0IGRpc2FibGVk
Ij4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItcHNl
dWRvLXN0eWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0
YXJlYS1wbGFjZWhvbGRlci1wc2V1ZG8tc3R5bGUuaHRtbAkocmV2aXNpb24gNDUxMzQpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1zdHlsZS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICsxLDEwIEBACiA8c3R5bGU+Ci1pbnB1dC5yZWQ6
Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewordGV4dGFyZWEucmVkOjotd2Via2l0LWlucHV0
LXBsYWNlaG9sZGVyIHsKICAgICBjb2xvcjogcmdiKDEwMCwgMCwgMCk7CiB9CiA8L3N0eWxlPgog
VGhpcyB0ZXN0cyB0aGF0IHlvdSBjYW4gc2V0IHRoZSBwbGFjZWhvbGRlciB0ZXh0IGNvbG9yLjxi
cj4KLTxpbnB1dCBjbGFzcz0icmVkIiBwbGFjZWhvbGRlcj0idGV4dCI+Ci08aW5wdXQgY2xhc3M9
InJlZCIgdHlwZT0ic2VhcmNoIiBwbGFjZWhvbGRlcj0ic2VhcmNoIj4KLTxpbnB1dCBjbGFzcz0i
cmVkIiB0eXBlPSJwYXNzd29yZCIgcGxhY2Vob2xkZXI9InBhc3N3b3JkIj4KLTxpbnB1dCBjbGFz
cz0icmVkIiBkaXNhYmxlZCBwbGFjZWhvbGRlcj0iZGlzYWJsZWQgdGV4dCI+Ci08aW5wdXQgcGxh
Y2Vob2xkZXI9ImRlZmF1bHQiPgotPGlucHV0IHBsYWNlaG9sZGVyPSJkZWZhdWx0IGRpc2FibGVk
Ij4KKzx0ZXh0YXJlYSBjbGFzcz0icmVkIiBwbGFjZWhvbGRlcj0idGV4dCI+PC90ZXh0YXJlYT4K
Kzx0ZXh0YXJlYSBjbGFzcz0icmVkIiBkaXNhYmxlZCBwbGFjZWhvbGRlcj0iZGlzYWJsZWQgdGV4
dCI+PC90ZXh0YXJlYT4KKzx0ZXh0YXJlYSBwbGFjZWhvbGRlcj0iZGVmYXVsdCI+PC90ZXh0YXJl
YT4KKzx0ZXh0YXJlYSBkaXNhYmxlZCBwbGFjZWhvbGRlcj0iZGVmYXVsdCBkaXNhYmxlZCI+PC90
ZXh0YXJlYT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xk
ZXItc2V0LWF0dHJpYnV0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LWF0dHJpYnV0ZS5odG1sCShyZXZpc2lvbiA0NTEz
NCkJKGZyb20gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wbGFjZWhvbGRlci1zZXQtYXR0cmlidXRl
Lmh0bWw6NDUxMzQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9s
ZGVyLXNldC1hdHRyaWJ1dGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIxIEBACis8
c2NyaXB0PgorCitmdW5jdGlvbiBmaW5pc2hUZXN0KCkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnaW5wdXQnKS5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywnUGxhY2Vob2xkZXIn
KTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBzZXRUaW1lb3V0KGZpbmlzaFRlc3QsIDApOwor
fQorCis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPklmIHlvdSBjYW4gc2Vl
IHRoZSB3b3JkICJQbGFjZWhvbGRlciIgaW4gdGhlIHRleHQgZmllbGQsIHRoZW4gYWxsIGlzIHdl
bGwuPC9wPgorPHA+PGlucHV0IHR5cGU9InRleHQiIGlkPSJpbnB1dCI+PC9wPgorPC9ib2R5PgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtYXR0
cmlidXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJl
YS1wbGFjZWhvbGRlci1zZXQtYXR0cmlidXRlLmh0bWwJKHJldmlzaW9uIDQ1MTM0KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtYXR0cmlidXRlLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBACiAKIGZ1bmN0aW9uIGZpbmlzaFRlc3Qo
KQogewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dCcpLnNldEF0dHJpYnV0ZSgn
cGxhY2Vob2xkZXInLCdQbGFjZWhvbGRlcicpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd0ZXh0YXJlYScpLnNldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInLCdQbGFjZWhvbGRlcicpOwog
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKIH0KQEAgLTE2LDYgKzE2LDYgQEAgZnVuY3Rpb24gdGVz
dCgpCiAKIDwvc2NyaXB0PgogPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgotPHA+SWYgeW91IGNhbiBz
ZWUgdGhlIHdvcmQgIlBsYWNlaG9sZGVyIiBpbiB0aGUgdGV4dCBmaWVsZCwgdGhlbiBhbGwgaXMg
d2VsbC48L3A+Ci08cD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImlucHV0Ij48L3A+Cis8cD5JZiB5
b3UgY2FuIHNlZSB0aGUgd29yZCAiUGxhY2Vob2xkZXIiIGluIHRoZSB0ZXh0IGFyZWEsIHRoZW4g
YWxsIGlzIHdlbGwuPC9wPgorPHA+PHRleHRhcmVhIGlkPSJ0ZXh0YXJlYSI+PC90ZXh0YXJlYT48
L3A+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNl
aG9sZGVyLXNldC12YWx1ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LXZhbHVlLmh0bWwJKHJldmlzaW9uIDQ1MTM0KQko
ZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3BsYWNlaG9sZGVyLXNldC12YWx1ZS5odG1sOjQ1
MTM0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQt
dmFsdWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxoZWFk
PgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorICAg
IGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdzZWFyY2hmaWVsZCcpLnZhbHVlID0gJ05ldyB0ZXh0JzsKKyAgICB9CisgIDwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICA8cD5UZXN0IGZvciA8YSBocmVm
PSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ1MDgiPmh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDUwODwvYT4uIFNlYXJjaCBmaWVsZCBk
b2VzIG5vdCByZWRyYXcgaWYgdmFsdWUgc2V0LCB3aGVuIGl0IGhhcyBwbGFjZWhvbGRlciB0ZXh0
LjwvcD4KKworICA8aW5wdXQgaWQ9InNlYXJjaGZpZWxkIiB0eXBlPSJzZWFyY2giIHBsYWNlaG9s
ZGVyPSJQbGFjZWhvbGRlciB0ZXh0Ij4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNl
aG9sZGVyLXNldC12YWx1ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LXZhbHVlLmh0bWwJKHJldmlzaW9uIDQ1MTM0KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFsdWUu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMywxMyArMywxMyBAQAogICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgogICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQog
ICAgIHsKLSAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2hmaWVsZCcpLnZhbHVl
ID0gJ05ldyB0ZXh0JzsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0JykudmFs
dWUgPSAnTmV3IHRleHQnOwogICAgIH0KICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Ci0gIDxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDUwOCI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI0NTA4PC9hPi4gU2VhcmNoIGZpZWxkIGRvZXMgbm90IHJlZHJhdyBpZiB2
YWx1ZSBzZXQsIHdoZW4gaXQgaGFzIHBsYWNlaG9sZGVyIHRleHQuPC9wPgorICA8cD5UZXN0IGZv
ciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDgi
Pmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODwvYT4uPC9wPgog
Ci0gIDxpbnB1dCBpZD0ic2VhcmNoZmllbGQiIHR5cGU9InNlYXJjaCIgcGxhY2Vob2xkZXI9IlBs
YWNlaG9sZGVyIHRleHQiPgorICA8dGV4dGFyZWEgaWQ9InRleHQiIHBsYWNlaG9sZGVyPSJQbGFj
ZWhvbGRlciB0ZXh0Ij48L3RleHRhcmVhPgogPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVz
b3VyY2VzL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1k
b20tcHJvcGVydHkuanMJKHJldmlzaW9uIDQ1MTM0KQkoZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3Jlc291cmNlcy9wbGFjZWhvbGRlci1kb20tcHJvcGVydHkuanM6NDUxMzQpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1kb20tcHJv
cGVydHkuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorZGVzY3JpcHRpb24oIlRl
c3QgZm9yIDxhIGhyZWY9J2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTkwMyc+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTAzPC9hPiIp
OworCit2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworCitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImlucHV0LnBsYWNlaG9sZGVyIiwgJycpOworCitpbnB1dC5zZXRB
dHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgInAxIikKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiaW5w
dXQucGxhY2Vob2xkZXIiLCAncDEnKTsKKworaW5wdXQucGxhY2Vob2xkZXIgPSAncDInOworc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJpbnB1dC5nZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJykiLCAn
cDInKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiaW5wdXQucGxhY2Vob2xkZXIiLCAncDInKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3Jlc291cmNlcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1kb20tcHJvcGVydHkuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvdGV4dGFyZWEtcGxh
Y2Vob2xkZXItZG9tLXByb3BlcnR5LmpzCShyZXZpc2lvbiA0NTEzNCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5q
cwkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMSwxNSBAQAotZGVzY3JpcHRpb24oIlRlc3QgZm9y
IDxhIGhyZWY9J2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkwMyc+
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTAzPC9hPiIpOworZGVz
Y3JpcHRpb24oJ1Rlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTI0OCI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMjQ4PC9hPicpOwogCi12YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1
dCIpOwordmFyIHRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTsK
IAotc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbnB1dC5wbGFjZWhvbGRlciIsICcnKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygndGV4dGFyZWEucGxhY2Vob2xkZXInLCAnJyk7CiAKLWlucHV0LnNl
dEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCAicDEiKQotc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJp
bnB1dC5wbGFjZWhvbGRlciIsICdwMScpOwordGV4dGFyZWEuc2V0QXR0cmlidXRlKCdwbGFjZWhv
bGRlcicsICdwMScpCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3RleHRhcmVhLnBsYWNlaG9sZGVy
JywgJ3AxJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3RleHRhcmVhLnZhbHVlJywgJycpOwog
Ci1pbnB1dC5wbGFjZWhvbGRlciA9ICdwMic7Ci1zaG91bGRCZUVxdWFsVG9TdHJpbmcoImlucHV0
LmdldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInKSIsICdwMicpOwotc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJpbnB1dC5wbGFjZWhvbGRlciIsICdwMicpOwordGV4dGFyZWEucGxhY2Vob2xkZXIgPSAn
cDInOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXh0YXJlYS5nZXRBdHRyaWJ1dGUoInBsYWNl
aG9sZGVyIiknLCAncDInKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygndGV4dGFyZWEucGxhY2Vo
b2xkZXInLCAncDInKTsKIAogdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1w
c2V1ZG8tc3R5bGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1zdHlsZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9m
b3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1wc2V1ZG8tc3R5bGUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
UmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVu
ZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSAzMjh4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggMzI4OiAiVGhpcyB0ZXN0cyB0aGF0IHlvdSBjYW4gc2V0IHRoZSBwbGFjZWhvbGRlciB0ZXh0
IGNvbG9yLiIKKyAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDMyOCwxNCkgc2l6ZSAweDAKKyAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTMzLDQwKSBzaXplIDR4MTgKKyAgICAgICAgdGV4dCBy
dW4gYXQgKDEzMyw0MCkgd2lkdGggNDogIiAiCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDI3MCw0MCkgc2l6ZSA0eDE4CisgICAgICAgIHRleHQgcnVuIGF0ICgyNzAsNDApIHdpZHRoIDQ6
ICIgIgorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg0MDcsNDApIHNpemUgNHgxOAorICAg
ICAgICB0ZXh0IHJ1biBhdCAoNDA3LDQwKSB3aWR0aCA0OiAiICIKKyAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorbGF5ZXIgYXQgKDEwLDI4KSBzaXplIDEyOXgzMiBj
bGlwIGF0ICgxMSwyOSkgc2l6ZSAxMjd4MzAKKyAgUmVuZGVyVGV4dENvbnRyb2wge1RFWFRBUkVB
fSBhdCAoMiwyMCkgc2l6ZSAxMjl4MzIgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDFweCBz
b2xpZCAjMDAwMDAwKV0KKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDEyM3gx
MyBbY29sb3I9IzY0MDAwMF0KKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDIyeDEzCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIyOiAidGV4dCIKK2xheWVy
IGF0ICgxNDcsMjgpIHNpemUgMTI5eDMyIGNsaXAgYXQgKDE0OCwyOSkgc2l6ZSAxMjd4MzAKKyAg
UmVuZGVyVGV4dENvbnRyb2wge1RFWFRBUkVBfSBhdCAoMTM5LDIwKSBzaXplIDEyOXgzMiBbYmdj
b2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgMTIzeDEzIFtjb2xvcj0jQjgwMDAwXQorICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzB4MTMKKyAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggNzA6ICJkaXNhYmxlZCB0ZXh0IgorbGF5ZXIgYXQgKDI4NCwyOCkgc2l6ZSAx
Mjl4MzIgY2xpcCBhdCAoMjg1LDI5KSBzaXplIDEyN3gzMAorICBSZW5kZXJUZXh0Q29udHJvbCB7
VEVYVEFSRUF9IGF0ICgyNzYsMjApIHNpemUgMTI5eDMyIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3Jk
ZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykg
c2l6ZSAxMjN4MTMgW2NvbG9yPSNBOUE5QTldCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAzOHgxMworICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzODogImRl
ZmF1bHQiCitsYXllciBhdCAoNDIxLDI4KSBzaXplIDEyOXgzMiBjbGlwIGF0ICg0MjIsMjkpIHNp
emUgMTI3eDMwCisgIFJlbmRlclRleHRDb250cm9sIHtURVhUQVJFQX0gYXQgKDQxMywyMCkgc2l6
ZSAxMjl4MzIgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0K
KyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDEyM3gxMyBbY29sb3I9I0E5QTlB
OV0KKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDg2eDEzCisgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDg2OiAiZGVmYXVsdCBkaXNhYmxlZCIKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNl
dC1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC1hdHRyaWJ1dGUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
Zm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAor
ICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBS
ZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2Nr
IHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSA0Mzl4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0Mzk6
ICJJZiB5b3UgY2FuIHNlZSB0aGUgd29yZCBcIlBsYWNlaG9sZGVyXCIgaW4gdGhlIHRleHQgYXJl
YSwgdGhlbiBhbGwgaXMgd2VsbC4iCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMzQpIHNp
emUgNzg0eDM2CitsYXllciBhdCAoMTAsNDQpIHNpemUgMTI5eDMyIGNsaXAgYXQgKDExLDQ1KSBz
aXplIDEyN3gzMAorICBSZW5kZXJUZXh0Q29udHJvbCB7VEVYVEFSRUF9IGF0ICgyLDIpIHNpemUg
MTI5eDMyIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSAxMjN4MTMgW2NvbG9yPSNBOUE5QTld
CisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA2MngxMworICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA2MjogIlBsYWNlaG9sZGVyIgpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LXZhbHVl
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFsdWUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvdGV4dGFyZWEt
cGxhY2Vob2xkZXItc2V0LXZhbHVlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyMiBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxv
Y2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0
ICg4LDgpIHNpemUgNzg0eDU4NAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUg
Nzg0eDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDUzeDE4Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTM6ICJUZXN0IGZvciAiCisgICAgICAg
IFJlbmRlcklubGluZSB7QX0gYXQgKDAsMCkgc2l6ZSAzMDV4MTggW2NvbG9yPSMwMDAwRUVdCisg
ICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg1MywwKSBzaXplIDMwNXgxOAorICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDUzLDApIHdpZHRoIDMwNTogImh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0OCIKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgzNTgsMCkgc2l6ZSA0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDM1OCwwKSB3aWR0aCA0
OiAiLiIKKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDM0KSBzaXplIDc4NHgz
NgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorbGF5ZXIgYXQgKDEwLDQ0KSBzaXplIDEyOXgzMiBj
bGlwIGF0ICgxMSw0NSkgc2l6ZSAxMjd4MzAKKyAgUmVuZGVyVGV4dENvbnRyb2wge1RFWFRBUkVB
fSBhdCAoMiwyKSBzaXplIDEyOXgzMiBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMXB4IHNv
bGlkICMwMDAwMDApXQorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgMTIzeDEz
CisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0OHgxMworICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0ODogIk5ldyB0ZXh0Igo=
</data>
<flag name="review"
          id="16625"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34534</attachid>
            <date>2009-08-10 19:11:12 -0700</date>
            <delta_ts>2009-08-23 22:40:35 -0700</delta_ts>
            <desc>Proposed patch (rev.4)</desc>
            <filename>placeholder-4.diff</filename>
            <type>text/plain</type>
            <size>43737</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4NjQ3MmI1Li5kZjNjZDBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDktMDgt
MTAgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gQWRkIHRlc3RzIGZvciB0aGUgcGxhY2Vo
b2xkZXIgYXR0cmlidXRlIGFuZCBET00gcHJvcGVydHkgb2YgdGhlIHRleHRhcmVhIGVsZW1lbnQu
CisgICAgICAgIC0gQ29ycmVjdCB0aGUgcmVzdWx0cyBmb3IgaW5wdXQtdGV4dC1tYXhsZW5ndGgu
aHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEy
NDgKKworICAgICAgICAqIGZhc3QvZm9ybXMvcmVzb3VyY2VzL3RleHRhcmVhLXBsYWNlaG9sZGVy
LWRvbS1wcm9wZXJ0eS5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy90ZXh0YXJlYS1w
bGFjZWhvbGRlci1kb20tcHJvcGVydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1zdHlsZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNl
dC1hdHRyaWJ1dGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy90ZXh0YXJlYS1w
bGFjZWhvbGRlci1zZXQtdmFsdWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L2Zhc3QvZm9ybXMvaW5wdXQtdGV4dC1tYXhsZW5ndGgtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1zdHls
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2Zvcm1z
L3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1z
ZXQtdmFsdWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0
L2Zvcm1zL2lucHV0LXRleHQtbWF4bGVuZ3RoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vZmFzdC9mb3Jtcy9pbnB1dC10ZXh0LW1heGxlbmd0aC1leHBlY3RlZC50eHQ6CisK
IDIwMDktMDgtMDkgIE5pa29sYXMgWmltbWVybWFubiAgPG5pa29sYXMuemltbWVybWFubkB0b3Jj
aG1vYmlsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvcmdlIFN0YWlrb3MuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXh0YXJlYS1wbGFjZWhv
bGRlci1kb20tcHJvcGVydHkuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy90
ZXh0YXJlYS1wbGFjZWhvbGRlci1kb20tcHJvcGVydHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODRkYjJjMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvcmVzb3VyY2VzL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5qcwpA
QCAtMCwwICsxLDE1IEBACitkZXNjcmlwdGlvbignVGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4Ij5odHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg8L2E+Jyk7CisKK3ZhciB0ZXh0YXJlYSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7CisKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygn
dGV4dGFyZWEucGxhY2Vob2xkZXInLCAnJyk7CisKK3RleHRhcmVhLnNldEF0dHJpYnV0ZSgncGxh
Y2Vob2xkZXInLCAncDEnKQorc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXh0YXJlYS5wbGFjZWhv
bGRlcicsICdwMScpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXh0YXJlYS52YWx1ZScsICcn
KTsKKwordGV4dGFyZWEucGxhY2Vob2xkZXIgPSAncDInOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCd0ZXh0YXJlYS5nZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiknLCAncDInKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygndGV4dGFyZWEucGxhY2Vob2xkZXInLCAncDInKTsKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJmY2FhZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXIt
ZG9tLXByb3BlcnR5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0IGZvciBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDgKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGV4dGFyZWEucGxhY2Vob2xkZXIgaXMgIiIKK1BBU1Mg
dGV4dGFyZWEucGxhY2Vob2xkZXIgaXMgInAxIgorUEFTUyB0ZXh0YXJlYS52YWx1ZSBpcyAiIgor
UEFTUyB0ZXh0YXJlYS5nZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIikgaXMgInAyIgorUEFTUyB0
ZXh0YXJlYS5wbGFjZWhvbGRlciBpcyAicDIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy90ZXh0YXJlYS1wbGFjZWhvbGRlci1kb20tcHJvcGVydHkuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZG9tLXByb3BlcnR5Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQwYmY4MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZG9tLXByb3BlcnR5Lmh0
bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZG9tLXBy
b3BlcnR5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1wc2V1ZG8tc3R5
bGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItcHNl
dWRvLXN0eWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI3MmE5
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxh
Y2Vob2xkZXItcHNldWRvLXN0eWxlLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPHN0eWxlPgordGV4
dGFyZWEucmVkOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKKyAgICBjb2xvcjogcmdiKDEw
MCwgMCwgMCk7Cit9Cis8L3N0eWxlPgorVGhpcyB0ZXN0cyB0aGF0IHlvdSBjYW4gc2V0IHRoZSBw
bGFjZWhvbGRlciB0ZXh0IGNvbG9yLjxicj4KKzx0ZXh0YXJlYSBjbGFzcz0icmVkIiBwbGFjZWhv
bGRlcj0idGV4dCI+PC90ZXh0YXJlYT4KKzx0ZXh0YXJlYSBjbGFzcz0icmVkIiBkaXNhYmxlZCBw
bGFjZWhvbGRlcj0iZGlzYWJsZWQgdGV4dCI+PC90ZXh0YXJlYT4KKzx0ZXh0YXJlYSBwbGFjZWhv
bGRlcj0iZGVmYXVsdCI+PC90ZXh0YXJlYT4KKzx0ZXh0YXJlYSBkaXNhYmxlZCBwbGFjZWhvbGRl
cj0iZGVmYXVsdCBkaXNhYmxlZCI+PC90ZXh0YXJlYT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LWF0dHJpYnV0ZS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtYXR0cmlidXRlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk3Y2IxZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0
LWF0dHJpYnV0ZS5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGZp
bmlzaFRlc3QoKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0YXJlYScpLnNl
dEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInLCdQbGFjZWhvbGRlcicpOworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIHNldFRpbWVvdXQoZmluaXNoVGVzdCwgMCk7Cit9CisKKzwvc2NyaXB0PgorPGJv
ZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+SWYgeW91IGNhbiBzZWUgdGhlIHdvcmQgIlBsYWNlaG9s
ZGVyIiBpbiB0aGUgdGV4dCBhcmVhLCB0aGVuIGFsbCBpcyB3ZWxsLjwvcD4KKzxwPjx0ZXh0YXJl
YSBpZD0idGV4dGFyZWEiPjwvdGV4dGFyZWE+PC9wPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFsdWUuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LXZhbHVlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRjYTg2NAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0
LXZhbHVlLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICBmdW5jdGlvbiBydW5U
ZXN0KCkKKyAgICB7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dCcpLnZhbHVl
ID0gJ05ldyB0ZXh0JzsKKyAgICB9CisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorICA8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDgiPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTI0ODwvYT4uPC9wPgorCisgIDx0ZXh0YXJlYSBpZD0idGV4dCIgcGxhY2Vo
b2xkZXI9IlBsYWNlaG9sZGVyIHRleHQiPjwvdGV4dGFyZWE+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC10ZXh0
LW1heGxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9m
b3Jtcy9pbnB1dC10ZXh0LW1heGxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXggOWQ3YjNkYy4uOWM5
OWQwYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvaW5w
dXQtdGV4dC1tYXhsZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2Zvcm1zL2lucHV0LXRleHQtbWF4bGVuZ3RoLWV4cGVjdGVkLnR4dApAQCAtMTY4
LDExICsxNjgsMTEgQEAgbGF5ZXIgYXQgKDE2LDk3KSBzaXplIDQxeDEzCiBsYXllciBhdCAoMTYs
MTI0KSBzaXplIDQxeDEzCiAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgNDF4MTMK
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMCkgc2l6ZSAzNXgxMwotICAgICAgdGV4dCBy
dW4gYXQgKDEsMCkgd2lkdGggMzU6ICIxMjM0NSIKKyAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdp
ZHRoIDM1OiAiMTIzNCIKIGxheWVyIGF0ICgxNiwxNTEpIHNpemUgNDF4MTMKICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDMsMykgc2l6ZSA0MXgxMwogICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MSwwKSBzaXplIDM1eDEzCi0gICAgICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAzNTogIjEyMzQ1
IgorICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMzU6ICIxMjM0IgogbGF5ZXIgYXQgKDE2
LDE3OCkgc2l6ZSA0MXgxMwogICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDQxeDEz
CiAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDApIHNpemUgMjh4MTMKQEAgLTE5Miw4ICsx
OTIsOCBAQCBsYXllciBhdCAoMTYsMjU5KSBzaXplIDQxeDEzCiBsYXllciBhdCAoMTYsMjg2KSBz
aXplIDQxeDEzCiAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgNDF4MTMKICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMCkgc2l6ZSAzNXgxMwotICAgICAgdGV4dCBydW4gYXQg
KDEsMCkgd2lkdGggMzU6ICIxMnhceHszMDV9XHh7MzMyfTQ1IgorICAgICAgdGV4dCBydW4gYXQg
KDEsMCkgd2lkdGggMzU6ICIxMnhceHszMDV9XHh7MzMyfTQiCiBsYXllciBhdCAoMTYsMzEzKSBz
aXplIDQxeDEzCiAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgNDF4MTMKICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMCkgc2l6ZSAzNXgxMwotICAgICAgdGV4dCBydW4gYXQg
KDEsMCkgd2lkdGggMzU6ICIxMnhceHszMDV9XHh7MzMyfTQ1IgorICAgICAgdGV4dCBydW4gYXQg
KDEsMCkgd2lkdGggMzU6ICIxMnhceHszMDV9XHh7MzMyfTQiCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1wc2V1ZG8t
c3R5bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMv
dGV4dGFyZWEtcGxhY2Vob2xkZXItcHNldWRvLXN0eWxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTFhZGM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItcHNl
dWRvLXN0eWxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM1IEBACitsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0
ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzMjh4MTgKKyAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMzI4OiAiVGhpcyB0ZXN0cyB0aGF0IHlvdSBjYW4gc2V0IHRoZSBw
bGFjZWhvbGRlciB0ZXh0IGNvbG9yLiIKKyAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDMyOCwxNCkg
c2l6ZSAweDAKKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTMzLDQwKSBzaXplIDR4MTgK
KyAgICAgICAgdGV4dCBydW4gYXQgKDEzMyw0MCkgd2lkdGggNDogIiAiCisgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDI3MCw0MCkgc2l6ZSA0eDE4CisgICAgICAgIHRleHQgcnVuIGF0ICgy
NzAsNDApIHdpZHRoIDQ6ICIgIgorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg0MDcsNDAp
IHNpemUgNHgxOAorICAgICAgICB0ZXh0IHJ1biBhdCAoNDA3LDQwKSB3aWR0aCA0OiAiICIKKyAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorbGF5ZXIgYXQgKDEwLDI4
KSBzaXplIDEyOXgzMiBjbGlwIGF0ICgxMSwyOSkgc2l6ZSAxMjd4MzAKKyAgUmVuZGVyVGV4dENv
bnRyb2wge1RFWFRBUkVBfSBhdCAoMiwyMCkgc2l6ZSAxMjl4MzIgW2JnY29sb3I9I0ZGRkZGRl0g
W2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MywzKSBzaXplIDEyM3gxMyBbY29sb3I9IzY0MDAwMF0KKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwwKSBzaXplIDIyeDEzCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIy
OiAidGV4dCIKK2xheWVyIGF0ICgxNDcsMjgpIHNpemUgMTI5eDMyIGNsaXAgYXQgKDE0OCwyOSkg
c2l6ZSAxMjd4MzAKKyAgUmVuZGVyVGV4dENvbnRyb2wge1RFWFRBUkVBfSBhdCAoMTM5LDIwKSBz
aXplIDEyOXgzMiBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDAp
XQorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgMTIzeDEzIFtjb2xvcj0jQjgw
MDAwXQorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzB4MTMKKyAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzA6ICJkaXNhYmxlZCB0ZXh0IgorbGF5ZXIgYXQg
KDI4NCwyOCkgc2l6ZSAxMjl4MzIgY2xpcCBhdCAoMjg1LDI5KSBzaXplIDEyN3gzMAorICBSZW5k
ZXJUZXh0Q29udHJvbCB7VEVYVEFSRUF9IGF0ICgyNzYsMjApIHNpemUgMTI5eDMyIFtiZ2NvbG9y
PSNGRkZGRkZdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAgUmVuZGVyQmxvY2sg
e0RJVn0gYXQgKDMsMykgc2l6ZSAxMjN4MTMgW2NvbG9yPSNBOUE5QTldCisgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzOHgxMworICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCAzODogImRlZmF1bHQiCitsYXllciBhdCAoNDIxLDI4KSBzaXplIDEyOXgzMiBjbGlw
IGF0ICg0MjIsMjkpIHNpemUgMTI3eDMwCisgIFJlbmRlclRleHRDb250cm9sIHtURVhUQVJFQX0g
YXQgKDQxMywyMCkgc2l6ZSAxMjl4MzIgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDFweCBz
b2xpZCAjMDAwMDAwKV0KKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDEyM3gx
MyBbY29sb3I9I0E5QTlBOV0KKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDg2eDEzCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDg2OiAiZGVmYXVsdCBkaXNh
YmxlZCIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL3Rl
eHRhcmVhLXBsYWNlaG9sZGVyLXNldC1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LWF0dHJp
YnV0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc5
NDA5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zv
cm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0
ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRl
ckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZ
fSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBz
aXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0Mzl4
MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0Mzk6ICJJZiB5b3UgY2FuIHNl
ZSB0aGUgd29yZCBcIlBsYWNlaG9sZGVyXCIgaW4gdGhlIHRleHQgYXJlYSwgdGhlbiBhbGwgaXMg
d2VsbC4iCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMzQpIHNpemUgNzg0eDM2CitsYXll
ciBhdCAoMTAsNDQpIHNpemUgMTI5eDMyIGNsaXAgYXQgKDExLDQ1KSBzaXplIDEyN3gzMAorICBS
ZW5kZXJUZXh0Q29udHJvbCB7VEVYVEFSRUF9IGF0ICgyLDIpIHNpemUgMTI5eDMyIFtiZ2NvbG9y
PSNGRkZGRkZdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAgUmVuZGVyQmxvY2sg
e0RJVn0gYXQgKDMsMykgc2l6ZSAxMjN4MTMgW2NvbG9yPSNBOUE5QTldCisgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA2MngxMworICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA2MjogIlBsYWNlaG9sZGVyIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LXZhbHVlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNl
aG9sZGVyLXNldC12YWx1ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uODg2NjZmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC12YWx1ZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwyMiBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRl
clZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
KyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJv
ZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0
ICgwLDApIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDUzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTM6ICJUZXN0IGZv
ciAiCisgICAgICAgIFJlbmRlcklubGluZSB7QX0gYXQgKDAsMCkgc2l6ZSAzMDV4MTggW2NvbG9y
PSMwMDAwRUVdCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg1MywwKSBzaXplIDMw
NXgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDUzLDApIHdpZHRoIDMwNTogImh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0OCIKKyAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgzNTgsMCkgc2l6ZSA0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDM1
OCwwKSB3aWR0aCA0OiAiLiIKKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDM0
KSBzaXplIDc4NHgzNgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAw
eDAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorbGF5ZXIgYXQgKDEwLDQ0KSBz
aXplIDEyOXgzMiBjbGlwIGF0ICgxMSw0NSkgc2l6ZSAxMjd4MzAKKyAgUmVuZGVyVGV4dENvbnRy
b2wge1RFWFRBUkVBfSBhdCAoMiwyKSBzaXplIDEyOXgzMiBbYmdjb2xvcj0jRkZGRkZGXSBbYm9y
ZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMp
IHNpemUgMTIzeDEzCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0OHgx
MworICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0ODogIk5ldyB0ZXh0IgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9mb3Jtcy9pbnB1dC10ZXh0LW1heGxl
bmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2Zvcm1zL2lu
cHV0LXRleHQtbWF4bGVuZ3RoLWV4cGVjdGVkLnR4dAppbmRleCA4ZDg5Mjk4Li4wMTQzZDU1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2Zvcm1zL2lucHV0LXRleHQt
bWF4bGVuZ3RoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0
L2Zvcm1zL2lucHV0LXRleHQtbWF4bGVuZ3RoLWV4cGVjdGVkLnR4dApAQCAtMTY4LDExICsxNjgs
MTEgQEAgbGF5ZXIgYXQgKDE2LDEwNikgc2l6ZSAzMngxNgogbGF5ZXIgYXQgKDE2LDEzNikgc2l6
ZSAzMngxNgogICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDMyeDE2CiAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgxLDApIHNpemUgMzB4MTYKLSAgICAgIHRleHQgcnVuIGF0ICgx
LDApIHdpZHRoIDMwOiAiMTIzNDUiCisgICAgICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAzMDog
IjEyMzQiCiBsYXllciBhdCAoMTYsMTY2KSBzaXplIDMyeDE2CiAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgzLDMpIHNpemUgMzJ4MTYKICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMCkgc2l6
ZSAzMHgxNgotICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMzA6ICIxMjM0NSIKKyAgICAg
IHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDMwOiAiMTIzNCIKIGxheWVyIGF0ICgxNiwxOTYpIHNp
emUgMzJ4MTYKICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSAzMngxNgogICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMSwwKSBzaXplIDI0eDE2CkBAIC0xOTIsOCArMTkyLDggQEAg
bGF5ZXIgYXQgKDE2LDI4Nikgc2l6ZSAzMngxNgogbGF5ZXIgYXQgKDE2LDMxNikgc2l6ZSAzMngx
NgogICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDMyeDE2CiAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgxLDApIHNpemUgMzB4MTYKLSAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdp
ZHRoIDMwOiAiMTJ4XHh7MzA1fVx4ezMzMn00NSIKKyAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdp
ZHRoIDMwOiAiMTJ4XHh7MzA1fVx4ezMzMn00IgogbGF5ZXIgYXQgKDE2LDM0Nikgc2l6ZSAzMngx
NgogICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDMyeDE2CiAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgxLDApIHNpemUgMzB4MTYKLSAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdp
ZHRoIDMwOiAiMTJ4XHh7MzA1fVx4ezMzMn00NSIKKyAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdp
ZHRoIDMwOiAiMTJ4XHh7MzA1fVx4ezMzMn00IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL2Zhc3QvZm9ybXMvaW5wdXQtdGV4dC1tYXhsZW5ndGgtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvZm9ybXMvaW5wdXQtdGV4dC1tYXhsZW5ndGgt
ZXhwZWN0ZWQudHh0CmluZGV4IDE0NWQ0YTEuLjE1NzM5ODIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9mYXN0L2Zvcm1zL2lucHV0LXRleHQtbWF4bGVuZ3RoLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9mb3Jtcy9pbnB1dC10ZXh0
LW1heGxlbmd0aC1leHBlY3RlZC50eHQKQEAgLTE2OCwxMSArMTY4LDExIEBAIGxheWVyIGF0ICgx
Niw5Nykgc2l6ZSA0MXgxMwogbGF5ZXIgYXQgKDE2LDEyNCkgc2l6ZSA0MXgxMwogICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMywzKSBzaXplIDQxeDEzCiAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgxLDApIHNpemUgMzV4MTMKLSAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDM1OiAiMTIz
NDUiCisgICAgICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAzNTogIjEyMzQiCiBsYXllciBhdCAo
MTYsMTUxKSBzaXplIDQxeDEzCiAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgNDF4
MTMKICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMCkgc2l6ZSAzNXgxMwotICAgICAgdGV4
dCBydW4gYXQgKDEsMCkgd2lkdGggMzU6ICIxMjM0NSIKKyAgICAgIHRleHQgcnVuIGF0ICgxLDAp
IHdpZHRoIDM1OiAiMTIzNCIKIGxheWVyIGF0ICgxNiwxNzgpIHNpemUgNDF4MTMKICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSA0MXgxMwogICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMSwwKSBzaXplIDI4eDEzCkBAIC0xOTIsOCArMTkyLDggQEAgbGF5ZXIgYXQgKDE2LDI1OSkg
c2l6ZSA0MXgxMwogbGF5ZXIgYXQgKDE2LDI4Nikgc2l6ZSA0MXgxMwogICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMywzKSBzaXplIDQxeDEzCiAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDAp
IHNpemUgMzV4MTMKLSAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDM1OiAiMTJ4XHh7MzA1
fVx4ezMzMn00NSIKKyAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDM1OiAiMTJ4XHh7MzA1
fVx4ezMzMn00IgogbGF5ZXIgYXQgKDE2LDMxMykgc2l6ZSA0MXgxMwogICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMywzKSBzaXplIDQxeDEzCiAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDAp
IHNpemUgMzV4MTMKLSAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDM1OiAiMTJ4XHh7MzA1
fVx4ezMzMn00NSIKKyAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDM1OiAiMTJ4XHh7MzA1
fVx4ezMzMn00IgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAxYjgyOTZhLi5kMzBiNWMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDA5LTA4LTEwICBL
ZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIHBsYWNlaG9sZGVy
IGF0dHJpYnV0ZSBhbmQgRE9NIHByb3BlcnR5IG9mIHRoZSB0ZXh0YXJlYSBlbGVtZW50LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDgKKworICAg
ICAgICBBIERPTSBub2RlIGZvciBhbiBJTlBVVCBlbGVtZW50IGRvZXNuJ3QgaGF2ZSBhIGZsYWcg
Zm9yIHBsYWNlaG9sZGVyCisgICAgICAgIHZpc2liaWxpdHkgYW55bW9yZS4gIFRoaXMgcGF0Y2gg
YWxzbyBmaXhlcyBhIGJ1ZyB0aGF0IGEgcmVuZGVyZXIKKyAgICAgICAgZG9lc24ndCByZWZsZWN0
IGEgY29ycmVzcG9uZGluZyBET00gdmFsdWUgY2hhbmdlLgorCisgICAgICAgIFRlc3RzOiBmYXN0
L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1zdHlsZS5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC1hdHRyaWJ1
dGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1z
ZXQtdmFsdWUuaHRtbAorCisgICAgICAgICogY3NzL2h0bWwuY3NzOiBBZGQgdGhlIGRlZmF1bHQg
c3R5bGUgZm9yIHBsYWNlaG9sZGVyIG9mIHRleHRhcmVhLgorICAgICAgICAqIGRvbS9JbnB1dEVs
ZW1lbnQuY3BwOiBDbGVhbnVwIGZvciBtX3BsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlIHJlbW92
YWwKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OklucHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5wdXRFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJp
bGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRnJvbVJlbmRl
cmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RWxlbWVudERhdGE6OklucHV0RWxlbWVudERh
dGEpOgorICAgICAgICAqIGRvbS9JbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZGlz
cGF0Y2hGb2N1c0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmRp
c3BhdGNoQmx1ckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNl
dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnBsYWNlaG9sZGVy
U2hvdWxkQmVWaXNpYmxlKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJp
bGl0eSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9s
ZGVyVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojpk
aXNwYXRjaEZvY3VzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVu
dDo6ZGlzcGF0Y2hCbHVyRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGw6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHRDb250cm9sOjpSZW5kZXJUZXh0Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUZXh0Q29udHJvbDo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dENvbnRyb2w6OnNldElubmVyVGV4dFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHRDb250cm9sOjp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29u
dHJvbE11bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6Om5vZGVBdFBvaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjp1cGRhdGVGcm9tRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6Y3JlYXRlSW5u
ZXJUZXh0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmU6OnRleHRCYXNlU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
OjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lOjp0ZXh0QmFzZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjcmVhdGVJbm5lclRleHRT
dHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5o
OgorICAgICAgICAqIHdtbC9XTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V01MSW5wdXRFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V01MSW5wdXRFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpX
TUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OldNTElucHV0RWxl
bWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUpOgorCiAyMDA5LTA4LTA5ICBOaWtvbGFz
IFppbW1lcm1hbm4gIDxuaWtvbGFzLnppbW1lcm1hbm5AdG9yY2htb2JpbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEdlb3JnZSBTdGFpa29zLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3Mv
aHRtbC5jc3MgYi9XZWJDb3JlL2Nzcy9odG1sLmNzcwppbmRleCA2YjAzMzkwLi43OGJiOTNhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9odG1sLmNzcworKysgYi9XZWJDb3JlL2Nzcy9odG1sLmNz
cwpAQCAtMzY0LDcgKzM2NCw3IEBAIHRleHRhcmVhIHsKICAgICB3b3JkLXdyYXA6IGJyZWFrLXdv
cmQ7CiB9CiAKLWlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLCBpc2luZGV4Ojotd2Vi
a2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKK2lucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVy
LCBpc2luZGV4Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLCB0ZXh0YXJlYTo6LXdlYmtpdC1p
bnB1dC1wbGFjZWhvbGRlciB7CiAgICAgY29sb3I6IGRhcmtHcmF5OwogfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50
LmNwcAppbmRleCAwZTI0NTZkLi5hZTBhNjUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9JbnB1
dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5jcHAKQEAgLTUyLDE5
ICs1MiwxOSBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogY29uc3QgaW50IElucHV0RWxl
bWVudDo6c19tYXhpbXVtTGVuZ3RoID0gNTI0Mjg4OwogY29uc3QgaW50IElucHV0RWxlbWVudDo6
c19kZWZhdWx0U2l6ZSA9IDIwOwogCi12b2lkIElucHV0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2
ZW50KElucHV0RWxlbWVudERhdGEmIGRhdGEsIElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50LCBF
bGVtZW50KiBlbGVtZW50KQordm9pZCBJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudChJ
bnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAo
IWlucHV0RWxlbWVudC0+aXNUZXh0RmllbGQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdXBk
YXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGRhdGEsIGlucHV0RWxlbWVudCwgZWxlbWVudCk7Cisg
ICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGlucHV0RWxlbWVudCwgZWxlbWVudCk7CiAK
ICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBlbGVtZW50LT5kb2N1bWVudCgpOwogICAgIGlmIChp
bnB1dEVsZW1lbnQtPmlzUGFzc3dvcmRGaWVsZCgpICYmIGRvY3VtZW50LT5mcmFtZSgpKQogICAg
ICAgICBkb2N1bWVudC0+c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUodHJ1ZSk7
CiB9CiAKLXZvaWQgSW5wdXRFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudChJbnB1dEVsZW1lbnRE
YXRhJiBkYXRhLCBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgRWxlbWVudCogZWxlbWVudCkK
K3ZvaWQgSW5wdXRFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudChJbnB1dEVsZW1lbnQqIGlucHV0
RWxlbWVudCwgRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAoIWlucHV0RWxlbWVudC0+aXNU
ZXh0RmllbGQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIElucHV0
RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoSW5wdXRFbGVtZW50RGF0YSYgZGF0YSwgSW5wdXRF
bGVtZW50KiBpbnB1dAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVw
ZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShkYXRhLCBpbnB1dEVsZW1lbnQsIGVsZW1lbnQpOwor
ICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShpbnB1dEVsZW1lbnQsIGVsZW1lbnQpOwog
CiAgICAgaWYgKGlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIGRvY3Vt
ZW50LT5zZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShmYWxzZSk7CkBAIC04Miwx
OCArODIsMTkgQEAgdm9pZCBJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KElucHV0RWxl
bWVudERhdGEmIGRhdGEsIElucHV0RWxlbWVudCogaW5wdXQKICAgICBmcmFtZS0+dGV4dEZpZWxk
RGlkRW5kRWRpdGluZyhlbGVtZW50KTsKIH0KIAotdm9pZCBJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBs
YWNlaG9sZGVyVmlzaWJpbGl0eShJbnB1dEVsZW1lbnREYXRhJiBkYXRhLCBJbnB1dEVsZW1lbnQq
IGlucHV0RWxlbWVudCwgRWxlbWVudCogZWxlbWVudCwgYm9vbCBwbGFjZWhvbGRlclZhbHVlQ2hh
bmdlZCkKK2Jvb2wgSW5wdXRFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZShjb25z
dCBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgY29uc3QgRWxlbWVudCogZWxlbWVudCkKIHsK
LSAgICBBU1NFUlQoaW5wdXRFbGVtZW50LT5pc1RleHRGaWVsZCgpKTsKLSAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBlbGVtZW50LT5kb2N1bWVudCgpOwotCi0gICAgYm9vbCBvbGRQbGFjZWhvbGRl
clNob3VsZEJlVmlzaWJsZSA9IGRhdGEucGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKTsKLSAg
ICBkYXRhLnNldFBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKGlucHV0RWxlbWVudC0+dmFsdWUo
KS5pc0VtcHR5KCkgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBk
b2N1bWVudC0+Zm9jdXNlZE5vZGUoKSAhPSBlbGVtZW50Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmJiAhaW5wdXRFbGVtZW50LT5wbGFjZWhvbGRlcigpLmlzRW1wdHko
KSk7CisgICAgcmV0dXJuIGlucHV0RWxlbWVudC0+dmFsdWUoKS5pc0VtcHR5KCkKKyAgICAgICAg
JiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSAhPSBlbGVtZW50CisgICAgICAg
ICYmICFpbnB1dEVsZW1lbnQtPnBsYWNlaG9sZGVyKCkuaXNFbXB0eSgpOworfQogCi0gICAgaWYg
KChvbGRQbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSAhPSBkYXRhLnBsYWNlaG9sZGVyU2hvdWxk
QmVWaXNpYmxlKCkgfHwgcGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQpICYmIGVsZW1lbnQtPnJlbmRl
cmVyKCkpCi0gICAgICAgIHRvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKGVsZW1lbnQtPnJl
bmRlcmVyKCkpLT51cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoKTsKK3ZvaWQgSW5wdXRFbGVt
ZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1l
bnQsIEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgcGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQpCit7Cisg
ICAgQVNTRVJUKGlucHV0RWxlbWVudC0+aXNUZXh0RmllbGQoKSk7CisgICAgYm9vbCBwbGFjZWhv
bGRlclZpc2libGUgPSBpbnB1dEVsZW1lbnQtPnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCk7
CisgICAgaWYgKGVsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAgICAgIHRvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lKGVsZW1lbnQtPnJlbmRlcmVyKCkpLT51cGRhdGVQbGFjZWhvbGRlclZpc2li
aWxpdHkocGxhY2Vob2xkZXJWaXNpYmxlLCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdlZCk7CiB9CiAK
IHZvaWQgSW5wdXRFbGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2UoSW5wdXRFbGVtZW50RGF0
YSYgZGF0YSwgSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQsIEVsZW1lbnQqIGVsZW1lbnQsIGJv
b2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKQpAQCAtMTQxLDcgKzE0Miw3IEBAIHZvaWQgSW5w
dXRFbGVtZW50OjpzZXRWYWx1ZUZyb21SZW5kZXJlcihJbnB1dEVsZW1lbnREYXRhJiBkYXRhLCBJ
bnB1dEVsZW1lbnQqIGluCiAgICAgQVNTRVJUKHZhbHVlID09IGlucHV0RWxlbWVudC0+Y29uc3Ry
YWluVmFsdWUodmFsdWUpIHx8IGlucHV0RWxlbWVudC0+Y29uc3RyYWluVmFsdWUodmFsdWUpLmlz
RW1wdHkoKSk7CiAKICAgICBpZiAoaW5wdXRFbGVtZW50LT5pc1RleHRGaWVsZCgpKQotICAgICAg
ICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoZGF0YSwgaW5wdXRFbGVtZW50LCBlbGVtZW50
KTsKKyAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGlucHV0RWxlbWVudCwgZWxl
bWVudCk7CiAKICAgICAvLyBXb3JrYXJvdW5kIGZvciBidWcgd2hlcmUgdHJhaWxpbmcgXG4gaXMg
aW5jbHVkZWQgaW4gdGhlIHJlc3VsdCBvZiB0ZXh0Q29udGVudC4KICAgICAvLyBUaGUgYXNzZXJ0
IG1hY3JvIGFib3ZlIG1heSBhbHNvIGJlIHNpbXBsaWZpZWQgdG86ICB2YWx1ZSA9PSBjb25zdHJh
aW5WYWx1ZSh2YWx1ZSkKQEAgLTI3Nyw4ICsyNzgsNyBAQCB2b2lkIElucHV0RWxlbWVudDo6bm90
aWZ5Rm9ybVN0YXRlQ2hhbmdlZChFbGVtZW50KiBlbGVtZW50KQogCiAvLyBJbnB1dEVsZW1lbnRE
YXRhCiBJbnB1dEVsZW1lbnREYXRhOjpJbnB1dEVsZW1lbnREYXRhKCkKLSAgICA6IG1fcGxhY2Vo
b2xkZXJTaG91bGRCZVZpc2libGUoZmFsc2UpCi0gICAgLCBtX3NpemUoSW5wdXRFbGVtZW50Ojpz
X2RlZmF1bHRTaXplKQorICAgIDogbV9zaXplKElucHV0RWxlbWVudDo6c19kZWZhdWx0U2l6ZSkK
ICAgICAsIG1fbWF4TGVuZ3RoKElucHV0RWxlbWVudDo6c19tYXhpbXVtTGVuZ3RoKQogICAgICwg
bV9jYWNoZWRTZWxlY3Rpb25TdGFydCgtMSkKICAgICAsIG1fY2FjaGVkU2VsZWN0aW9uRW5kKC0x
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmggYi9XZWJDb3JlL2RvbS9J
bnB1dEVsZW1lbnQuaAppbmRleCA3YWQzY2JkLi4wYmQxMDJlIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2RvbS9JbnB1dEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaApAQCAt
NjQsOSArNjQsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQgc19kZWZhdWx0U2l6
ZTsKIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoRm9jdXNFdmVudChJbnB1
dEVsZW1lbnREYXRhJiwgSW5wdXRFbGVtZW50KiwgRWxlbWVudCopOwotICAgIHN0YXRpYyB2b2lk
IGRpc3BhdGNoQmx1ckV2ZW50KElucHV0RWxlbWVudERhdGEmLCBJbnB1dEVsZW1lbnQqLCBFbGVt
ZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KElucHV0
RWxlbWVudERhdGEmLCBJbnB1dEVsZW1lbnQqLCBFbGVtZW50KiwgYm9vbCBwbGFjZWhvbGRlclZh
bHVlQ2hhbmdlZCA9IGZhbHNlKTsKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQo
SW5wdXRFbGVtZW50KiwgRWxlbWVudCopOworICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoQmx1ckV2
ZW50KElucHV0RWxlbWVudCosIEVsZW1lbnQqKTsKKyAgICBzdGF0aWMgYm9vbCBwbGFjZWhvbGRl
clNob3VsZEJlVmlzaWJsZShjb25zdCBJbnB1dEVsZW1lbnQqLCBjb25zdCBFbGVtZW50Kik7Cisg
ICAgc3RhdGljIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KElucHV0RWxlbWVudCos
IEVsZW1lbnQqLCBib29sIHBsYWNlaG9sZGVyVmFsdWVDaGFuZ2VkID0gZmFsc2UpOwogICAgIHN0
YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZShJbnB1dEVsZW1lbnREYXRhJiwgSW5wdXRF
bGVtZW50KiwgRWxlbWVudCosIGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKTsKICAgICBz
dGF0aWMgdm9pZCB1cGRhdGVTZWxlY3Rpb25SYW5nZShJbnB1dEVsZW1lbnQqLCBFbGVtZW50Kiwg
aW50IHN0YXJ0LCBpbnQgZW5kKTsKICAgICBzdGF0aWMgdm9pZCBhYm91dFRvVW5sb2FkKElucHV0
RWxlbWVudCosIEVsZW1lbnQqKTsKQEAgLTg1LDkgKzg2LDYgQEAgY2xhc3MgSW5wdXRFbGVtZW50
RGF0YSB7CiBwdWJsaWM6CiAgICAgSW5wdXRFbGVtZW50RGF0YSgpOwogCi0gICAgYm9vbCBwbGFj
ZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhY2Vob2xkZXJTaG91
bGRCZVZpc2libGU7IH0KLSAgICB2b2lkIHNldFBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKGJv
b2wgdmlzaWJsZSkgeyBtX3BsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlID0gdmlzaWJsZTsgfQot
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29uc3Q7CiAgICAgdm9pZCBzZXROYW1l
KGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIHsgbV9uYW1lID0gdmFsdWU7IH0KIApAQCAtMTA3
LDcgKzEwNSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhY2hlZFNlbGVjdGlvbkVuZChpbnQg
dmFsdWUpIHsgbV9jYWNoZWRTZWxlY3Rpb25FbmQgPSB2YWx1ZTsgfQogCiBwcml2YXRlOgotICAg
IGJvb2wgbV9wbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZTsKICAgICBBdG9taWNTdHJpbmcgbV9u
YW1lOwogICAgIFN0cmluZyBtX3ZhbHVlOwogICAgIGludCBtX3NpemU7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKaW5kZXggMmJmODUxOS4uYjM0OGQzYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcApAQCAtMjUzLDcgKzI1Myw3IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6c2hvdWxk
VXNlSW5wdXRNZXRob2QoKSBjb25zdAogCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRpc3BhdGNo
Rm9jdXNFdmVudCgpCiB7Ci0gICAgSW5wdXRFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQobV9k
YXRhLCB0aGlzLCB0aGlzKTsKKyAgICBJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCh0
aGlzLCB0aGlzKTsKIAogICAgIGlmIChpc1RleHRGaWVsZCgpKQogICAgICAgICBtX2F1dG9maWxs
ZWQgPSBmYWxzZTsKQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRp
c3BhdGNoRm9jdXNFdmVudCgpCiAKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVy
RXZlbnQoKQogewotICAgIElucHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQobV9kYXRhLCB0
aGlzLCB0aGlzKTsKKyAgICBJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KHRoaXMsIHRo
aXMpOwogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoQmx1ckV2
ZW50KCk7CiB9CiAKQEAgLTEwODcsNyArMTA4Nyw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6
c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBtX2RhdGEuc2V0VmFsdWUoY29uc3RyYWluVmFsdWUodmFsdWUpKTsKICAgICAgICAgICAgIGlm
IChpc1RleHRGaWVsZCgpKSB7Ci0gICAgICAgICAgICAgICAgSW5wdXRFbGVtZW50Ojp1cGRhdGVQ
bGFjZWhvbGRlclZpc2liaWxpdHkobV9kYXRhLCB0aGlzLCB0aGlzKTsKKyAgICAgICAgICAgICAg
ICBJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSh0aGlzLCB0aGlzKTsK
ICAgICAgICAgICAgICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgICAgICAgICB9CkBAIC0xNzYy
LDcgKzE3NjIsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OndpbGxWYWxpZGF0ZSgpIGNvbnN0
CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBj
b25zdAogewotICAgIHJldHVybiBtX2RhdGEucGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKTsK
KyAgICByZXR1cm4gSW5wdXRFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSh0aGlz
LCB0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4
IDRkODg3ZjMuLmNjYjM3ZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtMjMwLDcgKzIz
MCw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5
KCkKICAgICB7Ci0gICAgICAgIElucHV0RWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmls
aXR5KG1fZGF0YSwgdGhpcywgdGhpcywgdHJ1ZSk7CisgICAgICAgIElucHV0RWxlbWVudDo6dXBk
YXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KHRoaXMsIHRoaXMsIHRydWUpOwogICAgIH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCAxZDNmOTM5Li5kM2Zj
ODk3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0xOTIsNiArMTkyLDgg
QEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRB
dHRyaWJ1dGUqIGF0dHIpCiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYWxpZ25BdHRy
KSB7CiAgICAgICAgIC8vIERvbid0IG1hcCAnYWxpZ24nIGF0dHJpYnV0ZS4gIFRoaXMgbWF0Y2hl
cyB3aGF0IEZpcmVmb3gsIE9wZXJhIGFuZCBJRSBkby4KICAgICAgICAgLy8gU2VlIGh0dHA6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNzUKKyAgICB9IGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBwbGFjZWhvbGRlckF0dHIpIHsKKyAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJW
aXNpYmlsaXR5KHRydWUpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uZm9jdXNB
dHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5mb2N1
c0V2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25ibHVyQXR0cikKQEAgLTMwOSw2ICszMTEsNyBAQCB2
b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAK
ICAgICBtX3ZhbHVlID0gbm9ybWFsaXplZFZhbHVlOwogICAgIHNldEZvcm1Db250cm9sVmFsdWVN
YXRjaGVzUmVuZGVyZXIodHJ1ZSk7CisgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGZh
bHNlKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVT
dHlsZUlmTmVlZGVkKCk7CiAgICAgaWYgKHJlbmRlcmVyKCkpCkBAIC00MDgsNCArNDExLDI5IEBA
IGJvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6c2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCitib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBsYWNlaG9s
ZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdmFsdWUoKS5pc0VtcHR5
KCkKKyAgICAgICAgJiYgZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSAhPSB0aGlzCisgICAgICAg
ICYmICFnZXRBdHRyaWJ1dGUocGxhY2Vob2xkZXJBdHRyKS5pc0VtcHR5KCk7Cit9CisKK3ZvaWQg
SFRNTFRleHRBcmVhRWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGJvb2wgcGxh
Y2Vob2xkZXJWYWx1ZUNoYW5nZWQpCit7CisgICAgaWYgKHJlbmRlcmVyKCkpCisgICAgICAgIHRv
UmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIoKSktPnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0
eShwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpLCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdlZCk7
Cit9CisKK3ZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCkKK3sK
KyAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoZmFsc2UpOworICAgIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoRm9jdXNFdmVudCgpOworfQorCit2b2lkIEhU
TUxUZXh0QXJlYUVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCkKK3sKKyAgICB1cGRhdGVQbGFj
ZWhvbGRlclZpc2liaWxpdHkoZmFsc2UpOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRo
U3RhdGU6OmRpc3BhdGNoQmx1ckV2ZW50KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuaAppbmRleCA1ZWY4ZTU1Li5kYjEyZTljIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmgKQEAgLTkzLDEwICs5MywxNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25zdDsKIAorICAgIGJvb2wgcGxhY2Vo
b2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBlbnVtIFdyYXBN
ZXRob2QgeyBOb1dyYXAsIFNvZnRXcmFwLCBIYXJkV3JhcCB9OwogCiAgICAgdm9pZCB1cGRhdGVW
YWx1ZSgpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGJvb2wg
cGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3Vz
RXZlbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiAhaXNSZXF1
aXJlZEZvcm1Db250cm9sKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZvcm1Db250
cm9sKCkgY29uc3QgeyByZXR1cm4gcmVxdWlyZWQoKTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuaWRsCmluZGV4IDVkMjg1M2UuLmVhNGFjM2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5pZGwKQEAgLTM1LDYgKzM1LDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAgICAgIGRpc2FibGVkOwogICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAgICAgIGF1dG9mb2N1czsKICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlICBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyAgICAgICAgICAgIG5hbWU7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnRO
dWxsVG9OdWxsU3RyaW5nLCBSZWZsZWN0XSBET01TdHJpbmcgICBwbGFjZWhvbGRlcjsKICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICByZWFkT25seTsKICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICByZXF1aXJlZDsK
ICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBsb25nICAgICAgICAgICAgICAgICByb3dzOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IDk1ZTcxZGQuLjcyNDQ0
YmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKQEAgLTY5LDYgKzY5
LDcgQEAgc3RhdGljIENvbG9yIGRpc2FibGVkVGV4dENvbG9yKGNvbnN0IENvbG9yJiB0ZXh0Q29s
b3IsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ28KIAogUmVuZGVyVGV4dENvbnRyb2w6OlJlbmRl
clRleHRDb250cm9sKE5vZGUqIG5vZGUpCiAgICAgOiBSZW5kZXJCbG9jayhub2RlKQorICAgICwg
bV9wbGFjZWhvbGRlclZpc2libGUoZmFsc2UpCiAgICAgLCBtX2VkaXRlZChmYWxzZSkKICAgICAs
IG1fdXNlckVkaXRlZChmYWxzZSkKIHsKQEAgLTkyLDE0ICs5MywyMiBAQCB2b2lkIFJlbmRlclRl
eHRDb250cm9sOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVu
ZGVyU3R5bGUqCiAgICAgICAgIC8vIFJlc2V0IHRoZW0gbm93IHRvIGF2b2lkIGdldHRpbmcgYSBz
cHVyaW91cyBsYXlvdXQgaGludC4KICAgICAgICAgdGV4dEJsb2NrUmVuZGVyZXItPnN0eWxlKCkt
PnNldEhlaWdodChMZW5ndGgoKSk7CiAgICAgICAgIHRleHRCbG9ja1JlbmRlcmVyLT5zdHlsZSgp
LT5zZXRXaWR0aChMZW5ndGgoKSk7Ci0gICAgICAgIHRleHRCbG9ja1JlbmRlcmVyLT5zZXRTdHls
ZSh0ZXh0QmxvY2tTdHlsZSk7CisgICAgICAgIHNldElubmVyVGV4dFN0eWxlKHRleHRCbG9ja1N0
eWxlKTsKKyAgICB9CisKKyAgICBzZXRSZXBsYWNlZChpc0lubGluZSgpKTsKK30KKwordm9pZCBS
ZW5kZXJUZXh0Q29udHJvbDo6c2V0SW5uZXJUZXh0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gc3R5bGUpCit7CisgICAgaWYgKG1faW5uZXJUZXh0KSB7CisgICAgICAgIFJlZlB0cjxSZW5k
ZXJTdHlsZT4gdGV4dFN0eWxlID0gc3R5bGU7CisgICAgICAgIG1faW5uZXJUZXh0LT5yZW5kZXJl
cigpLT5zZXRTdHlsZSh0ZXh0U3R5bGUpOwogICAgICAgICBmb3IgKE5vZGUqIG4gPSBtX2lubmVy
VGV4dC0+Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZShtX2lubmVyVGV4
dC5nZXQoKSkpIHsKICAgICAgICAgICAgIGlmIChuLT5yZW5kZXJlcigpKQotICAgICAgICAgICAg
ICAgIG4tPnJlbmRlcmVyKCktPnNldFN0eWxlKHRleHRCbG9ja1N0eWxlKTsKKyAgICAgICAgICAg
ICAgICBuLT5yZW5kZXJlcigpLT5zZXRTdHlsZSh0ZXh0U3R5bGUpOwogICAgICAgICB9CiAgICAg
fQotCi0gICAgc2V0UmVwbGFjZWQoaXNJbmxpbmUoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCB1cGRhdGVVc2VyTW9kaWZ5UHJvcGVydHkoTm9kZSogbm9kZSwgUmVuZGVyU3R5bGUqIHN0eWxl
KQpAQCAtNTA2LDQgKzUxNSwxOCBAQCBIVE1MRWxlbWVudCogUmVuZGVyVGV4dENvbnRyb2w6Omlu
bmVyVGV4dEVsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2lubmVyVGV4dC5nZXQoKTsKIH0K
IAordm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGJv
b2wgcGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUsIGJvb2wgcGxhY2Vob2xkZXJWYWx1ZUNoYW5n
ZWQpCit7CisgICAgYm9vbCBvbGRQbGFjZWhvbGRlclZpc2libGUgPSBtX3BsYWNlaG9sZGVyVmlz
aWJsZTsKKyAgICBtX3BsYWNlaG9sZGVyVmlzaWJsZSA9IHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNp
YmxlOworICAgIGlmIChvbGRQbGFjZWhvbGRlclZpc2libGUgIT0gbV9wbGFjZWhvbGRlclZpc2li
bGUgfHwgcGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQpIHsKKyAgICAgICAgLy8gU2V0cyB0aGUgaW5u
ZXIgdGV4dCBzdHlsZSB0byB0aGUgbm9ybWFsIHN0eWxlIG9yIDpwbGFjZWhvbGRlciBzdHlsZS4K
KyAgICAgICAgc2V0SW5uZXJUZXh0U3R5bGUoY3JlYXRlSW5uZXJUZXh0U3R5bGUodGV4dEJhc2VT
dHlsZSgpKSk7CisKKyAgICAgICAgLy8gdXBkYXRlRnJvbUVsZW1lbnQoKSBvZiB0aGUgc3ViY2xh
c3NlcyB1cGRhdGVzIHRoZSB0ZXh0IGNvbnRlbnQKKyAgICAgICAgLy8gdG8gdGhlIGVsZW1lbnQn
cyB2YWx1ZSgpLCBwbGFjZWhvbGRlcigpLCBvciB0aGUgZW1wdHkgc3RyaW5nLgorICAgICAgICB1
cGRhdGVGcm9tRWxlbWVudCgpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKaW5kZXggYzBmYzM0My4uMzIxMmExYiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCkBAIC01Niw2ICs1Niw4IEBAIHB1
YmxpYzoKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGlu
ZGV4KTsKICAgICBpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0
aW9uJik7CiAKKyAgICB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShib29sLCBib29s
KTsKKwogcHJvdGVjdGVkOgogICAgIFJlbmRlclRleHRDb250cm9sKE5vZGUqKTsKIApAQCAtNzYs
NiArNzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdENvbnRyb2xIZWln
aHRCYXNlZE9uTGluZUhlaWdodChpbnQgbGluZUhlaWdodCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBjYWNoZVNlbGVjdGlvbihpbnQgc3RhcnQsIGludCBlbmQpID0gMDsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0
eWxlKiBzdGFydFN0eWxlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZW5kZXJTdHlsZSogdGV4
dEJhc2VTdHlsZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxl
bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBjYWxjSGVpZ2h0KCk7CkBAIC04Myw2ICs4Niw4IEBA
IHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgVGV4dEl0ZXJhdG9yOwogICAgIEhUTUxFbGVt
ZW50KiBpbm5lclRleHRFbGVtZW50KCkgY29uc3Q7CiAKKyAgICBib29sIG1fcGxhY2Vob2xkZXJW
aXNpYmxlOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IHsgcmV0dXJuICJSZW5kZXJUZXh0Q29udHJvbCI7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNUZXh0Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTkyLDYgKzk3LDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayhS
ZW5kZXJCbG9jayopIHsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBzZXRJbm5lclRleHRTdHlsZShQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPik7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3Rz
KEdyYXBoaWNzQ29udGV4dCosIGludCB0eCwgaW50IHR5KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCmluZGV4IDU2NmE4MWMuLjhkZmI4
NTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZS5jcHAKQEAgLTI0LDE0ICsyNCwxNiBAQAogCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2lu
Y2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
aXRUZXN0UmVzdWx0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKE5vZGUqIG5vZGUpCiAgICAg
OiBSZW5kZXJUZXh0Q29udHJvbChub2RlKQogeworICAgIG1fcGxhY2Vob2xkZXJWaXNpYmxlID0g
c3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KG5vZGUpLT5wbGFjZWhvbGRlclNob3Vs
ZEJlVmlzaWJsZSgpOwogfQogCiBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6flJlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lKCkKQEAgLTYwLDcgKzYyLDEwIEBAIGJvb2wgUmVuZGVyVGV4dENv
bnRyb2xNdWx0aUxpbmU6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0
LCBIaXRUCiAgICAgaWYgKCFSZW5kZXJUZXh0Q29udHJvbDo6bm9kZUF0UG9pbnQocmVxdWVzdCwg
cmVzdWx0LCB4LCB5LCB0eCwgdHksIGhpdFRlc3RBY3Rpb24pKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpZiAocmVzdWx0LmlubmVyTm9kZSgpID09IG5vZGUoKSB8fCByZXN1bHQuaW5u
ZXJOb2RlKCkgPT0gaW5uZXJUZXh0RWxlbWVudCgpKQorICAgIGJvb2wgcmVzdWx0SXNUZXh0VmFs
dWVPclBsYWNlaG9sZGVyCisgICAgICAgID0gIW1fcGxhY2Vob2xkZXJWaXNpYmxlICYmIHJlc3Vs
dC5pbm5lck5vZGUoKSA9PSBpbm5lclRleHRFbGVtZW50KCkKKyAgICAgICAgfHwgbV9wbGFjZWhv
bGRlclZpc2libGUgJiYgcmVzdWx0LmlubmVyTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihpbm5lclRl
eHRFbGVtZW50KCkpOworICAgIGlmIChyZXN1bHQuaW5uZXJOb2RlKCkgPT0gbm9kZSgpIHx8IHJl
c3VsdElzVGV4dFZhbHVlT3JQbGFjZWhvbGRlcikKICAgICAgICAgaGl0SW5uZXJUZXh0RWxlbWVu
dChyZXN1bHQsIHgsIHksIHR4LCB0eSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTkyLDcgKzk3
LDExIEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OnVwZGF0ZUZyb21FbGVtZW50
KCkKICAgICBjcmVhdGVTdWJ0cmVlSWZOZWVkZWQoMCk7CiAgICAgUmVuZGVyVGV4dENvbnRyb2w6
OnVwZGF0ZUZyb21FbGVtZW50KCk7CiAKLSAgICBzZXRJbm5lclRleHRWYWx1ZShzdGF0aWNfY2Fz
dDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4obm9kZSgpKS0+dmFsdWUoKSk7CisgICAgSFRNTFRleHRB
cmVhRWxlbWVudCogdGV4dEFyZWEgPSBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4o
bm9kZSgpKTsKKyAgICBpZiAobV9wbGFjZWhvbGRlclZpc2libGUpCisgICAgICAgIHNldElubmVy
VGV4dFZhbHVlKHRleHRBcmVhLT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpwbGFjZWhvbGRlckF0
dHIpKTsKKyAgICBlbHNlCisgICAgICAgIHNldElubmVyVGV4dFZhbHVlKHRleHRBcmVhLT52YWx1
ZSgpKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6Y2FjaGVTZWxlY3Rp
b24oaW50IHN0YXJ0LCBpbnQgZW5kKQpAQCAtMTAyLDggKzExMSwxNSBAQCB2b2lkIFJlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lOjpjYWNoZVNlbGVjdGlvbihpbnQgc3RhcnQsIGludCBlbmQpCiAK
IFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpjcmVh
dGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3QKIHsK
LSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHRleHRCbG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNy
ZWF0ZSgpOwotICAgIHRleHRCbG9ja1N0eWxlLT5pbmhlcml0RnJvbShzdGFydFN0eWxlKTsKKyAg
ICBSZWZQdHI8UmVuZGVyU3R5bGU+IHRleHRCbG9ja1N0eWxlOworICAgIGlmIChtX3BsYWNlaG9s
ZGVyVmlzaWJsZSkgeworICAgICAgICBpZiAoUmVuZGVyU3R5bGUqIHBzZXVkb1N0eWxlID0gZ2V0
Q2FjaGVkUHNldWRvU3R5bGUoSU5QVVRfUExBQ0VIT0xERVIpKQorICAgICAgICAgICAgdGV4dEJs
b2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUocHNldWRvU3R5bGUpOworICAgIH0KKyAgICBp
ZiAoIXRleHRCbG9ja1N0eWxlKSB7CisgICAgICAgIHRleHRCbG9ja1N0eWxlID0gUmVuZGVyU3R5
bGU6OmNyZWF0ZSgpOworICAgICAgICB0ZXh0QmxvY2tTdHlsZS0+aW5oZXJpdEZyb20oc3RhcnRT
dHlsZSk7CisgICAgfQogCiAgICAgYWRqdXN0SW5uZXJUZXh0U3R5bGUoc3RhcnRTdHlsZSwgdGV4
dEJsb2NrU3R5bGUuZ2V0KCkpOwogICAgIHRleHRCbG9ja1N0eWxlLT5zZXREaXNwbGF5KEJMT0NL
KTsKQEAgLTExMSw0ICsxMjcsOSBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0
Q29udHJvbE11bHRpTGluZTo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUgogICAgIHJldHVy
biB0ZXh0QmxvY2tTdHlsZS5yZWxlYXNlKCk7CiB9CiAKK1JlbmRlclN0eWxlKiBSZW5kZXJUZXh0
Q29udHJvbE11bHRpTGluZTo6dGV4dEJhc2VTdHlsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0
eWxlKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZS5oCmluZGV4IDcyOTY2NTMuLjMzM2NmYTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaApAQCAtNDcsNiArNDcsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBjYWNoZVNlbGVjdGlvbihpbnQgc3RhcnQsIGludCBlbmQpOwogCisgICAgdmlydHVhbCBSZW5k
ZXJTdHlsZSogdGV4dEJhc2VTdHlsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0
U3R5bGUpIGNvbnN0OwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZS5jcHAKaW5kZXggOWMwMjJkNi4uYmM5OGI4YSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBAIC01MCwx
MiArNTAsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoTm9kZSogbm9kZSkKICAg
ICA6IFJlbmRlclRleHRDb250cm9sKG5vZGUpCi0gICAgLCBtX3BsYWNlaG9sZGVyVmlzaWJsZShm
YWxzZSkKICAgICAsIG1fc2VhcmNoUG9wdXBJc1Zpc2libGUoZmFsc2UpCiAgICAgLCBtX3Nob3Vs
ZERyYXdDYXBzTG9ja0luZGljYXRvcihmYWxzZSkKICAgICAsIG1fc2VhcmNoRXZlbnRUaW1lcih0
aGlzLCAmUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpzZWFyY2hFdmVudFRpbWVyRmlyZWQp
CiAgICAgLCBtX3NlYXJjaFBvcHVwKDApCiB7CisgICAgbV9wbGFjZWhvbGRlclZpc2libGUgPSBp
bnB1dEVsZW1lbnQoKS0+cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKTsKIH0KIAogUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lOjp+UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKCkKQEAg
LTY5LDI1ICs2OSw5IEBAIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6flJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZSgpCiAgICAgICAgIG1faW5uZXJCbG9jay0+ZGV0YWNoKCk7CiB9CiAK
LWJvb2wgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpwbGFjZWhvbGRlclNob3VsZEJlVmlz
aWJsZSgpIGNvbnN0CitSZW5kZXJTdHlsZSogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp0
ZXh0QmFzZVN0eWxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5wdXRFbGVtZW50KCktPnBsYWNl
aG9sZGVyU2hvdWxkQmVWaXNpYmxlKCk7Ci19Ci0KLXZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lOjp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoKQotewotICAgIFJlbmRlclN0eWxl
KiBwYXJlbnRTdHlsZSA9IG1faW5uZXJCbG9jayA/IG1faW5uZXJCbG9jay0+cmVuZGVyZXIoKS0+
c3R5bGUoKSA6IHN0eWxlKCk7Ci0KLSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHRleHRCbG9ja1N0
eWxlID0gY3JlYXRlSW5uZXJUZXh0U3R5bGUocGFyZW50U3R5bGUpOwotICAgIEhUTUxFbGVtZW50
KiBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50KCk7Ci0gICAgaW5uZXJUZXh0LT5yZW5kZXJl
cigpLT5zZXRTdHlsZSh0ZXh0QmxvY2tTdHlsZSk7Ci0KLSAgICBmb3IgKE5vZGUqIG4gPSBpbm5l
clRleHQtPmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPnRyYXZlcnNlTmV4dE5vZGUoaW5uZXJUZXh0
KSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG4tPnJlbmRlcmVyKCkp
Ci0gICAgICAgICAgICByZW5kZXJlci0+c2V0U3R5bGUodGV4dEJsb2NrU3R5bGUpOwotICAgIH0K
LQotICAgIHVwZGF0ZUZyb21FbGVtZW50KCk7CisgICAgcmV0dXJuIG1faW5uZXJCbG9jayA/IG1f
aW5uZXJCbG9jay0+cmVuZGVyZXIoKS0+c3R5bGUoKSA6IHN0eWxlKCk7CiB9CiAKIHZvaWQgUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjphZGRTZWFyY2hSZXN1bHQoKQpAQCAtNDY5LDkgKzQ1
Myw2IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp1cGRhdGVGcm9tRWxlbWVu
dCgpCiAgICAgY3JlYXRlU3VidHJlZUlmTmVlZGVkKCk7CiAgICAgUmVuZGVyVGV4dENvbnRyb2w6
OnVwZGF0ZUZyb21FbGVtZW50KCk7CiAKLSAgICBib29sIHBsYWNlaG9sZGVyVmlzaWJpbGl0eVNo
b3VsZENoYW5nZSA9IG1fcGxhY2Vob2xkZXJWaXNpYmxlICE9IHBsYWNlaG9sZGVyU2hvdWxkQmVW
aXNpYmxlKCk7Ci0gICAgbV9wbGFjZWhvbGRlclZpc2libGUgPSBwbGFjZWhvbGRlclNob3VsZEJl
VmlzaWJsZSgpOwotCiAgICAgaWYgKG1fY2FuY2VsQnV0dG9uKQogICAgICAgICB1cGRhdGVDYW5j
ZWxCdXR0b25WaXNpYmlsaXR5KCk7CiAKQEAgLTQ3OSw3ICs0NjAsNyBAQCB2b2lkIFJlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZTo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICAgICAgaW5uZXJUZXh0RWxlbWVudCgpLT5zZXRJbm5lclRleHQo
aW5wdXRFbGVtZW50KCktPnBsYWNlaG9sZGVyKCksIGVjKTsKICAgICAgICAgQVNTRVJUKCFlYyk7
Ci0gICAgfSBlbHNlIGlmICghc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSktPmZvcm1Db250
cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoKSB8fCBwbGFjZWhvbGRlclZpc2liaWxpdHlTaG91bGRD
aGFuZ2UpCisgICAgfSBlbHNlCiAgICAgICAgIHNldElubmVyVGV4dFZhbHVlKGlucHV0RWxlbWVu
dCgpLT52YWx1ZSgpKTsKIAogICAgIGlmIChtX3NlYXJjaFBvcHVwSXNWaXNpYmxlKQpAQCAtNDk0
LDcgKzQ3NSw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjYWNoZVNlbGVj
dGlvbihpbnQgc3RhcnQsIGludCBlbmQpCiBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0
eWxlKiBzdGFydFN0eWxlKSBjb25zdAogewogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gdGV4dEJs
b2NrU3R5bGU7Ci0gICAgaWYgKHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkpIHsKKyAgICBp
ZiAobV9wbGFjZWhvbGRlclZpc2libGUpIHsKICAgICAgICAgaWYgKFJlbmRlclN0eWxlKiBwc2V1
ZG9TdHlsZSA9IGdldENhY2hlZFBzZXVkb1N0eWxlKElOUFVUX1BMQUNFSE9MREVSKSkKICAgICAg
ICAgICAgIHRleHRCbG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKHBzZXVkb1N0eWxlKTsK
ICAgICB9IApAQCAtNTI0LDcgKzUwNSw3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZTo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QKICAgICAv
LyBBZnRlciB0aGlzLCB1cGRhdGVGcm9tRWxlbWVudCB3aWxsIGltbWVkaWF0ZWx5IHVwZGF0ZSB0
aGUgdGV4dCBkaXNwbGF5ZWQuCiAgICAgLy8gV2hlbiB0aGUgcGxhY2Vob2xkZXIgaXMgbm8gbG9u
Z2VyIHZpc2libGUsIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJsaXR5IHdpbGwgcmVzZXQgdGhlIHN0
eWxlLCAKICAgICAvLyBhbmQgdGhlIHRleHQgc2VjdXJpdHkgbW9kZSB3aWxsIGJlIHNldCBiYWNr
IHRvIHRoZSBjb21wdXRlZCB2YWx1ZSBjb3JyZWN0bHkuCi0gICAgaWYgKHBsYWNlaG9sZGVyU2hv
dWxkQmVWaXNpYmxlKCkpCisgICAgaWYgKG1fcGxhY2Vob2xkZXJWaXNpYmxlKQogICAgICAgICB0
ZXh0QmxvY2tTdHlsZS0+c2V0VGV4dFNlY3VyaXR5KFRTTk9ORSk7CiAKICAgICByZXR1cm4gdGV4
dEJsb2NrU3R5bGUucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuaAppbmRleCBkYTk4MzhmLi5jZThmMGM4IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaApAQCAtNDEsNyArNDEs
NiBAQCBwdWJsaWM6CiAKICAgICBib29sIHBsYWNlaG9sZGVySXNWaXNpYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wbGFjZWhvbGRlclZpc2libGU7IH0KICAgICBib29sIHBsYWNlaG9sZGVyU2hvdWxk
QmVWaXNpYmxlKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHko
KTsKIAogICAgIHZvaWQgYWRkU2VhcmNoUmVzdWx0KCk7CiAgICAgdm9pZCBzdG9wU2VhcmNoRXZl
bnRUaW1lcigpOwpAQCAtODQsNiArODMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBj
YWNoZVNlbGVjdGlvbihpbnQgc3RhcnQsIGludCBlbmQpOwogICAgIHZpcnR1YWwgdm9pZCBzdHls
ZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7
CiAKKyAgICB2aXJ0dWFsIFJlbmRlclN0eWxlKiB0ZXh0QmFzZVN0eWxlKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjcmVhdGVJbm5lclRleHRTdHlsZShjb25z
dCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4gY3JlYXRlSW5uZXJCbG9ja1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxl
KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjcmVhdGVSZXN1bHRzQnV0dG9u
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0OwpAQCAtMTIxLDcgKzEy
MSw2IEBAIHByaXZhdGU6CiAKICAgICBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCgpIGNvbnN0
OwogCi0gICAgYm9vbCBtX3BsYWNlaG9sZGVyVmlzaWJsZTsKICAgICBib29sIG1fc2VhcmNoUG9w
dXBJc1Zpc2libGU7CiAgICAgYm9vbCBtX3Nob3VsZERyYXdDYXBzTG9ja0luZGljYXRvcjsKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvd21s
L1dNTElucHV0RWxlbWVudC5jcHAKaW5kZXggZDZmYTc5YS4uZmVlZDVhNSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL3dtbC9XTUxJbnB1
dEVsZW1lbnQuY3BwCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgV01MSW5wdXRFbGVtZW50Ojppc01v
dXNlRm9jdXNhYmxlKCkgY29uc3QKIAogdm9pZCBXTUxJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoRm9j
dXNFdmVudCgpCiB7Ci0gICAgSW5wdXRFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQobV9kYXRh
LCB0aGlzLCB0aGlzKTsKKyAgICBJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCh0aGlz
LCB0aGlzKTsKICAgICBXTUxFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoKTsKIH0KIApAQCAt
ODcsNyArODcsNyBAQCB2b2lkIFdNTElucHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoKQog
ICAgIGlmICghbmFtZVZhcmlhYmxlLmlzRW1wdHkoKSkKICAgICAgICAgd21sUGFnZVN0YXRlRm9y
RG9jdW1lbnQoZG9jdW1lbnQoKSktPnN0b3JlVmFyaWFibGUobmFtZVZhcmlhYmxlLCB2YWwpOyAK
IAotICAgIElucHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQobV9kYXRhLCB0aGlzLCB0aGlz
KTsKKyAgICBJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KHRoaXMsIHRoaXMpOwogICAg
IFdNTEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCk7CiB9CiAKQEAgLTEzNCw3ICsxMzQsNyBA
QCBTdHJpbmcgV01MSW5wdXRFbGVtZW50Ojp2YWx1ZSgpIGNvbnN0CiAKIHZvaWQgV01MSW5wdXRF
bGVtZW50OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIElucHV0RWxlbWVu
dDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KG1fZGF0YSwgdGhpcywgdGhpcyk7CisgICAg
SW5wdXRFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkodGhpcywgdGhpcyk7CiAg
ICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcihmYWxzZSk7CiAgICAgbV9kYXRh
LnNldFZhbHVlKGNvbnN0cmFpblZhbHVlKHZhbHVlKSk7CiAgICAgaWYgKGluRG9jdW1lbnQoKSkK
QEAgLTMyMCw3ICszMjAsNyBAQCB2b2lkIFdNTElucHV0RWxlbWVudDo6ZG9jdW1lbnREaWRCZWNv
bWVBY3RpdmUoKQogCiBib29sIFdNTElucHV0RWxlbWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZp
c2libGUoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGEucGxhY2Vob2xkZXJTaG91bGRCZVZp
c2libGUoKTsKKyAgICByZXR1cm4gSW5wdXRFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlz
aWJsZSh0aGlzLCB0aGlzKTsKIH0KIAogdm9pZCBXTUxJbnB1dEVsZW1lbnQ6OndpbGxNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCkK
</data>
<flag name="review"
          id="18690"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="19412"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38467</attachid>
            <date>2009-08-23 22:40:35 -0700</date>
            <delta_ts>2009-08-23 22:46:24 -0700</delta_ts>
            <desc>Proposed patch (rev.5)</desc>
            <filename>placeholder-5.diff</filename>
            <type>text/plain</type>
            <size>46245</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4MmIzYjY4Li5hY2UxZDQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDktMDgt
MTAgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gQWRkIHRlc3RzIGZvciB0aGUgcGxhY2Vo
b2xkZXIgYXR0cmlidXRlIGFuZCBET00gcHJvcGVydHkgb2YgdGhlIHRleHRhcmVhIGVsZW1lbnQu
CisgICAgICAgIC0gQ29ycmVjdCB0aGUgcmVzdWx0cyBmb3IgaW5wdXQtdGV4dC1tYXhsZW5ndGgu
aHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEy
NDgKKworICAgICAgICAqIGZhc3QvZm9ybXMvcmVzb3VyY2VzL3RleHRhcmVhLXBsYWNlaG9sZGVy
LWRvbS1wcm9wZXJ0eS5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy90ZXh0YXJlYS1w
bGFjZWhvbGRlci1kb20tcHJvcGVydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1zdHlsZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNl
dC1hdHRyaWJ1dGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy90ZXh0YXJlYS1w
bGFjZWhvbGRlci1zZXQtdmFsdWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L2Zhc3QvZm9ybXMvaW5wdXQtdGV4dC1tYXhsZW5ndGgtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1zdHls
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2Zvcm1z
L3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1z
ZXQtdmFsdWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0
L2Zvcm1zL2lucHV0LXRleHQtbWF4bGVuZ3RoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vZmFzdC9mb3Jtcy9pbnB1dC10ZXh0LW1heGxlbmd0aC1leHBlY3RlZC50eHQ6CisK
IDIwMDktMDgtMjMgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgTm90IHJldmlld2VkLiBTa2lwIG5ldyB0ZXN0cyBmcm9tCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1kb20t
cHJvcGVydHkuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXh0YXJlYS1w
bGFjZWhvbGRlci1kb20tcHJvcGVydHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uODRkYjJjMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
cmVzb3VyY2VzL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5qcwpAQCAtMCwwICsx
LDE1IEBACitkZXNjcmlwdGlvbignVGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4Ij5odHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEyNDg8L2E+Jyk7CisKK3ZhciB0ZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3RleHRhcmVhJyk7CisKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygndGV4dGFyZWEu
cGxhY2Vob2xkZXInLCAnJyk7CisKK3RleHRhcmVhLnNldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXIn
LCAncDEnKQorc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXh0YXJlYS5wbGFjZWhvbGRlcicsICdw
MScpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXh0YXJlYS52YWx1ZScsICcnKTsKKwordGV4
dGFyZWEucGxhY2Vob2xkZXIgPSAncDInOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXh0YXJl
YS5nZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiknLCAncDInKTsKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygndGV4dGFyZWEucGxhY2Vob2xkZXInLCAncDInKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVh
LXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJmY2FhZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZG9tLXByb3Bl
cnR5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0IGZvciBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDgKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgdGV4dGFyZWEucGxhY2Vob2xkZXIgaXMgIiIKK1BBU1MgdGV4dGFyZWEu
cGxhY2Vob2xkZXIgaXMgInAxIgorUEFTUyB0ZXh0YXJlYS52YWx1ZSBpcyAiIgorUEFTUyB0ZXh0
YXJlYS5nZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIikgaXMgInAyIgorUEFTUyB0ZXh0YXJlYS5w
bGFjZWhvbGRlciBpcyAicDIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJl
YS1wbGFjZWhvbGRlci1kb20tcHJvcGVydHkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
dGV4dGFyZWEtcGxhY2Vob2xkZXItZG9tLXByb3BlcnR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZjQwYmY4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZG9tLXByb3BlcnR5Lmh0bWwKQEAgLTAs
MCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZG9tLXByb3BlcnR5Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1wc2V1ZG8tc3R5bGUuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItcHNldWRvLXN0eWxl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI3MmE5YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXIt
cHNldWRvLXN0eWxlLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPHN0eWxlPgordGV4dGFyZWEucmVk
Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKKyAgICBjb2xvcjogcmdiKDEwMCwgMCwgMCk7
Cit9Cis8L3N0eWxlPgorVGhpcyB0ZXN0cyB0aGF0IHlvdSBjYW4gc2V0IHRoZSBwbGFjZWhvbGRl
ciB0ZXh0IGNvbG9yLjxicj4KKzx0ZXh0YXJlYSBjbGFzcz0icmVkIiBwbGFjZWhvbGRlcj0idGV4
dCI+PC90ZXh0YXJlYT4KKzx0ZXh0YXJlYSBjbGFzcz0icmVkIiBkaXNhYmxlZCBwbGFjZWhvbGRl
cj0iZGlzYWJsZWQgdGV4dCI+PC90ZXh0YXJlYT4KKzx0ZXh0YXJlYSBwbGFjZWhvbGRlcj0iZGVm
YXVsdCI+PC90ZXh0YXJlYT4KKzx0ZXh0YXJlYSBkaXNhYmxlZCBwbGFjZWhvbGRlcj0iZGVmYXVs
dCBkaXNhYmxlZCI+PC90ZXh0YXJlYT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LWF0dHJpYnV0ZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtYXR0cmlidXRlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk3Y2IxZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LWF0dHJpYnV0
ZS5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGZpbmlzaFRlc3Qo
KQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0YXJlYScpLnNldEF0dHJpYnV0
ZSgncGxhY2Vob2xkZXInLCdQbGFjZWhvbGRlcicpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
K30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAg
IHNldFRpbWVvdXQoZmluaXNoVGVzdCwgMCk7Cit9CisKKzwvc2NyaXB0PgorPGJvZHkgb25sb2Fk
PSJ0ZXN0KCkiPgorPHA+SWYgeW91IGNhbiBzZWUgdGhlIHdvcmQgIlBsYWNlaG9sZGVyIiBpbiB0
aGUgdGV4dCBhcmVhLCB0aGVuIGFsbCBpcyB3ZWxsLjwvcD4KKzxwPjx0ZXh0YXJlYSBpZD0idGV4
dGFyZWEiPjwvdGV4dGFyZWE+PC9wPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFsdWUuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LXZhbHVlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRjYTg2NAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LXZhbHVlLmh0
bWwKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAg
ICB7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dCcpLnZhbHVlID0gJ05ldyB0
ZXh0JzsKKyAgICB9CisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorICA8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEyNDgiPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTI0ODwvYT4uPC9wPgorCisgIDx0ZXh0YXJlYSBpZD0idGV4dCIgcGxhY2Vob2xkZXI9IlBs
YWNlaG9sZGVyIHRleHQiPjwvdGV4dGFyZWE+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9mYXN0L2Zvcm1zL2lucHV0LXRleHQt
bWF4bGVuZ3RoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJk
L2Zhc3QvZm9ybXMvaW5wdXQtdGV4dC1tYXhsZW5ndGgtZXhwZWN0ZWQudHh0CmluZGV4IDE0NWQ0
YTEuLmJhM2QwYzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJk
L2Zhc3QvZm9ybXMvaW5wdXQtdGV4dC1tYXhsZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL2Zhc3QvZm9ybXMvaW5wdXQtdGV4dC1tYXhsZW5n
dGgtZXhwZWN0ZWQudHh0CkBAIC0xNjcsMTIgKzE2NywxMiBAQCBsYXllciBhdCAoMTYsOTcpIHNp
emUgNDF4MTMKICAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDI4OiAiMTIzNCIKIGxheWVy
IGF0ICgxNiwxMjQpIHNpemUgNDF4MTMKICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6
ZSA0MXgxMwotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwwKSBzaXplIDM1eDEzCi0gICAg
ICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAzNTogIjEyMzQ1IgorICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMSwwKSBzaXplIDI4eDEzCisgICAgICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAy
ODogIjEyMzQiCiBsYXllciBhdCAoMTYsMTUxKSBzaXplIDQxeDEzCiAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgzLDMpIHNpemUgNDF4MTMKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMCkg
c2l6ZSAzNXgxMwotICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMzU6ICIxMjM0NSIKKyAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMCkgc2l6ZSAyOHgxMworICAgICAgdGV4dCBydW4g
YXQgKDEsMCkgd2lkdGggMjg6ICIxMjM0IgogbGF5ZXIgYXQgKDE2LDE3OCkgc2l6ZSA0MXgxMwog
ICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDQxeDEzCiAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgxLDApIHNpemUgMjh4MTMKQEAgLTE5MSw5ICsxOTEsOSBAQCBsYXllciBhdCAo
MTYsMjU5KSBzaXplIDQxeDEzCiAgICAgICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAyODogIjEy
eFx4ezMwNX1ceHszMzJ9NCIKIGxheWVyIGF0ICgxNiwyODYpIHNpemUgNDF4MTMKICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSA0MXgxMwotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMSwwKSBzaXplIDM1eDEzCi0gICAgICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAzNTogIjEy
eFx4ezMwNX1ceHszMzJ9NDUiCisgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDApIHNpemUg
Mjh4MTMKKyAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDI4OiAiMTJ4XHh7MzA1fVx4ezMz
Mn00IgogbGF5ZXIgYXQgKDE2LDMxMykgc2l6ZSA0MXgxMwogICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMywzKSBzaXplIDQxeDEzCi0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDApIHNpemUg
MzV4MTMKLSAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDM1OiAiMTJ4XHh7MzA1fVx4ezMz
Mn00NSIKKyAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMCkgc2l6ZSAyOHgxMworICAgICAg
dGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMjg6ICIxMnhceHszMDV9XHh7MzMyfTQiCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC10ZXh0LW1heGxl
bmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9p
bnB1dC10ZXh0LW1heGxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXggOWQ3YjNkYy4uYmQ1MjFjZiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvaW5wdXQtdGV4
dC1tYXhsZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L2Zvcm1zL2lucHV0LXRleHQtbWF4bGVuZ3RoLWV4cGVjdGVkLnR4dApAQCAtMTY3LDEyICsx
NjcsMTIgQEAgbGF5ZXIgYXQgKDE2LDk3KSBzaXplIDQxeDEzCiAgICAgICB0ZXh0IHJ1biBhdCAo
MSwwKSB3aWR0aCAyODogIjEyMzQiCiBsYXllciBhdCAoMTYsMTI0KSBzaXplIDQxeDEzCiAgIFJl
bmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgNDF4MTMKLSAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDEsMCkgc2l6ZSAzNXgxMwotICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMzU6
ICIxMjM0NSIKKyAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMCkgc2l6ZSAyOHgxMworICAg
ICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMjg6ICIxMjM0IgogbGF5ZXIgYXQgKDE2LDE1MSkg
c2l6ZSA0MXgxMwogICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDQxeDEzCi0gICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDApIHNpemUgMzV4MTMKLSAgICAgIHRleHQgcnVuIGF0
ICgxLDApIHdpZHRoIDM1OiAiMTIzNDUiCisgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDAp
IHNpemUgMjh4MTMKKyAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDI4OiAiMTIzNCIKIGxh
eWVyIGF0ICgxNiwxNzgpIHNpemUgNDF4MTMKICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykg
c2l6ZSA0MXgxMwogICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwwKSBzaXplIDI4eDEzCkBA
IC0xOTEsOSArMTkxLDkgQEAgbGF5ZXIgYXQgKDE2LDI1OSkgc2l6ZSA0MXgxMwogICAgICAgdGV4
dCBydW4gYXQgKDEsMCkgd2lkdGggMjg6ICIxMnhceHszMDV9XHh7MzMyfTQiCiBsYXllciBhdCAo
MTYsMjg2KSBzaXplIDQxeDEzCiAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgNDF4
MTMKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMCkgc2l6ZSAzNXgxMwotICAgICAgdGV4
dCBydW4gYXQgKDEsMCkgd2lkdGggMzU6ICIxMnhceHszMDV9XHh7MzMyfTQ1IgorICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMSwwKSBzaXplIDI4eDEzCisgICAgICB0ZXh0IHJ1biBhdCAoMSww
KSB3aWR0aCAyODogIjEyeFx4ezMwNX1ceHszMzJ9NCIKIGxheWVyIGF0ICgxNiwzMTMpIHNpemUg
NDF4MTMKICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSA0MXgxMwotICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMSwwKSBzaXplIDM1eDEzCi0gICAgICB0ZXh0IHJ1biBhdCAoMSww
KSB3aWR0aCAzNTogIjEyeFx4ezMwNX1ceHszMzJ9NDUiCisgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgxLDApIHNpemUgMjh4MTMKKyAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDI4OiAi
MTJ4XHh7MzA1fVx4ezMzMn00IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItcHNldWRvLXN0eWxlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9s
ZGVyLXBzZXVkby1zdHlsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMTExYWRjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1zdHlsZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzNSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJl
bmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRl
ckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgMzI4eDE4CisgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRo
IDMyODogIlRoaXMgdGVzdHMgdGhhdCB5b3UgY2FuIHNldCB0aGUgcGxhY2Vob2xkZXIgdGV4dCBj
b2xvci4iCisgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgzMjgsMTQpIHNpemUgMHgwCisgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEzMyw0MCkgc2l6ZSA0eDE4CisgICAgICAgIHRleHQgcnVu
IGF0ICgxMzMsNDApIHdpZHRoIDQ6ICIgIgorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgy
NzAsNDApIHNpemUgNHgxOAorICAgICAgICB0ZXh0IHJ1biBhdCAoMjcwLDQwKSB3aWR0aCA0OiAi
ICIKKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNDA3LDQwKSBzaXplIDR4MTgKKyAgICAg
ICAgdGV4dCBydW4gYXQgKDQwNyw0MCkgd2lkdGggNDogIiAiCisgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKK2xheWVyIGF0ICgxMCwyOCkgc2l6ZSAxMjl4MzIgY2xp
cCBhdCAoMTEsMjkpIHNpemUgMTI3eDMwCisgIFJlbmRlclRleHRDb250cm9sIHtURVhUQVJFQX0g
YXQgKDIsMjApIHNpemUgMTI5eDMyIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgxcHggc29s
aWQgIzAwMDAwMCldCisgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSAxMjN4MTMg
W2NvbG9yPSM2NDAwMDBdCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAy
MngxMworICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyMjogInRleHQiCitsYXllciBh
dCAoMTQ3LDI4KSBzaXplIDEyOXgzMiBjbGlwIGF0ICgxNDgsMjkpIHNpemUgMTI3eDMwCisgIFJl
bmRlclRleHRDb250cm9sIHtURVhUQVJFQX0gYXQgKDEzOSwyMCkgc2l6ZSAxMjl4MzIgW2JnY29s
b3I9I0ZGRkZGRl0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMywzKSBzaXplIDEyM3gxMyBbY29sb3I9I0I4MDAwMF0KKyAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDcweDEzCisgICAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDcwOiAiZGlzYWJsZWQgdGV4dCIKK2xheWVyIGF0ICgyODQsMjgpIHNpemUgMTI5
eDMyIGNsaXAgYXQgKDI4NSwyOSkgc2l6ZSAxMjd4MzAKKyAgUmVuZGVyVGV4dENvbnRyb2wge1RF
WFRBUkVBfSBhdCAoMjc2LDIwKSBzaXplIDEyOXgzMiBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVy
OiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNp
emUgMTIzeDEzIFtjb2xvcj0jQTlBOUE5XQorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgMzh4MTMKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzg6ICJkZWZh
dWx0IgorbGF5ZXIgYXQgKDQyMSwyOCkgc2l6ZSAxMjl4MzIgY2xpcCBhdCAoNDIyLDI5KSBzaXpl
IDEyN3gzMAorICBSZW5kZXJUZXh0Q29udHJvbCB7VEVYVEFSRUF9IGF0ICg0MTMsMjApIHNpemUg
MTI5eDMyIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSAxMjN4MTMgW2NvbG9yPSNBOUE5QTld
CisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA4NngxMworICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA4NjogImRlZmF1bHQgZGlzYWJsZWQiCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRl
ci1zZXQtYXR0cmlidXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3OTQwOTMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFj
ZWhvbGRlci1zZXQtYXR0cmlidXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3
ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgKKyAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNDM5eDE4CisgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggNDM5OiAiSWYgeW91IGNhbiBzZWUgdGhlIHdvcmQgXCJQbGFj
ZWhvbGRlclwiIGluIHRoZSB0ZXh0IGFyZWEsIHRoZW4gYWxsIGlzIHdlbGwuIgorICAgICAgUmVu
ZGVyQmxvY2sge1B9IGF0ICgwLDM0KSBzaXplIDc4NHgzNgorbGF5ZXIgYXQgKDEwLDQ0KSBzaXpl
IDEyOXgzMiBjbGlwIGF0ICgxMSw0NSkgc2l6ZSAxMjd4MzAKKyAgUmVuZGVyVGV4dENvbnRyb2wg
e1RFWFRBUkVBfSBhdCAoMiwyKSBzaXplIDEyOXgzMiBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVy
OiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNp
emUgMTIzeDEzIFtjb2xvcj0jQTlBOUE5XQorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgNjJ4MTMKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNjI6ICJQbGFj
ZWhvbGRlciIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1z
L3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC12YWx1ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFsdWUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4NjY2ZjcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy90
ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFsdWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIg
QEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNp
emUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtI
VE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4
KSBzaXplIDc4NHg1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgx
OAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA1M3gxOAorICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDUzOiAiVGVzdCBmb3IgIgorICAgICAgICBSZW5k
ZXJJbmxpbmUge0F9IGF0ICgwLDApIHNpemUgMzA1eDE4IFtjb2xvcj0jMDAwMEVFXQorICAgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNTMsMCkgc2l6ZSAzMDV4MTgKKyAgICAgICAgICAg
IHRleHQgcnVuIGF0ICg1MywwKSB3aWR0aCAzMDU6ICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEyNDgiCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMzU4
LDApIHNpemUgNHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgzNTgsMCkgd2lkdGggNDogIi4i
CisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwzNCkgc2l6ZSA3ODR4MzYKKyAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAweDAKK2xheWVyIGF0ICgxMCw0NCkgc2l6ZSAxMjl4MzIgY2xpcCBh
dCAoMTEsNDUpIHNpemUgMTI3eDMwCisgIFJlbmRlclRleHRDb250cm9sIHtURVhUQVJFQX0gYXQg
KDIsMikgc2l6ZSAxMjl4MzIgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDFweCBzb2xpZCAj
MDAwMDAwKV0KKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDEyM3gxMworICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNDh4MTMKKyAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggNDg6ICJOZXcgdGV4dCIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L2Zhc3QvZm9ybXMvaW5wdXQtdGV4dC1tYXhsZW5ndGgtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9mb3Jtcy9pbnB1dC10ZXh0LW1heGxlbmd0
aC1leHBlY3RlZC50eHQKaW5kZXggOGQ4OTI5OC4uYmJiMjUzNiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9mb3Jtcy9pbnB1dC10ZXh0LW1heGxlbmd0aC1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9mb3Jtcy9pbnB1dC10ZXh0
LW1heGxlbmd0aC1leHBlY3RlZC50eHQKQEAgLTE2NywxMiArMTY3LDEyIEBAIGxheWVyIGF0ICgx
NiwxMDYpIHNpemUgMzJ4MTYKICAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDI0OiAiMTIz
NCIKIGxheWVyIGF0ICgxNiwxMzYpIHNpemUgMzJ4MTYKICAgUmVuZGVyQmxvY2sge0RJVn0gYXQg
KDMsMykgc2l6ZSAzMngxNgotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwwKSBzaXplIDMw
eDE2Ci0gICAgICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAzMDogIjEyMzQ1IgorICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMSwwKSBzaXplIDI0eDE2CisgICAgICB0ZXh0IHJ1biBhdCAoMSww
KSB3aWR0aCAyNDogIjEyMzQiCiBsYXllciBhdCAoMTYsMTY2KSBzaXplIDMyeDE2CiAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgMzJ4MTYKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDEsMCkgc2l6ZSAzMHgxNgotICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMzA6ICIx
MjM0NSIKKyAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMCkgc2l6ZSAyNHgxNgorICAgICAg
dGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMjQ6ICIxMjM0IgogbGF5ZXIgYXQgKDE2LDE5Nikgc2l6
ZSAzMngxNgogICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDMyeDE2CiAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgxLDApIHNpemUgMjR4MTYKQEAgLTE5MSw5ICsxOTEsOSBAQCBs
YXllciBhdCAoMTYsMjg2KSBzaXplIDMyeDE2CiAgICAgICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0
aCAyNDogIjEyeFx4ezMwNX1ceHszMzJ9NCIKIGxheWVyIGF0ICgxNiwzMTYpIHNpemUgMzJ4MTYK
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSAzMngxNgotICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMSwwKSBzaXplIDMweDE2Ci0gICAgICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0
aCAzMDogIjEyeFx4ezMwNX1ceHszMzJ9NDUiCisgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgx
LDApIHNpemUgMjR4MTYKKyAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDI0OiAiMTJ4XHh7
MzA1fVx4ezMzMn00IgogbGF5ZXIgYXQgKDE2LDM0Nikgc2l6ZSAzMngxNgogICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMywzKSBzaXplIDMyeDE2Ci0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgx
LDApIHNpemUgMzB4MTYKLSAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDMwOiAiMTJ4XHh7
MzA1fVx4ezMzMn00NSIKKyAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMCkgc2l6ZSAyNHgx
NgorICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMjQ6ICIxMnhceHszMDV9XHh7MzMyfTQi
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9mb3Jtcy9pbnB1dC10
ZXh0LW1heGxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFz
dC9mb3Jtcy9pbnB1dC10ZXh0LW1heGxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXggMTQ1ZDRhMS4u
YmEzZDBjMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvZm9ybXMv
aW5wdXQtdGV4dC1tYXhsZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9mYXN0L2Zvcm1zL2lucHV0LXRleHQtbWF4bGVuZ3RoLWV4cGVjdGVkLnR4dApAQCAt
MTY3LDEyICsxNjcsMTIgQEAgbGF5ZXIgYXQgKDE2LDk3KSBzaXplIDQxeDEzCiAgICAgICB0ZXh0
IHJ1biBhdCAoMSwwKSB3aWR0aCAyODogIjEyMzQiCiBsYXllciBhdCAoMTYsMTI0KSBzaXplIDQx
eDEzCiAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgNDF4MTMKLSAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDEsMCkgc2l6ZSAzNXgxMwotICAgICAgdGV4dCBydW4gYXQgKDEsMCkg
d2lkdGggMzU6ICIxMjM0NSIKKyAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMCkgc2l6ZSAy
OHgxMworICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMjg6ICIxMjM0IgogbGF5ZXIgYXQg
KDE2LDE1MSkgc2l6ZSA0MXgxMwogICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDQx
eDEzCi0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDApIHNpemUgMzV4MTMKLSAgICAgIHRl
eHQgcnVuIGF0ICgxLDApIHdpZHRoIDM1OiAiMTIzNDUiCisgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgxLDApIHNpemUgMjh4MTMKKyAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDI4OiAi
MTIzNCIKIGxheWVyIGF0ICgxNiwxNzgpIHNpemUgNDF4MTMKICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDMsMykgc2l6ZSA0MXgxMwogICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwwKSBzaXpl
IDI4eDEzCkBAIC0xOTEsOSArMTkxLDkgQEAgbGF5ZXIgYXQgKDE2LDI1OSkgc2l6ZSA0MXgxMwog
ICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMjg6ICIxMnhceHszMDV9XHh7MzMyfTQiCiBs
YXllciBhdCAoMTYsMjg2KSBzaXplIDQxeDEzCiAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMp
IHNpemUgNDF4MTMKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMCkgc2l6ZSAzNXgxMwot
ICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMzU6ICIxMnhceHszMDV9XHh7MzMyfTQ1Igor
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwwKSBzaXplIDI4eDEzCisgICAgICB0ZXh0IHJ1
biBhdCAoMSwwKSB3aWR0aCAyODogIjEyeFx4ezMwNX1ceHszMzJ9NCIKIGxheWVyIGF0ICgxNiwz
MTMpIHNpemUgNDF4MTMKICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSA0MXgxMwot
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwwKSBzaXplIDM1eDEzCi0gICAgICB0ZXh0IHJ1
biBhdCAoMSwwKSB3aWR0aCAzNTogIjEyeFx4ezMwNX1ceHszMzJ9NDUiCisgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgxLDApIHNpemUgMjh4MTMKKyAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdp
ZHRoIDI4OiAiMTJ4XHh7MzA1fVx4ezMzMn00IgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwZWRhMzlkLi45MTQwYzQ5IDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5
IEBACisyMDA5LTA4LTEwICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBm
b3IgdGhlIHBsYWNlaG9sZGVyIGF0dHJpYnV0ZSBhbmQgRE9NIHByb3BlcnR5IG9mIHRoZSB0ZXh0
YXJlYSBlbGVtZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjEyNDgKKworICAgICAgICBBIERPTSBub2RlIGZvciBhbiBJTlBVVCBlbGVtZW50IGRv
ZXNuJ3QgaGF2ZSBhIGZsYWcgZm9yIHBsYWNlaG9sZGVyCisgICAgICAgIHZpc2liaWxpdHkgYW55
bW9yZS4gIFRoaXMgcGF0Y2ggYWxzbyBmaXhlcyBhIGJ1ZyB0aGF0IGEgcmVuZGVyZXIKKyAgICAg
ICAgZG9lc24ndCByZWZsZWN0IGEgY29ycmVzcG9uZGluZyBET00gdmFsdWUgY2hhbmdlLgorCisg
ICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0
eS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBz
ZXVkby1zdHlsZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNl
aG9sZGVyLXNldC1hdHRyaWJ1dGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy90ZXh0
YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFsdWUuaHRtbAorCisgICAgICAgICogY3NzL2h0bWwuY3Nz
OiBBZGQgdGhlIGRlZmF1bHQgc3R5bGUgZm9yIHBsYWNlaG9sZGVyIG9mIHRleHRhcmVhLgorICAg
ICAgICAqIGRvbS9JbnB1dEVsZW1lbnQuY3BwOiBDbGVhbnVwIGZvciBtX3BsYWNlaG9sZGVyU2hv
dWxkQmVWaXNpYmxlIHJlbW92YWwKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RWxlbWVudDo6ZGlz
cGF0Y2hGb2N1c0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RWxlbWVudDo6ZGlzcGF0
Y2hCbHVyRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFbGVtZW50OjpwbGFjZWhvbGRl
clNob3VsZEJlVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEVsZW1lbnQ6OnVwZGF0
ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEVsZW1lbnQ6
OnNldFZhbHVlRnJvbVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RWxlbWVudERh
dGE6OklucHV0RWxlbWVudERhdGEpOgorICAgICAgICAqIGRvbS9JbnB1dEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKToKKyAgICAgICAgKiBodG1sL0hUTUxJ
bnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0
ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNl
dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBsYWNlaG9s
ZGVyU2hvdWxkQmVWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VGV4dEFyZWFFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRleHRBcmVhRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQpOgorICAgICAgICAqIGh0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5pZGw6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjpSZW5kZXJUZXh0Q29udHJvbCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OnNldElubmVyVGV4dFN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxp
dHkpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6Om5vZGVB
dFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjp1
cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZTo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dENvbnRyb2xNdWx0aUxpbmU6OnRleHRCYXNlU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp0ZXh0QmFzZVN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6dXBkYXRlRnJv
bUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
OjpjcmVhdGVJbm5lclRleHRTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZS5oOgorICAgICAgICAqIHdtbC9XTUxJbnB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V01MSW5wdXRFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6V01MSW5wdXRFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OldNTElucHV0RWxlbWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUpOgorCiAy
MDA5LTA4LTIzICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3Mv
aHRtbC5jc3MgYi9XZWJDb3JlL2Nzcy9odG1sLmNzcwppbmRleCAxNGNhMTcyLi4zMGQ1NjYxIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9odG1sLmNzcworKysgYi9XZWJDb3JlL2Nzcy9odG1sLmNz
cwpAQCAtMzY4LDcgKzM2OCw3IEBAIHRleHRhcmVhIHsKICAgICB3b3JkLXdyYXA6IGJyZWFrLXdv
cmQ7CiB9CiAKLWlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLCBpc2luZGV4Ojotd2Vi
a2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKK2lucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVy
LCBpc2luZGV4Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLCB0ZXh0YXJlYTo6LXdlYmtpdC1p
bnB1dC1wbGFjZWhvbGRlciB7CiAgICAgY29sb3I6IGRhcmtHcmF5OwogfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50
LmNwcAppbmRleCAwZTI0NTZkLi5hZTBhNjUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9JbnB1
dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5jcHAKQEAgLTUyLDE5
ICs1MiwxOSBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogY29uc3QgaW50IElucHV0RWxl
bWVudDo6c19tYXhpbXVtTGVuZ3RoID0gNTI0Mjg4OwogY29uc3QgaW50IElucHV0RWxlbWVudDo6
c19kZWZhdWx0U2l6ZSA9IDIwOwogCi12b2lkIElucHV0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2
ZW50KElucHV0RWxlbWVudERhdGEmIGRhdGEsIElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50LCBF
bGVtZW50KiBlbGVtZW50KQordm9pZCBJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudChJ
bnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAo
IWlucHV0RWxlbWVudC0+aXNUZXh0RmllbGQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdXBk
YXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGRhdGEsIGlucHV0RWxlbWVudCwgZWxlbWVudCk7Cisg
ICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGlucHV0RWxlbWVudCwgZWxlbWVudCk7CiAK
ICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBlbGVtZW50LT5kb2N1bWVudCgpOwogICAgIGlmIChp
bnB1dEVsZW1lbnQtPmlzUGFzc3dvcmRGaWVsZCgpICYmIGRvY3VtZW50LT5mcmFtZSgpKQogICAg
ICAgICBkb2N1bWVudC0+c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUodHJ1ZSk7
CiB9CiAKLXZvaWQgSW5wdXRFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudChJbnB1dEVsZW1lbnRE
YXRhJiBkYXRhLCBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgRWxlbWVudCogZWxlbWVudCkK
K3ZvaWQgSW5wdXRFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudChJbnB1dEVsZW1lbnQqIGlucHV0
RWxlbWVudCwgRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAoIWlucHV0RWxlbWVudC0+aXNU
ZXh0RmllbGQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIElucHV0
RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoSW5wdXRFbGVtZW50RGF0YSYgZGF0YSwgSW5wdXRF
bGVtZW50KiBpbnB1dAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVw
ZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShkYXRhLCBpbnB1dEVsZW1lbnQsIGVsZW1lbnQpOwor
ICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShpbnB1dEVsZW1lbnQsIGVsZW1lbnQpOwog
CiAgICAgaWYgKGlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIGRvY3Vt
ZW50LT5zZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShmYWxzZSk7CkBAIC04Miwx
OCArODIsMTkgQEAgdm9pZCBJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KElucHV0RWxl
bWVudERhdGEmIGRhdGEsIElucHV0RWxlbWVudCogaW5wdXQKICAgICBmcmFtZS0+dGV4dEZpZWxk
RGlkRW5kRWRpdGluZyhlbGVtZW50KTsKIH0KIAotdm9pZCBJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBs
YWNlaG9sZGVyVmlzaWJpbGl0eShJbnB1dEVsZW1lbnREYXRhJiBkYXRhLCBJbnB1dEVsZW1lbnQq
IGlucHV0RWxlbWVudCwgRWxlbWVudCogZWxlbWVudCwgYm9vbCBwbGFjZWhvbGRlclZhbHVlQ2hh
bmdlZCkKK2Jvb2wgSW5wdXRFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZShjb25z
dCBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgY29uc3QgRWxlbWVudCogZWxlbWVudCkKIHsK
LSAgICBBU1NFUlQoaW5wdXRFbGVtZW50LT5pc1RleHRGaWVsZCgpKTsKLSAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBlbGVtZW50LT5kb2N1bWVudCgpOwotCi0gICAgYm9vbCBvbGRQbGFjZWhvbGRl
clNob3VsZEJlVmlzaWJsZSA9IGRhdGEucGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKTsKLSAg
ICBkYXRhLnNldFBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKGlucHV0RWxlbWVudC0+dmFsdWUo
KS5pc0VtcHR5KCkgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBk
b2N1bWVudC0+Zm9jdXNlZE5vZGUoKSAhPSBlbGVtZW50Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmJiAhaW5wdXRFbGVtZW50LT5wbGFjZWhvbGRlcigpLmlzRW1wdHko
KSk7CisgICAgcmV0dXJuIGlucHV0RWxlbWVudC0+dmFsdWUoKS5pc0VtcHR5KCkKKyAgICAgICAg
JiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSAhPSBlbGVtZW50CisgICAgICAg
ICYmICFpbnB1dEVsZW1lbnQtPnBsYWNlaG9sZGVyKCkuaXNFbXB0eSgpOworfQogCi0gICAgaWYg
KChvbGRQbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSAhPSBkYXRhLnBsYWNlaG9sZGVyU2hvdWxk
QmVWaXNpYmxlKCkgfHwgcGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQpICYmIGVsZW1lbnQtPnJlbmRl
cmVyKCkpCi0gICAgICAgIHRvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKGVsZW1lbnQtPnJl
bmRlcmVyKCkpLT51cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoKTsKK3ZvaWQgSW5wdXRFbGVt
ZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1l
bnQsIEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgcGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQpCit7Cisg
ICAgQVNTRVJUKGlucHV0RWxlbWVudC0+aXNUZXh0RmllbGQoKSk7CisgICAgYm9vbCBwbGFjZWhv
bGRlclZpc2libGUgPSBpbnB1dEVsZW1lbnQtPnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCk7
CisgICAgaWYgKGVsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAgICAgIHRvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lKGVsZW1lbnQtPnJlbmRlcmVyKCkpLT51cGRhdGVQbGFjZWhvbGRlclZpc2li
aWxpdHkocGxhY2Vob2xkZXJWaXNpYmxlLCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdlZCk7CiB9CiAK
IHZvaWQgSW5wdXRFbGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2UoSW5wdXRFbGVtZW50RGF0
YSYgZGF0YSwgSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQsIEVsZW1lbnQqIGVsZW1lbnQsIGJv
b2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKQpAQCAtMTQxLDcgKzE0Miw3IEBAIHZvaWQgSW5w
dXRFbGVtZW50OjpzZXRWYWx1ZUZyb21SZW5kZXJlcihJbnB1dEVsZW1lbnREYXRhJiBkYXRhLCBJ
bnB1dEVsZW1lbnQqIGluCiAgICAgQVNTRVJUKHZhbHVlID09IGlucHV0RWxlbWVudC0+Y29uc3Ry
YWluVmFsdWUodmFsdWUpIHx8IGlucHV0RWxlbWVudC0+Y29uc3RyYWluVmFsdWUodmFsdWUpLmlz
RW1wdHkoKSk7CiAKICAgICBpZiAoaW5wdXRFbGVtZW50LT5pc1RleHRGaWVsZCgpKQotICAgICAg
ICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoZGF0YSwgaW5wdXRFbGVtZW50LCBlbGVtZW50
KTsKKyAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGlucHV0RWxlbWVudCwgZWxl
bWVudCk7CiAKICAgICAvLyBXb3JrYXJvdW5kIGZvciBidWcgd2hlcmUgdHJhaWxpbmcgXG4gaXMg
aW5jbHVkZWQgaW4gdGhlIHJlc3VsdCBvZiB0ZXh0Q29udGVudC4KICAgICAvLyBUaGUgYXNzZXJ0
IG1hY3JvIGFib3ZlIG1heSBhbHNvIGJlIHNpbXBsaWZpZWQgdG86ICB2YWx1ZSA9PSBjb25zdHJh
aW5WYWx1ZSh2YWx1ZSkKQEAgLTI3Nyw4ICsyNzgsNyBAQCB2b2lkIElucHV0RWxlbWVudDo6bm90
aWZ5Rm9ybVN0YXRlQ2hhbmdlZChFbGVtZW50KiBlbGVtZW50KQogCiAvLyBJbnB1dEVsZW1lbnRE
YXRhCiBJbnB1dEVsZW1lbnREYXRhOjpJbnB1dEVsZW1lbnREYXRhKCkKLSAgICA6IG1fcGxhY2Vo
b2xkZXJTaG91bGRCZVZpc2libGUoZmFsc2UpCi0gICAgLCBtX3NpemUoSW5wdXRFbGVtZW50Ojpz
X2RlZmF1bHRTaXplKQorICAgIDogbV9zaXplKElucHV0RWxlbWVudDo6c19kZWZhdWx0U2l6ZSkK
ICAgICAsIG1fbWF4TGVuZ3RoKElucHV0RWxlbWVudDo6c19tYXhpbXVtTGVuZ3RoKQogICAgICwg
bV9jYWNoZWRTZWxlY3Rpb25TdGFydCgtMSkKICAgICAsIG1fY2FjaGVkU2VsZWN0aW9uRW5kKC0x
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmggYi9XZWJDb3JlL2RvbS9J
bnB1dEVsZW1lbnQuaAppbmRleCA3YWQzY2JkLi4wYmQxMDJlIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2RvbS9JbnB1dEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaApAQCAt
NjQsOSArNjQsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQgc19kZWZhdWx0U2l6
ZTsKIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoRm9jdXNFdmVudChJbnB1
dEVsZW1lbnREYXRhJiwgSW5wdXRFbGVtZW50KiwgRWxlbWVudCopOwotICAgIHN0YXRpYyB2b2lk
IGRpc3BhdGNoQmx1ckV2ZW50KElucHV0RWxlbWVudERhdGEmLCBJbnB1dEVsZW1lbnQqLCBFbGVt
ZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KElucHV0
RWxlbWVudERhdGEmLCBJbnB1dEVsZW1lbnQqLCBFbGVtZW50KiwgYm9vbCBwbGFjZWhvbGRlclZh
bHVlQ2hhbmdlZCA9IGZhbHNlKTsKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQo
SW5wdXRFbGVtZW50KiwgRWxlbWVudCopOworICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoQmx1ckV2
ZW50KElucHV0RWxlbWVudCosIEVsZW1lbnQqKTsKKyAgICBzdGF0aWMgYm9vbCBwbGFjZWhvbGRl
clNob3VsZEJlVmlzaWJsZShjb25zdCBJbnB1dEVsZW1lbnQqLCBjb25zdCBFbGVtZW50Kik7Cisg
ICAgc3RhdGljIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KElucHV0RWxlbWVudCos
IEVsZW1lbnQqLCBib29sIHBsYWNlaG9sZGVyVmFsdWVDaGFuZ2VkID0gZmFsc2UpOwogICAgIHN0
YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZShJbnB1dEVsZW1lbnREYXRhJiwgSW5wdXRF
bGVtZW50KiwgRWxlbWVudCosIGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKTsKICAgICBz
dGF0aWMgdm9pZCB1cGRhdGVTZWxlY3Rpb25SYW5nZShJbnB1dEVsZW1lbnQqLCBFbGVtZW50Kiwg
aW50IHN0YXJ0LCBpbnQgZW5kKTsKICAgICBzdGF0aWMgdm9pZCBhYm91dFRvVW5sb2FkKElucHV0
RWxlbWVudCosIEVsZW1lbnQqKTsKQEAgLTg1LDkgKzg2LDYgQEAgY2xhc3MgSW5wdXRFbGVtZW50
RGF0YSB7CiBwdWJsaWM6CiAgICAgSW5wdXRFbGVtZW50RGF0YSgpOwogCi0gICAgYm9vbCBwbGFj
ZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhY2Vob2xkZXJTaG91
bGRCZVZpc2libGU7IH0KLSAgICB2b2lkIHNldFBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKGJv
b2wgdmlzaWJsZSkgeyBtX3BsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlID0gdmlzaWJsZTsgfQot
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29uc3Q7CiAgICAgdm9pZCBzZXROYW1l
KGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIHsgbV9uYW1lID0gdmFsdWU7IH0KIApAQCAtMTA3
LDcgKzEwNSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhY2hlZFNlbGVjdGlvbkVuZChpbnQg
dmFsdWUpIHsgbV9jYWNoZWRTZWxlY3Rpb25FbmQgPSB2YWx1ZTsgfQogCiBwcml2YXRlOgotICAg
IGJvb2wgbV9wbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZTsKICAgICBBdG9taWNTdHJpbmcgbV9u
YW1lOwogICAgIFN0cmluZyBtX3ZhbHVlOwogICAgIGludCBtX3NpemU7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKaW5kZXggMmJmODUxOS4uYjM0OGQzYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcApAQCAtMjUzLDcgKzI1Myw3IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6c2hvdWxk
VXNlSW5wdXRNZXRob2QoKSBjb25zdAogCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRpc3BhdGNo
Rm9jdXNFdmVudCgpCiB7Ci0gICAgSW5wdXRFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQobV9k
YXRhLCB0aGlzLCB0aGlzKTsKKyAgICBJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCh0
aGlzLCB0aGlzKTsKIAogICAgIGlmIChpc1RleHRGaWVsZCgpKQogICAgICAgICBtX2F1dG9maWxs
ZWQgPSBmYWxzZTsKQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRp
c3BhdGNoRm9jdXNFdmVudCgpCiAKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVy
RXZlbnQoKQogewotICAgIElucHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQobV9kYXRhLCB0
aGlzLCB0aGlzKTsKKyAgICBJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KHRoaXMsIHRo
aXMpOwogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoQmx1ckV2
ZW50KCk7CiB9CiAKQEAgLTEwODcsNyArMTA4Nyw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6
c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBtX2RhdGEuc2V0VmFsdWUoY29uc3RyYWluVmFsdWUodmFsdWUpKTsKICAgICAgICAgICAgIGlm
IChpc1RleHRGaWVsZCgpKSB7Ci0gICAgICAgICAgICAgICAgSW5wdXRFbGVtZW50Ojp1cGRhdGVQ
bGFjZWhvbGRlclZpc2liaWxpdHkobV9kYXRhLCB0aGlzLCB0aGlzKTsKKyAgICAgICAgICAgICAg
ICBJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSh0aGlzLCB0aGlzKTsK
ICAgICAgICAgICAgICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgICAgICAgICB9CkBAIC0xNzYy
LDcgKzE3NjIsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OndpbGxWYWxpZGF0ZSgpIGNvbnN0
CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBj
b25zdAogewotICAgIHJldHVybiBtX2RhdGEucGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKTsK
KyAgICByZXR1cm4gSW5wdXRFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSh0aGlz
LCB0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4
IDRkODg3ZjMuLmNjYjM3ZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtMjMwLDcgKzIz
MCw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5
KCkKICAgICB7Ci0gICAgICAgIElucHV0RWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmls
aXR5KG1fZGF0YSwgdGhpcywgdGhpcywgdHJ1ZSk7CisgICAgICAgIElucHV0RWxlbWVudDo6dXBk
YXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KHRoaXMsIHRoaXMsIHRydWUpOwogICAgIH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCAxZDNmOTM5Li5kM2Zj
ODk3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0xOTIsNiArMTkyLDgg
QEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRB
dHRyaWJ1dGUqIGF0dHIpCiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYWxpZ25BdHRy
KSB7CiAgICAgICAgIC8vIERvbid0IG1hcCAnYWxpZ24nIGF0dHJpYnV0ZS4gIFRoaXMgbWF0Y2hl
cyB3aGF0IEZpcmVmb3gsIE9wZXJhIGFuZCBJRSBkby4KICAgICAgICAgLy8gU2VlIGh0dHA6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNzUKKyAgICB9IGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBwbGFjZWhvbGRlckF0dHIpIHsKKyAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJW
aXNpYmlsaXR5KHRydWUpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uZm9jdXNB
dHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5mb2N1
c0V2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25ibHVyQXR0cikKQEAgLTMwOSw2ICszMTEsNyBAQCB2
b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAK
ICAgICBtX3ZhbHVlID0gbm9ybWFsaXplZFZhbHVlOwogICAgIHNldEZvcm1Db250cm9sVmFsdWVN
YXRjaGVzUmVuZGVyZXIodHJ1ZSk7CisgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGZh
bHNlKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVT
dHlsZUlmTmVlZGVkKCk7CiAgICAgaWYgKHJlbmRlcmVyKCkpCkBAIC00MDgsNCArNDExLDI5IEBA
IGJvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6c2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCitib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBsYWNlaG9s
ZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdmFsdWUoKS5pc0VtcHR5
KCkKKyAgICAgICAgJiYgZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSAhPSB0aGlzCisgICAgICAg
ICYmICFnZXRBdHRyaWJ1dGUocGxhY2Vob2xkZXJBdHRyKS5pc0VtcHR5KCk7Cit9CisKK3ZvaWQg
SFRNTFRleHRBcmVhRWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGJvb2wgcGxh
Y2Vob2xkZXJWYWx1ZUNoYW5nZWQpCit7CisgICAgaWYgKHJlbmRlcmVyKCkpCisgICAgICAgIHRv
UmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIoKSktPnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0
eShwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpLCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdlZCk7
Cit9CisKK3ZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCkKK3sK
KyAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoZmFsc2UpOworICAgIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoRm9jdXNFdmVudCgpOworfQorCit2b2lkIEhU
TUxUZXh0QXJlYUVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCkKK3sKKyAgICB1cGRhdGVQbGFj
ZWhvbGRlclZpc2liaWxpdHkoZmFsc2UpOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRo
U3RhdGU6OmRpc3BhdGNoQmx1ckV2ZW50KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuaAppbmRleCA1ZWY4ZTU1Li5kYjEyZTljIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmgKQEAgLTkzLDEwICs5MywxNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25zdDsKIAorICAgIGJvb2wgcGxhY2Vo
b2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBlbnVtIFdyYXBN
ZXRob2QgeyBOb1dyYXAsIFNvZnRXcmFwLCBIYXJkV3JhcCB9OwogCiAgICAgdm9pZCB1cGRhdGVW
YWx1ZSgpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGJvb2wg
cGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3Vz
RXZlbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiAhaXNSZXF1
aXJlZEZvcm1Db250cm9sKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZvcm1Db250
cm9sKCkgY29uc3QgeyByZXR1cm4gcmVxdWlyZWQoKTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuaWRsCmluZGV4IDg1M2U4ZjUuLjgyMjg0YTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5pZGwKQEAgLTM1LDYgKzM1LDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAgICAgIGRpc2FibGVkOwogICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAgICAgIGF1dG9mb2N1czsKICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlICBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyAgICAgICAgICAgIG5hbWU7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSAgW0NvbnZlcnRO
dWxsVG9OdWxsU3RyaW5nLCBSZWZsZWN0XSBET01TdHJpbmcgICBwbGFjZWhvbGRlcjsKICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICByZWFkT25seTsKICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAgICAgICAgICByZXF1aXJlZDsK
ICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBsb25nICAgICAgICAgICAgICAgICByb3dzOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IDk1ZTcxZGQuLjcyNDQ0
YmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKQEAgLTY5LDYgKzY5
LDcgQEAgc3RhdGljIENvbG9yIGRpc2FibGVkVGV4dENvbG9yKGNvbnN0IENvbG9yJiB0ZXh0Q29s
b3IsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ28KIAogUmVuZGVyVGV4dENvbnRyb2w6OlJlbmRl
clRleHRDb250cm9sKE5vZGUqIG5vZGUpCiAgICAgOiBSZW5kZXJCbG9jayhub2RlKQorICAgICwg
bV9wbGFjZWhvbGRlclZpc2libGUoZmFsc2UpCiAgICAgLCBtX2VkaXRlZChmYWxzZSkKICAgICAs
IG1fdXNlckVkaXRlZChmYWxzZSkKIHsKQEAgLTkyLDE0ICs5MywyMiBAQCB2b2lkIFJlbmRlclRl
eHRDb250cm9sOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVu
ZGVyU3R5bGUqCiAgICAgICAgIC8vIFJlc2V0IHRoZW0gbm93IHRvIGF2b2lkIGdldHRpbmcgYSBz
cHVyaW91cyBsYXlvdXQgaGludC4KICAgICAgICAgdGV4dEJsb2NrUmVuZGVyZXItPnN0eWxlKCkt
PnNldEhlaWdodChMZW5ndGgoKSk7CiAgICAgICAgIHRleHRCbG9ja1JlbmRlcmVyLT5zdHlsZSgp
LT5zZXRXaWR0aChMZW5ndGgoKSk7Ci0gICAgICAgIHRleHRCbG9ja1JlbmRlcmVyLT5zZXRTdHls
ZSh0ZXh0QmxvY2tTdHlsZSk7CisgICAgICAgIHNldElubmVyVGV4dFN0eWxlKHRleHRCbG9ja1N0
eWxlKTsKKyAgICB9CisKKyAgICBzZXRSZXBsYWNlZChpc0lubGluZSgpKTsKK30KKwordm9pZCBS
ZW5kZXJUZXh0Q29udHJvbDo6c2V0SW5uZXJUZXh0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gc3R5bGUpCit7CisgICAgaWYgKG1faW5uZXJUZXh0KSB7CisgICAgICAgIFJlZlB0cjxSZW5k
ZXJTdHlsZT4gdGV4dFN0eWxlID0gc3R5bGU7CisgICAgICAgIG1faW5uZXJUZXh0LT5yZW5kZXJl
cigpLT5zZXRTdHlsZSh0ZXh0U3R5bGUpOwogICAgICAgICBmb3IgKE5vZGUqIG4gPSBtX2lubmVy
VGV4dC0+Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZShtX2lubmVyVGV4
dC5nZXQoKSkpIHsKICAgICAgICAgICAgIGlmIChuLT5yZW5kZXJlcigpKQotICAgICAgICAgICAg
ICAgIG4tPnJlbmRlcmVyKCktPnNldFN0eWxlKHRleHRCbG9ja1N0eWxlKTsKKyAgICAgICAgICAg
ICAgICBuLT5yZW5kZXJlcigpLT5zZXRTdHlsZSh0ZXh0U3R5bGUpOwogICAgICAgICB9CiAgICAg
fQotCi0gICAgc2V0UmVwbGFjZWQoaXNJbmxpbmUoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCB1cGRhdGVVc2VyTW9kaWZ5UHJvcGVydHkoTm9kZSogbm9kZSwgUmVuZGVyU3R5bGUqIHN0eWxl
KQpAQCAtNTA2LDQgKzUxNSwxOCBAQCBIVE1MRWxlbWVudCogUmVuZGVyVGV4dENvbnRyb2w6Omlu
bmVyVGV4dEVsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2lubmVyVGV4dC5nZXQoKTsKIH0K
IAordm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGJv
b2wgcGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUsIGJvb2wgcGxhY2Vob2xkZXJWYWx1ZUNoYW5n
ZWQpCit7CisgICAgYm9vbCBvbGRQbGFjZWhvbGRlclZpc2libGUgPSBtX3BsYWNlaG9sZGVyVmlz
aWJsZTsKKyAgICBtX3BsYWNlaG9sZGVyVmlzaWJsZSA9IHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNp
YmxlOworICAgIGlmIChvbGRQbGFjZWhvbGRlclZpc2libGUgIT0gbV9wbGFjZWhvbGRlclZpc2li
bGUgfHwgcGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQpIHsKKyAgICAgICAgLy8gU2V0cyB0aGUgaW5u
ZXIgdGV4dCBzdHlsZSB0byB0aGUgbm9ybWFsIHN0eWxlIG9yIDpwbGFjZWhvbGRlciBzdHlsZS4K
KyAgICAgICAgc2V0SW5uZXJUZXh0U3R5bGUoY3JlYXRlSW5uZXJUZXh0U3R5bGUodGV4dEJhc2VT
dHlsZSgpKSk7CisKKyAgICAgICAgLy8gdXBkYXRlRnJvbUVsZW1lbnQoKSBvZiB0aGUgc3ViY2xh
c3NlcyB1cGRhdGVzIHRoZSB0ZXh0IGNvbnRlbnQKKyAgICAgICAgLy8gdG8gdGhlIGVsZW1lbnQn
cyB2YWx1ZSgpLCBwbGFjZWhvbGRlcigpLCBvciB0aGUgZW1wdHkgc3RyaW5nLgorICAgICAgICB1
cGRhdGVGcm9tRWxlbWVudCgpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKaW5kZXggYzBmYzM0My4uMzIxMmExYiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCkBAIC01Niw2ICs1Niw4IEBAIHB1
YmxpYzoKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGlu
ZGV4KTsKICAgICBpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0
aW9uJik7CiAKKyAgICB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShib29sLCBib29s
KTsKKwogcHJvdGVjdGVkOgogICAgIFJlbmRlclRleHRDb250cm9sKE5vZGUqKTsKIApAQCAtNzYs
NiArNzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdENvbnRyb2xIZWln
aHRCYXNlZE9uTGluZUhlaWdodChpbnQgbGluZUhlaWdodCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBjYWNoZVNlbGVjdGlvbihpbnQgc3RhcnQsIGludCBlbmQpID0gMDsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0
eWxlKiBzdGFydFN0eWxlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZW5kZXJTdHlsZSogdGV4
dEJhc2VTdHlsZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxl
bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBjYWxjSGVpZ2h0KCk7CkBAIC04Myw2ICs4Niw4IEBA
IHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgVGV4dEl0ZXJhdG9yOwogICAgIEhUTUxFbGVt
ZW50KiBpbm5lclRleHRFbGVtZW50KCkgY29uc3Q7CiAKKyAgICBib29sIG1fcGxhY2Vob2xkZXJW
aXNpYmxlOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IHsgcmV0dXJuICJSZW5kZXJUZXh0Q29udHJvbCI7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNUZXh0Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTkyLDYgKzk3LDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayhS
ZW5kZXJCbG9jayopIHsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBzZXRJbm5lclRleHRTdHlsZShQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPik7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3Rz
KEdyYXBoaWNzQ29udGV4dCosIGludCB0eCwgaW50IHR5KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCmluZGV4IDU2NmE4MWMuLjhkZmI4
NTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZS5jcHAKQEAgLTI0LDE0ICsyNCwxNiBAQAogCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2lu
Y2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
aXRUZXN0UmVzdWx0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKE5vZGUqIG5vZGUpCiAgICAg
OiBSZW5kZXJUZXh0Q29udHJvbChub2RlKQogeworICAgIG1fcGxhY2Vob2xkZXJWaXNpYmxlID0g
c3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KG5vZGUpLT5wbGFjZWhvbGRlclNob3Vs
ZEJlVmlzaWJsZSgpOwogfQogCiBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6flJlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lKCkKQEAgLTYwLDcgKzYyLDEwIEBAIGJvb2wgUmVuZGVyVGV4dENv
bnRyb2xNdWx0aUxpbmU6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0
LCBIaXRUCiAgICAgaWYgKCFSZW5kZXJUZXh0Q29udHJvbDo6bm9kZUF0UG9pbnQocmVxdWVzdCwg
cmVzdWx0LCB4LCB5LCB0eCwgdHksIGhpdFRlc3RBY3Rpb24pKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpZiAocmVzdWx0LmlubmVyTm9kZSgpID09IG5vZGUoKSB8fCByZXN1bHQuaW5u
ZXJOb2RlKCkgPT0gaW5uZXJUZXh0RWxlbWVudCgpKQorICAgIGJvb2wgcmVzdWx0SXNUZXh0VmFs
dWVPclBsYWNlaG9sZGVyCisgICAgICAgID0gIW1fcGxhY2Vob2xkZXJWaXNpYmxlICYmIHJlc3Vs
dC5pbm5lck5vZGUoKSA9PSBpbm5lclRleHRFbGVtZW50KCkKKyAgICAgICAgfHwgbV9wbGFjZWhv
bGRlclZpc2libGUgJiYgcmVzdWx0LmlubmVyTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihpbm5lclRl
eHRFbGVtZW50KCkpOworICAgIGlmIChyZXN1bHQuaW5uZXJOb2RlKCkgPT0gbm9kZSgpIHx8IHJl
c3VsdElzVGV4dFZhbHVlT3JQbGFjZWhvbGRlcikKICAgICAgICAgaGl0SW5uZXJUZXh0RWxlbWVu
dChyZXN1bHQsIHgsIHksIHR4LCB0eSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTkyLDcgKzk3
LDExIEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OnVwZGF0ZUZyb21FbGVtZW50
KCkKICAgICBjcmVhdGVTdWJ0cmVlSWZOZWVkZWQoMCk7CiAgICAgUmVuZGVyVGV4dENvbnRyb2w6
OnVwZGF0ZUZyb21FbGVtZW50KCk7CiAKLSAgICBzZXRJbm5lclRleHRWYWx1ZShzdGF0aWNfY2Fz
dDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4obm9kZSgpKS0+dmFsdWUoKSk7CisgICAgSFRNTFRleHRB
cmVhRWxlbWVudCogdGV4dEFyZWEgPSBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4o
bm9kZSgpKTsKKyAgICBpZiAobV9wbGFjZWhvbGRlclZpc2libGUpCisgICAgICAgIHNldElubmVy
VGV4dFZhbHVlKHRleHRBcmVhLT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpwbGFjZWhvbGRlckF0
dHIpKTsKKyAgICBlbHNlCisgICAgICAgIHNldElubmVyVGV4dFZhbHVlKHRleHRBcmVhLT52YWx1
ZSgpKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6Y2FjaGVTZWxlY3Rp
b24oaW50IHN0YXJ0LCBpbnQgZW5kKQpAQCAtMTAyLDggKzExMSwxNSBAQCB2b2lkIFJlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lOjpjYWNoZVNlbGVjdGlvbihpbnQgc3RhcnQsIGludCBlbmQpCiAK
IFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpjcmVh
dGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3QKIHsK
LSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHRleHRCbG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNy
ZWF0ZSgpOwotICAgIHRleHRCbG9ja1N0eWxlLT5pbmhlcml0RnJvbShzdGFydFN0eWxlKTsKKyAg
ICBSZWZQdHI8UmVuZGVyU3R5bGU+IHRleHRCbG9ja1N0eWxlOworICAgIGlmIChtX3BsYWNlaG9s
ZGVyVmlzaWJsZSkgeworICAgICAgICBpZiAoUmVuZGVyU3R5bGUqIHBzZXVkb1N0eWxlID0gZ2V0
Q2FjaGVkUHNldWRvU3R5bGUoSU5QVVRfUExBQ0VIT0xERVIpKQorICAgICAgICAgICAgdGV4dEJs
b2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUocHNldWRvU3R5bGUpOworICAgIH0KKyAgICBp
ZiAoIXRleHRCbG9ja1N0eWxlKSB7CisgICAgICAgIHRleHRCbG9ja1N0eWxlID0gUmVuZGVyU3R5
bGU6OmNyZWF0ZSgpOworICAgICAgICB0ZXh0QmxvY2tTdHlsZS0+aW5oZXJpdEZyb20oc3RhcnRT
dHlsZSk7CisgICAgfQogCiAgICAgYWRqdXN0SW5uZXJUZXh0U3R5bGUoc3RhcnRTdHlsZSwgdGV4
dEJsb2NrU3R5bGUuZ2V0KCkpOwogICAgIHRleHRCbG9ja1N0eWxlLT5zZXREaXNwbGF5KEJMT0NL
KTsKQEAgLTExMSw0ICsxMjcsOSBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0
Q29udHJvbE11bHRpTGluZTo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUgogICAgIHJldHVy
biB0ZXh0QmxvY2tTdHlsZS5yZWxlYXNlKCk7CiB9CiAKK1JlbmRlclN0eWxlKiBSZW5kZXJUZXh0
Q29udHJvbE11bHRpTGluZTo6dGV4dEJhc2VTdHlsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0
eWxlKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZS5oCmluZGV4IDcyOTY2NTMuLjMzM2NmYTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaApAQCAtNDcsNiArNDcsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBjYWNoZVNlbGVjdGlvbihpbnQgc3RhcnQsIGludCBlbmQpOwogCisgICAgdmlydHVhbCBSZW5k
ZXJTdHlsZSogdGV4dEJhc2VTdHlsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0
U3R5bGUpIGNvbnN0OwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZS5jcHAKaW5kZXggOWMwMjJkNi4uYmM5OGI4YSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBAIC01MCwx
MiArNTAsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoTm9kZSogbm9kZSkKICAg
ICA6IFJlbmRlclRleHRDb250cm9sKG5vZGUpCi0gICAgLCBtX3BsYWNlaG9sZGVyVmlzaWJsZShm
YWxzZSkKICAgICAsIG1fc2VhcmNoUG9wdXBJc1Zpc2libGUoZmFsc2UpCiAgICAgLCBtX3Nob3Vs
ZERyYXdDYXBzTG9ja0luZGljYXRvcihmYWxzZSkKICAgICAsIG1fc2VhcmNoRXZlbnRUaW1lcih0
aGlzLCAmUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpzZWFyY2hFdmVudFRpbWVyRmlyZWQp
CiAgICAgLCBtX3NlYXJjaFBvcHVwKDApCiB7CisgICAgbV9wbGFjZWhvbGRlclZpc2libGUgPSBp
bnB1dEVsZW1lbnQoKS0+cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKTsKIH0KIAogUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lOjp+UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKCkKQEAg
LTY5LDI1ICs2OSw5IEBAIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6flJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZSgpCiAgICAgICAgIG1faW5uZXJCbG9jay0+ZGV0YWNoKCk7CiB9CiAK
LWJvb2wgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpwbGFjZWhvbGRlclNob3VsZEJlVmlz
aWJsZSgpIGNvbnN0CitSZW5kZXJTdHlsZSogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp0
ZXh0QmFzZVN0eWxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5wdXRFbGVtZW50KCktPnBsYWNl
aG9sZGVyU2hvdWxkQmVWaXNpYmxlKCk7Ci19Ci0KLXZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lOjp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoKQotewotICAgIFJlbmRlclN0eWxl
KiBwYXJlbnRTdHlsZSA9IG1faW5uZXJCbG9jayA/IG1faW5uZXJCbG9jay0+cmVuZGVyZXIoKS0+
c3R5bGUoKSA6IHN0eWxlKCk7Ci0KLSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHRleHRCbG9ja1N0
eWxlID0gY3JlYXRlSW5uZXJUZXh0U3R5bGUocGFyZW50U3R5bGUpOwotICAgIEhUTUxFbGVtZW50
KiBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50KCk7Ci0gICAgaW5uZXJUZXh0LT5yZW5kZXJl
cigpLT5zZXRTdHlsZSh0ZXh0QmxvY2tTdHlsZSk7Ci0KLSAgICBmb3IgKE5vZGUqIG4gPSBpbm5l
clRleHQtPmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPnRyYXZlcnNlTmV4dE5vZGUoaW5uZXJUZXh0
KSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG4tPnJlbmRlcmVyKCkp
Ci0gICAgICAgICAgICByZW5kZXJlci0+c2V0U3R5bGUodGV4dEJsb2NrU3R5bGUpOwotICAgIH0K
LQotICAgIHVwZGF0ZUZyb21FbGVtZW50KCk7CisgICAgcmV0dXJuIG1faW5uZXJCbG9jayA/IG1f
aW5uZXJCbG9jay0+cmVuZGVyZXIoKS0+c3R5bGUoKSA6IHN0eWxlKCk7CiB9CiAKIHZvaWQgUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjphZGRTZWFyY2hSZXN1bHQoKQpAQCAtNDY5LDkgKzQ1
Myw2IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp1cGRhdGVGcm9tRWxlbWVu
dCgpCiAgICAgY3JlYXRlU3VidHJlZUlmTmVlZGVkKCk7CiAgICAgUmVuZGVyVGV4dENvbnRyb2w6
OnVwZGF0ZUZyb21FbGVtZW50KCk7CiAKLSAgICBib29sIHBsYWNlaG9sZGVyVmlzaWJpbGl0eVNo
b3VsZENoYW5nZSA9IG1fcGxhY2Vob2xkZXJWaXNpYmxlICE9IHBsYWNlaG9sZGVyU2hvdWxkQmVW
aXNpYmxlKCk7Ci0gICAgbV9wbGFjZWhvbGRlclZpc2libGUgPSBwbGFjZWhvbGRlclNob3VsZEJl
VmlzaWJsZSgpOwotCiAgICAgaWYgKG1fY2FuY2VsQnV0dG9uKQogICAgICAgICB1cGRhdGVDYW5j
ZWxCdXR0b25WaXNpYmlsaXR5KCk7CiAKQEAgLTQ3OSw3ICs0NjAsNyBAQCB2b2lkIFJlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZTo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICAgICAgaW5uZXJUZXh0RWxlbWVudCgpLT5zZXRJbm5lclRleHQo
aW5wdXRFbGVtZW50KCktPnBsYWNlaG9sZGVyKCksIGVjKTsKICAgICAgICAgQVNTRVJUKCFlYyk7
Ci0gICAgfSBlbHNlIGlmICghc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSktPmZvcm1Db250
cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoKSB8fCBwbGFjZWhvbGRlclZpc2liaWxpdHlTaG91bGRD
aGFuZ2UpCisgICAgfSBlbHNlCiAgICAgICAgIHNldElubmVyVGV4dFZhbHVlKGlucHV0RWxlbWVu
dCgpLT52YWx1ZSgpKTsKIAogICAgIGlmIChtX3NlYXJjaFBvcHVwSXNWaXNpYmxlKQpAQCAtNDk0
LDcgKzQ3NSw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjYWNoZVNlbGVj
dGlvbihpbnQgc3RhcnQsIGludCBlbmQpCiBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0
eWxlKiBzdGFydFN0eWxlKSBjb25zdAogewogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gdGV4dEJs
b2NrU3R5bGU7Ci0gICAgaWYgKHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkpIHsKKyAgICBp
ZiAobV9wbGFjZWhvbGRlclZpc2libGUpIHsKICAgICAgICAgaWYgKFJlbmRlclN0eWxlKiBwc2V1
ZG9TdHlsZSA9IGdldENhY2hlZFBzZXVkb1N0eWxlKElOUFVUX1BMQUNFSE9MREVSKSkKICAgICAg
ICAgICAgIHRleHRCbG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKHBzZXVkb1N0eWxlKTsK
ICAgICB9IApAQCAtNTI0LDcgKzUwNSw3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZTo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QKICAgICAv
LyBBZnRlciB0aGlzLCB1cGRhdGVGcm9tRWxlbWVudCB3aWxsIGltbWVkaWF0ZWx5IHVwZGF0ZSB0
aGUgdGV4dCBkaXNwbGF5ZWQuCiAgICAgLy8gV2hlbiB0aGUgcGxhY2Vob2xkZXIgaXMgbm8gbG9u
Z2VyIHZpc2libGUsIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJsaXR5IHdpbGwgcmVzZXQgdGhlIHN0
eWxlLCAKICAgICAvLyBhbmQgdGhlIHRleHQgc2VjdXJpdHkgbW9kZSB3aWxsIGJlIHNldCBiYWNr
IHRvIHRoZSBjb21wdXRlZCB2YWx1ZSBjb3JyZWN0bHkuCi0gICAgaWYgKHBsYWNlaG9sZGVyU2hv
dWxkQmVWaXNpYmxlKCkpCisgICAgaWYgKG1fcGxhY2Vob2xkZXJWaXNpYmxlKQogICAgICAgICB0
ZXh0QmxvY2tTdHlsZS0+c2V0VGV4dFNlY3VyaXR5KFRTTk9ORSk7CiAKICAgICByZXR1cm4gdGV4
dEJsb2NrU3R5bGUucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuaAppbmRleCBkYTk4MzhmLi5jZThmMGM4IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaApAQCAtNDEsNyArNDEs
NiBAQCBwdWJsaWM6CiAKICAgICBib29sIHBsYWNlaG9sZGVySXNWaXNpYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wbGFjZWhvbGRlclZpc2libGU7IH0KICAgICBib29sIHBsYWNlaG9sZGVyU2hvdWxk
QmVWaXNpYmxlKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHko
KTsKIAogICAgIHZvaWQgYWRkU2VhcmNoUmVzdWx0KCk7CiAgICAgdm9pZCBzdG9wU2VhcmNoRXZl
bnRUaW1lcigpOwpAQCAtODQsNiArODMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBj
YWNoZVNlbGVjdGlvbihpbnQgc3RhcnQsIGludCBlbmQpOwogICAgIHZpcnR1YWwgdm9pZCBzdHls
ZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7
CiAKKyAgICB2aXJ0dWFsIFJlbmRlclN0eWxlKiB0ZXh0QmFzZVN0eWxlKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjcmVhdGVJbm5lclRleHRTdHlsZShjb25z
dCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4gY3JlYXRlSW5uZXJCbG9ja1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxl
KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjcmVhdGVSZXN1bHRzQnV0dG9u
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0OwpAQCAtMTIxLDcgKzEy
MSw2IEBAIHByaXZhdGU6CiAKICAgICBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCgpIGNvbnN0
OwogCi0gICAgYm9vbCBtX3BsYWNlaG9sZGVyVmlzaWJsZTsKICAgICBib29sIG1fc2VhcmNoUG9w
dXBJc1Zpc2libGU7CiAgICAgYm9vbCBtX3Nob3VsZERyYXdDYXBzTG9ja0luZGljYXRvcjsKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvd21s
L1dNTElucHV0RWxlbWVudC5jcHAKaW5kZXggZDZmYTc5YS4uZmVlZDVhNSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL3dtbC9XTUxJbnB1
dEVsZW1lbnQuY3BwCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgV01MSW5wdXRFbGVtZW50Ojppc01v
dXNlRm9jdXNhYmxlKCkgY29uc3QKIAogdm9pZCBXTUxJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoRm9j
dXNFdmVudCgpCiB7Ci0gICAgSW5wdXRFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQobV9kYXRh
LCB0aGlzLCB0aGlzKTsKKyAgICBJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCh0aGlz
LCB0aGlzKTsKICAgICBXTUxFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoKTsKIH0KIApAQCAt
ODcsNyArODcsNyBAQCB2b2lkIFdNTElucHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoKQog
ICAgIGlmICghbmFtZVZhcmlhYmxlLmlzRW1wdHkoKSkKICAgICAgICAgd21sUGFnZVN0YXRlRm9y
RG9jdW1lbnQoZG9jdW1lbnQoKSktPnN0b3JlVmFyaWFibGUobmFtZVZhcmlhYmxlLCB2YWwpOyAK
IAotICAgIElucHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQobV9kYXRhLCB0aGlzLCB0aGlz
KTsKKyAgICBJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KHRoaXMsIHRoaXMpOwogICAg
IFdNTEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCk7CiB9CiAKQEAgLTEzNCw3ICsxMzQsNyBA
QCBTdHJpbmcgV01MSW5wdXRFbGVtZW50Ojp2YWx1ZSgpIGNvbnN0CiAKIHZvaWQgV01MSW5wdXRF
bGVtZW50OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIElucHV0RWxlbWVu
dDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KG1fZGF0YSwgdGhpcywgdGhpcyk7CisgICAg
SW5wdXRFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkodGhpcywgdGhpcyk7CiAg
ICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcihmYWxzZSk7CiAgICAgbV9kYXRh
LnNldFZhbHVlKGNvbnN0cmFpblZhbHVlKHZhbHVlKSk7CiAgICAgaWYgKGluRG9jdW1lbnQoKSkK
QEAgLTMyMCw3ICszMjAsNyBAQCB2b2lkIFdNTElucHV0RWxlbWVudDo6ZG9jdW1lbnREaWRCZWNv
bWVBY3RpdmUoKQogCiBib29sIFdNTElucHV0RWxlbWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZp
c2libGUoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGEucGxhY2Vob2xkZXJTaG91bGRCZVZp
c2libGUoKTsKKyAgICByZXR1cm4gSW5wdXRFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlz
aWJsZSh0aGlzLCB0aGlzKTsKIH0KIAogdm9pZCBXTUxJbnB1dEVsZW1lbnQ6OndpbGxNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38468</attachid>
            <date>2009-08-23 22:46:24 -0700</date>
            <delta_ts>2009-08-24 01:28:58 -0700</delta_ts>
            <desc>Proposed patch (rev.6)</desc>
            <filename>placeholder-6.diff</filename>
            <type>text/plain</type>
            <size>46323</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4MmIzYjY4Li5iN2QwYzdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMDktMDgt
MjMgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gQWRkIHRlc3RzIGZvciB0aGUgcGxhY2Vo
b2xkZXIgYXR0cmlidXRlIGFuZCBET00gcHJvcGVydHkgb2YgdGhlIHRleHRhcmVhIGVsZW1lbnQu
CisgICAgICAgIC0gQ29ycmVjdCB0aGUgcmVzdWx0cyBmb3IgaW5wdXQtdGV4dC1tYXhsZW5ndGgu
aHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEy
NDgKKworICAgICAgICAqIGZhc3QvZm9ybXMvcmVzb3VyY2VzL3RleHRhcmVhLXBsYWNlaG9sZGVy
LWRvbS1wcm9wZXJ0eS5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy90ZXh0YXJlYS1w
bGFjZWhvbGRlci1kb20tcHJvcGVydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1zdHlsZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNl
dC1hdHRyaWJ1dGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy90ZXh0YXJlYS1w
bGFjZWhvbGRlci1zZXQtdmFsdWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
LWxlb3BhcmQvZmFzdC9mb3Jtcy9pbnB1dC10ZXh0LW1heGxlbmd0aC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvaW5wdXQtdGV4dC1tYXhsZW5ndGgtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBs
YWNlaG9sZGVyLXBzZXVkby1zdHlsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC1hdHRyaWJ1dGUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy90
ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFsdWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9xdC9mYXN0L2Zvcm1zL2lucHV0LXRleHQtbWF4bGVuZ3RoLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vZmFzdC9mb3Jtcy9pbnB1dC10ZXh0LW1heGxl
bmd0aC1leHBlY3RlZC50eHQ6CisKIDIwMDktMDgtMjMgIEphbiBNaWNoYWVsIEFsb256byAgPGpt
YWxvbnpvQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBTa2lwIG5ldyB0ZXN0
cyBmcm9tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXh0
YXJlYS1wbGFjZWhvbGRlci1kb20tcHJvcGVydHkuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3Jlc291cmNlcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1kb20tcHJvcGVydHkuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRkYjJjMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1w
cm9wZXJ0eS5qcwpAQCAtMCwwICsxLDE1IEBACitkZXNjcmlwdGlvbignVGVzdCBmb3IgPGEgaHJl
Zj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4Ij5odHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg8L2E+Jyk7CisKK3ZhciB0ZXh0
YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7CisKK3Nob3VsZEJlRXF1
YWxUb1N0cmluZygndGV4dGFyZWEucGxhY2Vob2xkZXInLCAnJyk7CisKK3RleHRhcmVhLnNldEF0
dHJpYnV0ZSgncGxhY2Vob2xkZXInLCAncDEnKQorc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXh0
YXJlYS5wbGFjZWhvbGRlcicsICdwMScpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXh0YXJl
YS52YWx1ZScsICcnKTsKKwordGV4dGFyZWEucGxhY2Vob2xkZXIgPSAncDInOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCd0ZXh0YXJlYS5nZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiknLCAncDIn
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygndGV4dGFyZWEucGxhY2Vob2xkZXInLCAncDInKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLWRvbS1wcm9w
ZXJ0eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJm
Y2FhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEt
cGxhY2Vob2xkZXItZG9tLXByb3BlcnR5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitU
ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDgKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGV4dGFyZWEucGxhY2Vob2xkZXIg
aXMgIiIKK1BBU1MgdGV4dGFyZWEucGxhY2Vob2xkZXIgaXMgInAxIgorUEFTUyB0ZXh0YXJlYS52
YWx1ZSBpcyAiIgorUEFTUyB0ZXh0YXJlYS5nZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIikgaXMg
InAyIgorUEFTUyB0ZXh0YXJlYS5wbGFjZWhvbGRlciBpcyAicDIiCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1kb20tcHJvcGVydHkuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZG9tLXByb3BlcnR5Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQwYmY4MgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItZG9t
LXByb3BlcnR5Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGV4dGFyZWEtcGxhY2Vo
b2xkZXItZG9tLXByb3BlcnR5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRl
ci1wc2V1ZG8tc3R5bGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxh
Y2Vob2xkZXItcHNldWRvLXN0eWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZmI3MmE5YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
dGV4dGFyZWEtcGxhY2Vob2xkZXItcHNldWRvLXN0eWxlLmh0bWwKQEAgLTAsMCArMSwxMCBAQAor
PHN0eWxlPgordGV4dGFyZWEucmVkOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKKyAgICBj
b2xvcjogcmdiKDEwMCwgMCwgMCk7Cit9Cis8L3N0eWxlPgorVGhpcyB0ZXN0cyB0aGF0IHlvdSBj
YW4gc2V0IHRoZSBwbGFjZWhvbGRlciB0ZXh0IGNvbG9yLjxicj4KKzx0ZXh0YXJlYSBjbGFzcz0i
cmVkIiBwbGFjZWhvbGRlcj0idGV4dCI+PC90ZXh0YXJlYT4KKzx0ZXh0YXJlYSBjbGFzcz0icmVk
IiBkaXNhYmxlZCBwbGFjZWhvbGRlcj0iZGlzYWJsZWQgdGV4dCI+PC90ZXh0YXJlYT4KKzx0ZXh0
YXJlYSBwbGFjZWhvbGRlcj0iZGVmYXVsdCI+PC90ZXh0YXJlYT4KKzx0ZXh0YXJlYSBkaXNhYmxl
ZCBwbGFjZWhvbGRlcj0iZGVmYXVsdCBkaXNhYmxlZCI+PC90ZXh0YXJlYT4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LWF0dHJpYnV0
ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQt
YXR0cmlidXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk3Y2Ix
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxh
Y2Vob2xkZXItc2V0LWF0dHJpYnV0ZS5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzxzY3JpcHQ+CisK
K2Z1bmN0aW9uIGZpbmlzaFRlc3QoKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0
ZXh0YXJlYScpLnNldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInLCdQbGFjZWhvbGRlcicpOworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIHNldFRpbWVvdXQoZmluaXNoVGVzdCwgMCk7Cit9CisKKzwv
c2NyaXB0PgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+SWYgeW91IGNhbiBzZWUgdGhlIHdv
cmQgIlBsYWNlaG9sZGVyIiBpbiB0aGUgdGV4dCBhcmVhLCB0aGVuIGFsbCBpcyB3ZWxsLjwvcD4K
KzxwPjx0ZXh0YXJlYSBpZD0idGV4dGFyZWEiPjwvdGV4dGFyZWE+PC9wPgorPC9ib2R5PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQt
dmFsdWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXIt
c2V0LXZhbHVlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRjYTg2
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxh
Y2Vob2xkZXItc2V0LXZhbHVlLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4K
KyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICBm
dW5jdGlvbiBydW5UZXN0KCkKKyAgICB7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dGV4dCcpLnZhbHVlID0gJ05ldyB0ZXh0JzsKKyAgICB9CisgIDwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICA8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDgiPmh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODwvYT4uPC9wPgorCisgIDx0ZXh0YXJlYSBpZD0i
dGV4dCIgcGxhY2Vob2xkZXI9IlBsYWNlaG9sZGVyIHRleHQiPjwvdGV4dGFyZWE+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9m
YXN0L2Zvcm1zL2lucHV0LXRleHQtbWF4bGVuZ3RoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy1sZW9wYXJkL2Zhc3QvZm9ybXMvaW5wdXQtdGV4dC1tYXhsZW5ndGgtZXhw
ZWN0ZWQudHh0CmluZGV4IDE0NWQ0YTEuLmJhM2QwYzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy1sZW9wYXJkL2Zhc3QvZm9ybXMvaW5wdXQtdGV4dC1tYXhsZW5ndGgtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL2Zhc3QvZm9y
bXMvaW5wdXQtdGV4dC1tYXhsZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC0xNjcsMTIgKzE2NywxMiBA
QCBsYXllciBhdCAoMTYsOTcpIHNpemUgNDF4MTMKICAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdp
ZHRoIDI4OiAiMTIzNCIKIGxheWVyIGF0ICgxNiwxMjQpIHNpemUgNDF4MTMKICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDMsMykgc2l6ZSA0MXgxMwotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MSwwKSBzaXplIDM1eDEzCi0gICAgICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAzNTogIjEyMzQ1
IgorICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwwKSBzaXplIDI4eDEzCisgICAgICB0ZXh0
IHJ1biBhdCAoMSwwKSB3aWR0aCAyODogIjEyMzQiCiBsYXllciBhdCAoMTYsMTUxKSBzaXplIDQx
eDEzCiAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgNDF4MTMKLSAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDEsMCkgc2l6ZSAzNXgxMwotICAgICAgdGV4dCBydW4gYXQgKDEsMCkg
d2lkdGggMzU6ICIxMjM0NSIKKyAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMCkgc2l6ZSAy
OHgxMworICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMjg6ICIxMjM0IgogbGF5ZXIgYXQg
KDE2LDE3OCkgc2l6ZSA0MXgxMwogICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDQx
eDEzCiAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDApIHNpemUgMjh4MTMKQEAgLTE5MSw5
ICsxOTEsOSBAQCBsYXllciBhdCAoMTYsMjU5KSBzaXplIDQxeDEzCiAgICAgICB0ZXh0IHJ1biBh
dCAoMSwwKSB3aWR0aCAyODogIjEyeFx4ezMwNX1ceHszMzJ9NCIKIGxheWVyIGF0ICgxNiwyODYp
IHNpemUgNDF4MTMKICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSA0MXgxMwotICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwwKSBzaXplIDM1eDEzCi0gICAgICB0ZXh0IHJ1biBh
dCAoMSwwKSB3aWR0aCAzNTogIjEyeFx4ezMwNX1ceHszMzJ9NDUiCisgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgxLDApIHNpemUgMjh4MTMKKyAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRo
IDI4OiAiMTJ4XHh7MzA1fVx4ezMzMn00IgogbGF5ZXIgYXQgKDE2LDMxMykgc2l6ZSA0MXgxMwog
ICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDQxeDEzCi0gICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgxLDApIHNpemUgMzV4MTMKLSAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRo
IDM1OiAiMTJ4XHh7MzA1fVx4ezMzMn00NSIKKyAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEs
MCkgc2l6ZSAyOHgxMworICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMjg6ICIxMnhceHsz
MDV9XHh7MzMyfTQiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9m
b3Jtcy9pbnB1dC10ZXh0LW1heGxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC10ZXh0LW1heGxlbmd0aC1leHBlY3RlZC50eHQKaW5k
ZXggOWQ3YjNkYy4uYmQ1MjFjZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvZm9ybXMvaW5wdXQtdGV4dC1tYXhsZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LXRleHQtbWF4bGVuZ3RoLWV4cGVj
dGVkLnR4dApAQCAtMTY3LDEyICsxNjcsMTIgQEAgbGF5ZXIgYXQgKDE2LDk3KSBzaXplIDQxeDEz
CiAgICAgICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAyODogIjEyMzQiCiBsYXllciBhdCAoMTYs
MTI0KSBzaXplIDQxeDEzCiAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgNDF4MTMK
LSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMCkgc2l6ZSAzNXgxMwotICAgICAgdGV4dCBy
dW4gYXQgKDEsMCkgd2lkdGggMzU6ICIxMjM0NSIKKyAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDEsMCkgc2l6ZSAyOHgxMworICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMjg6ICIxMjM0
IgogbGF5ZXIgYXQgKDE2LDE1MSkgc2l6ZSA0MXgxMwogICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MywzKSBzaXplIDQxeDEzCi0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDApIHNpemUgMzV4
MTMKLSAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDM1OiAiMTIzNDUiCisgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgxLDApIHNpemUgMjh4MTMKKyAgICAgIHRleHQgcnVuIGF0ICgxLDAp
IHdpZHRoIDI4OiAiMTIzNCIKIGxheWVyIGF0ICgxNiwxNzgpIHNpemUgNDF4MTMKICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSA0MXgxMwogICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMSwwKSBzaXplIDI4eDEzCkBAIC0xOTEsOSArMTkxLDkgQEAgbGF5ZXIgYXQgKDE2LDI1OSkg
c2l6ZSA0MXgxMwogICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMjg6ICIxMnhceHszMDV9
XHh7MzMyfTQiCiBsYXllciBhdCAoMTYsMjg2KSBzaXplIDQxeDEzCiAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgzLDMpIHNpemUgNDF4MTMKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMCkg
c2l6ZSAzNXgxMwotICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMzU6ICIxMnhceHszMDV9
XHh7MzMyfTQ1IgorICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwwKSBzaXplIDI4eDEzCisg
ICAgICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAyODogIjEyeFx4ezMwNX1ceHszMzJ9NCIKIGxh
eWVyIGF0ICgxNiwzMTMpIHNpemUgNDF4MTMKICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykg
c2l6ZSA0MXgxMwotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwwKSBzaXplIDM1eDEzCi0g
ICAgICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAzNTogIjEyeFx4ezMwNX1ceHszMzJ9NDUiCisg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDApIHNpemUgMjh4MTMKKyAgICAgIHRleHQgcnVu
IGF0ICgxLDApIHdpZHRoIDI4OiAiMTJ4XHh7MzA1fVx4ezMzMn00IgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItcHNl
dWRvLXN0eWxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zv
cm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1zdHlsZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTExYWRjNgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVy
LXBzZXVkby1zdHlsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNSBAQAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNp
emUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAor
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzI4eDE4CisgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDMyODogIlRoaXMgdGVzdHMgdGhhdCB5b3UgY2FuIHNldCB0
aGUgcGxhY2Vob2xkZXIgdGV4dCBjb2xvci4iCisgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgzMjgs
MTQpIHNpemUgMHgwCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEzMyw0MCkgc2l6ZSA0
eDE4CisgICAgICAgIHRleHQgcnVuIGF0ICgxMzMsNDApIHdpZHRoIDQ6ICIgIgorICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgyNzAsNDApIHNpemUgNHgxOAorICAgICAgICB0ZXh0IHJ1biBh
dCAoMjcwLDQwKSB3aWR0aCA0OiAiICIKKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNDA3
LDQwKSBzaXplIDR4MTgKKyAgICAgICAgdGV4dCBydW4gYXQgKDQwNyw0MCkgd2lkdGggNDogIiAi
CisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKK2xheWVyIGF0ICgx
MCwyOCkgc2l6ZSAxMjl4MzIgY2xpcCBhdCAoMTEsMjkpIHNpemUgMTI3eDMwCisgIFJlbmRlclRl
eHRDb250cm9sIHtURVhUQVJFQX0gYXQgKDIsMjApIHNpemUgMTI5eDMyIFtiZ2NvbG9yPSNGRkZG
RkZdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDMsMykgc2l6ZSAxMjN4MTMgW2NvbG9yPSM2NDAwMDBdCisgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSAyMngxMworICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCAyMjogInRleHQiCitsYXllciBhdCAoMTQ3LDI4KSBzaXplIDEyOXgzMiBjbGlwIGF0ICgxNDgs
MjkpIHNpemUgMTI3eDMwCisgIFJlbmRlclRleHRDb250cm9sIHtURVhUQVJFQX0gYXQgKDEzOSwy
MCkgc2l6ZSAxMjl4MzIgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAw
MDAwKV0KKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDEyM3gxMyBbY29sb3I9
I0I4MDAwMF0KKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDcweDEzCisg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDcwOiAiZGlzYWJsZWQgdGV4dCIKK2xheWVy
IGF0ICgyODQsMjgpIHNpemUgMTI5eDMyIGNsaXAgYXQgKDI4NSwyOSkgc2l6ZSAxMjd4MzAKKyAg
UmVuZGVyVGV4dENvbnRyb2wge1RFWFRBUkVBfSBhdCAoMjc2LDIwKSBzaXplIDEyOXgzMiBbYmdj
b2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgMTIzeDEzIFtjb2xvcj0jQTlBOUE5XQorICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzh4MTMKKyAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggMzg6ICJkZWZhdWx0IgorbGF5ZXIgYXQgKDQyMSwyOCkgc2l6ZSAxMjl4MzIg
Y2xpcCBhdCAoNDIyLDI5KSBzaXplIDEyN3gzMAorICBSZW5kZXJUZXh0Q29udHJvbCB7VEVYVEFS
RUF9IGF0ICg0MTMsMjApIHNpemUgMTI5eDMyIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgx
cHggc29saWQgIzAwMDAwMCldCisgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSAx
MjN4MTMgW2NvbG9yPSNBOUE5QTldCisgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSA4NngxMworICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA4NjogImRlZmF1bHQg
ZGlzYWJsZWQiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jt
cy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtYXR0cmlidXRlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC1h
dHRyaWJ1dGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmQ3OTQwOTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtYXR0cmlidXRlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmll
dyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBS
ZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7
Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAs
MCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
NDM5eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDM5OiAiSWYgeW91IGNh
biBzZWUgdGhlIHdvcmQgXCJQbGFjZWhvbGRlclwiIGluIHRoZSB0ZXh0IGFyZWEsIHRoZW4gYWxs
IGlzIHdlbGwuIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDM0KSBzaXplIDc4NHgzNgor
bGF5ZXIgYXQgKDEwLDQ0KSBzaXplIDEyOXgzMiBjbGlwIGF0ICgxMSw0NSkgc2l6ZSAxMjd4MzAK
KyAgUmVuZGVyVGV4dENvbnRyb2wge1RFWFRBUkVBfSBhdCAoMiwyKSBzaXplIDEyOXgzMiBbYmdj
b2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgMTIzeDEzIFtjb2xvcj0jQTlBOUE5XQorICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNjJ4MTMKKyAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggNjI6ICJQbGFjZWhvbGRlciIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC12YWx1ZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1w
bGFjZWhvbGRlci1zZXQtdmFsdWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjg4NjY2ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFsdWUtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBS
ZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5k
ZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtQ
fSBhdCAoMCwwKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSA1M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDUzOiAiVGVz
dCBmb3IgIgorICAgICAgICBSZW5kZXJJbmxpbmUge0F9IGF0ICgwLDApIHNpemUgMzA1eDE4IFtj
b2xvcj0jMDAwMEVFXQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNTMsMCkgc2l6
ZSAzMDV4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICg1MywwKSB3aWR0aCAzMDU6ICJodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDgiCisgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMzU4LDApIHNpemUgNHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0
ICgzNTgsMCkgd2lkdGggNDogIi4iCisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAo
MCwzNCkgc2l6ZSA3ODR4MzYKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgMHgwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKK2xheWVyIGF0ICgxMCw0
NCkgc2l6ZSAxMjl4MzIgY2xpcCBhdCAoMTEsNDUpIHNpemUgMTI3eDMwCisgIFJlbmRlclRleHRD
b250cm9sIHtURVhUQVJFQX0gYXQgKDIsMikgc2l6ZSAxMjl4MzIgW2JnY29sb3I9I0ZGRkZGRl0g
W2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MywzKSBzaXplIDEyM3gxMworICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
NDh4MTMKKyAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDg6ICJOZXcgdGV4dCIKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvZm9ybXMvaW5wdXQtdGV4dC1t
YXhsZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9mb3Jt
cy9pbnB1dC10ZXh0LW1heGxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXggOGQ4OTI5OC4uYmJiMjUz
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9mb3Jtcy9pbnB1dC10
ZXh0LW1heGxlbmd0aC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
ZmFzdC9mb3Jtcy9pbnB1dC10ZXh0LW1heGxlbmd0aC1leHBlY3RlZC50eHQKQEAgLTE2NywxMiAr
MTY3LDEyIEBAIGxheWVyIGF0ICgxNiwxMDYpIHNpemUgMzJ4MTYKICAgICAgIHRleHQgcnVuIGF0
ICgxLDApIHdpZHRoIDI0OiAiMTIzNCIKIGxheWVyIGF0ICgxNiwxMzYpIHNpemUgMzJ4MTYKICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSAzMngxNgotICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMSwwKSBzaXplIDMweDE2Ci0gICAgICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAz
MDogIjEyMzQ1IgorICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwwKSBzaXplIDI0eDE2Cisg
ICAgICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAyNDogIjEyMzQiCiBsYXllciBhdCAoMTYsMTY2
KSBzaXplIDMyeDE2CiAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgMzJ4MTYKLSAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMCkgc2l6ZSAzMHgxNgotICAgICAgdGV4dCBydW4g
YXQgKDEsMCkgd2lkdGggMzA6ICIxMjM0NSIKKyAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEs
MCkgc2l6ZSAyNHgxNgorICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMjQ6ICIxMjM0Igog
bGF5ZXIgYXQgKDE2LDE5Nikgc2l6ZSAzMngxNgogICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywz
KSBzaXplIDMyeDE2CiAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDApIHNpemUgMjR4MTYK
QEAgLTE5MSw5ICsxOTEsOSBAQCBsYXllciBhdCAoMTYsMjg2KSBzaXplIDMyeDE2CiAgICAgICB0
ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAyNDogIjEyeFx4ezMwNX1ceHszMzJ9NCIKIGxheWVyIGF0
ICgxNiwzMTYpIHNpemUgMzJ4MTYKICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSAz
MngxNgotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwwKSBzaXplIDMweDE2Ci0gICAgICB0
ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAzMDogIjEyeFx4ezMwNX1ceHszMzJ9NDUiCisgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgxLDApIHNpemUgMjR4MTYKKyAgICAgIHRleHQgcnVuIGF0ICgx
LDApIHdpZHRoIDI0OiAiMTJ4XHh7MzA1fVx4ezMzMn00IgogbGF5ZXIgYXQgKDE2LDM0Nikgc2l6
ZSAzMngxNgogICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDMyeDE2Ci0gICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgxLDApIHNpemUgMzB4MTYKLSAgICAgIHRleHQgcnVuIGF0ICgx
LDApIHdpZHRoIDMwOiAiMTJ4XHh7MzA1fVx4ezMzMn00NSIKKyAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDEsMCkgc2l6ZSAyNHgxNgorICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMjQ6
ICIxMnhceHszMDV9XHh7MzMyfTQiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vZmFzdC9mb3Jtcy9pbnB1dC10ZXh0LW1heGxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9mb3Jtcy9pbnB1dC10ZXh0LW1heGxlbmd0aC1leHBlY3Rl
ZC50eHQKaW5kZXggMTQ1ZDRhMS4uYmEzZDBjMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL2Zhc3QvZm9ybXMvaW5wdXQtdGV4dC1tYXhsZW5ndGgtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2Zvcm1zL2lucHV0LXRleHQtbWF4bGVu
Z3RoLWV4cGVjdGVkLnR4dApAQCAtMTY3LDEyICsxNjcsMTIgQEAgbGF5ZXIgYXQgKDE2LDk3KSBz
aXplIDQxeDEzCiAgICAgICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAyODogIjEyMzQiCiBsYXll
ciBhdCAoMTYsMTI0KSBzaXplIDQxeDEzCiAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNp
emUgNDF4MTMKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMCkgc2l6ZSAzNXgxMwotICAg
ICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMzU6ICIxMjM0NSIKKyAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDEsMCkgc2l6ZSAyOHgxMworICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGgg
Mjg6ICIxMjM0IgogbGF5ZXIgYXQgKDE2LDE1MSkgc2l6ZSA0MXgxMwogICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMywzKSBzaXplIDQxeDEzCi0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDAp
IHNpemUgMzV4MTMKLSAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDM1OiAiMTIzNDUiCisg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDApIHNpemUgMjh4MTMKKyAgICAgIHRleHQgcnVu
IGF0ICgxLDApIHdpZHRoIDI4OiAiMTIzNCIKIGxheWVyIGF0ICgxNiwxNzgpIHNpemUgNDF4MTMK
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSA0MXgxMwogICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMSwwKSBzaXplIDI4eDEzCkBAIC0xOTEsOSArMTkxLDkgQEAgbGF5ZXIgYXQg
KDE2LDI1OSkgc2l6ZSA0MXgxMwogICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMjg6ICIx
MnhceHszMDV9XHh7MzMyfTQiCiBsYXllciBhdCAoMTYsMjg2KSBzaXplIDQxeDEzCiAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgNDF4MTMKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDEsMCkgc2l6ZSAzNXgxMwotICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMzU6ICIx
MnhceHszMDV9XHh7MzMyfTQ1IgorICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwwKSBzaXpl
IDI4eDEzCisgICAgICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAyODogIjEyeFx4ezMwNX1ceHsz
MzJ9NCIKIGxheWVyIGF0ICgxNiwzMTMpIHNpemUgNDF4MTMKICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDMsMykgc2l6ZSA0MXgxMwotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwwKSBzaXpl
IDM1eDEzCi0gICAgICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAzNTogIjEyeFx4ezMwNX1ceHsz
MzJ9NDUiCisgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDApIHNpemUgMjh4MTMKKyAgICAg
IHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDI4OiAiMTJ4XHh7MzA1fVx4ezMzMn00IgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwZWRhMzlk
Li5iZTkyNjAxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDA5LTA4LTIzICBLZW50IFRhbXVyYSAgPHRrZW50
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIHBsYWNlaG9sZGVyIGF0dHJpYnV0ZSBhbmQgRE9N
IHByb3BlcnR5IG9mIHRoZSB0ZXh0YXJlYSBlbGVtZW50LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDgKKworICAgICAgICBBIERPTSBub2RlIGZv
ciBhbiBJTlBVVCBlbGVtZW50IGRvZXNuJ3QgaGF2ZSBhIGZsYWcgZm9yIHBsYWNlaG9sZGVyCisg
ICAgICAgIHZpc2liaWxpdHkgYW55bW9yZS4gIFRoaXMgcGF0Y2ggYWxzbyBmaXhlcyBhIGJ1ZyB0
aGF0IGEgcmVuZGVyZXIKKyAgICAgICAgZG9lc24ndCByZWZsZWN0IGEgY29ycmVzcG9uZGluZyBE
T00gdmFsdWUgY2hhbmdlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL3RleHRhcmVhLXBs
YWNlaG9sZGVyLWRvbS1wcm9wZXJ0eS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL3Rl
eHRhcmVhLXBsYWNlaG9sZGVyLXBzZXVkby1zdHlsZS5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXNldC1hdHRyaWJ1dGUuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9mb3Jtcy90ZXh0YXJlYS1wbGFjZWhvbGRlci1zZXQtdmFsdWUuaHRtbAorCisg
ICAgICAgICogY3NzL2h0bWwuY3NzOiBBZGQgdGhlIGRlZmF1bHQgc3R5bGUgZm9yIHBsYWNlaG9s
ZGVyIG9mIHRleHRhcmVhLgorICAgICAgICAqIGRvbS9JbnB1dEVsZW1lbnQuY3BwOiBDbGVhbnVw
IGZvciBtX3BsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlIHJlbW92YWwKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OklucHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5w
dXRFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRnJvbVJlbmRlcmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OklucHV0RWxlbWVudERhdGE6OklucHV0RWxlbWVudERhdGEpOgorICAgICAgICAqIGRv
bS9JbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKToK
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSk6CisgICAgICAgICog
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0
QXJlYUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0
QXJlYUVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZl
bnQpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGw6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjpSZW5k
ZXJUZXh0Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6c3R5
bGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OnNldElu
bmVyVGV4dFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjp1cGRh
dGVQbGFjZWhvbGRlclZpc2liaWxpdHkpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6UmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENv
bnRyb2xNdWx0aUxpbmU6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OnRleHRCYXNlU3R5bGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lOjp0ZXh0QmFzZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZTo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjcmVhdGVJbm5lclRleHRTdHlsZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oOgorICAgICAgICAqIHdtbC9X
TUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V01MSW5wdXRFbGVtZW50Ojpk
aXNwYXRjaEZvY3VzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V01MSW5wdXRFbGVtZW50Ojpk
aXNwYXRjaEJsdXJFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpXTUxJbnB1dEVsZW1lbnQ6OnNl
dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OldNTElucHV0RWxlbWVudDo6cGxhY2Vob2xkZXJT
aG91bGRCZVZpc2libGUpOgorCiAyMDA5LTA4LTIzICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNr
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9jc3MvaHRtbC5jc3MgYi9XZWJDb3JlL2Nzcy9odG1sLmNzcwppbmRl
eCAxNGNhMTcyLi4zMGQ1NjYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9odG1sLmNzcworKysg
Yi9XZWJDb3JlL2Nzcy9odG1sLmNzcwpAQCAtMzY4LDcgKzM2OCw3IEBAIHRleHRhcmVhIHsKICAg
ICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiB9CiAKLWlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNl
aG9sZGVyLCBpc2luZGV4Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKK2lucHV0Ojotd2Vi
a2l0LWlucHV0LXBsYWNlaG9sZGVyLCBpc2luZGV4Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVy
LCB0ZXh0YXJlYTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICAgY29sb3I6IGRhcmtH
cmF5OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwIGIvV2Vi
Q29yZS9kb20vSW5wdXRFbGVtZW50LmNwcAppbmRleCAwZTI0NTZkLi5hZTBhNjUwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0lucHV0
RWxlbWVudC5jcHAKQEAgLTUyLDE5ICs1MiwxOSBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogY29uc3QgaW50IElucHV0RWxlbWVudDo6c19tYXhpbXVtTGVuZ3RoID0gNTI0Mjg4OwogY29u
c3QgaW50IElucHV0RWxlbWVudDo6c19kZWZhdWx0U2l6ZSA9IDIwOwogCi12b2lkIElucHV0RWxl
bWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KElucHV0RWxlbWVudERhdGEmIGRhdGEsIElucHV0RWxl
bWVudCogaW5wdXRFbGVtZW50LCBFbGVtZW50KiBlbGVtZW50KQordm9pZCBJbnB1dEVsZW1lbnQ6
OmRpc3BhdGNoRm9jdXNFdmVudChJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgRWxlbWVudCog
ZWxlbWVudCkKIHsKICAgICBpZiAoIWlucHV0RWxlbWVudC0+aXNUZXh0RmllbGQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGRhdGEsIGlucHV0
RWxlbWVudCwgZWxlbWVudCk7CisgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGlucHV0
RWxlbWVudCwgZWxlbWVudCk7CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBlbGVtZW50LT5k
b2N1bWVudCgpOwogICAgIGlmIChpbnB1dEVsZW1lbnQtPmlzUGFzc3dvcmRGaWVsZCgpICYmIGRv
Y3VtZW50LT5mcmFtZSgpKQogICAgICAgICBkb2N1bWVudC0+c2V0VXNlU2VjdXJlS2V5Ym9hcmRF
bnRyeVdoZW5BY3RpdmUodHJ1ZSk7CiB9CiAKLXZvaWQgSW5wdXRFbGVtZW50OjpkaXNwYXRjaEJs
dXJFdmVudChJbnB1dEVsZW1lbnREYXRhJiBkYXRhLCBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVu
dCwgRWxlbWVudCogZWxlbWVudCkKK3ZvaWQgSW5wdXRFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVu
dChJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBp
ZiAoIWlucHV0RWxlbWVudC0+aXNUZXh0RmllbGQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzQs
NyArNzQsNyBAQCB2b2lkIElucHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoSW5wdXRFbGVt
ZW50RGF0YSYgZGF0YSwgSW5wdXRFbGVtZW50KiBpbnB1dAogICAgIGlmICghZnJhbWUpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShkYXRhLCBpbnB1
dEVsZW1lbnQsIGVsZW1lbnQpOworICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShpbnB1
dEVsZW1lbnQsIGVsZW1lbnQpOwogCiAgICAgaWYgKGlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZp
ZWxkKCkpCiAgICAgICAgIGRvY3VtZW50LT5zZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFj
dGl2ZShmYWxzZSk7CkBAIC04MiwxOCArODIsMTkgQEAgdm9pZCBJbnB1dEVsZW1lbnQ6OmRpc3Bh
dGNoQmx1ckV2ZW50KElucHV0RWxlbWVudERhdGEmIGRhdGEsIElucHV0RWxlbWVudCogaW5wdXQK
ICAgICBmcmFtZS0+dGV4dEZpZWxkRGlkRW5kRWRpdGluZyhlbGVtZW50KTsKIH0KIAotdm9pZCBJ
bnB1dEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShJbnB1dEVsZW1lbnREYXRh
JiBkYXRhLCBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgRWxlbWVudCogZWxlbWVudCwgYm9v
bCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdlZCkKK2Jvb2wgSW5wdXRFbGVtZW50OjpwbGFjZWhvbGRl
clNob3VsZEJlVmlzaWJsZShjb25zdCBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgY29uc3Qg
RWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBBU1NFUlQoaW5wdXRFbGVtZW50LT5pc1RleHRGaWVs
ZCgpKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBlbGVtZW50LT5kb2N1bWVudCgpOwotCi0g
ICAgYm9vbCBvbGRQbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSA9IGRhdGEucGxhY2Vob2xkZXJT
aG91bGRCZVZpc2libGUoKTsKLSAgICBkYXRhLnNldFBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxl
KGlucHV0RWxlbWVudC0+dmFsdWUoKS5pc0VtcHR5KCkgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmJiBkb2N1bWVudC0+Zm9jdXNlZE5vZGUoKSAhPSBlbGVtZW50Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhaW5wdXRFbGVtZW50LT5w
bGFjZWhvbGRlcigpLmlzRW1wdHkoKSk7CisgICAgcmV0dXJuIGlucHV0RWxlbWVudC0+dmFsdWUo
KS5pc0VtcHR5KCkKKyAgICAgICAgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUo
KSAhPSBlbGVtZW50CisgICAgICAgICYmICFpbnB1dEVsZW1lbnQtPnBsYWNlaG9sZGVyKCkuaXNF
bXB0eSgpOworfQogCi0gICAgaWYgKChvbGRQbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSAhPSBk
YXRhLnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgfHwgcGxhY2Vob2xkZXJWYWx1ZUNoYW5n
ZWQpICYmIGVsZW1lbnQtPnJlbmRlcmVyKCkpCi0gICAgICAgIHRvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lKGVsZW1lbnQtPnJlbmRlcmVyKCkpLT51cGRhdGVQbGFjZWhvbGRlclZpc2liaWxp
dHkoKTsKK3ZvaWQgSW5wdXRFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoSW5w
dXRFbGVtZW50KiBpbnB1dEVsZW1lbnQsIEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgcGxhY2Vob2xk
ZXJWYWx1ZUNoYW5nZWQpCit7CisgICAgQVNTRVJUKGlucHV0RWxlbWVudC0+aXNUZXh0RmllbGQo
KSk7CisgICAgYm9vbCBwbGFjZWhvbGRlclZpc2libGUgPSBpbnB1dEVsZW1lbnQtPnBsYWNlaG9s
ZGVyU2hvdWxkQmVWaXNpYmxlKCk7CisgICAgaWYgKGVsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAg
ICAgIHRvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKGVsZW1lbnQtPnJlbmRlcmVyKCkpLT51
cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkocGxhY2Vob2xkZXJWaXNpYmxlLCBwbGFjZWhvbGRl
clZhbHVlQ2hhbmdlZCk7CiB9CiAKIHZvaWQgSW5wdXRFbGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVh
cmFuY2UoSW5wdXRFbGVtZW50RGF0YSYgZGF0YSwgSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQs
IEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKQpAQCAtMTQx
LDcgKzE0Miw3IEBAIHZvaWQgSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUZyb21SZW5kZXJlcihJbnB1
dEVsZW1lbnREYXRhJiBkYXRhLCBJbnB1dEVsZW1lbnQqIGluCiAgICAgQVNTRVJUKHZhbHVlID09
IGlucHV0RWxlbWVudC0+Y29uc3RyYWluVmFsdWUodmFsdWUpIHx8IGlucHV0RWxlbWVudC0+Y29u
c3RyYWluVmFsdWUodmFsdWUpLmlzRW1wdHkoKSk7CiAKICAgICBpZiAoaW5wdXRFbGVtZW50LT5p
c1RleHRGaWVsZCgpKQotICAgICAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoZGF0YSwg
aW5wdXRFbGVtZW50LCBlbGVtZW50KTsKKyAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmls
aXR5KGlucHV0RWxlbWVudCwgZWxlbWVudCk7CiAKICAgICAvLyBXb3JrYXJvdW5kIGZvciBidWcg
d2hlcmUgdHJhaWxpbmcgXG4gaXMgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdCBvZiB0ZXh0Q29udGVu
dC4KICAgICAvLyBUaGUgYXNzZXJ0IG1hY3JvIGFib3ZlIG1heSBhbHNvIGJlIHNpbXBsaWZpZWQg
dG86ICB2YWx1ZSA9PSBjb25zdHJhaW5WYWx1ZSh2YWx1ZSkKQEAgLTI3Nyw4ICsyNzgsNyBAQCB2
b2lkIElucHV0RWxlbWVudDo6bm90aWZ5Rm9ybVN0YXRlQ2hhbmdlZChFbGVtZW50KiBlbGVtZW50
KQogCiAvLyBJbnB1dEVsZW1lbnREYXRhCiBJbnB1dEVsZW1lbnREYXRhOjpJbnB1dEVsZW1lbnRE
YXRhKCkKLSAgICA6IG1fcGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoZmFsc2UpCi0gICAgLCBt
X3NpemUoSW5wdXRFbGVtZW50OjpzX2RlZmF1bHRTaXplKQorICAgIDogbV9zaXplKElucHV0RWxl
bWVudDo6c19kZWZhdWx0U2l6ZSkKICAgICAsIG1fbWF4TGVuZ3RoKElucHV0RWxlbWVudDo6c19t
YXhpbXVtTGVuZ3RoKQogICAgICwgbV9jYWNoZWRTZWxlY3Rpb25TdGFydCgtMSkKICAgICAsIG1f
Y2FjaGVkU2VsZWN0aW9uRW5kKC0xKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vSW5wdXRFbGVt
ZW50LmggYi9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaAppbmRleCA3YWQzY2JkLi4wYmQxMDJl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2Rv
bS9JbnB1dEVsZW1lbnQuaApAQCAtNjQsOSArNjQsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBpbnQgc19kZWZhdWx0U2l6ZTsKIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyB2b2lkIGRp
c3BhdGNoRm9jdXNFdmVudChJbnB1dEVsZW1lbnREYXRhJiwgSW5wdXRFbGVtZW50KiwgRWxlbWVu
dCopOwotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoQmx1ckV2ZW50KElucHV0RWxlbWVudERhdGEm
LCBJbnB1dEVsZW1lbnQqLCBFbGVtZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgdXBkYXRlUGxhY2Vo
b2xkZXJWaXNpYmlsaXR5KElucHV0RWxlbWVudERhdGEmLCBJbnB1dEVsZW1lbnQqLCBFbGVtZW50
KiwgYm9vbCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdlZCA9IGZhbHNlKTsKKyAgICBzdGF0aWMgdm9p
ZCBkaXNwYXRjaEZvY3VzRXZlbnQoSW5wdXRFbGVtZW50KiwgRWxlbWVudCopOworICAgIHN0YXRp
YyB2b2lkIGRpc3BhdGNoQmx1ckV2ZW50KElucHV0RWxlbWVudCosIEVsZW1lbnQqKTsKKyAgICBz
dGF0aWMgYm9vbCBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZShjb25zdCBJbnB1dEVsZW1lbnQq
LCBjb25zdCBFbGVtZW50Kik7CisgICAgc3RhdGljIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNp
YmlsaXR5KElucHV0RWxlbWVudCosIEVsZW1lbnQqLCBib29sIHBsYWNlaG9sZGVyVmFsdWVDaGFu
Z2VkID0gZmFsc2UpOwogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZShJbnB1
dEVsZW1lbnREYXRhJiwgSW5wdXRFbGVtZW50KiwgRWxlbWVudCosIGJvb2wgcmVzdG9yZVByZXZp
b3VzU2VsZWN0aW9uKTsKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVTZWxlY3Rpb25SYW5nZShJbnB1
dEVsZW1lbnQqLCBFbGVtZW50KiwgaW50IHN0YXJ0LCBpbnQgZW5kKTsKICAgICBzdGF0aWMgdm9p
ZCBhYm91dFRvVW5sb2FkKElucHV0RWxlbWVudCosIEVsZW1lbnQqKTsKQEAgLTg1LDkgKzg2LDYg
QEAgY2xhc3MgSW5wdXRFbGVtZW50RGF0YSB7CiBwdWJsaWM6CiAgICAgSW5wdXRFbGVtZW50RGF0
YSgpOwogCi0gICAgYm9vbCBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGU7IH0KLSAgICB2b2lkIHNldFBsYWNlaG9s
ZGVyU2hvdWxkQmVWaXNpYmxlKGJvb2wgdmlzaWJsZSkgeyBtX3BsYWNlaG9sZGVyU2hvdWxkQmVW
aXNpYmxlID0gdmlzaWJsZTsgfQotCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIHsgbV9uYW1l
ID0gdmFsdWU7IH0KIApAQCAtMTA3LDcgKzEwNSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENh
Y2hlZFNlbGVjdGlvbkVuZChpbnQgdmFsdWUpIHsgbV9jYWNoZWRTZWxlY3Rpb25FbmQgPSB2YWx1
ZTsgfQogCiBwcml2YXRlOgotICAgIGJvb2wgbV9wbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZTsK
ICAgICBBdG9taWNTdHJpbmcgbV9uYW1lOwogICAgIFN0cmluZyBtX3ZhbHVlOwogICAgIGludCBt
X3NpemU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMmJmODUxOS4uYjM0OGQzYSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMjUzLDcgKzI1Myw3IEBAIGJvb2wgSFRN
TElucHV0RWxlbWVudDo6c2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25zdAogCiB2b2lkIEhUTUxJ
bnB1dEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCgpCiB7Ci0gICAgSW5wdXRFbGVtZW50Ojpk
aXNwYXRjaEZvY3VzRXZlbnQobV9kYXRhLCB0aGlzLCB0aGlzKTsKKyAgICBJbnB1dEVsZW1lbnQ6
OmRpc3BhdGNoRm9jdXNFdmVudCh0aGlzLCB0aGlzKTsKIAogICAgIGlmIChpc1RleHRGaWVsZCgp
KQogICAgICAgICBtX2F1dG9maWxsZWQgPSBmYWxzZTsKQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lk
IEhUTUxJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCgpCiAKIHZvaWQgSFRNTElucHV0
RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoKQogewotICAgIElucHV0RWxlbWVudDo6ZGlzcGF0
Y2hCbHVyRXZlbnQobV9kYXRhLCB0aGlzLCB0aGlzKTsKKyAgICBJbnB1dEVsZW1lbnQ6OmRpc3Bh
dGNoQmx1ckV2ZW50KHRoaXMsIHRoaXMpOwogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRo
U3RhdGU6OmRpc3BhdGNoQmx1ckV2ZW50KCk7CiB9CiAKQEAgLTEwODcsNyArMTA4Nyw3IEBAIHZv
aWQgSFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBtX2RhdGEuc2V0VmFsdWUoY29uc3RyYWluVmFsdWUodmFs
dWUpKTsKICAgICAgICAgICAgIGlmIChpc1RleHRGaWVsZCgpKSB7Ci0gICAgICAgICAgICAgICAg
SW5wdXRFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkobV9kYXRhLCB0aGlzLCB0
aGlzKTsKKyAgICAgICAgICAgICAgICBJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlz
aWJpbGl0eSh0aGlzLCB0aGlzKTsKICAgICAgICAgICAgICAgICBpZiAoaW5Eb2N1bWVudCgpKQog
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAg
ICAgICAgICAgICB9CkBAIC0xNzYyLDcgKzE3NjIsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6
OndpbGxWYWxpZGF0ZSgpIGNvbnN0CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6cGxhY2Vob2xk
ZXJTaG91bGRCZVZpc2libGUoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGEucGxhY2Vob2xk
ZXJTaG91bGRCZVZpc2libGUoKTsKKyAgICByZXR1cm4gSW5wdXRFbGVtZW50OjpwbGFjZWhvbGRl
clNob3VsZEJlVmlzaWJsZSh0aGlzLCB0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5oCmluZGV4IDRkODg3ZjMuLmNjYjM3ZTAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaApAQCAtMjMwLDcgKzIzMCw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgdXBkYXRl
UGxhY2Vob2xkZXJWaXNpYmlsaXR5KCkKICAgICB7Ci0gICAgICAgIElucHV0RWxlbWVudDo6dXBk
YXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KG1fZGF0YSwgdGhpcywgdGhpcywgdHJ1ZSk7CisgICAg
ICAgIElucHV0RWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KHRoaXMsIHRoaXMs
IHRydWUpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cAppbmRleCAxZDNmOTM5Li5kM2ZjODk3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwCkBAIC0xOTIsNiArMTkyLDggQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiAgICAgfSBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gYWxpZ25BdHRyKSB7CiAgICAgICAgIC8vIERvbid0IG1hcCAnYWxpZ24nIGF0
dHJpYnV0ZS4gIFRoaXMgbWF0Y2hlcyB3aGF0IEZpcmVmb3gsIE9wZXJhIGFuZCBJRSBkby4KICAg
ICAgICAgLy8gU2VlIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNzUK
KyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBwbGFjZWhvbGRlckF0dHIpIHsKKyAgICAg
ICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KHRydWUpOwogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IG9uZm9jdXNBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25ibHVyQXR0cikK
QEAgLTMwOSw2ICszMTEsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlKGNv
bnN0IFN0cmluZyYgdmFsdWUpCiAKICAgICBtX3ZhbHVlID0gbm9ybWFsaXplZFZhbHVlOwogICAg
IHNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIodHJ1ZSk7CisgICAgdXBkYXRlUGxh
Y2Vob2xkZXJWaXNpYmlsaXR5KGZhbHNlKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAgICAg
ICBkb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgaWYgKHJlbmRlcmVyKCkp
CkBAIC00MDgsNCArNDExLDI5IEBAIGJvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6c2hvdWxkVXNl
SW5wdXRNZXRob2QoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIEhUTUxUZXh0
QXJlYUVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gdmFsdWUoKS5pc0VtcHR5KCkKKyAgICAgICAgJiYgZG9jdW1lbnQoKS0+Zm9jdXNlZE5v
ZGUoKSAhPSB0aGlzCisgICAgICAgICYmICFnZXRBdHRyaWJ1dGUocGxhY2Vob2xkZXJBdHRyKS5p
c0VtcHR5KCk7Cit9CisKK3ZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6dXBkYXRlUGxhY2Vob2xk
ZXJWaXNpYmlsaXR5KGJvb2wgcGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQpCit7CisgICAgaWYgKHJl
bmRlcmVyKCkpCisgICAgICAgIHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIoKSktPnVwZGF0
ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpLCBwbGFj
ZWhvbGRlclZhbHVlQ2hhbmdlZCk7Cit9CisKK3ZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6ZGlz
cGF0Y2hGb2N1c0V2ZW50KCkKK3sKKyAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoZmFs
c2UpOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoRm9jdXNF
dmVudCgpOworfQorCit2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50
KCkKK3sKKyAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoZmFsc2UpOworICAgIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoQmx1ckV2ZW50KCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5oIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAppbmRleCA1ZWY4ZTU1Li5k
YjEyZTljIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAgLTkzLDEwICs5MywxNSBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25z
dDsKIAorICAgIGJvb2wgcGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdDsKKwogcHJp
dmF0ZToKICAgICBlbnVtIFdyYXBNZXRob2QgeyBOb1dyYXAsIFNvZnRXcmFwLCBIYXJkV3JhcCB9
OwogCiAgICAgdm9pZCB1cGRhdGVWYWx1ZSgpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlUGxhY2Vo
b2xkZXJWaXNpYmlsaXR5KGJvb2wgcGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQpOworICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hC
bHVyRXZlbnQoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBj
b25zdCB7IHJldHVybiAhaXNSZXF1aXJlZEZvcm1Db250cm9sKCk7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaXNSZXF1aXJlZEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gcmVxdWlyZWQoKTsgfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsIGIvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsCmluZGV4IDg1M2U4ZjUuLjgyMjg0YTMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwKQEAgLTM1LDYgKzM1LDcgQEAgbW9kdWxl
IGh0bWwgewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAgICAg
IGRpc2FibGVkOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgIGJvb2xlYW4gICAgICAgICAg
ICAgIGF1dG9mb2N1czsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBbQ29udmVydE51bGxU
b051bGxTdHJpbmddIERPTVN0cmluZyAgICAgICAgICAgIG5hbWU7CisgICAgICAgICAgICAgICAg
IGF0dHJpYnV0ZSAgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nLCBSZWZsZWN0XSBET01TdHJpbmcg
ICBwbGFjZWhvbGRlcjsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAgICAg
ICAgICAgICByZWFkT25seTsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBib29sZWFuICAg
ICAgICAgICAgICByZXF1aXJlZDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlICBsb25nICAg
ICAgICAgICAgICAgICByb3dzOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2wuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3Bw
CmluZGV4IDk1ZTcxZGQuLjcyNDQ0YmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbC5jcHAKQEAgLTY5LDYgKzY5LDcgQEAgc3RhdGljIENvbG9yIGRpc2FibGVkVGV4dENvbG9y
KGNvbnN0IENvbG9yJiB0ZXh0Q29sb3IsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ28KIAogUmVu
ZGVyVGV4dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9sKE5vZGUqIG5vZGUpCiAgICAgOiBSZW5k
ZXJCbG9jayhub2RlKQorICAgICwgbV9wbGFjZWhvbGRlclZpc2libGUoZmFsc2UpCiAgICAgLCBt
X2VkaXRlZChmYWxzZSkKICAgICAsIG1fdXNlckVkaXRlZChmYWxzZSkKIHsKQEAgLTkyLDE0ICs5
MywyMiBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZl
cmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqCiAgICAgICAgIC8vIFJlc2V0IHRoZW0gbm93
IHRvIGF2b2lkIGdldHRpbmcgYSBzcHVyaW91cyBsYXlvdXQgaGludC4KICAgICAgICAgdGV4dEJs
b2NrUmVuZGVyZXItPnN0eWxlKCktPnNldEhlaWdodChMZW5ndGgoKSk7CiAgICAgICAgIHRleHRC
bG9ja1JlbmRlcmVyLT5zdHlsZSgpLT5zZXRXaWR0aChMZW5ndGgoKSk7Ci0gICAgICAgIHRleHRC
bG9ja1JlbmRlcmVyLT5zZXRTdHlsZSh0ZXh0QmxvY2tTdHlsZSk7CisgICAgICAgIHNldElubmVy
VGV4dFN0eWxlKHRleHRCbG9ja1N0eWxlKTsKKyAgICB9CisKKyAgICBzZXRSZXBsYWNlZChpc0lu
bGluZSgpKTsKK30KKwordm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6c2V0SW5uZXJUZXh0U3R5bGUo
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCit7CisgICAgaWYgKG1faW5uZXJUZXh0KSB7
CisgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gdGV4dFN0eWxlID0gc3R5bGU7CisgICAgICAg
IG1faW5uZXJUZXh0LT5yZW5kZXJlcigpLT5zZXRTdHlsZSh0ZXh0U3R5bGUpOwogICAgICAgICBm
b3IgKE5vZGUqIG4gPSBtX2lubmVyVGV4dC0+Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+dHJhdmVy
c2VOZXh0Tm9kZShtX2lubmVyVGV4dC5nZXQoKSkpIHsKICAgICAgICAgICAgIGlmIChuLT5yZW5k
ZXJlcigpKQotICAgICAgICAgICAgICAgIG4tPnJlbmRlcmVyKCktPnNldFN0eWxlKHRleHRCbG9j
a1N0eWxlKTsKKyAgICAgICAgICAgICAgICBuLT5yZW5kZXJlcigpLT5zZXRTdHlsZSh0ZXh0U3R5
bGUpOwogICAgICAgICB9CiAgICAgfQotCi0gICAgc2V0UmVwbGFjZWQoaXNJbmxpbmUoKSk7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCB1cGRhdGVVc2VyTW9kaWZ5UHJvcGVydHkoTm9kZSogbm9k
ZSwgUmVuZGVyU3R5bGUqIHN0eWxlKQpAQCAtNTA2LDQgKzUxNSwxOCBAQCBIVE1MRWxlbWVudCog
UmVuZGVyVGV4dENvbnRyb2w6OmlubmVyVGV4dEVsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBt
X2lubmVyVGV4dC5nZXQoKTsKIH0KIAordm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6dXBkYXRlUGxh
Y2Vob2xkZXJWaXNpYmlsaXR5KGJvb2wgcGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUsIGJvb2wg
cGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQpCit7CisgICAgYm9vbCBvbGRQbGFjZWhvbGRlclZpc2li
bGUgPSBtX3BsYWNlaG9sZGVyVmlzaWJsZTsKKyAgICBtX3BsYWNlaG9sZGVyVmlzaWJsZSA9IHBs
YWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlOworICAgIGlmIChvbGRQbGFjZWhvbGRlclZpc2libGUg
IT0gbV9wbGFjZWhvbGRlclZpc2libGUgfHwgcGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQpIHsKKyAg
ICAgICAgLy8gU2V0cyB0aGUgaW5uZXIgdGV4dCBzdHlsZSB0byB0aGUgbm9ybWFsIHN0eWxlIG9y
IDpwbGFjZWhvbGRlciBzdHlsZS4KKyAgICAgICAgc2V0SW5uZXJUZXh0U3R5bGUoY3JlYXRlSW5u
ZXJUZXh0U3R5bGUodGV4dEJhc2VTdHlsZSgpKSk7CisKKyAgICAgICAgLy8gdXBkYXRlRnJvbUVs
ZW1lbnQoKSBvZiB0aGUgc3ViY2xhc3NlcyB1cGRhdGVzIHRoZSB0ZXh0IGNvbnRlbnQKKyAgICAg
ICAgLy8gdG8gdGhlIGVsZW1lbnQncyB2YWx1ZSgpLCBwbGFjZWhvbGRlcigpLCBvciB0aGUgZW1w
dHkgc3RyaW5nLgorICAgICAgICB1cGRhdGVGcm9tRWxlbWVudCgpOworICAgIH0KK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2wuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKaW5k
ZXggYzBmYzM0My4uMzIxMmExYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2wuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5o
CkBAIC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBv
c2l0aW9uRm9ySW5kZXgoaW50IGluZGV4KTsKICAgICBpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAKKyAgICB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVy
VmlzaWJpbGl0eShib29sLCBib29sKTsKKwogcHJvdGVjdGVkOgogICAgIFJlbmRlclRleHRDb250
cm9sKE5vZGUqKTsKIApAQCAtNzYsNiArNzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2
b2lkIGFkanVzdENvbnRyb2xIZWlnaHRCYXNlZE9uTGluZUhlaWdodChpbnQgbGluZUhlaWdodCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYWNoZVNlbGVjdGlvbihpbnQgc3RhcnQsIGludCBlbmQp
ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyVGV4
dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBSZW5kZXJTdHlsZSogdGV4dEJhc2VTdHlsZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBjYWxjSGVpZ2h0
KCk7CkBAIC04Myw2ICs4Niw4IEBAIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgVGV4dEl0
ZXJhdG9yOwogICAgIEhUTUxFbGVtZW50KiBpbm5lclRleHRFbGVtZW50KCkgY29uc3Q7CiAKKyAg
ICBib29sIG1fcGxhY2Vob2xkZXJWaXNpYmxlOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJUZXh0Q29udHJvbCI7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KQEAgLTkyLDYgKzk3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTGVm
dG92ZXJBbm9ueW1vdXNCbG9jayhSZW5kZXJCbG9jayopIHsgfQogICAgIHZpcnR1YWwgYm9vbCBj
YW5IYXZlQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBhdm9pZHNGbG9hdHMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBzZXRJbm5l
clRleHRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPik7CiAgICAgCiAgICAgdmlydHVhbCB2
b2lkIGFkZEZvY3VzUmluZ1JlY3RzKEdyYXBoaWNzQ29udGV4dCosIGludCB0eCwgaW50IHR5KTsK
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3Bw
CmluZGV4IDU2NmE4MWMuLjhkZmI4NTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKQEAgLTI0LDE0ICsyNCwxNiBAQAogCiAjaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiSGl0VGVzdFJl
c3VsdC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lKE5vZGUqIG5vZGUpCiAgICAgOiBSZW5kZXJUZXh0Q29udHJvbChub2RlKQogeworICAgIG1f
cGxhY2Vob2xkZXJWaXNpYmxlID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KG5v
ZGUpLT5wbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpOwogfQogCiBSZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZTo6flJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKCkKQEAgLTYwLDcgKzYyLDEw
IEBAIGJvb2wgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6Om5vZGVBdFBvaW50KGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUCiAgICAgaWYgKCFSZW5kZXJUZXh0Q29udHJvbDo6
bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCB4LCB5LCB0eCwgdHksIGhpdFRlc3RBY3Rpb24p
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAocmVzdWx0LmlubmVyTm9kZSgpID09
IG5vZGUoKSB8fCByZXN1bHQuaW5uZXJOb2RlKCkgPT0gaW5uZXJUZXh0RWxlbWVudCgpKQorICAg
IGJvb2wgcmVzdWx0SXNUZXh0VmFsdWVPclBsYWNlaG9sZGVyCisgICAgICAgID0gIW1fcGxhY2Vo
b2xkZXJWaXNpYmxlICYmIHJlc3VsdC5pbm5lck5vZGUoKSA9PSBpbm5lclRleHRFbGVtZW50KCkK
KyAgICAgICAgfHwgbV9wbGFjZWhvbGRlclZpc2libGUgJiYgcmVzdWx0LmlubmVyTm9kZSgpLT5p
c0Rlc2NlbmRhbnRPZihpbm5lclRleHRFbGVtZW50KCkpOworICAgIGlmIChyZXN1bHQuaW5uZXJO
b2RlKCkgPT0gbm9kZSgpIHx8IHJlc3VsdElzVGV4dFZhbHVlT3JQbGFjZWhvbGRlcikKICAgICAg
ICAgaGl0SW5uZXJUZXh0RWxlbWVudChyZXN1bHQsIHgsIHksIHR4LCB0eSk7CiAKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTkyLDcgKzk3LDExIEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmU6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICBjcmVhdGVTdWJ0cmVlSWZOZWVkZWQoMCk7CiAg
ICAgUmVuZGVyVGV4dENvbnRyb2w6OnVwZGF0ZUZyb21FbGVtZW50KCk7CiAKLSAgICBzZXRJbm5l
clRleHRWYWx1ZShzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4obm9kZSgpKS0+dmFs
dWUoKSk7CisgICAgSFRNTFRleHRBcmVhRWxlbWVudCogdGV4dEFyZWEgPSBzdGF0aWNfY2FzdDxI
VE1MVGV4dEFyZWFFbGVtZW50Kj4obm9kZSgpKTsKKyAgICBpZiAobV9wbGFjZWhvbGRlclZpc2li
bGUpCisgICAgICAgIHNldElubmVyVGV4dFZhbHVlKHRleHRBcmVhLT5nZXRBdHRyaWJ1dGUoSFRN
TE5hbWVzOjpwbGFjZWhvbGRlckF0dHIpKTsKKyAgICBlbHNlCisgICAgICAgIHNldElubmVyVGV4
dFZhbHVlKHRleHRBcmVhLT52YWx1ZSgpKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZTo6Y2FjaGVTZWxlY3Rpb24oaW50IHN0YXJ0LCBpbnQgZW5kKQpAQCAtMTAyLDggKzEx
MSwxNSBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpjYWNoZVNlbGVjdGlvbihp
bnQgc3RhcnQsIGludCBlbmQpCiAKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lOjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSog
c3RhcnRTdHlsZSkgY29uc3QKIHsKLSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHRleHRCbG9ja1N0
eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwotICAgIHRleHRCbG9ja1N0eWxlLT5pbmhlcml0
RnJvbShzdGFydFN0eWxlKTsKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHRleHRCbG9ja1N0eWxl
OworICAgIGlmIChtX3BsYWNlaG9sZGVyVmlzaWJsZSkgeworICAgICAgICBpZiAoUmVuZGVyU3R5
bGUqIHBzZXVkb1N0eWxlID0gZ2V0Q2FjaGVkUHNldWRvU3R5bGUoSU5QVVRfUExBQ0VIT0xERVIp
KQorICAgICAgICAgICAgdGV4dEJsb2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUocHNldWRv
U3R5bGUpOworICAgIH0KKyAgICBpZiAoIXRleHRCbG9ja1N0eWxlKSB7CisgICAgICAgIHRleHRC
bG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgICAgICB0ZXh0QmxvY2tTdHls
ZS0+aW5oZXJpdEZyb20oc3RhcnRTdHlsZSk7CisgICAgfQogCiAgICAgYWRqdXN0SW5uZXJUZXh0
U3R5bGUoc3RhcnRTdHlsZSwgdGV4dEJsb2NrU3R5bGUuZ2V0KCkpOwogICAgIHRleHRCbG9ja1N0
eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKQEAgLTExMSw0ICsxMjcsOSBAQCBQYXNzUmVmUHRyPFJl
bmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6Y3JlYXRlSW5uZXJUZXh0U3R5
bGUoY29uc3QgUgogICAgIHJldHVybiB0ZXh0QmxvY2tTdHlsZS5yZWxlYXNlKCk7CiB9CiAKK1Jl
bmRlclN0eWxlKiBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6dGV4dEJhc2VTdHlsZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHN0eWxlKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmggYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCmluZGV4IDcyOTY2NTMuLjMzM2NmYTggMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaApAQCAt
NDcsNiArNDcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVu
dCgpOwogICAgIHZpcnR1YWwgdm9pZCBjYWNoZVNlbGVjdGlvbihpbnQgc3RhcnQsIGludCBlbmQp
OwogCisgICAgdmlydHVhbCBSZW5kZXJTdHlsZSogdGV4dEJhc2VTdHlsZSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0OwogfTsKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKaW5kZXggOWMwMjJkNi4u
YmM5OGI4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUuY3BwCkBAIC01MCwxMiArNTAsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUoTm9kZSogbm9kZSkKICAgICA6IFJlbmRlclRleHRDb250cm9sKG5vZGUpCi0gICAgLCBt
X3BsYWNlaG9sZGVyVmlzaWJsZShmYWxzZSkKICAgICAsIG1fc2VhcmNoUG9wdXBJc1Zpc2libGUo
ZmFsc2UpCiAgICAgLCBtX3Nob3VsZERyYXdDYXBzTG9ja0luZGljYXRvcihmYWxzZSkKICAgICAs
IG1fc2VhcmNoRXZlbnRUaW1lcih0aGlzLCAmUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpz
ZWFyY2hFdmVudFRpbWVyRmlyZWQpCiAgICAgLCBtX3NlYXJjaFBvcHVwKDApCiB7CisgICAgbV9w
bGFjZWhvbGRlclZpc2libGUgPSBpbnB1dEVsZW1lbnQoKS0+cGxhY2Vob2xkZXJTaG91bGRCZVZp
c2libGUoKTsKIH0KIAogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp+UmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lKCkKQEAgLTY5LDI1ICs2OSw5IEBAIFJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZTo6flJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSgpCiAgICAgICAgIG1faW5uZXJC
bG9jay0+ZGV0YWNoKCk7CiB9CiAKLWJvb2wgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpw
bGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0CitSZW5kZXJTdHlsZSogUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lOjp0ZXh0QmFzZVN0eWxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
aW5wdXRFbGVtZW50KCktPnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCk7Ci19Ci0KLXZvaWQg
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHko
KQotewotICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IG1faW5uZXJCbG9jayA/IG1faW5u
ZXJCbG9jay0+cmVuZGVyZXIoKS0+c3R5bGUoKSA6IHN0eWxlKCk7Ci0KLSAgICBSZWZQdHI8UmVu
ZGVyU3R5bGU+IHRleHRCbG9ja1N0eWxlID0gY3JlYXRlSW5uZXJUZXh0U3R5bGUocGFyZW50U3R5
bGUpOwotICAgIEhUTUxFbGVtZW50KiBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50KCk7Ci0g
ICAgaW5uZXJUZXh0LT5yZW5kZXJlcigpLT5zZXRTdHlsZSh0ZXh0QmxvY2tTdHlsZSk7Ci0KLSAg
ICBmb3IgKE5vZGUqIG4gPSBpbm5lclRleHQtPmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPnRyYXZl
cnNlTmV4dE5vZGUoaW5uZXJUZXh0KSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IG4tPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICByZW5kZXJlci0+c2V0U3R5bGUodGV4
dEJsb2NrU3R5bGUpOwotICAgIH0KLQotICAgIHVwZGF0ZUZyb21FbGVtZW50KCk7CisgICAgcmV0
dXJuIG1faW5uZXJCbG9jayA/IG1faW5uZXJCbG9jay0+cmVuZGVyZXIoKS0+c3R5bGUoKSA6IHN0
eWxlKCk7CiB9CiAKIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjphZGRTZWFyY2hS
ZXN1bHQoKQpAQCAtNDY5LDkgKzQ1Myw2IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgY3JlYXRlU3VidHJlZUlmTmVlZGVkKCk7CiAg
ICAgUmVuZGVyVGV4dENvbnRyb2w6OnVwZGF0ZUZyb21FbGVtZW50KCk7CiAKLSAgICBib29sIHBs
YWNlaG9sZGVyVmlzaWJpbGl0eVNob3VsZENoYW5nZSA9IG1fcGxhY2Vob2xkZXJWaXNpYmxlICE9
IHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCk7Ci0gICAgbV9wbGFjZWhvbGRlclZpc2libGUg
PSBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpOwotCiAgICAgaWYgKG1fY2FuY2VsQnV0dG9u
KQogICAgICAgICB1cGRhdGVDYW5jZWxCdXR0b25WaXNpYmlsaXR5KCk7CiAKQEAgLTQ3OSw3ICs0
NjAsNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6dXBkYXRlRnJvbUVsZW1l
bnQoKQogICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgaW5uZXJUZXh0RWxl
bWVudCgpLT5zZXRJbm5lclRleHQoaW5wdXRFbGVtZW50KCktPnBsYWNlaG9sZGVyKCksIGVjKTsK
ICAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgfSBlbHNlIGlmICghc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KG5vZGUoKSktPmZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoKSB8fCBwbGFjZWhv
bGRlclZpc2liaWxpdHlTaG91bGRDaGFuZ2UpCisgICAgfSBlbHNlCiAgICAgICAgIHNldElubmVy
VGV4dFZhbHVlKGlucHV0RWxlbWVudCgpLT52YWx1ZSgpKTsKIAogICAgIGlmIChtX3NlYXJjaFBv
cHVwSXNWaXNpYmxlKQpAQCAtNDk0LDcgKzQ3NSw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lOjpjYWNoZVNlbGVjdGlvbihpbnQgc3RhcnQsIGludCBlbmQpCiBQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNyZWF0ZUlubmVyVGV4
dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdAogewogICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gdGV4dEJsb2NrU3R5bGU7Ci0gICAgaWYgKHBsYWNlaG9sZGVyU2hvdWxk
QmVWaXNpYmxlKCkpIHsKKyAgICBpZiAobV9wbGFjZWhvbGRlclZpc2libGUpIHsKICAgICAgICAg
aWYgKFJlbmRlclN0eWxlKiBwc2V1ZG9TdHlsZSA9IGdldENhY2hlZFBzZXVkb1N0eWxlKElOUFVU
X1BMQUNFSE9MREVSKSkKICAgICAgICAgICAgIHRleHRCbG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6
OmNsb25lKHBzZXVkb1N0eWxlKTsKICAgICB9IApAQCAtNTI0LDcgKzUwNSw3IEBAIFBhc3NSZWZQ
dHI8UmVuZGVyU3R5bGU+IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6Y3JlYXRlSW5uZXJU
ZXh0U3R5bGUoY29uc3QKICAgICAvLyBBZnRlciB0aGlzLCB1cGRhdGVGcm9tRWxlbWVudCB3aWxs
IGltbWVkaWF0ZWx5IHVwZGF0ZSB0aGUgdGV4dCBkaXNwbGF5ZWQuCiAgICAgLy8gV2hlbiB0aGUg
cGxhY2Vob2xkZXIgaXMgbm8gbG9uZ2VyIHZpc2libGUsIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJs
aXR5IHdpbGwgcmVzZXQgdGhlIHN0eWxlLCAKICAgICAvLyBhbmQgdGhlIHRleHQgc2VjdXJpdHkg
bW9kZSB3aWxsIGJlIHNldCBiYWNrIHRvIHRoZSBjb21wdXRlZCB2YWx1ZSBjb3JyZWN0bHkuCi0g
ICAgaWYgKHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkpCisgICAgaWYgKG1fcGxhY2Vob2xk
ZXJWaXNpYmxlKQogICAgICAgICB0ZXh0QmxvY2tTdHlsZS0+c2V0VGV4dFNlY3VyaXR5KFRTTk9O
RSk7CiAKICAgICByZXR1cm4gdGV4dEJsb2NrU3R5bGUucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmggYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaAppbmRleCBkYTk4MzhmLi5j
ZThmMGM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUuaApAQCAtNDEsNyArNDEsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIHBsYWNlaG9sZGVy
SXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9wbGFjZWhvbGRlclZpc2libGU7IH0KICAgICBi
b29sIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVQ
bGFjZWhvbGRlclZpc2liaWxpdHkoKTsKIAogICAgIHZvaWQgYWRkU2VhcmNoUmVzdWx0KCk7CiAg
ICAgdm9pZCBzdG9wU2VhcmNoRXZlbnRUaW1lcigpOwpAQCAtODQsNiArODMsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBjYWNoZVNlbGVjdGlvbihpbnQgc3RhcnQsIGludCBlbmQpOwog
ICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJl
bmRlclN0eWxlKiBvbGRTdHlsZSk7CiAKKyAgICB2aXJ0dWFsIFJlbmRlclN0eWxlKiB0ZXh0QmFz
ZVN0eWxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjcmVh
dGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3Q7CiAg
ICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJCbG9ja1N0eWxlKGNvbnN0IFJl
bmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxl
PiBjcmVhdGVSZXN1bHRzQnV0dG9uU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUp
IGNvbnN0OwpAQCAtMTIxLDcgKzEyMSw2IEBAIHByaXZhdGU6CiAKICAgICBJbnB1dEVsZW1lbnQq
IGlucHV0RWxlbWVudCgpIGNvbnN0OwogCi0gICAgYm9vbCBtX3BsYWNlaG9sZGVyVmlzaWJsZTsK
ICAgICBib29sIG1fc2VhcmNoUG9wdXBJc1Zpc2libGU7CiAgICAgYm9vbCBtX3Nob3VsZERyYXdD
YXBzTG9ja0luZGljYXRvcjsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVt
ZW50LmNwcCBiL1dlYkNvcmUvd21sL1dNTElucHV0RWxlbWVudC5jcHAKaW5kZXggZDZmYTc5YS4u
ZmVlZDVhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmNwcAorKysg
Yi9XZWJDb3JlL3dtbC9XTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wg
V01MSW5wdXRFbGVtZW50Ojppc01vdXNlRm9jdXNhYmxlKCkgY29uc3QKIAogdm9pZCBXTUxJbnB1
dEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCgpCiB7Ci0gICAgSW5wdXRFbGVtZW50OjpkaXNw
YXRjaEZvY3VzRXZlbnQobV9kYXRhLCB0aGlzLCB0aGlzKTsKKyAgICBJbnB1dEVsZW1lbnQ6OmRp
c3BhdGNoRm9jdXNFdmVudCh0aGlzLCB0aGlzKTsKICAgICBXTUxFbGVtZW50OjpkaXNwYXRjaEZv
Y3VzRXZlbnQoKTsKIH0KIApAQCAtODcsNyArODcsNyBAQCB2b2lkIFdNTElucHV0RWxlbWVudDo6
ZGlzcGF0Y2hCbHVyRXZlbnQoKQogICAgIGlmICghbmFtZVZhcmlhYmxlLmlzRW1wdHkoKSkKICAg
ICAgICAgd21sUGFnZVN0YXRlRm9yRG9jdW1lbnQoZG9jdW1lbnQoKSktPnN0b3JlVmFyaWFibGUo
bmFtZVZhcmlhYmxlLCB2YWwpOyAKIAotICAgIElucHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZl
bnQobV9kYXRhLCB0aGlzLCB0aGlzKTsKKyAgICBJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2
ZW50KHRoaXMsIHRoaXMpOwogICAgIFdNTEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCk7CiB9
CiAKQEAgLTEzNCw3ICsxMzQsNyBAQCBTdHJpbmcgV01MSW5wdXRFbGVtZW50Ojp2YWx1ZSgpIGNv
bnN0CiAKIHZvaWQgV01MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVl
KQogewotICAgIElucHV0RWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KG1fZGF0
YSwgdGhpcywgdGhpcyk7CisgICAgSW5wdXRFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZpc2li
aWxpdHkodGhpcywgdGhpcyk7CiAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJl
cihmYWxzZSk7CiAgICAgbV9kYXRhLnNldFZhbHVlKGNvbnN0cmFpblZhbHVlKHZhbHVlKSk7CiAg
ICAgaWYgKGluRG9jdW1lbnQoKSkKQEAgLTMyMCw3ICszMjAsNyBAQCB2b2lkIFdNTElucHV0RWxl
bWVudDo6ZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKQogCiBib29sIFdNTElucHV0RWxlbWVudDo6
cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGEu
cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKTsKKyAgICByZXR1cm4gSW5wdXRFbGVtZW50Ojpw
bGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSh0aGlzLCB0aGlzKTsKIH0KIAogdm9pZCBXTUxJbnB1
dEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>