<?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>28037</bug_id>
          
          <creation_ts>2009-08-05 22:34:58 -0700</creation_ts>
          <short_desc>SocketStreamHandle interface for WebSocket API</short_desc>
          <delta_ts>2009-09-09 19:40:20 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fumitoshi Ukai">ukai</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>eric</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>137519</commentid>
    <comment_count>0</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-05 22:34:58 -0700</bug_when>
    <thetext>SocketStreamHandle will be used for backend of WebSocket API.
These will be added in WebCore/platform/network</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138929</commentid>
    <comment_count>1</comment_count>
      <attachid>34545</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-11 02:42:20 -0700</bug_when>
    <thetext>Created attachment 34545
Add SocketStreamHandle interface


---
 13 files changed, 736 insertions(+), 1 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138973</commentid>
    <comment_count>2</comment_count>
      <attachid>34545</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-08-11 08:38:47 -0700</bug_when>
    <thetext>Comment on attachment 34545
Add SocketStreamHandle interface

Simply a style pass. I looked at this and saw a few style issues to clean up.

&gt; diff --git a/WebCore/platform/network/SocketStreamErrorBase.h b/WebCore/platform/network/SocketStreamErrorBase.h
&gt; +    class SocketStreamErrorBase {
&gt; +      public:

public:, private:, protected: should be aligned with &quot;class&quot;. There are multiple instances but I&apos;m only commenting on this one.

&gt; +        SocketStreamErrorBase()
&gt; +                : m_errorCode(0)
&gt; +                , m_isNull(true)

These should only be indented 4 spaces (not 8). There are multiple instances but I&apos;m only commenting on this one.


&gt; diff --git a/WebCore/platform/network/SocketStreamHandle.h b/WebCore/platform/network/SocketStreamHandle.h
&gt; +        virtual int platformSend(const char*, int);

Please include parameter names for this method.
Parameter names are omitted when they don&apos;t add information.  In this case, they would add information. 


&gt; diff --git a/WebCore/platform/network/SocketStreamHandleBase.cpp b/WebCore/platform/network/SocketStreamHandleBase.cpp
&gt; +bool SocketStreamHandleBase::send(const char* buf, int size)
s/buf/buffer/
Use full words for variables.

&gt; +    int num_written = 0;

s/num_written/bytesWritten/

bad casing.

&gt; +void SocketStreamHandleBase::setClient(SocketStreamHandleClient* client)
&gt; +{

Consider adding asserts here.
Can this be called in any state?
Can it be called after a client has already been set?


&gt; +bool SocketStreamHandleBase::sendPendingData()
&gt; +{
&gt; +    if (m_state != Open)
&gt; +        return false;
&gt; +    if (m_buffer.isEmpty())
&gt; +        return false;
&gt; +    int num_written = platformSend(m_buffer.data(), m_buffer.size());

s/num_written/bytesWritten/

bad casing.

&gt; +    Vector&lt;char&gt; remaining_data;

s/remaining_data/remainingData/

bad casing.

&gt; +    remaining_data.append(m_buffer.data() + num_written,
&gt; +                           m_buffer.size() - num_written);

Indentation mistake.


&gt; diff --git a/WebCore/platform/network/SocketStreamHandleBase.h b/WebCore/platform/network/SocketStreamHandleBase.h
&gt; +        virtual ~SocketStreamHandleBase() {}
s/{}/{ }/
Add a space in the {}


&gt; +        bool send(const char*, int);

Please include parameter names for this method.

&gt; +        virtual int platformSend(const char*, int) = 0;

Please include parameter names for this method.

&gt; diff --git a/WebCore/platform/network/SocketStreamHandleClient.h b/WebCore/platform/network/SocketStreamHandleClient.h
&gt; +        virtual void willSendData(SocketStreamHandle*, const char*, int) { }

Please include parameter names for the char* and int.

&gt; +        virtual void didReceivedData(SocketStreamHandle*, const char*, int) { }

Please include parameter names for the char* and int.


&gt; diff --git a/WebCore/platform/network/mac/SocketStreamError.h b/WebCore/platform/network/mac/SocketStreamError.h
&gt; +        SocketStreamError() {}
s/{}/{ }/

&gt; diff --git a/WebCore/platform/network/mac/SocketStreamHandleMac.mm b/WebCore/platform/network/mac/SocketStreamHandleMac.mm
&gt; +    SocketStreamHandleInternal() {}
&gt; +    ~SocketStreamHandleInternal() {}

s/{}/{ }/


&gt; diff --git a/WebCore/platform/network/soup/SocketStreamHandleSoup.cpp b/WebCore/platform/network/soup/SocketStreamHandleSoup.cpp
&gt; +class SocketStreamHandleInternal {
&gt; +public:
&gt; +    SocketStreamHandleInternal() {}
&gt; +    ~SocketStreamHandleInternal() {}

s/{}/{ }/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138980</commentid>
    <comment_count>3</comment_count>
      <attachid>34545</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-08-11 09:03:49 -0700</bug_when>
    <thetext>Comment on attachment 34545
Add SocketStreamHandle interface

Two more style comments:

&gt; + /* static */
WebKit doesn&apos;t do this.

&gt; + int SocketStreamHandle::platformSend(const char *, int)
* goes near the type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138983</commentid>
    <comment_count>4</comment_count>
      <attachid>34545</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-11 09:08:11 -0700</bug_when>
    <thetext>Comment on attachment 34545
Add SocketStreamHandle interface

&gt; +    if (num_written &lt; size)
&gt; +        m_buffer.append(buf + num_written, size - num_written);

I think that we need a (large) upper limit on buffer size - it&apos;s too easy to send data faster than network permits, exhausting system memory and making the system unresponsive. Certainly, there are many other ways to exhaust memory via JavaScript, so it would be just a safety net, not a real security measure.

&gt; +    remaining_data.append(m_buffer.data() + num_written,
&gt; +                           m_buffer.size() - num_written);

As David pointed out, this is an indentation mistake - but there&apos;s no need to split the line anyway, it&apos;s quite short.

Looks good to me in general. I&apos;m not sure if I&apos;m not stepping on Dave&apos;s toes here, but r- to address the comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138987</commentid>
    <comment_count>5</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-08-11 09:17:30 -0700</bug_when>
    <thetext>&gt;  I&apos;m not sure if I&apos;m not stepping on Dave&apos;s toes...
Not at all.  I simply noticed some styling issues and thought I&apos;d point them out (in case he was able to get to them before the &quot;real&quot; review).  I should have made this more clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139279</commentid>
    <comment_count>6</comment_count>
      <attachid>34645</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-12 02:02:07 -0700</bug_when>
    <thetext>Created attachment 34645
Add SocketStreamHandle interface


---
 13 files changed, 748 insertions(+), 1 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139280</commentid>
    <comment_count>7</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-12 02:03:35 -0700</bug_when>
    <thetext>Thanks for review.
I believe I fixed all comments.
Could you take a look again, please?
Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139281</commentid>
    <comment_count>8</comment_count>
      <attachid>34646</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-12 02:09:44 -0700</bug_when>
    <thetext>Created attachment 34646
Add SocketStreamHandle interface


---
 13 files changed, 748 insertions(+), 1 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139393</commentid>
    <comment_count>9</comment_count>
      <attachid>34646</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-12 10:24:41 -0700</bug_when>
    <thetext>Comment on attachment 34646
Add SocketStreamHandle interface

+        No new tests. (OOPS!)

Please don&apos;t say OOPS in ChangeLog - pre-commit script will block such a patch from landing. I think it would be better to say something positive anyway, like &quot;tests will be landed once this code is complete and functional).

 	WebCore/bindings/js/JSWebSocketCustom.cpp \
 	WebCore/websockets/WebSocket.cpp \
-	WebCore/websockets/WebSocket.h
+	WebCore/websockets/WebSocket.h \
+	WebCore/platform/network/SocketStreamErrorBase.cpp \

Looks like this list is supposed to be sorted.

 			children = (
+				510D4A391031665F0049EA54 /* SocketStreamHandleMac.mm */,
+				510D4A2D103165EE0049EA54 /* SocketStreamErrorBase.cpp */,
+				510D4A2E103165EE0049EA54 /* SocketStreamErrorBase.h */,
+				510D4A2F103165EE0049EA54 /* SocketStreamHandle.h */,
+				510D4A30103165EE0049EA54 /* SocketStreamHandleBase.cpp */,
+				510D4A31103165EE0049EA54 /* SocketStreamHandleBase.h */,
+				510D4A32103165EE0049EA54 /* SocketStreamHandleClient.h */,
 				B2F34FE70E82F81700F627CD /* cf */,
 				656B84E70AEA1DAE00A095B4 /* mac */,

Shouldn&apos;t SocketStreamHandleMac be in mac folder? And sorry for not realizing this before, but I would actually prefer to have &quot;cf&quot; stubs for SocketStream, not mac ones.

+ * Copyright (C) 2009 Google Inc. All rights reserved.
&lt;...&gt;
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS&apos;&apos; AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

I&apos;m not sure what template is right for files originally added by Google, but &quot;Apple Computer, Inc.&quot; is not even the correct name for Apple any more. You&apos;ve previously used a different header in WebSocket.h.

+const int maxBufferAmount = 524288;

I&apos;ve been thinking of a much larger buffer, something like 100MB (for desktop platforms at least). The idea is to prevent the browser from bringing the whole system to its knees too easily, not to close the connection as soon as it seems that data is sent too quickly.

&quot;Buffer amount&quot; doesn&apos;t sound like proper English to me - should be either &quot;buffer size&quot; or &quot;maximum buffered amount&quot;.

+            // FIXME: set error code?

There is no error code in SocketStreamHandleBase, so I don&apos;t understand what this FIXME is about. Could you re-phrase the comment to make it clearer what the concern/bug is?

Perhaps an error should just be logged to console via a client didFail () callback.

+        int bufferedAmount() const { return m_buffer.size(); }
+
+        SocketStreamHandleClient* client() const;

It&apos;s surprising that one is inline, and the other is not. Not really a problem but was there a reason for this difference?

&gt; diff --git a/WebCore/platform/network/SocketStreamHandle.h b/WebCore/platform/network/SocketStreamHandle.h

Why is SocketStreamHandle.h in cross-platform directory? The model that e.g. ResourceRequest.h uses seems superior to me - cross-platform parts go into Base, and platforms have both headers and cpp files of their own.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141455</commentid>
    <comment_count>10</comment_count>
      <attachid>35115</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-19 04:35:40 -0700</bug_when>
    <thetext>Created attachment 35115
Add SocketStreamHandle interface


---
 14 files changed, 870 insertions(+), 0 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141456</commentid>
    <comment_count>11</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-19 04:37:06 -0700</bug_when>
    <thetext>Thanks for review. 
Sorry for late response since I was on vacation.
I&apos;ve tried to address all of your comments.
Could you take a look again, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141657</commentid>
    <comment_count>12</comment_count>
      <attachid>35115</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-19 17:25:07 -0700</bug_when>
    <thetext>Comment on attachment 35115
Add SocketStreamHandle interface

&gt; diff --git a/WebCore/platform/network/cf/SocketStreamHandle.h b/WebCore/platform/network/cf/SocketStreamHandle.h
&lt;...&gt;
&gt; +        KURL m_url;
&gt; +
&gt; +        // platform specific data
&gt; +        friend class SocketStreamHandleInternal;
&gt; +        OwnPtr&lt;SocketStreamHandleInternal&gt; internal;

All data in this file is platform specific, cross-platform data goes to SocketStreamHandleBase. So, there is no need for SocketStreamHandleInternal any more.

Everything else looks good to me, but this is something that&apos;s best to fix before landing, so r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141738</commentid>
    <comment_count>13</comment_count>
      <attachid>35185</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-19 22:54:19 -0700</bug_when>
    <thetext>Created attachment 35185
Add SocketStreamHandle interface


---
 14 files changed, 844 insertions(+), 0 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141812</commentid>
    <comment_count>14</comment_count>
      <attachid>35185</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-20 22:56:15 -0700</bug_when>
    <thetext>Comment on attachment 35185
Add SocketStreamHandle interface

Bugzilla has experienced amnesia today, please upload the latest patch again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142265</commentid>
    <comment_count>15</comment_count>
      <attachid>38464</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-23 19:50:14 -0700</bug_when>
    <thetext>Created attachment 38464
Add SocketStreamHandle interface


---
 14 files changed, 839 insertions(+), 0 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142314</commentid>
    <comment_count>16</comment_count>
      <attachid>38464</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-24 09:01:55 -0700</bug_when>
    <thetext>Comment on attachment 38464
Add SocketStreamHandle interface

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142345</commentid>
    <comment_count>17</comment_count>
      <attachid>38464</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-24 11:26:55 -0700</bug_when>
    <thetext>Comment on attachment 38464
Add SocketStreamHandle interface

Fumitoshi doesn&apos;t have commit bit, so marking cq+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142349</commentid>
    <comment_count>18</comment_count>
      <attachid>38464</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-24 11:36:18 -0700</bug_when>
    <thetext>Comment on attachment 38464
Add SocketStreamHandle interface

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

WebKitTools/Scripts/build-webkit failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142354</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-24 11:44:28 -0700</bug_when>
    <thetext>Since this fails release build on the Mac, the patch will likely need more modification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142491</commentid>
    <comment_count>20</comment_count>
      <attachid>38520</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-24 19:43:00 -0700</bug_when>
    <thetext>Created attachment 38520
Add SocketStreamHandle interface


---
 14 files changed, 839 insertions(+), 0 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142492</commentid>
    <comment_count>21</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-24 19:44:01 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Since this fails release build on the Mac, the patch will likely need more
&gt; modification.

Fixed build failure on the Mac.
Comment unused parameters, and make bufferSize unsigned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142510</commentid>
    <comment_count>22</comment_count>
      <attachid>38520</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-24 22:14:04 -0700</bug_when>
    <thetext>Comment on attachment 38520
Add SocketStreamHandle interface

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142512</commentid>
    <comment_count>23</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-24 22:37:48 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 38520 [details])
&gt; r=me

Thanks for review.
Anyway, do I need to fix typo didReceived* here as well that you mentioned in bug 28038?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142514</commentid>
    <comment_count>24</comment_count>
      <attachid>38527</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-24 22:51:53 -0700</bug_when>
    <thetext>Created attachment 38527
Add SocketStreamHandle interface


---
 14 files changed, 839 insertions(+), 0 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142591</commentid>
    <comment_count>25</comment_count>
      <attachid>38527</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-25 09:21:45 -0700</bug_when>
    <thetext>Comment on attachment 38527
Add SocketStreamHandle interface

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

[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;] failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142607</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-25 10:08:53 -0700</bug_when>
    <thetext>media/video-played-ranges-1.html -&gt; failed

is the failure.  I assume that it&apos;s just a flakey media test.  I&apos;ll add this back to the commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142613</commentid>
    <comment_count>27</comment_count>
      <attachid>38527</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-25 10:16:19 -0700</bug_when>
    <thetext>Comment on attachment 38527
Add SocketStreamHandle interface

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

Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;]&quot;  exit_code: 1  cwd: None</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142675</commentid>
    <comment_count>28</comment_count>
      <attachid>38527</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-25 13:07:18 -0700</bug_when>
    <thetext>Comment on attachment 38527
Add SocketStreamHandle interface

Sigh.  commit-queue bug.
Merge conflict during commit: Your file or directory &apos;WebCore/ChangeLog&apos; is probably out-of-date: resource out of date; try updating at /usr/local/libexec/git-core//git-svn line 469

I&apos;ll try again, if this fails I&apos;ll just do it manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142687</commentid>
    <comment_count>29</comment_count>
      <attachid>38527</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-25 13:40:45 -0700</bug_when>
    <thetext>Comment on attachment 38527
Add SocketStreamHandle interface

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

Patch https://bugs.webkit.org/attachment.cgi?id=38527 from bug 28037 failed to download and apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142688</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-25 13:41:28 -0700</bug_when>
    <thetext>patching file WebCore/WebCore.xcodeproj/project.pbxproj
Hunk #1 succeeded at 893 (offset 61 lines).
Hunk #2 succeeded at 981 (offset 61 lines).
Hunk #3 succeeded at 6028 (offset 121 lines).
Hunk #4 succeeded at 6123 (offset 121 lines).
Hunk #5 succeeded at 10668 (offset 154 lines).
Hunk #6 succeeded at 13876 (offset 178 lines).
Hunk #7 FAILED at 17532.
Hunk #8 FAILED at 19605.
2 out of 8 hunks FAILED -- saving rejects to file WebCore/WebCore.xcodeproj/project.pbxproj.rej
patch -p0 &quot;WebCore/WebCore.xcodeproj/project.pbxproj&quot; returned 1.  Pass --force to ignore patch failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142697</commentid>
    <comment_count>31</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-25 14:07:42 -0700</bug_when>
    <thetext>I attempted to land this manually.  However svn-apply bails out after the first failure, so it left only a partial patch applied.

I tried using &quot;curl --location &apos;https://bugs.webkit.org/attachment.cgi?id=38527&apos; | patch -p1&quot; and that failed to apply the ChangeLogs it seems.

So I think we&apos;re left with you updating this patch.  Alternatively someone could sync to the revision you made the patch from, apply it there, and then update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142762</commentid>
    <comment_count>32</comment_count>
      <attachid>38588</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-25 19:41:39 -0700</bug_when>
    <thetext>Created attachment 38588
Add SocketStreamHandle interface


---
 14 files changed, 839 insertions(+), 0 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142763</commentid>
    <comment_count>33</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-25 19:44:01 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; I attempted to land this manually.  However svn-apply bails out after the first
&gt; failure, so it left only a partial patch applied.
&gt; 
&gt; I tried using &quot;curl --location
&gt; &apos;https://bugs.webkit.org/attachment.cgi?id=38527&apos; | patch -p1&quot; and that failed
&gt; to apply the ChangeLogs it seems.
&gt; 
&gt; So I think we&apos;re left with you updating this patch.  Alternatively someone
&gt; could sync to the revision you made the patch from, apply it there, and then
&gt; update.

Update the patch from revision 47769.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142864</commentid>
    <comment_count>34</comment_count>
      <attachid>38588</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-26 09:16:44 -0700</bug_when>
    <thetext>Comment on attachment 38588
Add SocketStreamHandle interface

&gt; I attempted to land this manually.  However svn-apply bails out after the first
&gt; failure, so it left only a partial patch applied.

Is this a recent regression? Sounds like a serious problem to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142898</commentid>
    <comment_count>35</comment_count>
      <attachid>38588</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-26 11:16:55 -0700</bug_when>
    <thetext>Comment on attachment 38588
Add SocketStreamHandle interface

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

[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;] failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142919</commentid>
    <comment_count>36</comment_count>
      <attachid>38588</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-26 12:32:47 -0700</bug_when>
    <thetext>Comment on attachment 38588
Add SocketStreamHandle interface

accessibility/nochildren-elements.html -&gt; crashed

Seems unrelated.  Maybe it&apos;s a flakey test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142948</commentid>
    <comment_count>37</comment_count>
      <attachid>38588</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-26 13:05:55 -0700</bug_when>
    <thetext>Comment on attachment 38588
Add SocketStreamHandle interface

Clearing flags on attachment: 38588

Committed r47788: &lt;http://trac.webkit.org/changeset/47788&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142949</commentid>
    <comment_count>38</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-26 13:06:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146066</commentid>
    <comment_count>39</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-09 19:40:20 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; media/video-played-ranges-1.html -&gt; failed
&gt; 
&gt; is the failure.  I assume that it&apos;s just a flakey media test.  I&apos;ll add this
&gt; back to the commit queue.

This was likely one of the first instances of bug 28845.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34545</attachid>
            <date>2009-08-11 02:42:20 -0700</date>
            <delta_ts>2009-08-12 02:02:01 -0700</delta_ts>
            <desc>Add SocketStreamHandle interface</desc>
            <filename>bug-28037-20090811184219.patch</filename>
            <type>text/plain</type>
            <size>37004</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTNjMjY5MC4uYzFhMmZiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAwOS0wOC0xMSAgRnVtaXRvc2hpIFVr
YWkgIDx1a2FpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUgaW50ZXJmYWNlIGZvciBXZWJTb2Nr
ZXQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
ODAzNworCisgICAgICAgIEFkZCBidWlsZCBzeXN0ZW1zIG9ubHkgZm9yIEdOVW1ha2VmaWxlLmFt
IGFuZAorICAgICAgICBXZWJDb3JlLnhjb2RlcHJvaiBub3cuCisgICAgICAgIE90aGVyIGJ1aWxk
IHN5c3RlbXMgd2lsbCBiZSB1cGRhdGVkIG9uY2UgdGhlIGNvZGUgaXMKKyAgICAgICAgZnVuY3Rp
b25hbC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tl
dFN0cmVhbUVycm9yQmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
U29ja2V0U3RyZWFtRXJyb3JCYXNlLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Tb2NrZXRTdHJlYW1FcnJvci5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Tb2NrZXRTdHJlYW1IYW5kbGVNYWMubW06IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1FcnJvci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxl
U291cC5jcHA6IEFkZGVkLgorCiAyMDA5LTA4LTExICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhh
dXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQppbmRleCA1Y2MxZmQ2Li40YzY4ZTU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTMxNTUsNyArMzE1NSwxNyBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRD
b25zdHJ1Y3Rvci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNw
cCBcCiAJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgXAotCVdlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXQuaAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBcCisJV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgXAorCVdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvckJhc2UuaCBcCisJV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oIFwKKwlXZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaAorCit3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0g
XAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUVycm9yLmggXAor
CVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3Bw
CiAKIGVsc2UKIHdlYmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfV0VCX1NPQ0tFVFM9MApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwNzUzZGM3Li4xYzIw
ZGE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODE5
LDYgKzgxOSwxNCBAQAogCQk0RTE5NTkyRTBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV4
cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEUxOTU5
MjgwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuaCAqLzsgfTsKIAkJNTEwMTg0Njkw
QjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQ
YWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTEwMTg0NkEwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVG
IC8qIENhY2hlZFBhZ2UuY3BwICovOyB9OworCQk1MTBENEEzMzEwMzE2NUVFMDA0OUVBNTQgLyog
U29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTJEMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1F
cnJvckJhc2UuY3BwICovOyB9OworCQk1MTBENEEzNDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0
U3RyZWFtRXJyb3JCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTBENEEyRTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNl
LmggKi87IH07CisJCTUxMEQ0QTM1MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5k
bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0
QTJGMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLzsgfTsKKwkJNTEw
RDRBMzYxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMzAxMDMxNjVF
RTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwICovOyB9OworCQk1MTBENEEz
NzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMzExMDMxNjVFRTAwNDlF
QTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCAqLzsgfTsKKwkJNTEwRDRBMzgxMDMxNjVF
RTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMzIxMDMxNjVFRTAwNDlFQTU0IC8q
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICovOyB9OworCQk1MTBENEEzQTEwMzE2NjVGMDA0
OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMzkxMDMxNjY1RjAwNDlFQTU0IC8qIFNvY2tl
dFN0cmVhbUhhbmRsZU1hYy5tbSAqLzsgfTsKKwkJNTEwRDRBM0QxMDMxNjhEQTAwNDlFQTU0IC8q
IFNvY2tldFN0cmVhbUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTBENEEzQzEwMzE2OERBMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3Iu
aCAqLzsgfTsKIAkJNTExNkQ5NzcwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExNkQ5NzUw
Q0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMUYyMzE3MERDMTYwREEwMDRGMDAzMiAv
KiBMb2NhbFN0b3JhZ2VUYXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMUYyMzEzMERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNr
LmNwcCAqLzsgfTsKIAkJNTExRjIzMTgwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRh
c2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYy
MzE0MERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmggKi87IH07CkBAIC01ODQ5
LDYgKzU4NTcsMTQgQEAKIAkJNEUxOTU5MjgwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlF
eHAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUXVlcnlFeHAuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8q
IENhY2hlZFBhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUGFn
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2ODBCMDg2MDJBMDA0QTgy
NUYgLyogQ2FjaGVkUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDYWNoZWRQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRDRBMkQx
MDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEEyRTEwMzE2NUVFMDA0OUVBNTQgLyogU29j
a2V0U3RyZWFtRXJyb3JCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNv
Y2tldFN0cmVhbUVycm9yQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBE
NEEyRjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MTBENEEzMDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFt
SGFuZGxlQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2Nr
ZXRTdHJlYW1IYW5kbGVCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEw
RDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQgLyogU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MTBENEEzOTEwMzE2NjVGMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlTWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gU29ja2V0U3RyZWFtSGFuZGxl
TWFjLm1tOyBwYXRoID0gbWFjL1NvY2tldFN0cmVhbUhhbmRsZU1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRDRBM0MxMDMxNjhEQTAwNDlFQTU0IC8qIFNvY2tldFN0cmVh
bUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUVy
cm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTZEOTc1MENGMTc3QkQwMEMy
Qjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGF0YWJhc2VEZXRhaWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUYy
MzEzMERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvY2FsU3RvcmFnZVRhc2suY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTFGMjMxNDBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9y
YWdlVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbFN0b3JhZ2VU
YXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDM5Miw2ICsxMDQwOCwxMyBA
QAogCQk2NTZCODRENzBBRUExQ0U5MDBBMDk1QjQgLyogbmV0d29yayAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTEwRDRBMzkxMDMxNjY1RjAwNDlFQTU0
IC8qIFNvY2tldFN0cmVhbUhhbmRsZU1hYy5tbSAqLywKKwkJCQk1MTBENEEyRDEwMzE2NUVFMDA0
OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCAqLywKKwkJCQk1MTBENEEyRTEwMzE2
NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmggKi8sCisJCQkJNTEwRDRBMkYx
MDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oICovLAorCQkJCTUxMEQ0QTMw
MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCAqLywKKwkJCQk1
MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oICovLAor
CQkJCTUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQu
aCAqLywKIAkJCQlCMkYzNEZFNzBFODJGODE3MDBGNjI3Q0QgLyogY2YgKi8sCiAJCQkJNjU2Qjg0
RTcwQUVBMURBRTAwQTA5NUI0IC8qIG1hYyAqLywKIAkJCQk5MzRGNzEzNzBENUE2RUZGMDAwMThE
NjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNwcCAqLywKQEAgLTEwNDI4LDYgKzEw
NDUxLDcgQEAKIAkJNjU2Qjg0RTcwQUVBMURBRTAwQTA5NUI0IC8qIG1hYyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTEwRDRBM0MxMDMxNjhEQTAwNDlF
QTU0IC8qIFNvY2tldFN0cmVhbUVycm9yLmggKi8sCiAJCQkJOTM0RjcxNDMwRDVBNkY1MzAwMDE4
RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggKi8sCiAJCQkJNTE0Qzc2NDIwQ0U5MjM0
RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmggKi8sCiAJCQkJNTE0Qzc2NDMwQ0U5MjM0
RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLm1tICovLApAQCAtMTcxODUsNiArMTcyMDks
MTEgQEAKIAkJCQk0OTQ4NEZDODEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUGl4ZWxBcnJheS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0ODRGQ0IxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0ODRGQ0UxMDJDRjIzQzAw
MTg3REQzIC8qIENhbnZhc1N0eWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTBENEEzNDEwMzE2
NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MTBENEEzNTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1MTBENEEzNzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8q
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRDRBM0Qx
MDMxNjhEQTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAg
LTE5MjM2LDYgKzE5MjY1LDkgQEAKIAkJCQk0OTQ4NEZDNzEwMkNGMjNDMDAxODdERDMgLyogQ2Fu
dmFzUGl4ZWxBcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTQ4NEZDQTEwMkNGMjNDMDAx
ODdERDMgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQ5NDg0RkNEMTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNTdHlsZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1MTBENEEzMzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMEQ0QTM2MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2Nr
ZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMEQ0QTNBMTAzMTY2
NUYwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvckJhc2Uu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAzYzRkMAotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvckJhc2UuY3Bw
CkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTb2NrZXRT
dHJlYW1FcnJvciBTb2NrZXRTdHJlYW1FcnJvckJhc2U6OmNvcHkoKSBjb25zdAoreworICAgIFNv
Y2tldFN0cmVhbUVycm9yIGVycm9yQ29weTsKKyAgICBlcnJvckNvcHkubV9lcnJvckNvZGUgPSBt
X2Vycm9yQ29kZTsKKyAgICByZXR1cm4gZXJyb3JDb3B5OworfQorCisvKiBzdGF0aWMgKi8KK2Jv
b2wgU29ja2V0U3RyZWFtRXJyb3JCYXNlOjpjb21wYXJlKGNvbnN0IFNvY2tldFN0cmVhbUVycm9y
JiBhLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYgYikKK3sKKyAgICByZXR1cm4gYS5lcnJvckNv
ZGUoKSA9PSBiLmVycm9yQ29kZSgpOworfQorCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNzhiZTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmgKQEAgLTAs
MCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNvY2tldFN0cmVhbUVycm9yQmFzZV9oCisjZGVm
aW5lIFNvY2tldFN0cmVhbUVycm9yQmFzZV9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAg
IGNsYXNzIFNvY2tldFN0cmVhbUVycm9yOworCisgICAgY2xhc3MgU29ja2V0U3RyZWFtRXJyb3JC
YXNlIHsKKyAgICAgIHB1YmxpYzoKKyAgICAgICAgLy8gTWFrZXMgYSBkZWVwIGNvcHkuICBVc2Vm
dWwgZm9yIHdoZW4geW91IG5lZWQgdG8gdXNlIGEgU29ja2V0U3RyZWFtRXJyb3Igb24gYW5vdGhl
ciB0aHJlYWQuCisgICAgICAgIFNvY2tldFN0cmVhbUVycm9yIGNvcHkoKSBjb25zdDsKKworICAg
ICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOdWxsOyB9CisKKyAgICAgICAg
aW50IGVycm9yQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JDb2RlOyB9CisKKyAgICAgICAg
c3RhdGljIGJvb2wgY29tcGFyZShjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYsIGNvbnN0IFNvY2tl
dFN0cmVhbUVycm9yJik7CisKKyAgICAgIHByb3RlY3RlZDoKKyAgICAgICAgU29ja2V0U3RyZWFt
RXJyb3JCYXNlKCkKKyAgICAgICAgICAgICAgICA6IG1fZXJyb3JDb2RlKDApCisgICAgICAgICAg
ICAgICAgLCBtX2lzTnVsbCh0cnVlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBl
eHBsaWNpdCBTb2NrZXRTdHJlYW1FcnJvckJhc2UoaW50IGVycm9yQ29kZSkKKyAgICAgICAgICAg
ICAgICA6IG1fZXJyb3JDb2RlKGVycm9yQ29kZSkKKyAgICAgICAgICAgICAgICAsIG1faXNOdWxs
KGZhbHNlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBpbnQgbV9lcnJvckNvZGU7
CisgICAgICAgIGJvb2wgbV9pc051bGw7CisgICAgfTsKKworICAgIGlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImIGEsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9y
JiBiKSB7IHJldHVybiBTb2NrZXRTdHJlYW1FcnJvckJhc2U6OmNvbXBhcmUoYSwgYik7IH0KKyAg
ICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJiBhLCBjb25z
dCBTb2NrZXRTdHJlYW1FcnJvciYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CisKK30gIC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gU29ja2V0U3RyZWFtRXJyb3JCYXNlX2gKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTM2ZWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oCkBAIC0wLDAgKzEsNzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBTb2NrZXRTdHJlYW1IYW5kbGVfaAorI2RlZmluZSBTb2NrZXRT
dHJlYW1IYW5kbGVfaAorCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVh
bUhhbmRsZUJhc2UuaCIKKworI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworICAgIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOworICAgIGNsYXNz
IENyZWRlbnRpYWw7CisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OworICAgIGNs
YXNzIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOworCisgICAgY2xhc3MgU29ja2V0U3RyZWFt
SGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8U29ja2V0U3RyZWFtSGFuZGxlPiwgcHVibGljIFNv
Y2tldFN0cmVhbUhhbmRsZUJhc2UgeworICAgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0
U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KSk7IH0KKworICAgICAgICB2aXJ0dWFsIH5Tb2NrZXRT
dHJlYW1IYW5kbGUoKTsKKworICAgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIGludCBw
bGF0Zm9ybVNlbmQoY29uc3QgY2hhciosIGludCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwbGF0
Zm9ybUNsb3NlKCk7CisKKyAgICAgIHByaXZhdGU6CisgICAgICAgIFNvY2tldFN0cmVhbUhhbmRs
ZShjb25zdCBLVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisKKyAgICAgICAgLy8g
Tm8gYXV0aGVudGljYXRpb24gZm9yIHN0cmVhbXMgcGVyIHNlLCBidXQgcHJveHkgbWF5IGFzayBm
b3IgY3JlZGVudGlhbHMuCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZWRBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworICAgICAgICB2b2lkIHJl
Y2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENy
ZWRlbnRpYWwmKTsKKyAgICAgICAgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91
dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKyAgICAgICAgdm9p
ZCByZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwor
CisgICAgICAgIEtVUkwgbV91cmw7CisKKyAgICAgICAgLy8gcGxhdGZvcm0gc3BlY2lmaWMgZGF0
YQorICAgICAgICBmcmllbmQgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw7CisgICAg
ICAgIE93blB0cjxTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbD4gaW50ZXJuYWw7CisgICAgfTsK
KworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBTb2NrZXRTdHJlYW1IYW5k
bGVfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhh
bmRsZUJhc2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRs
ZUJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlZDVhOGUKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZS5jcHAKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmgiCisKKyNpbmNsdWRlICJTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTb2NrZXRT
dHJlYW1IYW5kbGVCYXNlOjpTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKCkKKyAgICAgICAgOiBtX2Ns
aWVudCgwKQorICAgICAgICAsIG1fc3RhdGUoQ29ubmVjdGluZykKK3sKK30KKworU29ja2V0U3Ry
ZWFtSGFuZGxlQmFzZTo6U29ja2V0U3RyZWFtU3RhdGUgU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6
c3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YXRlOworfQorCitib29sIFNvY2tldFN0
cmVhbUhhbmRsZUJhc2U6OnNlbmQoY29uc3QgY2hhciogYnVmLCBpbnQgc2l6ZSkKK3sKKyAgICBp
ZiAobV9zdGF0ZSA9PSBDb25uZWN0aW5nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFtX2J1ZmZlci5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9idWZmZXIuYXBwZW5kKGJ1Ziwgc2l6
ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpbnQgbnVtX3dyaXR0ZW4gPSAw
OworICAgIGlmIChtX3N0YXRlID09IE9wZW4pCisgICAgICAgIG51bV93cml0dGVuID0gcGxhdGZv
cm1TZW5kKGJ1Ziwgc2l6ZSk7CisgICAgaWYgKG51bV93cml0dGVuIDw9IDApCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobnVtX3dyaXR0ZW4gPCBzaXplKQorICAgICAgICBtX2J1ZmZl
ci5hcHBlbmQoYnVmICsgbnVtX3dyaXR0ZW4sIHNpemUgLSBudW1fd3JpdHRlbik7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6Y2xvc2UoKQorewor
ICAgIHBsYXRmb3JtQ2xvc2UoKTsKKyAgICBtX3N0YXRlID0gQ2xvc2VkOworfQorCitTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQqIFNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OmNsaWVudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fY2xpZW50OworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUJh
c2U6OnNldENsaWVudChTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKK3sKKyAgICBt
X2NsaWVudCA9IGNsaWVudDsKK30KKworYm9vbCBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpzZW5k
UGVuZGluZ0RhdGEoKQoreworICAgIGlmIChtX3N0YXRlICE9IE9wZW4pCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAobV9idWZmZXIuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaW50IG51bV93cml0dGVuID0gcGxhdGZvcm1TZW5kKG1fYnVmZmVyLmRhdGEoKSwg
bV9idWZmZXIuc2l6ZSgpKTsKKyAgICBpZiAobnVtX3dyaXR0ZW4gPD0gMCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIFZlY3RvcjxjaGFyPiByZW1haW5pbmdfZGF0YTsKKyAgICByZW1haW5p
bmdfZGF0YS5hcHBlbmQobV9idWZmZXIuZGF0YSgpICsgbnVtX3dyaXR0ZW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2J1ZmZlci5zaXplKCkgLSBudW1fd3JpdHRlbik7CisgICAgbV9i
dWZmZXIuc3dhcChyZW1haW5pbmdfZGF0YSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gIC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
U29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tl
dFN0cmVhbUhhbmRsZUJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45
Njc0Yzc3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tl
dFN0cmVhbUhhbmRsZUJhc2UuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU29j
a2V0U3RyZWFtSGFuZGxlQmFzZV9oCisjZGVmaW5lIFNvY2tldFN0cmVhbUhhbmRsZUJhc2VfaAor
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBj
bGFzcyBTb2NrZXRTdHJlYW1IYW5kbGU7CisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50OworCisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQmFzZSB7CisgICAgICBwdWJsaWM6
CisgICAgICAgIGVudW0gU29ja2V0U3RyZWFtU3RhdGUgeyBDb25uZWN0aW5nLCBPcGVuLCBDbG9z
ZWQgfTsKKyAgICAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlQmFzZSgpIHt9CisgICAg
ICAgIFNvY2tldFN0cmVhbVN0YXRlIHN0YXRlKCkgY29uc3Q7CisKKyAgICAgICAgYm9vbCBzZW5k
KGNvbnN0IGNoYXIqLCBpbnQpOworICAgICAgICB2b2lkIGNsb3NlKCk7CisgICAgICAgIGludCBi
dWZmZXJlZEFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLnNpemUoKTsgfQorCisgICAg
ICAgIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KCkgY29uc3Q7CisgICAgICAgIHZv
aWQgc2V0Q2xpZW50KFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOworCisgICAgICBwcm90ZWN0
ZWQ6CisgICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UoKTsKKworICAgICAgICBib29sIHNl
bmRQZW5kaW5nRGF0YSgpOworICAgICAgICB2aXJ0dWFsIGludCBwbGF0Zm9ybVNlbmQoY29uc3Qg
Y2hhciosIGludCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DbG9zZSgpID0g
MDsKKworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIG1fY2xpZW50OworICAgICAg
ICBWZWN0b3I8Y2hhcj4gbV9idWZmZXI7CisgICAgICAgIFNvY2tldFN0cmVhbVN0YXRlIG1fc3Rh
dGU7CisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBTb2Nr
ZXRTdHJlYW1IYW5kbGVCYXNlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi41NzBmMGI1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnRfaAorI2RlZmluZSBTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnRfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTsKKyAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFNvY2tldFN0cmVhbUVy
cm9yOworICAgIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZTsKKworICAgIGNsYXNzIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCB7CisgICAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCgpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsT3Bl
blN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBLVVJMJikgeyB9CisgICAgICAgIHZp
cnR1YWwgdm9pZCB3aWxsU2VuZERhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgY2hhcios
IGludCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZE9wZW4oU29ja2V0U3RyZWFtSGFu
ZGxlKikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShTb2NrZXRTdHJlYW1IYW5k
bGUqKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVkRGF0YShTb2NrZXRTdHJl
YW1IYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50KSB7IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbChTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYpIHsg
fQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlZEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikg
eyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oU29ja2V0U3RyZWFt
SGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7IH0KKyAgICB9OworCit9
ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1NvY2tldFN0
cmVhbUVycm9yLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1NvY2tldFN0cmVhbUVy
cm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYyY2RhMwotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvU29ja2V0U3RyZWFtRXJy
b3IuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTb2NrZXRTdHJlYW1FcnJv
cl9oCisjZGVmaW5lIFNvY2tldFN0cmVhbUVycm9yX2gKKworI2luY2x1ZGUgIlNvY2tldFN0cmVh
bUVycm9yQmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTb2NrZXRT
dHJlYW1FcnJvciA6IHB1YmxpYyBTb2NrZXRTdHJlYW1FcnJvckJhc2UgeworICAgICAgcHVibGlj
OgorICAgICAgICBTb2NrZXRTdHJlYW1FcnJvcigpIHt9CisgICAgICAgIGV4cGxpY2l0IFNvY2tl
dFN0cmVhbUVycm9yKGludCBlcnJvckNvZGUpCisgICAgICAgICAgICAgICAgOiBTb2NrZXRTdHJl
YW1FcnJvckJhc2UoZXJyb3JDb2RlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgIH07CisK
K30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gU29ja2V0U3RyZWFtRXJyb3Jf
aApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Tb2NrZXRTdHJlYW1I
YW5kbGVNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1NvY2tldFN0cmVhbUhh
bmRsZU1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjFlM2QwCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Tb2NrZXRTdHJl
YW1IYW5kbGVNYWMubW0KQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKKworI2luY2x1ZGUgIktVUkwu
aCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNp
bmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbCB7CitwdWJsaWM6CisgICAgU29j
a2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwoKSB7fQorICAgIH5Tb2NrZXRTdHJlYW1IYW5kbGVJbnRl
cm5hbCgpIHt9Cit9OworCitTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShj
b25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQorICAgICAg
ICA6IG1fdXJsKHVybCkKK3sKKyAgICBzZXRDbGllbnQoY2xpZW50KTsKKyAgICBMT0coTmV0d29y
aywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50ICVwIiwgdGhpcywgbV9jbGllbnQp
OworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1NvY2tldFN0cmVhbUhhbmRsZTo6flNvY2tl
dFN0cmVhbUhhbmRsZSgpCit7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUg
JXAgZGVsZXRlIiwgdGhpcyk7CisgICAgc2V0Q2xpZW50KDApOworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK2ludCBTb2NrZXRTdHJlYW1IYW5kbGU6OnBsYXRmb3JtU2VuZChjb25zdCBjaGFy
ICosIGludCkKK3sKKyAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBwbGF0
Zm9ybVNlbmQiLCB0aGlzKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOwor
fQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1DbG9zZSgpCit7CisgICAgTE9H
KE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxhdGZvcm1DbG9zZSIsIHRoaXMpOwor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpkaWRS
ZWNlaXZlZEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhh
bmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwg
Y29uc3QgQ3JlZGVudGlhbCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBT
b2NrZXRTdHJlYW1IYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVu
dGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9u
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtRXJyb3IuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUVycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNzYyY2RhMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUVycm9yLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU29ja2V0U3RyZWFtRXJyb3JfaAorI2RlZmluZSBTb2NrZXRTdHJlYW1FcnJv
cl9oCisKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvckJhc2UuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisgICAgY2xhc3MgU29ja2V0U3RyZWFtRXJyb3IgOiBwdWJsaWMgU29ja2V0U3Ry
ZWFtRXJyb3JCYXNlIHsKKyAgICAgIHB1YmxpYzoKKyAgICAgICAgU29ja2V0U3RyZWFtRXJyb3Io
KSB7fQorICAgICAgICBleHBsaWNpdCBTb2NrZXRTdHJlYW1FcnJvcihpbnQgZXJyb3JDb2RlKQor
ICAgICAgICAgICAgICAgIDogU29ja2V0U3RyZWFtRXJyb3JCYXNlKGVycm9yQ29kZSkKKyAgICAg
ICAgeworICAgICAgICB9CisKKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgIC8vIFNvY2tldFN0cmVhbUVycm9yX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzIxZTNkMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwCkBAIC0w
LDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU29j
a2V0U3RyZWFtSGFuZGxlLmgiCisKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU29ja2V0U3Ry
ZWFtSGFuZGxlSW50ZXJuYWwgeworcHVibGljOgorICAgIFNvY2tldFN0cmVhbUhhbmRsZUludGVy
bmFsKCkge30KKyAgICB+U29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwoKSB7fQorfTsKKworU29j
a2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKKyAgICAgICAgOiBtX3VybCh1cmwpCit7Cisg
ICAgc2V0Q2xpZW50KGNsaWVudCk7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5k
bGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCitTb2NrZXRTdHJlYW1IYW5kbGU6On5Tb2NrZXRTdHJlYW1IYW5kbGUoKQorewor
ICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIGRlbGV0ZSIsIHRoaXMpOwor
ICAgIHNldENsaWVudCgwKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitpbnQgU29ja2V0
U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciAqLCBpbnQpCit7CisgICAgTE9H
KE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxhdGZvcm1TZW5kIiwgdGhpcyk7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGU6OnBsYXRmb3JtQ2xvc2UoKQoreworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3Ry
ZWFtSGFuZGxlICVwIHBsYXRmb3JtQ2xvc2UiLCB0aGlzKTsKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6ZGlkUmVjZWl2ZWRBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnJlY2VpdmVkQ3JlZGVu
dGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpy
ZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU29j
a2V0U3RyZWFtSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAgLy8gbmFtZXNw
YWNlIFdlYkNvcmU=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34645</attachid>
            <date>2009-08-12 02:02:07 -0700</date>
            <delta_ts>2009-08-12 02:09:37 -0700</delta_ts>
            <desc>Add SocketStreamHandle interface</desc>
            <filename>bug-28037-20090812180206.patch</filename>
            <type>text/plain</type>
            <size>37452</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmFhMTc1MS4uOTY3YzRjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAwOS0wOC0xMiAgRnVtaXRvc2hpIFVr
YWkgIDx1a2FpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUgaW50ZXJmYWNlIGZvciBXZWJTb2Nr
ZXQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
ODAzNworCisgICAgICAgIEFsbCBidWlsZCBzeXN0ZW1zIG9ubHkgZm9yIEdOVW1ha2VmaWxlLmFt
IGFuZAorICAgICAgICBXZWJDb3JlLnhjb2RlcHJvaiBub3cuCisgICAgICAgIE90aGVyIGJ1aWxk
IHN5c3RlbXMgd2lsbCBiZSB1cGRhdGVkIG9uY2UgdGhlIGNvZGUgaXMKKyAgICAgICAgZnVuY3Rp
b25hbC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5jcHA6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmg6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmg6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFz
ZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9T
b2NrZXRTdHJlYW1FcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21h
Yy9Tb2NrZXRTdHJlYW1IYW5kbGVNYWMubW06IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1FcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHA6IEFkZGVkLgorCiAyMDA5
LTA4LTExICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAxMjI1ODNjLi5iMTBlMWEwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTMxNzcsNyArMzE3NywxNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUv
YmluZGluZ3MvanMvSlNXZWJTb2NrZXRDb25zdHJ1Y3Rvci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAgXAotCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorCVdlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXQuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUVycm9yQmFzZS5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1F
cnJvckJhc2UuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRs
ZS5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5j
cHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmgg
XAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaAor
Cit3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvY2tldFN0cmVhbUVycm9yLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
Y2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwCiAKIGVsc2UKIHdlYmNvcmVfY3BwZmxhZ3MgKz0gLURF
TkFCTEVfV0VCX1NPQ0tFVFM9MApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBmOTlhZTkxLi44OWI3N2Q0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtODMxLDYgKzgzMSwxNCBAQAogCQk0RTE5NTkyRTBBMzlEQUND
MDAyMjBGRTUgLyogTWVkaWFRdWVyeUV4cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEUxOTU5MjgwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlF
eHAuaCAqLzsgfTsKIAkJNTEwMTg0NjkwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY3MEIw
ODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwMTg0NkEwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hl
ZFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICovOyB9OworCQk1MTBE
NEEzMzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTJEMTAzMTY1RUUw
MDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwICovOyB9OworCQk1MTBENEEzNDEw
MzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEyRTEwMzE2NUVFMDA0OUVBNTQg
LyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmggKi87IH07CisJCTUxMEQ0QTM1MTAzMTY1RUUwMDQ5
RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTJGMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1IYW5kbGUuaCAqLzsgfTsKKwkJNTEwRDRBMzYxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0
cmVhbUhhbmRsZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJh
c2UuY3BwICovOyB9OworCQk1MTBENEEzNzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFt
SGFuZGxlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCAq
LzsgfTsKKwkJNTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEw
RDRBMzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICovOyB9
OworCQk1MTBENEEzQTEwMzE2NjVGMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMzkx
MDMxNjY1RjAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZU1hYy5tbSAqLzsgfTsKKwkJNTEw
RDRBM0QxMDMxNjhEQTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzQzEwMzE2OERBMDA0OUVB
NTQgLyogU29ja2V0U3RyZWFtRXJyb3IuaCAqLzsgfTsKIAkJNTExNkQ5NzcwQ0YxNzdCRDAwQzJC
ODREIC8qIERhdGFiYXNlRGV0YWlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTExNkQ5NzUwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWls
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
MUYyMzE3MERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYyMzEzMERDMTYwREEwMDRG
MDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmNwcCAqLzsgfTsKIAkJNTExRjIzMTgwREMxNjBEQTAw
NEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYyMzE0MERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3Jh
Z2VUYXNrLmggKi87IH07CkBAIC01ODc1LDYgKzU4ODMsMTQgQEAKIAkJNEUxOTU5MjgwQTM5REFD
QzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhUXVlcnlFeHAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEw
MTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FjaGVkUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVy
cm9yQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRT
dHJlYW1FcnJvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEEy
RTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUVycm9yQmFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MTBENEEyRjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3Ry
ZWFtSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVh
bUhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEEzMDEwMzE2NUVF
MDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0
cmVhbUhhbmRsZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0
U3RyZWFtSGFuZGxlQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEEz
MjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEEzOTEwMzE2NjVGMDA0OUVBNTQgLyogU29j
a2V0U3RyZWFtSGFuZGxlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gU29ja2V0U3RyZWFtSGFuZGxlTWFjLm1tOyBwYXRoID0gbWFjL1NvY2tldFN0cmVhbUhh
bmRsZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRDRBM0MxMDMxNjhE
QTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNvY2tldFN0cmVhbUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VEZXRhaWxzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxMUYyMzEzMERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3Jh
Z2VUYXNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvY2FsU3Rv
cmFnZVRhc2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFGMjMxNDBEQzE2
MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBMb2NhbFN0b3JhZ2VUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMDQ0Nyw2ICsxMDQ2MywxMyBAQAogCQk2NTZCODRENzBBRUExQ0U5MDBBMDk1QjQgLyog
bmV0d29yayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
NTEwRDRBMzkxMDMxNjY1RjAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZU1hYy5tbSAqLywK
KwkJCQk1MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNw
cCAqLywKKwkJCQk1MTBENEEyRTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JC
YXNlLmggKi8sCisJCQkJNTEwRDRBMkYxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhh
bmRsZS5oICovLAorCQkJCTUxMEQ0QTMwMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1I
YW5kbGVCYXNlLmNwcCAqLywKKwkJCQk1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0
U3RyZWFtSGFuZGxlQmFzZS5oICovLAorCQkJCTUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBT
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLywKIAkJCQlCMkYzNEZFNzBFODJGODE3MDBGNjI3
Q0QgLyogY2YgKi8sCiAJCQkJNjU2Qjg0RTcwQUVBMURBRTAwQTA5NUI0IC8qIG1hYyAqLywKIAkJ
CQk5MzRGNzEzNzBENUE2RUZGMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNl
LmNwcCAqLywKQEAgLTEwNDgzLDYgKzEwNTA2LDcgQEAKIAkJNjU2Qjg0RTcwQUVBMURBRTAwQTA5
NUI0IC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJNTEwRDRBM0MxMDMxNjhEQTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yLmggKi8sCiAJ
CQkJOTM0RjcxNDMwRDVBNkY1MzAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgg
Ki8sCiAJCQkJNTE0Qzc2NDIwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmgg
Ki8sCiAJCQkJNTE0Qzc2NDMwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLm1t
ICovLApAQCAtMTcyNDcsNiArMTcyNzEsMTEgQEAKIAkJCQk0OTQ4NEZDQjEwMkNGMjNDMDAxODdE
RDMgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4
NEZDRTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTEwRDRBMzQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVy
cm9yQmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRDRBMzUxMDMxNjVFRTAwNDlFQTU0IC8q
IFNvY2tldFN0cmVhbUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRDRBMzcxMDMxNjVF
RTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxMEQ0QTM4MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTUxMEQ0QTNEMTAzMTY4REEwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xOTMwMyw2ICsxOTMzMiw5IEBACiAJCQkJNDk0
ODRGQzcxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1BpeGVsQXJyYXkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDk0ODRGQ0ExMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTQ4NEZDRDEwMkNGMjNDMDAxODdERDMgLyog
Q2FudmFzU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwRDRBMzMxMDMxNjVFRTAwNDlF
QTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTBE
NEEzNjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1MTBENEEzQTEwMzE2NjVGMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFu
ZGxlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Tb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjZiOGRmY2QKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworU29ja2V0U3RyZWFtRXJyb3IgU29ja2V0U3RyZWFtRXJyb3JC
YXNlOjpjb3B5KCkgY29uc3QKK3sKKyAgICBTb2NrZXRTdHJlYW1FcnJvciBlcnJvckNvcHk7Cisg
ICAgZXJyb3JDb3B5Lm1fZXJyb3JDb2RlID0gbV9lcnJvckNvZGU7CisgICAgcmV0dXJuIGVycm9y
Q29weTsKK30KKworYm9vbCBTb2NrZXRTdHJlYW1FcnJvckJhc2U6OmNvbXBhcmUoY29uc3QgU29j
a2V0U3RyZWFtRXJyb3ImIGEsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJiBiKQoreworICAgIHJl
dHVybiBhLmVycm9yQ29kZSgpID09IGIuZXJyb3JDb2RlKCk7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3Ry
ZWFtRXJyb3JCYXNlLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJy
b3JCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UwNTVjYQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJv
ckJhc2UuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU29ja2V0U3RyZWFtRXJy
b3JCYXNlX2gKKyNkZWZpbmUgU29ja2V0U3RyZWFtRXJyb3JCYXNlX2gKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisgICAgY2xhc3MgU29ja2V0U3RyZWFtRXJyb3I7CisKKyAgICBjbGFzcyBTb2Nr
ZXRTdHJlYW1FcnJvckJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgLy8gTWFrZXMgYSBkZWVw
IGNvcHkuICBVc2VmdWwgZm9yIHdoZW4geW91IG5lZWQgdG8gdXNlIGEgU29ja2V0U3RyZWFtRXJy
b3Igb24gYW5vdGhlciB0aHJlYWQuCisgICAgICAgIFNvY2tldFN0cmVhbUVycm9yIGNvcHkoKSBj
b25zdDsKKworICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOdWxsOyB9
CisKKyAgICAgICAgaW50IGVycm9yQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JDb2RlOyB9
CisKKyAgICAgICAgc3RhdGljIGJvb2wgY29tcGFyZShjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYs
IGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJik7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIFNv
Y2tldFN0cmVhbUVycm9yQmFzZSgpCisgICAgICAgICAgICA6IG1fZXJyb3JDb2RlKDApCisgICAg
ICAgICAgICAsIG1faXNOdWxsKHRydWUpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAg
IGV4cGxpY2l0IFNvY2tldFN0cmVhbUVycm9yQmFzZShpbnQgZXJyb3JDb2RlKQorICAgICAgICAg
ICAgOiBtX2Vycm9yQ29kZShlcnJvckNvZGUpCisgICAgICAgICAgICAsIG1faXNOdWxsKGZhbHNl
KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBpbnQgbV9lcnJvckNvZGU7CisgICAg
ICAgIGJvb2wgbV9pc051bGw7CisgICAgfTsKKworICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU29ja2V0U3RyZWFtRXJyb3ImIGEsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJiBiKSB7
IHJldHVybiBTb2NrZXRTdHJlYW1FcnJvckJhc2U6OmNvbXBhcmUoYSwgYik7IH0KKyAgICBpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJiBhLCBjb25zdCBTb2Nr
ZXRTdHJlYW1FcnJvciYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CisKK30gIC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gU29ja2V0U3RyZWFtRXJyb3JCYXNlX2gKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42ZjA5YzliCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBTb2NrZXRTdHJlYW1IYW5kbGVfaAorI2RlZmluZSBTb2NrZXRTdHJlYW1I
YW5kbGVfaAorCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRs
ZUJhc2UuaCIKKworI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworICAgIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOworICAgIGNsYXNzIENyZWRl
bnRpYWw7CisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OworICAgIGNsYXNzIFNv
Y2tldFN0cmVhbUhhbmRsZUludGVybmFsOworCisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxl
IDogcHVibGljIFJlZkNvdW50ZWQ8U29ja2V0U3RyZWFtSGFuZGxlPiwgcHVibGljIFNvY2tldFN0
cmVhbUhhbmRsZUJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNvY2tldFN0cmVhbUhh
bmRsZSh1cmwsIGNsaWVudCkpOyB9CisKKyAgICAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFu
ZGxlKCk7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgaW50IHBsYXRmb3JtU2Vu
ZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBs
YXRmb3JtQ2xvc2UoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFNvY2tldFN0cmVhbUhhbmRs
ZShjb25zdCBLVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisKKyAgICAgICAgLy8g
Tm8gYXV0aGVudGljYXRpb24gZm9yIHN0cmVhbXMgcGVyIHNlLCBidXQgcHJveHkgbWF5IGFzayBm
b3IgY3JlZGVudGlhbHMuCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZWRBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworICAgICAgICB2b2lkIHJl
Y2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENy
ZWRlbnRpYWwmKTsKKyAgICAgICAgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91
dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKyAgICAgICAgdm9p
ZCByZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwor
CisgICAgICAgIEtVUkwgbV91cmw7CisKKyAgICAgICAgLy8gcGxhdGZvcm0gc3BlY2lmaWMgZGF0
YQorICAgICAgICBmcmllbmQgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw7CisgICAg
ICAgIE93blB0cjxTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbD4gaW50ZXJuYWw7CisgICAgfTsK
KworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBTb2NrZXRTdHJlYW1IYW5k
bGVfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhh
bmRsZUJhc2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRs
ZUJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4MjMyMzIKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZS5jcHAKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oIgorCisjaW5jbHVkZSAiU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3Qg
aW50IG1heEJ1ZmZlckFtb3VudCA9IDUyNDI4ODsKKworU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6
U29ja2V0U3RyZWFtSGFuZGxlQmFzZSgpCisgICAgOiBtX2NsaWVudCgwKQorICAgICwgbV9zdGF0
ZShDb25uZWN0aW5nKQoreworfQorCitTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpTb2NrZXRTdHJl
YW1TdGF0ZSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpzdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fc3RhdGU7Cit9CisKK2Jvb2wgU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6c2VuZChjb25z
dCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGlmIChtX3N0YXRlID09IENvbm5lY3Rp
bmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fYnVmZmVyLmlzRW1wdHkoKSkg
eworICAgICAgICBpZiAobV9idWZmZXIuc2l6ZSgpICsgbGVuZ3RoID4gbWF4QnVmZmVyQW1vdW50
KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogc2V0IGVycm9yIGNvZGU/CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIGxl
bmd0aCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpbnQgYnl0ZXNXcml0dGVu
ID0gMDsKKyAgICBpZiAobV9zdGF0ZSA9PSBPcGVuKQorICAgICAgICBieXRlc1dyaXR0ZW4gPSBw
bGF0Zm9ybVNlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBpZiAoYnl0ZXNXcml0dGVuIDw9IDApCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9idWZmZXIuc2l6ZSgpICsgbGVuZ3RoIC0g
Ynl0ZXNXcml0dGVuID4gbWF4QnVmZmVyQW1vdW50KSB7CisgICAgICAgIC8vIEZJWE1FOiBzZXQg
ZXJyb3IgY29kZT8KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoYnl0ZXNX
cml0dGVuIDwgbGVuZ3RoKQorICAgICAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSArIGJ5dGVzV3Jp
dHRlbiwgbGVuZ3RoIC0gYnl0ZXNXcml0dGVuKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpjbG9zZSgpCit7CisgICAgcGxhdGZvcm1DbG9zZSgp
OworICAgIG1fc3RhdGUgPSBDbG9zZWQ7Cit9CisKK1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudCog
U29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6Y2xpZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9j
bGllbnQ7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6c2V0Q2xpZW50KFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQoreworICAgIEFTU0VSVCghY2xpZW50IHx8ICgh
bV9jbGllbnQgJiYgbV9zdGF0ZSA9PSBDb25uZWN0aW5nKSk7CisgICAgbV9jbGllbnQgPSBjbGll
bnQ7Cit9CisKK2Jvb2wgU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6c2VuZFBlbmRpbmdEYXRhKCkK
K3sKKyAgICBpZiAobV9zdGF0ZSAhPSBPcGVuKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKG1fYnVmZmVyLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGludCBi
eXRlc1dyaXR0ZW4gPSBwbGF0Zm9ybVNlbmQobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXpl
KCkpOworICAgIGlmIChieXRlc1dyaXR0ZW4gPD0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIFZlY3RvcjxjaGFyPiByZW1haW5pbmdEYXRhOworICAgIEFTU0VSVChtX2J1ZmZlci5zaXpl
KCkgLSBieXRlc1dyaXR0ZW4gPD0gbWF4QnVmZmVyQW1vdW50KTsKKyAgICByZW1haW5pbmdEYXRh
LmFwcGVuZChtX2J1ZmZlci5kYXRhKCkgKyBieXRlc1dyaXR0ZW4sIG1fYnVmZmVyLnNpemUoKSAt
IGJ5dGVzV3JpdHRlbik7CisgICAgbV9idWZmZXIuc3dhcChyZW1haW5pbmdEYXRhKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggYi9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiYmQzMDgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlX2gKKyNkZWZpbmUgU29j
a2V0U3RyZWFtSGFuZGxlQmFzZV9oCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZTsKKyAgICBjbGFz
cyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7CisKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5k
bGVCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGVudW0gU29ja2V0U3RyZWFtU3RhdGUgeyBD
b25uZWN0aW5nLCBPcGVuLCBDbG9zZWQgfTsKKyAgICAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFt
SGFuZGxlQmFzZSgpIHsgfQorICAgICAgICBTb2NrZXRTdHJlYW1TdGF0ZSBzdGF0ZSgpIGNvbnN0
OworCisgICAgICAgIGJvb2wgc2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAg
ICAgICAgdm9pZCBjbG9zZSgpOworICAgICAgICBpbnQgYnVmZmVyZWRBbW91bnQoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KKworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQqIGNsaWVudCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldENsaWVudChTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQqKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgU29ja2V0U3RyZWFt
SGFuZGxlQmFzZSgpOworCisgICAgICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRhKCk7CisgICAgICAg
IHZpcnR1YWwgaW50IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSA9
IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsb3NlKCkgPSAwOworCisgICAgICAg
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogbV9jbGllbnQ7CisgICAgICAgIFZlY3RvcjxjaGFy
PiBtX2J1ZmZlcjsKKyAgICAgICAgU29ja2V0U3RyZWFtU3RhdGUgbV9zdGF0ZTsKKyAgICB9Owor
Cit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIFNvY2tldFN0cmVhbUhhbmRs
ZUJhc2VfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZUNsaWVudC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhh
bmRsZUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNjYxYmUK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50LmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudF9oCisjZGVmaW5lIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudF9oCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OworICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgU29ja2V0U3RyZWFtRXJyb3I7CisgICAgY2xh
c3MgU29ja2V0U3RyZWFtSGFuZGxlOworCisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudCgpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsT3BlblN0cmVhbShTb2NrZXRT
dHJlYW1IYW5kbGUqLCBjb25zdCBLVVJMJikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxs
U2VuZERhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZE9wZW4oU29ja2V0U3RyZWFtSGFuZGxl
KikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShTb2NrZXRTdHJlYW1IYW5kbGUq
KSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVkRGF0YShTb2NrZXRTdHJlYW1I
YW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSB7IH0KKworICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbChTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBTb2NrZXRTdHJlYW1F
cnJvciYpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlZEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oU29j
a2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7IH0KKyAg
ICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1NvY2tldFN0cmVhbUVycm9yLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1NvY2tl
dFN0cmVhbUVycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM0ODQ5
ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvU29ja2V0
U3RyZWFtRXJyb3IuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTb2NrZXRT
dHJlYW1FcnJvcl9oCisjZGVmaW5lIFNvY2tldFN0cmVhbUVycm9yX2gKKworI2luY2x1ZGUgIlNv
Y2tldFN0cmVhbUVycm9yQmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFz
cyBTb2NrZXRTdHJlYW1FcnJvciA6IHB1YmxpYyBTb2NrZXRTdHJlYW1FcnJvckJhc2UgeworICAg
IHB1YmxpYzoKKyAgICAgICAgU29ja2V0U3RyZWFtRXJyb3IoKSB7IH0KKyAgICAgICAgZXhwbGlj
aXQgU29ja2V0U3RyZWFtRXJyb3IoaW50IGVycm9yQ29kZSkKKyAgICAgICAgICAgIDogU29ja2V0
U3RyZWFtRXJyb3JCYXNlKGVycm9yQ29kZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICB9
OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIFNvY2tldFN0cmVhbUVy
cm9yX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvU29ja2V0U3Ry
ZWFtSGFuZGxlTWFjLm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Tb2NrZXRTdHJl
YW1IYW5kbGVNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWExYTEw
YwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvU29ja2V0
U3RyZWFtSGFuZGxlTWFjLm1tCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlLmgiCisKKyNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwgeworcHVibGljOgorICAg
IFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsKCkgeyB9CisgICAgflNvY2tldFN0cmVhbUhhbmRs
ZUludGVybmFsKCkgeyB9Cit9OworCitTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhh
bmRsZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQor
ICAgIDogbV91cmwodXJsKQoreworICAgIHNldENsaWVudChjbGllbnQpOworICAgIExPRyhOZXR3
b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVu
dCk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworU29ja2V0U3RyZWFtSGFuZGxlOjp+U29j
a2V0U3RyZWFtSGFuZGxlKCkKK3sKKyAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRs
ZSAlcCBkZWxldGUiLCB0aGlzKTsKKyAgICBzZXRDbGllbnQoMCk7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKworaW50IFNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1TZW5kKGNvbnN0IGNo
YXIqLCBpbnQpCit7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxh
dGZvcm1TZW5kIiwgdGhpcyk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsK
K30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnBsYXRmb3JtQ2xvc2UoKQoreworICAgIExP
RyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIHBsYXRmb3JtQ2xvc2UiLCB0aGlzKTsK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6ZGlk
UmVjZWl2ZWRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1I
YW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYs
IGNvbnN0IENyZWRlbnRpYWwmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
U29ja2V0U3RyZWFtSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRl
bnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlv
bihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUVycm9yLmggYi9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1FcnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjI0ZDc3MzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1FcnJvci5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFNvY2tldFN0cmVhbUVycm9yX2gKKyNkZWZpbmUgU29ja2V0U3RyZWFtRXJy
b3JfaAorCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3JCYXNlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworICAgIGNsYXNzIFNvY2tldFN0cmVhbUVycm9yIDogcHVibGljIFNvY2tldFN0
cmVhbUVycm9yQmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBTb2NrZXRTdHJlYW1FcnJvcigp
IHt9CisgICAgICAgIGV4cGxpY2l0IFNvY2tldFN0cmVhbUVycm9yKGludCBlcnJvckNvZGUpCisg
ICAgICAgICAgICA6IFNvY2tldFN0cmVhbUVycm9yQmFzZShlcnJvckNvZGUpCisgICAgICAgIHsK
KyAgICAgICAgfQorCisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
ICAvLyBTb2NrZXRTdHJlYW1FcnJvcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmVhMWExMGMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcApAQCAtMCwwICsx
LDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNvY2tldFN0
cmVhbUhhbmRsZS5oIgorCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNvY2tldFN0cmVhbUhh
bmRsZUludGVybmFsIHsKK3B1YmxpYzoKKyAgICBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbCgp
IHsgfQorICAgIH5Tb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbCgpIHsgfQorfTsKKworU29ja2V0
U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fdXJsKHVybCkKK3sKKyAgICBzZXRD
bGllbnQoY2xpZW50KTsKKyAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBu
ZXcgY2xpZW50ICVwIiwgdGhpcywgbV9jbGllbnQpOworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK1NvY2tldFN0cmVhbUhhbmRsZTo6flNvY2tldFN0cmVhbUhhbmRsZSgpCit7CisgICAgTE9H
KE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgZGVsZXRlIiwgdGhpcyk7CisgICAgc2V0
Q2xpZW50KDApOworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2ludCBTb2NrZXRTdHJlYW1I
YW5kbGU6OnBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiwgaW50KQoreworICAgIExPRyhOZXR3b3Jr
LCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIHBsYXRmb3JtU2VuZCIsIHRoaXMpOworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxl
OjpwbGF0Zm9ybUNsb3NlKCkKK3sKKyAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRs
ZSAlcCBwbGF0Zm9ybUNsb3NlIiwgdGhpcyk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmRpZFJlY2VpdmVkQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cmVjZWl2ZWRS
ZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFNvY2tldFN0cmVh
bUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBXZWJD
b3Jl
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34646</attachid>
            <date>2009-08-12 02:09:44 -0700</date>
            <delta_ts>2009-08-19 04:35:33 -0700</delta_ts>
            <desc>Add SocketStreamHandle interface</desc>
            <filename>bug-28037-20090812180942.patch</filename>
            <type>text/plain</type>
            <size>37453</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmFhMTc1MS4uOTY3YzRjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAwOS0wOC0xMiAgRnVtaXRvc2hpIFVr
YWkgIDx1a2FpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUgaW50ZXJmYWNlIGZvciBXZWJTb2Nr
ZXQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
ODAzNworCisgICAgICAgIEFsbCBidWlsZCBzeXN0ZW1zIG9ubHkgZm9yIEdOVW1ha2VmaWxlLmFt
IGFuZAorICAgICAgICBXZWJDb3JlLnhjb2RlcHJvaiBub3cuCisgICAgICAgIE90aGVyIGJ1aWxk
IHN5c3RlbXMgd2lsbCBiZSB1cGRhdGVkIG9uY2UgdGhlIGNvZGUgaXMKKyAgICAgICAgZnVuY3Rp
b25hbC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5jcHA6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmg6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmg6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFz
ZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9T
b2NrZXRTdHJlYW1FcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21h
Yy9Tb2NrZXRTdHJlYW1IYW5kbGVNYWMubW06IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1FcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHA6IEFkZGVkLgorCiAyMDA5
LTA4LTExICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAxMjI1ODNjLi5iMTBlMWEwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTMxNzcsNyArMzE3NywxNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUv
YmluZGluZ3MvanMvSlNXZWJTb2NrZXRDb25zdHJ1Y3Rvci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAgXAotCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorCVdlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXQuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUVycm9yQmFzZS5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1F
cnJvckJhc2UuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRs
ZS5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5j
cHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmgg
XAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaAor
Cit3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvY2tldFN0cmVhbUVycm9yLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
Y2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwCiAKIGVsc2UKIHdlYmNvcmVfY3BwZmxhZ3MgKz0gLURF
TkFCTEVfV0VCX1NPQ0tFVFM9MApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBmOTlhZTkxLi44OWI3N2Q0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtODMxLDYgKzgzMSwxNCBAQAogCQk0RTE5NTkyRTBBMzlEQUND
MDAyMjBGRTUgLyogTWVkaWFRdWVyeUV4cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEUxOTU5MjgwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlF
eHAuaCAqLzsgfTsKIAkJNTEwMTg0NjkwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY3MEIw
ODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwMTg0NkEwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hl
ZFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICovOyB9OworCQk1MTBE
NEEzMzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTJEMTAzMTY1RUUw
MDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwICovOyB9OworCQk1MTBENEEzNDEw
MzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEyRTEwMzE2NUVFMDA0OUVBNTQg
LyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmggKi87IH07CisJCTUxMEQ0QTM1MTAzMTY1RUUwMDQ5
RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTJGMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1IYW5kbGUuaCAqLzsgfTsKKwkJNTEwRDRBMzYxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0
cmVhbUhhbmRsZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJh
c2UuY3BwICovOyB9OworCQk1MTBENEEzNzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFt
SGFuZGxlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCAq
LzsgfTsKKwkJNTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEw
RDRBMzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICovOyB9
OworCQk1MTBENEEzQTEwMzE2NjVGMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMzkx
MDMxNjY1RjAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZU1hYy5tbSAqLzsgfTsKKwkJNTEw
RDRBM0QxMDMxNjhEQTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzQzEwMzE2OERBMDA0OUVB
NTQgLyogU29ja2V0U3RyZWFtRXJyb3IuaCAqLzsgfTsKIAkJNTExNkQ5NzcwQ0YxNzdCRDAwQzJC
ODREIC8qIERhdGFiYXNlRGV0YWlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTExNkQ5NzUwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWls
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
MUYyMzE3MERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYyMzEzMERDMTYwREEwMDRG
MDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmNwcCAqLzsgfTsKIAkJNTExRjIzMTgwREMxNjBEQTAw
NEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYyMzE0MERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3Jh
Z2VUYXNrLmggKi87IH07CkBAIC01ODc1LDYgKzU4ODMsMTQgQEAKIAkJNEUxOTU5MjgwQTM5REFD
QzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhUXVlcnlFeHAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEw
MTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FjaGVkUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVy
cm9yQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRT
dHJlYW1FcnJvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEEy
RTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUVycm9yQmFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MTBENEEyRjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3Ry
ZWFtSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVh
bUhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEEzMDEwMzE2NUVF
MDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0
cmVhbUhhbmRsZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0
U3RyZWFtSGFuZGxlQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEEz
MjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEEzOTEwMzE2NjVGMDA0OUVBNTQgLyogU29j
a2V0U3RyZWFtSGFuZGxlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gU29ja2V0U3RyZWFtSGFuZGxlTWFjLm1tOyBwYXRoID0gbWFjL1NvY2tldFN0cmVhbUhh
bmRsZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRDRBM0MxMDMxNjhE
QTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNvY2tldFN0cmVhbUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VEZXRhaWxzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxMUYyMzEzMERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3Jh
Z2VUYXNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvY2FsU3Rv
cmFnZVRhc2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFGMjMxNDBEQzE2
MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBMb2NhbFN0b3JhZ2VUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMDQ0Nyw2ICsxMDQ2MywxMyBAQAogCQk2NTZCODRENzBBRUExQ0U5MDBBMDk1QjQgLyog
bmV0d29yayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
NTEwRDRBMzkxMDMxNjY1RjAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZU1hYy5tbSAqLywK
KwkJCQk1MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNw
cCAqLywKKwkJCQk1MTBENEEyRTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JC
YXNlLmggKi8sCisJCQkJNTEwRDRBMkYxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhh
bmRsZS5oICovLAorCQkJCTUxMEQ0QTMwMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1I
YW5kbGVCYXNlLmNwcCAqLywKKwkJCQk1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0
U3RyZWFtSGFuZGxlQmFzZS5oICovLAorCQkJCTUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBT
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLywKIAkJCQlCMkYzNEZFNzBFODJGODE3MDBGNjI3
Q0QgLyogY2YgKi8sCiAJCQkJNjU2Qjg0RTcwQUVBMURBRTAwQTA5NUI0IC8qIG1hYyAqLywKIAkJ
CQk5MzRGNzEzNzBENUE2RUZGMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNl
LmNwcCAqLywKQEAgLTEwNDgzLDYgKzEwNTA2LDcgQEAKIAkJNjU2Qjg0RTcwQUVBMURBRTAwQTA5
NUI0IC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJNTEwRDRBM0MxMDMxNjhEQTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yLmggKi8sCiAJ
CQkJOTM0RjcxNDMwRDVBNkY1MzAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgg
Ki8sCiAJCQkJNTE0Qzc2NDIwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmgg
Ki8sCiAJCQkJNTE0Qzc2NDMwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLm1t
ICovLApAQCAtMTcyNDcsNiArMTcyNzEsMTEgQEAKIAkJCQk0OTQ4NEZDQjEwMkNGMjNDMDAxODdE
RDMgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4
NEZDRTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTEwRDRBMzQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVy
cm9yQmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRDRBMzUxMDMxNjVFRTAwNDlFQTU0IC8q
IFNvY2tldFN0cmVhbUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRDRBMzcxMDMxNjVF
RTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxMEQ0QTM4MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTUxMEQ0QTNEMTAzMTY4REEwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xOTMwMyw2ICsxOTMzMiw5IEBACiAJCQkJNDk0
ODRGQzcxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1BpeGVsQXJyYXkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDk0ODRGQ0ExMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTQ4NEZDRDEwMkNGMjNDMDAxODdERDMgLyog
Q2FudmFzU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwRDRBMzMxMDMxNjVFRTAwNDlF
QTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTBE
NEEzNjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1MTBENEEzQTEwMzE2NjVGMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFu
ZGxlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Tb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjZiOGRmY2QKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworU29ja2V0U3RyZWFtRXJyb3IgU29ja2V0U3RyZWFtRXJyb3JC
YXNlOjpjb3B5KCkgY29uc3QKK3sKKyAgICBTb2NrZXRTdHJlYW1FcnJvciBlcnJvckNvcHk7Cisg
ICAgZXJyb3JDb3B5Lm1fZXJyb3JDb2RlID0gbV9lcnJvckNvZGU7CisgICAgcmV0dXJuIGVycm9y
Q29weTsKK30KKworYm9vbCBTb2NrZXRTdHJlYW1FcnJvckJhc2U6OmNvbXBhcmUoY29uc3QgU29j
a2V0U3RyZWFtRXJyb3ImIGEsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJiBiKQoreworICAgIHJl
dHVybiBhLmVycm9yQ29kZSgpID09IGIuZXJyb3JDb2RlKCk7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3Ry
ZWFtRXJyb3JCYXNlLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJy
b3JCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UwNTVjYQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJv
ckJhc2UuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU29ja2V0U3RyZWFtRXJy
b3JCYXNlX2gKKyNkZWZpbmUgU29ja2V0U3RyZWFtRXJyb3JCYXNlX2gKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisgICAgY2xhc3MgU29ja2V0U3RyZWFtRXJyb3I7CisKKyAgICBjbGFzcyBTb2Nr
ZXRTdHJlYW1FcnJvckJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgLy8gTWFrZXMgYSBkZWVw
IGNvcHkuICBVc2VmdWwgZm9yIHdoZW4geW91IG5lZWQgdG8gdXNlIGEgU29ja2V0U3RyZWFtRXJy
b3Igb24gYW5vdGhlciB0aHJlYWQuCisgICAgICAgIFNvY2tldFN0cmVhbUVycm9yIGNvcHkoKSBj
b25zdDsKKworICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOdWxsOyB9
CisKKyAgICAgICAgaW50IGVycm9yQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JDb2RlOyB9
CisKKyAgICAgICAgc3RhdGljIGJvb2wgY29tcGFyZShjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYs
IGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJik7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIFNv
Y2tldFN0cmVhbUVycm9yQmFzZSgpCisgICAgICAgICAgICA6IG1fZXJyb3JDb2RlKDApCisgICAg
ICAgICAgICAsIG1faXNOdWxsKHRydWUpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAg
IGV4cGxpY2l0IFNvY2tldFN0cmVhbUVycm9yQmFzZShpbnQgZXJyb3JDb2RlKQorICAgICAgICAg
ICAgOiBtX2Vycm9yQ29kZShlcnJvckNvZGUpCisgICAgICAgICAgICAsIG1faXNOdWxsKGZhbHNl
KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBpbnQgbV9lcnJvckNvZGU7CisgICAg
ICAgIGJvb2wgbV9pc051bGw7CisgICAgfTsKKworICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU29ja2V0U3RyZWFtRXJyb3ImIGEsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJiBiKSB7
IHJldHVybiBTb2NrZXRTdHJlYW1FcnJvckJhc2U6OmNvbXBhcmUoYSwgYik7IH0KKyAgICBpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJiBhLCBjb25zdCBTb2Nr
ZXRTdHJlYW1FcnJvciYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CisKK30gIC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gU29ja2V0U3RyZWFtRXJyb3JCYXNlX2gKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42ZjA5YzliCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBTb2NrZXRTdHJlYW1IYW5kbGVfaAorI2RlZmluZSBTb2NrZXRTdHJlYW1I
YW5kbGVfaAorCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRs
ZUJhc2UuaCIKKworI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworICAgIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOworICAgIGNsYXNzIENyZWRl
bnRpYWw7CisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OworICAgIGNsYXNzIFNv
Y2tldFN0cmVhbUhhbmRsZUludGVybmFsOworCisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxl
IDogcHVibGljIFJlZkNvdW50ZWQ8U29ja2V0U3RyZWFtSGFuZGxlPiwgcHVibGljIFNvY2tldFN0
cmVhbUhhbmRsZUJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNvY2tldFN0cmVhbUhh
bmRsZSh1cmwsIGNsaWVudCkpOyB9CisKKyAgICAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFu
ZGxlKCk7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgaW50IHBsYXRmb3JtU2Vu
ZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBs
YXRmb3JtQ2xvc2UoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFNvY2tldFN0cmVhbUhhbmRs
ZShjb25zdCBLVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisKKyAgICAgICAgLy8g
Tm8gYXV0aGVudGljYXRpb24gZm9yIHN0cmVhbXMgcGVyIHNlLCBidXQgcHJveHkgbWF5IGFzayBm
b3IgY3JlZGVudGlhbHMuCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZWRBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworICAgICAgICB2b2lkIHJl
Y2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENy
ZWRlbnRpYWwmKTsKKyAgICAgICAgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91
dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKyAgICAgICAgdm9p
ZCByZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwor
CisgICAgICAgIEtVUkwgbV91cmw7CisKKyAgICAgICAgLy8gcGxhdGZvcm0gc3BlY2lmaWMgZGF0
YQorICAgICAgICBmcmllbmQgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw7CisgICAg
ICAgIE93blB0cjxTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbD4gaW50ZXJuYWw7CisgICAgfTsK
KworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBTb2NrZXRTdHJlYW1IYW5k
bGVfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhh
bmRsZUJhc2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRs
ZUJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4MjMyMzIKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZS5jcHAKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oIgorCisjaW5jbHVkZSAiU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3Qg
aW50IG1heEJ1ZmZlckFtb3VudCA9IDUyNDI4ODsKKworU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6
U29ja2V0U3RyZWFtSGFuZGxlQmFzZSgpCisgICAgOiBtX2NsaWVudCgwKQorICAgICwgbV9zdGF0
ZShDb25uZWN0aW5nKQoreworfQorCitTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpTb2NrZXRTdHJl
YW1TdGF0ZSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpzdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fc3RhdGU7Cit9CisKK2Jvb2wgU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6c2VuZChjb25z
dCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGlmIChtX3N0YXRlID09IENvbm5lY3Rp
bmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fYnVmZmVyLmlzRW1wdHkoKSkg
eworICAgICAgICBpZiAobV9idWZmZXIuc2l6ZSgpICsgbGVuZ3RoID4gbWF4QnVmZmVyQW1vdW50
KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogc2V0IGVycm9yIGNvZGU/CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIGxl
bmd0aCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpbnQgYnl0ZXNXcml0dGVu
ID0gMDsKKyAgICBpZiAobV9zdGF0ZSA9PSBPcGVuKQorICAgICAgICBieXRlc1dyaXR0ZW4gPSBw
bGF0Zm9ybVNlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBpZiAoYnl0ZXNXcml0dGVuIDw9IDApCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9idWZmZXIuc2l6ZSgpICsgbGVuZ3RoIC0g
Ynl0ZXNXcml0dGVuID4gbWF4QnVmZmVyQW1vdW50KSB7CisgICAgICAgIC8vIEZJWE1FOiBzZXQg
ZXJyb3IgY29kZT8KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoYnl0ZXNX
cml0dGVuIDwgbGVuZ3RoKQorICAgICAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSArIGJ5dGVzV3Jp
dHRlbiwgbGVuZ3RoIC0gYnl0ZXNXcml0dGVuKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpjbG9zZSgpCit7CisgICAgcGxhdGZvcm1DbG9zZSgp
OworICAgIG1fc3RhdGUgPSBDbG9zZWQ7Cit9CisKK1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudCog
U29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6Y2xpZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9j
bGllbnQ7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6c2V0Q2xpZW50KFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQoreworICAgIEFTU0VSVCghY2xpZW50IHx8ICgh
bV9jbGllbnQgJiYgbV9zdGF0ZSA9PSBDb25uZWN0aW5nKSk7CisgICAgbV9jbGllbnQgPSBjbGll
bnQ7Cit9CisKK2Jvb2wgU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6c2VuZFBlbmRpbmdEYXRhKCkK
K3sKKyAgICBpZiAobV9zdGF0ZSAhPSBPcGVuKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKG1fYnVmZmVyLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGludCBi
eXRlc1dyaXR0ZW4gPSBwbGF0Zm9ybVNlbmQobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXpl
KCkpOworICAgIGlmIChieXRlc1dyaXR0ZW4gPD0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIFZlY3RvcjxjaGFyPiByZW1haW5pbmdEYXRhOworICAgIEFTU0VSVChtX2J1ZmZlci5zaXpl
KCkgLSBieXRlc1dyaXR0ZW4gPD0gbWF4QnVmZmVyQW1vdW50KTsKKyAgICByZW1haW5pbmdEYXRh
LmFwcGVuZChtX2J1ZmZlci5kYXRhKCkgKyBieXRlc1dyaXR0ZW4sIG1fYnVmZmVyLnNpemUoKSAt
IGJ5dGVzV3JpdHRlbik7CisgICAgbV9idWZmZXIuc3dhcChyZW1haW5pbmdEYXRhKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggYi9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiYmQzMDgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlX2gKKyNkZWZpbmUgU29j
a2V0U3RyZWFtSGFuZGxlQmFzZV9oCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZTsKKyAgICBjbGFz
cyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7CisKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5k
bGVCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGVudW0gU29ja2V0U3RyZWFtU3RhdGUgeyBD
b25uZWN0aW5nLCBPcGVuLCBDbG9zZWQgfTsKKyAgICAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFt
SGFuZGxlQmFzZSgpIHsgfQorICAgICAgICBTb2NrZXRTdHJlYW1TdGF0ZSBzdGF0ZSgpIGNvbnN0
OworCisgICAgICAgIGJvb2wgc2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAg
ICAgICAgdm9pZCBjbG9zZSgpOworICAgICAgICBpbnQgYnVmZmVyZWRBbW91bnQoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KKworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQqIGNsaWVudCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldENsaWVudChTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQqKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgU29ja2V0U3RyZWFt
SGFuZGxlQmFzZSgpOworCisgICAgICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRhKCk7CisgICAgICAg
IHZpcnR1YWwgaW50IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSA9
IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsb3NlKCkgPSAwOworCisgICAgICAg
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogbV9jbGllbnQ7CisgICAgICAgIFZlY3RvcjxjaGFy
PiBtX2J1ZmZlcjsKKyAgICAgICAgU29ja2V0U3RyZWFtU3RhdGUgbV9zdGF0ZTsKKyAgICB9Owor
Cit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIFNvY2tldFN0cmVhbUhhbmRs
ZUJhc2VfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZUNsaWVudC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhh
bmRsZUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNjYxYmUK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50LmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudF9oCisjZGVmaW5lIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudF9oCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OworICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgU29ja2V0U3RyZWFtRXJyb3I7CisgICAgY2xh
c3MgU29ja2V0U3RyZWFtSGFuZGxlOworCisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudCgpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsT3BlblN0cmVhbShTb2NrZXRT
dHJlYW1IYW5kbGUqLCBjb25zdCBLVVJMJikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxs
U2VuZERhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZE9wZW4oU29ja2V0U3RyZWFtSGFuZGxl
KikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShTb2NrZXRTdHJlYW1IYW5kbGUq
KSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVkRGF0YShTb2NrZXRTdHJlYW1I
YW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSB7IH0KKworICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbChTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBTb2NrZXRTdHJlYW1F
cnJvciYpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlZEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oU29j
a2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7IH0KKyAg
ICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1NvY2tldFN0cmVhbUVycm9yLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1NvY2tl
dFN0cmVhbUVycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM0ODQ5
ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvU29ja2V0
U3RyZWFtRXJyb3IuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTb2NrZXRT
dHJlYW1FcnJvcl9oCisjZGVmaW5lIFNvY2tldFN0cmVhbUVycm9yX2gKKworI2luY2x1ZGUgIlNv
Y2tldFN0cmVhbUVycm9yQmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFz
cyBTb2NrZXRTdHJlYW1FcnJvciA6IHB1YmxpYyBTb2NrZXRTdHJlYW1FcnJvckJhc2UgeworICAg
IHB1YmxpYzoKKyAgICAgICAgU29ja2V0U3RyZWFtRXJyb3IoKSB7IH0KKyAgICAgICAgZXhwbGlj
aXQgU29ja2V0U3RyZWFtRXJyb3IoaW50IGVycm9yQ29kZSkKKyAgICAgICAgICAgIDogU29ja2V0
U3RyZWFtRXJyb3JCYXNlKGVycm9yQ29kZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICB9
OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIFNvY2tldFN0cmVhbUVy
cm9yX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvU29ja2V0U3Ry
ZWFtSGFuZGxlTWFjLm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Tb2NrZXRTdHJl
YW1IYW5kbGVNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWExYTEw
YwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvU29ja2V0
U3RyZWFtSGFuZGxlTWFjLm1tCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlLmgiCisKKyNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwgeworcHVibGljOgorICAg
IFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsKCkgeyB9CisgICAgflNvY2tldFN0cmVhbUhhbmRs
ZUludGVybmFsKCkgeyB9Cit9OworCitTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhh
bmRsZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQor
ICAgIDogbV91cmwodXJsKQoreworICAgIHNldENsaWVudChjbGllbnQpOworICAgIExPRyhOZXR3
b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVu
dCk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworU29ja2V0U3RyZWFtSGFuZGxlOjp+U29j
a2V0U3RyZWFtSGFuZGxlKCkKK3sKKyAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRs
ZSAlcCBkZWxldGUiLCB0aGlzKTsKKyAgICBzZXRDbGllbnQoMCk7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKworaW50IFNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1TZW5kKGNvbnN0IGNo
YXIqLCBpbnQpCit7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxh
dGZvcm1TZW5kIiwgdGhpcyk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsK
K30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnBsYXRmb3JtQ2xvc2UoKQoreworICAgIExP
RyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIHBsYXRmb3JtQ2xvc2UiLCB0aGlzKTsK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6ZGlk
UmVjZWl2ZWRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1I
YW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYs
IGNvbnN0IENyZWRlbnRpYWwmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
U29ja2V0U3RyZWFtSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRl
bnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlv
bihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUVycm9yLmggYi9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1FcnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmUzNDg0OWYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1FcnJvci5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFNvY2tldFN0cmVhbUVycm9yX2gKKyNkZWZpbmUgU29ja2V0U3RyZWFtRXJy
b3JfaAorCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3JCYXNlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworICAgIGNsYXNzIFNvY2tldFN0cmVhbUVycm9yIDogcHVibGljIFNvY2tldFN0
cmVhbUVycm9yQmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBTb2NrZXRTdHJlYW1FcnJvcigp
IHsgfQorICAgICAgICBleHBsaWNpdCBTb2NrZXRTdHJlYW1FcnJvcihpbnQgZXJyb3JDb2RlKQor
ICAgICAgICAgICAgOiBTb2NrZXRTdHJlYW1FcnJvckJhc2UoZXJyb3JDb2RlKQorICAgICAgICB7
CisgICAgICAgIH0KKworICAgIH07CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAgLy8gU29ja2V0U3RyZWFtRXJyb3JfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5lYTFhMTBjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHAKQEAgLTAsMCAr
MSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTb2NrZXRT
dHJlYW1IYW5kbGUuaCIKKworI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTb2NrZXRTdHJlYW1I
YW5kbGVJbnRlcm5hbCB7CitwdWJsaWM6CisgICAgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwo
KSB7IH0KKyAgICB+U29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwoKSB7IH0KK307CisKK1NvY2tl
dFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwmIHVybCwgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX3VybCh1cmwpCit7CisgICAgc2V0
Q2xpZW50KGNsaWVudCk7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAg
bmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCitTb2NrZXRTdHJlYW1IYW5kbGU6On5Tb2NrZXRTdHJlYW1IYW5kbGUoKQoreworICAgIExP
RyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIGRlbGV0ZSIsIHRoaXMpOworICAgIHNl
dENsaWVudCgwKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitpbnQgU29ja2V0U3RyZWFt
SGFuZGxlOjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciosIGludCkKK3sKKyAgICBMT0coTmV0d29y
aywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBwbGF0Zm9ybVNlbmQiLCB0aGlzKTsKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRs
ZTo6cGxhdGZvcm1DbG9zZSgpCit7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5k
bGUgJXAgcGxhdGZvcm1DbG9zZSIsIHRoaXMpOworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpkaWRSZWNlaXZlZEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnJlY2VpdmVk
UmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9ICAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>35115</attachid>
            <date>2009-08-19 04:35:40 -0700</date>
            <delta_ts>2009-08-19 22:54:12 -0700</delta_ts>
            <desc>Add SocketStreamHandle interface</desc>
            <filename>bug-28037-20090819203538.patch</filename>
            <type>text/plain</type>
            <size>45345</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjM1ODlmMy4uNGVlZTFkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAwOS0wOC0xOSAgRnVtaXRvc2hpIFVr
YWkgIDx1a2FpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUgaW50ZXJmYWNlIGZvciBXZWJTb2Nr
ZXQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
ODAzNworCisgICAgICAgIEFsbCBidWlsZCBzeXN0ZW1zIG9ubHkgZm9yIEdOVW1ha2VmaWxlLmFt
IGFuZAorICAgICAgICBXZWJDb3JlLnhjb2RlcHJvaiBub3cuCisgICAgICAgIE90aGVyIGJ1aWxk
IHN5c3RlbXMgd2lsbCBiZSB1cGRhdGVkIG9uY2UgdGhlIGNvZGUgaXMKKyAgICAgICAgZnVuY3Rp
b25hbC4KKworICAgICAgICBUZXN0cyB3aWxsIGJlIGxhbmRlZCBvbmNlIHRoaXMgY29kZSBpcyBj
b21wbGV0ZSBhbmQgZnVuY3Rpb25hbC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmg6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHA6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUVycm9y
Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFu
ZGxlLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFt
SGFuZGxlQ0ZOZXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U29ja2V0U3RyZWFtRXJyb3IuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvY2tldFN0cmVhbUhhbmRsZS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHA6IEFkZGVkLgorCiAyMDA5LTA4LTE4
ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgT2xpdmVyIEh1bnQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBlMjI0MGY3Li5kMTdmODA5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTMy
MTIsOSArMzIxMiwxOSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3Mv
anMvSlNXZWJTb2NrZXRDb25zdHJ1Y3Rvci5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJTb2NrZXRDb25zdHJ1Y3Rvci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0
Q3VzdG9tLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9y
QmFzZS5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvckJh
c2UuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2Uu
Y3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5o
IFwKKwlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Lmgg
XAogCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIFwKIAlXZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmgKIAord2ViY29yZWd0a19zb3VyY2VzICs9IFwKKwlXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1FcnJvci5oIFwKKwlXZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHAKKwogZWxzZQogd2ViY29yZV9j
cHBmbGFncyArPSAtREVOQUJMRV9XRUJfU09DS0VUUz0wCiBlbmRpZiAgIyBFTkQgRU5BQkxFX1dF
Ql9TT0NLRVRTCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGM3YzczNjUuLjNkNTYwNjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC04MzAsNiArODMwLDExIEBACiAJCTRFMTk1OTJFMEEzOURBQ0MwMDIyMEZFNSAv
KiBNZWRpYVF1ZXJ5RXhwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0RTE5NTkyODBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV4cC5oICovOyB9
OwogCQk1MTAxODQ2OTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjcwQjA4NjAyQTAwNEE4
MjVGIC8qIENhY2hlZFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MTAxODQ2QTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2ODBC
MDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi87IH07CisJCTUxMEQ0QTMzMTAzMTY1
RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0IC8q
IFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi87IH07CisJCTUxMEQ0QTM0MTAzMTY1RUUwMDQ5
RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTJFMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRT
dHJlYW1FcnJvckJhc2UuaCAqLzsgfTsKKwkJNTEwRDRBMzYxMDMxNjVFRTAwNDlFQTU0IC8qIFNv
Y2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhh
bmRsZUJhc2UuY3BwICovOyB9OworCQk1MTBENEEzNzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0
U3RyZWFtSGFuZGxlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJh
c2UuaCAqLzsgfTsKKwkJNTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEwRDRBMzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5o
ICovOyB9OwogCQk1MTE2RDk3NzBDRjE3N0JEMDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTE2RDk3NTBD
RjE3N0JEMDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTExRjIzMTcwREMxNjBEQTAwNEYwMDMyIC8q
IExvY2FsU3RvcmFnZVRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTExRjIzMTMwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2su
Y3BwICovOyB9OwogCQk1MTFGMjMxODBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFz
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjIz
MTQwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suaCAqLzsgfTsKQEAgLTkxMyw2
ICs5MTgsOSBAQAogCQk1MUE5MjY3RTBENTNGMDU3MDA2M0VDQzIgLyogT3JpZ2luVXNhZ2VSZWNv
cmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFB
OTI2N0EwRDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblVzYWdlUmVjb3JkLmNwcCAqLzsgfTsKIAkJ
NTFBOTI2N0YwRDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblVzYWdlUmVjb3JkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE5MjY3QjBENTNGMDU3MDA2
M0VDQzIgLyogT3JpZ2luVXNhZ2VSZWNvcmQuaCAqLzsgfTsKIAkJNTFBQTNGNkYwQkQ1QUE5RTAw
ODkyOTcxIC8qIFJlc291cmNlTG9hZGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQTNGNkUwQkQ1QUE5RTAwODkyOTcxIC8qIFJlc291cmNl
TG9hZGVyTWFjLm1tICovOyB9OworCQk1MUFCQUUxQjEwM0MxOEZGMDA4QzUyNjAgLyogU29ja2V0
U3RyZWFtRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQUJBRTFBMTAzQzE4RkYwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oICovOyB9
OworCQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUxQzEwM0Mx
OTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggKi87IH07CisJCTUxQUJBRTFGMTAz
QzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUxRDEwM0MxOTEzMDA4QzUy
NjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwICovOyB9OwogCQk1MUIyNDE3QjBEOTMx
RjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjI0MTdBMEQ5MzFGM0YwMEU4M0Y1QyAvKiBM
ZWdhY3lXZWJBcmNoaXZlTWFjLm1tICovOyB9OwogCQk1MUJFMzdFMDBEQUVFMDBFMDAxMDg1RkMg
LyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oICovOyB9Owog
CQk1MUMwQUEzOTBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzBBQTM4MEYyQUExMEEwMDE2NDhD
MiAvKiBDYWNoZWRGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC01ODkzLDYgKzU5MDEsMTEgQEAKIAkJNEUxOTU5MjgwQTM5REFDQzAwMjIw
RkU1IC8qIE1lZGlhUXVlcnlFeHAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1lZGlhUXVlcnlFeHAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMTg0Njcw
QjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2FjaGVkUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAx
ODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1F
cnJvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEEyRTEwMzE2
NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUVycm9yQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MTBENEEzMDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRT
dHJlYW1IYW5kbGVCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRDRB
MzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTE2RDk3NTBDRjE3N0JEMDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlRGV0YWlscy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTFGMjMxMzBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFz
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhbFN0b3JhZ2VU
YXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRjIzMTQwREMxNjBEQTAw
NEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTG9jYWxTdG9yYWdlVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTk4Myw2ICs1OTk2LDkgQEAKIAkJNTFBOTI2N0EwRDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblVz
YWdlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9yaWdp
blVzYWdlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBOTI2N0Iw
RDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblVzYWdlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE9yaWdpblVzYWdlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxQUEzRjZFMEJENUFBOUUwMDg5Mjk3MSAvKiBSZXNvdXJjZUxvYWRlck1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlTG9hZGVy
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUFCQUUxQTEwM0MxOEZGMDA4
QzUyNjAgLyogU29ja2V0U3RyZWFtRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gU29ja2V0U3RyZWFtRXJyb3IuaDsgcGF0aCA9IGNmL1NvY2tldFN0cmVhbUVycm9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQUJBRTFDMTAzQzE5MTMwMDhDNTI2MCAv
KiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
U29ja2V0U3RyZWFtSGFuZGxlLmg7IHBhdGggPSBjZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFMUQxMDNDMTkxMzAwOEM1MjYwIC8qIFNv
Y2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDsgcGF0aCA9IGNmL1NvY2tldFN0cmVh
bUhhbmRsZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMjQxN0Ew
RDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJFMzdERTBEQUVFMDBFMDAxMDg1RkMgLyogU3RvcmFn
ZUFyZWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUFyZWEuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8q
IENhY2hlZEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEZy
YW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDQ4OCw2ICsxMDUwNCwxMSBA
QAogCQk2NTZCODRENzBBRUExQ0U5MDBBMDk1QjQgLyogbmV0d29yayAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0
IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi8sCisJCQkJNTEwRDRBMkUxMDMxNjVFRTAw
NDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5oICovLAorCQkJCTUxMEQ0QTMwMTAzMTY1
RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCAqLywKKwkJCQk1MTBENEEz
MTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oICovLAorCQkJCTUx
MEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLywK
IAkJCQlCMkYzNEZFNzBFODJGODE3MDBGNjI3Q0QgLyogY2YgKi8sCiAJCQkJNjU2Qjg0RTcwQUVB
MURBRTAwQTA5NUI0IC8qIG1hYyAqLywKIAkJCQk5MzRGNzEzNzBENUE2RUZGMDAwMThENjkgLyog
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNwcCAqLywKQEAgLTEzNjY1LDYgKzEzNjg2LDkg
QEAKIAkJQjJGMzRGRTcwRTgyRjgxNzAwRjYyN0NEIC8qIGNmICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MUFCQUUxQzEwM0MxOTEzMDA4QzUyNjAgLyog
U29ja2V0U3RyZWFtSGFuZGxlLmggKi8sCisJCQkJNTFBQkFFMUQxMDNDMTkxMzAwOEM1MjYwIC8q
IFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCAqLywKKwkJCQk1MUFCQUUxQTEwM0MxOEZGMDA4
QzUyNjAgLyogU29ja2V0U3RyZWFtRXJyb3IuaCAqLywKIAkJCQlCMkYzNEZFODBFODJGODI3MDBG
NjI3Q0QgLyogRE5TQ0ZOZXQuY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBjZjsKQEAgLTE3MzE2
LDYgKzE3MzQwLDExIEBACiAJCQkJQjVDMTEyM0MxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5z
YWN0aW9uQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUQ4QjYxNTJGMTAzMjQ5NTEw
MEM4NTU0QSAvKiBDb29raWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkE5MzA4MTAzMzMxOTMw
MDdCMjVEMSAvKiBSZW5kZXJPdmVyZmxvdy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRDRBMzQx
MDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTEwRDRBMzcxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2Uu
aCBpbiBIZWFkZXJzICovLAorCQkJCTUxMEQ0QTM4MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQUJBRTFCMTAzQzE4RkYw
MDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFBQkFF
MUUxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0xOTM4Miw2ICsxOTQxMSw5IEBACiAJCQkJOTM5MjI2MkQxMDMyMTA3QjAwNkU3RDVEIC8q
IEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5MjI2
MkYxMDMyMTA4NDAwNkU3RDVEIC8qIEpTQ1NTUnVsZUxpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjVDMTEyM0IxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRp
bmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwRDRBMzMxMDMxNjVFRTAwNDlFQTU0IC8q
IFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTBENEEzNjEw
MzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZO
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
b2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjcyZmI0NGMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
U29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1NvY2tldFN0cmVhbUVycm9yIFNvY2tldFN0cmVhbUVycm9yQmFzZTo6Y29weSgpIGNv
bnN0Cit7CisgICAgU29ja2V0U3RyZWFtRXJyb3IgZXJyb3JDb3B5OworICAgIGVycm9yQ29weS5t
X2Vycm9yQ29kZSA9IG1fZXJyb3JDb2RlOworICAgIHJldHVybiBlcnJvckNvcHk7Cit9CisKK2Jv
b2wgU29ja2V0U3RyZWFtRXJyb3JCYXNlOjpjb21wYXJlKGNvbnN0IFNvY2tldFN0cmVhbUVycm9y
JiBhLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYgYikKK3sKKyAgICByZXR1cm4gYS5lcnJvckNv
ZGUoKSA9PSBiLmVycm9yQ29kZSgpOworfQorCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3Y2EzNWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmgKQEAgLTAs
MCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBTb2NrZXRTdHJlYW1FcnJvckJhc2VfaAorI2RlZmluZSBTb2NrZXRT
dHJlYW1FcnJvckJhc2VfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTb2Nr
ZXRTdHJlYW1FcnJvcjsKKworICAgIGNsYXNzIFNvY2tldFN0cmVhbUVycm9yQmFzZSB7CisgICAg
cHVibGljOgorICAgICAgICAvLyBNYWtlcyBhIGRlZXAgY29weS4gIFVzZWZ1bCBmb3Igd2hlbiB5
b3UgbmVlZCB0byB1c2UgYSBTb2NrZXRTdHJlYW1FcnJvciBvbiBhbm90aGVyIHRocmVhZC4KKyAg
ICAgICAgU29ja2V0U3RyZWFtRXJyb3IgY29weSgpIGNvbnN0OworCisgICAgICAgIGJvb2wgaXNO
dWxsKCkgY29uc3QgeyByZXR1cm4gbV9pc051bGw7IH0KKworICAgICAgICBpbnQgZXJyb3JDb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9lcnJvckNvZGU7IH0KKworICAgICAgICBzdGF0aWMgYm9vbCBj
b21wYXJlKGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJiwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3Im
KTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgU29ja2V0U3RyZWFtRXJyb3JCYXNlKCkKKyAg
ICAgICAgICAgIDogbV9lcnJvckNvZGUoMCkKKyAgICAgICAgICAgICwgbV9pc051bGwodHJ1ZSkK
KyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgZXhwbGljaXQgU29ja2V0U3RyZWFtRXJy
b3JCYXNlKGludCBlcnJvckNvZGUpCisgICAgICAgICAgICA6IG1fZXJyb3JDb2RlKGVycm9yQ29k
ZSkKKyAgICAgICAgICAgICwgbV9pc051bGwoZmFsc2UpCisgICAgICAgIHsKKyAgICAgICAgfQor
CisgICAgICAgIGludCBtX2Vycm9yQ29kZTsKKyAgICAgICAgYm9vbCBtX2lzTnVsbDsKKyAgICB9
OworCisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYg
YSwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImIGIpIHsgcmV0dXJuIFNvY2tldFN0cmVhbUVycm9y
QmFzZTo6Y29tcGFyZShhLCBiKTsgfQorICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
U29ja2V0U3RyZWFtRXJyb3ImIGEsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJiBiKSB7IHJldHVy
biAhKGEgPT0gYik7IH0KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBT
b2NrZXRTdHJlYW1FcnJvckJhc2VfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjZiZjExMmUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCIKKworI2luY2x1
ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NvbnN0IGludCBidWZmZXJTaXplID0gMTAwICogMTAyNCAqIDEwMjQ7CisKK1NvY2tldFN0cmVh
bUhhbmRsZUJhc2U6OlNvY2tldFN0cmVhbUhhbmRsZUJhc2UoKQorICAgIDogbV9jbGllbnQoMCkK
KyAgICAsIG1fc3RhdGUoQ29ubmVjdGluZykKK3sKK30KKworU29ja2V0U3RyZWFtSGFuZGxlQmFz
ZTo6U29ja2V0U3RyZWFtU3RhdGUgU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6c3RhdGUoKSBjb25z
dAoreworICAgIHJldHVybiBtX3N0YXRlOworfQorCitib29sIFNvY2tldFN0cmVhbUhhbmRsZUJh
c2U6OnNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBpZiAobV9zdGF0
ZSA9PSBDb25uZWN0aW5nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2J1ZmZl
ci5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKG1fYnVmZmVyLnNpemUoKSArIGxlbmd0aCA+IGJ1
ZmZlclNpemUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiByZXBvcnQgZXJyb3IgdG8gaW5kaWNh
dGUgdGhhdCBidWZmZXIgaGFzIG5vIG1vcmUgc3BhY2UuCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpbnQgYnl0ZXNXcml0dGVuID0gMDsKKyAg
ICBpZiAobV9zdGF0ZSA9PSBPcGVuKQorICAgICAgICBieXRlc1dyaXR0ZW4gPSBwbGF0Zm9ybVNl
bmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBpZiAoYnl0ZXNXcml0dGVuIDw9IDApCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobV9idWZmZXIuc2l6ZSgpICsgbGVuZ3RoIC0gYnl0ZXNXcml0
dGVuID4gYnVmZmVyU2l6ZSkgeworICAgICAgICAvLyBGSVhNRTogcmVwb3J0IGVycm9yIHRvIGlu
ZGljYXRlIHRoYXQgYnVmZmVyIGhhcyBubyBtb3JlIHNwYWNlLgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIGlmIChieXRlc1dyaXR0ZW4gPCBsZW5ndGgpCisgICAgICAgIG1fYnVm
ZmVyLmFwcGVuZChkYXRhICsgYnl0ZXNXcml0dGVuLCBsZW5ndGggLSBieXRlc1dyaXR0ZW4pOwor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OmNsb3Nl
KCkKK3sKKyAgICBwbGF0Zm9ybUNsb3NlKCk7CisgICAgbV9zdGF0ZSA9IENsb3NlZDsKK30KKwor
dm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpzZXRDbGllbnQoU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJUKCFjbGllbnQgfHwgKCFtX2NsaWVudCAmJiBt
X3N0YXRlID09IENvbm5lY3RpbmcpKTsKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKK30KKworYm9v
bCBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpzZW5kUGVuZGluZ0RhdGEoKQoreworICAgIGlmICht
X3N0YXRlICE9IE9wZW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9idWZmZXIu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaW50IGJ5dGVzV3JpdHRlbiA9
IHBsYXRmb3JtU2VuZChtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSk7CisgICAgaWYg
KGJ5dGVzV3JpdHRlbiA8PSAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgVmVjdG9yPGNo
YXI+IHJlbWFpbmluZ0RhdGE7CisgICAgQVNTRVJUKG1fYnVmZmVyLnNpemUoKSAtIGJ5dGVzV3Jp
dHRlbiA8PSBidWZmZXJTaXplKTsKKyAgICByZW1haW5pbmdEYXRhLmFwcGVuZChtX2J1ZmZlci5k
YXRhKCkgKyBieXRlc1dyaXR0ZW4sIG1fYnVmZmVyLnNpemUoKSAtIGJ5dGVzV3JpdHRlbik7Cisg
ICAgbV9idWZmZXIuc3dhcChyZW1haW5pbmdEYXRhKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
fSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
U29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjk1ZDlhNjkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
U29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU29ja2V0U3Ry
ZWFtSGFuZGxlQmFzZV9oCisjZGVmaW5lIFNvY2tldFN0cmVhbUhhbmRsZUJhc2VfaAorCisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBT
b2NrZXRTdHJlYW1IYW5kbGU7CisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Owor
CisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQmFzZSB7CisgICAgcHVibGljOgorICAgICAg
ICBlbnVtIFNvY2tldFN0cmVhbVN0YXRlIHsgQ29ubmVjdGluZywgT3BlbiwgQ2xvc2VkIH07Cisg
ICAgICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZUJhc2UoKSB7IH0KKyAgICAgICAgU29j
a2V0U3RyZWFtU3RhdGUgc3RhdGUoKSBjb25zdDsKKworICAgICAgICBib29sIHNlbmQoY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCk7CisgICAgICAgIHZvaWQgY2xvc2UoKTsKKyAgICAgICAg
aW50IGJ1ZmZlcmVkQW1vdW50KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuc2l6ZSgpOyB9CisK
KyAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVy
biBtX2NsaWVudDsgfQorICAgICAgICB2b2lkIHNldENsaWVudChTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQqKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxlQmFz
ZSgpOworCisgICAgICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRhKCk7CisgICAgICAgIHZpcnR1YWwg
aW50IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsb3NlKCkgPSAwOworCisgICAgICAgIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCogbV9jbGllbnQ7CisgICAgICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZl
cjsKKyAgICAgICAgU29ja2V0U3RyZWFtU3RhdGUgbV9zdGF0ZTsKKyAgICB9OworCit9ICAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIFNvY2tldFN0cmVhbUhhbmRsZUJhc2VfaApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNs
aWVudC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ODI2NTcKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnRfaAor
I2RlZmluZSBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnRfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKyAgICBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKKyAgICBjbGFzcyBLVVJMOwor
ICAgIGNsYXNzIFNvY2tldFN0cmVhbUVycm9yOworICAgIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRs
ZTsKKworICAgIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCB7CisgICAgcHVibGljOgor
ICAgICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQoKSB7IH0KKworICAgICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbE9wZW5TdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3Qg
S1VSTCYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmREYXRhKFNvY2tldFN0cmVh
bUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpIHsgfQorCisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRPcGVuKFNvY2tldFN0cmVhbUhhbmRsZSopIHsgfQorICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2xvc2UoU29ja2V0U3RyZWFtSGFuZGxlKikgeyB9CisgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlZERhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoU29j
a2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImKSB7IH0KKworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZWRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShTb2NrZXRT
dHJlYW1IYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsgfQorICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU29ja2V0U3Ry
ZWFtSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7IH0KKyAgICAgICAg
dmlydHVhbCB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKFNvY2tldFN0cmVhbUhhbmRsZSosIGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CisgICAgfTsKKworfSAgLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnRfaApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUVycm9yLmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtRXJyb3IuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTY0MWFkCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUVycm9yLmgKQEAgLTAsMCAr
MSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFNvY2tldFN0cmVhbUVycm9yX2gKKyNkZWZpbmUgU29ja2V0U3RyZWFt
RXJyb3JfaAorCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3JCYXNlLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNvY2tldFN0cmVhbUVycm9yIDogcHVibGljIFNvY2tl
dFN0cmVhbUVycm9yQmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBTb2NrZXRTdHJlYW1FcnJv
cigpIHsgfQorICAgICAgICBleHBsaWNpdCBTb2NrZXRTdHJlYW1FcnJvcihpbnQgZXJyb3JDb2Rl
KQorICAgICAgICAgICAgOiBTb2NrZXRTdHJlYW1FcnJvckJhc2UoZXJyb3JDb2RlKQorICAgICAg
ICB7CisgICAgICAgIH0KKworICAgIH07CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAgLy8gU29ja2V0U3RyZWFtRXJyb3JfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmUzNzBkOTAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTb2NrZXRT
dHJlYW1IYW5kbGVfaAorI2RlZmluZSBTb2NrZXRTdHJlYW1IYW5kbGVfaAorCisjaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCIKKworI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOworICAgIGNsYXNzIENyZWRlbnRpYWw7CisgICAgY2xhc3MgU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50OworICAgIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUludGVy
bmFsOworCisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8
U29ja2V0U3RyZWFtSGFuZGxlPiwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UgeworICAg
IHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBj
cmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9
CisKKyAgICAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlKCk7CisKKyAgICBwcm90ZWN0
ZWQ6CisgICAgICAgIHZpcnR1YWwgaW50IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ2xvc2UoKTsKKworICAg
IHByaXZhdGU6CisgICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBLVVJMJiwgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisKKyAgICAgICAgLy8gTm8gYXV0aGVudGljYXRpb24gZm9y
IHN0cmVhbXMgcGVyIHNlLCBidXQgcHJveHkgbWF5IGFzayBmb3IgY3JlZGVudGlhbHMuCisgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZWRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpOworICAgICAgICB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKTsKKyAgICAgICAg
dm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKyAgICAgICAgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlv
bihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworCisgICAgICAgIEtVUkwgbV91cmw7
CisKKyAgICAgICAgLy8gcGxhdGZvcm0gc3BlY2lmaWMgZGF0YQorICAgICAgICBmcmllbmQgY2xh
c3MgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw7CisgICAgICAgIE93blB0cjxTb2NrZXRTdHJl
YW1IYW5kbGVJbnRlcm5hbD4gaW50ZXJuYWw7CisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmICAvLyBTb2NrZXRTdHJlYW1IYW5kbGVfaApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzBkMzc4YgotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5j
cHAKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU29ja2V0
U3RyZWFtSGFuZGxlLmgiCisKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU29ja2V0U3RyZWFt
SGFuZGxlSW50ZXJuYWwgeworcHVibGljOgorICAgIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFs
KCkgeyB9CisgICAgflNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsKCkgeyB9Cit9OworCitTb2Nr
ZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBLVVJMJiB1cmwsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQorICAgIDogbV91cmwodXJsKQoreworICAgIHNl
dENsaWVudChjbGllbnQpOworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVw
IG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKworU29ja2V0U3RyZWFtSGFuZGxlOjp+U29ja2V0U3RyZWFtSGFuZGxlKCkKK3sKKyAgICBM
T0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBkZWxldGUiLCB0aGlzKTsKKyAgICBz
ZXRDbGllbnQoMCk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworaW50IFNvY2tldFN0cmVh
bUhhbmRsZTo6cGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqLCBpbnQpCit7CisgICAgTE9HKE5ldHdv
cmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxhdGZvcm1TZW5kIiwgdGhpcyk7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5k
bGU6OnBsYXRmb3JtQ2xvc2UoKQoreworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFu
ZGxlICVwIHBsYXRmb3JtQ2xvc2UiLCB0aGlzKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6ZGlkUmVjZWl2ZWRBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWNlaXZl
ZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU29ja2V0U3Ry
ZWFtSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0
cmVhbUVycm9yLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1F
cnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NjQxYWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1F
cnJvci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTb2NrZXRTdHJlYW1FcnJvcl9oCisjZGVm
aW5lIFNvY2tldFN0cmVhbUVycm9yX2gKKworI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yQmFz
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1FcnJv
ciA6IHB1YmxpYyBTb2NrZXRTdHJlYW1FcnJvckJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAg
U29ja2V0U3RyZWFtRXJyb3IoKSB7IH0KKyAgICAgICAgZXhwbGljaXQgU29ja2V0U3RyZWFtRXJy
b3IoaW50IGVycm9yQ29kZSkKKyAgICAgICAgICAgIDogU29ja2V0U3RyZWFtRXJyb3JCYXNlKGVy
cm9yQ29kZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICB9OworCit9ICAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIFNvY2tldFN0cmVhbUVycm9yX2gKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZS5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM3MGQ5MAotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZS5oCkBAIC0wLDAg
KzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgU29ja2V0U3RyZWFtSGFuZGxlX2gKKyNkZWZpbmUgU29ja2V0U3RyZWFt
SGFuZGxlX2gKKworI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5k
bGVCYXNlLmgiCisKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyAgICBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKKyAgICBjbGFzcyBDcmVk
ZW50aWFsOworICAgIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKKyAgICBjbGFzcyBT
b2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDsKKworICAgIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRs
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNvY2tldFN0cmVhbUhhbmRsZT4sIHB1YmxpYyBTb2NrZXRT
dHJlYW1IYW5kbGVCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb2NrZXRTdHJlYW1I
YW5kbGUodXJsLCBjbGllbnQpKTsgfQorCisgICAgICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhh
bmRsZSgpOworCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIGludCBwbGF0Zm9ybVNl
bmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBw
bGF0Zm9ybUNsb3NlKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBTb2NrZXRTdHJlYW1IYW5k
bGUoY29uc3QgS1VSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOworCisgICAgICAgIC8v
IE5vIGF1dGhlbnRpY2F0aW9uIGZvciBzdHJlYW1zIHBlciBzZSwgYnV0IHByb3h5IG1heSBhc2sg
Zm9yIGNyZWRlbnRpYWxzLgorICAgICAgICB2b2lkIGRpZFJlY2VpdmVkQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKyAgICAgICAgdm9pZCBy
ZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBD
cmVkZW50aWFsJik7CisgICAgICAgIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhv
dXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisgICAgICAgIHZv
aWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsK
KworICAgICAgICBLVVJMIG1fdXJsOworCisgICAgICAgIC8vIHBsYXRmb3JtIHNwZWNpZmljIGRh
dGEKKyAgICAgICAgZnJpZW5kIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOworICAg
ICAgICBPd25QdHI8U29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw+IGludGVybmFsOworICAgIH07
CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gU29ja2V0U3RyZWFtSGFu
ZGxlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0
cmVhbUhhbmRsZVNvdXAuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0
U3RyZWFtSGFuZGxlU291cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MzBkMzc4YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZS5oIgorCisjaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgor
I2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsIHsKK3B1YmxpYzoKKyAgICBT
b2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbCgpIHsgfQorICAgIH5Tb2NrZXRTdHJlYW1IYW5kbGVJ
bnRlcm5hbCgpIHsgfQorfTsKKworU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5k
bGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKKyAg
ICA6IG1fdXJsKHVybCkKK3sKKyAgICBzZXRDbGllbnQoY2xpZW50KTsKKyAgICBMT0coTmV0d29y
aywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50ICVwIiwgdGhpcywgbV9jbGllbnQp
OworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1NvY2tldFN0cmVhbUhhbmRsZTo6flNvY2tl
dFN0cmVhbUhhbmRsZSgpCit7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUg
JXAgZGVsZXRlIiwgdGhpcyk7CisgICAgc2V0Q2xpZW50KDApOworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK2ludCBTb2NrZXRTdHJlYW1IYW5kbGU6OnBsYXRmb3JtU2VuZChjb25zdCBjaGFy
KiwgaW50KQoreworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIHBsYXRm
b3JtU2VuZCIsIHRoaXMpOworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9
CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybUNsb3NlKCkKK3sKKyAgICBMT0co
TmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBwbGF0Zm9ybUNsb3NlIiwgdGhpcyk7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmRpZFJl
Y2VpdmVkQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFu
ZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBj
b25zdCBDcmVkZW50aWFsJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50
aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24o
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3Jl
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>35185</attachid>
            <date>2009-08-19 22:54:19 -0700</date>
            <delta_ts>2009-08-23 19:50:09 -0700</delta_ts>
            <desc>Add SocketStreamHandle interface</desc>
            <filename>bug-28037-20090820145418.patch</filename>
            <type>text/plain</type>
            <size>44856</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGNmNmM3NC4uMmYwOWZlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAwOS0wOC0xOSAgRnVtaXRvc2hpIFVr
YWkgIDx1a2FpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUgaW50ZXJmYWNlIGZvciBXZWJTb2Nr
ZXQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
ODAzNworICAgICAgICAKKyAgICAgICAgQWxsIGJ1aWxkIHN5c3RlbXMgb25seSBmb3IgR05VbWFr
ZWZpbGUuYW0gYW5kCisgICAgICAgIFdlYkNvcmUueGNvZGVwcm9qIG5vdy4KKyAgICAgICAgT3Ro
ZXIgYnVpbGQgc3lzdGVtcyB3aWxsIGJlIHVwZGF0ZWQgb25jZSB0aGUgY29kZSBpcworICAgICAg
ICBmdW5jdGlvbmFsLgorICAgICAgICAKKyAgICAgICAgVGVzdHMgd2lsbCBiZSBsYW5kZWQgb25j
ZSB0aGlzIGNvZGUgaXMgY29tcGxldGUgYW5kIGZ1bmN0aW9uYWwuCisKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJh
c2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhh
bmRsZUJhc2UuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1FcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L1NvY2tldFN0cmVhbUhhbmRsZS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUVycm9yLmg6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGUuaDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwOiBBZGRl
ZC4KKwogMjAwOS0wOC0xOSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNv
bT4KIAogICAgICAgICBOb24tcHJlY29tcCBoZWFkZXJzIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGM0
M2U2ZjguLjg1YTAyOTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzIwOCw5ICszMjA4LDE5IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldENvbnN0cnVjdG9yLmNw
cCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldENvbnN0cnVjdG9yLmggXAogCVdl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwIFwKKwlXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBcCiAJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAgXAogCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAogCit3ZWJjb3JlZ3Rr
X3NvdXJjZXMgKz0gXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVh
bUVycm9yLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhh
bmRsZS5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5k
bGVTb3VwLmNwcAorCiBlbHNlCiB3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1dFQl9TT0NL
RVRTPTAKIGVuZGlmICAjIEVORCBFTkFCTEVfV0VCX1NPQ0tFVFMKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzdjNzM2NS4uM2Q1NjA2OCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgzMCw2ICs4MzAsMTEgQEAK
IAkJNEUxOTU5MkUwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRFMTk1OTI4MEEzOURBQ0MwMDIy
MEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggKi87IH07CiAJCTUxMDE4NDY5MEIwODYwMkEwMDRBODI1
RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMDE4NDZBMEIwODYw
MkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY4MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdl
LmNwcCAqLzsgfTsKKwkJNTEwRDRBMzMxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVy
cm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCAq
LzsgfTsKKwkJNTEwRDRBMzQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRB
MkUxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5oICovOyB9OworCQk1
MTBENEEzNjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMDEwMzE2
NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgKi87IH07CisJCTUxMEQ0
QTM3MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMTEwMzE2NUVFMDA0
OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oICovOyB9OworCQk1MTBENEEzODEwMzE2
NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQg
LyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggKi87IH07CiAJCTUxMTZEOTc3MENGMTc3QkQw
MEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURl
dGFpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MTFGMjMxNzBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGMjMxMzBEQzE2MERB
MDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAgKi87IH07CiAJCTUxMUYyMzE4MERDMTYw
REEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGMjMxNDBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxT
dG9yYWdlVGFzay5oICovOyB9OwpAQCAtOTEzLDYgKzkxOCw5IEBACiAJCTUxQTkyNjdFMEQ1M0Yw
NTcwMDYzRUNDMiAvKiBPcmlnaW5Vc2FnZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE5MjY3QTBENTNGMDU3MDA2M0VDQzIgLyogT3Jp
Z2luVXNhZ2VSZWNvcmQuY3BwICovOyB9OwogCQk1MUE5MjY3RjBENTNGMDU3MDA2M0VDQzIgLyog
T3JpZ2luVXNhZ2VSZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQTkyNjdCMEQ1M0YwNTcwMDYzRUNDMiAvKiBPcmlnaW5Vc2FnZVJlY29yZC5o
ICovOyB9OwogCQk1MUFBM0Y2RjBCRDVBQTlFMDA4OTI5NzEgLyogUmVzb3VyY2VMb2FkZXJNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFBM0Y2
RTBCRDVBQTlFMDA4OTI5NzEgLyogUmVzb3VyY2VMb2FkZXJNYWMubW0gKi87IH07CisJCTUxQUJB
RTFCMTAzQzE4RkYwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFMUExMDNDMThGRjAwOEM1MjYw
IC8qIFNvY2tldFN0cmVhbUVycm9yLmggKi87IH07CisJCTUxQUJBRTFFMTAzQzE5MTMwMDhDNTI2
MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFDMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1I
YW5kbGUuaCAqLzsgfTsKKwkJNTFBQkFFMUYxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVh
bUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDRk5l
dC5jcHAgKi87IH07CiAJCTUxQjI0MTdCMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNo
aXZlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFCMjQxN0EwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gKi87IH07
CiAJCTUxQkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTM3REUwREFFRTAwRTAwMTA4
NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi87IH07CiAJCTUxQzBBQTM5MEYyQUExMEEwMDE2NDhDMiAv
KiBDYWNoZWRGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU4OTMsNiArNTkwMSwx
MSBAQAogCQk0RTE5NTkyODBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV4cC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFRdWVyeUV4cC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFn
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRQYWdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4NDY4MEIwODYwMkEwMDRBODI1RiAvKiBDYWNo
ZWRQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFBh
Z2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEEyRDEwMzE2NUVFMDA0
OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxMEQ0QTJFMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1F
cnJvckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0U3RyZWFt
RXJyb3JCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0QTMwMTAzMTY1
RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0
U3RyZWFtSGFuZGxlQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Nr
ZXRTdHJlYW1IYW5kbGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0
QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBE
YXRhYmFzZURldGFpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJh
c2VEZXRhaWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUYyMzEzMERDMTYw
REEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IExvY2FsU3RvcmFnZVRhc2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTFGMjMxNDBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbFN0b3JhZ2VUYXNrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01OTgzLDYgKzU5OTYsOSBAQAogCQk1MUE5MjY3
QTBENTNGMDU3MDA2M0VDQzIgLyogT3JpZ2luVXNhZ2VSZWNvcmQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3JpZ2luVXNhZ2VSZWNvcmQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUE5MjY3QjBENTNGMDU3MDA2M0VDQzIgLyogT3JpZ2luVXNh
Z2VSZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3JpZ2luVXNhZ2VS
ZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBQTNGNkUwQkQ1QUE5RTAw
ODkyOTcxIC8qIFJlc291cmNlTG9hZGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxQUJBRTFBMTAzQzE4RkYwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTb2NrZXRTdHJlYW1FcnJvci5oOyBw
YXRoID0gY2YvU29ja2V0U3RyZWFtRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTFBQkFFMUMxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTb2NrZXRTdHJlYW1IYW5kbGUuaDsgcGF0aCA9
IGNmL1NvY2tldFN0cmVhbUhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MUFCQUUxRDEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU29ja2V0U3RyZWFtSGFuZGxlQ0ZO
ZXQuY3BwOyBwYXRoID0gY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUIyNDE3QTBEOTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2Vi
QXJjaGl2ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExl
Z2FjeVdlYkFyY2hpdmVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkUz
N0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEwNDg4LDYgKzEwNTA0LDExIEBACiAJCTY1NkI4NEQ3MEFFQTFDRTkwMEEwOTVC
NCAvKiBuZXR3b3JrICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQk1MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNw
cCAqLywKKwkJCQk1MTBENEEyRTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JC
YXNlLmggKi8sCisJCQkJNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhh
bmRsZUJhc2UuY3BwICovLAorCQkJCTUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRT
dHJlYW1IYW5kbGVCYXNlLmggKi8sCisJCQkJNTEwRDRBMzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICovLAogCQkJCUIyRjM0RkU3MEU4MkY4MTcwMEY2MjdD
RCAvKiBjZiAqLywKIAkJCQk2NTZCODRFNzBBRUExREFFMDBBMDk1QjQgLyogbWFjICovLAogCQkJ
CTkzNEY3MTM3MEQ1QTZFRkYwMDAxOEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2Uu
Y3BwICovLApAQCAtMTM2NjUsNiArMTM2ODYsOSBAQAogCQlCMkYzNEZFNzBFODJGODE3MDBGNjI3
Q0QgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTUxQUJBRTFDMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLywKKwkJ
CQk1MUFCQUUxRDEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3Bw
ICovLAorCQkJCTUxQUJBRTFBMTAzQzE4RkYwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5o
ICovLAogCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAgKi8sCiAJ
CQkpOwogCQkJbmFtZSA9IGNmOwpAQCAtMTczMTYsNiArMTczNDAsMTEgQEAKIAkJCQlCNUMxMTIz
QzEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRDhCNjE1MkYxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNGQTkzMDgxMDMzMzE5MzAwN0IyNUQxIC8qIFJlbmRlck92ZXJmbG93Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MTBENEEzNDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3Ry
ZWFtRXJyb3JCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTBENEEzNzEwMzE2NUVFMDA0OUVB
NTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRDRB
MzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTFBQkFFMUIxMDNDMThGRjAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUVycm9y
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0
U3RyZWFtSGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE5MzgyLDYgKzE5NDExLDkgQEAKIAkJ
CQk5MzkyMjYyRDEwMzIxMDdCMDA2RTdENUQgLyogSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzkyMjYyRjEwMzIxMDg0MDA2RTdENUQgLyogSlNDU1NS
dWxlTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNUMxMTIzQjEwMkI2QzQ2MDAw
OTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1MTBENEEzMzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTUxMEQ0QTM2MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1IYW5kbGVCYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxQUJBRTFGMTAzQzE5MTMwMDhD
NTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvckJhc2UuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJmYjQ0YwotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwCkBA
IC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVh
bUVycm9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU29ja2V0U3RyZWFtRXJyb3IgU29j
a2V0U3RyZWFtRXJyb3JCYXNlOjpjb3B5KCkgY29uc3QKK3sKKyAgICBTb2NrZXRTdHJlYW1FcnJv
ciBlcnJvckNvcHk7CisgICAgZXJyb3JDb3B5Lm1fZXJyb3JDb2RlID0gbV9lcnJvckNvZGU7Cisg
ICAgcmV0dXJuIGVycm9yQ29weTsKK30KKworYm9vbCBTb2NrZXRTdHJlYW1FcnJvckJhc2U6OmNv
bXBhcmUoY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImIGEsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9y
JiBiKQoreworICAgIHJldHVybiBhLmVycm9yQ29kZSgpID09IGIuZXJyb3JDb2RlKCk7Cit9CisK
K30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
U29ja2V0U3RyZWFtRXJyb3JCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYjdjYTM1YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
b2NrZXRTdHJlYW1FcnJvckJhc2UuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNvY2tldFN0cmVh
bUVycm9yQmFzZV9oCisjZGVmaW5lIFNvY2tldFN0cmVhbUVycm9yQmFzZV9oCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNvY2tldFN0cmVhbUVycm9yOworCisgICAgY2xhc3Mg
U29ja2V0U3RyZWFtRXJyb3JCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIC8vIE1ha2VzIGEg
ZGVlcCBjb3B5LiAgVXNlZnVsIGZvciB3aGVuIHlvdSBuZWVkIHRvIHVzZSBhIFNvY2tldFN0cmVh
bUVycm9yIG9uIGFub3RoZXIgdGhyZWFkLgorICAgICAgICBTb2NrZXRTdHJlYW1FcnJvciBjb3B5
KCkgY29uc3Q7CisKKyAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX2lzTnVs
bDsgfQorCisgICAgICAgIGludCBlcnJvckNvZGUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yQ29k
ZTsgfQorCisgICAgICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29uc3QgU29ja2V0U3RyZWFtRXJy
b3ImLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYpOworCisgICAgcHJvdGVjdGVkOgorICAgICAg
ICBTb2NrZXRTdHJlYW1FcnJvckJhc2UoKQorICAgICAgICAgICAgOiBtX2Vycm9yQ29kZSgwKQor
ICAgICAgICAgICAgLCBtX2lzTnVsbCh0cnVlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAg
ICAgICBleHBsaWNpdCBTb2NrZXRTdHJlYW1FcnJvckJhc2UoaW50IGVycm9yQ29kZSkKKyAgICAg
ICAgICAgIDogbV9lcnJvckNvZGUoZXJyb3JDb2RlKQorICAgICAgICAgICAgLCBtX2lzTnVsbChm
YWxzZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgaW50IG1fZXJyb3JDb2RlOwor
ICAgICAgICBib29sIG1faXNOdWxsOworICAgIH07CisKKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJiBhLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYg
YikgeyByZXR1cm4gU29ja2V0U3RyZWFtRXJyb3JCYXNlOjpjb21wYXJlKGEsIGIpOyB9CisgICAg
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYgYSwgY29uc3Qg
U29ja2V0U3RyZWFtRXJyb3ImIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQorCit9ICAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIFNvY2tldFN0cmVhbUVycm9yQmFzZV9oCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmMxNzI0YgotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNw
cApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU29ja2V0
U3RyZWFtSGFuZGxlQmFzZS5oIgorCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgaW50IGJ1ZmZlclNpemUgPSAxMDAg
KiAxMDI0ICogMTAyNDsKKworU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6U29ja2V0U3RyZWFtSGFu
ZGxlQmFzZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50
KQorICAgIDogbV91cmwodXJsKQorICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9zdGF0
ZShDb25uZWN0aW5nKQoreworfQorCitTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpTb2NrZXRTdHJl
YW1TdGF0ZSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpzdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fc3RhdGU7Cit9CisKK2Jvb2wgU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6c2VuZChjb25z
dCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGlmIChtX3N0YXRlID09IENvbm5lY3Rp
bmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fYnVmZmVyLmlzRW1wdHkoKSkg
eworICAgICAgICBpZiAobV9idWZmZXIuc2l6ZSgpICsgbGVuZ3RoID4gYnVmZmVyU2l6ZSkgewor
ICAgICAgICAgICAgLy8gRklYTUU6IHJlcG9ydCBlcnJvciB0byBpbmRpY2F0ZSB0aGF0IGJ1ZmZl
ciBoYXMgbm8gbW9yZSBzcGFjZS4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgICAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIGludCBieXRlc1dyaXR0ZW4gPSAwOworICAgIGlmIChtX3N0YXRl
ID09IE9wZW4pCisgICAgICAgIGJ5dGVzV3JpdHRlbiA9IHBsYXRmb3JtU2VuZChkYXRhLCBsZW5n
dGgpOworICAgIGlmIChieXRlc1dyaXR0ZW4gPD0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChtX2J1ZmZlci5zaXplKCkgKyBsZW5ndGggLSBieXRlc1dyaXR0ZW4gPiBidWZmZXJT
aXplKSB7CisgICAgICAgIC8vIEZJWE1FOiByZXBvcnQgZXJyb3IgdG8gaW5kaWNhdGUgdGhhdCBi
dWZmZXIgaGFzIG5vIG1vcmUgc3BhY2UuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgaWYgKGJ5dGVzV3JpdHRlbiA8IGxlbmd0aCkKKyAgICAgICAgbV9idWZmZXIuYXBwZW5kKGRh
dGEgKyBieXRlc1dyaXR0ZW4sIGxlbmd0aCAtIGJ5dGVzV3JpdHRlbik7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6Y2xvc2UoKQoreworICAgIHBs
YXRmb3JtQ2xvc2UoKTsKKyAgICBtX3N0YXRlID0gQ2xvc2VkOworfQorCit2b2lkIFNvY2tldFN0
cmVhbUhhbmRsZUJhc2U6OnNldENsaWVudChTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVu
dCkKK3sKKyAgICBBU1NFUlQoIWNsaWVudCB8fCAoIW1fY2xpZW50ICYmIG1fc3RhdGUgPT0gQ29u
bmVjdGluZykpOworICAgIG1fY2xpZW50ID0gY2xpZW50OworfQorCitib29sIFNvY2tldFN0cmVh
bUhhbmRsZUJhc2U6OnNlbmRQZW5kaW5nRGF0YSgpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gT3Bl
bikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2J1ZmZlci5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpbnQgYnl0ZXNXcml0dGVuID0gcGxhdGZvcm1TZW5k
KG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKTsKKyAgICBpZiAoYnl0ZXNXcml0dGVu
IDw9IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBWZWN0b3I8Y2hhcj4gcmVtYWluaW5n
RGF0YTsKKyAgICBBU1NFUlQobV9idWZmZXIuc2l6ZSgpIC0gYnl0ZXNXcml0dGVuIDw9IGJ1ZmZl
clNpemUpOworICAgIHJlbWFpbmluZ0RhdGEuYXBwZW5kKG1fYnVmZmVyLmRhdGEoKSArIGJ5dGVz
V3JpdHRlbiwgbV9idWZmZXIuc2l6ZSgpIC0gYnl0ZXNXcml0dGVuKTsKKyAgICBtX2J1ZmZlci5z
d2FwKHJlbWFpbmluZ0RhdGEpOworICAgIHJldHVybiB0cnVlOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0
cmVhbUhhbmRsZUJhc2UuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1I
YW5kbGVCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMwMTFkZAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1I
YW5kbGVCYXNlLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNl
X2gKKyNkZWZpbmUgU29ja2V0U3RyZWFtSGFuZGxlQmFzZV9oCisKKyNpbmNsdWRlICJLVVJMLmgi
CisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAg
IGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZTsKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQ7CisKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIGVudW0gU29ja2V0U3RyZWFtU3RhdGUgeyBDb25uZWN0aW5nLCBPcGVuLCBDbG9z
ZWQgfTsKKyAgICAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlQmFzZSgpIHsgfQorICAg
ICAgICBTb2NrZXRTdHJlYW1TdGF0ZSBzdGF0ZSgpIGNvbnN0OworCisgICAgICAgIGJvb2wgc2Vu
ZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICAgICAgdm9pZCBjbG9zZSgpOwor
ICAgICAgICBpbnQgYnVmZmVyZWRBbW91bnQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXpl
KCk7IH0KKworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgICAgIHZvaWQgc2V0Q2xpZW50KFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCopOworCisgICAgcHJvdGVjdGVkOgorICAgICAgICBTb2NrZXRTdHJlYW1I
YW5kbGVCYXNlKGNvbnN0IEtVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKKworICAg
ICAgICBib29sIHNlbmRQZW5kaW5nRGF0YSgpOworICAgICAgICB2aXJ0dWFsIGludCBwbGF0Zm9y
bVNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgcGxhdGZvcm1DbG9zZSgpID0gMDsKKworICAgICAgICBLVVJMIG1fdXJsOworICAgICAg
ICBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIG1fY2xpZW50OworICAgICAgICBWZWN0b3I8Y2hh
cj4gbV9idWZmZXI7CisgICAgICAgIFNvY2tldFN0cmVhbVN0YXRlIG1fc3RhdGU7CisgICAgfTsK
KworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBTb2NrZXRTdHJlYW1IYW5k
bGVCYXNlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDgyNjU3
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZUNsaWVudC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50X2gKKyNkZWZpbmUgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50X2gKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisgICAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CisgICAgY2xh
c3MgS1VSTDsKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1FcnJvcjsKKyAgICBjbGFzcyBTb2NrZXRT
dHJlYW1IYW5kbGU7CisKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgeworICAg
IHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KCkgeyB9
CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxPcGVuU3RyZWFtKFNvY2tldFN0cmVhbUhhbmRs
ZSosIGNvbnN0IEtVUkwmKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kRGF0YShT
b2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSB7IH0KKwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbihTb2NrZXRTdHJlYW1IYW5kbGUqKSB7IH0KKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKFNvY2tldFN0cmVhbUhhbmRsZSopIHsgfQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZWREYXRhKFNvY2tldFN0cmVhbUhhbmRsZSosIGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRGYWlsKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJikgeyB9
CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVkQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7
IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9
CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihTb2NrZXRTdHJlYW1I
YW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsgfQorICAgIH07CisKK30g
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJl
YW1FcnJvci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUVycm9y
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk2NDFhZAotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1FcnJvci5o
CkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTb2NrZXRTdHJlYW1FcnJvcl9oCisjZGVmaW5lIFNv
Y2tldFN0cmVhbUVycm9yX2gKKworI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yQmFzZS5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1FcnJvciA6IHB1
YmxpYyBTb2NrZXRTdHJlYW1FcnJvckJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgU29ja2V0
U3RyZWFtRXJyb3IoKSB7IH0KKyAgICAgICAgZXhwbGljaXQgU29ja2V0U3RyZWFtRXJyb3IoaW50
IGVycm9yQ29kZSkKKyAgICAgICAgICAgIDogU29ja2V0U3RyZWFtRXJyb3JCYXNlKGVycm9yQ29k
ZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgIC8vIFNvY2tldFN0cmVhbUVycm9yX2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi43YjNlNDc5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgU29ja2V0U3RyZWFtSGFuZGxlX2gKKyNkZWZpbmUgU29ja2V0U3RyZWFtSGFuZGxlX2gKKwor
I2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisgICAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CisgICAgY2xhc3MgQ3Jl
ZGVudGlhbDsKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7CisgICAgY2xhc3Mg
U29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw7CisKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5k
bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTb2NrZXRTdHJlYW1IYW5kbGU+LCBwdWJsaWMgU29ja2V0
U3RyZWFtSGFuZGxlQmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFt
SGFuZGxlKHVybCwgY2xpZW50KSk7IH0KKworICAgICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1I
YW5kbGUoKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCBpbnQgcGxhdGZvcm1T
ZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
cGxhdGZvcm1DbG9zZSgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgU29ja2V0U3RyZWFtSGFu
ZGxlKGNvbnN0IEtVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKKworICAgICAgICAv
LyBObyBhdXRoZW50aWNhdGlvbiBmb3Igc3RyZWFtcyBwZXIgc2UsIGJ1dCBwcm94eSBtYXkgYXNr
IGZvciBjcmVkZW50aWFscy4KKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlZEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisgICAgICAgIHZvaWQg
cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3Qg
Q3JlZGVudGlhbCYpOworICAgICAgICB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRo
b3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworICAgICAgICB2
b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7
CisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBTb2NrZXRT
dHJlYW1IYW5kbGVfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Nv
Y2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMTFlYWY2MAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlLmgiCisKKyNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3Qg
S1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKKyAgICA6IFNvY2tl
dFN0cmVhbUhhbmRsZUJhc2UodXJsLCBjbGllbnQpCit7CisgICAgTE9HKE5ldHdvcmssICJTb2Nr
ZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCitTb2NrZXRTdHJlYW1IYW5kbGU6On5Tb2NrZXRTdHJlYW1I
YW5kbGUoKQoreworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIGRlbGV0
ZSIsIHRoaXMpOworICAgIHNldENsaWVudCgwKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
CitpbnQgU29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciosIGludCkK
K3sKKyAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBwbGF0Zm9ybVNlbmQi
LCB0aGlzKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lk
IFNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1DbG9zZSgpCit7CisgICAgTE9HKE5ldHdvcmss
ICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxhdGZvcm1DbG9zZSIsIHRoaXMpOworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpkaWRSZWNlaXZlZEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cmVj
ZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3Jl
ZGVudGlhbCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9
ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU29ja2V0U3RyZWFtRXJyb3IuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvY2tldFN0cmVhbUVycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZjk2NDFhZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvY2tldFN0cmVhbUVycm9yLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNvY2tldFN0
cmVhbUVycm9yX2gKKyNkZWZpbmUgU29ja2V0U3RyZWFtRXJyb3JfaAorCisjaW5jbHVkZSAiU29j
a2V0U3RyZWFtRXJyb3JCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNz
IFNvY2tldFN0cmVhbUVycm9yIDogcHVibGljIFNvY2tldFN0cmVhbUVycm9yQmFzZSB7CisgICAg
cHVibGljOgorICAgICAgICBTb2NrZXRTdHJlYW1FcnJvcigpIHsgfQorICAgICAgICBleHBsaWNp
dCBTb2NrZXRTdHJlYW1FcnJvcihpbnQgZXJyb3JDb2RlKQorICAgICAgICAgICAgOiBTb2NrZXRT
dHJlYW1FcnJvckJhc2UoZXJyb3JDb2RlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgIH07
CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gU29ja2V0U3RyZWFtRXJy
b3JfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3Ry
ZWFtSGFuZGxlLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1I
YW5kbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjNlNDc5Ci0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFt
SGFuZGxlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTb2NrZXRTdHJlYW1IYW5kbGVfaAorI2Rl
ZmluZSBTb2NrZXRTdHJlYW1IYW5kbGVfaAorCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxl
QmFzZS5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTsKKyAgICBjbGFzcyBDcmVkZW50aWFsOworICAgIGNsYXNzIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudDsKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDsK
KworICAgIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNvY2tl
dFN0cmVhbUhhbmRsZT4sIHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRl
KGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQpKTsgfQorCisg
ICAgICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZSgpOworCisgICAgcHJvdGVjdGVkOgor
ICAgICAgICB2aXJ0dWFsIGludCBwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxl
bmd0aCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsb3NlKCk7CisKKyAgICBwcml2
YXRlOgorICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYsIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCopOworCisgICAgICAgIC8vIE5vIGF1dGhlbnRpY2F0aW9uIGZvciBzdHJl
YW1zIHBlciBzZSwgYnV0IHByb3h5IG1heSBhc2sgZm9yIGNyZWRlbnRpYWxzLgorICAgICAgICB2
b2lkIGRpZFJlY2VpdmVkQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKTsKKyAgICAgICAgdm9pZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJik7CisgICAgICAgIHZvaWQg
cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJik7CisgICAgICAgIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgIC8vIFNvY2tldFN0cmVhbUhhbmRsZV9oCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExZWFmNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVT
b3VwLmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
b2NrZXRTdHJlYW1IYW5kbGUuaCIKKworI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTb2NrZXRTdHJlYW1I
YW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCogY2xpZW50KQorICAgIDogU29ja2V0U3RyZWFtSGFuZGxlQmFzZSh1cmwsIGNs
aWVudCkKK3sKKyAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xp
ZW50ICVwIiwgdGhpcywgbV9jbGllbnQpOworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1Nv
Y2tldFN0cmVhbUhhbmRsZTo6flNvY2tldFN0cmVhbUhhbmRsZSgpCit7CisgICAgTE9HKE5ldHdv
cmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgZGVsZXRlIiwgdGhpcyk7CisgICAgc2V0Q2xpZW50
KDApOworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2ludCBTb2NrZXRTdHJlYW1IYW5kbGU6
OnBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiwgaW50KQoreworICAgIExPRyhOZXR3b3JrLCAiU29j
a2V0U3RyZWFtSGFuZGxlICVwIHBsYXRmb3JtU2VuZCIsIHRoaXMpOworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0
Zm9ybUNsb3NlKCkKK3sKKyAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBw
bGF0Zm9ybUNsb3NlIiwgdGhpcyk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBT
b2NrZXRTdHJlYW1IYW5kbGU6OmRpZFJlY2VpdmVkQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0
VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRs
ZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3Jl
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38464</attachid>
            <date>2009-08-23 19:50:14 -0700</date>
            <delta_ts>2009-08-24 19:42:55 -0700</delta_ts>
            <desc>Add SocketStreamHandle interface</desc>
            <filename>bug-28037-20090824115013.patch</filename>
            <type>text/plain</type>
            <size>44740</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGVkYTM5ZC4uNTExNjc4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAwOS0wOC0yNCAgRnVtaXRvc2hpIFVr
YWkgIDx1a2FpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUgaW50ZXJmYWNlIGZvciBXZWJTb2Nr
ZXQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
ODAzNworICAgICAgICAKKyAgICAgICAgQWxsIGJ1aWxkIHN5c3RlbXMgb25seSBmb3IgR05VbWFr
ZWZpbGUgYW5kIFdlYkNvcmUueGNvZGVwcm9qIG5vdy4KKyAgICAgICAgT3RoZXIgYnVpbGQgc3lz
dGVtcyB3aWxsIGJlIHVwZGF0ZWQgb25jZSB0aGUgY29kZSBpcyBmdW5jdGlvbmFsLgorICAgICAg
ICBUZXN0cyB3aWxsIGJlIGxhbmRlZCBvbmNlIHRoaXMgY29kZSBpcyBjb21wbGV0ZSBhbmQgZnVu
Y3Rpb25hbC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Nv
Y2tldFN0cmVhbUVycm9yQmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUVycm9yLmg6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlLmg6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtRXJy
b3IuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVh
bUhhbmRsZS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0
U3RyZWFtSGFuZGxlU291cC5jcHA6IEFkZGVkLgorCiAyMDA5LTA4LTIzICBKb3NlcGggUGVjb3Jh
cm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBI
YXRjaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KaW5kZXggNjU4MjRiNC4uNDk5OTQ4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zMjEyLDkgKzMy
MTIsMTkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2Vi
U29ja2V0Q29uc3RydWN0b3IuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0
Q29uc3RydWN0b3IuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5j
cHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvckJhc2UuY3Bw
IFwKKwlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmggXAor
CVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBcCisJ
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCBcCisJV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIFwKIAlXZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCiAJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5oCiAKK3dlYmNvcmVndGtfc291cmNlcyArPSBcCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU29ja2V0U3RyZWFtRXJyb3IuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwCisKIGVsc2UKIHdlYmNvcmVfY3BwZmxhZ3Mg
Kz0gLURFTkFCTEVfV0VCX1NPQ0tFVFM9MAogZW5kaWYgICMgRU5EIEVOQUJMRV9XRUJfU09DS0VU
UwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNzMzMDM3
Li4yMjQxZjNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtODMyLDYgKzgzMiwxMSBAQAogCQk0RTE5NTkyRTBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFR
dWVyeUV4cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEUxOTU5MjgwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuaCAqLzsgfTsKIAkJNTEw
MTg0NjkwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBD
YWNoZWRQYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTEwMTg0NkEwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjgwQjA4NjAyQTAw
NEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICovOyB9OworCQk1MTBENEEzMzEwMzE2NUVFMDA0OUVB
NTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTJEMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRT
dHJlYW1FcnJvckJhc2UuY3BwICovOyB9OworCQk1MTBENEEzNDEwMzE2NUVFMDA0OUVBNTQgLyog
U29ja2V0U3RyZWFtRXJyb3JCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTBENEEyRTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJy
b3JCYXNlLmggKi87IH07CisJCTUxMEQ0QTM2MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1IYW5kbGVCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMEQ0QTMwMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNl
LmNwcCAqLzsgfTsKKwkJNTEwRDRBMzcxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhh
bmRsZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggKi87
IH07CisJCTUxMEQ0QTM4MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0
QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLzsgfTsK
IAkJNTExNkQ5NzcwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExNkQ5NzUwQ0YxNzdCRDAw
QzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUxMUYyMzE3MERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0
b3JhZ2VUYXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMUYyMzEzMERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmNwcCAqLzsg
fTsKIAkJNTExRjIzMTgwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYyMzE0MERDMTYw
REEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmggKi87IH07CkBAIC05MTUsNiArOTIwLDkg
QEAKIAkJNTFBOTI2N0UwRDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblVzYWdlUmVjb3JkLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTkyNjdBMEQ1
M0YwNTcwMDYzRUNDMiAvKiBPcmlnaW5Vc2FnZVJlY29yZC5jcHAgKi87IH07CiAJCTUxQTkyNjdG
MEQ1M0YwNTcwMDYzRUNDMiAvKiBPcmlnaW5Vc2FnZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBOTI2N0IwRDUzRjA1NzAwNjNFQ0MyIC8q
IE9yaWdpblVzYWdlUmVjb3JkLmggKi87IH07CiAJCTUxQUEzRjZGMEJENUFBOUUwMDg5Mjk3MSAv
KiBSZXNvdXJjZUxvYWRlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQUEzRjZFMEJENUFBOUUwMDg5Mjk3MSAvKiBSZXNvdXJjZUxvYWRlck1h
Yy5tbSAqLzsgfTsKKwkJNTFBQkFFMUIxMDNDMThGRjAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUVy
cm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFC
QUUxQTEwM0MxOEZGMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtRXJyb3IuaCAqLzsgfTsKKwkJNTFB
QkFFMUUxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFMUMxMDNDMTkxMzAwOEM1
MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oICovOyB9OworCQk1MUFCQUUxRjEwM0MxOTEzMDA4
QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFMUQxMDNDMTkxMzAwOEM1MjYwIC8qIFNv
Y2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCAqLzsgfTsKIAkJNTFCMjQxN0IwRDkzMUYzRjAwRTgz
RjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIyNDE3QTBEOTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2Vi
QXJjaGl2ZU1hYy5tbSAqLzsgfTsKIAkJNTFCRTM3RTAwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3Jh
Z2VBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUJFMzdERTBEQUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCAqLzsgfTsKIAkJNTFDMEFB
MzkwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2Fj
aGVkRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNTg5OSw2ICs1OTA3LDExIEBACiAJCTRFMTk1OTI4MEEzOURBQ0MwMDIyMEZFNSAvKiBN
ZWRpYVF1ZXJ5RXhwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVF1
ZXJ5RXhwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4NDY3MEIwODYwMkEw
MDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENhY2hlZFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMTg0NjgwQjA4
NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ2FjaGVkUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxMEQ0QTJEMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29ja2V0U3RyZWFtRXJyb3JCYXNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRDRBMkUxMDMxNjVFRTAwNDlF
QTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTb2NrZXRTdHJlYW1FcnJvckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0QTMxMTAzMTY1
RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTEwRDRBMzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExNkQ5NzUw
Q0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEYXRhYmFzZURldGFpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTExRjIzMTMwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxTdG9yYWdlVGFzay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUYyMzE0MERDMTYwREEwMDRGMDAzMiAv
KiBMb2NhbFN0b3JhZ2VUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExv
Y2FsU3RvcmFnZVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5ODksNiAr
NjAwMiw5IEBACiAJCTUxQTkyNjdBMEQ1M0YwNTcwMDYzRUNDMiAvKiBPcmlnaW5Vc2FnZVJlY29y
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcmlnaW5Vc2FnZVJl
Y29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQTkyNjdCMEQ1M0YwNTcw
MDYzRUNDMiAvKiBPcmlnaW5Vc2FnZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBPcmlnaW5Vc2FnZVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MUFBM0Y2RTBCRDVBQTlFMDA4OTI5NzEgLyogUmVzb3VyY2VMb2FkZXJNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRlck1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFMUExMDNDMThGRjAwOEM1MjYwIC8q
IFNvY2tldFN0cmVhbUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNv
Y2tldFN0cmVhbUVycm9yLmg7IHBhdGggPSBjZi9Tb2NrZXRTdHJlYW1FcnJvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUFCQUUxQzEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0
U3RyZWFtSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNvY2tldFN0
cmVhbUhhbmRsZS5oOyBwYXRoID0gY2YvU29ja2V0U3RyZWFtSGFuZGxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJl
YW1IYW5kbGVDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBT
b2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHA7IHBhdGggPSBjZi9Tb2NrZXRTdHJlYW1IYW5kbGVD
Rk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjI0MTdBMEQ5MzFGM0Yw
MEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFCRTM3REUwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VBcmVhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQzBBQTM4MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRG
cmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRGcmFtZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA0OTgsNiArMTA1MTQsMTEgQEAKIAkJNjU2
Qjg0RDcwQUVBMUNFOTAwQTA5NUI0IC8qIG5ldHdvcmsgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxMEQ0QTJEMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2Nr
ZXRTdHJlYW1FcnJvckJhc2UuY3BwICovLAorCQkJCTUxMEQ0QTJFMTAzMTY1RUUwMDQ5RUE1NCAv
KiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuaCAqLywKKwkJCQk1MTBENEEzMDEwMzE2NUVFMDA0OUVB
NTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgKi8sCisJCQkJNTEwRDRBMzExMDMxNjVF
RTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCAqLywKKwkJCQk1MTBENEEzMjEw
MzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggKi8sCiAJCQkJQjJG
MzRGRTcwRTgyRjgxNzAwRjYyN0NEIC8qIGNmICovLAogCQkJCTY1NkI4NEU3MEFFQTFEQUUwMEEw
OTVCNCAvKiBtYWMgKi8sCiAJCQkJOTM0RjcxMzcwRDVBNkVGRjAwMDE4RDY5IC8qIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAgKi8sCkBAIC0xMzY3Nyw2ICsxMzY5OCw5IEBACiAJCUIy
RjM0RkU3MEU4MkY4MTcwMEY2MjdDRCAvKiBjZiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJNTFBQkFFMUMxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0
cmVhbUhhbmRsZS5oICovLAorCQkJCTUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRT
dHJlYW1IYW5kbGVDRk5ldC5jcHAgKi8sCisJCQkJNTFBQkFFMUExMDNDMThGRjAwOEM1MjYwIC8q
IFNvY2tldFN0cmVhbUVycm9yLmggKi8sCiAJCQkJQjJGMzRGRTgwRTgyRjgyNzAwRjYyN0NEIC8q
IEROU0NGTmV0LmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gY2Y7CkBAIC0xNzMzMCw2ICsxNzM1
NCwxMSBAQAogCQkJCUJDRkE5MzA4MTAzMzMxOTMwMDdCMjVEMSAvKiBSZW5kZXJPdmVyZmxvdy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDAxNDYyOEIxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFj
Y2Vzc0VudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTFCRjZGMTEwMkM5RTU5MDAwMkMxNUEg
LyogU1FMVHJhbnNhY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMEQ0QTM0MTAz
MTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuaCBpbiBIZWFkZXJzICovLAor
CQkJCTUxMEQ0QTM3MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MTBENEEzODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUFCQUUxQjEwM0MxOEZGMDA4
QzUyNjAgLyogU29ja2V0U3RyZWFtRXJyb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQUJBRTFF
MTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMTkzOTgsNiArMTk0MjcsOSBAQAogCQkJCUI1QzExMjNCMTAyQjZDNDYwMDA5NjU3OCAvKiBT
UUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTAwMTQ2MjhB
MTAzQ0QxREUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCNTFCRjZGMDEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rpb25DbGllbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTEwRDRBMzMxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0
cmVhbUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTBENEEzNjEwMzE2NUVFMDA0
OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0
U3RyZWFtRXJyb3JCYXNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJl
YW1FcnJvckJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyZmI0
NGMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3Ry
ZWFtRXJyb3JCYXNlLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Nv
Y2tldFN0cmVhbUVycm9yIFNvY2tldFN0cmVhbUVycm9yQmFzZTo6Y29weSgpIGNvbnN0Cit7Cisg
ICAgU29ja2V0U3RyZWFtRXJyb3IgZXJyb3JDb3B5OworICAgIGVycm9yQ29weS5tX2Vycm9yQ29k
ZSA9IG1fZXJyb3JDb2RlOworICAgIHJldHVybiBlcnJvckNvcHk7Cit9CisKK2Jvb2wgU29ja2V0
U3RyZWFtRXJyb3JCYXNlOjpjb21wYXJlKGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJiBhLCBjb25z
dCBTb2NrZXRTdHJlYW1FcnJvciYgYikKK3sKKyAgICByZXR1cm4gYS5lcnJvckNvZGUoKSA9PSBi
LmVycm9yQ29kZSgpOworfQorCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3Y2EzNWIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmgKQEAgLTAsMCArMSw3MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBTb2NrZXRTdHJlYW1FcnJvckJhc2VfaAorI2RlZmluZSBTb2NrZXRTdHJlYW1FcnJv
ckJhc2VfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1F
cnJvcjsKKworICAgIGNsYXNzIFNvY2tldFN0cmVhbUVycm9yQmFzZSB7CisgICAgcHVibGljOgor
ICAgICAgICAvLyBNYWtlcyBhIGRlZXAgY29weS4gIFVzZWZ1bCBmb3Igd2hlbiB5b3UgbmVlZCB0
byB1c2UgYSBTb2NrZXRTdHJlYW1FcnJvciBvbiBhbm90aGVyIHRocmVhZC4KKyAgICAgICAgU29j
a2V0U3RyZWFtRXJyb3IgY29weSgpIGNvbnN0OworCisgICAgICAgIGJvb2wgaXNOdWxsKCkgY29u
c3QgeyByZXR1cm4gbV9pc051bGw7IH0KKworICAgICAgICBpbnQgZXJyb3JDb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9lcnJvckNvZGU7IH0KKworICAgICAgICBzdGF0aWMgYm9vbCBjb21wYXJlKGNv
bnN0IFNvY2tldFN0cmVhbUVycm9yJiwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImKTsKKworICAg
IHByb3RlY3RlZDoKKyAgICAgICAgU29ja2V0U3RyZWFtRXJyb3JCYXNlKCkKKyAgICAgICAgICAg
IDogbV9lcnJvckNvZGUoMCkKKyAgICAgICAgICAgICwgbV9pc051bGwodHJ1ZSkKKyAgICAgICAg
eworICAgICAgICB9CisKKyAgICAgICAgZXhwbGljaXQgU29ja2V0U3RyZWFtRXJyb3JCYXNlKGlu
dCBlcnJvckNvZGUpCisgICAgICAgICAgICA6IG1fZXJyb3JDb2RlKGVycm9yQ29kZSkKKyAgICAg
ICAgICAgICwgbV9pc051bGwoZmFsc2UpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAg
IGludCBtX2Vycm9yQ29kZTsKKyAgICAgICAgYm9vbCBtX2lzTnVsbDsKKyAgICB9OworCisgICAg
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYgYSwgY29uc3Qg
U29ja2V0U3RyZWFtRXJyb3ImIGIpIHsgcmV0dXJuIFNvY2tldFN0cmVhbUVycm9yQmFzZTo6Y29t
cGFyZShhLCBiKTsgfQorICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU29ja2V0U3Ry
ZWFtRXJyb3ImIGEsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJiBiKSB7IHJldHVybiAhKGEgPT0g
Yik7IH0KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBTb2NrZXRTdHJl
YW1FcnJvckJhc2VfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tl
dFN0cmVhbUhhbmRsZUJhc2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0
cmVhbUhhbmRsZUJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZj
MTcyNGIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0
U3RyZWFtSGFuZGxlQmFzZS5jcHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCIKKworI2luY2x1ZGUgIlNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGlu
dCBidWZmZXJTaXplID0gMTAwICogMTAyNCAqIDEwMjQ7CisKK1NvY2tldFN0cmVhbUhhbmRsZUJh
c2U6OlNvY2tldFN0cmVhbUhhbmRsZUJhc2UoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fdXJsKHVybCkKKyAgICAsIG1fY2xpZW50KGNs
aWVudCkKKyAgICAsIG1fc3RhdGUoQ29ubmVjdGluZykKK3sKK30KKworU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZTo6U29ja2V0U3RyZWFtU3RhdGUgU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6c3RhdGUo
KSBjb25zdAoreworICAgIHJldHVybiBtX3N0YXRlOworfQorCitib29sIFNvY2tldFN0cmVhbUhh
bmRsZUJhc2U6OnNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBpZiAo
bV9zdGF0ZSA9PSBDb25uZWN0aW5nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFt
X2J1ZmZlci5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKG1fYnVmZmVyLnNpemUoKSArIGxlbmd0
aCA+IGJ1ZmZlclNpemUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiByZXBvcnQgZXJyb3IgdG8g
aW5kaWNhdGUgdGhhdCBidWZmZXIgaGFzIG5vIG1vcmUgc3BhY2UuCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIGxlbmd0
aCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpbnQgYnl0ZXNXcml0dGVuID0g
MDsKKyAgICBpZiAobV9zdGF0ZSA9PSBPcGVuKQorICAgICAgICBieXRlc1dyaXR0ZW4gPSBwbGF0
Zm9ybVNlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBpZiAoYnl0ZXNXcml0dGVuIDw9IDApCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9idWZmZXIuc2l6ZSgpICsgbGVuZ3RoIC0gYnl0
ZXNXcml0dGVuID4gYnVmZmVyU2l6ZSkgeworICAgICAgICAvLyBGSVhNRTogcmVwb3J0IGVycm9y
IHRvIGluZGljYXRlIHRoYXQgYnVmZmVyIGhhcyBubyBtb3JlIHNwYWNlLgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChieXRlc1dyaXR0ZW4gPCBsZW5ndGgpCisgICAgICAg
IG1fYnVmZmVyLmFwcGVuZChkYXRhICsgYnl0ZXNXcml0dGVuLCBsZW5ndGggLSBieXRlc1dyaXR0
ZW4pOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUJhc2U6
OmNsb3NlKCkKK3sKKyAgICBwbGF0Zm9ybUNsb3NlKCk7CisgICAgbV9zdGF0ZSA9IENsb3NlZDsK
K30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpzZXRDbGllbnQoU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJUKCFjbGllbnQgfHwgKCFtX2NsaWVu
dCAmJiBtX3N0YXRlID09IENvbm5lY3RpbmcpKTsKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKK30K
KworYm9vbCBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpzZW5kUGVuZGluZ0RhdGEoKQoreworICAg
IGlmIChtX3N0YXRlICE9IE9wZW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9i
dWZmZXIuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaW50IGJ5dGVzV3Jp
dHRlbiA9IHBsYXRmb3JtU2VuZChtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSk7Cisg
ICAgaWYgKGJ5dGVzV3JpdHRlbiA8PSAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgVmVj
dG9yPGNoYXI+IHJlbWFpbmluZ0RhdGE7CisgICAgQVNTRVJUKG1fYnVmZmVyLnNpemUoKSAtIGJ5
dGVzV3JpdHRlbiA8PSBidWZmZXJTaXplKTsKKyAgICByZW1haW5pbmdEYXRhLmFwcGVuZChtX2J1
ZmZlci5kYXRhKCkgKyBieXRlc1dyaXR0ZW4sIG1fYnVmZmVyLnNpemUoKSAtIGJ5dGVzV3JpdHRl
bik7CisgICAgbV9idWZmZXIuc3dhcChyZW1haW5pbmdEYXRhKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggYi9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmZjMDExZGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU29j
a2V0U3RyZWFtSGFuZGxlQmFzZV9oCisjZGVmaW5lIFNvY2tldFN0cmVhbUhhbmRsZUJhc2VfaAor
CisjaW5jbHVkZSAiS1VSTC5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGU7CisgICAgY2xhc3Mg
U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OworCisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxl
QmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBlbnVtIFNvY2tldFN0cmVhbVN0YXRlIHsgQ29u
bmVjdGluZywgT3BlbiwgQ2xvc2VkIH07CisgICAgICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhh
bmRsZUJhc2UoKSB7IH0KKyAgICAgICAgU29ja2V0U3RyZWFtU3RhdGUgc3RhdGUoKSBjb25zdDsK
KworICAgICAgICBib29sIHNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CisgICAg
ICAgIHZvaWQgY2xvc2UoKTsKKyAgICAgICAgaW50IGJ1ZmZlcmVkQW1vdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9idWZmZXIuc2l6ZSgpOyB9CisKKyAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorICAgICAgICB2b2lkIHNl
dENsaWVudChTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKKworICAgIHByb3RlY3RlZDoKKyAg
ICAgICAgU29ja2V0U3RyZWFtSGFuZGxlQmFzZShjb25zdCBLVVJMJiwgU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50Kik7CisKKyAgICAgICAgYm9vbCBzZW5kUGVuZGluZ0RhdGEoKTsKKyAgICAgICAg
dmlydHVhbCBpbnQgcGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ2xvc2UoKSA9IDA7CisKKyAgICAgICAg
S1VSTCBtX3VybDsKKyAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBtX2NsaWVudDsK
KyAgICAgICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOworICAgICAgICBTb2NrZXRTdHJlYW1TdGF0
ZSBtX3N0YXRlOworICAgIH07CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAg
Ly8gU29ja2V0U3RyZWFtSGFuZGxlQmFzZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggYi9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMjQ4MjY1NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaApAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudF9oCisjZGVmaW5lIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudF9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOworICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgU29ja2V0U3RyZWFtRXJyb3I7
CisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlOworCisgICAgY2xhc3MgU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCgpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsT3BlblN0cmVh
bShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBLVVJMJikgeyB9CisgICAgICAgIHZpcnR1YWwg
dm9pZCB3aWxsU2VuZERhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgY2hhciogZGF0YSwg
aW50IGxlbmd0aCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZE9wZW4oU29ja2V0U3Ry
ZWFtSGFuZGxlKikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShTb2NrZXRTdHJl
YW1IYW5kbGUqKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVkRGF0YShTb2Nr
ZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSB7IH0KKworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBTb2Nr
ZXRTdHJlYW1FcnJvciYpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlZEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5jZWxs
YXRpb24oU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
KSB7IH0KKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtRXJyb3IuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Tb2NrZXRTdHJlYW1FcnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmY5NjQxYWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U29ja2V0U3RyZWFtRXJyb3IuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU29ja2V0U3RyZWFt
RXJyb3JfaAorI2RlZmluZSBTb2NrZXRTdHJlYW1FcnJvcl9oCisKKyNpbmNsdWRlICJTb2NrZXRT
dHJlYW1FcnJvckJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU29j
a2V0U3RyZWFtRXJyb3IgOiBwdWJsaWMgU29ja2V0U3RyZWFtRXJyb3JCYXNlIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIFNvY2tldFN0cmVhbUVycm9yKCkgeyB9CisgICAgICAgIGV4cGxpY2l0IFNv
Y2tldFN0cmVhbUVycm9yKGludCBlcnJvckNvZGUpCisgICAgICAgICAgICA6IFNvY2tldFN0cmVh
bUVycm9yQmFzZShlcnJvckNvZGUpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgfTsKKwor
fSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBTb2NrZXRTdHJlYW1FcnJvcl9o
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFu
ZGxlLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk4NzQ2NAotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaApA
QCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFNvY2tldFN0cmVhbUhhbmRsZV9oCisjZGVmaW5lIFNvY2tl
dFN0cmVhbUhhbmRsZV9oCisKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmgiCisK
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOworICAgIGNsYXNzIENyZWRlbnRpYWw7CisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50OworCisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlIDogcHVibGljIFJlZkNvdW50
ZWQ8U29ja2V0U3RyZWFtSGFuZGxlPiwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZUJhc2Ugewor
ICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxl
PiBjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVu
dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkp
OyB9CisKKyAgICAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlKCk7CisKKyAgICBwcm90
ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgaW50IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ2xvc2UoKTsKKwor
ICAgIHByaXZhdGU6CisgICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBLVVJMJiwgU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisKKyAgICAgICAgLy8gTm8gYXV0aGVudGljYXRpb24g
Zm9yIHN0cmVhbXMgcGVyIHNlLCBidXQgcHJveHkgbWF5IGFzayBmb3IgY3JlZGVudGlhbHMuCisg
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZWRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYpOworICAgICAgICB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKTsKKyAgICAg
ICAgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKyAgICAgICAgdm9pZCByZWNlaXZlZENhbmNlbGxh
dGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworICAgIH07CisKK30gIC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gU29ja2V0U3RyZWFtSGFuZGxlX2gKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5l
dC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZO
ZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExZWFmNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFu
ZGxlQ0ZOZXQuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlNvY2tldFN0cmVhbUhhbmRsZS5oIgorCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NvY2tldFN0
cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCisgICAgOiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKHVy
bCwgY2xpZW50KQoreworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIG5l
dyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
KworU29ja2V0U3RyZWFtSGFuZGxlOjp+U29ja2V0U3RyZWFtSGFuZGxlKCkKK3sKKyAgICBMT0co
TmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBkZWxldGUiLCB0aGlzKTsKKyAgICBzZXRD
bGllbnQoMCk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworaW50IFNvY2tldFN0cmVhbUhh
bmRsZTo6cGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqLCBpbnQpCit7CisgICAgTE9HKE5ldHdvcmss
ICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxhdGZvcm1TZW5kIiwgdGhpcyk7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6
OnBsYXRmb3JtQ2xvc2UoKQoreworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxl
ICVwIHBsYXRmb3JtQ2xvc2UiLCB0aGlzKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6ZGlkUmVjZWl2ZWRBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWNlaXZlZFJl
cXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFt
SGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVh
bUVycm9yLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1FcnJv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NjQxYWQKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1FcnJv
ci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTb2NrZXRTdHJlYW1FcnJvcl9oCisjZGVmaW5l
IFNvY2tldFN0cmVhbUVycm9yX2gKKworI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yQmFzZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1FcnJvciA6
IHB1YmxpYyBTb2NrZXRTdHJlYW1FcnJvckJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgU29j
a2V0U3RyZWFtRXJyb3IoKSB7IH0KKyAgICAgICAgZXhwbGljaXQgU29ja2V0U3RyZWFtRXJyb3Io
aW50IGVycm9yQ29kZSkKKyAgICAgICAgICAgIDogU29ja2V0U3RyZWFtRXJyb3JCYXNlKGVycm9y
Q29kZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgIC8vIFNvY2tldFN0cmVhbUVycm9yX2gKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZS5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk4NzQ2NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZS5oCkBAIC0wLDAgKzEs
NjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU29ja2V0U3RyZWFtSGFuZGxlX2gKKyNkZWZpbmUgU29ja2V0U3RyZWFtSGFu
ZGxlX2gKKworI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCIKKworI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CisgICAg
Y2xhc3MgQ3JlZGVudGlhbDsKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7CisK
KyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTb2NrZXRT
dHJlYW1IYW5kbGU+LCBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlQmFzZSB7CisgICAgcHVibGlj
OgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShj
b25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVy
biBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KSk7IH0KKworICAg
ICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGUoKTsKKworICAgIHByb3RlY3RlZDoKKyAg
ICAgICAgdmlydHVhbCBpbnQgcGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5n
dGgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DbG9zZSgpOworCisgICAgcHJpdmF0
ZToKKyAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwmLCBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQqKTsKKworICAgICAgICAvLyBObyBhdXRoZW50aWNhdGlvbiBmb3Igc3RyZWFt
cyBwZXIgc2UsIGJ1dCBwcm94eSBtYXkgYXNrIGZvciBjcmVkZW50aWFscy4KKyAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlZEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJik7CisgICAgICAgIHZvaWQgcmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYpOworICAgICAgICB2b2lkIHJl
Y2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpOworICAgICAgICB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmICAvLyBTb2NrZXRTdHJlYW1IYW5kbGVfaApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWVhZjYwCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291
cC5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU29j
a2V0U3RyZWFtSGFuZGxlLmgiCisKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU29ja2V0U3RyZWFtSGFu
ZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQqIGNsaWVudCkKKyAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UodXJsLCBjbGll
bnQpCit7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVu
dCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitTb2Nr
ZXRTdHJlYW1IYW5kbGU6On5Tb2NrZXRTdHJlYW1IYW5kbGUoKQoreworICAgIExPRyhOZXR3b3Jr
LCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIGRlbGV0ZSIsIHRoaXMpOworICAgIHNldENsaWVudCgw
KTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitpbnQgU29ja2V0U3RyZWFtSGFuZGxlOjpw
bGF0Zm9ybVNlbmQoY29uc3QgY2hhciosIGludCkKK3sKKyAgICBMT0coTmV0d29yaywgIlNvY2tl
dFN0cmVhbUhhbmRsZSAlcCBwbGF0Zm9ybVNlbmQiLCB0aGlzKTsKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZv
cm1DbG9zZSgpCit7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxh
dGZvcm1DbG9zZSIsIHRoaXMpOworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU29j
a2V0U3RyZWFtSGFuZGxlOjpkaWRSZWNlaXZlZEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRv
Q29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6
OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38520</attachid>
            <date>2009-08-24 19:43:00 -0700</date>
            <delta_ts>2009-08-24 22:51:48 -0700</delta_ts>
            <desc>Add SocketStreamHandle interface</desc>
            <filename>bug-28037-20090825114259.patch</filename>
            <type>text/plain</type>
            <size>44755</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTA3YzlkMy4uNTYxYzliMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAwOS0wOC0yNCAgRnVtaXRvc2hpIFVr
YWkgIDx1a2FpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUgaW50ZXJmYWNlIGZvciBXZWJTb2Nr
ZXQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
ODAzNworCisgICAgICAgIEFsbCBidWlsZCBzeXN0ZW1zIG9ubHkgZm9yIEdOVW1ha2VmaWxlIGFu
ZCBXZWJDb3JlLnhjb2RlcHJvaiBub3cuCisgICAgICAgIE90aGVyIGJ1aWxkIHN5c3RlbXMgd2ls
bCBiZSB1cGRhdGVkIG9uY2UgdGhlIGNvZGUgaXMgZnVuY3Rpb25hbC4KKyAgICAgICAgVGVzdHMg
d2lsbCBiZSBsYW5kZWQgb25jZSB0aGlzIGNvZGUgaXMgY29tcGxldGUgYW5kIGZ1bmN0aW9uYWwu
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJl
YW1FcnJvckJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tl
dFN0cmVhbUVycm9yQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Nv
Y2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1FcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUVycm9yLmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGUu
aDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhh
bmRsZVNvdXAuY3BwOiBBZGRlZC4KKwogMjAwOS0wOC0yNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQppbmRleCA5OTViNzc1Li43MTExYWU3IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTMyMTQsOSArMzIxNCwxOSBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDb25z
dHJ1Y3Rvci5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDb25zdHJ1Y3Rv
ci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcCBcCisJV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgXAorCVdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvckJhc2UuaCBcCisJV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwIFwKKwlXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oIFwKKwlXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggXAogCVdlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwIFwKIAlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKIAor
d2ViY29yZWd0a19zb3VyY2VzICs9IFwKKwlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9T
b2NrZXRTdHJlYW1FcnJvci5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2Nr
ZXRTdHJlYW1IYW5kbGUuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0
U3RyZWFtSGFuZGxlU291cC5jcHAKKwogZWxzZQogd2ViY29yZV9jcHBmbGFncyArPSAtREVOQUJM
RV9XRUJfU09DS0VUUz0wCiBlbmRpZiAgIyBFTkQgRU5BQkxFX1dFQl9TT0NLRVRTCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY3MzMwMzcuLjIyNDFmM2Ig
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MzIsNiAr
ODMyLDExIEBACiAJCTRFMTk1OTJFMEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RTE5NTkyODBB
MzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV4cC5oICovOyB9OwogCQk1MTAxODQ2OTBCMDg2
MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTAx
ODQ2QTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyog
Q2FjaGVkUGFnZS5jcHAgKi87IH07CisJCTUxMEQ0QTMzMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2Nr
ZXRTdHJlYW1FcnJvckJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9y
QmFzZS5jcHAgKi87IH07CisJCTUxMEQ0QTM0MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1FcnJvckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMEQ0QTJFMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuaCAq
LzsgfTsKKwkJNTEwRDRBMzYxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJh
c2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEw
RDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwICovOyB9
OworCQk1MTBENEEzNzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMzEx
MDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCAqLzsgfTsKKwkJNTEw
RDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMzIxMDMxNjVF
RTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICovOyB9OwogCQk1MTE2RDk3
NzBDRjE3N0JEMDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTE2RDk3NTBDRjE3N0JEMDBDMkI4NEQgLyog
RGF0YWJhc2VEZXRhaWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTExRjIzMTcwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjIz
MTMwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suY3BwICovOyB9OwogCQk1MTFG
MjMxODBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjIzMTQwREMxNjBEQTAwNEYwMDMy
IC8qIExvY2FsU3RvcmFnZVRhc2suaCAqLzsgfTsKQEAgLTkxNSw2ICs5MjAsOSBAQAogCQk1MUE5
MjY3RTBENTNGMDU3MDA2M0VDQzIgLyogT3JpZ2luVXNhZ2VSZWNvcmQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBOTI2N0EwRDUzRjA1NzAwNjNF
Q0MyIC8qIE9yaWdpblVzYWdlUmVjb3JkLmNwcCAqLzsgfTsKIAkJNTFBOTI2N0YwRDUzRjA1NzAw
NjNFQ0MyIC8qIE9yaWdpblVzYWdlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE5MjY3QjBENTNGMDU3MDA2M0VDQzIgLyogT3JpZ2luVXNh
Z2VSZWNvcmQuaCAqLzsgfTsKIAkJNTFBQTNGNkYwQkQ1QUE5RTAwODkyOTcxIC8qIFJlc291cmNl
TG9hZGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFBQTNGNkUwQkQ1QUE5RTAwODkyOTcxIC8qIFJlc291cmNlTG9hZGVyTWFjLm1tICovOyB9
OworCQk1MUFCQUUxQjEwM0MxOEZGMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtRXJyb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFBMTAzQzE4
RkYwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oICovOyB9OworCQk1MUFCQUUxRTEwM0Mx
OTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUxQzEwM0MxOTEzMDA4QzUyNjAgLyogU29j
a2V0U3RyZWFtSGFuZGxlLmggKi87IH07CisJCTUxQUJBRTFGMTAzQzE5MTMwMDhDNTI2MCAvKiBT
b2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUxRDEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFt
SGFuZGxlQ0ZOZXQuY3BwICovOyB9OwogCQk1MUIyNDE3QjBEOTMxRjNGMDBFODNGNUMgLyogTGVn
YWN5V2ViQXJjaGl2ZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQjI0MTdBMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFj
Lm1tICovOyB9OwogCQk1MUJFMzdFMDBEQUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkUzN0RFMERB
RUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oICovOyB9OwogCQk1MUMwQUEzOTBGMkFBMTBB
MDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQzBBQTM4MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01ODk5
LDYgKzU5MDcsMTEgQEAKIAkJNEUxOTU5MjgwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlF
eHAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUXVlcnlFeHAuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8q
IENhY2hlZFBhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUGFn
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2ODBCMDg2MDJBMDA0QTgy
NUYgLyogQ2FjaGVkUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDYWNoZWRQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRDRBMkQx
MDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEEyRTEwMzE2NUVFMDA0OUVBNTQgLyogU29j
a2V0U3RyZWFtRXJyb3JCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNv
Y2tldFN0cmVhbUVycm9yQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBE
NEEzMDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0
IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTE2RDk3NTBDRjE3N0JEMDBD
MkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERhdGFiYXNlRGV0YWlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFG
MjMxMzBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhbFN0b3JhZ2VUYXNrLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRjIzMTQwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3Rv
cmFnZVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxTdG9yYWdl
VGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTk4OSw2ICs2MDAyLDkgQEAK
IAkJNTFBOTI2N0EwRDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblVzYWdlUmVjb3JkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9yaWdpblVzYWdlUmVjb3JkLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBOTI2N0IwRDUzRjA1NzAwNjNFQ0MyIC8q
IE9yaWdpblVzYWdlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9y
aWdpblVzYWdlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQUEzRjZF
MEJENUFBOUUwMDg5Mjk3MSAvKiBSZXNvdXJjZUxvYWRlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlTG9hZGVyTWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MUFCQUUxQTEwM0MxOEZGMDA4QzUyNjAgLyogU29ja2V0U3Ry
ZWFtRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU29ja2V0U3RyZWFt
RXJyb3IuaDsgcGF0aCA9IGNmL1NvY2tldFN0cmVhbUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxQUJBRTFDMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5k
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU29ja2V0U3RyZWFtSGFuZGxl
Lmg7IHBhdGggPSBjZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTFBQkFFMUQxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUNG
TmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNvY2tldFN0cmVh
bUhhbmRsZUNGTmV0LmNwcDsgcGF0aCA9IGNmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMjQxN0EwRDkzMUYzRjAwRTgzRjVDIC8q
IExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUJFMzdERTBEQUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUFyZWEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEZyYW1lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMDQ5OCw2ICsxMDUxNCwxMSBAQAogCQk2NTZCODRENzBBRUEx
Q0U5MDBBMDk1QjQgLyogbmV0d29yayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVy
cm9yQmFzZS5jcHAgKi8sCisJCQkJNTEwRDRBMkUxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0
cmVhbUVycm9yQmFzZS5oICovLAorCQkJCTUxMEQ0QTMwMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2Nr
ZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCAqLywKKwkJCQk1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQg
LyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oICovLAorCQkJCTUxMEQ0QTMyMTAzMTY1RUUwMDQ5
RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLywKIAkJCQlCMkYzNEZFNzBFODJG
ODE3MDBGNjI3Q0QgLyogY2YgKi8sCiAJCQkJNjU2Qjg0RTcwQUVBMURBRTAwQTA5NUI0IC8qIG1h
YyAqLywKIAkJCQk5MzRGNzEzNzBENUE2RUZGMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VCYXNlLmNwcCAqLywKQEAgLTEzNjc3LDYgKzEzNjk4LDkgQEAKIAkJQjJGMzRGRTcwRTgy
RjgxNzAwRjYyN0NEIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQk1MUFCQUUxQzEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxl
LmggKi8sCisJCQkJNTFBQkFFMUQxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRs
ZUNGTmV0LmNwcCAqLywKKwkJCQk1MUFCQUUxQTEwM0MxOEZGMDA4QzUyNjAgLyogU29ja2V0U3Ry
ZWFtRXJyb3IuaCAqLywKIAkJCQlCMkYzNEZFODBFODJGODI3MDBGNjI3Q0QgLyogRE5TQ0ZOZXQu
Y3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBjZjsKQEAgLTE3MzMwLDYgKzE3MzU0LDExIEBACiAJ
CQkJQkNGQTkzMDgxMDMzMzE5MzAwN0IyNUQxIC8qIFJlbmRlck92ZXJmbG93LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwMDE0NjI4QjEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnku
aCBpbiBIZWFkZXJzICovLAogCQkJCUI1MUJGNkYxMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFu
c2FjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRDRBMzQxMDMxNjVFRTAwNDlF
QTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRDRB
MzcxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUxMEQ0QTM4MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQUJBRTFCMTAzQzE4RkYwMDhDNTI2MCAvKiBT
b2NrZXRTdHJlYW1FcnJvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFBQkFFMUUxMDNDMTkxMzAw
OEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xOTM5OCw2
ICsxOTQyNyw5IEBACiAJCQkJQjVDMTEyM0IxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDAxNDYyOEExMDNDRDFERTAw
MEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1MUJG
NkYwMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MTBENEEzMzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JC
YXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMEQ0QTM2MTAzMTY1RUUwMDQ5RUE1NCAvKiBT
b2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxQUJBRTFGMTAz
QzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJv
ckJhc2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFz
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJmYjQ0YwotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvckJh
c2UuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNv
Y2tldFN0cmVhbUVycm9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU29ja2V0U3RyZWFt
RXJyb3IgU29ja2V0U3RyZWFtRXJyb3JCYXNlOjpjb3B5KCkgY29uc3QKK3sKKyAgICBTb2NrZXRT
dHJlYW1FcnJvciBlcnJvckNvcHk7CisgICAgZXJyb3JDb3B5Lm1fZXJyb3JDb2RlID0gbV9lcnJv
ckNvZGU7CisgICAgcmV0dXJuIGVycm9yQ29weTsKK30KKworYm9vbCBTb2NrZXRTdHJlYW1FcnJv
ckJhc2U6OmNvbXBhcmUoY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImIGEsIGNvbnN0IFNvY2tldFN0
cmVhbUVycm9yJiBiKQoreworICAgIHJldHVybiBhLmVycm9yQ29kZSgpID09IGIuZXJyb3JDb2Rl
KCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmggYi9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYjdjYTM1YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvckJhc2UuaApAQCAtMCwwICsxLDcyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNv
Y2tldFN0cmVhbUVycm9yQmFzZV9oCisjZGVmaW5lIFNvY2tldFN0cmVhbUVycm9yQmFzZV9oCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNvY2tldFN0cmVhbUVycm9yOworCisg
ICAgY2xhc3MgU29ja2V0U3RyZWFtRXJyb3JCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIC8v
IE1ha2VzIGEgZGVlcCBjb3B5LiAgVXNlZnVsIGZvciB3aGVuIHlvdSBuZWVkIHRvIHVzZSBhIFNv
Y2tldFN0cmVhbUVycm9yIG9uIGFub3RoZXIgdGhyZWFkLgorICAgICAgICBTb2NrZXRTdHJlYW1F
cnJvciBjb3B5KCkgY29uc3Q7CisKKyAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biBtX2lzTnVsbDsgfQorCisgICAgICAgIGludCBlcnJvckNvZGUoKSBjb25zdCB7IHJldHVybiBt
X2Vycm9yQ29kZTsgfQorCisgICAgICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29uc3QgU29ja2V0
U3RyZWFtRXJyb3ImLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYpOworCisgICAgcHJvdGVjdGVk
OgorICAgICAgICBTb2NrZXRTdHJlYW1FcnJvckJhc2UoKQorICAgICAgICAgICAgOiBtX2Vycm9y
Q29kZSgwKQorICAgICAgICAgICAgLCBtX2lzTnVsbCh0cnVlKQorICAgICAgICB7CisgICAgICAg
IH0KKworICAgICAgICBleHBsaWNpdCBTb2NrZXRTdHJlYW1FcnJvckJhc2UoaW50IGVycm9yQ29k
ZSkKKyAgICAgICAgICAgIDogbV9lcnJvckNvZGUoZXJyb3JDb2RlKQorICAgICAgICAgICAgLCBt
X2lzTnVsbChmYWxzZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgaW50IG1fZXJy
b3JDb2RlOworICAgICAgICBib29sIG1faXNOdWxsOworICAgIH07CisKKyAgICBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJiBhLCBjb25zdCBTb2NrZXRTdHJl
YW1FcnJvciYgYikgeyByZXR1cm4gU29ja2V0U3RyZWFtRXJyb3JCYXNlOjpjb21wYXJlKGEsIGIp
OyB9CisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYg
YSwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQorCit9
ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIFNvY2tldFN0cmVhbUVycm9yQmFz
ZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxl
QmFzZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc1YzI0OAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5k
bGVCYXNlLmNwcApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oIgorCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgdW5zaWduZWQgaW50
IGJ1ZmZlclNpemUgPSAxMDAgKiAxMDI0ICogMTAyNDsKKworU29ja2V0U3RyZWFtSGFuZGxlQmFz
ZTo6U29ja2V0U3RyZWFtSGFuZGxlQmFzZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCogY2xpZW50KQorICAgIDogbV91cmwodXJsKQorICAgICwgbV9jbGllbnQoY2xp
ZW50KQorICAgICwgbV9zdGF0ZShDb25uZWN0aW5nKQoreworfQorCitTb2NrZXRTdHJlYW1IYW5k
bGVCYXNlOjpTb2NrZXRTdHJlYW1TdGF0ZSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpzdGF0ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhdGU7Cit9CisKK2Jvb2wgU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZTo6c2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGlmICht
X3N0YXRlID09IENvbm5lY3RpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1f
YnVmZmVyLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAobV9idWZmZXIuc2l6ZSgpICsgbGVuZ3Ro
ID4gYnVmZmVyU2l6ZSkgeworICAgICAgICAgICAgLy8gRklYTUU6IHJlcG9ydCBlcnJvciB0byBp
bmRpY2F0ZSB0aGF0IGJ1ZmZlciBoYXMgbm8gbW9yZSBzcGFjZS4KKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgbGVuZ3Ro
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGludCBieXRlc1dyaXR0ZW4gPSAw
OworICAgIGlmIChtX3N0YXRlID09IE9wZW4pCisgICAgICAgIGJ5dGVzV3JpdHRlbiA9IHBsYXRm
b3JtU2VuZChkYXRhLCBsZW5ndGgpOworICAgIGlmIChieXRlc1dyaXR0ZW4gPD0gMCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2J1ZmZlci5zaXplKCkgKyBsZW5ndGggLSBieXRl
c1dyaXR0ZW4gPiBidWZmZXJTaXplKSB7CisgICAgICAgIC8vIEZJWE1FOiByZXBvcnQgZXJyb3Ig
dG8gaW5kaWNhdGUgdGhhdCBidWZmZXIgaGFzIG5vIG1vcmUgc3BhY2UuCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgaWYgKGJ5dGVzV3JpdHRlbiA8IGxlbmd0aCkKKyAgICAgICAg
bV9idWZmZXIuYXBwZW5kKGRhdGEgKyBieXRlc1dyaXR0ZW4sIGxlbmd0aCAtIGJ5dGVzV3JpdHRl
bik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6
Y2xvc2UoKQoreworICAgIHBsYXRmb3JtQ2xvc2UoKTsKKyAgICBtX3N0YXRlID0gQ2xvc2VkOwor
fQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OnNldENsaWVudChTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQqIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIWNsaWVudCB8fCAoIW1fY2xpZW50
ICYmIG1fc3RhdGUgPT0gQ29ubmVjdGluZykpOworICAgIG1fY2xpZW50ID0gY2xpZW50OworfQor
Citib29sIFNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OnNlbmRQZW5kaW5nRGF0YSgpCit7CisgICAg
aWYgKG1fc3RhdGUgIT0gT3BlbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2J1
ZmZlci5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpbnQgYnl0ZXNXcml0
dGVuID0gcGxhdGZvcm1TZW5kKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKTsKKyAg
ICBpZiAoYnl0ZXNXcml0dGVuIDw9IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBWZWN0
b3I8Y2hhcj4gcmVtYWluaW5nRGF0YTsKKyAgICBBU1NFUlQobV9idWZmZXIuc2l6ZSgpIC0gYnl0
ZXNXcml0dGVuIDw9IGJ1ZmZlclNpemUpOworICAgIHJlbWFpbmluZ0RhdGEuYXBwZW5kKG1fYnVm
ZmVyLmRhdGEoKSArIGJ5dGVzV3JpdHRlbiwgbV9idWZmZXIuc2l6ZSgpIC0gYnl0ZXNXcml0dGVu
KTsKKyAgICBtX2J1ZmZlci5zd2FwKHJlbWFpbmluZ0RhdGEpOworICAgIHJldHVybiB0cnVlOwor
fQorCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZmMwMTFkZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTb2Nr
ZXRTdHJlYW1IYW5kbGVCYXNlX2gKKyNkZWZpbmUgU29ja2V0U3RyZWFtSGFuZGxlQmFzZV9oCisK
KyNpbmNsdWRlICJLVVJMLmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZTsKKyAgICBjbGFzcyBT
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7CisKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVC
YXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGVudW0gU29ja2V0U3RyZWFtU3RhdGUgeyBDb25u
ZWN0aW5nLCBPcGVuLCBDbG9zZWQgfTsKKyAgICAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFu
ZGxlQmFzZSgpIHsgfQorICAgICAgICBTb2NrZXRTdHJlYW1TdGF0ZSBzdGF0ZSgpIGNvbnN0Owor
CisgICAgICAgIGJvb2wgc2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICAg
ICAgdm9pZCBjbG9zZSgpOworICAgICAgICBpbnQgYnVmZmVyZWRBbW91bnQoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlci5zaXplKCk7IH0KKworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgICAgIHZvaWQgc2V0
Q2xpZW50KFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOworCisgICAgcHJvdGVjdGVkOgorICAg
ICAgICBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKGNvbnN0IEtVUkwmLCBTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQqKTsKKworICAgICAgICBib29sIHNlbmRQZW5kaW5nRGF0YSgpOworICAgICAgICB2
aXJ0dWFsIGludCBwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DbG9zZSgpID0gMDsKKworICAgICAgICBL
VVJMIG1fdXJsOworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIG1fY2xpZW50Owor
ICAgICAgICBWZWN0b3I8Y2hhcj4gbV9idWZmZXI7CisgICAgICAgIFNvY2tldFN0cmVhbVN0YXRl
IG1fc3RhdGU7CisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAv
LyBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4xZmIyM2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50X2gKKyNkZWZpbmUgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50X2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U7CisgICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1FcnJvcjsK
KyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGU7CisKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50KCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxPcGVuU3RyZWFt
KFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEtVUkwmKSB7IH0KKyAgICAgICAgdmlydHVhbCB2
b2lkIHdpbGxTZW5kRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBjaGFyKiAvKmRhdGEq
LywgaW50IC8qbGVuZ3RoKi8pIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuKFNv
Y2tldFN0cmVhbUhhbmRsZSopIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoU29j
a2V0U3RyZWFtSGFuZGxlKikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlZERh
dGEoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgY2hhciogLypkYXRhKi8sIGludCAvKmxlbmd0
aCovKSB7IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChTb2NrZXRTdHJlYW1IYW5k
bGUqLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlZEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFNvY2tldFN0cmVhbUhhbmRsZSos
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShTb2NrZXRTdHJlYW1IYW5kbGUqLCBj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVjZWl2ZWRDYW5jZWxsYXRpb24oU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKSB7IH0KKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgIC8vIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudF9oCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtRXJyb3IuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1FcnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmY5NjQxYWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtRXJyb3IuaApAQCAtMCwwICsxLDUwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgU29ja2V0U3RyZWFtRXJyb3JfaAorI2RlZmluZSBTb2NrZXRTdHJlYW1FcnJvcl9oCisKKyNp
bmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvckJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CisgICAgY2xhc3MgU29ja2V0U3RyZWFtRXJyb3IgOiBwdWJsaWMgU29ja2V0U3RyZWFtRXJyb3JC
YXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNvY2tldFN0cmVhbUVycm9yKCkgeyB9CisgICAg
ICAgIGV4cGxpY2l0IFNvY2tldFN0cmVhbUVycm9yKGludCBlcnJvckNvZGUpCisgICAgICAgICAg
ICA6IFNvY2tldFN0cmVhbUVycm9yQmFzZShlcnJvckNvZGUpCisgICAgICAgIHsKKyAgICAgICAg
fQorCisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBTb2Nr
ZXRTdHJlYW1FcnJvcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U29ja2V0U3RyZWFtSGFuZGxlLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk4NzQ2
NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGUuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNvY2tldFN0cmVhbUhhbmRsZV9o
CisjZGVmaW5lIFNvY2tldFN0cmVhbUhhbmRsZV9oCisKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1I
YW5kbGVCYXNlLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOworICAgIGNsYXNzIENyZWRlbnRpYWw7CisgICAgY2xhc3MgU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50OworCisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlIDog
cHVibGljIFJlZkNvdW50ZWQ8U29ja2V0U3RyZWFtSGFuZGxlPiwgcHVibGljIFNvY2tldFN0cmVh
bUhhbmRsZUJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U29j
a2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNvY2tldFN0cmVhbUhhbmRs
ZSh1cmwsIGNsaWVudCkpOyB9CisKKyAgICAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxl
KCk7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgaW50IHBsYXRmb3JtU2VuZChj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBsYXRm
b3JtQ2xvc2UoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZShj
b25zdCBLVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisKKyAgICAgICAgLy8gTm8g
YXV0aGVudGljYXRpb24gZm9yIHN0cmVhbXMgcGVyIHNlLCBidXQgcHJveHkgbWF5IGFzayBmb3Ig
Y3JlZGVudGlhbHMuCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZWRBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworICAgICAgICB2b2lkIHJlY2Vp
dmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRl
bnRpYWwmKTsKKyAgICAgICAgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENy
ZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKyAgICAgICAgdm9pZCBy
ZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworICAg
IH07CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gU29ja2V0U3RyZWFt
SGFuZGxlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGVDRk5ldC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjExZWFmNjAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZS5oIgorCisjaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgor
I2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1NvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwm
IHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCisgICAgOiBTb2NrZXRTdHJl
YW1IYW5kbGVCYXNlKHVybCwgY2xpZW50KQoreworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3Ry
ZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKworU29ja2V0U3RyZWFtSGFuZGxlOjp+U29ja2V0U3RyZWFtSGFuZGxl
KCkKK3sKKyAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBkZWxldGUiLCB0
aGlzKTsKKyAgICBzZXRDbGllbnQoMCk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworaW50
IFNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqLCBpbnQpCit7Cisg
ICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxhdGZvcm1TZW5kIiwgdGhp
cyk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBTb2Nr
ZXRTdHJlYW1IYW5kbGU6OnBsYXRmb3JtQ2xvc2UoKQoreworICAgIExPRyhOZXR3b3JrLCAiU29j
a2V0U3RyZWFtSGFuZGxlICVwIHBsYXRmb3JtQ2xvc2UiLCB0aGlzKTsKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6ZGlkUmVjZWl2ZWRBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnJlY2VpdmVk
Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRp
YWwmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFu
ZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvY2tldFN0cmVhbUVycm9yLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9T
b2NrZXRTdHJlYW1FcnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5
NjQxYWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9T
b2NrZXRTdHJlYW1FcnJvci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTb2NrZXRTdHJlYW1F
cnJvcl9oCisjZGVmaW5lIFNvY2tldFN0cmVhbUVycm9yX2gKKworI2luY2x1ZGUgIlNvY2tldFN0
cmVhbUVycm9yQmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTb2Nr
ZXRTdHJlYW1FcnJvciA6IHB1YmxpYyBTb2NrZXRTdHJlYW1FcnJvckJhc2UgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgU29ja2V0U3RyZWFtRXJyb3IoKSB7IH0KKyAgICAgICAgZXhwbGljaXQgU29j
a2V0U3RyZWFtRXJyb3IoaW50IGVycm9yQ29kZSkKKyAgICAgICAgICAgIDogU29ja2V0U3RyZWFt
RXJyb3JCYXNlKGVycm9yQ29kZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICB9OworCit9
ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIFNvY2tldFN0cmVhbUVycm9yX2gK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhh
bmRsZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk4NzQ2NAotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRs
ZS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU29ja2V0U3RyZWFtSGFuZGxlX2gKKyNkZWZpbmUg
U29ja2V0U3RyZWFtSGFuZGxlX2gKKworI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUJhc2Uu
aCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U7CisgICAgY2xhc3MgQ3JlZGVudGlhbDsKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQ7CisKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGUgOiBwdWJsaWMgUmVm
Q291bnRlZDxTb2NrZXRTdHJlYW1IYW5kbGU+LCBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlQmFz
ZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2NrZXRTdHJlYW1I
YW5kbGU+IGNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCog
Y2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xp
ZW50KSk7IH0KKworICAgICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGUoKTsKKworICAg
IHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCBpbnQgcGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DbG9zZSgp
OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwm
LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKKworICAgICAgICAvLyBObyBhdXRoZW50aWNh
dGlvbiBmb3Igc3RyZWFtcyBwZXIgc2UsIGJ1dCBwcm94eSBtYXkgYXNrIGZvciBjcmVkZW50aWFs
cy4KKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlZEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisgICAgICAgIHZvaWQgcmVjZWl2ZWRDcmVkZW50
aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYpOwor
ICAgICAgICB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworICAgICAgICB2b2lkIHJlY2VpdmVkQ2Fu
Y2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisgICAgfTsKKworfSAg
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBTb2NrZXRTdHJlYW1IYW5kbGVfaApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFu
ZGxlU291cC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1I
YW5kbGVTb3VwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWVhZjYw
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0
U3RyZWFtSGFuZGxlU291cC5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlLmgiCisKKyNpbmNsdWRlICJLVVJMLmgiCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVk
ZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
U29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBT
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKKyAgICA6IFNvY2tldFN0cmVhbUhhbmRs
ZUJhc2UodXJsLCBjbGllbnQpCit7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5k
bGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCitTb2NrZXRTdHJlYW1IYW5kbGU6On5Tb2NrZXRTdHJlYW1IYW5kbGUoKQorewor
ICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIGRlbGV0ZSIsIHRoaXMpOwor
ICAgIHNldENsaWVudCgwKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitpbnQgU29ja2V0
U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciosIGludCkKK3sKKyAgICBMT0co
TmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBwbGF0Zm9ybVNlbmQiLCB0aGlzKTsKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIFNvY2tldFN0cmVh
bUhhbmRsZTo6cGxhdGZvcm1DbG9zZSgpCit7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJl
YW1IYW5kbGUgJXAgcGxhdGZvcm1DbG9zZSIsIHRoaXMpOworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpkaWRSZWNlaXZlZEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50
aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnJl
Y2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb2Nr
ZXRTdHJlYW1IYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38527</attachid>
            <date>2009-08-24 22:51:53 -0700</date>
            <delta_ts>2009-08-25 19:41:33 -0700</delta_ts>
            <desc>Add SocketStreamHandle interface</desc>
            <filename>bug-28037-20090825145151.patch</filename>
            <type>text/plain</type>
            <size>44757</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTA3YzlkMy4uZmZkZWZiMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAwOS0wOC0yNCAgRnVtaXRvc2hpIFVr
YWkgIDx1a2FpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUgaW50ZXJmYWNlIGZvciBXZWJTb2Nr
ZXQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
ODAzNworICAgICAgICAKKyAgICAgICAgQWxsIGJ1aWxkIHN5c3RlbXMgb25seSBmb3IgR05VbWFr
ZWZpbGUgYW5kIFdlYkNvcmUueGNvZGVwcm9qIG5vdy4KKyAgICAgICAgT3RoZXIgYnVpbGQgc3lz
dGVtcyB3aWxsIGJlIHVwZGF0ZWQgb25jZSB0aGUgY29kZSBpcyBmdW5jdGlvbmFsLgorICAgICAg
ICBUZXN0cyB3aWxsIGJlIGxhbmRlZCBvbmNlIHRoaXMgY29kZSBpcyBjb21wbGV0ZSBhbmQgZnVu
Y3Rpb25hbC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Nv
Y2tldFN0cmVhbUVycm9yQmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUVycm9yLmg6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlLmg6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtRXJy
b3IuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVh
bUhhbmRsZS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0
U3RyZWFtSGFuZGxlU291cC5jcHA6IEFkZGVkLgorCiAyMDA5LTA4LTI0ICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJs
c3Nvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCmluZGV4IDk5NWI3NzUuLjcxMTFhZTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzIxNCw5ICszMjE0
LDE5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNv
Y2tldENvbnN0cnVjdG9yLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldENv
bnN0cnVjdG9yLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3Bw
IFwKKwlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBc
CisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5oIFwKKwlX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgXAorCVdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggXAorCVdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBcCiAJV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgXAogCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaAogCit3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvY2tldFN0cmVhbUVycm9yLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvY2tldFN0cmVhbUhhbmRsZS5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcAorCiBlbHNlCiB3ZWJjb3JlX2NwcGZsYWdzICs9
IC1ERU5BQkxFX1dFQl9TT0NLRVRTPTAKIGVuZGlmICAjIEVORCBFTkFCTEVfV0VCX1NPQ0tFVFMK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjczMzAzNy4u
MjI0MWYzYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTgzMiw2ICs4MzIsMTEgQEAKIAkJNEUxOTU5MkUwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVl
cnlFeHAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRF
MTk1OTI4MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggKi87IH07CiAJCTUxMDE4
NDY5MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2Fj
aGVkUGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxMDE4NDZBMEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY4MEIwODYwMkEwMDRB
ODI1RiAvKiBDYWNoZWRQYWdlLmNwcCAqLzsgfTsKKwkJNTEwRDRBMzMxMDMxNjVFRTAwNDlFQTU0
IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3Ry
ZWFtRXJyb3JCYXNlLmNwcCAqLzsgfTsKKwkJNTEwRDRBMzQxMDMxNjVFRTAwNDlFQTU0IC8qIFNv
Y2tldFN0cmVhbUVycm9yQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEwRDRBMkUxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9y
QmFzZS5oICovOyB9OworCQk1MTBENEEzNjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFt
SGFuZGxlQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTBENEEzMDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5j
cHAgKi87IH07CisJCTUxMEQ0QTM3MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5k
bGVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oICovOyB9
OworCQk1MTBENEEzODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEz
MjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggKi87IH07CiAJ
CTUxMTZEOTc3MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTZEOTc1MENGMTc3QkQwMEMy
Qjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MTFGMjMxNzBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9y
YWdlVGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTFGMjMxMzBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAgKi87IH07
CiAJCTUxMUYyMzE4MERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGMjMxNDBEQzE2MERB
MDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5oICovOyB9OwpAQCAtOTE1LDYgKzkyMCw5IEBA
CiAJCTUxQTkyNjdFMEQ1M0YwNTcwMDYzRUNDMiAvKiBPcmlnaW5Vc2FnZVJlY29yZC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE5MjY3QTBENTNG
MDU3MDA2M0VDQzIgLyogT3JpZ2luVXNhZ2VSZWNvcmQuY3BwICovOyB9OwogCQk1MUE5MjY3RjBE
NTNGMDU3MDA2M0VDQzIgLyogT3JpZ2luVXNhZ2VSZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTkyNjdCMEQ1M0YwNTcwMDYzRUNDMiAvKiBP
cmlnaW5Vc2FnZVJlY29yZC5oICovOyB9OwogCQk1MUFBM0Y2RjBCRDVBQTlFMDA4OTI5NzEgLyog
UmVzb3VyY2VMb2FkZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUFBM0Y2RTBCRDVBQTlFMDA4OTI5NzEgLyogUmVzb3VyY2VMb2FkZXJNYWMu
bW0gKi87IH07CisJCTUxQUJBRTFCMTAzQzE4RkYwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1FcnJv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFF
MUExMDNDMThGRjAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUVycm9yLmggKi87IH07CisJCTUxQUJB
RTFFMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFDMTAzQzE5MTMwMDhDNTI2
MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLzsgfTsKKwkJNTFBQkFFMUYxMDNDMTkxMzAwOEM1
MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2Nr
ZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAgKi87IH07CiAJCTUxQjI0MTdCMEQ5MzFGM0YwMEU4M0Y1
QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFCMjQxN0EwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFy
Y2hpdmVNYWMubW0gKi87IH07CiAJCTUxQkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdl
QXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFC
RTM3REUwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi87IH07CiAJCTUxQzBBQTM5
MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hl
ZEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTU4OTksNiArNTkwNywxMSBAQAogCQk0RTE5NTkyODBBMzlEQUNDMDAyMjBGRTUgLyogTWVk
aWFRdWVyeUV4cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFRdWVy
eUV4cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2NzBCMDg2MDJBMDA0
QTgyNUYgLyogQ2FjaGVkUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWNoZWRQYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4NDY4MEIwODYw
MkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENhY2hlZFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUVycm9yQmFzZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0QTJFMTAzMTY1RUUwMDQ5RUE1
NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU29ja2V0U3RyZWFtRXJyb3JCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxMEQ0QTMwMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRs
ZUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEEzMTEwMzE2NUVF
MDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTZEOTc1MENG
MTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGF0YWJhc2VEZXRhaWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxMUYyMzEzMERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvY2FsU3RvcmFnZVRhc2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFGMjMxNDBEQzE2MERBMDA0RjAwMzIgLyog
TG9jYWxTdG9yYWdlVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2Nh
bFN0b3JhZ2VUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01OTg5LDYgKzYw
MDIsOSBAQAogCQk1MUE5MjY3QTBENTNGMDU3MDA2M0VDQzIgLyogT3JpZ2luVXNhZ2VSZWNvcmQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3JpZ2luVXNhZ2VSZWNv
cmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE5MjY3QjBENTNGMDU3MDA2
M0VDQzIgLyogT3JpZ2luVXNhZ2VSZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gT3JpZ2luVXNhZ2VSZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFBQTNGNkUwQkQ1QUE5RTAwODkyOTcxIC8qIFJlc291cmNlTG9hZGVyTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkZXJNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQUJBRTFBMTAzQzE4RkYwMDhDNTI2MCAvKiBT
b2NrZXRTdHJlYW1FcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTb2Nr
ZXRTdHJlYW1FcnJvci5oOyBwYXRoID0gY2YvU29ja2V0U3RyZWFtRXJyb3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFMUMxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0
cmVhbUhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTb2NrZXRTdHJl
YW1IYW5kbGUuaDsgcGF0aCA9IGNmL1NvY2tldFN0cmVhbUhhbmRsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MUFCQUUxRDEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFt
SGFuZGxlQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU29j
a2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOyBwYXRoID0gY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZO
ZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIyNDE3QTBEOTMxRjNGMDBF
ODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IExlZ2FjeVdlYkFyY2hpdmVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJh
bWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkRnJhbWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNDk4LDYgKzEwNTE0LDExIEBACiAJCTY1NkI4
NEQ3MEFFQTFDRTkwMEEwOTVCNCAvKiBuZXR3b3JrICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0
U3RyZWFtRXJyb3JCYXNlLmNwcCAqLywKKwkJCQk1MTBENEEyRTEwMzE2NUVFMDA0OUVBNTQgLyog
U29ja2V0U3RyZWFtRXJyb3JCYXNlLmggKi8sCisJCQkJNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0
IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwICovLAorCQkJCTUxMEQ0QTMxMTAzMTY1RUUw
MDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggKi8sCisJCQkJNTEwRDRBMzIxMDMx
NjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICovLAogCQkJCUIyRjM0
RkU3MEU4MkY4MTcwMEY2MjdDRCAvKiBjZiAqLywKIAkJCQk2NTZCODRFNzBBRUExREFFMDBBMDk1
QjQgLyogbWFjICovLAogCQkJCTkzNEY3MTM3MEQ1QTZFRkYwMDAxOEQ2OSAvKiBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUJhc2UuY3BwICovLApAQCAtMTM2NzcsNiArMTM2OTgsOSBAQAogCQlCMkYz
NEZFNzBFODJGODE3MDBGNjI3Q0QgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTUxQUJBRTFDMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJl
YW1IYW5kbGUuaCAqLywKKwkJCQk1MUFCQUUxRDEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3Ry
ZWFtSGFuZGxlQ0ZOZXQuY3BwICovLAorCQkJCTUxQUJBRTFBMTAzQzE4RkYwMDhDNTI2MCAvKiBT
b2NrZXRTdHJlYW1FcnJvci5oICovLAogCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBE
TlNDRk5ldC5jcHAgKi8sCiAJCQkpOwogCQkJbmFtZSA9IGNmOwpAQCAtMTczMzAsNiArMTczNTQs
MTEgQEAKIAkJCQlCQ0ZBOTMwODEwMzMzMTkzMDA3QjI1RDEgLyogUmVuZGVyT3ZlcmZsb3cuaCBp
biBIZWFkZXJzICovLAogCQkJCTAwMTQ2MjhCMTAzQ0QxREUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nl
c3NFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjUxQkY2RjExMDJDOUU1OTAwMDJDMTVBIC8q
IFNRTFRyYW5zYWN0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTBENEEzNDEwMzE2
NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MTBENEEzNzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFBQkFFMUIxMDNDMThGRjAwOEM1
MjYwIC8qIFNvY2tldFN0cmVhbUVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUFCQUUxRTEw
M0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAg
LTE5Mzk4LDYgKzE5NDI3LDkgQEAKIAkJCQlCNUMxMTIzQjEwMkI2QzQ2MDAwOTY1NzggLyogU1FM
VHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwMDE0NjI4QTEw
M0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjUxQkY2RjAxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTUxMEQ0QTMzMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1FcnJvckJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwRDRBMzYxMDMxNjVFRTAwNDlF
QTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFB
QkFFMUYxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0
cmVhbUVycm9yQmFzZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFt
RXJyb3JCYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmZiNDRj
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUVycm9yQmFzZS5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTb2Nr
ZXRTdHJlYW1FcnJvciBTb2NrZXRTdHJlYW1FcnJvckJhc2U6OmNvcHkoKSBjb25zdAoreworICAg
IFNvY2tldFN0cmVhbUVycm9yIGVycm9yQ29weTsKKyAgICBlcnJvckNvcHkubV9lcnJvckNvZGUg
PSBtX2Vycm9yQ29kZTsKKyAgICByZXR1cm4gZXJyb3JDb3B5OworfQorCitib29sIFNvY2tldFN0
cmVhbUVycm9yQmFzZTo6Y29tcGFyZShjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYgYSwgY29uc3Qg
U29ja2V0U3RyZWFtRXJyb3ImIGIpCit7CisgICAgcmV0dXJuIGEuZXJyb3JDb2RlKCkgPT0gYi5l
cnJvckNvZGUoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvckJhc2UuaCBiL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvckJhc2UuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5iN2NhMzViCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5oCkBAIC0wLDAgKzEsNzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgU29ja2V0U3RyZWFtRXJyb3JCYXNlX2gKKyNkZWZpbmUgU29ja2V0U3RyZWFtRXJyb3JC
YXNlX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU29ja2V0U3RyZWFtRXJy
b3I7CisKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1FcnJvckJhc2UgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgLy8gTWFrZXMgYSBkZWVwIGNvcHkuICBVc2VmdWwgZm9yIHdoZW4geW91IG5lZWQgdG8g
dXNlIGEgU29ja2V0U3RyZWFtRXJyb3Igb24gYW5vdGhlciB0aHJlYWQuCisgICAgICAgIFNvY2tl
dFN0cmVhbUVycm9yIGNvcHkoKSBjb25zdDsKKworICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNOdWxsOyB9CisKKyAgICAgICAgaW50IGVycm9yQ29kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZXJyb3JDb2RlOyB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgY29tcGFyZShjb25z
dCBTb2NrZXRTdHJlYW1FcnJvciYsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJik7CisKKyAgICBw
cm90ZWN0ZWQ6CisgICAgICAgIFNvY2tldFN0cmVhbUVycm9yQmFzZSgpCisgICAgICAgICAgICA6
IG1fZXJyb3JDb2RlKDApCisgICAgICAgICAgICAsIG1faXNOdWxsKHRydWUpCisgICAgICAgIHsK
KyAgICAgICAgfQorCisgICAgICAgIGV4cGxpY2l0IFNvY2tldFN0cmVhbUVycm9yQmFzZShpbnQg
ZXJyb3JDb2RlKQorICAgICAgICAgICAgOiBtX2Vycm9yQ29kZShlcnJvckNvZGUpCisgICAgICAg
ICAgICAsIG1faXNOdWxsKGZhbHNlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBp
bnQgbV9lcnJvckNvZGU7CisgICAgICAgIGJvb2wgbV9pc051bGw7CisgICAgfTsKKworICAgIGlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImIGEsIGNvbnN0IFNv
Y2tldFN0cmVhbUVycm9yJiBiKSB7IHJldHVybiBTb2NrZXRTdHJlYW1FcnJvckJhc2U6OmNvbXBh
cmUoYSwgYik7IH0KKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNvY2tldFN0cmVh
bUVycm9yJiBhLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYgYikgeyByZXR1cm4gIShhID09IGIp
OyB9CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gU29ja2V0U3RyZWFt
RXJyb3JCYXNlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRT
dHJlYW1IYW5kbGVCYXNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJl
YW1IYW5kbGVCYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzVj
MjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0
cmVhbUhhbmRsZUJhc2UuY3BwCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmgiCisKKyNpbmNsdWRlICJTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCB1bnNp
Z25lZCBpbnQgYnVmZmVyU2l6ZSA9IDEwMCAqIDEwMjQgKiAxMDI0OworCitTb2NrZXRTdHJlYW1I
YW5kbGVCYXNlOjpTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKGNvbnN0IEtVUkwmIHVybCwgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX3VybCh1cmwpCisgICAgLCBtX2Ns
aWVudChjbGllbnQpCisgICAgLCBtX3N0YXRlKENvbm5lY3RpbmcpCit7Cit9CisKK1NvY2tldFN0
cmVhbUhhbmRsZUJhc2U6OlNvY2tldFN0cmVhbVN0YXRlIFNvY2tldFN0cmVhbUhhbmRsZUJhc2U6
OnN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGF0ZTsKK30KKworYm9vbCBTb2NrZXRT
dHJlYW1IYW5kbGVCYXNlOjpzZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7Cisg
ICAgaWYgKG1fc3RhdGUgPT0gQ29ubmVjdGluZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghbV9idWZmZXIuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChtX2J1ZmZlci5zaXplKCkg
KyBsZW5ndGggPiBidWZmZXJTaXplKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogcmVwb3J0IGVy
cm9yIHRvIGluZGljYXRlIHRoYXQgYnVmZmVyIGhhcyBubyBtb3JlIHNwYWNlLgorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIG1fYnVmZmVyLmFwcGVuZChkYXRh
LCBsZW5ndGgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaW50IGJ5dGVzV3Jp
dHRlbiA9IDA7CisgICAgaWYgKG1fc3RhdGUgPT0gT3BlbikKKyAgICAgICAgYnl0ZXNXcml0dGVu
ID0gcGxhdGZvcm1TZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgaWYgKGJ5dGVzV3JpdHRlbiA8PSAw
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fYnVmZmVyLnNpemUoKSArIGxlbmd0
aCAtIGJ5dGVzV3JpdHRlbiA+IGJ1ZmZlclNpemUpIHsKKyAgICAgICAgLy8gRklYTUU6IHJlcG9y
dCBlcnJvciB0byBpbmRpY2F0ZSB0aGF0IGJ1ZmZlciBoYXMgbm8gbW9yZSBzcGFjZS4KKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoYnl0ZXNXcml0dGVuIDwgbGVuZ3RoKQor
ICAgICAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSArIGJ5dGVzV3JpdHRlbiwgbGVuZ3RoIC0gYnl0
ZXNXcml0dGVuKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5k
bGVCYXNlOjpjbG9zZSgpCit7CisgICAgcGxhdGZvcm1DbG9zZSgpOworICAgIG1fc3RhdGUgPSBD
bG9zZWQ7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6c2V0Q2xpZW50KFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQoreworICAgIEFTU0VSVCghY2xpZW50IHx8ICgh
bV9jbGllbnQgJiYgbV9zdGF0ZSA9PSBDb25uZWN0aW5nKSk7CisgICAgbV9jbGllbnQgPSBjbGll
bnQ7Cit9CisKK2Jvb2wgU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6c2VuZFBlbmRpbmdEYXRhKCkK
K3sKKyAgICBpZiAobV9zdGF0ZSAhPSBPcGVuKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKG1fYnVmZmVyLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGludCBi
eXRlc1dyaXR0ZW4gPSBwbGF0Zm9ybVNlbmQobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXpl
KCkpOworICAgIGlmIChieXRlc1dyaXR0ZW4gPD0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIFZlY3RvcjxjaGFyPiByZW1haW5pbmdEYXRhOworICAgIEFTU0VSVChtX2J1ZmZlci5zaXpl
KCkgLSBieXRlc1dyaXR0ZW4gPD0gYnVmZmVyU2l6ZSk7CisgICAgcmVtYWluaW5nRGF0YS5hcHBl
bmQobV9idWZmZXIuZGF0YSgpICsgYnl0ZXNXcml0dGVuLCBtX2J1ZmZlci5zaXplKCkgLSBieXRl
c1dyaXR0ZW4pOworICAgIG1fYnVmZmVyLnN3YXAocmVtYWluaW5nRGF0YSk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5mYzAxMWRkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaApAQCAtMCwwICsxLDcyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFNvY2tldFN0cmVhbUhhbmRsZUJhc2VfaAorI2RlZmluZSBTb2NrZXRTdHJlYW1IYW5kbGVC
YXNlX2gKKworI2luY2x1ZGUgIktVUkwuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlOworICAg
IGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKKworICAgIGNsYXNzIFNvY2tldFN0cmVh
bUhhbmRsZUJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgZW51bSBTb2NrZXRTdHJlYW1TdGF0
ZSB7IENvbm5lY3RpbmcsIE9wZW4sIENsb3NlZCB9OworICAgICAgICB2aXJ0dWFsIH5Tb2NrZXRT
dHJlYW1IYW5kbGVCYXNlKCkgeyB9CisgICAgICAgIFNvY2tldFN0cmVhbVN0YXRlIHN0YXRlKCkg
Y29uc3Q7CisKKyAgICAgICAgYm9vbCBzZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgp
OworICAgICAgICB2b2lkIGNsb3NlKCk7CisgICAgICAgIGludCBidWZmZXJlZEFtb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyLnNpemUoKTsgfQorCisgICAgICAgIFNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KKyAgICAgICAg
dm9pZCBzZXRDbGllbnQoU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisKKyAgICBwcm90ZWN0
ZWQ6CisgICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UoY29uc3QgS1VSTCYsIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCopOworCisgICAgICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRhKCk7Cisg
ICAgICAgIHZpcnR1YWwgaW50IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsb3NlKCkgPSAwOworCisg
ICAgICAgIEtVUkwgbV91cmw7CisgICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogbV9j
bGllbnQ7CisgICAgICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZlcjsKKyAgICAgICAgU29ja2V0U3Ry
ZWFtU3RhdGUgbV9zdGF0ZTsKKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgIC8vIFNvY2tldFN0cmVhbUhhbmRsZUJhc2VfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjA0Yzc0NGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgKQEAgLTAsMCArMSw2MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnRfaAorI2RlZmluZSBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnRfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTsKKyAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFNvY2tldFN0cmVh
bUVycm9yOworICAgIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZTsKKworICAgIGNsYXNzIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5Tb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQoKSB7IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbE9w
ZW5TdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgS1VSTCYpIHsgfQorICAgICAgICB2
aXJ0dWFsIHZvaWQgd2lsbFNlbmREYXRhKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IGNoYXIq
IC8qZGF0YSovLCBpbnQgLypsZW5ndGgqLykgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZE9wZW4oU29ja2V0U3RyZWFtSGFuZGxlKikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRD
bG9zZShTb2NrZXRTdHJlYW1IYW5kbGUqKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IGNoYXIqIC8qZGF0YSovLCBpbnQg
LypsZW5ndGgqLykgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoU29ja2V0U3Ry
ZWFtSGFuZGxlKiwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImKSB7IH0KKworICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFNvY2tldFN0cmVhbUhh
bmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CisgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShTb2NrZXRTdHJlYW1IYW5k
bGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsgfQorICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7IH0KKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgIC8vIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudF9oCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtRXJyb3IuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1FcnJvci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NjQxYWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtRXJyb3IuaApAQCAtMCwwICsxLDUwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgU29ja2V0U3RyZWFtRXJyb3JfaAorI2RlZmluZSBTb2NrZXRTdHJlYW1FcnJvcl9o
CisKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvckJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisgICAgY2xhc3MgU29ja2V0U3RyZWFtRXJyb3IgOiBwdWJsaWMgU29ja2V0U3RyZWFt
RXJyb3JCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNvY2tldFN0cmVhbUVycm9yKCkgeyB9
CisgICAgICAgIGV4cGxpY2l0IFNvY2tldFN0cmVhbUVycm9yKGludCBlcnJvckNvZGUpCisgICAg
ICAgICAgICA6IFNvY2tldFN0cmVhbUVycm9yQmFzZShlcnJvckNvZGUpCisgICAgICAgIHsKKyAg
ICAgICAgfQorCisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAv
LyBTb2NrZXRTdHJlYW1FcnJvcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U29ja2V0U3RyZWFtSGFuZGxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NjQxMzllNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGUuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNvY2tldFN0cmVhbUhh
bmRsZV9oCisjZGVmaW5lIFNvY2tldFN0cmVhbUhhbmRsZV9oCisKKyNpbmNsdWRlICJTb2NrZXRT
dHJlYW1IYW5kbGVCYXNlLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNz
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOworICAgIGNsYXNzIENyZWRlbnRpYWw7CisgICAgY2xh
c3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OworCisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFu
ZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8U29ja2V0U3RyZWFtSGFuZGxlPiwgcHVibGljIFNvY2tl
dFN0cmVhbUhhbmRsZUJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNvY2tldFN0cmVh
bUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CisKKyAgICAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFt
SGFuZGxlKCk7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgaW50IHBsYXRmb3Jt
U2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHBsYXRmb3JtQ2xvc2UoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFNvY2tldFN0cmVhbUhh
bmRsZShjb25zdCBLVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisKKyAgICAgICAg
Ly8gTm8gYXV0aGVudGljYXRpb24gZm9yIHN0cmVhbXMgcGVyIHNlLCBidXQgcHJveHkgbWF5IGFz
ayBmb3IgY3JlZGVudGlhbHMuCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisgICAgICAgIHZvaWQg
cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3Qg
Q3JlZGVudGlhbCYpOworICAgICAgICB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRo
b3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworICAgICAgICB2
b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7
CisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBTb2NrZXRT
dHJlYW1IYW5kbGVfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Nv
Y2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNmFhMzNmYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlLmgiCisKKyNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3Qg
S1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKKyAgICA6IFNvY2tl
dFN0cmVhbUhhbmRsZUJhc2UodXJsLCBjbGllbnQpCit7CisgICAgTE9HKE5ldHdvcmssICJTb2Nr
ZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCitTb2NrZXRTdHJlYW1IYW5kbGU6On5Tb2NrZXRTdHJlYW1I
YW5kbGUoKQoreworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIGRlbGV0
ZSIsIHRoaXMpOworICAgIHNldENsaWVudCgwKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
CitpbnQgU29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciosIGludCkK
K3sKKyAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBwbGF0Zm9ybVNlbmQi
LCB0aGlzKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lk
IFNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1DbG9zZSgpCit7CisgICAgTE9HKE5ldHdvcmss
ICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxhdGZvcm1DbG9zZSIsIHRoaXMpOworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWNl
aXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVk
ZW50aWFsJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFNvY2tldFN0cmVh
bUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30g
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9Tb2NrZXRTdHJlYW1FcnJvci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU29ja2V0U3RyZWFtRXJyb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5mOTY0MWFkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU29ja2V0U3RyZWFtRXJyb3IuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU29ja2V0U3Ry
ZWFtRXJyb3JfaAorI2RlZmluZSBTb2NrZXRTdHJlYW1FcnJvcl9oCisKKyNpbmNsdWRlICJTb2Nr
ZXRTdHJlYW1FcnJvckJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3Mg
U29ja2V0U3RyZWFtRXJyb3IgOiBwdWJsaWMgU29ja2V0U3RyZWFtRXJyb3JCYXNlIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIFNvY2tldFN0cmVhbUVycm9yKCkgeyB9CisgICAgICAgIGV4cGxpY2l0
IFNvY2tldFN0cmVhbUVycm9yKGludCBlcnJvckNvZGUpCisgICAgICAgICAgICA6IFNvY2tldFN0
cmVhbUVycm9yQmFzZShlcnJvckNvZGUpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgfTsK
KworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBTb2NrZXRTdHJlYW1FcnJv
cl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJl
YW1IYW5kbGUuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhh
bmRsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MTM5ZTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1I
YW5kbGUuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNvY2tldFN0cmVhbUhhbmRsZV9oCisjZGVm
aW5lIFNvY2tldFN0cmVhbUhhbmRsZV9oCisKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVC
YXNlLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOworICAgIGNsYXNzIENyZWRlbnRpYWw7CisgICAgY2xhc3MgU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50OworCisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlIDogcHVibGlj
IFJlZkNvdW50ZWQ8U29ja2V0U3RyZWFtSGFuZGxlPiwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRs
ZUJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U29ja2V0U3Ry
ZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNvY2tldFN0cmVhbUhhbmRsZSh1cmws
IGNsaWVudCkpOyB9CisKKyAgICAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlKCk7CisK
KyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgaW50IHBsYXRmb3JtU2VuZChjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ2xv
c2UoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBL
VVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisKKyAgICAgICAgLy8gTm8gYXV0aGVu
dGljYXRpb24gZm9yIHN0cmVhbXMgcGVyIHNlLCBidXQgcHJveHkgbWF5IGFzayBmb3IgY3JlZGVu
dGlhbHMuCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisgICAgICAgIHZvaWQgcmVjZWl2ZWRDcmVk
ZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYp
OworICAgICAgICB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlh
bChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworICAgICAgICB2b2lkIHJlY2VpdmVk
Q2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisgICAgfTsKKwor
fSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBTb2NrZXRTdHJlYW1IYW5kbGVf
aApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFt
SGFuZGxlU291cC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJl
YW1IYW5kbGVTb3VwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWEz
M2ZjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29j
a2V0U3RyZWFtSGFuZGxlU291cC5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlLmgiCisKKyNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5j
bHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJs
LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKKyAgICA6IFNvY2tldFN0cmVhbUhh
bmRsZUJhc2UodXJsLCBjbGllbnQpCit7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1I
YW5kbGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitTb2NrZXRTdHJlYW1IYW5kbGU6On5Tb2NrZXRTdHJlYW1IYW5kbGUoKQor
eworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIGRlbGV0ZSIsIHRoaXMp
OworICAgIHNldENsaWVudCgwKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitpbnQgU29j
a2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciosIGludCkKK3sKKyAgICBM
T0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBwbGF0Zm9ybVNlbmQiLCB0aGlzKTsK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIFNvY2tldFN0
cmVhbUhhbmRsZTo6cGxhdGZvcm1DbG9zZSgpCit7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRT
dHJlYW1IYW5kbGUgJXAgcGxhdGZvcm1DbG9zZSIsIHRoaXMpOworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWNlaXZlZENyZWRl
bnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6
cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gIC8vIG5hbWVz
cGFjZSBXZWJDb3Jl
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38588</attachid>
            <date>2009-08-25 19:41:39 -0700</date>
            <delta_ts>2009-08-26 13:05:55 -0700</delta_ts>
            <desc>Add SocketStreamHandle interface</desc>
            <filename>bug-28037-20090826114137.patch</filename>
            <type>text/plain</type>
            <size>44765</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTcxOTIyMC4uMjU2YTVlMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAwOS0wOC0yNSAgRnVtaXRvc2hpIFVr
YWkgIDx1a2FpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUgaW50ZXJmYWNlIGZvciBXZWJTb2Nr
ZXQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
ODAzNworCisgICAgICAgIEFkZCBidWlsZCBzeXN0ZW1zIG9ubHkgZm9yIEdOVW1ha2VmaWxlLmFt
IGFuZCBXZWJDb3JlLnhjb2RlcHJvai5ub3cuCisgICAgICAgIE90aGVyIGJ1aWxkIHN5c3RlbXMg
d2lsbCBiZSB1cGRhdGVkIG9uY2UgdGhlIGNvZGUgaXMgZnVuY3Rpb25hbC4KKyAgICAgICAgVGVz
dHMgd2lsbCBiZSBsYW5kZWQgb25jZSB0aGlzIGNvZGUgaXMgY29tcGxldGUgYW5kIGZ1bmN0aW9u
YWwuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRT
dHJlYW1FcnJvckJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Nv
Y2tldFN0cmVhbUVycm9yQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1FcnJvci5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUVycm9yLmg6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5k
bGUuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVh
bUhhbmRsZVNvdXAuY3BwOiBBZGRlZC4KKwogMjAwOS0wOC0yNSAgTWFyayBSb3dlICA8bXJvd2VA
YXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgaW5zdGFsbGluZyBJREwgZmlsZXMgaW4gdG8gdGhl
IGZyYW1ld29yay4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IDdlZGNjODMuLjkyNmNiMWEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzIyMCw5
ICszMjIwLDE5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYlNvY2tldENvbnN0cnVjdG9yLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNv
Y2tldENvbnN0cnVjdG9yLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0
b20uY3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNl
LmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5o
IFwKKwlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAg
XAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggXAor
CVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBcCiAJ
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgXAogCVdlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaAogCit3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAorCVdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUVycm9yLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZS5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcAorCiBlbHNlCiB3ZWJjb3JlX2NwcGZs
YWdzICs9IC1ERU5BQkxFX1dFQl9TT0NLRVRTPTAKIGVuZGlmICAjIEVORCBFTkFCTEVfV0VCX1NP
Q0tFVFMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDYw
ZmY2Yi4uN2JhMjRiNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTg4MSw2ICs4ODEsMTEgQEAKIAkJNEUxOTU5MkUwQTM5REFDQzAwMjIwRkU1IC8qIE1l
ZGlhUXVlcnlFeHAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRFMTk1OTI4MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggKi87IH07CiAJ
CTUxMDE4NDY5MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYg
LyogQ2FjaGVkUGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxMDE4NDZBMEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY4MEIwODYw
MkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCAqLzsgfTsKKwkJNTEwRDRBMzMxMDMxNjVFRTAw
NDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQgLyogU29j
a2V0U3RyZWFtRXJyb3JCYXNlLmNwcCAqLzsgfTsKKwkJNTEwRDRBMzQxMDMxNjVFRTAwNDlFQTU0
IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMkUxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVh
bUVycm9yQmFzZS5oICovOyB9OworCQk1MTBENEEzNjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0
U3RyZWFtSGFuZGxlQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTBENEEzMDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxl
QmFzZS5jcHAgKi87IH07CisJCTUxMEQ0QTM3MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1IYW5kbGVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5o
ICovOyB9OworCQk1MTBENEEzODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggKi87
IH07CiAJCTUxMTZEOTc3MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTZEOTc1MENGMTc3
QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTFGMjMxNzBEQzE2MERBMDA0RjAwMzIgLyogTG9j
YWxTdG9yYWdlVGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTFGMjMxMzBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAg
Ki87IH07CiAJCTUxMUYyMzE4MERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGMjMxNDBE
QzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5oICovOyB9OwpAQCAtOTY0LDYgKzk2
OSw5IEBACiAJCTUxQTkyNjdFMEQ1M0YwNTcwMDYzRUNDMiAvKiBPcmlnaW5Vc2FnZVJlY29yZC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE5MjY3
QTBENTNGMDU3MDA2M0VDQzIgLyogT3JpZ2luVXNhZ2VSZWNvcmQuY3BwICovOyB9OwogCQk1MUE5
MjY3RjBENTNGMDU3MDA2M0VDQzIgLyogT3JpZ2luVXNhZ2VSZWNvcmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTkyNjdCMEQ1M0YwNTcwMDYzRUND
MiAvKiBPcmlnaW5Vc2FnZVJlY29yZC5oICovOyB9OwogCQk1MUFBM0Y2RjBCRDVBQTlFMDA4OTI5
NzEgLyogUmVzb3VyY2VMb2FkZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUFBM0Y2RTBCRDVBQTlFMDA4OTI5NzEgLyogUmVzb3VyY2VMb2Fk
ZXJNYWMubW0gKi87IH07CisJCTUxQUJBRTFCMTAzQzE4RkYwMDhDNTI2MCAvKiBTb2NrZXRTdHJl
YW1FcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFBQkFFMUExMDNDMThGRjAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUVycm9yLmggKi87IH07CisJ
CTUxQUJBRTFFMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFDMTAzQzE5MTMw
MDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLzsgfTsKKwkJNTFBQkFFMUYxMDNDMTkx
MzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAv
KiBTb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAgKi87IH07CiAJCTUxQjI0MTdCMEQ5MzFGM0Yw
MEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMjQxN0EwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2Fj
eVdlYkFyY2hpdmVNYWMubW0gKi87IH07CiAJCTUxQkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBT
dG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFCRTM3REUwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi87IH07CiAJCTUx
QzBBQTM5MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8q
IENhY2hlZEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTYwMTAsNiArNjAxOCwxMSBAQAogCQk0RTE5NTkyODBBMzlEQUNDMDAyMjBGRTUg
LyogTWVkaWFRdWVyeUV4cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVk
aWFRdWVyeUV4cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2NzBCMDg2
MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDYWNoZWRQYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4NDY4
MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENhY2hlZFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUVycm9y
QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0QTJFMTAzMTY1RUUw
MDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU29ja2V0U3RyZWFtRXJyb3JCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxMEQ0QTMwMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVC
YXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVh
bUhhbmRsZUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEEzMTEw
MzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTZE
OTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VEZXRhaWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxMUYyMzEzMERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvY2FsU3RvcmFnZVRhc2su
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFGMjMxNDBEQzE2MERBMDA0RjAw
MzIgLyogTG9jYWxTdG9yYWdlVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBMb2NhbFN0b3JhZ2VUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTAw
LDYgKzYxMTMsOSBAQAogCQk1MUE5MjY3QTBENTNGMDU3MDA2M0VDQzIgLyogT3JpZ2luVXNhZ2VS
ZWNvcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3JpZ2luVXNh
Z2VSZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE5MjY3QjBENTNG
MDU3MDA2M0VDQzIgLyogT3JpZ2luVXNhZ2VSZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gT3JpZ2luVXNhZ2VSZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFBQTNGNkUwQkQ1QUE5RTAwODkyOTcxIC8qIFJlc291cmNlTG9hZGVyTWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkZXJNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQUJBRTFBMTAzQzE4RkYwMDhDNTI2
MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBTb2NrZXRTdHJlYW1FcnJvci5oOyBwYXRoID0gY2YvU29ja2V0U3RyZWFtRXJyb3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFMUMxMDNDMTkxMzAwOEM1MjYwIC8qIFNv
Y2tldFN0cmVhbUhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTb2Nr
ZXRTdHJlYW1IYW5kbGUuaDsgcGF0aCA9IGNmL1NvY2tldFN0cmVhbUhhbmRsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUFCQUUxRDEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0
U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOyBwYXRoID0gY2YvU29ja2V0U3RyZWFtSGFu
ZGxlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIyNDE3QTBEOTMx
RjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IExlZ2FjeVdlYkFyY2hpdmVNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJl
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2Fj
aGVkRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkRnJhbWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNjQ0LDYgKzEwNjYwLDExIEBACiAJ
CTY1NkI4NEQ3MEFFQTFDRTkwMEEwOTVCNCAvKiBuZXR3b3JrICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQgLyog
U29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCAqLywKKwkJCQk1MTBENEEyRTEwMzE2NUVFMDA0OUVB
NTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmggKi8sCisJCQkJNTEwRDRBMzAxMDMxNjVFRTAw
NDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwICovLAorCQkJCTUxMEQ0QTMxMTAz
MTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggKi8sCisJCQkJNTEwRDRB
MzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICovLAogCQkJ
CUIyRjM0RkU3MEU4MkY4MTcwMEY2MjdDRCAvKiBjZiAqLywKIAkJCQk2NTZCODRFNzBBRUExREFF
MDBBMDk1QjQgLyogbWFjICovLAogCQkJCTkzNEY3MTM3MEQ1QTZFRkYwMDAxOEQ2OSAvKiBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuY3BwICovLApAQCAtMTM4NDcsNiArMTM4NjgsOSBAQAog
CQlCMkYzNEZFNzBFODJGODE3MDBGNjI3Q0QgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxQUJBRTFDMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2Nr
ZXRTdHJlYW1IYW5kbGUuaCAqLywKKwkJCQk1MUFCQUUxRDEwM0MxOTEzMDA4QzUyNjAgLyogU29j
a2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwICovLAorCQkJCTUxQUJBRTFBMTAzQzE4RkYwMDhDNTI2
MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oICovLAogCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdD
RCAvKiBETlNDRk5ldC5jcHAgKi8sCiAJCQkpOwogCQkJbmFtZSA9IGNmOwpAQCAtMTc1MjYsNiAr
MTc1NTAsMTEgQEAKIAkJCQk0OUM3QjlFNjEwNDJEMzJGMDAwOUQ0NDcgLyogQ2FudmFzVGV4dHVy
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5RkMxMDQyRDM2NTAwMDlENDQ3IC8qIEdyYXBo
aWNzQ29udGV4dDNELmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QkEwMDEwNDJEMzhDMDAwOUQ0
NDcgLyogQ2FudmFzM0RMYXllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRDRBMzQxMDMxNjVF
RTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTEwRDRBMzcxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxMEQ0QTM4MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQUJBRTFCMTAzQzE4RkYwMDhDNTI2
MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFBQkFFMUUxMDND
MTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0x
OTYxNyw2ICsxOTY0Niw5IEBACiAJCQkJNDlDN0JBOEQxMDQyRjVCMTAwMDlENDQ3IC8qIEpTRG9j
dW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlDN0Q0RkIxMDQyRjk1RjAwMDlE
NDQ3IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNELmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQ5ODNBOTcwMTA0MzVFOTAwMERCNzBGOSAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwRDRBMzMxMDMxNjVFRTAwNDlFQTU0IC8qIFNv
Y2tldFN0cmVhbUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTBENEEzNjEwMzE2
NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
U29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1FcnJvckJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjcyZmI0NGMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29j
a2V0U3RyZWFtRXJyb3JCYXNlLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1NvY2tldFN0cmVhbUVycm9yIFNvY2tldFN0cmVhbUVycm9yQmFzZTo6Y29weSgpIGNvbnN0
Cit7CisgICAgU29ja2V0U3RyZWFtRXJyb3IgZXJyb3JDb3B5OworICAgIGVycm9yQ29weS5tX2Vy
cm9yQ29kZSA9IG1fZXJyb3JDb2RlOworICAgIHJldHVybiBlcnJvckNvcHk7Cit9CisKK2Jvb2wg
U29ja2V0U3RyZWFtRXJyb3JCYXNlOjpjb21wYXJlKGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJiBh
LCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYgYikKK3sKKyAgICByZXR1cm4gYS5lcnJvckNvZGUo
KSA9PSBiLmVycm9yQ29kZSgpOworfQorCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5oIGIv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3Y2EzNWIKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmgKQEAgLTAsMCAr
MSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBTb2NrZXRTdHJlYW1FcnJvckJhc2VfaAorI2RlZmluZSBTb2NrZXRTdHJl
YW1FcnJvckJhc2VfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTb2NrZXRT
dHJlYW1FcnJvcjsKKworICAgIGNsYXNzIFNvY2tldFN0cmVhbUVycm9yQmFzZSB7CisgICAgcHVi
bGljOgorICAgICAgICAvLyBNYWtlcyBhIGRlZXAgY29weS4gIFVzZWZ1bCBmb3Igd2hlbiB5b3Ug
bmVlZCB0byB1c2UgYSBTb2NrZXRTdHJlYW1FcnJvciBvbiBhbm90aGVyIHRocmVhZC4KKyAgICAg
ICAgU29ja2V0U3RyZWFtRXJyb3IgY29weSgpIGNvbnN0OworCisgICAgICAgIGJvb2wgaXNOdWxs
KCkgY29uc3QgeyByZXR1cm4gbV9pc051bGw7IH0KKworICAgICAgICBpbnQgZXJyb3JDb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9lcnJvckNvZGU7IH0KKworICAgICAgICBzdGF0aWMgYm9vbCBjb21w
YXJlKGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJiwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImKTsK
KworICAgIHByb3RlY3RlZDoKKyAgICAgICAgU29ja2V0U3RyZWFtRXJyb3JCYXNlKCkKKyAgICAg
ICAgICAgIDogbV9lcnJvckNvZGUoMCkKKyAgICAgICAgICAgICwgbV9pc051bGwodHJ1ZSkKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgZXhwbGljaXQgU29ja2V0U3RyZWFtRXJyb3JC
YXNlKGludCBlcnJvckNvZGUpCisgICAgICAgICAgICA6IG1fZXJyb3JDb2RlKGVycm9yQ29kZSkK
KyAgICAgICAgICAgICwgbV9pc051bGwoZmFsc2UpCisgICAgICAgIHsKKyAgICAgICAgfQorCisg
ICAgICAgIGludCBtX2Vycm9yQ29kZTsKKyAgICAgICAgYm9vbCBtX2lzTnVsbDsKKyAgICB9Owor
CisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYgYSwg
Y29uc3QgU29ja2V0U3RyZWFtRXJyb3ImIGIpIHsgcmV0dXJuIFNvY2tldFN0cmVhbUVycm9yQmFz
ZTo6Y29tcGFyZShhLCBiKTsgfQorICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU29j
a2V0U3RyZWFtRXJyb3ImIGEsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJiBiKSB7IHJldHVybiAh
KGEgPT0gYik7IH0KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBTb2Nr
ZXRTdHJlYW1FcnJvckJhc2VfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Nv
Y2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjg3NWMyNDgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
U29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCIKKworI2luY2x1ZGUg
IlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Nv
bnN0IHVuc2lnbmVkIGludCBidWZmZXJTaXplID0gMTAwICogMTAyNCAqIDEwMjQ7CisKK1NvY2tl
dFN0cmVhbUhhbmRsZUJhc2U6OlNvY2tldFN0cmVhbUhhbmRsZUJhc2UoY29uc3QgS1VSTCYgdXJs
LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fdXJsKHVybCkKKyAg
ICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fc3RhdGUoQ29ubmVjdGluZykKK3sKK30KKwor
U29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6U29ja2V0U3RyZWFtU3RhdGUgU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZTo6c3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YXRlOworfQorCitib29s
IFNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OnNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkKK3sKKyAgICBpZiAobV9zdGF0ZSA9PSBDb25uZWN0aW5nKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFtX2J1ZmZlci5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKG1fYnVmZmVy
LnNpemUoKSArIGxlbmd0aCA+IGJ1ZmZlclNpemUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBy
ZXBvcnQgZXJyb3IgdG8gaW5kaWNhdGUgdGhhdCBidWZmZXIgaGFzIG5vIG1vcmUgc3BhY2UuCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgbV9idWZmZXIuYXBw
ZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpbnQg
Ynl0ZXNXcml0dGVuID0gMDsKKyAgICBpZiAobV9zdGF0ZSA9PSBPcGVuKQorICAgICAgICBieXRl
c1dyaXR0ZW4gPSBwbGF0Zm9ybVNlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBpZiAoYnl0ZXNXcml0
dGVuIDw9IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9idWZmZXIuc2l6ZSgp
ICsgbGVuZ3RoIC0gYnl0ZXNXcml0dGVuID4gYnVmZmVyU2l6ZSkgeworICAgICAgICAvLyBGSVhN
RTogcmVwb3J0IGVycm9yIHRvIGluZGljYXRlIHRoYXQgYnVmZmVyIGhhcyBubyBtb3JlIHNwYWNl
LgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChieXRlc1dyaXR0ZW4gPCBs
ZW5ndGgpCisgICAgICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhICsgYnl0ZXNXcml0dGVuLCBsZW5n
dGggLSBieXRlc1dyaXR0ZW4pOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNvY2tldFN0
cmVhbUhhbmRsZUJhc2U6OmNsb3NlKCkKK3sKKyAgICBwbGF0Zm9ybUNsb3NlKCk7CisgICAgbV9z
dGF0ZSA9IENsb3NlZDsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpzZXRDbGll
bnQoU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJUKCFjbGll
bnQgfHwgKCFtX2NsaWVudCAmJiBtX3N0YXRlID09IENvbm5lY3RpbmcpKTsKKyAgICBtX2NsaWVu
dCA9IGNsaWVudDsKK30KKworYm9vbCBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpzZW5kUGVuZGlu
Z0RhdGEoKQoreworICAgIGlmIChtX3N0YXRlICE9IE9wZW4pCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAobV9idWZmZXIuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaW50IGJ5dGVzV3JpdHRlbiA9IHBsYXRmb3JtU2VuZChtX2J1ZmZlci5kYXRhKCksIG1fYnVm
ZmVyLnNpemUoKSk7CisgICAgaWYgKGJ5dGVzV3JpdHRlbiA8PSAwKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgVmVjdG9yPGNoYXI+IHJlbWFpbmluZ0RhdGE7CisgICAgQVNTRVJUKG1fYnVm
ZmVyLnNpemUoKSAtIGJ5dGVzV3JpdHRlbiA8PSBidWZmZXJTaXplKTsKKyAgICByZW1haW5pbmdE
YXRhLmFwcGVuZChtX2J1ZmZlci5kYXRhKCkgKyBieXRlc1dyaXR0ZW4sIG1fYnVmZmVyLnNpemUo
KSAtIGJ5dGVzV3JpdHRlbik7CisgICAgbV9idWZmZXIuc3dhcChyZW1haW5pbmdEYXRhKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggYi9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMDExZGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oCkBAIC0wLDAgKzEs
NzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU29ja2V0U3RyZWFtSGFuZGxlQmFzZV9oCisjZGVmaW5lIFNvY2tldFN0cmVh
bUhhbmRsZUJhc2VfaAorCisjaW5jbHVkZSAiS1VSTC5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5k
bGU7CisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OworCisgICAgY2xhc3MgU29j
a2V0U3RyZWFtSGFuZGxlQmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBlbnVtIFNvY2tldFN0
cmVhbVN0YXRlIHsgQ29ubmVjdGluZywgT3BlbiwgQ2xvc2VkIH07CisgICAgICAgIHZpcnR1YWwg
flNvY2tldFN0cmVhbUhhbmRsZUJhc2UoKSB7IH0KKyAgICAgICAgU29ja2V0U3RyZWFtU3RhdGUg
c3RhdGUoKSBjb25zdDsKKworICAgICAgICBib29sIHNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCk7CisgICAgICAgIHZvaWQgY2xvc2UoKTsKKyAgICAgICAgaW50IGJ1ZmZlcmVkQW1v
dW50KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuc2l6ZSgpOyB9CisKKyAgICAgICAgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQor
ICAgICAgICB2b2lkIHNldENsaWVudChTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKKworICAg
IHByb3RlY3RlZDoKKyAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxlQmFzZShjb25zdCBLVVJMJiwg
U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisKKyAgICAgICAgYm9vbCBzZW5kUGVuZGluZ0Rh
dGEoKTsKKyAgICAgICAgdmlydHVhbCBpbnQgcGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW5ndGgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ2xvc2UoKSA9
IDA7CisKKyAgICAgICAgS1VSTCBtX3VybDsKKyAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50KiBtX2NsaWVudDsKKyAgICAgICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOworICAgICAgICBT
b2NrZXRTdHJlYW1TdGF0ZSBtX3N0YXRlOworICAgIH07CisKK30gIC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAgLy8gU29ja2V0U3RyZWFtSGFuZGxlQmFzZV9oCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggYi9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRjNzQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaApAQCAtMCww
ICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudF9oCisjZGVmaW5lIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNz
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOworICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgU29j
a2V0U3RyZWFtRXJyb3I7CisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlOworCisgICAgY2xh
c3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1
YWwgflNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCgpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9p
ZCB3aWxsT3BlblN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBLVVJMJikgeyB9Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZERhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29u
c3QgY2hhciogLypkYXRhKi8sIGludCAvKmxlbmd0aCovKSB7IH0KKworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkT3BlbihTb2NrZXRTdHJlYW1IYW5kbGUqKSB7IH0KKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpZENsb3NlKFNvY2tldFN0cmVhbUhhbmRsZSopIHsgfQorICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgY2hhciogLypkYXRh
Ki8sIGludCAvKmxlbmd0aCovKSB7IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChT
b2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYpIHsgfQorCisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU29ja2V0
U3RyZWFtSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7IH0KKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFNvY2tldFN0
cmVhbUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CisgICAgICAg
IHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihTb2NrZXRTdHJlYW1IYW5kbGUqLCBj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsgfQorICAgIH07CisKK30gIC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50X2gKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1FcnJvci5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUVycm9yLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk2NDFhZAotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1FcnJvci5oCkBAIC0wLDAg
KzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBTb2NrZXRTdHJlYW1FcnJvcl9oCisjZGVmaW5lIFNvY2tldFN0cmVh
bUVycm9yX2gKKworI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yQmFzZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1FcnJvciA6IHB1YmxpYyBTb2Nr
ZXRTdHJlYW1FcnJvckJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgU29ja2V0U3RyZWFtRXJy
b3IoKSB7IH0KKyAgICAgICAgZXhwbGljaXQgU29ja2V0U3RyZWFtRXJyb3IoaW50IGVycm9yQ29k
ZSkKKyAgICAgICAgICAgIDogU29ja2V0U3RyZWFtRXJyb3JCYXNlKGVycm9yQ29kZSkKKyAgICAg
ICAgeworICAgICAgICB9CisKKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgIC8vIFNvY2tldFN0cmVhbUVycm9yX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi42NDEzOWU1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU29ja2V0
U3RyZWFtSGFuZGxlX2gKKyNkZWZpbmUgU29ja2V0U3RyZWFtSGFuZGxlX2gKKworI2luY2x1ZGUg
IlNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisg
ICAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CisgICAgY2xhc3MgQ3JlZGVudGlhbDsK
KyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7CisKKyAgICBjbGFzcyBTb2NrZXRT
dHJlYW1IYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTb2NrZXRTdHJlYW1IYW5kbGU+LCBwdWJs
aWMgU29ja2V0U3RyZWFtSGFuZGxlQmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29j
a2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KSk7IH0KKworICAgICAgICB2aXJ0dWFsIH5Tb2Nr
ZXRTdHJlYW1IYW5kbGUoKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCBpbnQg
cGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgcGxhdGZvcm1DbG9zZSgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgU29ja2V0
U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKKwor
ICAgICAgICAvLyBObyBhdXRoZW50aWNhdGlvbiBmb3Igc3RyZWFtcyBwZXIgc2UsIGJ1dCBwcm94
eSBtYXkgYXNrIGZvciBjcmVkZW50aWFscy4KKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKyAgICAg
ICAgdm9pZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
LCBjb25zdCBDcmVkZW50aWFsJik7CisgICAgICAgIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9Db250
aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7Cisg
ICAgICAgIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKTsKKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8v
IFNvY2tldFN0cmVhbUhhbmRsZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi42YWEzM2ZjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcApAQCAtMCwwICsxLDg4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKKwor
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRs
ZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQorICAg
IDogU29ja2V0U3RyZWFtSGFuZGxlQmFzZSh1cmwsIGNsaWVudCkKK3sKKyAgICBMT0coTmV0d29y
aywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50ICVwIiwgdGhpcywgbV9jbGllbnQp
OworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1NvY2tldFN0cmVhbUhhbmRsZTo6flNvY2tl
dFN0cmVhbUhhbmRsZSgpCit7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUg
JXAgZGVsZXRlIiwgdGhpcyk7CisgICAgc2V0Q2xpZW50KDApOworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK2ludCBTb2NrZXRTdHJlYW1IYW5kbGU6OnBsYXRmb3JtU2VuZChjb25zdCBjaGFy
KiwgaW50KQoreworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIHBsYXRm
b3JtU2VuZCIsIHRoaXMpOworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9
CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybUNsb3NlKCkKK3sKKyAgICBMT0co
TmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBwbGF0Zm9ybUNsb3NlIiwgdGhpcyk7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5k
bGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNv
bnN0IENyZWRlbnRpYWwmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU29j
a2V0U3RyZWFtSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRp
YWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUVycm9yLmggYi9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1FcnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmY5NjQxYWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1FcnJvci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBT
b2NrZXRTdHJlYW1FcnJvcl9oCisjZGVmaW5lIFNvY2tldFN0cmVhbUVycm9yX2gKKworI2luY2x1
ZGUgIlNvY2tldFN0cmVhbUVycm9yQmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAg
ICBjbGFzcyBTb2NrZXRTdHJlYW1FcnJvciA6IHB1YmxpYyBTb2NrZXRTdHJlYW1FcnJvckJhc2Ug
eworICAgIHB1YmxpYzoKKyAgICAgICAgU29ja2V0U3RyZWFtRXJyb3IoKSB7IH0KKyAgICAgICAg
ZXhwbGljaXQgU29ja2V0U3RyZWFtRXJyb3IoaW50IGVycm9yQ29kZSkKKyAgICAgICAgICAgIDog
U29ja2V0U3RyZWFtRXJyb3JCYXNlKGVycm9yQ29kZSkKKyAgICAgICAgeworICAgICAgICB9CisK
KyAgICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIFNvY2tldFN0
cmVhbUVycm9yX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
Y2tldFN0cmVhbUhhbmRsZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0
U3RyZWFtSGFuZGxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQxMzll
NQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tl
dFN0cmVhbUhhbmRsZS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU29ja2V0U3RyZWFtSGFuZGxl
X2gKKyNkZWZpbmUgU29ja2V0U3RyZWFtSGFuZGxlX2gKKworI2luY2x1ZGUgIlNvY2tldFN0cmVh
bUhhbmRsZUJhc2UuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U7CisgICAgY2xhc3MgQ3JlZGVudGlhbDsKKyAgICBjbGFzcyBT
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7CisKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGUg
OiBwdWJsaWMgUmVmQ291bnRlZDxTb2NrZXRTdHJlYW1IYW5kbGU+LCBwdWJsaWMgU29ja2V0U3Ry
ZWFtSGFuZGxlQmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
b2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFu
ZGxlKHVybCwgY2xpZW50KSk7IH0KKworICAgICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5k
bGUoKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCBpbnQgcGxhdGZvcm1TZW5k
KGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGxh
dGZvcm1DbG9zZSgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxl
KGNvbnN0IEtVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKKworICAgICAgICAvLyBO
byBhdXRoZW50aWNhdGlvbiBmb3Igc3RyZWFtcyBwZXIgc2UsIGJ1dCBwcm94eSBtYXkgYXNrIGZv
ciBjcmVkZW50aWFscy4KKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKyAgICAgICAgdm9pZCByZWNl
aXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVk
ZW50aWFsJik7CisgICAgICAgIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRD
cmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisgICAgICAgIHZvaWQg
cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKyAg
ICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIFNvY2tldFN0cmVh
bUhhbmRsZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVTb3VwLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
Y2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjZhYTMzZmMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKKworI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBL
VVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQorICAgIDogU29ja2V0
U3RyZWFtSGFuZGxlQmFzZSh1cmwsIGNsaWVudCkKK3sKKyAgICBMT0coTmV0d29yaywgIlNvY2tl
dFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50ICVwIiwgdGhpcywgbV9jbGllbnQpOworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK1NvY2tldFN0cmVhbUhhbmRsZTo6flNvY2tldFN0cmVhbUhh
bmRsZSgpCit7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgZGVsZXRl
IiwgdGhpcyk7CisgICAgc2V0Q2xpZW50KDApOworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K2ludCBTb2NrZXRTdHJlYW1IYW5kbGU6OnBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiwgaW50KQor
eworICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIHBsYXRmb3JtU2VuZCIs
IHRoaXMpOworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQg
U29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybUNsb3NlKCkKK3sKKyAgICBMT0coTmV0d29yaywg
IlNvY2tldFN0cmVhbUhhbmRsZSAlcCBwbGF0Zm9ybUNsb3NlIiwgdGhpcyk7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnJlY2Vp
dmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRl
bnRpYWwmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFt
SGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAg
Ly8gbmFtZXNwYWNlIFdlYkNvcmU=
</data>

          </attachment>
      

    </bug>

</bugzilla>