<?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>99817</bug_id>
          
          <creation_ts>2012-10-18 23:57:22 -0700</creation_ts>
          <short_desc>Add infrastructure for NetworkProcess management</short_desc>
          <delta_ts>2013-01-04 00:51:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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>
          
          <blocked>98537</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>746070</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-18 23:57:22 -0700</bug_when>
    <thetext>Add infrastructure for NetworkProcess management

All of this infrastructure closely follows PluginProcess infrastructure.

While there&apos;s no immediate plans to implement multiple NetworkProcesses the support is in place.  Each is identified by a String identifier.  The &quot;default&quot; NetworkProcess has an empty identifier.

With all of this support code in place, the WebProcess itself will now ensure it has a connection to the default NetworkProcess when it is initialized, and the various classes and processes in play will all be notified one someone else crashes.

The NetworkProcess still does nothing for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746083</commentid>
    <comment_count>1</comment_count>
      <attachid>169564</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-19 00:08:51 -0700</bug_when>
    <thetext>Created attachment 169564
Patch v1 - Get EWS rolling

Proposed patch.

It&apos;s large, but it&apos;s also largely boilerplate and should be quickly reviewable by those familiar with PluginProcess infrastructure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746084</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-19 00:09:01 -0700</bug_when>
    <thetext>(Glaring at you, Anders)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746085</commentid>
    <comment_count>3</comment_count>
      <attachid>169564</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-19 00:15:55 -0700</bug_when>
    <thetext>Comment on attachment 169564
Patch v1 - Get EWS rolling

Attachment 169564 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14462340</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746088</commentid>
    <comment_count>4</comment_count>
      <attachid>169565</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-19 00:23:27 -0700</bug_when>
    <thetext>Created attachment 169565
Patch v2 - Qt, don&apos;t break!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746091</commentid>
    <comment_count>5</comment_count>
      <attachid>169565</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-19 00:29:16 -0700</bug_when>
    <thetext>Comment on attachment 169565
Patch v2 - Qt, don&apos;t break!

Attachment 169565 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14457343</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746099</commentid>
    <comment_count>6</comment_count>
      <attachid>169569</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-19 00:38:36 -0700</bug_when>
    <thetext>Created attachment 169569
Patch v3 - And again...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746351</commentid>
    <comment_count>7</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-19 09:02:45 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (Glaring at you, Anders)

I don&apos;t really have time to do a lenghty review today, and I&apos;d rather have Sam review it. However, I can take a look at it this weekend if he hasn&apos;t gotten to it first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746367</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-19 09:29:26 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #2)
&gt; &gt; (Glaring at you, Anders)
&gt; 
&gt; I don&apos;t really have time to do a lenghty review today, and I&apos;d rather have Sam review it. However, I can take a look at it this weekend if he hasn&apos;t gotten to it first.

He&apos;s on vacation today...  :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746491</commentid>
    <comment_count>9</comment_count>
      <attachid>169569</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-10-19 11:36:42 -0700</bug_when>
    <thetext>Comment on attachment 169569
Patch v3 - And again...

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

One general note. Since NetworkProcess is more trusted than WebProcess, we need to detect malformed messages, and do the same thing that we do when we get a malformed message in UI process - namely, crash Safari itself. Because we don&apos;t want to drag on when WebProcess has parasites.

r=me, mostly on the assumption that this is is closely modeled after existing code. Sam and Anders should take a look post-landing.

&gt; Source/WebKit2/ChangeLog:10
&gt; +        Add proper handling of crashes so any of the 3+ processes in the dance are notified if any of the others crash.

Presumably other processes are immediately terminated when UI process quits or crashes?

I have a concern about this design. When NetworkProcess crashes, both WebProcess and UI process will be notified. Clearly, WebProcess will want a new connection. But UI process may not have handled the crash notification yet. What is the protection against such races?

&gt; Source/WebKit2/ChangeLog:24
&gt; +        * NetworkProcess/NetworkConnectionToWebProcess.cpp: Added.

I do not understand the naming scheme here. We have a large matrix of connection classes, which need to be consistently named.

&gt; Source/WebKit2/ChangeLog:80
&gt; +        * UIProcess/Network/NetworkProcessProxy.messages.in: Copied from Source/WebKit2/NetworkProcess/NetworkProcess.messages.in.

This svn copy doesn&apos;t seem to make a whole lot of sense.

&gt; Source/WebKit2/ChangeLog:118
&gt; +        (WebKit::NetworkProcessConnectionManager::defaultConnection):

I&apos;m not sure that we want to have this code imply that there can be multiple connections already. We don&apos;t use it now, and we may never will in the future. Having concurrent connections to processes with different permissions is not that much different from having a connection to a single process with a union of these permissions - an exploited Web process can just choose which network process to talk to.

&gt; Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp:2
&gt; + * Copyright (C) 2012 Apple Inc. All rights reserved.

Was this all written from scratch in 2012?

Ditto for all the new files you add.

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:34
&gt; +#include &quot;NetworkProcessProxyMessages.h&quot;
&gt; +#include &quot;NetworkConnectionToWebProcess.h&quot;

Alphabetic ordering.

&gt; Source/WebKit2/UIProcess/Network/NetworkProcessManager.cpp:13
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS&apos;&apos; AND ANY

Apple COMPUTER?

&gt; Source/WebKit2/UIProcess/Network/NetworkProcessManager.cpp:16
&gt; + * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR

Apple COMPUTER?

Ditto for all the new files you added.

&gt; Source/WebKit2/UIProcess/Network/NetworkProcessManager.cpp:64
&gt; +

Blank line.

&gt; Source/WebKit2/UIProcess/WebProcessProxy.messages.in:49
&gt; +    GetNetworkProcessConnection(WTF::String identifier) -&gt; (CoreIPC::Attachment connectionHandle) Delayed

Is this unique identifier (such as a autoincremented number), or some kind of a &quot;class&quot;? The argument name could be more descriptive.

&gt; Source/WebKit2/WebProcess/Network/NetworkProcessConnectionManager.cpp:50
&gt; +NetworkProcessConnection* NetworkProcessConnectionManager::getNetworkProcessConnection(const String&amp; networkProcessIdentifier)

Seems that these strings should be at least atomic (but then again, perhaps this code can be removed for now).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746591</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-19 13:17:40 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 169569 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169569&amp;action=review
&gt; 
&gt; One general note. Since NetworkProcess is more trusted than WebProcess, we need to detect malformed messages, and do the same thing that we do when we get a malformed message in UI process - namely, crash Safari itself. Because we don&apos;t want to drag on when WebProcess has parasites.
&gt; 
&gt; r=me, mostly on the assumption that this is is closely modeled after existing code. Sam and Anders should take a look post-landing.
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:10
&gt; &gt; +        Add proper handling of crashes so any of the 3+ processes in the dance are notified if any of the others crash.
&gt; 
&gt; Presumably other processes are immediately terminated when UI process quits or crashes?
&gt; 
&gt; I have a concern about this design. When NetworkProcess crashes, both WebProcess and UI process will be notified. Clearly, WebProcess will want a new connection. But UI process may not have handled the crash notification yet. What is the protection against such races?

I believe this is handled actually.  The Web-&gt;UI request for a new connection gets queued up in the UIProcess, which then queues the reply before asynchronously asks the NetworkProcess for a new connection.

When the UIProcess later gets the message that the NetworkProcess crashed, it goes through the pending replies telling them they get no connection.

&gt; &gt; Source/WebKit2/ChangeLog:24
&gt; &gt; +        * NetworkProcess/NetworkConnectionToWebProcess.cpp: Added.
&gt; 
&gt; I do not understand the naming scheme here. We have a large matrix of connection classes, which need to be consistently named.

I agree we need more consistent naming, but I don&apos;t think the current naming scheme is either consistent or obvious.

For example, in the PluginProcess version of all of this code, the &quot;Plugin Processes connection to a WebProcess&quot; is called &quot;WebProcessConnection&quot;  That tells me nothing!

By naming the NetworkProcess equivalent &quot;NetworkConnectionToWebProcess&quot; I hoped to at least be precise if not concise.

Personally I think some of the others should be renamed - Notably &quot;WebProcessConnection&quot; would be &quot;PluginConnectionToWebProcess&quot; under this scheme.

&gt; &gt; Source/WebKit2/ChangeLog:80
&gt; &gt; +        * UIProcess/Network/NetworkProcessProxy.messages.in: Copied from Source/WebKit2/NetworkProcess/NetworkProcess.messages.in.
&gt; 
&gt; This svn copy doesn&apos;t seem to make a whole lot of sense.

I don&apos;t even know how it got there.  I didn&apos;t explicitly copy it.  I&apos;ll punch around git a bit and see if I can&apos;t fix that.

&gt; &gt; Source/WebKit2/ChangeLog:118
&gt; &gt; +        (WebKit::NetworkProcessConnectionManager::defaultConnection):
&gt; 
&gt; I&apos;m not sure that we want to have this code imply that there can be multiple connections already. We don&apos;t use it now, and we may never will in the future. Having concurrent connections to processes with different permissions is not that much different from having a connection to a single process with a union of these permissions - an exploited Web process can just choose which network process to talk to.

As discussed on IRC, my motivation here was not to have different processes with different privileges but rather different processes with different *purposes*.  A &quot;normal&quot; network process, one or more &quot;private browsing&quot; network processes, or a &quot;downloads&quot; process for when a connection is initiated as a download.

This is a direction I really think we will be going but it&apos;s probably too forward thinking at this point.  I&apos;ll rethink it a bit.

&gt; 
&gt; &gt; Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp:2
&gt; &gt; + * Copyright (C) 2012 Apple Inc. All rights reserved.
&gt; 
&gt; Was this all written from scratch in 2012?
&gt; 
&gt; Ditto for all the new files you add.

Even though the other files just say 2010 each had edits in 2011... I&apos;ll make these 10/11/12

&gt; 
&gt; &gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:34
&gt; &gt; +#include &quot;NetworkProcessProxyMessages.h&quot;
&gt; &gt; +#include &quot;NetworkConnectionToWebProcess.h&quot;
&gt; 
&gt; Alphabetic ordering.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Network/NetworkProcessManager.cpp:13
&gt; &gt; + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS&apos;&apos; AND ANY
&gt; 
&gt; Apple COMPUTER?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Network/NetworkProcessManager.cpp:16
&gt; &gt; + * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
&gt; 
&gt; Apple COMPUTER?
&gt; 
&gt; Ditto for all the new files you added.

*wow* - I chose the wrong headers to copy over!!!

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Network/NetworkProcessManager.cpp:64
&gt; &gt; +
&gt; 
&gt; Blank line.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebProcessProxy.messages.in:49
&gt; &gt; +    GetNetworkProcessConnection(WTF::String identifier) -&gt; (CoreIPC::Attachment connectionHandle) Delayed
&gt; 
&gt; Is this unique identifier (such as a autoincremented number), or some kind of a &quot;class&quot;? The argument name could be more descriptive.

I was more descriptive in some of the implementation headers but...

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Network/NetworkProcessConnectionManager.cpp:50
&gt; &gt; +NetworkProcessConnection* NetworkProcessConnectionManager::getNetworkProcessConnection(const String&amp; networkProcessIdentifier)
&gt; 
&gt; Seems that these strings should be at least atomic (but then again, perhaps this code can be removed for now).

... I&apos;ll remove it for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746671</commentid>
    <comment_count>11</comment_count>
      <attachid>169702</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-19 14:59:07 -0700</bug_when>
    <thetext>Created attachment 169702
Patch v4 - With changes, should get a new once-over

The makes WebProcess have only a singular NetworkProcessConnection and removes the concept of the string identifier.

Otherwise, it&apos;s structurally unchanged.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746678</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-19 15:05:28 -0700</bug_when>
    <thetext>Just waiting on EWS to give me the all-clear, then I&apos;ll remove r? and land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746680</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-19 15:05:54 -0700</bug_when>
    <thetext>Attachment 169702 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/NetworkProcess/NetworkProcess.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/WebProcess/WebProcess.cpp:278:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 2 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746692</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-19 15:20:52 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Attachment 169702 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
&gt; Source/WebKit2/WebProcess/WebProcess.cpp:278:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
&gt; Total errors found: 2 in 25 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Fixed locally.  Still just waiting on the green build from wk2 bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746748</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-19 16:26:34 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/131958</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800010</commentid>
    <comment_count>16</comment_count>
      <attachid>169702</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-04 00:51:05 -0800</bug_when>
    <thetext>Comment on attachment 169702
Patch v4 - With changes, should get a new once-over

Cleared review? from attachment 169702 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169564</attachid>
            <date>2012-10-19 00:08:51 -0700</date>
            <delta_ts>2012-10-19 00:23:27 -0700</delta_ts>
            <desc>Patch v1 - Get EWS rolling</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>73855</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjZjA0MzM4Li4xOWEwODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTMz
IEBACiAyMDEyLTEwLTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAorICAg
ICAgICBBZGQgaW5mcmFzdHJ1Y3R1cmUgZm9yIE5ldHdvcmtQcm9jZXNzIG1hbmFnZW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5ODE3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIHRoZSBXZWJQcm9jZXNzIGl0c2VsZiByZXF1ZXN0aW5nIGEgY29ubmVjdGlvbiB0byB0aGUg
ZGVmYXVsdCBOZXR3b3JrUHJvY2Vzcy4KKworICAgICAgICBBZGQgcHJvcGVyIGhhbmRsaW5nIG9m
IGNyYXNoZXMgc28gYW55IG9mIHRoZSAzKyBwcm9jZXNzZXMgaW4gdGhlIGRhbmNlIGFyZSBub3Rp
ZmllZCBpZiBhbnkgb2YgdGhlIG90aGVycyBjcmFzaC4KKworICAgICAgICBQcm9qZWN0IGZpbGUg
c3R1ZmYgYW5kIGdlbmVyYWwgbWVzc2FnaW5nIGNoYW5nZXM6CisgICAgICAgICogV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVz
c2FnZUlELmg6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKworICAgICAgICBXZWJD
b250ZXh0IG5vIGxvbmdlciBpcyBpbnZvbHZlZCB3aXRoIHRoaXMgc3R1ZmY6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpj
cmVhdGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgor
ICAgICAgICAoV2ViQ29udGV4dCk6CisKKyAgICAgICAgQWRkIGEgY2xhc3MgcmVwcmVzZW50aW5n
IGEgY29ubmVjdGlvbiBmcm9tIGEgTmV0d29ya1Byb2Nlc3MgdG8gYSBwYXJ0aWN1bGFyIFdlYlBy
b2Nlc3MKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3Nl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNz
YWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluLgorCisg
ICAgICAgIEFkZCB0aGUgYWJpbGl0eSBmb3IgYSBOZXR3b3JrUHJvY2VzcyB0byBjcmVhdGUgYSBj
b25uZWN0aW9uIHRvIGEgZGlmZmVyZW50IHByb2Nlc3MsIHdoaWNoIGlzIHVzZWQgb24gYmVoYWxm
IG9mIFdlYlByb2Nlc3NlcyBmb3Igbm93LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlbW92ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisKKyAgICAgICAgQWRkIGEgY2xhc3MgdG8gbWFuYWdl
IHRoZSBjb2xsZWN0aW9uIG9mIE5ldHdvcmtQcm9jZXNzZXMgd2l0aGluIHRoZSBVSVByb2Nlc3Mu
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c01hbmFnZXI6OnNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzTWFuYWdl
cjo6TmV0d29ya1Byb2Nlc3NNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NNYW5hZ2VyOjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OmVuc3VyZURlZmF1bHROZXR3b3JrUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6Z2V0T3JDcmVhdGVOZXR3b3Jr
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6bmV0d29y
a1Byb2Nlc3NXaXRoSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
TWFuYWdlcjo6cmVtb3ZlTmV0d29ya1Byb2Nlc3NQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKE5ldHdvcmtQcm9jZXNzTWFuYWdlcik6CisKKyAgICAgICAgRmxlc2ggb3V0
IHRoZSBOZXR3b3JrUHJvY2Vzc1Byb3h5IHRvIGhhbmRsZSBjcmVhdGluZyB0aGVzZSBjb25uZWN0
aW9ucyBiZXR3ZWVuIE5ldHdvcmsgYW5kIFdlYiBQcm9jZXNzZXM6CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nl
c3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAg
ICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKE5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjppZGVudGlmaWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKworICAg
ICAgICBGb3J3YXJkIG9uIHRoZSBtZXNzYWdlIHRoYXQgYSBXZWJQcm9jZXNzIHdhbnRzIGEgY29u
bmVjdGlvbiB0byBhIE5ldHdvcmtQcm9jZXNzOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYlByb2Nlc3NQcm94eSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICBB
ZGQgYSBjbGFzcyByZXByZXNlbnRpbmcgdGhlIFdlYlByb2Nlc3NlcyBjb25uZWN0aW9uIHRvIHRo
ZSBOZXR3b3JrUHJvY2VzczoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6fk5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6aWRlbnRpZmllcik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29ubmVjdGlvbik6CisKKyAg
ICAgICAgQWRkIGEgY2xhc3MgdGhhdCBoYW5kbGVzIGNvbm5lY3Rpb25zIHRvIHRoZSBOZXR3b3Jr
UHJvY2VzcyBvbiBiZWhhbGYgb2YgdGhlIFdlYlByb2Nlc3M6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXI6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjp+TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXI6OmVuc3VyZURlZmF1bHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cmVt
b3ZlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFu
YWdlcjo6ZGVmYXVsdENvbm5lY3Rpb24pOgorCisgICAgICAgIEhhdmUgdGhlIFdlYlByb2Nlc3Mg
Z2V0IGEgY29ubmVjdGlvbiB0byB0aGUgZGVmYXVsdCBOZXR3b3JrUHJvY2VzcyB1c2luZyBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5l
dHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6
CisgICAgICAgIChXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisKKzIwMTItMTAtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCiAgICAgICAgIE1vdmUgQ29ubmVjdGlvblN0YWNrIG91dCBvZiBXZWJQcm9jZXNzQ29u
bmVjdGlvbiBpbnRvIGl0cyBvd24gZmlsZXMuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05OTgxMwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCA5YWI2ZGI2Li4zNTk3Njk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTQ0LDYgKzQ0LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzIFwKICAg
ICAkKFdlYktpdDIpL1VJUHJvY2VzcyBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvRG93bmxv
YWRzIFwKKyAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9OZXR3b3JrIFwKICAgICAkKFdlYktpdDIp
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9QbHVn
aW5zIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzIFwKQEAgLTU2LDYg
KzU3LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgRG93bmxvYWRQcm94eSBcCiAgICAg
RXZlbnREaXNwYXRjaGVyIFwKICAgICBOZXR3b3JrUHJvY2VzcyBcCisgICAgTmV0d29ya1Byb2Nl
c3NQcm94eSBcCiAgICAgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIgXAogICAgIFBsdWdpbkNvbnRy
b2xsZXJQcm94eSBcCiAgICAgUGx1Z2luUHJvY2VzcyBcCkBAIC02OSw2ICs3MSw3IEBAIE1FU1NB
R0VfUkVDRUlWRVJTID0gXAogICAgIFdlYkNvb2tpZU1hbmFnZXIgXAogICAgIFdlYkNvb2tpZU1h
bmFnZXJQcm94eSBcCiAgICAgV2ViQ29ubmVjdGlvbiBcCisgICAgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgXAogICAgIFdlYkNvbnRleHQgXAogICAgIFdlYkRhdGFiYXNlTWFuYWdlciBc
CiAgICAgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmZGNlMTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgor
CisjaW5jbHVkZSAiQ29ubmVjdGlvblN0YWNrLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3Mu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KKworI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworUGFzc1JlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvbklkZW50aWZpZXIpKTsKK30KKworTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCit7
CisgICAgbV9jb25uZWN0aW9uID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29u
bmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgdGhpcywgUnVuTG9vcDo6bWFpbigpKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnNldE9ubHlTZW5kTWVzc2FnZXNBc0Rpc3BhdGNoV2hlbldhaXRpbmdG
b3JTeW5jUmVwbHlXaGVuUHJvY2Vzc2luZ1N1Y2hBTWVzc2FnZSh0cnVlKTsKKyAgICBtX2Nvbm5l
Y3Rpb24tPm9wZW4oKTsKK30KKworTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCit7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24p
OworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQg
bWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBDb25u
ZWN0aW9uU3RhY2s6OkN1cnJlbnRDb25uZWN0aW9uUHVzaGVyIGN1cnJlbnRDb25uZWN0aW9uKENv
bm5lY3Rpb25TdGFjazo6c2hhcmVkKCksIGNvbm5lY3Rpb24pOworCisgICAgaWYgKG1lc3NhZ2VJ
RC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4o
KSkgeworICAgICAgICBkaWRSZWNlaXZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNz
YWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rp
b24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1l
c3NhZ2VEZWNvZGVyJiBhcmd1bWVudHMsIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4m
IHJlcGx5KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKikKK3sK
KyAgICAvLyBQcm90ZWN0IG91cnNlbGYgYXMgd2UgbWlnaHQgYmUgb3RoZXJ3aXNlIGJlIGRlbGV0
ZWQgZHVyaW5nIHRoaXMgZnVuY3Rpb24KKyAgICBSZWZQdHI8TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M+IHByb3RlY3Rvcih0aGlzKTsKKyAgICAKKyAgICBOZXR3b3JrUHJvY2Vzczo6c2hh
cmVkKCkucmVtb3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3ModGhpcyk7CisgICAgCisg
ICAgbV9jb25uZWN0aW9uID0gMDsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlSUQpCit7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZFJlY2VpdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29k
ZXImKQoreworICAgIC8vIEVtcHR5IGZvciBub3cgLSBUaGVyZSBhcmUgbm8gbWVzc2FnZXMgdG8g
aGFuZGxlLgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42MzUxMzYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAt
MCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc19oCisjZGVmaW5lIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzX2gKKworI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIDogcHVibGlj
IFJlZkNvdW50ZWQ8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+LCBDb3JlSVBDOjpDb25u
ZWN0aW9uOjpDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjcmVhdGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
Zmllcik7CisgICAgdmlydHVhbCB+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKKwor
ICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nv
bm5lY3Rpb24uZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyhDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKKworICAgIC8vIENvcmVJ
UEM6OkNvbm5lY3Rpb246OkNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNz
YWdlRGVjb2RlciYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImLCBPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+Jik7CisgICAgdmlydHVhbCB2
b2lkIGRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQpOworCisgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KKyAgICB2b2lkIGRpZFJlY2VpdmVO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbios
IENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKKworICAgIFJl
ZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisKKyNlbmRp
ZiAvLyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmExMDQ3YzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDI5IEBACisjIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisj
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQorCittZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyB7CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXgg
YzczODI0NS4uNzg2ZWFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzAsNyArMzAsMTEgQEAKIAogI2luY2x1ZGUgIkFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiQXR0YWNobWVudC5oIgorI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01OSw2ICs2MywxNCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjppbml0aWFsaXplKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgc2VydmVy
SWRlbnRpZmllcgogICAgIG1fdWlDb25uZWN0aW9uLT5vcGVuKCk7CiB9CiAKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlbW92ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uKQoreworICAgIHNpemVfdCB2ZWN0b3JJbmRl
eCA9IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmZpbmQoY29ubmVjdGlvbik7CisgICAgQVNTRVJU
KHZlY3RvckluZGV4ICE9IG5vdEZvdW5kKTsKKworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25z
LnJlbW92ZSh2ZWN0b3JJbmRleCk7Cit9CisKIGJvb2wgTmV0d29ya1Byb2Nlc3M6OnNob3VsZFRl
cm1pbmF0ZSgpCiB7CiAgICAgcmV0dXJuIHRydWU7CkBAIC03MSwxMCArODMsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25u
ZWN0aW9uLCBDb3JlSVBDOgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZShDb3JlSVBD
OjpDb25uZWN0aW9uKikKIHsKLSAgICAvLyBFaXRoZXIgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIFVJ
UHJvY2VzcyBvciBhIGNvbm5lY3Rpb24gdG8gYSBXZWJQcm9jZXNzIGhhcyBnb25lIGF3YXkuCi0g
ICAgLy8gSW4gdGhlIGZ1dHVyZSB3ZSdsbCBkbyBhcHByb3ByaWF0ZSBjbGVhbnVwIGFuZCBkZWNp
ZGUgd2hldGhlciBvciBub3Qgd2Ugd2FudCB0byBrZWVwCi0gICAgLy8gdGhlIE5ldHdvcmtQcm9j
ZXNzIG9wZW4uCi0gICAgLy8gRm9yIG5vdyB3ZSdsbCBhbHdheXMgY2xvc2UgaXQuCisgICAgLy8g
VGhlIFVJUHJvY2VzcyBqdXN0IGNyYXNoZWQuCiAgICAgUnVuTG9vcDo6Y3VycmVudCgpLT5zdG9w
KCk7CiB9CiAKQEAgLTkyLDYgKzEwMSwyNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFs
aXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZQogICAg
IHBsYXRmb3JtSW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vz
czo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQoreworI2lmIFBMQVRGT1JN
KE1BQykKKyAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgorICAgIG1hY2hfcG9ydF90
IGxpc3RlbmluZ1BvcnQ7CisgICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCks
IE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7CisKKyAgICAvLyBDcmVh
dGUgYSBsaXN0ZW5pbmcgY29ubmVjdGlvbi4KKyAgICBSZWZQdHI8TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M+IGNvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y3JlYXRlKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwor
ICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7
CisKKyAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFD
SF9NU0dfVFlQRV9NQUtFX1NFTkQpOworICAgIG1fdWlDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhjbGllbnRQb3J0KSwgMCk7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisjZW5k
aWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKaW5kZXggNTkzNDdkYS4uNTgyOGUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zNiw3ICszNiw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0gICAgCisKK2NsYXNzIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOwogc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOwogCiBjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IENoaWxkUHJvY2VzcyB7CkBAIC00Niw2
ICs0Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdGlhbGl6ZShDb3JlSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyLCBXZWJDb3JlOjpSdW5Mb29wKik7CiAKKyAgICB2b2lkIHJlbW92ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Kik7CisKIHByaXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3MoKTsKICAgICB+TmV0d29ya1Byb2Nl
c3MoKTsKQEAgLTY0LDkgKzY3LDE0IEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBIYW5kbGVy
cwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJik7CisgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpOwogCiAgICAgLy8gVGhlIGNvbm5lY3Rpb24gdG8gdGhlIFVJIHByb2Nlc3MuCiAg
ICAgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+IG1fdWlDb25uZWN0aW9uOworCisgICAgLy8g
Q29ubmVjdGlvbnMgdG8gV2ViUHJvY2Vzc2VzLgorICAgIFZlY3RvcjxSZWZQdHI8TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M+ID4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnM7CisKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA1ZTQ2YThlLi4wMjk1
MzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsOSBAQAogbWVzc2FnZXMgLT4gTmV0
d29ya1Byb2Nlc3MgewogICAgICMgSW5pdGlhbGl6ZXMgdGhlIG5ldHdvcmsgcHJvY2Vzcy4KICAg
ICBJbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyBwcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKQorCisgICAgIyBDcmVhdGVzIGEg
Y29ubmVjdGlvbiBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIGEgV2ViUHJvY2VzcworICAgIENyZWF0
ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL01lc3NhZ2VJRC5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
SUQuaAppbmRleCAyOWEyMDU0Li5hODllNjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvTWVzc2FnZUlELmgKQEAgLTEwOSw2ICsxMDksMTIgQEAgZW51bSBNZXNzYWdlQ2xh
c3MgewogICAgIC8vIE1lc3NhZ2VzIHNlbnQgYnkgdGhlIFVJIHByb2Nlc3MgdG8gdGhlIG5ldHdv
cmsgcHJvY2Vzcy4KICAgICBNZXNzYWdlQ2xhc3NOZXR3b3JrUHJvY2VzcywKIAorICAgIC8vIE1l
c3NhZ2VzIHNlbnQgYnkgdGhlIG5ldHdvcmsgcHJvY2VzcyB0byB0aGUgVUkgcHJvY2Vzcy4KKyAg
ICBNZXNzYWdlQ2xhc3NOZXR3b3JrUHJvY2Vzc1Byb3h5LAorCisgICAgLy8gTWVzc2FnZXMgc2Vu
dCBieSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICBNZXNzYWdl
Q2xhc3NOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcywKKwogI2lmIEVOQUJMRShTSEFSRURf
V09SS0VSX1BST0NFU1MpCiAgICAgLy8gTWVzc2FnZXMgc2VudCBieSB0aGUgVUkgcHJvY2VzcyB0
byB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzLgogICAgIE1lc3NhZ2VDbGFzc1NoYXJlZFdvcmtl
clByb2Nlc3MsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi44NzM1MzIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDk1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNYW5h
Z2VyLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitOZXR3b3JrUHJvY2Vzc01hbmFnZXImIE5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6
c2hhcmVkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE5ldHdvcmtQcm9jZXNzTWFuYWdl
ciwgbmV0d29ya1Byb2Nlc3NNYW5hZ2VyLCAoKSk7CisgICAgcmV0dXJuIG5ldHdvcmtQcm9jZXNz
TWFuYWdlcjsKK30KKworTmV0d29ya1Byb2Nlc3NNYW5hZ2VyOjpOZXR3b3JrUHJvY2Vzc01hbmFn
ZXIoKQoreworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6Z2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgUGFzc1JlZlB0cjxNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRS
ZXBseT4gcmVwbHkpCit7CisgICAgQVNTRVJUKCFpZGVudGlmaWVyLmlzTnVsbCgpKTsKKyAgICBB
U1NFUlQocmVwbHkpOworCisgICAgTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3Mg
PSBnZXRPckNyZWF0ZU5ldHdvcmtQcm9jZXNzKGlkZW50aWZpZXIpOworICAgIEFTU0VSVChuZXR3
b3JrUHJvY2Vzcyk7CisgICAgbmV0d29ya1Byb2Nlc3MtPmdldE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbihyZXBseSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NNYW5hZ2VyOjplbnN1cmVEZWZh
dWx0TmV0d29ya1Byb2Nlc3MoKQoreworICAgIGlmIChtX2RlZmF1bHROZXR3b3JrUHJvY2VzcykK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9kZWZhdWx0TmV0d29ya1Byb2Nlc3MgPSBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpjcmVhdGUodGhpcywgIiIpOworICAgIG1fbmV0d29ya1Byb2Nlc3Nlcy5h
cHBlbmQobV9kZWZhdWx0TmV0d29ya1Byb2Nlc3MpOworfQorCitOZXR3b3JrUHJvY2Vzc1Byb3h5
KiBOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OmdldE9yQ3JlYXRlTmV0d29ya1Byb2Nlc3MoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyKQoreworCisgICAgaWYgKE5ldHdvcmtQcm9jZXNzUHJveHkqIG5l
dHdvcmtQcm9jZXNzID0gbmV0d29ya1Byb2Nlc3NXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkK
KyAgICAgICAgcmV0dXJuIG5ldHdvcmtQcm9jZXNzOworCisgICAgUmVmUHRyPE5ldHdvcmtQcm9j
ZXNzUHJveHk+IG5ldHdvcmtQcm9jZXNzID0gTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlKHRo
aXMsIGlkZW50aWZpZXIpOworICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNz
UHRyID0gbmV0d29ya1Byb2Nlc3MuZ2V0KCk7CisKKyAgICBtX25ldHdvcmtQcm9jZXNzZXMuYXBw
ZW5kKG5ldHdvcmtQcm9jZXNzLnJlbGVhc2UoKSk7CisKKyAgICByZXR1cm4gbmV0d29ya1Byb2Nl
c3NQdHI7Cit9CisKK05ldHdvcmtQcm9jZXNzUHJveHkqIE5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6
bmV0d29ya1Byb2Nlc3NXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX25ldHdvcmtQcm9jZXNzZXMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3Nlc1tpXS0+aWRlbnRpZmllcigpID09
IGlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzc2VzW2ldLmdl
dCgpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzTWFu
YWdlcjo6cmVtb3ZlTmV0d29ya1Byb2Nlc3NQcm94eShOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3
b3JrUHJvY2Vzc1Byb3h5KQoreworICAgIHNpemVfdCB2ZWN0b3JJbmRleCA9IG1fbmV0d29ya1By
b2Nlc3Nlcy5maW5kKG5ldHdvcmtQcm9jZXNzUHJveHkpOworICAgIEFTU0VSVCh2ZWN0b3JJbmRl
eCAhPSBub3RGb3VuZCk7CisKKyAgICBtX25ldHdvcmtQcm9jZXNzZXMucmVtb3ZlKHZlY3Rvcklu
ZGV4KTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE4MTZiYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzTWFuYWdlci5o
CkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTmV0d29ya1Byb2Nlc3NNYW5hZ2Vy
X2gKKyNkZWZpbmUgTmV0d29ya1Byb2Nlc3NNYW5hZ2VyX2gKKworI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CitjbGFzcyBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OworY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OworCitjbGFzcyBOZXR3
b3JrUHJvY2Vzc01hbmFnZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtQcm9j
ZXNzTWFuYWdlcik7CitwdWJsaWM6CisgICAgc3RhdGljIE5ldHdvcmtQcm9jZXNzTWFuYWdlciYg
c2hhcmVkKCk7CisKKyAgICB2b2lkIGVuc3VyZURlZmF1bHROZXR3b3JrUHJvY2VzcygpOworCisg
ICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CisgICAgCisgICAgdm9pZCByZW1vdmVOZXR3
b3JrUHJvY2Vzc1Byb3h5KE5ldHdvcmtQcm9jZXNzUHJveHkqKTsKKworcHJpdmF0ZToKKyAgICBO
ZXR3b3JrUHJvY2Vzc01hbmFnZXIoKTsKKworICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIGdldE9y
Q3JlYXRlTmV0d29ya1Byb2Nlc3MoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICBOZXR3
b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2Vzc1dpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllcik7CisKKyAgICBSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9kZWZh
dWx0TmV0d29ya1Byb2Nlc3M7CisgICAgVmVjdG9yPFJlZlB0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5
PiA+IG1fbmV0d29ya1Byb2Nlc3NlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gTmV0d29ya1Byb2Nlc3NNYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggZDA4
YTg5MS4uZjExMzhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTI3LDcgKzI3LDEwIEBACiAjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01hbmFnZXIuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4
dC5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
UnVuTG9vcC5oPgogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKQEAgLTM2LDEyICszOSwx
NSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBh
c3NSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRl
KCkKK1Bhc3NSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gTmV0d29ya1Byb2Nlc3NQcm94eTo6
Y3JlYXRlKE5ldHdvcmtQcm9jZXNzTWFuYWdlciogbWFuYWdlciwgY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmV0d29ya1Byb2Nlc3NQcm94eSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOZXR3b3JrUHJvY2Vzc1Byb3h5KG1hbmFnZXIsIGlk
ZW50aWZpZXIpKTsKIH0KIAotTmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29ya1Byb2Nlc3NQcm94
eSgpCitOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOZXR3b3JrUHJvY2Vzc1Byb3h5KE5ldHdvcmtQcm9j
ZXNzTWFuYWdlciogbWFuYWdlciwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQorICAgIDogbV9u
ZXR3b3JrUHJvY2Vzc01hbmFnZXIobWFuYWdlcikKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlm
aWVyKQorICAgICwgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzKDApCiB7CiAgICAgUHJv
Y2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zIGxhdW5jaE9wdGlvbnM7CiAgICAgbGF1bmNoT3B0
aW9ucy5wcm9jZXNzVHlwZSA9IFByb2Nlc3NMYXVuY2hlcjo6TmV0d29ya1Byb2Nlc3M7CkBAIC02
MiwxNCArNjgsNDkgQEAgTmV0d29ya1Byb2Nlc3NQcm94eTo6fk5ldHdvcmtQcm9jZXNzUHJveHko
KQogCiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkpCiB7CisgICAgbV9wZW5kaW5nQ29u
bmVjdGlvblJlcGxpZXMuYXBwZW5kKHJlcGx5KTsKIAorICAgIGlmIChtX3Byb2Nlc3NMYXVuY2hl
ci0+aXNMYXVuY2hpbmcoKSkgeworICAgICAgICBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVz
dHMrKzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCksIDAsIENvcmVJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3NDcmFz
aGVkT3JGYWlsZWRUb0xhdW5jaCgpCit7CisgICAgLy8gVGhlIG5ldHdvcmsgcHJvY2VzcyBtdXN0
IGhhdmUgY3Jhc2hlZCBvciBleGl0ZWQsIHNlbmQgYW55IHBlbmRpbmcgc3luYyByZXBsaWVzIHdl
IG1pZ2h0IGhhdmUuCisgICAgd2hpbGUgKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nv
bm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAg
ICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9T
RU5EKSk7CisjZWxzZQorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworI2VuZGlmCisgICAgfQor
CisgICAgLy8gVGVsbCB0aGUgbmV0d29yayBwcm9jZXNzIG1hbmFnZXIgdG8gZm9yZ2V0IGFib3V0
IHRoaXMgbmV0d29yayBwcm9jZXNzIHByb3h5LiBUaGlzIG1heSBjYXVzZSB1cyB0byBiZSBkZWxl
dGVkLgorICAgIG1fbmV0d29ya1Byb2Nlc3NNYW5hZ2VyLT5yZW1vdmVOZXR3b3JrUHJvY2Vzc1By
b3h5KHRoaXMpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBt
ZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGRpZFJl
Y2VpdmVOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGRl
Y29kZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKENvcmVJUEM6
OkNvbm5lY3Rpb24qKQogeworICAgIC8vIE5vdGlmeSBhbGwgV2ViUHJvY2Vzc2VzIHRoYXQgdGhl
IE5ldHdvcmtQcm9jZXNzIGNyYXNoZWQuCisgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYg
Y29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY29udGV4dHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGNvbnRleHRzW2ldLT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzQ3Jhc2hl
ZChtX2lkZW50aWZpZXIpKTsKIAorICAgIC8vIFRoaXMgbWF5IGNhdXNlIHVzIHRvIGJlIGRlbGV0
ZWQuCisgICAgbmV0d29ya1Byb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpOwogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBD
OjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlEKQpAQCAtODIsNiArMTIzLDIwIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3luY01lc3NhZ2VTZW5kVGltZWRPdXQoQ29yZUlQQzo6
Q29ubmVjdGlvbiopCiAKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBj
b25uZWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25S
ZXBsaWVzLmlzRW1wdHkoKSk7CisKKyAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5l
Y3Rpb24gcmVwbHkuCisgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nv
bm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHJl
cGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgp
LCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworI2VuZGlmCit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNo
aW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29u
bmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOwpAQCAtMTAz
LDYgKzE1OCwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGlu
ZyhQcm9jZXNzTGF1bmNoZXIqLCBDb3JlSVBDOjpDb25uZWN0aQogCiAgICAgLy8gSW5pdGlhbGl6
ZSB0aGUgbmV0d29yayBob3N0IHByb2Nlc3MuCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6SW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKHBhcmFtZXRlcnMp
LCAwKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBlbmRpbmdDb25uZWN0
aW9uUmVxdWVzdHM7ICsraSkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSwgMCk7
CisgICAgCisgICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzID0gMDsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMWRiNWQ5OS4uNTliNThjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaApAQCAtMzUsMjQgKzM1LDM1IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitj
bGFzcyBOZXR3b3JrUHJvY2Vzc01hbmFnZXI7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHkgOiBwdWJsaWMgUmVmQ291
bnRlZDxOZXR3b3JrUHJvY2Vzc1Byb3h5PiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBQ
cm9jZXNzTGF1bmNoZXI6OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
TmV0d29ya1Byb2Nlc3NQcm94eT4gY3JlYXRlKCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TmV0
d29ya1Byb2Nlc3NQcm94eT4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzTWFuYWdlciosIGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllcik7CiAgICAgfk5ldHdvcmtQcm9jZXNzUHJveHkoKTsKIAorICAgIHZv
aWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsK
KworICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfQorCiBwcml2YXRlOgotICAgIE5ldHdvcmtQcm9jZXNzUHJveHkoKTsKKyAgICBOZXR3
b3JrUHJvY2Vzc1Byb3h5KE5ldHdvcmtQcm9jZXNzTWFuYWdlciosIGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllcik7CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKKyAgICB2b2lkIG5ldHdvcmtQcm9j
ZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2goKTsKKwogICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rp
b246OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKik7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlEKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY01lc3NhZ2VTZW5k
VGltZWRPdXQoQ29yZUlQQzo6Q29ubmVjdGlvbiopOwogCisgICAgLy8gTWVzc2FnZSBoYW5kbGVy
cworICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKENvcmVJUEM6
OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVy
Jik7CisgICAgdm9pZCBkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25z
dCBDb3JlSVBDOjpBdHRhY2htZW50Jik7CisgICAgCiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpD
bGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hl
ciosIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCkBAIC02MSw3ICs3MiwxMyBA
QCBwcml2YXRlOgogCiAgICAgLy8gVGhlIHByb2Nlc3MgbGF1bmNoZXIgZm9yIHRoZSBuZXR3b3Jr
IHByb2Nlc3MuCiAgICAgUmVmUHRyPFByb2Nlc3NMYXVuY2hlcj4gbV9wcm9jZXNzTGF1bmNoZXI7
CisgICAgCisgICAgTmV0d29ya1Byb2Nlc3NNYW5hZ2VyKiBtX25ldHdvcmtQcm9jZXNzTWFuYWdl
cjsKKyAgICAKKyAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwogCisgICAgdW5zaWduZWQgbV9udW1Q
ZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzOworICAgIERlcXVlPFJlZlB0cjxNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4g
PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMzc5YjEwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwyOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
IyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKKworbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSB7
CisgICAgRGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoQ29yZUlQQzo6QXR0
YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikKK30KKworI2VuZGlmIC8vIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXgg
MWNiZTM0NS4uYzFlMGQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNw
cApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk11dGFibGVEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgog
I2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKQEAg
LTMzNiw3ICszMzcsNyBAQCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViQ29udGV4dDo6
Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAg
ICBpZiAobV91c2VzTmV0d29ya1Byb2Nlc3MpCi0gICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNz
KCk7CisgICAgICAgIE5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuZW5zdXJlRGVmYXVs
dE5ldHdvcmtQcm9jZXNzKCk7CiAjZW5kaWYKIAogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+
IHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZSh0aGlzKTsKQEAgLTQzNSwxNiArNDM2
LDYgQEAgdm9pZCBXZWJDb250ZXh0Ojp3YXJtSW5pdGlhbFByb2Nlc3MoKQogICAgIG1faGF2ZUlu
aXRpYWxFbXB0eVByb2Nlc3MgPSB0cnVlOwogfQogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKLXZvaWQgV2ViQ29udGV4dDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKQotewotICAgIGlmICht
X25ldHdvcmtQcm9jZXNzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX25ldHdvcmtQcm9jZXNz
ID0gTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlKCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBXZWJD
b250ZXh0OjplbmFibGVQcm9jZXNzVGVybWluYXRpb24oKQogewogICAgIG1fcHJvY2Vzc1Rlcm1p
bmF0aW9uRW5hYmxlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApp
bmRleCBjZWU2ODljLi5lM2Y2YTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmgKQEAgLTQ2LDEwICs0Niw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCi0jZW5kaWYKLQogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIERvd25sb2FkUHJveHk7CkBAIC0yNTcsMTAgKzI1Myw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2b2lkIHBsYXRmb3JtSW52YWxpZGF0ZUNvbnRl
eHQoKTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgdm9pZCBlbnN1cmVOZXR3
b3JrUHJvY2VzcygpOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcyk7CiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzKTsKQEAgLTM5NSw3ICszODcsNiBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVkOwogCiAjaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9u
ZXR3b3JrUHJvY2VzczsKICAgICBib29sIG1fdXNlc05ldHdvcmtQcm9jZXNzOwogI2VuZGlmCiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4
IGEzOGUyM2EuLjZjOGRhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5
LmgiCiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb1N0b3JlLmgiCiAjaW5jbHVkZSAiUGx1
Z2luUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgpAQCAtNDAxLDYg
KzQwMiwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nv
bm5lY3Rpb24oY29uc3QgU3RyaW5nJiAvKiB1cmwgKi8sCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNI
QVJFRF9XT1JLRVJfUFJPQ0VTUykKIAorI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCit2b2lk
IFdlYlByb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkpCit7CisgICAgTmV0
d29ya1Byb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5nZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
aWRlbnRpZmllciwgcmVwbHkpOworfQorI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CisKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBD
OjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBpZiAobV9jb250ZXh0LT5kaXNwYXRj
aE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBjMzExYzRmLi5kZGJjZmViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0xNTMsNiArMTUz
LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEdldFNpdGVzV2l0aFBsdWdpbkRhdGEoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRp
ZENsZWFyUGx1Z2luU2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7CiAjZW5kaWYKKyNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQorICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwor
I2VuZGlmCiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKICAgICB2b2lkIGdldFNo
YXJlZFdvcmtlclByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIG5hbWUsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U2hhcmVk
V29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCAzOTZhMTY2Li40M2JiMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTQ1LDYgKzQ1LDkgQEAgbWVzc2Fn
ZXMgLT4gV2ViUHJvY2Vzc1Byb3h5IHsKICAgICB2b2lkIERpZEdldFNpdGVzV2l0aFBsdWdpbkRh
dGEoVmVjdG9yPFdURjo6U3RyaW5nPiBzaXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICB2
b2lkIERpZENsZWFyUGx1Z2luU2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKICNlbmRpZgor
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisgICAgR2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKFdURjo6U3RyaW5nIGlkZW50aWZpZXIpIC0+IChDb3JlSVBDOjpBdHRhY2htZW50IGNvbm5l
Y3Rpb25IYW5kbGUpIERlbGF5ZWQKKyNlbmRpZgogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSX1BS
T0NFU1MpCiAgICAgR2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGOjpTdHJpbmcg
dXJsLCBXVEY6OlN0cmluZyBuYW1lKSAtPiAoQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0aW9u
SGFuZGxlKSBEZWxheWVkCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlZTg4MWZkLi4yMzljZTBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNDgs
NiArMzQ4LDEwIEBACiAJCTNGODdCOUMwMTU4OTQwRDgwMDkwRkY2MiAvKiBXZWJDb2xvckNob29z
ZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
M0Y4N0I5QkYxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3NlclByb3h5LmggKi87IH07
CiAJCTRGNjAxNDMyMTU1QzVBQTIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNlTWFwLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjYwMTQzMDE1NUM1
QTMyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oICovOyB9OwogCQk1MTAyMUU5QzEy
QjE2Nzg4MDA1QzAzM0MgLyogV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAyMUU5QjEyQjE2Nzg4MDA1QzAz
M0MgLyogV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0gKi87IH07CisJCTUxMDVCMEQ5MTYyRjdD
M0IwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDVCMEQ3MTYyRjdDM0Iw
MEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCAqLzsgfTsKKwkJ
NTEwNUIwREExNjJGN0MzQjAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDVC
MEQ4MTYyRjdDM0IwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgg
Ki87IH07CisJCTUxMDVCMEREMTYyRjdFOUQwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc01hbmFn
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEw
NUIwREIxNjJGN0U5RDAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzTWFuYWdlci5jcHAgKi87IH07
CisJCTUxMDVCMERFMTYyRjdFOUQwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc01hbmFnZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDVCMERDMTYy
RjdFOUQwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc01hbmFnZXIuaCAqLzsgfTsKIAkJNTEwQ0M4
NDkxNjEzQzg1QzAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzLmFwcCBpbiBDb3B5RmlsZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQ0M4MEUxNjEzQzc5OTAwRDAzRUQz
IC8qIE5ldHdvcmtQcm9jZXNzLmFwcCAqLzsgfTsKIAkJNTEwQ0M4NEYxNjEzQzkyQzAwRDAzRUQz
IC8qIE1haW5NYWNQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBNkZBMzEwMTFFMzkyMUUwMERCMTM3MSAvKiBNYWluTWFjUHJvY2Vzcy5j
cHAgKi87IH07CiAJCTUxMEZCQjlBMTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0
ZW1EYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMEZCQjk4MTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcCAq
LzsgfTsKQEAgLTQwOCw2ICs0MTIsMTAgQEAKIAkJNTEyRjU4RkMxMkE4OEE1NDAwNjI5NTMwIC8q
IFdLUHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTJGNThGNDEyQTg4QTU0MDA2Mjk1MzAgLyogV0tQcm90ZWN0aW9uU3BhY2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTM2
MTgzRDE2MzEyNkRBMDBBOTlEREUgLyogQ29ubmVjdGlvblN0YWNrLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMzYxODNCMTYzMTI2REEwMEE5OURE
RSAvKiBDb25uZWN0aW9uU3RhY2suY3BwICovOyB9OwogCQk1MTM2MTgzRTE2MzEyNkRBMDBBOTlE
REUgLyogQ29ubmVjdGlvblN0YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTM2MTgzQzE2MzEyNkRBMDBBOTlEREUgLyogQ29ubmVjdGlvblN0YWNr
LmggKi87IH07CisJCTUxM0ExNjNDMTYzMDg4RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJvY2Vzc1By
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxM0ExNjNBMTYzMDg4RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJvY2Vzc1By
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJNTEzQTE2M0QxNjMwODhGNjAwNUQ3RDIy
IC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzQTE2M0IxNjMwODhGNjAwNUQ3RDIyIC8qIE5ldHdv
cmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oICovOyB9OworCQk1MTNBMTY0QzE2MzBBOUJGMDA1RDdE
MjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzQTE2NDkxNjMwQTlCRjAwNUQ3RDIyIC8q
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCAqLzsgfTsKKwkJNTEzQTE2NEQxNjMw
QTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTNBMTY0QTE2MzBBOUJGMDA1
RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCAqLzsgfTsKIAkJNTE1MzU2
OUMxMjkxQjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTUzNTY5QTEyOTFCMUQy
MDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCAqLzsgfTsKIAkJNTE1MzU2
OUQxMjkxQjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1MzU2OUIxMjkxQjFEMjAw
MDc0OURDIC8qIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oICovOyB9OwogCQk1MTU3OEI4MzEy
MDlFQ0VGMDBBMzdDNEEgLyogV2ViRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8qIFdlYkRhdGEuaCAq
LzsgfTsKQEAgLTQyOCw2ICs0MzYsNyBAQAogCQk1MTgzNDU5MjEzNDUzMkU5MDA5MkI2OTYgLyog
V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxODM0NTkwMTM0NTMyRTgwMDkyQjY5NiAvKiBXZWJJY29uRGF0YWJh
c2VDbGllbnQuY3BwICovOyB9OwogCQk1MTgzNDU5MzEzNDUzMkU5MDA5MkI2OTYgLyogV2ViSWNv
bkRhdGFiYXNlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTgzNDU5MTEzNDUzMkU4MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50
LmggKi87IH07CiAJCTUxODNCMzkyMTM3OUY3QjgwMEU4NzU0RSAvKiBXZWJQcm9jZXNzU2hpbS5k
eWxpYiBpbiBDb3B5IFdlYiBQcm9jZXNzIFNoaW0gKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTEwMDMxRjYxMzc5Q0FDQjAwQzhERkU0IC8qIFdlYlByb2Nlc3NTaGltLmR5bGli
ICovOyB9OworCQk1MTgzRERFQzE2MzBCREZDMDA4QkU1QzcgLyogTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMDVCMEQ0MTYyRjdBN0EwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
ICovOyB9OwogCQk1MTg3MUI1QjEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4NzFCNTkx
MjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCAqLzsgfTsKIAkJNTE4NzFCNUMx
MjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2Vi
Q29udGV4dE1lbnUuaCAqLzsgfTsKIAkJNTE4QUNBRUExMkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJv
dGVjdGlvblNwYWNlVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxOEFDQUU5MTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5
cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTE1MDUsNiArMTUxNCwxMyBAQAogCQk0RjYwMTQzMDE1NUM1QTMyMDAxRkJERTAgLyogQmxvY2tp
bmdSZXNwb25zZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja2lu
Z1Jlc3BvbnNlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDAzMUY2MTM3
OUNBQ0IwMEM4REZFNCAvKiBXZWJQcm9jZXNzU2hpbS5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IGlu
Y2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFdlYlByb2Nlc3NTaGltLmR5bGliOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1MTAyMUU5QjEyQjE2Nzg4MDA1QzAzM0MgLyog
V2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTEwNUIwRDQxNjJGN0E3QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOyBwYXRoID0gTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTA1QjBENTE2MkY3QTdB
MDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oOyBwYXRoID0gTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTEwNUIwRDcxNjJGN0MzQjAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA7IHBhdGggPSBOZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTA1
QjBEODE2MkY3QzNCMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyLmg7IHBhdGggPSBOZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwNUIwREIxNjJGN0U5RDAwRTI3
NzA5IC8qIE5ldHdvcmtQcm9jZXNzTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzc01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MTA1QjBEQzE2MkY3RTlEMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NN
YW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTA1QjBGMzE2MzA4NzJF
MDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTBDQzdERDE2MTM4RTI5MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3NNYWluTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBDQzdERjE2MTM4RTI5MDBEMDNF
RDMgLyogTmV0d29ya1Byb2Nlc3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTmV0d29ya1Byb2Nlc3MuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBDQzdFMDE2MTM4RTI5
MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gTmV0d29ya1Byb2Nlc3MuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTczLDYgKzE1ODksMTEgQEAK
IAkJNTEyRjU4RjQxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUHJvdGVjdGlvblNwYWNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMzYxODNCMTYzMTI2REEwMEE5OURERSAvKiBDb25uZWN0
aW9uU3RhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29ubmVj
dGlvblN0YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEzNjE4M0MxNjMx
MjZEQTAwQTk5RERFIC8qIENvbm5lY3Rpb25TdGFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb25uZWN0aW9uU3RhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTEzQTE2M0ExNjMwODhGNjAwNUQ3RDIyIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29y
a1Byb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUxM0ExNjNCMTYzMDg4RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3NQ
cm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxM0ExNjQ5MTYz
MEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxM0ExNjRBMTYzMEE5QkYw
MDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOyBwYXRo
ID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEzQTE2NEIxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFt
ZSA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNTM1NjlBMTI5MUIxRDIwMDA3NDlEQyAvKiBX
ZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE1MzU2OUIxMjkxQjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VDb250ZXh0TWVu
dUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYWdlQ29udGV4
dE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1NzhCODIxMjA5
RUNFRjAwQTM3QzRBIC8qIFdlYkRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkyNCwxMCArMjk0
NSwyNCBAQAogCQkJbmFtZSA9IGNmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsK
KwkJNTEwNUIwRDIxNjJGN0E1RTAwRTI3NzA5IC8qIE5ldHdvcmsgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUxMDVCMEQ3MTYyRjdDM0IwMEUyNzcwOSAv
KiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCAqLywKKwkJCQk1MTA1QjBEODE2
MkY3QzNCMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oICovLAor
CQkJCTUxMDVCMEQ0MTYyRjdBN0EwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwICovLAorCQkJCTUxMDVCMEQ1MTYyRjdBN0EwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaCAqLywKKwkJCSk7CisJCQluYW1lID0gTmV0d29yazsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CiAJCTUxMENDN0RBMTYxMzhFMDEwMEQwM0VEMyAvKiBOZXR3b3Jr
UHJvY2VzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJ
NTEwQ0M3REMxNjEzOEUyOTAwRDAzRUQzIC8qIG1hYyAqLywKKwkJCQk1MTNBMTY0OTE2MzBBOUJG
MDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwICovLAorCQkJCTUx
M0ExNjRBMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
ICovLAorCQkJCTUxM0ExNjRCMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywKIAkJCQk1MTBDQzdERjE2MTM4RTI5MDBEMDNFRDMg
LyogTmV0d29ya1Byb2Nlc3MuY3BwICovLAogCQkJCTUxMENDN0UwMTYxMzhFMjkwMEQwM0VEMyAv
KiBOZXR3b3JrUHJvY2Vzcy5oICovLAogCQkJCTUxQThBNjE3MTYyN0Y1QkIwMDBEOTBFOSAvKiBO
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywKQEAgLTI5NTAsOCArMjk4NSwxMSBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1MTYzMTk5MzE2Mjg5ODBFMDBF
MjJGMDAgLyogbWFjICovLAorCQkJCTUxMDVCMERCMTYyRjdFOUQwMEUyNzcwOSAvKiBOZXR3b3Jr
UHJvY2Vzc01hbmFnZXIuY3BwICovLAorCQkJCTUxMDVCMERDMTYyRjdFOUQwMEUyNzcwOSAvKiBO
ZXR3b3JrUHJvY2Vzc01hbmFnZXIuaCAqLywKIAkJCQk1MTBDQzdFQTE2MTM4RTcyMDBEMDNFRDMg
LyogTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgKi8sCiAJCQkJNTEwQ0M3RUIxNjEzOEU3MjAwRDAz
RUQzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuaCAqLywKKwkJCQk1MTA1QjBGMzE2MzA4NzJFMDBF
Mjc3MDkgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCSk7CiAJCQlw
YXRoID0gTmV0d29yazsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMTE4LDYgKzMx
NTYsNyBAQAogCQkJCTUxQTlFMEZCMTMxNUNDMEUwMDlFNzAzMSAvKiBLZXlWYWx1ZVN0b3JhZ2Ug
Ki8sCiAJCQkJMUE2RkEwMUMxMUUxNTI2MzAwREIxMzcxIC8qIG1hYyAqLywKIAkJCQkzM0QzQTNC
RDEzMzk2MDk4MDA3MDlCRTQgLyogTWVkaWFDYWNoZSAqLywKKwkJCQk1MTA1QjBEMjE2MkY3QTVF
MDBFMjc3MDkgLyogTmV0d29yayAqLywKIAkJCQkzMTA5OTk3NDE0NkM4QUE4MDAyOURFQjkgLyog
Tm90aWZpY2F0aW9ucyAoVXNlcikgKi8sCiAJCQkJMUE2RkI3QUExMUU2NEI0OTAwREIxMzcxIC8q
IFBsdWdpbnMgKi8sCiAJCQkJMzMzNjc2MkIxMzBDOTk3ODAwNkM5REUyIC8qIFJlc291cmNlQ2Fj
aGUgKi8sCkBAIC00MDA3LDYgKzQwNDYsOCBAQAogCQkJCTFBQTU3NjAwMTQ5NkI3QzAwMEE0RUUw
NiAvKiBFdmVudERpc3BhdGNoZXJNZXNzYWdlcy5oICovLAogCQkJCTUxQUNDOTM0MTYyODA2NDgw
MDM0MjU1MCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNTFB
Q0M5MzUxNjI4MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCAqLywKKwkJ
CQk1MTNBMTYzQTE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8sCisJCQkJNTEzQTE2M0IxNjMwODhGNjAwNUQ3RDIyIC8qIE5ldHdvcmtQ
cm9jZXNzUHJveHlNZXNzYWdlcy5oICovLAogCQkJCTFBMkQ4NDM3MTI3RjY1RDUwMDFFQjk2MiAv
KiBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUEy
RDg0MzgxMjdGNjVENTAwMUVCOTYyIC8qIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZXMu
aCAqLywKIAkJCQkxQThFRjk2QzEyNTJBRjZCMDBGNzA2N0YgLyogUGx1Z2luQ29udHJvbGxlclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTQ2OTgsNiArNDczOSwxMCBAQAogCQkJCTFB
MjMyOEZGMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUEyMzI5MDMxNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTM2MTgzRTE2MzEyNkRBMDBBOTlEREUgLyogQ29ubmVjdGlvblN0YWNr
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTA1QjBEQTE2MkY3QzNCMDBFMjc3MDkgLyogTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwNUIwREUx
NjJGN0U5RDAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTEzQTE2M0QxNjMwODhGNjAwNUQ3RDIyIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEzQTE2NEQxNjMwQTlCRjAwNUQ3RDIyIC8qIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTU2NDQsNiAr
NTY4OSwxMSBAQAogCQkJCTFBMjMyOEZFMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTIzMjkwMjE2MkM4NjczMDBEODJGN0EgLyogTWVz
c2FnZURlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEzNjE4M0QxNjMxMjZEQTAwQTk5
RERFIC8qIENvbm5lY3Rpb25TdGFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTA1QjBEOTE2
MkY3QzNCMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1MTA1QjBERDE2MkY3RTlEMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nl
c3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxM0ExNjNDMTYzMDg4RjYwMDVEN0Qy
MiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTUxM0ExNjRDMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTgzRERFQzE2MzBCREZDMDA4QkU1Qzcg
LyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODVi
N2UzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5o
IgorCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgorI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKKworI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246Ok5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbihOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBtYW5hZ2VyLCBjb25z
dCBTdHJpbmcmIHByb2Nlc3NJZGVudGlmaWVyLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgIDogbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyKG1hbmFnZXIpCisgICAgLCBtX2lkZW50aWZlcihwcm9jZXNzSWRlbnRpZmllcikK
K3sKKyAgICBtX2Nvbm5lY3Rpb24gPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRD
b25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCB0aGlzLCBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5ydW5Mb29wKCkpOworICAgIG1fY29ubmVjdGlvbi0+b3BlbigpOworfQorCitOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246On5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQoreworfQorCit2b2lk
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKQor
eworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1l
c3NhZ2VEZWNvZGVyJiwgT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpCit7Cit9CisK
K3ZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0
aW9uKikKK3sKKyAgICAvLyBUaGUgTmV0d29ya1Byb2Nlc3MgY3Jhc2hlZC4KKyAgICBSZWZQdHI8
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uPiBwcm90ZWN0b3IodGhpcyk7CisgICAgCisgICAgbV9u
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLT5yZW1vdmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24odGhpcyk7CisgICAgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLT5uZXR3
b3JrUHJvY2Vzc0NyYXNoZWQobV9pZGVudGlmZXIpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24q
LCBDb3JlSVBDOjpNZXNzYWdlSUQpCit7Cit9CisKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzJkMzRmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uX2gKKyNkZWZpbmUgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uX2gK
KworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXI7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBS
ZWZDb3VudGVkPE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbj4sIENvcmVJUEM6OkNvbm5lY3Rpb246
OkNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlciogbWFuYWdl
ciwgY29uc3QgU3RyaW5nJiBwcm9jZXNzSWRlbnRpZmllciwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKG1hbmFnZXIsIHByb2Nlc3NJZGVu
dGlmaWVyLCBjb25uZWN0aW9uSWRlbnRpZmllcikpOworICAgIH0KKyAgICB+TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCk7CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmZXI7IH0KKyAgICBDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25u
ZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9CisKK3ByaXZhdGU6
CisgICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIqLCBjb25zdCBTdHJpbmcmIHByb2Nlc3NJZGVudGlmaWVyLCBDb3JlSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyKTsKKworICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudAor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwg
Q29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOworICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJ
UEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImLCBPd25QdHI8Q29yZUlQQzo6
TWVzc2FnZUVuY29kZXI+Jik7CisgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKENvcmVJUEM6OkNv
bm5lY3Rpb24qKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQpOworCisgICAgLy8gVGhlIGNv
bm5lY3Rpb24gZnJvbSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAg
ICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworCisgICAgTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlciogbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyOworCisgICAgU3RyaW5nIG1faWRlbnRpZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorCisKKyNlbmRpZiAvLyBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlNTA1MDUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIK
KworI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyKCkKK3sKK30KKworTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6fk5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIoKQoreworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXI6OmVuc3VyZURlZmF1bHRDb25uZWN0aW9uKCkKK3sKKyAgICBnZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oIiIpOworfQorCitOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbihjb25zdCBTdHJpbmcmIG5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9ucy5zaXplKCk7
ICsraSkgeworICAgICAgICBpZiAobV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25zW2ldLT5pZGVu
dGlmaWVyKCkgPT0gbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJu
IG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uc1tpXS5nZXQoKTsKKyAgICB9CisKKyAgICBDb3Jl
SVBDOjpBdHRhY2htZW50IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllcjsKKworICAgIGlmICgh
V2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24obmV0d29ya1Byb2Nlc3NJ
ZGVudGlmaWVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpSZXBseShlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIpLCAwKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZp
ZXIucG9ydCgpKTsKKyAgICBpZiAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzTnVs
bChjb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiAwOworI2Vsc2UKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorCisgICAgUmVmUHRyPE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbj4gbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpjcmVhdGUodGhpcywgbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyLCBjb25uZWN0aW9u
SWRlbnRpZmllcik7CisgICAgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChuZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgIGlmIChuZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIu
aXNFbXB0eSgpKQorICAgICAgICBtX2RlZmF1bHROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSBu
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CisKKyAgICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX2lkZW50aWZpZXJzQW5kQ29ubmVjdGlvbnNNdXRleCk7CisgICAgICAgIEFTU0VSVCgh
bV9pZGVudGlmaWVyc0FuZENvbm5lY3Rpb25zLmNvbnRhaW5zKG5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi0+aWRlbnRpZmllcigpKSk7CisKKyAgICAgICAgbV9pZGVudGlmaWVyc0FuZENvbm5lY3Rp
b25zLnNldChuZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIsIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpKTsKKyAgICB9CisKKyAgICByZXR1cm4gbmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmdldCgpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6
OnJlbW92ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24q
IG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbikKK3sKKyAgICBzaXplX3QgdmVjdG9ySW5kZXggPSBt
X25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbnMuZmluZChuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24p
OworICAgIEFTU0VSVCh2ZWN0b3JJbmRleCAhPSBub3RGb3VuZCk7CisKKyAgICB7CisgICAgICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX2lkZW50aWZpZXJzQW5kQ29ubmVjdGlvbnNNdXRleCk7Cisg
ICAgICAgIEFTU0VSVChtX2lkZW50aWZpZXJzQW5kQ29ubmVjdGlvbnMuY29udGFpbnMobmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLT5pZGVudGlmaWVyKCkpKTsKKyAgICAgICAgCisgICAgICAgIG1f
aWRlbnRpZmllcnNBbmRDb25uZWN0aW9ucy5yZW1vdmUobmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LT5pZGVudGlmaWVyKCkpOworICAgIH0KKworICAgIGlmIChuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24gPT0gbV9kZWZhdWx0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKSB7CisgICAgICAgIEFTU0VS
VChuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPmlkZW50aWZpZXIoKS5pc0VtcHR5KCkpOworICAg
ICAgICBtX2RlZmF1bHROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSAwOworICAgIH0KKworICAg
IG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9ucy5yZW1vdmUodmVjdG9ySW5kZXgpOworCit9CisK
K3ZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6bmV0d29ya1Byb2Nlc3NDcmFz
aGVkKGNvbnN0IFN0cmluZyYgbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKQoreworICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX2lkZW50aWZpZXJzQW5kQ29ubmVjdGlvbnNNdXRleCk7CisgICAgQ29y
ZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiA9IG1faWRlbnRpZmllcnNBbmRDb25uZWN0aW9u
cy5nZXQobmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKS5nZXQoKTsKKworICAgIC8vIEl0J3MgT0sg
Zm9yIGNvbm5lY3Rpb24gdG8gYmUgbnVsbCBoZXJlOyBpdCB3aWxsIGhhcHBlbiBpZiB0aGlzIHdl
YiBwcm9jZXNzIGRvZXNuJ3Qga25vdworICAgIC8vIGFueXRoaW5nIGFib3V0IHRoZSBuZXR3b3Jr
IHByb2Nlc3MgdGhhdCBjcmFzaGVkLgorICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0
dXJuOworCisgICAgY29ubmVjdGlvbi0+cG9zdENvbm5lY3Rpb25EaWRDbG9zZU9uQ29ubmVjdGlv
bldvcmtRdWV1ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjM1ZjM4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXIuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXJfaAorI2RlZmluZSBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyX2gKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOworICAgICAg
ICAKK2NsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIpOworcHVibGljOgor
ICAgIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIoKTsKKyAgICB+TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uTWFuYWdlcigpOworCisgICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKiBk
ZWZhdWx0Q29ubmVjdGlvbigpIHsgcmV0dXJuIG1fZGVmYXVsdE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5nZXQoKTsgfQorICAgIHZvaWQgZW5zdXJlRGVmYXVsdENvbm5lY3Rpb24oKTsKKworICAg
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiogZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKGNv
bnN0IFN0cmluZyYgbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbihOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qKTsKKworICAg
IHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKGNvbnN0IFN0cmluZyYgbmV0d29ya1Byb2Nlc3NJ
ZGVudGlmaWVyKTsKKyAgICAKK3ByaXZhdGU6CisgICAgUmVmUHRyPE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbj4gbV9kZWZhdWx0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOworICAgIFZlY3RvcjxS
ZWZQdHI8TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uPiA+IG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uczsKKworICAgIE11dGV4IG1faWRlbnRpZmllcnNBbmRDb25uZWN0aW9uc011dGV4OworICAg
IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gPiBtX2lkZW50aWZp
ZXJzQW5kQ29ubmVjdGlvbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisKKyNlbmRpZiAvLyBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CmluZGV4IGQ5ZDE0ZTkuLmUzNGFiNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcApAQCAtMjU2LDYgKzI1Niw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6
ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1lCiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uSWRlbnRpZmllckJhc2UocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKTsK
ICNlbmRpZgogCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyAgICBtX25ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIuZW5zdXJlRGVmYXVsdENvbm5lY3Rpb24oKTsKKyNlbmRpZgog
ICAgIHNldFRlcm1pbmF0aW9uVGltZW91dChwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCk7
CiB9CiAKQEAgLTEwMjQsNiArMTAyNywxMyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBvc3RJbmplY3Rl
ZEJ1bmRsZU1lc3NhZ2UoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZQogICAg
IGluamVjdGVkQnVuZGxlLT5kaWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJv
ZHkuZ2V0KCkpOwogfQogCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKK3ZvaWQgV2ViUHJv
Y2Vzczo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBjb25zdCBT
dHJpbmcmIG5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBtX25ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXIubmV0d29ya1Byb2Nlc3NDcmFzaGVkKG5ldHdvcmtQcm9jZXNzSWRl
bnRpZmllcik7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIHZvaWQg
V2ViUHJvY2Vzczo6cGx1Z2luUHJvY2Vzc0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlvbiosIGNv
bnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKaW5kZXggOWExM2VlOC4uNmRjNjdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgKQEAgLTcxLDYgKzcxLDEwIEBAIFFUX0VORF9OQU1FU1BBQ0UKICNpbmNsdWRl
ICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgor
I2VuZGlmCisKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAjaW5jbHVkZSAiUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCiAjZW5kaWYKQEAgLTIyOCw3ICsyMzIsMTAgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGdldFNpdGVzV2l0aFBsdWdpbkRhdGEoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBsdWdpblBhdGhzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGNsZWFyUGx1
Z2luU2l0ZURhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBsdWdpblBhdGhzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGZsYWdzLCB1aW50NjRfdCBtYXhBZ2VJblNlY29u
ZHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogI2VuZGlmCi0gICAgCisKKyNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQorICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKENvcmVJUEM6OkNv
bm5lY3Rpb24qLCBjb25zdCBTdHJpbmcmIG5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcik7CisjZW5k
aWYKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAgICAgdm9pZCBwbHVnaW5Qcm9jZXNzQ3Jh
c2hlZChDb3JlSVBDOjpDb25uZWN0aW9uKiwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKICNl
bmRpZgpAQCAtMzM1LDYgKzM0Miw5IEBAIHByaXZhdGU6CiAgICAgCiAgICAgU3RyaW5nIG1fbG9j
YWxTdG9yYWdlRGlyZWN0b3J5OwogCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyAgICBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
TWFuYWdlcjsKKyNlbmRpZgogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKICAgICBQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCAzNzg3OTJmLi5mMjMyNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02Myw2ICs2MywxMSBAQCBtZXNz
YWdlcyAtPiBXZWJQcm9jZXNzIHsKICAgICBHZXRTaXRlc1dpdGhQbHVnaW5EYXRhKFZlY3RvcjxX
VEY6OlN0cmluZz4gcGx1Z2luUGF0aHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgQ2xlYXJQ
bHVnaW5TaXRlRGF0YShWZWN0b3I8V1RGOjpTdHJpbmc+IHBsdWdpblBhdGhzLCBWZWN0b3I8V1RG
OjpTdHJpbmc+IHNpdGVzLCB1aW50NjRfdCBmbGFncywgdWludDY0X3QgbWF4QWdlSW5TZWNvbmRz
LCB1aW50NjRfdCBjYWxsYmFja0lEKQogI2VuZGlmCisKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQorICAgIE5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChTdHJpbmcgbmV0d29ya1Byb2Nlc3NJZGVu
dGlmaWVyKSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVlCisjZW5kaWYKKwogI2lmIEVOQUJMRShQ
TFVHSU5fUFJPQ0VTUykKICAgICBQbHVnaW5Qcm9jZXNzQ3Jhc2hlZChTdHJpbmcgcGx1Z2luUHJv
Y2VzcykgRGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZQogI2VuZGlmCg==
</data>
<flag name="commit-queue"
          id="182914"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169565</attachid>
            <date>2012-10-19 00:23:27 -0700</date>
            <delta_ts>2012-10-19 00:38:36 -0700</delta_ts>
            <desc>Patch v2 - Qt, don&apos;t break!</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>73967</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjZjA0MzM4Li4xOWEwODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTMz
IEBACiAyMDEyLTEwLTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAorICAg
ICAgICBBZGQgaW5mcmFzdHJ1Y3R1cmUgZm9yIE5ldHdvcmtQcm9jZXNzIG1hbmFnZW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5ODE3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIHRoZSBXZWJQcm9jZXNzIGl0c2VsZiByZXF1ZXN0aW5nIGEgY29ubmVjdGlvbiB0byB0aGUg
ZGVmYXVsdCBOZXR3b3JrUHJvY2Vzcy4KKworICAgICAgICBBZGQgcHJvcGVyIGhhbmRsaW5nIG9m
IGNyYXNoZXMgc28gYW55IG9mIHRoZSAzKyBwcm9jZXNzZXMgaW4gdGhlIGRhbmNlIGFyZSBub3Rp
ZmllZCBpZiBhbnkgb2YgdGhlIG90aGVycyBjcmFzaC4KKworICAgICAgICBQcm9qZWN0IGZpbGUg
c3R1ZmYgYW5kIGdlbmVyYWwgbWVzc2FnaW5nIGNoYW5nZXM6CisgICAgICAgICogV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVz
c2FnZUlELmg6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKworICAgICAgICBXZWJD
b250ZXh0IG5vIGxvbmdlciBpcyBpbnZvbHZlZCB3aXRoIHRoaXMgc3R1ZmY6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpj
cmVhdGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgor
ICAgICAgICAoV2ViQ29udGV4dCk6CisKKyAgICAgICAgQWRkIGEgY2xhc3MgcmVwcmVzZW50aW5n
IGEgY29ubmVjdGlvbiBmcm9tIGEgTmV0d29ya1Byb2Nlc3MgdG8gYSBwYXJ0aWN1bGFyIFdlYlBy
b2Nlc3MKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3Nl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNz
YWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluLgorCisg
ICAgICAgIEFkZCB0aGUgYWJpbGl0eSBmb3IgYSBOZXR3b3JrUHJvY2VzcyB0byBjcmVhdGUgYSBj
b25uZWN0aW9uIHRvIGEgZGlmZmVyZW50IHByb2Nlc3MsIHdoaWNoIGlzIHVzZWQgb24gYmVoYWxm
IG9mIFdlYlByb2Nlc3NlcyBmb3Igbm93LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlbW92ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisKKyAgICAgICAgQWRkIGEgY2xhc3MgdG8gbWFuYWdl
IHRoZSBjb2xsZWN0aW9uIG9mIE5ldHdvcmtQcm9jZXNzZXMgd2l0aGluIHRoZSBVSVByb2Nlc3Mu
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c01hbmFnZXI6OnNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzTWFuYWdl
cjo6TmV0d29ya1Byb2Nlc3NNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NNYW5hZ2VyOjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OmVuc3VyZURlZmF1bHROZXR3b3JrUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6Z2V0T3JDcmVhdGVOZXR3b3Jr
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6bmV0d29y
a1Byb2Nlc3NXaXRoSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
TWFuYWdlcjo6cmVtb3ZlTmV0d29ya1Byb2Nlc3NQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKE5ldHdvcmtQcm9jZXNzTWFuYWdlcik6CisKKyAgICAgICAgRmxlc2ggb3V0
IHRoZSBOZXR3b3JrUHJvY2Vzc1Byb3h5IHRvIGhhbmRsZSBjcmVhdGluZyB0aGVzZSBjb25uZWN0
aW9ucyBiZXR3ZWVuIE5ldHdvcmsgYW5kIFdlYiBQcm9jZXNzZXM6CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nl
c3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAg
ICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKE5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjppZGVudGlmaWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKworICAg
ICAgICBGb3J3YXJkIG9uIHRoZSBtZXNzYWdlIHRoYXQgYSBXZWJQcm9jZXNzIHdhbnRzIGEgY29u
bmVjdGlvbiB0byBhIE5ldHdvcmtQcm9jZXNzOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYlByb2Nlc3NQcm94eSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICBB
ZGQgYSBjbGFzcyByZXByZXNlbnRpbmcgdGhlIFdlYlByb2Nlc3NlcyBjb25uZWN0aW9uIHRvIHRo
ZSBOZXR3b3JrUHJvY2VzczoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6fk5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6aWRlbnRpZmllcik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29ubmVjdGlvbik6CisKKyAg
ICAgICAgQWRkIGEgY2xhc3MgdGhhdCBoYW5kbGVzIGNvbm5lY3Rpb25zIHRvIHRoZSBOZXR3b3Jr
UHJvY2VzcyBvbiBiZWhhbGYgb2YgdGhlIFdlYlByb2Nlc3M6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXI6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjp+TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXI6OmVuc3VyZURlZmF1bHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cmVt
b3ZlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFu
YWdlcjo6ZGVmYXVsdENvbm5lY3Rpb24pOgorCisgICAgICAgIEhhdmUgdGhlIFdlYlByb2Nlc3Mg
Z2V0IGEgY29ubmVjdGlvbiB0byB0aGUgZGVmYXVsdCBOZXR3b3JrUHJvY2VzcyB1c2luZyBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5l
dHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6
CisgICAgICAgIChXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisKKzIwMTItMTAtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCiAgICAgICAgIE1vdmUgQ29ubmVjdGlvblN0YWNrIG91dCBvZiBXZWJQcm9jZXNzQ29u
bmVjdGlvbiBpbnRvIGl0cyBvd24gZmlsZXMuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05OTgxMwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCA5YWI2ZGI2Li4zNTk3Njk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTQ0LDYgKzQ0LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzIFwKICAg
ICAkKFdlYktpdDIpL1VJUHJvY2VzcyBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvRG93bmxv
YWRzIFwKKyAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9OZXR3b3JrIFwKICAgICAkKFdlYktpdDIp
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9QbHVn
aW5zIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzIFwKQEAgLTU2LDYg
KzU3LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgRG93bmxvYWRQcm94eSBcCiAgICAg
RXZlbnREaXNwYXRjaGVyIFwKICAgICBOZXR3b3JrUHJvY2VzcyBcCisgICAgTmV0d29ya1Byb2Nl
c3NQcm94eSBcCiAgICAgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIgXAogICAgIFBsdWdpbkNvbnRy
b2xsZXJQcm94eSBcCiAgICAgUGx1Z2luUHJvY2VzcyBcCkBAIC02OSw2ICs3MSw3IEBAIE1FU1NB
R0VfUkVDRUlWRVJTID0gXAogICAgIFdlYkNvb2tpZU1hbmFnZXIgXAogICAgIFdlYkNvb2tpZU1h
bmFnZXJQcm94eSBcCiAgICAgV2ViQ29ubmVjdGlvbiBcCisgICAgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgXAogICAgIFdlYkNvbnRleHQgXAogICAgIFdlYkRhdGFiYXNlTWFuYWdlciBc
CiAgICAgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmZGNlMTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgor
CisjaW5jbHVkZSAiQ29ubmVjdGlvblN0YWNrLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3Mu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KKworI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworUGFzc1JlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvbklkZW50aWZpZXIpKTsKK30KKworTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCit7
CisgICAgbV9jb25uZWN0aW9uID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29u
bmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgdGhpcywgUnVuTG9vcDo6bWFpbigpKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnNldE9ubHlTZW5kTWVzc2FnZXNBc0Rpc3BhdGNoV2hlbldhaXRpbmdG
b3JTeW5jUmVwbHlXaGVuUHJvY2Vzc2luZ1N1Y2hBTWVzc2FnZSh0cnVlKTsKKyAgICBtX2Nvbm5l
Y3Rpb24tPm9wZW4oKTsKK30KKworTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCit7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24p
OworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQg
bWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBDb25u
ZWN0aW9uU3RhY2s6OkN1cnJlbnRDb25uZWN0aW9uUHVzaGVyIGN1cnJlbnRDb25uZWN0aW9uKENv
bm5lY3Rpb25TdGFjazo6c2hhcmVkKCksIGNvbm5lY3Rpb24pOworCisgICAgaWYgKG1lc3NhZ2VJ
RC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4o
KSkgeworICAgICAgICBkaWRSZWNlaXZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNz
YWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rp
b24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1l
c3NhZ2VEZWNvZGVyJiBhcmd1bWVudHMsIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4m
IHJlcGx5KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKikKK3sK
KyAgICAvLyBQcm90ZWN0IG91cnNlbGYgYXMgd2UgbWlnaHQgYmUgb3RoZXJ3aXNlIGJlIGRlbGV0
ZWQgZHVyaW5nIHRoaXMgZnVuY3Rpb24KKyAgICBSZWZQdHI8TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M+IHByb3RlY3Rvcih0aGlzKTsKKyAgICAKKyAgICBOZXR3b3JrUHJvY2Vzczo6c2hh
cmVkKCkucmVtb3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3ModGhpcyk7CisgICAgCisg
ICAgbV9jb25uZWN0aW9uID0gMDsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlSUQpCit7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZFJlY2VpdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29k
ZXImKQoreworICAgIC8vIEVtcHR5IGZvciBub3cgLSBUaGVyZSBhcmUgbm8gbWVzc2FnZXMgdG8g
aGFuZGxlLgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42MzUxMzYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAt
MCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc19oCisjZGVmaW5lIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzX2gKKworI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIDogcHVibGlj
IFJlZkNvdW50ZWQ8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+LCBDb3JlSVBDOjpDb25u
ZWN0aW9uOjpDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjcmVhdGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
Zmllcik7CisgICAgdmlydHVhbCB+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKKwor
ICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nv
bm5lY3Rpb24uZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyhDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKKworICAgIC8vIENvcmVJ
UEM6OkNvbm5lY3Rpb246OkNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNz
YWdlRGVjb2RlciYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImLCBPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+Jik7CisgICAgdmlydHVhbCB2
b2lkIGRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQpOworCisgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KKyAgICB2b2lkIGRpZFJlY2VpdmVO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbios
IENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKKworICAgIFJl
ZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisKKyNlbmRp
ZiAvLyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmExMDQ3YzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDI5IEBACisjIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisj
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQorCittZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyB7CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXgg
YzczODI0NS4uNzg2ZWFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzAsNyArMzAsMTEgQEAKIAogI2luY2x1ZGUgIkFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiQXR0YWNobWVudC5oIgorI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01OSw2ICs2MywxNCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjppbml0aWFsaXplKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgc2VydmVy
SWRlbnRpZmllcgogICAgIG1fdWlDb25uZWN0aW9uLT5vcGVuKCk7CiB9CiAKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlbW92ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uKQoreworICAgIHNpemVfdCB2ZWN0b3JJbmRl
eCA9IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmZpbmQoY29ubmVjdGlvbik7CisgICAgQVNTRVJU
KHZlY3RvckluZGV4ICE9IG5vdEZvdW5kKTsKKworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25z
LnJlbW92ZSh2ZWN0b3JJbmRleCk7Cit9CisKIGJvb2wgTmV0d29ya1Byb2Nlc3M6OnNob3VsZFRl
cm1pbmF0ZSgpCiB7CiAgICAgcmV0dXJuIHRydWU7CkBAIC03MSwxMCArODMsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25u
ZWN0aW9uLCBDb3JlSVBDOgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZShDb3JlSVBD
OjpDb25uZWN0aW9uKikKIHsKLSAgICAvLyBFaXRoZXIgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIFVJ
UHJvY2VzcyBvciBhIGNvbm5lY3Rpb24gdG8gYSBXZWJQcm9jZXNzIGhhcyBnb25lIGF3YXkuCi0g
ICAgLy8gSW4gdGhlIGZ1dHVyZSB3ZSdsbCBkbyBhcHByb3ByaWF0ZSBjbGVhbnVwIGFuZCBkZWNp
ZGUgd2hldGhlciBvciBub3Qgd2Ugd2FudCB0byBrZWVwCi0gICAgLy8gdGhlIE5ldHdvcmtQcm9j
ZXNzIG9wZW4uCi0gICAgLy8gRm9yIG5vdyB3ZSdsbCBhbHdheXMgY2xvc2UgaXQuCisgICAgLy8g
VGhlIFVJUHJvY2VzcyBqdXN0IGNyYXNoZWQuCiAgICAgUnVuTG9vcDo6Y3VycmVudCgpLT5zdG9w
KCk7CiB9CiAKQEAgLTkyLDYgKzEwMSwyNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFs
aXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZQogICAg
IHBsYXRmb3JtSW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vz
czo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQoreworI2lmIFBMQVRGT1JN
KE1BQykKKyAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgorICAgIG1hY2hfcG9ydF90
IGxpc3RlbmluZ1BvcnQ7CisgICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCks
IE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7CisKKyAgICAvLyBDcmVh
dGUgYSBsaXN0ZW5pbmcgY29ubmVjdGlvbi4KKyAgICBSZWZQdHI8TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M+IGNvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y3JlYXRlKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwor
ICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7
CisKKyAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFD
SF9NU0dfVFlQRV9NQUtFX1NFTkQpOworICAgIG1fdWlDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhjbGllbnRQb3J0KSwgMCk7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisjZW5k
aWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKaW5kZXggNTkzNDdkYS4uNTgyOGUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zNiw3ICszNiw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0gICAgCisKK2NsYXNzIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOwogc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOwogCiBjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IENoaWxkUHJvY2VzcyB7CkBAIC00Niw2
ICs0Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdGlhbGl6ZShDb3JlSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyLCBXZWJDb3JlOjpSdW5Mb29wKik7CiAKKyAgICB2b2lkIHJlbW92ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Kik7CisKIHByaXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3MoKTsKICAgICB+TmV0d29ya1Byb2Nl
c3MoKTsKQEAgLTY0LDkgKzY3LDE0IEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBIYW5kbGVy
cwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJik7CisgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpOwogCiAgICAgLy8gVGhlIGNvbm5lY3Rpb24gdG8gdGhlIFVJIHByb2Nlc3MuCiAg
ICAgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+IG1fdWlDb25uZWN0aW9uOworCisgICAgLy8g
Q29ubmVjdGlvbnMgdG8gV2ViUHJvY2Vzc2VzLgorICAgIFZlY3RvcjxSZWZQdHI8TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M+ID4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnM7CisKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA1ZTQ2YThlLi4wMjk1
MzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsOSBAQAogbWVzc2FnZXMgLT4gTmV0
d29ya1Byb2Nlc3MgewogICAgICMgSW5pdGlhbGl6ZXMgdGhlIG5ldHdvcmsgcHJvY2Vzcy4KICAg
ICBJbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyBwcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKQorCisgICAgIyBDcmVhdGVzIGEg
Y29ubmVjdGlvbiBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIGEgV2ViUHJvY2VzcworICAgIENyZWF0
ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL01lc3NhZ2VJRC5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
SUQuaAppbmRleCAyOWEyMDU0Li5hODllNjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvTWVzc2FnZUlELmgKQEAgLTEwOSw2ICsxMDksMTIgQEAgZW51bSBNZXNzYWdlQ2xh
c3MgewogICAgIC8vIE1lc3NhZ2VzIHNlbnQgYnkgdGhlIFVJIHByb2Nlc3MgdG8gdGhlIG5ldHdv
cmsgcHJvY2Vzcy4KICAgICBNZXNzYWdlQ2xhc3NOZXR3b3JrUHJvY2VzcywKIAorICAgIC8vIE1l
c3NhZ2VzIHNlbnQgYnkgdGhlIG5ldHdvcmsgcHJvY2VzcyB0byB0aGUgVUkgcHJvY2Vzcy4KKyAg
ICBNZXNzYWdlQ2xhc3NOZXR3b3JrUHJvY2Vzc1Byb3h5LAorCisgICAgLy8gTWVzc2FnZXMgc2Vu
dCBieSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICBNZXNzYWdl
Q2xhc3NOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcywKKwogI2lmIEVOQUJMRShTSEFSRURf
V09SS0VSX1BST0NFU1MpCiAgICAgLy8gTWVzc2FnZXMgc2VudCBieSB0aGUgVUkgcHJvY2VzcyB0
byB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzLgogICAgIE1lc3NhZ2VDbGFzc1NoYXJlZFdvcmtl
clByb2Nlc3MsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi44NzM1MzIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDk1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNYW5h
Z2VyLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitOZXR3b3JrUHJvY2Vzc01hbmFnZXImIE5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6
c2hhcmVkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE5ldHdvcmtQcm9jZXNzTWFuYWdl
ciwgbmV0d29ya1Byb2Nlc3NNYW5hZ2VyLCAoKSk7CisgICAgcmV0dXJuIG5ldHdvcmtQcm9jZXNz
TWFuYWdlcjsKK30KKworTmV0d29ya1Byb2Nlc3NNYW5hZ2VyOjpOZXR3b3JrUHJvY2Vzc01hbmFn
ZXIoKQoreworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6Z2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgUGFzc1JlZlB0cjxNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRS
ZXBseT4gcmVwbHkpCit7CisgICAgQVNTRVJUKCFpZGVudGlmaWVyLmlzTnVsbCgpKTsKKyAgICBB
U1NFUlQocmVwbHkpOworCisgICAgTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3Mg
PSBnZXRPckNyZWF0ZU5ldHdvcmtQcm9jZXNzKGlkZW50aWZpZXIpOworICAgIEFTU0VSVChuZXR3
b3JrUHJvY2Vzcyk7CisgICAgbmV0d29ya1Byb2Nlc3MtPmdldE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbihyZXBseSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NNYW5hZ2VyOjplbnN1cmVEZWZh
dWx0TmV0d29ya1Byb2Nlc3MoKQoreworICAgIGlmIChtX2RlZmF1bHROZXR3b3JrUHJvY2VzcykK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9kZWZhdWx0TmV0d29ya1Byb2Nlc3MgPSBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpjcmVhdGUodGhpcywgIiIpOworICAgIG1fbmV0d29ya1Byb2Nlc3Nlcy5h
cHBlbmQobV9kZWZhdWx0TmV0d29ya1Byb2Nlc3MpOworfQorCitOZXR3b3JrUHJvY2Vzc1Byb3h5
KiBOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OmdldE9yQ3JlYXRlTmV0d29ya1Byb2Nlc3MoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyKQoreworCisgICAgaWYgKE5ldHdvcmtQcm9jZXNzUHJveHkqIG5l
dHdvcmtQcm9jZXNzID0gbmV0d29ya1Byb2Nlc3NXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkK
KyAgICAgICAgcmV0dXJuIG5ldHdvcmtQcm9jZXNzOworCisgICAgUmVmUHRyPE5ldHdvcmtQcm9j
ZXNzUHJveHk+IG5ldHdvcmtQcm9jZXNzID0gTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlKHRo
aXMsIGlkZW50aWZpZXIpOworICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNz
UHRyID0gbmV0d29ya1Byb2Nlc3MuZ2V0KCk7CisKKyAgICBtX25ldHdvcmtQcm9jZXNzZXMuYXBw
ZW5kKG5ldHdvcmtQcm9jZXNzLnJlbGVhc2UoKSk7CisKKyAgICByZXR1cm4gbmV0d29ya1Byb2Nl
c3NQdHI7Cit9CisKK05ldHdvcmtQcm9jZXNzUHJveHkqIE5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6
bmV0d29ya1Byb2Nlc3NXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX25ldHdvcmtQcm9jZXNzZXMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3Nlc1tpXS0+aWRlbnRpZmllcigpID09
IGlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzc2VzW2ldLmdl
dCgpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzTWFu
YWdlcjo6cmVtb3ZlTmV0d29ya1Byb2Nlc3NQcm94eShOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3
b3JrUHJvY2Vzc1Byb3h5KQoreworICAgIHNpemVfdCB2ZWN0b3JJbmRleCA9IG1fbmV0d29ya1By
b2Nlc3Nlcy5maW5kKG5ldHdvcmtQcm9jZXNzUHJveHkpOworICAgIEFTU0VSVCh2ZWN0b3JJbmRl
eCAhPSBub3RGb3VuZCk7CisKKyAgICBtX25ldHdvcmtQcm9jZXNzZXMucmVtb3ZlKHZlY3Rvcklu
ZGV4KTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE4MTZiYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzTWFuYWdlci5o
CkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTmV0d29ya1Byb2Nlc3NNYW5hZ2Vy
X2gKKyNkZWZpbmUgTmV0d29ya1Byb2Nlc3NNYW5hZ2VyX2gKKworI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CitjbGFzcyBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OworY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OworCitjbGFzcyBOZXR3
b3JrUHJvY2Vzc01hbmFnZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtQcm9j
ZXNzTWFuYWdlcik7CitwdWJsaWM6CisgICAgc3RhdGljIE5ldHdvcmtQcm9jZXNzTWFuYWdlciYg
c2hhcmVkKCk7CisKKyAgICB2b2lkIGVuc3VyZURlZmF1bHROZXR3b3JrUHJvY2VzcygpOworCisg
ICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CisgICAgCisgICAgdm9pZCByZW1vdmVOZXR3
b3JrUHJvY2Vzc1Byb3h5KE5ldHdvcmtQcm9jZXNzUHJveHkqKTsKKworcHJpdmF0ZToKKyAgICBO
ZXR3b3JrUHJvY2Vzc01hbmFnZXIoKTsKKworICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIGdldE9y
Q3JlYXRlTmV0d29ya1Byb2Nlc3MoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICBOZXR3
b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2Vzc1dpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllcik7CisKKyAgICBSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9kZWZh
dWx0TmV0d29ya1Byb2Nlc3M7CisgICAgVmVjdG9yPFJlZlB0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5
PiA+IG1fbmV0d29ya1Byb2Nlc3NlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gTmV0d29ya1Byb2Nlc3NNYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggZDA4
YTg5MS4uZjExMzhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTI3LDcgKzI3LDEwIEBACiAjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01hbmFnZXIuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4
dC5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
UnVuTG9vcC5oPgogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKQEAgLTM2LDEyICszOSwx
NSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBh
c3NSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRl
KCkKK1Bhc3NSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gTmV0d29ya1Byb2Nlc3NQcm94eTo6
Y3JlYXRlKE5ldHdvcmtQcm9jZXNzTWFuYWdlciogbWFuYWdlciwgY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmV0d29ya1Byb2Nlc3NQcm94eSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOZXR3b3JrUHJvY2Vzc1Byb3h5KG1hbmFnZXIsIGlk
ZW50aWZpZXIpKTsKIH0KIAotTmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29ya1Byb2Nlc3NQcm94
eSgpCitOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOZXR3b3JrUHJvY2Vzc1Byb3h5KE5ldHdvcmtQcm9j
ZXNzTWFuYWdlciogbWFuYWdlciwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQorICAgIDogbV9u
ZXR3b3JrUHJvY2Vzc01hbmFnZXIobWFuYWdlcikKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlm
aWVyKQorICAgICwgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzKDApCiB7CiAgICAgUHJv
Y2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zIGxhdW5jaE9wdGlvbnM7CiAgICAgbGF1bmNoT3B0
aW9ucy5wcm9jZXNzVHlwZSA9IFByb2Nlc3NMYXVuY2hlcjo6TmV0d29ya1Byb2Nlc3M7CkBAIC02
MiwxNCArNjgsNDkgQEAgTmV0d29ya1Byb2Nlc3NQcm94eTo6fk5ldHdvcmtQcm9jZXNzUHJveHko
KQogCiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkpCiB7CisgICAgbV9wZW5kaW5nQ29u
bmVjdGlvblJlcGxpZXMuYXBwZW5kKHJlcGx5KTsKIAorICAgIGlmIChtX3Byb2Nlc3NMYXVuY2hl
ci0+aXNMYXVuY2hpbmcoKSkgeworICAgICAgICBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVz
dHMrKzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCksIDAsIENvcmVJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3NDcmFz
aGVkT3JGYWlsZWRUb0xhdW5jaCgpCit7CisgICAgLy8gVGhlIG5ldHdvcmsgcHJvY2VzcyBtdXN0
IGhhdmUgY3Jhc2hlZCBvciBleGl0ZWQsIHNlbmQgYW55IHBlbmRpbmcgc3luYyByZXBsaWVzIHdl
IG1pZ2h0IGhhdmUuCisgICAgd2hpbGUgKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nv
bm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAg
ICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9T
RU5EKSk7CisjZWxzZQorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworI2VuZGlmCisgICAgfQor
CisgICAgLy8gVGVsbCB0aGUgbmV0d29yayBwcm9jZXNzIG1hbmFnZXIgdG8gZm9yZ2V0IGFib3V0
IHRoaXMgbmV0d29yayBwcm9jZXNzIHByb3h5LiBUaGlzIG1heSBjYXVzZSB1cyB0byBiZSBkZWxl
dGVkLgorICAgIG1fbmV0d29ya1Byb2Nlc3NNYW5hZ2VyLT5yZW1vdmVOZXR3b3JrUHJvY2Vzc1By
b3h5KHRoaXMpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBt
ZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGRpZFJl
Y2VpdmVOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGRl
Y29kZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKENvcmVJUEM6
OkNvbm5lY3Rpb24qKQogeworICAgIC8vIE5vdGlmeSBhbGwgV2ViUHJvY2Vzc2VzIHRoYXQgdGhl
IE5ldHdvcmtQcm9jZXNzIGNyYXNoZWQuCisgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYg
Y29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY29udGV4dHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGNvbnRleHRzW2ldLT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzQ3Jhc2hl
ZChtX2lkZW50aWZpZXIpKTsKIAorICAgIC8vIFRoaXMgbWF5IGNhdXNlIHVzIHRvIGJlIGRlbGV0
ZWQuCisgICAgbmV0d29ya1Byb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpOwogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBD
OjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlEKQpAQCAtODIsNiArMTIzLDIwIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3luY01lc3NhZ2VTZW5kVGltZWRPdXQoQ29yZUlQQzo6
Q29ubmVjdGlvbiopCiAKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBj
b25uZWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25S
ZXBsaWVzLmlzRW1wdHkoKSk7CisKKyAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5l
Y3Rpb24gcmVwbHkuCisgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nv
bm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHJl
cGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgp
LCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworI2VuZGlmCit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNo
aW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29u
bmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOwpAQCAtMTAz
LDYgKzE1OCwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGlu
ZyhQcm9jZXNzTGF1bmNoZXIqLCBDb3JlSVBDOjpDb25uZWN0aQogCiAgICAgLy8gSW5pdGlhbGl6
ZSB0aGUgbmV0d29yayBob3N0IHByb2Nlc3MuCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6SW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKHBhcmFtZXRlcnMp
LCAwKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBlbmRpbmdDb25uZWN0
aW9uUmVxdWVzdHM7ICsraSkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSwgMCk7
CisgICAgCisgICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzID0gMDsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMWRiNWQ5OS4uNTliNThjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaApAQCAtMzUsMjQgKzM1LDM1IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitj
bGFzcyBOZXR3b3JrUHJvY2Vzc01hbmFnZXI7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHkgOiBwdWJsaWMgUmVmQ291
bnRlZDxOZXR3b3JrUHJvY2Vzc1Byb3h5PiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBQ
cm9jZXNzTGF1bmNoZXI6OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
TmV0d29ya1Byb2Nlc3NQcm94eT4gY3JlYXRlKCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TmV0
d29ya1Byb2Nlc3NQcm94eT4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzTWFuYWdlciosIGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllcik7CiAgICAgfk5ldHdvcmtQcm9jZXNzUHJveHkoKTsKIAorICAgIHZv
aWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsK
KworICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfQorCiBwcml2YXRlOgotICAgIE5ldHdvcmtQcm9jZXNzUHJveHkoKTsKKyAgICBOZXR3
b3JrUHJvY2Vzc1Byb3h5KE5ldHdvcmtQcm9jZXNzTWFuYWdlciosIGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllcik7CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKKyAgICB2b2lkIG5ldHdvcmtQcm9j
ZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2goKTsKKwogICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rp
b246OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKik7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlEKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY01lc3NhZ2VTZW5k
VGltZWRPdXQoQ29yZUlQQzo6Q29ubmVjdGlvbiopOwogCisgICAgLy8gTWVzc2FnZSBoYW5kbGVy
cworICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKENvcmVJUEM6
OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVy
Jik7CisgICAgdm9pZCBkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25z
dCBDb3JlSVBDOjpBdHRhY2htZW50Jik7CisgICAgCiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpD
bGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hl
ciosIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCkBAIC02MSw3ICs3MiwxMyBA
QCBwcml2YXRlOgogCiAgICAgLy8gVGhlIHByb2Nlc3MgbGF1bmNoZXIgZm9yIHRoZSBuZXR3b3Jr
IHByb2Nlc3MuCiAgICAgUmVmUHRyPFByb2Nlc3NMYXVuY2hlcj4gbV9wcm9jZXNzTGF1bmNoZXI7
CisgICAgCisgICAgTmV0d29ya1Byb2Nlc3NNYW5hZ2VyKiBtX25ldHdvcmtQcm9jZXNzTWFuYWdl
cjsKKyAgICAKKyAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwogCisgICAgdW5zaWduZWQgbV9udW1Q
ZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzOworICAgIERlcXVlPFJlZlB0cjxNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4g
PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMzc5YjEwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwyOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
IyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKKworbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSB7
CisgICAgRGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoQ29yZUlQQzo6QXR0
YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikKK30KKworI2VuZGlmIC8vIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXgg
MWNiZTM0NS4uYTAyOGNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNw
cApAQCAtNjksNiArNjksMTAgQEAKICNpbmNsdWRlICJXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94
eS5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzTWFuYWdlci5oIgorI2VuZGlmCisKICNpZiBVU0UoU09VUCkKICNpbmNsdWRl
ICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIgogI2VuZGlmCkBAIC03Nyw2ICs4MSw3IEBA
CiAjaW5jbHVkZSAiV2ViVmlicmF0aW9uUHJveHkuaCIKICNlbmRpZgogCisKICNpZm5kZWYgTkRF
QlVHCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2VuZGlmCkBAIC0z
MzYsNyArMzQxLDcgQEAgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYkNvbnRleHQ6OmNy
ZWF0ZU5ld1dlYlByb2Nlc3MoKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAg
aWYgKG1fdXNlc05ldHdvcmtQcm9jZXNzKQotICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzcygp
OworICAgICAgICBOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLmVuc3VyZURlZmF1bHRO
ZXR3b3JrUHJvY2VzcygpOwogI2VuZGlmCiAKICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBw
cm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUodGhpcyk7CkBAIC00MzUsMTYgKzQ0MCw2
IEBAIHZvaWQgV2ViQ29udGV4dDo6d2FybUluaXRpYWxQcm9jZXNzKCkKICAgICBtX2hhdmVJbml0
aWFsRW1wdHlQcm9jZXNzID0gdHJ1ZTsKIH0KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci12b2lkIFdlYkNvbnRleHQ6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkKLXsKLSAgICBpZiAobV9u
ZXR3b3JrUHJvY2VzcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9uZXR3b3JrUHJvY2VzcyA9
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZSgpOwotfQotI2VuZGlmCi0KIHZvaWQgV2ViQ29u
dGV4dDo6ZW5hYmxlUHJvY2Vzc1Rlcm1pbmF0aW9uKCkKIHsKICAgICBtX3Byb2Nlc3NUZXJtaW5h
dGlvbkVuYWJsZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5k
ZXggY2VlNjg5Yy4uZTNmNmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5o
CkBAIC00NiwxMCArNDYsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBEb3dubG9hZFByb3h5OwpAQCAtMjU3LDEwICsyNTMsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBwbGF0Zm9ybUludmFsaWRhdGVDb250ZXh0
KCk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIHZvaWQgZW5zdXJlTmV0d29y
a1Byb2Nlc3MoKTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgZ2V0UGFz
dGVib2FyZFR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMpOwogICAgIHZvaWQgZ2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcyk7CkBAIC0zOTUsNyArMzg3LDYgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fcHJvY2Vzc1Rlcm1pbmF0aW9uRW5hYmxlZDsKIAogI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCi0gICAgUmVmUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IG1fbmV0
d29ya1Byb2Nlc3M7CiAgICAgYm9vbCBtX3VzZXNOZXR3b3JrUHJvY2VzczsKICNlbmRpZgogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBh
MzhlMjNhLi42YzhkYTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5o
IgogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNz
TWFuYWdlci5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgogI2luY2x1ZGUgIlBsdWdp
blByb2Nlc3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKQEAgLTQwMSw2ICs0
MDIsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25u
ZWN0aW9uKGNvbnN0IFN0cmluZyYgLyogdXJsICovLAogfQogI2VuZGlmIC8vIEVOQUJMRShTSEFS
RURfV09SS0VSX1BST0NFU1MpCiAKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQordm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5KQoreworICAgIE5ldHdv
cmtQcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKGlk
ZW50aWZpZXIsIHJlcGx5KTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQor
CiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6
TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgaWYgKG1fY29udGV4dC0+ZGlzcGF0Y2hN
ZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2RlcikpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggYzMxMWM0Zi4uZGRiY2ZlYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTUzLDYgKzE1Myw5
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRHZXRTaXRlc1dpdGhQbHVnaW5EYXRhKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBzaXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWRD
bGVhclBsdWdpblNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogI2VuZGlmCisjaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKKyAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKKyNl
bmRpZgogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCiAgICAgdm9pZCBnZXRTaGFy
ZWRXb3JrZXJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFNoYXJlZFdv
cmtlclByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggMzk2YTE2Ni4uNDNiYjIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC00NSw2ICs0NSw5IEBAIG1lc3NhZ2Vz
IC0+IFdlYlByb2Nlc3NQcm94eSB7CiAgICAgdm9pZCBEaWRHZXRTaXRlc1dpdGhQbHVnaW5EYXRh
KFZlY3RvcjxXVEY6OlN0cmluZz4gc2l0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgdm9p
ZCBEaWRDbGVhclBsdWdpblNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAjZW5kaWYKKyNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorICAgIEdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bihXVEY6OlN0cmluZyBpZGVudGlmaWVyKSAtPiAoQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0
aW9uSGFuZGxlKSBEZWxheWVkCisjZW5kaWYKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9D
RVNTKQogICAgIEdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25uZWN0aW9uKFdURjo6U3RyaW5nIHVy
bCwgV1RGOjpTdHJpbmcgbmFtZSkgLT4gKENvcmVJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkhh
bmRsZSkgRGVsYXllZAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWU4ODFmZC4uMjM5Y2UwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzQ4LDYg
KzM0OCwxMCBAQAogCQkzRjg3QjlDMDE1ODk0MEQ4MDA5MEZGNjIgLyogV2ViQ29sb3JDaG9vc2Vy
UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNG
ODdCOUJGMTU4OTQwRDgwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXJQcm94eS5oICovOyB9Owog
CQk0RjYwMTQzMjE1NUM1QUEyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2MDE0MzAxNTVDNUEz
MjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCAqLzsgfTsKIAkJNTEwMjFFOUMxMkIx
Njc4ODAwNUMwMzNDIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMjFFOUIxMkIxNjc4ODAwNUMwMzND
IC8qIFdlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tICovOyB9OworCQk1MTA1QjBEOTE2MkY3QzNC
MDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA1QjBENzE2MkY3QzNCMDBF
Mjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgKi87IH07CisJCTUx
MDVCMERBMTYyRjdDM0IwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA1QjBE
ODE2MkY3QzNCMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oICov
OyB9OworCQk1MTA1QjBERDE2MkY3RTlEMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NNYW5hZ2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDVC
MERCMTYyRjdFOUQwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc01hbmFnZXIuY3BwICovOyB9Owor
CQk1MTA1QjBERTE2MkY3RTlEMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA1QjBEQzE2MkY3
RTlEMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmggKi87IH07CiAJCTUxMENDODQ5
MTYxM0M4NUMwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5hcHAgaW4gQ29weUZpbGVzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMENDODBFMTYxM0M3OTkwMEQwM0VEMyAv
KiBOZXR3b3JrUHJvY2Vzcy5hcHAgKi87IH07CiAJCTUxMENDODRGMTYxM0M5MkMwMEQwM0VEMyAv
KiBNYWluTWFjUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQTZGQTMxMDExRTM5MjFFMDBEQjEzNzEgLyogTWFpbk1hY1Byb2Nlc3MuY3Bw
ICovOyB9OwogCQk1MTBGQkI5QTEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVt
RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTBGQkI5ODEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAgKi87
IH07CkBAIC00MDgsNiArNDEyLDEwIEBACiAJCTUxMkY1OEZDMTJBODhBNTQwMDYyOTUzMCAvKiBX
S1Byb3RlY3Rpb25TcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTEyRjU4RjQxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEzNjE4
M0QxNjMxMjZEQTAwQTk5RERFIC8qIENvbm5lY3Rpb25TdGFjay5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTM2MTgzQjE2MzEyNkRBMDBBOTlEREUg
LyogQ29ubmVjdGlvblN0YWNrLmNwcCAqLzsgfTsKIAkJNTEzNjE4M0UxNjMxMjZEQTAwQTk5RERF
IC8qIENvbm5lY3Rpb25TdGFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEzNjE4M0MxNjMxMjZEQTAwQTk5RERFIC8qIENvbm5lY3Rpb25TdGFjay5o
ICovOyB9OworCQk1MTNBMTYzQzE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTNBMTYzQTE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTUxM0ExNjNEMTYzMDg4RjYwMDVEN0QyMiAv
KiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0ExNjNCMTYzMDg4RjYwMDVEN0QyMiAvKiBOZXR3b3Jr
UHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCAqLzsgfTsKKwkJNTEzQTE2NEMxNjMwQTlCRjAwNUQ3RDIy
IC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0ExNjQ5MTYzMEE5QkYwMDVEN0QyMiAvKiBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgKi87IH07CisJCTUxM0ExNjREMTYzMEE5
QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzQTE2NEExNjMwQTlCRjAwNUQ3
RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggKi87IH07CiAJCTUxNTM1NjlD
MTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1MzU2OUExMjkxQjFEMjAw
MDc0OURDIC8qIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgKi87IH07CiAJCTUxNTM1NjlE
MTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTM1NjlCMTI5MUIxRDIwMDA3
NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKIAkJNTE1NzhCODMxMjA5
RUNFRjAwQTM3QzRBIC8qIFdlYkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNTc4QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggKi87
IH07CkBAIC00MjgsNiArNDM2LDcgQEAKIAkJNTE4MzQ1OTIxMzQ1MzJFOTAwOTJCNjk2IC8qIFdl
Ykljb25EYXRhYmFzZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTgzNDU5MDEzNDUzMkU4MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNl
Q2xpZW50LmNwcCAqLzsgfTsKIAkJNTE4MzQ1OTMxMzQ1MzJFOTAwOTJCNjk2IC8qIFdlYkljb25E
YXRhYmFzZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE4MzQ1OTExMzQ1MzJFODAwOTJCNjk2IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5o
ICovOyB9OwogCQk1MTgzQjM5MjEzNzlGN0I4MDBFODc1NEUgLyogV2ViUHJvY2Vzc1NoaW0uZHls
aWIgaW4gQ29weSBXZWIgUHJvY2VzcyBTaGltICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMDAzMUY2MTM3OUNBQ0IwMEM4REZFNCAvKiBXZWJQcm9jZXNzU2hpbS5keWxpYiAq
LzsgfTsKKwkJNTE4M0RERUMxNjMwQkRGQzAwOEJFNUM3IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTA1QjBENDE2MkY3QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCAq
LzsgfTsKIAkJNTE4NzFCNUIxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODcxQjU5MTI3
Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi87IH07CiAJCTUxODcxQjVDMTI3
Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNv
bnRleHRNZW51LmggKi87IH07CiAJCTUxOEFDQUVBMTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3Rl
Y3Rpb25TcGFjZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MThBQ0FFOTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBl
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
NTA1LDYgKzE1MTQsMTMgQEAKIAkJNEY2MDE0MzAxNTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5n
UmVzcG9uc2VNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tpbmdS
ZXNwb25zZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAwMzFGNjEzNzlD
QUNCMDBDOERGRTQgLyogV2ViUHJvY2Vzc1NoaW0uZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBpbmNs
dWRlSW5JbmRleCA9IDA7IHBhdGggPSBXZWJQcm9jZXNzU2hpbS5keWxpYjsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNTEwMjFFOUIxMkIxNjc4ODAwNUMwMzNDIC8qIFdl
YkNvbnRleHRNZW51Q2xpZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxMDVCMEQ0MTYyRjdBN0EwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcDsgcGF0aCA9IE5ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwNUIwRDUxNjJGN0E3QTAw
RTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDsgcGF0aCA9IE5ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxMDVCMEQ3MTYyRjdDM0IwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwOyBwYXRoID0gTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwNUIw
RDgxNjJGN0MzQjAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
TWFuYWdlci5oOyBwYXRoID0gTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMDVCMERCMTYyRjdFOUQwMEUyNzcw
OSAvKiBOZXR3b3JrUHJvY2Vzc01hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTEwNUIwREMxNjJGN0U5RDAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzTWFu
YWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzc01h
bmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwNUIwRjMxNjMwODcyRTAw
RTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEw
Q0M3REQxNjEzOEUyOTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzTWFpbk1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwQ0M3REYxNjEzOEUyOTAwRDAzRUQz
IC8qIE5ldHdvcmtQcm9jZXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IE5ldHdvcmtQcm9jZXNzLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwQ0M3RTAxNjEzOEUyOTAw
RDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IE5ldHdvcmtQcm9jZXNzLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU3Myw2ICsxNTg5LDExIEBACiAJ
CTUxMkY1OEY0MTJBODhBNTQwMDYyOTUzMCAvKiBXS1Byb3RlY3Rpb25TcGFjZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Byb3RlY3Rpb25TcGFjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTM2MTgzQjE2MzEyNkRBMDBBOTlEREUgLyogQ29ubmVjdGlv
blN0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbm5lY3Rp
b25TdGFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMzYxODNDMTYzMTI2
REEwMEE5OURERSAvKiBDb25uZWN0aW9uU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29ubmVjdGlvblN0YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxM0ExNjNBMTYzMDg4RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtQ
cm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTNBMTYzQjE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzUHJv
eHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTNBMTY0OTE2MzBB
OUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTNBMTY0QTE2MzBBOUJGMDA1
RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDsgcGF0aCA9
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxM0ExNjRCMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUg
PSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTUzNTY5QTEyOTFCMUQyMDAwNzQ5REMgLyogV2Vi
UGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNTM1NjlCMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZUNvbnRleHRN
ZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNTc4QjgyMTIwOUVD
RUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MjQsMTAgKzI5NDUs
MjQgQEAKIAkJCW5hbWUgPSBjZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJ
CTUxMDVCMEQyMTYyRjdBNUUwMEUyNzcwOSAvKiBOZXR3b3JrICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk1MTA1QjBENzE2MkY3QzNCMDBFMjc3MDkgLyog
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgKi8sCisJCQkJNTEwNUIwRDgxNjJG
N0MzQjAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCAqLywKKwkJ
CQk1MTA1QjBENDE2MkY3QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cCAqLywKKwkJCQk1MTA1QjBENTE2MkY3QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmggKi8sCisJCQkpOworCQkJbmFtZSA9IE5ldHdvcms7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OwogCQk1MTBDQzdEQTE2MTM4RTAxMDBEMDNFRDMgLyogTmV0d29ya1By
b2Nlc3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTUx
MENDN0RDMTYxMzhFMjkwMEQwM0VEMyAvKiBtYWMgKi8sCisJCQkJNTEzQTE2NDkxNjMwQTlCRjAw
NUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCAqLywKKwkJCQk1MTNB
MTY0QTE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCAq
LywKKwkJCQk1MTNBMTY0QjE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4gKi8sCiAJCQkJNTEwQ0M3REYxNjEzOEUyOTAwRDAzRUQzIC8q
IE5ldHdvcmtQcm9jZXNzLmNwcCAqLywKIAkJCQk1MTBDQzdFMDE2MTM4RTI5MDBEMDNFRDMgLyog
TmV0d29ya1Byb2Nlc3MuaCAqLywKIAkJCQk1MUE4QTYxNzE2MjdGNUJCMDAwRDkwRTkgLyogTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gKi8sCkBAIC0yOTUwLDggKzI5ODUsMTEgQEAKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTE2MzE5OTMxNjI4OTgwRTAwRTIy
RjAwIC8qIG1hYyAqLywKKwkJCQk1MTA1QjBEQjE2MkY3RTlEMDBFMjc3MDkgLyogTmV0d29ya1By
b2Nlc3NNYW5hZ2VyLmNwcCAqLywKKwkJCQk1MTA1QjBEQzE2MkY3RTlEMDBFMjc3MDkgLyogTmV0
d29ya1Byb2Nlc3NNYW5hZ2VyLmggKi8sCiAJCQkJNTEwQ0M3RUExNjEzOEU3MjAwRDAzRUQzIC8q
IE5ldHdvcmtQcm9jZXNzUHJveHkuY3BwICovLAogCQkJCTUxMENDN0VCMTYxMzhFNzIwMEQwM0VE
MyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmggKi8sCisJCQkJNTEwNUIwRjMxNjMwODcyRTAwRTI3
NzA5IC8qIE5ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkpOwogCQkJcGF0
aCA9IE5ldHdvcms7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzExOCw2ICszMTU2
LDcgQEAKIAkJCQk1MUE5RTBGQjEzMTVDQzBFMDA5RTcwMzEgLyogS2V5VmFsdWVTdG9yYWdlICov
LAogCQkJCTFBNkZBMDFDMTFFMTUyNjMwMERCMTM3MSAvKiBtYWMgKi8sCiAJCQkJMzNEM0EzQkQx
MzM5NjA5ODAwNzA5QkU0IC8qIE1lZGlhQ2FjaGUgKi8sCisJCQkJNTEwNUIwRDIxNjJGN0E1RTAw
RTI3NzA5IC8qIE5ldHdvcmsgKi8sCiAJCQkJMzEwOTk5NzQxNDZDOEFBODAwMjlERUI5IC8qIE5v
dGlmaWNhdGlvbnMgKFVzZXIpICovLAogCQkJCTFBNkZCN0FBMTFFNjRCNDkwMERCMTM3MSAvKiBQ
bHVnaW5zICovLAogCQkJCTMzMzY3NjJCMTMwQzk5NzgwMDZDOURFMiAvKiBSZXNvdXJjZUNhY2hl
ICovLApAQCAtNDAwNyw2ICs0MDQ2LDggQEAKIAkJCQkxQUE1NzYwMDE0OTZCN0MwMDBBNEVFMDYg
LyogRXZlbnREaXNwYXRjaGVyTWVzc2FnZXMuaCAqLywKIAkJCQk1MUFDQzkzNDE2MjgwNjQ4MDAz
NDI1NTAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUxQUND
OTM1MTYyODA2NDgwMDM0MjU1MCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmggKi8sCisJCQkJ
NTEzQTE2M0ExNjMwODhGNjAwNUQ3RDIyIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLAorCQkJCTUxM0ExNjNCMTYzMDg4RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJv
Y2Vzc1Byb3h5TWVzc2FnZXMuaCAqLywKIAkJCQkxQTJEODQzNzEyN0Y2NUQ1MDAxRUI5NjIgLyog
TlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBMkQ4
NDM4MTI3RjY1RDUwMDFFQjk2MiAvKiBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VzLmgg
Ki8sCiAJCQkJMUE4RUY5NkMxMjUyQUY2QjAwRjcwNjdGIC8qIFBsdWdpbkNvbnRyb2xsZXJQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC00Njk4LDYgKzQ3MzksMTAgQEAKIAkJCQkxQTIz
MjhGRjE2MkM4NjZBMDBEODJGN0EgLyogTWVzc2FnZUVuY29kZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBMjMyOTAzMTYyQzg2NzMwMEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTEzNjE4M0UxNjMxMjZEQTAwQTk5RERFIC8qIENvbm5lY3Rpb25TdGFjay5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTEwNUIwREExNjJGN0MzQjAwRTI3NzA5IC8qIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMDVCMERFMTYy
RjdFOUQwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc01hbmFnZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTUxM0ExNjNEMTYzMDg4RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxM0ExNjREMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC01NjQ0LDYgKzU2
ODksMTEgQEAKIAkJCQkxQTIzMjhGRTE2MkM4NjZBMDBEODJGN0EgLyogTWVzc2FnZUVuY29kZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyMzI5MDIxNjJDODY3MzAwRDgyRjdBIC8qIE1lc3Nh
Z2VEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMzYxODNEMTYzMTI2REEwMEE5OURE
RSAvKiBDb25uZWN0aW9uU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwNUIwRDkxNjJG
N0MzQjAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNTEwNUIwREQxNjJGN0U5RDAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNz
TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTNBMTYzQzE2MzA4OEY2MDA1RDdEMjIg
LyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1MTNBMTY0QzE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4M0RERUMxNjMwQkRGQzAwOEJFNUM3IC8q
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg1Yjdl
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIK
KworI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlciogbWFuYWdlciwgY29uc3Qg
U3RyaW5nJiBwcm9jZXNzSWRlbnRpZmllciwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmll
ciBjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICA6IG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
TWFuYWdlcihtYW5hZ2VyKQorICAgICwgbV9pZGVudGlmZXIocHJvY2Vzc0lkZW50aWZpZXIpCit7
CisgICAgbV9jb25uZWN0aW9uID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29u
bmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgdGhpcywgV2ViUHJvY2Vzczo6c2hhcmVkKCku
cnVuTG9vcCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPm9wZW4oKTsKK30KKworTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjp+TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkKK3sKK30KKwordm9pZCBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJikKK3sK
K30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNz
YWdlRGVjb2RlciYsIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4mKQoreworfQorCit2
b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoQ29yZUlQQzo6Q29ubmVjdGlv
biopCit7CisgICAgLy8gVGhlIE5ldHdvcmtQcm9jZXNzIGNyYXNoZWQuCisgICAgUmVmUHRyPE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbj4gcHJvdGVjdG9yKHRoaXMpOworICAgIAorICAgIG1fbmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci0+cmVtb3ZlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKHRoaXMpOworICAgIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci0+bmV0d29y
a1Byb2Nlc3NDcmFzaGVkKG1faWRlbnRpZmVyKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwg
Q29yZUlQQzo6TWVzc2FnZUlEKQoreworfQorCisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODcyZDM0ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbl9oCisjZGVmaW5lIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbl9oCisK
KyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyOworCitjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVm
Q291bnRlZDxOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24+LCBDb3JlSVBDOjpDb25uZWN0aW9uOjpD
bGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIqIG1hbmFnZXIs
IGNvbnN0IFN0cmluZyYgcHJvY2Vzc0lkZW50aWZpZXIsIENvcmVJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihtYW5hZ2VyLCBwcm9jZXNzSWRlbnRp
ZmllciwgY29ubmVjdGlvbklkZW50aWZpZXIpKTsKKyAgICB9CisgICAgfk5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpOworICAgIAorICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmVyOyB9CisgICAgQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQorCitwcml2YXRlOgor
ICAgIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyKiwgY29uc3QgU3RyaW5nJiBwcm9jZXNzSWRlbnRpZmllciwgQ29yZUlQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllcik7CisKKyAgICAvLyBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENv
cmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBD
OjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgT3duUHRyPENvcmVJUEM6Ok1l
c3NhZ2VFbmNvZGVyPiYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb3JlSVBDOjpDb25u
ZWN0aW9uKik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3Jl
SVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlEKTsKKworICAgIC8vIFRoZSBjb25u
ZWN0aW9uIGZyb20gdGhlIHdlYiBwcm9jZXNzIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MuCisgICAg
UmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKworICAgIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIqIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdl
cjsKKworICAgIFN0cmluZyBtX2lkZW50aWZlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKworCisjZW5kaWYgLy8gTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTUwNTA1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFu
YWdlci5oIgorCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisK
KyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFu
YWdlcigpCit7Cit9CisKK05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6On5OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCkKK3sKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyOjplbnN1cmVEZWZhdWx0Q29ubmVjdGlvbigpCit7CisgICAgZ2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCIiKTsKK30KKworTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oY29uc3QgU3RyaW5nJiBuZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbnMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uc1tpXS0+aWRlbnRp
ZmllcigpID09IG5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBt
X25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbnNbaV0uZ2V0KCk7CisgICAgfQorCisgICAgQ29yZUlQ
Qzo6QXR0YWNobWVudCBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXI7CisKKyAgICBpZiAoIVdl
YlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKG5ldHdvcmtQcm9jZXNzSWRl
bnRpZmllciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKSwgMCkpCisgICAgICAgIHJl
dHVybiAwOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIENvcmVJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVy
LnBvcnQoKSk7CisgICAgaWYgKENvcmVJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwo
Y29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gMDsKKyNlbHNlCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKworICAgIFJlZlB0cjxOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24+IG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9IE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6Y3JlYXRlKHRoaXMsIG5ldHdvcmtQcm9jZXNzSWRlbnRpZmllciwgY29ubmVjdGlvbklk
ZW50aWZpZXIpOworICAgIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQobmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKTsKKyAgICBpZiAobmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyLmlz
RW1wdHkoKSkKKyAgICAgICAgbV9kZWZhdWx0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gbmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOworCisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV9pZGVudGlmaWVyc0FuZENvbm5lY3Rpb25zTXV0ZXgpOworICAgICAgICBBU1NFUlQoIW1f
aWRlbnRpZmllcnNBbmRDb25uZWN0aW9ucy5jb250YWlucyhuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24tPmlkZW50aWZpZXIoKSkpOworCisgICAgICAgIG1faWRlbnRpZmllcnNBbmRDb25uZWN0aW9u
cy5zZXQobmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyLCBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24t
PmNvbm5lY3Rpb24oKSk7CisgICAgfQorCisgICAgcmV0dXJuIG5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5nZXQoKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpy
ZW1vdmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKiBu
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pCit7CisgICAgc2l6ZV90IHZlY3RvckluZGV4ID0gbV9u
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25zLmZpbmQobmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKTsK
KyAgICBBU1NFUlQodmVjdG9ySW5kZXggIT0gbm90Rm91bmQpOworCisgICAgeworICAgICAgICBN
dXRleExvY2tlciBsb2NrZXIobV9pZGVudGlmaWVyc0FuZENvbm5lY3Rpb25zTXV0ZXgpOworICAg
ICAgICBBU1NFUlQobV9pZGVudGlmaWVyc0FuZENvbm5lY3Rpb25zLmNvbnRhaW5zKG5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi0+aWRlbnRpZmllcigpKSk7CisgICAgICAgIAorICAgICAgICBtX2lk
ZW50aWZpZXJzQW5kQ29ubmVjdGlvbnMucmVtb3ZlKG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi0+
aWRlbnRpZmllcigpKTsKKyAgICB9CisKKyAgICBpZiAobmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
ID09IG1fZGVmYXVsdE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbikgeworICAgICAgICBBU1NFUlQo
bmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5pZGVudGlmaWVyKCkuaXNFbXB0eSgpKTsKKyAgICAg
ICAgbV9kZWZhdWx0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gMDsKKyAgICB9CisKKyAgICBt
X25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbnMucmVtb3ZlKHZlY3RvckluZGV4KTsKKworfQorCit2
b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hl
ZChjb25zdCBTdHJpbmcmIG5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBNdXRleExv
Y2tlciBsb2NrZXIobV9pZGVudGlmaWVyc0FuZENvbm5lY3Rpb25zTXV0ZXgpOworICAgIENvcmVJ
UEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBtX2lkZW50aWZpZXJzQW5kQ29ubmVjdGlvbnMu
Z2V0KG5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcikuZ2V0KCk7CisKKyAgICAvLyBJdCdzIE9LIGZv
ciBjb25uZWN0aW9uIHRvIGJlIG51bGwgaGVyZTsgaXQgd2lsbCBoYXBwZW4gaWYgdGhpcyB3ZWIg
cHJvY2VzcyBkb2Vzbid0IGtub3cKKyAgICAvLyBhbnl0aGluZyBhYm91dCB0aGUgbmV0d29yayBw
cm9jZXNzIHRoYXQgY3Jhc2hlZC4KKyAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAgIHJldHVy
bjsKKworICAgIGNvbm5lY3Rpb24tPnBvc3RDb25uZWN0aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25X
b3JrUXVldWUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIzNWYzOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyX2gKKyNkZWZpbmUgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlcl9oCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKKyAgICAgICAg
CitjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKTsKK3B1YmxpYzoKKyAg
ICBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCk7CisgICAgfk5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXIoKTsKKworICAgIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiogZGVm
YXVsdENvbm5lY3Rpb24oKSB7IHJldHVybiBtX2RlZmF1bHROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uZ2V0KCk7IH0KKyAgICB2b2lkIGVuc3VyZURlZmF1bHRDb25uZWN0aW9uKCk7CisKKyAgICBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihjb25z
dCBTdHJpbmcmIG5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKik7CisKKyAgICB2
b2lkIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChjb25zdCBTdHJpbmcmIG5ldHdvcmtQcm9jZXNzSWRl
bnRpZmllcik7CisgICAgCitwcml2YXRlOgorICAgIFJlZlB0cjxOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24+IG1fZGVmYXVsdE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKKyAgICBWZWN0b3I8UmVm
UHRyPE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbj4gPiBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bnM7CisKKyAgICBNdXRleCBtX2lkZW50aWZpZXJzQW5kQ29ubmVjdGlvbnNNdXRleDsKKyAgICBI
YXNoTWFwPFN0cmluZywgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+ID4gbV9pZGVudGlmaWVy
c0FuZENvbm5lY3Rpb25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorCisjZW5kaWYgLy8gTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApp
bmRleCBkOWQxNGU5Li5lMzRhYjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTI1Niw2ICsyNTYsOSBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVX
ZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZQogICAg
IFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lv
bklkZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisgICAgbV9uZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyLmVuc3VyZURlZmF1bHRDb25uZWN0aW9uKCk7CisjZW5kaWYKICAg
ICBzZXRUZXJtaW5hdGlvblRpbWVvdXQocGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQpOwog
fQogCkBAIC0xMDI0LDYgKzEwMjcsMTMgQEAgdm9pZCBXZWJQcm9jZXNzOjpwb3N0SW5qZWN0ZWRC
dW5kbGVNZXNzYWdlKGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UKICAgICBp
bmplY3RlZEJ1bmRsZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UobWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5
LmdldCgpKTsKIH0KIAorI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCit2b2lkIFdlYlByb2Nl
c3M6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChDb3JlSVBDOjpDb25uZWN0aW9uKiwgY29uc3QgU3Ry
aW5nJiBuZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgbV9uZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLm5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChuZXR3b3JrUHJvY2Vzc0lkZW50
aWZpZXIpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiB2b2lkIFdl
YlByb2Nlc3M6OnBsdWdpblByb2Nlc3NDcmFzaGVkKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBjb25z
dCBTdHJpbmcmIHBsdWdpblBhdGgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCmluZGV4IDlhMTNlZTguLjZkYzY3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCkBAIC03MSw2ICs3MSwxMCBAQCBRVF9FTkRfTkFNRVNQQUNFCiAjaW5jbHVkZSAi
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCIKKyNl
bmRpZgorCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogI2luY2x1ZGUgIlBsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlci5oIgogI2VuZGlmCkBAIC0yMjgsNyArMjMyLDEwIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBnZXRTaXRlc1dpdGhQbHVnaW5EYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwbHVnaW5QYXRocywgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBjbGVhclBsdWdp
blNpdGVEYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwbHVnaW5QYXRocywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBmbGFncywgdWludDY0X3QgbWF4QWdlSW5TZWNvbmRz
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICNlbmRpZgotICAgIAorCisjaWYgRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykKKyAgICB2b2lkIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgY29uc3QgU3RyaW5nJiBuZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIpOworI2VuZGlm
CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogICAgIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNo
ZWQoQ29yZUlQQzo6Q29ubmVjdGlvbiosIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CiAjZW5k
aWYKQEAgLTMzNSw2ICszNDIsOSBAQCBwcml2YXRlOgogICAgIAogICAgIFN0cmluZyBtX2xvY2Fs
U3RvcmFnZURpcmVjdG9yeTsKIAorI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisgICAgTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlciBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXI7CisjZW5kaWYKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAgICAgUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggMzc4NzkyZi4uZjIzMjUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjMsNiArNjMsMTEgQEAgbWVzc2Fn
ZXMgLT4gV2ViUHJvY2VzcyB7CiAgICAgR2V0U2l0ZXNXaXRoUGx1Z2luRGF0YShWZWN0b3I8V1RG
OjpTdHJpbmc+IHBsdWdpblBhdGhzLCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIENsZWFyUGx1
Z2luU2l0ZURhdGEoVmVjdG9yPFdURjo6U3RyaW5nPiBwbHVnaW5QYXRocywgVmVjdG9yPFdURjo6
U3RyaW5nPiBzaXRlcywgdWludDY0X3QgZmxhZ3MsIHVpbnQ2NF90IG1heEFnZUluU2Vjb25kcywg
dWludDY0X3QgY2FsbGJhY2tJRCkKICNlbmRpZgorCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKKyAgICBOZXR3b3JrUHJvY2Vzc0NyYXNoZWQoU3RyaW5nIG5ldHdvcmtQcm9jZXNzSWRlbnRp
ZmllcikgRGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZQorI2VuZGlmCisKICNpZiBFTkFCTEUoUExV
R0lOX1BST0NFU1MpCiAgICAgUGx1Z2luUHJvY2Vzc0NyYXNoZWQoU3RyaW5nIHBsdWdpblByb2Nl
c3MpIERpc3BhdGNoT25Db25uZWN0aW9uUXVldWUKICNlbmRpZgo=
</data>
<flag name="commit-queue"
          id="182916"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169569</attachid>
            <date>2012-10-19 00:38:36 -0700</date>
            <delta_ts>2012-10-19 14:59:07 -0700</delta_ts>
            <desc>Patch v3 - And again...</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>73998</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjZjA0MzM4Li4xOWEwODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTMz
IEBACiAyMDEyLTEwLTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAorICAg
ICAgICBBZGQgaW5mcmFzdHJ1Y3R1cmUgZm9yIE5ldHdvcmtQcm9jZXNzIG1hbmFnZW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5ODE3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIHRoZSBXZWJQcm9jZXNzIGl0c2VsZiByZXF1ZXN0aW5nIGEgY29ubmVjdGlvbiB0byB0aGUg
ZGVmYXVsdCBOZXR3b3JrUHJvY2Vzcy4KKworICAgICAgICBBZGQgcHJvcGVyIGhhbmRsaW5nIG9m
IGNyYXNoZXMgc28gYW55IG9mIHRoZSAzKyBwcm9jZXNzZXMgaW4gdGhlIGRhbmNlIGFyZSBub3Rp
ZmllZCBpZiBhbnkgb2YgdGhlIG90aGVycyBjcmFzaC4KKworICAgICAgICBQcm9qZWN0IGZpbGUg
c3R1ZmYgYW5kIGdlbmVyYWwgbWVzc2FnaW5nIGNoYW5nZXM6CisgICAgICAgICogV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVz
c2FnZUlELmg6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKworICAgICAgICBXZWJD
b250ZXh0IG5vIGxvbmdlciBpcyBpbnZvbHZlZCB3aXRoIHRoaXMgc3R1ZmY6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpj
cmVhdGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgor
ICAgICAgICAoV2ViQ29udGV4dCk6CisKKyAgICAgICAgQWRkIGEgY2xhc3MgcmVwcmVzZW50aW5n
IGEgY29ubmVjdGlvbiBmcm9tIGEgTmV0d29ya1Byb2Nlc3MgdG8gYSBwYXJ0aWN1bGFyIFdlYlBy
b2Nlc3MKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3Nl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNz
YWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluLgorCisg
ICAgICAgIEFkZCB0aGUgYWJpbGl0eSBmb3IgYSBOZXR3b3JrUHJvY2VzcyB0byBjcmVhdGUgYSBj
b25uZWN0aW9uIHRvIGEgZGlmZmVyZW50IHByb2Nlc3MsIHdoaWNoIGlzIHVzZWQgb24gYmVoYWxm
IG9mIFdlYlByb2Nlc3NlcyBmb3Igbm93LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlbW92ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisKKyAgICAgICAgQWRkIGEgY2xhc3MgdG8gbWFuYWdl
IHRoZSBjb2xsZWN0aW9uIG9mIE5ldHdvcmtQcm9jZXNzZXMgd2l0aGluIHRoZSBVSVByb2Nlc3Mu
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c01hbmFnZXI6OnNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzTWFuYWdl
cjo6TmV0d29ya1Byb2Nlc3NNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NNYW5hZ2VyOjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OmVuc3VyZURlZmF1bHROZXR3b3JrUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6Z2V0T3JDcmVhdGVOZXR3b3Jr
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6bmV0d29y
a1Byb2Nlc3NXaXRoSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
TWFuYWdlcjo6cmVtb3ZlTmV0d29ya1Byb2Nlc3NQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKE5ldHdvcmtQcm9jZXNzTWFuYWdlcik6CisKKyAgICAgICAgRmxlc2ggb3V0
IHRoZSBOZXR3b3JrUHJvY2Vzc1Byb3h5IHRvIGhhbmRsZSBjcmVhdGluZyB0aGVzZSBjb25uZWN0
aW9ucyBiZXR3ZWVuIE5ldHdvcmsgYW5kIFdlYiBQcm9jZXNzZXM6CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nl
c3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAg
ICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKE5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjppZGVudGlmaWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbi4KKworICAg
ICAgICBGb3J3YXJkIG9uIHRoZSBtZXNzYWdlIHRoYXQgYSBXZWJQcm9jZXNzIHdhbnRzIGEgY29u
bmVjdGlvbiB0byBhIE5ldHdvcmtQcm9jZXNzOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYlByb2Nlc3NQcm94eSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICBB
ZGQgYSBjbGFzcyByZXByZXNlbnRpbmcgdGhlIFdlYlByb2Nlc3NlcyBjb25uZWN0aW9uIHRvIHRo
ZSBOZXR3b3JrUHJvY2VzczoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6fk5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6aWRlbnRpZmllcik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29ubmVjdGlvbik6CisKKyAg
ICAgICAgQWRkIGEgY2xhc3MgdGhhdCBoYW5kbGVzIGNvbm5lY3Rpb25zIHRvIHRoZSBOZXR3b3Jr
UHJvY2VzcyBvbiBiZWhhbGYgb2YgdGhlIFdlYlByb2Nlc3M6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXI6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjp+TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXI6OmVuc3VyZURlZmF1bHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cmVt
b3ZlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFu
YWdlcjo6ZGVmYXVsdENvbm5lY3Rpb24pOgorCisgICAgICAgIEhhdmUgdGhlIFdlYlByb2Nlc3Mg
Z2V0IGEgY29ubmVjdGlvbiB0byB0aGUgZGVmYXVsdCBOZXR3b3JrUHJvY2VzcyB1c2luZyBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5l
dHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6
CisgICAgICAgIChXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisKKzIwMTItMTAtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCiAgICAgICAgIE1vdmUgQ29ubmVjdGlvblN0YWNrIG91dCBvZiBXZWJQcm9jZXNzQ29u
bmVjdGlvbiBpbnRvIGl0cyBvd24gZmlsZXMuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05OTgxMwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCA5YWI2ZGI2Li4zNTk3Njk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTQ0LDYgKzQ0LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzIFwKICAg
ICAkKFdlYktpdDIpL1VJUHJvY2VzcyBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvRG93bmxv
YWRzIFwKKyAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9OZXR3b3JrIFwKICAgICAkKFdlYktpdDIp
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9QbHVn
aW5zIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzIFwKQEAgLTU2LDYg
KzU3LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgRG93bmxvYWRQcm94eSBcCiAgICAg
RXZlbnREaXNwYXRjaGVyIFwKICAgICBOZXR3b3JrUHJvY2VzcyBcCisgICAgTmV0d29ya1Byb2Nl
c3NQcm94eSBcCiAgICAgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIgXAogICAgIFBsdWdpbkNvbnRy
b2xsZXJQcm94eSBcCiAgICAgUGx1Z2luUHJvY2VzcyBcCkBAIC02OSw2ICs3MSw3IEBAIE1FU1NB
R0VfUkVDRUlWRVJTID0gXAogICAgIFdlYkNvb2tpZU1hbmFnZXIgXAogICAgIFdlYkNvb2tpZU1h
bmFnZXJQcm94eSBcCiAgICAgV2ViQ29ubmVjdGlvbiBcCisgICAgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgXAogICAgIFdlYkNvbnRleHQgXAogICAgIFdlYkRhdGFiYXNlTWFuYWdlciBc
CiAgICAgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmZGNlMTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgor
CisjaW5jbHVkZSAiQ29ubmVjdGlvblN0YWNrLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3Mu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KKworI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworUGFzc1JlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvbklkZW50aWZpZXIpKTsKK30KKworTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCit7
CisgICAgbV9jb25uZWN0aW9uID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29u
bmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgdGhpcywgUnVuTG9vcDo6bWFpbigpKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnNldE9ubHlTZW5kTWVzc2FnZXNBc0Rpc3BhdGNoV2hlbldhaXRpbmdG
b3JTeW5jUmVwbHlXaGVuUHJvY2Vzc2luZ1N1Y2hBTWVzc2FnZSh0cnVlKTsKKyAgICBtX2Nvbm5l
Y3Rpb24tPm9wZW4oKTsKK30KKworTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCit7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24p
OworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQg
bWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBDb25u
ZWN0aW9uU3RhY2s6OkN1cnJlbnRDb25uZWN0aW9uUHVzaGVyIGN1cnJlbnRDb25uZWN0aW9uKENv
bm5lY3Rpb25TdGFjazo6c2hhcmVkKCksIGNvbm5lY3Rpb24pOworCisgICAgaWYgKG1lc3NhZ2VJ
RC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4o
KSkgeworICAgICAgICBkaWRSZWNlaXZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNz
YWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rp
b24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1l
c3NhZ2VEZWNvZGVyJiBhcmd1bWVudHMsIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4m
IHJlcGx5KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKikKK3sK
KyAgICAvLyBQcm90ZWN0IG91cnNlbGYgYXMgd2UgbWlnaHQgYmUgb3RoZXJ3aXNlIGJlIGRlbGV0
ZWQgZHVyaW5nIHRoaXMgZnVuY3Rpb24KKyAgICBSZWZQdHI8TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M+IHByb3RlY3Rvcih0aGlzKTsKKyAgICAKKyAgICBOZXR3b3JrUHJvY2Vzczo6c2hh
cmVkKCkucmVtb3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3ModGhpcyk7CisgICAgCisg
ICAgbV9jb25uZWN0aW9uID0gMDsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlSUQpCit7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZFJlY2VpdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29k
ZXImKQoreworICAgIC8vIEVtcHR5IGZvciBub3cgLSBUaGVyZSBhcmUgbm8gbWVzc2FnZXMgdG8g
aGFuZGxlLgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42MzUxMzYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAt
MCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc19oCisjZGVmaW5lIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzX2gKKworI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIDogcHVibGlj
IFJlZkNvdW50ZWQ8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+LCBDb3JlSVBDOjpDb25u
ZWN0aW9uOjpDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjcmVhdGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
Zmllcik7CisgICAgdmlydHVhbCB+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKKwor
ICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nv
bm5lY3Rpb24uZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyhDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKKworICAgIC8vIENvcmVJ
UEM6OkNvbm5lY3Rpb246OkNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNz
YWdlRGVjb2RlciYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImLCBPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+Jik7CisgICAgdmlydHVhbCB2
b2lkIGRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQpOworCisgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KKyAgICB2b2lkIGRpZFJlY2VpdmVO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbios
IENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKKworICAgIFJl
ZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisKKyNlbmRp
ZiAvLyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmExMDQ3YzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDI5IEBACisjIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisj
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQorCittZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyB7CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXgg
YzczODI0NS4uNzg2ZWFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzAsNyArMzAsMTEgQEAKIAogI2luY2x1ZGUgIkFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiQXR0YWNobWVudC5oIgorI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01OSw2ICs2MywxNCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjppbml0aWFsaXplKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgc2VydmVy
SWRlbnRpZmllcgogICAgIG1fdWlDb25uZWN0aW9uLT5vcGVuKCk7CiB9CiAKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlbW92ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uKQoreworICAgIHNpemVfdCB2ZWN0b3JJbmRl
eCA9IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmZpbmQoY29ubmVjdGlvbik7CisgICAgQVNTRVJU
KHZlY3RvckluZGV4ICE9IG5vdEZvdW5kKTsKKworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25z
LnJlbW92ZSh2ZWN0b3JJbmRleCk7Cit9CisKIGJvb2wgTmV0d29ya1Byb2Nlc3M6OnNob3VsZFRl
cm1pbmF0ZSgpCiB7CiAgICAgcmV0dXJuIHRydWU7CkBAIC03MSwxMCArODMsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25u
ZWN0aW9uLCBDb3JlSVBDOgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZShDb3JlSVBD
OjpDb25uZWN0aW9uKikKIHsKLSAgICAvLyBFaXRoZXIgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIFVJ
UHJvY2VzcyBvciBhIGNvbm5lY3Rpb24gdG8gYSBXZWJQcm9jZXNzIGhhcyBnb25lIGF3YXkuCi0g
ICAgLy8gSW4gdGhlIGZ1dHVyZSB3ZSdsbCBkbyBhcHByb3ByaWF0ZSBjbGVhbnVwIGFuZCBkZWNp
ZGUgd2hldGhlciBvciBub3Qgd2Ugd2FudCB0byBrZWVwCi0gICAgLy8gdGhlIE5ldHdvcmtQcm9j
ZXNzIG9wZW4uCi0gICAgLy8gRm9yIG5vdyB3ZSdsbCBhbHdheXMgY2xvc2UgaXQuCisgICAgLy8g
VGhlIFVJUHJvY2VzcyBqdXN0IGNyYXNoZWQuCiAgICAgUnVuTG9vcDo6Y3VycmVudCgpLT5zdG9w
KCk7CiB9CiAKQEAgLTkyLDYgKzEwMSwyNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFs
aXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZQogICAg
IHBsYXRmb3JtSW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vz
czo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQoreworI2lmIFBMQVRGT1JN
KE1BQykKKyAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgorICAgIG1hY2hfcG9ydF90
IGxpc3RlbmluZ1BvcnQ7CisgICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCks
IE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7CisKKyAgICAvLyBDcmVh
dGUgYSBsaXN0ZW5pbmcgY29ubmVjdGlvbi4KKyAgICBSZWZQdHI8TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M+IGNvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y3JlYXRlKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwor
ICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7
CisKKyAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFD
SF9NU0dfVFlQRV9NQUtFX1NFTkQpOworICAgIG1fdWlDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhjbGllbnRQb3J0KSwgMCk7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisjZW5k
aWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKaW5kZXggNTkzNDdkYS4uNTgyOGUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zNiw3ICszNiw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0gICAgCisKK2NsYXNzIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOwogc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOwogCiBjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IENoaWxkUHJvY2VzcyB7CkBAIC00Niw2
ICs0Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdGlhbGl6ZShDb3JlSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyLCBXZWJDb3JlOjpSdW5Mb29wKik7CiAKKyAgICB2b2lkIHJlbW92ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Kik7CisKIHByaXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3MoKTsKICAgICB+TmV0d29ya1Byb2Nl
c3MoKTsKQEAgLTY0LDkgKzY3LDE0IEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBIYW5kbGVy
cwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJik7CisgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpOwogCiAgICAgLy8gVGhlIGNvbm5lY3Rpb24gdG8gdGhlIFVJIHByb2Nlc3MuCiAg
ICAgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+IG1fdWlDb25uZWN0aW9uOworCisgICAgLy8g
Q29ubmVjdGlvbnMgdG8gV2ViUHJvY2Vzc2VzLgorICAgIFZlY3RvcjxSZWZQdHI8TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M+ID4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnM7CisKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA1ZTQ2YThlLi4wMjk1
MzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsOSBAQAogbWVzc2FnZXMgLT4gTmV0
d29ya1Byb2Nlc3MgewogICAgICMgSW5pdGlhbGl6ZXMgdGhlIG5ldHdvcmsgcHJvY2Vzcy4KICAg
ICBJbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyBwcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKQorCisgICAgIyBDcmVhdGVzIGEg
Y29ubmVjdGlvbiBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIGEgV2ViUHJvY2VzcworICAgIENyZWF0
ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL01lc3NhZ2VJRC5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
SUQuaAppbmRleCAyOWEyMDU0Li5hODllNjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvTWVzc2FnZUlELmgKQEAgLTEwOSw2ICsxMDksMTIgQEAgZW51bSBNZXNzYWdlQ2xh
c3MgewogICAgIC8vIE1lc3NhZ2VzIHNlbnQgYnkgdGhlIFVJIHByb2Nlc3MgdG8gdGhlIG5ldHdv
cmsgcHJvY2Vzcy4KICAgICBNZXNzYWdlQ2xhc3NOZXR3b3JrUHJvY2VzcywKIAorICAgIC8vIE1l
c3NhZ2VzIHNlbnQgYnkgdGhlIG5ldHdvcmsgcHJvY2VzcyB0byB0aGUgVUkgcHJvY2Vzcy4KKyAg
ICBNZXNzYWdlQ2xhc3NOZXR3b3JrUHJvY2Vzc1Byb3h5LAorCisgICAgLy8gTWVzc2FnZXMgc2Vu
dCBieSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICBNZXNzYWdl
Q2xhc3NOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcywKKwogI2lmIEVOQUJMRShTSEFSRURf
V09SS0VSX1BST0NFU1MpCiAgICAgLy8gTWVzc2FnZXMgc2VudCBieSB0aGUgVUkgcHJvY2VzcyB0
byB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzLgogICAgIE1lc3NhZ2VDbGFzc1NoYXJlZFdvcmtl
clByb2Nlc3MsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi44NzM1MzIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDk1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNYW5h
Z2VyLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitOZXR3b3JrUHJvY2Vzc01hbmFnZXImIE5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6
c2hhcmVkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE5ldHdvcmtQcm9jZXNzTWFuYWdl
ciwgbmV0d29ya1Byb2Nlc3NNYW5hZ2VyLCAoKSk7CisgICAgcmV0dXJuIG5ldHdvcmtQcm9jZXNz
TWFuYWdlcjsKK30KKworTmV0d29ya1Byb2Nlc3NNYW5hZ2VyOjpOZXR3b3JrUHJvY2Vzc01hbmFn
ZXIoKQoreworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6Z2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgUGFzc1JlZlB0cjxNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRS
ZXBseT4gcmVwbHkpCit7CisgICAgQVNTRVJUKCFpZGVudGlmaWVyLmlzTnVsbCgpKTsKKyAgICBB
U1NFUlQocmVwbHkpOworCisgICAgTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3Mg
PSBnZXRPckNyZWF0ZU5ldHdvcmtQcm9jZXNzKGlkZW50aWZpZXIpOworICAgIEFTU0VSVChuZXR3
b3JrUHJvY2Vzcyk7CisgICAgbmV0d29ya1Byb2Nlc3MtPmdldE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbihyZXBseSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NNYW5hZ2VyOjplbnN1cmVEZWZh
dWx0TmV0d29ya1Byb2Nlc3MoKQoreworICAgIGlmIChtX2RlZmF1bHROZXR3b3JrUHJvY2VzcykK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9kZWZhdWx0TmV0d29ya1Byb2Nlc3MgPSBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpjcmVhdGUodGhpcywgIiIpOworICAgIG1fbmV0d29ya1Byb2Nlc3Nlcy5h
cHBlbmQobV9kZWZhdWx0TmV0d29ya1Byb2Nlc3MpOworfQorCitOZXR3b3JrUHJvY2Vzc1Byb3h5
KiBOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OmdldE9yQ3JlYXRlTmV0d29ya1Byb2Nlc3MoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyKQoreworCisgICAgaWYgKE5ldHdvcmtQcm9jZXNzUHJveHkqIG5l
dHdvcmtQcm9jZXNzID0gbmV0d29ya1Byb2Nlc3NXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkK
KyAgICAgICAgcmV0dXJuIG5ldHdvcmtQcm9jZXNzOworCisgICAgUmVmUHRyPE5ldHdvcmtQcm9j
ZXNzUHJveHk+IG5ldHdvcmtQcm9jZXNzID0gTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlKHRo
aXMsIGlkZW50aWZpZXIpOworICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNz
UHRyID0gbmV0d29ya1Byb2Nlc3MuZ2V0KCk7CisKKyAgICBtX25ldHdvcmtQcm9jZXNzZXMuYXBw
ZW5kKG5ldHdvcmtQcm9jZXNzLnJlbGVhc2UoKSk7CisKKyAgICByZXR1cm4gbmV0d29ya1Byb2Nl
c3NQdHI7Cit9CisKK05ldHdvcmtQcm9jZXNzUHJveHkqIE5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6
bmV0d29ya1Byb2Nlc3NXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX25ldHdvcmtQcm9jZXNzZXMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3Nlc1tpXS0+aWRlbnRpZmllcigpID09
IGlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzc2VzW2ldLmdl
dCgpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzTWFu
YWdlcjo6cmVtb3ZlTmV0d29ya1Byb2Nlc3NQcm94eShOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3
b3JrUHJvY2Vzc1Byb3h5KQoreworICAgIHNpemVfdCB2ZWN0b3JJbmRleCA9IG1fbmV0d29ya1By
b2Nlc3Nlcy5maW5kKG5ldHdvcmtQcm9jZXNzUHJveHkpOworICAgIEFTU0VSVCh2ZWN0b3JJbmRl
eCAhPSBub3RGb3VuZCk7CisKKyAgICBtX25ldHdvcmtQcm9jZXNzZXMucmVtb3ZlKHZlY3Rvcklu
ZGV4KTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE4MTZiYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzTWFuYWdlci5o
CkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTmV0d29ya1Byb2Nlc3NNYW5hZ2Vy
X2gKKyNkZWZpbmUgTmV0d29ya1Byb2Nlc3NNYW5hZ2VyX2gKKworI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CitjbGFzcyBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OworY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OworCitjbGFzcyBOZXR3
b3JrUHJvY2Vzc01hbmFnZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtQcm9j
ZXNzTWFuYWdlcik7CitwdWJsaWM6CisgICAgc3RhdGljIE5ldHdvcmtQcm9jZXNzTWFuYWdlciYg
c2hhcmVkKCk7CisKKyAgICB2b2lkIGVuc3VyZURlZmF1bHROZXR3b3JrUHJvY2VzcygpOworCisg
ICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CisgICAgCisgICAgdm9pZCByZW1vdmVOZXR3
b3JrUHJvY2Vzc1Byb3h5KE5ldHdvcmtQcm9jZXNzUHJveHkqKTsKKworcHJpdmF0ZToKKyAgICBO
ZXR3b3JrUHJvY2Vzc01hbmFnZXIoKTsKKworICAgIE5ldHdvcmtQcm9jZXNzUHJveHkqIGdldE9y
Q3JlYXRlTmV0d29ya1Byb2Nlc3MoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICBOZXR3
b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2Vzc1dpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllcik7CisKKyAgICBSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9kZWZh
dWx0TmV0d29ya1Byb2Nlc3M7CisgICAgVmVjdG9yPFJlZlB0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5
PiA+IG1fbmV0d29ya1Byb2Nlc3NlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gTmV0d29ya1Byb2Nlc3NNYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggZDA4
YTg5MS4uZjExMzhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTI3LDcgKzI3LDEwIEBACiAjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01hbmFnZXIuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4
dC5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
UnVuTG9vcC5oPgogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKQEAgLTM2LDEyICszOSwx
NSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBh
c3NSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRl
KCkKK1Bhc3NSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gTmV0d29ya1Byb2Nlc3NQcm94eTo6
Y3JlYXRlKE5ldHdvcmtQcm9jZXNzTWFuYWdlciogbWFuYWdlciwgY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmV0d29ya1Byb2Nlc3NQcm94eSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOZXR3b3JrUHJvY2Vzc1Byb3h5KG1hbmFnZXIsIGlk
ZW50aWZpZXIpKTsKIH0KIAotTmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29ya1Byb2Nlc3NQcm94
eSgpCitOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOZXR3b3JrUHJvY2Vzc1Byb3h5KE5ldHdvcmtQcm9j
ZXNzTWFuYWdlciogbWFuYWdlciwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQorICAgIDogbV9u
ZXR3b3JrUHJvY2Vzc01hbmFnZXIobWFuYWdlcikKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlm
aWVyKQorICAgICwgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzKDApCiB7CiAgICAgUHJv
Y2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zIGxhdW5jaE9wdGlvbnM7CiAgICAgbGF1bmNoT3B0
aW9ucy5wcm9jZXNzVHlwZSA9IFByb2Nlc3NMYXVuY2hlcjo6TmV0d29ya1Byb2Nlc3M7CkBAIC02
MiwxNCArNjgsNDkgQEAgTmV0d29ya1Byb2Nlc3NQcm94eTo6fk5ldHdvcmtQcm9jZXNzUHJveHko
KQogCiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkpCiB7CisgICAgbV9wZW5kaW5nQ29u
bmVjdGlvblJlcGxpZXMuYXBwZW5kKHJlcGx5KTsKIAorICAgIGlmIChtX3Byb2Nlc3NMYXVuY2hl
ci0+aXNMYXVuY2hpbmcoKSkgeworICAgICAgICBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVz
dHMrKzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCksIDAsIENvcmVJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3NDcmFz
aGVkT3JGYWlsZWRUb0xhdW5jaCgpCit7CisgICAgLy8gVGhlIG5ldHdvcmsgcHJvY2VzcyBtdXN0
IGhhdmUgY3Jhc2hlZCBvciBleGl0ZWQsIHNlbmQgYW55IHBlbmRpbmcgc3luYyByZXBsaWVzIHdl
IG1pZ2h0IGhhdmUuCisgICAgd2hpbGUgKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nv
bm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAg
ICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9T
RU5EKSk7CisjZWxzZQorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworI2VuZGlmCisgICAgfQor
CisgICAgLy8gVGVsbCB0aGUgbmV0d29yayBwcm9jZXNzIG1hbmFnZXIgdG8gZm9yZ2V0IGFib3V0
IHRoaXMgbmV0d29yayBwcm9jZXNzIHByb3h5LiBUaGlzIG1heSBjYXVzZSB1cyB0byBiZSBkZWxl
dGVkLgorICAgIG1fbmV0d29ya1Byb2Nlc3NNYW5hZ2VyLT5yZW1vdmVOZXR3b3JrUHJvY2Vzc1By
b3h5KHRoaXMpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBt
ZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGRpZFJl
Y2VpdmVOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGRl
Y29kZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKENvcmVJUEM6
OkNvbm5lY3Rpb24qKQogeworICAgIC8vIE5vdGlmeSBhbGwgV2ViUHJvY2Vzc2VzIHRoYXQgdGhl
IE5ldHdvcmtQcm9jZXNzIGNyYXNoZWQuCisgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYg
Y29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY29udGV4dHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGNvbnRleHRzW2ldLT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzQ3Jhc2hl
ZChtX2lkZW50aWZpZXIpKTsKIAorICAgIC8vIFRoaXMgbWF5IGNhdXNlIHVzIHRvIGJlIGRlbGV0
ZWQuCisgICAgbmV0d29ya1Byb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpOwogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBD
OjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlEKQpAQCAtODIsNiArMTIzLDIwIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3luY01lc3NhZ2VTZW5kVGltZWRPdXQoQ29yZUlQQzo6
Q29ubmVjdGlvbiopCiAKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBj
b25uZWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25S
ZXBsaWVzLmlzRW1wdHkoKSk7CisKKyAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5l
Y3Rpb24gcmVwbHkuCisgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nv
bm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHJl
cGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgp
LCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworI2VuZGlmCit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNo
aW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29u
bmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOwpAQCAtMTAz
LDYgKzE1OCwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGlu
ZyhQcm9jZXNzTGF1bmNoZXIqLCBDb3JlSVBDOjpDb25uZWN0aQogCiAgICAgLy8gSW5pdGlhbGl6
ZSB0aGUgbmV0d29yayBob3N0IHByb2Nlc3MuCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6SW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKHBhcmFtZXRlcnMp
LCAwKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBlbmRpbmdDb25uZWN0
aW9uUmVxdWVzdHM7ICsraSkKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSwgMCk7
CisgICAgCisgICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzID0gMDsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMWRiNWQ5OS4uNTliNThjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaApAQCAtMzUsMjQgKzM1LDM1IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitj
bGFzcyBOZXR3b3JrUHJvY2Vzc01hbmFnZXI7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHkgOiBwdWJsaWMgUmVmQ291
bnRlZDxOZXR3b3JrUHJvY2Vzc1Byb3h5PiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBQ
cm9jZXNzTGF1bmNoZXI6OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
TmV0d29ya1Byb2Nlc3NQcm94eT4gY3JlYXRlKCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TmV0
d29ya1Byb2Nlc3NQcm94eT4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzTWFuYWdlciosIGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllcik7CiAgICAgfk5ldHdvcmtQcm9jZXNzUHJveHkoKTsKIAorICAgIHZv
aWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsK
KworICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfQorCiBwcml2YXRlOgotICAgIE5ldHdvcmtQcm9jZXNzUHJveHkoKTsKKyAgICBOZXR3
b3JrUHJvY2Vzc1Byb3h5KE5ldHdvcmtQcm9jZXNzTWFuYWdlciosIGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllcik7CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKKyAgICB2b2lkIG5ldHdvcmtQcm9j
ZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2goKTsKKwogICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rp
b246OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKik7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlEKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY01lc3NhZ2VTZW5k
VGltZWRPdXQoQ29yZUlQQzo6Q29ubmVjdGlvbiopOwogCisgICAgLy8gTWVzc2FnZSBoYW5kbGVy
cworICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKENvcmVJUEM6
OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVy
Jik7CisgICAgdm9pZCBkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25z
dCBDb3JlSVBDOjpBdHRhY2htZW50Jik7CisgICAgCiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpD
bGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hl
ciosIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCkBAIC02MSw3ICs3MiwxMyBA
QCBwcml2YXRlOgogCiAgICAgLy8gVGhlIHByb2Nlc3MgbGF1bmNoZXIgZm9yIHRoZSBuZXR3b3Jr
IHByb2Nlc3MuCiAgICAgUmVmUHRyPFByb2Nlc3NMYXVuY2hlcj4gbV9wcm9jZXNzTGF1bmNoZXI7
CisgICAgCisgICAgTmV0d29ya1Byb2Nlc3NNYW5hZ2VyKiBtX25ldHdvcmtQcm9jZXNzTWFuYWdl
cjsKKyAgICAKKyAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwogCisgICAgdW5zaWduZWQgbV9udW1Q
ZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzOworICAgIERlcXVlPFJlZlB0cjxNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4g
PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMzc5YjEwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwyOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
IyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKKworbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSB7
CisgICAgRGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoQ29yZUlQQzo6QXR0
YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikKK30KKworI2VuZGlmIC8vIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXgg
MWNiZTM0NS4uYTAyOGNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNw
cApAQCAtNjksNiArNjksMTAgQEAKICNpbmNsdWRlICJXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94
eS5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzTWFuYWdlci5oIgorI2VuZGlmCisKICNpZiBVU0UoU09VUCkKICNpbmNsdWRl
ICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIgogI2VuZGlmCkBAIC03Nyw2ICs4MSw3IEBA
CiAjaW5jbHVkZSAiV2ViVmlicmF0aW9uUHJveHkuaCIKICNlbmRpZgogCisKICNpZm5kZWYgTkRF
QlVHCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2VuZGlmCkBAIC0z
MzYsNyArMzQxLDcgQEAgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYkNvbnRleHQ6OmNy
ZWF0ZU5ld1dlYlByb2Nlc3MoKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAg
aWYgKG1fdXNlc05ldHdvcmtQcm9jZXNzKQotICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzcygp
OworICAgICAgICBOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLmVuc3VyZURlZmF1bHRO
ZXR3b3JrUHJvY2VzcygpOwogI2VuZGlmCiAKICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBw
cm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUodGhpcyk7CkBAIC00MzUsMTYgKzQ0MCw2
IEBAIHZvaWQgV2ViQ29udGV4dDo6d2FybUluaXRpYWxQcm9jZXNzKCkKICAgICBtX2hhdmVJbml0
aWFsRW1wdHlQcm9jZXNzID0gdHJ1ZTsKIH0KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Ci12b2lkIFdlYkNvbnRleHQ6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkKLXsKLSAgICBpZiAobV9u
ZXR3b3JrUHJvY2VzcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9uZXR3b3JrUHJvY2VzcyA9
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZSgpOwotfQotI2VuZGlmCi0KIHZvaWQgV2ViQ29u
dGV4dDo6ZW5hYmxlUHJvY2Vzc1Rlcm1pbmF0aW9uKCkKIHsKICAgICBtX3Byb2Nlc3NUZXJtaW5h
dGlvbkVuYWJsZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5k
ZXggY2VlNjg5Yy4uZTNmNmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5o
CkBAIC00NiwxMCArNDYsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBEb3dubG9hZFByb3h5OwpAQCAtMjU3LDEwICsyNTMsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBwbGF0Zm9ybUludmFsaWRhdGVDb250ZXh0
KCk7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIHZvaWQgZW5zdXJlTmV0d29y
a1Byb2Nlc3MoKTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgZ2V0UGFz
dGVib2FyZFR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMpOwogICAgIHZvaWQgZ2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcyk7CkBAIC0zOTUsNyArMzg3LDYgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fcHJvY2Vzc1Rlcm1pbmF0aW9uRW5hYmxlZDsKIAogI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCi0gICAgUmVmUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IG1fbmV0
d29ya1Byb2Nlc3M7CiAgICAgYm9vbCBtX3VzZXNOZXR3b3JrUHJvY2VzczsKICNlbmRpZgogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBh
MzhlMjNhLi5jNjI0MDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcApAQCAtNDUsNiArNDUsMTAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWFuYWdlci5oIgorI2VuZGlmCisK
ICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiU2ltcGxlUERGUGx1Z2luLmgiCiAjaWYgRU5B
QkxFKFBERktJVF9QTFVHSU4pCkBAIC00MDEsNiArNDA1LDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpnZXRTaGFyZWRXb3JrZXJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIC8qIHVy
bCAqLywKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQogCisjaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBQYXNzUmVmUHRyPE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5PiByZXBseSkKK3sKKyAgICBOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgp
LmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihpZGVudGlmaWVyLCByZXBseSk7Cit9CisjZW5k
aWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKwogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRp
ZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6
Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIGlmIChtX2NvbnRleHQtPmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdl
SUQsIGRlY29kZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CmluZGV4IGMzMTFjNGYuLmRkYmNmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKQEAgLTE1Myw2ICsxNTMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
R2V0U2l0ZXNXaXRoUGx1Z2luRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGlkQ2xlYXJQbHVnaW5TaXRlRGF0YSh1aW50NjRf
dCBjYWxsYmFja0lEKTsKICNlbmRpZgorI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisgICAg
dm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CisjZW5kaWYKICNpZiBFTkFCTEUoU0hBUkVEX1dP
UktFUl9QUk9DRVNTKQogICAgIHZvaWQgZ2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb24o
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTaGFyZWRXb3JrZXJQcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5Pik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDM5NmExNjYuLjQzYmIyMGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbgpAQCAtNDUsNiArNDUsOSBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzUHJveHkgewogICAg
IHZvaWQgRGlkR2V0U2l0ZXNXaXRoUGx1Z2luRGF0YShWZWN0b3I8V1RGOjpTdHJpbmc+IHNpdGVz
LCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHZvaWQgRGlkQ2xlYXJQbHVnaW5TaXRlRGF0YSh1
aW50NjRfdCBjYWxsYmFja0lEKQogI2VuZGlmCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
KyAgICBHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGOjpTdHJpbmcgaWRlbnRpZmllcikg
LT4gKENvcmVJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkhhbmRsZSkgRGVsYXllZAorI2VuZGlm
CiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKICAgICBHZXRTaGFyZWRXb3JrZXJQ
cm9jZXNzQ29ubmVjdGlvbihXVEY6OlN0cmluZyB1cmwsIFdURjo6U3RyaW5nIG5hbWUpIC0+IChD
b3JlSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5kbGUpIERlbGF5ZWQKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGVlODgxZmQuLjIzOWNlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM0OCw2ICszNDgsMTAgQEAKIAkJM0Y4N0I5QzAxNTg5
NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3NlclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRjg3QjlCRjE1ODk0MEQ4MDA5MEZGNjIgLyog
V2ViQ29sb3JDaG9vc2VyUHJveHkuaCAqLzsgfTsKIAkJNEY2MDE0MzIxNTVDNUFBMjAwMUZCREUw
IC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRGNjAxNDMwMTU1QzVBMzIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3Bv
bnNlTWFwLmggKi87IH07CiAJCTUxMDIxRTlDMTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0
TWVudUNsaWVudE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMDIxRTlCMTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1h
Yy5tbSAqLzsgfTsKKwkJNTEwNUIwRDkxNjJGN0MzQjAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEwNUIwRDcxNjJGN0MzQjAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIuY3BwICovOyB9OworCQk1MTA1QjBEQTE2MkY3QzNCMDBFMjc3MDkgLyog
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNUIwRDgxNjJGN0MzQjAwRTI3NzA5IC8qIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCAqLzsgfTsKKwkJNTEwNUIwREQxNjJGN0U5RDAw
RTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA1QjBEQjE2MkY3RTlEMDBFMjc3MDkgLyogTmV0
d29ya1Byb2Nlc3NNYW5hZ2VyLmNwcCAqLzsgfTsKKwkJNTEwNUIwREUxNjJGN0U5RDAwRTI3NzA5
IC8qIE5ldHdvcmtQcm9jZXNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEwNUIwREMxNjJGN0U5RDAwRTI3NzA5IC8qIE5ldHdvcmtQcm9j
ZXNzTWFuYWdlci5oICovOyB9OwogCQk1MTBDQzg0OTE2MTNDODVDMDBEMDNFRDMgLyogTmV0d29y
a1Byb2Nlc3MuYXBwIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTBDQzgwRTE2MTNDNzk5MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3MuYXBwICovOyB9
OwogCQk1MTBDQzg0RjE2MTNDOTJDMDBEMDNFRDMgLyogTWFpbk1hY1Byb2Nlc3MuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2RkEzMTAxMUUzOTIx
RTAwREIxMzcxIC8qIE1haW5NYWNQcm9jZXNzLmNwcCAqLzsgfTsKIAkJNTEwRkJCOUExMjg4Qzk1
RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRkJCOTgxMjg4Qzk1RTAwQUZGREY0IC8q
IFdlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwICovOyB9OwpAQCAtNDA4LDYgKzQxMiwxMCBAQAog
CQk1MTJGNThGQzEyQTg4QTU0MDA2Mjk1MzAgLyogV0tQcm90ZWN0aW9uU3BhY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkY1OEY0MTJBODhBNTQw
MDYyOTUzMCAvKiBXS1Byb3RlY3Rpb25TcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMzYxODNEMTYzMTI2REEwMEE5OURERSAvKiBDb25u
ZWN0aW9uU3RhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEzNjE4M0IxNjMxMjZEQTAwQTk5RERFIC8qIENvbm5lY3Rpb25TdGFjay5jcHAgKi87
IH07CiAJCTUxMzYxODNFMTYzMTI2REEwMEE5OURERSAvKiBDb25uZWN0aW9uU3RhY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMzYxODNDMTYzMTI2
REEwMEE5OURERSAvKiBDb25uZWN0aW9uU3RhY2suaCAqLzsgfTsKKwkJNTEzQTE2M0MxNjMwODhG
NjAwNUQ3RDIyIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzQTE2M0ExNjMwODhG
NjAwNUQ3RDIyIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OworCQk1MTNBMTYzRDE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTNB
MTYzQjE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmggKi87
IH07CisJCTUxM0ExNjRDMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTNBMTY0OTE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwICovOyB9OworCQk1MTNBMTY0RDE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxM0ExNjRBMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oICovOyB9OwogCQk1MTUzNTY5QzEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFn
ZUNvbnRleHRNZW51Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxNTM1NjlBMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1l
bnVDbGllbnQuY3BwICovOyB9OwogCQk1MTUzNTY5RDEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFn
ZUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTUzNTY5QjEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51
Q2xpZW50LmggKi87IH07CiAJCTUxNTc4QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTU3OEI4MjEy
MDlFQ0VGMDBBMzdDNEEgLyogV2ViRGF0YS5oICovOyB9OwpAQCAtNDI4LDYgKzQzNiw3IEBACiAJ
CTUxODM0NTkyMTM0NTMyRTkwMDkyQjY5NiAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4MzQ1OTAxMzQ1
MzJFODAwOTJCNjk2IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHAgKi87IH07CiAJCTUxODM0
NTkzMTM0NTMyRTkwMDkyQjY5NiAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODM0NTkxMTM0NTMyRTgwMDky
QjY5NiAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuaCAqLzsgfTsKIAkJNTE4M0IzOTIxMzc5RjdC
ODAwRTg3NTRFIC8qIFdlYlByb2Nlc3NTaGltLmR5bGliIGluIENvcHkgV2ViIFByb2Nlc3MgU2hp
bSAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAwMzFGNjEzNzlDQUNCMDBD
OERGRTQgLyogV2ViUHJvY2Vzc1NoaW0uZHlsaWIgKi87IH07CisJCTUxODNEREVDMTYzMEJERkMw
MDhCRTVDNyAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNUIwRDQxNjJGN0E3QTAwRTI3NzA5IC8q
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgKi87IH07CiAJCTUxODcxQjVCMTI3Q0I4OUQw
MEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4
dE1lbnUuY3BwICovOyB9OwogCQk1MTg3MUI1QzEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4
dE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
ODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovOyB9OwogCQk1MThB
Q0FFQTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4QUNBRTkxMkFFRTZCQjAw
QjA0QjgzIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTUwNSw2ICsxNTE0LDEzIEBACiAJCTRGNjAx
NDMwMTU1QzVBMzIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNlTWFwLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NraW5nUmVzcG9uc2VNYXAuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMDMxRjYxMzc5Q0FDQjAwQzhERkU0IC8qIFdlYlByb2Nlc3NT
aGltLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gV2Vi
UHJvY2Vzc1NoaW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTUxMDIxRTlCMTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvbnRleHRNZW51Q2xp
ZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTA1QjBENDE2MkY3QTdB
MDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA7IHBhdGgg
PSBOZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxMDVCMEQ1MTYyRjdBN0EwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmg7IHBhdGggPSBOZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTA1QjBENzE2MkY3QzNCMDBFMjc3MDkg
LyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcDsg
cGF0aCA9IE5ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMDVCMEQ4MTYyRjdDM0IwMEUyNzcwOSAvKiBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaDsgcGF0aCA9IE5ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MTA1QjBEQjE2MkY3RTlEMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NNYW5hZ2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMDVCMERDMTYyRjdF
OUQwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxMDVCMEYzMTYzMDg3MkUwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMENDN0REMTYxMzhFMjkwMEQwM0VEMyAvKiBO
ZXR3b3JrUHJvY2Vzc01haW5NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBOZXR3b3JrUHJvY2Vzc01haW5NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxMENDN0RGMTYxMzhFMjkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzcy5jcHA7IHBh
dGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxMENDN0UwMTYxMzhFMjkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzcy5oOyBwYXRo
ID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1NzMsNiArMTU4OSwxMSBAQAogCQk1MTJGNThGNDEyQTg4QTU0MDA2Mjk1MzAg
LyogV0tQcm90ZWN0aW9uU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tQcm90ZWN0aW9uU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEzNjE4
M0IxNjMxMjZEQTAwQTk5RERFIC8qIENvbm5lY3Rpb25TdGFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25uZWN0aW9uU3RhY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTM2MTgzQzE2MzEyNkRBMDBBOTlEREUgLyogQ29ubmVjdGlvblN0
YWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbm5lY3Rpb25TdGFjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTNBMTYzQTE2MzA4OEY2MDA1RDdEMjIg
LyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEzQTE2M0IxNjMwODhGNjAwNUQ3
RDIyIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTEzQTE2NDkxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTEzQTE2NEExNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTNB
MTY0QjE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW47IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE1MzU2OUExMjkxQjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYWdlQ29udGV4dE1lbnVD
bGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTUzNTY5QjEyOTFCMUQy
MDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTU3OEI4MjEyMDlFQ0VGMDBBMzdDNEEgLyogV2ViRGF0YS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEYXRhLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yOTI0LDEwICsyOTQ1LDI0IEBACiAJCQluYW1lID0gY2Y7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk1MTA1QjBEMjE2MkY3QTVFMDBFMjc3MDkg
LyogTmV0d29yayAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJNTEwNUIwRDcxNjJGN0MzQjAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIuY3BwICovLAorCQkJCTUxMDVCMEQ4MTYyRjdDM0IwMEUyNzcwOSAvKiBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmggKi8sCisJCQkJNTEwNUIwRDQxNjJGN0E3QTAwRTI3NzA5
IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNTEwNUIwRDUxNjJGN0E3
QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oICovLAorCQkJKTsKKwkJCW5h
bWUgPSBOZXR3b3JrOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNTEwQ0M3
REExNjEzOEUwMTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1MTBDQzdEQzE2MTM4RTI5MDBEMDNFRDMgLyog
bWFjICovLAorCQkJCTUxM0ExNjQ5MTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAgKi8sCisJCQkJNTEzQTE2NEExNjMwQTlCRjAwNUQ3RDIyIC8qIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggKi8sCisJCQkJNTEzQTE2NEIxNjMwQTlCRjAw
NUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluICovLAog
CQkJCTUxMENDN0RGMTYxMzhFMjkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5jcHAgKi8sCiAJ
CQkJNTEwQ0M3RTAxNjEzOEUyOTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzLmggKi8sCiAJCQkJ
NTFBOEE2MTcxNjI3RjVCQjAwMEQ5MEU5IC8qIE5ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluICov
LApAQCAtMjk1MCw4ICsyOTg1LDExIEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCTUxNjMxOTkzMTYyODk4MEUwMEUyMkYwMCAvKiBtYWMgKi8sCisJCQkJNTEwNUIw
REIxNjJGN0U5RDAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzTWFuYWdlci5jcHAgKi8sCisJCQkJ
NTEwNUIwREMxNjJGN0U5RDAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzTWFuYWdlci5oICovLAog
CQkJCTUxMENDN0VBMTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCAq
LywKIAkJCQk1MTBDQzdFQjE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5o
ICovLAorCQkJCTUxMDVCMEYzMTYzMDg3MkUwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluICovLAogCQkJKTsKIAkJCXBhdGggPSBOZXR3b3JrOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTMxMTgsNiArMzE1Niw3IEBACiAJCQkJNTFBOUUwRkIxMzE1Q0Mw
RTAwOUU3MDMxIC8qIEtleVZhbHVlU3RvcmFnZSAqLywKIAkJCQkxQTZGQTAxQzExRTE1MjYzMDBE
QjEzNzEgLyogbWFjICovLAogCQkJCTMzRDNBM0JEMTMzOTYwOTgwMDcwOUJFNCAvKiBNZWRpYUNh
Y2hlICovLAorCQkJCTUxMDVCMEQyMTYyRjdBNUUwMEUyNzcwOSAvKiBOZXR3b3JrICovLAogCQkJ
CTMxMDk5OTc0MTQ2QzhBQTgwMDI5REVCOSAvKiBOb3RpZmljYXRpb25zIChVc2VyKSAqLywKIAkJ
CQkxQTZGQjdBQTExRTY0QjQ5MDBEQjEzNzEgLyogUGx1Z2lucyAqLywKIAkJCQkzMzM2NzYyQjEz
MEM5OTc4MDA2QzlERTIgLyogUmVzb3VyY2VDYWNoZSAqLywKQEAgLTQwMDcsNiArNDA0Niw4IEBA
CiAJCQkJMUFBNTc2MDAxNDk2QjdDMDAwQTRFRTA2IC8qIEV2ZW50RGlzcGF0Y2hlck1lc3NhZ2Vz
LmggKi8sCiAJCQkJNTFBQ0M5MzQxNjI4MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQk1MUFDQzkzNTE2MjgwNjQ4MDAzNDI1NTAgLyogTmV0
d29ya1Byb2Nlc3NNZXNzYWdlcy5oICovLAorCQkJCTUxM0ExNjNBMTYzMDg4RjYwMDVEN0QyMiAv
KiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQk1MTNBMTYz
QjE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmggKi8sCiAJ
CQkJMUEyRDg0MzcxMjdGNjVENTAwMUVCOTYyIC8qIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQTJEODQzODEyN0Y2NUQ1MDAxRUI5NjIgLyogTlBP
YmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlcy5oICovLAogCQkJCTFBOEVGOTZDMTI1MkFGNkIw
MEY3MDY3RiAvKiBQbHVnaW5Db250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApA
QCAtNDY5OCw2ICs0NzM5LDEwIEBACiAJCQkJMUEyMzI4RkYxNjJDODY2QTAwRDgyRjdBIC8qIE1l
c3NhZ2VFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTIzMjkwMzE2MkM4NjczMDBEODJG
N0EgLyogTWVzc2FnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMzYxODNFMTYzMTI2
REEwMEE5OURERSAvKiBDb25uZWN0aW9uU3RhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMDVC
MERBMTYyRjdDM0IwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MTA1QjBERTE2MkY3RTlEMDBFMjc3MDkgLyogTmV0d29ya1By
b2Nlc3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTNBMTYzRDE2MzA4OEY2MDA1RDdE
MjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MTNBMTY0RDE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtNTY0NCw2ICs1Njg5LDExIEBACiAJCQkJMUEyMzI4RkUxNjJD
ODY2QTAwRDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
MjMyOTAyMTYyQzg2NzMwMEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MTM2MTgzRDE2MzEyNkRBMDBBOTlEREUgLyogQ29ubmVjdGlvblN0YWNrLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTUxMDVCMEQ5MTYyRjdDM0IwMEUyNzcwOSAvKiBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMDVCMEREMTYy
RjdFOUQwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTEzQTE2M0MxNjMwODhGNjAwNUQ3RDIyIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEzQTE2NEMxNjMwQTlCRjAwNUQ3
RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTUxODNEREVDMTYzMEJERkMwMDhCRTVDNyAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NWI3ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorCisjaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIqIG1hbmFnZXIsIGNvbnN0IFN0cmluZyYgcHJvY2Vzc0lkZW50aWZpZXIs
IENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCisg
ICAgOiBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIobWFuYWdlcikKKyAgICAsIG1f
aWRlbnRpZmVyKHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIG1fY29ubmVjdGlvbiA9IENvcmVJ
UEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZp
ZXIsIHRoaXMsIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJ1bkxvb3AoKSk7CisgICAgbV9jb25uZWN0
aW9uLT5vcGVuKCk7Cit9CisKK05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6fk5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpCit7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpk
aWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlE
LCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpCit7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENv
cmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImLCBPd25QdHI8Q29yZUlQ
Qzo6TWVzc2FnZUVuY29kZXI+JikKK3sKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OmRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKQoreworICAgIC8vIFRoZSBOZXR3b3Jr
UHJvY2VzcyBjcmFzaGVkLgorICAgIFJlZlB0cjxOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24+IHBy
b3RlY3Rvcih0aGlzKTsKKyAgICAKKyAgICBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXItPnJlbW92ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbih0aGlzKTsKKyAgICBtX25ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXItPm5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChtX2lkZW50aWZl
cik7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCkKK3sKK30K
KworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjg3MmQzNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25faAorI2RlZmlu
ZSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25faAorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjsKKworY2xhc3MgTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uPiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24+IGNyZWF0ZShOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBtYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHByb2Nlc3NJZGVu
dGlmaWVyLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlm
aWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24obWFuYWdlciwgcHJvY2Vzc0lkZW50aWZpZXIsIGNvbm5lY3Rpb25JZGVudGlmaWVy
KSk7CisgICAgfQorICAgIH5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICAKKyAgICBj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZlcjsgfQor
ICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nv
bm5lY3Rpb24uZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlciosIGNvbnN0IFN0cmluZyYgcHJvY2Vz
c0lkZW50aWZpZXIsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOworCisgICAgLy8g
Q29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6
Ok1lc3NhZ2VEZWNvZGVyJik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNz
YWdlRGVjb2RlciYsIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4mKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2xvc2UoQ29yZUlQQzo6Q29ubmVjdGlvbiopOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6
Ok1lc3NhZ2VJRCk7CisKKyAgICAvLyBUaGUgY29ubmVjdGlvbiBmcm9tIHRoZSB3ZWIgcHJvY2Vz
cyB0byB0aGUgbmV0d29yayBwcm9jZXNzLgorICAgIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9u
PiBtX2Nvbm5lY3Rpb247CisKKyAgICBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBt
X25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI7CisKKyAgICBTdHJpbmcgbV9pZGVudGlm
ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCisKKworI2VuZGlmIC8vIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZmU1MDUwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNw
cApAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCIKKworI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXI6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIoKQoreworfQorCitOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjp+TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlcigp
Cit7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6ZW5zdXJlRGVm
YXVsdENvbm5lY3Rpb24oKQoreworICAgIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigiIik7
Cit9CisKK05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
TWFuYWdlcjo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgbmV0d29y
a1Byb2Nlc3NJZGVudGlmaWVyKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9uZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX25ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbnNbaV0tPmlkZW50aWZpZXIoKSA9PSBuZXR3b3JrUHJvY2Vzc0lk
ZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25z
W2ldLmdldCgpOworICAgIH0KKworICAgIENvcmVJUEM6OkF0dGFjaG1lbnQgZW5jb2RlZENvbm5l
Y3Rpb25JZGVudGlmaWVyOworCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbihuZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OlJlcGx5KGVuY29kZWRDb25uZWN0
aW9uSWRlbnRpZmllciksIDApKQorICAgICAgICByZXR1cm4gMDsKKworI2lmIFBMQVRGT1JNKE1B
QykKKyAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlm
aWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpOworICAgIGlmIChDb3JlSVBD
OjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlm
CisKKyAgICBSZWZQdHI8TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uPiBuZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24gPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBuZXR3b3Jr
UHJvY2Vzc0lkZW50aWZpZXIsIGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICBtX25ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik7CisgICAg
aWYgKG5ldHdvcmtQcm9jZXNzSWRlbnRpZmllci5pc0VtcHR5KCkpCisgICAgICAgIG1fZGVmYXVs
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9IG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKKwor
ICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faWRlbnRpZmllcnNBbmRDb25uZWN0
aW9uc011dGV4KTsKKyAgICAgICAgQVNTRVJUKCFtX2lkZW50aWZpZXJzQW5kQ29ubmVjdGlvbnMu
Y29udGFpbnMobmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5pZGVudGlmaWVyKCkpKTsKKworICAg
ICAgICBtX2lkZW50aWZpZXJzQW5kQ29ubmVjdGlvbnMuc2V0KG5ldHdvcmtQcm9jZXNzSWRlbnRp
ZmllciwgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkpOworICAgIH0KKwor
ICAgIHJldHVybiBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uZ2V0KCk7Cit9CisKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cmVtb3ZlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiogbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKQor
eworICAgIHNpemVfdCB2ZWN0b3JJbmRleCA9IG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9ucy5m
aW5kKG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik7CisgICAgQVNTRVJUKHZlY3RvckluZGV4ICE9
IG5vdEZvdW5kKTsKKworICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faWRlbnRp
ZmllcnNBbmRDb25uZWN0aW9uc011dGV4KTsKKyAgICAgICAgQVNTRVJUKG1faWRlbnRpZmllcnNB
bmRDb25uZWN0aW9ucy5jb250YWlucyhuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPmlkZW50aWZp
ZXIoKSkpOworICAgICAgICAKKyAgICAgICAgbV9pZGVudGlmaWVyc0FuZENvbm5lY3Rpb25zLnJl
bW92ZShuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPmlkZW50aWZpZXIoKSk7CisgICAgfQorCisg
ICAgaWYgKG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9PSBtX2RlZmF1bHROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24pIHsKKyAgICAgICAgQVNTRVJUKG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi0+
aWRlbnRpZmllcigpLmlzRW1wdHkoKSk7CisgICAgICAgIG1fZGVmYXVsdE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbiA9IDA7CisgICAgfQorCisgICAgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25z
LnJlbW92ZSh2ZWN0b3JJbmRleCk7CisKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoY29uc3QgU3RyaW5nJiBuZXR3b3JrUHJv
Y2Vzc0lkZW50aWZpZXIpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faWRlbnRpZmllcnNB
bmRDb25uZWN0aW9uc011dGV4KTsKKyAgICBDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9u
ID0gbV9pZGVudGlmaWVyc0FuZENvbm5lY3Rpb25zLmdldChuZXR3b3JrUHJvY2Vzc0lkZW50aWZp
ZXIpLmdldCgpOworCisgICAgLy8gSXQncyBPSyBmb3IgY29ubmVjdGlvbiB0byBiZSBudWxsIGhl
cmU7IGl0IHdpbGwgaGFwcGVuIGlmIHRoaXMgd2ViIHByb2Nlc3MgZG9lc24ndCBrbm93CisgICAg
Ly8gYW55dGhpbmcgYWJvdXQgdGhlIG5ldHdvcmsgcHJvY2VzcyB0aGF0IGNyYXNoZWQuCisgICAg
aWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25uZWN0aW9uLT5wb3N0
Q29ubmVjdGlvbkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmYyMzVmMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oCkBAIC0wLDAg
KzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdl
cl9oCisjZGVmaW5lIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXJfaAorCisjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CisgICAgICAgIAorY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uTWFuYWdlcik7CitwdWJsaWM6CisgICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
TWFuYWdlcigpOworICAgIH5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCk7CisKKyAg
ICBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qIGRlZmF1bHRDb25uZWN0aW9uKCkgeyByZXR1cm4g
bV9kZWZhdWx0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmdldCgpOyB9CisgICAgdm9pZCBlbnN1
cmVEZWZhdWx0Q29ubmVjdGlvbigpOworCisgICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKiBn
ZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBuZXR3b3JrUHJvY2Vzc0lk
ZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3ZlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbiopOworCisgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQo
Y29uc3QgU3RyaW5nJiBuZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIpOworICAgIAorcHJpdmF0ZToK
KyAgICBSZWZQdHI8TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uPiBtX2RlZmF1bHROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb247CisgICAgVmVjdG9yPFJlZlB0cjxOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24+ID4gbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25zOworCisgICAgTXV0ZXggbV9pZGVudGlm
aWVyc0FuZENvbm5lY3Rpb25zTXV0ZXg7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxDb3Jl
SVBDOjpDb25uZWN0aW9uPiA+IG1faWRlbnRpZmllcnNBbmRDb25uZWN0aW9uczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
KworI2VuZGlmIC8vIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZDlkMTRlOS4uZTM0YWI2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0yNTYsNiArMjU2LDkg
QEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWUKICAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
c2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJz
LnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQorICAgIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5lbnN1cmVE
ZWZhdWx0Q29ubmVjdGlvbigpOworI2VuZGlmCiAgICAgc2V0VGVybWluYXRpb25UaW1lb3V0KHBh
cmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0KTsKIH0KIApAQCAtMTAyNCw2ICsxMDI3LDEzIEBA
IHZvaWQgV2ViUHJvY2Vzczo6cG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShjb25zdCBDb3JlSVBD
OjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlCiAgICAgaW5qZWN0ZWRCdW5kbGUtPmRpZFJlY2VpdmVN
ZXNzYWdlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keS5nZXQoKSk7CiB9CiAKKyNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQordm9pZCBXZWJQcm9jZXNzOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIGNvbnN0IFN0cmluZyYgbmV0d29ya1Byb2Nlc3NJZGVudGlm
aWVyKQoreworICAgIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5uZXR3b3JrUHJv
Y2Vzc0NyYXNoZWQobmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKTsKK30KKyNlbmRpZgorCiAjaWYg
RU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogdm9pZCBXZWJQcm9jZXNzOjpwbHVnaW5Qcm9jZXNzQ3Jh
c2hlZChDb3JlSVBDOjpDb25uZWN0aW9uKiwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA5YTEzZWU4Li42ZGM2N2U4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNzEsNiArNzEsMTAg
QEAgUVRfRU5EX05BTUVTUEFDRQogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCIK
ICNlbmRpZgogCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShQTFVHSU5f
UFJPQ0VTUykKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCIKICNl
bmRpZgpAQCAtMjI4LDcgKzIzMiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0U2l0ZXNXaXRo
UGx1Z2luRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGx1Z2luUGF0aHMsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwogICAgIHZvaWQgY2xlYXJQbHVnaW5TaXRlRGF0YShjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGx1Z2luUGF0aHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywgdWludDY0X3Qg
ZmxhZ3MsIHVpbnQ2NF90IG1heEFnZUluU2Vjb25kcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAj
ZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisgICAgdm9pZCBuZXR3
b3JrUHJvY2Vzc0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlvbiosIGNvbnN0IFN0cmluZyYgbmV0
d29ya1Byb2Nlc3NJZGVudGlmaWVyKTsKKyNlbmRpZgogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VT
UykKICAgICB2b2lkIHBsdWdpblByb2Nlc3NDcmFzaGVkKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwogI2VuZGlmCkBAIC0zMzUsNiArMzQyLDkgQEAgcHJp
dmF0ZToKICAgICAKICAgICBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAKKyNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQorICAgIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXIgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOworI2VuZGlmCiAjaWYgRU5BQkxF
KFBMVUdJTl9QUk9DRVNTKQogICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciBtX3Bs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDM3ODc5MmYuLmYyMzI1
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTYzLDYgKzYzLDExIEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgewogICAgIEdl
dFNpdGVzV2l0aFBsdWdpbkRhdGEoVmVjdG9yPFdURjo6U3RyaW5nPiBwbHVnaW5QYXRocywgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKICAgICBDbGVhclBsdWdpblNpdGVEYXRhKFZlY3RvcjxXVEY6OlN0
cmluZz4gcGx1Z2luUGF0aHMsIFZlY3RvcjxXVEY6OlN0cmluZz4gc2l0ZXMsIHVpbnQ2NF90IGZs
YWdzLCB1aW50NjRfdCBtYXhBZ2VJblNlY29uZHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAjZW5k
aWYKKworI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisgICAgTmV0d29ya1Byb2Nlc3NDcmFz
aGVkKFN0cmluZyBuZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIpIERpc3BhdGNoT25Db25uZWN0aW9u
UXVldWUKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogICAgIFBsdWdpblBy
b2Nlc3NDcmFzaGVkKFN0cmluZyBwbHVnaW5Qcm9jZXNzKSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1
ZXVlCiAjZW5kaWYK
</data>
<flag name="review"
          id="182920"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169702</attachid>
            <date>2012-10-19 14:59:07 -0700</date>
            <delta_ts>2013-01-04 00:51:05 -0800</delta_ts>
            <desc>Patch v4 - With changes, should get a new once-over</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>64011</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3ZTBlMzM2Li4xYTlmODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTIx
