<?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>41141</bug_id>
          
          <creation_ts>2010-06-24 02:46:14 -0700</creation_ts>
          <short_desc>Add a new baseclass for XML, HTML and Text DocumentParsers to clean up DocumentParser call sites</short_desc>
          <delta_ts>2010-06-28 01:47:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>41136</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>eric</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>242401</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-24 02:46:14 -0700</bug_when>
    <thetext>Add a new baseclass for XML, HTML and Text DocumentParsers to clean up DocumentParser call sites</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242402</commentid>
    <comment_count>1</comment_count>
      <attachid>59626</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-24 02:52:26 -0700</bug_when>
    <thetext>Created attachment 59626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242403</commentid>
    <comment_count>2</comment_count>
      <attachid>59626</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-24 02:57:16 -0700</bug_when>
    <thetext>Comment on attachment 59626
Patch

I view this patch as an imperfect step in the right direction.

It&apos;s actually probably ready for review except for missing build system modifications and possible need of name change.

ScriptableDocumentParser was the best I could come up with.  But there is probably better.

It may make sense to make TextDocumentParser a direct subclass of DocumentParser and then make ScriptableDocumentParser a subclass of TextDocumentParser.  It&apos;s unclear.  Right now TextDocumentParser is &quot;scriptable&quot; so that it can have &quot;write()&quot; instead of writeRawData.

There are really two divisions here.  One for what sort of data do you want (raw vs. decoded) which might be solved best by moving the decoding into the base DocumentParser class. and a second of whether you as a DocumentParser support all the scripting stuff that was previously on the DocumentParser base interface.

One of the nice side-effects of this patch is now nearly every method on ScriptableDocumentParser is abstract since we don&apos;t need default implementations to support the RawDataDocumentParsers anymore!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242405</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-24 03:01:55 -0700</bug_when>
    <thetext>Maybe a &quot;TextDataDocumentParser&quot; intermediary base class to handle write() and wellFormed() would be best.

It&apos;s also unclear if I should move synchronousScriptWrite() down onto the base DocumentParser class in preparation for one day solving https://bugs.webkit.org/show_bug.cgi?id=25397.  I think in any non-textdata document parser synchronousScriptWrite() just ends up calling open, so maybe that&apos;s what the DocumentWriter should do on its behalf.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242410</commentid>
    <comment_count>4</comment_count>
      <attachid>59627</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-24 03:26:03 -0700</bug_when>
    <thetext>Created attachment 59627
Ready for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242531</commentid>
    <comment_count>5</comment_count>
      <attachid>59627</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-24 08:48:12 -0700</bug_when>
    <thetext>Comment on attachment 59627
Ready for review

Some initial comments.  I&apos;ll review this more this afternoon.

WebCore/dom/Document.cpp:1723
 +              || (scriptableDocumentParser() &amp;&amp; scriptableDocumentParser()-&gt;isExecutingScript()))
This calls the virtual function twice for no reason.  You should save the result in a local.

WebCore/dom/Document.cpp:1762
 +      if (m_frame &amp;&amp; scriptableDocumentParser())
Same bad pattern.

WebCore/dom/Document.cpp:2004
 +      // FIXME: JS code can always call document.write, all DocumentParsers may
I don&apos;t think this comment is correct.  document.write should only exist for HTML documents.

WebCore/dom/ScriptableDocumentParser.cpp:38
 +  void ScriptableDocumentParser::synchronousScriptWrite(const SegmentedString&amp; source)
Why not &quot;insert&quot; ?

WebCore/dom/ScriptableDocumentParser.cpp:43
 +  void ScriptableDocumentParser::appendNetworkData(const SegmentedString&amp; source)
Why not &quot;append&quot; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242690</commentid>
    <comment_count>6</comment_count>
      <attachid>59627</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-24 15:23:00 -0700</bug_when>
    <thetext>Comment on attachment 59627
Ready for review

As we discussed in person, the patch has too much RTTI.  I think that&apos;s because the interface is being drawn at the wrong place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243421</commentid>
    <comment_count>7</comment_count>
      <attachid>59844</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-26 15:29:19 -0700</bug_when>
    <thetext>Created attachment 59844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243422</commentid>
    <comment_count>8</comment_count>
      <attachid>59844</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-26 15:42:39 -0700</bug_when>
    <thetext>Comment on attachment 59844
Patch

I&apos;m not sure about the name &quot;scriptable document parser&quot;. What does &quot;scriptable&quot; mean here? I think it&apos;s a bug that scripts don&apos;t work in image documents, for example, so we probably should not be enshrining that bug in our design or class names. If that&apos;s what scriptable means.

&gt; -    if (DocumentParser* parser = m_frame-&gt;document()-&gt;parser())
&gt; +    ScriptableDocumentParser* parser = m_frame-&gt;document()-&gt;scriptableDocumentParser();
&gt; +    if (parser)
&gt;          return parser-&gt;lineNumber() + 1;

Why did you take the definition of the variable out of the if statement? If you&apos;re going to do that, then I suggest changing the style to early return. Or you could leave the style the way it was.

&gt; +    // FIXME: This is a hack for HTMLFormControlElement::removedFromTree
&gt;      virtual LegacyHTMLTreeBuilder* htmlTreeBuilder() const { return 0; }

I find this comment confusing. Is there some specific sense in which having a way to downcast the tree builder is a hack? I understand that RTTI is not elegant, but hack seems a strong word here.

&gt; +    ScriptableDocumentParser(Document* document, bool viewSourceMode = false);

The argument name &quot;document&quot; could be omitted here. This constructor should be protected. Can any of the other public members be protected?

&gt; +    // Only used by Document::open for deciding if its safe to act on a
&gt; +    // javscript document.open() call right now, or it should be ignored.
&gt; +    virtual bool isExecutingScript() const { return false; }

I suggest spelling it &quot;JavaScript&quot;. Generally speaking I don&apos;t think functions should have comments listing who calls them. Is there some other way you can say this?

&gt; +};
&gt; +

There&apos;s an extra semicolon here after the namespace ends.

&gt; +// FIXME: Why is this different from SVGDocumentExtentions parserLineNumber?

Spelling error: SVGDocumentExtensions.

&gt; +static int parserLineNumber(Document* document)
&gt;  {
&gt; -    DocumentParser* parser = document-&gt;parser();
&gt; +    if (document &amp;&amp; document-&gt;scriptableDocumentParser())
&gt; +        return document-&gt;scriptableDocumentParser()-&gt;lineNumber() + 1;
&gt; +    return 0;
&gt; +}

It&apos;s not good to call a function that does RTTI like scriptableDocumentParser twice in a row. Is there a better way to write this? Local variable and early return perhaps?

&gt; +// FIXME: TextDocumentParser could just be an HTMLDocumentParser
&gt; +// which started the Tokenizer in the PlainText state.

Really? Once you&apos;re in the PlainText state you can&apos;t get out?

Seems OK. r=me despite the concerns above</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243424</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-26 19:12:27 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 59844 [details])
&gt; I&apos;m not sure about the name &quot;scriptable document parser&quot;. What does &quot;scriptable&quot; mean here? I think it&apos;s a bug that scripts don&apos;t work in image documents, for example, so we probably should not be enshrining that bug in our design or class names. If that&apos;s what scriptable means.

Agreed.  I&apos;m not exactly sure how you would run a script in an image document however.  The user typing a javascript: url?

&gt; &gt; -    if (DocumentParser* parser = m_frame-&gt;document()-&gt;parser())
&gt; &gt; +    ScriptableDocumentParser* parser = m_frame-&gt;document()-&gt;scriptableDocumentParser();
&gt; &gt; +    if (parser)
&gt; &gt;          return parser-&gt;lineNumber() + 1;
&gt; 
&gt; Why did you take the definition of the variable out of the if statement? If you&apos;re going to do that, then I suggest changing the style to early return. Or you could leave the style the way it was.

I did it to make the line shorter.  Your&apos;e right that early return would be better, will fix.


&gt; &gt; +    // FIXME: This is a hack for HTMLFormControlElement::removedFromTree
&gt; &gt;      virtual LegacyHTMLTreeBuilder* htmlTreeBuilder() const { return 0; }
&gt; 
&gt; I find this comment confusing. Is there some specific sense in which having a way to downcast the tree builder is a hack? I understand that RTTI is not elegant, but hack seems a strong word here.

Oh, it&apos;s not just a specific downcast this is doing here.  It&apos;s grabbing at the treebuilder which is otherwise considered an &quot;implementation detail&quot; of the parser.  Even worse, it&apos;s expecting back a LegacyHTMLTreeBuilder, which once Adam and I finish the  new tree builder won&apos;t even be possible.  In order to finish the new tree builder we&apos;ll need to fix/remove this hack.

&gt; &gt; +    ScriptableDocumentParser(Document* document, bool viewSourceMode = false);
&gt; 
&gt; The argument name &quot;document&quot; could be omitted here. This constructor should be protected. Can any of the other public members be protected?

Agreed!  I&apos;ll look for more members to make private/protected.  That was part of the point of all these changes, I&apos;m sad I overlooked a chance to do more API restriction here.  Thanks for the catch.

&gt; &gt; +    // Only used by Document::open for deciding if its safe to act on a
&gt; &gt; +    // javscript document.open() call right now, or it should be ignored.
&gt; &gt; +    virtual bool isExecutingScript() const { return false; }
&gt; 
&gt; I suggest spelling it &quot;JavaScript&quot;. Generally speaking I don&apos;t think functions should have comments listing who calls them. Is there some other way you can say this?

I agree, those comments have a high chance of bitrot.  They were an attempt to document the previously sprawling API of the DocumentParser.  The comments are intended to help someone else (like myself or you) understand the existing backwards interaction between the DocumntParser and the rest of WebCore in hopes of fixing it.

&gt; &gt; +};
&gt; &gt; +
&gt; 
&gt; There&apos;s an extra semicolon here after the namespace ends.

I can never remember which definitions have semicolons after them and which don&apos;t.  (Classes do, namespaces don&apos;t I guess).

&gt; &gt; +// FIXME: Why is this different from SVGDocumentExtentions parserLineNumber?
&gt; 
&gt; Spelling error: SVGDocumentExtensions.
&gt; 
&gt; &gt; +static int parserLineNumber(Document* document)
&gt; &gt;  {
&gt; &gt; -    DocumentParser* parser = document-&gt;parser();
&gt; &gt; +    if (document &amp;&amp; document-&gt;scriptableDocumentParser())
&gt; &gt; +        return document-&gt;scriptableDocumentParser()-&gt;lineNumber() + 1;
&gt; &gt; +    return 0;
&gt; &gt; +}
&gt; 
&gt; It&apos;s not good to call a function that does RTTI like scriptableDocumentParser twice in a row. Is there a better way to write this? Local variable and early return perhaps?

Woh, that&apos;s just wrong.  Will fix.

&gt; &gt; +// FIXME: TextDocumentParser could just be an HTMLDocumentParser
&gt; &gt; +// which started the Tokenizer in the PlainText state.
&gt; 
&gt; Really? Once you&apos;re in the PlainText state you can&apos;t get out?

Yup!  The plaintext state is amazing.  Throw a &lt;plaintext&gt; tag anywhere in your document and the rest will get eaten. :)  Try it in the next blog comment you write...

&gt; Seems OK. r=me despite the concerns above

Thanks.  Will post a new patch with corrections.  I&apos;m not super-proud of this patch.  It&apos;s an attempt to bring more sanity to teh parser system, but I may be over-engineering the problem.  Really I just don&apos;t understand enough of the parser/loader interactions yet to make the perfect parser API, so this is an attempt at an incremental step towards tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243425</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-26 19:13:49 -0700</bug_when>
    <thetext>http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#plaintext-state
Note how there is no way to leave the state.  Even a &lt;/plaintext&gt; tag would be emitted as character tokens from the tokenizer. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243427</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-26 19:25:37 -0700</bug_when>
    <thetext>One advantage to just setting the HTMLTokenizer in the PlainText state and using that for the TextDocumentParser is that then we&apos;d get all the \n\r handling for free, as well as any possible scripting needs.  It wouldn&apos;t automatically get yielding, since yielding is done per-token currently.  But we could add some yielding at the character level and then it would yield.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243428</commentid>
    <comment_count>12</comment_count>
      <attachid>59845</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-26 19:40:13 -0700</bug_when>
    <thetext>Created attachment 59845
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243431</commentid>
    <comment_count>13</comment_count>
      <attachid>59845</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-26 20:20:15 -0700</bug_when>
    <thetext>Comment on attachment 59845
Patch for landing

Rejecting patch 59845 from commit-queue.

Unexpected failure when processing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--build&apos;, &apos;--non-interactive&apos;, &apos;--ignore-builders&apos;, &apos;--build-style=both&apos;, &apos;--quiet&apos;, 59845, &apos;--test&apos;, &apos;--parent-command=commit-queue&apos;, &apos;--no-update&apos;]&quot; exit_code: 1
Last 500 characters of output:
date_status
    return NetworkTransaction().run(lambda: self._post_status_to_server(queue_name, status, patch, results_file))
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/common/net/networktransaction.py&quot;, line 56, in run
    self._check_for_timeout()
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/common/net/networktransaction.py&quot;, line 63, in _check_for_timeout
    raise NetworkTimeout()
webkitpy.common.net.networktransaction.NetworkTimeout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243474</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-27 09:55:14 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; I&apos;m not sure about the name &quot;scriptable document parser&quot;. What does &quot;scriptable&quot; mean here? I think it&apos;s a bug that scripts don&apos;t work in image documents, for example, so we probably should not be enshrining that bug in our design or class names. If that&apos;s what scriptable means.
&gt; 
&gt; Agreed.  I&apos;m not exactly sure how you would run a script in an image document however.  The user typing a javascript: url?

A JavaScript URL is one way, or someone could insert additional elements using JavaScript running in another frame with the same origin. Those elements could contain attributes with script in them. There may be other ways.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243565</commentid>
    <comment_count>15</comment_count>
      <attachid>59873</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-27 22:40:41 -0700</bug_when>
    <thetext>Created attachment 59873
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243568</commentid>
    <comment_count>16</comment_count>
      <attachid>59873</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-27 23:21:13 -0700</bug_when>
    <thetext>Comment on attachment 59873
Patch for landing

Rejecting patch 59873 from commit-queue.

Unexpected failure when processing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--build&apos;, &apos;--non-interactive&apos;, &apos;--ignore-builders&apos;, &apos;--build-style=both&apos;, &apos;--quiet&apos;, 59873, &apos;--test&apos;, &apos;--parent-command=commit-queue&apos;, &apos;--no-update&apos;]&quot; exit_code: 1
Last 500 characters of output:
date_status
    return NetworkTransaction().run(lambda: self._post_status_to_server(queue_name, status, patch, results_file))
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/common/net/networktransaction.py&quot;, line 56, in run
    self._check_for_timeout()
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/common/net/networktransaction.py&quot;, line 63, in _check_for_timeout
    raise NetworkTimeout()
webkitpy.common.net.networktransaction.NetworkTimeout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243587</commentid>
    <comment_count>17</comment_count>
      <attachid>59878</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-28 00:33:43 -0700</bug_when>
    <thetext>Created attachment 59878
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243595</commentid>
    <comment_count>18</comment_count>
      <attachid>59878</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-28 00:56:32 -0700</bug_when>
    <thetext>Comment on attachment 59878
Patch for landing

Clearing flags on attachment: 59878

Committed r61985: &lt;http://trac.webkit.org/changeset/61985&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243596</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-28 00:56:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243600</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-28 01:09:02 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/61985 might have broken Chromium Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243617</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-28 01:47:21 -0700</bug_when>
    <thetext>Committed r61987: &lt;http://trac.webkit.org/changeset/61987&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59626</attachid>
            <date>2010-06-24 02:52:26 -0700</date>
            <delta_ts>2010-06-24 03:25:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41141-20100624025225.patch</filename>
            <type>text/plain</type>
            <size>43902</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTU1ZGRiNzM3N2ZkNDhkNjI0NjY1OGMwN2Y0ZGU3ZDRiZWM4YThkOS4uMDM5ZTc5NjE0OGE0NTVk
NmVhYWNiMDA5YzNiOWVkYWZhNzg0MjExNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiw4OSBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIEFkZCBhIG5ldyBiYXNlY2xhc3MgZm9y
IFhNTCwgSFRNTCBhbmQgVGV4dCBEb2N1bWVudFBhcnNlcnMgdG8gY2xlYW4gdXAgRG9jdW1lbnRQ
YXJzZXIgY2FsbCBzaXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDExNDEKKworICAgICAgICBCeSBzcGxpdHRpbmcgU2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyIG91dCBmcm9tIERvY3VtZW50UGFyc2VyCisgICAgICAgIHdlJ3ZlIG1hZGUgdGhlIERv
Y3VtZW50UGFyc2VyIGFuZCBSYXdEYXRhRG9jdW1lbnRQYXJzZXIgY2xhc3NlcyBtdWNoCisgICAg
ICAgIHNpbXBsZXIsIGFuZCBtYWRlIGl0IGNsZWFyIGF0IGFsbCBvZiB0aGUgRG9jdW1lbnRQYXJz
ZXIgY2FsbHNpdGVzCisgICAgICAgIHdoYXQgYmVoYXZpb3IgdG8gZXhwZWN0IHdoZW4gY2FsbGlu
ZyBwcmV2aW91c2x5IHNoYXJlZCAoYnV0IG9mdGVuCisgICAgICAgIHVuaW1wbGVtZW50ZWQpIG1l
dGhvZHMgbGlrZSBsaW5lTnVtYmVyKCkgb3Igd3JpdGUoKSwgZXRjLgorCisgICAgICAgIEknbSBu
b3Qgc3VyZSB0aGlzIGRpdmlzaW9uIGlzIHBlcmZlY3QsIHNpbmNlIFRleHREb2N1bWVudCBpc24n
dAorICAgICAgICBleGFjdGx5ICJzY3JpcHRhYmxlIi4gIEJ1dCB0aGlzIGhhcyBkZWZpbml0ZWx5
IG1hZGUgaXQgZWFzaWVyIHRvCisgICAgICAgIHRlbGwgd2hhdCBhbGwgdGhlIHZhcmlvdXMgRG9j
dW1lbnRQYXJzZXIgY2FsbHNpdGVzIGFyZSBhY3R1YWxseSBkb2luZy4KKworICAgICAgICBJbiBv
cmRlciB0byBpbXBsZW1lbnQgdGhpcyBJIGhhZCBjcmVhdGUgbmV3IHN5bmNocm9ub3VzU2NyaXB0
V3JpdGUKKyAgICAgICAgYW5kIGFwcGVuZE5ldHdvcmtEYXRhIGNhbGxzLiAgVGhlc2Ugd2lsbCBl
dmVudHVhbGx5IHJlcGxhY2UgYWxsIGNhbGxzCisgICAgICAgIHRvIHdyaXRlKCkuICBUaGUgTGVn
YWN5SFRNTERvY3VtZW50UGFyc2VyIG5lZWRlZCBzcGVjaWFsIGNvZGUgaW4KKyAgICAgICAgRG9j
dW1lbnQgdG8gaGFuZGxlIHN5bmNocm9ub3VzU2NyaXB0V3JpdGUsIGJ1dCBub3cgdGhhdCB3ZSBo
YXZlIGEKKyAgICAgICAgc2VwYXJhdGUgbWV0aG9kIGZvciBpdCB0aGUgY29kZSBqdXN0IGdvZXMg
aW4gTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLgorCisgICAgICAgIE5vIGZ1bmN0aW9uYWwgY2hh
bmdlLCB0aHVzIG5vIHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVyTGluZU51bWJl
cik6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTaGVldDo6Y2hlY2tMb2FkZWQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjppbXBsaWNpdE9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxp
Y2l0Q2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndyaXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVQZW5kaW5nU2hlZXQpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhcnNlcik6CisgICAgICAg
ICogZG9tL0RvY3VtZW50UGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFBhcnNl
cjo6YXNTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRQYXJzZXI6OmFzUmF3RGF0YURvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50UGFyc2VyOjpEb2N1bWVudFBhcnNlcik6CisgICAgICAgICogZG9tL1Jhd0RhdGFEb2N1
bWVudFBhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmF3RGF0YURvY3VtZW50UGFyc2VyOjp3
cml0ZVJhd0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmF3RGF0YURvY3VtZW50UGFyc2VyOjph
c1Jhd0RhdGFEb2N1bWVudFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpSYXdEYXRhRG9jdW1l
bnRQYXJzZXI6OmZpbmlzaFdhc0NhbGxlZCk6CisgICAgICAgICogZG9tL1NjcmlwdGFibGVEb2N1
bWVudFBhcnNlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyOjpTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyOjpzeW5jaHJvbm91c1NjcmlwdFdyaXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdGFibGVEb2N1bWVudFBhcnNlcjo6YXBwZW5kTmV0d29ya0RhdGEp
OgorICAgICAgICAqIGRvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXI6OmluVmlld1NvdXJjZU1vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyOjpzZXRJblZpZXdT
b3VyY2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGFibGVEb2N1bWVudFBhcnNlcjo6
eHNzQXVkaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXI6
OnNldFhTU0F1ZGl0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0YWJsZURvY3VtZW50UGFy
c2VyOjphc1NjcmlwdGFibGVEb2N1bWVudFBhcnNlcik6CisgICAgICAgICogZG9tL1ZpZXdwb3J0
QXJndW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlckxpbmVOdW1iZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVwb3J0Vmlld3BvcnRXYXJuaW5nKToKKyAgICAgICAgKiBkb20vWE1M
RG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBh
cnNlcik6CisgICAgICAgICogaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpzaG91bGRMb2FkRXh0ZXJuYWxTY3JpcHRG
cm9tU3JjKToKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAq
IGh0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6TGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VUYWcpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpzeW5jaHJvbm91c1NjcmlwdFdy
aXRlKToKKyAgICAgICAgKiBodG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
V3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjphZGREYXRhKToK
KyAgICAgICAgKiBsb2FkZXIvVGV4dERvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHREb2N1bWVudFBhcnNlcjo6VGV4dERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKiBzdmcvU1ZH
RG9jdW1lbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlckxpbmVOdW1i
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlcG9ydFdhcm5pbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZXBvcnRFcnJvcik6CisKKzIwMTAtMDYtMjQgIEVy
aWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCiAgICAgICAgIEFkZCBSYXdEYXRhRG9jdW1lbnRQYXJzZXIgdG8gZ2V0IHJp
ZCBvZiBhIGJ1bmNoIG9mIGNvcHkvcGFzdGUgY29kZSBpbiBEb2N1bWVudFBhcnNlciBzdWJjbGFz
c2VzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTEz
NgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg5ZTVj
MTVmYWJkNTY0ZDMxZDQ5MjJmODQ2YTc1YzVkZTA3NjdkNDcuLmE3MzdjMjQzMTVhYTlhZjlhNzA3
ZGM5OTRhMzE1NjE4M2M2ZTdhZGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0yOTY3LDYgKzI5NjcsOCBAQAogCQlBODNCNzk1NzBDQ0IwMTI1MDAwQjA4
MjUgLyogRE9NU1ZHRm9udEZhY2VFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBODNCNzk0ODBDQ0IwMTI1MDAwQjA4MjUgLyogRE9NU1ZHRm9u
dEZhY2VFbGVtZW50LmggKi87IH07CiAJCUE4M0UxQzc0MEU0OTA0MkMwMDE0MEI5QyAvKiBTY3Jp
cHRDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTgzRTFDNzIwRTQ5MDQyQjAwMTQwQjlDIC8qIFNjcmlwdENvbnRyb2xsZXJNYWMu
bW0gKi87IH07CiAJCUE4NEQ4MjdDMTFEMzMzRUQwMDk3Mjk5MCAvKiBSYXdEYXRhRG9jdW1lbnRQ
YXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
NEQ4MjdCMTFEMzMzRUQwMDk3Mjk5MCAvKiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCAqLzsgfTsK
KwkJQTg0RDgyQzExMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg0RDgyQkYx
MUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oICovOyB9OworCQlB
ODREODJDMjExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NEQ4MkMwMTFE
MzQ3NDgwMDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwICovOyB9OwogCQlB
ODRFQkQ3ODBDQjhDODkyMDAwNzk2MDkgLyogSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODRFQkQ3NzBDQjhD
ODkyMDAwNzk2MDkgLyogSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAgKi87IH07CiAJCUE4NEVC
RDgzMENCOEM5NzcwMDA3OTYwOSAvKiBKU1N0eWxlU2hlZXRMaXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODRFQkQ4MTBDQjhDOTc3MDAwNzk2MDkg
LyogSlNTdHlsZVNoZWV0TGlzdC5oICovOyB9OwogCQlBODRFQkQ4NDBDQjhDOTc3MDAwNzk2MDkg
LyogSlNTdHlsZVNoZWV0TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBODRFQkQ4MjBDQjhDOTc3MDAwNzk2MDkgLyogSlNTdHlsZVNoZWV0TGlz
dC5jcHAgKi87IH07CkBAIC04NDQ3LDYgKzg0NDksOCBAQAogCQlBODNCNzk0ODBDQ0IwMTI1MDAw
QjA4MjUgLyogRE9NU1ZHRm9udEZhY2VFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTVNWR0ZvbnRGYWNlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBODNFMUM3MjBFNDkwNDJCMDAxNDBCOUMgLyogU2NyaXB0Q29udHJvbGxlck1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcmlwdENvbnRyb2xs
ZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4NEQ4MjdCMTFEMzMzRUQw
MDk3Mjk5MCAvKiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmF3RGF0YURvY3VtZW50UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE4NEQ4MkJGMTFEMzQ3NDgwMDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQ
YXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4NEQ4MkMwMTFEMzQ3
NDgwMDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg0RUJENzcwQ0I4Qzg5MjAwMDc5NjA5IC8qIEpT
U3R5bGVTaGVldExpc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4NEVCRDgxMENCOEM5NzcwMDA3OTYwOSAvKiBKU1N0eWxlU2hlZXRMaXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3R5bGVTaGVldExpc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg0RUJEODIwQ0I4Qzk3NzAwMDc5NjA5IC8qIEpTU3R5
bGVTaGVldExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNT
dHlsZVNoZWV0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjg3Miw2
ICsxNjg3Niw4IEBACiAJCQkJNUQxNUUzQTkwRjlFNkFDMTAwOUUwRTNGIC8qIFhNTERvY3VtZW50
UGFyc2VyU2NvcGUuY3BwICovLAogCQkJCTVEMTVFM0FBMEY5RTZBQzEwMDlFMEUzRiAvKiBYTUxE
b2N1bWVudFBhcnNlclNjb3BlLmggKi8sCiAJCQkJQTg1MzEyM0MxMUQwNDcxQjAwRDREMDc3IC8q
IEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oICovLAorCQkJCUE4NEQ4MkJGMTFEMzQ3NDgw
MDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCAqLywKKwkJCQlBODREODJDMDEx
RDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNwcCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gZG9tOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE5NTMwLDYg
KzE5NTM2LDcgQEAKIAkJCQlBODUzMTIzRDExRDA0NzFCMDBENEQwNzcgLyogRnJhZ21lbnRTY3Jp
cHRpbmdQZXJtaXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEU2QTc4MTExRDE2NjFCMDAz
MTFGNEEgLyogSFRNTFBhcnNlclNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg0RDgy
N0MxMUQzMzNFRDAwOTcyOTkwIC8qIFJhd0RhdGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTg0RDgyQzExMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBh
cnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMTg0OSw2ICsyMTg1Niw3IEBACiAJCQkJMUFEOEY4
MUMxMUNBQjlFOTAwRTkzRTU0IC8qIFBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCNTI1QTk2NjExQ0EyMzQwMDAzQTIzQTggLyogSlNTUUxFeGNlcHRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThFNkE3ODIxMUQxNjYxQjAwMzExRjRBIC8qIEhUTUxQYXJzZXJT
Y2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTg0RDgyQzIxMUQzNDc0ODAwOTcyOTkw
IC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDZmMDQ1N2EwMzdmMjE2YmNkNDlk
ZWQ0NDNmOTE5YzA3ODNlOGE2NGUuLjAyODhkNmJmNDAxZDU2ZDk0ZTdkMjc5NGZmMzhmOTE5MDE2
YTJkYzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjM4
LDExICsyMzgsMTIgQEAgSlNET01XaW5kb3dTaGVsbCogU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNj
cmlwdChET01XcmFwcGVyV29ybGQqIHdvcmxkKQogaW50IFNjcmlwdENvbnRyb2xsZXI6OmV2ZW50
SGFuZGxlckxpbmVOdW1iZXIoKSBjb25zdAogewogICAgIC8vIEpTQyBleHBlY3RzIDEtYmFzZWQg
bGluZSBudW1iZXJzLCBzbyB3ZSBtdXN0IGFkZCBvbmUgaGVyZSB0byBnZXQgaXQgcmlnaHQuCi0g
ICAgaWYgKERvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5wYXJz
ZXIoKSkKKyAgICBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fZnJhbWUtPmRv
Y3VtZW50KCktPnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpOworICAgIGlmIChwYXJzZXIpCiAg
ICAgICAgIHJldHVybiBwYXJzZXItPmxpbmVOdW1iZXIoKSArIDE7CiAgICAgcmV0dXJuIDA7CiB9
Ci0gICAgCisKIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKERP
TVdyYXBwZXJXb3JsZCogd29ybGQpIGNvbnN0CiB7CiAgICAgaWYgKG1fYWxsb3dQb3B1cHNGcm9t
UGx1Z2luIHx8IGlzSmF2YVNjcmlwdEFuY2hvck5hdmlnYXRpb24oKSkKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5j
cHAKaW5kZXggNDBiYjBkZWNjMTE0OGFlMWM2YzYzNTA3NGFlNjMxMmMyYWNkOWM3MC4uMjI3ZDM3
Y2JiNjgzNDA4MDlkYjNmM2ViYmFiYjAwNTY3ZTEwZTg4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAK
QEAgLTIwNyw3ICsyMDcsOCBAQCB2b2lkIENTU1N0eWxlU2hlZXQ6OmNoZWNrTG9hZGVkKCkKICAg
ICBpZiAocGFyZW50KCkpCiAgICAgICAgIHBhcmVudCgpLT5jaGVja0xvYWRlZCgpOwogCi0gICAg
Ly8gQXZvaWQgfHRoaXN8IGJlaW5nIGRlbGV0ZWQgYnkgc2NyaXB0cyB0aGF0IHJ1biB2aWEgTGVn
YWN5SFRNTERvY3VtZW50UGFyc2VyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0
cygpLgorICAgIC8vIEF2b2lkIHx0aGlzfCBiZWluZyBkZWxldGVkIGJ5IHNjcmlwdHMgdGhhdCBy
dW4gdmlhCisgICAgLy8gU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyOjpleGVjdXRlU2NyaXB0c1dh
aXRpbmdGb3JTdHlsZXNoZWV0cygpLgogICAgIC8vIFNlZSA8cmRhcjovL3Byb2JsZW0vNjYyMjMw
MD4uCiAgICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHByb3RlY3Rvcih0aGlzKTsKICAgICBtX2xv
YWRDb21wbGV0ZWQgPSBvd25lck5vZGUoKSA/IG93bmVyTm9kZSgpLT5zaGVldExvYWRlZCgpIDog
dHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAppbmRleCAzN2IzNTM4YTI1ZmU0NjYzZDFhZTk2YzVkN2UzNWJkNzBlNDBl
NTI5Li5iZTg4NzhkOWU0YjNjMTA2NGI1ZTQzZDE2ZjU5MGJmMDQ0ZjI0NTcxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC0xNzA1LDYgKzE3MDUsMTEgQEAgRG9jdW1lbnRQYXJzZXIqIERvY3VtZW50OjpjcmVhdGVQ
YXJzZXIoKQogICAgIHJldHVybiBuZXcgWE1MRG9jdW1lbnRQYXJzZXIodGhpcywgdmlldygpKTsK
IH0KIAorU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBEb2N1bWVudDo6c2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGFyc2VyKCkgPyBwYXJzZXIoKS0+YXNT
Y3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKSA6IDA7Cit9CisKIHZvaWQgRG9jdW1lbnQ6Om9wZW4o
RG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpCiB7CiAgICAgaWYgKG93bmVyRG9jdW1lbnQpIHsKQEAg
LTE3MTQsOSArMTcxOSwxMCBAQCB2b2lkIERvY3VtZW50OjpvcGVuKERvY3VtZW50KiBvd25lckRv
Y3VtZW50KQogICAgIH0KIAogICAgIGlmIChtX2ZyYW1lKSB7Ci0gICAgICAgIGlmIChtX2ZyYW1l
LT5sb2FkZXIoKS0+aXNMb2FkaW5nTWFpblJlc291cmNlKCkgfHwgKHBhcnNlcigpICYmIHBhcnNl
cigpLT5pc0V4ZWN1dGluZ1NjcmlwdCgpKSkKKyAgICAgICAgaWYgKG1fZnJhbWUtPmxvYWRlcigp
LT5pc0xvYWRpbmdNYWluUmVzb3VyY2UoKQorICAgICAgICAgICAgfHwgKHNjcmlwdGFibGVEb2N1
bWVudFBhcnNlcigpICYmIHNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpLT5pc0V4ZWN1dGluZ1Nj
cmlwdCgpKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgICAgICBpZiAobV9mcmFt
ZS0+bG9hZGVyKCktPnN0YXRlKCkgPT0gRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKQogICAgICAgICAg
ICAgbV9mcmFtZS0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJzKCk7CiAgICAgfQpAQCAtMTc1Myw4
ICsxNzU5LDggQEAgdm9pZCBEb2N1bWVudDo6aW1wbGljaXRPcGVuKCkKICAgICBtX3BhcnNlciA9
IGNyZWF0ZVBhcnNlcigpOwogICAgIHNldFBhcnNpbmcodHJ1ZSk7CiAKLSAgICBpZiAobV9mcmFt
ZSkKLSAgICAgICAgbV9wYXJzZXItPnNldFhTU0F1ZGl0b3IobV9mcmFtZS0+c2NyaXB0KCktPnhz
c0F1ZGl0b3IoKSk7CisgICAgaWYgKG1fZnJhbWUgJiYgc2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
KCkpCisgICAgICAgIHNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpLT5zZXRYU1NBdWRpdG9yKG1f
ZnJhbWUtPnNjcmlwdCgpLT54c3NBdWRpdG9yKCkpOwogCiAgICAgLy8gSWYgd2UgcmVsb2FkLCB0
aGUgYW5pbWF0aW9uIGNvbnRyb2xsZXIgc3RpY2tzIGFyb3VuZCBhbmQgaGFzCiAgICAgLy8gYSBz
dGFsZSBhbmltYXRpb24gdGltZS4gV2UgbmVlZCB0byB1cGRhdGUgaXQgaGVyZS4KQEAgLTE4Mzks
NyArMTg0NSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UoKQogCiAgICAgbV9wcm9j
ZXNzaW5nTG9hZEV2ZW50ID0gdHJ1ZTsKIAotICAgIG1fd2VsbEZvcm1lZCA9IG1fcGFyc2VyICYm
IG1fcGFyc2VyLT53ZWxsRm9ybWVkKCk7CisgICAgbV93ZWxsRm9ybWVkID0gc2NyaXB0YWJsZURv
Y3VtZW50UGFyc2VyKCkgJiYgc2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCktPndlbGxGb3JtZWQo
KTsKIAogICAgIC8vIFdlIGhhdmUgdG8gY2xlYXIgdGhlIHBhcnNlciwgaW4gY2FzZSBzb21lb25l
IGRvY3VtZW50LndyaXRlKClzIGZyb20gdGhlCiAgICAgLy8gb25Mb2FkIGV2ZW50IGhhbmRsZXIs
IGFzIGluIFJhZGFyIDMyMDY1MjQuCkBAIC0xOTk1LDIxICsyMDAxLDEwIEBAIHZvaWQgRG9jdW1l
bnQ6OndyaXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgdGV4dCwgRG9jdW1lbnQqIG93bmVyRG9j
dW1lbnQpCiAgICAgICAgIG9wZW4ob3duZXJEb2N1bWVudCk7CiAKICAgICBBU1NFUlQobV9wYXJz
ZXIpOwotICAgIC8vIEZJWE1FOiBmb3JjZVN5bmNocm9ub3VzIHNob3VsZCBhbHdheXMgYmUgdGhl
IHNhbWUgYXMgdGhlIGJvb2wgcGFzc2VkIHRvCi0gICAgLy8gd3JpdGUoKS4gIEhvd2V2ZXIgTGVn
YWN5SFRNTERvY3VtZW50UGFyc2VyIHVzZXMgd3JpdGUoIiIsIGZhbHNlKSB0byBwdW1wCi0gICAg
Ly8gdGhlIHBhcnNlciAoYWZ0ZXIgcnVubmluZyBleHRlcm5hbCBzY3JpcHRzLCBldGMuKSB0aHVz
IG5lY2Vzc2l0YXRpbmcgYQotICAgIC8vIHNlcGFyYXRlIHN0YXRlIGZvciBmb3JjZVN5bmNocm9u
b3VzLgotICAgIGJvb2wgd2FzRm9yY2VkU3luY2hyb25vdXMgPSBmYWxzZTsKLSAgICBMZWdhY3lI
VE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fcGFyc2VyLT5hc0hUTUxEb2N1bWVudFBhcnNl
cigpOwotICAgIGlmIChwYXJzZXIpIHsKLSAgICAgICAgd2FzRm9yY2VkU3luY2hyb25vdXMgPSBw
YXJzZXItPmZvcmNlU3luY2hyb25vdXMoKTsKLSAgICAgICAgcGFyc2VyLT5zZXRGb3JjZVN5bmNo
cm9ub3VzKHRydWUpOwotICAgIH0KLQotICAgIG1fcGFyc2VyLT53cml0ZSh0ZXh0LCBmYWxzZSk7
Ci0KLSAgICBpZiAobV9wYXJzZXIgJiYgcGFyc2VyICYmIG1fcGFyc2VyLT5hc0hUTUxEb2N1bWVu
dFBhcnNlcigpID09IHBhcnNlcikKLSAgICAgICAgcGFyc2VyLT5zZXRGb3JjZVN5bmNocm9ub3Vz
KHdhc0ZvcmNlZFN5bmNocm9ub3VzKTsKKyAgICAvLyBGSVhNRTogSlMgY29kZSBjYW4gYWx3YXlz
IGNhbGwgZG9jdW1lbnQud3JpdGUsIGFsbCBEb2N1bWVudFBhcnNlcnMgbWF5CisgICAgLy8gbmVl
ZCB0byBoYW5kbGUgaXQuICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1Mzk3PgorICAgIGlmIChzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKSkKKyAgICAgICAgc2Ny
aXB0YWJsZURvY3VtZW50UGFyc2VyKCktPnN5bmNocm9ub3VzU2NyaXB0V3JpdGUodGV4dCk7CiAK
ICNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCiAgICAgaWYgKCFvd25lckVsZW1l
bnQoKSkKQEAgLTI2MDUsOSArMjYwMCw5IEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZVBlbmRpbmdT
aGVldCgpCiAjZW5kaWYKIAogICAgIHVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsKLSAgICAKLSAgICBp
ZiAoIW1fcGVuZGluZ1N0eWxlc2hlZXRzICYmIG1fcGFyc2VyKQotICAgICAgICBtX3BhcnNlci0+
ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKKworICAgIGlmICghbV9wZW5k
aW5nU3R5bGVzaGVldHMgJiYgc2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkpCisgICAgICAgIHNj
cmlwdGFibGVEb2N1bWVudFBhcnNlcigpLT5leGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNo
ZWV0cygpOwogCiAgICAgaWYgKCFtX3BlbmRpbmdTdHlsZXNoZWV0cyAmJiBtX2dvdG9BbmNob3JO
ZWVkZWRBZnRlclN0eWxlc2hlZXRzTG9hZCAmJiB2aWV3KCkpCiAgICAgICAgIHZpZXcoKS0+c2Ny
b2xsVG9GcmFnbWVudChtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMzE3ZmJi
NzY3ZjhjZWQ2NzRkZDRlMjE3NDI5ZDQ4YjA5MzczYWU0Yy4uMDE0OTNjY2I0MThmZjhlNjM3MDVi
MWJjZWUzYzQxZWJjMTRjN2QwYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMDAsNiArMTAwLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyOwogICAgIGNsYXNz
IFJlbmRlckFyZW5hOwogICAgIGNsYXNzIFJlbmRlclZpZXc7CisgICAgY2xhc3MgU2NyaXB0YWJs
ZURvY3VtZW50UGFyc2VyOwogICAgIGNsYXNzIFNjcmlwdEVsZW1lbnREYXRhOwogICAgIGNsYXNz
IFNlY3VyaXR5T3JpZ2luOwogICAgIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKQEAgLTU0
MSw3ICs1NDIsOCBAQCBwdWJsaWM6CiAgICAgQ1NTU3R5bGVTaGVldCogbWFwcGVkRWxlbWVudFNo
ZWV0KCk7CiAgICAgCiAgICAgdmlydHVhbCBEb2N1bWVudFBhcnNlciogY3JlYXRlUGFyc2VyKCk7
Ci0gICAgRG9jdW1lbnRQYXJzZXIqIHBhcnNlcigpIHsgcmV0dXJuIG1fcGFyc2VyLmdldCgpOyB9
CisgICAgRG9jdW1lbnRQYXJzZXIqIHBhcnNlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyLmdl
dCgpOyB9CisgICAgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBzY3JpcHRhYmxlRG9jdW1lbnRQ
YXJzZXIoKSBjb25zdDsKICAgICAKICAgICBib29sIHByaW50aW5nKCkgY29uc3QgeyByZXR1cm4g
bV9wcmludGluZzsgfQogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwKSB7IG1fcHJpbnRpbmcg
PSBwOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oIGIvV2ViQ29y
ZS9kb20vRG9jdW1lbnRQYXJzZXIuaAppbmRleCA4ODExMzZjMzBlZDcxZmRhYmUzZDFhNDkyZWI5
ZjRlYjJiYWZmZmVmLi4zMDYyODg2Y2RkYmMzMDAxY2IzNDc2ZjA2ZGFkNWNmOGQ1ODc5NTg2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oCisrKyBiL1dlYkNvcmUvZG9t
L0RvY3VtZW50UGFyc2VyLmgKQEAgLTI1LDI4ICsyNSwyNCBAQAogI2RlZmluZSBEb2N1bWVudFBh
cnNlcl9oCiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogY2xh
c3MgTGVnYWN5SFRNTFRyZWVCdWlsZGVyOwotY2xhc3MgTGVnYWN5SFRNTERvY3VtZW50UGFyc2Vy
OwotY2xhc3MgU2VnbWVudGVkU3RyaW5nOwotY2xhc3MgWFNTQXVkaXRvcjsKK2NsYXNzIFNjcmlw
dGFibGVEb2N1bWVudFBhcnNlcjsKK2NsYXNzIFJhd0RhdGFEb2N1bWVudFBhcnNlcjsKIAogY2xh
c3MgRG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIHZp
cnR1YWwgfkRvY3VtZW50UGFyc2VyKCkgeyB9CiAKLSAgICAvLyBTY3JpcHQgb3V0cHV0IG11c3Qg
YmUgcHJlcGVuZGVkLCB3aGlsZSBuZXcgZGF0YQotICAgIC8vIHJlY2VpdmVkIGR1cmluZyBleGVj
dXRpbmcgYSBzY3JpcHQgbXVzdCBiZSBhcHBlbmRlZCwgaGVuY2UgdGhlCi0gICAgLy8gZXh0cmEg
Ym9vbCB0byBiZSBhYmxlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gYm90aCBjYXNlcy4KLSAgICAv
LyBkb2N1bWVudC53cml0ZSgpIGFsd2F5cyB1c2VzIGZhbHNlLCB3aGlsZSB0aGUgbG9hZGVyIHVz
ZXMgdHJ1ZS4KLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiwg
Ym9vbCBpc0Zyb21OZXR3b3JrKSA9IDA7CisgICAgdmlydHVhbCBTY3JpcHRhYmxlRG9jdW1lbnRQ
YXJzZXIqIGFzU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgeyByZXR1cm4gMDsgfQorICAgIHZp
cnR1YWwgUmF3RGF0YURvY3VtZW50UGFyc2VyKiBhc1Jhd0RhdGFEb2N1bWVudFBhcnNlcigpIHsg
cmV0dXJuIDA7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2goKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIGZpbmlzaFdhc0NhbGxlZCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNXYWl0aW5n
Rm9yU2NyaXB0cygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFeGVjdXRpbmdTY3Jp
cHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHN0b3BQYXJz
aW5nKCkgeyBtX3BhcnNlclN0b3BwZWQgPSB0cnVlOyB9CiAgICAgLy8gRklYTUU6IHByb2Nlc3Np
bmdEYXRhKCkgaXMgb25seSB1c2VkIGJ5IERvY3VtZW50TG9hZGVyOjppc0xvYWRpbmdJbkFQSVNl
bnNlCkBAIC01NCwzOSArNTAsMTUgQEAgcHVibGljOgogICAgIC8vIGFjdHVhbGx5IGltcGxlbWVu
dHMgaXQuCiAgICAgdmlydHVhbCBib29sIHByb2Nlc3NpbmdEYXRhKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgYm9vbCB3YW50c1Jhd0RhdGEoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCB3cml0ZVJhd0RhdGEoY29uc3QgY2hhciogLypk
YXRhKi8sIGludCAvKmxlbmd0aCovKQotICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgd2Vs
bEZvcm1lZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQotICAgIHZpcnR1YWwgaW50IGxpbmVO
dW1iZXIoKSBjb25zdCB7IHJldHVybiAtMTsgfQotICAgIHZpcnR1YWwgaW50IGNvbHVtbk51bWJl
cigpIGNvbnN0IHsgcmV0dXJuIC0xOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNjcmlw
dHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKSB7fQotCisgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBo
YWNrIGZvciBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZW1vdmVkRnJvbVRyZWUKICAgICB2aXJ0
dWFsIExlZ2FjeUhUTUxUcmVlQnVpbGRlciogaHRtbFRyZWVCdWlsZGVyKCkgY29uc3QgeyByZXR1
cm4gMDsgfQotICAgIHZpcnR1YWwgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKiBhc0hUTUxEb2N1
bWVudFBhcnNlcigpIHsgcmV0dXJuIDA7IH0KLQotICAgIC8vIEZJWE1FOiB2aWV3IHNvdXJjZSBt
b2RlIGlzIG9ubHkgdXNlZCBieSB0aGUgSFRNTCBhbmQgVGV4dAotICAgIC8vIERvY3VtZW50UGFy
c2VycyBhbmQgbWF5IG5vdCBiZWxvbmcgb24gdGhlIGJhc2UtY2xhc3MuCi0gICAgYm9vbCBpblZp
ZXdTb3VyY2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pblZpZXdTb3VyY2VNb2RlOyB9Ci0gICAg
dm9pZCBzZXRJblZpZXdTb3VyY2VNb2RlKGJvb2wgbW9kZSkgeyBtX2luVmlld1NvdXJjZU1vZGUg
PSBtb2RlOyB9CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Rv
Y3VtZW50OyB9CiAKLSAgICBYU1NBdWRpdG9yKiB4c3NBdWRpdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9YU1NBdWRpdG9yOyB9Ci0gICAgdm9pZCBzZXRYU1NBdWRpdG9yKFhTU0F1ZGl0b3IqIGF1ZGl0
b3IpIHsgbV9YU1NBdWRpdG9yID0gYXVkaXRvcjsgfQotCiBwcm90ZWN0ZWQ6Ci0gICAgRG9jdW1l
bnRQYXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHZpZXdTb3VyY2VNb2RlID0gZmFsc2Up
CisgICAgRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICA6IG1fcGFy
c2VyU3RvcHBlZChmYWxzZSkKLSAgICAgICAgLCBtX2luVmlld1NvdXJjZU1vZGUodmlld1NvdXJj
ZU1vZGUpCiAgICAgICAgICwgbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAgICAgLCBtX1hTU0F1
ZGl0b3IoMCkKICAgICB7CiAgICAgICAgIEFTU0VSVChkb2N1bWVudCk7CiAgICAgfQpAQCAtOTUs
MTIgKzY3LDkgQEAgcHJvdGVjdGVkOgogICAgIC8vIGl0IHN0b3BzIHJlY2VpdmluZyBkYXRhLiBX
ZSB1c2UgbV9wYXJzZXJTdG9wcGVkIHRvIHN0b3AgdGhlIHBhcnNlcgogICAgIC8vIGV2ZW4gd2hl
biBpdCBoYXMgYnVmZmVyZWQgZGF0YS4KICAgICBib29sIG1fcGFyc2VyU3RvcHBlZDsKLSAgICBi
b29sIG1faW5WaWV3U291cmNlTW9kZTsKIAogICAgIC8vIEV2ZXJ5IERvY3VtZW50UGFyc2VyIG5l
ZWRzIGEgcG9pbnRlciBiYWNrIHRvIHRoZSBkb2N1bWVudC4KICAgICBEb2N1bWVudCogbV9kb2N1
bWVudDsKLSAgICAvLyBUaGUgWFNTQXVkaXRvciBhc3NvY2lhdGVkIHdpdGggdGhpcyBkb2N1bWVu
dCBwYXJzZXIuCi0gICAgWFNTQXVkaXRvciogbV9YU1NBdWRpdG9yOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50UGFy
c2VyLmggYi9XZWJDb3JlL2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaAppbmRleCA3N2QxNDhk
ZjlkMDE2OTkzM2I3NzhkYzU2NDVhNzBhY2Q3OTZjZDdlLi5jZTEyZTBmMDQ5NzZlNGZiZTBkZDYy
YzFmZmU4NmZlZDlhMTQ1MzljIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9SYXdEYXRhRG9jdW1l
bnRQYXJzZXIuaAorKysgYi9XZWJDb3JlL2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaApAQCAt
MzAsMTIgKzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBGSVhNRTogSXQgc2Vl
bXMgd3JvbmcgdGhhdCBSYXdEYXRhRG9jdW1lbnRQYXJzZXIgaXMgYSBzdWJjbGFzcyBvZgotLy8g
RG9jdW1lbnRQYXJzZXIuICBSYXdEYXRhRG9jdW1lbnRQYXJzZXIsIGp1c3Qgd2FudHMgdG8gb3Zl
cnJpZGUgYW4gZWFybGllcgotLy8gdmVyc2lvbiBvZiB3cml0ZSgpIGJlZm9yZSB0aGUgZGF0YSBp
cyBkZWNvZGVkLiAgU2VlbXMgdGhlIGRlY29kaW5nIGNvdWxkCi0vLyBtb3ZlIGludG8gdGhlIGJh
c2UtY2xhc3MgRG9jdW1lbnRQYXJzZXIsIGFuZCB0aGVuIFJhd0RhdGFEb2N1bWVudFBhcnNlcgot
Ly8gd291bGQganVzdCBiZSBzaG9ydC1jaXJjdXRpbmcuICBUaGF0IGNvdWxkIHNpbXBsaWZ5IHNv
bWUgb2YgdGhlCi0vLyBEb2N1bWVudFdyaXRlciBsb2dpYy4KIGNsYXNzIFJhd0RhdGFEb2N1bWVu
dFBhcnNlciA6IHB1YmxpYyBEb2N1bWVudFBhcnNlciB7CiBwdWJsaWM6CiAgICAgUmF3RGF0YURv
Y3VtZW50UGFyc2VyKERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTQzLDYgKzM3LDggQEAgcHVibGlj
OgogICAgIHsKICAgICB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgd3JpdGVSYXdEYXRhKGNvbnN0IGNo
YXIqLCBpbnQpIHsgcmV0dXJuIGZhbHNlOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoKCkKICAgICB7CkBAIC01MSwxMSArNDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQog
CiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCB3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcm
LCBib29sKQotICAgIHsKLSAgICAgICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNTM5Nz46IEpTIGNvZGUgY2FuIGFsd2F5cyBjYWxsIGRvY3VtZW50LndyaXRl
LCB3ZSBuZWVkIHRvIGhhbmRsZSBpdC4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgfQorICAgIHZpcnR1YWwgUmF3RGF0YURvY3VtZW50UGFyc2VyKiBhc1Jhd0RhdGFEb2N1bWVu
dFBhcnNlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBmaW5pc2hXYXND
YWxsZWQoKQogICAgIHsKQEAgLTYzLDExICs1NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGRl
bGV0ZWQgYWZ0ZXIgZmluaXNoKCkuCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgd2FudHNSYXdEYXRhKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCB3cml0ZVJhd0RhdGEoY29uc3QgY2hhciosIGludCkgeyBy
ZXR1cm4gZmFsc2U7IH0KIH07CiAKIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFy
c2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hM2RhOTRmMGQ3MzJlNDRjMTJlYTg3ZTgwZDg3MGRkNDIyNjUz
ZWI5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFy
c2VyLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2NyaXB0YWJs
ZURvY3VtZW50UGFyc2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2NyaXB0YWJsZURv
Y3VtZW50UGFyc2VyOjpTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50
LCBib29sIHZpZXdTb3VyY2VNb2RlKQorICAgIDogRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCisg
ICAgLCBtX2luVmlld1NvdXJjZU1vZGUodmlld1NvdXJjZU1vZGUpCisgICAgLCBtX3hzc0F1ZGl0
b3IoMCkKK3sKK30KKwordm9pZCBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXI6OnN5bmNocm9ub3Vz
U2NyaXB0V3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCit7CisgICAgd3JpdGUo
c291cmNlLCBmYWxzZSk7Cit9CisKK3ZvaWQgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyOjphcHBl
bmROZXR3b3JrRGF0YShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKK3sKKyAgICB3cml0
ZShzb3VyY2UsIHRydWUpOworfQorCit9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyLmggYi9XZWJDb3JlL2RvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZmIxZmQyODUzM2U4MGEyMmNjNzg1MjliZDIxN2JlMjI1OGM0YmJl
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
LmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKyAKKyNpZm5kZWYgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyX2gKKyNkZWZpbmUg
U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyX2gKKworI2luY2x1ZGUgIkRvY3VtZW50UGFyc2VyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2VnbWVudGVkU3RyaW5nOworY2xhc3Mg
WFNTQXVkaXRvcjsKKworY2xhc3MgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyIDogcHVibGljIERv
Y3VtZW50UGFyc2VyIHsKK3B1YmxpYzoKKyAgICBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoRG9j
dW1lbnQqIGRvY3VtZW50LCBib29sIHZpZXdTb3VyY2VNb2RlID0gZmFsc2UpOworCisgICAgLy8g
U2NyaXB0IG91dHB1dCBtdXN0IGJlIHByZXBlbmRlZCwgd2hpbGUgbmV3IGRhdGEKKyAgICAvLyBy
ZWNlaXZlZCBkdXJpbmcgZXhlY3V0aW5nIGEgc2NyaXB0IG11c3QgYmUgYXBwZW5kZWQsIGhlbmNl
IHRoZQorICAgIC8vIGV4dHJhIGJvb2wgdG8gYmUgYWJsZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVu
IGJvdGggY2FzZXMuCisgICAgLy8gZG9jdW1lbnQud3JpdGUoKSBhbHdheXMgdXNlcyBmYWxzZSwg
d2hpbGUgdGhlIGxvYWRlciB1c2VzIHRydWUuCisgICAgLy8gTk9URTogTmV3IGNvZGUgc2hvdWxk
IG5vdCBiZSBjYWxsaW5nIHN5bmNocm9ub3VzU2NyaXB0V3JpdGUKKyAgICAvLyBvciBhcHBlbmRO
ZXR3b3JrRGF0YSBpbnN0ZWFkIG9mIGNhbGxpbmcgd3JpdGUoKSBkaXJlY3RseS4KKyAgICB2aXJ0
dWFsIHZvaWQgd3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiwgYm9vbCBpc0Zyb21OZXR3b3Jr
KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25vdXNTY3JpcHRXcml0ZShjb25zdCBT
ZWdtZW50ZWRTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kTmV0d29ya0RhdGEoY29u
c3QgU2VnbWVudGVkU3RyaW5nJik7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNXYWl0aW5nRm9yU2Ny
aXB0cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFeGVjdXRpbmdTY3JpcHQoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHdlbGxGb3JtZWQoKSBjb25zdCA9IDA7CisKKyAg
ICB2aXJ0dWFsIGludCBsaW5lTnVtYmVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IGNv
bHVtbk51bWJlcigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU2NyaXB0
c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpID0gMDsKKworICAgIC8vIEZJWE1FOiB2aWV3IHNvdXJj
ZSBtb2RlIGlzIG9ubHkgdXNlZCBieSB0aGUgSFRNTCBhbmQgVGV4dAorICAgIC8vIERvY3VtZW50
UGFyc2VycyBhbmQgbWF5IG5vdCBiZWxvbmcgb24gdGhlIGJhc2UtY2xhc3MuCisgICAgYm9vbCBp
blZpZXdTb3VyY2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pblZpZXdTb3VyY2VNb2RlOyB9Cisg
ICAgdm9pZCBzZXRJblZpZXdTb3VyY2VNb2RlKGJvb2wgbW9kZSkgeyBtX2luVmlld1NvdXJjZU1v
ZGUgPSBtb2RlOyB9CisKKyAgICBYU1NBdWRpdG9yKiB4c3NBdWRpdG9yKCkgY29uc3QgeyByZXR1
cm4gbV94c3NBdWRpdG9yOyB9CisgICAgdm9pZCBzZXRYU1NBdWRpdG9yKFhTU0F1ZGl0b3IqIGF1
ZGl0b3IpIHsgbV94c3NBdWRpdG9yID0gYXVkaXRvcjsgfQorCitwcml2YXRlOgorICAgIHZpcnR1
YWwgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBhc1NjcmlwdGFibGVEb2N1bWVudFBhcnNlcigp
IHsgcmV0dXJuIHRoaXM7IH0KKworICAgIGJvb2wgbV9pblZpZXdTb3VyY2VNb2RlOworCisgICAg
Ly8gVGhlIFhTU0F1ZGl0b3IgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZG9jdW1lbnQgcGFyc2VyLgor
ICAgIFhTU0F1ZGl0b3IqIG1feHNzQXVkaXRvcjsKK307CisKK307CisKKyNlbmRpZiAvLyBTY3Jp
cHRhYmxlRG9jdW1lbnRQYXJzZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vVmlld3BvcnRB
cmd1bWVudHMuY3BwIGIvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCmluZGV4IDIz
ZDAyOTdkOTg3Nzk0MDExNmY4Y2E2NWUzOGY1ZmNkMjU5ODc5MWQuLmE0ZDhmYzJiODgzODA4ZmFh
YWE3YWNkY2Q5YjcwMjA1YjY1NjA1YmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1ZpZXdwb3J0
QXJndW1lbnRzLmNwcAorKysgYi9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKQEAg
LTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIkRvY3VtZW50UGFyc2VyLmgiCisj
aW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMTAzLDEwICsxMDMsMTYgQEAgc3RhdGljIE1lc3NhZ2VMZXZlbCB2aWV3cG9ydEVy
cm9yTWVzc2FnZUxldmVsKFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSkKICAgICByZXR1cm4g
ZXJyb3JDb2RlID09IFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRFcnJvciB8fCBlcnJvckNv
ZGUgPT0gTWF4aW11bVNjYWxlVG9vTGFyZ2VFcnJvciA/IEVycm9yTWVzc2FnZUxldmVsIDogVGlw
TWVzc2FnZUxldmVsOwogfQogCi12b2lkIHJlcG9ydFZpZXdwb3J0V2FybmluZyhEb2N1bWVudCog
ZG9jdW1lbnQsIFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudCkKKy8vIEZJWE1FOiBXaHkgaXMgdGhpcyBkaWZmZXJlbnQgZnJvbSBTVkdEb2N1bWVu
dEV4dGVudGlvbnMgcGFyc2VyTGluZU51bWJlcj8KK3N0YXRpYyBpbnQgcGFyc2VyTGluZU51bWJl
cihEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IGRv
Y3VtZW50LT5wYXJzZXIoKTsKKyAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnNjcmlwdGFi
bGVEb2N1bWVudFBhcnNlcigpKQorICAgICAgICByZXR1cm4gZG9jdW1lbnQtPnNjcmlwdGFibGVE
b2N1bWVudFBhcnNlcigpLT5saW5lTnVtYmVyKCkgKyAxOworICAgIHJldHVybiAwOworfQogCit2
b2lkIHJlcG9ydFZpZXdwb3J0V2FybmluZyhEb2N1bWVudCogZG9jdW1lbnQsIFZpZXdwb3J0RXJy
b3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCkKK3sKICAgICBGcmFt
ZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBy
ZXR1cm47CkBAIC0xMTQsNyArMTIwLDcgQEAgdm9pZCByZXBvcnRWaWV3cG9ydFdhcm5pbmcoRG9j
dW1lbnQqIGRvY3VtZW50LCBWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnMKICAgICBT
dHJpbmcgbWVzc2FnZSA9IHZpZXdwb3J0RXJyb3JNZXNzYWdlVGVtcGxhdGUoZXJyb3JDb2RlKTsK
ICAgICBtZXNzYWdlLnJlcGxhY2UoIiVyZXBsYWNlbWVudCIsIHJlcGxhY2VtZW50KTsKIAotICAg
IGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEhUTUxNZXNzYWdlU291
cmNlLCBMb2dNZXNzYWdlVHlwZSwgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChlcnJvckNvZGUp
LCBtZXNzYWdlLCBwYXJzZXIgPyBwYXJzZXItPmxpbmVOdW1iZXIoKSArIDEgOiAwLCBkb2N1bWVu
dC0+dXJsKCkuc3RyaW5nKCkpOworICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5h
ZGRNZXNzYWdlKEhUTUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgdmlld3BvcnRFcnJv
ck1lc3NhZ2VMZXZlbChlcnJvckNvZGUpLCBtZXNzYWdlLCBwYXJzZXJMaW5lTnVtYmVyKGRvY3Vt
ZW50KSwgZG9jdW1lbnQtPnVybCgpLnN0cmluZygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNv
cmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmgKaW5kZXggYTU1MDNmM2YzYmI2MmEzYmZlMzU1YjU3
MmYxNmFkNTcxYmRjMjU0MC4uOTYyYTAyNGM3YzljYjI4NzNlMGI3MGFlNGZiYmRhYzZmMzQ3ZWUy
NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9XZWJD
b3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5oCkBAIC0yNywxMCArMjcsMTAgQEAKIAogI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5k
bGUuaCIKKyNpbmNsdWRlICJGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKKyNpbmNsdWRl
ICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcu
aCIKICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRQYXJzZXIuaCIK
LSNpbmNsdWRlICJGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAtNzAsNyArNzAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKICNlbmRpZgogCi0gICAgY2xhc3MgWE1MRG9jdW1l
bnRQYXJzZXIgOiBwdWJsaWMgRG9jdW1lbnRQYXJzZXIsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNs
aWVudCB7CisgICAgY2xhc3MgWE1MRG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgU2NyaXB0YWJsZURv
Y3VtZW50UGFyc2VyLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogICAgIHB1YmxpYzoK
ICAgICAgICAgWE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqLCBGcmFtZVZpZXcqID0gMCk7CiAg
ICAgICAgIFhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqLCBFbGVtZW50KiwgRnJh
Z21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1hNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwCmluZGV4IDMzYjBhMDk3ODNkODIyYWZkNzNjYTRmMTBhMzQ1MjVkOGU2ZWE2Mzku
LjY3NGY2OWYwNzkzYjU3N2YxNWZmZDg1OTRiMmQ5NjRlNzM5MWYxZmMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvV2ViQ29yZS9kb20v
WE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNTIzLDcgKzUyMyw3IEBAIFBhc3NSZWZQ
dHI8WE1MUGFyc2VyQ29udGV4dD4gWE1MUGFyc2VyQ29udGV4dDo6Y3JlYXRlTWVtb3J5UGFyc2Vy
KHhtbFNBWEhhbmRsZXJQCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBY
TUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBG
cmFtZVZpZXcqIGZyYW1lVmlldykKLSAgICA6IERvY3VtZW50UGFyc2VyKGRvY3VtZW50KQorICAg
IDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGRvY3VtZW50KQogICAgICwgbV92aWV3KGZyYW1l
VmlldykKICAgICAsIG1fY29udGV4dCgwKQogICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKG5ldyBQ
ZW5kaW5nQ2FsbGJhY2tzKQpAQCAtNTUwLDcgKzU1MCw3IEBAIFhNTERvY3VtZW50UGFyc2VyOjpY
TUxEb2N1bWVudFBhcnNlcihEb2N1bWVudCogZG9jdW1lbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3
KQogfQogCiBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFn
bWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIHBhcmVudEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5n
UGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQotICAgIDogRG9jdW1lbnRQYXJzZXIoZnJh
Z21lbnQtPmRvY3VtZW50KCkpCisgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZnJhZ21l
bnQtPmRvY3VtZW50KCkpCiAgICAgLCBtX3ZpZXcoMCkKICAgICAsIG1fY29udGV4dCgwKQogICAg
ICwgbV9wZW5kaW5nQ2FsbGJhY2tzKG5ldyBQZW5kaW5nQ2FsbGJhY2tzKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50UGFyc2VyLmNwcAppbmRleCA5ZDViYTU5ODg3MzgwMjY2ZDYzMDQ2OWQxY2FiNjM4NzI2
NGVjOWI3Li45OGUyNTBiODI4YjY3MzQ3ZjVmNDU3YzMxOTk2MDViNWY3ZThmYTVhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogfSAv
LyBuYW1lc3BhY2UKIAogSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoSFRN
TERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCByZXBvcnRFcnJvcnMpCi0gICAgOiBEb2N1bWVudFBh
cnNlcihkb2N1bWVudCkKKyAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihkb2N1bWVudCkK
ICAgICAsIG1fdG9rZW5pemVyKG5ldyBIVE1MVG9rZW5pemVyKQogICAgICwgbV9zY3JpcHRSdW5u
ZXIobmV3IEhUTUxTY3JpcHRSdW5uZXIoZG9jdW1lbnQsIHRoaXMpKQogICAgICwgbV90cmVlQnVp
bGRlcihuZXcgSFRNTFRyZWVCdWlsZGVyKG1fdG9rZW5pemVyLmdldCgpLCBkb2N1bWVudCwgcmVw
b3J0RXJyb3JzKSkKQEAgLTgwLDcgKzgwLDcgQEAgSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9j
dW1lbnRQYXJzZXIoSFRNTERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCByZXBvcnRFcnJvcnMKIC8v
IEZJWE1FOiBNZW1iZXIgdmFyaWFibGVzIHNob3VsZCBiZSBncm91cGVkIGludG8gc2VsZi1pbml0
aWFsaXppbmcgc3RydWN0cyB0bwogLy8gbWluaW1pemUgY29kZSBkdXBsaWNhdGlvbiBiZXR3ZWVu
IHRoZXNlIGNvbnN0cnVjdG9ycy4KIEhUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFy
c2VyKERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Np
b24gc2NyaXB0aW5nUGVybWlzc2lvbikKLSAgICA6IERvY3VtZW50UGFyc2VyKGZyYWdtZW50LT5k
b2N1bWVudCgpKQorICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGZyYWdtZW50LT5kb2N1
bWVudCgpKQogICAgICwgbV90b2tlbml6ZXIobmV3IEhUTUxUb2tlbml6ZXIpCiAgICAgLCBtX3Ry
ZWVCdWlsZGVyKG5ldyBIVE1MVHJlZUJ1aWxkZXIobV90b2tlbml6ZXIuZ2V0KCksIGZyYWdtZW50
LCBzY3JpcHRpbmdQZXJtaXNzaW9uKSkKICAgICAsIG1fZW5kV2FzRGVsYXllZChmYWxzZSkKQEAg
LTM0Miw5ICszNDIsOSBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6c3RvcFdhdGNoaW5nRm9y
TG9hZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkU2NyaXB0KQogCiBib29sIEhUTUxEb2N1bWVudFBh
cnNlcjo6c2hvdWxkTG9hZEV4dGVybmFsU2NyaXB0RnJvbVNyYyhjb25zdCBBdG9taWNTdHJpbmcm
IHNyY1ZhbHVlKQogewotICAgIGlmICghbV9YU1NBdWRpdG9yKQorICAgIGlmICgheHNzQXVkaXRv
cigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gbV9YU1NBdWRpdG9yLT5jYW5M
b2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKHNyY1ZhbHVlKTsKKyAgICByZXR1cm4geHNzQXVkaXRv
cigpLT5jYW5Mb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKHNyY1ZhbHVlKTsKIH0KIAogdm9pZCBI
VE1MRG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBjYWNoZWRS
ZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuaCBi
L1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCBlYTUzZjQxNTk0M2RhYjBh
NTkwYzI5ZTA4ZjAzMmM0N2VjMjI2NjZlLi5kZmZkN2YxODIyOTY1YzY0ZjdiYjQ3MGE3MzhlYWI3
NGNmOTMwMTk3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmgK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC0yOCwxMSArMjgsMTEg
QEAKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhZ21l
bnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgiCisjaW5jbHVkZSAiSFRNTElucHV0U3RyZWFtLmgiCiAj
aW5jbHVkZSAiSFRNTFNjcmlwdFJ1bm5lckhvc3QuaCIKICNpbmNsdWRlICJIVE1MVG9rZW4uaCIK
LSNpbmNsdWRlICJIVE1MSW5wdXRTdHJlYW0uaCIKKyNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1l
bnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKLSNpbmNsdWRlICJEb2N1
bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgogCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIExlZ2FjeUhUTUxUcmVlQnVpbGRlcjsKIGNsYXNz
IFNjcmlwdENvbnRyb2xsZXI7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogCi1jbGFzcyBIVE1M
RG9jdW1lbnRQYXJzZXIgOiAgcHVibGljIERvY3VtZW50UGFyc2VyLCBIVE1MU2NyaXB0UnVubmVy
SG9zdCwgQ2FjaGVkUmVzb3VyY2VDbGllbnQgeworY2xhc3MgSFRNTERvY3VtZW50UGFyc2VyIDog
IHB1YmxpYyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIsIEhUTUxTY3JpcHRSdW5uZXJIb3N0LCBD
YWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFRoZXNlIGNvbnN0
cnVjdG9ycyBzaG91bGQgYmUgbWFkZSBwcml2YXRlIGFuZCByZXBsYWNlZCBieSBjcmVhdGUoKSBt
ZXRob2RzLgogICAgIEhUTUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQqLCBib29sIHJlcG9y
dEVycm9ycyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFy
c2VyLmNwcCBiL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4
IDlkOGExOWI2NGYwMzgzZGFlNTEyZmUwMGZlNTlmYzIxNWRlYzRhNWIuLmFkZDVkNjk0ZTZjZjk1
OTBlODk2ODczNTViZTZjNTAzNGYwZDRjMzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9MZWdh
Y3lIVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9j
dW1lbnRQYXJzZXIuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgaW5saW5lIHZvaWQgVG9rZW46OmFk
ZEF0dHJpYnV0ZShBdG9taWNTdHJpbmcmIGF0dHJOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0
dHIKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpM
ZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCByZXBv
cnRFcnJvcnMpCi0gICAgOiBEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKKyAgICA6IFNjcmlwdGFi
bGVEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKICAgICAsIG1fYnVmZmVyKDApCiAgICAgLCBtX3Nj
cmlwdENvZGUoMCkKICAgICAsIG1fc2NyaXB0Q29kZVNpemUoMCkKQEAgLTE2Nyw3ICsxNjcsNyBA
QCBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcihIVE1M
RG9jdW1lbnQqIGRvY3VtZW50LCBib29sCiB9CiAKIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6
TGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKEhUTUxWaWV3U291cmNlRG9jdW1lbnQqIGRvY3VtZW50
KQotICAgIDogRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQsIHRydWUpCisgICAgOiBTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQsIHRydWUpCiAgICAgLCBtX2J1ZmZlcigwKQogICAgICwg
bV9zY3JpcHRDb2RlKDApCiAgICAgLCBtX3NjcmlwdENvZGVTaXplKDApCkBAIC0xODYsNyArMTg2
LDcgQEAgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIo
SFRNTFZpZXdTb3VyY2VEb2N1bWVudCogZG9jdW0KIH0KIAogTGVnYWN5SFRNTERvY3VtZW50UGFy
c2VyOjpMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCogZnJhZywgRnJh
Z21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCi0gICAgOiBEb2N1
bWVudFBhcnNlcihmcmFnLT5kb2N1bWVudCgpKQorICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFy
c2VyKGZyYWctPmRvY3VtZW50KCkpCiAgICAgLCBtX2J1ZmZlcigwKQogICAgICwgbV9zY3JpcHRD
b2RlKDApCiAgICAgLCBtX3NjcmlwdENvZGVTaXplKDApCkBAIC0xMzkxLDcgKzEzOTEsNyBAQCBM
ZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OlN0YXRlIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6
cGFyc2VUYWcoU2VnbWVudGVkU3RyaQogCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9j
dXJyZW50VG9rZW4uYmVnaW5UYWcgJiYgbV9jdXJyZW50VG9rZW4udGFnTmFtZSA9PSBzY3JpcHRU
YWcgJiYgIWluVmlld1NvdXJjZU1vZGUoKSAmJiAhbV90cmVlQnVpbGRlci0+c2tpcE1vZGUoKSAm
JiBtX2F0dHJOYW1lID09IHNyY0F0dHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
dHJpbmcgY29udGV4dChtX3Jhd0F0dHJpYnV0ZUJlZm9yZVZhbHVlLmRhdGEoKSwgbV9yYXdBdHRy
aWJ1dGVCZWZvcmVWYWx1ZS5zaXplKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChtX1hTU0F1ZGl0b3IgJiYgIW1fWFNTQXVkaXRvci0+Y2FuTG9hZEV4dGVybmFsU2NyaXB0RnJv
bVNyYyhhdHRyaWJ1dGVWYWx1ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHhz
c0F1ZGl0b3IoKSAmJiAheHNzQXVkaXRvcigpLT5jYW5Mb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3Jj
KGF0dHJpYnV0ZVZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmli
dXRlVmFsdWUgPSBibGFua1VSTCgpLnN0cmluZygpOwogICAgICAgICAgICAgICAgICAgICAgICAg
fQogCkBAIC0xNDI4LDcgKzE0MjgsNyBAQCBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OlN0YXRl
IExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VUYWcoU2VnbWVudGVkU3RyaQogCiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50VG9rZW4uYmVnaW5UYWcgJiYgbV9jdXJy
ZW50VG9rZW4udGFnTmFtZSA9PSBzY3JpcHRUYWcgJiYgIWluVmlld1NvdXJjZU1vZGUoKSAmJiAh
bV90cmVlQnVpbGRlci0+c2tpcE1vZGUoKSAmJiBtX2F0dHJOYW1lID09IHNyY0F0dHIpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY29udGV4dChtX3Jhd0F0dHJpYnV0ZUJl
Zm9yZVZhbHVlLmRhdGEoKSwgbV9yYXdBdHRyaWJ1dGVCZWZvcmVWYWx1ZS5zaXplKCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX1hTU0F1ZGl0b3IgJiYgIW1fWFNTQXVkaXRv
ci0+Y2FuTG9hZEV4dGVybmFsU2NyaXB0RnJvbVNyYyhhdHRyaWJ1dGVWYWx1ZSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHhzc0F1ZGl0b3IoKSAmJiAheHNzQXVkaXRvcigpLT5j
YW5Mb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKGF0dHJpYnV0ZVZhbHVlKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSBibGFua1VSTCgpLnN0cmluZygp
OwogICAgICAgICAgICAgICAgICAgICAgICAgfQogCkBAIC0xNzIzLDYgKzE3MjMsMTggQEAgdm9p
ZCBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OmRpZFdyaXRlSFRNTCgpCiAgICAgI2VuZGlmCiB9
CiAKK3ZvaWQgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpzeW5jaHJvbm91c1NjcmlwdFdyaXRl
KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQoreworICAgIC8vIEZJWE1FOiBmb3JjZVN5
bmNocm9ub3VzIHNob3VsZCBhbHdheXMgYmUgdGhlIHNhbWUgYXMgdGhlIGJvb2wgcGFzc2VkIHRv
CisgICAgLy8gd3JpdGUoKS4gIEhvd2V2ZXIgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyIHVzZXMg
d3JpdGUoIiIsIGZhbHNlKSB0byBwdW1wCisgICAgLy8gdGhlIHBhcnNlciAoYWZ0ZXIgcnVubmlu
ZyBleHRlcm5hbCBzY3JpcHRzLCBldGMuKSB0aHVzIG5lY2Vzc2l0YXRpbmcgYQorICAgIC8vIHNl
cGFyYXRlIHN0YXRlIGZvciBmb3JjZVN5bmNocm9ub3VzLgorICAgIGJvb2wgd2FzRm9yY2VkU3lu
Y2hyb25vdXMgPSBmb3JjZVN5bmNocm9ub3VzKCk7CisgICAgc2V0Rm9yY2VTeW5jaHJvbm91cyh0
cnVlKTsKKyAgICB3cml0ZShzb3VyY2UsIGZhbHNlKTsKKyAgICBzZXRGb3JjZVN5bmNocm9ub3Vz
KHdhc0ZvcmNlZFN5bmNocm9ub3VzKTsKK30KKwogdm9pZCBMZWdhY3lIVE1MRG9jdW1lbnRQYXJz
ZXI6OndyaXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc3RyLCBib29sIGFwcGVuZERhdGEpCiB7
CiAgICAgaWYgKCFtX2J1ZmZlcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1M
RG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIu
aAppbmRleCAxYTkyZWNkMjQ3OGQyNTBhNDNiMmVmMjM5MGZjZmM4MDQzZWU1ZjlmLi5iMzdjZjM1
MmJjOWYxYTBiMDczMWI5MjIyOTgyZmZhOTkwYWY5ZDU1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmgKKysrIGIvV2ViQ29yZS9odG1sL0xlZ2FjeUhU
TUxEb2N1bWVudFBhcnNlci5oCkBAIC0yOCw5ICsyOCw5IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIK
ICNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKKyNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQ
YXJzZXIuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJUaW1lci5o
IgotI2luY2x1ZGUgIkRvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE0MCw3
ICsxNDAsNyBAQCBwdWJsaWM6CiAvLyAobGlrZSBkZWFsaW5nIHdpdGggPHNjcmlwdD4gdGFncyku
ICBUaGUgSFRNTCB0b2tlbml6ZXIgYml0cyBzaG91bGQgYmUgcHVzaGVkCiAvLyBkb3duIGludG8g
YSBzZXBhcmF0ZSBIVE1MIHRva2VuaXplciBjbGFzcy4KIAotY2xhc3MgTGVnYWN5SFRNTERvY3Vt
ZW50UGFyc2VyIDogcHVibGljIERvY3VtZW50UGFyc2VyLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VD
bGllbnQgeworY2xhc3MgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyIDogcHVibGljIFNjcmlwdGFi
bGVEb2N1bWVudFBhcnNlciwgcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoK
ICAgICBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50KiwgYm9vbCByZXBvcnRF
cnJvcnMpOwogICAgIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcihIVE1MVmlld1NvdXJjZURvY3Vt
ZW50Kik7CkBAIC0xNDgsNiArMTQ4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeUhU
TUxEb2N1bWVudFBhcnNlcigpOwogCiAgICAgdmlydHVhbCB2b2lkIHdyaXRlKGNvbnN0IFNlZ21l
bnRlZFN0cmluZyYsIGJvb2wgYXBwZW5kRGF0YSk7CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
b3VzU2NyaXB0V3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJik7CisKICAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoKCk7CiAgICAgdmlydHVhbCBib29sIGZpbmlzaFdhc0NhbGxlZCgpOwogICAgIHZp
cnR1YWwgYm9vbCBmb3JjZVN5bmNocm9ub3VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5mb3Jj
ZVN5bmNocm9ub3VzKCk7IH0KQEAgLTE2NSw3ICsxNjcsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCk7CiAKICAgICB2aXJ0
dWFsIExlZ2FjeUhUTUxUcmVlQnVpbGRlciogaHRtbFRyZWVCdWlsZGVyKCkgY29uc3QgeyByZXR1
cm4gbV90cmVlQnVpbGRlci5nZXQoKTsgfQotICAgIHZpcnR1YWwgTGVnYWN5SFRNTERvY3VtZW50
UGFyc2VyKiBhc0hUTUxEb2N1bWVudFBhcnNlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAogcHJpdmF0
ZToKICAgICBjbGFzcyBTdGF0ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBhNjI4
NTBjYWNkMWQ4Y2NlNWRmMGY5ZGVjMGNhNDNiYjVkNDc0ODVmLi5mNzI0OTVjZTJjY2JjZDFkNzJl
NmE3MDJlNzM5M2JjYjUzN2ViYzUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUGFnZS5oIgogI2luY2x1ZGUgIkRvY0xvYWRl
ci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRQYXJzZXIuaCIK
ICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKQEAgLTQ2LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVk
ZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAj
aW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRXcml0ZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3Bw
CmluZGV4IGZlMGFjYjBkMWFlZTUzZWE1NmU1MGI1NmYxODc1ZDNiNDdmOTIwMWQuLjc5MGU3MTk0
OWNkNzgxZGU2N2Q2NGMzNzY3ZmJjNjc4ODRmZDFlMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRl
ci5jcHAKQEAgLTM4LDEyICszOCwxNCBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1
ZGUgIlBsYWNlaG9sZGVyRG9jdW1lbnQuaCIKICNpbmNsdWRlICJQbHVnaW5Eb2N1bWVudC5oIgor
I2luY2x1ZGUgIlJhd0RhdGFEb2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUgIlNjcmlwdGFibGVE
b2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
U2VnbWVudGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaW5r
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCi0jaW5jbHVkZSAi
RG9jdW1lbnRQYXJzZXIuaCIKKwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzOCwxMiAr
MTQwLDEyIEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmFkZERhdGEoY29uc3QgY2hhciogc3RyLCBp
bnQgbGVuLCBib29sIGZsdXNoKQogICAgICAgICBsZW4gPSBzdHJsZW4oc3RyKTsKIAogICAgIERv
Y3VtZW50UGFyc2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKTsKLSAg
ICBpZiAocGFyc2VyICYmIHBhcnNlci0+d2FudHNSYXdEYXRhKCkpIHsKKyAgICBpZiAocGFyc2Vy
ICYmIHBhcnNlci0+YXNSYXdEYXRhRG9jdW1lbnRQYXJzZXIoKSkgewogICAgICAgICBpZiAobGVu
ID4gMCkKLSAgICAgICAgICAgIHBhcnNlci0+d3JpdGVSYXdEYXRhKHN0ciwgbGVuKTsKKyAgICAg
ICAgICAgIHBhcnNlci0+YXNSYXdEYXRhRG9jdW1lbnRQYXJzZXIoKS0+d3JpdGVSYXdEYXRhKHN0
ciwgbGVuKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGlmICghbV9kZWNv
ZGVyKSB7CiAgICAgICAgIGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5n
cygpKSB7CiAgICAgICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVh
dGUobV9taW1lVHlwZSwKQEAgLTE4OCw4ICsxOTAsOCBAQCB2b2lkIERvY3VtZW50V3JpdGVyOjph
ZGREYXRhKGNvbnN0IGNoYXIqIHN0ciwgaW50IGxlbiwgYm9vbCBmbHVzaCkKICAgICB9CiAKICAg
ICBpZiAocGFyc2VyKSB7Ci0gICAgICAgIEFTU0VSVCghcGFyc2VyLT53YW50c1Jhd0RhdGEoKSk7
Ci0gICAgICAgIHBhcnNlci0+d3JpdGUoZGVjb2RlZCwgdHJ1ZSk7CisgICAgICAgIEFTU0VSVChw
YXJzZXItPmFzU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkpOworICAgICAgICBwYXJzZXItPmFz
U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCktPmFwcGVuZE5ldHdvcmtEYXRhKGRlY29kZWQpOwog
ICAgIH0KIH0KIApAQCAtMjAzLDggKzIwNSwxMCBAQCB2b2lkIERvY3VtZW50V3JpdGVyOjphZGRE
YXRhKGNvbnN0IFN0cmluZyYgc3RyKQogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXRQ
YXJzZU1vZGUoRG9jdW1lbnQ6OlN0cmljdCk7CiAgICAgfQogCi0gICAgaWYgKERvY3VtZW50UGFy
c2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKSkKLSAgICAgICAgcGFy
c2VyLT53cml0ZShzdHIsIHRydWUpOworICAgIC8vIEl0J3MgdW5jbGVhciBob3cgdGhlIHBhcnNl
ciBjb3VsZCBldmVyIGJlIDAgZm9yIHRoaXMgY2FsbC4KKyAgICBTY3JpcHRhYmxlRG9jdW1lbnRQ
YXJzZXIqIHBhcnNlciA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnNjcmlwdGFibGVEb2N1bWVudFBh
cnNlcigpOworICAgIGlmIChwYXJzZXIpCisgICAgICAgIHBhcnNlci0+YXBwZW5kTmV0d29ya0Rh
dGEoc3RyKTsKIH0KIAogdm9pZCBEb2N1bWVudFdyaXRlcjo6ZW5kKCkKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvbG9hZGVyL1RleHREb2N1bWVudC5jcHAgYi9XZWJDb3JlL2xvYWRlci9UZXh0RG9jdW1l
bnQuY3BwCmluZGV4IDYyMmUxNDgxNTUzMDIxMjAxZmU5ZWU0MGQxY2NiN2M4ZmU5MWMzYjguLjlh
NjAxNmUzYThlOTIwY2RiY2VkNzMyNDk0NWRlMzM3YmNjZjBjMzEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvbG9hZGVyL1RleHREb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvVGV4dERvY3Vt
ZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKLWNsYXNzIFRleHREb2N1bWVudFBhcnNlciA6IHB1YmxpYyBE
b2N1bWVudFBhcnNlciB7CitjbGFzcyBUZXh0RG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgU2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyIHsKIHB1YmxpYzoKICAgICBUZXh0RG9jdW1lbnRQYXJzZXIoRG9j
dW1lbnQqKTsKICAgICB2aXJ0dWFsIH5UZXh0RG9jdW1lbnRQYXJzZXIoKTsKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2goKTsKICAgICB2aXJ0dWFsIGJv
b2wgZmluaXNoV2FzQ2FsbGVkKCk7CiAgICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlw
dHMoKSBjb25zdDsKLSAgICAKKwogICAgIGlubGluZSB2b2lkIGNoZWNrQnVmZmVyKGludCBsZW4g
PSAxMCkKICAgICB7CiAgICAgICAgIGlmICgobV9kZXN0IC0gbV9idWZmZXIpID4gbV9zaXplIC0g
bGVuKSB7CkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiB9OwogCiBUZXh0RG9jdW1lbnRQYXJz
ZXI6OlRleHREb2N1bWVudFBhcnNlcihEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBEb2N1bWVu
dFBhcnNlcihkb2N1bWVudCkKKyAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihkb2N1bWVu
dCkKICAgICAsIG1fcHJlRWxlbWVudCgwKQogICAgICwgbV9za2lwTEYoZmFsc2UpCiB7ICAgIApA
QCAtODMsNyArODMsNyBAQCBUZXh0RG9jdW1lbnRQYXJzZXI6OlRleHREb2N1bWVudFBhcnNlcihE
b2N1bWVudCogZG9jdW1lbnQpCiB9ICAgIAogCiBUZXh0RG9jdW1lbnRQYXJzZXI6OlRleHREb2N1
bWVudFBhcnNlcihIVE1MVmlld1NvdXJjZURvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IERvY3Vt
ZW50UGFyc2VyKGRvY3VtZW50LCB0cnVlKQorICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
KGRvY3VtZW50LCB0cnVlKQogICAgICwgbV9wcmVFbGVtZW50KDApCiAgICAgLCBtX3NraXBMRihm
YWxzZSkKIHsgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lv
bnMuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAppbmRleCA3YjI4
NWViODYxZjdhNTE3ODgwYmQ4OTNmOTVkNDBhMWFmMjg4NDYwLi5lNTc5NWQzNDdmNjI2ZTJjMzg0
Mzg2ZDMyNmU2YzhiZjU3NzBiMDY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVu
dEV4dGVuc2lvbnMuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5j
cHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJTVkdTTUlMRWxlbWVudC5oIgogI2luY2x1
ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTTUlMVGltZUNvbnRhaW5lci5oIgotI2lu
Y2x1ZGUgIlhNTERvY3VtZW50UGFyc2VyLmgiCisjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0xMjUsMTYgKzEyNSwyNyBAQCBib29sIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6
c2FtcGxlQW5pbWF0aW9uQXRUaW1lKGNvbnN0IFN0cmluZyYgZWxlbWVudElkLCBTVkdTTQogICAg
IHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgaW50IHBhcnNlckxpbmVOdW1iZXIoRG9jdW1lbnQq
IGRvY3VtZW50KQoreworICAgIGlmIChkb2N1bWVudC0+c2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
KCkpCisgICAgICAgIHJldHVybiBkb2N1bWVudC0+c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkt
PmxpbmVOdW1iZXIoKTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIHZvaWQgcmVwb3J0TWVz
c2FnZShEb2N1bWVudCogZG9jdW1lbnQsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQoreworICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKSkK
KyAgICAgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNz
YWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIHBhcnNlckxpbmVOdW1i
ZXIoZG9jdW1lbnQpLCBTdHJpbmcoKSk7Cit9CisKIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25z
OjpyZXBvcnRXYXJuaW5nKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBpZiAoRnJhbWUq
IGZyYW1lID0gbV9kb2MtPmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29u
c29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9y
TWVzc2FnZUxldmVsLCAiV2FybmluZzogIiArIG1lc3NhZ2UsIG1fZG9jLT5wYXJzZXIoKSA/IG1f
ZG9jLT5wYXJzZXIoKS0+bGluZU51bWJlcigpIDogMSwgU3RyaW5nKCkpOworICAgIHJlcG9ydE1l
c3NhZ2UobV9kb2MsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsICJXYXJuaW5nOiAiICsgbWVzc2FnZSk7
CiB9CiAKIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZXBvcnRFcnJvcihjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiB7Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fZG9jLT5mcmFtZSgpKQot
ICAgICAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3Nh
Z2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkVycm9yOiAiICsg
bWVzc2FnZSwgbV9kb2MtPnBhcnNlcigpID8gbV9kb2MtPnBhcnNlcigpLT5saW5lTnVtYmVyKCkg
OiAxLCBTdHJpbmcoKSk7CisgICAgcmVwb3J0TWVzc2FnZShtX2RvYywgRXJyb3JNZXNzYWdlTGV2
ZWwsICJFcnJvcjogIiArIG1lc3NhZ2UpOwogfQogCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9u
czo6YWRkUGVuZGluZ1Jlc291cmNlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIFNWR1N0eWxlZEVs
ZW1lbnQqIG9iaikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59627</attachid>
            <date>2010-06-24 03:26:03 -0700</date>
            <delta_ts>2010-06-26 15:28:29 -0700</delta_ts>
            <desc>Ready for review</desc>
            <filename>bug-41141-20100624032602.patch</filename>
            <type>text/plain</type>
            <size>48319</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAxYmE5OWEwZDFjZTE0ZDg3NWM2MWI4NThiMDdiNWQ0ZjE4N2Q2M2NhLi5lNjZiZDZkNGQ0MTZi
OTliNDNlODNkOWY2ZmUyMDM0YjM0ZDcyNWMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0xNTcsNiArMTU3LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJZG9tL1F1YWxpZmllZE5hbWUuY3BwIFwK
IAlkb20vUmFuZ2UuY3BwIFwKIAlkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwIFwKKwlk
b20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNwcCBcCiAJZG9tL1NjcmlwdEVsZW1lbnQuY3Bw
IFwKIAlkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgXAogCWRvbS9TZWxlY3RFbGVtZW50
LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCBhNDVjZTc3ZDc4ZTEyNDAxMmI5NzhlOTQ3MDM3NzkyMWYyMDczYTY1
Li45ODQwZTY1NGJjMGRmYWYzNzA0NjkwM2ViZTM4Yjg5MWRiZGU0MDkyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTgx
Myw2ICs4MTMsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1F1YWxpZmllZE5hbWUu
Y3BwCiAgICAgZG9tL1JhbmdlLmNwcAogICAgIGRvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5j
cHAKKyAgICBkb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNwcAogICAgIGRvbS9TY3JpcHRF
bGVtZW50LmNwcAogICAgIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAogICAgIGRvbS9T
ZWxlY3RFbGVtZW50LmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAxNTVkZGI3Mzc3ZmQ0OGQ2MjQ2NjU4YzA3ZjRkZTdkNGJlYzhhOGQ5
Li4wMzllNzk2MTQ4YTQ1NWQ2ZWFhY2IwMDljM2I5ZWRhZmE3ODQyMTE1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMiw2ICsyLDg5IEBA
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgQWRkIGEg
bmV3IGJhc2VjbGFzcyBmb3IgWE1MLCBIVE1MIGFuZCBUZXh0IERvY3VtZW50UGFyc2VycyB0byBj
bGVhbiB1cCBEb2N1bWVudFBhcnNlciBjYWxsIHNpdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTE0MQorCisgICAgICAgIEJ5IHNwbGl0dGluZyBT
Y3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIgb3V0IGZyb20gRG9jdW1lbnRQYXJzZXIKKyAgICAgICAg
d2UndmUgbWFkZSB0aGUgRG9jdW1lbnRQYXJzZXIgYW5kIFJhd0RhdGFEb2N1bWVudFBhcnNlciBj
bGFzc2VzIG11Y2gKKyAgICAgICAgc2ltcGxlciwgYW5kIG1hZGUgaXQgY2xlYXIgYXQgYWxsIG9m
IHRoZSBEb2N1bWVudFBhcnNlciBjYWxsc2l0ZXMKKyAgICAgICAgd2hhdCBiZWhhdmlvciB0byBl
eHBlY3Qgd2hlbiBjYWxsaW5nIHByZXZpb3VzbHkgc2hhcmVkIChidXQgb2Z0ZW4KKyAgICAgICAg
dW5pbXBsZW1lbnRlZCkgbWV0aG9kcyBsaWtlIGxpbmVOdW1iZXIoKSBvciB3cml0ZSgpLCBldGMu
CisKKyAgICAgICAgSSdtIG5vdCBzdXJlIHRoaXMgZGl2aXNpb24gaXMgcGVyZmVjdCwgc2luY2Ug
VGV4dERvY3VtZW50IGlzbid0CisgICAgICAgIGV4YWN0bHkgInNjcmlwdGFibGUiLiAgQnV0IHRo
aXMgaGFzIGRlZmluaXRlbHkgbWFkZSBpdCBlYXNpZXIgdG8KKyAgICAgICAgdGVsbCB3aGF0IGFs
bCB0aGUgdmFyaW91cyBEb2N1bWVudFBhcnNlciBjYWxsc2l0ZXMgYXJlIGFjdHVhbGx5IGRvaW5n
LgorCisgICAgICAgIEluIG9yZGVyIHRvIGltcGxlbWVudCB0aGlzIEkgaGFkIGNyZWF0ZSBuZXcg
c3luY2hyb25vdXNTY3JpcHRXcml0ZQorICAgICAgICBhbmQgYXBwZW5kTmV0d29ya0RhdGEgY2Fs
bHMuICBUaGVzZSB3aWxsIGV2ZW50dWFsbHkgcmVwbGFjZSBhbGwgY2FsbHMKKyAgICAgICAgdG8g
d3JpdGUoKS4gIFRoZSBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIgbmVlZGVkIHNwZWNpYWwgY29k
ZSBpbgorICAgICAgICBEb2N1bWVudCB0byBoYW5kbGUgc3luY2hyb25vdXNTY3JpcHRXcml0ZSwg
YnV0IG5vdyB0aGF0IHdlIGhhdmUgYQorICAgICAgICBzZXBhcmF0ZSBtZXRob2QgZm9yIGl0IHRo
ZSBjb2RlIGp1c3QgZ29lcyBpbiBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuCisKKyAgICAgICAg
Tm8gZnVuY3Rpb25hbCBjaGFuZ2UsIHRodXMgbm8gdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmVu
dEhhbmRsZXJMaW5lTnVtYmVyKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpjaGVja0xvYWRlZCk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om9wZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxpY2l0T3Blbik6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZVBlbmRpbmdTaGVldCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
cGFyc2VyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50UGFyc2VyOjphc1NjcmlwdGFibGVEb2N1bWVudFBhcnNlcik6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFBhcnNlcjo6YXNSYXdEYXRhRG9jdW1lbnRQYXJzZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRQYXJzZXI6OkRvY3VtZW50UGFyc2VyKToKKyAgICAgICAg
KiBkb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpSYXdEYXRh
RG9jdW1lbnRQYXJzZXI6OndyaXRlUmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYXdEYXRh
RG9jdW1lbnRQYXJzZXI6OmFzUmF3RGF0YURvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhd0RhdGFEb2N1bWVudFBhcnNlcjo6ZmluaXNoV2FzQ2FsbGVkKToKKyAgICAgICAgKiBk
b20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXI6OlNjcmlwdGFibGVEb2N1bWVudFBhcnNlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXI6OnN5bmNocm9ub3VzU2Ny
aXB0V3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyOjph
cHBlbmROZXR3b3JrRGF0YSk6CisgICAgICAgICogZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNl
ci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGFibGVEb2N1bWVudFBhcnNlcjo6
aW5WaWV3U291cmNlTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRhYmxlRG9jdW1lbnRQ
YXJzZXI6OnNldEluVmlld1NvdXJjZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0YWJs
ZURvY3VtZW50UGFyc2VyOjp4c3NBdWRpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGFi
bGVEb2N1bWVudFBhcnNlcjo6c2V0WFNTQXVkaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRhYmxlRG9jdW1lbnRQYXJzZXI6OmFzU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKToKKyAgICAg
ICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2Vy
TGluZU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpyZXBvcnRWaWV3cG9ydFdhcm5pbmcpOgor
ICAgICAgICAqIGRvbS9YTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGRvbS9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJz
ZXI6OlhNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVu
dFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnNob3VsZExv
YWRFeHRlcm5hbFNjcmlwdEZyb21TcmMpOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50UGFy
c2VyLmg6CisgICAgICAgICogaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpMZWdhY3lIVE1MRG9jdW1l
bnRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpw
YXJzZVRhZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OnN5
bmNocm9ub3VzU2NyaXB0V3JpdGUpOgorICAgICAgICAqIGh0bWwvTGVnYWN5SFRNTERvY3VtZW50
UGFyc2VyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRX
cml0ZXI6OmFkZERhdGEpOgorICAgICAgICAqIGxvYWRlci9UZXh0RG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dERvY3VtZW50UGFyc2VyOjpUZXh0RG9jdW1lbnRQYXJzZXIpOgor
ICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VyTGluZU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpyZXBvcnRNZXNzYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVwb3J0V2FybmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlcG9ydEVycm9yKToK
KworMjAxMC0wNi0yNCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgQWRkIFJhd0RhdGFEb2N1bWVu
dFBhcnNlciB0byBnZXQgcmlkIG9mIGEgYnVuY2ggb2YgY29weS9wYXN0ZSBjb2RlIGluIERvY3Vt
ZW50UGFyc2VyIHN1YmNsYXNzZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQxMTM2CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0g
Yi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDg0N2JkNThkY2U0NDFmOWNiMjdlMTAyMTEy
MWYzOThlNzgwYTFkOGIuLjQyNmJhNjcwNzY4MjgwNGU0MzczNjE1M2ViMDI5MjBhOWYzNWQ1NTUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQpAQCAtODc1LDYgKzg3NSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29y
ZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmggXAogCVdlYkNvcmUvZG9tL1JlZ2lzdGVyZWRF
dmVudExpc3RlbmVyLmNwcCBcCiAJV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIu
aCBcCisJV2ViQ29yZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNwcCBcCisJV2ViQ29y
ZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmggXAogCVdlYkNvcmUvZG9tL1NjcmlwdEVs
ZW1lbnQuY3BwIFwKIAlXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmggXAogCVdlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNWRmNjg1MmMzMDA3ZmRjYTRlYTcz
ZWM3NjZjYzYyZjY0ZWExMzAxMy4uNGVhODA1MjI0NmQ2NjcxNTY4NzY5MDc2MDM3NzU3ZjI0ZjU3
NjcyMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTEyMDIsNiArMTIwMiw4IEBACiAgICAgICAgICAgICAnZG9tL1Jhd0RhdGFE
b2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVu
ZXIuY3BwJywKICAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCcsCisg
ICAgICAgICAgICAnZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAnLAorICAgICAgICAg
ICAgJ2RvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCcsCiAgICAgICAgICAgICAnZG9tL1Nj
cmlwdEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdkb20vU2NyaXB0RWxlbWVudC5oJywKICAg
ICAgICAgICAgICdkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAnLApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggZWZkZWNhODhh
YTI1NTlkYjYxNWJmNjI2MjRiMDAzNTljMjQwYzE1Yi4uNmRiNTVhY2EzNDZmOWVkYjM3MTJhMTAy
YWZhYjllZDIzNzZjM2U0MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9X
ZWJDb3JlL1dlYkNvcmUucHJvCkBAIC01MTEsNiArNTExLDcgQEAgU09VUkNFUyArPSBcCiAgICAg
ZG9tL1JhbmdlLmNwcCBcCiAgICAgZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oIFwKICAgICBk
b20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwIFwKKyAgICBkb20vU2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyLmNwcCBcCiAgICAgZG9tL1NjcmlwdEVsZW1lbnQuY3BwIFwKICAgICBkb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgXAogICAgIGRvbS9TZWxlY3RFbGVtZW50LmNwcCBcCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg5ZTVjMTVmYWJk
NTY0ZDMxZDQ5MjJmODQ2YTc1YzVkZTA3NjdkNDcuLmE3MzdjMjQzMTVhYTlhZjlhNzA3ZGM5OTRh
MzE1NjE4M2M2ZTdhZGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0yOTY3LDYgKzI5NjcsOCBAQAogCQlBODNCNzk1NzBDQ0IwMTI1MDAwQjA4MjUgLyog
RE9NU1ZHRm9udEZhY2VFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBODNCNzk0ODBDQ0IwMTI1MDAwQjA4MjUgLyogRE9NU1ZHRm9udEZhY2VF
bGVtZW50LmggKi87IH07CiAJCUE4M0UxQzc0MEU0OTA0MkMwMDE0MEI5QyAvKiBTY3JpcHRDb250
cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTgzRTFDNzIwRTQ5MDQyQjAwMTQwQjlDIC8qIFNjcmlwdENvbnRyb2xsZXJNYWMubW0gKi87
IH07CiAJCUE4NEQ4MjdDMTFEMzMzRUQwMDk3Mjk5MCAvKiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NEQ4MjdC
MTFEMzMzRUQwMDk3Mjk5MCAvKiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCAqLzsgfTsKKwkJQTg0
RDgyQzExMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg0RDgyQkYxMUQzNDc0
ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oICovOyB9OworCQlBODREODJD
MjExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NEQ4MkMwMTFEMzQ3NDgw
MDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwICovOyB9OwogCQlBODRFQkQ3
ODBDQjhDODkyMDAwNzk2MDkgLyogSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODRFQkQ3NzBDQjhDODkyMDAw
Nzk2MDkgLyogSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAgKi87IH07CiAJCUE4NEVCRDgzMENC
OEM5NzcwMDA3OTYwOSAvKiBKU1N0eWxlU2hlZXRMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODRFQkQ4MTBDQjhDOTc3MDAwNzk2MDkgLyogSlNT
dHlsZVNoZWV0TGlzdC5oICovOyB9OwogCQlBODRFQkQ4NDBDQjhDOTc3MDAwNzk2MDkgLyogSlNT
dHlsZVNoZWV0TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBODRFQkQ4MjBDQjhDOTc3MDAwNzk2MDkgLyogSlNTdHlsZVNoZWV0TGlzdC5jcHAg
Ki87IH07CkBAIC04NDQ3LDYgKzg0NDksOCBAQAogCQlBODNCNzk0ODBDQ0IwMTI1MDAwQjA4MjUg
LyogRE9NU1ZHRm9udEZhY2VFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTVNWR0ZvbnRGYWNlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBODNFMUM3MjBFNDkwNDJCMDAxNDBCOUMgLyogU2NyaXB0Q29udHJvbGxlck1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcmlwdENvbnRyb2xsZXJNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4NEQ4MjdCMTFEMzMzRUQwMDk3Mjk5
MCAvKiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmF3RGF0YURvY3VtZW50UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE4NEQ4MkJGMTFEMzQ3NDgwMDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0YWJsZURvY3VtZW50UGFy
c2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4NEQ4MkMwMTFEMzQ3NDgwMDk3
Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg0RUJENzcwQ0I4Qzg5MjAwMDc5NjA5IC8qIEpTU3R5bGVT
aGVldExpc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE4NEVCRDgxMENCOEM5NzcwMDA3OTYwOSAvKiBKU1N0eWxlU2hlZXRMaXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3R5bGVTaGVldExpc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTg0RUJEODIwQ0I4Qzk3NzAwMDc5NjA5IC8qIEpTU3R5bGVTaGVl
dExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdHlsZVNo
ZWV0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjg3Miw2ICsxNjg3
Niw4IEBACiAJCQkJNUQxNUUzQTkwRjlFNkFDMTAwOUUwRTNGIC8qIFhNTERvY3VtZW50UGFyc2Vy
U2NvcGUuY3BwICovLAogCQkJCTVEMTVFM0FBMEY5RTZBQzEwMDlFMEUzRiAvKiBYTUxEb2N1bWVu
dFBhcnNlclNjb3BlLmggKi8sCiAJCQkJQTg1MzEyM0MxMUQwNDcxQjAwRDREMDc3IC8qIEZyYWdt
ZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oICovLAorCQkJCUE4NEQ4MkJGMTFEMzQ3NDgwMDk3Mjk5
MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCAqLywKKwkJCQlBODREODJDMDExRDM0NzQ4
MDA5NzI5OTAgLyogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNwcCAqLywKIAkJCSk7CiAJCQlw
YXRoID0gZG9tOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE5NTMwLDYgKzE5NTM2
LDcgQEAKIAkJCQlBODUzMTIzRDExRDA0NzFCMDBENEQwNzcgLyogRnJhZ21lbnRTY3JpcHRpbmdQ
ZXJtaXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEU2QTc4MTExRDE2NjFCMDAzMTFGNEEg
LyogSFRNTFBhcnNlclNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg0RDgyN0MxMUQz
MzNFRDAwOTcyOTkwIC8qIFJhd0RhdGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTg0RDgyQzExMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yMTg0OSw2ICsyMTg1Niw3IEBACiAJCQkJMUFEOEY4MUMxMUNB
QjlFOTAwRTkzRTU0IC8qIFBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCNTI1QTk2NjExQ0EyMzQwMDAzQTIzQTggLyogSlNTUUxFeGNlcHRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThFNkE3ODIxMUQxNjYxQjAwMzExRjRBIC8qIEhUTUxQYXJzZXJTY2hlZHVs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTg0RDgyQzIxMUQzNDc0ODAwOTcyOTkwIC8qIFNj
cmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDZmMDQ1N2EwMzdmMjE2YmNkNDlkZWQ0NDNm
OTE5YzA3ODNlOGE2NGUuLjBhYThmNTI2NTgxNmQyNmNiNzIwNDI5ZDZlMWQ1MWU4NWQ2Y2I5NDcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjEsNyArMjEs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
IAotI2luY2x1ZGUgIkRvY3VtZW50UGFyc2VyLmgiCisjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTIzOCwxMSArMjM4LDEyIEBAIEpTRE9NV2luZG93U2hl
bGwqIFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkK
IGludCBTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJMaW5lTnVtYmVyKCkgY29uc3QKIHsK
ICAgICAvLyBKU0MgZXhwZWN0cyAxLWJhc2VkIGxpbmUgbnVtYmVycywgc28gd2UgbXVzdCBhZGQg
b25lIGhlcmUgdG8gZ2V0IGl0IHJpZ2h0LgotICAgIGlmIChEb2N1bWVudFBhcnNlciogcGFyc2Vy
ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCkpCisgICAgU2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zY3JpcHRhYmxlRG9jdW1lbnRQ
YXJzZXIoKTsKKyAgICBpZiAocGFyc2VyKQogICAgICAgICByZXR1cm4gcGFyc2VyLT5saW5lTnVt
YmVyKCkgKyAxOwogICAgIHJldHVybiAwOwogfQotICAgIAorCiBib29sIFNjcmlwdENvbnRyb2xs
ZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZShET01XcmFwcGVyV29ybGQqIHdvcmxkKSBjb25zdAog
ewogICAgIGlmIChtX2FsbG93UG9wdXBzRnJvbVBsdWdpbiB8fCBpc0phdmFTY3JpcHRBbmNob3JO
YXZpZ2F0aW9uKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBi
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDQwYmIwZGVjYzExNDhhZTFjNmM2
MzUwNzRhZTYzMTJjMmFjZDljNzAuLjIyN2QzN2NiYjY4MzQwODA5ZGIzZjNlYmJhYmIwMDU2N2Ux
MGU4ODUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0yMDcsNyArMjA3LDggQEAgdm9pZCBDU1NT
dHlsZVNoZWV0OjpjaGVja0xvYWRlZCgpCiAgICAgaWYgKHBhcmVudCgpKQogICAgICAgICBwYXJl
bnQoKS0+Y2hlY2tMb2FkZWQoKTsKIAotICAgIC8vIEF2b2lkIHx0aGlzfCBiZWluZyBkZWxldGVk
IGJ5IHNjcmlwdHMgdGhhdCBydW4gdmlhIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6ZXhlY3V0
ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKS4KKyAgICAvLyBBdm9pZCB8dGhpc3wgYmVp
bmcgZGVsZXRlZCBieSBzY3JpcHRzIHRoYXQgcnVuIHZpYQorICAgIC8vIFNjcmlwdGFibGVEb2N1
bWVudFBhcnNlcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKS4KICAgICAv
LyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzY2MjIzMDA+LgogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0
PiBwcm90ZWN0b3IodGhpcyk7CiAgICAgbV9sb2FkQ29tcGxldGVkID0gb3duZXJOb2RlKCkgPyBv
d25lck5vZGUoKS0+c2hlZXRMb2FkZWQoKSA6IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMzdiMzUzOGEy
NWZlNDY2M2QxYWU5NmM1ZDdlMzViZDcwZTQwZTUyOS4uYmU4ODc4ZDllNGIzYzEwNjRiNWU0M2Qx
NmY1OTBiZjA0NGYyNDU3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTcwNSw2ICsxNzA1LDExIEBAIERvY3Vt
ZW50UGFyc2VyKiBEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKICAgICByZXR1cm4gbmV3IFhNTERv
Y3VtZW50UGFyc2VyKHRoaXMsIHZpZXcoKSk7CiB9CiAKK1NjcmlwdGFibGVEb2N1bWVudFBhcnNl
ciogRG9jdW1lbnQ6OnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHBhcnNlcigpID8gcGFyc2VyKCktPmFzU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgOiAw
OworfQorCiB2b2lkIERvY3VtZW50OjpvcGVuKERvY3VtZW50KiBvd25lckRvY3VtZW50KQogewog
ICAgIGlmIChvd25lckRvY3VtZW50KSB7CkBAIC0xNzE0LDkgKzE3MTksMTAgQEAgdm9pZCBEb2N1
bWVudDo6b3BlbihEb2N1bWVudCogb3duZXJEb2N1bWVudCkKICAgICB9CiAKICAgICBpZiAobV9m
cmFtZSkgewotICAgICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPmlzTG9hZGluZ01haW5SZXNv
dXJjZSgpIHx8IChwYXJzZXIoKSAmJiBwYXJzZXIoKS0+aXNFeGVjdXRpbmdTY3JpcHQoKSkpCisg
ICAgICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIoKS0+aXNMb2FkaW5nTWFpblJlc291cmNlKCkKKyAg
ICAgICAgICAgIHx8IChzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKSAmJiBzY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIoKS0+aXNFeGVjdXRpbmdTY3JpcHQoKSkpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgCisKICAgICAgICAgaWYgKG1fZnJhbWUtPmxvYWRlcigpLT5zdGF0ZSgpID09IEZyYW1l
U3RhdGVQcm92aXNpb25hbCkKICAgICAgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5zdG9wQWxs
TG9hZGVycygpOwogICAgIH0KQEAgLTE3NTMsOCArMTc1OSw4IEBAIHZvaWQgRG9jdW1lbnQ6Omlt
cGxpY2l0T3BlbigpCiAgICAgbV9wYXJzZXIgPSBjcmVhdGVQYXJzZXIoKTsKICAgICBzZXRQYXJz
aW5nKHRydWUpOwogCi0gICAgaWYgKG1fZnJhbWUpCi0gICAgICAgIG1fcGFyc2VyLT5zZXRYU1NB
dWRpdG9yKG1fZnJhbWUtPnNjcmlwdCgpLT54c3NBdWRpdG9yKCkpOworICAgIGlmIChtX2ZyYW1l
ICYmIHNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpKQorICAgICAgICBzY3JpcHRhYmxlRG9jdW1l
bnRQYXJzZXIoKS0+c2V0WFNTQXVkaXRvcihtX2ZyYW1lLT5zY3JpcHQoKS0+eHNzQXVkaXRvcigp
KTsKIAogICAgIC8vIElmIHdlIHJlbG9hZCwgdGhlIGFuaW1hdGlvbiBjb250cm9sbGVyIHN0aWNr
cyBhcm91bmQgYW5kIGhhcwogICAgIC8vIGEgc3RhbGUgYW5pbWF0aW9uIHRpbWUuIFdlIG5lZWQg
dG8gdXBkYXRlIGl0IGhlcmUuCkBAIC0xODM5LDcgKzE4NDUsNyBAQCB2b2lkIERvY3VtZW50Ojpp
bXBsaWNpdENsb3NlKCkKIAogICAgIG1fcHJvY2Vzc2luZ0xvYWRFdmVudCA9IHRydWU7CiAKLSAg
ICBtX3dlbGxGb3JtZWQgPSBtX3BhcnNlciAmJiBtX3BhcnNlci0+d2VsbEZvcm1lZCgpOworICAg
IG1fd2VsbEZvcm1lZCA9IHNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpICYmIHNjcmlwdGFibGVE
b2N1bWVudFBhcnNlcigpLT53ZWxsRm9ybWVkKCk7CiAKICAgICAvLyBXZSBoYXZlIHRvIGNsZWFy
IHRoZSBwYXJzZXIsIGluIGNhc2Ugc29tZW9uZSBkb2N1bWVudC53cml0ZSgpcyBmcm9tIHRoZQog
ICAgIC8vIG9uTG9hZCBldmVudCBoYW5kbGVyLCBhcyBpbiBSYWRhciAzMjA2NTI0LgpAQCAtMTk5
NSwyMSArMjAwMSwxMCBAQCB2b2lkIERvY3VtZW50Ojp3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJp
bmcmIHRleHQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQogICAgICAgICBvcGVuKG93bmVyRG9j
dW1lbnQpOwogCiAgICAgQVNTRVJUKG1fcGFyc2VyKTsKLSAgICAvLyBGSVhNRTogZm9yY2VTeW5j
aHJvbm91cyBzaG91bGQgYWx3YXlzIGJlIHRoZSBzYW1lIGFzIHRoZSBib29sIHBhc3NlZCB0bwot
ICAgIC8vIHdyaXRlKCkuICBIb3dldmVyIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlciB1c2VzIHdy
aXRlKCIiLCBmYWxzZSkgdG8gcHVtcAotICAgIC8vIHRoZSBwYXJzZXIgKGFmdGVyIHJ1bm5pbmcg
ZXh0ZXJuYWwgc2NyaXB0cywgZXRjLikgdGh1cyBuZWNlc3NpdGF0aW5nIGEKLSAgICAvLyBzZXBh
cmF0ZSBzdGF0ZSBmb3IgZm9yY2VTeW5jaHJvbm91cy4KLSAgICBib29sIHdhc0ZvcmNlZFN5bmNo
cm9ub3VzID0gZmFsc2U7Ci0gICAgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBt
X3BhcnNlci0+YXNIVE1MRG9jdW1lbnRQYXJzZXIoKTsKLSAgICBpZiAocGFyc2VyKSB7Ci0gICAg
ICAgIHdhc0ZvcmNlZFN5bmNocm9ub3VzID0gcGFyc2VyLT5mb3JjZVN5bmNocm9ub3VzKCk7Ci0g
ICAgICAgIHBhcnNlci0+c2V0Rm9yY2VTeW5jaHJvbm91cyh0cnVlKTsKLSAgICB9Ci0KLSAgICBt
X3BhcnNlci0+d3JpdGUodGV4dCwgZmFsc2UpOwotCi0gICAgaWYgKG1fcGFyc2VyICYmIHBhcnNl
ciAmJiBtX3BhcnNlci0+YXNIVE1MRG9jdW1lbnRQYXJzZXIoKSA9PSBwYXJzZXIpCi0gICAgICAg
IHBhcnNlci0+c2V0Rm9yY2VTeW5jaHJvbm91cyh3YXNGb3JjZWRTeW5jaHJvbm91cyk7CisgICAg
Ly8gRklYTUU6IEpTIGNvZGUgY2FuIGFsd2F5cyBjYWxsIGRvY3VtZW50LndyaXRlLCBhbGwgRG9j
dW1lbnRQYXJzZXJzIG1heQorICAgIC8vIG5lZWQgdG8gaGFuZGxlIGl0LiAgPGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTM5Nz4KKyAgICBpZiAoc2NyaXB0YWJsZURv
Y3VtZW50UGFyc2VyKCkpCisgICAgICAgIHNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpLT5zeW5j
aHJvbm91c1NjcmlwdFdyaXRlKHRleHQpOwogCiAjaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NI
RURVTElORwogICAgIGlmICghb3duZXJFbGVtZW50KCkpCkBAIC0yNjA1LDkgKzI2MDAsOSBAQCB2
b2lkIERvY3VtZW50OjpyZW1vdmVQZW5kaW5nU2hlZXQoKQogI2VuZGlmCiAKICAgICB1cGRhdGVT
dHlsZVNlbGVjdG9yKCk7Ci0gICAgCi0gICAgaWYgKCFtX3BlbmRpbmdTdHlsZXNoZWV0cyAmJiBt
X3BhcnNlcikKLSAgICAgICAgbV9wYXJzZXItPmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxl
c2hlZXRzKCk7CisKKyAgICBpZiAoIW1fcGVuZGluZ1N0eWxlc2hlZXRzICYmIHNjcmlwdGFibGVE
b2N1bWVudFBhcnNlcigpKQorICAgICAgICBzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKS0+ZXhl
Y3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKIAogICAgIGlmICghbV9wZW5kaW5n
U3R5bGVzaGVldHMgJiYgbV9nb3RvQW5jaG9yTmVlZGVkQWZ0ZXJTdHlsZXNoZWV0c0xvYWQgJiYg
dmlldygpKQogICAgICAgICB2aWV3KCktPnNjcm9sbFRvRnJhZ21lbnQobV9mcmFtZS0+bG9hZGVy
KCktPnVybCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCmluZGV4IDMxN2ZiYjc2N2Y4Y2VkNjc0ZGQ0ZTIxNzQyOWQ0OGIwOTM3
M2FlNGMuLjAxNDkzY2NiNDE4ZmY4ZTYzNzA1YjFiY2VlM2M0MWViYzE0YzdkMGIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApA
QCAtMTAwLDYgKzEwMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBSZWdpc3Rl
cmVkRXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBSZW5kZXJBcmVuYTsKICAgICBjbGFzcyBSZW5k
ZXJWaWV3OworICAgIGNsYXNzIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcjsKICAgICBjbGFzcyBT
Y3JpcHRFbGVtZW50RGF0YTsKICAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsKICAgICBjbGFzcyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU7CkBAIC01NDEsNyArNTQyLDggQEAgcHVibGljOgogICAgIENT
U1N0eWxlU2hlZXQqIG1hcHBlZEVsZW1lbnRTaGVldCgpOwogICAgIAogICAgIHZpcnR1YWwgRG9j
dW1lbnRQYXJzZXIqIGNyZWF0ZVBhcnNlcigpOwotICAgIERvY3VtZW50UGFyc2VyKiBwYXJzZXIo
KSB7IHJldHVybiBtX3BhcnNlci5nZXQoKTsgfQorICAgIERvY3VtZW50UGFyc2VyKiBwYXJzZXIo
KSBjb25zdCB7IHJldHVybiBtX3BhcnNlci5nZXQoKTsgfQorICAgIFNjcmlwdGFibGVEb2N1bWVu
dFBhcnNlciogc2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgY29uc3Q7CiAgICAgCiAgICAgYm9v
bCBwcmludGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbnRpbmc7IH0KICAgICB2b2lkIHNldFBy
aW50aW5nKGJvb2wgcCkgeyBtX3ByaW50aW5nID0gcDsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vRG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmgKaW5kZXgg
ODgxMTM2YzMwZWQ3MWZkYWJlM2QxYTQ5MmViOWY0ZWIyYmFmZmZlZi4uMzA2Mjg4NmNkZGJjMzAw
MWNiMzQ3NmYwNmRhZDVjZjhkNTg3OTU4NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1l
bnRQYXJzZXIuaAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oCkBAIC0yNSwyOCAr
MjUsMjQgQEAKICNkZWZpbmUgRG9jdW1lbnRQYXJzZXJfaAogCiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIExlZ2FjeUhUTUxUcmVlQnVpbGRlcjsKLWNs
YXNzIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjsKLWNsYXNzIFNlZ21lbnRlZFN0cmluZzsKLWNs
YXNzIFhTU0F1ZGl0b3I7CitjbGFzcyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXI7CitjbGFzcyBS
YXdEYXRhRG9jdW1lbnRQYXJzZXI7CiAKIGNsYXNzIERvY3VtZW50UGFyc2VyIDogcHVibGljIE5v
bmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Eb2N1bWVudFBhcnNlcigpIHsgfQog
Ci0gICAgLy8gU2NyaXB0IG91dHB1dCBtdXN0IGJlIHByZXBlbmRlZCwgd2hpbGUgbmV3IGRhdGEK
LSAgICAvLyByZWNlaXZlZCBkdXJpbmcgZXhlY3V0aW5nIGEgc2NyaXB0IG11c3QgYmUgYXBwZW5k
ZWQsIGhlbmNlIHRoZQotICAgIC8vIGV4dHJhIGJvb2wgdG8gYmUgYWJsZSB0byBkaXN0aW5ndWlz
aCBiZXR3ZWVuIGJvdGggY2FzZXMuCi0gICAgLy8gZG9jdW1lbnQud3JpdGUoKSBhbHdheXMgdXNl
cyBmYWxzZSwgd2hpbGUgdGhlIGxvYWRlciB1c2VzIHRydWUuCi0gICAgdmlydHVhbCB2b2lkIHdy
aXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYsIGJvb2wgaXNGcm9tTmV0d29yaykgPSAwOworICAg
IHZpcnR1YWwgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBhc1NjcmlwdGFibGVEb2N1bWVudFBh
cnNlcigpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFJhd0RhdGFEb2N1bWVudFBhcnNlciog
YXNSYXdEYXRhRG9jdW1lbnRQYXJzZXIoKSB7IHJldHVybiAwOyB9CisKICAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBmaW5pc2hXYXNDYWxsZWQoKSA9IDA7
Ci0gICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBib29sIGlzRXhlY3V0aW5nU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBzdG9wUGFyc2luZygpIHsgbV9wYXJzZXJTdG9wcGVkID0gdHJ1
ZTsgfQogICAgIC8vIEZJWE1FOiBwcm9jZXNzaW5nRGF0YSgpIGlzIG9ubHkgdXNlZCBieSBEb2N1
bWVudExvYWRlcjo6aXNMb2FkaW5nSW5BUElTZW5zZQpAQCAtNTQsMzkgKzUwLDE1IEBAIHB1Ymxp
YzoKICAgICAvLyBhY3R1YWxseSBpbXBsZW1lbnRzIGl0LgogICAgIHZpcnR1YWwgYm9vbCBwcm9j
ZXNzaW5nRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wg
d2FudHNSYXdEYXRhKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
d3JpdGVSYXdEYXRhKGNvbnN0IGNoYXIqIC8qZGF0YSovLCBpbnQgLypsZW5ndGgqLykKLSAgICB7
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgdmlydHVhbCBib29sIHdlbGxGb3JtZWQoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9Ci0KLSAgICB2aXJ0dWFsIGludCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gLTE7IH0K
LSAgICB2aXJ0dWFsIGludCBjb2x1bW5OdW1iZXIoKSBjb25zdCB7IHJldHVybiAtMTsgfQotCi0g
ICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkge30K
LQorICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgaGFjayBmb3IgSFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6cmVtb3ZlZEZyb21UcmVlCiAgICAgdmlydHVhbCBMZWdhY3lIVE1MVHJlZUJ1aWxkZXIqIGh0
bWxUcmVlQnVpbGRlcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIExlZ2FjeUhU
TUxEb2N1bWVudFBhcnNlciogYXNIVE1MRG9jdW1lbnRQYXJzZXIoKSB7IHJldHVybiAwOyB9Ci0K
LSAgICAvLyBGSVhNRTogdmlldyBzb3VyY2UgbW9kZSBpcyBvbmx5IHVzZWQgYnkgdGhlIEhUTUwg
YW5kIFRleHQKLSAgICAvLyBEb2N1bWVudFBhcnNlcnMgYW5kIG1heSBub3QgYmVsb25nIG9uIHRo
ZSBiYXNlLWNsYXNzLgotICAgIGJvb2wgaW5WaWV3U291cmNlTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1faW5WaWV3U291cmNlTW9kZTsgfQotICAgIHZvaWQgc2V0SW5WaWV3U291cmNlTW9kZShib29s
IG1vZGUpIHsgbV9pblZpZXdTb3VyY2VNb2RlID0gbW9kZTsgfQogCiAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudDsgfQogCi0gICAgWFNTQXVkaXRvciog
eHNzQXVkaXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fWFNTQXVkaXRvcjsgfQotICAgIHZvaWQgc2V0
WFNTQXVkaXRvcihYU1NBdWRpdG9yKiBhdWRpdG9yKSB7IG1fWFNTQXVkaXRvciA9IGF1ZGl0b3I7
IH0KLQogcHJvdGVjdGVkOgotICAgIERvY3VtZW50UGFyc2VyKERvY3VtZW50KiBkb2N1bWVudCwg
Ym9vbCB2aWV3U291cmNlTW9kZSA9IGZhbHNlKQorICAgIERvY3VtZW50UGFyc2VyKERvY3VtZW50
KiBkb2N1bWVudCkKICAgICAgICAgOiBtX3BhcnNlclN0b3BwZWQoZmFsc2UpCi0gICAgICAgICwg
bV9pblZpZXdTb3VyY2VNb2RlKHZpZXdTb3VyY2VNb2RlKQogICAgICAgICAsIG1fZG9jdW1lbnQo
ZG9jdW1lbnQpCi0gICAgICAgICwgbV9YU1NBdWRpdG9yKDApCiAgICAgewogICAgICAgICBBU1NF
UlQoZG9jdW1lbnQpOwogICAgIH0KQEAgLTk1LDEyICs2Nyw5IEBAIHByb3RlY3RlZDoKICAgICAv
LyBpdCBzdG9wcyByZWNlaXZpbmcgZGF0YS4gV2UgdXNlIG1fcGFyc2VyU3RvcHBlZCB0byBzdG9w
IHRoZSBwYXJzZXIKICAgICAvLyBldmVuIHdoZW4gaXQgaGFzIGJ1ZmZlcmVkIGRhdGEuCiAgICAg
Ym9vbCBtX3BhcnNlclN0b3BwZWQ7Ci0gICAgYm9vbCBtX2luVmlld1NvdXJjZU1vZGU7CiAKICAg
ICAvLyBFdmVyeSBEb2N1bWVudFBhcnNlciBuZWVkcyBhIHBvaW50ZXIgYmFjayB0byB0aGUgZG9j
dW1lbnQuCiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7Ci0gICAgLy8gVGhlIFhTU0F1ZGl0b3Ig
YXNzb2NpYXRlZCB3aXRoIHRoaXMgZG9jdW1lbnQgcGFyc2VyLgotICAgIFhTU0F1ZGl0b3IqIG1f
WFNTQXVkaXRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oIGIvV2ViQ29yZS9kb20vUmF3RGF0YURv
Y3VtZW50UGFyc2VyLmgKaW5kZXggNzdkMTQ4ZGY5ZDAxNjk5MzNiNzc4ZGM1NjQ1YTcwYWNkNzk2
Y2Q3ZS4uY2UxMmUwZjA0OTc2ZTRmYmUwZGQ2MmMxZmZlODZmZWQ5YTE0NTM5YyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmgKKysrIGIvV2ViQ29yZS9kb20v
UmF3RGF0YURvY3VtZW50UGFyc2VyLmgKQEAgLTMwLDEyICszMCw2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotLy8gRklYTUU6IEl0IHNlZW1zIHdyb25nIHRoYXQgUmF3RGF0YURvY3VtZW50
UGFyc2VyIGlzIGEgc3ViY2xhc3Mgb2YKLS8vIERvY3VtZW50UGFyc2VyLiAgUmF3RGF0YURvY3Vt
ZW50UGFyc2VyLCBqdXN0IHdhbnRzIHRvIG92ZXJyaWRlIGFuIGVhcmxpZXIKLS8vIHZlcnNpb24g
b2Ygd3JpdGUoKSBiZWZvcmUgdGhlIGRhdGEgaXMgZGVjb2RlZC4gIFNlZW1zIHRoZSBkZWNvZGlu
ZyBjb3VsZAotLy8gbW92ZSBpbnRvIHRoZSBiYXNlLWNsYXNzIERvY3VtZW50UGFyc2VyLCBhbmQg
dGhlbiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIKLS8vIHdvdWxkIGp1c3QgYmUgc2hvcnQtY2lyY3V0
aW5nLiAgVGhhdCBjb3VsZCBzaW1wbGlmeSBzb21lIG9mIHRoZQotLy8gRG9jdW1lbnRXcml0ZXIg
bG9naWMuCiBjbGFzcyBSYXdEYXRhRG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgRG9jdW1lbnRQYXJz
ZXIgewogcHVibGljOgogICAgIFJhd0RhdGFEb2N1bWVudFBhcnNlcihEb2N1bWVudCogZG9jdW1l
bnQpCkBAIC00Myw2ICszNyw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAgdmlydHVh
bCBib29sIHdyaXRlUmF3RGF0YShjb25zdCBjaGFyKiwgaW50KSB7IHJldHVybiBmYWxzZTsgfQor
CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpCiAgICAgewpAQCAtNTEsMTEg
KzQ3LDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQg
d3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiwgYm9vbCkKLSAgICB7Ci0gICAgICAgIC8vIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjUzOTc+OiBKUyBjb2RlIGNh
biBhbHdheXMgY2FsbCBkb2N1bWVudC53cml0ZSwgd2UgbmVlZCB0byBoYW5kbGUgaXQuCi0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KKyAgICB2aXJ0dWFsIFJhd0RhdGFEb2N1
bWVudFBhcnNlciogYXNSYXdEYXRhRG9jdW1lbnRQYXJzZXIoKSB7IHJldHVybiB0aGlzOyB9CiAK
ICAgICB2aXJ0dWFsIGJvb2wgZmluaXNoV2FzQ2FsbGVkKCkKICAgICB7CkBAIC02MywxMSArNTUs
NiBAQCBwcml2YXRlOgogICAgICAgICAvLyBkZWxldGVkIGFmdGVyIGZpbmlzaCgpLgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQotCi0gICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNj
cmlwdHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCBib29sIHdhbnRz
UmF3RGF0YSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgd3JpdGVS
YXdEYXRhKGNvbnN0IGNoYXIqLCBpbnQpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9OwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNv
cmUvZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTNkYTk0ZjBk
NzMyZTQ0YzEyZWE4N2U4MGQ4NzBkZDQyMjY1M2ViOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1NjcmlwdGFibGVEb2N1bWVudFBhcnNlcjo6U2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCB2aWV3U291cmNlTW9kZSkKKyAgICA6
IERvY3VtZW50UGFyc2VyKGRvY3VtZW50KQorICAgICwgbV9pblZpZXdTb3VyY2VNb2RlKHZpZXdT
b3VyY2VNb2RlKQorICAgICwgbV94c3NBdWRpdG9yKDApCit7Cit9CisKK3ZvaWQgU2NyaXB0YWJs
ZURvY3VtZW50UGFyc2VyOjpzeW5jaHJvbm91c1NjcmlwdFdyaXRlKGNvbnN0IFNlZ21lbnRlZFN0
cmluZyYgc291cmNlKQoreworICAgIHdyaXRlKHNvdXJjZSwgZmFsc2UpOworfQorCit2b2lkIFNj
cmlwdGFibGVEb2N1bWVudFBhcnNlcjo6YXBwZW5kTmV0d29ya0RhdGEoY29uc3QgU2VnbWVudGVk
U3RyaW5nJiBzb3VyY2UpCit7CisgICAgd3JpdGUoc291cmNlLCB0cnVlKTsKK30KKworfTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIGIvV2ViQ29y
ZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTE1Y2JjNjE3Y2Y3
YzU1NTAwZGI3Y2Q4ODNhMzFiZGZhODZhYjc2MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
ZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisgCisjaWZuZGVmIFNjcmlwdGFi
bGVEb2N1bWVudFBhcnNlcl9oCisjZGVmaW5lIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcl9oCisK
KyNpbmNsdWRlICJEb2N1bWVudFBhcnNlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFNlZ21lbnRlZFN0cmluZzsKK2NsYXNzIFhTU0F1ZGl0b3I7CisKK2NsYXNzIFNjcmlwdGFi
bGVEb2N1bWVudFBhcnNlciA6IHB1YmxpYyBEb2N1bWVudFBhcnNlciB7CitwdWJsaWM6CisgICAg
U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCB2aWV3U291
cmNlTW9kZSA9IGZhbHNlKTsKKworICAgIC8vIFNjcmlwdCBvdXRwdXQgbXVzdCBiZSBwcmVwZW5k
ZWQsIHdoaWxlIG5ldyBkYXRhCisgICAgLy8gcmVjZWl2ZWQgZHVyaW5nIGV4ZWN1dGluZyBhIHNj
cmlwdCBtdXN0IGJlIGFwcGVuZGVkLCBoZW5jZSB0aGUKKyAgICAvLyBleHRyYSBib29sIHRvIGJl
IGFibGUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBib3RoIGNhc2VzLgorICAgIC8vIGRvY3VtZW50
LndyaXRlKCkgYWx3YXlzIHVzZXMgZmFsc2UsIHdoaWxlIHRoZSBsb2FkZXIgdXNlcyB0cnVlLgor
ICAgIC8vIE5PVEU6IE5ldyBjb2RlIHNob3VsZCBub3QgYmUgY2FsbGluZyBzeW5jaHJvbm91c1Nj
cmlwdFdyaXRlCisgICAgLy8gb3IgYXBwZW5kTmV0d29ya0RhdGEgaW5zdGVhZCBvZiBjYWxsaW5n
IHdyaXRlKCkgZGlyZWN0bHkuCisgICAgdmlydHVhbCB2b2lkIHdyaXRlKGNvbnN0IFNlZ21lbnRl
ZFN0cmluZyYsIGJvb2wgaXNGcm9tTmV0d29yaykgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHN5
bmNocm9ub3VzU2NyaXB0V3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJik7CisgICAgdmlydHVh
bCB2b2lkIGFwcGVuZE5ldHdvcmtEYXRhKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpOworCisgICAg
Ly8gT25seSB1c2VkIGJ5IERvY3VtZW50OjpvcGVuIGZvciBkZWNpZGluZyBpZiBpdHMgc2FmZSB0
byBhY3Qgb24gYQorICAgIC8vIGphdnNjcmlwdCBkb2N1bWVudC5vcGVuKCkgY2FsbCByaWdodCBu
b3csIG9yIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorICAgIHZpcnR1YWwgYm9vbCBpc0V4ZWN1dGlu
Z1NjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICAvLyBPbmx5IHVzZWQgYnkg
dGhlIFhNTERvY3VtZW50UGFyc2VyIHRvIGNvbW11bmljYXRlIGJhY2sgdG8KKyAgICAvLyBYTUxI
dHRwUmVxdWVzdCBpZiB0aGUgcmVzcG9uc2VYTUwgd2FzIHdlbGwgZm9ybWVkLgorICAgIHZpcnR1
YWwgYm9vbCB3ZWxsRm9ybWVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgLy8gRklY
TUU6IE9ubHkgdGhlIEhUTUxEb2N1bWVudFBhcnNlciBldmVyIGJsb2NrcyBzY3JpcHQgZXhlY3V0
aW9uIG9uCisgICAgLy8gc3R5bGVzaGVldCBsb2FkLCB3aGljaCBpcyBsaWtlbHkgYSBidWcgaW4g
dGhlIFhNTERvY3VtZW50UGFyc2VyLgorICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU2NyaXB0c1dh
aXRpbmdGb3JTdHlsZXNoZWV0cygpIHsgfQorCisgICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0Zv
clNjcmlwdHMoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGludCBsaW5lTnVtYmVyKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgaW50IGNvbHVtbk51bWJlcigpIGNvbnN0ID0gMDsKKworICAg
IC8vIEZJWE1FOiB2aWV3IHNvdXJjZSBtb2RlIGlzIG9ubHkgdXNlZCBieSB0aGUgSFRNTCBhbmQg
VGV4dAorICAgIC8vIERvY3VtZW50UGFyc2VycyBhbmQgbWF5IG5vdCBiZWxvbmcgb24gdGhlIGJh
c2UtY2xhc3MuCisgICAgYm9vbCBpblZpZXdTb3VyY2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9p
blZpZXdTb3VyY2VNb2RlOyB9CisgICAgdm9pZCBzZXRJblZpZXdTb3VyY2VNb2RlKGJvb2wgbW9k
ZSkgeyBtX2luVmlld1NvdXJjZU1vZGUgPSBtb2RlOyB9CisKKyAgICBYU1NBdWRpdG9yKiB4c3NB
dWRpdG9yKCkgY29uc3QgeyByZXR1cm4gbV94c3NBdWRpdG9yOyB9CisgICAgdm9pZCBzZXRYU1NB
dWRpdG9yKFhTU0F1ZGl0b3IqIGF1ZGl0b3IpIHsgbV94c3NBdWRpdG9yID0gYXVkaXRvcjsgfQor
Citwcml2YXRlOgorICAgIHZpcnR1YWwgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBhc1Njcmlw
dGFibGVEb2N1bWVudFBhcnNlcigpIHsgcmV0dXJuIHRoaXM7IH0KKworICAgIGJvb2wgbV9pblZp
ZXdTb3VyY2VNb2RlOworCisgICAgLy8gVGhlIFhTU0F1ZGl0b3IgYXNzb2NpYXRlZCB3aXRoIHRo
aXMgZG9jdW1lbnQgcGFyc2VyLgorICAgIFhTU0F1ZGl0b3IqIG1feHNzQXVkaXRvcjsKK307CisK
K307CisKKyNlbmRpZiAvLyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXJfaApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwIGIvV2ViQ29yZS9kb20vVmlld3BvcnRB
cmd1bWVudHMuY3BwCmluZGV4IDIzZDAyOTdkOTg3Nzk0MDExNmY4Y2E2NWUzOGY1ZmNkMjU5ODc5
MWQuLmE0ZDhmYzJiODgzODA4ZmFhYWE3YWNkY2Q5YjcwMjA1YjY1NjA1YmMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAorKysgYi9XZWJDb3JlL2RvbS9WaWV3
cG9ydEFyZ3VtZW50cy5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUg
IkRvY3VtZW50UGFyc2VyLmgiCisjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAzLDEwICsxMDMsMTYgQEAgc3RhdGljIE1l
c3NhZ2VMZXZlbCB2aWV3cG9ydEVycm9yTWVzc2FnZUxldmVsKFZpZXdwb3J0RXJyb3JDb2RlIGVy
cm9yQ29kZSkKICAgICByZXR1cm4gZXJyb3JDb2RlID09IFVucmVjb2duaXplZFZpZXdwb3J0QXJn
dW1lbnRFcnJvciB8fCBlcnJvckNvZGUgPT0gTWF4aW11bVNjYWxlVG9vTGFyZ2VFcnJvciA/IEVy
cm9yTWVzc2FnZUxldmVsIDogVGlwTWVzc2FnZUxldmVsOwogfQogCi12b2lkIHJlcG9ydFZpZXdw
b3J0V2FybmluZyhEb2N1bWVudCogZG9jdW1lbnQsIFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29k
ZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCkKKy8vIEZJWE1FOiBXaHkgaXMgdGhpcyBkaWZm
ZXJlbnQgZnJvbSBTVkdEb2N1bWVudEV4dGVudGlvbnMgcGFyc2VyTGluZU51bWJlcj8KK3N0YXRp
YyBpbnQgcGFyc2VyTGluZU51bWJlcihEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgRG9jdW1l
bnRQYXJzZXIqIHBhcnNlciA9IGRvY3VtZW50LT5wYXJzZXIoKTsKKyAgICBpZiAoZG9jdW1lbnQg
JiYgZG9jdW1lbnQtPnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpKQorICAgICAgICByZXR1cm4g
ZG9jdW1lbnQtPnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpLT5saW5lTnVtYmVyKCkgKyAxOwor
ICAgIHJldHVybiAwOworfQogCit2b2lkIHJlcG9ydFZpZXdwb3J0V2FybmluZyhEb2N1bWVudCog
ZG9jdW1lbnQsIFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudCkKK3sKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CkBAIC0xMTQsNyArMTIwLDcgQEAgdm9pZCByZXBv
cnRWaWV3cG9ydFdhcm5pbmcoRG9jdW1lbnQqIGRvY3VtZW50LCBWaWV3cG9ydEVycm9yQ29kZSBl
cnJvckNvZGUsIGNvbnMKICAgICBTdHJpbmcgbWVzc2FnZSA9IHZpZXdwb3J0RXJyb3JNZXNzYWdl
VGVtcGxhdGUoZXJyb3JDb2RlKTsKICAgICBtZXNzYWdlLnJlcGxhY2UoIiVyZXBsYWNlbWVudCIs
IHJlcGxhY2VtZW50KTsKIAotICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRN
ZXNzYWdlKEhUTUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgdmlld3BvcnRFcnJvck1l
c3NhZ2VMZXZlbChlcnJvckNvZGUpLCBtZXNzYWdlLCBwYXJzZXIgPyBwYXJzZXItPmxpbmVOdW1i
ZXIoKSArIDEgOiAwLCBkb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkpOworICAgIGZyYW1lLT5kb21X
aW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEhUTUxNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChlcnJvckNvZGUpLCBtZXNzYWdlLCBw
YXJzZXJMaW5lTnVtYmVyKGRvY3VtZW50KSwgZG9jdW1lbnQtPnVybCgpLnN0cmluZygpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vWE1MRG9j
dW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmgKaW5kZXggYTU1
MDNmM2YzYmI2MmEzYmZlMzU1YjU3MmYxNmFkNTcxYmRjMjU0MC4uOTYyYTAyNGM3YzljYjI4NzNl
MGI3MGFlNGZiYmRhYzZmMzQ3ZWUyNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vWE1MRG9jdW1l
bnRQYXJzZXIuaAorKysgYi9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5oCkBAIC0yNywx
MCArMjcsMTAgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJGcmFnbWVudFNjcmlwdGluZ1Bl
cm1pc3Npb24uaCIKKyNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNs
dWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCi0jaW5jbHVk
ZSAiRG9jdW1lbnRQYXJzZXIuaCIKLSNpbmNsdWRlICJGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Np
b24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
IApAQCAtNzAsNyArNzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKICNlbmRpZgog
Ci0gICAgY2xhc3MgWE1MRG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgRG9jdW1lbnRQYXJzZXIsIHB1
YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CisgICAgY2xhc3MgWE1MRG9jdW1lbnRQYXJzZXIg
OiBwdWJsaWMgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VD
bGllbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgWE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQq
LCBGcmFtZVZpZXcqID0gMCk7CiAgICAgICAgIFhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJh
Z21lbnQqLCBFbGVtZW50KiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9XZWJDb3JlL2Rv
bS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IDMzYjBhMDk3ODNkODIyYWZkNzNj
YTRmMTBhMzQ1MjVkOGU2ZWE2MzkuLjY3NGY2OWYwNzkzYjU3N2YxNWZmZDg1OTRiMmQ5NjRlNzM5
MWYxZmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAKKysrIGIvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNTIz
LDcgKzUyMyw3IEBAIFBhc3NSZWZQdHI8WE1MUGFyc2VyQ29udGV4dD4gWE1MUGFyc2VyQ29udGV4
dDo6Y3JlYXRlTWVtb3J5UGFyc2VyKHhtbFNBWEhhbmRsZXJQCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCiBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIo
RG9jdW1lbnQqIGRvY3VtZW50LCBGcmFtZVZpZXcqIGZyYW1lVmlldykKLSAgICA6IERvY3VtZW50
UGFyc2VyKGRvY3VtZW50KQorICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGRvY3VtZW50
KQogICAgICwgbV92aWV3KGZyYW1lVmlldykKICAgICAsIG1fY29udGV4dCgwKQogICAgICwgbV9w
ZW5kaW5nQ2FsbGJhY2tzKG5ldyBQZW5kaW5nQ2FsbGJhY2tzKQpAQCAtNTUwLDcgKzU1MCw3IEBA
IFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudCogZG9jdW1lbnQs
IEZyYW1lVmlldyogZnJhbWVWaWV3KQogfQogCiBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1l
bnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIHBhcmVudEVsZW1l
bnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQotICAg
IDogRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQtPmRvY3VtZW50KCkpCisgICAgOiBTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQtPmRvY3VtZW50KCkpCiAgICAgLCBtX3ZpZXcoMCkKICAg
ICAsIG1fY29udGV4dCgwKQogICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKG5ldyBQZW5kaW5nQ2Fs
bGJhY2tzKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAg
Yi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA5ZDViYTU5ODg3Mzgw
MjY2ZDYzMDQ2OWQxY2FiNjM4NzI2NGVjOWI3Li45OGUyNTBiODI4YjY3MzQ3ZjVmNDU3YzMxOTk2
MDViNWY3ZThmYTVhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2Vy
LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNjYsNyAr
NjYsNyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UKIAogSFRNTERvY3VtZW50UGFyc2VyOjpI
VE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCByZXBvcnRFcnJv
cnMpCi0gICAgOiBEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKKyAgICA6IFNjcmlwdGFibGVEb2N1
bWVudFBhcnNlcihkb2N1bWVudCkKICAgICAsIG1fdG9rZW5pemVyKG5ldyBIVE1MVG9rZW5pemVy
KQogICAgICwgbV9zY3JpcHRSdW5uZXIobmV3IEhUTUxTY3JpcHRSdW5uZXIoZG9jdW1lbnQsIHRo
aXMpKQogICAgICwgbV90cmVlQnVpbGRlcihuZXcgSFRNTFRyZWVCdWlsZGVyKG1fdG9rZW5pemVy
LmdldCgpLCBkb2N1bWVudCwgcmVwb3J0RXJyb3JzKSkKQEAgLTgwLDcgKzgwLDcgQEAgSFRNTERv
Y3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50KiBkb2N1bWVudCwg
Ym9vbCByZXBvcnRFcnJvcnMKIC8vIEZJWE1FOiBNZW1iZXIgdmFyaWFibGVzIHNob3VsZCBiZSBn
cm91cGVkIGludG8gc2VsZi1pbml0aWFsaXppbmcgc3RydWN0cyB0bwogLy8gbWluaW1pemUgY29k
ZSBkdXBsaWNhdGlvbiBiZXR3ZWVuIHRoZXNlIGNvbnN0cnVjdG9ycy4KIEhUTUxEb2N1bWVudFBh
cnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBGcmFn
bWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKLSAgICA6IERvY3Vt
ZW50UGFyc2VyKGZyYWdtZW50LT5kb2N1bWVudCgpKQorICAgIDogU2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyKGZyYWdtZW50LT5kb2N1bWVudCgpKQogICAgICwgbV90b2tlbml6ZXIobmV3IEhUTUxU
b2tlbml6ZXIpCiAgICAgLCBtX3RyZWVCdWlsZGVyKG5ldyBIVE1MVHJlZUJ1aWxkZXIobV90b2tl
bml6ZXIuZ2V0KCksIGZyYWdtZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uKSkKICAgICAsIG1fZW5k
V2FzRGVsYXllZChmYWxzZSkKQEAgLTM0Miw5ICszNDIsOSBAQCB2b2lkIEhUTUxEb2N1bWVudFBh
cnNlcjo6c3RvcFdhdGNoaW5nRm9yTG9hZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkU2NyaXB0KQog
CiBib29sIEhUTUxEb2N1bWVudFBhcnNlcjo6c2hvdWxkTG9hZEV4dGVybmFsU2NyaXB0RnJvbVNy
Yyhjb25zdCBBdG9taWNTdHJpbmcmIHNyY1ZhbHVlKQogewotICAgIGlmICghbV9YU1NBdWRpdG9y
KQorICAgIGlmICgheHNzQXVkaXRvcigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1
cm4gbV9YU1NBdWRpdG9yLT5jYW5Mb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKHNyY1ZhbHVlKTsK
KyAgICByZXR1cm4geHNzQXVkaXRvcigpLT5jYW5Mb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKHNy
Y1ZhbHVlKTsKIH0KIAogdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MRG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuaApp
bmRleCBlYTUzZjQxNTk0M2RhYjBhNTkwYzI5ZTA4ZjAzMmM0N2VjMjI2NjZlLi5kZmZkN2YxODIy
OTY1YzY0ZjdiYjQ3MGE3MzhlYWI3NGNmOTMwMTk3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTERvY3VtZW50UGFyc2VyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNl
ci5oCkBAIC0yOCwxMSArMjgsMTEgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgiCisjaW5jbHVkZSAi
SFRNTElucHV0U3RyZWFtLmgiCiAjaW5jbHVkZSAiSFRNTFNjcmlwdFJ1bm5lckhvc3QuaCIKICNp
bmNsdWRlICJIVE1MVG9rZW4uaCIKLSNpbmNsdWRlICJIVE1MSW5wdXRTdHJlYW0uaCIKKyNpbmNs
dWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRTdHJp
bmcuaCIKLSNpbmNsdWRlICJEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIExlZ2FjeUhU
TUxUcmVlQnVpbGRlcjsKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXI7CiBjbGFzcyBTY3JpcHRTb3Vy
Y2VDb2RlOwogCi1jbGFzcyBIVE1MRG9jdW1lbnRQYXJzZXIgOiAgcHVibGljIERvY3VtZW50UGFy
c2VyLCBIVE1MU2NyaXB0UnVubmVySG9zdCwgQ2FjaGVkUmVzb3VyY2VDbGllbnQgeworY2xhc3Mg
SFRNTERvY3VtZW50UGFyc2VyIDogIHB1YmxpYyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIsIEhU
TUxTY3JpcHRSdW5uZXJIb3N0LCBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CiAgICAg
Ly8gRklYTUU6IFRoZXNlIGNvbnN0cnVjdG9ycyBzaG91bGQgYmUgbWFkZSBwcml2YXRlIGFuZCBy
ZXBsYWNlZCBieSBjcmVhdGUoKSBtZXRob2RzLgogICAgIEhUTUxEb2N1bWVudFBhcnNlcihIVE1M
RG9jdW1lbnQqLCBib29sIHJlcG9ydEVycm9ycyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
TGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9j
dW1lbnRQYXJzZXIuY3BwCmluZGV4IDlkOGExOWI2NGYwMzgzZGFlNTEyZmUwMGZlNTlmYzIxNWRl
YzRhNWIuLmFkZDVkNjk0ZTZjZjk1OTBlODk2ODczNTViZTZjNTAzNGYwZDRjMzAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1dlYkNv
cmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAg
aW5saW5lIHZvaWQgVG9rZW46OmFkZEF0dHJpYnV0ZShBdG9taWNTdHJpbmcmIGF0dHJOYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIGF0dHIKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogTGVnYWN5
SFRNTERvY3VtZW50UGFyc2VyOjpMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50
KiBkb2N1bWVudCwgYm9vbCByZXBvcnRFcnJvcnMpCi0gICAgOiBEb2N1bWVudFBhcnNlcihkb2N1
bWVudCkKKyAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKICAgICAsIG1f
YnVmZmVyKDApCiAgICAgLCBtX3NjcmlwdENvZGUoMCkKICAgICAsIG1fc2NyaXB0Q29kZVNpemUo
MCkKQEAgLTE2Nyw3ICsxNjcsNyBAQCBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OkxlZ2FjeUhU
TUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBib29sCiB9CiAKIExlZ2Fj
eUhUTUxEb2N1bWVudFBhcnNlcjo6TGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKEhUTUxWaWV3U291
cmNlRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQsIHRy
dWUpCisgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQsIHRydWUpCiAgICAg
LCBtX2J1ZmZlcigwKQogICAgICwgbV9zY3JpcHRDb2RlKDApCiAgICAgLCBtX3NjcmlwdENvZGVT
aXplKDApCkBAIC0xODYsNyArMTg2LDcgQEAgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpMZWdh
Y3lIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTFZpZXdTb3VyY2VEb2N1bWVudCogZG9jdW0KIH0KIAog
TGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1l
bnRGcmFnbWVudCogZnJhZywgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Bl
cm1pc3Npb24pCi0gICAgOiBEb2N1bWVudFBhcnNlcihmcmFnLT5kb2N1bWVudCgpKQorICAgIDog
U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGZyYWctPmRvY3VtZW50KCkpCiAgICAgLCBtX2J1ZmZl
cigwKQogICAgICwgbV9zY3JpcHRDb2RlKDApCiAgICAgLCBtX3NjcmlwdENvZGVTaXplKDApCkBA
IC0xMzkxLDcgKzEzOTEsNyBAQCBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OlN0YXRlIExlZ2Fj
eUhUTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VUYWcoU2VnbWVudGVkU3RyaQogCiAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobV9jdXJyZW50VG9rZW4uYmVnaW5UYWcgJiYgbV9jdXJyZW50VG9r
ZW4udGFnTmFtZSA9PSBzY3JpcHRUYWcgJiYgIWluVmlld1NvdXJjZU1vZGUoKSAmJiAhbV90cmVl
QnVpbGRlci0+c2tpcE1vZGUoKSAmJiBtX2F0dHJOYW1lID09IHNyY0F0dHIpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY29udGV4dChtX3Jhd0F0dHJpYnV0ZUJlZm9yZVZh
bHVlLmRhdGEoKSwgbV9yYXdBdHRyaWJ1dGVCZWZvcmVWYWx1ZS5zaXplKCkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChtX1hTU0F1ZGl0b3IgJiYgIW1fWFNTQXVkaXRvci0+Y2Fu
TG9hZEV4dGVybmFsU2NyaXB0RnJvbVNyYyhhdHRyaWJ1dGVWYWx1ZSkpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHhzc0F1ZGl0b3IoKSAmJiAheHNzQXVkaXRvcigpLT5jYW5Mb2Fk
RXh0ZXJuYWxTY3JpcHRGcm9tU3JjKGF0dHJpYnV0ZVZhbHVlKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSBibGFua1VSTCgpLnN0cmluZygpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogCkBAIC0xNDI4LDcgKzE0MjgsNyBAQCBMZWdhY3lIVE1M
RG9jdW1lbnRQYXJzZXI6OlN0YXRlIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VUYWco
U2VnbWVudGVkU3RyaQogCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50VG9r
ZW4uYmVnaW5UYWcgJiYgbV9jdXJyZW50VG9rZW4udGFnTmFtZSA9PSBzY3JpcHRUYWcgJiYgIWlu
Vmlld1NvdXJjZU1vZGUoKSAmJiAhbV90cmVlQnVpbGRlci0+c2tpcE1vZGUoKSAmJiBtX2F0dHJO
YW1lID09IHNyY0F0dHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY29u
dGV4dChtX3Jhd0F0dHJpYnV0ZUJlZm9yZVZhbHVlLmRhdGEoKSwgbV9yYXdBdHRyaWJ1dGVCZWZv
cmVWYWx1ZS5zaXplKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX1hTU0F1
ZGl0b3IgJiYgIW1fWFNTQXVkaXRvci0+Y2FuTG9hZEV4dGVybmFsU2NyaXB0RnJvbVNyYyhhdHRy
aWJ1dGVWYWx1ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHhzc0F1ZGl0b3Io
KSAmJiAheHNzQXVkaXRvcigpLT5jYW5Mb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKGF0dHJpYnV0
ZVZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWUg
PSBibGFua1VSTCgpLnN0cmluZygpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogCkBAIC0x
NzIzLDYgKzE3MjMsMTggQEAgdm9pZCBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OmRpZFdyaXRl
SFRNTCgpCiAgICAgI2VuZGlmCiB9CiAKK3ZvaWQgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpz
eW5jaHJvbm91c1NjcmlwdFdyaXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQorewor
ICAgIC8vIEZJWE1FOiBmb3JjZVN5bmNocm9ub3VzIHNob3VsZCBhbHdheXMgYmUgdGhlIHNhbWUg
YXMgdGhlIGJvb2wgcGFzc2VkIHRvCisgICAgLy8gd3JpdGUoKS4gIEhvd2V2ZXIgTGVnYWN5SFRN
TERvY3VtZW50UGFyc2VyIHVzZXMgd3JpdGUoIiIsIGZhbHNlKSB0byBwdW1wCisgICAgLy8gdGhl
IHBhcnNlciAoYWZ0ZXIgcnVubmluZyBleHRlcm5hbCBzY3JpcHRzLCBldGMuKSB0aHVzIG5lY2Vz
c2l0YXRpbmcgYQorICAgIC8vIHNlcGFyYXRlIHN0YXRlIGZvciBmb3JjZVN5bmNocm9ub3VzLgor
ICAgIGJvb2wgd2FzRm9yY2VkU3luY2hyb25vdXMgPSBmb3JjZVN5bmNocm9ub3VzKCk7CisgICAg
c2V0Rm9yY2VTeW5jaHJvbm91cyh0cnVlKTsKKyAgICB3cml0ZShzb3VyY2UsIGZhbHNlKTsKKyAg
ICBzZXRGb3JjZVN5bmNocm9ub3VzKHdhc0ZvcmNlZFN5bmNocm9ub3VzKTsKK30KKwogdm9pZCBM
ZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OndyaXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc3Ry
LCBib29sIGFwcGVuZERhdGEpCiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvaHRtbC9MZWdh
Y3lIVE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCAxYTkyZWNkMjQ3OGQyNTBhNDNiMmVmMjM5MGZj
ZmM4MDQzZWU1ZjlmLi5iMzdjZjM1MmJjOWYxYTBiMDczMWI5MjIyOTgyZmZhOTkwYWY5ZDU1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmgKKysrIGIv
V2ViQ29yZS9odG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5oCkBAIC0yOCw5ICsyOCw5IEBA
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJGcmFnbWVudFNj
cmlwdGluZ1Blcm1pc3Npb24uaCIKICNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKKyNpbmNsdWRl
ICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcu
aCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIkRvY3VtZW50UGFyc2VyLmgiCiAjaW5j
bHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KQEAgLTE0MCw3ICsxNDAsNyBAQCBwdWJsaWM6CiAvLyAobGlrZSBkZWFsaW5n
IHdpdGggPHNjcmlwdD4gdGFncykuICBUaGUgSFRNTCB0b2tlbml6ZXIgYml0cyBzaG91bGQgYmUg
cHVzaGVkCiAvLyBkb3duIGludG8gYSBzZXBhcmF0ZSBIVE1MIHRva2VuaXplciBjbGFzcy4KIAot
Y2xhc3MgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyIDogcHVibGljIERvY3VtZW50UGFyc2VyLCBw
dWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgeworY2xhc3MgTGVnYWN5SFRNTERvY3VtZW50UGFy
c2VyIDogcHVibGljIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciwgcHVibGljIENhY2hlZFJlc291
cmNlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTERv
Y3VtZW50KiwgYm9vbCByZXBvcnRFcnJvcnMpOwogICAgIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNl
cihIVE1MVmlld1NvdXJjZURvY3VtZW50Kik7CkBAIC0xNDgsNiArMTQ4LDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgfkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcigpOwogCiAgICAgdmlydHVhbCB2
b2lkIHdyaXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYsIGJvb2wgYXBwZW5kRGF0YSk7CisgICAg
dmlydHVhbCB2b2lkIHN5bmNocm9ub3VzU2NyaXB0V3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5n
Jik7CisKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCk7CiAgICAgdmlydHVhbCBib29sIGZpbmlz
aFdhc0NhbGxlZCgpOwogICAgIHZpcnR1YWwgYm9vbCBmb3JjZVN5bmNocm9ub3VzKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZS5mb3JjZVN5bmNocm9ub3VzKCk7IH0KQEAgLTE2NSw3ICsxNjcsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxl
c2hlZXRzKCk7CiAKICAgICB2aXJ0dWFsIExlZ2FjeUhUTUxUcmVlQnVpbGRlciogaHRtbFRyZWVC
dWlsZGVyKCkgY29uc3QgeyByZXR1cm4gbV90cmVlQnVpbGRlci5nZXQoKTsgfQotICAgIHZpcnR1
YWwgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKiBhc0hUTUxEb2N1bWVudFBhcnNlcigpIHsgcmV0
dXJuIHRoaXM7IH0KIAogcHJpdmF0ZToKICAgICBjbGFzcyBTdGF0ZTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAppbmRleCBhNjI4NTBjYWNkMWQ4Y2NlNWRmMGY5ZGVjMGNhNDNiYjVkNDc0ODVm
Li5mNzI0OTVjZTJjY2JjZDFkNzJlNmE3MDJlNzM5M2JjYjUzN2ViYzUyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUGFnZS5o
IgogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVk
ZSAiRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTQ2LDcgKzQ3LDYgQEAKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKIAogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwIGIvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRXcml0ZXIuY3BwCmluZGV4IGZlMGFjYjBkMWFlZTUzZWE1NmU1MGI1NmYxODc1
ZDNiNDdmOTIwMWQuLjc5MGU3MTk0OWNkNzgxZGU2N2Q2NGMzNzY3ZmJjNjc4ODRmZDFlMGEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKQEAgLTM4LDEyICszOCwxNCBAQAogI2luY2x1ZGUg
IkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIlBsYWNlaG9sZGVyRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJQbHVnaW5Eb2N1bWVudC5oIgorI2luY2x1ZGUgIlJhd0RhdGFEb2N1bWVudFBhcnNlci5oIgor
I2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJTaW5rRG9jdW1lbnQuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VE
ZWNvZGVyLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRQYXJzZXIuaCIKKwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTEzOCwxMiArMTQwLDEyIEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmFkZERh
dGEoY29uc3QgY2hhciogc3RyLCBpbnQgbGVuLCBib29sIGZsdXNoKQogICAgICAgICBsZW4gPSBz
dHJsZW4oc3RyKTsKIAogICAgIERvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5wYXJzZXIoKTsKLSAgICBpZiAocGFyc2VyICYmIHBhcnNlci0+d2FudHNSYXdEYXRh
KCkpIHsKKyAgICBpZiAocGFyc2VyICYmIHBhcnNlci0+YXNSYXdEYXRhRG9jdW1lbnRQYXJzZXIo
KSkgewogICAgICAgICBpZiAobGVuID4gMCkKLSAgICAgICAgICAgIHBhcnNlci0+d3JpdGVSYXdE
YXRhKHN0ciwgbGVuKTsKKyAgICAgICAgICAgIHBhcnNlci0+YXNSYXdEYXRhRG9jdW1lbnRQYXJz
ZXIoKS0+d3JpdGVSYXdEYXRhKHN0ciwgbGVuKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICAKKwogICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAgIGlmIChTZXR0aW5ncyogc2V0dGlu
Z3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpKSB7CiAgICAgICAgICAgICBtX2RlY29kZXIgPSBUZXh0
UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUobV9taW1lVHlwZSwKQEAgLTE4OCw4ICsxOTAsOCBAQCB2
b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IGNoYXIqIHN0ciwgaW50IGxlbiwgYm9v
bCBmbHVzaCkKICAgICB9CiAKICAgICBpZiAocGFyc2VyKSB7Ci0gICAgICAgIEFTU0VSVCghcGFy
c2VyLT53YW50c1Jhd0RhdGEoKSk7Ci0gICAgICAgIHBhcnNlci0+d3JpdGUoZGVjb2RlZCwgdHJ1
ZSk7CisgICAgICAgIEFTU0VSVChwYXJzZXItPmFzU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkp
OworICAgICAgICBwYXJzZXItPmFzU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCktPmFwcGVuZE5l
dHdvcmtEYXRhKGRlY29kZWQpOwogICAgIH0KIH0KIApAQCAtMjAzLDggKzIwNSwxMCBAQCB2b2lk
IERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IFN0cmluZyYgc3RyKQogICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5zZXRQYXJzZU1vZGUoRG9jdW1lbnQ6OlN0cmljdCk7CiAgICAgfQog
Ci0gICAgaWYgKERvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5w
YXJzZXIoKSkKLSAgICAgICAgcGFyc2VyLT53cml0ZShzdHIsIHRydWUpOworICAgIC8vIEl0J3Mg
dW5jbGVhciBob3cgdGhlIHBhcnNlciBjb3VsZCBldmVyIGJlIDAgZm9yIHRoaXMgY2FsbC4KKyAg
ICBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fZnJhbWUtPmRvY3VtZW50KCkt
PnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpOworICAgIGlmIChwYXJzZXIpCisgICAgICAgIHBh
cnNlci0+YXBwZW5kTmV0d29ya0RhdGEoc3RyKTsKIH0KIAogdm9pZCBEb2N1bWVudFdyaXRlcjo6
ZW5kKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1RleHREb2N1bWVudC5jcHAgYi9XZWJD
b3JlL2xvYWRlci9UZXh0RG9jdW1lbnQuY3BwCmluZGV4IDYyMmUxNDgxNTUzMDIxMjAxZmU5ZWU0
MGQxY2NiN2M4ZmU5MWMzYjguLjY0MTQ5MWUxOTY2YzllZjBlY2IzN2M0MzZjNzM2ZjcwY2EyOGJj
ZjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1RleHREb2N1bWVudC5jcHAKKysrIGIvV2Vi
Q29yZS9sb2FkZXIvVGV4dERvY3VtZW50LmNwcApAQCAtMzgsNyArMzgsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLWNsYXNzIFRleHREb2N1
bWVudFBhcnNlciA6IHB1YmxpYyBEb2N1bWVudFBhcnNlciB7CisvLyBGSVhNRTogVGV4dERvY3Vt
ZW50UGFyc2VyIGNvdWxkIGp1c3QgYmUgYW4gSFRNTERvY3VtZW50UGFyc2VyCisvLyB3aGljaCBz
dGFydGVkIHRoZSBUb2tlbml6ZXIgaW4gdGhlIFBsYWluVGV4dCBzdGF0ZS4KK2NsYXNzIFRleHRE
b2N1bWVudFBhcnNlciA6IHB1YmxpYyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIgewogcHVibGlj
OgogICAgIFRleHREb2N1bWVudFBhcnNlcihEb2N1bWVudCopOwogICAgIHZpcnR1YWwgflRleHRE
b2N1bWVudFBhcnNlcigpOwpAQCAtNDcsOCArNDksMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCB3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmLCBib29sIGFwcGVuZERhdGEpOwogICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2goKTsKICAgICB2aXJ0dWFsIGJvb2wgZmluaXNoV2FzQ2FsbGVk
KCk7Ci0gICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdDsKLSAgICAK
KworICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgb25seSBuZWVkZWQgYmVjYXVzZSBUZXh0RG9jdW1l
bnRQYXJzZXIgaW5oZXJpdHMgZnJvbQorICAgIC8vIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciBp
bnN0ZWFkIG9mIGEgc2ltcGxlciBEb2N1bWVudFBhcnNlci4KKyAgICB2aXJ0dWFsIGJvb2wgaXNX
YWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBp
bnQgbGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIC0xOyB9CisgICAgdmlydHVhbCBpbnQgY29s
dW1uTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gLTE7IH0KKwogICAgIGlubGluZSB2b2lkIGNoZWNr
QnVmZmVyKGludCBsZW4gPSAxMCkKICAgICB7CiAgICAgICAgIGlmICgobV9kZXN0IC0gbV9idWZm
ZXIpID4gbV9zaXplIC0gbGVuKSB7CkBAIC02MCw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIG1fc2l6ZSA9IG5ld1NpemU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgICAgIAorCiBwcml2
YXRlOgogICAgIEVsZW1lbnQqIG1fcHJlRWxlbWVudDsKIApAQCAtNzIsNyArNzksNyBAQCBwcml2
YXRlOgogfTsKIAogVGV4dERvY3VtZW50UGFyc2VyOjpUZXh0RG9jdW1lbnRQYXJzZXIoRG9jdW1l
bnQqIGRvY3VtZW50KQotICAgIDogRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCisgICAgOiBTY3Jp
cHRhYmxlRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgLCBtX3ByZUVsZW1lbnQoMCkKICAg
ICAsIG1fc2tpcExGKGZhbHNlKQogeyAgICAKQEAgLTgzLDcgKzkwLDcgQEAgVGV4dERvY3VtZW50
UGFyc2VyOjpUZXh0RG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogfSAgICAKIAog
VGV4dERvY3VtZW50UGFyc2VyOjpUZXh0RG9jdW1lbnRQYXJzZXIoSFRNTFZpZXdTb3VyY2VEb2N1
bWVudCogZG9jdW1lbnQpCi0gICAgOiBEb2N1bWVudFBhcnNlcihkb2N1bWVudCwgdHJ1ZSkKKyAg
ICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihkb2N1bWVudCwgdHJ1ZSkKICAgICAsIG1fcHJl
RWxlbWVudCgwKQogICAgICwgbV9za2lwTEYoZmFsc2UpCiB7ICAgIApAQCAtMTY4LDYgKzE3NSw4
IEBAIHZvaWQgVGV4dERvY3VtZW50UGFyc2VyOjpmaW5pc2goKQogICAgIG1fYnVmZmVyID0gMDsK
ICAgICBtX2Rlc3QgPSAwOwogCisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGNhbGwgZmluaXNo
UGFyc2luZyBldmVuIGlmIG1fcGFyc2VyU3RvcHBlZCBpcyB0cnVlPworICAgIC8vIFNlZSBlcXVp
dmFsZW50IGltcGxlbWVudGF0aW9uIGluIFJhd0RhdGFEb2N1bWVudFBhcnNlci4KICAgICBkb2N1
bWVudCgpLT5maW5pc2hlZFBhcnNpbmcoKTsKIH0KIApAQCAtMTc4LDEyICsxODcsNiBAQCBib29s
IFRleHREb2N1bWVudFBhcnNlcjo6ZmluaXNoV2FzQ2FsbGVkKCkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWJvb2wgVGV4dERvY3VtZW50UGFyc2VyOjppc1dhaXRpbmdGb3JTY3JpcHRzKCkgY29u
c3QKLXsKLSAgICAvLyBBIHRleHQgZG9jdW1lbnQgaXMgbmV2ZXIgd2FpdGluZyBmb3Igc2NyaXB0
cwotICAgIHJldHVybiBmYWxzZTsKLX0KLQogVGV4dERvY3VtZW50OjpUZXh0RG9jdW1lbnQoRnJh
bWUqIGZyYW1lKQogICAgIDogSFRNTERvY3VtZW50KGZyYW1lKQogewpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBiL1dlYkNvcmUvc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggN2IyODVlYjg2MWY3YTUxNzg4MGJkODkzZjk1ZDQwYTFh
ZjI4ODQ2MC4uZTU3OTVkMzQ3ZjYyNmUyYzM4NDM4NmQzMjZlNmM4YmY1NzcwYjA2NiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAorKysgYi9XZWJDb3Jl
L3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVk
ZSAiU1ZHU01JTEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU01JTFRpbWVDb250YWluZXIuaCIKLSNpbmNsdWRlICJYTUxEb2N1bWVudFBhcnNlci5oIgor
I2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTI1LDE2ICsxMjUsMjcgQEAg
Ym9vbCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnNhbXBsZUFuaW1hdGlvbkF0VGltZShjb25zdCBT
dHJpbmcmIGVsZW1lbnRJZCwgU1ZHU00KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGlu
dCBwYXJzZXJMaW5lTnVtYmVyKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBpZiAoZG9jdW1l
bnQtPnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpKQorICAgICAgICByZXR1cm4gZG9jdW1lbnQt
PnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpLT5saW5lTnVtYmVyKCk7CisgICAgcmV0dXJuIDE7
Cit9CisKK3N0YXRpYyB2b2lkIHJlcG9ydE1lc3NhZ2UoRG9jdW1lbnQqIGRvY3VtZW50LCBNZXNz
YWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAoRnJhbWUq
IGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCkpCisgICAgICAgIGZyYW1lLT5kb21XaW5kb3coKS0+
Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIGxl
dmVsLCBtZXNzYWdlLCBwYXJzZXJMaW5lTnVtYmVyKGRvY3VtZW50KSwgU3RyaW5nKCkpOworfQor
CiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVwb3J0V2FybmluZyhjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fZG9jLT5mcmFtZSgpKQotICAg
ICAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VT
b3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIldhcm5pbmc6ICIgKyBt
ZXNzYWdlLCBtX2RvYy0+cGFyc2VyKCkgPyBtX2RvYy0+cGFyc2VyKCktPmxpbmVOdW1iZXIoKSA6
IDEsIFN0cmluZygpKTsKKyAgICByZXBvcnRNZXNzYWdlKG1fZG9jLCBXYXJuaW5nTWVzc2FnZUxl
dmVsLCAiV2FybmluZzogIiArIG1lc3NhZ2UpOwogfQogCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5z
aW9uczo6cmVwb3J0RXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIGlmIChGcmFt
ZSogZnJhbWUgPSBtX2RvYy0+ZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5j
b25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJy
b3JNZXNzYWdlTGV2ZWwsICJFcnJvcjogIiArIG1lc3NhZ2UsIG1fZG9jLT5wYXJzZXIoKSA/IG1f
ZG9jLT5wYXJzZXIoKS0+bGluZU51bWJlcigpIDogMSwgU3RyaW5nKCkpOworICAgIHJlcG9ydE1l
c3NhZ2UobV9kb2MsIEVycm9yTWVzc2FnZUxldmVsLCAiRXJyb3I6ICIgKyBtZXNzYWdlKTsKIH0K
IAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdSZXNvdXJjZShjb25zdCBB
dG9taWNTdHJpbmcmIGlkLCBTVkdTdHlsZWRFbGVtZW50KiBvYmopCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59844</attachid>
            <date>2010-06-26 15:29:19 -0700</date>
            <delta_ts>2010-06-26 19:39:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41141-20100626152846.patch</filename>
            <type>text/plain</type>
            <size>50181</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBiYjFhNTc2MDBhNWQ1MzhlMDMyMGM4MjU0YWU1MzFlNTRjNmMzZjRhLi4yNjQ5M2RmOTU1ZDU1
ODE0M2IwMThhNTViMjU4MDdmMmVhYTZmYmI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0xMTQsNiArMTE0LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJZG9tL0NvbnRhaW5lck5vZGUuY3BwIFwK
IAlkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIFwKIAlkb20vRE9NU3RyaW5nTGlzdC5jcHAgXAor
CWRvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcCBcCiAJZG9tL0RvY3VtZW50LmNwcCBc
CiAJZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwIFwKIAlkb20vRG9jdW1lbnRQYXJzZXIuY3BwIFwK
QEAgLTE1OCw2ICsxNTksNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMp
IFwKIAlkb20vUXVhbGlmaWVkTmFtZS5jcHAgXAogCWRvbS9SYW5nZS5jcHAgXAogCWRvbS9SZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgXAorCWRvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIu
Y3BwIFwKIAlkb20vU2NyaXB0RWxlbWVudC5jcHAgXAogCWRvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBcCiAJZG9tL1NlbGVjdEVsZW1lbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDk1YmFlZjhiMjEy
NTI0MzM4YjQyMDIzYTA4Y2ZiMzUwN2UxZjEzNzYuLjg5NDFhOTM0OGI0NzFmZjNjYTI2MGUwNzA1
OWVhNjYyODQzODM3MzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzY5LDYgKzc2OSw3IEBAIFNFVChXZWJDb3JlX1NP
VVJDRVMKICAgICBkb20vQ3VzdG9tRXZlbnQuY3BwCiAgICAgZG9tL0RPTUltcGxlbWVudGF0aW9u
LmNwcAogICAgIGRvbS9ET01TdHJpbmdMaXN0LmNwcAorICAgIGRvbS9EZWNvZGVkRGF0YURvY3Vt
ZW50UGFyc2VyLmNwcAogICAgIGRvbS9EZXZpY2VPcmllbnRhdGlvbi5jcHAKICAgICBkb20vRGV2
aWNlT3JpZW50YXRpb25FdmVudC5jcHAKICAgICBkb20vRG9jdW1lbnQuY3BwCkBAIC04MTQsNiAr
ODE1LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9RdWFsaWZpZWROYW1lLmNwcAog
ICAgIGRvbS9SYW5nZS5jcHAKICAgICBkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwCisg
ICAgZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAKICAgICBkb20vU2NyaXB0RWxlbWVu
dC5jcHAKICAgICBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKICAgICBkb20vU2VsZWN0
RWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggM2E0NDMxN2NlNjIyZTI1ZGFhMWZmZjc4MmQxNjRlNWU3OWM5MzM3MC4uM2Y3
Yzk5OGU0OTdjNmQxMmIxZjY4ZDA0ZGUyMGJjMGUyMDUxNmU2ZiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OCBAQAorMjAx
MC0wNi0yNCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IGJhc2VjbGFzcyBmb3Ig
WE1MLCBIVE1MIGFuZCBUZXh0IERvY3VtZW50UGFyc2VycyB0byBjbGVhbiB1cCBEb2N1bWVudFBh
cnNlciBjYWxsIHNpdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MTE0MQorCisgICAgICAgIEJ5IHNwbGl0dGluZyBTY3JpcHRhYmxlRG9jdW1lbnRQ
YXJzZXIgYW5kIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIKKyAgICAgICAgb3V0IGZyb20gRG9j
dW1lbnRQYXJzZXIgd2UndmUgbWFkZSB0aGUgRG9jdW1lbnRQYXJzZXIgYW5kCisgICAgICAgIFJh
d0RhdGFEb2N1bWVudFBhcnNlciBjbGFzc2VzIHNpbXBsZXIuCisKKyAgICAgICAgTm8gZnVuY3Rp
b25hbCBjaGFuZ2UsIHRodXMgbm8gdGVzdHMuCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJMaW5l
TnVtYmVyKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNoZWV0OjpjaGVja0xvYWRlZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om9wZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmltcGxpY2l0T3Blbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
aW1wbGljaXRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlUGVuZGlu
Z1NoZWV0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpwYXJzZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFBhcnNlcjo6RG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudFBhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRQYXJzZXI6
OmFzU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKiBkb20vUmF3RGF0YURvY3Vt
ZW50UGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpSYXdEYXRhRG9jdW1lbnRQYXJzZXI6OmZp
bmlzaFdhc0NhbGxlZCk6CisgICAgICAgICogZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5j
cHA6IENvcGllZCBmcm9tIFdlYkNvcmUvaHRtbC9IVE1MRW50aXR5UGFyc2VyLmguCisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXI6OlNjcmlwdGFibGVEb2N1bWVudFBh
cnNlcik6CisgICAgICAgICogZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGFibGVEb2N1bWVudFBhcnNlcjo6aXNFeGVjdXRpbmdT
Y3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyOjpleGVj
dXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRhYmxlRG9jdW1lbnRQYXJzZXI6Onhzc0F1ZGl0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0YWJsZURvY3VtZW50UGFyc2VyOjpzZXRYU1NBdWRpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdGFibGVEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc2luZ0NvbnRlbnRXcml0dGVuQnlTY3Jp
cHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyOjphc1Njcmlw
dGFibGVEb2N1bWVudFBhcnNlcik6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlckxpbmVOdW1iZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6cmVwb3J0Vmlld3BvcnRXYXJuaW5nKToKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJz
ZXIuaDoKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcik6CisgICAg
ICAgICogaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTERvY3VtZW50UGFyc2VyOjpzaG91bGRMb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKToKKyAg
ICAgICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGh0bWwvTGVnYWN5
SFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxEb2N1
bWVudFBhcnNlcjo6TGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VUYWcpOgorICAgICAgICAqIGh0bWwvTGVn
YWN5SFRNTERvY3VtZW50UGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MRG9j
dW1lbnRQYXJzZXI6OnByb2Nlc3NpbmdDb250ZW50V3JpdHRlbkJ5U2NyaXB0KToKKyAgICAgICAg
KiBodG1sL0xlZ2FjeUhUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lIVE1MVHJlZUJ1aWxkZXI6OnJlcG9ydEVycm9yVG9Db25zb2xlKToKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5j
cHA6CisgICAgICAgICogbG9hZGVyL1RleHREb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0RG9jdW1lbnRQYXJzZXI6OlRleHREb2N1bWVudFBhcnNlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0RG9jdW1lbnRQYXJzZXI6OmZpbmlzaCk6CisgICAgICAgICogc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZXJMaW5lTnVtYmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RG9jdW1lbnRFeHRlbnNpb25zOjpyZXBvcnRXYXJuaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0RvY3VtZW50RXh0ZW5zaW9uczo6cmVwb3J0RXJyb3IpOgorCiAyMDEwLTA2LTI1ICBFcmljIFNl
aWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRo
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KaW5kZXggNTBiOTEzMDVkNTk2NjcxNDllNDA3NTk0YWJhYWVkZjI4MzIwZWM4Yi4uZjFl
MTlkM2RlOGFkOWM0NjYxZTA4NDBjNzMyMzA5YTJhYjljYzI2YyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC03NzMsNiAr
NzczLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRh
dGlvbi5oIFwKIAlXZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0LmNwcCBcCiAJV2ViQ29yZS9kb20v
RE9NU3RyaW5nTGlzdC5oIFwKKwlXZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2Vy
LmNwcCBcCisJV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oIFwKIAlXZWJD
b3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbi5jcHAgXAogCVdlYkNvcmUvZG9tL0RldmljZU9yaWVu
dGF0aW9uLmggXAogCVdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ2xpZW50LmggXApAQCAt
ODc2LDYgKzg3OCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9kb20vUmF3RGF0
YURvY3VtZW50UGFyc2VyLmggXAogCVdlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVy
LmNwcCBcCiAJV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCBcCisJV2ViQ29y
ZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNwcCBcCisJV2ViQ29yZS9kb20vU2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyLmggXAogCVdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwIFwK
IAlXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmggXAogCVdlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNDJkZjgxMDk1YTYyNGNiMGQ1NTY1MjdmNzBmYWEyZjRi
MTIxYWE1YS4uYWNhYTZkZWMxZmYxMDk2Yjk0NDc5ZDJlMzIyNzdiYzlkMDk0ZjdlNCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTExMDAsNiArMTEwMCw4IEBACiAgICAgICAgICAgICAnZG9tL0RPTUltcGxlbWVudGF0aW9uLmgn
LAogICAgICAgICAgICAgJ2RvbS9ET01TdHJpbmdMaXN0LmNwcCcsCiAgICAgICAgICAgICAnZG9t
L0RPTVN0cmluZ0xpc3QuaCcsCisgICAgICAgICAgICAnZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQ
YXJzZXIuY3BwJywKKyAgICAgICAgICAgICdkb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5o
JywKICAgICAgICAgICAgICdkb20vRGV2aWNlT3JpZW50YXRpb24uY3BwJywKICAgICAgICAgICAg
ICdkb20vRGV2aWNlT3JpZW50YXRpb24uaCcsCiAgICAgICAgICAgICAnZG9tL0RldmljZU9yaWVu
dGF0aW9uQ2xpZW50LmgnLApAQCAtMTIwNCw2ICsxMjA2LDggQEAKICAgICAgICAgICAgICdkb20v
UmF3RGF0YURvY3VtZW50UGFyc2VyLmgnLAogICAgICAgICAgICAgJ2RvbS9SZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lci5jcHAnLAogICAgICAgICAgICAgJ2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
ci5oJywKKyAgICAgICAgICAgICdkb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNwcCcsCisg
ICAgICAgICAgICAnZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAg
ICdkb20vU2NyaXB0RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TY3JpcHRFbGVtZW50
LmgnLAogICAgICAgICAgICAgJ2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCcsCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA5
ZWM2MDdlNDMxOThlMzU0YzEwNzU3MmZkYjc3NDE3YmZhNjc2OGI5Li4wMTRlNTNiYzRlMTc0ZDMz
ZWFjNTEzNzFhZDI5MTcxZTA3MTYyMjI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJv
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTQ3MSw2ICs0NzEsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBkb20vQ29udGFpbmVyTm9kZS5jcHAgXAogICAgIGRvbS9DU1NNYXBwZWRBdHRyaWJ1
dGVEZWNsYXJhdGlvbi5jcHAgXAogICAgIGRvbS9DdXN0b21FdmVudC5jcHAgXAorICAgIGRvbS9E
ZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcCBcCiAgICAgZG9tL0RldmljZU9yaWVudGF0aW9u
LmNwcCBcCiAgICAgZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIFwKICAgICBkb20vRG9j
dW1lbnQuY3BwIFwKQEAgLTUyMCw2ICs1MjEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vUmFu
Z2UuY3BwIFwKICAgICBkb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmggXAogICAgIGRvbS9SZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgXAorICAgIGRvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXIuY3BwIFwKICAgICBkb20vU2NyaXB0RWxlbWVudC5jcHAgXAogICAgIGRvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcCBcCiAgICAgZG9tL1NlbGVjdEVsZW1lbnQuY3BwIFwKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGYxYTRhOWUxMTcxYjAyYjM2YzUwODA4MDU5
MTUzZTFmMGU2YzlkYjkuLjRlZGQ0ZmFlYTQwMDAwMDg1YzkxZjEzNDRiNjM3MGNhZjAxMjBlYTEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjk3MzMsNiArMjk3MzMs
MTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cZG9tXERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXERlY29kZWREYXRhRG9jdW1l
bnRQYXJzZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGRvbVxEZXZpY2VPcmllbnRhdGlvbi5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+
DQpAQCAtMzAxNDksNiArMzAxNTcsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxk
b21cU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cU2NyaXB0RWxlbWVudC5jcHAiDQogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBmY2U2Mzg0ODBhYmRjMTZhNTk3YjI2OTQwYTJhMDNiYjJkN2Y3ZjU4Li5kMzRiNDcw
MzJmMDFmZWY0MDNlOGU2YTRmYTEyODNiZjdmOTllN2JmIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjk2Nyw2ICsyOTY3LDggQEAKIAkJQTgzQjc5NTcw
Q0NCMDEyNTAwMEIwODI1IC8qIERPTVNWR0ZvbnRGYWNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgzQjc5NDgwQ0NCMDEyNTAwMEIwODI1
IC8qIERPTVNWR0ZvbnRGYWNlRWxlbWVudC5oICovOyB9OwogCQlBODNFMUM3NDBFNDkwNDJDMDAx
NDBCOUMgLyogU2NyaXB0Q29udHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4M0UxQzcyMEU0OTA0MkIwMDE0MEI5QyAvKiBTY3JpcHRD
b250cm9sbGVyTWFjLm1tICovOyB9OwogCQlBODREODI3QzExRDMzM0VEMDA5NzI5OTAgLyogUmF3
RGF0YURvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBODREODI3QjExRDMzM0VEMDA5NzI5OTAgLyogUmF3RGF0YURvY3VtZW50UGFy
c2VyLmggKi87IH07CisJCUE4NEQ4MkMxMTFEMzQ3NDgwMDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4NEQ4MkJGMTFEMzQ3NDgwMDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIu
aCAqLzsgfTsKKwkJQTg0RDgyQzIxMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVu
dFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBODREODJDMDExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNw
cCAqLzsgfTsKIAkJQTg0RUJENzgwQ0I4Qzg5MjAwMDc5NjA5IC8qIEpTU3R5bGVTaGVldExpc3RD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTg0RUJENzcwQ0I4Qzg5MjAwMDc5NjA5IC8qIEpTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwICov
OyB9OwogCQlBODRFQkQ4MzBDQjhDOTc3MDAwNzk2MDkgLyogSlNTdHlsZVNoZWV0TGlzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg0RUJEODEwQ0I4
Qzk3NzAwMDc5NjA5IC8qIEpTU3R5bGVTaGVldExpc3QuaCAqLzsgfTsKIAkJQTg0RUJEODQwQ0I4
Qzk3NzAwMDc5NjA5IC8qIEpTU3R5bGVTaGVldExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg0RUJEODIwQ0I4Qzk3NzAwMDc5NjA5IC8qIEpT
U3R5bGVTaGVldExpc3QuY3BwICovOyB9OwpAQCAtMzA1Myw2ICszMDU1LDggQEAKIAkJQThBOTA5
QUMwQ0JDRDZCNTAwMjlCODA3IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTkwOUFBMENC
Q0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmggKi87IH07
CiAJCUE4QTkwOUFEMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29u
dGFpbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4QTkwOUFCMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyLmNwcCAqLzsgfTsKIAkJQThDMjI4MEUxMUQ0QTU5NzAwRDVBN0QzIC8qIERvY3VtZW50UGFy
c2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QzIyODBEMTFENEE1OTcwMEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAgKi87IH07CisJCUE4
QzIyOEExMTFENTcyMkUwMEQ1QTdEMyAvKiBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMyMjg5RjExRDU3
MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oICovOyB9OworCQlBOEMy
MjhBMjExRDU3MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMyMjhBMDExRDU3
MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAgKi87IH07CiAJCUE4
QzRBN0ZEMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEM0QTdFQjA5RDU2MzI3MDAwM0FDOEQg
LyogU3R5bGVkRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE4QzRBN0ZFMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzRBN0VD
MDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmNwcCAqLzsgfTsKIAkJQThDNEE4MDAw
OUQ1NjMyNzAwMDNBQzhEIC8qIE5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThDNEE3RUUwOUQ1NjMyNzAwMDNBQzhEIC8qIE5vZGUuY3BwICov
OyB9OwpAQCAtODQ1MCw2ICs4NDU0LDggQEAKIAkJQTgzQjc5NDgwQ0NCMDEyNTAwMEIwODI1IC8q
IERPTVNWR0ZvbnRGYWNlRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBET01TVkdGb250RmFjZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTgzRTFDNzIwRTQ5MDQyQjAwMTQwQjlDIC8qIFNjcmlwdENvbnRyb2xsZXJNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JpcHRDb250cm9sbGVyTWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODREODI3QjExRDMzM0VEMDA5NzI5OTAg
LyogUmF3RGF0YURvY3VtZW50UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJhd0RhdGFEb2N1bWVudFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBODREODJCRjExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdGFibGVEb2N1bWVudFBhcnNl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBODREODJDMDExRDM0NzQ4MDA5NzI5
OTAgLyogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE4NEVCRDc3MENCOEM4OTIwMDA3OTYwOSAvKiBKU1N0eWxlU2hl
ZXRMaXN0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
U3R5bGVTaGVldExpc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
ODRFQkQ4MTBDQjhDOTc3MDAwNzk2MDkgLyogSlNTdHlsZVNoZWV0TGlzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0eWxlU2hlZXRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE4NEVCRDgyMENCOEM5NzcwMDA3OTYwOSAvKiBKU1N0eWxlU2hlZXRM
aXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU3R5bGVTaGVl
dExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODUzNiw2ICs4NTQyLDgg
QEAKIAkJQThBOTA5QUEwQ0JDRDZCNTAwMjlCODA3IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFibGVD
b250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHVHJh
bnNmb3JtYWJsZUNvbnRhaW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE5
MDlBQjBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdUcmFuc2Zv
cm1hYmxlQ29udGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDMjI4
MEQxMUQ0QTU5NzAwRDVBN0QzIC8qIERvY3VtZW50UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQThDMjI4OUYxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9j
dW1lbnRQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RlZERh
dGFEb2N1bWVudFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEMyMjhB
MDExRDU3MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDNEE3RUIwOUQ1NjMyNzAwMDNB
QzhEIC8qIFN0eWxlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN0eWxlZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDNEE3RUMw
OUQ1NjMyNzAwMDNBQzhEIC8qIFN0eWxlZEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlZEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBOEM0QTdFRTA5RDU2MzI3MDAwM0FDOEQgLyogTm9kZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNjg4MSw2ICsxNjg4OSwxMCBAQAogCQkJCTU0QzUwRjdBMEU4MDFERjMw
MDk4MzJBMCAvKiBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwICovLAogCQkJCTVEMTVFM0E5
MEY5RTZBQzEwMDlFMEUzRiAvKiBYTUxEb2N1bWVudFBhcnNlclNjb3BlLmNwcCAqLywKIAkJCQk1
RDE1RTNBQTBGOUU2QUMxMDA5RTBFM0YgLyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5oICovLAor
CQkJCUE4NEQ4MkJGMTFEMzQ3NDgwMDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIu
aCAqLywKKwkJCQlBODREODJDMDExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyLmNwcCAqLywKKwkJCQlBOEMyMjg5RjExRDU3MjJFMDBENUE3RDMgLyogRGVjb2RlZERh
dGFEb2N1bWVudFBhcnNlci5oICovLAorCQkJCUE4QzIyOEEwMTFENTcyMkUwMEQ1QTdEMyAvKiBE
ZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZG9tOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE5NTQwLDYgKzE5NTUyLDggQEAKIAkJCQlB
OEU2QTc4MTExRDE2NjFCMDAzMTFGNEEgLyogSFRNTFBhcnNlclNjaGVkdWxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTg0RDgyN0MxMUQzMzNFRDAwOTcyOTkwIC8qIFJhd0RhdGFEb2N1bWVudFBh
cnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VBMzk0OUQxMUQ0NUNEQTAwMzA5NENGIC8qIFN0
YXRpY0hhc2hTZXROb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTg0RDgyQzExMUQzNDc0
ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQThDMjI4QTExMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtMjE4NjEsNiArMjE4NzUsOCBAQAogCQkJCUE4RTZBNzgyMTFE
MTY2MUIwMDMxMUY0QSAvKiBIVE1MUGFyc2VyU2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNFQTM5NDlDMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQThDMjI4MEUxMUQ0QTU5NzAwRDVBN0QzIC8qIERvY3VtZW50
UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE4NEQ4MkMyMTFEMzQ3NDgwMDk3Mjk5MCAv
KiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQThDMjI4
QTIxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA2
ZjA0NTdhMDM3ZjIxNmJjZDQ5ZGVkNDQzZjkxOWMwNzgzZThhNjRlLi4wYWE4ZjUyNjU4MTZkMjZj
YjcyMDQyOWQ2ZTFkNTFlODVkNmNiOTQ3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAKQEAgLTIxLDcgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAKLSNpbmNsdWRlICJEb2N1bWVudFBhcnNlci5oIgor
I2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIkV2ZW50Lmgi
CiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0yMzgsMTEg
KzIzOCwxMiBAQCBKU0RPTVdpbmRvd1NoZWxsKiBTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0
KERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiBpbnQgU2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5k
bGVyTGluZU51bWJlcigpIGNvbnN0CiB7CiAgICAgLy8gSlNDIGV4cGVjdHMgMS1iYXNlZCBsaW5l
IG51bWJlcnMsIHNvIHdlIG11c3QgYWRkIG9uZSBoZXJlIHRvIGdldCBpdCByaWdodC4KLSAgICBp
ZiAoRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnBhcnNlcigp
KQorICAgIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciogcGFyc2VyID0gbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCk7CisgICAgaWYgKHBhcnNlcikKICAgICAg
ICAgcmV0dXJuIHBhcnNlci0+bGluZU51bWJlcigpICsgMTsKICAgICByZXR1cm4gMDsKIH0KLSAg
ICAKKwogYm9vbCBTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoRE9NV3Jh
cHBlcldvcmxkKiB3b3JsZCkgY29uc3QKIHsKICAgICBpZiAobV9hbGxvd1BvcHVwc0Zyb21QbHVn
aW4gfHwgaXNKYXZhU2NyaXB0QW5jaG9yTmF2aWdhdGlvbigpKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApp
bmRleCA0MGJiMGRlY2MxMTQ4YWUxYzZjNjM1MDc0YWU2MzEyYzJhY2Q5YzcwLi4yMjdkMzdjYmI2
ODM0MDgwOWRiM2YzZWJiYWJiMDA1NjdlMTBlODg1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAt
MjA3LDcgKzIwNyw4IEBAIHZvaWQgQ1NTU3R5bGVTaGVldDo6Y2hlY2tMb2FkZWQoKQogICAgIGlm
IChwYXJlbnQoKSkKICAgICAgICAgcGFyZW50KCktPmNoZWNrTG9hZGVkKCk7CiAKLSAgICAvLyBB
dm9pZCB8dGhpc3wgYmVpbmcgZGVsZXRlZCBieSBzY3JpcHRzIHRoYXQgcnVuIHZpYSBMZWdhY3lI
VE1MRG9jdW1lbnRQYXJzZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCku
CisgICAgLy8gQXZvaWQgfHRoaXN8IGJlaW5nIGRlbGV0ZWQgYnkgc2NyaXB0cyB0aGF0IHJ1biB2
aWEKKyAgICAvLyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGlu
Z0ZvclN0eWxlc2hlZXRzKCkuCiAgICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS82NjIyMzAwPi4K
ICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcHJvdGVjdG9yKHRoaXMpOwogICAgIG1fbG9hZENv
bXBsZXRlZCA9IG93bmVyTm9kZSgpID8gb3duZXJOb2RlKCktPnNoZWV0TG9hZGVkKCkgOiB0cnVl
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IDhkZGVkYjM1NmMxZTkyODZkZmY5NWNkZmJmYzU5OThlZWMxYjE3Y2Uu
LmI4ZjQwZDNmYjZiZjQyYjQxODU5MzI5YjI5Mjg0MGQzNjZkYmZiNzcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTE3MDgsNiArMTcwOCwxMSBAQCBEb2N1bWVudFBhcnNlciogRG9jdW1lbnQ6OmNyZWF0ZVBhcnNl
cigpCiAgICAgcmV0dXJuIG5ldyBYTUxEb2N1bWVudFBhcnNlcih0aGlzLCB2aWV3KCkpOwogfQog
CitTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIqIERvY3VtZW50OjpzY3JpcHRhYmxlRG9jdW1lbnRQ
YXJzZXIoKSBjb25zdAoreworICAgIHJldHVybiBwYXJzZXIoKSA/IHBhcnNlcigpLT5hc1Njcmlw
dGFibGVEb2N1bWVudFBhcnNlcigpIDogMDsKK30KKwogdm9pZCBEb2N1bWVudDo6b3BlbihEb2N1
bWVudCogb3duZXJEb2N1bWVudCkKIHsKICAgICBpZiAob3duZXJEb2N1bWVudCkgewpAQCAtMTcx
Nyw5ICsxNzIyLDEwIEBAIHZvaWQgRG9jdW1lbnQ6Om9wZW4oRG9jdW1lbnQqIG93bmVyRG9jdW1l
bnQpCiAgICAgfQogCiAgICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgaWYgKG1fZnJhbWUtPmxv
YWRlcigpLT5pc0xvYWRpbmdNYWluUmVzb3VyY2UoKSB8fCAocGFyc2VyKCkgJiYgcGFyc2VyKCkt
PmlzRXhlY3V0aW5nU2NyaXB0KCkpKQorICAgICAgICBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIq
IHBhcnNlciA9IHNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpOworICAgICAgICBpZiAobV9mcmFt
ZS0+bG9hZGVyKCktPmlzTG9hZGluZ01haW5SZXNvdXJjZSgpIHx8IChwYXJzZXIgJiYgcGFyc2Vy
LT5pc0V4ZWN1dGluZ1NjcmlwdCgpKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAg
ICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPnN0YXRlKCkgPT0gRnJhbWVTdGF0ZVByb3Zpc2lv
bmFsKQogICAgICAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJzKCk7CiAg
ICAgfQpAQCAtMTc1Niw4ICsxNzYyLDkgQEAgdm9pZCBEb2N1bWVudDo6aW1wbGljaXRPcGVuKCkK
ICAgICBtX3BhcnNlciA9IGNyZWF0ZVBhcnNlcigpOwogICAgIHNldFBhcnNpbmcodHJ1ZSk7CiAK
LSAgICBpZiAobV9mcmFtZSkKLSAgICAgICAgbV9wYXJzZXItPnNldFhTU0F1ZGl0b3IobV9mcmFt
ZS0+c2NyaXB0KCktPnhzc0F1ZGl0b3IoKSk7CisgICAgU2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
KiBwYXJzZXIgPSBzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKTsKKyAgICBpZiAobV9mcmFtZSAm
JiBwYXJzZXIpCisgICAgICAgIHBhcnNlci0+c2V0WFNTQXVkaXRvcihtX2ZyYW1lLT5zY3JpcHQo
KS0+eHNzQXVkaXRvcigpKTsKIAogICAgIC8vIElmIHdlIHJlbG9hZCwgdGhlIGFuaW1hdGlvbiBj
b250cm9sbGVyIHN0aWNrcyBhcm91bmQgYW5kIGhhcwogICAgIC8vIGEgc3RhbGUgYW5pbWF0aW9u
IHRpbWUuIFdlIG5lZWQgdG8gdXBkYXRlIGl0IGhlcmUuCkBAIC0xODQyLDcgKzE4NDksOCBAQCB2
b2lkIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkKIAogICAgIG1fcHJvY2Vzc2luZ0xvYWRFdmVu
dCA9IHRydWU7CiAKLSAgICBtX3dlbGxGb3JtZWQgPSBtX3BhcnNlciAmJiBtX3BhcnNlci0+d2Vs
bEZvcm1lZCgpOworICAgIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciogcGFyc2VyID0gc2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyKCk7CisgICAgbV93ZWxsRm9ybWVkID0gcGFyc2VyICYmIHBhcnNl
ci0+d2VsbEZvcm1lZCgpOwogCiAgICAgLy8gV2UgaGF2ZSB0byBjbGVhciB0aGUgcGFyc2VyLCBp
biBjYXNlIHNvbWVvbmUgZG9jdW1lbnQud3JpdGUoKXMgZnJvbSB0aGUKICAgICAvLyBvbkxvYWQg
ZXZlbnQgaGFuZGxlciwgYXMgaW4gUmFkYXIgMzIwNjUyNC4KQEAgLTI1OTQsOSArMjYwMiwxMCBA
QCB2b2lkIERvY3VtZW50OjpyZW1vdmVQZW5kaW5nU2hlZXQoKQogI2VuZGlmCiAKICAgICB1cGRh
dGVTdHlsZVNlbGVjdG9yKCk7Ci0gICAgCi0gICAgaWYgKCFtX3BlbmRpbmdTdHlsZXNoZWV0cyAm
JiBtX3BhcnNlcikKLSAgICAgICAgbV9wYXJzZXItPmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0
eWxlc2hlZXRzKCk7CisKKyAgICBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IHNj
cmlwdGFibGVEb2N1bWVudFBhcnNlcigpOworICAgIGlmICghbV9wZW5kaW5nU3R5bGVzaGVldHMg
JiYgcGFyc2VyKQorICAgICAgICBwYXJzZXItPmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxl
c2hlZXRzKCk7CiAKICAgICBpZiAoIW1fcGVuZGluZ1N0eWxlc2hlZXRzICYmIG1fZ290b0FuY2hv
ck5lZWRlZEFmdGVyU3R5bGVzaGVldHNMb2FkICYmIHZpZXcoKSkKICAgICAgICAgdmlldygpLT5z
Y3JvbGxUb0ZyYWdtZW50KG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKSk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAwNDBm
OTUzZTIwYmNmNmY5ZDBmZWY3YmJhNzE3ZjRhMGUzODY5ZmZkLi4zODE3OWU0YmViM2VhNjljMThi
ZTc5OTgxNjVkNmQ2ZjVlZmFlODI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI7CiAgICAgY2xh
c3MgUmVuZGVyQXJlbmE7CiAgICAgY2xhc3MgUmVuZGVyVmlldzsKKyAgICBjbGFzcyBTY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXI7CiAgICAgY2xhc3MgU2NyaXB0RWxlbWVudERhdGE7CiAgICAgY2xh
c3MgU2VjdXJpdHlPcmlnaW47CiAgICAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwpAQCAt
NTQxLDcgKzU0Miw4IEBAIHB1YmxpYzoKICAgICBDU1NTdHlsZVNoZWV0KiBtYXBwZWRFbGVtZW50
U2hlZXQoKTsKICAgICAKICAgICB2aXJ0dWFsIERvY3VtZW50UGFyc2VyKiBjcmVhdGVQYXJzZXIo
KTsKLSAgICBEb2N1bWVudFBhcnNlciogcGFyc2VyKCkgeyByZXR1cm4gbV9wYXJzZXIuZ2V0KCk7
IH0KKyAgICBEb2N1bWVudFBhcnNlciogcGFyc2VyKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZXIu
Z2V0KCk7IH0KKyAgICBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIqIHNjcmlwdGFibGVEb2N1bWVu
dFBhcnNlcigpIGNvbnN0OwogICAgIAogICAgIGJvb2wgcHJpbnRpbmcoKSBjb25zdCB7IHJldHVy
biBtX3ByaW50aW5nOyB9CiAgICAgdm9pZCBzZXRQcmludGluZyhib29sIHApIHsgbV9wcmludGlu
ZyA9IHA7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmNwcCBiL1dl
YkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmNwcAppbmRleCA1Mjc3NDE2YTJlNWRiODc1NTJlYTI4
YjI2MGM4NWI0YjFkYTUwZTcwLi5iODA5MjdjNTM0ZmI2MGYwMGRmNjMyZjA2YjdjMDA0N2Q5NTA0
MjIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5jcHAKKysrIGIvV2Vi
Q29yZS9kb20vRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yNiwzOSArMjYsMTYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJEb2N1bWVudFBhcnNlci5oIgogCi0jaW5jbHVkZSAiRG9j
dW1lbnRXcml0ZXIuaCIKLSNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKLSNpbmNsdWRlICJU
ZXh0UmVzb3VyY2VEZWNvZGVyLmgiCi0KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLURvY3VtZW50UGFyc2VyOjpEb2N1bWVudFBhcnNlcihEb2N1
bWVudCogZG9jdW1lbnQsIGJvb2wgdmlld1NvdXJjZU1vZGUpCitEb2N1bWVudFBhcnNlcjo6RG9j
dW1lbnRQYXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogbV9wYXJzZXJTdG9wcGVkKGZh
bHNlKQotICAgICwgbV9pblZpZXdTb3VyY2VNb2RlKHZpZXdTb3VyY2VNb2RlKQogICAgICwgbV9k
b2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fWFNTQXVkaXRvcigwKQogewogICAgIEFTU0VSVChk
b2N1bWVudCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50
V3JpdGVyKiB3cml0ZXIgLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBib29sIHNob3Vs
ZEZsdXNoKQotewotICAgIGlmICghbGVuZ3RoICYmICFzaG91bGRGbHVzaCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgVGV4dFJlc291cmNlRGVjb2RlciogZGVjb2RlciA9IHdyaXRlci0+Y3JlYXRl
RGVjb2RlcklmTmVlZGVkKCk7Ci0gICAgU3RyaW5nIGRlY29kZWQgPSBkZWNvZGVyLT5kZWNvZGUo
ZGF0YSwgbGVuZ3RoKTsKLSAgICBpZiAoc2hvdWxkRmx1c2gpCi0gICAgICAgIGRlY29kZWQgKz0g
ZGVjb2Rlci0+Zmx1c2goKTsKLSAgICBpZiAoZGVjb2RlZC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIHdyaXRlci0+cmVwb3J0RGF0YVJlY2lldmVkKCk7Ci0KLSAgICBhcHBlbmQo
ZGVjb2RlZCk7Ci19Ci0KIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFy
c2VyLmggYi9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oCmluZGV4IDQ3ODlhYmFkZjliYzc3
NjRmMzQ0YzFlM2RhYzg2OGU4NzBiMWM5NzUuLjZlY2U4ZTI3ZDFiNTc0NzVhNWE2MGZkMTUyNDY3
ODkwZTI0ZmU2OTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmgKKysr
IGIvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaApAQCAtMzEsMTggKzMxLDIwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRXcml0ZXI7CiBj
bGFzcyBMZWdhY3lIVE1MVHJlZUJ1aWxkZXI7Ci1jbGFzcyBMZWdhY3lIVE1MRG9jdW1lbnRQYXJz
ZXI7CiBjbGFzcyBTZWdtZW50ZWRTdHJpbmc7Ci1jbGFzcyBYU1NBdWRpdG9yOworY2xhc3MgU2Ny
aXB0YWJsZURvY3VtZW50UGFyc2VyOwogCiBjbGFzcyBEb2N1bWVudFBhcnNlciA6IHB1YmxpYyBO
b25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RG9jdW1lbnRQYXJzZXIoKSB7IH0K
IAorICAgIHZpcnR1YWwgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBhc1NjcmlwdGFibGVEb2N1
bWVudFBhcnNlcigpIHsgcmV0dXJuIDA7IH0KKwogICAgIC8vIGluc2VydCBpcyB1c2VkIGJ5IGRv
Y3VtZW50LndyaXRlCiAgICAgdmlydHVhbCB2b2lkIGluc2VydChjb25zdCBTZWdtZW50ZWRTdHJp
bmcmKSA9IDA7CisKICAgICAvLyBhcHBlbmRCeXRlcyBpcyB1c2VkIGJ5IERvY3VtZW50V3JpdGVy
ICh0aGUgbG9hZGVyKQotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRl
ciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoLCBib29sIGZsdXNoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIqLCBjb25zdCBjaGFyKiBieXRlcywg
aW50IGxlbmd0aCwgYm9vbCBmbHVzaCkgPSAwOwogCiAgICAgLy8gRklYTUU6IGFwcGVuZCgpIHNo
b3VsZCBiZSBwcml2YXRlLCBidXQgRG9jdW1lbnRXcml0ZXI6OnJlcGxhY2VEb2N1bWVudAogICAg
IC8vIHVzZXMgaXQgZm9yIG5vdy4KQEAgLTUxLDQ4ICs1MywyNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGZpbmlzaCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZmluaXNoV2FzQ2FsbGVk
KCkgPSAwOwogCi0gICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBib29sIGlzRXhlY3V0aW5nU2NyaXB0KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLQogICAgIHZpcnR1YWwgdm9pZCBzdG9wUGFyc2luZygpIHsgbV9wYXJzZXJTdG9w
cGVkID0gdHJ1ZTsgfQogICAgIC8vIEZJWE1FOiBwcm9jZXNzaW5nRGF0YSgpIGlzIG9ubHkgdXNl
ZCBieSBEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nSW5BUElTZW5zZQogICAgIC8vIGFuZCBpcyB2
ZXJ5IHVuY2xlYXIgYXMgdG8gd2hhdCBpdCBhY3R1YWxseSBtZWFucy4gIE9ubHkgTGVnYWN5SFRN
TERvY3VtZW50UGFyc2VyCiAgICAgLy8gYWN0dWFsbHkgaW1wbGVtZW50cyBpdC4KICAgICB2aXJ0
dWFsIGJvb2wgcHJvY2Vzc2luZ0RhdGEoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAg
dmlydHVhbCBib29sIHdlbGxGb3JtZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICB2
aXJ0dWFsIGludCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gLTE7IH0KLSAgICB2aXJ0dWFs
IGludCBjb2x1bW5OdW1iZXIoKSBjb25zdCB7IHJldHVybiAtMTsgfQotCi0gICAgdmlydHVhbCB2
b2lkIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkge30KLQorICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIGEgaGFjayBmb3IgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVtb3ZlZEZy
b21UcmVlCiAgICAgdmlydHVhbCBMZWdhY3lIVE1MVHJlZUJ1aWxkZXIqIGh0bWxUcmVlQnVpbGRl
cigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIExlZ2FjeUhUTUxEb2N1bWVudFBh
cnNlciogYXNIVE1MRG9jdW1lbnRQYXJzZXIoKSB7IHJldHVybiAwOyB9Ci0KLSAgICAvLyBGSVhN
RTogdmlldyBzb3VyY2UgbW9kZSBpcyBvbmx5IHVzZWQgYnkgdGhlIEhUTUwgYW5kIFRleHQKLSAg
ICAvLyBEb2N1bWVudFBhcnNlcnMgYW5kIG1heSBub3QgYmVsb25nIG9uIHRoZSBiYXNlLWNsYXNz
LgotICAgIGJvb2wgaW5WaWV3U291cmNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5WaWV3U291
cmNlTW9kZTsgfQotICAgIHZvaWQgc2V0SW5WaWV3U291cmNlTW9kZShib29sIG1vZGUpIHsgbV9p
blZpZXdTb3VyY2VNb2RlID0gbW9kZTsgfQogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9kb2N1bWVudDsgfQogCi0gICAgWFNTQXVkaXRvciogeHNzQXVkaXRvcigp
IGNvbnN0IHsgcmV0dXJuIG1fWFNTQXVkaXRvcjsgfQotICAgIHZvaWQgc2V0WFNTQXVkaXRvcihY
U1NBdWRpdG9yKiBhdWRpdG9yKSB7IG1fWFNTQXVkaXRvciA9IGF1ZGl0b3I7IH0KLQogcHJvdGVj
dGVkOgotICAgIERvY3VtZW50UGFyc2VyKERvY3VtZW50KiwgYm9vbCB2aWV3U291cmNlTW9kZSA9
IGZhbHNlKTsKKyAgICBEb2N1bWVudFBhcnNlcihEb2N1bWVudCopOwogCiAgICAgLy8gVGhlIHBh
cnNlciBoYXMgYnVmZmVycywgc28gcGFyc2luZyBtYXkgY29udGludWUgZXZlbiBhZnRlcgogICAg
IC8vIGl0IHN0b3BzIHJlY2VpdmluZyBkYXRhLiBXZSB1c2UgbV9wYXJzZXJTdG9wcGVkIHRvIHN0
b3AgdGhlIHBhcnNlcgogICAgIC8vIGV2ZW4gd2hlbiBpdCBoYXMgYnVmZmVyZWQgZGF0YS4KICAg
ICBib29sIG1fcGFyc2VyU3RvcHBlZDsKLSAgICBib29sIG1faW5WaWV3U291cmNlTW9kZTsKIAog
ICAgIC8vIEV2ZXJ5IERvY3VtZW50UGFyc2VyIG5lZWRzIGEgcG9pbnRlciBiYWNrIHRvIHRoZSBk
b2N1bWVudC4KICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKLSAgICAvLyBUaGUgWFNTQXVkaXRv
ciBhc3NvY2lhdGVkIHdpdGggdGhpcyBkb2N1bWVudCBwYXJzZXIuCi0gICAgWFNTQXVkaXRvciog
bV9YU1NBdWRpdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmggYi9XZWJDb3JlL2RvbS9SYXdEYXRh
RG9jdW1lbnRQYXJzZXIuaAppbmRleCA5ZmM5MGY1MTFkZDgwY2Q3MzU0MDlkMDI3MGRiNDdlZDY4
YTFmZjJiLi4yZWIzZDBhZDVmYjY4ZWRiNGIzNWE0ZmQ4YTBlYjc5NzgzZmEyYmI4IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaAorKysgYi9XZWJDb3JlL2Rv
bS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaApAQCAtNjIsOCArNjIsNiBAQCBwcml2YXRlOgogICAg
ICAgICAvLyBkZWxldGVkIGFmdGVyIGZpbmlzaCgpLgogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotCi0gICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogfTsKIAogfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1NjcmlwdGFi
bGVEb2N1bWVudFBhcnNlci5jcHAgYi9XZWJDb3JlL2RvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQzYjM0MTdiZWUzM2UzNDE0ZjBkNTllOTZmOTg1NjJiN2NlN2I2
NDEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXIuY3BwCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
LCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXI6OlNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihEb2N1bWVudCogZG9jdW1lbnQs
IGJvb2wgdmlld1NvdXJjZU1vZGUpCisgICAgOiBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyKGRv
Y3VtZW50LCB2aWV3U291cmNlTW9kZSkKKyAgICAsIG1feHNzQXVkaXRvcigwKQoreworfQorCit9
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmggYi9X
ZWJDb3JlL2RvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMmFlNjQ0
ODUxM2YxZTg0YzA5N2NhZGMwN2EyNmFlZTJhY2VjNzRhCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgKQEAgLTAsMCArMSw2OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKyNpZm5kZWYgU2Ny
aXB0YWJsZURvY3VtZW50UGFyc2VyX2gKKyNkZWZpbmUgU2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
X2gKKworI2luY2x1ZGUgIkRlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBTZWdtZW50ZWRTdHJpbmc7CitjbGFzcyBYU1NBdWRpdG9yOwor
CitjbGFzcyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgRGVjb2RlZERhdGFEb2N1
bWVudFBhcnNlciB7CitwdWJsaWM6CisgICAgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKERvY3Vt
ZW50KiBkb2N1bWVudCwgYm9vbCB2aWV3U291cmNlTW9kZSA9IGZhbHNlKTsKKworICAgIC8vIE9u
bHkgdXNlZCBieSBEb2N1bWVudDo6b3BlbiBmb3IgZGVjaWRpbmcgaWYgaXRzIHNhZmUgdG8gYWN0
IG9uIGEKKyAgICAvLyBqYXZzY3JpcHQgZG9jdW1lbnQub3BlbigpIGNhbGwgcmlnaHQgbm93LCBv
ciBpdCBzaG91bGQgYmUgaWdub3JlZC4KKyAgICB2aXJ0dWFsIGJvb2wgaXNFeGVjdXRpbmdTY3Jp
cHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgLy8gRklYTUU6IE9ubHkgdGhlIEhU
TUxEb2N1bWVudFBhcnNlciBldmVyIGJsb2NrcyBzY3JpcHQgZXhlY3V0aW9uIG9uCisgICAgLy8g
c3R5bGVzaGVldCBsb2FkLCB3aGljaCBpcyBsaWtlbHkgYSBidWcgaW4gdGhlIFhNTERvY3VtZW50
UGFyc2VyLgorICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNo
ZWV0cygpIHsgfQorCisgICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25z
dCA9IDA7CisKKyAgICAvLyBUaGVzZSBhcmUgdXNlZCB0byBleHBvc2UgdGhlIGN1cnJlbnQgbGlu
ZS9jb2x1bW4gdG8gdGhlIHNjcmlwdGluZyBzeXN0ZW0uCisgICAgdmlydHVhbCBpbnQgbGluZU51
bWJlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBjb2x1bW5OdW1iZXIoKSBjb25zdCA9
IDA7CisKKyAgICBYU1NBdWRpdG9yKiB4c3NBdWRpdG9yKCkgY29uc3QgeyByZXR1cm4gbV94c3NB
dWRpdG9yOyB9CisgICAgdm9pZCBzZXRYU1NBdWRpdG9yKFhTU0F1ZGl0b3IqIGF1ZGl0b3IpIHsg
bV94c3NBdWRpdG9yID0gYXVkaXRvcjsgfQorCisgICAgLy8gRXhwb3NlZCBmb3IgTGVnYWN5SFRN
TFRyZWVCdWlsZGVyOjpyZXBvcnRFcnJvclRvQ29uc29sZQorICAgIHZpcnR1YWwgYm9vbCBwcm9j
ZXNzaW5nQ29udGVudFdyaXR0ZW5CeVNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisK
K3ByaXZhdGU6CisgICAgdmlydHVhbCBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIqIGFzU2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyKCkgeyByZXR1cm4gdGhpczsgfQorCisgICAgLy8gVGhlIFhTU0F1
ZGl0b3IgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZG9jdW1lbnQgcGFyc2VyLgorICAgIFhTU0F1ZGl0
b3IqIG1feHNzQXVkaXRvcjsKK307CisKK307CisKKyNlbmRpZiAvLyBTY3JpcHRhYmxlRG9jdW1l
bnRQYXJzZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3Bw
IGIvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCmluZGV4IDIzZDAyOTdkOTg3Nzk0
MDExNmY4Y2E2NWUzOGY1ZmNkMjU5ODc5MWQuLmE0ZDhmYzJiODgzODA4ZmFhYWE3YWNkY2Q5Yjcw
MjA1YjY1NjA1YmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNw
cAorKysgYi9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKQEAgLTMzLDcgKzMzLDcg
QEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIkRvY3VtZW50UGFyc2VyLmgiCisjaW5jbHVkZSAiU2Ny
aXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAz
LDEwICsxMDMsMTYgQEAgc3RhdGljIE1lc3NhZ2VMZXZlbCB2aWV3cG9ydEVycm9yTWVzc2FnZUxl
dmVsKFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSkKICAgICByZXR1cm4gZXJyb3JDb2RlID09
IFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRFcnJvciB8fCBlcnJvckNvZGUgPT0gTWF4aW11
bVNjYWxlVG9vTGFyZ2VFcnJvciA/IEVycm9yTWVzc2FnZUxldmVsIDogVGlwTWVzc2FnZUxldmVs
OwogfQogCi12b2lkIHJlcG9ydFZpZXdwb3J0V2FybmluZyhEb2N1bWVudCogZG9jdW1lbnQsIFZp
ZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCkKKy8v
IEZJWE1FOiBXaHkgaXMgdGhpcyBkaWZmZXJlbnQgZnJvbSBTVkdEb2N1bWVudEV4dGVudGlvbnMg
cGFyc2VyTGluZU51bWJlcj8KK3N0YXRpYyBpbnQgcGFyc2VyTGluZU51bWJlcihEb2N1bWVudCog
ZG9jdW1lbnQpCiB7Ci0gICAgRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IGRvY3VtZW50LT5wYXJz
ZXIoKTsKKyAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnNjcmlwdGFibGVEb2N1bWVudFBh
cnNlcigpKQorICAgICAgICByZXR1cm4gZG9jdW1lbnQtPnNjcmlwdGFibGVEb2N1bWVudFBhcnNl
cigpLT5saW5lTnVtYmVyKCkgKyAxOworICAgIHJldHVybiAwOworfQogCit2b2lkIHJlcG9ydFZp
ZXdwb3J0V2FybmluZyhEb2N1bWVudCogZG9jdW1lbnQsIFZpZXdwb3J0RXJyb3JDb2RlIGVycm9y
Q29kZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCkKK3sKICAgICBGcmFtZSogZnJhbWUgPSBk
b2N1bWVudC0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CkBAIC0x
MTQsNyArMTIwLDcgQEAgdm9pZCByZXBvcnRWaWV3cG9ydFdhcm5pbmcoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnMKICAgICBTdHJpbmcgbWVzc2Fn
ZSA9IHZpZXdwb3J0RXJyb3JNZXNzYWdlVGVtcGxhdGUoZXJyb3JDb2RlKTsKICAgICBtZXNzYWdl
LnJlcGxhY2UoIiVyZXBsYWNlbWVudCIsIHJlcGxhY2VtZW50KTsKIAotICAgIGZyYW1lLT5kb21X
aW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEhUTUxNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChlcnJvckNvZGUpLCBtZXNzYWdlLCBw
YXJzZXIgPyBwYXJzZXItPmxpbmVOdW1iZXIoKSArIDEgOiAwLCBkb2N1bWVudC0+dXJsKCkuc3Ry
aW5nKCkpOworICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEhU
TUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZl
bChlcnJvckNvZGUpLCBtZXNzYWdlLCBwYXJzZXJMaW5lTnVtYmVyKGRvY3VtZW50KSwgZG9jdW1l
bnQtPnVybCgpLnN0cmluZygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvZG9tL1hNTERv
Y3VtZW50UGFyc2VyLmgKaW5kZXggOWYzNjc5MWJjNjA1NWViZTI2OTg0YWQ3ZDUwNGQ1YjAyMjll
MTAyYS4uNGI4NmE4YThhN2MzM2U3MGNhMmM5NTNlZjZiNmIwNDZkZTE2ODRmMyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9XZWJDb3JlL2RvbS9YTUxE
b2N1bWVudFBhcnNlci5oCkBAIC0yNywxMCArMjcsMTAgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNs
dWRlICJGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKKyNpbmNsdWRlICJTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKICNpbmNsdWRl
ICJTdHJpbmdIYXNoLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRQYXJzZXIuaCIKLSNpbmNsdWRlICJG
cmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAtNzAsNyArNzAsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgfTsKICNlbmRpZgogCi0gICAgY2xhc3MgWE1MRG9jdW1lbnRQYXJzZXIgOiBw
dWJsaWMgRG9jdW1lbnRQYXJzZXIsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CisgICAg
Y2xhc3MgWE1MRG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgU2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
LCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgWE1M
RG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqLCBGcmFtZVZpZXcqID0gMCk7CiAgICAgICAgIFhNTERv
Y3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqLCBFbGVtZW50KiwgRnJhZ21lbnRTY3JpcHRp
bmdQZXJtaXNzaW9uKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAgYi9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmlu
ZGV4IDc4NDZmOGY3YWYyOGRiMjlkZDM0ZDU3MDQzM2QyNjA0ODZmZjMxYzAuLmNkYzU4ZmM2ODkw
ZmZhMWYxOWJhZjQxOGY3MWM2MTAxODNjOTk0MmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcApAQCAtNTIzLDcgKzUyMyw3IEBAIFBhc3NSZWZQdHI8WE1MUGFyc2Vy
Q29udGV4dD4gWE1MUGFyc2VyQ29udGV4dDo6Y3JlYXRlTWVtb3J5UGFyc2VyKHhtbFNBWEhhbmRs
ZXJQCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBYTUxEb2N1bWVudFBh
cnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBGcmFtZVZpZXcqIGZy
YW1lVmlldykKLSAgICA6IERvY3VtZW50UGFyc2VyKGRvY3VtZW50KQorICAgIDogU2NyaXB0YWJs
ZURvY3VtZW50UGFyc2VyKGRvY3VtZW50KQogICAgICwgbV92aWV3KGZyYW1lVmlldykKICAgICAs
IG1fY29udGV4dCgwKQogICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKG5ldyBQZW5kaW5nQ2FsbGJh
Y2tzKQpAQCAtNTUwLDcgKzU1MCw3IEBAIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBh
cnNlcihEb2N1bWVudCogZG9jdW1lbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQogfQogCiBYTUxE
b2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21l
bnQsIEVsZW1lbnQqIHBhcmVudEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBz
Y3JpcHRpbmdQZXJtaXNzaW9uKQotICAgIDogRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQtPmRvY3Vt
ZW50KCkpCisgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQtPmRvY3VtZW50
KCkpCiAgICAgLCBtX3ZpZXcoMCkKICAgICAsIG1fY29udGV4dCgwKQogICAgICwgbV9wZW5kaW5n
Q2FsbGJhY2tzKG5ldyBQZW5kaW5nQ2FsbGJhY2tzKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2Vy
LmNwcAppbmRleCAzZWIxMTE4ZWJiMTkzMDdmMGMwZTM2MWUzOWExNDFhNTkwOTcxYmZiLi5hODAy
M2I1NDFlNGYxYzdiNDUzOTUyNTg2YjZmMWEyMzQxNDVlZWY1IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UK
IAogSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50KiBk
b2N1bWVudCwgYm9vbCByZXBvcnRFcnJvcnMpCi0gICAgOiBEb2N1bWVudFBhcnNlcihkb2N1bWVu
dCkKKyAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKICAgICAsIG1fdG9r
ZW5pemVyKG5ldyBIVE1MVG9rZW5pemVyKQogICAgICwgbV9zY3JpcHRSdW5uZXIobmV3IEhUTUxT
Y3JpcHRSdW5uZXIoZG9jdW1lbnQsIHRoaXMpKQogICAgICwgbV90cmVlQnVpbGRlcihuZXcgSFRN
TFRyZWVCdWlsZGVyKG1fdG9rZW5pemVyLmdldCgpLCBkb2N1bWVudCwgcmVwb3J0RXJyb3JzKSkK
QEAgLTgwLDcgKzgwLDcgQEAgSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIo
SFRNTERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCByZXBvcnRFcnJvcnMKIC8vIEZJWE1FOiBNZW1i
ZXIgdmFyaWFibGVzIHNob3VsZCBiZSBncm91cGVkIGludG8gc2VsZi1pbml0aWFsaXppbmcgc3Ry
dWN0cyB0bwogLy8gbWluaW1pemUgY29kZSBkdXBsaWNhdGlvbiBiZXR3ZWVuIHRoZXNlIGNvbnN0
cnVjdG9ycy4KIEhUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKERvY3VtZW50
RnJhZ21lbnQqIGZyYWdtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5n
UGVybWlzc2lvbikKLSAgICA6IERvY3VtZW50UGFyc2VyKGZyYWdtZW50LT5kb2N1bWVudCgpKQor
ICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGZyYWdtZW50LT5kb2N1bWVudCgpKQogICAg
ICwgbV90b2tlbml6ZXIobmV3IEhUTUxUb2tlbml6ZXIpCiAgICAgLCBtX3RyZWVCdWlsZGVyKG5l
dyBIVE1MVHJlZUJ1aWxkZXIobV90b2tlbml6ZXIuZ2V0KCksIGZyYWdtZW50LCBzY3JpcHRpbmdQ
ZXJtaXNzaW9uKSkKICAgICAsIG1fZW5kV2FzRGVsYXllZChmYWxzZSkKQEAgLTM1MCw5ICszNTAs
OSBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6c3RvcFdhdGNoaW5nRm9yTG9hZChDYWNoZWRS
ZXNvdXJjZSogY2FjaGVkU2NyaXB0KQogCiBib29sIEhUTUxEb2N1bWVudFBhcnNlcjo6c2hvdWxk
TG9hZEV4dGVybmFsU2NyaXB0RnJvbVNyYyhjb25zdCBBdG9taWNTdHJpbmcmIHNyY1ZhbHVlKQog
ewotICAgIGlmICghbV9YU1NBdWRpdG9yKQorICAgIGlmICgheHNzQXVkaXRvcigpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gbV9YU1NBdWRpdG9yLT5jYW5Mb2FkRXh0ZXJuYWxT
Y3JpcHRGcm9tU3JjKHNyY1ZhbHVlKTsKKyAgICByZXR1cm4geHNzQXVkaXRvcigpLT5jYW5Mb2Fk
RXh0ZXJuYWxTY3JpcHRGcm9tU3JjKHNyY1ZhbHVlKTsKIH0KIAogdm9pZCBIVE1MRG9jdW1lbnRQ
YXJzZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvaHRt
bC9IVE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCBkYjVmNWNjODAwMDY3MTVmYmU3NWViNWUwMjVi
MGEyN2Y4ODcxZTY4Li45NTI4ZDk3YWJkMjhjNDAyZjlhNjFjMzZhM2ViMzViNzZmMGU4ODcxIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmgKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC0yOCwxMSArMjgsMTEgQEAKIAogI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhZ21lbnRTY3JpcHRpbmdQ
ZXJtaXNzaW9uLmgiCisjaW5jbHVkZSAiSFRNTElucHV0U3RyZWFtLmgiCiAjaW5jbHVkZSAiSFRN
TFNjcmlwdFJ1bm5lckhvc3QuaCIKICNpbmNsdWRlICJIVE1MVG9rZW4uaCIKLSNpbmNsdWRlICJI
VE1MSW5wdXRTdHJlYW0uaCIKKyNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIK
ICNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKLSNpbmNsdWRlICJEb2N1bWVudFBhcnNlci5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCkBAIC01MCw3
ICs1MCw3IEBAIGNsYXNzIExlZ2FjeUhUTUxUcmVlQnVpbGRlcjsKIGNsYXNzIFNjcmlwdENvbnRy
b2xsZXI7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogCi1jbGFzcyBIVE1MRG9jdW1lbnRQYXJz
ZXIgOiAgcHVibGljIERvY3VtZW50UGFyc2VyLCBIVE1MU2NyaXB0UnVubmVySG9zdCwgQ2FjaGVk
UmVzb3VyY2VDbGllbnQgeworY2xhc3MgSFRNTERvY3VtZW50UGFyc2VyIDogIHB1YmxpYyBTY3Jp
cHRhYmxlRG9jdW1lbnRQYXJzZXIsIEhUTUxTY3JpcHRSdW5uZXJIb3N0LCBDYWNoZWRSZXNvdXJj
ZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFRoZXNlIGNvbnN0cnVjdG9ycyBzaG91
bGQgYmUgbWFkZSBwcml2YXRlIGFuZCByZXBsYWNlZCBieSBjcmVhdGUoKSBtZXRob2RzLgogICAg
IEhUTUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQqLCBib29sIHJlcG9ydEVycm9ycyk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1dl
YkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDAyMjliMDgzNDU5
Y2UzOGZhMzEwMzQxYjY4ZjliMDY0MjBhM2IyYjMuLjZjNDJkMDc0OWExZmQ5YjE3MTA0MWI1MTc0
NGY1YTljMTQzNDI2ZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1l
bnRQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIu
Y3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgaW5saW5lIHZvaWQgVG9rZW46OmFkZEF0dHJpYnV0ZShB
dG9taWNTdHJpbmcmIGF0dHJOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHIKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpMZWdhY3lIVE1MRG9j
dW1lbnRQYXJzZXIoSFRNTERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCByZXBvcnRFcnJvcnMpCi0g
ICAgOiBEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKKyAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBh
cnNlcihkb2N1bWVudCkKICAgICAsIG1fYnVmZmVyKDApCiAgICAgLCBtX3NjcmlwdENvZGUoMCkK
ICAgICAsIG1fc2NyaXB0Q29kZVNpemUoMCkKQEAgLTE2Nyw3ICsxNjcsNyBAQCBMZWdhY3lIVE1M
RG9jdW1lbnRQYXJzZXI6OkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQqIGRv
Y3VtZW50LCBib29sCiB9CiAKIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6TGVnYWN5SFRNTERv
Y3VtZW50UGFyc2VyKEhUTUxWaWV3U291cmNlRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogRG9j
dW1lbnRQYXJzZXIoZG9jdW1lbnQsIHRydWUpCisgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXIoZG9jdW1lbnQsIHRydWUpCiAgICAgLCBtX2J1ZmZlcigwKQogICAgICwgbV9zY3JpcHRDb2Rl
KDApCiAgICAgLCBtX3NjcmlwdENvZGVTaXplKDApCkBAIC0xODYsNyArMTg2LDcgQEAgTGVnYWN5
SFRNTERvY3VtZW50UGFyc2VyOjpMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTFZpZXdTb3Vy
Y2VEb2N1bWVudCogZG9jdW0KIH0KIAogTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpMZWdhY3lI
VE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCogZnJhZywgRnJhZ21lbnRTY3JpcHRp
bmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCi0gICAgOiBEb2N1bWVudFBhcnNlcihm
cmFnLT5kb2N1bWVudCgpKQorICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGZyYWctPmRv
Y3VtZW50KCkpCiAgICAgLCBtX2J1ZmZlcigwKQogICAgICwgbV9zY3JpcHRDb2RlKDApCiAgICAg
LCBtX3NjcmlwdENvZGVTaXplKDApCkBAIC0xMzkxLDcgKzEzOTEsNyBAQCBMZWdhY3lIVE1MRG9j
dW1lbnRQYXJzZXI6OlN0YXRlIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VUYWcoU2Vn
bWVudGVkU3RyaQogCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50VG9rZW4u
YmVnaW5UYWcgJiYgbV9jdXJyZW50VG9rZW4udGFnTmFtZSA9PSBzY3JpcHRUYWcgJiYgIWluVmll
d1NvdXJjZU1vZGUoKSAmJiAhbV90cmVlQnVpbGRlci0+c2tpcE1vZGUoKSAmJiBtX2F0dHJOYW1l
ID09IHNyY0F0dHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY29udGV4
dChtX3Jhd0F0dHJpYnV0ZUJlZm9yZVZhbHVlLmRhdGEoKSwgbV9yYXdBdHRyaWJ1dGVCZWZvcmVW
YWx1ZS5zaXplKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX1hTU0F1ZGl0
b3IgJiYgIW1fWFNTQXVkaXRvci0+Y2FuTG9hZEV4dGVybmFsU2NyaXB0RnJvbVNyYyhhdHRyaWJ1
dGVWYWx1ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHhzc0F1ZGl0b3IoKSAm
JiAheHNzQXVkaXRvcigpLT5jYW5Mb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKGF0dHJpYnV0ZVZh
bHVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSBi
bGFua1VSTCgpLnN0cmluZygpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogCkBAIC0xNDI4
LDcgKzE0MjgsNyBAQCBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OlN0YXRlIExlZ2FjeUhUTUxE
b2N1bWVudFBhcnNlcjo6cGFyc2VUYWcoU2VnbWVudGVkU3RyaQogCiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobV9jdXJyZW50VG9rZW4uYmVnaW5UYWcgJiYgbV9jdXJyZW50VG9rZW4udGFn
TmFtZSA9PSBzY3JpcHRUYWcgJiYgIWluVmlld1NvdXJjZU1vZGUoKSAmJiAhbV90cmVlQnVpbGRl
ci0+c2tpcE1vZGUoKSAmJiBtX2F0dHJOYW1lID09IHNyY0F0dHIpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTdHJpbmcgY29udGV4dChtX3Jhd0F0dHJpYnV0ZUJlZm9yZVZhbHVlLmRh
dGEoKSwgbV9yYXdBdHRyaWJ1dGVCZWZvcmVWYWx1ZS5zaXplKCkpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX1hTU0F1ZGl0b3IgJiYgIW1fWFNTQXVkaXRvci0+Y2FuTG9hZEV4
dGVybmFsU2NyaXB0RnJvbVNyYyhhdHRyaWJ1dGVWYWx1ZSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHhzc0F1ZGl0b3IoKSAmJiAheHNzQXVkaXRvcigpLT5jYW5Mb2FkRXh0ZXJu
YWxTY3JpcHRGcm9tU3JjKGF0dHJpYnV0ZVZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSBibGFua1VSTCgpLnN0cmluZygpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvTGVnYWN5SFRNTERv
Y3VtZW50UGFyc2VyLmggYi9XZWJDb3JlL2h0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmgK
aW5kZXggNDhkMTI4NGIyZWJmYmM3N2M3Y2RhNTA1YzUwMTBhMGE2ZWFkM2Y4MS4uYWM5MTQxODJm
Y2Q0YzAzMzNlZmEwMDYyMmE3NGRiYjAxMjZjM2M5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1M
RG9jdW1lbnRQYXJzZXIuaApAQCAtMjgsOSArMjgsOSBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgiCiAj
aW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCisjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFy
c2VyLmgiCiAjaW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
LSNpbmNsdWRlICJEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xNDAsNyAr
MTQwLDcgQEAgcHVibGljOgogLy8gKGxpa2UgZGVhbGluZyB3aXRoIDxzY3JpcHQ+IHRhZ3MpLiAg
VGhlIEhUTUwgdG9rZW5pemVyIGJpdHMgc2hvdWxkIGJlIHB1c2hlZAogLy8gZG93biBpbnRvIGEg
c2VwYXJhdGUgSFRNTCB0b2tlbml6ZXIgY2xhc3MuCiAKLWNsYXNzIExlZ2FjeUhUTUxEb2N1bWVu
dFBhcnNlciA6IHB1YmxpYyBEb2N1bWVudFBhcnNlciwgcHVibGljIENhY2hlZFJlc291cmNlQ2xp
ZW50IHsKK2NsYXNzIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlciA6IHB1YmxpYyBTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CiAg
ICAgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCosIGJvb2wgcmVwb3J0RXJy
b3JzKTsKICAgICBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTFZpZXdTb3VyY2VEb2N1bWVu
dCopOwpAQCAtMTUwLDkgKzE1MCw2IEBAIHB1YmxpYzoKICAgICBib29sIGZvcmNlU3luY2hyb25v
dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZvcmNlU3luY2hyb25vdXMoKTsgfQogICAgIHZv
aWQgc2V0Rm9yY2VTeW5jaHJvbm91cyhib29sIGZvcmNlKTsKIAotICAgIC8vIEV4cG9zZWQgZm9y
IExlZ2FjeUhUTUxUcmVlQnVpbGRlcjo6cmVwb3J0RXJyb3JUb0NvbnNvbGUKLSAgICBib29sIHBy
b2Nlc3NpbmdDb250ZW50V3JpdHRlbkJ5U2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9zcmMuZXhj
bHVkZUxpbmVOdW1iZXJzKCk7IH0KLQogICAgIHN0YXRpYyB2b2lkIHBhcnNlRG9jdW1lbnRGcmFn
bWVudChjb25zdCBTdHJpbmcmLCBEb2N1bWVudEZyYWdtZW50KiwgRnJhZ21lbnRTY3JpcHRpbmdQ
ZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKIAogcHJvdGVjdGVkOgpAQCAt
MTYxLDcgKzE1OCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCk7CiAK
IHByaXZhdGU6Ci0gICAgLy8gRG9jdW1lbnRQYXJzZXIKKyAgICAvLyBTY3JpcHRhYmxlRG9jdW1l
bnRQYXJzZXIKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYp
OwogICAgIHZpcnR1YWwgYm9vbCBmaW5pc2hXYXNDYWxsZWQoKTsKICAgICB2aXJ0dWFsIGJvb2wg
aXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0OwpAQCAtMTcyLDEwICsxNjksMTIgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGludCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVt
YmVyOyB9CiAgICAgdmlydHVhbCBpbnQgY29sdW1uTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gMTsg
fQogCisgICAgdmlydHVhbCBib29sIHByb2Nlc3NpbmdDb250ZW50V3JpdHRlbkJ5U2NyaXB0KCkg
Y29uc3QgeyByZXR1cm4gbV9zcmMuZXhjbHVkZUxpbmVOdW1iZXJzKCk7IH0KKworCiAgICAgdmly
dHVhbCB2b2lkIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCk7CiAKICAgICB2
aXJ0dWFsIExlZ2FjeUhUTUxUcmVlQnVpbGRlciogaHRtbFRyZWVCdWlsZGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV90cmVlQnVpbGRlci5nZXQoKTsgfQotICAgIHZpcnR1YWwgTGVnYWN5SFRNTERvY3Vt
ZW50UGFyc2VyKiBhc0hUTUxEb2N1bWVudFBhcnNlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAogICAg
IGNsYXNzIFN0YXRlOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvTGVnYWN5SFRNTFRyZWVC
dWlsZGVyLmNwcCBiL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4
IDdiNDQ5NDNmZGI5ODdlNDY3NjAzYmVmMjM1NWU1NzQ2NTNkZjczMTEuLjIxY2E5NzMyNTdhODkz
ZTUwNjQxMmE0YTc5MzM2YWY4YWQ5ZDdiMTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9MZWdh
Y3lIVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MVHJlZUJ1
aWxkZXIuY3BwCkBAIC0xNjQ3LDggKzE2NDcsOSBAQCB2b2lkIExlZ2FjeUhUTUxUcmVlQnVpbGRl
cjo6cmVwb3J0RXJyb3JUb0NvbnNvbGUoSFRNTFBhcnNlckVycm9yQ29kZSBlcnJvckNvZGUsCiAg
ICAgRnJhbWUqIGZyYW1lID0gbV9kb2N1bWVudC0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQog
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaW50IGxpbmVOdW1iZXIgPSBtX2RvY3VtZW50LT5w
YXJzZXIoKS0+bGluZU51bWJlcigpICsgMTsKKworICAgIFNjcmlwdGFibGVEb2N1bWVudFBhcnNl
ciogcGFyc2VyID0gbV9kb2N1bWVudC0+c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCk7CisgICAg
aW50IGxpbmVOdW1iZXIgPSBwYXJzZXItPmxpbmVOdW1iZXIoKSArIDE7CiAKICAgICBBdG9taWNT
dHJpbmcgdGFnMTsKICAgICBBdG9taWNTdHJpbmcgdGFnMjsKQEAgLTE2NzQsOSArMTY3NSw3IEBA
IHZvaWQgTGVnYWN5SFRNTFRyZWVCdWlsZGVyOjpyZXBvcnRFcnJvclRvQ29uc29sZShIVE1MUGFy
c2VyRXJyb3JDb2RlIGVycm9yQ29kZSwKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIG1l
c3NhZ2U7Ci0gICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB3b3JrIGZvciB0aGUgbmV3IEhUTUxE
b2N1bWVudFBhcnNlciBhbmQgc2hvdWxkLgotICAgIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlciog
aHRtbFBhcnNlciA9IG1fZG9jdW1lbnQtPnBhcnNlcigpLT5hc0hUTUxEb2N1bWVudFBhcnNlcigp
OwotICAgIGlmIChodG1sUGFyc2VyICYmIGh0bWxQYXJzZXItPnByb2Nlc3NpbmdDb250ZW50V3Jp
dHRlbkJ5U2NyaXB0KCkpCisgICAgaWYgKHBhcnNlci0+cHJvY2Vzc2luZ0NvbnRlbnRXcml0dGVu
QnlTY3JpcHQoKSkKICAgICAgICAgbWVzc2FnZSArPSBodG1sUGFyc2VyRG9jdW1lbnRXcml0ZU1l
c3NhZ2UoKTsKICAgICBtZXNzYWdlICs9IGVycm9yTXNnOwogICAgIG1lc3NhZ2UucmVwbGFjZSgi
JXRhZzEiLCB0YWcxKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcCBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBhNjI4NTBjYWNk
MWQ4Y2NlNWRmMGY5ZGVjMGNhNDNiYjVkNDc0ODVmLi5mNzI0OTVjZTJjY2JjZDFkNzJlNmE3MDJl
NzM5M2JjYjUzN2ViYzUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUGFnZS5oIgogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNs
dWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIu
aCIKQEAgLTQ2LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiWE1M
RG9jdW1lbnRQYXJzZXIuaCIKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRXcml0ZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCmluZGV4
IGEyMGVjZWQ3MjA0MmY2ODM1ZmI5NWFmMTViODcxMTNiODdlOTljYzguLmQ5OWYzNDA2NTQ4NWM3
YjMxYTA2Zjc0MjMzZjRjYjllMDczZDkxMzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50V3JpdGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAK
QEAgLTM4LDEyICszOCwxNCBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIlBs
YWNlaG9sZGVyRG9jdW1lbnQuaCIKICNpbmNsdWRlICJQbHVnaW5Eb2N1bWVudC5oIgorI2luY2x1
ZGUgIlJhd0RhdGFEb2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVu
dFBhcnNlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VnbWVu
dGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaW5rRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCi0jaW5jbHVkZSAiRG9jdW1l
bnRQYXJzZXIuaCIKKwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvbG9hZGVyL1RleHREb2N1bWVudC5jcHAgYi9XZWJDb3JlL2xvYWRlci9UZXh0RG9jdW1lbnQu
Y3BwCmluZGV4IDZjZGZiYzJmOTk0OWZkMjMxYjJkNjdlYzZhOWU1NWFkM2VhODEwODYuLjZiNTMw
ODQzMTVlNDk1YjNjZjZmMWNiZDhjMmYwMzI0OTQwMzM4YTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
bG9hZGVyL1RleHREb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvVGV4dERvY3VtZW50
LmNwcApAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRl
eHREb2N1bWVudC5oIgogCi0jaW5jbHVkZSAiRG9jdW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlICJE
ZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxWaWV3U291cmNlRG9jdW1lbnQuaCIKQEAg
LTM4LDcgKzM4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogCi1jbGFzcyBUZXh0RG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgRG9jdW1lbnRQYXJz
ZXIgeworLy8gRklYTUU6IFRleHREb2N1bWVudFBhcnNlciBjb3VsZCBqdXN0IGJlIGFuIEhUTUxE
b2N1bWVudFBhcnNlcgorLy8gd2hpY2ggc3RhcnRlZCB0aGUgVG9rZW5pemVyIGluIHRoZSBQbGFp
blRleHQgc3RhdGUuCitjbGFzcyBUZXh0RG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgRGVjb2RlZERh
dGFEb2N1bWVudFBhcnNlciB7CiBwdWJsaWM6CiAgICAgVGV4dERvY3VtZW50UGFyc2VyKERvY3Vt
ZW50Kik7CiAgICAgdmlydHVhbCB+VGV4dERvY3VtZW50UGFyc2VyKCk7CkBAIC00OSw4ICs1MSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJp
bmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCk7CiAgICAgdmlydHVhbCBib29sIGZpbmlz
aFdhc0NhbGxlZCgpOwotICAgIHZpcnR1YWwgYm9vbCBpc1dhaXRpbmdGb3JTY3JpcHRzKCkgY29u
c3Q7Ci0gICAgCisKICAgICBpbmxpbmUgdm9pZCBjaGVja0J1ZmZlcihpbnQgbGVuID0gMTApCiAg
ICAgewogICAgICAgICBpZiAoKG1fZGVzdCAtIG1fYnVmZmVyKSA+IG1fc2l6ZSAtIGxlbikgewpA
QCAtNjMsNiArNjQsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogCitwcml2YXRlOgog
ICAgIEVsZW1lbnQqIG1fcHJlRWxlbWVudDsKIAogICAgIGJvb2wgbV9za2lwTEY7CkBAIC03Myw3
ICs3NSw3IEBAIHByaXZhdGU6CiB9OwogCiBUZXh0RG9jdW1lbnRQYXJzZXI6OlRleHREb2N1bWVu
dFBhcnNlcihEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBEb2N1bWVudFBhcnNlcihkb2N1bWVu
dCkKKyAgICA6IERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgLCBtX3By
ZUVsZW1lbnQoMCkKICAgICAsIG1fc2tpcExGKGZhbHNlKQogeyAgICAKQEAgLTg0LDcgKzg2LDcg
QEAgVGV4dERvY3VtZW50UGFyc2VyOjpUZXh0RG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogfSAgICAKIAogVGV4dERvY3VtZW50UGFyc2VyOjpUZXh0RG9jdW1lbnRQYXJzZXIoSFRN
TFZpZXdTb3VyY2VEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBEb2N1bWVudFBhcnNlcihkb2N1
bWVudCwgdHJ1ZSkKKyAgICA6IERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQsIHRy
dWUpCiAgICAgLCBtX3ByZUVsZW1lbnQoMCkKICAgICAsIG1fc2tpcExGKGZhbHNlKQogeyAgICAK
QEAgLTE3NCw2ICsxNzYsOCBAQCB2b2lkIFRleHREb2N1bWVudFBhcnNlcjo6ZmluaXNoKCkKICAg
ICBtX2J1ZmZlciA9IDA7CiAgICAgbV9kZXN0ID0gMDsKIAorICAgIC8vIEZJWE1FOiBTaG91bGQg
dGhpcyBjYWxsIGZpbmlzaFBhcnNpbmcgZXZlbiBpZiBtX3BhcnNlclN0b3BwZWQgaXMgdHJ1ZT8K
KyAgICAvLyBTZWUgZXF1aXZhbGVudCBpbXBsZW1lbnRhdGlvbiBpbiBSYXdEYXRhRG9jdW1lbnRQ
YXJzZXIuCiAgICAgZG9jdW1lbnQoKS0+ZmluaXNoZWRQYXJzaW5nKCk7CiB9CiAKQEAgLTE4NCwx
MiArMTg4LDYgQEAgYm9vbCBUZXh0RG9jdW1lbnRQYXJzZXI6OmZpbmlzaFdhc0NhbGxlZCgpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRleHREb2N1bWVudFBhcnNlcjo6aXNXYWl0aW5n
Rm9yU2NyaXB0cygpIGNvbnN0Ci17Ci0gICAgLy8gQSB0ZXh0IGRvY3VtZW50IGlzIG5ldmVyIHdh
aXRpbmcgZm9yIHNjcmlwdHMKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIFRleHREb2N1bWVudDo6
VGV4dERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQogICAgIDogSFRNTERv
Y3VtZW50KGZyYW1lLCB1cmwpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVu
dEV4dGVuc2lvbnMuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcApp
bmRleCA3YjI4NWViODYxZjdhNTE3ODgwYmQ4OTNmOTVkNDBhMWFmMjg4NDYwLi5lNTc5NWQzNDdm
NjI2ZTJjMzg0Mzg2ZDMyNmU2YzhiZjU3NzBiMDY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9T
VkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0
ZW5zaW9ucy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJTVkdTTUlMRWxlbWVudC5o
IgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTTUlMVGltZUNvbnRhaW5l
ci5oIgotI2luY2x1ZGUgIlhNTERvY3VtZW50UGFyc2VyLmgiCisjaW5jbHVkZSAiU2NyaXB0YWJs
ZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0xMjUsMTYgKzEyNSwyNyBAQCBib29sIFNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6c2FtcGxlQW5pbWF0aW9uQXRUaW1lKGNvbnN0IFN0cmluZyYgZWxlbWVudElkLCBT
VkdTTQogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgaW50IHBhcnNlckxpbmVOdW1iZXIo
RG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIGlmIChkb2N1bWVudC0+c2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyKCkpCisgICAgICAgIHJldHVybiBkb2N1bWVudC0+c2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyKCktPmxpbmVOdW1iZXIoKTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIHZvaWQg
cmVwb3J0TWVzc2FnZShEb2N1bWVudCogZG9jdW1lbnQsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+
ZnJhbWUoKSkKKyAgICAgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3Nh
Z2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIHBhcnNl
ckxpbmVOdW1iZXIoZG9jdW1lbnQpLCBTdHJpbmcoKSk7Cit9CisKIHZvaWQgU1ZHRG9jdW1lbnRF
eHRlbnNpb25zOjpyZXBvcnRXYXJuaW5nKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBp
ZiAoRnJhbWUqIGZyYW1lID0gbV9kb2MtPmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5kb21XaW5k
b3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5
cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiV2FybmluZzogIiArIG1lc3NhZ2UsIG1fZG9jLT5wYXJz
ZXIoKSA/IG1fZG9jLT5wYXJzZXIoKS0+bGluZU51bWJlcigpIDogMSwgU3RyaW5nKCkpOworICAg
IHJlcG9ydE1lc3NhZ2UobV9kb2MsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsICJXYXJuaW5nOiAiICsg
bWVzc2FnZSk7CiB9CiAKIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZXBvcnRFcnJvcihj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fZG9jLT5m
cmFtZSgpKQotICAgICAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2Fn
ZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkVy
cm9yOiAiICsgbWVzc2FnZSwgbV9kb2MtPnBhcnNlcigpID8gbV9kb2MtPnBhcnNlcigpLT5saW5l
TnVtYmVyKCkgOiAxLCBTdHJpbmcoKSk7CisgICAgcmVwb3J0TWVzc2FnZShtX2RvYywgRXJyb3JN
ZXNzYWdlTGV2ZWwsICJFcnJvcjogIiArIG1lc3NhZ2UpOwogfQogCiB2b2lkIFNWR0RvY3VtZW50
RXh0ZW5zaW9uczo6YWRkUGVuZGluZ1Jlc291cmNlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIFNW
R1N0eWxlZEVsZW1lbnQqIG9iaikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59845</attachid>
            <date>2010-06-26 19:40:13 -0700</date>
            <delta_ts>2010-06-27 22:40:30 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-41141-20100626194008.patch</filename>
            <type>text/plain</type>
            <size>50471</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAwM2I1ZGE2ODZlZDk3M2MzOThjOTJiYWQwYWFlNzgzNzk3MmZkYWNhLi5iYzJlYWI4OTM5Mzkx
YjA4ZDYzNmMyNzQ1NWJhNzA0OTYxYTQyYTNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0xMTQsNiArMTE0LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJZG9tL0NvbnRhaW5lck5vZGUuY3BwIFwK
IAlkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIFwKIAlkb20vRE9NU3RyaW5nTGlzdC5jcHAgXAor
CWRvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcCBcCiAJZG9tL0RvY3VtZW50LmNwcCBc
CiAJZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwIFwKIAlkb20vRG9jdW1lbnRQYXJzZXIuY3BwIFwK
QEAgLTE1OCw2ICsxNTksNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMp
IFwKIAlkb20vUXVhbGlmaWVkTmFtZS5jcHAgXAogCWRvbS9SYW5nZS5jcHAgXAogCWRvbS9SZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgXAorCWRvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIu
Y3BwIFwKIAlkb20vU2NyaXB0RWxlbWVudC5jcHAgXAogCWRvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBcCiAJZG9tL1NlbGVjdEVsZW1lbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDBkY2ZiYzYwZTdh
YTViMDIyMDA2MGNlN2Y1OTgwN2JkNzEzNThlNDYuLmM0OGJkMDkxNzhiMDA5MTE3ZWFmNDc5YzE0
YTk0YjJjYjExNDU4ODggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzcxLDYgKzc3MSw3IEBAIFNFVChXZWJDb3JlX1NP
VVJDRVMKICAgICBkb20vQ3VzdG9tRXZlbnQuY3BwCiAgICAgZG9tL0RPTUltcGxlbWVudGF0aW9u
LmNwcAogICAgIGRvbS9ET01TdHJpbmdMaXN0LmNwcAorICAgIGRvbS9EZWNvZGVkRGF0YURvY3Vt
ZW50UGFyc2VyLmNwcAogICAgIGRvbS9EZXZpY2VPcmllbnRhdGlvbi5jcHAKICAgICBkb20vRGV2
aWNlT3JpZW50YXRpb25FdmVudC5jcHAKICAgICBkb20vRG9jdW1lbnQuY3BwCkBAIC04MTYsNiAr
ODE3LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9RdWFsaWZpZWROYW1lLmNwcAog
ICAgIGRvbS9SYW5nZS5jcHAKICAgICBkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwCisg
ICAgZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAKICAgICBkb20vU2NyaXB0RWxlbWVu
dC5jcHAKICAgICBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKICAgICBkb20vU2VsZWN0
RWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZDUzMWJiNWQwYTBlMjlhYmRmZTkzMGVjN2JmMjE2NmQzYjU1YjQyMi4uYTRl
Yjg3Nzk0ODJjYWNjODBlNzg1OTZhN2NhY2NjZTU2NmM2YjBiMiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OCBAQAorMjAx
MC0wNi0yNCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIGEgbmV3IGJhc2VjbGFzcyBmb3IgWE1M
LCBIVE1MIGFuZCBUZXh0IERvY3VtZW50UGFyc2VycyB0byBjbGVhbiB1cCBEb2N1bWVudFBhcnNl
ciBjYWxsIHNpdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MTE0MQorCisgICAgICAgIEJ5IHNwbGl0dGluZyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXIgYW5kIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIKKyAgICAgICAgb3V0IGZyb20gRG9jdW1l
bnRQYXJzZXIgd2UndmUgbWFkZSB0aGUgRG9jdW1lbnRQYXJzZXIgYW5kCisgICAgICAgIFJhd0Rh
dGFEb2N1bWVudFBhcnNlciBjbGFzc2VzIHNpbXBsZXIuCisKKyAgICAgICAgTm8gZnVuY3Rpb25h
bCBjaGFuZ2UsIHRodXMgbm8gdGVzdHMuCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJMaW5lTnVt
YmVyKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNoZWV0OjpjaGVja0xvYWRlZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmltcGxpY2l0T3Blbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1w
bGljaXRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlUGVuZGluZ1No
ZWV0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpwYXJzZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFBhcnNlcjo6RG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudFBhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRQYXJzZXI6OmFz
U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKiBkb20vUmF3RGF0YURvY3VtZW50
UGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpSYXdEYXRhRG9jdW1lbnRQYXJzZXI6OmZpbmlz
aFdhc0NhbGxlZCk6CisgICAgICAgICogZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHA6
IENvcGllZCBmcm9tIFdlYkNvcmUvaHRtbC9IVE1MRW50aXR5UGFyc2VyLmguCisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXI6OlNjcmlwdGFibGVEb2N1bWVudFBhcnNl
cik6CisgICAgICAgICogZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdGFibGVEb2N1bWVudFBhcnNlcjo6aXNFeGVjdXRpbmdTY3Jp
cHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyOjpleGVjdXRl
U2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXI6Onhzc0F1ZGl0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyOjpzZXRYU1NBdWRpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdGFibGVEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc2luZ0NvbnRlbnRXcml0dGVuQnlTY3JpcHQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyOjphc1NjcmlwdGFi
bGVEb2N1bWVudFBhcnNlcik6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlckxpbmVOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6
cmVwb3J0Vmlld3BvcnRXYXJuaW5nKToKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXIu
aDoKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcik6CisgICAgICAg
ICogaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERv
Y3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERvY3VtZW50UGFyc2VyOjpzaG91bGRMb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKToKKyAgICAg
ICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGh0bWwvTGVnYWN5SFRN
TERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxEb2N1bWVu
dFBhcnNlcjo6TGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VUYWcpOgorICAgICAgICAqIGh0bWwvTGVnYWN5
SFRNTERvY3VtZW50UGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MRG9jdW1l
bnRQYXJzZXI6OnByb2Nlc3NpbmdDb250ZW50V3JpdHRlbkJ5U2NyaXB0KToKKyAgICAgICAgKiBo
dG1sL0xlZ2FjeUhUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lI
VE1MVHJlZUJ1aWxkZXI6OnJlcG9ydEVycm9yVG9Db25zb2xlKToKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6
CisgICAgICAgICogbG9hZGVyL1RleHREb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0RG9jdW1lbnRQYXJzZXI6OlRleHREb2N1bWVudFBhcnNlcik6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0RG9jdW1lbnRQYXJzZXI6OmZpbmlzaCk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50
RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZXJMaW5lTnVtYmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlcG9ydE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjpyZXBvcnRXYXJuaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Rv
Y3VtZW50RXh0ZW5zaW9uczo6cmVwb3J0RXJyb3IpOgorCiAyMDEwLTA2LTI2ICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IDJmZTZjNWI3M2QzOGMxM2ZhNWE2ZWQ4NzRhODljMGEwNmIxZWY3Y2UuLmRl
NjAwNTczNTY2NWU5YTRiZWUzYmI0YjM4OTY3MzE1OWEzNWVkNmMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtNzc4LDYg
Kzc3OCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50
YXRpb24uaCBcCiAJV2ViQ29yZS9kb20vRE9NU3RyaW5nTGlzdC5jcHAgXAogCVdlYkNvcmUvZG9t
L0RPTVN0cmluZ0xpc3QuaCBcCisJV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNl
ci5jcHAgXAorCVdlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCBcCiAJV2Vi
Q29yZS9kb20vRGV2aWNlT3JpZW50YXRpb24uY3BwIFwKIAlXZWJDb3JlL2RvbS9EZXZpY2VPcmll
bnRhdGlvbi5oIFwKIAlXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIFwKQEAg
LTg4MSw2ICs4ODMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvZG9tL1Jhd0Rh
dGFEb2N1bWVudFBhcnNlci5oIFwKIAlXZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
ci5jcHAgXAogCVdlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmggXAorCVdlYkNv
cmUvZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAgXAorCVdlYkNvcmUvZG9tL1Njcmlw
dGFibGVEb2N1bWVudFBhcnNlci5oIFwKIAlXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBc
CiAJV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oIFwKIAlXZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGUwNmNmZjI5ZjVhYzNlMmJjZWZkZmQ4NjM5YzRiYTY4
NzNkYzNiMDMuLmU5OThhMjA5ZmMyZDZmYzdiZjkzMjZlNTZkOTc1ODkyZmUwMDdmNTAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0xMTA1LDYgKzExMDUsOCBAQAogICAgICAgICAgICAgJ2RvbS9ET01JbXBsZW1lbnRhdGlvbi5o
JywKICAgICAgICAgICAgICdkb20vRE9NU3RyaW5nTGlzdC5jcHAnLAogICAgICAgICAgICAgJ2Rv
bS9ET01TdHJpbmdMaXN0LmgnLAorICAgICAgICAgICAgJ2RvbS9EZWNvZGVkRGF0YURvY3VtZW50
UGFyc2VyLmNwcCcsCisgICAgICAgICAgICAnZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIu
aCcsCiAgICAgICAgICAgICAnZG9tL0RldmljZU9yaWVudGF0aW9uLmNwcCcsCiAgICAgICAgICAg
ICAnZG9tL0RldmljZU9yaWVudGF0aW9uLmgnLAogICAgICAgICAgICAgJ2RvbS9EZXZpY2VPcmll
bnRhdGlvbkNsaWVudC5oJywKQEAgLTEyMDksNiArMTIxMSw4IEBACiAgICAgICAgICAgICAnZG9t
L1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZEV2
ZW50TGlzdGVuZXIuY3BwJywKICAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVu
ZXIuaCcsCisgICAgICAgICAgICAnZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAnLAor
ICAgICAgICAgICAgJ2RvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCcsCiAgICAgICAgICAg
ICAnZG9tL1NjcmlwdEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdkb20vU2NyaXB0RWxlbWVu
dC5oJywKICAgICAgICAgICAgICdkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAnLApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXgg
MWUxOWIwMmYwMzY3YjJiMDJlMzhlMjBlM2I2NTJiOTliMGExMjFkZC4uZjEwZTYyNTRmNTVlODc4
YzIwNGE0OTdhMjkzNjJmZTZiMWIwMWE5OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBy
bworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC00NzIsNiArNDcyLDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgZG9tL0NvbnRhaW5lck5vZGUuY3BwIFwKICAgICBkb20vQ1NTTWFwcGVkQXR0cmli
dXRlRGVjbGFyYXRpb24uY3BwIFwKICAgICBkb20vQ3VzdG9tRXZlbnQuY3BwIFwKKyAgICBkb20v
RGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAgXAogICAgIGRvbS9EZXZpY2VPcmllbnRhdGlv
bi5jcHAgXAogICAgIGRvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcCBcCiAgICAgZG9tL0Rv
Y3VtZW50LmNwcCBcCkBAIC01MjEsNiArNTIyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgZG9tL1Jh
bmdlLmNwcCBcCiAgICAgZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oIFwKICAgICBkb20vUmVn
aXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwIFwKKyAgICBkb20vU2NyaXB0YWJsZURvY3VtZW50UGFy
c2VyLmNwcCBcCiAgICAgZG9tL1NjcmlwdEVsZW1lbnQuY3BwIFwKICAgICBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHAgXAogICAgIGRvbS9TZWxlY3RFbGVtZW50LmNwcCBcCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA0ZDVmNDBiNDM0MDQ4ZGQ4ODAzY2ZjZGIx
ODdlZDNmZDdmZmQ5MmMyLi42MTM2NjM5MzFmY2JhOTIzOWYyM2Y2YzkzNjdhZWQyNDMxNTY2Zjc4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI5OTI1LDYgKzI5OTI1
LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGRvbVxEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxEZWNvZGVkRGF0YURvY3Vt
ZW50UGFyc2VyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRp
dmVQYXRoPSIuLlxkb21cRGV2aWNlT3JpZW50YXRpb24uY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxl
Pg0KQEAgLTMwMzQxLDYgKzMwMzQ5LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3Bw
Ig0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
ZG9tXFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNjcmlwdEVsZW1lbnQuY3BwIg0KIAkJ
CQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMTZkMTk3NmQ2MzIwYWQzNGY2YzFmNmJkMWQ4OTExMTcxNTUyYmIyZC4uYzdjMjRl
NjcxNGZlYjY0MmEwMjlmNGFkNzkzMzRiMGQ5YzJlMDQ3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5NzUsNiArMjk3NSw4IEBACiAJCUE4M0I3OTU3
MENDQjAxMjUwMDBCMDgyNSAvKiBET01TVkdGb250RmFjZUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4M0I3OTQ4MENDQjAxMjUwMDBCMDgy
NSAvKiBET01TVkdGb250RmFjZUVsZW1lbnQuaCAqLzsgfTsKIAkJQTgzRTFDNzQwRTQ5MDQyQzAw
MTQwQjlDIC8qIFNjcmlwdENvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODNFMUM3MjBFNDkwNDJCMDAxNDBCOUMgLyogU2NyaXB0
Q29udHJvbGxlck1hYy5tbSAqLzsgfTsKIAkJQTg0RDgyN0MxMUQzMzNFRDAwOTcyOTkwIC8qIFJh
d0RhdGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTg0RDgyN0IxMUQzMzNFRDAwOTcyOTkwIC8qIFJhd0RhdGFEb2N1bWVudFBh
cnNlci5oICovOyB9OworCQlBODREODJDMTExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJsZURv
Y3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBODREODJCRjExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
LmggKi87IH07CisJCUE4NEQ4MkMyMTFEMzQ3NDgwMDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1l
bnRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTg0RDgyQzAxMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5j
cHAgKi87IH07CiAJCUE4NEVCRDc4MENCOEM4OTIwMDA3OTYwOSAvKiBKU1N0eWxlU2hlZXRMaXN0
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4NEVCRDc3MENCOEM4OTIwMDA3OTYwOSAvKiBKU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCAq
LzsgfTsKIAkJQTg0RUJEODMwQ0I4Qzk3NzAwMDc5NjA5IC8qIEpTU3R5bGVTaGVldExpc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NEVCRDgxMENC
OEM5NzcwMDA3OTYwOSAvKiBKU1N0eWxlU2hlZXRMaXN0LmggKi87IH07CiAJCUE4NEVCRDg0MENC
OEM5NzcwMDA3OTYwOSAvKiBKU1N0eWxlU2hlZXRMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NEVCRDgyMENCOEM5NzcwMDA3OTYwOSAvKiBK
U1N0eWxlU2hlZXRMaXN0LmNwcCAqLzsgfTsKQEAgLTMwNjEsNiArMzA2Myw4IEBACiAJCUE4QTkw
OUFDMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE5MDlBQTBD
QkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oICovOyB9
OwogCQlBOEE5MDlBRDBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNv
bnRhaW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEE5MDlBQjBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRh
aW5lci5jcHAgKi87IH07CiAJCUE4QzIyODBFMTFENEE1OTcwMEQ1QTdEMyAvKiBEb2N1bWVudFBh
cnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OEMyMjgwRDExRDRBNTk3MDBENUE3RDMgLyogRG9jdW1lbnRQYXJzZXIuY3BwICovOyB9OworCQlB
OEMyMjhBMTExRDU3MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMjI4OUYxMUQ1
NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCAqLzsgfTsKKwkJQThD
MjI4QTIxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMjI4QTAxMUQ1
NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwICovOyB9OwogCQlB
OEM0QTdGRDA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDNEE3RUIwOUQ1NjMyNzAwMDNBQzhE
IC8qIFN0eWxlZEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlBOEM0QTdGRTA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEM0QTdF
QzA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5jcHAgKi87IH07CiAJCUE4QzRBODAw
MDlENTYzMjcwMDAzQUM4RCAvKiBOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzRBN0VFMDlENTYzMjcwMDAzQUM4RCAvKiBOb2RlLmNwcCAq
LzsgfTsKQEAgLTg0NjksNiArODQ3Myw4IEBACiAJCUE4M0I3OTQ4MENDQjAxMjUwMDBCMDgyNSAv
KiBET01TVkdGb250RmFjZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NU1ZHRm9udEZhY2VFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE4M0UxQzcyMEU0OTA0MkIwMDE0MEI5QyAvKiBTY3JpcHRDb250cm9sbGVyTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2NyaXB0Q29udHJvbGxlck1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg0RDgyN0IxMUQzMzNFRDAwOTcyOTkw
IC8qIFJhd0RhdGFEb2N1bWVudFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTg0RDgyQkYxMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTg0RDgyQzAxMUQzNDc0ODAwOTcy
OTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBODRFQkQ3NzBDQjhDODkyMDAwNzk2MDkgLyogSlNTdHlsZVNo
ZWV0TGlzdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTg0RUJEODEwQ0I4Qzk3NzAwMDc5NjA5IC8qIEpTU3R5bGVTaGVldExpc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHlsZVNoZWV0TGlzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBODRFQkQ4MjBDQjhDOTc3MDAwNzk2MDkgLyogSlNTdHlsZVNoZWV0
TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N0eWxlU2hl
ZXRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg1NTUsNiArODU2MSw4
IEBACiAJCUE4QTkwOUFBMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxl
Q29udGFpbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR1Ry
YW5zZm9ybWFibGVDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThB
OTA5QUIwQ0JDRDZCNTAwMjlCODA3IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHVHJhbnNm
b3JtYWJsZUNvbnRhaW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QzIy
ODBEMTFENEE1OTcwMEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE4QzIyODlGMTFENTcyMkUwMEQ1QTdEMyAvKiBEZWNvZGVkRGF0YURv
Y3VtZW50UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlY29kZWRE
YXRhRG9jdW1lbnRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThDMjI4
QTAxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVjb2RlZERhdGFEb2N1bWVudFBhcnNl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QzRBN0VCMDlENTYzMjcwMDAz
QUM4RCAvKiBTdHlsZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdHlsZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QzRBN0VD
MDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZWRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQThDNEE3RUUwOUQ1NjMyNzAwMDNBQzhEIC8qIE5vZGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTY5MTEsNiArMTY5MTksMTAgQEAKIAkJCQk1NEM1MEY3QTBFODAxREYz
MDA5ODMyQTAgLyogWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCAqLywKIAkJCQk1RDE1RTNB
OTBGOUU2QUMxMDA5RTBFM0YgLyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5jcHAgKi8sCiAJCQkJ
NUQxNUUzQUEwRjlFNkFDMTAwOUUwRTNGIC8qIFhNTERvY3VtZW50UGFyc2VyU2NvcGUuaCAqLywK
KwkJCQlBODREODJCRjExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
LmggKi8sCisJCQkJQTg0RDgyQzAxMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVu
dFBhcnNlci5jcHAgKi8sCisJCQkJQThDMjI4OUYxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWRE
YXRhRG9jdW1lbnRQYXJzZXIuaCAqLywKKwkJCQlBOEMyMjhBMDExRDU3MjJFMDBENUE3RDMgLyog
RGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGRvbTsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xOTU3NCw2ICsxOTU4Niw4IEBACiAJCQkJ
Q0VBMzk0OUQxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOEE4NDRDRkYxMUQzQzE3QzAwMTQwNjVDIC8qIE5hdmlnYXRpb25UaW1p
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCThBODQ0RDA1MTFEM0MxOEUwMDE0MDY1QyAvKiBQZXJm
b3JtYW5jZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTg0RDgyQzExMUQzNDc0ODAwOTcyOTkwIC8q
IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQThDMjI4QTEx
MUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMjE4OTksNiArMjE5MTMsOCBAQAogCQkJCUE4QzIyODBFMTFENEE1OTcwMEQ1QTdE
MyAvKiBEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4QTg0NENGRTExRDND
MTdDMDAxNDA2NUMgLyogTmF2aWdhdGlvblRpbWluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
QTg0NEQwNDExRDNDMThFMDAxNDA2NUMgLyogUGVyZm9ybWFuY2UuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQTg0RDgyQzIxMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBOEMyMjhBMjExRDU3MjJFMDBENUE3RDMgLyogRGVj
b2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDZmMDQ1N2EwMzdmMjE2YmNkNDlkZWQ0NDNm
OTE5YzA3ODNlOGE2NGUuLjBhYThmNTI2NTgxNmQyNmNiNzIwNDI5ZDZlMWQ1MWU4NWQ2Y2I5NDcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjEsNyArMjEs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
IAotI2luY2x1ZGUgIkRvY3VtZW50UGFyc2VyLmgiCisjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTIzOCwxMSArMjM4LDEyIEBAIEpTRE9NV2luZG93U2hl
bGwqIFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkK
IGludCBTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJMaW5lTnVtYmVyKCkgY29uc3QKIHsK
ICAgICAvLyBKU0MgZXhwZWN0cyAxLWJhc2VkIGxpbmUgbnVtYmVycywgc28gd2UgbXVzdCBhZGQg
b25lIGhlcmUgdG8gZ2V0IGl0IHJpZ2h0LgotICAgIGlmIChEb2N1bWVudFBhcnNlciogcGFyc2Vy
ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCkpCisgICAgU2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zY3JpcHRhYmxlRG9jdW1lbnRQ
YXJzZXIoKTsKKyAgICBpZiAocGFyc2VyKQogICAgICAgICByZXR1cm4gcGFyc2VyLT5saW5lTnVt
YmVyKCkgKyAxOwogICAgIHJldHVybiAwOwogfQotICAgIAorCiBib29sIFNjcmlwdENvbnRyb2xs
ZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZShET01XcmFwcGVyV29ybGQqIHdvcmxkKSBjb25zdAog
ewogICAgIGlmIChtX2FsbG93UG9wdXBzRnJvbVBsdWdpbiB8fCBpc0phdmFTY3JpcHRBbmNob3JO
YXZpZ2F0aW9uKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBi
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDQwYmIwZGVjYzExNDhhZTFjNmM2
MzUwNzRhZTYzMTJjMmFjZDljNzAuLjIyN2QzN2NiYjY4MzQwODA5ZGIzZjNlYmJhYmIwMDU2N2Ux
MGU4ODUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0yMDcsNyArMjA3LDggQEAgdm9pZCBDU1NT
dHlsZVNoZWV0OjpjaGVja0xvYWRlZCgpCiAgICAgaWYgKHBhcmVudCgpKQogICAgICAgICBwYXJl
bnQoKS0+Y2hlY2tMb2FkZWQoKTsKIAotICAgIC8vIEF2b2lkIHx0aGlzfCBiZWluZyBkZWxldGVk
IGJ5IHNjcmlwdHMgdGhhdCBydW4gdmlhIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6ZXhlY3V0
ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKS4KKyAgICAvLyBBdm9pZCB8dGhpc3wgYmVp
bmcgZGVsZXRlZCBieSBzY3JpcHRzIHRoYXQgcnVuIHZpYQorICAgIC8vIFNjcmlwdGFibGVEb2N1
bWVudFBhcnNlcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKS4KICAgICAv
LyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzY2MjIzMDA+LgogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0
PiBwcm90ZWN0b3IodGhpcyk7CiAgICAgbV9sb2FkQ29tcGxldGVkID0gb3duZXJOb2RlKCkgPyBv
d25lck5vZGUoKS0+c2hlZXRMb2FkZWQoKSA6IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYzRmOGI0NGY4
YWIwYTQyNTQ2NWJhZTFmZGJlNzBmMWEyMTZmMzZhYS4uNWUzMTgyMjM2NGVmNmI5N2ZmMTBlOTUz
NzI3YTdlNWEyNjQyMGU1MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTcwOCw2ICsxNzA4LDExIEBAIERvY3Vt
ZW50UGFyc2VyKiBEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKICAgICByZXR1cm4gbmV3IFhNTERv
Y3VtZW50UGFyc2VyKHRoaXMsIHZpZXcoKSk7CiB9CiAKK1NjcmlwdGFibGVEb2N1bWVudFBhcnNl
ciogRG9jdW1lbnQ6OnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHBhcnNlcigpID8gcGFyc2VyKCktPmFzU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgOiAw
OworfQorCiB2b2lkIERvY3VtZW50OjpvcGVuKERvY3VtZW50KiBvd25lckRvY3VtZW50KQogewog
ICAgIGlmIChvd25lckRvY3VtZW50KSB7CkBAIC0xNzE3LDkgKzE3MjIsMTAgQEAgdm9pZCBEb2N1
bWVudDo6b3BlbihEb2N1bWVudCogb3duZXJEb2N1bWVudCkKICAgICB9CiAKICAgICBpZiAobV9m
cmFtZSkgewotICAgICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPmlzTG9hZGluZ01haW5SZXNv
dXJjZSgpIHx8IChwYXJzZXIoKSAmJiBwYXJzZXIoKS0+aXNFeGVjdXRpbmdTY3JpcHQoKSkpCisg
ICAgICAgIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciogcGFyc2VyID0gc2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyKCk7CisgICAgICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIoKS0+aXNMb2FkaW5nTWFp
blJlc291cmNlKCkgfHwgKHBhcnNlciAmJiBwYXJzZXItPmlzRXhlY3V0aW5nU2NyaXB0KCkpKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIo
KS0+c3RhdGUoKSA9PSBGcmFtZVN0YXRlUHJvdmlzaW9uYWwpCiAgICAgICAgICAgICBtX2ZyYW1l
LT5sb2FkZXIoKS0+c3RvcEFsbExvYWRlcnMoKTsKICAgICB9CkBAIC0xNzU2LDggKzE3NjIsOSBA
QCB2b2lkIERvY3VtZW50OjppbXBsaWNpdE9wZW4oKQogICAgIG1fcGFyc2VyID0gY3JlYXRlUGFy
c2VyKCk7CiAgICAgc2V0UGFyc2luZyh0cnVlKTsKIAotICAgIGlmIChtX2ZyYW1lKQotICAgICAg
ICBtX3BhcnNlci0+c2V0WFNTQXVkaXRvcihtX2ZyYW1lLT5zY3JpcHQoKS0+eHNzQXVkaXRvcigp
KTsKKyAgICBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IHNjcmlwdGFibGVEb2N1
bWVudFBhcnNlcigpOworICAgIGlmIChtX2ZyYW1lICYmIHBhcnNlcikKKyAgICAgICAgcGFyc2Vy
LT5zZXRYU1NBdWRpdG9yKG1fZnJhbWUtPnNjcmlwdCgpLT54c3NBdWRpdG9yKCkpOwogCiAgICAg
Ly8gSWYgd2UgcmVsb2FkLCB0aGUgYW5pbWF0aW9uIGNvbnRyb2xsZXIgc3RpY2tzIGFyb3VuZCBh
bmQgaGFzCiAgICAgLy8gYSBzdGFsZSBhbmltYXRpb24gdGltZS4gV2UgbmVlZCB0byB1cGRhdGUg
aXQgaGVyZS4KQEAgLTE4NDIsNyArMTg0OSw4IEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxpY2l0Q2xv
c2UoKQogCiAgICAgbV9wcm9jZXNzaW5nTG9hZEV2ZW50ID0gdHJ1ZTsKIAotICAgIG1fd2VsbEZv
cm1lZCA9IG1fcGFyc2VyICYmIG1fcGFyc2VyLT53ZWxsRm9ybWVkKCk7CisgICAgU2NyaXB0YWJs
ZURvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKTsKKyAg
ICBtX3dlbGxGb3JtZWQgPSBwYXJzZXIgJiYgcGFyc2VyLT53ZWxsRm9ybWVkKCk7CiAKICAgICAv
LyBXZSBoYXZlIHRvIGNsZWFyIHRoZSBwYXJzZXIsIGluIGNhc2Ugc29tZW9uZSBkb2N1bWVudC53
cml0ZSgpcyBmcm9tIHRoZQogICAgIC8vIG9uTG9hZCBldmVudCBoYW5kbGVyLCBhcyBpbiBSYWRh
ciAzMjA2NTI0LgpAQCAtMjU5NCw5ICsyNjAyLDEwIEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZVBl
bmRpbmdTaGVldCgpCiAjZW5kaWYKIAogICAgIHVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsKLSAgICAK
LSAgICBpZiAoIW1fcGVuZGluZ1N0eWxlc2hlZXRzICYmIG1fcGFyc2VyKQotICAgICAgICBtX3Bh
cnNlci0+ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKKworICAgIFNjcmlw
dGFibGVEb2N1bWVudFBhcnNlciogcGFyc2VyID0gc2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCk7
CisgICAgaWYgKCFtX3BlbmRpbmdTdHlsZXNoZWV0cyAmJiBwYXJzZXIpCisgICAgICAgIHBhcnNl
ci0+ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKIAogICAgIGlmICghbV9w
ZW5kaW5nU3R5bGVzaGVldHMgJiYgbV9nb3RvQW5jaG9yTmVlZGVkQWZ0ZXJTdHlsZXNoZWV0c0xv
YWQgJiYgdmlldygpKQogICAgICAgICB2aWV3KCktPnNjcm9sbFRvRnJhZ21lbnQobV9mcmFtZS0+
bG9hZGVyKCktPnVybCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDljOGM4MmI5MGMyZWJmNzQ3YmUyZTAwYzM0NTli
NzI0ODM4NjNjOWYuLjAxYTQ5ZTU3M2QwNGRhZTM4NWE0MjM1ZGFmMDY3ZmYzZjg5ZTg5MzAgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaApAQCAtMTAwLDYgKzEwMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBS
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBSZW5kZXJBcmVuYTsKICAgICBjbGFz
cyBSZW5kZXJWaWV3OworICAgIGNsYXNzIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcjsKICAgICBj
bGFzcyBTY3JpcHRFbGVtZW50RGF0YTsKICAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsKICAgICBj
bGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CkBAIC01NDEsNyArNTQyLDggQEAgcHVibGljOgog
ICAgIENTU1N0eWxlU2hlZXQqIG1hcHBlZEVsZW1lbnRTaGVldCgpOwogICAgIAogICAgIHZpcnR1
YWwgRG9jdW1lbnRQYXJzZXIqIGNyZWF0ZVBhcnNlcigpOwotICAgIERvY3VtZW50UGFyc2VyKiBw
YXJzZXIoKSB7IHJldHVybiBtX3BhcnNlci5nZXQoKTsgfQorICAgIERvY3VtZW50UGFyc2VyKiBw
YXJzZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlci5nZXQoKTsgfQorICAgIFNjcmlwdGFibGVE
b2N1bWVudFBhcnNlciogc2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgY29uc3Q7CiAgICAgCiAg
ICAgYm9vbCBwcmludGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbnRpbmc7IH0KICAgICB2b2lk
IHNldFByaW50aW5nKGJvb2wgcCkgeyBtX3ByaW50aW5nID0gcDsgfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9kb20vRG9jdW1lbnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIu
Y3BwCmluZGV4IDUyNzc0MTZhMmU1ZGI4NzU1MmVhMjhiMjYwYzg1YjRiMWRhNTBlNzAuLmI4MDky
N2M1MzRmYjYwZjAwZGY2MzJmMDZiN2MwMDQ3ZDk1MDQyMjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZG9tL0RvY3VtZW50UGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5j
cHAKQEAgLTI2LDM5ICsyNiwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50UGFyc2VyLmgiCiAKLSNpbmNsdWRlICJEb2N1bWVudFdyaXRlci5oIgotI2luY2x1ZGUg
IlNlZ21lbnRlZFN0cmluZy5oIgotI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKLQog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRG9j
dW1lbnRQYXJzZXI6OkRvY3VtZW50UGFyc2VyKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCB2aWV3
U291cmNlTW9kZSkKK0RvY3VtZW50UGFyc2VyOjpEb2N1bWVudFBhcnNlcihEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBtX3BhcnNlclN0b3BwZWQoZmFsc2UpCi0gICAgLCBtX2luVmlld1NvdXJj
ZU1vZGUodmlld1NvdXJjZU1vZGUpCiAgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQotICAgICwg
bV9YU1NBdWRpdG9yKDApCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKIH0KIAotdm9pZCBEb2N1
bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIqIHdyaXRlciAsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgsIGJvb2wgc2hvdWxkRmx1c2gpCi17Ci0gICAgaWYgKCFsZW5n
dGggJiYgIXNob3VsZEZsdXNoKQotICAgICAgICByZXR1cm47Ci0KLSAgICBUZXh0UmVzb3VyY2VE
ZWNvZGVyKiBkZWNvZGVyID0gd3JpdGVyLT5jcmVhdGVEZWNvZGVySWZOZWVkZWQoKTsKLSAgICBT
dHJpbmcgZGVjb2RlZCA9IGRlY29kZXItPmRlY29kZShkYXRhLCBsZW5ndGgpOwotICAgIGlmIChz
aG91bGRGbHVzaCkKLSAgICAgICAgZGVjb2RlZCArPSBkZWNvZGVyLT5mbHVzaCgpOwotICAgIGlm
IChkZWNvZGVkLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgd3JpdGVyLT5yZXBv
cnREYXRhUmVjaWV2ZWQoKTsKLQotICAgIGFwcGVuZChkZWNvZGVkKTsKLX0KLQogfTsKIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50UGFyc2VyLmgKaW5kZXggNDc4OWFiYWRmOWJjNzc2NGYzNDRjMWUzZGFjODY4ZTg3MGIxYzk3
NS4uN2U0N2E4NzE1YTE0MzcwZGRhMGU2MjcyMmU0OGVjNTFkNmE2YjI3NiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudFBh
cnNlci5oCkBAIC0zMSwxOCArMzEsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9j
dW1lbnQ7CiBjbGFzcyBEb2N1bWVudFdyaXRlcjsKIGNsYXNzIExlZ2FjeUhUTUxUcmVlQnVpbGRl
cjsKLWNsYXNzIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjsKIGNsYXNzIFNlZ21lbnRlZFN0cmlu
ZzsKLWNsYXNzIFhTU0F1ZGl0b3I7CitjbGFzcyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXI7CiAK
IGNsYXNzIERvY3VtZW50UGFyc2VyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5Eb2N1bWVudFBhcnNlcigpIHsgfQogCisgICAgdmlydHVhbCBTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIqIGFzU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgeyByZXR1cm4gMDsg
fQorCiAgICAgLy8gaW5zZXJ0IGlzIHVzZWQgYnkgZG9jdW1lbnQud3JpdGUKICAgICB2aXJ0dWFs
IHZvaWQgaW5zZXJ0KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpID0gMDsKKwogICAgIC8vIGFwcGVu
ZEJ5dGVzIGlzIHVzZWQgYnkgRG9jdW1lbnRXcml0ZXIgKHRoZSBsb2FkZXIpCi0gICAgdmlydHVh
bCB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGlu
dCBsZW5ndGgsIGJvb2wgZmx1c2gpOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRCeXRlcyhEb2N1
bWVudFdyaXRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoLCBib29sIGZsdXNoKSA9
IDA7CiAKICAgICAvLyBGSVhNRTogYXBwZW5kKCkgc2hvdWxkIGJlIHByaXZhdGUsIGJ1dCBEb2N1
bWVudFdyaXRlcjo6cmVwbGFjZURvY3VtZW50CiAgICAgLy8gdXNlcyBpdCBmb3Igbm93LgpAQCAt
NTEsNDggKzUzLDI4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCkgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBmaW5pc2hXYXNDYWxsZWQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgaXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNF
eGVjdXRpbmdTY3JpcHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCiAgICAgdmlydHVhbCB2
b2lkIHN0b3BQYXJzaW5nKCkgeyBtX3BhcnNlclN0b3BwZWQgPSB0cnVlOyB9CiAgICAgLy8gRklY
TUU6IHByb2Nlc3NpbmdEYXRhKCkgaXMgb25seSB1c2VkIGJ5IERvY3VtZW50TG9hZGVyOjppc0xv
YWRpbmdJbkFQSVNlbnNlCiAgICAgLy8gYW5kIGlzIHZlcnkgdW5jbGVhciBhcyB0byB3aGF0IGl0
IGFjdHVhbGx5IG1lYW5zLiAgT25seSBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIKICAgICAvLyBh
Y3R1YWxseSBpbXBsZW1lbnRzIGl0LgogICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzaW5nRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgd2VsbEZvcm1lZCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQotICAgIHZpcnR1YWwgaW50IGxpbmVOdW1iZXIoKSBj
b25zdCB7IHJldHVybiAtMTsgfQotICAgIHZpcnR1YWwgaW50IGNvbHVtbk51bWJlcigpIGNvbnN0
IHsgcmV0dXJuIC0xOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNjcmlwdHNXYWl0aW5n
Rm9yU3R5bGVzaGVldHMoKSB7fQotCisgICAgLy8gRklYTUU6IEV4cG9zZWQgZm9yIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OnJlbW92ZWRGcm9tVHJlZS4gIEhUTUwgRE9NCisgICAgLy8gY29kZSBz
aG91bGQgbm90IG5lZWQgdG8gcmVhY2ggaW50byBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRo
ZSBwYXJzZXIuCiAgICAgdmlydHVhbCBMZWdhY3lIVE1MVHJlZUJ1aWxkZXIqIGh0bWxUcmVlQnVp
bGRlcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIExlZ2FjeUhUTUxEb2N1bWVu
dFBhcnNlciogYXNIVE1MRG9jdW1lbnRQYXJzZXIoKSB7IHJldHVybiAwOyB9Ci0KLSAgICAvLyBG
SVhNRTogdmlldyBzb3VyY2UgbW9kZSBpcyBvbmx5IHVzZWQgYnkgdGhlIEhUTUwgYW5kIFRleHQK
LSAgICAvLyBEb2N1bWVudFBhcnNlcnMgYW5kIG1heSBub3QgYmVsb25nIG9uIHRoZSBiYXNlLWNs
YXNzLgotICAgIGJvb2wgaW5WaWV3U291cmNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5WaWV3
U291cmNlTW9kZTsgfQotICAgIHZvaWQgc2V0SW5WaWV3U291cmNlTW9kZShib29sIG1vZGUpIHsg
bV9pblZpZXdTb3VyY2VNb2RlID0gbW9kZTsgfQogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9kb2N1bWVudDsgfQogCi0gICAgWFNTQXVkaXRvciogeHNzQXVkaXRv
cigpIGNvbnN0IHsgcmV0dXJuIG1fWFNTQXVkaXRvcjsgfQotICAgIHZvaWQgc2V0WFNTQXVkaXRv
cihYU1NBdWRpdG9yKiBhdWRpdG9yKSB7IG1fWFNTQXVkaXRvciA9IGF1ZGl0b3I7IH0KLQogcHJv
dGVjdGVkOgotICAgIERvY3VtZW50UGFyc2VyKERvY3VtZW50KiwgYm9vbCB2aWV3U291cmNlTW9k
ZSA9IGZhbHNlKTsKKyAgICBEb2N1bWVudFBhcnNlcihEb2N1bWVudCopOwogCiAgICAgLy8gVGhl
IHBhcnNlciBoYXMgYnVmZmVycywgc28gcGFyc2luZyBtYXkgY29udGludWUgZXZlbiBhZnRlcgog
ICAgIC8vIGl0IHN0b3BzIHJlY2VpdmluZyBkYXRhLiBXZSB1c2UgbV9wYXJzZXJTdG9wcGVkIHRv
IHN0b3AgdGhlIHBhcnNlcgogICAgIC8vIGV2ZW4gd2hlbiBpdCBoYXMgYnVmZmVyZWQgZGF0YS4K
ICAgICBib29sIG1fcGFyc2VyU3RvcHBlZDsKLSAgICBib29sIG1faW5WaWV3U291cmNlTW9kZTsK
IAogICAgIC8vIEV2ZXJ5IERvY3VtZW50UGFyc2VyIG5lZWRzIGEgcG9pbnRlciBiYWNrIHRvIHRo
ZSBkb2N1bWVudC4KICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKLSAgICAvLyBUaGUgWFNTQXVk
aXRvciBhc3NvY2lhdGVkIHdpdGggdGhpcyBkb2N1bWVudCBwYXJzZXIuCi0gICAgWFNTQXVkaXRv
ciogbV9YU1NBdWRpdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmggYi9XZWJDb3JlL2RvbS9SYXdE
YXRhRG9jdW1lbnRQYXJzZXIuaAppbmRleCA5ZmM5MGY1MTFkZDgwY2Q3MzU0MDlkMDI3MGRiNDdl
ZDY4YTFmZjJiLi4yZWIzZDBhZDVmYjY4ZWRiNGIzNWE0ZmQ4YTBlYjc5NzgzZmEyYmI4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaAorKysgYi9XZWJDb3Jl
L2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaApAQCAtNjIsOCArNjIsNiBAQCBwcml2YXRlOgog
ICAgICAgICAvLyBkZWxldGVkIGFmdGVyIGZpbmlzaCgpLgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQotCi0gICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogfTsKIAogfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1Njcmlw
dGFibGVEb2N1bWVudFBhcnNlci5jcHAgYi9XZWJDb3JlL2RvbS9TY3JpcHRhYmxlRG9jdW1lbnRQ
YXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzYjM0MTdiZWUzM2UzNDE0ZjBkNTllOTZmOTg1NjJiN2Nl
N2I2NDEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9TY3JpcHRhYmxlRG9jdW1lbnRQ
YXJzZXIuY3BwCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXI6OlNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihEb2N1bWVudCogZG9jdW1l
bnQsIGJvb2wgdmlld1NvdXJjZU1vZGUpCisgICAgOiBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2Vy
KGRvY3VtZW50LCB2aWV3U291cmNlTW9kZSkKKyAgICAsIG1feHNzQXVkaXRvcigwKQoreworfQor
Cit9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgg
Yi9XZWJDb3JlL2RvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNWYy
ZTQyYzE3YWM5MWM0Njk1MzVjOTM3NTEzNzkzYzEzYTAxMmU4Ci0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgKQEAgLTAsMCArMSw3MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKyNpZm5kZWYg
U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyX2gKKyNkZWZpbmUgU2NyaXB0YWJsZURvY3VtZW50UGFy
c2VyX2gKKworI2luY2x1ZGUgIkRlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBTZWdtZW50ZWRTdHJpbmc7CitjbGFzcyBYU1NBdWRpdG9y
OworCitjbGFzcyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgRGVjb2RlZERhdGFE
b2N1bWVudFBhcnNlciB7CitwdWJsaWM6CisgICAgLy8gT25seSB1c2VkIGJ5IERvY3VtZW50Ojpv
cGVuIGZvciBkZWNpZGluZyBpZiBpdHMgc2FmZSB0byBhY3Qgb24gYQorICAgIC8vIEphdmFTY3Jp
cHQgZG9jdW1lbnQub3BlbigpIGNhbGwgcmlnaHQgbm93LCBvciBpdCBzaG91bGQgYmUgaWdub3Jl
ZC4KKyAgICB2aXJ0dWFsIGJvb2wgaXNFeGVjdXRpbmdTY3JpcHQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorCisgICAgLy8gRklYTUU6IE9ubHkgdGhlIEhUTUxEb2N1bWVudFBhcnNlciBldmVy
IGJsb2NrcyBzY3JpcHQgZXhlY3V0aW9uIG9uCisgICAgLy8gc3R5bGVzaGVldCBsb2FkLCB3aGlj
aCBpcyBsaWtlbHkgYSBidWcgaW4gdGhlIFhNTERvY3VtZW50UGFyc2VyLgorICAgIHZpcnR1YWwg
dm9pZCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpIHsgfQorCisgICAgdmly
dHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdCA9IDA7CisKKyAgICAvLyBUaGVz
ZSBhcmUgdXNlZCB0byBleHBvc2UgdGhlIGN1cnJlbnQgbGluZS9jb2x1bW4gdG8gdGhlIHNjcmlw
dGluZyBzeXN0ZW0uCisgICAgdmlydHVhbCBpbnQgbGluZU51bWJlcigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGludCBjb2x1bW5OdW1iZXIoKSBjb25zdCA9IDA7CisKKyAgICBYU1NBdWRpdG9y
KiB4c3NBdWRpdG9yKCkgY29uc3QgeyByZXR1cm4gbV94c3NBdWRpdG9yOyB9CisgICAgdm9pZCBz
ZXRYU1NBdWRpdG9yKFhTU0F1ZGl0b3IqIGF1ZGl0b3IpIHsgbV94c3NBdWRpdG9yID0gYXVkaXRv
cjsgfQorCisgICAgLy8gRXhwb3NlZCBmb3IgTGVnYWN5SFRNTFRyZWVCdWlsZGVyOjpyZXBvcnRF
cnJvclRvQ29uc29sZQorICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzaW5nQ29udGVudFdyaXR0ZW5C
eVNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBTY3Jp
cHRhYmxlRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqLCBib29sIHZpZXdTb3VyY2VNb2RlID0gZmFs
c2UpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBh
c1NjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpIHsgcmV0dXJuIHRoaXM7IH0KKworICAgIC8vIFRo
ZSBYU1NBdWRpdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRvY3VtZW50IHBhcnNlci4KKyAgICBY
U1NBdWRpdG9yKiBtX3hzc0F1ZGl0b3I7Cit9OworCit9CisKKyNlbmRpZiAvLyBTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVu
dHMuY3BwIGIvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCmluZGV4IDIzZDAyOTdk
OTg3Nzk0MDExNmY4Y2E2NWUzOGY1ZmNkMjU5ODc5MWQuLmM1MDcwMzI1MjE2MDc3Y2I3M2ZjM2Ex
NWQ1YjllNGY4ZTNiZGQ3MTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1l
bnRzLmNwcAorKysgYi9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKQEAgLTMzLDcg
KzMzLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIkRvY3VtZW50UGFyc2VyLmgiCisjaW5jbHVk
ZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTAzLDEwICsxMDMsMjAgQEAgc3RhdGljIE1lc3NhZ2VMZXZlbCB2aWV3cG9ydEVycm9yTWVz
c2FnZUxldmVsKFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSkKICAgICByZXR1cm4gZXJyb3JD
b2RlID09IFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRFcnJvciB8fCBlcnJvckNvZGUgPT0g
TWF4aW11bVNjYWxlVG9vTGFyZ2VFcnJvciA/IEVycm9yTWVzc2FnZUxldmVsIDogVGlwTWVzc2Fn
ZUxldmVsOwogfQogCi12b2lkIHJlcG9ydFZpZXdwb3J0V2FybmluZyhEb2N1bWVudCogZG9jdW1l
bnQsIFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVu
dCkKKy8vIEZJWE1FOiBXaHkgaXMgdGhpcyBkaWZmZXJlbnQgZnJvbSBTVkdEb2N1bWVudEV4dGVu
c2lvbnMgcGFyc2VyTGluZU51bWJlcj8KKy8vIEZJWE1FOiBDYWxsZXJzIHNob3VsZCBwcm9iYWJs
eSB1c2UgU2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpCitzdGF0aWMg
aW50IHBhcnNlckxpbmVOdW1iZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIERvY3VtZW50
UGFyc2VyKiBwYXJzZXIgPSBkb2N1bWVudC0+cGFyc2VyKCk7CisgICAgaWYgKCFkb2N1bWVudCkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBwYXJzZXIg
PSBkb2N1bWVudC0+c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCk7CisgICAgaWYgKCFwYXJzZXIp
CisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBwYXJzZXItPmxpbmVOdW1iZXIoKSArIDE7
Cit9CiAKK3ZvaWQgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKERvY3VtZW50KiBkb2N1bWVudCwgVmll
d3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KQorewog
ICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAg
ICAgICAgIHJldHVybjsKQEAgLTExNCw3ICsxMjQsNyBAQCB2b2lkIHJlcG9ydFZpZXdwb3J0V2Fy
bmluZyhEb2N1bWVudCogZG9jdW1lbnQsIFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgY29u
cwogICAgIFN0cmluZyBtZXNzYWdlID0gdmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZShlcnJv
ckNvZGUpOwogICAgIG1lc3NhZ2UucmVwbGFjZSgiJXJlcGxhY2VtZW50IiwgcmVwbGFjZW1lbnQp
OwogCi0gICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSFRNTE1l
c3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCB2aWV3cG9ydEVycm9yTWVzc2FnZUxldmVsKGVy
cm9yQ29kZSksIG1lc3NhZ2UsIHBhcnNlciA/IHBhcnNlci0+bGluZU51bWJlcigpICsgMSA6IDAs
IGRvY3VtZW50LT51cmwoKS5zdHJpbmcoKSk7CisgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25z
b2xlKCktPmFkZE1lc3NhZ2UoSFRNTE1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCB2aWV3
cG9ydEVycm9yTWVzc2FnZUxldmVsKGVycm9yQ29kZSksIG1lc3NhZ2UsIHBhcnNlckxpbmVOdW1i
ZXIoZG9jdW1lbnQpLCBkb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5o
IGIvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCA5ZjM2NzkxYmM2MDU1ZWJl
MjY5ODRhZDdkNTA0ZDViMDIyOWUxMDJhLi40Yjg2YThhOGE3YzMzZTcwY2EyYzk1M2VmNmI2YjA0
NmRlMTY4NGYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5oCisr
KyBiL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmgKQEAgLTI3LDEwICsyNywxMCBAQAog
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIgor
I2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNlZ21lbnRl
ZFN0cmluZy5oIgogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKLSNpbmNsdWRlICJEb2N1bWVudFBh
cnNlci5oIgotI2luY2x1ZGUgIkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCkBAIC03MCw3ICs3
MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB9OwogI2VuZGlmCiAKLSAgICBjbGFzcyBY
TUxEb2N1bWVudFBhcnNlciA6IHB1YmxpYyBEb2N1bWVudFBhcnNlciwgcHVibGljIENhY2hlZFJl
c291cmNlQ2xpZW50IHsKKyAgICBjbGFzcyBYTUxEb2N1bWVudFBhcnNlciA6IHB1YmxpYyBTY3Jp
cHRhYmxlRG9jdW1lbnRQYXJzZXIsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiAgICAg
cHVibGljOgogICAgICAgICBYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudCosIEZyYW1lVmlldyog
PSAwKTsKICAgICAgICAgWE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCosIEVsZW1l
bnQqLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24pOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggNzg0NmY4ZjdhZjI4ZGIyOWRkMzRkNTcwNDMzZDI2MDQ4
NmZmMzFjMC4uY2RjNThmYzY4OTBmZmExZjE5YmFmNDE4ZjcxYzYxMDE4M2M5OTQyZCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9XZWJD
b3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC01MjMsNyArNTIzLDcgQEAg
UGFzc1JlZlB0cjxYTUxQYXJzZXJDb250ZXh0PiBYTUxQYXJzZXJDb250ZXh0OjpjcmVhdGVNZW1v
cnlQYXJzZXIoeG1sU0FYSGFuZGxlclAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudCogZG9j
dW1lbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQotICAgIDogRG9jdW1lbnRQYXJzZXIoZG9jdW1l
bnQpCisgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgLCBtX3Zp
ZXcoZnJhbWVWaWV3KQogICAgICwgbV9jb250ZXh0KDApCiAgICAgLCBtX3BlbmRpbmdDYWxsYmFj
a3MobmV3IFBlbmRpbmdDYWxsYmFja3MpCkBAIC01NTAsNyArNTUwLDcgQEAgWE1MRG9jdW1lbnRQ
YXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50KiBkb2N1bWVudCwgRnJhbWVWaWV3KiBm
cmFtZVZpZXcpCiB9CiAKIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2N1
bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRWxlbWVudCogcGFyZW50RWxlbWVudCwgRnJhZ21lbnRT
Y3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCi0gICAgOiBEb2N1bWVudFBh
cnNlcihmcmFnbWVudC0+ZG9jdW1lbnQoKSkKKyAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNl
cihmcmFnbWVudC0+ZG9jdW1lbnQoKSkKICAgICAsIG1fdmlldygwKQogICAgICwgbV9jb250ZXh0
KDApCiAgICAgLCBtX3BlbmRpbmdDYWxsYmFja3MobmV3IFBlbmRpbmdDYWxsYmFja3MpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUvaHRt
bC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGZlMTEwMDQ2YjhlMDE4ZTNiYjhmOTY0OWI5
ZWJjN2E4ZDNjMDU4MzkuLmZjNmQ3ZGZjZmVhNDY1ZDlkOTM2MGVkNDk4ZDUwZGQwNDQyMzhhYjkg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHByaXZh
dGU6CiB9IC8vIG5hbWVzcGFjZQogCiBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBh
cnNlcihIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHJlcG9ydEVycm9ycykKLSAgICA6IERv
Y3VtZW50UGFyc2VyKGRvY3VtZW50KQorICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGRv
Y3VtZW50KQogICAgICwgbV90b2tlbml6ZXIobmV3IEhUTUxUb2tlbml6ZXIpCiAgICAgLCBtX3Nj
cmlwdFJ1bm5lcihuZXcgSFRNTFNjcmlwdFJ1bm5lcihkb2N1bWVudCwgdGhpcykpCiAgICAgLCBt
X3RyZWVCdWlsZGVyKG5ldyBIVE1MVHJlZUJ1aWxkZXIobV90b2tlbml6ZXIuZ2V0KCksIGRvY3Vt
ZW50LCByZXBvcnRFcnJvcnMpKQpAQCAtODAsNyArODAsNyBAQCBIVE1MRG9jdW1lbnRQYXJzZXI6
OkhUTUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHJlcG9ydEVy
cm9ycwogLy8gRklYTUU6IE1lbWJlciB2YXJpYWJsZXMgc2hvdWxkIGJlIGdyb3VwZWQgaW50byBz
ZWxmLWluaXRpYWxpemluZyBzdHJ1Y3RzIHRvCiAvLyBtaW5pbWl6ZSBjb2RlIGR1cGxpY2F0aW9u
IGJldHdlZW4gdGhlc2UgY29uc3RydWN0b3JzLgogSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9j
dW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEZyYWdtZW50U2NyaXB0aW5n
UGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQotICAgIDogRG9jdW1lbnRQYXJzZXIoZnJh
Z21lbnQtPmRvY3VtZW50KCkpCisgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZnJhZ21l
bnQtPmRvY3VtZW50KCkpCiAgICAgLCBtX3Rva2VuaXplcihuZXcgSFRNTFRva2VuaXplcikKICAg
ICAsIG1fdHJlZUJ1aWxkZXIobmV3IEhUTUxUcmVlQnVpbGRlcihtX3Rva2VuaXplci5nZXQoKSwg
ZnJhZ21lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24pKQogICAgICwgbV9lbmRXYXNEZWxheWVkKGZh
bHNlKQpAQCAtMzU3LDkgKzM1Nyw5IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpzdG9wV2F0
Y2hpbmdGb3JMb2FkKENhY2hlZFJlc291cmNlKiBjYWNoZWRTY3JpcHQpCiAKIGJvb2wgSFRNTERv
Y3VtZW50UGFyc2VyOjpzaG91bGRMb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKGNvbnN0IEF0b21p
Y1N0cmluZyYgc3JjVmFsdWUpCiB7Ci0gICAgaWYgKCFtX1hTU0F1ZGl0b3IpCisgICAgaWYgKCF4
c3NBdWRpdG9yKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtX1hTU0F1ZGl0
b3ItPmNhbkxvYWRFeHRlcm5hbFNjcmlwdEZyb21TcmMoc3JjVmFsdWUpOworICAgIHJldHVybiB4
c3NBdWRpdG9yKCktPmNhbkxvYWRFeHRlcm5hbFNjcmlwdEZyb21TcmMoc3JjVmFsdWUpOwogfQog
CiB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Uq
IGNhY2hlZFJlc291cmNlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBh
cnNlci5oIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IGRiNWY1Y2M4
MDAwNjcxNWZiZTc1ZWI1ZTAyNWIwYTI3Zjg4NzFlNjguLjk1MjhkOTdhYmQyOGM0MDJmOWE2MWMz
NmEzZWIzNWI3NmYwZTg4NzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQ
YXJzZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmgKQEAgLTI4LDEx
ICsyOCwxMSBAQAogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRl
ICJGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRTdHJl
YW0uaCIKICNpbmNsdWRlICJIVE1MU2NyaXB0UnVubmVySG9zdC5oIgogI2luY2x1ZGUgIkhUTUxU
b2tlbi5oIgotI2luY2x1ZGUgIkhUTUxJbnB1dFN0cmVhbS5oIgorI2luY2x1ZGUgIlNjcmlwdGFi
bGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNlZ21lbnRlZFN0cmluZy5oIgotI2luY2x1
ZGUgIkRvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgTGVnYWN5SFRNTFRyZWVCdWlsZGVy
OwogY2xhc3MgU2NyaXB0Q29udHJvbGxlcjsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiAKLWNs
YXNzIEhUTUxEb2N1bWVudFBhcnNlciA6ICBwdWJsaWMgRG9jdW1lbnRQYXJzZXIsIEhUTUxTY3Jp
cHRSdW5uZXJIb3N0LCBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CitjbGFzcyBIVE1MRG9jdW1lbnRQ
YXJzZXIgOiAgcHVibGljIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciwgSFRNTFNjcmlwdFJ1bm5l
ckhvc3QsIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKICAgICAvLyBGSVhNRTogVGhl
c2UgY29uc3RydWN0b3JzIHNob3VsZCBiZSBtYWRlIHByaXZhdGUgYW5kIHJlcGxhY2VkIGJ5IGNy
ZWF0ZSgpIG1ldGhvZHMuCiAgICAgSFRNTERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCosIGJv
b2wgcmVwb3J0RXJyb3JzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9j
dW1lbnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5j
cHAKaW5kZXggMDIyOWIwODM0NTljZTM4ZmEzMTAzNDFiNjhmOWIwNjQyMGEzYjJiMy4uNmM0MmQw
NzQ5YTFmZDliMTcxMDQxYjUxNzQ0ZjVhOWMxNDM0MjZmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0xlZ2Fj
eUhUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBpbmxpbmUgdm9pZCBU
b2tlbjo6YWRkQXR0cmlidXRlKEF0b21pY1N0cmluZyYgYXR0ck5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgYXR0cgogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBMZWdhY3lIVE1MRG9jdW1lbnRQ
YXJzZXI6OkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBi
b29sIHJlcG9ydEVycm9ycykKLSAgICA6IERvY3VtZW50UGFyc2VyKGRvY3VtZW50KQorICAgIDog
U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGRvY3VtZW50KQogICAgICwgbV9idWZmZXIoMCkKICAg
ICAsIG1fc2NyaXB0Q29kZSgwKQogICAgICwgbV9zY3JpcHRDb2RlU2l6ZSgwKQpAQCAtMTY3LDcg
KzE2Nyw3IEBAIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6TGVnYWN5SFRNTERvY3VtZW50UGFy
c2VyKEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wKIH0KIAogTGVnYWN5SFRNTERvY3VtZW50
UGFyc2VyOjpMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTFZpZXdTb3VyY2VEb2N1bWVudCog
ZG9jdW1lbnQpCi0gICAgOiBEb2N1bWVudFBhcnNlcihkb2N1bWVudCwgdHJ1ZSkKKyAgICA6IFNj
cmlwdGFibGVEb2N1bWVudFBhcnNlcihkb2N1bWVudCwgdHJ1ZSkKICAgICAsIG1fYnVmZmVyKDAp
CiAgICAgLCBtX3NjcmlwdENvZGUoMCkKICAgICAsIG1fc2NyaXB0Q29kZVNpemUoMCkKQEAgLTE4
Niw3ICsxODYsNyBAQCBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OkxlZ2FjeUhUTUxEb2N1bWVu
dFBhcnNlcihIVE1MVmlld1NvdXJjZURvY3VtZW50KiBkb2N1bQogfQogCiBMZWdhY3lIVE1MRG9j
dW1lbnRQYXJzZXI6OkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50KiBm
cmFnLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKLSAg
ICA6IERvY3VtZW50UGFyc2VyKGZyYWctPmRvY3VtZW50KCkpCisgICAgOiBTY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIoZnJhZy0+ZG9jdW1lbnQoKSkKICAgICAsIG1fYnVmZmVyKDApCiAgICAgLCBt
X3NjcmlwdENvZGUoMCkKICAgICAsIG1fc2NyaXB0Q29kZVNpemUoMCkKQEAgLTEzOTEsNyArMTM5
MSw3IEBAIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6U3RhdGUgTGVnYWN5SFRNTERvY3VtZW50
UGFyc2VyOjpwYXJzZVRhZyhTZWdtZW50ZWRTdHJpCiAKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChtX2N1cnJlbnRUb2tlbi5iZWdpblRhZyAmJiBtX2N1cnJlbnRUb2tlbi50YWdOYW1lID09
IHNjcmlwdFRhZyAmJiAhaW5WaWV3U291cmNlTW9kZSgpICYmICFtX3RyZWVCdWlsZGVyLT5za2lw
TW9kZSgpICYmIG1fYXR0ck5hbWUgPT0gc3JjQXR0cikgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFN0cmluZyBjb250ZXh0KG1fcmF3QXR0cmlidXRlQmVmb3JlVmFsdWUuZGF0YSgpLCBt
X3Jhd0F0dHJpYnV0ZUJlZm9yZVZhbHVlLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1fWFNTQXVkaXRvciAmJiAhbV9YU1NBdWRpdG9yLT5jYW5Mb2FkRXh0ZXJuYWxT
Y3JpcHRGcm9tU3JjKGF0dHJpYnV0ZVZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoeHNzQXVkaXRvcigpICYmICF4c3NBdWRpdG9yKCktPmNhbkxvYWRFeHRlcm5hbFNjcmlw
dEZyb21TcmMoYXR0cmlidXRlVmFsdWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGVWYWx1ZSA9IGJsYW5rVVJMKCkuc3RyaW5nKCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAKQEAgLTE0MjgsNyArMTQyOCw3IEBAIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNl
cjo6U3RhdGUgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpwYXJzZVRhZyhTZWdtZW50ZWRTdHJp
CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnRUb2tlbi5iZWdpblRhZyAm
JiBtX2N1cnJlbnRUb2tlbi50YWdOYW1lID09IHNjcmlwdFRhZyAmJiAhaW5WaWV3U291cmNlTW9k
ZSgpICYmICFtX3RyZWVCdWlsZGVyLT5za2lwTW9kZSgpICYmIG1fYXR0ck5hbWUgPT0gc3JjQXR0
cikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBjb250ZXh0KG1fcmF3QXR0
cmlidXRlQmVmb3JlVmFsdWUuZGF0YSgpLCBtX3Jhd0F0dHJpYnV0ZUJlZm9yZVZhbHVlLnNpemUo
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fWFNTQXVkaXRvciAmJiAhbV9Y
U1NBdWRpdG9yLT5jYW5Mb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKGF0dHJpYnV0ZVZhbHVlKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeHNzQXVkaXRvcigpICYmICF4c3NBdWRp
dG9yKCktPmNhbkxvYWRFeHRlcm5hbFNjcmlwdEZyb21TcmMoYXR0cmlidXRlVmFsdWUpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZSA9IGJsYW5rVVJMKCku
c3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvaHRtbC9MZWdhY3lI
VE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCA0OGQxMjg0YjJlYmZiYzc3YzdjZGE1MDVjNTAxMGEw
YTZlYWQzZjgxLi40OWU2OTc2MDMxMTgxZDNiZmFhYTJmMmE0MTQ4OWE3YmFlMmY4MTlkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmgKKysrIGIvV2Vi
Q29yZS9odG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5oCkBAIC0yOCw5ICsyOCw5IEBACiAj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJGcmFnbWVudFNjcmlw
dGluZ1Blcm1pc3Npb24uaCIKICNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKKyNpbmNsdWRlICJT
Y3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIK
ICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIkRvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KQEAgLTE0MCw3ICsxNDAsNyBAQCBwdWJsaWM6CiAvLyAobGlrZSBkZWFsaW5nIHdp
dGggPHNjcmlwdD4gdGFncykuICBUaGUgSFRNTCB0b2tlbml6ZXIgYml0cyBzaG91bGQgYmUgcHVz
aGVkCiAvLyBkb3duIGludG8gYSBzZXBhcmF0ZSBIVE1MIHRva2VuaXplciBjbGFzcy4KIAotY2xh
c3MgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyIDogcHVibGljIERvY3VtZW50UGFyc2VyLCBwdWJs
aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgeworY2xhc3MgTGVnYWN5SFRNTERvY3VtZW50UGFyc2Vy
IDogcHVibGljIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciwgcHVibGljIENhY2hlZFJlc291cmNl
Q2xpZW50IHsKIHB1YmxpYzoKICAgICBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3Vt
ZW50KiwgYm9vbCByZXBvcnRFcnJvcnMpOwogICAgIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcihI
VE1MVmlld1NvdXJjZURvY3VtZW50Kik7CkBAIC0xNTAsOSArMTUwLDYgQEAgcHVibGljOgogICAg
IGJvb2wgZm9yY2VTeW5jaHJvbm91cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZm9yY2VTeW5j
aHJvbm91cygpOyB9CiAgICAgdm9pZCBzZXRGb3JjZVN5bmNocm9ub3VzKGJvb2wgZm9yY2UpOwog
Ci0gICAgLy8gRXhwb3NlZCBmb3IgTGVnYWN5SFRNTFRyZWVCdWlsZGVyOjpyZXBvcnRFcnJvclRv
Q29uc29sZQotICAgIGJvb2wgcHJvY2Vzc2luZ0NvbnRlbnRXcml0dGVuQnlTY3JpcHQoKSBjb25z
dCB7IHJldHVybiBtX3NyYy5leGNsdWRlTGluZU51bWJlcnMoKTsgfQotCiAgICAgc3RhdGljIHZv
aWQgcGFyc2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYsIERvY3VtZW50RnJhZ21lbnQq
LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGluZ0FsbG93ZWQp
OwogCiBwcm90ZWN0ZWQ6CkBAIC0xNjEsNyArMTU4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2goKTsKIAogcHJpdmF0ZToKLSAgICAvLyBEb2N1bWVudFBhcnNlcgorICAg
IC8vIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcgogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29u
c3QgU2VnbWVudGVkU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIGZpbmlzaFdhc0NhbGxlZCgp
OwogICAgIHZpcnR1YWwgYm9vbCBpc1dhaXRpbmdGb3JTY3JpcHRzKCkgY29uc3Q7CkBAIC0xNzIs
MTAgKzE2OSwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgaW50IGxpbmVOdW1iZXIoKSBjb25z
dCB7IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KICAgICB2aXJ0dWFsIGludCBjb2x1bW5OdW1iZXIo
KSBjb25zdCB7IHJldHVybiAxOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc2luZ0NvbnRl
bnRXcml0dGVuQnlTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NyYy5leGNsdWRlTGluZU51bWJl
cnMoKTsgfQorCiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxl
c2hlZXRzKCk7CiAKICAgICB2aXJ0dWFsIExlZ2FjeUhUTUxUcmVlQnVpbGRlciogaHRtbFRyZWVC
dWlsZGVyKCkgY29uc3QgeyByZXR1cm4gbV90cmVlQnVpbGRlci5nZXQoKTsgfQotICAgIHZpcnR1
YWwgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKiBhc0hUTUxEb2N1bWVudFBhcnNlcigpIHsgcmV0
dXJuIHRoaXM7IH0KIAogICAgIGNsYXNzIFN0YXRlOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvTGVnYWN5SFRNTFRyZWVCdWlsZGVyLmNwcCBiL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MVHJl
ZUJ1aWxkZXIuY3BwCmluZGV4IDdiNDQ5NDNmZGI5ODdlNDY3NjAzYmVmMjM1NWU1NzQ2NTNkZjcz
MTEuLjIxY2E5NzMyNTdhODkzZTUwNjQxMmE0YTc5MzM2YWY4YWQ5ZDdiMTQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRt
bC9MZWdhY3lIVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC0xNjQ3LDggKzE2NDcsOSBAQCB2b2lkIExl
Z2FjeUhUTUxUcmVlQnVpbGRlcjo6cmVwb3J0RXJyb3JUb0NvbnNvbGUoSFRNTFBhcnNlckVycm9y
Q29kZSBlcnJvckNvZGUsCiAgICAgRnJhbWUqIGZyYW1lID0gbV9kb2N1bWVudC0+ZnJhbWUoKTsK
ICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaW50IGxpbmVOdW1i
ZXIgPSBtX2RvY3VtZW50LT5wYXJzZXIoKS0+bGluZU51bWJlcigpICsgMTsKKworICAgIFNjcmlw
dGFibGVEb2N1bWVudFBhcnNlciogcGFyc2VyID0gbV9kb2N1bWVudC0+c2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyKCk7CisgICAgaW50IGxpbmVOdW1iZXIgPSBwYXJzZXItPmxpbmVOdW1iZXIoKSAr
IDE7CiAKICAgICBBdG9taWNTdHJpbmcgdGFnMTsKICAgICBBdG9taWNTdHJpbmcgdGFnMjsKQEAg
LTE2NzQsOSArMTY3NSw3IEBAIHZvaWQgTGVnYWN5SFRNTFRyZWVCdWlsZGVyOjpyZXBvcnRFcnJv
clRvQ29uc29sZShIVE1MUGFyc2VyRXJyb3JDb2RlIGVycm9yQ29kZSwKICAgICAgICAgcmV0dXJu
OwogCiAgICAgU3RyaW5nIG1lc3NhZ2U7Ci0gICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB3b3Jr
IGZvciB0aGUgbmV3IEhUTUxEb2N1bWVudFBhcnNlciBhbmQgc2hvdWxkLgotICAgIExlZ2FjeUhU
TUxEb2N1bWVudFBhcnNlciogaHRtbFBhcnNlciA9IG1fZG9jdW1lbnQtPnBhcnNlcigpLT5hc0hU
TUxEb2N1bWVudFBhcnNlcigpOwotICAgIGlmIChodG1sUGFyc2VyICYmIGh0bWxQYXJzZXItPnBy
b2Nlc3NpbmdDb250ZW50V3JpdHRlbkJ5U2NyaXB0KCkpCisgICAgaWYgKHBhcnNlci0+cHJvY2Vz
c2luZ0NvbnRlbnRXcml0dGVuQnlTY3JpcHQoKSkKICAgICAgICAgbWVzc2FnZSArPSBodG1sUGFy
c2VyRG9jdW1lbnRXcml0ZU1lc3NhZ2UoKTsKICAgICBtZXNzYWdlICs9IGVycm9yTXNnOwogICAg
IG1lc3NhZ2UucmVwbGFjZSgiJXRhZzEiLCB0YWcxKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAppbmRleCBhNjI4NTBjYWNkMWQ4Y2NlNWRmMGY5ZGVjMGNhNDNiYjVkNDc0ODVmLi5mNzI0OTVj
ZTJjY2JjZDFkNzJlNmE3MDJlNzM5M2JjYjUzN2ViYzUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUGFnZS5oIgogI2luY2x1
ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1l
bnRQYXJzZXIuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTQ2LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCi0jaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKIAogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRXcml0ZXIuY3BwCmluZGV4IGEyMGVjZWQ3MjA0MmY2ODM1ZmI5NWFmMTViODcxMTNiODdlOTlj
YzguLmQ5OWYzNDA2NTQ4NWM3YjMxYTA2Zjc0MjMzZjRjYjllMDczZDkxMzYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFdyaXRlci5jcHAKQEAgLTM4LDEyICszOCwxNCBAQAogI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgogI2luY2x1ZGUgIlBsYWNlaG9sZGVyRG9jdW1lbnQuaCIKICNpbmNsdWRlICJQbHVnaW5E
b2N1bWVudC5oIgorI2luY2x1ZGUgIlJhd0RhdGFEb2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUg
IlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJTaW5rRG9jdW1lbnQuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgi
Ci0jaW5jbHVkZSAiRG9jdW1lbnRQYXJzZXIuaCIKKwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1RleHREb2N1bWVudC5jcHAgYi9XZWJDb3JlL2xv
YWRlci9UZXh0RG9jdW1lbnQuY3BwCmluZGV4IDZjZGZiYzJmOTk0OWZkMjMxYjJkNjdlYzZhOWU1
NWFkM2VhODEwODYuLjZiNTMwODQzMTVlNDk1YjNjZjZmMWNiZDhjMmYwMzI0OTQwMzM4YTcgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1RleHREb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9s
b2FkZXIvVGV4dERvY3VtZW50LmNwcApAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlRleHREb2N1bWVudC5oIgogCi0jaW5jbHVkZSAiRG9jdW1lbnRQYXJz
ZXIuaCIKKyNpbmNsdWRlICJEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAi
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxWaWV3U291
cmNlRG9jdW1lbnQuaCIKQEAgLTM4LDcgKzM4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1jbGFzcyBUZXh0RG9jdW1lbnRQYXJzZXIgOiBw
dWJsaWMgRG9jdW1lbnRQYXJzZXIgeworLy8gRklYTUU6IFRleHREb2N1bWVudFBhcnNlciBjb3Vs
ZCBqdXN0IGJlIGFuIEhUTUxEb2N1bWVudFBhcnNlcgorLy8gd2hpY2ggc3RhcnRlZCB0aGUgVG9r
ZW5pemVyIGluIHRoZSBQbGFpblRleHQgc3RhdGUuCitjbGFzcyBUZXh0RG9jdW1lbnRQYXJzZXIg
OiBwdWJsaWMgRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlciB7CiBwdWJsaWM6CiAgICAgVGV4dERv
Y3VtZW50UGFyc2VyKERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+VGV4dERvY3VtZW50UGFyc2Vy
KCk7CkBAIC00OSw4ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZChj
b25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCk7CiAgICAg
dmlydHVhbCBib29sIGZpbmlzaFdhc0NhbGxlZCgpOwotICAgIHZpcnR1YWwgYm9vbCBpc1dhaXRp
bmdGb3JTY3JpcHRzKCkgY29uc3Q7Ci0gICAgCisKICAgICBpbmxpbmUgdm9pZCBjaGVja0J1ZmZl
cihpbnQgbGVuID0gMTApCiAgICAgewogICAgICAgICBpZiAoKG1fZGVzdCAtIG1fYnVmZmVyKSA+
IG1fc2l6ZSAtIGxlbikgewpAQCAtNjMsNiArNjQsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAg
ICAgfQogCitwcml2YXRlOgogICAgIEVsZW1lbnQqIG1fcHJlRWxlbWVudDsKIAogICAgIGJvb2wg
bV9za2lwTEY7CkBAIC03Myw3ICs3NSw3IEBAIHByaXZhdGU6CiB9OwogCiBUZXh0RG9jdW1lbnRQ
YXJzZXI6OlRleHREb2N1bWVudFBhcnNlcihEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBEb2N1
bWVudFBhcnNlcihkb2N1bWVudCkKKyAgICA6IERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIoZG9j
dW1lbnQpCiAgICAgLCBtX3ByZUVsZW1lbnQoMCkKICAgICAsIG1fc2tpcExGKGZhbHNlKQogeyAg
ICAKQEAgLTg0LDcgKzg2LDcgQEAgVGV4dERvY3VtZW50UGFyc2VyOjpUZXh0RG9jdW1lbnRQYXJz
ZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogfSAgICAKIAogVGV4dERvY3VtZW50UGFyc2VyOjpUZXh0
RG9jdW1lbnRQYXJzZXIoSFRNTFZpZXdTb3VyY2VEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBE
b2N1bWVudFBhcnNlcihkb2N1bWVudCwgdHJ1ZSkKKyAgICA6IERlY29kZWREYXRhRG9jdW1lbnRQ
YXJzZXIoZG9jdW1lbnQsIHRydWUpCiAgICAgLCBtX3ByZUVsZW1lbnQoMCkKICAgICAsIG1fc2tp
cExGKGZhbHNlKQogeyAgICAKQEAgLTE3NCw2ICsxNzYsOCBAQCB2b2lkIFRleHREb2N1bWVudFBh
cnNlcjo6ZmluaXNoKCkKICAgICBtX2J1ZmZlciA9IDA7CiAgICAgbV9kZXN0ID0gMDsKIAorICAg
IC8vIEZJWE1FOiBTaG91bGQgdGhpcyBjYWxsIGZpbmlzaFBhcnNpbmcgZXZlbiBpZiBtX3BhcnNl
clN0b3BwZWQgaXMgdHJ1ZT8KKyAgICAvLyBTZWUgZXF1aXZhbGVudCBpbXBsZW1lbnRhdGlvbiBp
biBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuCiAgICAgZG9jdW1lbnQoKS0+ZmluaXNoZWRQYXJzaW5n
KCk7CiB9CiAKQEAgLTE4NCwxMiArMTg4LDYgQEAgYm9vbCBUZXh0RG9jdW1lbnRQYXJzZXI6OmZp
bmlzaFdhc0NhbGxlZCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRleHREb2N1bWVu
dFBhcnNlcjo6aXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0Ci17Ci0gICAgLy8gQSB0ZXh0IGRv
Y3VtZW50IGlzIG5ldmVyIHdhaXRpbmcgZm9yIHNjcmlwdHMKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KIFRleHREb2N1bWVudDo6VGV4dERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYg
dXJsKQogICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpCiB7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHRG9jdW1l
bnRFeHRlbnNpb25zLmNwcAppbmRleCA3YjI4NWViODYxZjdhNTE3ODgwYmQ4OTNmOTVkNDBhMWFm
Mjg4NDYwLi5mYzMxNTUxMGNlNGM1NjFmNTFmNzExMDE4YjA0OTYwYjhhMDY2ZDkzIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1dlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRl
ICJTVkdTTUlMRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRl
ICJTTUlMVGltZUNvbnRhaW5lci5oIgotI2luY2x1ZGUgIlhNTERvY3VtZW50UGFyc2VyLmgiCisj
aW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29u
dHJvbGxlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMjUsMTYgKzEyNSwyOSBAQCBi
b29sIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6c2FtcGxlQW5pbWF0aW9uQXRUaW1lKGNvbnN0IFN0
cmluZyYgZWxlbWVudElkLCBTVkdTTQogICAgIHJldHVybiB0cnVlOwogfQogCisvLyBGSVhNRTog
Q2FsbGVycyBzaG91bGQgcHJvYmFibHkgdXNlIFNjcmlwdENvbnRyb2xsZXI6OmV2ZW50SGFuZGxl
ckxpbmVOdW1iZXIoKQorc3RhdGljIGludCBwYXJzZXJMaW5lTnVtYmVyKERvY3VtZW50KiBkb2N1
bWVudCkKK3sKKyAgICBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IGRvY3VtZW50
LT5zY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKTsKKyAgICBpZiAoIXBhcnNlcikKKyAgICAgICAg
cmV0dXJuIDE7CisgICAgcmV0dXJuIHBhcnNlci0+bGluZU51bWJlcigpOworfQorCitzdGF0aWMg
dm9pZCByZXBvcnRNZXNzYWdlKERvY3VtZW50KiBkb2N1bWVudCwgTWVzc2FnZUxldmVsIGxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50LT5mcmFtZSgpKQorICAgICAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRk
TWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBsZXZlbCwgbWVzc2FnZSwg
cGFyc2VyTGluZU51bWJlcihkb2N1bWVudCksIFN0cmluZygpKTsKK30KKwogdm9pZCBTVkdEb2N1
bWVudEV4dGVuc2lvbnM6OnJlcG9ydFdhcm5pbmcoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewot
ICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2RvYy0+ZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPmRv
bVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJXYXJuaW5nOiAiICsgbWVzc2FnZSwgbV9kb2Mt
PnBhcnNlcigpID8gbV9kb2MtPnBhcnNlcigpLT5saW5lTnVtYmVyKCkgOiAxLCBTdHJpbmcoKSk7
CisgICAgcmVwb3J0TWVzc2FnZShtX2RvYywgV2FybmluZ01lc3NhZ2VMZXZlbCwgIldhcm5pbmc6
ICIgKyBtZXNzYWdlKTsKIH0KIAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlcG9ydEVy
cm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gbV9k
b2MtPmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRN
ZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVs
LCAiRXJyb3I6ICIgKyBtZXNzYWdlLCBtX2RvYy0+cGFyc2VyKCkgPyBtX2RvYy0+cGFyc2VyKCkt
PmxpbmVOdW1iZXIoKSA6IDEsIFN0cmluZygpKTsKKyAgICByZXBvcnRNZXNzYWdlKG1fZG9jLCBF
cnJvck1lc3NhZ2VMZXZlbCwgIkVycm9yOiAiICsgbWVzc2FnZSk7CiB9CiAKIHZvaWQgU1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjphZGRQZW5kaW5nUmVzb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBp
ZCwgU1ZHU3R5bGVkRWxlbWVudCogb2JqKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59873</attachid>
            <date>2010-06-27 22:40:41 -0700</date>
            <delta_ts>2010-06-28 00:33:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-41141-20100627224040.patch</filename>
            <type>text/plain</type>
            <size>50477</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAwM2I1ZGE2ODZlZDk3M2MzOThjOTJiYWQwYWFlNzgzNzk3MmZkYWNhLi5iYzJlYWI4OTM5Mzkx
YjA4ZDYzNmMyNzQ1NWJhNzA0OTYxYTQyYTNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0xMTQsNiArMTE0LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJZG9tL0NvbnRhaW5lck5vZGUuY3BwIFwK
IAlkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIFwKIAlkb20vRE9NU3RyaW5nTGlzdC5jcHAgXAor
CWRvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcCBcCiAJZG9tL0RvY3VtZW50LmNwcCBc
CiAJZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwIFwKIAlkb20vRG9jdW1lbnRQYXJzZXIuY3BwIFwK
QEAgLTE1OCw2ICsxNTksNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMp
IFwKIAlkb20vUXVhbGlmaWVkTmFtZS5jcHAgXAogCWRvbS9SYW5nZS5jcHAgXAogCWRvbS9SZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgXAorCWRvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIu
Y3BwIFwKIAlkb20vU2NyaXB0RWxlbWVudC5jcHAgXAogCWRvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBcCiAJZG9tL1NlbGVjdEVsZW1lbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDBkY2ZiYzYwZTdh
YTViMDIyMDA2MGNlN2Y1OTgwN2JkNzEzNThlNDYuLmM0OGJkMDkxNzhiMDA5MTE3ZWFmNDc5YzE0
YTk0YjJjYjExNDU4ODggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzcxLDYgKzc3MSw3IEBAIFNFVChXZWJDb3JlX1NP
VVJDRVMKICAgICBkb20vQ3VzdG9tRXZlbnQuY3BwCiAgICAgZG9tL0RPTUltcGxlbWVudGF0aW9u
LmNwcAogICAgIGRvbS9ET01TdHJpbmdMaXN0LmNwcAorICAgIGRvbS9EZWNvZGVkRGF0YURvY3Vt
ZW50UGFyc2VyLmNwcAogICAgIGRvbS9EZXZpY2VPcmllbnRhdGlvbi5jcHAKICAgICBkb20vRGV2
aWNlT3JpZW50YXRpb25FdmVudC5jcHAKICAgICBkb20vRG9jdW1lbnQuY3BwCkBAIC04MTYsNiAr
ODE3LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9RdWFsaWZpZWROYW1lLmNwcAog
ICAgIGRvbS9SYW5nZS5jcHAKICAgICBkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwCisg
ICAgZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAKICAgICBkb20vU2NyaXB0RWxlbWVu
dC5jcHAKICAgICBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKICAgICBkb20vU2VsZWN0
RWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggOGRiNGQ1ZjEwMDViMjc5MDgyZGYyNTJkNzhmNzYzZDBhY2ViNGIwNS4uOTgz
YmE1MmZkN2IxNDc3YzAyMDM3MWJmYzA0MzRkYjAzYjc1Y2JmMyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OCBAQAorMjAx
MC0wNi0yNCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIGEgbmV3IGJhc2VjbGFzcyBmb3IgWE1M
LCBIVE1MIGFuZCBUZXh0IERvY3VtZW50UGFyc2VycyB0byBjbGVhbiB1cCBEb2N1bWVudFBhcnNl
ciBjYWxsIHNpdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MTE0MQorCisgICAgICAgIEJ5IHNwbGl0dGluZyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXIgYW5kIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIKKyAgICAgICAgb3V0IGZyb20gRG9jdW1l
bnRQYXJzZXIgd2UndmUgbWFkZSB0aGUgRG9jdW1lbnRQYXJzZXIgYW5kCisgICAgICAgIFJhd0Rh
dGFEb2N1bWVudFBhcnNlciBjbGFzc2VzIHNpbXBsZXIuCisKKyAgICAgICAgTm8gZnVuY3Rpb25h
bCBjaGFuZ2UsIHRodXMgbm8gdGVzdHMuCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJMaW5lTnVt
YmVyKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNoZWV0OjpjaGVja0xvYWRlZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmltcGxpY2l0T3Blbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1w
bGljaXRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlUGVuZGluZ1No
ZWV0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpwYXJzZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFBhcnNlcjo6RG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudFBhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRQYXJzZXI6OmFz
U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKiBkb20vUmF3RGF0YURvY3VtZW50
UGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpSYXdEYXRhRG9jdW1lbnRQYXJzZXI6OmZpbmlz
aFdhc0NhbGxlZCk6CisgICAgICAgICogZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHA6
IENvcGllZCBmcm9tIFdlYkNvcmUvaHRtbC9IVE1MRW50aXR5UGFyc2VyLmguCisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXI6OlNjcmlwdGFibGVEb2N1bWVudFBhcnNl
cik6CisgICAgICAgICogZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdGFibGVEb2N1bWVudFBhcnNlcjo6aXNFeGVjdXRpbmdTY3Jp
cHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyOjpleGVjdXRl
U2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXI6Onhzc0F1ZGl0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyOjpzZXRYU1NBdWRpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdGFibGVEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc2luZ0NvbnRlbnRXcml0dGVuQnlTY3JpcHQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyOjphc1NjcmlwdGFi
bGVEb2N1bWVudFBhcnNlcik6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlckxpbmVOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6
cmVwb3J0Vmlld3BvcnRXYXJuaW5nKToKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXIu
aDoKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcik6CisgICAgICAg
ICogaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERv
Y3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERvY3VtZW50UGFyc2VyOjpzaG91bGRMb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKToKKyAgICAg
ICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGh0bWwvTGVnYWN5SFRN
TERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxEb2N1bWVu
dFBhcnNlcjo6TGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VUYWcpOgorICAgICAgICAqIGh0bWwvTGVnYWN5
SFRNTERvY3VtZW50UGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MRG9jdW1l
bnRQYXJzZXI6OnByb2Nlc3NpbmdDb250ZW50V3JpdHRlbkJ5U2NyaXB0KToKKyAgICAgICAgKiBo
dG1sL0xlZ2FjeUhUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lI
VE1MVHJlZUJ1aWxkZXI6OnJlcG9ydEVycm9yVG9Db25zb2xlKToKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6
CisgICAgICAgICogbG9hZGVyL1RleHREb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0RG9jdW1lbnRQYXJzZXI6OlRleHREb2N1bWVudFBhcnNlcik6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0RG9jdW1lbnRQYXJzZXI6OmZpbmlzaCk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50
RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZXJMaW5lTnVtYmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlcG9ydE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjpyZXBvcnRXYXJuaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Rv
Y3VtZW50RXh0ZW5zaW9uczo6cmVwb3J0RXJyb3IpOgorCiAyMDEwLTA2LTI1ICBZdXpvIEZ1amlz
aGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaGluaWNoaXJv
IEhhbWFqaS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCmluZGV4IDJmZTZjNWI3M2QzOGMxM2ZhNWE2ZWQ4NzRhODljMGEwNmIxZWY3
Y2UuLmRlNjAwNTczNTY2NWU5YTRiZWUzYmI0YjM4OTY3MzE1OWEzNWVkNmMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAt
Nzc4LDYgKzc3OCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9kb20vRE9NSW1w
bGVtZW50YXRpb24uaCBcCiAJV2ViQ29yZS9kb20vRE9NU3RyaW5nTGlzdC5jcHAgXAogCVdlYkNv
cmUvZG9tL0RPTVN0cmluZ0xpc3QuaCBcCisJV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVu
dFBhcnNlci5jcHAgXAorCVdlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCBc
CiAJV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb24uY3BwIFwKIAlXZWJDb3JlL2RvbS9EZXZp
Y2VPcmllbnRhdGlvbi5oIFwKIAlXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5o
IFwKQEAgLTg4MSw2ICs4ODMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvZG9t
L1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oIFwKIAlXZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lci5jcHAgXAogCVdlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmggXAor
CVdlYkNvcmUvZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAgXAorCVdlYkNvcmUvZG9t
L1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIFwKIAlXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50
LmNwcCBcCiAJV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oIFwKIAlXZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGUwNmNmZjI5ZjVhYzNlMmJjZWZkZmQ4NjM5
YzRiYTY4NzNkYzNiMDMuLmU5OThhMjA5ZmMyZDZmYzdiZjkzMjZlNTZkOTc1ODkyZmUwMDdmNTAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC0xMTA1LDYgKzExMDUsOCBAQAogICAgICAgICAgICAgJ2RvbS9ET01JbXBsZW1lbnRh
dGlvbi5oJywKICAgICAgICAgICAgICdkb20vRE9NU3RyaW5nTGlzdC5jcHAnLAogICAgICAgICAg
ICAgJ2RvbS9ET01TdHJpbmdMaXN0LmgnLAorICAgICAgICAgICAgJ2RvbS9EZWNvZGVkRGF0YURv
Y3VtZW50UGFyc2VyLmNwcCcsCisgICAgICAgICAgICAnZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQ
YXJzZXIuaCcsCiAgICAgICAgICAgICAnZG9tL0RldmljZU9yaWVudGF0aW9uLmNwcCcsCiAgICAg
ICAgICAgICAnZG9tL0RldmljZU9yaWVudGF0aW9uLmgnLAogICAgICAgICAgICAgJ2RvbS9EZXZp
Y2VPcmllbnRhdGlvbkNsaWVudC5oJywKQEAgLTEyMDksNiArMTIxMSw4IEBACiAgICAgICAgICAg
ICAnZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICdkb20vUmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXIuY3BwJywKICAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXIuaCcsCisgICAgICAgICAgICAnZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5j
cHAnLAorICAgICAgICAgICAgJ2RvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCcsCiAgICAg
ICAgICAgICAnZG9tL1NjcmlwdEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdkb20vU2NyaXB0
RWxlbWVudC5oJywKICAgICAgICAgICAgICdkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAn
LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8K
aW5kZXggMWUxOWIwMmYwMzY3YjJiMDJlMzhlMjBlM2I2NTJiOTliMGExMjFkZC4uZjEwZTYyNTRm
NTVlODc4YzIwNGE0OTdhMjkzNjJmZTZiMWIwMWE5OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC00NzIsNiArNDcyLDcgQEAgU09V
UkNFUyArPSBcCiAgICAgZG9tL0NvbnRhaW5lck5vZGUuY3BwIFwKICAgICBkb20vQ1NTTWFwcGVk
QXR0cmlidXRlRGVjbGFyYXRpb24uY3BwIFwKICAgICBkb20vQ3VzdG9tRXZlbnQuY3BwIFwKKyAg
ICBkb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAgXAogICAgIGRvbS9EZXZpY2VPcmll
bnRhdGlvbi5jcHAgXAogICAgIGRvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcCBcCiAgICAg
ZG9tL0RvY3VtZW50LmNwcCBcCkBAIC01MjEsNiArNTIyLDcgQEAgU09VUkNFUyArPSBcCiAgICAg
ZG9tL1JhbmdlLmNwcCBcCiAgICAgZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oIFwKICAgICBk
b20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwIFwKKyAgICBkb20vU2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyLmNwcCBcCiAgICAgZG9tL1NjcmlwdEVsZW1lbnQuY3BwIFwKICAgICBkb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgXAogICAgIGRvbS9TZWxlY3RFbGVtZW50LmNwcCBcCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA0ZDVmNDBiNDM0MDQ4ZGQ4ODAz
Y2ZjZGIxODdlZDNmZDdmZmQ5MmMyLi42MTM2NjM5MzFmY2JhOTIzOWYyM2Y2YzkzNjdhZWQyNDMx
NTY2Zjc4IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI5OTI1LDYg
KzI5OTI1LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGRvbVxEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcCINCisJCQkJPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxEZWNvZGVkRGF0
YURvY3VtZW50UGFyc2VyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxkb21cRGV2aWNlT3JpZW50YXRpb24uY3BwIg0KIAkJCQk+DQogCQkJ
PC9GaWxlPg0KQEAgLTMwMzQxLDYgKzMwMzQ5LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cZG9tXFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNjcmlwdEVsZW1lbnQuY3Bw
Ig0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMTZkMTk3NmQ2MzIwYWQzNGY2YzFmNmJkMWQ4OTExMTcxNTUyYmIyZC4u
YzdjMjRlNjcxNGZlYjY0MmEwMjlmNGFkNzkzMzRiMGQ5YzJlMDQ3MSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5NzUsNiArMjk3NSw4IEBACiAJCUE4
M0I3OTU3MENDQjAxMjUwMDBCMDgyNSAvKiBET01TVkdGb250RmFjZUVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4M0I3OTQ4MENDQjAxMjUw
MDBCMDgyNSAvKiBET01TVkdGb250RmFjZUVsZW1lbnQuaCAqLzsgfTsKIAkJQTgzRTFDNzQwRTQ5
MDQyQzAwMTQwQjlDIC8qIFNjcmlwdENvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODNFMUM3MjBFNDkwNDJCMDAxNDBCOUMgLyog
U2NyaXB0Q29udHJvbGxlck1hYy5tbSAqLzsgfTsKIAkJQTg0RDgyN0MxMUQzMzNFRDAwOTcyOTkw
IC8qIFJhd0RhdGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTg0RDgyN0IxMUQzMzNFRDAwOTcyOTkwIC8qIFJhd0RhdGFEb2N1
bWVudFBhcnNlci5oICovOyB9OworCQlBODREODJDMTExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBODREODJCRjExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyLmggKi87IH07CisJCUE4NEQ4MkMyMTFEMzQ3NDgwMDk3Mjk5MCAvKiBTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTg0RDgyQzAxMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBh
cnNlci5jcHAgKi87IH07CiAJCUE4NEVCRDc4MENCOEM4OTIwMDA3OTYwOSAvKiBKU1N0eWxlU2hl
ZXRMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4NEVCRDc3MENCOEM4OTIwMDA3OTYwOSAvKiBKU1N0eWxlU2hlZXRMaXN0Q3VzdG9t
LmNwcCAqLzsgfTsKIAkJQTg0RUJEODMwQ0I4Qzk3NzAwMDc5NjA5IC8qIEpTU3R5bGVTaGVldExp
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NEVC
RDgxMENCOEM5NzcwMDA3OTYwOSAvKiBKU1N0eWxlU2hlZXRMaXN0LmggKi87IH07CiAJCUE4NEVC
RDg0MENCOEM5NzcwMDA3OTYwOSAvKiBKU1N0eWxlU2hlZXRMaXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NEVCRDgyMENCOEM5NzcwMDA3OTYw
OSAvKiBKU1N0eWxlU2hlZXRMaXN0LmNwcCAqLzsgfTsKQEAgLTMwNjEsNiArMzA2Myw4IEBACiAJ
CUE4QTkwOUFDMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE5
MDlBQTBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5o
ICovOyB9OwogCQlBOEE5MDlBRDBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3Jt
YWJsZUNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBOEE5MDlBQjBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJs
ZUNvbnRhaW5lci5jcHAgKi87IH07CiAJCUE4QzIyODBFMTFENEE1OTcwMEQ1QTdEMyAvKiBEb2N1
bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBOEMyMjgwRDExRDRBNTk3MDBENUE3RDMgLyogRG9jdW1lbnRQYXJzZXIuY3BwICovOyB9
OworCQlBOEMyMjhBMTExRDU3MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMjI4
OUYxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCAqLzsgfTsK
KwkJQThDMjI4QTIxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMjI4
QTAxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwICovOyB9
OwogCQlBOEM0QTdGRDA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDNEE3RUIwOUQ1NjMyNzAw
MDNBQzhEIC8qIFN0eWxlZEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBOEM0QTdGRTA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OEM0QTdFQzA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5jcHAgKi87IH07CiAJCUE4
QzRBODAwMDlENTYzMjcwMDAzQUM4RCAvKiBOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzRBN0VFMDlENTYzMjcwMDAzQUM4RCAvKiBOb2Rl
LmNwcCAqLzsgfTsKQEAgLTg0NjksNiArODQ3Myw4IEBACiAJCUE4M0I3OTQ4MENDQjAxMjUwMDBC
MDgyNSAvKiBET01TVkdGb250RmFjZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NU1ZHRm9udEZhY2VFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4M0UxQzcyMEU0OTA0MkIwMDE0MEI5QyAvKiBTY3JpcHRDb250cm9sbGVyTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2NyaXB0Q29udHJvbGxl
ck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg0RDgyN0IxMUQzMzNFRDAw
OTcyOTkwIC8qIFJhd0RhdGFEb2N1bWVudFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTg0RDgyQkYxMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBh
cnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRhYmxlRG9jdW1l
bnRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTg0RDgyQzAxMUQzNDc0
ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODRFQkQ3NzBDQjhDODkyMDAwNzk2MDkgLyogSlNT
dHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTg0RUJEODEwQ0I4Qzk3NzAwMDc5NjA5IC8qIEpTU3R5bGVTaGVldExpc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHlsZVNoZWV0TGlzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBODRFQkQ4MjBDQjhDOTc3MDAwNzk2MDkgLyogSlNTdHls
ZVNoZWV0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N0
eWxlU2hlZXRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg1NTUsNiAr
ODU2MSw4IEBACiAJCUE4QTkwOUFBMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zv
cm1hYmxlQ29udGFpbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
clNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQThBOTA5QUIwQ0JDRDZCNTAwMjlCODA3IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250
YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZH
VHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE4QzIyODBEMTFENEE1OTcwMEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudFBhcnNlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4QzIyODlGMTFENTcyMkUwMEQ1QTdEMyAvKiBEZWNvZGVk
RGF0YURvY3VtZW50UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERl
Y29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QThDMjI4QTAxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVjb2RlZERhdGFEb2N1bWVu
dFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QzRBN0VCMDlENTYz
MjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHlsZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
QzRBN0VDMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZWRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQThDNEE3RUUwOUQ1NjMyNzAwMDNBQzhEIC8qIE5vZGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTY5MTEsNiArMTY5MTksMTAgQEAKIAkJCQk1NEM1MEY3QTBF
ODAxREYzMDA5ODMyQTAgLyogWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCAqLywKIAkJCQk1
RDE1RTNBOTBGOUU2QUMxMDA5RTBFM0YgLyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5jcHAgKi8s
CiAJCQkJNUQxNUUzQUEwRjlFNkFDMTAwOUUwRTNGIC8qIFhNTERvY3VtZW50UGFyc2VyU2NvcGUu
aCAqLywKKwkJCQlBODREODJCRjExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyLmggKi8sCisJCQkJQTg0RDgyQzAxMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVE
b2N1bWVudFBhcnNlci5jcHAgKi8sCisJCQkJQThDMjI4OUYxMUQ1NzIyRTAwRDVBN0QzIC8qIERl
Y29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCAqLywKKwkJCQlBOEMyMjhBMDExRDU3MjJFMDBENUE3
RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9
IGRvbTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xOTU3NCw2ICsxOTU4Niw4IEBA
CiAJCQkJQ0VBMzk0OUQxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOEE4NDRDRkYxMUQzQzE3QzAwMTQwNjVDIC8qIE5hdmlnYXRp
b25UaW1pbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCThBODQ0RDA1MTFEM0MxOEUwMDE0MDY1QyAv
KiBQZXJmb3JtYW5jZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTg0RDgyQzExMUQzNDc0ODAwOTcy
OTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQThD
MjI4QTExMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjE4OTksNiArMjE5MTMsOCBAQAogCQkJCUE4QzIyODBFMTFENEE1OTcw
MEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4QTg0NENG
RTExRDNDMTdDMDAxNDA2NUMgLyogTmF2aWdhdGlvblRpbWluZy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4QTg0NEQwNDExRDNDMThFMDAxNDA2NUMgLyogUGVyZm9ybWFuY2UuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTg0RDgyQzIxMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVu
dFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBOEMyMjhBMjExRDU3MjJFMDBENUE3RDMg
LyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDZmMDQ1N2EwMzdmMjE2YmNkNDlk
ZWQ0NDNmOTE5YzA3ODNlOGE2NGUuLjBhYThmNTI2NTgxNmQyNmNiNzIwNDI5ZDZlMWQ1MWU4NWQ2
Y2I5NDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjEs
NyArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xs
ZXIuaCIKIAotI2luY2x1ZGUgIkRvY3VtZW50UGFyc2VyLmgiCisjaW5jbHVkZSAiU2NyaXB0YWJs
ZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTIzOCwxMSArMjM4LDEyIEBAIEpTRE9NV2lu
ZG93U2hlbGwqIFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoRE9NV3JhcHBlcldvcmxkKiB3
b3JsZCkKIGludCBTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJMaW5lTnVtYmVyKCkgY29u
c3QKIHsKICAgICAvLyBKU0MgZXhwZWN0cyAxLWJhc2VkIGxpbmUgbnVtYmVycywgc28gd2UgbXVz
dCBhZGQgb25lIGhlcmUgdG8gZ2V0IGl0IHJpZ2h0LgotICAgIGlmIChEb2N1bWVudFBhcnNlciog
cGFyc2VyID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCkpCisgICAgU2NyaXB0YWJsZURv
Y3VtZW50UGFyc2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIoKTsKKyAgICBpZiAocGFyc2VyKQogICAgICAgICByZXR1cm4gcGFyc2VyLT5s
aW5lTnVtYmVyKCkgKyAxOwogICAgIHJldHVybiAwOwogfQotICAgIAorCiBib29sIFNjcmlwdENv
bnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZShET01XcmFwcGVyV29ybGQqIHdvcmxkKSBj
b25zdAogewogICAgIGlmIChtX2FsbG93UG9wdXBzRnJvbVBsdWdpbiB8fCBpc0phdmFTY3JpcHRB
bmNob3JOYXZpZ2F0aW9uKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0
LmNwcCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDQwYmIwZGVjYzExNDhh
ZTFjNmM2MzUwNzRhZTYzMTJjMmFjZDljNzAuLjIyN2QzN2NiYjY4MzQwODA5ZGIzZjNlYmJhYmIw
MDU2N2UxMGU4ODUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisr
KyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0yMDcsNyArMjA3LDggQEAgdm9p
ZCBDU1NTdHlsZVNoZWV0OjpjaGVja0xvYWRlZCgpCiAgICAgaWYgKHBhcmVudCgpKQogICAgICAg
ICBwYXJlbnQoKS0+Y2hlY2tMb2FkZWQoKTsKIAotICAgIC8vIEF2b2lkIHx0aGlzfCBiZWluZyBk
ZWxldGVkIGJ5IHNjcmlwdHMgdGhhdCBydW4gdmlhIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6
ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKS4KKyAgICAvLyBBdm9pZCB8dGhp
c3wgYmVpbmcgZGVsZXRlZCBieSBzY3JpcHRzIHRoYXQgcnVuIHZpYQorICAgIC8vIFNjcmlwdGFi
bGVEb2N1bWVudFBhcnNlcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKS4K
ICAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzY2MjIzMDA+LgogICAgIFJlZlB0cjxDU1NTdHls
ZVNoZWV0PiBwcm90ZWN0b3IodGhpcyk7CiAgICAgbV9sb2FkQ29tcGxldGVkID0gb3duZXJOb2Rl
KCkgPyBvd25lck5vZGUoKS0+c2hlZXRMb2FkZWQoKSA6IHRydWU7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNTdm
NTVkZTliM2Q2ZDE2NTFhZDQ5OTlmMWMyMjg0YzU3NDQ1OWNlMy4uOWU5MTRmOWU0MmQ0NmE4NDky
MDJhYmNmNTBkMGU2MmM5M2VjNjI2ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTcyMSw2ICsxNzIxLDExIEBA
IERvY3VtZW50UGFyc2VyKiBEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKICAgICByZXR1cm4gbmV3
IFhNTERvY3VtZW50UGFyc2VyKHRoaXMsIHZpZXcoKSk7CiB9CiAKK1NjcmlwdGFibGVEb2N1bWVu
dFBhcnNlciogRG9jdW1lbnQ6OnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHBhcnNlcigpID8gcGFyc2VyKCktPmFzU2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
KCkgOiAwOworfQorCiB2b2lkIERvY3VtZW50OjpvcGVuKERvY3VtZW50KiBvd25lckRvY3VtZW50
KQogewogICAgIGlmIChvd25lckRvY3VtZW50KSB7CkBAIC0xNzMwLDkgKzE3MzUsMTAgQEAgdm9p
ZCBEb2N1bWVudDo6b3BlbihEb2N1bWVudCogb3duZXJEb2N1bWVudCkKICAgICB9CiAKICAgICBp
ZiAobV9mcmFtZSkgewotICAgICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPmlzTG9hZGluZ01h
aW5SZXNvdXJjZSgpIHx8IChwYXJzZXIoKSAmJiBwYXJzZXIoKS0+aXNFeGVjdXRpbmdTY3JpcHQo
KSkpCisgICAgICAgIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciogcGFyc2VyID0gc2NyaXB0YWJs
ZURvY3VtZW50UGFyc2VyKCk7CisgICAgICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIoKS0+aXNMb2Fk
aW5nTWFpblJlc291cmNlKCkgfHwgKHBhcnNlciAmJiBwYXJzZXItPmlzRXhlY3V0aW5nU2NyaXB0
KCkpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgICAgIGlmIChtX2ZyYW1lLT5s
b2FkZXIoKS0+c3RhdGUoKSA9PSBGcmFtZVN0YXRlUHJvdmlzaW9uYWwpCiAgICAgICAgICAgICBt
X2ZyYW1lLT5sb2FkZXIoKS0+c3RvcEFsbExvYWRlcnMoKTsKICAgICB9CkBAIC0xNzY5LDggKzE3
NzUsOSBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdE9wZW4oKQogICAgIG1fcGFyc2VyID0gY3Jl
YXRlUGFyc2VyKCk7CiAgICAgc2V0UGFyc2luZyh0cnVlKTsKIAotICAgIGlmIChtX2ZyYW1lKQot
ICAgICAgICBtX3BhcnNlci0+c2V0WFNTQXVkaXRvcihtX2ZyYW1lLT5zY3JpcHQoKS0+eHNzQXVk
aXRvcigpKTsKKyAgICBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IHNjcmlwdGFi
bGVEb2N1bWVudFBhcnNlcigpOworICAgIGlmIChtX2ZyYW1lICYmIHBhcnNlcikKKyAgICAgICAg
cGFyc2VyLT5zZXRYU1NBdWRpdG9yKG1fZnJhbWUtPnNjcmlwdCgpLT54c3NBdWRpdG9yKCkpOwog
CiAgICAgLy8gSWYgd2UgcmVsb2FkLCB0aGUgYW5pbWF0aW9uIGNvbnRyb2xsZXIgc3RpY2tzIGFy
b3VuZCBhbmQgaGFzCiAgICAgLy8gYSBzdGFsZSBhbmltYXRpb24gdGltZS4gV2UgbmVlZCB0byB1
cGRhdGUgaXQgaGVyZS4KQEAgLTE4NTUsNyArMTg2Miw4IEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxp
Y2l0Q2xvc2UoKQogCiAgICAgbV9wcm9jZXNzaW5nTG9hZEV2ZW50ID0gdHJ1ZTsKIAotICAgIG1f
d2VsbEZvcm1lZCA9IG1fcGFyc2VyICYmIG1fcGFyc2VyLT53ZWxsRm9ybWVkKCk7CisgICAgU2Ny
aXB0YWJsZURvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIo
KTsKKyAgICBtX3dlbGxGb3JtZWQgPSBwYXJzZXIgJiYgcGFyc2VyLT53ZWxsRm9ybWVkKCk7CiAK
ICAgICAvLyBXZSBoYXZlIHRvIGNsZWFyIHRoZSBwYXJzZXIsIGluIGNhc2Ugc29tZW9uZSBkb2N1
bWVudC53cml0ZSgpcyBmcm9tIHRoZQogICAgIC8vIG9uTG9hZCBldmVudCBoYW5kbGVyLCBhcyBp
biBSYWRhciAzMjA2NTI0LgpAQCAtMjYwNyw5ICsyNjE1LDEwIEBAIHZvaWQgRG9jdW1lbnQ6OnJl
bW92ZVBlbmRpbmdTaGVldCgpCiAjZW5kaWYKIAogICAgIHVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsK
LSAgICAKLSAgICBpZiAoIW1fcGVuZGluZ1N0eWxlc2hlZXRzICYmIG1fcGFyc2VyKQotICAgICAg
ICBtX3BhcnNlci0+ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKKworICAg
IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciogcGFyc2VyID0gc2NyaXB0YWJsZURvY3VtZW50UGFy
c2VyKCk7CisgICAgaWYgKCFtX3BlbmRpbmdTdHlsZXNoZWV0cyAmJiBwYXJzZXIpCisgICAgICAg
IHBhcnNlci0+ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKIAogICAgIGlm
ICghbV9wZW5kaW5nU3R5bGVzaGVldHMgJiYgbV9nb3RvQW5jaG9yTmVlZGVkQWZ0ZXJTdHlsZXNo
ZWV0c0xvYWQgJiYgdmlldygpKQogICAgICAgICB2aWV3KCktPnNjcm9sbFRvRnJhZ21lbnQobV9m
cmFtZS0+bG9hZGVyKCktPnVybCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDg5MGQ5Y2VkMzhkNTVkYTQ5ZTk5ZTE5
MjM3MTk4YWEzODk3M2Q5NDYuLjRjNTA3MTMyZDNlNTgyZDVhYWMyNDY0NGQ4MTY2MmZjMGQ1ZmZk
MzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtMTAwLDYgKzEwMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBSZW5kZXJBcmVuYTsKICAg
ICBjbGFzcyBSZW5kZXJWaWV3OworICAgIGNsYXNzIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcjsK
ICAgICBjbGFzcyBTY3JpcHRFbGVtZW50RGF0YTsKICAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
ICAgICBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CkBAIC01NDgsNyArNTQ5LDggQEAgcHVi
bGljOgogICAgIENTU1N0eWxlU2hlZXQqIG1hcHBlZEVsZW1lbnRTaGVldCgpOwogICAgIAogICAg
IHZpcnR1YWwgRG9jdW1lbnRQYXJzZXIqIGNyZWF0ZVBhcnNlcigpOwotICAgIERvY3VtZW50UGFy
c2VyKiBwYXJzZXIoKSB7IHJldHVybiBtX3BhcnNlci5nZXQoKTsgfQorICAgIERvY3VtZW50UGFy
c2VyKiBwYXJzZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlci5nZXQoKTsgfQorICAgIFNjcmlw
dGFibGVEb2N1bWVudFBhcnNlciogc2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgY29uc3Q7CiAg
ICAgCiAgICAgYm9vbCBwcmludGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbnRpbmc7IH0KICAg
ICB2b2lkIHNldFByaW50aW5nKGJvb2wgcCkgeyBtX3ByaW50aW5nID0gcDsgfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnRQ
YXJzZXIuY3BwCmluZGV4IDUyNzc0MTZhMmU1ZGI4NzU1MmVhMjhiMjYwYzg1YjRiMWRhNTBlNzAu
LmI4MDkyN2M1MzRmYjYwZjAwZGY2MzJmMDZiN2MwMDQ3ZDk1MDQyMjMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudFBh
cnNlci5jcHAKQEAgLTI2LDM5ICsyNiwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkRvY3VtZW50UGFyc2VyLmgiCiAKLSNpbmNsdWRlICJEb2N1bWVudFdyaXRlci5oIgotI2lu
Y2x1ZGUgIlNlZ21lbnRlZFN0cmluZy5oIgotI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIu
aCIKLQogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotRG9jdW1lbnRQYXJzZXI6OkRvY3VtZW50UGFyc2VyKERvY3VtZW50KiBkb2N1bWVudCwgYm9v
bCB2aWV3U291cmNlTW9kZSkKK0RvY3VtZW50UGFyc2VyOjpEb2N1bWVudFBhcnNlcihEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgOiBtX3BhcnNlclN0b3BwZWQoZmFsc2UpCi0gICAgLCBtX2luVmll
d1NvdXJjZU1vZGUodmlld1NvdXJjZU1vZGUpCiAgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQot
ICAgICwgbV9YU1NBdWRpdG9yKDApCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKIH0KIAotdm9p
ZCBEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIqIHdyaXRlciAsIGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGJvb2wgc2hvdWxkRmx1c2gpCi17Ci0gICAgaWYg
KCFsZW5ndGggJiYgIXNob3VsZEZsdXNoKQotICAgICAgICByZXR1cm47Ci0KLSAgICBUZXh0UmVz
b3VyY2VEZWNvZGVyKiBkZWNvZGVyID0gd3JpdGVyLT5jcmVhdGVEZWNvZGVySWZOZWVkZWQoKTsK
LSAgICBTdHJpbmcgZGVjb2RlZCA9IGRlY29kZXItPmRlY29kZShkYXRhLCBsZW5ndGgpOwotICAg
IGlmIChzaG91bGRGbHVzaCkKLSAgICAgICAgZGVjb2RlZCArPSBkZWNvZGVyLT5mbHVzaCgpOwot
ICAgIGlmIChkZWNvZGVkLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgd3JpdGVy
LT5yZXBvcnREYXRhUmVjaWV2ZWQoKTsKLQotICAgIGFwcGVuZChkZWNvZGVkKTsKLX0KLQogfTsK
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvZG9t
L0RvY3VtZW50UGFyc2VyLmgKaW5kZXggNDc4OWFiYWRmOWJjNzc2NGYzNDRjMWUzZGFjODY4ZTg3
MGIxYzk3NS4uN2U0N2E4NzE1YTE0MzcwZGRhMGU2MjcyMmU0OGVjNTFkNmE2YjI3NiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1
bWVudFBhcnNlci5oCkBAIC0zMSwxOCArMzEsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudFdyaXRlcjsKIGNsYXNzIExlZ2FjeUhUTUxUcmVl
QnVpbGRlcjsKLWNsYXNzIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjsKIGNsYXNzIFNlZ21lbnRl
ZFN0cmluZzsKLWNsYXNzIFhTU0F1ZGl0b3I7CitjbGFzcyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXI7CiAKIGNsYXNzIERvY3VtZW50UGFyc2VyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5Eb2N1bWVudFBhcnNlcigpIHsgfQogCisgICAgdmlydHVhbCBTY3Jp
cHRhYmxlRG9jdW1lbnRQYXJzZXIqIGFzU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgeyByZXR1
cm4gMDsgfQorCiAgICAgLy8gaW5zZXJ0IGlzIHVzZWQgYnkgZG9jdW1lbnQud3JpdGUKICAgICB2
aXJ0dWFsIHZvaWQgaW5zZXJ0KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpID0gMDsKKwogICAgIC8v
IGFwcGVuZEJ5dGVzIGlzIHVzZWQgYnkgRG9jdW1lbnRXcml0ZXIgKHRoZSBsb2FkZXIpCi0gICAg
dmlydHVhbCB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyKiwgY29uc3QgY2hhciogYnl0
ZXMsIGludCBsZW5ndGgsIGJvb2wgZmx1c2gpOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRCeXRl
cyhEb2N1bWVudFdyaXRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoLCBib29sIGZs
dXNoKSA9IDA7CiAKICAgICAvLyBGSVhNRTogYXBwZW5kKCkgc2hvdWxkIGJlIHByaXZhdGUsIGJ1
dCBEb2N1bWVudFdyaXRlcjo6cmVwbGFjZURvY3VtZW50CiAgICAgLy8gdXNlcyBpdCBmb3Igbm93
LgpAQCAtNTEsNDggKzUzLDI4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCkg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBmaW5pc2hXYXNDYWxsZWQoKSA9IDA7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgaXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNFeGVjdXRpbmdTY3JpcHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCiAgICAgdmly
dHVhbCB2b2lkIHN0b3BQYXJzaW5nKCkgeyBtX3BhcnNlclN0b3BwZWQgPSB0cnVlOyB9CiAgICAg
Ly8gRklYTUU6IHByb2Nlc3NpbmdEYXRhKCkgaXMgb25seSB1c2VkIGJ5IERvY3VtZW50TG9hZGVy
Ojppc0xvYWRpbmdJbkFQSVNlbnNlCiAgICAgLy8gYW5kIGlzIHZlcnkgdW5jbGVhciBhcyB0byB3
aGF0IGl0IGFjdHVhbGx5IG1lYW5zLiAgT25seSBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIKICAg
ICAvLyBhY3R1YWxseSBpbXBsZW1lbnRzIGl0LgogICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzaW5n
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgd2VsbEZv
cm1lZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQotICAgIHZpcnR1YWwgaW50IGxpbmVOdW1i
ZXIoKSBjb25zdCB7IHJldHVybiAtMTsgfQotICAgIHZpcnR1YWwgaW50IGNvbHVtbk51bWJlcigp
IGNvbnN0IHsgcmV0dXJuIC0xOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNjcmlwdHNX
YWl0aW5nRm9yU3R5bGVzaGVldHMoKSB7fQotCisgICAgLy8gRklYTUU6IEV4cG9zZWQgZm9yIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlbW92ZWRGcm9tVHJlZS4gIEhUTUwgRE9NCisgICAgLy8g
Y29kZSBzaG91bGQgbm90IG5lZWQgdG8gcmVhY2ggaW50byBpbXBsZW1lbnRhdGlvbiBkZXRhaWxz
IG9mIHRoZSBwYXJzZXIuCiAgICAgdmlydHVhbCBMZWdhY3lIVE1MVHJlZUJ1aWxkZXIqIGh0bWxU
cmVlQnVpbGRlcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIExlZ2FjeUhUTUxE
b2N1bWVudFBhcnNlciogYXNIVE1MRG9jdW1lbnRQYXJzZXIoKSB7IHJldHVybiAwOyB9Ci0KLSAg
ICAvLyBGSVhNRTogdmlldyBzb3VyY2UgbW9kZSBpcyBvbmx5IHVzZWQgYnkgdGhlIEhUTUwgYW5k
IFRleHQKLSAgICAvLyBEb2N1bWVudFBhcnNlcnMgYW5kIG1heSBub3QgYmVsb25nIG9uIHRoZSBi
YXNlLWNsYXNzLgotICAgIGJvb2wgaW5WaWV3U291cmNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5WaWV3U291cmNlTW9kZTsgfQotICAgIHZvaWQgc2V0SW5WaWV3U291cmNlTW9kZShib29sIG1v
ZGUpIHsgbV9pblZpZXdTb3VyY2VNb2RlID0gbW9kZTsgfQogCiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudDsgfQogCi0gICAgWFNTQXVkaXRvciogeHNz
QXVkaXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fWFNTQXVkaXRvcjsgfQotICAgIHZvaWQgc2V0WFNT
QXVkaXRvcihYU1NBdWRpdG9yKiBhdWRpdG9yKSB7IG1fWFNTQXVkaXRvciA9IGF1ZGl0b3I7IH0K
LQogcHJvdGVjdGVkOgotICAgIERvY3VtZW50UGFyc2VyKERvY3VtZW50KiwgYm9vbCB2aWV3U291
cmNlTW9kZSA9IGZhbHNlKTsKKyAgICBEb2N1bWVudFBhcnNlcihEb2N1bWVudCopOwogCiAgICAg
Ly8gVGhlIHBhcnNlciBoYXMgYnVmZmVycywgc28gcGFyc2luZyBtYXkgY29udGludWUgZXZlbiBh
ZnRlcgogICAgIC8vIGl0IHN0b3BzIHJlY2VpdmluZyBkYXRhLiBXZSB1c2UgbV9wYXJzZXJTdG9w
cGVkIHRvIHN0b3AgdGhlIHBhcnNlcgogICAgIC8vIGV2ZW4gd2hlbiBpdCBoYXMgYnVmZmVyZWQg
ZGF0YS4KICAgICBib29sIG1fcGFyc2VyU3RvcHBlZDsKLSAgICBib29sIG1faW5WaWV3U291cmNl
TW9kZTsKIAogICAgIC8vIEV2ZXJ5IERvY3VtZW50UGFyc2VyIG5lZWRzIGEgcG9pbnRlciBiYWNr
IHRvIHRoZSBkb2N1bWVudC4KICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKLSAgICAvLyBUaGUg
WFNTQXVkaXRvciBhc3NvY2lhdGVkIHdpdGggdGhpcyBkb2N1bWVudCBwYXJzZXIuCi0gICAgWFNT
QXVkaXRvciogbV9YU1NBdWRpdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmggYi9XZWJDb3JlL2Rv
bS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaAppbmRleCA5ZmM5MGY1MTFkZDgwY2Q3MzU0MDlkMDI3
MGRiNDdlZDY4YTFmZjJiLi4yZWIzZDBhZDVmYjY4ZWRiNGIzNWE0ZmQ4YTBlYjc5NzgzZmEyYmI4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaAorKysgYi9X
ZWJDb3JlL2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaApAQCAtNjIsOCArNjIsNiBAQCBwcml2
YXRlOgogICAgICAgICAvLyBkZWxldGVkIGFmdGVyIGZpbmlzaCgpLgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQotCi0gICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAgYi9XZWJDb3JlL2RvbS9TY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzYjM0MTdiZWUzM2UzNDE0ZjBkNTllOTZmOTg1
NjJiN2NlN2I2NDEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9TY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIuY3BwCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
Y3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTY3Jp
cHRhYmxlRG9jdW1lbnRQYXJzZXI6OlNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihEb2N1bWVudCog
ZG9jdW1lbnQsIGJvb2wgdmlld1NvdXJjZU1vZGUpCisgICAgOiBEZWNvZGVkRGF0YURvY3VtZW50
UGFyc2VyKGRvY3VtZW50LCB2aWV3U291cmNlTW9kZSkKKyAgICAsIG1feHNzQXVkaXRvcigwKQor
eworfQorCit9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFy
c2VyLmggYi9XZWJDb3JlL2RvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mNWYyZTQyYzE3YWM5MWM0Njk1MzVjOTM3NTEzNzkzYzEzYTAxMmU4Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgKQEAgLTAsMCArMSw3
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKyNp
Zm5kZWYgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyX2gKKyNkZWZpbmUgU2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyX2gKKworI2luY2x1ZGUgIkRlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTZWdtZW50ZWRTdHJpbmc7CitjbGFzcyBYU1NB
dWRpdG9yOworCitjbGFzcyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgRGVjb2Rl
ZERhdGFEb2N1bWVudFBhcnNlciB7CitwdWJsaWM6CisgICAgLy8gT25seSB1c2VkIGJ5IERvY3Vt
ZW50OjpvcGVuIGZvciBkZWNpZGluZyBpZiBpdHMgc2FmZSB0byBhY3Qgb24gYQorICAgIC8vIEph
dmFTY3JpcHQgZG9jdW1lbnQub3BlbigpIGNhbGwgcmlnaHQgbm93LCBvciBpdCBzaG91bGQgYmUg
aWdub3JlZC4KKyAgICB2aXJ0dWFsIGJvb2wgaXNFeGVjdXRpbmdTY3JpcHQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorCisgICAgLy8gRklYTUU6IE9ubHkgdGhlIEhUTUxEb2N1bWVudFBhcnNl
ciBldmVyIGJsb2NrcyBzY3JpcHQgZXhlY3V0aW9uIG9uCisgICAgLy8gc3R5bGVzaGVldCBsb2Fk
LCB3aGljaCBpcyBsaWtlbHkgYSBidWcgaW4gdGhlIFhNTERvY3VtZW50UGFyc2VyLgorICAgIHZp
cnR1YWwgdm9pZCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpIHsgfQorCisg
ICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdCA9IDA7CisKKyAgICAv
LyBUaGVzZSBhcmUgdXNlZCB0byBleHBvc2UgdGhlIGN1cnJlbnQgbGluZS9jb2x1bW4gdG8gdGhl
IHNjcmlwdGluZyBzeXN0ZW0uCisgICAgdmlydHVhbCBpbnQgbGluZU51bWJlcigpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGludCBjb2x1bW5OdW1iZXIoKSBjb25zdCA9IDA7CisKKyAgICBYU1NB
dWRpdG9yKiB4c3NBdWRpdG9yKCkgY29uc3QgeyByZXR1cm4gbV94c3NBdWRpdG9yOyB9CisgICAg
dm9pZCBzZXRYU1NBdWRpdG9yKFhTU0F1ZGl0b3IqIGF1ZGl0b3IpIHsgbV94c3NBdWRpdG9yID0g
YXVkaXRvcjsgfQorCisgICAgLy8gRXhwb3NlZCBmb3IgTGVnYWN5SFRNTFRyZWVCdWlsZGVyOjpy
ZXBvcnRFcnJvclRvQ29uc29sZQorICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzaW5nQ29udGVudFdy
aXR0ZW5CeVNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKK3Byb3RlY3RlZDoKKyAg
ICBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqLCBib29sIHZpZXdTb3VyY2VNb2Rl
ID0gZmFsc2UpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgU2NyaXB0YWJsZURvY3VtZW50UGFy
c2VyKiBhc1NjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpIHsgcmV0dXJuIHRoaXM7IH0KKworICAg
IC8vIFRoZSBYU1NBdWRpdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRvY3VtZW50IHBhcnNlci4K
KyAgICBYU1NBdWRpdG9yKiBtX3hzc0F1ZGl0b3I7Cit9OworCit9CisKKyNlbmRpZiAvLyBTY3Jp
cHRhYmxlRG9jdW1lbnRQYXJzZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vVmlld3BvcnRB
cmd1bWVudHMuY3BwIGIvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCmluZGV4IDIz
ZDAyOTdkOTg3Nzk0MDExNmY4Y2E2NWUzOGY1ZmNkMjU5ODc5MWQuLmM1MDcwMzI1MjE2MDc3Y2I3
M2ZjM2ExNWQ1YjllNGY4ZTNiZGQ3MTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1ZpZXdwb3J0
QXJndW1lbnRzLmNwcAorKysgYi9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKQEAg
LTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIkRvY3VtZW50UGFyc2VyLmgiCisj
aW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMTAzLDEwICsxMDMsMjAgQEAgc3RhdGljIE1lc3NhZ2VMZXZlbCB2aWV3cG9ydEVy
cm9yTWVzc2FnZUxldmVsKFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSkKICAgICByZXR1cm4g
ZXJyb3JDb2RlID09IFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRFcnJvciB8fCBlcnJvckNv
ZGUgPT0gTWF4aW11bVNjYWxlVG9vTGFyZ2VFcnJvciA/IEVycm9yTWVzc2FnZUxldmVsIDogVGlw
TWVzc2FnZUxldmVsOwogfQogCi12b2lkIHJlcG9ydFZpZXdwb3J0V2FybmluZyhEb2N1bWVudCog
ZG9jdW1lbnQsIFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudCkKKy8vIEZJWE1FOiBXaHkgaXMgdGhpcyBkaWZmZXJlbnQgZnJvbSBTVkdEb2N1bWVu
dEV4dGVuc2lvbnMgcGFyc2VyTGluZU51bWJlcj8KKy8vIEZJWE1FOiBDYWxsZXJzIHNob3VsZCBw
cm9iYWJseSB1c2UgU2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpCitz
dGF0aWMgaW50IHBhcnNlckxpbmVOdW1iZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIERv
Y3VtZW50UGFyc2VyKiBwYXJzZXIgPSBkb2N1bWVudC0+cGFyc2VyKCk7CisgICAgaWYgKCFkb2N1
bWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBw
YXJzZXIgPSBkb2N1bWVudC0+c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCk7CisgICAgaWYgKCFw
YXJzZXIpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBwYXJzZXItPmxpbmVOdW1iZXIo
KSArIDE7Cit9CiAKK3ZvaWQgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKERvY3VtZW50KiBkb2N1bWVu
dCwgVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
KQorewogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwogICAgIGlmICghZnJh
bWUpCiAgICAgICAgIHJldHVybjsKQEAgLTExNCw3ICsxMjQsNyBAQCB2b2lkIHJlcG9ydFZpZXdw
b3J0V2FybmluZyhEb2N1bWVudCogZG9jdW1lbnQsIFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29k
ZSwgY29ucwogICAgIFN0cmluZyBtZXNzYWdlID0gdmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0
ZShlcnJvckNvZGUpOwogICAgIG1lc3NhZ2UucmVwbGFjZSgiJXJlcGxhY2VtZW50IiwgcmVwbGFj
ZW1lbnQpOwogCi0gICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2Uo
SFRNTE1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCB2aWV3cG9ydEVycm9yTWVzc2FnZUxl
dmVsKGVycm9yQ29kZSksIG1lc3NhZ2UsIHBhcnNlciA/IHBhcnNlci0+bGluZU51bWJlcigpICsg
MSA6IDAsIGRvY3VtZW50LT51cmwoKS5zdHJpbmcoKSk7CisgICAgZnJhbWUtPmRvbVdpbmRvdygp
LT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSFRNTE1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBl
LCB2aWV3cG9ydEVycm9yTWVzc2FnZUxldmVsKGVycm9yQ29kZSksIG1lc3NhZ2UsIHBhcnNlckxp
bmVOdW1iZXIoZG9jdW1lbnQpLCBkb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBh
cnNlci5oIGIvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCA5ZjM2NzkxYmM2
MDU1ZWJlMjY5ODRhZDdkNTA0ZDViMDIyOWUxMDJhLi40Yjg2YThhOGE3YzMzZTcwY2EyYzk1M2Vm
NmI2YjA0NmRlMTY4NGYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNl
ci5oCisrKyBiL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmgKQEAgLTI3LDEwICsyNywx
MCBAQAogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lv
bi5oIgorI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNl
Z21lbnRlZFN0cmluZy5oIgogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKLSNpbmNsdWRlICJEb2N1
bWVudFBhcnNlci5oIgotI2luY2x1ZGUgIkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCkBAIC03
MCw3ICs3MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB9OwogI2VuZGlmCiAKLSAgICBj
bGFzcyBYTUxEb2N1bWVudFBhcnNlciA6IHB1YmxpYyBEb2N1bWVudFBhcnNlciwgcHVibGljIENh
Y2hlZFJlc291cmNlQ2xpZW50IHsKKyAgICBjbGFzcyBYTUxEb2N1bWVudFBhcnNlciA6IHB1Ymxp
YyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7
CiAgICAgcHVibGljOgogICAgICAgICBYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudCosIEZyYW1l
VmlldyogPSAwKTsKICAgICAgICAgWE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCos
IEVsZW1lbnQqLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24pOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1dlYkNvcmUvZG9tL1hNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggNzg0NmY4ZjdhZjI4ZGIyOWRkMzRkNTcwNDMz
ZDI2MDQ4NmZmMzFjMC4uY2RjNThmYzY4OTBmZmExZjE5YmFmNDE4ZjcxYzYxMDE4M2M5OTQyZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysg
Yi9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC01MjMsNyArNTIz
LDcgQEAgUGFzc1JlZlB0cjxYTUxQYXJzZXJDb250ZXh0PiBYTUxQYXJzZXJDb250ZXh0OjpjcmVh
dGVNZW1vcnlQYXJzZXIoeG1sU0FYSGFuZGxlclAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVu
dCogZG9jdW1lbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQotICAgIDogRG9jdW1lbnRQYXJzZXIo
ZG9jdW1lbnQpCisgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAg
LCBtX3ZpZXcoZnJhbWVWaWV3KQogICAgICwgbV9jb250ZXh0KDApCiAgICAgLCBtX3BlbmRpbmdD
YWxsYmFja3MobmV3IFBlbmRpbmdDYWxsYmFja3MpCkBAIC01NTAsNyArNTUwLDcgQEAgWE1MRG9j
dW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50KiBkb2N1bWVudCwgRnJhbWVW
aWV3KiBmcmFtZVZpZXcpCiB9CiAKIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNl
cihEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRWxlbWVudCogcGFyZW50RWxlbWVudCwgRnJh
Z21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCi0gICAgOiBEb2N1
bWVudFBhcnNlcihmcmFnbWVudC0+ZG9jdW1lbnQoKSkKKyAgICA6IFNjcmlwdGFibGVEb2N1bWVu
dFBhcnNlcihmcmFnbWVudC0+ZG9jdW1lbnQoKSkKICAgICAsIG1fdmlldygwKQogICAgICwgbV9j
b250ZXh0KDApCiAgICAgLCBtX3BlbmRpbmdDYWxsYmFja3MobmV3IFBlbmRpbmdDYWxsYmFja3Mp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNv
cmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGZlMTEwMDQ2YjhlMDE4ZTNiYjhm
OTY0OWI5ZWJjN2E4ZDNjMDU4MzkuLmZjNmQ3ZGZjZmVhNDY1ZDlkOTM2MGVkNDk4ZDUwZGQwNDQy
MzhhYjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC02Niw3ICs2Niw3IEBA
IHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZQogCiBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1
bWVudFBhcnNlcihIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHJlcG9ydEVycm9ycykKLSAg
ICA6IERvY3VtZW50UGFyc2VyKGRvY3VtZW50KQorICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFy
c2VyKGRvY3VtZW50KQogICAgICwgbV90b2tlbml6ZXIobmV3IEhUTUxUb2tlbml6ZXIpCiAgICAg
LCBtX3NjcmlwdFJ1bm5lcihuZXcgSFRNTFNjcmlwdFJ1bm5lcihkb2N1bWVudCwgdGhpcykpCiAg
ICAgLCBtX3RyZWVCdWlsZGVyKG5ldyBIVE1MVHJlZUJ1aWxkZXIobV90b2tlbml6ZXIuZ2V0KCks
IGRvY3VtZW50LCByZXBvcnRFcnJvcnMpKQpAQCAtODAsNyArODAsNyBAQCBIVE1MRG9jdW1lbnRQ
YXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHJl
cG9ydEVycm9ycwogLy8gRklYTUU6IE1lbWJlciB2YXJpYWJsZXMgc2hvdWxkIGJlIGdyb3VwZWQg
aW50byBzZWxmLWluaXRpYWxpemluZyBzdHJ1Y3RzIHRvCiAvLyBtaW5pbWl6ZSBjb2RlIGR1cGxp
Y2F0aW9uIGJldHdlZW4gdGhlc2UgY29uc3RydWN0b3JzLgogSFRNTERvY3VtZW50UGFyc2VyOjpI
VE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEZyYWdtZW50U2Ny
aXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQotICAgIDogRG9jdW1lbnRQYXJz
ZXIoZnJhZ21lbnQtPmRvY3VtZW50KCkpCisgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIo
ZnJhZ21lbnQtPmRvY3VtZW50KCkpCiAgICAgLCBtX3Rva2VuaXplcihuZXcgSFRNTFRva2VuaXpl
cikKICAgICAsIG1fdHJlZUJ1aWxkZXIobmV3IEhUTUxUcmVlQnVpbGRlcihtX3Rva2VuaXplci5n
ZXQoKSwgZnJhZ21lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24pKQogICAgICwgbV9lbmRXYXNEZWxh
eWVkKGZhbHNlKQpAQCAtMzU3LDkgKzM1Nyw5IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpz
dG9wV2F0Y2hpbmdGb3JMb2FkKENhY2hlZFJlc291cmNlKiBjYWNoZWRTY3JpcHQpCiAKIGJvb2wg
SFRNTERvY3VtZW50UGFyc2VyOjpzaG91bGRMb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKGNvbnN0
IEF0b21pY1N0cmluZyYgc3JjVmFsdWUpCiB7Ci0gICAgaWYgKCFtX1hTU0F1ZGl0b3IpCisgICAg
aWYgKCF4c3NBdWRpdG9yKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtX1hT
U0F1ZGl0b3ItPmNhbkxvYWRFeHRlcm5hbFNjcmlwdEZyb21TcmMoc3JjVmFsdWUpOworICAgIHJl
dHVybiB4c3NBdWRpdG9yKCktPmNhbkxvYWRFeHRlcm5hbFNjcmlwdEZyb21TcmMoc3JjVmFsdWUp
OwogfQogCiB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqIGNhY2hlZFJlc291cmNlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1
bWVudFBhcnNlci5oIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IGRi
NWY1Y2M4MDAwNjcxNWZiZTc1ZWI1ZTAyNWIwYTI3Zjg4NzFlNjguLjk1MjhkOTdhYmQyOGM0MDJm
OWE2MWMzNmEzZWIzNWI3NmYwZTg4NzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRG9j
dW1lbnRQYXJzZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmgKQEAg
LTI4LDExICsyOCwxMSBAQAogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNp
bmNsdWRlICJGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKKyNpbmNsdWRlICJIVE1MSW5w
dXRTdHJlYW0uaCIKICNpbmNsdWRlICJIVE1MU2NyaXB0UnVubmVySG9zdC5oIgogI2luY2x1ZGUg
IkhUTUxUb2tlbi5oIgotI2luY2x1ZGUgIkhUTUxJbnB1dFN0cmVhbS5oIgorI2luY2x1ZGUgIlNj
cmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNlZ21lbnRlZFN0cmluZy5oIgot
I2luY2x1ZGUgIkRvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiAKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgTGVnYWN5SFRNTFRyZWVC
dWlsZGVyOwogY2xhc3MgU2NyaXB0Q29udHJvbGxlcjsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7
CiAKLWNsYXNzIEhUTUxEb2N1bWVudFBhcnNlciA6ICBwdWJsaWMgRG9jdW1lbnRQYXJzZXIsIEhU
TUxTY3JpcHRSdW5uZXJIb3N0LCBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CitjbGFzcyBIVE1MRG9j
dW1lbnRQYXJzZXIgOiAgcHVibGljIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciwgSFRNTFNjcmlw
dFJ1bm5lckhvc3QsIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKICAgICAvLyBGSVhN
RTogVGhlc2UgY29uc3RydWN0b3JzIHNob3VsZCBiZSBtYWRlIHByaXZhdGUgYW5kIHJlcGxhY2Vk
IGJ5IGNyZWF0ZSgpIG1ldGhvZHMuCiAgICAgSFRNTERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVu
dCosIGJvb2wgcmVwb3J0RXJyb3JzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9MZWdhY3lI
VE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBh
cnNlci5jcHAKaW5kZXggMDIyOWIwODM0NTljZTM4ZmEzMTAzNDFiNjhmOWIwNjQyMGEzYjJiMy4u
NmM0MmQwNzQ5YTFmZDliMTcxMDQxYjUxNzQ0ZjVhOWMxNDM0MjZmMSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBpbmxpbmUg
dm9pZCBUb2tlbjo6YWRkQXR0cmlidXRlKEF0b21pY1N0cmluZyYgYXR0ck5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgYXR0cgogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBMZWdhY3lIVE1MRG9j
dW1lbnRQYXJzZXI6OkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQqIGRvY3Vt
ZW50LCBib29sIHJlcG9ydEVycm9ycykKLSAgICA6IERvY3VtZW50UGFyc2VyKGRvY3VtZW50KQor
ICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGRvY3VtZW50KQogICAgICwgbV9idWZmZXIo
MCkKICAgICAsIG1fc2NyaXB0Q29kZSgwKQogICAgICwgbV9zY3JpcHRDb2RlU2l6ZSgwKQpAQCAt
MTY3LDcgKzE2Nyw3IEBAIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6TGVnYWN5SFRNTERvY3Vt
ZW50UGFyc2VyKEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wKIH0KIAogTGVnYWN5SFRNTERv
Y3VtZW50UGFyc2VyOjpMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTFZpZXdTb3VyY2VEb2N1
bWVudCogZG9jdW1lbnQpCi0gICAgOiBEb2N1bWVudFBhcnNlcihkb2N1bWVudCwgdHJ1ZSkKKyAg
ICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihkb2N1bWVudCwgdHJ1ZSkKICAgICAsIG1fYnVm
ZmVyKDApCiAgICAgLCBtX3NjcmlwdENvZGUoMCkKICAgICAsIG1fc2NyaXB0Q29kZVNpemUoMCkK
QEAgLTE4Niw3ICsxODYsNyBAQCBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OkxlZ2FjeUhUTUxE
b2N1bWVudFBhcnNlcihIVE1MVmlld1NvdXJjZURvY3VtZW50KiBkb2N1bQogfQogCiBMZWdhY3lI
VE1MRG9jdW1lbnRQYXJzZXI6OkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdt
ZW50KiBmcmFnLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lv
bikKLSAgICA6IERvY3VtZW50UGFyc2VyKGZyYWctPmRvY3VtZW50KCkpCisgICAgOiBTY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIoZnJhZy0+ZG9jdW1lbnQoKSkKICAgICAsIG1fYnVmZmVyKDApCiAg
ICAgLCBtX3NjcmlwdENvZGUoMCkKICAgICAsIG1fc2NyaXB0Q29kZVNpemUoMCkKQEAgLTEzOTEs
NyArMTM5MSw3IEBAIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6U3RhdGUgTGVnYWN5SFRNTERv
Y3VtZW50UGFyc2VyOjpwYXJzZVRhZyhTZWdtZW50ZWRTdHJpCiAKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChtX2N1cnJlbnRUb2tlbi5iZWdpblRhZyAmJiBtX2N1cnJlbnRUb2tlbi50YWdO
YW1lID09IHNjcmlwdFRhZyAmJiAhaW5WaWV3U291cmNlTW9kZSgpICYmICFtX3RyZWVCdWlsZGVy
LT5za2lwTW9kZSgpICYmIG1fYXR0ck5hbWUgPT0gc3JjQXR0cikgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFN0cmluZyBjb250ZXh0KG1fcmF3QXR0cmlidXRlQmVmb3JlVmFsdWUuZGF0
YSgpLCBtX3Jhd0F0dHJpYnV0ZUJlZm9yZVZhbHVlLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fWFNTQXVkaXRvciAmJiAhbV9YU1NBdWRpdG9yLT5jYW5Mb2FkRXh0
ZXJuYWxTY3JpcHRGcm9tU3JjKGF0dHJpYnV0ZVZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoeHNzQXVkaXRvcigpICYmICF4c3NBdWRpdG9yKCktPmNhbkxvYWRFeHRlcm5h
bFNjcmlwdEZyb21TcmMoYXR0cmlidXRlVmFsdWUpKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGVWYWx1ZSA9IGJsYW5rVVJMKCkuc3RyaW5nKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAKQEAgLTE0MjgsNyArMTQyOCw3IEBAIExlZ2FjeUhUTUxEb2N1bWVu
dFBhcnNlcjo6U3RhdGUgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpwYXJzZVRhZyhTZWdtZW50
ZWRTdHJpCiAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnRUb2tlbi5iZWdp
blRhZyAmJiBtX2N1cnJlbnRUb2tlbi50YWdOYW1lID09IHNjcmlwdFRhZyAmJiAhaW5WaWV3U291
cmNlTW9kZSgpICYmICFtX3RyZWVCdWlsZGVyLT5za2lwTW9kZSgpICYmIG1fYXR0ck5hbWUgPT0g
c3JjQXR0cikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBjb250ZXh0KG1f
cmF3QXR0cmlidXRlQmVmb3JlVmFsdWUuZGF0YSgpLCBtX3Jhd0F0dHJpYnV0ZUJlZm9yZVZhbHVl
LnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fWFNTQXVkaXRvciAm
JiAhbV9YU1NBdWRpdG9yLT5jYW5Mb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKGF0dHJpYnV0ZVZh
bHVlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeHNzQXVkaXRvcigpICYmICF4
c3NBdWRpdG9yKCktPmNhbkxvYWRFeHRlcm5hbFNjcmlwdEZyb21TcmMoYXR0cmlidXRlVmFsdWUp
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZSA9IGJsYW5r
VVJMKCkuc3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvaHRtbC9M
ZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCA0OGQxMjg0YjJlYmZiYzc3YzdjZGE1MDVj
NTAxMGEwYTZlYWQzZjgxLi40OWU2OTc2MDMxMTgxZDNiZmFhYTJmMmE0MTQ4OWE3YmFlMmY4MTlk
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmgKKysr
IGIvV2ViQ29yZS9odG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5oCkBAIC0yOCw5ICsyOCw5
IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJGcmFnbWVu
dFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKICNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKKyNpbmNs
dWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRTdHJp
bmcuaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIkRvY3VtZW50UGFyc2VyLmgiCiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KQEAgLTE0MCw3ICsxNDAsNyBAQCBwdWJsaWM6CiAvLyAobGlrZSBkZWFs
aW5nIHdpdGggPHNjcmlwdD4gdGFncykuICBUaGUgSFRNTCB0b2tlbml6ZXIgYml0cyBzaG91bGQg
YmUgcHVzaGVkCiAvLyBkb3duIGludG8gYSBzZXBhcmF0ZSBIVE1MIHRva2VuaXplciBjbGFzcy4K
IAotY2xhc3MgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyIDogcHVibGljIERvY3VtZW50UGFyc2Vy
LCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgeworY2xhc3MgTGVnYWN5SFRNTERvY3VtZW50
UGFyc2VyIDogcHVibGljIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciwgcHVibGljIENhY2hlZFJl
c291cmNlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIoSFRN
TERvY3VtZW50KiwgYm9vbCByZXBvcnRFcnJvcnMpOwogICAgIExlZ2FjeUhUTUxEb2N1bWVudFBh
cnNlcihIVE1MVmlld1NvdXJjZURvY3VtZW50Kik7CkBAIC0xNTAsOSArMTUwLDYgQEAgcHVibGlj
OgogICAgIGJvb2wgZm9yY2VTeW5jaHJvbm91cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZm9y
Y2VTeW5jaHJvbm91cygpOyB9CiAgICAgdm9pZCBzZXRGb3JjZVN5bmNocm9ub3VzKGJvb2wgZm9y
Y2UpOwogCi0gICAgLy8gRXhwb3NlZCBmb3IgTGVnYWN5SFRNTFRyZWVCdWlsZGVyOjpyZXBvcnRF
cnJvclRvQ29uc29sZQotICAgIGJvb2wgcHJvY2Vzc2luZ0NvbnRlbnRXcml0dGVuQnlTY3JpcHQo
KSBjb25zdCB7IHJldHVybiBtX3NyYy5leGNsdWRlTGluZU51bWJlcnMoKTsgfQotCiAgICAgc3Rh
dGljIHZvaWQgcGFyc2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYsIERvY3VtZW50RnJh
Z21lbnQqLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGluZ0Fs
bG93ZWQpOwogCiBwcm90ZWN0ZWQ6CkBAIC0xNjEsNyArMTU4LDcgQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2goKTsKIAogcHJpdmF0ZToKLSAgICAvLyBEb2N1bWVudFBhcnNl
cgorICAgIC8vIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcgogICAgIHZpcnR1YWwgdm9pZCBhcHBl
bmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIGZpbmlzaFdhc0Nh
bGxlZCgpOwogICAgIHZpcnR1YWwgYm9vbCBpc1dhaXRpbmdGb3JTY3JpcHRzKCkgY29uc3Q7CkBA
IC0xNzIsMTAgKzE2OSwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgaW50IGxpbmVOdW1iZXIo
KSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KICAgICB2aXJ0dWFsIGludCBjb2x1bW5O
dW1iZXIoKSBjb25zdCB7IHJldHVybiAxOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc2lu
Z0NvbnRlbnRXcml0dGVuQnlTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NyYy5leGNsdWRlTGlu
ZU51bWJlcnMoKTsgfQorCiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0Zv
clN0eWxlc2hlZXRzKCk7CiAKICAgICB2aXJ0dWFsIExlZ2FjeUhUTUxUcmVlQnVpbGRlciogaHRt
bFRyZWVCdWlsZGVyKCkgY29uc3QgeyByZXR1cm4gbV90cmVlQnVpbGRlci5nZXQoKTsgfQotICAg
IHZpcnR1YWwgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKiBhc0hUTUxEb2N1bWVudFBhcnNlcigp
IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIGNsYXNzIFN0YXRlOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvTGVnYWN5SFRNTFRyZWVCdWlsZGVyLmNwcCBiL1dlYkNvcmUvaHRtbC9MZWdhY3lI
VE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IDdiNDQ5NDNmZGI5ODdlNDY3NjAzYmVmMjM1NWU1NzQ2
NTNkZjczMTEuLjIxY2E5NzMyNTdhODkzZTUwNjQxMmE0YTc5MzM2YWY4YWQ5ZDdiMTQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1dlYkNv
cmUvaHRtbC9MZWdhY3lIVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC0xNjQ3LDggKzE2NDcsOSBAQCB2
b2lkIExlZ2FjeUhUTUxUcmVlQnVpbGRlcjo6cmVwb3J0RXJyb3JUb0NvbnNvbGUoSFRNTFBhcnNl
ckVycm9yQ29kZSBlcnJvckNvZGUsCiAgICAgRnJhbWUqIGZyYW1lID0gbV9kb2N1bWVudC0+ZnJh
bWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaW50IGxp
bmVOdW1iZXIgPSBtX2RvY3VtZW50LT5wYXJzZXIoKS0+bGluZU51bWJlcigpICsgMTsKKworICAg
IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciogcGFyc2VyID0gbV9kb2N1bWVudC0+c2NyaXB0YWJs
ZURvY3VtZW50UGFyc2VyKCk7CisgICAgaW50IGxpbmVOdW1iZXIgPSBwYXJzZXItPmxpbmVOdW1i
ZXIoKSArIDE7CiAKICAgICBBdG9taWNTdHJpbmcgdGFnMTsKICAgICBBdG9taWNTdHJpbmcgdGFn
MjsKQEAgLTE2NzQsOSArMTY3NSw3IEBAIHZvaWQgTGVnYWN5SFRNTFRyZWVCdWlsZGVyOjpyZXBv
cnRFcnJvclRvQ29uc29sZShIVE1MUGFyc2VyRXJyb3JDb2RlIGVycm9yQ29kZSwKICAgICAgICAg
cmV0dXJuOwogCiAgICAgU3RyaW5nIG1lc3NhZ2U7Ci0gICAgLy8gRklYTUU6IFRoaXMgZG9lc24n
dCB3b3JrIGZvciB0aGUgbmV3IEhUTUxEb2N1bWVudFBhcnNlciBhbmQgc2hvdWxkLgotICAgIExl
Z2FjeUhUTUxEb2N1bWVudFBhcnNlciogaHRtbFBhcnNlciA9IG1fZG9jdW1lbnQtPnBhcnNlcigp
LT5hc0hUTUxEb2N1bWVudFBhcnNlcigpOwotICAgIGlmIChodG1sUGFyc2VyICYmIGh0bWxQYXJz
ZXItPnByb2Nlc3NpbmdDb250ZW50V3JpdHRlbkJ5U2NyaXB0KCkpCisgICAgaWYgKHBhcnNlci0+
cHJvY2Vzc2luZ0NvbnRlbnRXcml0dGVuQnlTY3JpcHQoKSkKICAgICAgICAgbWVzc2FnZSArPSBo
dG1sUGFyc2VyRG9jdW1lbnRXcml0ZU1lc3NhZ2UoKTsKICAgICBtZXNzYWdlICs9IGVycm9yTXNn
OwogICAgIG1lc3NhZ2UucmVwbGFjZSgiJXRhZzEiLCB0YWcxKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAppbmRleCBhNjI4NTBjYWNkMWQ4Y2NlNWRmMGY5ZGVjMGNhNDNiYjVkNDc0ODVmLi5m
NzI0OTVjZTJjY2JjZDFkNzJlNmE3MDJlNzM5M2JjYjUzN2ViYzUyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUGFnZS5oIgog
I2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
RG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTQ2LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCi0jaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKIAogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRXcml0ZXIuY3BwCmluZGV4IGEyMGVjZWQ3MjA0MmY2ODM1ZmI5NWFmMTViODcxMTNi
ODdlOTljYzguLmQ5OWYzNDA2NTQ4NWM3YjMxYTA2Zjc0MjMzZjRjYjllMDczZDkxMzYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFdyaXRlci5jcHAKQEAgLTM4LDEyICszOCwxNCBAQAogI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgogI2luY2x1ZGUgIlBsYWNlaG9sZGVyRG9jdW1lbnQuaCIKICNpbmNsdWRlICJQ
bHVnaW5Eb2N1bWVudC5oIgorI2luY2x1ZGUgIlJhd0RhdGFEb2N1bWVudFBhcnNlci5oIgorI2lu
Y2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJTaW5rRG9jdW1lbnQuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNv
ZGVyLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRQYXJzZXIuaCIKKwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1RleHREb2N1bWVudC5jcHAgYi9XZWJD
b3JlL2xvYWRlci9UZXh0RG9jdW1lbnQuY3BwCmluZGV4IDZjZGZiYzJmOTk0OWZkMjMxYjJkNjdl
YzZhOWU1NWFkM2VhODEwODYuLjZiNTMwODQzMTVlNDk1YjNjZjZmMWNiZDhjMmYwMzI0OTQwMzM4
YTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1RleHREb2N1bWVudC5jcHAKKysrIGIvV2Vi
Q29yZS9sb2FkZXIvVGV4dERvY3VtZW50LmNwcApAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHREb2N1bWVudC5oIgogCi0jaW5jbHVkZSAiRG9jdW1l
bnRQYXJzZXIuaCIKKyNpbmNsdWRlICJEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmgiCiAjaW5j
bHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxW
aWV3U291cmNlRG9jdW1lbnQuaCIKQEAgLTM4LDcgKzM4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1jbGFzcyBUZXh0RG9jdW1lbnRQYXJz
ZXIgOiBwdWJsaWMgRG9jdW1lbnRQYXJzZXIgeworLy8gRklYTUU6IFRleHREb2N1bWVudFBhcnNl
ciBjb3VsZCBqdXN0IGJlIGFuIEhUTUxEb2N1bWVudFBhcnNlcgorLy8gd2hpY2ggc3RhcnRlZCB0
aGUgVG9rZW5pemVyIGluIHRoZSBQbGFpblRleHQgc3RhdGUuCitjbGFzcyBUZXh0RG9jdW1lbnRQ
YXJzZXIgOiBwdWJsaWMgRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlciB7CiBwdWJsaWM6CiAgICAg
VGV4dERvY3VtZW50UGFyc2VyKERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+VGV4dERvY3VtZW50
UGFyc2VyKCk7CkBAIC00OSw4ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFw
cGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCk7
CiAgICAgdmlydHVhbCBib29sIGZpbmlzaFdhc0NhbGxlZCgpOwotICAgIHZpcnR1YWwgYm9vbCBp
c1dhaXRpbmdGb3JTY3JpcHRzKCkgY29uc3Q7Ci0gICAgCisKICAgICBpbmxpbmUgdm9pZCBjaGVj
a0J1ZmZlcihpbnQgbGVuID0gMTApCiAgICAgewogICAgICAgICBpZiAoKG1fZGVzdCAtIG1fYnVm
ZmVyKSA+IG1fc2l6ZSAtIGxlbikgewpAQCAtNjMsNiArNjQsNyBAQCBwcml2YXRlOgogICAgICAg
ICB9CiAgICAgfQogCitwcml2YXRlOgogICAgIEVsZW1lbnQqIG1fcHJlRWxlbWVudDsKIAogICAg
IGJvb2wgbV9za2lwTEY7CkBAIC03Myw3ICs3NSw3IEBAIHByaXZhdGU6CiB9OwogCiBUZXh0RG9j
dW1lbnRQYXJzZXI6OlRleHREb2N1bWVudFBhcnNlcihEb2N1bWVudCogZG9jdW1lbnQpCi0gICAg
OiBEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKKyAgICA6IERlY29kZWREYXRhRG9jdW1lbnRQYXJz
ZXIoZG9jdW1lbnQpCiAgICAgLCBtX3ByZUVsZW1lbnQoMCkKICAgICAsIG1fc2tpcExGKGZhbHNl
KQogeyAgICAKQEAgLTg0LDcgKzg2LDcgQEAgVGV4dERvY3VtZW50UGFyc2VyOjpUZXh0RG9jdW1l
bnRQYXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogfSAgICAKIAogVGV4dERvY3VtZW50UGFyc2Vy
OjpUZXh0RG9jdW1lbnRQYXJzZXIoSFRNTFZpZXdTb3VyY2VEb2N1bWVudCogZG9jdW1lbnQpCi0g
ICAgOiBEb2N1bWVudFBhcnNlcihkb2N1bWVudCwgdHJ1ZSkKKyAgICA6IERlY29kZWREYXRhRG9j
dW1lbnRQYXJzZXIoZG9jdW1lbnQsIHRydWUpCiAgICAgLCBtX3ByZUVsZW1lbnQoMCkKICAgICAs
IG1fc2tpcExGKGZhbHNlKQogeyAgICAKQEAgLTE3NCw2ICsxNzYsOCBAQCB2b2lkIFRleHREb2N1
bWVudFBhcnNlcjo6ZmluaXNoKCkKICAgICBtX2J1ZmZlciA9IDA7CiAgICAgbV9kZXN0ID0gMDsK
IAorICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBjYWxsIGZpbmlzaFBhcnNpbmcgZXZlbiBpZiBt
X3BhcnNlclN0b3BwZWQgaXMgdHJ1ZT8KKyAgICAvLyBTZWUgZXF1aXZhbGVudCBpbXBsZW1lbnRh
dGlvbiBpbiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuCiAgICAgZG9jdW1lbnQoKS0+ZmluaXNoZWRQ
YXJzaW5nKCk7CiB9CiAKQEAgLTE4NCwxMiArMTg4LDYgQEAgYm9vbCBUZXh0RG9jdW1lbnRQYXJz
ZXI6OmZpbmlzaFdhc0NhbGxlZCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRleHRE
b2N1bWVudFBhcnNlcjo6aXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0Ci17Ci0gICAgLy8gQSB0
ZXh0IGRvY3VtZW50IGlzIG5ldmVyIHdhaXRpbmcgZm9yIHNjcmlwdHMKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KIFRleHREb2N1bWVudDo6VGV4dERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3Qg
S1VSTCYgdXJsKQogICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpCiB7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwIGIvV2ViQ29yZS9zdmcvU1ZH
RG9jdW1lbnRFeHRlbnNpb25zLmNwcAppbmRleCA3YjI4NWViODYxZjdhNTE3ODgwYmQ4OTNmOTVk
NDBhMWFmMjg4NDYwLi5mYzMxNTUxMGNlNGM1NjFmNTFmNzExMDE4YjA0OTYwYjhhMDY2ZDkzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1dl
YkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNp
bmNsdWRlICJTVkdTTUlMRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNp
bmNsdWRlICJTTUlMVGltZUNvbnRhaW5lci5oIgotI2luY2x1ZGUgIlhNTERvY3VtZW50UGFyc2Vy
LmgiCisjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMjUsMTYgKzEyNSwy
OSBAQCBib29sIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6c2FtcGxlQW5pbWF0aW9uQXRUaW1lKGNv
bnN0IFN0cmluZyYgZWxlbWVudElkLCBTVkdTTQogICAgIHJldHVybiB0cnVlOwogfQogCisvLyBG
SVhNRTogQ2FsbGVycyBzaG91bGQgcHJvYmFibHkgdXNlIFNjcmlwdENvbnRyb2xsZXI6OmV2ZW50
SGFuZGxlckxpbmVOdW1iZXIoKQorc3RhdGljIGludCBwYXJzZXJMaW5lTnVtYmVyKERvY3VtZW50
KiBkb2N1bWVudCkKK3sKKyAgICBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IGRv
Y3VtZW50LT5zY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKTsKKyAgICBpZiAoIXBhcnNlcikKKyAg
ICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIHBhcnNlci0+bGluZU51bWJlcigpOworfQorCitz
dGF0aWMgdm9pZCByZXBvcnRNZXNzYWdlKERvY3VtZW50KiBkb2N1bWVudCwgTWVzc2FnZUxldmVs
IGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9
IGRvY3VtZW50LT5mcmFtZSgpKQorICAgICAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUo
KS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBsZXZlbCwgbWVz
c2FnZSwgcGFyc2VyTGluZU51bWJlcihkb2N1bWVudCksIFN0cmluZygpKTsKK30KKwogdm9pZCBT
VkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlcG9ydFdhcm5pbmcoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogewotICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2RvYy0+ZnJhbWUoKSkKLSAgICAgICAgZnJh
bWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBM
b2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJXYXJuaW5nOiAiICsgbWVzc2FnZSwg
bV9kb2MtPnBhcnNlcigpID8gbV9kb2MtPnBhcnNlcigpLT5saW5lTnVtYmVyKCkgOiAxLCBTdHJp
bmcoKSk7CisgICAgcmVwb3J0TWVzc2FnZShtX2RvYywgV2FybmluZ01lc3NhZ2VMZXZlbCwgIldh
cm5pbmc6ICIgKyBtZXNzYWdlKTsKIH0KIAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJl
cG9ydEVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gbV9kb2MtPmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgp
LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2Fn
ZUxldmVsLCAiRXJyb3I6ICIgKyBtZXNzYWdlLCBtX2RvYy0+cGFyc2VyKCkgPyBtX2RvYy0+cGFy
c2VyKCktPmxpbmVOdW1iZXIoKSA6IDEsIFN0cmluZygpKTsKKyAgICByZXBvcnRNZXNzYWdlKG1f
ZG9jLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkVycm9yOiAiICsgbWVzc2FnZSk7CiB9CiAKIHZvaWQg
U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRQZW5kaW5nUmVzb3VyY2UoY29uc3QgQXRvbWljU3Ry
aW5nJiBpZCwgU1ZHU3R5bGVkRWxlbWVudCogb2JqKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59878</attachid>
            <date>2010-06-28 00:33:43 -0700</date>
            <delta_ts>2010-06-28 00:56:32 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-41141-20100628003340.patch</filename>
            <type>text/plain</type>
            <size>55558</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAwM2I1ZGE2ODZlZDk3M2MzOThjOTJiYWQwYWFlNzgzNzk3MmZkYWNhLi5iYzJlYWI4OTM5Mzkx
YjA4ZDYzNmMyNzQ1NWJhNzA0OTYxYTQyYTNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0xMTQsNiArMTE0LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJZG9tL0NvbnRhaW5lck5vZGUuY3BwIFwK
IAlkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIFwKIAlkb20vRE9NU3RyaW5nTGlzdC5jcHAgXAor
CWRvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcCBcCiAJZG9tL0RvY3VtZW50LmNwcCBc
CiAJZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwIFwKIAlkb20vRG9jdW1lbnRQYXJzZXIuY3BwIFwK
QEAgLTE1OCw2ICsxNTksNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMp
IFwKIAlkb20vUXVhbGlmaWVkTmFtZS5jcHAgXAogCWRvbS9SYW5nZS5jcHAgXAogCWRvbS9SZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgXAorCWRvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIu
Y3BwIFwKIAlkb20vU2NyaXB0RWxlbWVudC5jcHAgXAogCWRvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBcCiAJZG9tL1NlbGVjdEVsZW1lbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDBkY2ZiYzYwZTdh
YTViMDIyMDA2MGNlN2Y1OTgwN2JkNzEzNThlNDYuLmM0OGJkMDkxNzhiMDA5MTE3ZWFmNDc5YzE0
YTk0YjJjYjExNDU4ODggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzcxLDYgKzc3MSw3IEBAIFNFVChXZWJDb3JlX1NP
VVJDRVMKICAgICBkb20vQ3VzdG9tRXZlbnQuY3BwCiAgICAgZG9tL0RPTUltcGxlbWVudGF0aW9u
LmNwcAogICAgIGRvbS9ET01TdHJpbmdMaXN0LmNwcAorICAgIGRvbS9EZWNvZGVkRGF0YURvY3Vt
ZW50UGFyc2VyLmNwcAogICAgIGRvbS9EZXZpY2VPcmllbnRhdGlvbi5jcHAKICAgICBkb20vRGV2
aWNlT3JpZW50YXRpb25FdmVudC5jcHAKICAgICBkb20vRG9jdW1lbnQuY3BwCkBAIC04MTYsNiAr
ODE3LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9RdWFsaWZpZWROYW1lLmNwcAog
ICAgIGRvbS9SYW5nZS5jcHAKICAgICBkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwCisg
ICAgZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAKICAgICBkb20vU2NyaXB0RWxlbWVu
dC5jcHAKICAgICBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKICAgICBkb20vU2VsZWN0
RWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggOGRiNGQ1ZjEwMDViMjc5MDgyZGYyNTJkNzhmNzYzZDBhY2ViNGIwNS4uOTgz
YmE1MmZkN2IxNDc3YzAyMDM3MWJmYzA0MzRkYjAzYjc1Y2JmMyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OCBAQAorMjAx
MC0wNi0yNCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIGEgbmV3IGJhc2VjbGFzcyBmb3IgWE1M
LCBIVE1MIGFuZCBUZXh0IERvY3VtZW50UGFyc2VycyB0byBjbGVhbiB1cCBEb2N1bWVudFBhcnNl
ciBjYWxsIHNpdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MTE0MQorCisgICAgICAgIEJ5IHNwbGl0dGluZyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXIgYW5kIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIKKyAgICAgICAgb3V0IGZyb20gRG9jdW1l
bnRQYXJzZXIgd2UndmUgbWFkZSB0aGUgRG9jdW1lbnRQYXJzZXIgYW5kCisgICAgICAgIFJhd0Rh
dGFEb2N1bWVudFBhcnNlciBjbGFzc2VzIHNpbXBsZXIuCisKKyAgICAgICAgTm8gZnVuY3Rpb25h
bCBjaGFuZ2UsIHRodXMgbm8gdGVzdHMuCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJMaW5lTnVt
YmVyKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNoZWV0OjpjaGVja0xvYWRlZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmltcGxpY2l0T3Blbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1w
bGljaXRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlUGVuZGluZ1No
ZWV0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpwYXJzZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFBhcnNlcjo6RG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudFBhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRQYXJzZXI6OmFz
U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKiBkb20vUmF3RGF0YURvY3VtZW50
UGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpSYXdEYXRhRG9jdW1lbnRQYXJzZXI6OmZpbmlz
aFdhc0NhbGxlZCk6CisgICAgICAgICogZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHA6
IENvcGllZCBmcm9tIFdlYkNvcmUvaHRtbC9IVE1MRW50aXR5UGFyc2VyLmguCisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXI6OlNjcmlwdGFibGVEb2N1bWVudFBhcnNl
cik6CisgICAgICAgICogZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdGFibGVEb2N1bWVudFBhcnNlcjo6aXNFeGVjdXRpbmdTY3Jp
cHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyOjpleGVjdXRl
U2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXI6Onhzc0F1ZGl0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyOjpzZXRYU1NBdWRpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdGFibGVEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc2luZ0NvbnRlbnRXcml0dGVuQnlTY3JpcHQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyOjphc1NjcmlwdGFi
bGVEb2N1bWVudFBhcnNlcik6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlckxpbmVOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6
cmVwb3J0Vmlld3BvcnRXYXJuaW5nKToKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXIu
aDoKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcik6CisgICAgICAg
ICogaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERv
Y3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERvY3VtZW50UGFyc2VyOjpzaG91bGRMb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKToKKyAgICAg
ICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGh0bWwvTGVnYWN5SFRN
TERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxEb2N1bWVu
dFBhcnNlcjo6TGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VUYWcpOgorICAgICAgICAqIGh0bWwvTGVnYWN5
SFRNTERvY3VtZW50UGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lIVE1MRG9jdW1l
bnRQYXJzZXI6OnByb2Nlc3NpbmdDb250ZW50V3JpdHRlbkJ5U2NyaXB0KToKKyAgICAgICAgKiBo
dG1sL0xlZ2FjeUhUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lI
VE1MVHJlZUJ1aWxkZXI6OnJlcG9ydEVycm9yVG9Db25zb2xlKToKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6
CisgICAgICAgICogbG9hZGVyL1RleHREb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0RG9jdW1lbnRQYXJzZXI6OlRleHREb2N1bWVudFBhcnNlcik6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0RG9jdW1lbnRQYXJzZXI6OmZpbmlzaCk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50
RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZXJMaW5lTnVtYmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlcG9ydE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjpyZXBvcnRXYXJuaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Rv
Y3VtZW50RXh0ZW5zaW9uczo6cmVwb3J0RXJyb3IpOgorCiAyMDEwLTA2LTI1ICBZdXpvIEZ1amlz
aGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaGluaWNoaXJv
IEhhbWFqaS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCmluZGV4IDJmZTZjNWI3M2QzOGMxM2ZhNWE2ZWQ4NzRhODljMGEwNmIxZWY3
Y2UuLmRlNjAwNTczNTY2NWU5YTRiZWUzYmI0YjM4OTY3MzE1OWEzNWVkNmMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAt
Nzc4LDYgKzc3OCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9kb20vRE9NSW1w
bGVtZW50YXRpb24uaCBcCiAJV2ViQ29yZS9kb20vRE9NU3RyaW5nTGlzdC5jcHAgXAogCVdlYkNv
cmUvZG9tL0RPTVN0cmluZ0xpc3QuaCBcCisJV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVu
dFBhcnNlci5jcHAgXAorCVdlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCBc
CiAJV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb24uY3BwIFwKIAlXZWJDb3JlL2RvbS9EZXZp
Y2VPcmllbnRhdGlvbi5oIFwKIAlXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5o
IFwKQEAgLTg4MSw2ICs4ODMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvZG9t
L1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oIFwKIAlXZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lci5jcHAgXAogCVdlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmggXAor
CVdlYkNvcmUvZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAgXAorCVdlYkNvcmUvZG9t
L1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIFwKIAlXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50
LmNwcCBcCiAJV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oIFwKIAlXZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGUwNmNmZjI5ZjVhYzNlMmJjZWZkZmQ4NjM5
YzRiYTY4NzNkYzNiMDMuLmU5OThhMjA5ZmMyZDZmYzdiZjkzMjZlNTZkOTc1ODkyZmUwMDdmNTAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC0xMTA1LDYgKzExMDUsOCBAQAogICAgICAgICAgICAgJ2RvbS9ET01JbXBsZW1lbnRh
dGlvbi5oJywKICAgICAgICAgICAgICdkb20vRE9NU3RyaW5nTGlzdC5jcHAnLAogICAgICAgICAg
ICAgJ2RvbS9ET01TdHJpbmdMaXN0LmgnLAorICAgICAgICAgICAgJ2RvbS9EZWNvZGVkRGF0YURv
Y3VtZW50UGFyc2VyLmNwcCcsCisgICAgICAgICAgICAnZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQ
YXJzZXIuaCcsCiAgICAgICAgICAgICAnZG9tL0RldmljZU9yaWVudGF0aW9uLmNwcCcsCiAgICAg
ICAgICAgICAnZG9tL0RldmljZU9yaWVudGF0aW9uLmgnLAogICAgICAgICAgICAgJ2RvbS9EZXZp
Y2VPcmllbnRhdGlvbkNsaWVudC5oJywKQEAgLTEyMDksNiArMTIxMSw4IEBACiAgICAgICAgICAg
ICAnZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICdkb20vUmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXIuY3BwJywKICAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXIuaCcsCisgICAgICAgICAgICAnZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5j
cHAnLAorICAgICAgICAgICAgJ2RvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCcsCiAgICAg
ICAgICAgICAnZG9tL1NjcmlwdEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdkb20vU2NyaXB0
RWxlbWVudC5oJywKICAgICAgICAgICAgICdkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAn
LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8K
aW5kZXggMWUxOWIwMmYwMzY3YjJiMDJlMzhlMjBlM2I2NTJiOTliMGExMjFkZC4uZjEwZTYyNTRm
NTVlODc4YzIwNGE0OTdhMjkzNjJmZTZiMWIwMWE5OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC00NzIsNiArNDcyLDcgQEAgU09V
UkNFUyArPSBcCiAgICAgZG9tL0NvbnRhaW5lck5vZGUuY3BwIFwKICAgICBkb20vQ1NTTWFwcGVk
QXR0cmlidXRlRGVjbGFyYXRpb24uY3BwIFwKICAgICBkb20vQ3VzdG9tRXZlbnQuY3BwIFwKKyAg
ICBkb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAgXAogICAgIGRvbS9EZXZpY2VPcmll
bnRhdGlvbi5jcHAgXAogICAgIGRvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcCBcCiAgICAg
ZG9tL0RvY3VtZW50LmNwcCBcCkBAIC01MjEsNiArNTIyLDcgQEAgU09VUkNFUyArPSBcCiAgICAg
ZG9tL1JhbmdlLmNwcCBcCiAgICAgZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oIFwKICAgICBk
b20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwIFwKKyAgICBkb20vU2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyLmNwcCBcCiAgICAgZG9tL1NjcmlwdEVsZW1lbnQuY3BwIFwKICAgICBkb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgXAogICAgIGRvbS9TZWxlY3RFbGVtZW50LmNwcCBcCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA0ZDVmNDBiNDM0MDQ4ZGQ4ODAz
Y2ZjZGIxODdlZDNmZDdmZmQ5MmMyLi42MTM2NjM5MzFmY2JhOTIzOWYyM2Y2YzkzNjdhZWQyNDMx
NTY2Zjc4IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI5OTI1LDYg
KzI5OTI1LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGRvbVxEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcCINCisJCQkJPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxEZWNvZGVkRGF0
YURvY3VtZW50UGFyc2VyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxkb21cRGV2aWNlT3JpZW50YXRpb24uY3BwIg0KIAkJCQk+DQogCQkJ
PC9GaWxlPg0KQEAgLTMwMzQxLDYgKzMwMzQ5LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cZG9tXFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNjcmlwdEVsZW1lbnQuY3Bw
Ig0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMTZkMTk3NmQ2MzIwYWQzNGY2YzFmNmJkMWQ4OTExMTcxNTUyYmIyZC4u
YzdjMjRlNjcxNGZlYjY0MmEwMjlmNGFkNzkzMzRiMGQ5YzJlMDQ3MSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5NzUsNiArMjk3NSw4IEBACiAJCUE4
M0I3OTU3MENDQjAxMjUwMDBCMDgyNSAvKiBET01TVkdGb250RmFjZUVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4M0I3OTQ4MENDQjAxMjUw
MDBCMDgyNSAvKiBET01TVkdGb250RmFjZUVsZW1lbnQuaCAqLzsgfTsKIAkJQTgzRTFDNzQwRTQ5
MDQyQzAwMTQwQjlDIC8qIFNjcmlwdENvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODNFMUM3MjBFNDkwNDJCMDAxNDBCOUMgLyog
U2NyaXB0Q29udHJvbGxlck1hYy5tbSAqLzsgfTsKIAkJQTg0RDgyN0MxMUQzMzNFRDAwOTcyOTkw
IC8qIFJhd0RhdGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTg0RDgyN0IxMUQzMzNFRDAwOTcyOTkwIC8qIFJhd0RhdGFEb2N1
bWVudFBhcnNlci5oICovOyB9OworCQlBODREODJDMTExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBODREODJCRjExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyLmggKi87IH07CisJCUE4NEQ4MkMyMTFEMzQ3NDgwMDk3Mjk5MCAvKiBTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTg0RDgyQzAxMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBh
cnNlci5jcHAgKi87IH07CiAJCUE4NEVCRDc4MENCOEM4OTIwMDA3OTYwOSAvKiBKU1N0eWxlU2hl
ZXRMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4NEVCRDc3MENCOEM4OTIwMDA3OTYwOSAvKiBKU1N0eWxlU2hlZXRMaXN0Q3VzdG9t
LmNwcCAqLzsgfTsKIAkJQTg0RUJEODMwQ0I4Qzk3NzAwMDc5NjA5IC8qIEpTU3R5bGVTaGVldExp
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NEVC
RDgxMENCOEM5NzcwMDA3OTYwOSAvKiBKU1N0eWxlU2hlZXRMaXN0LmggKi87IH07CiAJCUE4NEVC
RDg0MENCOEM5NzcwMDA3OTYwOSAvKiBKU1N0eWxlU2hlZXRMaXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NEVCRDgyMENCOEM5NzcwMDA3OTYw
OSAvKiBKU1N0eWxlU2hlZXRMaXN0LmNwcCAqLzsgfTsKQEAgLTMwNjEsNiArMzA2Myw4IEBACiAJ
CUE4QTkwOUFDMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE5
MDlBQTBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5o
ICovOyB9OwogCQlBOEE5MDlBRDBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3Jt
YWJsZUNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBOEE5MDlBQjBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJs
ZUNvbnRhaW5lci5jcHAgKi87IH07CiAJCUE4QzIyODBFMTFENEE1OTcwMEQ1QTdEMyAvKiBEb2N1
bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBOEMyMjgwRDExRDRBNTk3MDBENUE3RDMgLyogRG9jdW1lbnRQYXJzZXIuY3BwICovOyB9
OworCQlBOEMyMjhBMTExRDU3MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMjI4
OUYxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCAqLzsgfTsK
KwkJQThDMjI4QTIxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMjI4
QTAxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwICovOyB9
OwogCQlBOEM0QTdGRDA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDNEE3RUIwOUQ1NjMyNzAw
MDNBQzhEIC8qIFN0eWxlZEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBOEM0QTdGRTA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OEM0QTdFQzA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5jcHAgKi87IH07CiAJCUE4
QzRBODAwMDlENTYzMjcwMDAzQUM4RCAvKiBOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzRBN0VFMDlENTYzMjcwMDAzQUM4RCAvKiBOb2Rl
LmNwcCAqLzsgfTsKQEAgLTg0NjksNiArODQ3Myw4IEBACiAJCUE4M0I3OTQ4MENDQjAxMjUwMDBC
MDgyNSAvKiBET01TVkdGb250RmFjZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NU1ZHRm9udEZhY2VFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4M0UxQzcyMEU0OTA0MkIwMDE0MEI5QyAvKiBTY3JpcHRDb250cm9sbGVyTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2NyaXB0Q29udHJvbGxl
ck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg0RDgyN0IxMUQzMzNFRDAw
OTcyOTkwIC8qIFJhd0RhdGFEb2N1bWVudFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTg0RDgyQkYxMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBh
cnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRhYmxlRG9jdW1l
bnRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTg0RDgyQzAxMUQzNDc0
ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODRFQkQ3NzBDQjhDODkyMDAwNzk2MDkgLyogSlNT
dHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTg0RUJEODEwQ0I4Qzk3NzAwMDc5NjA5IC8qIEpTU3R5bGVTaGVldExpc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHlsZVNoZWV0TGlzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBODRFQkQ4MjBDQjhDOTc3MDAwNzk2MDkgLyogSlNTdHls
ZVNoZWV0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N0
eWxlU2hlZXRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg1NTUsNiAr
ODU2MSw4IEBACiAJCUE4QTkwOUFBMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zv
cm1hYmxlQ29udGFpbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
clNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQThBOTA5QUIwQ0JDRDZCNTAwMjlCODA3IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250
YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZH
VHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE4QzIyODBEMTFENEE1OTcwMEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudFBhcnNlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4QzIyODlGMTFENTcyMkUwMEQ1QTdEMyAvKiBEZWNvZGVk
RGF0YURvY3VtZW50UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERl
Y29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QThDMjI4QTAxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVjb2RlZERhdGFEb2N1bWVu
dFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QzRBN0VCMDlENTYz
MjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHlsZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
QzRBN0VDMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZWRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQThDNEE3RUUwOUQ1NjMyNzAwMDNBQzhEIC8qIE5vZGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTY5MTEsNiArMTY5MTksMTAgQEAKIAkJCQk1NEM1MEY3QTBF
ODAxREYzMDA5ODMyQTAgLyogWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCAqLywKIAkJCQk1
RDE1RTNBOTBGOUU2QUMxMDA5RTBFM0YgLyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5jcHAgKi8s
CiAJCQkJNUQxNUUzQUEwRjlFNkFDMTAwOUUwRTNGIC8qIFhNTERvY3VtZW50UGFyc2VyU2NvcGUu
aCAqLywKKwkJCQlBODREODJCRjExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyLmggKi8sCisJCQkJQTg0RDgyQzAxMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVE
b2N1bWVudFBhcnNlci5jcHAgKi8sCisJCQkJQThDMjI4OUYxMUQ1NzIyRTAwRDVBN0QzIC8qIERl
Y29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCAqLywKKwkJCQlBOEMyMjhBMDExRDU3MjJFMDBENUE3
RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9
IGRvbTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xOTU3NCw2ICsxOTU4Niw4IEBA
CiAJCQkJQ0VBMzk0OUQxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOEE4NDRDRkYxMUQzQzE3QzAwMTQwNjVDIC8qIE5hdmlnYXRp
b25UaW1pbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCThBODQ0RDA1MTFEM0MxOEUwMDE0MDY1QyAv
KiBQZXJmb3JtYW5jZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTg0RDgyQzExMUQzNDc0ODAwOTcy
OTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQThD
MjI4QTExMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjE4OTksNiArMjE5MTMsOCBAQAogCQkJCUE4QzIyODBFMTFENEE1OTcw
MEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4QTg0NENG
RTExRDNDMTdDMDAxNDA2NUMgLyogTmF2aWdhdGlvblRpbWluZy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4QTg0NEQwNDExRDNDMThFMDAxNDA2NUMgLyogUGVyZm9ybWFuY2UuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTg0RDgyQzIxMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVu
dFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBOEMyMjhBMjExRDU3MjJFMDBENUE3RDMg
LyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDZmMDQ1N2EwMzdmMjE2YmNkNDlk
ZWQ0NDNmOTE5YzA3ODNlOGE2NGUuLjBhYThmNTI2NTgxNmQyNmNiNzIwNDI5ZDZlMWQ1MWU4NWQ2
Y2I5NDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjEs
NyArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xs
ZXIuaCIKIAotI2luY2x1ZGUgIkRvY3VtZW50UGFyc2VyLmgiCisjaW5jbHVkZSAiU2NyaXB0YWJs
ZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTIzOCwxMSArMjM4LDEyIEBAIEpTRE9NV2lu
ZG93U2hlbGwqIFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoRE9NV3JhcHBlcldvcmxkKiB3
b3JsZCkKIGludCBTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJMaW5lTnVtYmVyKCkgY29u
c3QKIHsKICAgICAvLyBKU0MgZXhwZWN0cyAxLWJhc2VkIGxpbmUgbnVtYmVycywgc28gd2UgbXVz
dCBhZGQgb25lIGhlcmUgdG8gZ2V0IGl0IHJpZ2h0LgotICAgIGlmIChEb2N1bWVudFBhcnNlciog
cGFyc2VyID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCkpCisgICAgU2NyaXB0YWJsZURv
Y3VtZW50UGFyc2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIoKTsKKyAgICBpZiAocGFyc2VyKQogICAgICAgICByZXR1cm4gcGFyc2VyLT5s
aW5lTnVtYmVyKCkgKyAxOwogICAgIHJldHVybiAwOwogfQotICAgIAorCiBib29sIFNjcmlwdENv
bnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZShET01XcmFwcGVyV29ybGQqIHdvcmxkKSBj
b25zdAogewogICAgIGlmIChtX2FsbG93UG9wdXBzRnJvbVBsdWdpbiB8fCBpc0phdmFTY3JpcHRB
bmNob3JOYXZpZ2F0aW9uKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0
LmNwcCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDQwYmIwZGVjYzExNDhh
ZTFjNmM2MzUwNzRhZTYzMTJjMmFjZDljNzAuLjIyN2QzN2NiYjY4MzQwODA5ZGIzZjNlYmJhYmIw
MDU2N2UxMGU4ODUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisr
KyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0yMDcsNyArMjA3LDggQEAgdm9p
ZCBDU1NTdHlsZVNoZWV0OjpjaGVja0xvYWRlZCgpCiAgICAgaWYgKHBhcmVudCgpKQogICAgICAg
ICBwYXJlbnQoKS0+Y2hlY2tMb2FkZWQoKTsKIAotICAgIC8vIEF2b2lkIHx0aGlzfCBiZWluZyBk
ZWxldGVkIGJ5IHNjcmlwdHMgdGhhdCBydW4gdmlhIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6
ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKS4KKyAgICAvLyBBdm9pZCB8dGhp
c3wgYmVpbmcgZGVsZXRlZCBieSBzY3JpcHRzIHRoYXQgcnVuIHZpYQorICAgIC8vIFNjcmlwdGFi
bGVEb2N1bWVudFBhcnNlcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKS4K
ICAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzY2MjIzMDA+LgogICAgIFJlZlB0cjxDU1NTdHls
ZVNoZWV0PiBwcm90ZWN0b3IodGhpcyk7CiAgICAgbV9sb2FkQ29tcGxldGVkID0gb3duZXJOb2Rl
KCkgPyBvd25lck5vZGUoKS0+c2hlZXRMb2FkZWQoKSA6IHRydWU7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUvZG9tL0RlY29k
ZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxY2M4NDc1NjFmNmE1ZjZlMThl
MDAzZWU4ZWQ3NmQ4N2QwYzVhYTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9EZWNv
ZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oIgorCisjaW5jbHVkZSAiRG9jdW1l
bnRXcml0ZXIuaCIKKyNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJUZXh0
UmVzb3VyY2VEZWNvZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGVjb2RlZERhdGFE
b2N1bWVudFBhcnNlcjo6RGVjb2RlZERhdGFEb2N1bWVudFBhcnNlcihEb2N1bWVudCogZG9jdW1l
bnQsIGJvb2wgdmlld1NvdXJjZU1vZGUpCisgICAgOiBEb2N1bWVudFBhcnNlcihkb2N1bWVudCkK
KyAgICAsIG1faW5WaWV3U291cmNlTW9kZSh2aWV3U291cmNlTW9kZSkKK3sKK30KKwordm9pZCBE
ZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciogd3Jp
dGVyICwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgYm9vbCBzaG91bGRGbHVzaCkKK3sK
KyAgICBpZiAoIWxlbmd0aCAmJiAhc2hvdWxkRmx1c2gpCisgICAgICAgIHJldHVybjsKKworICAg
IFRleHRSZXNvdXJjZURlY29kZXIqIGRlY29kZXIgPSB3cml0ZXItPmNyZWF0ZURlY29kZXJJZk5l
ZWRlZCgpOworICAgIFN0cmluZyBkZWNvZGVkID0gZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbmd0
aCk7CisgICAgaWYgKHNob3VsZEZsdXNoKQorICAgICAgICBkZWNvZGVkICs9IGRlY29kZXItPmZs
dXNoKCk7CisgICAgaWYgKGRlY29kZWQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICB3cml0ZXItPnJlcG9ydERhdGFSZWNpZXZlZCgpOworCisgICAgYXBwZW5kKGRlY29kZWQpOwor
fQorCit9OworCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFy
c2VyLmggYi9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjQ1YmI2OGFiMzY2YTUyNDdmMTc2ODg3MDc5NTVmZTg3YWM0NWQxZAotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaApAQCAtMCwwICsx
LDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworIAor
I2lmbmRlZiBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyX2gKKyNkZWZpbmUgRGVjb2RlZERhdGFE
b2N1bWVudFBhcnNlcl9oCisKKyNpbmNsdWRlICJEb2N1bWVudFBhcnNlci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMg
RG9jdW1lbnRQYXJzZXIgeworcHVibGljOgorICAgIC8vIE9ubHkgdXNlZCBieSB0aGUgWE1MRG9j
dW1lbnRQYXJzZXIgdG8gY29tbXVuaWNhdGUgYmFjayB0bworICAgIC8vIFhNTEh0dHBSZXF1ZXN0
IGlmIHRoZSByZXNwb25zZVhNTCB3YXMgd2VsbCBmb3JtZWQuCisgICAgdmlydHVhbCBib29sIHdl
bGxGb3JtZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICBib29sIGluVmlld1NvdXJj
ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2luVmlld1NvdXJjZU1vZGU7IH0KKyAgICB2b2lkIHNl
dEluVmlld1NvdXJjZU1vZGUoYm9vbCBtb2RlKSB7IG1faW5WaWV3U291cmNlTW9kZSA9IG1vZGU7
IH0KKworcHJvdGVjdGVkOgorICAgIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQq
LCBib29sIHZpZXdTb3VyY2VNb2RlID0gZmFsc2UpOworCitwcml2YXRlOgorICAgIC8vIGFwcGVu
ZCBpcyB1c2VkIGJ5IERvY3VtZW50V3JpdGVyOjpyZXBsYWNlRG9jdW1lbnQKKyAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpID0gMDsKKworICAgIC8vIGFwcGVu
ZEJ5dGVzIGlzIHVzZWQgYnkgRG9jdW1lbnRXcml0ZXIgKHRoZSBsb2FkZXIpCisgICAgdmlydHVh
bCB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGlu
dCBsZW5ndGgsIGJvb2wgZmx1c2gpOworCisgICAgYm9vbCBtX2luVmlld1NvdXJjZU1vZGU7Cit9
OworCit9CisKKyNlbmRpZiAvLyBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyX2gKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCA1N2Y1NWRlOWIzZDZkMTY1MWFkNDk5OWYxYzIyODRjNTc0NDU5Y2UzLi45ZTkxNGY5ZTQy
ZDQ2YTg0OTIwMmFiY2Y1MGQwZTYyYzkzZWM2MjZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xNzIxLDYgKzE3
MjEsMTEgQEAgRG9jdW1lbnRQYXJzZXIqIERvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogICAgIHJl
dHVybiBuZXcgWE1MRG9jdW1lbnRQYXJzZXIodGhpcywgdmlldygpKTsKIH0KIAorU2NyaXB0YWJs
ZURvY3VtZW50UGFyc2VyKiBEb2N1bWVudDo6c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gcGFyc2VyKCkgPyBwYXJzZXIoKS0+YXNTY3JpcHRhYmxlRG9jdW1l
bnRQYXJzZXIoKSA6IDA7Cit9CisKIHZvaWQgRG9jdW1lbnQ6Om9wZW4oRG9jdW1lbnQqIG93bmVy
RG9jdW1lbnQpCiB7CiAgICAgaWYgKG93bmVyRG9jdW1lbnQpIHsKQEAgLTE3MzAsOSArMTczNSwx
MCBAQCB2b2lkIERvY3VtZW50OjpvcGVuKERvY3VtZW50KiBvd25lckRvY3VtZW50KQogICAgIH0K
IAogICAgIGlmIChtX2ZyYW1lKSB7Ci0gICAgICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIoKS0+aXNM
b2FkaW5nTWFpblJlc291cmNlKCkgfHwgKHBhcnNlcigpICYmIHBhcnNlcigpLT5pc0V4ZWN1dGlu
Z1NjcmlwdCgpKSkKKyAgICAgICAgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBz
Y3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKTsKKyAgICAgICAgaWYgKG1fZnJhbWUtPmxvYWRlcigp
LT5pc0xvYWRpbmdNYWluUmVzb3VyY2UoKSB8fCAocGFyc2VyICYmIHBhcnNlci0+aXNFeGVjdXRp
bmdTY3JpcHQoKSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICAgICAgaWYgKG1f
ZnJhbWUtPmxvYWRlcigpLT5zdGF0ZSgpID09IEZyYW1lU3RhdGVQcm92aXNpb25hbCkKICAgICAg
ICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVycygpOwogICAgIH0KQEAgLTE3
NjksOCArMTc3NSw5IEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxpY2l0T3BlbigpCiAgICAgbV9wYXJz
ZXIgPSBjcmVhdGVQYXJzZXIoKTsKICAgICBzZXRQYXJzaW5nKHRydWUpOwogCi0gICAgaWYgKG1f
ZnJhbWUpCi0gICAgICAgIG1fcGFyc2VyLT5zZXRYU1NBdWRpdG9yKG1fZnJhbWUtPnNjcmlwdCgp
LT54c3NBdWRpdG9yKCkpOworICAgIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciogcGFyc2VyID0g
c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCk7CisgICAgaWYgKG1fZnJhbWUgJiYgcGFyc2VyKQor
ICAgICAgICBwYXJzZXItPnNldFhTU0F1ZGl0b3IobV9mcmFtZS0+c2NyaXB0KCktPnhzc0F1ZGl0
b3IoKSk7CiAKICAgICAvLyBJZiB3ZSByZWxvYWQsIHRoZSBhbmltYXRpb24gY29udHJvbGxlciBz
dGlja3MgYXJvdW5kIGFuZCBoYXMKICAgICAvLyBhIHN0YWxlIGFuaW1hdGlvbiB0aW1lLiBXZSBu
ZWVkIHRvIHVwZGF0ZSBpdCBoZXJlLgpAQCAtMTg1NSw3ICsxODYyLDggQEAgdm9pZCBEb2N1bWVu
dDo6aW1wbGljaXRDbG9zZSgpCiAKICAgICBtX3Byb2Nlc3NpbmdMb2FkRXZlbnQgPSB0cnVlOwog
Ci0gICAgbV93ZWxsRm9ybWVkID0gbV9wYXJzZXIgJiYgbV9wYXJzZXItPndlbGxGb3JtZWQoKTsK
KyAgICBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IHNjcmlwdGFibGVEb2N1bWVu
dFBhcnNlcigpOworICAgIG1fd2VsbEZvcm1lZCA9IHBhcnNlciAmJiBwYXJzZXItPndlbGxGb3Jt
ZWQoKTsKIAogICAgIC8vIFdlIGhhdmUgdG8gY2xlYXIgdGhlIHBhcnNlciwgaW4gY2FzZSBzb21l
b25lIGRvY3VtZW50LndyaXRlKClzIGZyb20gdGhlCiAgICAgLy8gb25Mb2FkIGV2ZW50IGhhbmRs
ZXIsIGFzIGluIFJhZGFyIDMyMDY1MjQuCkBAIC0yNjA3LDkgKzI2MTUsMTAgQEAgdm9pZCBEb2N1
bWVudDo6cmVtb3ZlUGVuZGluZ1NoZWV0KCkKICNlbmRpZgogCiAgICAgdXBkYXRlU3R5bGVTZWxl
Y3RvcigpOwotICAgIAotICAgIGlmICghbV9wZW5kaW5nU3R5bGVzaGVldHMgJiYgbV9wYXJzZXIp
Ci0gICAgICAgIG1fcGFyc2VyLT5leGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygp
OworCisgICAgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBzY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIoKTsKKyAgICBpZiAoIW1fcGVuZGluZ1N0eWxlc2hlZXRzICYmIHBhcnNlcikK
KyAgICAgICAgcGFyc2VyLT5leGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpOwog
CiAgICAgaWYgKCFtX3BlbmRpbmdTdHlsZXNoZWV0cyAmJiBtX2dvdG9BbmNob3JOZWVkZWRBZnRl
clN0eWxlc2hlZXRzTG9hZCAmJiB2aWV3KCkpCiAgICAgICAgIHZpZXcoKS0+c2Nyb2xsVG9GcmFn
bWVudChtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggODkwZDljZWQzOGQ1NWRh
NDllOTllMTkyMzcxOThhYTM4OTczZDk0Ni4uNGM1MDcxMzJkM2U1ODJkNWFhYzI0NjQ0ZDgxNjYy
ZmMwZDVmZmQzMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMDAsNiArMTAwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyOwogICAgIGNsYXNzIFJlbmRlckFy
ZW5hOwogICAgIGNsYXNzIFJlbmRlclZpZXc7CisgICAgY2xhc3MgU2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyOwogICAgIGNsYXNzIFNjcmlwdEVsZW1lbnREYXRhOwogICAgIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOwogICAgIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKQEAgLTU0OCw3ICs1NDks
OCBAQCBwdWJsaWM6CiAgICAgQ1NTU3R5bGVTaGVldCogbWFwcGVkRWxlbWVudFNoZWV0KCk7CiAg
ICAgCiAgICAgdmlydHVhbCBEb2N1bWVudFBhcnNlciogY3JlYXRlUGFyc2VyKCk7Ci0gICAgRG9j
dW1lbnRQYXJzZXIqIHBhcnNlcigpIHsgcmV0dXJuIG1fcGFyc2VyLmdldCgpOyB9CisgICAgRG9j
dW1lbnRQYXJzZXIqIHBhcnNlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyLmdldCgpOyB9Cisg
ICAgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKSBj
b25zdDsKICAgICAKICAgICBib29sIHByaW50aW5nKCkgY29uc3QgeyByZXR1cm4gbV9wcmludGlu
ZzsgfQogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwKSB7IG1fcHJpbnRpbmcgPSBwOyB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5jcHAgYi9XZWJDb3JlL2RvbS9E
b2N1bWVudFBhcnNlci5jcHAKaW5kZXggNTI3NzQxNmEyZTVkYjg3NTUyZWEyOGIyNjBjODViNGIx
ZGE1MGU3MC4uYjgwOTI3YzUzNGZiNjBmMDBkZjYzMmYwNmI3YzAwNDdkOTUwNDIyMyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50UGFyc2VyLmNwcApAQCAtMjYsMzkgKzI2LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnRQYXJzZXIuaCIKIAotI2luY2x1ZGUgIkRvY3VtZW50V3JpdGVy
LmgiCi0jaW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCi0jaW5jbHVkZSAiVGV4dFJlc291cmNl
RGVjb2Rlci5oIgotCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1Eb2N1bWVudFBhcnNlcjo6RG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBib29sIHZpZXdTb3VyY2VNb2RlKQorRG9jdW1lbnRQYXJzZXI6OkRvY3VtZW50UGFyc2Vy
KERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IG1fcGFyc2VyU3RvcHBlZChmYWxzZSkKLSAgICAs
IG1faW5WaWV3U291cmNlTW9kZSh2aWV3U291cmNlTW9kZSkKICAgICAsIG1fZG9jdW1lbnQoZG9j
dW1lbnQpCi0gICAgLCBtX1hTU0F1ZGl0b3IoMCkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwog
fQogCi12b2lkIERvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciogd3Jp
dGVyICwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgYm9vbCBzaG91bGRGbHVzaCkKLXsK
LSAgICBpZiAoIWxlbmd0aCAmJiAhc2hvdWxkRmx1c2gpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFRleHRSZXNvdXJjZURlY29kZXIqIGRlY29kZXIgPSB3cml0ZXItPmNyZWF0ZURlY29kZXJJZk5l
ZWRlZCgpOwotICAgIFN0cmluZyBkZWNvZGVkID0gZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbmd0
aCk7Ci0gICAgaWYgKHNob3VsZEZsdXNoKQotICAgICAgICBkZWNvZGVkICs9IGRlY29kZXItPmZs
dXNoKCk7Ci0gICAgaWYgKGRlY29kZWQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICB3cml0ZXItPnJlcG9ydERhdGFSZWNpZXZlZCgpOwotCi0gICAgYXBwZW5kKGRlY29kZWQpOwot
fQotCiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oIGIvV2Vi
Q29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaAppbmRleCA0Nzg5YWJhZGY5YmM3NzY0ZjM0NGMxZTNk
YWM4NjhlODcwYjFjOTc1Li43ZTQ3YTg3MTVhMTQzNzBkZGEwZTYyNzIyZTQ4ZWM1MWQ2YTZiMjc2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oCisrKyBiL1dlYkNvcmUv
ZG9tL0RvY3VtZW50UGFyc2VyLmgKQEAgLTMxLDE4ICszMSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50V3JpdGVyOwogY2xhc3MgTGVnYWN5
SFRNTFRyZWVCdWlsZGVyOwotY2xhc3MgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOwogY2xhc3Mg
U2VnbWVudGVkU3RyaW5nOwotY2xhc3MgWFNTQXVkaXRvcjsKK2NsYXNzIFNjcmlwdGFibGVEb2N1
bWVudFBhcnNlcjsKIAogY2xhc3MgRG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgTm9uY29weWFibGUg
ewogcHVibGljOgogICAgIHZpcnR1YWwgfkRvY3VtZW50UGFyc2VyKCkgeyB9CiAKKyAgICB2aXJ0
dWFsIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciogYXNTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIo
KSB7IHJldHVybiAwOyB9CisKICAgICAvLyBpbnNlcnQgaXMgdXNlZCBieSBkb2N1bWVudC53cml0
ZQogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJikgPSAwOwor
CiAgICAgLy8gYXBwZW5kQnl0ZXMgaXMgdXNlZCBieSBEb2N1bWVudFdyaXRlciAodGhlIGxvYWRl
cikKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIqLCBjb25zdCBj
aGFyKiBieXRlcywgaW50IGxlbmd0aCwgYm9vbCBmbHVzaCk7CisgICAgdmlydHVhbCB2b2lkIGFw
cGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgs
IGJvb2wgZmx1c2gpID0gMDsKIAogICAgIC8vIEZJWE1FOiBhcHBlbmQoKSBzaG91bGQgYmUgcHJp
dmF0ZSwgYnV0IERvY3VtZW50V3JpdGVyOjpyZXBsYWNlRG9jdW1lbnQKICAgICAvLyB1c2VzIGl0
IGZvciBub3cuCkBAIC01MSw0OCArNTMsMjggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2goKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGZpbmlzaFdhc0NhbGxlZCgpID0gMDsKIAot
ICAgIHZpcnR1YWwgYm9vbCBpc1dhaXRpbmdGb3JTY3JpcHRzKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBpc0V4ZWN1dGluZ1NjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0K
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcFBhcnNpbmcoKSB7IG1fcGFyc2VyU3RvcHBlZCA9IHRydWU7
IH0KICAgICAvLyBGSVhNRTogcHJvY2Vzc2luZ0RhdGEoKSBpcyBvbmx5IHVzZWQgYnkgRG9jdW1l
bnRMb2FkZXI6OmlzTG9hZGluZ0luQVBJU2Vuc2UKICAgICAvLyBhbmQgaXMgdmVyeSB1bmNsZWFy
IGFzIHRvIHdoYXQgaXQgYWN0dWFsbHkgbWVhbnMuICBPbmx5IExlZ2FjeUhUTUxEb2N1bWVudFBh
cnNlcgogICAgIC8vIGFjdHVhbGx5IGltcGxlbWVudHMgaXQuCiAgICAgdmlydHVhbCBib29sIHBy
b2Nlc3NpbmdEYXRhKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgYm9v
bCB3ZWxsRm9ybWVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgdmlydHVhbCBpbnQg
bGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIC0xOyB9Ci0gICAgdmlydHVhbCBpbnQgY29sdW1u
TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gLTE7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRl
U2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpIHt9Ci0KKyAgICAvLyBGSVhNRTogRXhwb3Nl
ZCBmb3IgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVtb3ZlZEZyb21UcmVlLiAgSFRNTCBET00K
KyAgICAvLyBjb2RlIHNob3VsZCBub3QgbmVlZCB0byByZWFjaCBpbnRvIGltcGxlbWVudGF0aW9u
IGRldGFpbHMgb2YgdGhlIHBhcnNlci4KICAgICB2aXJ0dWFsIExlZ2FjeUhUTUxUcmVlQnVpbGRl
ciogaHRtbFRyZWVCdWlsZGVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgTGVn
YWN5SFRNTERvY3VtZW50UGFyc2VyKiBhc0hUTUxEb2N1bWVudFBhcnNlcigpIHsgcmV0dXJuIDA7
IH0KLQotICAgIC8vIEZJWE1FOiB2aWV3IHNvdXJjZSBtb2RlIGlzIG9ubHkgdXNlZCBieSB0aGUg
SFRNTCBhbmQgVGV4dAotICAgIC8vIERvY3VtZW50UGFyc2VycyBhbmQgbWF5IG5vdCBiZWxvbmcg
b24gdGhlIGJhc2UtY2xhc3MuCi0gICAgYm9vbCBpblZpZXdTb3VyY2VNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pblZpZXdTb3VyY2VNb2RlOyB9Ci0gICAgdm9pZCBzZXRJblZpZXdTb3VyY2VNb2Rl
KGJvb2wgbW9kZSkgeyBtX2luVmlld1NvdXJjZU1vZGUgPSBtb2RlOyB9CiAKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50OyB9CiAKLSAgICBYU1NBdWRp
dG9yKiB4c3NBdWRpdG9yKCkgY29uc3QgeyByZXR1cm4gbV9YU1NBdWRpdG9yOyB9Ci0gICAgdm9p
ZCBzZXRYU1NBdWRpdG9yKFhTU0F1ZGl0b3IqIGF1ZGl0b3IpIHsgbV9YU1NBdWRpdG9yID0gYXVk
aXRvcjsgfQotCiBwcm90ZWN0ZWQ6Ci0gICAgRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqLCBib29s
IHZpZXdTb3VyY2VNb2RlID0gZmFsc2UpOworICAgIERvY3VtZW50UGFyc2VyKERvY3VtZW50Kik7
CiAKICAgICAvLyBUaGUgcGFyc2VyIGhhcyBidWZmZXJzLCBzbyBwYXJzaW5nIG1heSBjb250aW51
ZSBldmVuIGFmdGVyCiAgICAgLy8gaXQgc3RvcHMgcmVjZWl2aW5nIGRhdGEuIFdlIHVzZSBtX3Bh
cnNlclN0b3BwZWQgdG8gc3RvcCB0aGUgcGFyc2VyCiAgICAgLy8gZXZlbiB3aGVuIGl0IGhhcyBi
dWZmZXJlZCBkYXRhLgogICAgIGJvb2wgbV9wYXJzZXJTdG9wcGVkOwotICAgIGJvb2wgbV9pblZp
ZXdTb3VyY2VNb2RlOwogCiAgICAgLy8gRXZlcnkgRG9jdW1lbnRQYXJzZXIgbmVlZHMgYSBwb2lu
dGVyIGJhY2sgdG8gdGhlIGRvY3VtZW50LgogICAgIERvY3VtZW50KiBtX2RvY3VtZW50OwotICAg
IC8vIFRoZSBYU1NBdWRpdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRvY3VtZW50IHBhcnNlci4K
LSAgICBYU1NBdWRpdG9yKiBtX1hTU0F1ZGl0b3I7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCBiL1dl
YkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oCmluZGV4IDlmYzkwZjUxMWRkODBjZDcz
NTQwOWQwMjcwZGI0N2VkNjhhMWZmMmIuLjJlYjNkMGFkNWZiNjhlZGI0YjM1YTRmZDhhMGViNzk3
ODNmYTJiYjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5o
CisrKyBiL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oCkBAIC02Miw4ICs2Miw2
IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGRlbGV0ZWQgYWZ0ZXIgZmluaXNoKCkuCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNXYWl0aW5nRm9yU2Ny
aXB0cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9OwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUvZG9tL1Njcmlw
dGFibGVEb2N1bWVudFBhcnNlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNiMzQxN2JlZTMzZTM0MTRmMGQ1
OWU5NmY5ODU2MmI3Y2U3YjY0MQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvZG9tL1Njcmlw
dGFibGVEb2N1bWVudFBhcnNlci5jcHAKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1NjcmlwdGFibGVEb2N1bWVudFBhcnNlcjo6U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKERv
Y3VtZW50KiBkb2N1bWVudCwgYm9vbCB2aWV3U291cmNlTW9kZSkKKyAgICA6IERlY29kZWREYXRh
RG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQsIHZpZXdTb3VyY2VNb2RlKQorICAgICwgbV94c3NBdWRp
dG9yKDApCit7Cit9CisKK307CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY1ZjJlNDJjMTdhYzkxYzQ2OTUzNWM5Mzc1MTM3OTNjMTNhMDEyZTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaApAQCAt
MCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworIAorI2lmbmRlZiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXJfaAorI2RlZmluZSBTY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXJfaAorCisjaW5jbHVkZSAiRGVjb2RlZERhdGFEb2N1bWVudFBhcnNl
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNlZ21lbnRlZFN0cmluZzsKK2Ns
YXNzIFhTU0F1ZGl0b3I7CisKK2NsYXNzIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciA6IHB1Ymxp
YyBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyIHsKK3B1YmxpYzoKKyAgICAvLyBPbmx5IHVzZWQg
YnkgRG9jdW1lbnQ6Om9wZW4gZm9yIGRlY2lkaW5nIGlmIGl0cyBzYWZlIHRvIGFjdCBvbiBhCisg
ICAgLy8gSmF2YVNjcmlwdCBkb2N1bWVudC5vcGVuKCkgY2FsbCByaWdodCBub3csIG9yIGl0IHNo
b3VsZCBiZSBpZ25vcmVkLgorICAgIHZpcnR1YWwgYm9vbCBpc0V4ZWN1dGluZ1NjcmlwdCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICAvLyBGSVhNRTogT25seSB0aGUgSFRNTERvY3Vt
ZW50UGFyc2VyIGV2ZXIgYmxvY2tzIHNjcmlwdCBleGVjdXRpb24gb24KKyAgICAvLyBzdHlsZXNo
ZWV0IGxvYWQsIHdoaWNoIGlzIGxpa2VseSBhIGJ1ZyBpbiB0aGUgWE1MRG9jdW1lbnRQYXJzZXIu
CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkg
eyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0ID0gMDsK
KworICAgIC8vIFRoZXNlIGFyZSB1c2VkIHRvIGV4cG9zZSB0aGUgY3VycmVudCBsaW5lL2NvbHVt
biB0byB0aGUgc2NyaXB0aW5nIHN5c3RlbS4KKyAgICB2aXJ0dWFsIGludCBsaW5lTnVtYmVyKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IGNvbHVtbk51bWJlcigpIGNvbnN0ID0gMDsKKwor
ICAgIFhTU0F1ZGl0b3IqIHhzc0F1ZGl0b3IoKSBjb25zdCB7IHJldHVybiBtX3hzc0F1ZGl0b3I7
IH0KKyAgICB2b2lkIHNldFhTU0F1ZGl0b3IoWFNTQXVkaXRvciogYXVkaXRvcikgeyBtX3hzc0F1
ZGl0b3IgPSBhdWRpdG9yOyB9CisKKyAgICAvLyBFeHBvc2VkIGZvciBMZWdhY3lIVE1MVHJlZUJ1
aWxkZXI6OnJlcG9ydEVycm9yVG9Db25zb2xlCisgICAgdmlydHVhbCBib29sIHByb2Nlc3NpbmdD
b250ZW50V3JpdHRlbkJ5U2NyaXB0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworcHJvdGVj
dGVkOgorICAgIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihEb2N1bWVudCosIGJvb2wgdmlld1Nv
dXJjZU1vZGUgPSBmYWxzZSk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBTY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIqIGFzU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgeyByZXR1cm4gdGhpczsg
fQorCisgICAgLy8gVGhlIFhTU0F1ZGl0b3IgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZG9jdW1lbnQg
cGFyc2VyLgorICAgIFhTU0F1ZGl0b3IqIG1feHNzQXVkaXRvcjsKK307CisKK30KKworI2VuZGlm
IC8vIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9W
aWV3cG9ydEFyZ3VtZW50cy5jcHAgYi9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAK
aW5kZXggMjNkMDI5N2Q5ODc3OTQwMTE2ZjhjYTY1ZTM4ZjVmY2QyNTk4NzkxZC4uYzUwNzAzMjUy
MTYwNzdjYjczZmMzYTE1ZDViOWU0ZjhlM2JkZDcxMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
Vmlld3BvcnRBcmd1bWVudHMuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRz
LmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRQYXJz
ZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0xMDMsMTAgKzEwMywyMCBAQCBzdGF0aWMgTWVzc2FnZUxldmVsIHZp
ZXdwb3J0RXJyb3JNZXNzYWdlTGV2ZWwoVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlKQogICAg
IHJldHVybiBlcnJvckNvZGUgPT0gVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudEVycm9yIHx8
IGVycm9yQ29kZSA9PSBNYXhpbXVtU2NhbGVUb29MYXJnZUVycm9yID8gRXJyb3JNZXNzYWdlTGV2
ZWwgOiBUaXBNZXNzYWdlTGV2ZWw7CiB9CiAKLXZvaWQgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKERv
Y3VtZW50KiBkb2N1bWVudCwgVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50KQorLy8gRklYTUU6IFdoeSBpcyB0aGlzIGRpZmZlcmVudCBmcm9tIFNW
R0RvY3VtZW50RXh0ZW5zaW9ucyBwYXJzZXJMaW5lTnVtYmVyPworLy8gRklYTUU6IENhbGxlcnMg
c2hvdWxkIHByb2JhYmx5IHVzZSBTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJMaW5lTnVt
YmVyKCkKK3N0YXRpYyBpbnQgcGFyc2VyTGluZU51bWJlcihEb2N1bWVudCogZG9jdW1lbnQpCiB7
Ci0gICAgRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IGRvY3VtZW50LT5wYXJzZXIoKTsKKyAgICBp
ZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gMDsKKyAgICBTY3JpcHRhYmxlRG9jdW1lbnRQ
YXJzZXIqIHBhcnNlciA9IGRvY3VtZW50LT5zY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKTsKKyAg
ICBpZiAoIXBhcnNlcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHBhcnNlci0+bGlu
ZU51bWJlcigpICsgMTsKK30KIAordm9pZCByZXBvcnRWaWV3cG9ydFdhcm5pbmcoRG9jdW1lbnQq
IGRvY3VtZW50LCBWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnQpCit7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE0LDcgKzEyNCw3IEBAIHZvaWQgcmVw
b3J0Vmlld3BvcnRXYXJuaW5nKERvY3VtZW50KiBkb2N1bWVudCwgVmlld3BvcnRFcnJvckNvZGUg
ZXJyb3JDb2RlLCBjb25zCiAgICAgU3RyaW5nIG1lc3NhZ2UgPSB2aWV3cG9ydEVycm9yTWVzc2Fn
ZVRlbXBsYXRlKGVycm9yQ29kZSk7CiAgICAgbWVzc2FnZS5yZXBsYWNlKCIlcmVwbGFjZW1lbnQi
LCByZXBsYWNlbWVudCk7CiAKLSAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRk
TWVzc2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIHZpZXdwb3J0RXJyb3JN
ZXNzYWdlTGV2ZWwoZXJyb3JDb2RlKSwgbWVzc2FnZSwgcGFyc2VyID8gcGFyc2VyLT5saW5lTnVt
YmVyKCkgKyAxIDogMCwgZG9jdW1lbnQtPnVybCgpLnN0cmluZygpKTsKKyAgICBmcmFtZS0+ZG9t
V2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVz
c2FnZVR5cGUsIHZpZXdwb3J0RXJyb3JNZXNzYWdlTGV2ZWwoZXJyb3JDb2RlKSwgbWVzc2FnZSwg
cGFyc2VyTGluZU51bWJlcihkb2N1bWVudCksIGRvY3VtZW50LT51cmwoKS5zdHJpbmcoKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1hNTERv
Y3VtZW50UGFyc2VyLmggYi9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IDlm
MzY3OTFiYzYwNTVlYmUyNjk4NGFkN2Q1MDRkNWIwMjI5ZTEwMmEuLjRiODZhOGE4YTdjMzNlNzBj
YTJjOTUzZWY2YjZiMDQ2ZGUxNjg0ZjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1hNTERvY3Vt
ZW50UGFyc2VyLmgKKysrIGIvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuaApAQCAtMjcs
MTAgKzI3LDEwIEBACiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiRnJhZ21lbnRTY3JpcHRpbmdQ
ZXJtaXNzaW9uLmgiCisjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5j
bHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgotI2luY2x1
ZGUgIkRvY3VtZW50UGFyc2VyLmgiCi0jaW5jbHVkZSAiRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNz
aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAKQEAgLTcwLDcgKzcwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIH07CiAjZW5kaWYK
IAotICAgIGNsYXNzIFhNTERvY3VtZW50UGFyc2VyIDogcHVibGljIERvY3VtZW50UGFyc2VyLCBw
dWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgeworICAgIGNsYXNzIFhNTERvY3VtZW50UGFyc2Vy
IDogcHVibGljIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciwgcHVibGljIENhY2hlZFJlc291cmNl
Q2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50
KiwgRnJhbWVWaWV3KiA9IDApOwogICAgICAgICBYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZy
YWdtZW50KiwgRWxlbWVudCosIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbik7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvV2ViQ29yZS9k
b20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCA3ODQ2ZjhmN2FmMjhkYjI5ZGQz
NGQ1NzA0MzNkMjYwNDg2ZmYzMWMwLi5jZGM1OGZjNjg5MGZmYTFmMTliYWY0MThmNzFjNjEwMTgz
Yzk5NDJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwCisrKyBiL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTUy
Myw3ICs1MjMsNyBAQCBQYXNzUmVmUHRyPFhNTFBhcnNlckNvbnRleHQ+IFhNTFBhcnNlckNvbnRl
eHQ6OmNyZWF0ZU1lbW9yeVBhcnNlcih4bWxTQVhIYW5kbGVyUAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAogWE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2Vy
KERvY3VtZW50KiBkb2N1bWVudCwgRnJhbWVWaWV3KiBmcmFtZVZpZXcpCi0gICAgOiBEb2N1bWVu
dFBhcnNlcihkb2N1bWVudCkKKyAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihkb2N1bWVu
dCkKICAgICAsIG1fdmlldyhmcmFtZVZpZXcpCiAgICAgLCBtX2NvbnRleHQoMCkKICAgICAsIG1f
cGVuZGluZ0NhbGxiYWNrcyhuZXcgUGVuZGluZ0NhbGxiYWNrcykKQEAgLTU1MCw3ICs1NTAsNyBA
QCBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50
LCBGcmFtZVZpZXcqIGZyYW1lVmlldykKIH0KIAogWE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3Vt
ZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBwYXJlbnRFbGVt
ZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKLSAg
ICA6IERvY3VtZW50UGFyc2VyKGZyYWdtZW50LT5kb2N1bWVudCgpKQorICAgIDogU2NyaXB0YWJs
ZURvY3VtZW50UGFyc2VyKGZyYWdtZW50LT5kb2N1bWVudCgpKQogICAgICwgbV92aWV3KDApCiAg
ICAgLCBtX2NvbnRleHQoMCkKICAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhuZXcgUGVuZGluZ0Nh
bGxiYWNrcykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
IGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggZmUxMTAwNDZiOGUw
MThlM2JiOGY5NjQ5YjllYmM3YThkM2MwNTgzOS4uZmM2ZDdkZmNmZWE0NjVkOWQ5MzYwZWQ0OThk
NTBkZDA0NDIzOGFiOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTY2LDcg
KzY2LDcgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlCiAKIEhUTUxEb2N1bWVudFBhcnNlcjo6
SFRNTERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgcmVwb3J0RXJy
b3JzKQotICAgIDogRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCisgICAgOiBTY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgLCBtX3Rva2VuaXplcihuZXcgSFRNTFRva2VuaXpl
cikKICAgICAsIG1fc2NyaXB0UnVubmVyKG5ldyBIVE1MU2NyaXB0UnVubmVyKGRvY3VtZW50LCB0
aGlzKSkKICAgICAsIG1fdHJlZUJ1aWxkZXIobmV3IEhUTUxUcmVlQnVpbGRlcihtX3Rva2VuaXpl
ci5nZXQoKSwgZG9jdW1lbnQsIHJlcG9ydEVycm9ycykpCkBAIC04MCw3ICs4MCw3IEBAIEhUTUxE
b2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCogZG9jdW1lbnQs
IGJvb2wgcmVwb3J0RXJyb3JzCiAvLyBGSVhNRTogTWVtYmVyIHZhcmlhYmxlcyBzaG91bGQgYmUg
Z3JvdXBlZCBpbnRvIHNlbGYtaW5pdGlhbGl6aW5nIHN0cnVjdHMgdG8KIC8vIG1pbmltaXplIGNv
ZGUgZHVwbGljYXRpb24gYmV0d2VlbiB0aGVzZSBjb25zdHJ1Y3RvcnMuCiBIVE1MRG9jdW1lbnRQ
YXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRnJh
Z21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCi0gICAgOiBEb2N1
bWVudFBhcnNlcihmcmFnbWVudC0+ZG9jdW1lbnQoKSkKKyAgICA6IFNjcmlwdGFibGVEb2N1bWVu
dFBhcnNlcihmcmFnbWVudC0+ZG9jdW1lbnQoKSkKICAgICAsIG1fdG9rZW5pemVyKG5ldyBIVE1M
VG9rZW5pemVyKQogICAgICwgbV90cmVlQnVpbGRlcihuZXcgSFRNTFRyZWVCdWlsZGVyKG1fdG9r
ZW5pemVyLmdldCgpLCBmcmFnbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbikpCiAgICAgLCBtX2Vu
ZFdhc0RlbGF5ZWQoZmFsc2UpCkBAIC0zNTcsOSArMzU3LDkgQEAgdm9pZCBIVE1MRG9jdW1lbnRQ
YXJzZXI6OnN0b3BXYXRjaGluZ0ZvckxvYWQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFNjcmlwdCkK
IAogYm9vbCBIVE1MRG9jdW1lbnRQYXJzZXI6OnNob3VsZExvYWRFeHRlcm5hbFNjcmlwdEZyb21T
cmMoY29uc3QgQXRvbWljU3RyaW5nJiBzcmNWYWx1ZSkKIHsKLSAgICBpZiAoIW1fWFNTQXVkaXRv
cikKKyAgICBpZiAoIXhzc0F1ZGl0b3IoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0
dXJuIG1fWFNTQXVkaXRvci0+Y2FuTG9hZEV4dGVybmFsU2NyaXB0RnJvbVNyYyhzcmNWYWx1ZSk7
CisgICAgcmV0dXJuIHhzc0F1ZGl0b3IoKS0+Y2FuTG9hZEV4dGVybmFsU2NyaXB0RnJvbVNyYyhz
cmNWYWx1ZSk7CiB9CiAKIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTERvY3VtZW50UGFyc2VyLmggYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmgK
aW5kZXggZGI1ZjVjYzgwMDA2NzE1ZmJlNzVlYjVlMDI1YjBhMjdmODg3MWU2OC4uOTUyOGQ5N2Fi
ZDI4YzQwMmY5YTYxYzM2YTNlYjM1Yjc2ZjBlODg3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0hUTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJz
ZXIuaApAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVu
dC5oIgogI2luY2x1ZGUgIkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIgorI2luY2x1ZGUg
IkhUTUxJbnB1dFN0cmVhbS5oIgogI2luY2x1ZGUgIkhUTUxTY3JpcHRSdW5uZXJIb3N0LmgiCiAj
aW5jbHVkZSAiSFRNTFRva2VuLmgiCi0jaW5jbHVkZSAiSFRNTElucHV0U3RyZWFtLmgiCisjaW5j
bHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2VnbWVudGVkU3Ry
aW5nLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBMZWdhY3lI
VE1MVHJlZUJ1aWxkZXI7CiBjbGFzcyBTY3JpcHRDb250cm9sbGVyOwogY2xhc3MgU2NyaXB0U291
cmNlQ29kZTsKIAotY2xhc3MgSFRNTERvY3VtZW50UGFyc2VyIDogIHB1YmxpYyBEb2N1bWVudFBh
cnNlciwgSFRNTFNjcmlwdFJ1bm5lckhvc3QsIENhY2hlZFJlc291cmNlQ2xpZW50IHsKK2NsYXNz
IEhUTUxEb2N1bWVudFBhcnNlciA6ICBwdWJsaWMgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLCBI
VE1MU2NyaXB0UnVubmVySG9zdCwgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgogICAg
IC8vIEZJWE1FOiBUaGVzZSBjb25zdHJ1Y3RvcnMgc2hvdWxkIGJlIG1hZGUgcHJpdmF0ZSBhbmQg
cmVwbGFjZWQgYnkgY3JlYXRlKCkgbWV0aG9kcy4KICAgICBIVE1MRG9jdW1lbnRQYXJzZXIoSFRN
TERvY3VtZW50KiwgYm9vbCByZXBvcnRFcnJvcnMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9XZWJDb3JlL2h0bWwvTGVnYWN5SFRNTERv
Y3VtZW50UGFyc2VyLmNwcAppbmRleCAwMjI5YjA4MzQ1OWNlMzhmYTMxMDM0MWI2OGY5YjA2NDIw
YTNiMmIzLi42YzQyZDA3NDlhMWZkOWIxNzEwNDFiNTE3NDRmNWE5YzE0MzQyNmYxIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBA
IGlubGluZSB2b2lkIFRva2VuOjphZGRBdHRyaWJ1dGUoQXRvbWljU3RyaW5nJiBhdHRyTmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBhdHRyCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIExlZ2Fj
eUhUTUxEb2N1bWVudFBhcnNlcjo6TGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVu
dCogZG9jdW1lbnQsIGJvb2wgcmVwb3J0RXJyb3JzKQotICAgIDogRG9jdW1lbnRQYXJzZXIoZG9j
dW1lbnQpCisgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgLCBt
X2J1ZmZlcigwKQogICAgICwgbV9zY3JpcHRDb2RlKDApCiAgICAgLCBtX3NjcmlwdENvZGVTaXpl
KDApCkBAIC0xNjcsNyArMTY3LDcgQEAgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpMZWdhY3lI
VE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50KiBkb2N1bWVudCwgYm9vbAogfQogCiBMZWdh
Y3lIVE1MRG9jdW1lbnRQYXJzZXI6OkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcihIVE1MVmlld1Nv
dXJjZURvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IERvY3VtZW50UGFyc2VyKGRvY3VtZW50LCB0
cnVlKQorICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGRvY3VtZW50LCB0cnVlKQogICAg
ICwgbV9idWZmZXIoMCkKICAgICAsIG1fc2NyaXB0Q29kZSgwKQogICAgICwgbV9zY3JpcHRDb2Rl
U2l6ZSgwKQpAQCAtMTg2LDcgKzE4Niw3IEBAIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6TGVn
YWN5SFRNTERvY3VtZW50UGFyc2VyKEhUTUxWaWV3U291cmNlRG9jdW1lbnQqIGRvY3VtCiB9CiAK
IExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6TGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKERvY3Vt
ZW50RnJhZ21lbnQqIGZyYWcsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQ
ZXJtaXNzaW9uKQotICAgIDogRG9jdW1lbnRQYXJzZXIoZnJhZy0+ZG9jdW1lbnQoKSkKKyAgICA6
IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihmcmFnLT5kb2N1bWVudCgpKQogICAgICwgbV9idWZm
ZXIoMCkKICAgICAsIG1fc2NyaXB0Q29kZSgwKQogICAgICwgbV9zY3JpcHRDb2RlU2l6ZSgwKQpA
QCAtMTM5MSw3ICsxMzkxLDcgQEAgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpTdGF0ZSBMZWdh
Y3lIVE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlVGFnKFNlZ21lbnRlZFN0cmkKIAogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudFRva2VuLmJlZ2luVGFnICYmIG1fY3VycmVudFRv
a2VuLnRhZ05hbWUgPT0gc2NyaXB0VGFnICYmICFpblZpZXdTb3VyY2VNb2RlKCkgJiYgIW1fdHJl
ZUJ1aWxkZXItPnNraXBNb2RlKCkgJiYgbV9hdHRyTmFtZSA9PSBzcmNBdHRyKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGNvbnRleHQobV9yYXdBdHRyaWJ1dGVCZWZvcmVW
YWx1ZS5kYXRhKCksIG1fcmF3QXR0cmlidXRlQmVmb3JlVmFsdWUuc2l6ZSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobV9YU1NBdWRpdG9yICYmICFtX1hTU0F1ZGl0b3ItPmNh
bkxvYWRFeHRlcm5hbFNjcmlwdEZyb21TcmMoYXR0cmlidXRlVmFsdWUpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh4c3NBdWRpdG9yKCkgJiYgIXhzc0F1ZGl0b3IoKS0+Y2FuTG9h
ZEV4dGVybmFsU2NyaXB0RnJvbVNyYyhhdHRyaWJ1dGVWYWx1ZSkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gYmxhbmtVUkwoKS5zdHJpbmcoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KIApAQCAtMTQyOCw3ICsxNDI4LDcgQEAgTGVnYWN5SFRN
TERvY3VtZW50UGFyc2VyOjpTdGF0ZSBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlVGFn
KFNlZ21lbnRlZFN0cmkKIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudFRv
a2VuLmJlZ2luVGFnICYmIG1fY3VycmVudFRva2VuLnRhZ05hbWUgPT0gc2NyaXB0VGFnICYmICFp
blZpZXdTb3VyY2VNb2RlKCkgJiYgIW1fdHJlZUJ1aWxkZXItPnNraXBNb2RlKCkgJiYgbV9hdHRy
TmFtZSA9PSBzcmNBdHRyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGNv
bnRleHQobV9yYXdBdHRyaWJ1dGVCZWZvcmVWYWx1ZS5kYXRhKCksIG1fcmF3QXR0cmlidXRlQmVm
b3JlVmFsdWUuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9YU1NB
dWRpdG9yICYmICFtX1hTU0F1ZGl0b3ItPmNhbkxvYWRFeHRlcm5hbFNjcmlwdEZyb21TcmMoYXR0
cmlidXRlVmFsdWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4c3NBdWRpdG9y
KCkgJiYgIXhzc0F1ZGl0b3IoKS0+Y2FuTG9hZEV4dGVybmFsU2NyaXB0RnJvbVNyYyhhdHRyaWJ1
dGVWYWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVl
ID0gYmxhbmtVUkwoKS5zdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5oIGIvV2ViQ29y
ZS9odG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IDQ4ZDEyODRiMmViZmJjNzdj
N2NkYTUwNWM1MDEwYTBhNmVhZDNmODEuLjQ5ZTY5NzYwMzExODFkM2JmYWFhMmYyYTQxNDg5YTdi
YWUyZjgxOWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJz
ZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmgKQEAgLTI4
LDkgKzI4LDkgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUg
IkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIgogI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5o
IgorI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNlZ21l
bnRlZFN0cmluZy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRQYXJz
ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoKIC8vIChs
aWtlIGRlYWxpbmcgd2l0aCA8c2NyaXB0PiB0YWdzKS4gIFRoZSBIVE1MIHRva2VuaXplciBiaXRz
IHNob3VsZCBiZSBwdXNoZWQKIC8vIGRvd24gaW50byBhIHNlcGFyYXRlIEhUTUwgdG9rZW5pemVy
IGNsYXNzLgogCi1jbGFzcyBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgRG9jdW1l
bnRQYXJzZXIsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CitjbGFzcyBMZWdhY3lIVE1M
RG9jdW1lbnRQYXJzZXIgOiBwdWJsaWMgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLCBwdWJsaWMg
Q2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgogICAgIExlZ2FjeUhUTUxEb2N1bWVudFBh
cnNlcihIVE1MRG9jdW1lbnQqLCBib29sIHJlcG9ydEVycm9ycyk7CiAgICAgTGVnYWN5SFRNTERv
Y3VtZW50UGFyc2VyKEhUTUxWaWV3U291cmNlRG9jdW1lbnQqKTsKQEAgLTE1MCw5ICsxNTAsNiBA
QCBwdWJsaWM6CiAgICAgYm9vbCBmb3JjZVN5bmNocm9ub3VzKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZS5mb3JjZVN5bmNocm9ub3VzKCk7IH0KICAgICB2b2lkIHNldEZvcmNlU3luY2hyb25vdXMo
Ym9vbCBmb3JjZSk7CiAKLSAgICAvLyBFeHBvc2VkIGZvciBMZWdhY3lIVE1MVHJlZUJ1aWxkZXI6
OnJlcG9ydEVycm9yVG9Db25zb2xlCi0gICAgYm9vbCBwcm9jZXNzaW5nQ29udGVudFdyaXR0ZW5C
eVNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjLmV4Y2x1ZGVMaW5lTnVtYmVycygpOyB9Ci0K
ICAgICBzdGF0aWMgdm9pZCBwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiwgRG9j
dW1lbnRGcmFnbWVudCosIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2Ny
aXB0aW5nQWxsb3dlZCk7CiAKIHByb3RlY3RlZDoKQEAgLTE2MSw3ICsxNTgsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpOwogCiBwcml2YXRlOgotICAgIC8vIERvY3Vt
ZW50UGFyc2VyCisgICAgLy8gU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyCiAgICAgdmlydHVhbCB2
b2lkIGFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgZmlu
aXNoV2FzQ2FsbGVkKCk7CiAgICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBj
b25zdDsKQEAgLTE3MiwxMCArMTY5LDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBpbnQgbGlu
ZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZU51bWJlcjsgfQogICAgIHZpcnR1YWwgaW50
IGNvbHVtbk51bWJlcigpIGNvbnN0IHsgcmV0dXJuIDE7IH0KIAorICAgIHZpcnR1YWwgYm9vbCBw
cm9jZXNzaW5nQ29udGVudFdyaXR0ZW5CeVNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjLmV4
Y2x1ZGVMaW5lTnVtYmVycygpOyB9CisKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNjcmlwdHNX
YWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKIAogICAgIHZpcnR1YWwgTGVnYWN5SFRNTFRyZWVCdWls
ZGVyKiBodG1sVHJlZUJ1aWxkZXIoKSBjb25zdCB7IHJldHVybiBtX3RyZWVCdWlsZGVyLmdldCgp
OyB9Ci0gICAgdmlydHVhbCBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIqIGFzSFRNTERvY3VtZW50
UGFyc2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgY2xhc3MgU3RhdGU7CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9MZWdhY3lIVE1MVHJlZUJ1aWxkZXIuY3BwIGIvV2ViQ29yZS9odG1s
L0xlZ2FjeUhUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggN2I0NDk0M2ZkYjk4N2U0Njc2MDNiZWYy
MzU1ZTU3NDY1M2RmNzMxMS4uMjFjYTk3MzI1N2E4OTNlNTA2NDEyYTRhNzkzMzZhZjhhZDlkN2Ix
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0xlZ2FjeUhUTUxUcmVlQnVpbGRlci5jcHAKKysr
IGIvV2ViQ29yZS9odG1sL0xlZ2FjeUhUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTE2NDcsOCArMTY0
Nyw5IEBAIHZvaWQgTGVnYWN5SFRNTFRyZWVCdWlsZGVyOjpyZXBvcnRFcnJvclRvQ29uc29sZShI
VE1MUGFyc2VyRXJyb3JDb2RlIGVycm9yQ29kZSwKICAgICBGcmFtZSogZnJhbWUgPSBtX2RvY3Vt
ZW50LT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBpbnQgbGluZU51bWJlciA9IG1fZG9jdW1lbnQtPnBhcnNlcigpLT5saW5lTnVtYmVyKCkgKyAx
OworCisgICAgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBtX2RvY3VtZW50LT5z
Y3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKTsKKyAgICBpbnQgbGluZU51bWJlciA9IHBhcnNlci0+
bGluZU51bWJlcigpICsgMTsKIAogICAgIEF0b21pY1N0cmluZyB0YWcxOwogICAgIEF0b21pY1N0
cmluZyB0YWcyOwpAQCAtMTY3NCw5ICsxNjc1LDcgQEAgdm9pZCBMZWdhY3lIVE1MVHJlZUJ1aWxk
ZXI6OnJlcG9ydEVycm9yVG9Db25zb2xlKEhUTUxQYXJzZXJFcnJvckNvZGUgZXJyb3JDb2RlLAog
ICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgbWVzc2FnZTsKLSAgICAvLyBGSVhNRTogVGhp
cyBkb2Vzbid0IHdvcmsgZm9yIHRoZSBuZXcgSFRNTERvY3VtZW50UGFyc2VyIGFuZCBzaG91bGQu
Ci0gICAgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKiBodG1sUGFyc2VyID0gbV9kb2N1bWVudC0+
cGFyc2VyKCktPmFzSFRNTERvY3VtZW50UGFyc2VyKCk7Ci0gICAgaWYgKGh0bWxQYXJzZXIgJiYg
aHRtbFBhcnNlci0+cHJvY2Vzc2luZ0NvbnRlbnRXcml0dGVuQnlTY3JpcHQoKSkKKyAgICBpZiAo
cGFyc2VyLT5wcm9jZXNzaW5nQ29udGVudFdyaXR0ZW5CeVNjcmlwdCgpKQogICAgICAgICBtZXNz
YWdlICs9IGh0bWxQYXJzZXJEb2N1bWVudFdyaXRlTWVzc2FnZSgpOwogICAgIG1lc3NhZ2UgKz0g
ZXJyb3JNc2c7CiAgICAgbWVzc2FnZS5yZXBsYWNlKCIldGFnMSIsIHRhZzEpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCmluZGV4IGE2Mjg1MGNhY2QxZDhjY2U1ZGYwZjlkZWMwY2E0M2JiNWQ0
NzQ4NWYuLmY3MjQ5NWNlMmNjYmNkMWQ3MmU2YTcwMmU3MzkzYmNiNTM3ZWJjNTIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDYWNoZWRQ
YWdlLmgiCiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgpAQCAtNDYsNyArNDcsNiBAQAogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlICJYTUxEb2N1bWVudFBhcnNlci5oIgogCiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAgYi9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKaW5kZXggYTIwZWNlZDcyMDQyZjY4MzVmYjk1YWYx
NWI4NzExM2I4N2U5OWNjOC4uZDk5ZjM0MDY1NDg1YzdiMzFhMDZmNzQyMzNmNGNiOWUwNzNkOTEz
NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCisrKyBiL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcApAQCAtMzgsMTIgKzM4LDE0IEBACiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUGxhY2Vob2xkZXJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIlBsdWdpbkRvY3VtZW50LmgiCisjaW5jbHVkZSAiUmF3RGF0YURvY3VtZW50UGFyc2Vy
LmgiCisjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNpbmtEb2N1bWVudC5oIgogI2luY2x1ZGUgIlRleHRSZXNv
dXJjZURlY29kZXIuaCIKLSNpbmNsdWRlICJEb2N1bWVudFBhcnNlci5oIgorCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvVGV4dERvY3VtZW50LmNw
cCBiL1dlYkNvcmUvbG9hZGVyL1RleHREb2N1bWVudC5jcHAKaW5kZXggNmNkZmJjMmY5OTQ5ZmQy
MzFiMmQ2N2VjNmE5ZTU1YWQzZWE4MTA4Ni4uNmI1MzA4NDMxNWU0OTViM2NmNmYxY2JkOGMyZjAz
MjQ5NDAzMzhhNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvVGV4dERvY3VtZW50LmNwcAor
KysgYi9XZWJDb3JlL2xvYWRlci9UZXh0RG9jdW1lbnQuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dERvY3VtZW50LmgiCiAKLSNpbmNsdWRl
ICJEb2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUgIkRlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIu
aCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oIgpAQCAtMzgsNyArMzgsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLWNsYXNzIFRleHREb2N1
bWVudFBhcnNlciA6IHB1YmxpYyBEb2N1bWVudFBhcnNlciB7CisvLyBGSVhNRTogVGV4dERvY3Vt
ZW50UGFyc2VyIGNvdWxkIGp1c3QgYmUgYW4gSFRNTERvY3VtZW50UGFyc2VyCisvLyB3aGljaCBz
dGFydGVkIHRoZSBUb2tlbml6ZXIgaW4gdGhlIFBsYWluVGV4dCBzdGF0ZS4KK2NsYXNzIFRleHRE
b2N1bWVudFBhcnNlciA6IHB1YmxpYyBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyIHsKIHB1Ymxp
YzoKICAgICBUZXh0RG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5UZXh0
RG9jdW1lbnRQYXJzZXIoKTsKQEAgLTQ5LDggKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2goKTsKICAgICB2aXJ0dWFsIGJvb2wgZmluaXNoV2FzQ2FsbGVkKCk7Ci0gICAgdmlydHVh
bCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdDsKLSAgICAKKwogICAgIGlubGluZSB2
b2lkIGNoZWNrQnVmZmVyKGludCBsZW4gPSAxMCkKICAgICB7CiAgICAgICAgIGlmICgobV9kZXN0
IC0gbV9idWZmZXIpID4gbV9zaXplIC0gbGVuKSB7CkBAIC02Myw2ICs2NCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIH0KICAgICB9CiAKK3ByaXZhdGU6CiAgICAgRWxlbWVudCogbV9wcmVFbGVtZW50
OwogCiAgICAgYm9vbCBtX3NraXBMRjsKQEAgLTczLDcgKzc1LDcgQEAgcHJpdmF0ZToKIH07CiAK
IFRleHREb2N1bWVudFBhcnNlcjo6VGV4dERvY3VtZW50UGFyc2VyKERvY3VtZW50KiBkb2N1bWVu
dCkKLSAgICA6IERvY3VtZW50UGFyc2VyKGRvY3VtZW50KQorICAgIDogRGVjb2RlZERhdGFEb2N1
bWVudFBhcnNlcihkb2N1bWVudCkKICAgICAsIG1fcHJlRWxlbWVudCgwKQogICAgICwgbV9za2lw
TEYoZmFsc2UpCiB7ICAgIApAQCAtODQsNyArODYsNyBAQCBUZXh0RG9jdW1lbnRQYXJzZXI6OlRl
eHREb2N1bWVudFBhcnNlcihEb2N1bWVudCogZG9jdW1lbnQpCiB9ICAgIAogCiBUZXh0RG9jdW1l
bnRQYXJzZXI6OlRleHREb2N1bWVudFBhcnNlcihIVE1MVmlld1NvdXJjZURvY3VtZW50KiBkb2N1
bWVudCkKLSAgICA6IERvY3VtZW50UGFyc2VyKGRvY3VtZW50LCB0cnVlKQorICAgIDogRGVjb2Rl
ZERhdGFEb2N1bWVudFBhcnNlcihkb2N1bWVudCwgdHJ1ZSkKICAgICAsIG1fcHJlRWxlbWVudCgw
KQogICAgICwgbV9za2lwTEYoZmFsc2UpCiB7ICAgIApAQCAtMTc0LDYgKzE3Niw4IEBAIHZvaWQg
VGV4dERvY3VtZW50UGFyc2VyOjpmaW5pc2goKQogICAgIG1fYnVmZmVyID0gMDsKICAgICBtX2Rl
c3QgPSAwOwogCisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGNhbGwgZmluaXNoUGFyc2luZyBl
dmVuIGlmIG1fcGFyc2VyU3RvcHBlZCBpcyB0cnVlPworICAgIC8vIFNlZSBlcXVpdmFsZW50IGlt
cGxlbWVudGF0aW9uIGluIFJhd0RhdGFEb2N1bWVudFBhcnNlci4KICAgICBkb2N1bWVudCgpLT5m
aW5pc2hlZFBhcnNpbmcoKTsKIH0KIApAQCAtMTg0LDEyICsxODgsNiBAQCBib29sIFRleHREb2N1
bWVudFBhcnNlcjo6ZmluaXNoV2FzQ2FsbGVkKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJv
b2wgVGV4dERvY3VtZW50UGFyc2VyOjppc1dhaXRpbmdGb3JTY3JpcHRzKCkgY29uc3QKLXsKLSAg
ICAvLyBBIHRleHQgZG9jdW1lbnQgaXMgbmV2ZXIgd2FpdGluZyBmb3Igc2NyaXB0cwotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQogVGV4dERvY3VtZW50OjpUZXh0RG9jdW1lbnQoRnJhbWUqIGZyYW1l
LCBjb25zdCBLVVJMJiB1cmwpCiAgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCkKIHsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgYi9XZWJDb3Jl
L3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCmluZGV4IDdiMjg1ZWI4NjFmN2E1MTc4ODBi
ZDg5M2Y5NWQ0MGExYWYyODg0NjAuLmZjMzE1NTEwY2U0YzU2MWY1MWY3MTEwMThiMDQ5NjBiOGEw
NjZkOTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAK
KysrIGIvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcApAQCAtMzcsNyArMzcs
NyBAQAogI2luY2x1ZGUgIlNWR1NNSUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNNSUxUaW1lQ29udGFpbmVyLmgiCi0jaW5jbHVkZSAiWE1MRG9jdW1l
bnRQYXJzZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEyNSwx
NiArMTI1LDI5IEBAIGJvb2wgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpzYW1wbGVBbmltYXRpb25B
dFRpbWUoY29uc3QgU3RyaW5nJiBlbGVtZW50SWQsIFNWR1NNCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKKy8vIEZJWE1FOiBDYWxsZXJzIHNob3VsZCBwcm9iYWJseSB1c2UgU2NyaXB0Q29udHJvbGxl
cjo6ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpCitzdGF0aWMgaW50IHBhcnNlckxpbmVOdW1iZXIo
RG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciogcGFy
c2VyID0gZG9jdW1lbnQtPnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpOworICAgIGlmICghcGFy
c2VyKQorICAgICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gcGFyc2VyLT5saW5lTnVtYmVyKCk7
Cit9CisKK3N0YXRpYyB2b2lkIHJlcG9ydE1lc3NhZ2UoRG9jdW1lbnQqIGRvY3VtZW50LCBNZXNz
YWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAoRnJhbWUq
IGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCkpCisgICAgICAgIGZyYW1lLT5kb21XaW5kb3coKS0+
Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIGxl
dmVsLCBtZXNzYWdlLCBwYXJzZXJMaW5lTnVtYmVyKGRvY3VtZW50KSwgU3RyaW5nKCkpOworfQor
CiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVwb3J0V2FybmluZyhjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fZG9jLT5mcmFtZSgpKQotICAg
ICAgICBmcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VT
b3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIldhcm5pbmc6ICIgKyBt
ZXNzYWdlLCBtX2RvYy0+cGFyc2VyKCkgPyBtX2RvYy0+cGFyc2VyKCktPmxpbmVOdW1iZXIoKSA6
IDEsIFN0cmluZygpKTsKKyAgICByZXBvcnRNZXNzYWdlKG1fZG9jLCBXYXJuaW5nTWVzc2FnZUxl
dmVsLCAiV2FybmluZzogIiArIG1lc3NhZ2UpOwogfQogCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5z
aW9uczo6cmVwb3J0RXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIGlmIChGcmFt
ZSogZnJhbWUgPSBtX2RvYy0+ZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5j
b25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJy
b3JNZXNzYWdlTGV2ZWwsICJFcnJvcjogIiArIG1lc3NhZ2UsIG1fZG9jLT5wYXJzZXIoKSA/IG1f
ZG9jLT5wYXJzZXIoKS0+bGluZU51bWJlcigpIDogMSwgU3RyaW5nKCkpOworICAgIHJlcG9ydE1l
c3NhZ2UobV9kb2MsIEVycm9yTWVzc2FnZUxldmVsLCAiRXJyb3I6ICIgKyBtZXNzYWdlKTsKIH0K
IAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdSZXNvdXJjZShjb25zdCBB
dG9taWNTdHJpbmcmIGlkLCBTVkdTdHlsZWRFbGVtZW50KiBvYmopCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>