IEBACiAyMDEyLTEwLTE5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAorICAg
ICAgICBBZGQgaW5mcmFzdHJ1Y3R1cmUgZm9yIE5ldHdvcmtQcm9jZXNzIG1hbmFnZW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5ODE3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIHRoZSBXZWJQcm9jZXNzIGl0c2VsZiByZXF1ZXN0aW5nIGEgY29ubmVjdGlvbiB0byB0aGUg
ZGVmYXVsdCBOZXR3b3JrUHJvY2Vzcy4KKworICAgICAgICBBZGQgcHJvcGVyIGhhbmRsaW5nIG9m
IGNyYXNoZXMgc28gYW55IG9mIHRoZSBXZWIvTmV0d29yay9VSSBwcm9jZXNzZXMgY3Jhc2ggdGhl
IG90aGVycyB0YWtlIGFwcHJvcHJpYXRlIGFjdGlvbi4KKworICAgICAgICBQcm9qZWN0IGZpbGUg
c3R1ZmYgYW5kIGdlbmVyYWwgbWVzc2FnaW5nIGNoYW5nZXM6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oOgorICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBQbGF0
Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAg
ICAoQ29yZUlQQzo6Y2FsbE1lbWJlckZ1bmN0aW9uKTogQWRkIHNvbWUgbmV3IHJlcXVpcmVkIHRl
bXBsYXRlcy4KKworICAgICAgICBXZWJDb250ZXh0IG5vdyBkb2VzIG11Y2ggbGVzcyBvZiB0aGlz
IHN0dWZmOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvbnRleHQpOgorCisgICAgICAgIFVJUHJv
Y2VzcyBub3cgaGFzIGEgcHJvY2VzcyBtYW5hZ2VyIHRvIGhhbmRsZSBtb3N0IG9mIHRoaXM6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzTWFuYWdlcjo6
c2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NNYW5hZ2VyOjpOZXR3b3Jr
UHJvY2Vzc01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc01hbmFnZXI6
OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzTWFuYWdlcjo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc01hbmFnZXI6OnJlbW92ZU5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzTWFuYWdlci5oOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKE5ldHdvcmtQcm9jZXNzTWFuYWdlcik6CisKKyAgICAgICAgRmxl
c2ggb3V0IHRoZSBOZXR3b3JrUHJvY2Vzc1Byb3h5IHRvIGhhbmRsZSBjcmVhdGluZyB0aGVzZSBj
b25uZWN0aW9ucyBiZXR3ZWVuIE5ldHdvcmsgYW5kIFdlYiBQcm9jZXNzZXM6CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29y
a1Byb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKE5ldHdvcmtQcm9jZXNzUHJveHkpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAg
ICAgQWRkIGEgY2xhc3MgcmVwcmVzZW50aW5nIGEgY29ubmVjdGlvbiBmcm9tIGEgTmV0d29ya1By
b2Nlc3MgdG8gYSBwYXJ0aWN1bGFyIFdlYlByb2Nlc3M6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2Vp
dmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb25uZWN0aW9uKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoK
KworICAgICAgICBBZGQgdGhlIGFiaWxpdHkgZm9yIGEgTmV0d29ya1Byb2Nlc3MgdG8gY3JlYXRl
IGEgY29ubmVjdGlvbiBmb3IgYSBkaWZmZXJlbnQgcHJvY2Vzcywgd2hpY2ggaXMgdXNlZCBvbiBi
ZWhhbGYgb2YgV2ViUHJvY2Vzc2VzIGZvciBub3c6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVt
b3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKE5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKworICAgICAgICBGb3J3YXJkIG9uIHRoZSBt
ZXNzYWdlIHRoYXQgYSBXZWJQcm9jZXNzIHdhbnRzIGEgY29ubmVjdGlvbiB0byBhIE5ldHdvcmtQ
cm9jZXNzOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aDoKKyAgICAgICAgKFdlYlByb2Nlc3NQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICBBZGQgYSBjbGFzcyByZXByZXNlbnRp
bmcgdGhlIFdlYlByb2Nlc3NlcyBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3JrUHJvY2VzczoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjp+TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRD
bG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OmNvbm5lY3Rpb24pOgorCisgICAgICAgIEhhdmUgdGhlIFdlYlByb2Nlc3MgbWFrZSBzdXJl
IGl0IGhhcyBhIGNvbm5lY3Rpb24gdG8gdGhlIE5ldHdvcmtQcm9jZXNzLCBldmVuIHRob3VnaCBp
dCBjdXJyZW50bHkgZG9lcyBub3RoaW5nIHdpdGggaXQ6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6bmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJQcm9jZXNz
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKKzIwMTIt
MTAtMTkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCiAgICAgICAgIFJFR1JF
U1NJT04gKHIxMzE2ODYpOiBDcmFzaCBpbiBOU1Rvb2xUaXBNYW5hZ2VyIG1vdXNlRW50ZXJlZFRv
b2xUaXAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNTI3NTI4PiBhbmQgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NzkyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IDlhYjZkYjYuLjM1OTc2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtNDQsNiArNDQsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nl
c3MgXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vz
cy9Eb3dubG9hZHMgXAorICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL05ldHdvcmsgXAogICAgICQo
V2ViS2l0MikvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMgXAogICAgICQoV2ViS2l0MikvVUlQcm9j
ZXNzL1BsdWdpbnMgXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMgXApA
QCAtNTYsNiArNTcsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBEb3dubG9hZFByb3h5
IFwKICAgICBFdmVudERpc3BhdGNoZXIgXAogICAgIE5ldHdvcmtQcm9jZXNzIFwKKyAgICBOZXR3
b3JrUHJvY2Vzc1Byb3h5IFwKICAgICBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlciBcCiAgICAgUGx1
Z2luQ29udHJvbGxlclByb3h5IFwKICAgICBQbHVnaW5Qcm9jZXNzIFwKQEAgLTY5LDYgKzcxLDcg
QEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgV2ViQ29va2llTWFuYWdlciBcCiAgICAgV2Vi
Q29va2llTWFuYWdlclByb3h5IFwKICAgICBXZWJDb25uZWN0aW9uIFwKKyAgICBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyBcCiAgICAgV2ViQ29udGV4dCBcCiAgICAgV2ViRGF0YWJhc2VN
YW5hZ2VyIFwKICAgICBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZkY2UxOAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgiCisKKyNpbmNsdWRlICJDb25uZWN0aW9uU3RhY2suaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgorCisjaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitQYXNzUmVmUHRyPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKENvcmVJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25uZWN0aW9uSWRlbnRpZmllcikpOwor
fQorCitOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRp
ZmllcikKK3sKKyAgICBtX2Nvbm5lY3Rpb24gPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVT
ZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCB0aGlzLCBSdW5Mb29wOjptYWlu
KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2V0T25seVNlbmRNZXNzYWdlc0FzRGlzcGF0Y2hXaGVu
V2FpdGluZ0ZvclN5bmNSZXBseVdoZW5Qcm9jZXNzaW5nU3VjaEFNZXNzYWdlKHRydWUpOworICAg
IG1fY29ubmVjdGlvbi0+b3BlbigpOworfQorCitOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6fk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKK3sKKyAgICBBU1NFUlQoIW1fY29u
bmVjdGlvbik7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJl
Y2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1l
c3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIENvbm5lY3Rpb25TdGFjazo6Q3VycmVudENvbm5lY3Rpb25QdXNoZXIgY3VycmVudENvbm5l
Y3Rpb24oQ29ubmVjdGlvblN0YWNrOjpzaGFyZWQoKSwgY29ubmVjdGlvbik7CisKKyAgICBpZiAo
bWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzPigpKSB7CisgICAgICAgIGRpZFJlY2VpdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29y
ZUlQQzo6TWVzc2FnZURlY29kZXImIGFyZ3VtZW50cywgT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VF
bmNvZGVyPiYgcmVwbHkpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rp
b24qKQoreworICAgIC8vIFByb3RlY3Qgb3Vyc2VsZiBhcyB3ZSBtaWdodCBiZSBvdGhlcndpc2Ug
YmUgZGVsZXRlZCBkdXJpbmcgdGhpcyBmdW5jdGlvbgorICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcz4gcHJvdGVjdG9yKHRoaXMpOworICAgIAorICAgIE5ldHdvcmtQcm9j
ZXNzOjpzaGFyZWQoKS5yZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyh0aGlzKTsK
KyAgICAKKyAgICBtX2Nvbm5lY3Rpb24gPSAwOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlv
biosIENvcmVJUEM6Ok1lc3NhZ2VJRCkKK3sKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNz
YWdlRGVjb2RlciYpCit7CisgICAgLy8gRW1wdHkgZm9yIG5vdyAtIFRoZXJlIGFyZSBubyBtZXNz
YWdlcyB0byBoYW5kbGUuCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNTEzNjAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzX2gKKyNkZWZpbmUgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Nf
aAorCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
OiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4sIENvcmVJ
UEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNyZWF0ZShDb3JlSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIH5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cygpOworCisgICAgQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOworCisgICAg
Ly8gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJ
UEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpN
ZXNzYWdlRGVjb2RlciYsIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4mKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoQ29yZUlQQzo6Q29ubmVjdGlvbiopOworICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJ
UEM6Ok1lc3NhZ2VJRCk7CisKKyAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgorICAgIHZvaWQgZGlk
UmVjZWl2ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwor
CisgICAgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
KworI2VuZGlmIC8vIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYTEwNDdjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBA
IC0wLDAgKzEsMjkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisKK21lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzIHsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAppbmRleCBjNzM4MjQ1Li43ODZlYWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0zMCw3ICszMCwxMSBAQAogCiAjaW5jbHVk
ZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJBdHRhY2htZW50LmgiCisjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTU5LDYgKzYzLDE0IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmll
ciBzZXJ2ZXJJZGVudGlmaWVyCiAgICAgbV91aUNvbm5lY3Rpb24tPm9wZW4oKTsKIH0KIAordm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24pCit7CisgICAgc2l6ZV90IHZl
Y3RvckluZGV4ID0gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuZmluZChjb25uZWN0aW9uKTsKKyAg
ICBBU1NFUlQodmVjdG9ySW5kZXggIT0gbm90Rm91bmQpOworCisgICAgbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbnMucmVtb3ZlKHZlY3RvckluZGV4KTsKK30KKwogYm9vbCBOZXR3b3JrUHJvY2Vzczo6
c2hvdWxkVGVybWluYXRlKCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTcxLDEwICs4Myw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rp
b24qIGNvbm5lY3Rpb24sIENvcmVJUEM6CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENsb3Nl
KENvcmVJUEM6OkNvbm5lY3Rpb24qKQogewotICAgIC8vIEVpdGhlciB0aGUgY29ubmVjdGlvbiB0
byB0aGUgVUlQcm9jZXNzIG9yIGEgY29ubmVjdGlvbiB0byBhIFdlYlByb2Nlc3MgaGFzIGdvbmUg
YXdheS4KLSAgICAvLyBJbiB0aGUgZnV0dXJlIHdlJ2xsIGRvIGFwcHJvcHJpYXRlIGNsZWFudXAg
YW5kIGRlY2lkZSB3aGV0aGVyIG9yIG5vdCB3ZSB3YW50IHRvIGtlZXAKLSAgICAvLyB0aGUgTmV0
d29ya1Byb2Nlc3Mgb3Blbi4KLSAgICAvLyBGb3Igbm93IHdlJ2xsIGFsd2F5cyBjbG9zZSBpdC4K
KyAgICAvLyBUaGUgVUlQcm9jZXNzIGp1c3QgY3Jhc2hlZC4KICAgICBSdW5Mb29wOjpjdXJyZW50
KCktPnN0b3AoKTsKIH0KIApAQCAtOTIsNiArMTAxLDI0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1lCiAgICAgcGxhdGZvcm1Jbml0aWFsaXplKHBhcmFtZXRlcnMpOwogfQogCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCit7CisjaWYg
UExBVEZPUk0oTUFDKQorICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCisgICAgbWFj
aF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKKyAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNr
X3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKKworICAg
IC8vIENyZWF0ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9uLgorICAgIFJlZlB0cjxOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjcmVhdGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQ
b3J0KSk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVs
ZWFzZSgpKTsKKworICAgIENvcmVJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQ
b3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7CisgICAgbV91aUNvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKGNsaWVudFBvcnQpLCAwKTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAppbmRleCA1OTM0N2RhLi41ODI4ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM2LDcgKzM2LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLSAgICAKKworY2xhc3Mg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzIDogQ2hpbGRQcm9jZXNzIHsK
QEAgLTQ2LDYgKzQ3LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBpbml0aWFsaXplKENvcmVJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFdlYkNvcmU6OlJ1bkxvb3AqKTsKIAorICAgIHZvaWQg
cmVtb3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqKTsKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2VzcygpOwogICAgIH5OZXR3
b3JrUHJvY2VzcygpOwpAQCAtNjQsOSArNjcsMTQgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdl
IEhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NNZXNzYWdlKENvcmVJ
UEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJik7CiAgICAgdm9pZCBpbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCk7CiAKICAgICAvLyBUaGUgY29ubmVjdGlvbiB0byB0aGUgVUkgcHJv
Y2Vzcy4KICAgICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV91aUNvbm5lY3Rpb247CisK
KyAgICAvLyBDb25uZWN0aW9ucyB0byBXZWJQcm9jZXNzZXMuCisgICAgVmVjdG9yPFJlZlB0cjxO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gPiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uczsK
KwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDVlNDZh
OGUuLjAyOTUzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw2ICsyNSw5IEBACiBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2VzcyB7CiAgICAgIyBJbml0aWFsaXplcyB0aGUgbmV0d29yayBwcm9j
ZXNzLgogICAgIEluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzIHByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpCisKKyAgICAjIENy
ZWF0ZXMgYSBjb25uZWN0aW9uIGZvciBjb21tdW5pY2F0aW9uIHdpdGggYSBXZWJQcm9jZXNzCisg
ICAgQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9IYW5kbGVNZXNzYWdlLmgKaW5kZXggNzkyZTQ0Yi4uNzc0MDFjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTE5OCw2ICsx
OTgsMTIgQEAgdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oY29uc3QgQXJndW1lbnRzNDxQMSwgUDIs
IFAzLCBQND4mIGFyZ3MsIEFyZ3VtZW50czM8UjEsIFIKIH0KIAogLy8gRGlzcGF0Y2ggZnVuY3Rp
b25zIHdpdGggZGVsYXllZCByZXBseSBhcmd1bWVudHMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0
eXBlbmFtZSBNRiwgdHlwZW5hbWUgUj4KK3ZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbnN0IEFy
Z3VtZW50czAmLCBQYXNzUmVmUHRyPFI+IGRlbGF5ZWRSZXBseSwgQyogb2JqZWN0LCBNRiBmdW5j
dGlvbikKK3sKKyAgICAob2JqZWN0LT4qZnVuY3Rpb24pKGRlbGF5ZWRSZXBseSk7Cit9CisKIHRl
bXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUj4K
IHZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbnN0IEFyZ3VtZW50czE8UDE+JiBhcmdzLCBQYXNz
UmVmUHRyPFI+IGRlbGF5ZWRSZXBseSwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKQEAgLTIx
MSw2ICsyMTcsMTIgQEAgdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oY29uc3QgQXJndW1lbnRzMjxQ
MSwgUDI+JiBhcmdzLCBQYXNzUmVmUHRyPFI+IGRlbGF5ZWRSZXAKIH0KIAogLy8gRGlzcGF0Y2gg
ZnVuY3Rpb25zIHdpdGggY29ubmVjdGlvbiBwYXJhbWV0ZXIuCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
LCB0eXBlbmFtZSBNRj4KK3ZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKENvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24sIGNvbnN0IEFyZ3VtZW50czAmLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQoreworICAg
IChvYmplY3QtPipmdW5jdGlvbikoY29ubmVjdGlvbik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1l
IEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBQMT4KIHZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKENv
bm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IEFyZ3VtZW50czE8UDE+JiBhcmdzLCBDKiBvYmpl
Y3QsIE1GIGZ1bmN0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9NZXNzYWdlSUQuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVz
c2FnZUlELmgKaW5kZXggMjlhMjA1NC4uYTg5ZTY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oCkBAIC0xMDksNiArMTA5LDEyIEBAIGVudW0gTWVzc2Fn
ZUNsYXNzIHsKICAgICAvLyBNZXNzYWdlcyBzZW50IGJ5IHRoZSBVSSBwcm9jZXNzIHRvIHRoZSBu
ZXR3b3JrIHByb2Nlc3MuCiAgICAgTWVzc2FnZUNsYXNzTmV0d29ya1Byb2Nlc3MsCiAKKyAgICAv
LyBNZXNzYWdlcyBzZW50IGJ5IHRoZSBuZXR3b3JrIHByb2Nlc3MgdG8gdGhlIFVJIHByb2Nlc3Mu
CisgICAgTWVzc2FnZUNsYXNzTmV0d29ya1Byb2Nlc3NQcm94eSwKKworICAgIC8vIE1lc3NhZ2Vz
IHNlbnQgYnkgdGhlIHdlYiBwcm9jZXNzIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MuCisgICAgTWVz
c2FnZUNsYXNzTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsCisKICNpZiBFTkFCTEUoU0hB
UkVEX1dPUktFUl9QUk9DRVNTKQogICAgIC8vIE1lc3NhZ2VzIHNlbnQgYnkgdGhlIFVJIHByb2Nl
c3MgdG8gdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2Vzcy4KICAgICBNZXNzYWdlQ2xhc3NTaGFyZWRX
b3JrZXJQcm9jZXNzLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMDBmMTZmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzTWFuYWdlci5jcHAKQEAgLTAsMCArMSw3MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc01hbmFnZXIuaCIKKworI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJv
eHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK05ldHdvcmtQcm9jZXNzTWFuYWdlciYgTmV0
d29ya1Byb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
TmV0d29ya1Byb2Nlc3NNYW5hZ2VyLCBuZXR3b3JrUHJvY2Vzc01hbmFnZXIsICgpKTsKKyAgICBy
ZXR1cm4gbmV0d29ya1Byb2Nlc3NNYW5hZ2VyOworfQorCitOZXR3b3JrUHJvY2Vzc01hbmFnZXI6
Ok5ldHdvcmtQcm9jZXNzTWFuYWdlcigpCit7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NNYW5h
Z2VyOjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4g
cmVwbHkpCit7CisgICAgQVNTRVJUKHJlcGx5KTsKKworICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNz
KCk7CisgICAgQVNTRVJUKG1fbmV0d29ya1Byb2Nlc3MpOworCisgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKHJlcGx5KTsKK30KKwordm9pZCBOZXR3b3Jr
UHJvY2Vzc01hbmFnZXI6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkKK3sKKyAgICBpZiAobV9uZXR3
b3JrUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9uZXR3b3JrUHJvY2VzcyA9IE5l
dHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZSh0aGlzKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vz
c01hbmFnZXI6OnJlbW92ZU5ldHdvcmtQcm9jZXNzUHJveHkoTmV0d29ya1Byb2Nlc3NQcm94eSog
bmV0d29ya1Byb2Nlc3NQcm94eSkKK3sKKyAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzcyk7Cisg
ICAgQVNTRVJUKG5ldHdvcmtQcm9jZXNzUHJveHkgPT0gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSk7
CisgICAgCisgICAgbV9uZXR3b3JrUHJvY2VzcyA9IDA7Cit9CisKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjA4ZDQyMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc01hbmFnZXIuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrUHJvY2Vzc01hbmFnZXJfaAorI2RlZmluZSBO
ZXR3b3JrUHJvY2Vzc01hbmFnZXJfaAorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKK2NsYXNzIE5ldHdvcmtQcm9jZXNz
UHJveHk7CitjbGFzcyBXZWJQcm9jZXNzUHJveHk7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzTWFu
YWdlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmV0d29ya1Byb2Nlc3NNYW5hZ2VyKTsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgTmV0d29ya1Byb2Nlc3NNYW5hZ2VyJiBzaGFyZWQoKTsKKwor
ICAgIHZvaWQgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKKworICAgIHZvaWQgZ2V0TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKKyAgICAKKyAgICB2b2lk
IHJlbW92ZU5ldHdvcmtQcm9jZXNzUHJveHkoTmV0d29ya1Byb2Nlc3NQcm94eSopOworCitwcml2
YXRlOgorICAgIE5ldHdvcmtQcm9jZXNzTWFuYWdlcigpOworCisgICAgUmVmUHRyPE5ldHdvcmtQ
cm9jZXNzUHJveHk+IG1fbmV0d29ya1Byb2Nlc3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIE5ldHdvcmtQcm9jZXNzTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IGQwOGE4OTEuLmQxYTAxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0yNyw3ICsyNywxMCBA
QAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKIAogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldl
YkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL1J1bkxvb3AuaD4KIAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCkBAIC0zNiwx
MiArMzksMTQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1QYXNzUmVmUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IE5ldHdvcmtQcm9jZXNzUHJveHk6
OmNyZWF0ZSgpCitQYXNzUmVmUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IE5ldHdvcmtQcm9jZXNz
UHJveHk6OmNyZWF0ZShOZXR3b3JrUHJvY2Vzc01hbmFnZXIqIG1hbmFnZXIpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBOZXR3b3JrUHJvY2Vzc1Byb3h5KTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE5ldHdvcmtQcm9jZXNzUHJveHkobWFuYWdlcikpOwogfQogCi1OZXR3b3JrUHJvY2Vz
c1Byb3h5OjpOZXR3b3JrUHJvY2Vzc1Byb3h5KCkKK05ldHdvcmtQcm9jZXNzUHJveHk6Ok5ldHdv
cmtQcm9jZXNzUHJveHkoTmV0d29ya1Byb2Nlc3NNYW5hZ2VyKiBtYW5hZ2VyKQorICAgIDogbV9u
ZXR3b3JrUHJvY2Vzc01hbmFnZXIobWFuYWdlcikKKyAgICAsIG1fbnVtUGVuZGluZ0Nvbm5lY3Rp
b25SZXF1ZXN0cygwKQogewogICAgIFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyBsYXVu
Y2hPcHRpb25zOwogICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPSBQcm9jZXNzTGF1bmNo
ZXI6Ok5ldHdvcmtQcm9jZXNzOwpAQCAtNjIsMTQgKzY3LDQ5IEBAIE5ldHdvcmtQcm9jZXNzUHJv
eHk6On5OZXR3b3JrUHJvY2Vzc1Byb3h5KCkKIAogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJl
cGx5KQogeworICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmFwcGVuZChyZXBseSk7CiAK
KyAgICBpZiAobV9wcm9jZXNzTGF1bmNoZXItPmlzTGF1bmNoaW5nKCkpIHsKKyAgICAgICAgbV9u
dW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzKys7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpLCAwLCBDb3JlSVBDOjpEaXNwYXRjaE1lc3Nh
Z2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2goKQoreworICAgIC8v
IFRoZSBuZXR3b3JrIHByb2Nlc3MgbXVzdCBoYXZlIGNyYXNoZWQgb3IgZXhpdGVkLCBzZW5kIGFu
eSBwZW5kaW5nIHN5bmMgcmVwbGllcyB3ZSBtaWdodCBoYXZlLgorICAgIHdoaWxlICghbV9wZW5k
aW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRS
ZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKwor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVu
dCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOworI2Vsc2UKKyAgICAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyNlbmRpZgorICAgIH0KKworICAgIC8vIFRlbGwgdGhlIG5ldHdvcmsgcHJvY2Vz
cyBtYW5hZ2VyIHRvIGZvcmdldCBhYm91dCB0aGlzIG5ldHdvcmsgcHJvY2VzcyBwcm94eS4gVGhp
cyBtYXkgY2F1c2UgdXMgdG8gYmUgZGVsZXRlZC4KKyAgICBtX25ldHdvcmtQcm9jZXNzTWFuYWdl
ci0+cmVtb3ZlTmV0d29ya1Byb2Nlc3NQcm94eSh0aGlzKTsKK30KKwordm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0
aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2Uo
Y29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKikKIHsKKyAgICAvLyBOb3RpZnkg
YWxsIFdlYlByb2Nlc3NlcyB0aGF0IHRoZSBOZXR3b3JrUHJvY2VzcyBjcmFzaGVkLgorICAgIGNv
bnN0IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4
dHMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbnRleHRzLnNpemUoKTsgKytpKQor
ICAgICAgICBjb250ZXh0c1tpXS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpOZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKSk7CiAKKyAgICAvLyBUaGlzIG1heSBjYXVzZSB1
cyB0byBiZSBkZWxldGVkLgorICAgIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVu
Y2goKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCkKQEAgLTgyLDYg
KzEyMiwyMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN5bmNNZXNzYWdlU2VuZFRpbWVk
T3V0KENvcmVJUEM6OkNvbm5lY3Rpb24qKQogCiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29uc3QgQ29yZUlQQzo6
QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKCFtX3BlbmRp
bmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpOworCisgICAgLy8gR3JhYiB0aGUgZmlyc3Qg
cGVuZGluZyBjb25uZWN0aW9uIHJlcGx5LgorICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkg
PSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKworI2lmIFBMQVRGT1JN
KE1BQykKKyAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVu
dGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKKyNlbHNlCisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyNlbmRpZgorfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRp
ZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghbV9jb25uZWN0
aW9uKTsKQEAgLTEwMyw2ICsxNTcsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRG
aW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29ubmVjdGkKIAogICAg
IC8vIEluaXRpYWxpemUgdGhlIG5ldHdvcmsgaG9zdCBwcm9jZXNzLgogICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkluaXRpYWxpemVOZXR3b3JrUHJvY2Vz
cyhwYXJhbWV0ZXJzKSwgMCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9udW1Q
ZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzOyArK2kpCisgICAgICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCksIDApOworICAgIAorICAgIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cyA9
IDA7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDFkYjVkOTku
LjE4NDBhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTM1LDI0ICszNSwzMyBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAorY2xhc3MgTmV0d29ya1Byb2Nlc3NNYW5hZ2VyOwogc3RydWN0IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5IDog
cHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya1Byb2Nlc3NQcm94eT4sIENvcmVJUEM6OkNvbm5lY3Rp
b246OkNsaWVudCwgUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IGNyZWF0ZShOZXR3b3JrUHJvY2Vzc01hbmFn
ZXIqKTsKICAgICB+TmV0d29ya1Byb2Nlc3NQcm94eSgpOwogCisgICAgdm9pZCBnZXROZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOworCiBwcml2YXRlOgot
ICAgIE5ldHdvcmtQcm9jZXNzUHJveHkoKTsKKyAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KE5ldHdv
cmtQcm9jZXNzTWFuYWdlciopOwogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3Jr
UHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogCisgICAgdm9pZCBu
ZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7CisKICAgICAvLyBDb3JlSVBD
OjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2Fn
ZURlY29kZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoQ29yZUlQQzo6Q29ubmVjdGlv
biopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCk7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNN
ZXNzYWdlU2VuZFRpbWVkT3V0KENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKIAorICAgIC8vIE1lc3Nh
Z2UgaGFuZGxlcnMKKyAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNz
YWdlRGVjb2RlciYpOworICAgIHZvaWQgZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYpOworICAgIAogICAgIC8vIFByb2Nlc3NM
YXVuY2hlcjo6Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9j
ZXNzTGF1bmNoZXIqLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIApAQCAtNjIs
NiArNzEsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgcHJvY2VzcyBsYXVuY2hlciBmb3IgdGhl
IG5ldHdvcmsgcHJvY2Vzcy4KICAgICBSZWZQdHI8UHJvY2Vzc0xhdW5jaGVyPiBtX3Byb2Nlc3NM
YXVuY2hlcjsKIAorICAgIE5ldHdvcmtQcm9jZXNzTWFuYWdlciogbV9uZXR3b3JrUHJvY2Vzc01h
bmFnZXI7CisgICAgCisgICAgdW5zaWduZWQgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3Rz
OworICAgIERlcXVlPFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gPiBtX3BlbmRpbmdDb25uZWN0aW9uUmVw
bGllczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc5YjEwOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyOSBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKwor
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSB7CisgICAgRGlkQ3JlYXRlTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRp
ZmllcikKK30KKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggMWNiZTM0NS4uMDlkZmU0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtNjksNiArNjksMTAgQEAKICNp
bmNsdWRlICJXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5oIgogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWFuYWdlci5oIgor
I2VuZGlmCisKICNpZiBVU0UoU09VUCkKICNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQ
cm94eS5oIgogI2VuZGlmCkBAIC0zMzYsNyArMzQwLDcgQEAgUGFzc1JlZlB0cjxXZWJQcm9jZXNz
UHJveHk+IFdlYkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogewogI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKG1fdXNlc05ldHdvcmtQcm9jZXNzKQotICAgICAgICBl
bnN1cmVOZXR3b3JrUHJvY2VzcygpOworICAgICAgICBOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OnNo
YXJlZCgpLmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7CiAjZW5kaWYKIAogICAgIFJlZlB0cjxXZWJQ
cm9jZXNzUHJveHk+IHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZSh0aGlzKTsKQEAg
LTQzNSwxNiArNDM5LDYgQEAgdm9pZCBXZWJDb250ZXh0Ojp3YXJtSW5pdGlhbFByb2Nlc3MoKQog
ICAgIG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MgPSB0cnVlOwogfQogCi0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLXZvaWQgV2ViQ29udGV4dDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKQot
ewotICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX25l
dHdvcmtQcm9jZXNzID0gTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlKCk7Ci19Ci0jZW5kaWYK
LQogdm9pZCBXZWJDb250ZXh0OjplbmFibGVQcm9jZXNzVGVybWluYXRpb24oKQogewogICAgIG1f
cHJvY2Vzc1Rlcm1pbmF0aW9uRW5hYmxlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuaAppbmRleCBjZWU2ODljLi5lM2Y2YTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmgKQEAgLTQ2LDEwICs0Niw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCi0jZW5k
aWYKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIERvd25sb2FkUHJveHk7CkBAIC0yNTcs
MTAgKzI1Myw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9j
ZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2b2lkIHBsYXRmb3JtSW52
YWxpZGF0ZUNvbnRleHQoKTsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgdm9p
ZCBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShNQUMpCiAg
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcyk7CiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJk
UGF0aG5hbWVzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzKTsKQEAgLTM5NSw3
ICszODcsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVk
OwogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBSZWZQdHI8TmV0d29ya1Byb2Nl
c3NQcm94eT4gbV9uZXR3b3JrUHJvY2VzczsKICAgICBib29sIG1fdXNlc05ldHdvcmtQcm9jZXNz
OwogI2VuZGlmCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IGEzOGUyM2EuLjdmYTBkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNYW5hZ2Vy
LmgiCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJTaW1wbGVQREZQbHVn
aW4uaCIKICNpZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKQEAgLTQwMSw2ICs0MDUsMTMgQEAgdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25uZWN0aW9uKGNvbnN0
IFN0cmluZyYgLyogdXJsICovLAogfQogI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSX1BS
T0NFU1MpCiAKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQordm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiBy
ZXBseSkKK3sKKyAgICBOZXR3b3JrUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLmdldE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbihyZXBseSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKKwogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENv
cmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGlmIChtX2NvbnRleHQtPmRp
c3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGRlY29kZXIpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGMzMTFjNGYuLjI5ZGM1NDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTE1Myw2
ICsxNTMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkR2V0U2l0ZXNXaXRoUGx1Z2luRGF0YShj
b25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZv
aWQgZGlkQ2xlYXJQbHVnaW5TaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsKICNlbmRpZgor
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOworI2VuZGlmCiAjaWYgRU5BQkxFKFNI
QVJFRF9XT1JLRVJfUFJPQ0VTUykKICAgICB2b2lkIGdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25u
ZWN0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseT4pOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAzOTZhMTY2Li5lNzIxMzg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KQEAgLTQ1LDYgKzQ1LDkgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Byb3h5
IHsKICAgICB2b2lkIERpZEdldFNpdGVzV2l0aFBsdWdpbkRhdGEoVmVjdG9yPFdURjo6U3RyaW5n
PiBzaXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICB2b2lkIERpZENsZWFyUGx1Z2luU2l0
ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKICNlbmRpZgorI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCisgICAgR2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkgLT4gKENvcmVJUEM6OkF0
dGFjaG1lbnQgY29ubmVjdGlvbkhhbmRsZSkgRGVsYXllZAorI2VuZGlmCiAjaWYgRU5BQkxFKFNI
QVJFRF9XT1JLRVJfUFJPQ0VTUykKICAgICBHZXRTaGFyZWRXb3JrZXJQcm9jZXNzQ29ubmVjdGlv
bihXVEY6OlN0cmluZyB1cmwsIFdURjo6U3RyaW5nIG5hbWUpIC0+IChDb3JlSVBDOjpBdHRhY2ht
ZW50IGNvbm5lY3Rpb25IYW5kbGUpIERlbGF5ZWQKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVlODgxZmQuLjZjODdj
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTM0OCw2ICszNDgsOCBAQAogCQkzRjg3QjlDMDE1ODk0MEQ4MDA5MEZGNjIgLyog
V2ViQ29sb3JDaG9vc2VyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDNGODdCOUJGMTU4OTQwRDgwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXJQ
cm94eS5oICovOyB9OwogCQk0RjYwMTQzMjE1NUM1QUEyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNw
b25zZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEY2MDE0MzAxNTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCAqLzsgfTsK
IAkJNTEwMjFFOUMxMkIxNjc4ODAwNUMwMzNDIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMjFFOUIx
MkIxNjc4ODAwNUMwMzNDIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tICovOyB9OworCQk1
MTA1QjBERDE2MkY3RTlEMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDVCMERCMTYyRjdF
OUQwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc01hbmFnZXIuY3BwICovOyB9OworCQk1MTA1QjBE
RTE2MkY3RTlEMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA1QjBEQzE2MkY3RTlEMDBFMjc3
MDkgLyogTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmggKi87IH07CiAJCTUxMENDODQ5MTYxM0M4NUMw
MEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5hcHAgaW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMENDODBFMTYxM0M3OTkwMEQwM0VEMyAvKiBOZXR3b3Jr
UHJvY2Vzcy5hcHAgKi87IH07CiAJCTUxMENDODRGMTYxM0M5MkMwMEQwM0VEMyAvKiBNYWluTWFj
UHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQTZGQTMxMDExRTM5MjFFMDBEQjEzNzEgLyogTWFpbk1hY1Byb2Nlc3MuY3BwICovOyB9Owog
CQk1MTBGQkI5QTEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBGQkI5ODEy
ODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAgKi87IH07CkBAIC00
MDgsNiArNDEwLDEwIEBACiAJCTUxMkY1OEZDMTJBODhBNTQwMDYyOTUzMCAvKiBXS1Byb3RlY3Rp
b25TcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEyRjU4RjQxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEzNjE4M0QxNjMxMjZE
QTAwQTk5RERFIC8qIENvbm5lY3Rpb25TdGFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTM2MTgzQjE2MzEyNkRBMDBBOTlEREUgLyogQ29ubmVj
dGlvblN0YWNrLmNwcCAqLzsgfTsKIAkJNTEzNjE4M0UxNjMxMjZEQTAwQTk5RERFIC8qIENvbm5l
Y3Rpb25TdGFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEzNjE4M0MxNjMxMjZEQTAwQTk5RERFIC8qIENvbm5lY3Rpb25TdGFjay5oICovOyB9Owor
CQk1MTNBMTYzQzE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTNBMTYzQTE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CisJCTUxM0ExNjNEMTYzMDg4RjYwMDVEN0QyMiAvKiBOZXR3b3Jr
UHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxM0ExNjNCMTYzMDg4RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJvY2Vzc1By
b3h5TWVzc2FnZXMuaCAqLzsgfTsKKwkJNTEzQTE2NEMxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0ExNjQ5MTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgKi87IH07CisJCTUxM0ExNjREMTYzMEE5QkYwMDVEN0Qy
MiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzQTE2NEExNjMwQTlCRjAwNUQ3RDIyIC8qIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggKi87IH07CiAJCTUxNTM1NjlDMTI5MUIxRDIw
MDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1MzU2OUExMjkxQjFEMjAwMDc0OURDIC8q
IFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgKi87IH07CiAJCTUxNTM1NjlEMTI5MUIxRDIw
MDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTM1NjlCMTI5MUIxRDIwMDA3NDlEQyAvKiBX
ZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKIAkJNTE1NzhCODMxMjA5RUNFRjAwQTM3
QzRBIC8qIFdlYkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNTc4QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggKi87IH07CkBAIC00
MjgsNiArNDM0LDcgQEAKIAkJNTE4MzQ1OTIxMzQ1MzJFOTAwOTJCNjk2IC8qIFdlYkljb25EYXRh
YmFzZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTgzNDU5MDEzNDUzMkU4MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNw
cCAqLzsgfTsKIAkJNTE4MzQ1OTMxMzQ1MzJFOTAwOTJCNjk2IC8qIFdlYkljb25EYXRhYmFzZUNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4
MzQ1OTExMzQ1MzJFODAwOTJCNjk2IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5oICovOyB9Owog
CQk1MTgzQjM5MjEzNzlGN0I4MDBFODc1NEUgLyogV2ViUHJvY2Vzc1NoaW0uZHlsaWIgaW4gQ29w
eSBXZWIgUHJvY2VzcyBTaGltICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MDAzMUY2MTM3OUNBQ0IwMEM4REZFNCAvKiBXZWJQcm9jZXNzU2hpbS5keWxpYiAqLzsgfTsKKwkJ
NTE4M0RERUMxNjMwQkRGQzAwOEJFNUM3IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA1QjBENDE2
MkY3QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJ
NTE4NzFCNUIxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODcxQjU5MTI3Q0I4OUQwMEY3
NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi87IH07CiAJCTUxODcxQjVDMTI3Q0I4OUQwMEY3
NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51
LmggKi87IH07CiAJCTUxOEFDQUVBMTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFj
ZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MThBQ0FFOTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNTA1LDYgKzE1
MTIsMTEgQEAKIAkJNEY2MDE0MzAxNTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VN
YXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tpbmdSZXNwb25zZU1h
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAwMzFGNjEzNzlDQUNCMDBDOERG
RTQgLyogV2ViUHJvY2Vzc1NoaW0uZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBpbmNsdWRlSW5JbmRl
eCA9IDA7IHBhdGggPSBXZWJQcm9jZXNzU2hpbS5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJNTEwMjFFOUIxMkIxNjc4ODAwNUMwMzNDIC8qIFdlYkNvbnRleHRN
ZW51Q2xpZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxMDVCMEQ0MTYyRjdBN0EwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcDsgcGF0aCA9IE5ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwNUIwRDUxNjJGN0E3QTAwRTI3NzA5IC8q
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDsgcGF0aCA9IE5ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMDVCMERC
MTYyRjdFOUQwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc01hbmFnZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwNUIwREMxNjJGN0U5RDAwRTI3NzA5IC8qIE5l
dHdvcmtQcm9jZXNzTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
ZXR3b3JrUHJvY2Vzc01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEw
NUIwRjMxNjMwODcyRTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTEwQ0M3REQxNjEzOEUyOTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzTWFp
bk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtQ
cm9jZXNzTWFpbk1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwQ0M3REYx
NjEzOEUyOTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEw
Q0M3RTAxNjEzOEUyOTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU3Myw2
ICsxNTg1LDExIEBACiAJCTUxMkY1OEY0MTJBODhBNTQwMDYyOTUzMCAvKiBXS1Byb3RlY3Rpb25T
cGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Byb3RlY3Rpb25TcGFj
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTM2MTgzQjE2MzEyNkRBMDBBOTlE
REUgLyogQ29ubmVjdGlvblN0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvbm5lY3Rpb25TdGFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxMzYxODNDMTYzMTI2REEwMEE5OURERSAvKiBDb25uZWN0aW9uU3RhY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29ubmVjdGlvblN0YWNrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxM0ExNjNBMTYzMDg4RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJvY2Vz
c1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MTNBMTYzQjE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1By
b2Nlc3NQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5l
dHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MTNBMTY0OTE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTNB
MTY0QTE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxM0ExNjRCMTYzMEE5QkYwMDVE
N0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IG5hbWUgPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bjsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTUzNTY5QTEyOTFCMUQy
MDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNTM1NjlCMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQ
YWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViUGFnZUNvbnRleHRNZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxNTc4QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI5MjQsMTAgKzI5NDEsMjIgQEAKIAkJCW5hbWUgPSBjZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CiAJCX07CisJCTUxMDVCMEQyMTYyRjdBNUUwMEUyNzcwOSAvKiBOZXR3b3JrICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk1MTA1QjBENDE2MkY3
QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk1MTA1
QjBENTE2MkY3QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggKi8sCisJ
CQkpOworCQkJbmFtZSA9IE5ldHdvcms7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OwogCQk1MTBDQzdEQTE2MTM4RTAxMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3MgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTUxMENDN0RDMTYxMzhFMjkw
MEQwM0VEMyAvKiBtYWMgKi8sCisJCQkJNTEzQTE2NDkxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCAqLywKKwkJCQk1MTNBMTY0QTE2MzBBOUJGMDA1
RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCAqLywKKwkJCQk1MTNBMTY0
QjE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4gKi8sCiAJCQkJNTEwQ0M3REYxNjEzOEUyOTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNz
LmNwcCAqLywKIAkJCQk1MTBDQzdFMDE2MTM4RTI5MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3Mu
aCAqLywKIAkJCQk1MUE4QTYxNzE2MjdGNUJCMDAwRDkwRTkgLyogTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4gKi8sCkBAIC0yOTUwLDggKzI5NzksMTEgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJNTE2MzE5OTMxNjI4OTgwRTAwRTIyRjAwIC8qIG1hYyAqLywK
KwkJCQk1MTA1QjBEQjE2MkY3RTlEMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmNw
cCAqLywKKwkJCQk1MTA1QjBEQzE2MkY3RTlEMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NNYW5h
Z2VyLmggKi8sCiAJCQkJNTEwQ0M3RUExNjEzOEU3MjAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNz
UHJveHkuY3BwICovLAogCQkJCTUxMENDN0VCMTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrUHJv
Y2Vzc1Byb3h5LmggKi8sCisJCQkJNTEwNUIwRjMxNjMwODcyRTAwRTI3NzA5IC8qIE5ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkpOwogCQkJcGF0aCA9IE5ldHdvcms7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzExOCw2ICszMTUwLDcgQEAKIAkJCQk1MUE5
RTBGQjEzMTVDQzBFMDA5RTcwMzEgLyogS2V5VmFsdWVTdG9yYWdlICovLAogCQkJCTFBNkZBMDFD
MTFFMTUyNjMwMERCMTM3MSAvKiBtYWMgKi8sCiAJCQkJMzNEM0EzQkQxMzM5NjA5ODAwNzA5QkU0
IC8qIE1lZGlhQ2FjaGUgKi8sCisJCQkJNTEwNUIwRDIxNjJGN0E1RTAwRTI3NzA5IC8qIE5ldHdv
cmsgKi8sCiAJCQkJMzEwOTk5NzQxNDZDOEFBODAwMjlERUI5IC8qIE5vdGlmaWNhdGlvbnMgKFVz
ZXIpICovLAogCQkJCTFBNkZCN0FBMTFFNjRCNDkwMERCMTM3MSAvKiBQbHVnaW5zICovLAogCQkJ
CTMzMzY3NjJCMTMwQzk5NzgwMDZDOURFMiAvKiBSZXNvdXJjZUNhY2hlICovLApAQCAtNDAwNyw2
ICs0MDQwLDggQEAKIAkJCQkxQUE1NzYwMDE0OTZCN0MwMDBBNEVFMDYgLyogRXZlbnREaXNwYXRj
aGVyTWVzc2FnZXMuaCAqLywKIAkJCQk1MUFDQzkzNDE2MjgwNjQ4MDAzNDI1NTAgLyogTmV0d29y
a1Byb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUxQUNDOTM1MTYyODA2NDgwMDM0
MjU1MCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmggKi8sCisJCQkJNTEzQTE2M0ExNjMwODhG
NjAwNUQ3RDIyIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAor
CQkJCTUxM0ExNjNCMTYzMDg4RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2Fn
ZXMuaCAqLywKIAkJCQkxQTJEODQzNzEyN0Y2NUQ1MDAxRUI5NjIgLyogTlBPYmplY3RNZXNzYWdl
UmVjZWl2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBMkQ4NDM4MTI3RjY1RDUwMDFF
Qjk2MiAvKiBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VzLmggKi8sCiAJCQkJMUE4RUY5
NkMxMjUyQUY2QjAwRjcwNjdGIC8qIFBsdWdpbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8sCkBAIC00Njk4LDYgKzQ3MzMsOSBAQAogCQkJCTFBMjMyOEZGMTYyQzg2NkEwMEQ4
MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyMzI5MDMxNjJD
ODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTM2
MTgzRTE2MzEyNkRBMDBBOTlEREUgLyogQ29ubmVjdGlvblN0YWNrLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MTA1QjBERTE2MkY3RTlEMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MTNBMTYzRDE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1By
b2Nlc3NQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTNBMTY0RDE2MzBBOUJG
MDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpAQCAtNTY0NCw2ICs1NjgyLDEwIEBACiAJCQkJMUEyMzI4RkUxNjJDODY2QTAwRDgyRjdBIC8q
IE1lc3NhZ2VFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjMyOTAyMTYyQzg2NzMw
MEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTM2MTgz
RDE2MzEyNkRBMDBBOTlEREUgLyogQ29ubmVjdGlvblN0YWNrLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTUxMDVCMEREMTYyRjdFOUQwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc01hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTEzQTE2M0MxNjMwODhGNjAwNUQ3RDIyIC8qIE5ldHdvcmtQ
cm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEzQTE2
NEMxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTUxODNEREVDMTYzMEJERkMwMDhCRTVDNyAvKiBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkOWQ2Y2IKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oIgorCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorCisjaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIg
Y29ubmVjdGlvbklkZW50aWZpZXIpCit7CisgICAgbV9jb25uZWN0aW9uID0gQ29yZUlQQzo6Q29u
bmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgdGhp
cywgV2ViUHJvY2Vzczo6c2hhcmVkKCkucnVuTG9vcCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPm9w
ZW4oKTsKK30KKworTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjp+TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkKK3sKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2Vp
dmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJ
UEM6Ok1lc3NhZ2VEZWNvZGVyJikKK3sKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6
TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYsIE93blB0cjxDb3JlSVBDOjpNZXNz
YWdlRW5jb2Rlcj4mKQoreworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
Q2xvc2UoQ29yZUlQQzo6Q29ubmVjdGlvbiopCit7CisgICAgLy8gVGhlIE5ldHdvcmtQcm9jZXNz
IHByb2JhYmx5IGNyYXNoZWQuCisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uQ2xvc2VkKHRoaXMpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlSUQpCit7Cit9CisKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWUyNTk4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw
MTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbl9oCisjZGVmaW5lIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbl9oCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24+LCBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKENvcmVJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihjb25uZWN0aW9uSWRl
bnRpZmllcikpOworICAgIH0KKyAgICB+TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCk7CisgICAg
CisgICAgQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29ubmVjdGlvbi5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbihDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKKworICAgIC8vIENvcmVJUEM6
OkNvbm5lY3Rpb246OkNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdl
RGVjb2RlciYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29k
ZXImLCBPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+Jik7CisgICAgdmlydHVhbCB2b2lk
IGRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdl
SUQpOworCisgICAgLy8gVGhlIGNvbm5lY3Rpb24gZnJvbSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhl
IG5ldHdvcmsgcHJvY2Vzcy4KKyAgICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25u
ZWN0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQorCisKKyNlbmRpZiAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25f
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZDlkMTRlOS4u
YTgxMWVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC04
Niw2ICs4NiwxMCBAQAogI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZvTWFuYWdlck1lc3NhZ2VzLmgi
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjZW5kaWYKKwogI2lmICFPUyhXSU5ET1dTKQogI2luY2x1
ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCkBAIC0yNTYsOSArMjYwLDM2IEBAIHZvaWQgV2ViUHJvY2Vz
czo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1lCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldFByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJ
ZGVudGlmaWVyKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyAgICBl
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyNlbmRpZgogICAgIHNldFRlcm1pbmF0
aW9uVGltZW91dChwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCk7CiB9CiAKKyNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQordm9pZCBXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKQoreworICAgIGlmIChtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQ29yZUlQQzo6QXR0YWNobWVudCBlbmNvZGVkQ29ubmVjdGlv
bklkZW50aWZpZXI7CisKKyAgICBpZiAoIWNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVy
KSwgMCkpCisgICAgICAgIHJldHVybjsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBDb3JlSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25u
ZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpOworICAgIGlmIChDb3JlSVBDOjpDb25uZWN0aW9uOjpp
ZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOwor
I2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorCisgICAgUmVmUHRyPE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbj4gbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShjb25uZWN0aW9uSWRlbnRpZmllcik7Cit9Cisj
ZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKwogdm9pZCBXZWJQcm9jZXNzOjpzZXRT
aG91bGRUcmFja1Zpc2l0ZWRMaW5rcyhib29sIHNob3VsZFRyYWNrVmlzaXRlZExpbmtzKQogewog
ICAgIG1fc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MgPSBzaG91bGRUcmFja1Zpc2l0ZWRMaW5rczsK
QEAgLTEwMjQsNiArMTA1NSwyMyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBvc3RJbmplY3RlZEJ1bmRs
ZU1lc3NhZ2UoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZQogICAgIGluamVj
dGVkQnVuZGxlLT5kaWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkuZ2V0
KCkpOwogfQogCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKK3ZvaWQgV2ViUHJvY2Vzczo6
bmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiog
Y29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOwor
ICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9PSBjb25uZWN0aW9uKTsKKwor
ICAgIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gMDsKK30KKwordm9pZCBXZWJQcm9jZXNz
OjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlvbiopCit7CisgICAgQVNT
RVJUKG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKTsKKyAgICAKKyAgICBuZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb25DbG9zZWQobV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uZ2V0KCkpOworfQor
I2VuZGlmCisKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiB2b2lkIFdlYlByb2Nlc3M6OnBs
dWdpblByb2Nlc3NDcmFzaGVkKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBjb25zdCBTdHJpbmcmIHBs
dWdpblBhdGgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDlh
MTNlZTguLmNiNjY3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBA
IC05NSw2ICs5NSwxMCBAQCBzdHJ1Y3QgV2ViUGFnZUdyb3VwRGF0YTsKIHN0cnVjdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlOwogc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKKyNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OworI2VuZGlmCisKICNpZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQogY2xhc3MgU2VjSXRlbVJl
c3BvbnNlRGF0YTsKIGNsYXNzIFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0YTsKQEAgLTE4OCw2
ICsxOTIsMTAgQEAgcHVibGljOgogICAgIFdlYlNvdXBSZXF1ZXN0TWFuYWdlciYgc291cFJlcXVl
c3RNYW5hZ2VyKCkgeyByZXR1cm4gbV9zb3VwUmVxdWVzdE1hbmFnZXI7IH0KICNlbmRpZgogCisj
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyAgICB2b2lkIG5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbkNsb3NlZChOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qKTsKKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIFdlYlByb2Nlc3MoKTsKIApAQCAtMjI4LDcgKzIzNiwxMCBAQCBwcml2YXRlOgogICAg
IHZvaWQgZ2V0U2l0ZXNXaXRoUGx1Z2luRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGx1Z2lu
UGF0aHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgY2xlYXJQbHVnaW5TaXRlRGF0
YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGx1Z2luUGF0aHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBzaXRlcywgdWludDY0X3QgZmxhZ3MsIHVpbnQ2NF90IG1heEFnZUluU2Vjb25kcywgdWludDY0
X3QgY2FsbGJhY2tJRCk7CiAjZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCisgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlvbiop
OworI2VuZGlmCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogICAgIHZvaWQgcGx1Z2luUHJv
Y2Vzc0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlvbiosIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCk7CiAjZW5kaWYKQEAgLTMzNSw2ICszNDYsMTEgQEAgcHJpdmF0ZToKICAgICAKICAgICBTdHJp
bmcgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQorICAgIHZvaWQgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCk7CisgICAgUmVmUHRy
PE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbj4gbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247Cisj
ZW5kaWYKKwogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKICAgICBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCAzNzg3OTJmLi4yY2MxZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02Myw2ICs2MywxMSBAQCBtZXNzYWdlcyAtPiBX
ZWJQcm9jZXNzIHsKICAgICBHZXRTaXRlc1dpdGhQbHVnaW5EYXRhKFZlY3RvcjxXVEY6OlN0cmlu
Zz4gcGx1Z2luUGF0aHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgQ2xlYXJQbHVnaW5TaXRl
RGF0YShWZWN0b3I8V1RGOjpTdHJpbmc+IHBsdWdpblBhdGhzLCBWZWN0b3I8V1RGOjpTdHJpbmc+
IHNpdGVzLCB1aW50NjRfdCBmbGFncywgdWludDY0X3QgbWF4QWdlSW5TZWNvbmRzLCB1aW50NjRf
dCBjYWxsYmFja0lEKQogI2VuZGlmCisKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorICAg
IE5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpIERpc3BhdGNoT25Db25uZWN0aW9uUXVldWUKKyNlbmRp
ZgorCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogICAgIFBsdWdpblByb2Nlc3NDcmFzaGVk
KFN0cmluZyBwbHVnaW5Qcm9jZXNzKSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVlCiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>