<?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>135120</bug_id>
          
          <creation_ts>2014-07-21 10:10:02 -0700</creation_ts>
          <short_desc>Web Inspector: the inspector should live in its own process</short_desc>
          <delta_ts>2014-10-08 07:32:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>137522</dependson>
          <blocked>135830</blocked>
    
    <blocked>136350</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>andersca</cc>
    
    <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>mkwst</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1023691</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-07-21 10:10:02 -0700</bug_when>
    <thetext>It would be approximately way easier to profile if it were isolated from the inspected page&apos;s Web Content process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023693</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-07-21 10:10:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/17748414&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024017</commentid>
    <comment_count>2</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-07-22 11:51:56 -0700</bug_when>
    <thetext>Internal dupe of &lt;rdar://problem/11749409&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032076</commentid>
    <comment_count>3</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-08-28 14:49:19 -0700</bug_when>
    <thetext>I am working on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033411</commentid>
    <comment_count>4</comment_count>
      <attachid>237676</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-04 22:56:47 -0700</bug_when>
    <thetext>Created attachment 237676
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033413</commentid>
    <comment_count>5</comment_count>
      <attachid>237677</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-04 22:58:18 -0700</bug_when>
    <thetext>Created attachment 237677
WIP (correct)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033614</commentid>
    <comment_count>6</comment_count>
      <attachid>237727</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-05 17:34:42 -0700</bug_when>
    <thetext>Created attachment 237727
WIP (latest)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033615</commentid>
    <comment_count>7</comment_count>
      <attachid>237727</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-05 18:05:04 -0700</bug_when>
    <thetext>Comment on attachment 237727
WIP (latest)

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

Looks pretty slick overall. Seeking some clarification on the code path for GTK/EFL: does it change at all? Some of the messages looked deleted but I didn&apos;t see any updates to the other platform-specific files.

&gt; Source/WebCore/inspector/InspectorController.cpp:198
&gt; +void InspectorController::setInspectorFrontendClient(InspectorFrontendClient* inspectorFrontendClient)

Before, the Controller owned the client. Who owns it now? Can this pass a reference?

&gt; Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm:-137
&gt; -    , m_frontendClient(0)

This should still be initialized to nullptr, right?

&gt; Source/WebKit2/UIProcess/WebInspectorProxy.cpp:110
&gt;          pageGroup-&gt;preferences().setLogsPageMessagesToSystemConsoleEnabled(true);

Can you update the comment above this to mean &quot;developers can inspector the inspector in debug mode _without changing any settings_&quot; ? AFAICT, that&apos;s what it does.

&gt; Source/WebKit2/WebProcess/WebPage/WebInspector.cpp:1
&gt;  /*

Per the naming conventions, files that implement the InspectorProcess probably should be in Source/WebKit2/InspectorProcess/* not in WebProcess.

&gt; Source/WebKit2/WebProcess/WebPage/WebInspectorUI.cpp:30
&gt; +#include &quot;WebPage.h&quot;

newline after ENABLE(...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033618</commentid>
    <comment_count>8</comment_count>
      <attachid>237727</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-05 18:44:50 -0700</bug_when>
    <thetext>Comment on attachment 237727
WIP (latest)

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

&gt;&gt; Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm:-137
&gt;&gt; -    , m_frontendClient(0)
&gt; 
&gt; This should still be initialized to nullptr, right?

It was removed. They aren&apos;t in the same process anymore.

&gt;&gt; Source/WebKit2/UIProcess/WebInspectorProxy.cpp:110
&gt;&gt;          pageGroup-&gt;preferences().setLogsPageMessagesToSystemConsoleEnabled(true);
&gt; 
&gt; Can you update the comment above this to mean &quot;developers can inspector the inspector in debug mode _without changing any settings_&quot; ? AFAICT, that&apos;s what it does.

Sure.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/WebInspector.cpp:1
&gt;&gt;  /*
&gt; 
&gt; Per the naming conventions, files that implement the InspectorProcess probably should be in Source/WebKit2/InspectorProcess/* not in WebProcess.

They are in WebProcess, just two different web processes now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033621</commentid>
    <comment_count>9</comment_count>
      <attachid>237727</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-05 18:53:37 -0700</bug_when>
    <thetext>Comment on attachment 237727
WIP (latest)

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

&gt;&gt;&gt; Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm:-137
&gt;&gt;&gt; -    , m_frontendClient(0)
&gt;&gt; 
&gt;&gt; This should still be initialized to nullptr, right?
&gt; 
&gt; It was removed. They aren&apos;t in the same process anymore.

Oh, this is WK1. m_frontendClient is a unique_ptr now which defaults to nullptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033623</commentid>
    <comment_count>10</comment_count>
      <attachid>237727</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-05 18:55:25 -0700</bug_when>
    <thetext>Comment on attachment 237727
WIP (latest)

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

&gt;&gt; Source/WebCore/inspector/InspectorController.cpp:198
&gt;&gt; +void InspectorController::setInspectorFrontendClient(InspectorFrontendClient* inspectorFrontendClient)
&gt; 
&gt; Before, the Controller owned the client. Who owns it now? Can this pass a reference?

The higher level objects in WK2 and WK1 own it now with a lifetime of the Page. It might be possible to pass as a reference, but it needs to be nullable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033907</commentid>
    <comment_count>11</comment_count>
      <attachid>237798</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-08 11:32:47 -0700</bug_when>
    <thetext>Created attachment 237798
WIP (almost final)

Posting to let EWS try things while I look into a layout test hang.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033909</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-08 11:35:05 -0700</bug_when>
    <thetext>Attachment 237798 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebPage/WebInspectorUI.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/WebInspectorUI.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/WebInspectorUI.cpp:42:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/WebInspectorUI.cpp:145:  Declaration has space between type name and * in const char *sideString  [whitespace/declaration] [3]
ERROR: Source/WebKit2/WebProcess/WebPage/WebInspectorUI.h:39:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WebCore/WebCore.exp.in:0:  Source/WebCore/WebCore.exp.in should be sorted, use Tools/Scripts/sort-export-file script  [list/order] [5]
Total errors found: 6 in 38 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>1033924</commentid>
    <comment_count>13</comment_count>
      <attachid>237803</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-08 12:31:38 -0700</bug_when>
    <thetext>Created attachment 237803
WIP (almost final x2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033931</commentid>
    <comment_count>14</comment_count>
      <attachid>237806</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-08 13:08:49 -0700</bug_when>
    <thetext>Created attachment 237806
WIP (almost final x3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033985</commentid>
    <comment_count>15</comment_count>
      <attachid>237818</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-08 16:37:33 -0700</bug_when>
    <thetext>Created attachment 237818
WIP (almost final x4)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034028</commentid>
    <comment_count>16</comment_count>
      <attachid>237818</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2014-09-08 19:29:06 -0700</bug_when>
    <thetext>Comment on attachment 237818
WIP (almost final x4)

Attachment 237818 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/5085997704413184

New failing tests:
http/tests/xmlhttprequest/access-control-repeated-failed-preflight-crash.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034029</commentid>
    <comment_count>17</comment_count>
      <attachid>237830</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2014-09-08 19:29:12 -0700</bug_when>
    <thetext>Created attachment 237830
Archive of layout-test-results from webkit-ews-08 for mac-mountainlion

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: webkit-ews-08  Port: mac-mountainlion  Platform: Mac OS X 10.8.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034885</commentid>
    <comment_count>18</comment_count>
      <attachid>238037</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-12 10:29:31 -0700</bug_when>
    <thetext>Created attachment 238037
WIP (latest final)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035049</commentid>
    <comment_count>19</comment_count>
      <attachid>238037</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-12 23:21:37 -0700</bug_when>
    <thetext>Comment on attachment 238037
WIP (latest final)

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

Will look at this more later, but some quick comments:

* Missing ChangeLogs.
* Many tests in LayoutTests/inspector/ will crash under WK1 if you force them to run. This is a regression.
* Saving resources seems to work, but it names the downloaded files as &quot;Unknown&quot;. Is this a regression?

&gt; Source/WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp:185
&gt; +    // Set a default sizes based on InspectorFrontendClientLocal.

grammar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035072</commentid>
    <comment_count>20</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-13 11:26:27 -0700</bug_when>
    <thetext>It would also be nice to name the inspector process something different from com.apple.WebKit.WebContent[.Development] so that different web processes can be easily distinguished from Xcode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035078</commentid>
    <comment_count>21</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-13 15:58:57 -0700</bug_when>
    <thetext>Looks like Safari expects some symbols that were removed in this patch. Maybe these should be stubbed out and deprecated until Safari no longer uses them.

dyld: lazy symbol binding failed: Symbol not found: _WKInspectorIsProfilingJavaScript
  Referenced from: /System/Library/StagedFrameworks/Safari/Safari.framework/Versions/A/Safari
  Expected in: /Users/burg/repos/replay-staging/OpenSource/WebKitBuild/Debug/WebKit2.framework/Versions/A/WebKit2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035081</commentid>
    <comment_count>22</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-13 16:42:30 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Looks like Safari expects some symbols that were removed in this patch. Maybe these should be stubbed out and deprecated until Safari no longer uses them.
&gt; 
&gt; dyld: lazy symbol binding failed: Symbol not found: _WKInspectorIsProfilingJavaScript
&gt;   Referenced from: /System/Library/StagedFrameworks/Safari/Safari.framework/Versions/A/Safari
&gt;   Expected in: /Users/burg/repos/replay-staging/OpenSource/WebKitBuild/Debug/WebKit2.framework/Versions/A/WebKit2

To clarify, this happens when you open the Develop menu in Safari launched from `run-safari`.

Another bug (which I&apos;ll have to unapply the patch to get around, for now): the `pagehide` event is not getting fired when the inspector closes, so breakpoints and the current view state are not being persisted across reopening the inspector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035082</commentid>
    <comment_count>23</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-13 18:27:59 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; It would also be nice to name the inspector process something different from com.apple.WebKit.WebContent[.Development] so that different web processes can be easily distinguished from Xcode.

Joe and I talked about this too. One issue is we are not guaranteed to be in our own process. Safari sets the process limit to 20. We should force our own process that all inspectors share, then we can name it properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035083</commentid>
    <comment_count>24</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-13 18:28:46 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Looks like Safari expects some symbols that were removed in this patch. Maybe these should be stubbed out and deprecated until Safari no longer uses them.
&gt; 
&gt; dyld: lazy symbol binding failed: Symbol not found: _WKInspectorIsProfilingJavaScript
&gt;   Referenced from: /System/Library/StagedFrameworks/Safari/Safari.framework/Versions/A/Safari
&gt;   Expected in: /Users/burg/repos/replay-staging/OpenSource/WebKitBuild/Debug/WebKit2.framework/Versions/A/WebKit2

Oops. Yeah, we need to stub those out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035084</commentid>
    <comment_count>25</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-13 18:33:15 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Another bug (which I&apos;ll have to unapply the patch to get around, for now): the `pagehide` event is not getting fired when the inspector closes, so breakpoints and the current view state are not being persisted across reopening the inspector.

I thought Joe was having issues with page hide not firing already?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035086</commentid>
    <comment_count>26</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-13 20:14:24 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #22)
&gt; &gt; Another bug (which I&apos;ll have to unapply the patch to get around, for now): the `pagehide` event is not getting fired when the inspector closes, so breakpoints and the current view state are not being persisted across reopening the inspector.
&gt; 
&gt; I thought Joe was having issues with page hide not firing already?

I recall some discussion about this, but can&apos;t find a bug. And, it is definitely a regression with this patch applied vs not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035273</commentid>
    <comment_count>27</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-09-15 11:12:35 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; (In reply to comment #22)
&gt; &gt; &gt; Another bug (which I&apos;ll have to unapply the patch to get around, for now): the `pagehide` event is not getting fired when the inspector closes, so breakpoints and the current view state are not being persisted across reopening the inspector.
&gt; &gt; 
&gt; &gt; I thought Joe was having issues with page hide not firing already?
&gt; 
&gt; I recall some discussion about this, but can&apos;t find a bug. And, it is definitely a regression with this patch applied vs not.

In my last tip of tree build page hide events were working as expected. Were you still seeing issues? That will certainly affect state restoration as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036351</commentid>
    <comment_count>28</comment_count>
      <attachid>238427</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-21 11:15:54 -0700</bug_when>
    <thetext>Created attachment 238427
WIP (For Bots)

This version passes inspector and inspector-protocol tests. Still need ChangeLogs, then I will post it for review. Checking EWS first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036353</commentid>
    <comment_count>29</comment_count>
      <attachid>238427</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-21 12:03:37 -0700</bug_when>
    <thetext>Comment on attachment 238427
WIP (For Bots)

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

&gt; Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js:127
&gt; +        console.assert(InspectorFrontendAPI[methodName], &quot;Unexpected InspectorFrontendAPI method name: &quot; + InspectorFrontendAPI[methodName]);

I wish we could do:

if (!console.assert(pred, ...))
    return;

But this would require some more intelligent rewriting to strip console assertions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036366</commentid>
    <comment_count>30</comment_count>
      <attachid>238430</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-21 13:18:47 -0700</bug_when>
    <thetext>Created attachment 238430
WIP (Rebased For Bots)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036383</commentid>
    <comment_count>31</comment_count>
      <attachid>238430</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-21 16:05:30 -0700</bug_when>
    <thetext>Comment on attachment 238430
WIP (Rebased For Bots)

&quot;Binary files a/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js and b/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js differ&quot;

^-- this is causing the patch to not apply. What diff command are you using? I&apos;ve never had this problem using `Tools/Scripts/webkit-patch upload`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036385</commentid>
    <comment_count>32</comment_count>
      <attachid>238437</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-21 16:09:32 -0700</bug_when>
    <thetext>Created attachment 238437
WIP (Binary Patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036386</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-21 16:10:46 -0700</bug_when>
    <thetext>Attachment 238437 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebInspectorProxy.cpp:351:  Missing space before {  [whitespace/braces] [5]
Total errors found: 1 in 52 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>1036416</commentid>
    <comment_count>34</comment_count>
      <attachid>238446</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-21 20:06:47 -0700</bug_when>
    <thetext>Created attachment 238446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036417</commentid>
    <comment_count>35</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-21 20:18:27 -0700</bug_when>
    <thetext>This will need a WebKIt2 owner review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036418</commentid>
    <comment_count>36</comment_count>
      <attachid>238446</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-21 20:35:52 -0700</bug_when>
    <thetext>Comment on attachment 238446
Patch

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

&gt; Source/WebKit2/ChangeLog:108
&gt; +        Stop taking an optional InspectorFrontendChannel and be it directly. Create a connection that can

&apos;be it&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036439</commentid>
    <comment_count>37</comment_count>
      <attachid>238454</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-21 23:56:24 -0700</bug_when>
    <thetext>Created attachment 238454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036533</commentid>
    <comment_count>38</comment_count>
      <attachid>238483</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-22 08:01:54 -0700</bug_when>
    <thetext>Created attachment 238483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036610</commentid>
    <comment_count>39</comment_count>
      <attachid>238499</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-22 15:14:21 -0700</bug_when>
    <thetext>Created attachment 238499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036621</commentid>
    <comment_count>40</comment_count>
      <attachid>238503</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-22 16:27:32 -0700</bug_when>
    <thetext>Created attachment 238503
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036979</commentid>
    <comment_count>41</comment_count>
      <attachid>238503</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-09-24 09:59:27 -0700</bug_when>
    <thetext>Comment on attachment 238503
Patch

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

&gt; Source/WebCore/testing/Internals.cpp:1495
&gt; +    m_frontendWindow.clear();

This should use = nullptr.

&gt; Source/WebKit2/UIProcess/API/C/WKInspector.cpp:177
&gt; -bool WKInspectorIsDebuggingJavaScript(WKInspectorRef inspectorRef)
&gt; +bool WKInspectorIsDebuggingJavaScript(WKInspectorRef)

As discussed, these should move to WKDeprecatedFunctions.

&gt; Source/WebKit2/UIProcess/WebInspectorProxy.cpp:359
&gt; +    static std::once_flag onceFlag;
&gt; +    static LazyNeverDestroyed&lt;RefPtr&lt;WebContext&gt;&gt; context;
&gt; +
&gt; +    std::call_once(onceFlag, [] {
&gt; +        WebContextConfiguration configuration;
&gt; +        WebContext::applyPlatformSpecificConfigurationDefaults(configuration);
&gt; +        context.construct(WebContext::create(configuration));
&gt; +        context.get()-&gt;setProcessModel(ProcessModelMultipleSecondaryProcesses);
&gt; +    });

There&apos;s no need to put a smart pointer inside a LazyNeverDestroyed. This can just be something like:

static WebContext* context;
if (!context) {
 /// initialize context
}

return *context;

&gt; Source/WebKit2/WebProcess/WebPage/WebInspector.messages.in:25
&gt; -messages -&gt; WebInspector LegacyReceiver {
&gt; +messages -&gt; WebInspector {

Very nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037015</commentid>
    <comment_count>42</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-24 13:07:13 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/173929</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037038</commentid>
    <comment_count>43</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-09-24 15:06:43 -0700</bug_when>
    <thetext>32-bit mac build fix: &lt;http://trac.webkit.org/changeset/173933&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037143</commentid>
    <comment_count>44</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-24 21:15:15 -0700</bug_when>
    <thetext>WK1 test crash fix: http://trac.webkit.org/changeset/173936</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037361</commentid>
    <comment_count>45</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-09-25 17:36:42 -0700</bug_when>
    <thetext>64-bit Windows build fix: http://trac.webkit.org/changeset/173986.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237676</attachid>
            <date>2014-09-04 22:56:47 -0700</date>
            <delta_ts>2014-09-04 22:58:26 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>WIP.patch</filename>
            <type>text/plain</type>
            <size>85843</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNDJhNDY1ZC4uYTkxMDExZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTc3Myw2ICs3NzMsNyBAQCBfX1pON1dlYkNvcmUxN1NRTGl0ZVRyYW5zYWN0aW9u
RDFFdgogX19aTjdXZWJDb3JlMTdTdWJyZXNvdXJjZUxvYWRlcjZjcmVhdGVFUE5TXzVGcmFtZUVQ
TlNfMTRDYWNoZWRSZXNvdXJjZUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMjFSZXNvdXJj
ZUxvYWRlck9wdGlvbnNFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18xN0pT
RE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9fWk43
V2ViQ29yZTE3ZW5jb2RlRm9yRmlsZU5hbWVFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUx
N2V4ZWNTdGF0ZUZyb21QYWdlRVJOU18xNURPTVdyYXBwZXJXb3JsZEVQTlNfNFBhZ2VFCiBfX1pO
N1dlYkNvcmUxN2xhbmd1YWdlRGlkQ2hhbmdlRXYKIF9fWk43V2ViQ29yZTE3b3BlblRlbXBvcmFy
eUZpbGVFUktOM1dURjZTdHJpbmdFUmkKIF9fWk43V2ViQ29yZTE3c1JHQkNvbG9yU3BhY2VSZWZF
dgpAQCAtNzk2LDYgKzc5Nyw3IEBAIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkOGFk
ZFR5cGVzRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDCiBfX1pON1dlYkNv
cmUxOFBsYXRmb3JtUGFzdGVib2FyZDhnZXRUeXBlc0VSTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5n
RUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0
ZWJvYXJkOHNldFR5cGVzRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDcmFz
aE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkQzFFUktOM1dU
RjZTdHJpbmdFCitfX1pON1dlYkNvcmUxOFNjcmlwdEdsb2JhbE9iamVjdDNzZXRFUE4zSlNDOUV4
ZWNTdGF0ZUVQS2NQTlNfMjFJbnNwZWN0b3JGcm9udGVuZEhvc3RFCiBfX1pON1dlYkNvcmUxOFN0
eWxlU2hlZXRDb250ZW50czExcGFyc2VTdHJpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNv
cmUxOFN0eWxlU2hlZXRDb250ZW50c0MxRVBOU18xNVN0eWxlUnVsZUltcG9ydEVSS04zV1RGNlN0
cmluZ0VSS05TXzE2Q1NTUGFyc2VyQ29udGV4dEUKIF9fWk43V2ViQ29yZTE4U3R5bGVTaGVldENv
bnRlbnRzRDFFdgpAQCAtMTE5NCw2ICsxMTk2LDggQEAgX19aTjdXZWJDb3JlNVJhbmdlOHNldFN0
YXJ0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFaVJpCiBfX1pON1dlYkNvcmU1UmFuZ2VE
MUV2CiBfX1pON1dlYkNvcmU2Q2hyb21lMTZzZXRTdGF0dXNiYXJUZXh0RVBOU181RnJhbWVFUktO
M1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU2Q2hyb21lNXByaW50RVBOU181RnJhbWVFCitfX1pO
SzdXZWJDb3JlNkNocm9tZTEwd2luZG93UmVjdEV2CitfX1pOSzdXZWJDb3JlNkNocm9tZTEzc2V0
V2luZG93UmVjdEVSS05TXzlGbG9hdFJlY3RFCiBfX1pON1dlYkNvcmU2RWRpdG9yMTBhcHBseVN0
eWxlRVBOU18xNVN0eWxlUHJvcGVydGllc0VOU18xMEVkaXRBY3Rpb25FCiBfX1pON1dlYkNvcmU2
RWRpdG9yMTBmaW5kU3RyaW5nRVJLTjNXVEY2U3RyaW5nRWgKIF9fWk43V2ViQ29yZTZFZGl0b3Ix
MGluc2VydFRleHRFUktOM1dURjZTdHJpbmdFUE5TXzVFdmVudEUKQEAgLTMxNjgsOSArMzE3Miwx
MiBAQCBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxNWNvbm5lY3RGcm9udGVuZEVQ
TjlJbnNwZWN0b3IyNEluc3BlY3RvckZyb250ZQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250
cm9sbGVyMThkaXNjb25uZWN0RnJvbnRlbmRFTjlJbnNwZWN0b3IyNUluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb25FCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOHNldFByb2ZpbGVy
RW5hYmxlZEViCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNWV2YWx1YXRlRm9y
VGVzdEluRnJvbnRlbmRFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxOUluc3BlY3RvckNv
bnRyb2xsZXIyNnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50RU5TdDNfXzExMHVuaXF1ZV9wdHJJ
TlNfMjNJbnNwZWN0b3JGcm9udGVuZENsaWVudEVOUzFfMTRkZWZhdWx0X2RlbGV0ZUlTM19FRUVF
CitfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNnNldEluc3BlY3RvckZyb250ZW5k
Q2xpZW50RVBOU18yM0luc3BlY3RvckZyb250ZW5kQ2xpZW50RQogX19aTjdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyNHNob3dFdgogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVy
NWNsb3NlRXYKK19fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0MTZkaXNjb25uZWN0
Q2xpZW50RXYKK19fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0QzFFUE5TXzIzSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRFUE5TXzRQYWdlRQorX19aTjdXZWJDb3JlMjFJbnNwZWN0b3JG
cm9udGVuZEhvc3REMUV2CiBfX1pON1dlYkNvcmUyMmluc3RydW1lbnRhdGlvbkZvclBhZ2VFUE5T
XzRQYWdlRQogX19aTjdXZWJDb3JlMjRJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24xN3NfZnJvbnRl
bmRDb3VudGVyRQogX19aTjdXZWJDb3JlMjRJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24yNmluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JQYWdlRVBOU180UGFnZUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4ZGY0ZTIxLi4wNzcxNzYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yMzMyLDcgKzIzMzIsNyBAQAogCQk3OUYyRjVBMTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29t
cG9zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3OUYyRjU5RTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5jcHAg
Ki87IH07CiAJCTc5RjJGNUEyMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUYyRjU5RjEw
OTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5oICovOyB9OwogCQk3QTBFNzcwRTEw
QzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NzBCMTBDMDBBODgwMEEwMjc2
RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwICovOyB9OwotCQk3QTBFNzcwRjEwQzAwQTg4
MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzcwQzEwQzAwQTg4MDBBMDI3NkUgLyogSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmggKi87IH07CisJCTdBMEU3NzBGMTBDMDBBODgwMEEwMjc2RSAv
KiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBMEU3NzBDMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QTBFNzcxRTEwQzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EwRTc3
MUMxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCAqLzsgfTsK
IAkJN0EwRTc3MUYxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzcxRDEw
QzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCAqLzsgfTsKIAkJN0Ex
RDdGQ0IxOEY4NUYwRjAwQzM4NUFEIC8qIG1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJpbmdzLmpz
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTFEN0ZD
OTE4Rjg1RjBGMDBDMzg1QUQgLyogbWVkaWFDb250cm9sc0xvY2FsaXplZFN0cmluZ3MuanMgKi87
IH07CkBAIC0yMzcwLDcgKzIzNzAsNyBAQAogCQk3QUIwQjFDMTEyMTFBNjIyMDBBNzY5NDAgLyog
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0FCMEIxQkYxMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFi
YXNlQWdlbnQuaCAqLzsgfTsKIAkJN0FDRDg4RDMxNEMwOEJENjAwODRFREQyIC8qIEluc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBQ0Q4OEQxMTRDMDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5jcHAgKi87IH07CiAJCTdBQ0Q4OEQ0MTRDMDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0FDRDg4RDIxNEMwOEJENjAwODRFREQyIC8qIEluc3BlY3RvckluZGV4ZWREQkFnZW50
LmggKi87IH07Ci0JCTdBREU3MjI2MTBDQkJCOUIwMDZCM0IzQSAvKiBDb250ZXh0TWVudVByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QURF
NzIyNTEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5oICovOyB9OworCQk3
QURFNzIyNjEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FERTcyMjUxMENCQkI5QjAw
NkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QUY5QjIwMjE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRU
UmVnaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBRjlCMUZDMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uY3BwICovOyB9OwogCQk3QUY5
QjIwMzE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFGRDE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRU
UmVnaW9uLmggKi87IH07CiAJCTdBRjlCMjA1MThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb25M
aXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
RjlCMUZGMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb25MaXN0LmNwcCAqLzsgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA4
M2ZmMWFmLi41NTUyMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCkBAIC04Nyw2ICs4Nyw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6
Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0
b3JDCiAgICAgLCBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChudWxscHRyKQogICAgICwgbV9w
YWdlKHBhZ2UpCiAgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQpCisgICAg
LCBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50KG51bGxwdHIpCiAgICAgLCBtX2lzVW5kZXJUZXN0
KGZhbHNlKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgICwgbV9oYXNSZW1vdGVG
cm9udGVuZChmYWxzZSkKQEAgLTE5NCw5ICsxOTUsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKQogICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbnVs
bHB0cjsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbnNwZWN0b3JGcm9udGVu
ZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IGluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbnNwZWN0b3JG
cm9udGVuZENsaWVudChJbnNwZWN0b3JGcm9udGVuZENsaWVudCogaW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQpCiB7Ci0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudCA9IFdURjo6bW92ZShpbnNw
ZWN0b3JGcm9udGVuZENsaWVudCk7CisgICAgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudCA9IGlu
c3BlY3RvckZyb250ZW5kQ2xpZW50OwogfQogCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhh
c0xvY2FsRnJvbnRlbmQoKSBjb25zdApAQCAtMjE5LDcgKzIyMCw3IEBAIGJvb2wgSW5zcGVjdG9y
Q29udHJvbGxlcjo6aGFzUmVtb3RlRnJvbnRlbmQoKSBjb25zdAogCiBib29sIEluc3BlY3RvckNv
bnRyb2xsZXI6Omhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudC5nZXQoKTsKKyAgICByZXR1cm4gbV9pbnNwZWN0
b3JGcm9udGVuZENsaWVudDsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDbGVh
cldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5k
ZXggMWQyMGMzOC4uZTk5YTA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNob3coKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlKCk7CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4pOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQq
KTsKICAgICBib29sIGhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkgY29uc3Q7CiAgICAgdm9p
ZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqLCBET01XcmFwcGVyV29ybGQmKTsK
IApAQCAtMTQ4LDEwICsxNDgsMTAgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KiBtX3RpbWVsaW5lQWdlbnQ7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1faW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ7CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsOwogICAgIFBhZ2UmIG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGll
bnQqIG1faW5zcGVjdG9yQ2xpZW50OworICAgIEluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2lu
c3BlY3RvckZyb250ZW5kQ2xpZW50OwogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdp
c3RyeSBtX2FnZW50czsKICAgICBWZWN0b3I8SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
LCAyPiBtX2luamVjdGVkU2NyaXB0SW5zdHJ1bWVudGF0aW9uQ29va2llczsKICAgICBib29sIG1f
aXNVbmRlclRlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZjA2NWNk
MS4uYjc1YzA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTQ3MSwx
MiArMTQ3MSwxMCBAQCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gSW50ZXJuYWxzOjpvcGVuRHVtbXlJ
bnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHVybCkKICAgICBQYWdlKiBmcm9udGVuZFBh
Z2UgPSBtX2Zyb250ZW5kV2luZG93LT5kb2N1bWVudCgpLT5wYWdlKCk7CiAgICAgQVNTRVJUKGZy
b250ZW5kUGFnZSk7CiAKLSAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JGcm9udGVuZENsaWVudER1bW15PigmcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLCBmcm9udGVuZFBhZ2UpOwotCi0gICAgZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50
KSk7Ci0KLSAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWxEdW1teShmcm9udGVuZFBhZ2UpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZENsaWVudER1bW15PigmcGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLCBmcm9udGVuZFBhZ2UpOworICAgIGZyb250ZW5kUGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1fZnJvbnRlbmRD
bGllbnQuZ2V0KCkpOwogCisgICAgbV9mcm9udGVuZENoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbER1bW15Pihmcm9udGVuZFBhZ2UpOwogICAgIHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENoYW5uZWwu
Z2V0KCkpOwogCiAgICAgcmV0dXJuIG1fZnJvbnRlbmRXaW5kb3c7CkBAIC0xNDkwLDcgKzE0ODgs
OCBAQCB2b2lkIEludGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKCkKIAogICAg
IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9y
RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKIAotICAgIG1fZnJvbnRlbmRD
aGFubmVsLnJlbGVhc2UoKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbnVsbHB0cjsKKyAgICBt
X2Zyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7CiAKICAgICBtX2Zyb250ZW5kV2luZG93LT5jbG9z
ZShtX2Zyb250ZW5kV2luZG93LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIG1fZnJv
bnRlbmRXaW5kb3cucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXgg
ZmFkNzAzYS4uYmQxYmM2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNTAs
NiArNTAsNyBAQCBjbGFzcyBEb2N1bWVudE1hcmtlcjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBG
cmFtZTsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbER1bW15OworY2xhc3MgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnREdW1teTsKIGNsYXNzIEludGVybmFsU2V0dGluZ3M7CiBjbGFzcyBN
YWxsb2NTdGF0aXN0aWNzOwogY2xhc3MgTWVtb3J5SW5mbzsKQEAgLTM1MCw3ICszNTEsOCBAQCBw
cml2YXRlOgogICAgIERvY3VtZW50TWFya2VyKiBtYXJrZXJBdChOb2RlKiwgY29uc3QgU3RyaW5n
JiBtYXJrZXJUeXBlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9mcm9udGVuZFdpbmRvdzsKLSAg
ICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRHVtbXk+IG1fZnJvbnRlbmRDaGFubmVs
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudER1bW15PiBtX2Zy
b250ZW5kQ2xpZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWxEdW1teT4gbV9mcm9udGVuZENoYW5uZWw7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9Eb3dubG9hZEFycm93LnN2
ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9Eb3dubG9hZEFy
cm93LnN2ZwppbmRleCA5YWJjYzY1Li5jMDFjYTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvRG93bmxvYWRBcnJvdy5zdmcKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0Rvd25sb2FkQXJyb3cuc3Zn
CkBAIC0xLDExICsxLDggQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+
CiA8IS0tIENvcHlyaWdodCDCqSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4g
LS0+CiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB2aWV3Qm94PSIwIDAgMTYgMTYiPgotICAgIDxjbGlwUGF0aCBpZD0iMSI+Ci0gICAgICAgIDxw
YXRoIGQ9Ik0gNy41IDE1IEMgMTEuMDg5ODUgMTUgMTQgMTIuMDg5ODUxIDE0IDguNSBDIDE0IDQu
OTEwMTUgMTEuMDg5ODUgMiA3LjUgMiBDIDMuOTEwMTQ5IDIgMSA0LjkxMDE1IDEgOC41IEMgMSAx
Mi4wODk4NTEgMy45MTAxNDkgMTUgNy41IDE1IEwgNy41IDE1IFoiLz4KLSAgICA8L2NsaXBQYXRo
PgotICAgIDxnIGNsaXAtcGF0aD0idXJsKCMxKSIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9
InNxdWFyZSIgc3Ryb2tlPSJibGFjayI+Ci0gICAgICAgIDxwYXRoIGNsYXNzPSJzdHJva2VkIiBz
dHJva2Utd2lkdGg9IjIiIGQ9Ik0gNy41IDE1IEMgMTEuMDg5ODUgMTUgMTQgMTIuMDg5ODUgMTQg
OC41IEMgMTQgNC45MTAxNDkgMTEuMDg5ODUgMiA3LjUgMiBDIDMuOTEwMTQ5IDIgMSA0LjkxMDE0
OSAxIDguNSBDIDEgMTIuMDg5ODUgMy45MTAxNDkgMTUgNy41IDE1IEwgNy41IDE1IFoiLz4KKyAg
ICA8ZyBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiBzdHJva2U9ImJsYWNrIj4K
KyAgICAgICAgPGNpcmNsZSBjbGFzcz0ic3Ryb2tlZCIgY3g9IjcuNSIgY3k9IjguNSIgcj0iNiIv
PgogICAgICAgICA8cGF0aCBjbGFzcz0ic3Ryb2tlZCIgZD0iTSAxMC41IDguNSBMIDcuNSAxMS41
Ii8+CiAgICAgICAgIDxwYXRoIGNsYXNzPSJzdHJva2VkIiBkPSJNIDQuNSA4LjUgTCA3LjUgMTEu
NSIvPgogICAgICAgICA8cGF0aCBjbGFzcz0ic3Ryb2tlZCIgZD0iTSA3LjUgMyBMIDcuNSAxMC41
Ii8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5jc3MKaW5kZXggNzlhNjJk
OC4uMDFmZWFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24uY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50U3RhdHVzQnV0dG9uLmNzcwpA
QCAtMjksMjcgKzI5LDI3IEBACiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogfQogCi0uaXRl
bSA+IC5zdGF0dXMgPiAuc3RhdHVzLWJ1dHRvbiA+IHN2ZyBwYXRoLmZpbGxlZCB7CisuaXRlbSA+
IC5zdGF0dXMgPiAuc3RhdHVzLWJ1dHRvbiA+IHN2ZyAuZmlsbGVkIHsKICAgICBmaWxsOiByZ2Io
MTI4LCAxMjgsIDEyOCk7CiB9CiAKLWJvZHkubWFjLXBsYXRmb3JtLmxlZ2FjeSAuaXRlbSA+IC5z
dGF0dXMgPiAuc3RhdHVzLWJ1dHRvbiA+IHN2ZyBwYXRoLmZpbGxlZCB7Citib2R5Lm1hYy1wbGF0
Zm9ybS5sZWdhY3kgLml0ZW0gPiAuc3RhdHVzID4gLnN0YXR1cy1idXR0b24gPiBzdmcgLmZpbGxl
ZCB7CiAgICAgZmlsbDogcmdiKDY0LCA2NCwgNjQpOwogfQogCi06Zm9jdXMgLml0ZW0uc2VsZWN0
ZWQgPiAuc3RhdHVzID4gLnN0YXR1cy1idXR0b24gPiBzdmcgcGF0aC5maWxsZWQgeworOmZvY3Vz
IC5pdGVtLnNlbGVjdGVkID4gLnN0YXR1cyA+IC5zdGF0dXMtYnV0dG9uID4gc3ZnIC5maWxsZWQg
ewogICAgIGZpbGw6IHdoaXRlICFpbXBvcnRhbnQ7CiB9CiAKLS5pdGVtID4gLnN0YXR1cyA+IC5z
dGF0dXMtYnV0dG9uID4gc3ZnIHBhdGguc3Ryb2tlZCB7CisuaXRlbSA+IC5zdGF0dXMgPiAuc3Rh
dHVzLWJ1dHRvbiA+IHN2ZyAuc3Ryb2tlZCB7CiAgICAgc3Ryb2tlOiByZ2IoMTI4LCAxMjgsIDEy
OCk7CiB9CiAKLWJvZHkubWFjLXBsYXRmb3JtLmxlZ2FjeSAuaXRlbSA+IC5zdGF0dXMgPiAuc3Rh
dHVzLWJ1dHRvbiA+IHN2ZyBwYXRoLnN0cm9rZWQgeworYm9keS5tYWMtcGxhdGZvcm0ubGVnYWN5
IC5pdGVtID4gLnN0YXR1cyA+IC5zdGF0dXMtYnV0dG9uID4gc3ZnIC5zdHJva2VkIHsKICAgICBz
dHJva2U6IHJnYig2NCwgNjQsIDY0KTsKIH0KIAotOmZvY3VzIC5pdGVtLnNlbGVjdGVkID4gLnN0
YXR1cyA+IC5zdGF0dXMtYnV0dG9uID4gc3ZnIHBhdGguc3Ryb2tlZCB7Cis6Zm9jdXMgLml0ZW0u
c2VsZWN0ZWQgPiAuc3RhdHVzID4gLnN0YXR1cy1idXR0b24gPiBzdmcgLnN0cm9rZWQgewogICAg
IHN0cm9rZTogd2hpdGUgIWltcG9ydGFudDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA0ODU2ODM2Li44
OTg3N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgV2Vi
VmlldyAqbV93ZWJWaWV3OwogICAgIFJldGFpblB0cjxXZWJOb2RlSGlnaGxpZ2h0ZXI+IG1faGln
aGxpZ2h0ZXI7CiAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7Ci0gICAgV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQqIG1fZnJvbnRlbmRDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2Zyb250ZW5kQ2xpZW50OwogfTsKIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQubW0KaW5kZXggZGMzZTkyMy4uYzVhYWY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMTMz
LDggKzEzMyw3IEBAIEBlbmQKIFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50
KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICAgICAsIG1faGln
aGxpZ2h0ZXIoYWRvcHROUyhbW1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNw
ZWN0ZWRXZWJWaWV3OndlYlZpZXddKSkKLSAgICAsIG1fZnJvbnRlbmRQYWdlKDApCi0gICAgLCBt
X2Zyb250ZW5kQ2xpZW50KDApCisgICAgLCBtX2Zyb250ZW5kUGFnZShudWxscHRyKQogewogfQog
CkBAIC0xNTAsMTEgKzE0OSwxMyBAQCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkluc3Bl
Y3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbgogICAgIFt3aW5k
b3dDb250cm9sbGVyLmdldCgpIHNldEluc3BlY3RvckNsaWVudDp0aGlzXTsKIAogICAgIG1fZnJv
bnRlbmRQYWdlID0gY29yZShbd2luZG93Q29udHJvbGxlci5nZXQoKSB3ZWJWaWV3XSk7Ci0gICAg
YXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ+KG1fd2ViVmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdG9yQ29u
dHJvbGxlciwgbV9mcm9udGVuZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7Ci0gICAg
bV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5kQ2xpZW50LmdldCgpOwotICAgIFJldGFpblB0cjxX
ZWJJbnNwZWN0b3JGcm9udGVuZD4gd2ViSW5zcGVjdG9yRnJvbnRlbmQgPSBhZG9wdE5TKFtbV2Vi
SW5zcGVjdG9yRnJvbnRlbmQgYWxsb2NdIGluaXRXaXRoRnJvbnRlbmRDbGllbnQ6ZnJvbnRlbmRD
bGllbnQuZ2V0KCldKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV93ZWJWaWV3LCB3aW5kb3dDb250cm9sbGVyLmdl
dCgpLCBpbnNwZWN0b3JDb250cm9sbGVyLCBtX2Zyb250ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRT
ZXR0aW5ncygpKTsKKworICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZD4gd2ViSW5z
cGVjdG9yRnJvbnRlbmQgPSBhZG9wdE5TKFtbV2ViSW5zcGVjdG9yRnJvbnRlbmQgYWxsb2NdIGlu
aXRXaXRoRnJvbnRlbmRDbGllbnQ6bV9mcm9udGVuZENsaWVudC5nZXQoKV0pOwogICAgIFtbbV93
ZWJWaWV3IGluc3BlY3Rvcl0gc2V0RnJvbnRlbmQ6d2ViSW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCld
OwotICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7CisKKyAgICBtX2Zyb250
ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50
KG1fZnJvbnRlbmRDbGllbnQuZ2V0KCkpOworCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKQEAgLTE5
OSw4ICsyMDAsOCBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGlkU2V0U2VhcmNoaW5nRm9y
Tm9kZShib29sIGVuYWJsZWQpCiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpyZWxlYXNlRnJv
bnRlbmQoKQogewotICAgIG1fZnJvbnRlbmRDbGllbnQgPSAwOwotICAgIG1fZnJvbnRlbmRQYWdl
ID0gMDsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbnVsbHB0cjsKKyAgICBtX2Zyb250ZW5kUGFn
ZSA9IG51bGxwdHI7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNTkz
ODZjYi4uZDVkN2NlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTIxLDYg
KzEyMSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFdlYkljb25EYXRhYmFzZVByb3h5
IFwKICAgICBXZWJJbnNwZWN0b3IgXAogICAgIFdlYkluc3BlY3RvclByb3h5IFwKKyAgICBXZWJJ
bnNwZWN0b3JVSSBcCiAgICAgV2ViTWVkaWFDYWNoZU1hbmFnZXIgXAogICAgIFdlYk1lZGlhQ2Fj
aGVNYW5hZ2VyUHJveHkgXAogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSU9iamVjdC5oCmluZGV4IDZkZjQ5MTguLjkyMmU2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJT2JqZWN0LmgKQEAgLTE0Myw2ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEJ1bmRsZUZy
YW1lLAogICAgICAgICBCdW5kbGVIaXRUZXN0UmVzdWx0LAogICAgICAgICBCdW5kbGVJbnNwZWN0
b3IsCisgICAgICAgIEJ1bmRsZUluc3BlY3RvclVJLAogICAgICAgICBCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uLAogICAgICAgICBCdW5kbGVOb2RlSGFuZGxlLAogICAgICAgICBCdW5kbGVQYWdlLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAKaW5kZXgg
MTZlODQ1Yi4uZDg1ZjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tJbnNwZWN0b3IuY3BwCkBAIC0xNzQsNDQgKzE3NCw2IEBAIHZvaWQgV0tJbnNwZWN0b3JEZXRh
Y2goV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQogI2VuZGlmCiB9CiAKLWJvb2wgV0tJbnNw
ZWN0b3JJc0RlYnVnZ2luZ0phdmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQot
ewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgcmV0dXJuIHRvSW1wbChpbnNwZWN0b3JSZWYp
LT5pc0RlYnVnZ2luZ0phdmFTY3JpcHQoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGluc3Bl
Y3RvclJlZik7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLXZvaWQgV0tJbnNwZWN0
b3JUb2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikK
LXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHRvSW1wbChpbnNwZWN0b3JSZWYpLT50b2dn
bGVKYXZhU2NyaXB0RGVidWdnaW5nKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0
b3JSZWYpOwotI2VuZGlmCi19Ci0KLWJvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ0phdmFTY3Jp
cHQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQotewotI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgcmV0dXJuIHRvSW1wbChpbnNwZWN0b3JSZWYpLT5pc1Byb2ZpbGluZ0phdmFTY3JpcHQo
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGluc3BlY3RvclJlZik7Ci0gICAgcmV0dXJuIGZh
bHNlOwotI2VuZGlmCi19Ci0KLXZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0UHJvZmls
aW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9S
KQotICAgIHRvSW1wbChpbnNwZWN0b3JSZWYpLT50b2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKCk7
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0b3JSZWYpOwotI2VuZGlmCi19Ci0KIGJv
b2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ1BhZ2UoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVm
KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0luc3BlY3Rvci5oCmluZGV4IGJhNzY0ODkuLjE0NjU0ZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oCkBAIC01OCwxMiArNTgsNiBAQCBX
S19FWFBPUlQgYm9vbCBXS0luc3BlY3RvcklzQXR0YWNoZWQoV0tJbnNwZWN0b3JSZWYgaW5zcGVj
dG9yKTsKIFdLX0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9yQXR0YWNoKFdLSW5zcGVjdG9yUmVmIGlu
c3BlY3Rvcik7CiBXS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvckRldGFjaChXS0luc3BlY3RvclJl
ZiBpbnNwZWN0b3IpOwogCi1XS19FWFBPUlQgYm9vbCBXS0luc3BlY3RvcklzRGVidWdnaW5nSmF2
YVNjcmlwdChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwotV0tfRVhQT1JUIHZvaWQgV0tJbnNw
ZWN0b3JUb2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7
Ci0KLVdLX0VYUE9SVCBib29sIFdLSW5zcGVjdG9ySXNQcm9maWxpbmdKYXZhU2NyaXB0KFdLSW5z
cGVjdG9yUmVmIGluc3BlY3Rvcik7Ci1XS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvclRvZ2dsZUph
dmFTY3JpcHRQcm9maWxpbmcoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKLQogV0tfRVhQT1JU
IGJvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ1BhZ2UoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9y
KTsKIFdLX0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9yVG9nZ2xlUGFnZVByb2ZpbGluZyhXS0luc3Bl
Y3RvclJlZiBpbnNwZWN0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYklu
c3BlY3RvclByb3h5LmNwcAppbmRleCAxY2Q5NTg5Li5kN2RhZmQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNCw3ICszNCw3
IEBACiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIgotI2luY2x1
ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKQEAgLTExMCw2ICsxMTAsNyBA
QCBwcml2YXRlOgogICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0TG9nc1BhZ2VN
ZXNzYWdlc1RvU3lzdGVtQ29uc29sZUVuYWJsZWQodHJ1ZSk7CiAjZW5kaWYKIAorICAgICAgICBw
YWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKHRy
dWUpOwogICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0QXBwbGljYXRpb25DaHJv
bWVNb2RlRW5hYmxlZCh0cnVlKTsKIAogICAgICAgICByZXR1cm4gcGFnZUdyb3VwLnJlbGVhc2Uo
KTsKQEAgLTEyNCwxMyArMTI1LDEzIEBAIHByaXZhdGU6CiAKIFdlYkluc3BlY3RvclByb3h5OjpX
ZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkK
KyAgICAsIG1faW5zcGVjdG9yUGFnZShudWxscHRyKQogICAgICwgbV9pc1Zpc2libGUoZmFsc2Up
CiAgICAgLCBtX2lzQXR0YWNoZWQoZmFsc2UpCiAgICAgLCBtX2lzRGVidWdnaW5nSmF2YVNjcmlw
dChmYWxzZSkKICAgICAsIG1faXNQcm9maWxpbmdKYXZhU2NyaXB0KGZhbHNlKQogICAgICwgbV9p
c1Byb2ZpbGluZ1BhZ2UoZmFsc2UpCiAgICAgLCBtX3Nob3dNZXNzYWdlU2VudChmYWxzZSkKLSAg
ICAsIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UoZmFsc2UpCiAgICAgLCBtX2lnbm9yZUZpcnN0QnJp
bmdUb0Zyb250KGZhbHNlKQogICAgICwgbV9hdHRhY2htZW50U2lkZShBdHRhY2htZW50U2lkZUJv
dHRvbSkKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKQEAgLTMxNiwzNCArMzE3
LDYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNp
Z25lZCB3aWR0aCkKICAgICBwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgod2lkdGgpOwog
fQogCi12b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKCkK
LXsKLSAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1faXNEZWJ1
Z2dpbmdKYXZhU2NyaXB0KQotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCksIG1fcGFnZS0+cGFnZUlE
KCkpOwotICAgIGVsc2UKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjpTdGFydEphdmFTY3JpcHREZWJ1Z2dpbmcoKSwgbV9wYWdlLT5wYWdlSUQo
KSk7Ci0KLSAgICAvLyBGSVhNRTogaGF2ZSB0aGUgV2ViUHJvY2VzcyBub3RpZnkgdXMgb24gc3Rh
dGUgY2hhbmdlcy4KLSAgICBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdCA9ICFtX2lzRGVidWdnaW5n
SmF2YVNjcmlwdDsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlSmF2YVNjcmlw
dFByb2ZpbGluZygpCi17Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmIChtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdCkKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wSmF2YVNjcmlwdFByb2ZpbGluZygpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRKYXZhU2NyaXB0UHJvZmlsaW5nKCksIG1f
cGFnZS0+cGFnZUlEKCkpOwotCi0gICAgLy8gRklYTUU6IGhhdmUgdGhlIFdlYlByb2Nlc3Mgbm90
aWZ5IHVzIG9uIHN0YXRlIGNoYW5nZXMuCi0gICAgbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQgPSAh
bV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQ7Ci19Ci0KIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnRv
Z2dsZVBhZ2VQcm9maWxpbmcoKQogewogICAgIGlmICghbV9wYWdlKQpAQCAtNDI4LDI4ICs0MDEs
MjYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQo
KQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250
ZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2Up
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KICNlbmRpZgogCiAvLyBDYWxsZWQgYnkgV2ViSW5zcGVj
dG9yUHJveHkgbWVzc2FnZXMKLXZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3Rv
clBhZ2UodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMpCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVh
dGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikKIHsK
LSAgICBpbnNwZWN0b3JQYWdlSUQgPSAwOwotCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1faXNBdHRhY2hlZCA9IHNob3VsZE9wZW5BdHRhY2hlZCgpOwogICAgIG1f
YXR0YWNobWVudFNpZGUgPSBzdGF0aWNfY2FzdDxBdHRhY2htZW50U2lkZT4oaW5zcGVjdG9yUGFn
ZUdyb3VwKCktPnByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0YWNobWVudFNpZGUoKSk7CiAKLSAg
ICBXZWJQYWdlUHJveHkqIGluc3BlY3RvclBhZ2UgPSBwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBh
Z2UoKTsKLSAgICBBU1NFUlQoaW5zcGVjdG9yUGFnZSk7Ci0gICAgaWYgKCFpbnNwZWN0b3JQYWdl
KQorICAgIG1faW5zcGVjdG9yUGFnZSA9IHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpOwor
ICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOworICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpbnNwZWN0b3JQYWdlSUQgPSBpbnNwZWN0b3JQYWdlLT5w
YWdlSUQoKTsKLSAgICBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycyA9IGluc3BlY3RvclBhZ2UtPmNy
ZWF0aW9uUGFyYW1ldGVycygpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hDb25uZWN0
aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3BhZ2UtPnBhZ2VJRCgpKSwgbV9pbnNwZWN0b3JQ
YWdlLT5wYWdlSUQoKSk7CiAKICAgICBXS1BhZ2VQb2xpY3lDbGllbnRWMSBwb2xpY3lDbGllbnQg
PSB7CiAgICAgICAgIHsgMSwgdGhpcyB9LApAQCAtNDYxLDEyICs0MzIsMTAgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZSh1aW50NjRfdCYgaW5zcGVjdG9yUGFn
ZUlELCBXZWJQYWdlQ3IKICAgICAgICAgMCwgLyogZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UgKi8K
ICAgICB9OwogCi0gICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSShpbnNwZWN0b3JQ
YWdlKSwgJnBvbGljeUNsaWVudC5iYXNlKTsKKyAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50
KHRvQVBJKG1faW5zcGVjdG9yUGFnZSksICZwb2xpY3lDbGllbnQuYmFzZSk7CiAKICAgICBTdHJp
bmdCdWlsZGVyIHVybDsKLQogICAgIHVybC5hcHBlbmQoaW5zcGVjdG9yUGFnZVVSTCgpKTsKLQog
ICAgIHVybC5hcHBlbmRMaXRlcmFsKCI/ZG9ja1NpZGU9Iik7CiAKICAgICBpZiAobV9pc0F0dGFj
aGVkKSB7CkBAIC00ODMsMjkgKzQ1MiwyNCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVh
dGVJbnNwZWN0b3JQYWdlKHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcgogICAg
IH0gZWxzZQogICAgICAgICB1cmwuYXBwZW5kTGl0ZXJhbCgidW5kb2NrZWQiKTsKIAotICAgIG1f
cGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVS
TCgpKTsKLQotICAgIGluc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgdXJsLnRv
U3RyaW5nKCkpKTsKLQotICAgIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UgPSB0cnVlOworICAgIG1f
aW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVj
dG9yQmFzZVVSTCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwo
KSwgdXJsLnRvU3RyaW5nKCkpKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRl
SW5zcGVjdG9yUGFnZUZvclRlc3QodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMpCit2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdChJUEM6OkF0dGFjaG1lbnQgY29u
bmVjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgaW5zcGVjdG9yUGFnZUlEID0gMDsKLQogICAgIGlm
ICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzQXR0YWNoZWQgPSBmYWxzZTsK
IAotICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSA9IHBsYXRmb3JtQ3JlYXRlSW5zcGVj
dG9yUGFnZSgpOwotICAgIEFTU0VSVChpbnNwZWN0b3JQYWdlKTsKLSAgICBpZiAoIWluc3BlY3Rv
clBhZ2UpCisgICAgbV9pbnNwZWN0b3JQYWdlID0gcGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdl
KCk7CisgICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgaWYgKCFtX2luc3BlY3RvclBh
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluc3BlY3RvclBhZ2VJRCA9IGluc3BlY3RvclBh
Z2UtPnBhZ2VJRCgpOwotICAgIGluc3BlY3RvclBhZ2VQYXJhbWV0ZXJzID0gaW5zcGVjdG9yUGFn
ZS0+Y3JlYXRpb25QYXJhbWV0ZXJzKCk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCku
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JQ
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkVzdGFibGlzaENv
bm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsIG1fcGFnZS0+cGFnZUlEKCkpLCBtX2luc3Bl
Y3RvclBhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIFdLUGFnZVBvbGljeUNsaWVudFYxIHBvbGljeUNs
aWVudCA9IHsKICAgICAgICAgeyAxLCB0aGlzIH0sCkBAIC01MTcsMTMgKzQ4MSwxMCBAQCB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCh1aW50NjRfdCYg
aW5zcGVjdG9yUGFnZUlELCBXZQogICAgICAgICAwLCAvKiBkZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZSAqLwogICAgIH07CiAKLSAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KHRvQVBJKGluc3Bl
Y3RvclBhZ2UpLCAmcG9saWN5Q2xpZW50LmJhc2UpOworICAgIFdLUGFnZVNldFBhZ2VQb2xpY3lD
bGllbnQodG9BUEkobV9pbnNwZWN0b3JQYWdlKSwgJnBvbGljeUNsaWVudC5iYXNlKTsKIAotICAg
IG1fcGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFz
ZVVSTCgpKTsKLQotICAgIGluc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgaW5z
cGVjdG9yVGVzdFBhZ2VVUkwoKSkpOwotCi0gICAgbV9jcmVhdGVkSW5zcGVjdG9yUGFnZSA9IHRy
dWU7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFz
ZVVSTChpbnNwZWN0b3JCYXNlVVJMKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+bG9hZFJlcXVl
c3QoVVJMKFVSTCgpLCBpbnNwZWN0b3JUZXN0UGFnZVVSTCgpKSk7CiB9CiAKIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6Om9wZW4oKQpAQCAtNTM1LDE0ICs0OTYsMTYgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6b3BlbigpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRpZENsb3NlKCkKIHsK
LSAgICBpZiAoIW1fY3JlYXRlZEluc3BlY3RvclBhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RvclBh
Z2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlID0g
bnVsbHB0cjsKKwogICAgIG1faXNWaXNpYmxlID0gZmFsc2U7CiAgICAgbV9pc0RlYnVnZ2luZ0ph
dmFTY3JpcHQgPSBmYWxzZTsKICAgICBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdCA9IGZhbHNlOwog
ICAgIG1faXNQcm9maWxpbmdQYWdlID0gZmFsc2U7Ci0gICAgbV9jcmVhdGVkSW5zcGVjdG9yUGFn
ZSA9IGZhbHNlOwogICAgIG1fc2hvd01lc3NhZ2VTZW50ID0gZmFsc2U7CiAgICAgbV9pZ25vcmVG
aXJzdEJyaW5nVG9Gcm9udCA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDE3YTc0OTguLmFjZDEyYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzAsNiArMzAsNyBA
QAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNs
dWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNjIsNyAr
NjMsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBX
ZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7Ci1zdHJ1Y3QgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczsKIAogZW51bSBBdHRhY2htZW50U2lkZSB7CiAgICAgQXR0YWNobWVudFNpZGVC
b3R0b20sCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICAvLyBQdWJsaWMgQVBJcwogICAg
IFdlYlBhZ2VQcm94eSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQogCi0gICAgYm9v
bCBpc0Nvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRlZEluc3BlY3RvclBhZ2U7IH0K
KyAgICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvclBhZ2U7
IH0KICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaXNpYmxlOyB9CiAg
ICAgYm9vbCBpc0Zyb250KCk7CiAKQEAgLTEyMywxMiArMTIzLDYgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCk7CiAgICAgdm9pZCBzZXRUb29sYmFy
SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkgeyBwbGF0Zm9ybVNldFRvb2xiYXJIZWlnaHQoaGVpZ2h0
KTsgfQogCi0gICAgYm9vbCBpc0RlYnVnZ2luZ0phdmFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBt
X2lzRGVidWdnaW5nSmF2YVNjcmlwdDsgfQotICAgIHZvaWQgdG9nZ2xlSmF2YVNjcmlwdERlYnVn
Z2luZygpOwotCi0gICAgYm9vbCBpc1Byb2ZpbGluZ0phdmFTY3JpcHQoKSBjb25zdCB7IHJldHVy
biBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdDsgfQotICAgIHZvaWQgdG9nZ2xlSmF2YVNjcmlwdFBy
b2ZpbGluZygpOwotCiAgICAgYm9vbCBpc1Byb2ZpbGluZ1BhZ2UoKSBjb25zdCB7IHJldHVybiBt
X2lzUHJvZmlsaW5nUGFnZTsgfQogICAgIHZvaWQgdG9nZ2xlUGFnZVByb2ZpbGluZygpOwogCkBA
IC0xNTIsNyArMTQ2LDYgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQ
Qzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIFdlYlBh
Z2VQcm94eSogcGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCk7CiAgICAgdm9pZCBwbGF0Zm9y
bU9wZW4oKTsKQEAgLTE3Myw4ICsxNjYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1B
cHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKIAog
ICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JQcm94eSBtZXNzYWdlcwotICAgIHZvaWQgY3Jl
YXRlSW5zcGVjdG9yUGFnZSh1aW50NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJik7Ci0gICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCh1aW50
NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CisgICAg
dm9pZCBjcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCk7CisgICAgdm9pZCBjcmVh
dGVJbnNwZWN0b3JQYWdlRm9yVGVzdChJUEM6OkF0dGFjaG1lbnQpOwogICAgIHZvaWQgZGlkQ2xv
c2UoKTsKICAgICB2b2lkIGJyaW5nVG9Gcm9udCgpOwogICAgIHZvaWQgYXR0YWNoQXZhaWxhYmls
aXR5Q2hhbmdlZChib29sKTsKQEAgLTIwOSw2ICsyMDIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtQXR0YWNoZWRIZWlnaHQ7CiAKICAgICBXZWJQYWdlUHJv
eHkqIG1fcGFnZTsKKyAgICBXZWJQYWdlUHJveHkqIG1faW5zcGVjdG9yUGFnZTsKIAogICAgIGJv
b2wgbV9pc1Zpc2libGU7CiAgICAgYm9vbCBtX2lzQXR0YWNoZWQ7CkBAIC0yMTYsNyArMjEwLDYg
QEAgcHJpdmF0ZToKICAgICBib29sIG1faXNQcm9maWxpbmdKYXZhU2NyaXB0OwogICAgIGJvb2wg
bV9pc1Byb2ZpbGluZ1BhZ2U7CiAgICAgYm9vbCBtX3Nob3dNZXNzYWdlU2VudDsKLSAgICBib29s
IG1fY3JlYXRlZEluc3BlY3RvclBhZ2U7CiAgICAgYm9vbCBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zy
b250OwogCiAgICAgLy8gVGhlIGRlYnVnZ2VyIHN0b3BzIGFsbCB0aGUgcGFnZXMgaW4gdGhlIHNh
bWUgUGFnZUdyb3VwLiBIYXZpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlNmM5NDRkLi41MDMyMzRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMywxMCArMjMsMTIgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiBtZXNzYWdlcyAt
PiBXZWJJbnNwZWN0b3JQcm94eSB7Ci0gICAgQ3JlYXRlSW5zcGVjdG9yUGFnZSgpIC0+ICh1aW50
NjRfdCBpbnNwZWN0b3JQYWdlSUQsIFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBp
bnNwZWN0b3JQYWdlUGFyYW1ldGVycykKLSAgICBDcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgp
IC0+ICh1aW50NjRfdCBpbnNwZWN0b3JQYWdlSUQsIFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycykKKyAgICBDcmVhdGVJbnNwZWN0b3JQYWdl
KElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICBDcmVhdGVJbnNwZWN0
b3JQYWdlRm9yVGVzdChJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIpCisKICAg
ICBEaWRDbG9zZSgpCiAgICAgQnJpbmdUb0Zyb250KCkKKwogICAgIEluc3BlY3RlZFVSTENoYW5n
ZWQoU3RyaW5nIHVybFN0cmluZykKIAogICAgIFNhdmUoU3RyaW5nIGZpbGVuYW1lLCBTdHJpbmcg
Y29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKQpAQCAtMzUsNiAr
MzcsNyBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JQcm94eSB7CiAgICAgQXR0YWNoQm90dG9t
KCkKICAgICBBdHRhY2hSaWdodCgpCiAgICAgRGV0YWNoKCkKKwogICAgIEF0dGFjaEF2YWlsYWJp
bGl0eUNoYW5nZWQoYm9vbCBhdmFpbGFibGUpCiAKICAgICBTZXRBdHRhY2hlZFdpbmRvd0hlaWdo
dCh1bnNpZ25lZCBoZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCBjNmM2NjhjLi4zZDQxN2IyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIldLVVJMQ0YuaCIKICNpbXBvcnQgIldLVmlld1By
aXZhdGUuaCIKICNpbXBvcnQgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCisjaW1wb3J0ICJXZWJJ
bnNwZWN0b3JVSU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIKICNpbXBvcnQg
IldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXMuaCIKQEAgLTQxOCw3ICs0
MTksNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUlu
c3BlY3RvclBhZ2UoKQogICAgICAgICAgICAgaW5pdGlhbFJlY3QgPSBbTlNXaW5kb3cgY29udGVu
dFJlY3RGb3JGcmFtZVJlY3Q6d2luZG93RnJhbWUgc3R5bGVNYXNrOndpbmRvd1N0eWxlTWFza107
CiAgICAgfQogCi0gICAgbV9pbnNwZWN0b3JWaWV3ID0gYWRvcHROUyhbW1dLV2ViSW5zcGVjdG9y
V0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmluaXRpYWxSZWN0IGNvbnRleHRSZWY6dG9BUEko
JnBhZ2UoKS0+cHJvY2VzcygpLmNvbnRleHQoKSkgcGFnZUdyb3VwUmVmOnRvQVBJKGluc3BlY3Rv
clBhZ2VHcm91cCgpKSByZWxhdGVkVG9QYWdlOnRvQVBJKG1fcGFnZSldKTsKKyAgICBtX2luc3Bl
Y3RvclZpZXcgPSBhZG9wdE5TKFtbV0tXZWJJbnNwZWN0b3JXS1ZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6aW5pdGlhbFJlY3QgY29udGV4dFJlZjp0b0FQSSgmcGFnZSgpLT5wcm9jZXNzKCkuY29u
dGV4dCgpKSBwYWdlR3JvdXBSZWY6dG9BUEkoaW5zcGVjdG9yUGFnZUdyb3VwKCkpIHJlbGF0ZWRU
b1BhZ2U6bnVsbHB0cl0pOwogICAgIEFTU0VSVChtX2luc3BlY3RvclZpZXcpOwogCiAjaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSAxMDkwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzUzNWY2ZS4uMDFiNDBm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNDk1LDEwICs0OTUsMTAgQEAKIAkJMUFGRTQzNjUxOEI2QzA4MTAwOUM3QTQ4IC8q
IFVJRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUZFNDM2MzE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJ
MUFGRTQzNjYxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRkU0MzY0MThCNkMwODEwMDlDN0E0OCAv
KiBVSURlbGVnYXRlLmggKi87IH07CiAJCTFBRkY0OTAwMTgzM0RFNzgwMDlBQjE1QSAvKiBXS0Rl
cHJlY2F0ZWRGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFGRjQ4RkUxODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1bmN0
aW9ucy5jcHAgKi87IH07CisJCTFDODkxRDY1MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0
b3JVSS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
Qzg5MUQ2MjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwICovOyB9OworCQkx
Qzg5MUQ2NjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODkxRDYzMTlCMTI0RkYwMEJBNzlE
RCAvKiBXZWJJbnNwZWN0b3JVSS5oICovOyB9OwogCQkxQzhBRTc2MTE5OTJGNjNBMDBBQkY2RUMg
LyogRG9ja0JvdHRvbUxlZ2FjeS5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDOEFFNzVGMTk5MkY2MkYwMEFCRjZFQyAvKiBEb2NrQm90dG9tTGVn
YWN5LnBkZiAqLzsgfTsKIAkJMUM4QUU3NjIxOTkyRjYzQzAwQUJGNkVDIC8qIERvY2tSaWdodExl
Z2FjeS5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDOEFFNzYwMTk5MkY2MkYwMEFCRjZFQyAvKiBEb2NrUmlnaHRMZWdhY3kucGRmICovOyB9Owot
CQkxQzhFMjVBODEyNzBFM0JCMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI1
NkIxMjcwREUzODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCAqLzsg
fTsKLQkJMUM4RTI1QTkxMjcwRTNCQzAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhF
MjU2QTEyNzBERTM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLzsg
fTsKIAkJMUM4RTI4MjAxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI4MUUxMjc1RDE1NDAw
QkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oICovOyB9OwogCQkxQzhFMjgyMTEyNzVEMTU0MDBCQzdC
RDAgLyogV2ViSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDOEUyODFGMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3Bw
ICovOyB9OwogCQkxQzhFMjgzNDEyNzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyODMy
MTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oICovOyB9OwpAQCAtNTEwLDgg
KzUxMCwxMCBAQAogCQkxQ0E4QjkzNjEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJv
eHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
Q0E4QjkzNTEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gKi87IH07
CiAJCTFDQThCOTQ1MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQ0E4Qjk0MzEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OwogCQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVj
dG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUNBOEI5NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVz
c2FnZXMuaCAqLzsgfTsKLQkJMUNBOEI5NTQxMjdDODkxNTAwNTc2QzJCIC8qIFdlYkluc3BlY3Rv
ck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
OEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNYWMubW0gKi87IH07CisJCTFD
QThCOTU0MTI3Qzg5MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyREFEMTI3OEM1QjIwMEJD
N0JEMCAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSAqLzsgfTsKIAkJMUNCNzVDOTQxNzAxRTg4MDAw
OUY4MDlGIC8qIERvY2tSaWdodC5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDQjc1QzkzMTcwMUU4ODAwMDlGODA5RiAvKiBEb2NrUmlnaHQucGRm
ICovOyB9OworCQkxQ0JCRTRBMDE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKKwkJMUNCQkU0QTExOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3Bl
Y3RvclVJTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDQkJFNDlGMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2Vz
LmggKi87IH07CiAJCTFDQkM5NDVFMTY1MTVFRDIwMEQ2OEFBRSAvKiBEb2NrQm90dG9tLnBkZiBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCQzk0NUQx
NjUxNUVEMjAwRDY4QUFFIC8qIERvY2tCb3R0b20ucGRmICovOyB9OwogCQkxRjMzNUJDMDE4NUI4
NEYwMDAxQTIwMUEgLyogV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjMzNUJCRjE4NUI4NEQ4MDAx
QTIwMUEgLyogV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUY2MDRCQTgxODg5RkE3NDAwRUUw
Mzk1IC8qIFdLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGNjA0QkE2MTg4OUZBNzQwMEVFMDM5NSAvKiBXS1Jl
bmRlcmluZ1Byb2dyZXNzRXZlbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTI0ODEsMTAgKzI0ODMsMTEgQEAKIAkJMUFGRjQ4RkUxODMzREU3
ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQkI0MTdDOTEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNr
ZXJDb21wbGV0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRl
eHRDaGVja2VyQ29tcGxldGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
NzdDMTk1MTI4OEE4NzIwMDZBNzQyRiAvKiBXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM4OTFENjIxOUIxMjRGRjAwQkE3OUREIC8qIFdl
Ykluc3BlY3RvclVJLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
Ykluc3BlY3RvclVJLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM4OTFENjMx
OUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclVJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDODkxRDY0MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4QUU3NUYxOTkyRjYyRjAwQUJGNkVDIC8qIERv
Y2tCb3R0b21MZWdhY3kucGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBuYW1lID0gRG9ja0JvdHRvbUxlZ2FjeS5wZGY7IHBhdGgg
PSBSZXNvdXJjZXMvRG9ja0JvdHRvbUxlZ2FjeS5wZGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDOEFFNzYwMTk5MkY2MkYwMEFCRjZFQyAvKiBEb2NrUmlnaHRMZWdhY3kucGRmICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRm
OyBuYW1lID0gRG9ja1JpZ2h0TGVnYWN5LnBkZjsgcGF0aCA9IFJlc291cmNlcy9Eb2NrUmlnaHRM
ZWdhY3kucGRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzhFMjU2QTEyNzBERTM4
MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4RTI1NkIxMjcwREUzODAwQkM3QkQwIC8qIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUM4RTI4MUUxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RTI4MUYxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzhFMjgzMjEyNzVENzM4MDBCQzdC
RDAgLyogV2ViSW5zcGVjdG9yUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViSW5zcGVjdG9yUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0
OTQsMTEgKzI0OTcsMTMgQEAKIAkJMUM4RTJBMUMxMjc3ODMzRjAwQkM3QkQwIC8qIFdlYkluc3Bl
Y3Rvci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3IubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEUyQTMxMTI3Nzg1MjQw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RTJBMzIxMjc3ODUyNDAwQkM3QkQwIC8q
IFdlYkluc3BlY3Rvck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkluc3BlY3Rvck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFD
OEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNYWMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNw
ZWN0b3JVSU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
Ykluc3BlY3RvclVJTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0E4Qjkz
NTEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBOEI5NDMxMjdDODgyQTAwNTc2QzJCIC8qIFdl
Ykluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBOEI5NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdl
Ykluc3BlY3RvclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQ0I3NUM5MzE3MDFFODgwMDA5RjgwOUYgLyogRG9ja1JpZ2h0LnBkZiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBkZjsgbmFtZSA9
IERvY2tSaWdodC5wZGY7IHBhdGggPSBSZXNvdXJjZXMvRG9ja1JpZ2h0LnBkZjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3Bl
Y3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUNCQkU0OUYxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJ
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9y
VUlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0JDOTQ1RDE2NTE1
RUQyMDBENjhBQUUgLyogRG9ja0JvdHRvbS5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7IG5hbWUgPSBEb2NrQm90dG9tLnBkZjsg
cGF0aCA9IFJlc291cmNlcy9Eb2NrQm90dG9tLnBkZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUNDNDE3QzkxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0Q2hlY2tlckNvbXBsZXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYwMTgxNjkxODU4REMxNTAwRjkyODg0
IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC01Njc4LDggKzU2ODMsNiBAQAogCQkJCUJDMUJFMURFMTJENTRBNDEwMDA0QTIyOCAv
KiBXZWJHZW9sb2NhdGlvbkNsaWVudC5oICovLAogCQkJCUJDMTExQTU5MTEyRjRGQkIwMDMzN0JB
QiAvKiBXZWJJbnNwZWN0b3JDbGllbnQuY3BwICovLAogCQkJCUJDMDMyRDZEMTBGNDM3OEQwMDU4
QzE1QSAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCAqLywKLQkJCQkxQzhFMjU2QjEyNzBERTM4MDBC
QzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwICovLAotCQkJCTFDOEUyNTZB
MTI3MERFMzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oICovLAogCQkJ
CTMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwICov
LAogCQkJCTMxMDk5OTY4MTQ2QzcxRjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQu
aCAqLywKIAkJCQk1MTIxMjdDMTE5MDgyMzlBMDBEQUYzNUMgLyogV2ViUGFzdGVib2FyZE92ZXJy
aWRlcy5jcHAgKi8sCkBAIC01NzM5LDYgKzU3NDIsOSBAQAogCQkJCTFDOEUyODFGMTI3NUQxNTQw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3BwICovLAogCQkJCTFDOEUyODFFMTI3NUQxNTQwMEJD
N0JEMCAvKiBXZWJJbnNwZWN0b3IuaCAqLywKIAkJCQkxQzhFMkExQzEyNzc4MzNGMDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluICovLAorCQkJCTFDODkxRDYyMTlCMTI0RkYwMEJB
NzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgKi8sCisJCQkJMUM4OTFENjMxOUIxMjRGRjAwQkE3
OUREIC8qIFdlYkluc3BlY3RvclVJLmggKi8sCisJCQkJMUM4OTFENjQxOUIxMjRGRjAwQkE3OURE
IC8qIFdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluICovLAogCQkJCUJDODU3Rjg0MTJCODJEMEIw
MEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgKi8sCiAJCQkJQkM4NTdG
ODMxMkI4MkQwQjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi8sCiAJ
CQkJQkM5NjNENkExMTNERDE5MjAwNTc0QkUyIC8qIFdlYlBhZ2UuY3BwICovLApAQCAtNjQ4Nyw3
ICs2NDkzLDcgQEAKIAkJCQk1MTkyRDU3NTE5NjFGRDAzMDBDRDE5QUEgLyogU2VydmljZXNPdmVy
bGF5Q29udHJvbGxlci5tbSAqLywKIAkJCQkxQUFGMjYzNzE0Njg3QzM5MDA0QTFFOEEgLyogVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCAqLywKIAkJCQkxQUFGMjYzNjE0Njg3QzM5MDA0
QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gKi8sCi0JCQkJMUM4RTJE
QUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1hYy5tbSAqLywKKwkJCQkxQzhFMkRB
RDEyNzhDNUIyMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yVUlNYWMubW0gKi8sCiAJCQkJQkM5NjNE
NkQxMTNERDFBNTAwNTc0QkUyIC8qIFdlYlBhZ2VNYWMubW0gKi8sCiAJCQkJMjlDRDU1QTgxMjhF
Mjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggKi8sCiAJ
CQkJMjlDRDU1QTkxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLm1tICovLApAQCAtNjg0Myw2ICs2ODQ5LDggQEAKIAkJCQkxQzhFMkEzMjEyNzc4NTI0
MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCAqLywKIAkJCQkxQ0E4Qjk0MzEyN0M4
ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAog
CQkJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2Vz
LmggKi8sCisJCQkJMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQkxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2Vi
SW5zcGVjdG9yVUlNZXNzYWdlcy5oICovLAogCQkJCTMzRDNBM0M0MTMzOTYxNzkwMDcwOUJFNCAv
KiBXZWJNZWRpYUNhY2hlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMzNEM0Ez
QzUxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyTWVzc2FnZXMuaCAqLywK
IAkJCQkzM0QzQTNDNjEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC03NDU3LDYgKzc0NjUsNyBAQAogCQkJCTJEQUNF
NjRFMThBREJGRjAwMEU0Q0E3NiAvKiBfV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxNTc4QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNkEyNUZERDEyQURDNkNDMDBEQzQwQ0MgLyogV2ViRGF0YWJhc2VNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzg5MUQ2NjE5QjEyNEZGMDBCQTc5REQgLyogV2Vi
SW5zcGVjdG9yVUkuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2MkE3NkI3MTJCMUIyNUYwMDA1RjFC
NiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYy
QTc2NUQxMkIxQUJDMzAwMDVGMUI2IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRDZBQjU0MTE5MkIxQzRBMDAzQTlGRDEgLyogV0tQREZQYWdlTnVtYmVy
SW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTc1MTMsNyArNzUyMiw2IEBACiAJCQkJMUM4
RTI4MjAxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUEzQ0MxNjcxODkwNkFDRjAwMUU2RUQ4IC8qIFdLV2ViVmlldy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMwMzJEODIxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkluc3BlY3RvckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMUM4RTI1QTkxMjcwRTNCQzAwQkM3QkQwIC8qIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzhFMkEzNjEyNzc4NTI0MDBC
QzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUy
ODM0MTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUNBOEI5NDYxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzc4Miw2ICs3NzkwLDcgQEAKIAkJCQlGNjM0NDQ1RDEy
QTg4NUU5MDAwNjEyRDggLyogV0tTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFBRjA4QjgxOTI2OUU2RDAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlck1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYwNDEyNEZGMDI3MDA2OEYyMEEgLyogV0tT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTFDQkJFNEExMTlCNjZD
NTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkNCNEU0QzE4QkJFMDQ0MDAwRkNGQzkgLyogV0tDb250ZW50Vmlldy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzdBNjRFNTcxOEYzOEY0NjAwRUIzMEYxIC8qIF9XS0Zvcm1JbnB1dFNlc3Npb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTFGNjA0QkFBMTg4OUZCQjgwMEVFMDM5NSAvKiBXS1JlbmRl
cmluZ1Byb2dyZXNzRXZlbnRzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtODkwMCw2ICs4
OTA5LDcgQEAKIAkJCQkwMEI5NjYxOTE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTFBRTVCN0ZCMTFFN0FFRDIwMEJBNjc2NyAvKiBOZXRzY2FwZVBs
dWdpbk1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDMzYxRDcyMTkyN0ZBMzYwMDM2QTU5RCAv
KiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQzg5MUQ2
NTE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUE0QTlDNTUxMkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBNEE5QzlBMTJCODIxQ0QwMDhGRTk4NCAvKiBOZXRzY2FwZVBs
dWdpbk1vZHVsZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQTU4ODkzMTFFRTcwNDAwMDYx
Qjg4MiAvKiBOZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg5Mzgs
NiArODk0OCw3IEBACiAJCQkJMUEyRDg0MzkxMjdGNjVENTAwMUVCOTYyIC8qIE5QT2JqZWN0TWVz
c2FnZVJlY2VpdmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQUYw
OEFEMTkyNjkzNjcwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUEyRDgyQTYxMjdGNEVBQjAwMUVCOTYyIC8qIE5QT2JqZWN0UHJveHku
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUNCQkU0QTAxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYklu
c3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ4MkE4
MTI3RjRFQUIwMDFFQjk2MiAvKiBOUFJlbW90ZU9iamVjdE1hcC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQTIxNjFCMTExRjM3NjY0MDA4QUQwRjUgLyogTlBSdW50aW1lT2JqZWN0TWFwLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBMjE2MkIwMTFGMzg5NzEwMDhBRDBGNSAvKiBOUFJ1bnRpbWVV
dGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MTk3LDggKzkyMDgsNyBAQAogCQkJCUJD
Q0Y2QUJDMTJDOTFFRjkwMDhGOUMzNSAvKiBXZWJJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQzhFMjgyMTEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDMTExQTYwMTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJJbnNwZWN0b3JDbGllbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUM4RTI1QTgxMjcwRTNCQjAwQkM3QkQwIC8qIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFDQThCOTU0MTI3
Qzg5MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkx
Q0E4Qjk1NDEyN0M4OTE1MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yVUlNYWMubW0gaW4gU291cmNl
cyAqLywKIAkJCQkxQzhFMkEzNTEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDOEUyODM1MTI3NUQ3MzgwMEJDN0JE
MCAvKiBXZWJJbnNwZWN0b3JQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQ0E4QjkzNjEy
N0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA1MDFkNDFjLi5hZDM2OWIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NCwyMCArODQsMjMgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCiAKIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQo
SW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlcikKIHsKLSAgICBXZWJQYWdlKiBpbnNwZWN0
b3JQYWdlID0gY29udHJvbGxlci0+aXNVbmRlclRlc3QoKSA/IG1fcGFnZS0+aW5zcGVjdG9yKCkt
PmNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KCkgOiBtX3BhZ2UtPmluc3BlY3RvcigpLT5jcmVh
dGVJbnNwZWN0b3JQYWdlKCk7Ci0gICAgQVNTRVJUX1VOVVNFRChpbnNwZWN0b3JQYWdlLCBpbnNw
ZWN0b3JQYWdlKTsKLSAgICByZXR1cm4gdGhpczsKKyAgICBpZiAoY29udHJvbGxlci0+aXNVbmRl
clRlc3QoKSkKKyAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y3JlYXRlSW5zcGVjdG9yUGFn
ZUZvclRlc3QoKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmNyZWF0
ZUluc3BlY3RvclBhZ2UoKTsKKworICAgIHJldHVybiBtX3BhZ2UtPmluc3BlY3RvcigpOwogfQog
CiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpCiB7Ci0g
ICAgaWYgKG1fcGFnZS0+aW5zcGVjdG9yKCkpCi0gICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCkt
PmRpZENsb3NlKCk7CisvLyAgICBpZiAobV9wYWdlLT5pbnNwZWN0b3IoKSkKKy8vICAgICAgICBt
X3BhZ2UtPmluc3BlY3RvcigpLT5kaWRDbG9zZSgpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNs
aWVudDo6YnJpbmdGcm9udGVuZFRvRnJvbnQoKQogewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCkt
PmJyaW5nVG9Gcm9udCgpOworLy8gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YnJpbmdUb0Zyb250
KCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRSZXNpemVNYWluRnJhbWUoRnJh
bWUqKQpAQCAtMTk3LDI2ICsyMDAsNiBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGlkU2V0
U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQpCiB9CiAjZW5kaWYKIAotYm9vbCBXZWJJbnNw
ZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
Ci17Ci0gICAgV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSBtX3BhZ2UtPmluc3BlY3RvcigpOwot
ICAgIGlmICghaW5zcGVjdG9yKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSNpZiBFTkFCTEUo
SU5TUEVDVE9SX1NFUlZFUikKLSAgICBpZiAoaW5zcGVjdG9yLT5oYXNSZW1vdGVGcm9udGVuZENv
bm5lY3RlZCgpKSB7Ci0gICAgICAgIGluc3BlY3Rvci0+c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250
ZW5kKG1lc3NhZ2UpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKLQotICAg
IFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UgPSBpbnNwZWN0b3ItPmluc3BlY3RvclBhZ2UoKTsKLSAg
ICBpZiAoaW5zcGVjdG9yUGFnZSkKLSAgICAgICAgcmV0dXJuIGRvRGlzcGF0Y2hNZXNzYWdlT25G
cm9udGVuZFBhZ2UoaW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKSwgbWVzc2FnZSk7Ci0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzdXBwb3J0c0ZyYW1l
SW5zdHJ1bWVudGF0aW9uKCkKIHsKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA3MDMzYmRlLi4wYzc5ZThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJQYWdlOwogY2xhc3MgUmVwYWludEluZGljYXRvckxheWVyQ2xpZW50OwogCi1jbGFzcyBX
ZWJJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJs
aWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLCBwcml2YXRlIFBhZ2VPdmVybGF5
OjpDbGllbnQgeworY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Oklu
c3BlY3RvckNsaWVudCwgcHJpdmF0ZSBQYWdlT3ZlcmxheTo6Q2xpZW50IHsKIGZyaWVuZCBjbGFz
cyBSZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ7CiBwdWJsaWM6CiAgICAgV2ViSW5zcGVjdG9y
Q2xpZW50KFdlYlBhZ2UqKTsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6
Okluc3BlY3RvckNvbnRyb2xsZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJ
bnNwZWN0b3JGcm9udGVuZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250
ZW5kVG9Gcm9udCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNpemVNYWluRnJh
bWUoV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKQEAgLTcyLDggKzcyLDYgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGJvb2wgb3ZlcnJpZGVzU2hvd1BhaW50UmVjdHMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNob3dQYWludFJlY3QoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZE1l
c3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotCiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzRnJhbWVJbnN0cnVtZW50YXRpb24oKTsKIAogICAgIC8vIFBhZ2VPdmVybGF5
OjpDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5jcHAKaW5kZXggYzViYjJkYS4uM2FlY2MwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDE0ICsyOCwxNSBA
QAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICNpbmNsdWRlICJXZWJGcmFtZS5oIgotI2luY2x1
ZGUgIldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9y
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKLSNp
bmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01h
aW5GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4K
ICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg+CkBAIC00NiwxOSArNDcs
MTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Q
YXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gV2ViSW5zcGVjdG9yOjpjcmVhdGUoV2ViUGFnZSogcGFn
ZSwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwpCitQYXNzUmVmUHRy
PFdlYkluc3BlY3Rvcj4gV2ViSW5zcGVjdG9yOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvcihwYWdlLCBmcm9udGVuZENoYW5uZWwp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvcihwYWdlKSk7CiB9CiAKLVdl
Ykluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlBhZ2UqIHBhZ2UsIEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQorV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2Vi
UGFnZSogcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQotICAgICwgbV9pbnNwZWN0b3JQYWdlKG51
bGxwdHIpCi0gICAgLCBtX2Zyb250ZW5kQ2xpZW50KG51bGxwdHIpCi0gICAgLCBtX2Zyb250ZW5k
Q2hhbm5lbChmcm9udGVuZENoYW5uZWwpCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgLCBtX2hh
c0xvY2FsaXplZFN0cmluZ3NVUkwoZmFsc2UpCi0jZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVDVE9S
X1NFUlZFUikKICAgICAsIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoZmFsc2UpCiAjZW5kaWYK
QEAgLTY2LDEyOCArNjEsNDkgQEAgV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2ViUGFnZSog
cGFnZSwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW4KIH0KIAogLy8gQ2Fs
bGVkIGZyb20gV2ViSW5zcGVjdG9yQ2xpZW50Ci1XZWJQYWdlKiBXZWJJbnNwZWN0b3I6OmNyZWF0
ZUluc3BlY3RvclBhZ2UoKQordm9pZCBXZWJJbnNwZWN0b3I6OmNyZWF0ZUluc3BlY3RvclBhZ2Uo
KQogewogICAgIGlmICghbV9wYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEFT
U0VSVCghbV9pbnNwZWN0b3JQYWdlKTsKLSAgICBBU1NFUlQoIW1fZnJvbnRlbmRDbGllbnQpOwot
Ci0gICAgdWludDY0X3QgaW5zcGVjdG9yUGFnZUlEID0gMDsKLSAgICBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6Q3JlYXRlSW5zcGVjdG9yUGFnZSgpLAotICAgICAgICAgICAgTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjpDcmVhdGVJbnNwZWN0b3JQYWdlOjpSZXBseShpbnNwZWN0b3JQYWdlSUQs
IHBhcmFtZXRlcnMpLAotICAgICAgICAgICAgbV9wYWdlLT5wYWdlSUQoKSwgc3RkOjpjaHJvbm86
Om1pbGxpc2Vjb25kczo6bWF4KCkpKSB7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
KyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFpbnNwZWN0b3JQYWdlSUQpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOworI2lmIE9TKERBUldJTikKKyAgICBtYWNoX3BvcnRfdCBsaXN0ZW5pbmdQ
b3J0OworICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRf
UklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOwogCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkuY3JlYXRlV2ViUGFnZShpbnNwZWN0b3JQYWdlSUQsIHBhcmFtZXRlcnMpOwotICAgIG1faW5z
cGVjdG9yUGFnZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYlBhZ2UoaW5zcGVjdG9yUGFnZUlE
KTsKLSAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlv
biA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCksIHRoaXMsIFJ1bkxvb3A6Om1haW4oKSk7Cisg
ICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPnNldE9ubHlTZW5kTWVzc2FnZXNBc0Rpc3BhdGNoV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHlXaGVuUHJvY2Vzc2luZ1N1Y2hBTWVzc2FnZSh0cnVlKTsKKyAg
ICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+b3BlbigpOwogCi0gICAgYXV0byBmcm9udGVuZENsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fcGFnZSwg
bV9pbnNwZWN0b3JQYWdlKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQu
Z2V0KCk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50
KSk7Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9yUGFnZTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6Q3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQobGlzdGVuaW5nUG9ydCwg
TUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisjZWxzZQorICAg
IG5vdEltcGxlbWVudGVkKCk7CisjZW5kaWYKIH0KIAotV2ViUGFnZSogV2ViSW5zcGVjdG9yOjpj
cmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgpCit2b2lkIFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5z
cGVjdG9yUGFnZUZvclRlc3QoKQogewogICAgIGlmICghbV9wYWdlKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JQYWdlKTsKLSAgICBBU1NFUlQoIW1f
ZnJvbnRlbmRDbGllbnQpOwotCi0gICAgdWludDY0X3QgaW5zcGVjdG9yUGFnZUlEID0gMDsKLSAg
ICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6Q3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QoKSwKLSAg
ICAgICAgICAgIE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6Q3JlYXRlSW5zcGVjdG9yUGFn
ZUZvclRlc3Q6OlJlcGx5KGluc3BlY3RvclBhZ2VJRCwgcGFyYW1ldGVycyksCi0gICAgICAgICAg
ICBtX3BhZ2UtPnBhZ2VJRCgpLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzOjptYXgoKSkpIHsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoIWluc3BlY3RvclBhZ2VJRCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisjaWYgT1MoREFS
V0lOKQorICAgIG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7CisgICAgbWFjaF9wb3J0X2FsbG9j
YXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5n
UG9ydCk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jcmVhdGVXZWJQYWdlKGluc3BlY3Rv
clBhZ2VJRCwgcGFyYW1ldGVycyk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlID0gV2ViUHJvY2Vzczo6
c2hhcmVkKCkud2ViUGFnZShpbnNwZWN0b3JQYWdlSUQpOwotICAgIEFTU0VSVChtX2luc3BlY3Rv
clBhZ2UpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVh
dGVTZXJ2ZXJDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQ
b3J0KSwgdGhpcywgUnVuTG9vcDo6bWFpbigpKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+
c2V0T25seVNlbmRNZXNzYWdlc0FzRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseVdoZW5Q
cm9jZXNzaW5nU3VjaEFNZXNzYWdlKHRydWUpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5v
cGVuKCk7CiAKLSAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9wYWdlLCBtX2luc3BlY3RvclBhZ2UpOwotICAgIG1f
ZnJvbnRlbmRDbGllbnQgPSBmcm9udGVuZENsaWVudC5nZXQoKTsKLSAgICBtX2luc3BlY3RvclBh
Z2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVu
ZENsaWVudChXVEY6Om1vdmUoZnJvbnRlbmRDbGllbnQpKTsKLSAgICByZXR1cm4gbV9pbnNwZWN0
b3JQYWdlOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpDcmVhdGVJbnNwZWN0b3JQYWdl
Rm9yVGVzdChJUEM6OkF0dGFjaG1lbnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtF
X1NFTkQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7
CisjZW5kaWYKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OmRlc3Ryb3lJbnNwZWN0b3JQYWdlKCkK
IHsKLSAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRyOwotICAgIG1fZnJvbnRlbmRDbGllbnQg
PSBudWxscHRyOworI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQogICAgIG1fZnJvbnRlbmRD
aGFubmVsID0gbnVsbHB0cjsKLX0KLQotLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQKLXZvaWQgV2ViSW5zcGVjdG9yOjpkaWRDbG9zZSgpCi17Ci0gICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAgIGRlc3Ry
b3lJbnNwZWN0b3JQYWdlKCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpicmluZ1RvRnJvbnQo
KQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjppbnNwZWN0ZWRVUkxDaGFuZ2Vk
KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQot
Ci12b2lkIFdlYkluc3BlY3Rvcjo6c2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykKLXsK
LSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2F2ZShmaWxlbmFtZSwgY29udGVudCwgYmFz
ZTY0RW5jb2RlZCwgZm9yY2VTYXZlQXMpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBX
ZWJJbnNwZWN0b3I6OmFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnQpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkFwcGVuZChmaWxlbmFt
ZSwgY29udGVudCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6
YXR0YWNoQm90dG9tKCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQm90
dG9tKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNo
UmlnaHQoKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hSaWdodCgpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OmRldGFjaCgpCi17Ci0g
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRldGFjaCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
LX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVk
IGhlaWdodCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5k
b3dIZWlnaHQoaGVpZ2h0KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVj
dG9yOjpzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQotewotICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzZXRUb29sYmFySGVpZ2h0KHVu
c2lnbmVkIGhlaWdodCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0VG9vbGJh
ckhlaWdodChoZWlnaHQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyNlbmRpZgogfQogCiAvLyBDYWxs
ZWQgYnkgV2ViSW5zcGVjdG9yIG1lc3NhZ2VzCkBAIC0yMDMsMzIgKzExOSwzMiBAQCB2b2lkIFdl
Ykluc3BlY3Rvcjo6Y2xvc2UoKQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6ZGlkU2F2ZShjb25zdCBT
dHJpbmcmIHVybCkKIHsKLSAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKLSAgICBtX2luc3Bl
Y3RvclBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQo
bWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIiLCB1cmwsICJcIiki
KSk7CisvLyAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKKy8vICAgIG1faW5zcGVjdG9yUGFn
ZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChtYWtlU3Ry
aW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChcIiIsIHVybCwgIlwiKSIpKTsKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3I6OmRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAg
ICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQYWdl
KCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQobWFrZVN0cmluZygiSW5zcGVj
dG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRUb1VSTChcIiIsIHVybCwgIlwiKSIpKTsKKy8vICAgIEFT
U0VSVChtX2luc3BlY3RvclBhZ2UpOworLy8gICAgbV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgp
LT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KG1ha2VTdHJpbmcoIkluc3BlY3Rv
ckZyb250ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIiLCB1cmwsICJcIikiKSk7CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yOjphdHRhY2hlZEJvdHRvbSgpCiB7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGll
bnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldEF0dGFjaGVkV2luZG93KEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpET0NLRURfVE9fQk9UVE9NKTsKKy8vICAgIGlmIChtX2Zyb250ZW5k
Q2xpZW50KQorLy8gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldEF0dGFjaGVkV2luZG93KElu
c3BlY3RvckZyb250ZW5kQ2xpZW50OjpET0NLRURfVE9fQk9UVE9NKTsKIH0KIAogdm9pZCBXZWJJ
bnNwZWN0b3I6OmF0dGFjaGVkUmlnaHQoKQogewotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQot
ICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRBdHRhY2hlZFdpbmRvdyhJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDo6RE9DS0VEX1RPX1JJR0hUKTsKKy8vICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50
KQorLy8gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldEF0dGFjaGVkV2luZG93KEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpET0NLRURfVE9fUklHSFQpOwogfQogCiB2b2lkIFdlYkluc3BlY3Rv
cjo6ZGV0YWNoZWQoKQogewotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zy
b250ZW5kQ2xpZW50LT5zZXRBdHRhY2hlZFdpbmRvdyhJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
VU5ET0NLRUQpOworLy8gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCisvLyAgICAgICAgbV9mcm9u
dGVuZENsaWVudC0+c2V0QXR0YWNoZWRXaW5kb3coSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OlVO
RE9DS0VEKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OmV2YWx1YXRlU2NyaXB0Rm9yVGVzdChj
b25zdCBTdHJpbmcmIHNjcmlwdCkKQEAgLTIzOCwxMDAgKzE1NCw3MyBAQCB2b2lkIFdlYkluc3Bl
Y3Rvcjo6ZXZhbHVhdGVTY3JpcHRGb3JUZXN0KGNvbnN0IFN0cmluZyYgc2NyaXB0KQogCiB2b2lk
IFdlYkluc3BlY3Rvcjo6c2hvd0NvbnNvbGUoKQogewotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkK
LSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2hvd0NvbnNvbGUoKTsKKy8vICAgIG1fcGFnZS0+
Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKKy8vICAgIGlmIChtX2Zy
b250ZW5kQ2xpZW50KQorLy8gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNob3dDb25zb2xlKCk7
CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpzaG93UmVzb3VyY2VzKCkKIHsKLSAgICBtX3BhZ2Ut
PmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1fZnJv
bnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNob3dSZXNvdXJjZXMoKTsK
Ky8vICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsK
Ky8vICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQorLy8gICAgICAgIG1fZnJvbnRlbmRDbGllbnQt
PnNob3dSZXNvdXJjZXMoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnNob3dNYWluUmVzb3Vy
Y2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQogewotICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdl
YlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpOwotICAgIGlmICghZnJhbWUpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9u
dGVuZENsaWVudC0+c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSk7
Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzdGFydEphdmFTY3JpcHREZWJ1Z2dpbmcoKQotewot
ICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAg
ICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0RGVi
dWdnaW5nRW5hYmxlZCh0cnVlKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OnN0b3BKYXZhU2Ny
aXB0RGVidWdnaW5nKCkKLXsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJv
bnRlbmRDbGllbnQtPnNldERlYnVnZ2luZ0VuYWJsZWQoZmFsc2UpOwotfQotCi12b2lkIFdlYklu
c3BlY3Rvcjo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCkKLXsKLSAgICAvLyBO
byBsb25nZXIgc3VwcG9ydGVkLgotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6c3RhcnRKYXZhU2Ny
aXB0UHJvZmlsaW5nKCkKLXsKLSAgICAvLyBObyBsb25nZXIgc3VwcG9ydGVkLgotfQotCi12b2lk
IFdlYkluc3BlY3Rvcjo6c3RvcEphdmFTY3JpcHRQcm9maWxpbmcoKQotewotICAgIC8vIE5vIGxv
bmdlciBzdXBwb3J0ZWQuCisvLyAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS53ZWJGcmFtZShmcmFtZUlEKTsKKy8vICAgIGlmICghZnJhbWUpCisvLyAgICAgICAgcmV0
dXJuOworLy8KKy8vICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LnNob3coKTsKKy8vICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQorLy8gICAgICAgIG1fZnJvbnRl
bmRDbGllbnQtPnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCkpOwog
fQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6c3RhcnRQYWdlUHJvZmlsaW5nKCkKIHsKLSAgICBtX3Bh
Z2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1f
ZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldFRpbWVsaW5lUHJv
ZmlsaW5nRW5hYmxlZCh0cnVlKTsKKy8vICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLnNob3coKTsKKy8vICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQorLy8gICAg
ICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCh0cnVlKTsK
IH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnN0b3BQYWdlUHJvZmlsaW5nKCkKIHsKLSAgICBtX3Bh
Z2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1f
ZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldFRpbWVsaW5lUHJv
ZmlsaW5nRW5hYmxlZChmYWxzZSk7CisvLyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5zaG93KCk7CisvLyAgICBpZiAobV9mcm9udGVuZENsaWVudCkKKy8vICAg
ICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoZmFsc2Up
OwogfQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6dXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgpCiB7
Ci0gICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBib29s
IGNhbkF0dGFjaFdpbmRvdyA9IG1fZnJvbnRlbmRDbGllbnQtPmNhbkF0dGFjaFdpbmRvdygpOwot
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGNh
bkF0dGFjaFdpbmRvdyksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAgIG1fZnJvbnRlbmRDbGllbnQt
PnNldERvY2tpbmdVbmF2YWlsYWJsZSghY2FuQXR0YWNoV2luZG93KTsKKy8vICAgIGlmICghbV9m
cm9udGVuZENsaWVudCkKKy8vICAgICAgICByZXR1cm47CisvLworLy8gICAgYm9vbCBjYW5BdHRh
Y2hXaW5kb3cgPSBtX2Zyb250ZW5kQ2xpZW50LT5jYW5BdHRhY2hXaW5kb3coKTsKKy8vICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGNhbkF0dGFj
aFdpbmRvdyksIG1fcGFnZS0+cGFnZUlEKCkpOworLy8gICAgbV9mcm9udGVuZENsaWVudC0+c2V0
RG9ja2luZ1VuYXZhaWxhYmxlKCFjYW5BdHRhY2hXaW5kb3cpOwogfQogCi0jaWYgRU5BQkxFKElO
U1BFQ1RPUl9TRVJWRVIpCi12b2lkIFdlYkluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZy
b250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpzZW5kTWVz
c2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgQVNTRVJUKG1fcmVt
b3RlRnJvbnRlbmRDb25uZWN0ZWQpOwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZW5k
TWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQobWVzc2FnZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc3BhdGNoTWVzc2Fn
ZUZyb21Gcm9udGVuZChtZXNzYWdlKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OmRpc3BhdGNo
TWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitib29sIFdl
Ykluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
IHsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRj
aE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CisjaWYgIUVOQUJMRShJTlNQRUNUT1JfU0VS
VkVSKQorICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JVSTo6U2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpLCAwKTsKKyNlbHNlCisgICAgQVNT
RVJUKG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclBy
b3h5OjpTZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQobWVzc2FnZSksIG1fcGFnZS0+cGFnZUlE
KCkpOworI2VuZGlmCisgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
X1NFUlZFUikKIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpCiB7
CiAgICAgQVNTRVJUKCFtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKTsKLSAgICAvLyBTd2l0Y2hp
bmcgYmV0d2VlbiBpbi1wcm9jZXNzIGFuZCByZW1vdGUgaW5zcGVjdG9ycyBpc24ndCBzdXBwb3J0
ZWQgeWV0LgotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JQYWdlKTsKLSAgICAKICAgICBtX3BhZ2Ut
PmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQobV9mcm9u
dGVuZENoYW5uZWwpOwogICAgIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQgPSB0cnVlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
ci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCmlu
ZGV4IGM5M2JjYjMuLjRhODY4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRpbmcuaD4KICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTM5LDE1ICs0MCwyMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50OwogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgV2ViSW5zcGVjdG9yIDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yPiB7
CitjbGFzcyBXZWJJbnNwZWN0b3IgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpCdW5kbGVJbnNwZWN0b3I+LCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQs
IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gY3JlYXRlKFdlYlBhZ2UqLCBXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJ
bnNwZWN0b3I+IGNyZWF0ZShXZWJQYWdlKik7CiAKICAgICBXZWJQYWdlKiBwYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlOyB9Ci0gICAgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1faW5zcGVjdG9yUGFnZTsgfQorCisgICAgdm9pZCB1cGRhdGVEb2NraW5nQXZhaWxh
YmlsaXR5KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5l
cmF0ZWQgV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcAotICAgIHZvaWQgZGlkUmVjZWl2
ZVdlYkluc3BlY3Rvck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2Rl
ciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpN
ZXNzYWdlRGVjb2RlciYpOworCisgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKKyAgICB2
b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiopIHsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSB7IH0KIAog
ICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3IgbWVzc2FnZXMKICAgICB2b2lkIHNob3coKTsK
QEAgLTU2LDc4ICs2NCw0MyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTYXZlKGNvbnN0IFN0cmlu
ZyYgdXJsKTsKICAgICB2b2lkIGRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCk7CiAKKyAgICB2
b2lkIHNob3dDb25zb2xlKCk7CisgICAgdm9pZCBzaG93UmVzb3VyY2VzKCk7CisKKyAgICB2b2lk
IHNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKKwogICAgIHZvaWQg
YXR0YWNoZWRCb3R0b20oKTsKICAgICB2b2lkIGF0dGFjaGVkUmlnaHQoKTsKICAgICB2b2lkIGRl
dGFjaGVkKCk7CiAKICAgICB2b2lkIGV2YWx1YXRlU2NyaXB0Rm9yVGVzdChjb25zdCBTdHJpbmcm
IHNjcmlwdCk7CiAKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wp
OwogICAgIHZvaWQgc3RhcnRQYWdlUHJvZmlsaW5nKCk7CiAgICAgdm9pZCBzdG9wUGFnZVByb2Zp
bGluZygpOwogCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKTsK
KwogI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotICAgIGJvb2wgaGFzUmVtb3RlRnJvbnRl
bmRDb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkOyB9
Ci0gICAgdm9pZCBzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKLSAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOwogICAgIHZvaWQgcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKTsKICAg
ICB2b2lkIHJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCk7CisKKyAgICBib29sIGhhc1JlbW90
ZUZyb250ZW5kQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGVGcm9udGVuZENvbm5l
Y3RlZDsgfQogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYkluc3BlY3Rv
ckNsaWVudDsKLSAgICBmcmllbmQgY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiAK
LSAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3IoV2ViUGFnZSosIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCopOworICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvcihXZWJQYWdlKik7CiAK
ICAgICAvLyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JDbGllbnQKLSAgICBXZWJQYWdlKiBjcmVh
dGVJbnNwZWN0b3JQYWdlKCk7Ci0gICAgV2ViUGFnZSogY3JlYXRlSW5zcGVjdG9yUGFnZUZvclRl
c3QoKTsKKyAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKKyAgICB2b2lkIGNyZWF0ZUlu
c3BlY3RvclBhZ2VGb3JUZXN0KCk7CiAgICAgdm9pZCBkZXN0cm95SW5zcGVjdG9yUGFnZSgpOwog
Ci0gICAgLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQKLSAgICB2b2lk
IGRpZENsb3NlKCk7Ci0gICAgdm9pZCBicmluZ1RvRnJvbnQoKTsKLSAgICB2b2lkIGluc3BlY3Rl
ZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBib29sIGNhblNhdmUoKSBjb25zdDsK
LSAgICB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpOwotICAgIHZvaWQgYXBw
ZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7Ci0KLSAg
ICB2b2lkIGF0dGFjaEJvdHRvbSgpOwotICAgIHZvaWQgYXR0YWNoUmlnaHQoKTsKLSAgICB2b2lk
IGRldGFjaCgpOwotCi0gICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCk7
Ci0gICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKTsKLSAgICB2b2lkIHNl
dFRvb2xiYXJIZWlnaHQodW5zaWduZWQpOwotCi0gICAgLy8gSW1wbGVtZW50ZWQgaW4gcGxhdGZv
cm0gV2ViSW5zcGVjdG9yIGZpbGUKLSAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIGNv
bnN0OwotCi0gICAgdm9pZCBzaG93Q29uc29sZSgpOwotCi0gICAgdm9pZCBzaG93UmVzb3VyY2Vz
KCk7Ci0KLSAgICB2b2lkIHNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
KTsKLQotICAgIHZvaWQgc3RhcnRKYXZhU2NyaXB0RGVidWdnaW5nKCk7Ci0gICAgdm9pZCBzdG9w
SmF2YVNjcmlwdERlYnVnZ2luZygpOwotCi0gICAgdm9pZCBzdGFydEphdmFTY3JpcHRQcm9maWxp
bmcoKTsKLSAgICB2b2lkIHN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCk7Ci0KLSAgICB2b2lkIHVw
ZGF0ZURvY2tpbmdBdmFpbGFiaWxpdHkoKTsKLQogICAgIFdlYlBhZ2UqIG1fcGFnZTsKLSAgICBX
ZWJQYWdlKiBtX2luc3BlY3RvclBhZ2U7Ci0gICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQq
IG1fZnJvbnRlbmRDbGllbnQ7Ci0gICAgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBtX2Zyb250ZW5kQ2hhbm5lbDsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtdXRhYmxlIFN0
cmluZyBtX2xvY2FsaXplZFN0cmluZ3NVUkw7Ci0gICAgbXV0YWJsZSBib29sIG1faGFzTG9jYWxp
emVkU3RyaW5nc1VSTDsKLSNlbmRpZgorICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fZnJv
bnRlbmRDb25uZWN0aW9uOwogI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorICAgIFdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENoYW5uZWw7CiAgICAgYm9v
bCBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMu
aW4KaW5kZXggYzIzYjg2Zi4uNDY5OGEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCkBAIC0xLDQg
KzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMiwyNiArMjIsMjggQEAK
IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLW1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvciBMZWdh
Y3lSZWNlaXZlciB7CittZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3IgewogICAgIFNob3coKQogICAg
IENsb3NlKCkKKwogICAgIEF0dGFjaGVkQm90dG9tKCkKICAgICBBdHRhY2hlZFJpZ2h0KCkKICAg
ICBEZXRhY2hlZCgpCisKICAgICBEaWRTYXZlKFN0cmluZyB1cmwpCiAgICAgRGlkQXBwZW5kKFN0
cmluZyB1cmwpCisKICAgICBTaG93Q29uc29sZSgpCiAgICAgU2hvd1Jlc291cmNlcygpCi0gICAg
U2hvd01haW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgU3RhcnRKYXZh
U2NyaXB0RGVidWdnaW5nKCkKLSAgICBTdG9wSmF2YVNjcmlwdERlYnVnZ2luZygpCi0gICAgU3Rh
cnRKYXZhU2NyaXB0UHJvZmlsaW5nKCkKLSAgICBTdG9wSmF2YVNjcmlwdFByb2ZpbGluZygpCisK
KyAgICBTaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJZGVudGlmaWVyKQor
CiAgICAgU3RhcnRQYWdlUHJvZmlsaW5nKCkKICAgICBTdG9wUGFnZVByb2ZpbGluZygpCiAKKyAg
ICBTZW5kTWVzc2FnZVRvQmFja2VuZChTdHJpbmcgbWVzc2FnZSkKKwogI2lmIEVOQUJMRShJTlNQ
RUNUT1JfU0VSVkVSKQotICAgIERpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChTdHJp
bmcgbWVzc2FnZSkKICAgICBSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpCiAgICAgUmVtb3RlRnJv
bnRlbmREaXNjb25uZWN0ZWQoKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcAppbmRleCBmOGU2ZmE1Li40ODk4MmJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yVUkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3JVSS5jcHAKQEAgLTI4LDIxICsyOCwxNTMgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRl
ICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5TWVz
c2FnZXMuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRWYWx1ZS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29ybGQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEdsb2JhbE9iamVjdC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU2NyaXB0U3RhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNz
UmVmUHRyPFdlYkluc3BlY3RvclVJPiBXZWJJbnNwZWN0b3JVSTo6Y3JlYXRlKFdlYlBhZ2UqIHBh
Z2UsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQorUGFzc1JlZlB0
cjxXZWJJbnNwZWN0b3JVST4gV2ViSW5zcGVjdG9yVUk6OmNyZWF0ZShXZWJQYWdlKiBwYWdlKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViSW5zcGVjdG9yVUkocGFnZSwgZnJvbnRlbmRD
aGFubmVsKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJJbnNwZWN0b3JVSShwYWdlKSk7
CiB9CiAKLVdlYkluc3BlY3RvclVJOjpXZWJJbnNwZWN0b3JVSShXZWJQYWdlKiBwYWdlLCBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkKK1dlYkluc3BlY3RvclVJOjpX
ZWJJbnNwZWN0b3JVSShXZWJQYWdlKiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBt
X2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKDApCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLCBt
X2hhc0xvY2FsaXplZFN0cmluZ3NVUkwoZmFsc2UpCisjZW5kaWYKIHsKIH0KIAordm9pZCBXZWJJ
bnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgZW5jb2RlZENv
bm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllcikKK3sK
KyNpZiBPUyhEQVJXSU4pCisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rp
b25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpOworICAgIGlm
IChJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gaW5z
cGVjdGVkUGFnZUlkZW50aWZpZXI7CisKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uID0gSVBDOjpD
b25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCB0
aGlzLCBSdW5Mb29wOjptYWluKCkpOworICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPm9wZW4oKTsK
KyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm47CisjZW5kaWYKKworICAg
IG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZy
b250ZW5kQ2xpZW50KHRoaXMpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjp3aW5kb3dPYmpl
Y3RDbGVhcmVkKCkKK3sKKyAgICBpZiAobV9mcm9udGVuZEhvc3QpCisgICAgICAgIG1fZnJvbnRl
bmRIb3N0LT5kaXNjb25uZWN0Q2xpZW50KCk7CisKKyAgICBtX2Zyb250ZW5kSG9zdCA9IEluc3Bl
Y3RvckZyb250ZW5kSG9zdDo6Y3JlYXRlKHRoaXMsIG1fcGFnZS0+Y29yZVBhZ2UoKSk7CisgICAg
U2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoZXhlY1N0YXRlRnJvbVBhZ2UobWFpblRocmVhZE5vcm1h
bFdvcmxkKCksIG1fcGFnZS0+Y29yZVBhZ2UoKSksICJJbnNwZWN0b3JGcm9udGVuZEhvc3QiLCBt
X2Zyb250ZW5kSG9zdC5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmZyb250ZW5k
TG9hZGVkKCkKK3sKKyAgICBicmluZ1RvRnJvbnQoKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JV
STo6bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpCit7CisgICAgRmxvYXRSZWN0IGZyYW1l
UmVjdCA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+Y2hyb21lKCkud2luZG93UmVjdCgpOworICAgIGZy
YW1lUmVjdC5tb3ZlKHgsIHkpOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+Y2hyb21lKCkuc2V0
V2luZG93UmVjdChmcmFtZVJlY3QpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpicmluZ1Rv
RnJvbnQoKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwg
bV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmNs
b3NlV2luZG93KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGlkQ2xvc2UoKSwg
bV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnJl
cXVlc3RTZXREb2NrU2lkZShEb2NrU2lkZSBzaWRlKQoreworICAgIHN3aXRjaCAoc2lkZSkgewor
ICAgIGNhc2UgVU5ET0NLRUQ6CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEZXRh
Y2goKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRE9DS0VEX1RPX1JJR0hUOgorICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0
YWNoUmlnaHQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRE9DS0VEX1RPX0JPVFRPTToKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6OkF0dGFjaEJvdHRvbSgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpjaGFuZ2VBdHRhY2hlZFdp
bmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6OlNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCksIG1faW5zcGVjdGVkUGFnZUlkZW50
aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd1dp
ZHRoKHVuc2lnbmVkIHdpZHRoKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRB
dHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQgaGVpZ2h0
KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRUb29sYmFySGVpZ2h0KGhlaWdo
dCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJ
OjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgLy8gRklYTUU6IEltcGxl
bWVudC4KK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2F2ZShjb25zdCBXVEY6OlN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQs
IGJvb2wgZm9yY2VTYXZlQXMpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUo
ZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2ZUFzKSwgbV9pbnNwZWN0
ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmFwcGVuZChjb25z
dCBXVEY6OlN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50KQorewor
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpLCBt
X2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6aW5z
cGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3sKKyAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6SW5zcGVjdGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcpLCBtX2luc3Bl
Y3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX3BhZ2UtPmNvcmVQ
YWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoIkluc3BlY3RvckZyb250
ZW5kQVBJLmRpc3BhdGNoTWVzc2FnZUFzeW5jKCIgKyBtZXNzYWdlICsgIikiKTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JVSTo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQoreworICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIDApOworfQorCitib29sIFdlYklu
c3BlY3RvclVJOjppc1VuZGVyVGVzdCgpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3RvclVJLmgKaW5kZXggMmRlMTg1Zi4uOTM4YmJmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKQEAgLTMx
LDI0ICszMSw3MSBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRpbmcuaD4KLSNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8v
Y2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiBjbGFzcyBXZWJQYWdlOwogCi1jbGFz
cyBXZWJJbnNwZWN0b3JVSSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6OkJ1bmRsZUluc3BlY3RvclVJPiB7CitjbGFzcyBXZWJJbnNwZWN0b3JVSSA6IHB1YmxpYyBB
UEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUluc3BlY3RvclVJPiwgcHVi
bGljIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkluc3BlY3Rv
clVJPiBjcmVhdGUoV2ViUGFnZSosIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCop
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkluc3BlY3RvclVJPiBjcmVhdGUoV2ViUGFnZSop
OwogCiAgICAgV2ViUGFnZSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQogCisgICAg
Ly8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVy
LmNwcAorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpN
ZXNzYWdlRGVjb2RlciYpOworCisgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKKyAgICB2
b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiopIHsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSB7IH0KKwor
ICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JVSSBtZXNzYWdlcworICAgIHZvaWQgZXN0YWJs
aXNoQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2
NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
Q2xpZW50CisgICAgdm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBmcm9udGVuZExvYWRlZCgpIG92ZXJyaWRlOworCisgICAgdm9pZCBtb3ZlV2luZG93QnkoZmxv
YXQgeCwgZmxvYXQgeSkgb3ZlcnJpZGU7CisKKyAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VS
TCgpIG92ZXJyaWRlOworCisgICAgdm9pZCBicmluZ1RvRnJvbnQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGNsb3NlV2luZG93KCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHJlcXVlc3RTZXREb2NrU2lk
ZShEb2NrU2lkZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdo
dCh1bnNpZ25lZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRo
KHVuc2lnbmVkKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0VG9vbGJhckhlaWdodCh1bnNpZ25l
ZCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIG9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkg
b3ZlcnJpZGU7CisKKyAgICBib29sIGNhblNhdmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmUo
Y29uc3QgV1RGOjpTdHJpbmcmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQsIGJvb2wg
YmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBl
bmQoY29uc3QgV1RGOjpTdHJpbmcmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQpIG92
ZXJyaWRlOworCisgICAgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOworCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKKworICAgIGJvb2wgaXNVbmRlclRlc3QoKSBvdmVycmlkZTsKKwogcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JVSShXZWJQYWdlKiwgV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKik7CisgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yVUkoV2ViUGFnZSop
OwogCiAgICAgV2ViUGFnZSogbV9wYWdlOworICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1f
YmFja2VuZENvbm5lY3Rpb247CisgICAgdWludDY0X3QgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmll
cjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0PiBtX2Zyb250ZW5k
SG9zdDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtdXRhYmxlIFN0cmluZyBtX2xvY2FsaXpl
ZFN0cmluZ3NVUkw7CisgICAgbXV0YWJsZSBib29sIG1faGFzTG9jYWxpemVkU3RyaW5nc1VSTDsK
KyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMu
aW4KaW5kZXggNjVmMGE0Mi4uYjE1MDI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgpAQCAt
MjMsNiArMjMsOSBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKIG1lc3NhZ2VzIC0+IFdlYklu
c3BlY3RvclVJIHsKKyAgICBFc3RhYmxpc2hDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25u
ZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpCisKKyAg
ICBTZW5kTWVzc2FnZVRvRnJvbnRlbmQoU3RyaW5nIG1lc3NhZ2UpCiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDAwNjYw
YzIuLjVlMDYwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTgwLDYgKzgwLDggQEAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3IuaCIKICNp
bmNsdWRlICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVj
dG9yVUlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbkNsaWVudC5oIgogI2lu
Y2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oIgpAQCAtNDYxLDYgKzQ2Myw3IEBAIFdlYlBhZ2U6OldlYlBhZ2Uo
dWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogI2VuZGlmCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKICNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZUlELCAqdGhpcyk7CkBAIC01MjIsNiArNTI1LDcgQEAgV2ViUGFnZTo6fldlYlBhZ2UoKQogI2Vu
ZGlmCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3BhZ2VJRCk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2VJRCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxs
U2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CkBAIC0yODkw
LDE4ICsyODk0LDI2IEBAIHZvaWQgV2ViUGFnZTo6ZGlkRmx1c2hMYXllclRyZWVBdFRpbWUoc3Rk
OjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lc3RhbXApCiB9CiAjZW5kaWYKIAotICAgIAogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiBXZWJJbnNwZWN0b3IqIFdlYlBhZ2U6Omluc3BlY3RvcigpCiB7
CiAgICAgaWYgKG1faXNDbG9zZWQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBpZiAoIW1faW5zcGVjdG9yKQotICAgICAgICBtX2luc3BlY3RvciA9IFdl
Ykluc3BlY3Rvcjo6Y3JlYXRlKHRoaXMsIG1faW5zcGVjdG9yQ2xpZW50KTsKKyAgICAgICAgbV9p
bnNwZWN0b3IgPSBXZWJJbnNwZWN0b3I6OmNyZWF0ZSh0aGlzKTsKICAgICByZXR1cm4gbV9pbnNw
ZWN0b3IuZ2V0KCk7CiB9CisKK1dlYkluc3BlY3RvclVJKiBXZWJQYWdlOjppbnNwZWN0b3JVSSgp
Cit7CisgICAgaWYgKG1faXNDbG9zZWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlm
ICghbV9pbnNwZWN0b3JVSSkKKyAgICAgICAgbV9pbnNwZWN0b3JVSSA9IFdlYkluc3BlY3RvclVJ
OjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIG1faW5zcGVjdG9yVUkuZ2V0KCk7Cit9CiAjZW5k
aWYKLSAgICAKKwogI2lmIFBMQVRGT1JNKElPUykKIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIq
IFdlYlBhZ2U6OnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKQogewpAQCAtMzQ5NywxMSArMzUwOSwx
NyBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiogY29u
bmVjdGlvbiwgSVBDOjpNZXNzYWdlRGVjb2RlcgogICAgICAgICByZXR1cm47CiAgICAgfQogI2Vu
ZGlmCi0gICAgCisKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3RvciogaW5zcGVjdG9yID0gdGhpcy0+
aW5zcGVjdG9yKCkpCi0gICAgICAgICAgICBpbnNwZWN0b3ItPmRpZFJlY2VpdmVXZWJJbnNwZWN0
b3JNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICAgICAgaW5zcGVjdG9yLT5k
aWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAo
V2ViSW5zcGVjdG9yVUkqIGluc3BlY3RvclVJID0gdGhpcy0+aW5zcGVjdG9yVUkoKSkKKyAgICAg
ICAgICAgIGluc3BlY3RvclVJLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYmFiYTUwNi4uOGNiMzFmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNTMsNiArMTUzLDcg
QEAgY2xhc3MgV2ViRnVsbFNjcmVlbk1hbmFnZXI7CiBjbGFzcyBXZWJJbWFnZTsKIGNsYXNzIFdl
Ykluc3BlY3RvcjsKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsKK2NsYXNzIFdlYkluc3BlY3Rv
clVJOwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFz
cyBXZWJOb3RpZmljYXRpb25DbGllbnQ7CkBAIC0yMjYsNiArMjI3LDcgQEAgcHVibGljOgogCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBXZWJJbnNwZWN0b3IqIGluc3BlY3RvcigpOworICAg
IFdlYkluc3BlY3RvclVJKiBpbnNwZWN0b3JVSSgpOwogI2VuZGlmCiAgICAgCiAjaWYgUExBVEZP
Uk0oSU9TKQpAQCAtMTE1OSw2ICsxMTYxLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAgICAgUmVmUHRyPFdlYkluc3BlY3Rvcj4gbV9pbnNwZWN0b3I7CisgICAgUmVmUHRy
PFdlYkluc3BlY3RvclVJPiBtX2luc3BlY3RvclVJOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiBtX3ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYkluc3BlY3RvclVJTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5tbQppbmRleCA3OTVmNDU2Li4yYmU3NmE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3Rv
clVJTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
SW5zcGVjdG9yVUlNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIldlYkluc3BlY3Rvci5oIgorI2ltcG9ydCAiV2ViSW5zcGVjdG9yVUkuaCIK
IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTM0LDEyICszNCwxMiBAQCBTT0ZUX0xJTktf
U1RBR0VEX0ZSQU1FV09SSyhXZWJJbnNwZWN0b3JVSSwgUHJpdmF0ZUZyYW1ld29ya3MsIEEpCiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIFdlYkluc3BlY3Rvcjo6Y2FuU2F2ZSgpIGNvbnN0
Citib29sIFdlYkluc3BlY3RvclVJOjpjYW5TYXZlKCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotU3RyaW5nIFdlYkluc3BlY3Rvcjo6bG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0CitTdHJp
bmcgV2ViSW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwoKQogewogICAgIGlmICghbV9o
YXNMb2NhbGl6ZWRTdHJpbmdzVVJMKSB7CiAgICAgICAgIC8vIENhbGwgdGhlIHNvZnQgbGluayBm
cmFtZXdvcmsgZnVuY3Rpb24gdG8gZGxvcGVuIGl0LCB0aGVuIFtOU0J1bmRsZSBidW5kbGVXaXRo
SWRlbnRpZmllcjpdIHdpbGwgd29yay4KQEAgLTUyLDYgKzUyLDcgQEAgU3RyaW5nIFdlYkluc3Bl
Y3Rvcjo6bG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0CiAgICAgICAgICAgICBtX2xvY2FsaXpl
ZFN0cmluZ3NVUkwgPSBTdHJpbmcoKTsKICAgICAgICAgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJM
ID0gdHJ1ZTsKICAgICB9CisKICAgICByZXR1cm4gbV9sb2NhbGl6ZWRTdHJpbmdzVVJMOwogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237677</attachid>
            <date>2014-09-04 22:58:18 -0700</date>
            <delta_ts>2014-09-05 17:34:42 -0700</delta_ts>
            <desc>WIP (correct)</desc>
            <filename>WIP.patch</filename>
            <type>text/plain</type>
            <size>96518</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNDJhNDY1ZC4uYTkxMDExZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTc3Myw2ICs3NzMsNyBAQCBfX1pON1dlYkNvcmUxN1NRTGl0ZVRyYW5zYWN0aW9u
RDFFdgogX19aTjdXZWJDb3JlMTdTdWJyZXNvdXJjZUxvYWRlcjZjcmVhdGVFUE5TXzVGcmFtZUVQ
TlNfMTRDYWNoZWRSZXNvdXJjZUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMjFSZXNvdXJj
ZUxvYWRlck9wdGlvbnNFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18xN0pT
RE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9fWk43
V2ViQ29yZTE3ZW5jb2RlRm9yRmlsZU5hbWVFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUx
N2V4ZWNTdGF0ZUZyb21QYWdlRVJOU18xNURPTVdyYXBwZXJXb3JsZEVQTlNfNFBhZ2VFCiBfX1pO
N1dlYkNvcmUxN2xhbmd1YWdlRGlkQ2hhbmdlRXYKIF9fWk43V2ViQ29yZTE3b3BlblRlbXBvcmFy
eUZpbGVFUktOM1dURjZTdHJpbmdFUmkKIF9fWk43V2ViQ29yZTE3c1JHQkNvbG9yU3BhY2VSZWZF
dgpAQCAtNzk2LDYgKzc5Nyw3IEBAIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkOGFk
ZFR5cGVzRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDCiBfX1pON1dlYkNv
cmUxOFBsYXRmb3JtUGFzdGVib2FyZDhnZXRUeXBlc0VSTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5n
RUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0
ZWJvYXJkOHNldFR5cGVzRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDcmFz
aE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkQzFFUktOM1dU
RjZTdHJpbmdFCitfX1pON1dlYkNvcmUxOFNjcmlwdEdsb2JhbE9iamVjdDNzZXRFUE4zSlNDOUV4
ZWNTdGF0ZUVQS2NQTlNfMjFJbnNwZWN0b3JGcm9udGVuZEhvc3RFCiBfX1pON1dlYkNvcmUxOFN0
eWxlU2hlZXRDb250ZW50czExcGFyc2VTdHJpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNv
cmUxOFN0eWxlU2hlZXRDb250ZW50c0MxRVBOU18xNVN0eWxlUnVsZUltcG9ydEVSS04zV1RGNlN0
cmluZ0VSS05TXzE2Q1NTUGFyc2VyQ29udGV4dEUKIF9fWk43V2ViQ29yZTE4U3R5bGVTaGVldENv
bnRlbnRzRDFFdgpAQCAtMTE5NCw2ICsxMTk2LDggQEAgX19aTjdXZWJDb3JlNVJhbmdlOHNldFN0
YXJ0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFaVJpCiBfX1pON1dlYkNvcmU1UmFuZ2VE
MUV2CiBfX1pON1dlYkNvcmU2Q2hyb21lMTZzZXRTdGF0dXNiYXJUZXh0RVBOU181RnJhbWVFUktO
M1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU2Q2hyb21lNXByaW50RVBOU181RnJhbWVFCitfX1pO
SzdXZWJDb3JlNkNocm9tZTEwd2luZG93UmVjdEV2CitfX1pOSzdXZWJDb3JlNkNocm9tZTEzc2V0
V2luZG93UmVjdEVSS05TXzlGbG9hdFJlY3RFCiBfX1pON1dlYkNvcmU2RWRpdG9yMTBhcHBseVN0
eWxlRVBOU18xNVN0eWxlUHJvcGVydGllc0VOU18xMEVkaXRBY3Rpb25FCiBfX1pON1dlYkNvcmU2
RWRpdG9yMTBmaW5kU3RyaW5nRVJLTjNXVEY2U3RyaW5nRWgKIF9fWk43V2ViQ29yZTZFZGl0b3Ix
MGluc2VydFRleHRFUktOM1dURjZTdHJpbmdFUE5TXzVFdmVudEUKQEAgLTMxNjgsOSArMzE3Miwx
MiBAQCBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxNWNvbm5lY3RGcm9udGVuZEVQ
TjlJbnNwZWN0b3IyNEluc3BlY3RvckZyb250ZQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250
cm9sbGVyMThkaXNjb25uZWN0RnJvbnRlbmRFTjlJbnNwZWN0b3IyNUluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb25FCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOHNldFByb2ZpbGVy
RW5hYmxlZEViCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNWV2YWx1YXRlRm9y
VGVzdEluRnJvbnRlbmRFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxOUluc3BlY3RvckNv
bnRyb2xsZXIyNnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50RU5TdDNfXzExMHVuaXF1ZV9wdHJJ
TlNfMjNJbnNwZWN0b3JGcm9udGVuZENsaWVudEVOUzFfMTRkZWZhdWx0X2RlbGV0ZUlTM19FRUVF
CitfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNnNldEluc3BlY3RvckZyb250ZW5k
Q2xpZW50RVBOU18yM0luc3BlY3RvckZyb250ZW5kQ2xpZW50RQogX19aTjdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyNHNob3dFdgogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVy
NWNsb3NlRXYKK19fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0MTZkaXNjb25uZWN0
Q2xpZW50RXYKK19fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0QzFFUE5TXzIzSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRFUE5TXzRQYWdlRQorX19aTjdXZWJDb3JlMjFJbnNwZWN0b3JG
cm9udGVuZEhvc3REMUV2CiBfX1pON1dlYkNvcmUyMmluc3RydW1lbnRhdGlvbkZvclBhZ2VFUE5T
XzRQYWdlRQogX19aTjdXZWJDb3JlMjRJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24xN3NfZnJvbnRl
bmRDb3VudGVyRQogX19aTjdXZWJDb3JlMjRJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24yNmluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JQYWdlRVBOU180UGFnZUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4ZGY0ZTIxLi4wNzcxNzYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yMzMyLDcgKzIzMzIsNyBAQAogCQk3OUYyRjVBMTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29t
cG9zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3OUYyRjU5RTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5jcHAg
Ki87IH07CiAJCTc5RjJGNUEyMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUYyRjU5RjEw
OTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5oICovOyB9OwogCQk3QTBFNzcwRTEw
QzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NzBCMTBDMDBBODgwMEEwMjc2
RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwICovOyB9OwotCQk3QTBFNzcwRjEwQzAwQTg4
MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzcwQzEwQzAwQTg4MDBBMDI3NkUgLyogSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmggKi87IH07CisJCTdBMEU3NzBGMTBDMDBBODgwMEEwMjc2RSAv
KiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBMEU3NzBDMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QTBFNzcxRTEwQzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EwRTc3
MUMxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCAqLzsgfTsK
IAkJN0EwRTc3MUYxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzcxRDEw
QzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCAqLzsgfTsKIAkJN0Ex
RDdGQ0IxOEY4NUYwRjAwQzM4NUFEIC8qIG1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJpbmdzLmpz
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTFEN0ZD
OTE4Rjg1RjBGMDBDMzg1QUQgLyogbWVkaWFDb250cm9sc0xvY2FsaXplZFN0cmluZ3MuanMgKi87
IH07CkBAIC0yMzcwLDcgKzIzNzAsNyBAQAogCQk3QUIwQjFDMTEyMTFBNjIyMDBBNzY5NDAgLyog
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0FCMEIxQkYxMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFi
YXNlQWdlbnQuaCAqLzsgfTsKIAkJN0FDRDg4RDMxNEMwOEJENjAwODRFREQyIC8qIEluc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBQ0Q4OEQxMTRDMDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5jcHAgKi87IH07CiAJCTdBQ0Q4OEQ0MTRDMDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0FDRDg4RDIxNEMwOEJENjAwODRFREQyIC8qIEluc3BlY3RvckluZGV4ZWREQkFnZW50
LmggKi87IH07Ci0JCTdBREU3MjI2MTBDQkJCOUIwMDZCM0IzQSAvKiBDb250ZXh0TWVudVByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QURF
NzIyNTEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5oICovOyB9OworCQk3
QURFNzIyNjEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FERTcyMjUxMENCQkI5QjAw
NkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QUY5QjIwMjE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRU
UmVnaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBRjlCMUZDMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uY3BwICovOyB9OwogCQk3QUY5
QjIwMzE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFGRDE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRU
UmVnaW9uLmggKi87IH07CiAJCTdBRjlCMjA1MThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb25M
aXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
RjlCMUZGMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb25MaXN0LmNwcCAqLzsgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA4
M2ZmMWFmLi41NTUyMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCkBAIC04Nyw2ICs4Nyw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6
Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0
b3JDCiAgICAgLCBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChudWxscHRyKQogICAgICwgbV9w
YWdlKHBhZ2UpCiAgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQpCisgICAg
LCBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50KG51bGxwdHIpCiAgICAgLCBtX2lzVW5kZXJUZXN0
KGZhbHNlKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgICwgbV9oYXNSZW1vdGVG
cm9udGVuZChmYWxzZSkKQEAgLTE5NCw5ICsxOTUsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKQogICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbnVs
bHB0cjsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbnNwZWN0b3JGcm9udGVu
ZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IGluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbnNwZWN0b3JG
cm9udGVuZENsaWVudChJbnNwZWN0b3JGcm9udGVuZENsaWVudCogaW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQpCiB7Ci0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudCA9IFdURjo6bW92ZShpbnNw
ZWN0b3JGcm9udGVuZENsaWVudCk7CisgICAgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudCA9IGlu
c3BlY3RvckZyb250ZW5kQ2xpZW50OwogfQogCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhh
c0xvY2FsRnJvbnRlbmQoKSBjb25zdApAQCAtMjE5LDcgKzIyMCw3IEBAIGJvb2wgSW5zcGVjdG9y
Q29udHJvbGxlcjo6aGFzUmVtb3RlRnJvbnRlbmQoKSBjb25zdAogCiBib29sIEluc3BlY3RvckNv
bnRyb2xsZXI6Omhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudC5nZXQoKTsKKyAgICByZXR1cm4gbV9pbnNwZWN0
b3JGcm9udGVuZENsaWVudDsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDbGVh
cldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5k
ZXggMWQyMGMzOC4uZTk5YTA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNob3coKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlKCk7CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4pOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQq
KTsKICAgICBib29sIGhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkgY29uc3Q7CiAgICAgdm9p
ZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqLCBET01XcmFwcGVyV29ybGQmKTsK
IApAQCAtMTQ4LDEwICsxNDgsMTAgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KiBtX3RpbWVsaW5lQWdlbnQ7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1faW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ7CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsOwogICAgIFBhZ2UmIG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGll
bnQqIG1faW5zcGVjdG9yQ2xpZW50OworICAgIEluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2lu
c3BlY3RvckZyb250ZW5kQ2xpZW50OwogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdp
c3RyeSBtX2FnZW50czsKICAgICBWZWN0b3I8SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
LCAyPiBtX2luamVjdGVkU2NyaXB0SW5zdHJ1bWVudGF0aW9uQ29va2llczsKICAgICBib29sIG1f
aXNVbmRlclRlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZjA2NWNk
MS4uYjc1YzA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTQ3MSwx
MiArMTQ3MSwxMCBAQCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gSW50ZXJuYWxzOjpvcGVuRHVtbXlJ
bnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHVybCkKICAgICBQYWdlKiBmcm9udGVuZFBh
Z2UgPSBtX2Zyb250ZW5kV2luZG93LT5kb2N1bWVudCgpLT5wYWdlKCk7CiAgICAgQVNTRVJUKGZy
b250ZW5kUGFnZSk7CiAKLSAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JGcm9udGVuZENsaWVudER1bW15PigmcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLCBmcm9udGVuZFBhZ2UpOwotCi0gICAgZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50
KSk7Ci0KLSAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWxEdW1teShmcm9udGVuZFBhZ2UpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZENsaWVudER1bW15PigmcGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLCBmcm9udGVuZFBhZ2UpOworICAgIGZyb250ZW5kUGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1fZnJvbnRlbmRD
bGllbnQuZ2V0KCkpOwogCisgICAgbV9mcm9udGVuZENoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbER1bW15Pihmcm9udGVuZFBhZ2UpOwogICAgIHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENoYW5uZWwu
Z2V0KCkpOwogCiAgICAgcmV0dXJuIG1fZnJvbnRlbmRXaW5kb3c7CkBAIC0xNDkwLDcgKzE0ODgs
OCBAQCB2b2lkIEludGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKCkKIAogICAg
IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9y
RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKIAotICAgIG1fZnJvbnRlbmRD
aGFubmVsLnJlbGVhc2UoKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbnVsbHB0cjsKKyAgICBt
X2Zyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7CiAKICAgICBtX2Zyb250ZW5kV2luZG93LT5jbG9z
ZShtX2Zyb250ZW5kV2luZG93LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIG1fZnJv
bnRlbmRXaW5kb3cucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXgg
ZmFkNzAzYS4uYmQxYmM2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNTAs
NiArNTAsNyBAQCBjbGFzcyBEb2N1bWVudE1hcmtlcjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBG
cmFtZTsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbER1bW15OworY2xhc3MgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnREdW1teTsKIGNsYXNzIEludGVybmFsU2V0dGluZ3M7CiBjbGFzcyBN
YWxsb2NTdGF0aXN0aWNzOwogY2xhc3MgTWVtb3J5SW5mbzsKQEAgLTM1MCw3ICszNTEsOCBAQCBw
cml2YXRlOgogICAgIERvY3VtZW50TWFya2VyKiBtYXJrZXJBdChOb2RlKiwgY29uc3QgU3RyaW5n
JiBtYXJrZXJUeXBlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9mcm9udGVuZFdpbmRvdzsKLSAg
ICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRHVtbXk+IG1fZnJvbnRlbmRDaGFubmVs
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudER1bW15PiBtX2Zy
b250ZW5kQ2xpZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWxEdW1teT4gbV9mcm9udGVuZENoYW5uZWw7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9Eb3dubG9hZEFycm93LnN2
ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9Eb3dubG9hZEFy
cm93LnN2ZwppbmRleCA5YWJjYzY1Li5jMDFjYTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvRG93bmxvYWRBcnJvdy5zdmcKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0Rvd25sb2FkQXJyb3cuc3Zn
CkBAIC0xLDExICsxLDggQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+
CiA8IS0tIENvcHlyaWdodCDCqSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4g
LS0+CiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB2aWV3Qm94PSIwIDAgMTYgMTYiPgotICAgIDxjbGlwUGF0aCBpZD0iMSI+Ci0gICAgICAgIDxw
YXRoIGQ9Ik0gNy41IDE1IEMgMTEuMDg5ODUgMTUgMTQgMTIuMDg5ODUxIDE0IDguNSBDIDE0IDQu
OTEwMTUgMTEuMDg5ODUgMiA3LjUgMiBDIDMuOTEwMTQ5IDIgMSA0LjkxMDE1IDEgOC41IEMgMSAx
Mi4wODk4NTEgMy45MTAxNDkgMTUgNy41IDE1IEwgNy41IDE1IFoiLz4KLSAgICA8L2NsaXBQYXRo
PgotICAgIDxnIGNsaXAtcGF0aD0idXJsKCMxKSIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9
InNxdWFyZSIgc3Ryb2tlPSJibGFjayI+Ci0gICAgICAgIDxwYXRoIGNsYXNzPSJzdHJva2VkIiBz
dHJva2Utd2lkdGg9IjIiIGQ9Ik0gNy41IDE1IEMgMTEuMDg5ODUgMTUgMTQgMTIuMDg5ODUgMTQg
OC41IEMgMTQgNC45MTAxNDkgMTEuMDg5ODUgMiA3LjUgMiBDIDMuOTEwMTQ5IDIgMSA0LjkxMDE0
OSAxIDguNSBDIDEgMTIuMDg5ODUgMy45MTAxNDkgMTUgNy41IDE1IEwgNy41IDE1IFoiLz4KKyAg
ICA8ZyBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiBzdHJva2U9ImJsYWNrIj4K
KyAgICAgICAgPGNpcmNsZSBjbGFzcz0ic3Ryb2tlZCIgY3g9IjcuNSIgY3k9IjguNSIgcj0iNiIv
PgogICAgICAgICA8cGF0aCBjbGFzcz0ic3Ryb2tlZCIgZD0iTSAxMC41IDguNSBMIDcuNSAxMS41
Ii8+CiAgICAgICAgIDxwYXRoIGNsYXNzPSJzdHJva2VkIiBkPSJNIDQuNSA4LjUgTCA3LjUgMTEu
NSIvPgogICAgICAgICA8cGF0aCBjbGFzcz0ic3Ryb2tlZCIgZD0iTSA3LjUgMyBMIDcuNSAxMC41
Ii8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5jc3MKaW5kZXggNzlhNjJk
OC4uMDFmZWFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24uY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50U3RhdHVzQnV0dG9uLmNzcwpA
QCAtMjksMjcgKzI5LDI3IEBACiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogfQogCi0uaXRl
bSA+IC5zdGF0dXMgPiAuc3RhdHVzLWJ1dHRvbiA+IHN2ZyBwYXRoLmZpbGxlZCB7CisuaXRlbSA+
IC5zdGF0dXMgPiAuc3RhdHVzLWJ1dHRvbiA+IHN2ZyAuZmlsbGVkIHsKICAgICBmaWxsOiByZ2Io
MTI4LCAxMjgsIDEyOCk7CiB9CiAKLWJvZHkubWFjLXBsYXRmb3JtLmxlZ2FjeSAuaXRlbSA+IC5z
dGF0dXMgPiAuc3RhdHVzLWJ1dHRvbiA+IHN2ZyBwYXRoLmZpbGxlZCB7Citib2R5Lm1hYy1wbGF0
Zm9ybS5sZWdhY3kgLml0ZW0gPiAuc3RhdHVzID4gLnN0YXR1cy1idXR0b24gPiBzdmcgLmZpbGxl
ZCB7CiAgICAgZmlsbDogcmdiKDY0LCA2NCwgNjQpOwogfQogCi06Zm9jdXMgLml0ZW0uc2VsZWN0
ZWQgPiAuc3RhdHVzID4gLnN0YXR1cy1idXR0b24gPiBzdmcgcGF0aC5maWxsZWQgeworOmZvY3Vz
IC5pdGVtLnNlbGVjdGVkID4gLnN0YXR1cyA+IC5zdGF0dXMtYnV0dG9uID4gc3ZnIC5maWxsZWQg
ewogICAgIGZpbGw6IHdoaXRlICFpbXBvcnRhbnQ7CiB9CiAKLS5pdGVtID4gLnN0YXR1cyA+IC5z
dGF0dXMtYnV0dG9uID4gc3ZnIHBhdGguc3Ryb2tlZCB7CisuaXRlbSA+IC5zdGF0dXMgPiAuc3Rh
dHVzLWJ1dHRvbiA+IHN2ZyAuc3Ryb2tlZCB7CiAgICAgc3Ryb2tlOiByZ2IoMTI4LCAxMjgsIDEy
OCk7CiB9CiAKLWJvZHkubWFjLXBsYXRmb3JtLmxlZ2FjeSAuaXRlbSA+IC5zdGF0dXMgPiAuc3Rh
dHVzLWJ1dHRvbiA+IHN2ZyBwYXRoLnN0cm9rZWQgeworYm9keS5tYWMtcGxhdGZvcm0ubGVnYWN5
IC5pdGVtID4gLnN0YXR1cyA+IC5zdGF0dXMtYnV0dG9uID4gc3ZnIC5zdHJva2VkIHsKICAgICBz
dHJva2U6IHJnYig2NCwgNjQsIDY0KTsKIH0KIAotOmZvY3VzIC5pdGVtLnNlbGVjdGVkID4gLnN0
YXR1cyA+IC5zdGF0dXMtYnV0dG9uID4gc3ZnIHBhdGguc3Ryb2tlZCB7Cis6Zm9jdXMgLml0ZW0u
c2VsZWN0ZWQgPiAuc3RhdHVzID4gLnN0YXR1cy1idXR0b24gPiBzdmcgLnN0cm9rZWQgewogICAg
IHN0cm9rZTogd2hpdGUgIWltcG9ydGFudDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA0ODU2ODM2Li44
OTg3N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgV2Vi
VmlldyAqbV93ZWJWaWV3OwogICAgIFJldGFpblB0cjxXZWJOb2RlSGlnaGxpZ2h0ZXI+IG1faGln
aGxpZ2h0ZXI7CiAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7Ci0gICAgV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQqIG1fZnJvbnRlbmRDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2Zyb250ZW5kQ2xpZW50OwogfTsKIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQubW0KaW5kZXggZGMzZTkyMy4uYzVhYWY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMTMz
LDggKzEzMyw3IEBAIEBlbmQKIFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50
KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICAgICAsIG1faGln
aGxpZ2h0ZXIoYWRvcHROUyhbW1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNw
ZWN0ZWRXZWJWaWV3OndlYlZpZXddKSkKLSAgICAsIG1fZnJvbnRlbmRQYWdlKDApCi0gICAgLCBt
X2Zyb250ZW5kQ2xpZW50KDApCisgICAgLCBtX2Zyb250ZW5kUGFnZShudWxscHRyKQogewogfQog
CkBAIC0xNTAsMTEgKzE0OSwxMyBAQCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkluc3Bl
Y3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbgogICAgIFt3aW5k
b3dDb250cm9sbGVyLmdldCgpIHNldEluc3BlY3RvckNsaWVudDp0aGlzXTsKIAogICAgIG1fZnJv
bnRlbmRQYWdlID0gY29yZShbd2luZG93Q29udHJvbGxlci5nZXQoKSB3ZWJWaWV3XSk7Ci0gICAg
YXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ+KG1fd2ViVmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdG9yQ29u
dHJvbGxlciwgbV9mcm9udGVuZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7Ci0gICAg
bV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5kQ2xpZW50LmdldCgpOwotICAgIFJldGFpblB0cjxX
ZWJJbnNwZWN0b3JGcm9udGVuZD4gd2ViSW5zcGVjdG9yRnJvbnRlbmQgPSBhZG9wdE5TKFtbV2Vi
SW5zcGVjdG9yRnJvbnRlbmQgYWxsb2NdIGluaXRXaXRoRnJvbnRlbmRDbGllbnQ6ZnJvbnRlbmRD
bGllbnQuZ2V0KCldKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV93ZWJWaWV3LCB3aW5kb3dDb250cm9sbGVyLmdl
dCgpLCBpbnNwZWN0b3JDb250cm9sbGVyLCBtX2Zyb250ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRT
ZXR0aW5ncygpKTsKKworICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZD4gd2ViSW5z
cGVjdG9yRnJvbnRlbmQgPSBhZG9wdE5TKFtbV2ViSW5zcGVjdG9yRnJvbnRlbmQgYWxsb2NdIGlu
aXRXaXRoRnJvbnRlbmRDbGllbnQ6bV9mcm9udGVuZENsaWVudC5nZXQoKV0pOwogICAgIFtbbV93
ZWJWaWV3IGluc3BlY3Rvcl0gc2V0RnJvbnRlbmQ6d2ViSW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCld
OwotICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7CisKKyAgICBtX2Zyb250
ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50
KG1fZnJvbnRlbmRDbGllbnQuZ2V0KCkpOworCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKQEAgLTE5
OSw4ICsyMDAsOCBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGlkU2V0U2VhcmNoaW5nRm9y
Tm9kZShib29sIGVuYWJsZWQpCiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpyZWxlYXNlRnJv
bnRlbmQoKQogewotICAgIG1fZnJvbnRlbmRDbGllbnQgPSAwOwotICAgIG1fZnJvbnRlbmRQYWdl
ID0gMDsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbnVsbHB0cjsKKyAgICBtX2Zyb250ZW5kUGFn
ZSA9IG51bGxwdHI7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNTkz
ODZjYi4uZDVkN2NlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTIxLDYg
KzEyMSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFdlYkljb25EYXRhYmFzZVByb3h5
IFwKICAgICBXZWJJbnNwZWN0b3IgXAogICAgIFdlYkluc3BlY3RvclByb3h5IFwKKyAgICBXZWJJ
bnNwZWN0b3JVSSBcCiAgICAgV2ViTWVkaWFDYWNoZU1hbmFnZXIgXAogICAgIFdlYk1lZGlhQ2Fj
aGVNYW5hZ2VyUHJveHkgXAogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSU9iamVjdC5oCmluZGV4IDZkZjQ5MTguLjkyMmU2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJT2JqZWN0LmgKQEAgLTE0Myw2ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEJ1bmRsZUZy
YW1lLAogICAgICAgICBCdW5kbGVIaXRUZXN0UmVzdWx0LAogICAgICAgICBCdW5kbGVJbnNwZWN0
b3IsCisgICAgICAgIEJ1bmRsZUluc3BlY3RvclVJLAogICAgICAgICBCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uLAogICAgICAgICBCdW5kbGVOb2RlSGFuZGxlLAogICAgICAgICBCdW5kbGVQYWdlLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAKaW5kZXgg
MTZlODQ1Yi4uZDg1ZjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tJbnNwZWN0b3IuY3BwCkBAIC0xNzQsNDQgKzE3NCw2IEBAIHZvaWQgV0tJbnNwZWN0b3JEZXRh
Y2goV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQogI2VuZGlmCiB9CiAKLWJvb2wgV0tJbnNw
ZWN0b3JJc0RlYnVnZ2luZ0phdmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQot
ewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgcmV0dXJuIHRvSW1wbChpbnNwZWN0b3JSZWYp
LT5pc0RlYnVnZ2luZ0phdmFTY3JpcHQoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGluc3Bl
Y3RvclJlZik7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLXZvaWQgV0tJbnNwZWN0
b3JUb2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikK
LXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHRvSW1wbChpbnNwZWN0b3JSZWYpLT50b2dn
bGVKYXZhU2NyaXB0RGVidWdnaW5nKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0
b3JSZWYpOwotI2VuZGlmCi19Ci0KLWJvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ0phdmFTY3Jp
cHQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQotewotI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgcmV0dXJuIHRvSW1wbChpbnNwZWN0b3JSZWYpLT5pc1Byb2ZpbGluZ0phdmFTY3JpcHQo
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGluc3BlY3RvclJlZik7Ci0gICAgcmV0dXJuIGZh
bHNlOwotI2VuZGlmCi19Ci0KLXZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0UHJvZmls
aW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9S
KQotICAgIHRvSW1wbChpbnNwZWN0b3JSZWYpLT50b2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKCk7
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0b3JSZWYpOwotI2VuZGlmCi19Ci0KIGJv
b2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ1BhZ2UoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVm
KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0luc3BlY3Rvci5oCmluZGV4IGJhNzY0ODkuLjE0NjU0ZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oCkBAIC01OCwxMiArNTgsNiBAQCBX
S19FWFBPUlQgYm9vbCBXS0luc3BlY3RvcklzQXR0YWNoZWQoV0tJbnNwZWN0b3JSZWYgaW5zcGVj
dG9yKTsKIFdLX0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9yQXR0YWNoKFdLSW5zcGVjdG9yUmVmIGlu
c3BlY3Rvcik7CiBXS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvckRldGFjaChXS0luc3BlY3RvclJl
ZiBpbnNwZWN0b3IpOwogCi1XS19FWFBPUlQgYm9vbCBXS0luc3BlY3RvcklzRGVidWdnaW5nSmF2
YVNjcmlwdChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwotV0tfRVhQT1JUIHZvaWQgV0tJbnNw
ZWN0b3JUb2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7
Ci0KLVdLX0VYUE9SVCBib29sIFdLSW5zcGVjdG9ySXNQcm9maWxpbmdKYXZhU2NyaXB0KFdLSW5z
cGVjdG9yUmVmIGluc3BlY3Rvcik7Ci1XS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvclRvZ2dsZUph
dmFTY3JpcHRQcm9maWxpbmcoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKLQogV0tfRVhQT1JU
IGJvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ1BhZ2UoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9y
KTsKIFdLX0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9yVG9nZ2xlUGFnZVByb2ZpbGluZyhXS0luc3Bl
Y3RvclJlZiBpbnNwZWN0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYklu
c3BlY3RvclByb3h5LmNwcAppbmRleCAxY2Q5NTg5Li5kN2RhZmQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNCw3ICszNCw3
IEBACiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIgotI2luY2x1
ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKQEAgLTExMCw2ICsxMTAsNyBA
QCBwcml2YXRlOgogICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0TG9nc1BhZ2VN
ZXNzYWdlc1RvU3lzdGVtQ29uc29sZUVuYWJsZWQodHJ1ZSk7CiAjZW5kaWYKIAorICAgICAgICBw
YWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKHRy
dWUpOwogICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0QXBwbGljYXRpb25DaHJv
bWVNb2RlRW5hYmxlZCh0cnVlKTsKIAogICAgICAgICByZXR1cm4gcGFnZUdyb3VwLnJlbGVhc2Uo
KTsKQEAgLTEyNCwxMyArMTI1LDEzIEBAIHByaXZhdGU6CiAKIFdlYkluc3BlY3RvclByb3h5OjpX
ZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkK
KyAgICAsIG1faW5zcGVjdG9yUGFnZShudWxscHRyKQogICAgICwgbV9pc1Zpc2libGUoZmFsc2Up
CiAgICAgLCBtX2lzQXR0YWNoZWQoZmFsc2UpCiAgICAgLCBtX2lzRGVidWdnaW5nSmF2YVNjcmlw
dChmYWxzZSkKICAgICAsIG1faXNQcm9maWxpbmdKYXZhU2NyaXB0KGZhbHNlKQogICAgICwgbV9p
c1Byb2ZpbGluZ1BhZ2UoZmFsc2UpCiAgICAgLCBtX3Nob3dNZXNzYWdlU2VudChmYWxzZSkKLSAg
ICAsIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UoZmFsc2UpCiAgICAgLCBtX2lnbm9yZUZpcnN0QnJp
bmdUb0Zyb250KGZhbHNlKQogICAgICwgbV9hdHRhY2htZW50U2lkZShBdHRhY2htZW50U2lkZUJv
dHRvbSkKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKQEAgLTMxNiwzNCArMzE3
LDYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNp
Z25lZCB3aWR0aCkKICAgICBwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgod2lkdGgpOwog
fQogCi12b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKCkK
LXsKLSAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1faXNEZWJ1
Z2dpbmdKYXZhU2NyaXB0KQotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCksIG1fcGFnZS0+cGFnZUlE
KCkpOwotICAgIGVsc2UKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjpTdGFydEphdmFTY3JpcHREZWJ1Z2dpbmcoKSwgbV9wYWdlLT5wYWdlSUQo
KSk7Ci0KLSAgICAvLyBGSVhNRTogaGF2ZSB0aGUgV2ViUHJvY2VzcyBub3RpZnkgdXMgb24gc3Rh
dGUgY2hhbmdlcy4KLSAgICBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdCA9ICFtX2lzRGVidWdnaW5n
SmF2YVNjcmlwdDsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlSmF2YVNjcmlw
dFByb2ZpbGluZygpCi17Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmIChtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdCkKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wSmF2YVNjcmlwdFByb2ZpbGluZygpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRKYXZhU2NyaXB0UHJvZmlsaW5nKCksIG1f
cGFnZS0+cGFnZUlEKCkpOwotCi0gICAgLy8gRklYTUU6IGhhdmUgdGhlIFdlYlByb2Nlc3Mgbm90
aWZ5IHVzIG9uIHN0YXRlIGNoYW5nZXMuCi0gICAgbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQgPSAh
bV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQ7Ci19Ci0KIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnRv
Z2dsZVBhZ2VQcm9maWxpbmcoKQogewogICAgIGlmICghbV9wYWdlKQpAQCAtNDI4LDI4ICs0MDEs
MjYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQo
KQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250
ZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2Up
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KICNlbmRpZgogCiAvLyBDYWxsZWQgYnkgV2ViSW5zcGVj
dG9yUHJveHkgbWVzc2FnZXMKLXZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3Rv
clBhZ2UodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMpCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVh
dGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikKIHsK
LSAgICBpbnNwZWN0b3JQYWdlSUQgPSAwOwotCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1faXNBdHRhY2hlZCA9IHNob3VsZE9wZW5BdHRhY2hlZCgpOwogICAgIG1f
YXR0YWNobWVudFNpZGUgPSBzdGF0aWNfY2FzdDxBdHRhY2htZW50U2lkZT4oaW5zcGVjdG9yUGFn
ZUdyb3VwKCktPnByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0YWNobWVudFNpZGUoKSk7CiAKLSAg
ICBXZWJQYWdlUHJveHkqIGluc3BlY3RvclBhZ2UgPSBwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBh
Z2UoKTsKLSAgICBBU1NFUlQoaW5zcGVjdG9yUGFnZSk7Ci0gICAgaWYgKCFpbnNwZWN0b3JQYWdl
KQorICAgIG1faW5zcGVjdG9yUGFnZSA9IHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpOwor
ICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOworICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpbnNwZWN0b3JQYWdlSUQgPSBpbnNwZWN0b3JQYWdlLT5w
YWdlSUQoKTsKLSAgICBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycyA9IGluc3BlY3RvclBhZ2UtPmNy
ZWF0aW9uUGFyYW1ldGVycygpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hDb25uZWN0
aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3BhZ2UtPnBhZ2VJRCgpKSwgbV9pbnNwZWN0b3JQ
YWdlLT5wYWdlSUQoKSk7CiAKICAgICBXS1BhZ2VQb2xpY3lDbGllbnRWMSBwb2xpY3lDbGllbnQg
PSB7CiAgICAgICAgIHsgMSwgdGhpcyB9LApAQCAtNDYxLDEyICs0MzIsMTAgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZSh1aW50NjRfdCYgaW5zcGVjdG9yUGFn
ZUlELCBXZWJQYWdlQ3IKICAgICAgICAgMCwgLyogZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UgKi8K
ICAgICB9OwogCi0gICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSShpbnNwZWN0b3JQ
YWdlKSwgJnBvbGljeUNsaWVudC5iYXNlKTsKKyAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50
KHRvQVBJKG1faW5zcGVjdG9yUGFnZSksICZwb2xpY3lDbGllbnQuYmFzZSk7CiAKICAgICBTdHJp
bmdCdWlsZGVyIHVybDsKLQogICAgIHVybC5hcHBlbmQoaW5zcGVjdG9yUGFnZVVSTCgpKTsKLQog
ICAgIHVybC5hcHBlbmRMaXRlcmFsKCI/ZG9ja1NpZGU9Iik7CiAKICAgICBpZiAobV9pc0F0dGFj
aGVkKSB7CkBAIC00ODMsMjkgKzQ1MiwyNCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVh
dGVJbnNwZWN0b3JQYWdlKHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcgogICAg
IH0gZWxzZQogICAgICAgICB1cmwuYXBwZW5kTGl0ZXJhbCgidW5kb2NrZWQiKTsKIAotICAgIG1f
cGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVS
TCgpKTsKLQotICAgIGluc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgdXJsLnRv
U3RyaW5nKCkpKTsKLQotICAgIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UgPSB0cnVlOworICAgIG1f
aW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVj
dG9yQmFzZVVSTCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwo
KSwgdXJsLnRvU3RyaW5nKCkpKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRl
SW5zcGVjdG9yUGFnZUZvclRlc3QodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMpCit2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdChJUEM6OkF0dGFjaG1lbnQgY29u
bmVjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgaW5zcGVjdG9yUGFnZUlEID0gMDsKLQogICAgIGlm
ICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzQXR0YWNoZWQgPSBmYWxzZTsK
IAotICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSA9IHBsYXRmb3JtQ3JlYXRlSW5zcGVj
dG9yUGFnZSgpOwotICAgIEFTU0VSVChpbnNwZWN0b3JQYWdlKTsKLSAgICBpZiAoIWluc3BlY3Rv
clBhZ2UpCisgICAgbV9pbnNwZWN0b3JQYWdlID0gcGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdl
KCk7CisgICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgaWYgKCFtX2luc3BlY3RvclBh
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluc3BlY3RvclBhZ2VJRCA9IGluc3BlY3RvclBh
Z2UtPnBhZ2VJRCgpOwotICAgIGluc3BlY3RvclBhZ2VQYXJhbWV0ZXJzID0gaW5zcGVjdG9yUGFn
ZS0+Y3JlYXRpb25QYXJhbWV0ZXJzKCk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCku
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JQ
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkVzdGFibGlzaENv
bm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsIG1fcGFnZS0+cGFnZUlEKCkpLCBtX2luc3Bl
Y3RvclBhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIFdLUGFnZVBvbGljeUNsaWVudFYxIHBvbGljeUNs
aWVudCA9IHsKICAgICAgICAgeyAxLCB0aGlzIH0sCkBAIC01MTcsMTMgKzQ4MSwxMCBAQCB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCh1aW50NjRfdCYg
aW5zcGVjdG9yUGFnZUlELCBXZQogICAgICAgICAwLCAvKiBkZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZSAqLwogICAgIH07CiAKLSAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KHRvQVBJKGluc3Bl
Y3RvclBhZ2UpLCAmcG9saWN5Q2xpZW50LmJhc2UpOworICAgIFdLUGFnZVNldFBhZ2VQb2xpY3lD
bGllbnQodG9BUEkobV9pbnNwZWN0b3JQYWdlKSwgJnBvbGljeUNsaWVudC5iYXNlKTsKIAotICAg
IG1fcGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFz
ZVVSTCgpKTsKLQotICAgIGluc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgaW5z
cGVjdG9yVGVzdFBhZ2VVUkwoKSkpOwotCi0gICAgbV9jcmVhdGVkSW5zcGVjdG9yUGFnZSA9IHRy
dWU7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFz
ZVVSTChpbnNwZWN0b3JCYXNlVVJMKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+bG9hZFJlcXVl
c3QoVVJMKFVSTCgpLCBpbnNwZWN0b3JUZXN0UGFnZVVSTCgpKSk7CiB9CiAKIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6Om9wZW4oKQpAQCAtNTM1LDE0ICs0OTYsMTYgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6b3BlbigpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRpZENsb3NlKCkKIHsK
LSAgICBpZiAoIW1fY3JlYXRlZEluc3BlY3RvclBhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RvclBh
Z2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlID0g
bnVsbHB0cjsKKwogICAgIG1faXNWaXNpYmxlID0gZmFsc2U7CiAgICAgbV9pc0RlYnVnZ2luZ0ph
dmFTY3JpcHQgPSBmYWxzZTsKICAgICBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdCA9IGZhbHNlOwog
ICAgIG1faXNQcm9maWxpbmdQYWdlID0gZmFsc2U7Ci0gICAgbV9jcmVhdGVkSW5zcGVjdG9yUGFn
ZSA9IGZhbHNlOwogICAgIG1fc2hvd01lc3NhZ2VTZW50ID0gZmFsc2U7CiAgICAgbV9pZ25vcmVG
aXJzdEJyaW5nVG9Gcm9udCA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDE3YTc0OTguLmFjZDEyYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzAsNiArMzAsNyBA
QAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNs
dWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNjIsNyAr
NjMsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBX
ZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7Ci1zdHJ1Y3QgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczsKIAogZW51bSBBdHRhY2htZW50U2lkZSB7CiAgICAgQXR0YWNobWVudFNpZGVC
b3R0b20sCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICAvLyBQdWJsaWMgQVBJcwogICAg
IFdlYlBhZ2VQcm94eSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQogCi0gICAgYm9v
bCBpc0Nvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRlZEluc3BlY3RvclBhZ2U7IH0K
KyAgICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvclBhZ2U7
IH0KICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaXNpYmxlOyB9CiAg
ICAgYm9vbCBpc0Zyb250KCk7CiAKQEAgLTEyMywxMiArMTIzLDYgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCk7CiAgICAgdm9pZCBzZXRUb29sYmFy
SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkgeyBwbGF0Zm9ybVNldFRvb2xiYXJIZWlnaHQoaGVpZ2h0
KTsgfQogCi0gICAgYm9vbCBpc0RlYnVnZ2luZ0phdmFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBt
X2lzRGVidWdnaW5nSmF2YVNjcmlwdDsgfQotICAgIHZvaWQgdG9nZ2xlSmF2YVNjcmlwdERlYnVn
Z2luZygpOwotCi0gICAgYm9vbCBpc1Byb2ZpbGluZ0phdmFTY3JpcHQoKSBjb25zdCB7IHJldHVy
biBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdDsgfQotICAgIHZvaWQgdG9nZ2xlSmF2YVNjcmlwdFBy
b2ZpbGluZygpOwotCiAgICAgYm9vbCBpc1Byb2ZpbGluZ1BhZ2UoKSBjb25zdCB7IHJldHVybiBt
X2lzUHJvZmlsaW5nUGFnZTsgfQogICAgIHZvaWQgdG9nZ2xlUGFnZVByb2ZpbGluZygpOwogCkBA
IC0xNTIsNyArMTQ2LDYgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQ
Qzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIFdlYlBh
Z2VQcm94eSogcGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCk7CiAgICAgdm9pZCBwbGF0Zm9y
bU9wZW4oKTsKQEAgLTE3Myw4ICsxNjYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1B
cHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKIAog
ICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JQcm94eSBtZXNzYWdlcwotICAgIHZvaWQgY3Jl
YXRlSW5zcGVjdG9yUGFnZSh1aW50NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJik7Ci0gICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCh1aW50
NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CisgICAg
dm9pZCBjcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCk7CisgICAgdm9pZCBjcmVh
dGVJbnNwZWN0b3JQYWdlRm9yVGVzdChJUEM6OkF0dGFjaG1lbnQpOwogICAgIHZvaWQgZGlkQ2xv
c2UoKTsKICAgICB2b2lkIGJyaW5nVG9Gcm9udCgpOwogICAgIHZvaWQgYXR0YWNoQXZhaWxhYmls
aXR5Q2hhbmdlZChib29sKTsKQEAgLTIwOSw2ICsyMDIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtQXR0YWNoZWRIZWlnaHQ7CiAKICAgICBXZWJQYWdlUHJv
eHkqIG1fcGFnZTsKKyAgICBXZWJQYWdlUHJveHkqIG1faW5zcGVjdG9yUGFnZTsKIAogICAgIGJv
b2wgbV9pc1Zpc2libGU7CiAgICAgYm9vbCBtX2lzQXR0YWNoZWQ7CkBAIC0yMTYsNyArMjEwLDYg
QEAgcHJpdmF0ZToKICAgICBib29sIG1faXNQcm9maWxpbmdKYXZhU2NyaXB0OwogICAgIGJvb2wg
bV9pc1Byb2ZpbGluZ1BhZ2U7CiAgICAgYm9vbCBtX3Nob3dNZXNzYWdlU2VudDsKLSAgICBib29s
IG1fY3JlYXRlZEluc3BlY3RvclBhZ2U7CiAgICAgYm9vbCBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zy
b250OwogCiAgICAgLy8gVGhlIGRlYnVnZ2VyIHN0b3BzIGFsbCB0aGUgcGFnZXMgaW4gdGhlIHNh
bWUgUGFnZUdyb3VwLiBIYXZpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlNmM5NDRkLi41MDMyMzRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMywxMCArMjMsMTIgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiBtZXNzYWdlcyAt
PiBXZWJJbnNwZWN0b3JQcm94eSB7Ci0gICAgQ3JlYXRlSW5zcGVjdG9yUGFnZSgpIC0+ICh1aW50
NjRfdCBpbnNwZWN0b3JQYWdlSUQsIFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBp
bnNwZWN0b3JQYWdlUGFyYW1ldGVycykKLSAgICBDcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgp
IC0+ICh1aW50NjRfdCBpbnNwZWN0b3JQYWdlSUQsIFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycykKKyAgICBDcmVhdGVJbnNwZWN0b3JQYWdl
KElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICBDcmVhdGVJbnNwZWN0
b3JQYWdlRm9yVGVzdChJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIpCisKICAg
ICBEaWRDbG9zZSgpCiAgICAgQnJpbmdUb0Zyb250KCkKKwogICAgIEluc3BlY3RlZFVSTENoYW5n
ZWQoU3RyaW5nIHVybFN0cmluZykKIAogICAgIFNhdmUoU3RyaW5nIGZpbGVuYW1lLCBTdHJpbmcg
Y29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKQpAQCAtMzUsNiAr
MzcsNyBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JQcm94eSB7CiAgICAgQXR0YWNoQm90dG9t
KCkKICAgICBBdHRhY2hSaWdodCgpCiAgICAgRGV0YWNoKCkKKwogICAgIEF0dGFjaEF2YWlsYWJp
bGl0eUNoYW5nZWQoYm9vbCBhdmFpbGFibGUpCiAKICAgICBTZXRBdHRhY2hlZFdpbmRvd0hlaWdo
dCh1bnNpZ25lZCBoZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCBjNmM2NjhjLi4zZDQxN2IyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIldLVVJMQ0YuaCIKICNpbXBvcnQgIldLVmlld1By
aXZhdGUuaCIKICNpbXBvcnQgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCisjaW1wb3J0ICJXZWJJ
bnNwZWN0b3JVSU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIKICNpbXBvcnQg
IldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXMuaCIKQEAgLTQxOCw3ICs0
MTksNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUlu
c3BlY3RvclBhZ2UoKQogICAgICAgICAgICAgaW5pdGlhbFJlY3QgPSBbTlNXaW5kb3cgY29udGVu
dFJlY3RGb3JGcmFtZVJlY3Q6d2luZG93RnJhbWUgc3R5bGVNYXNrOndpbmRvd1N0eWxlTWFza107
CiAgICAgfQogCi0gICAgbV9pbnNwZWN0b3JWaWV3ID0gYWRvcHROUyhbW1dLV2ViSW5zcGVjdG9y
V0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmluaXRpYWxSZWN0IGNvbnRleHRSZWY6dG9BUEko
JnBhZ2UoKS0+cHJvY2VzcygpLmNvbnRleHQoKSkgcGFnZUdyb3VwUmVmOnRvQVBJKGluc3BlY3Rv
clBhZ2VHcm91cCgpKSByZWxhdGVkVG9QYWdlOnRvQVBJKG1fcGFnZSldKTsKKyAgICBtX2luc3Bl
Y3RvclZpZXcgPSBhZG9wdE5TKFtbV0tXZWJJbnNwZWN0b3JXS1ZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6aW5pdGlhbFJlY3QgY29udGV4dFJlZjp0b0FQSSgmcGFnZSgpLT5wcm9jZXNzKCkuY29u
dGV4dCgpKSBwYWdlR3JvdXBSZWY6dG9BUEkoaW5zcGVjdG9yUGFnZUdyb3VwKCkpIHJlbGF0ZWRU
b1BhZ2U6bnVsbHB0cl0pOwogICAgIEFTU0VSVChtX2luc3BlY3RvclZpZXcpOwogCiAjaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSAxMDkwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzUzNWY2ZS4uMDFiNDBm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNDk1LDEwICs0OTUsMTAgQEAKIAkJMUFGRTQzNjUxOEI2QzA4MTAwOUM3QTQ4IC8q
IFVJRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUZFNDM2MzE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJ
MUFGRTQzNjYxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRkU0MzY0MThCNkMwODEwMDlDN0E0OCAv
KiBVSURlbGVnYXRlLmggKi87IH07CiAJCTFBRkY0OTAwMTgzM0RFNzgwMDlBQjE1QSAvKiBXS0Rl
cHJlY2F0ZWRGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFGRjQ4RkUxODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1bmN0
aW9ucy5jcHAgKi87IH07CisJCTFDODkxRDY1MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0
b3JVSS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
Qzg5MUQ2MjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwICovOyB9OworCQkx
Qzg5MUQ2NjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODkxRDYzMTlCMTI0RkYwMEJBNzlE
RCAvKiBXZWJJbnNwZWN0b3JVSS5oICovOyB9OwogCQkxQzhBRTc2MTE5OTJGNjNBMDBBQkY2RUMg
LyogRG9ja0JvdHRvbUxlZ2FjeS5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDOEFFNzVGMTk5MkY2MkYwMEFCRjZFQyAvKiBEb2NrQm90dG9tTGVn
YWN5LnBkZiAqLzsgfTsKIAkJMUM4QUU3NjIxOTkyRjYzQzAwQUJGNkVDIC8qIERvY2tSaWdodExl
Z2FjeS5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDOEFFNzYwMTk5MkY2MkYwMEFCRjZFQyAvKiBEb2NrUmlnaHRMZWdhY3kucGRmICovOyB9Owot
CQkxQzhFMjVBODEyNzBFM0JCMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI1
NkIxMjcwREUzODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCAqLzsg
fTsKLQkJMUM4RTI1QTkxMjcwRTNCQzAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhF
MjU2QTEyNzBERTM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLzsg
fTsKIAkJMUM4RTI4MjAxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI4MUUxMjc1RDE1NDAw
QkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oICovOyB9OwogCQkxQzhFMjgyMTEyNzVEMTU0MDBCQzdC
RDAgLyogV2ViSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDOEUyODFGMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3Bw
ICovOyB9OwogCQkxQzhFMjgzNDEyNzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyODMy
MTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oICovOyB9OwpAQCAtNTEwLDgg
KzUxMCwxMCBAQAogCQkxQ0E4QjkzNjEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJv
eHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
Q0E4QjkzNTEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gKi87IH07
CiAJCTFDQThCOTQ1MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQ0E4Qjk0MzEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OwogCQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVj
dG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUNBOEI5NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVz
c2FnZXMuaCAqLzsgfTsKLQkJMUNBOEI5NTQxMjdDODkxNTAwNTc2QzJCIC8qIFdlYkluc3BlY3Rv
ck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
OEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNYWMubW0gKi87IH07CisJCTFD
QThCOTU0MTI3Qzg5MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyREFEMTI3OEM1QjIwMEJD
N0JEMCAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSAqLzsgfTsKIAkJMUNCNzVDOTQxNzAxRTg4MDAw
OUY4MDlGIC8qIERvY2tSaWdodC5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDQjc1QzkzMTcwMUU4ODAwMDlGODA5RiAvKiBEb2NrUmlnaHQucGRm
ICovOyB9OworCQkxQ0JCRTRBMDE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKKwkJMUNCQkU0QTExOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3Bl
Y3RvclVJTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDQkJFNDlGMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2Vz
LmggKi87IH07CiAJCTFDQkM5NDVFMTY1MTVFRDIwMEQ2OEFBRSAvKiBEb2NrQm90dG9tLnBkZiBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCQzk0NUQx
NjUxNUVEMjAwRDY4QUFFIC8qIERvY2tCb3R0b20ucGRmICovOyB9OwogCQkxRjMzNUJDMDE4NUI4
NEYwMDAxQTIwMUEgLyogV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjMzNUJCRjE4NUI4NEQ4MDAx
QTIwMUEgLyogV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUY2MDRCQTgxODg5RkE3NDAwRUUw
Mzk1IC8qIFdLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGNjA0QkE2MTg4OUZBNzQwMEVFMDM5NSAvKiBXS1Jl
bmRlcmluZ1Byb2dyZXNzRXZlbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTI0ODEsMTAgKzI0ODMsMTEgQEAKIAkJMUFGRjQ4RkUxODMzREU3
ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQkI0MTdDOTEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNr
ZXJDb21wbGV0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRl
eHRDaGVja2VyQ29tcGxldGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
NzdDMTk1MTI4OEE4NzIwMDZBNzQyRiAvKiBXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM4OTFENjIxOUIxMjRGRjAwQkE3OUREIC8qIFdl
Ykluc3BlY3RvclVJLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
Ykluc3BlY3RvclVJLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM4OTFENjMx
OUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclVJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDODkxRDY0MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4QUU3NUYxOTkyRjYyRjAwQUJGNkVDIC8qIERv
Y2tCb3R0b21MZWdhY3kucGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBuYW1lID0gRG9ja0JvdHRvbUxlZ2FjeS5wZGY7IHBhdGgg
PSBSZXNvdXJjZXMvRG9ja0JvdHRvbUxlZ2FjeS5wZGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDOEFFNzYwMTk5MkY2MkYwMEFCRjZFQyAvKiBEb2NrUmlnaHRMZWdhY3kucGRmICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRm
OyBuYW1lID0gRG9ja1JpZ2h0TGVnYWN5LnBkZjsgcGF0aCA9IFJlc291cmNlcy9Eb2NrUmlnaHRM
ZWdhY3kucGRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzhFMjU2QTEyNzBERTM4
MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4RTI1NkIxMjcwREUzODAwQkM3QkQwIC8qIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUM4RTI4MUUxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RTI4MUYxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzhFMjgzMjEyNzVENzM4MDBCQzdC
RDAgLyogV2ViSW5zcGVjdG9yUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViSW5zcGVjdG9yUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0
OTQsMTEgKzI0OTcsMTMgQEAKIAkJMUM4RTJBMUMxMjc3ODMzRjAwQkM3QkQwIC8qIFdlYkluc3Bl
Y3Rvci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3IubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEUyQTMxMTI3Nzg1MjQw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RTJBMzIxMjc3ODUyNDAwQkM3QkQwIC8q
IFdlYkluc3BlY3Rvck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkluc3BlY3Rvck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFD
OEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNYWMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNw
ZWN0b3JVSU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
Ykluc3BlY3RvclVJTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0E4Qjkz
NTEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBOEI5NDMxMjdDODgyQTAwNTc2QzJCIC8qIFdl
Ykluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBOEI5NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdl
Ykluc3BlY3RvclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQ0I3NUM5MzE3MDFFODgwMDA5RjgwOUYgLyogRG9ja1JpZ2h0LnBkZiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBkZjsgbmFtZSA9
IERvY2tSaWdodC5wZGY7IHBhdGggPSBSZXNvdXJjZXMvRG9ja1JpZ2h0LnBkZjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3Bl
Y3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUNCQkU0OUYxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJ
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9y
VUlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0JDOTQ1RDE2NTE1
RUQyMDBENjhBQUUgLyogRG9ja0JvdHRvbS5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7IG5hbWUgPSBEb2NrQm90dG9tLnBkZjsg
cGF0aCA9IFJlc291cmNlcy9Eb2NrQm90dG9tLnBkZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUNDNDE3QzkxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0Q2hlY2tlckNvbXBsZXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYwMTgxNjkxODU4REMxNTAwRjkyODg0
IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC01Njc4LDggKzU2ODMsNiBAQAogCQkJCUJDMUJFMURFMTJENTRBNDEwMDA0QTIyOCAv
KiBXZWJHZW9sb2NhdGlvbkNsaWVudC5oICovLAogCQkJCUJDMTExQTU5MTEyRjRGQkIwMDMzN0JB
QiAvKiBXZWJJbnNwZWN0b3JDbGllbnQuY3BwICovLAogCQkJCUJDMDMyRDZEMTBGNDM3OEQwMDU4
QzE1QSAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCAqLywKLQkJCQkxQzhFMjU2QjEyNzBERTM4MDBC
QzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwICovLAotCQkJCTFDOEUyNTZB
MTI3MERFMzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oICovLAogCQkJ
CTMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwICov
LAogCQkJCTMxMDk5OTY4MTQ2QzcxRjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQu
aCAqLywKIAkJCQk1MTIxMjdDMTE5MDgyMzlBMDBEQUYzNUMgLyogV2ViUGFzdGVib2FyZE92ZXJy
aWRlcy5jcHAgKi8sCkBAIC01NzM5LDYgKzU3NDIsOSBAQAogCQkJCTFDOEUyODFGMTI3NUQxNTQw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3BwICovLAogCQkJCTFDOEUyODFFMTI3NUQxNTQwMEJD
N0JEMCAvKiBXZWJJbnNwZWN0b3IuaCAqLywKIAkJCQkxQzhFMkExQzEyNzc4MzNGMDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluICovLAorCQkJCTFDODkxRDYyMTlCMTI0RkYwMEJB
NzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgKi8sCisJCQkJMUM4OTFENjMxOUIxMjRGRjAwQkE3
OUREIC8qIFdlYkluc3BlY3RvclVJLmggKi8sCisJCQkJMUM4OTFENjQxOUIxMjRGRjAwQkE3OURE
IC8qIFdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluICovLAogCQkJCUJDODU3Rjg0MTJCODJEMEIw
MEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgKi8sCiAJCQkJQkM4NTdG
ODMxMkI4MkQwQjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi8sCiAJ
CQkJQkM5NjNENkExMTNERDE5MjAwNTc0QkUyIC8qIFdlYlBhZ2UuY3BwICovLApAQCAtNjQ4Nyw3
ICs2NDkzLDcgQEAKIAkJCQk1MTkyRDU3NTE5NjFGRDAzMDBDRDE5QUEgLyogU2VydmljZXNPdmVy
bGF5Q29udHJvbGxlci5tbSAqLywKIAkJCQkxQUFGMjYzNzE0Njg3QzM5MDA0QTFFOEEgLyogVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCAqLywKIAkJCQkxQUFGMjYzNjE0Njg3QzM5MDA0
QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gKi8sCi0JCQkJMUM4RTJE
QUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1hYy5tbSAqLywKKwkJCQkxQzhFMkRB
RDEyNzhDNUIyMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yVUlNYWMubW0gKi8sCiAJCQkJQkM5NjNE
NkQxMTNERDFBNTAwNTc0QkUyIC8qIFdlYlBhZ2VNYWMubW0gKi8sCiAJCQkJMjlDRDU1QTgxMjhF
Mjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggKi8sCiAJ
CQkJMjlDRDU1QTkxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLm1tICovLApAQCAtNjg0Myw2ICs2ODQ5LDggQEAKIAkJCQkxQzhFMkEzMjEyNzc4NTI0
MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCAqLywKIAkJCQkxQ0E4Qjk0MzEyN0M4
ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAog
CQkJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2Vz
LmggKi8sCisJCQkJMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQkxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2Vi
SW5zcGVjdG9yVUlNZXNzYWdlcy5oICovLAogCQkJCTMzRDNBM0M0MTMzOTYxNzkwMDcwOUJFNCAv
KiBXZWJNZWRpYUNhY2hlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMzNEM0Ez
QzUxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyTWVzc2FnZXMuaCAqLywK
IAkJCQkzM0QzQTNDNjEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC03NDU3LDYgKzc0NjUsNyBAQAogCQkJCTJEQUNF
NjRFMThBREJGRjAwMEU0Q0E3NiAvKiBfV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxNTc4QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNkEyNUZERDEyQURDNkNDMDBEQzQwQ0MgLyogV2ViRGF0YWJhc2VNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzg5MUQ2NjE5QjEyNEZGMDBCQTc5REQgLyogV2Vi
SW5zcGVjdG9yVUkuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2MkE3NkI3MTJCMUIyNUYwMDA1RjFC
NiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYy
QTc2NUQxMkIxQUJDMzAwMDVGMUI2IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRDZBQjU0MTE5MkIxQzRBMDAzQTlGRDEgLyogV0tQREZQYWdlTnVtYmVy
SW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTc1MTMsNyArNzUyMiw2IEBACiAJCQkJMUM4
RTI4MjAxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUEzQ0MxNjcxODkwNkFDRjAwMUU2RUQ4IC8qIFdLV2ViVmlldy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMwMzJEODIxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkluc3BlY3RvckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMUM4RTI1QTkxMjcwRTNCQzAwQkM3QkQwIC8qIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzhFMkEzNjEyNzc4NTI0MDBC
QzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUy
ODM0MTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUNBOEI5NDYxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzc4Miw2ICs3NzkwLDcgQEAKIAkJCQlGNjM0NDQ1RDEy
QTg4NUU5MDAwNjEyRDggLyogV0tTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFBRjA4QjgxOTI2OUU2RDAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlck1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYwNDEyNEZGMDI3MDA2OEYyMEEgLyogV0tT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTFDQkJFNEExMTlCNjZD
NTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkNCNEU0QzE4QkJFMDQ0MDAwRkNGQzkgLyogV0tDb250ZW50Vmlldy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzdBNjRFNTcxOEYzOEY0NjAwRUIzMEYxIC8qIF9XS0Zvcm1JbnB1dFNlc3Npb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTFGNjA0QkFBMTg4OUZCQjgwMEVFMDM5NSAvKiBXS1JlbmRl
cmluZ1Byb2dyZXNzRXZlbnRzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtODkwMCw2ICs4
OTA5LDcgQEAKIAkJCQkwMEI5NjYxOTE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTFBRTVCN0ZCMTFFN0FFRDIwMEJBNjc2NyAvKiBOZXRzY2FwZVBs
dWdpbk1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDMzYxRDcyMTkyN0ZBMzYwMDM2QTU5RCAv
KiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQzg5MUQ2
NTE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUE0QTlDNTUxMkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBNEE5QzlBMTJCODIxQ0QwMDhGRTk4NCAvKiBOZXRzY2FwZVBs
dWdpbk1vZHVsZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQTU4ODkzMTFFRTcwNDAwMDYx
Qjg4MiAvKiBOZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg5Mzgs
NiArODk0OCw3IEBACiAJCQkJMUEyRDg0MzkxMjdGNjVENTAwMUVCOTYyIC8qIE5QT2JqZWN0TWVz
c2FnZVJlY2VpdmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQUYw
OEFEMTkyNjkzNjcwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUEyRDgyQTYxMjdGNEVBQjAwMUVCOTYyIC8qIE5QT2JqZWN0UHJveHku
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUNCQkU0QTAxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYklu
c3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ4MkE4
MTI3RjRFQUIwMDFFQjk2MiAvKiBOUFJlbW90ZU9iamVjdE1hcC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQTIxNjFCMTExRjM3NjY0MDA4QUQwRjUgLyogTlBSdW50aW1lT2JqZWN0TWFwLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBMjE2MkIwMTFGMzg5NzEwMDhBRDBGNSAvKiBOUFJ1bnRpbWVV
dGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MTk3LDggKzkyMDgsNyBAQAogCQkJCUJD
Q0Y2QUJDMTJDOTFFRjkwMDhGOUMzNSAvKiBXZWJJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQzhFMjgyMTEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDMTExQTYwMTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJJbnNwZWN0b3JDbGllbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUM4RTI1QTgxMjcwRTNCQjAwQkM3QkQwIC8qIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFDQThCOTU0MTI3
Qzg5MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkx
Q0E4Qjk1NDEyN0M4OTE1MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yVUlNYWMubW0gaW4gU291cmNl
cyAqLywKIAkJCQkxQzhFMkEzNTEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDOEUyODM1MTI3NUQ3MzgwMEJDN0JE
MCAvKiBXZWJJbnNwZWN0b3JQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQ0E4QjkzNjEy
N0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA1MDFkNDFjLi5hZDM2OWIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NCwyMCArODQsMjMgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCiAKIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQo
SW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlcikKIHsKLSAgICBXZWJQYWdlKiBpbnNwZWN0
b3JQYWdlID0gY29udHJvbGxlci0+aXNVbmRlclRlc3QoKSA/IG1fcGFnZS0+aW5zcGVjdG9yKCkt
PmNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KCkgOiBtX3BhZ2UtPmluc3BlY3RvcigpLT5jcmVh
dGVJbnNwZWN0b3JQYWdlKCk7Ci0gICAgQVNTRVJUX1VOVVNFRChpbnNwZWN0b3JQYWdlLCBpbnNw
ZWN0b3JQYWdlKTsKLSAgICByZXR1cm4gdGhpczsKKyAgICBpZiAoY29udHJvbGxlci0+aXNVbmRl
clRlc3QoKSkKKyAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y3JlYXRlSW5zcGVjdG9yUGFn
ZUZvclRlc3QoKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmNyZWF0
ZUluc3BlY3RvclBhZ2UoKTsKKworICAgIHJldHVybiBtX3BhZ2UtPmluc3BlY3RvcigpOwogfQog
CiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpCiB7Ci0g
ICAgaWYgKG1fcGFnZS0+aW5zcGVjdG9yKCkpCi0gICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCkt
PmRpZENsb3NlKCk7CisvLyAgICBpZiAobV9wYWdlLT5pbnNwZWN0b3IoKSkKKy8vICAgICAgICBt
X3BhZ2UtPmluc3BlY3RvcigpLT5kaWRDbG9zZSgpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNs
aWVudDo6YnJpbmdGcm9udGVuZFRvRnJvbnQoKQogewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCkt
PmJyaW5nVG9Gcm9udCgpOworLy8gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YnJpbmdUb0Zyb250
KCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRSZXNpemVNYWluRnJhbWUoRnJh
bWUqKQpAQCAtMTk3LDI2ICsyMDAsNiBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGlkU2V0
U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQpCiB9CiAjZW5kaWYKIAotYm9vbCBXZWJJbnNw
ZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
Ci17Ci0gICAgV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSBtX3BhZ2UtPmluc3BlY3RvcigpOwot
ICAgIGlmICghaW5zcGVjdG9yKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSNpZiBFTkFCTEUo
SU5TUEVDVE9SX1NFUlZFUikKLSAgICBpZiAoaW5zcGVjdG9yLT5oYXNSZW1vdGVGcm9udGVuZENv
bm5lY3RlZCgpKSB7Ci0gICAgICAgIGluc3BlY3Rvci0+c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250
ZW5kKG1lc3NhZ2UpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKLQotICAg
IFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UgPSBpbnNwZWN0b3ItPmluc3BlY3RvclBhZ2UoKTsKLSAg
ICBpZiAoaW5zcGVjdG9yUGFnZSkKLSAgICAgICAgcmV0dXJuIGRvRGlzcGF0Y2hNZXNzYWdlT25G
cm9udGVuZFBhZ2UoaW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKSwgbWVzc2FnZSk7Ci0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzdXBwb3J0c0ZyYW1l
SW5zdHJ1bWVudGF0aW9uKCkKIHsKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA3MDMzYmRlLi4wYzc5ZThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJQYWdlOwogY2xhc3MgUmVwYWludEluZGljYXRvckxheWVyQ2xpZW50OwogCi1jbGFzcyBX
ZWJJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJs
aWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLCBwcml2YXRlIFBhZ2VPdmVybGF5
OjpDbGllbnQgeworY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Oklu
c3BlY3RvckNsaWVudCwgcHJpdmF0ZSBQYWdlT3ZlcmxheTo6Q2xpZW50IHsKIGZyaWVuZCBjbGFz
cyBSZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ7CiBwdWJsaWM6CiAgICAgV2ViSW5zcGVjdG9y
Q2xpZW50KFdlYlBhZ2UqKTsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6
Okluc3BlY3RvckNvbnRyb2xsZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJ
bnNwZWN0b3JGcm9udGVuZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250
ZW5kVG9Gcm9udCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNpemVNYWluRnJh
bWUoV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKQEAgLTcyLDggKzcyLDYgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGJvb2wgb3ZlcnJpZGVzU2hvd1BhaW50UmVjdHMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNob3dQYWludFJlY3QoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZE1l
c3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotCiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzRnJhbWVJbnN0cnVtZW50YXRpb24oKTsKIAogICAgIC8vIFBhZ2VPdmVybGF5
OjpDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlZGI3NmEuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
IgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLQotI2luY2x1ZGUgIldlYkluc3BlY3Rvci5oIgot
I2luY2x1ZGUgIldlYlBhZ2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xs
ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnRCYXNlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLXVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlBhZ2UqIHBh
Z2UsIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsKCZwYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGluc3BlY3Rv
clBhZ2UtPmNvcmVQYWdlKCksIHN0ZDo6bWFrZV91bmlxdWU8U2V0dGluZ3M+KCkpCi0gICAgLCBt
X3BhZ2UocGFnZSkKLXsKLX0KLQotU3RyaW5nIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojps
b2NhbGl6ZWRTdHJpbmdzVVJMKCkKLXsKLSAgICByZXR1cm4gbV9wYWdlLT5pbnNwZWN0b3IoKS0+
bG9jYWxpemVkU3RyaW5nc1VSTCgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50OjpicmluZ1RvRnJvbnQoKQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmJyaW5nVG9G
cm9udCgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjbG9zZVdpbmRv
dygpCi17Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlz
Y29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5z
cGVjdG9yRGVzdHJveWVkKTsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5kaWRDbG9zZSgpOwot
fQotCi1ib29sIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjYW5TYXZlKCkKLXsKLSAgICBy
ZXR1cm4gbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y2FuU2F2ZSgpOwotfQotCi12b2lkIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKQotewot
ICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVu
Y29kZWQsIGZvcmNlU2F2ZUFzKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkK
LXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5hcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpOwot
fQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3coRG9ja1Np
ZGUgZG9ja1NpZGUpCi17Ci0gICAgc3dpdGNoIChkb2NrU2lkZSkgewotICAgIGNhc2UgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OlVORE9DS0VEOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6RE9D
S0VEX1RPX0JPVFRPTToKLSAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YXR0YWNoQm90dG9t
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRP
Q0tFRF9UT19SSUdIVDoKLSAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YXR0YWNoUmlnaHQo
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjpkZXRhY2hXaW5kb3coKQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmRldGFj
aCgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdp
bmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCi17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+
c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVpZ2h0KTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKLXsK
LSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5zZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKTsK
LX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0VG9vbGJhckhlaWdodCh1
bnNpZ25lZCBoZWlnaHQpCi17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+c2V0VG9vbGJhckhl
aWdodChoZWlnaHQpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjppbnNw
ZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQotewotICAgIG1fcGFnZS0+
aW5zcGVjdG9yKCktPmluc3BlY3RlZFVSTENoYW5nZWQodXJsU3RyaW5nKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjMzc3ZWY1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAorKysgL2Rldi9udWxsCkBA
IC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50X2gKLSNkZWZpbmUgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRfaAotCi0jaWYgRU5B
QkxFKElOU1BFQ1RPUikKLQotI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViUGFnZTsKLQotY2xh
c3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbCB7Ci1wdWJsaWM6Ci0gICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQoV2ViUGFnZSogcGFnZSwgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSk7Ci0KLXByaXZhdGU6
Ci0gICAgdmlydHVhbCBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIG92ZXJyaWRlOwotCi0g
ICAgdmlydHVhbCB2b2lkIGJyaW5nVG9Gcm9udCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZVdpbmRvdygpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBib29sIGNhblNhdmUoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoV2luZG93KERvY2tTaWRlKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93KCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKLQotICAgIFdlYlBhZ2UqIG1fcGFnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKLQotI2VuZGlmIC8vIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3Rvci5jcHAKaW5kZXggYzViYjJkYS4uM2FlY2MwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDE0ICsy
OCwxNSBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICNpbmNsdWRlICJXZWJGcmFtZS5oIgot
I2luY2x1ZGUgIldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViSW5z
cGVjdG9yTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2Uu
aCIKLSNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL01haW5GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xs
ZXIuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg+CkBAIC00Niwx
OSArNDcsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1QYXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gV2ViSW5zcGVjdG9yOjpjcmVhdGUoV2ViUGFn
ZSogcGFnZSwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwpCitQYXNz
UmVmUHRyPFdlYkluc3BlY3Rvcj4gV2ViSW5zcGVjdG9yOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvcihwYWdlLCBmcm9udGVuZENo
YW5uZWwpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvcihwYWdlKSk7CiB9
CiAKLVdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlBhZ2UqIHBhZ2UsIEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQorV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0
b3IoV2ViUGFnZSogcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQotICAgICwgbV9pbnNwZWN0b3JQ
YWdlKG51bGxwdHIpCi0gICAgLCBtX2Zyb250ZW5kQ2xpZW50KG51bGxwdHIpCi0gICAgLCBtX2Zy
b250ZW5kQ2hhbm5lbChmcm9udGVuZENoYW5uZWwpCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
LCBtX2hhc0xvY2FsaXplZFN0cmluZ3NVUkwoZmFsc2UpCi0jZW5kaWYKICNpZiBFTkFCTEUoSU5T
UEVDVE9SX1NFUlZFUikKICAgICAsIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoZmFsc2UpCiAj
ZW5kaWYKQEAgLTY2LDEyOCArNjEsNDkgQEAgV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2Vi
UGFnZSogcGFnZSwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW4KIH0KIAog
Ly8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yQ2xpZW50Ci1XZWJQYWdlKiBXZWJJbnNwZWN0b3I6
OmNyZWF0ZUluc3BlY3RvclBhZ2UoKQordm9pZCBXZWJJbnNwZWN0b3I6OmNyZWF0ZUluc3BlY3Rv
clBhZ2UoKQogewogICAgIGlmICghbV9wYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIEFTU0VSVCghbV9pbnNwZWN0b3JQYWdlKTsKLSAgICBBU1NFUlQoIW1fZnJvbnRlbmRDbGll
bnQpOwotCi0gICAgdWludDY0X3QgaW5zcGVjdG9yUGFnZUlEID0gMDsKLSAgICBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JQcm94eTo6Q3JlYXRlSW5zcGVjdG9yUGFnZSgpLAotICAgICAgICAgICAgTWVzc2FnZXM6
OldlYkluc3BlY3RvclByb3h5OjpDcmVhdGVJbnNwZWN0b3JQYWdlOjpSZXBseShpbnNwZWN0b3JQ
YWdlSUQsIHBhcmFtZXRlcnMpLAotICAgICAgICAgICAgbV9wYWdlLT5wYWdlSUQoKSwgc3RkOjpj
aHJvbm86Om1pbGxpc2Vjb25kczo6bWF4KCkpKSB7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFpbnNwZWN0b3JQYWdlSUQpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOworI2lmIE9TKERBUldJTikKKyAgICBtYWNoX3BvcnRfdCBsaXN0
ZW5pbmdQb3J0OworICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNI
X1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOwogCi0gICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkuY3JlYXRlV2ViUGFnZShpbnNwZWN0b3JQYWdlSUQsIHBhcmFtZXRlcnMpOwotICAg
IG1faW5zcGVjdG9yUGFnZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYlBhZ2UoaW5zcGVjdG9y
UGFnZUlEKTsKLSAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKKyAgICBtX2Zyb250ZW5kQ29u
bmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCksIHRoaXMsIFJ1bkxvb3A6Om1haW4o
KSk7CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPnNldE9ubHlTZW5kTWVzc2FnZXNBc0Rpc3Bh
dGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlXaGVuUHJvY2Vzc2luZ1N1Y2hBTWVzc2FnZSh0cnVl
KTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+b3BlbigpOwogCi0gICAgYXV0byBmcm9udGVu
ZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1f
cGFnZSwgbV9pbnNwZWN0b3JQYWdlKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRD
bGllbnQuZ2V0KCk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5k
Q2xpZW50KSk7Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9yUGFnZTsKKyAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JQcm94eTo6Q3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQobGlzdGVuaW5n
UG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisjZWxz
ZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisjZW5kaWYKIH0KIAotV2ViUGFnZSogV2ViSW5zcGVj
dG9yOjpjcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgpCit2b2lkIFdlYkluc3BlY3Rvcjo6Y3Jl
YXRlSW5zcGVjdG9yUGFnZUZvclRlc3QoKQogewogICAgIGlmICghbV9wYWdlKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JQYWdlKTsKLSAgICBBU1NF
UlQoIW1fZnJvbnRlbmRDbGllbnQpOwotCi0gICAgdWludDY0X3QgaW5zcGVjdG9yUGFnZUlEID0g
MDsKLSAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAgICBpZiAo
IVdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6Q3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3Qo
KSwKLSAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6Q3JlYXRlSW5zcGVj
dG9yUGFnZUZvclRlc3Q6OlJlcGx5KGluc3BlY3RvclBhZ2VJRCwgcGFyYW1ldGVycyksCi0gICAg
ICAgICAgICBtX3BhZ2UtPnBhZ2VJRCgpLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzOjptYXgo
KSkpIHsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIWluc3BlY3RvclBhZ2VJRCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisjaWYg
T1MoREFSV0lOKQorICAgIG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7CisgICAgbWFjaF9wb3J0
X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlz
dGVuaW5nUG9ydCk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jcmVhdGVXZWJQYWdlKGlu
c3BlY3RvclBhZ2VJRCwgcGFyYW1ldGVycyk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlID0gV2ViUHJv
Y2Vzczo6c2hhcmVkKCkud2ViUGFnZShpbnNwZWN0b3JQYWdlSUQpOwotICAgIEFTU0VSVChtX2lu
c3BlY3RvclBhZ2UpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9u
OjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0
ZW5pbmdQb3J0KSwgdGhpcywgUnVuTG9vcDo6bWFpbigpKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVj
dGlvbi0+c2V0T25seVNlbmRNZXNzYWdlc0FzRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBs
eVdoZW5Qcm9jZXNzaW5nU3VjaEFNZXNzYWdlKHRydWUpOworICAgIG1fZnJvbnRlbmRDb25uZWN0
aW9uLT5vcGVuKCk7CiAKLSAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9wYWdlLCBtX2luc3BlY3RvclBhZ2UpOwot
ICAgIG1fZnJvbnRlbmRDbGllbnQgPSBmcm9udGVuZENsaWVudC5nZXQoKTsKLSAgICBtX2luc3Bl
Y3RvclBhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JG
cm9udGVuZENsaWVudChXVEY6Om1vdmUoZnJvbnRlbmRDbGllbnQpKTsKLSAgICByZXR1cm4gbV9p
bnNwZWN0b3JQYWdlOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpDcmVhdGVJbnNwZWN0
b3JQYWdlRm9yVGVzdChJUEM6OkF0dGFjaG1lbnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQ
RV9NQUtFX1NFTkQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisjZWxzZQorICAgIG5vdEltcGxlbWVu
dGVkKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OmRlc3Ryb3lJbnNwZWN0b3JQ
YWdlKCkKIHsKLSAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRyOwotICAgIG1fZnJvbnRlbmRD
bGllbnQgPSBudWxscHRyOworI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQogICAgIG1fZnJv
bnRlbmRDaGFubmVsID0gbnVsbHB0cjsKLX0KLQotLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQKLXZvaWQgV2ViSW5zcGVjdG9yOjpkaWRDbG9zZSgpCi17Ci0gICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAg
IGRlc3Ryb3lJbnNwZWN0b3JQYWdlKCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpicmluZ1Rv
RnJvbnQoKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwg
bV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjppbnNwZWN0ZWRVUkxD
aGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyksIG1fcGFnZS0+cGFnZUlEKCkp
OwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6c2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVB
cykKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2F2ZShmaWxlbmFtZSwgY29udGVu
dCwgYmFzZTY0RW5jb2RlZCwgZm9yY2VTYXZlQXMpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQot
dm9pZCBXZWJJbnNwZWN0b3I6OmFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnQpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkFwcGVuZChm
aWxlbmFtZSwgY29udGVudCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3Bl
Y3Rvcjo6YXR0YWNoQm90dG9tKCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0
YWNoQm90dG9tKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6
YXR0YWNoUmlnaHQoKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hSaWdo
dCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OmRldGFjaCgp
Ci17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRldGFjaCgpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVu
c2lnbmVkIGhlaWdodCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNo
ZWRXaW5kb3dIZWlnaHQoaGVpZ2h0KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2Vi
SW5zcGVjdG9yOjpzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQotewotICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKSwg
bV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzZXRUb29sYmFySGVp
Z2h0KHVuc2lnbmVkIGhlaWdodCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0
VG9vbGJhckhlaWdodChoZWlnaHQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyNlbmRpZgogfQogCiAv
LyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yIG1lc3NhZ2VzCkBAIC0yMDMsMzIgKzExOSwzMiBAQCB2
b2lkIFdlYkluc3BlY3Rvcjo6Y2xvc2UoKQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6ZGlkU2F2ZShj
b25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKLSAgICBt
X2luc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVT
Y3JpcHQobWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIiLCB1cmws
ICJcIikiKSk7CisvLyAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKKy8vICAgIG1faW5zcGVj
dG9yUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdCht
YWtlU3RyaW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChcIiIsIHVybCwgIlwiKSIp
KTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OmRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCkK
IHsKLSAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPmNv
cmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQobWFrZVN0cmluZygi
SW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRUb1VSTChcIiIsIHVybCwgIlwiKSIpKTsKKy8v
ICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOworLy8gICAgbV9pbnNwZWN0b3JQYWdlLT5jb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KG1ha2VTdHJpbmcoIklu
c3BlY3RvckZyb250ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIiLCB1cmwsICJcIikiKSk7CiB9CiAK
IHZvaWQgV2ViSW5zcGVjdG9yOjphdHRhY2hlZEJvdHRvbSgpCiB7Ci0gICAgaWYgKG1fZnJvbnRl
bmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldEF0dGFjaGVkV2luZG93KElu
c3BlY3RvckZyb250ZW5kQ2xpZW50OjpET0NLRURfVE9fQk9UVE9NKTsKKy8vICAgIGlmIChtX2Zy
b250ZW5kQ2xpZW50KQorLy8gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldEF0dGFjaGVkV2lu
ZG93KEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpET0NLRURfVE9fQk9UVE9NKTsKIH0KIAogdm9p
ZCBXZWJJbnNwZWN0b3I6OmF0dGFjaGVkUmlnaHQoKQogewotICAgIGlmIChtX2Zyb250ZW5kQ2xp
ZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRBdHRhY2hlZFdpbmRvdyhJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6RE9DS0VEX1RPX1JJR0hUKTsKKy8vICAgIGlmIChtX2Zyb250ZW5k
Q2xpZW50KQorLy8gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldEF0dGFjaGVkV2luZG93KElu
c3BlY3RvckZyb250ZW5kQ2xpZW50OjpET0NLRURfVE9fUklHSFQpOwogfQogCiB2b2lkIFdlYklu
c3BlY3Rvcjo6ZGV0YWNoZWQoKQogewotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAg
ICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRBdHRhY2hlZFdpbmRvdyhJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6VU5ET0NLRUQpOworLy8gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCisvLyAgICAgICAg
bV9mcm9udGVuZENsaWVudC0+c2V0QXR0YWNoZWRXaW5kb3coSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OlVORE9DS0VEKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OmV2YWx1YXRlU2NyaXB0Rm9y
VGVzdChjb25zdCBTdHJpbmcmIHNjcmlwdCkKQEAgLTIzOCwxMDAgKzE1NCw3MyBAQCB2b2lkIFdl
Ykluc3BlY3Rvcjo6ZXZhbHVhdGVTY3JpcHRGb3JUZXN0KGNvbnN0IFN0cmluZyYgc2NyaXB0KQog
CiB2b2lkIFdlYkluc3BlY3Rvcjo6c2hvd0NvbnNvbGUoKQogewotICAgIG1fcGFnZS0+Y29yZVBh
Z2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVuZENs
aWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2hvd0NvbnNvbGUoKTsKKy8vICAgIG1f
cGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKKy8vICAgIGlm
IChtX2Zyb250ZW5kQ2xpZW50KQorLy8gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNob3dDb25z
b2xlKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpzaG93UmVzb3VyY2VzKCkKIHsKLSAgICBt
X3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYg
KG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNob3dSZXNvdXJj
ZXMoKTsKKy8vICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNo
b3coKTsKKy8vICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQorLy8gICAgICAgIG1fZnJvbnRlbmRD
bGllbnQtPnNob3dSZXNvdXJjZXMoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnNob3dNYWlu
UmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQogewotICAgIFdlYkZyYW1lKiBmcmFt
ZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpOwotICAgIGlmICghZnJh
bWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAg
bV9mcm9udGVuZENsaWVudC0+c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGZyYW1lLT5jb3JlRnJh
bWUoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzdGFydEphdmFTY3JpcHREZWJ1Z2dpbmco
KQotewotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3co
KTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+
c2V0RGVidWdnaW5nRW5hYmxlZCh0cnVlKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OnN0b3BK
YXZhU2NyaXB0RGVidWdnaW5nKCkKLXsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAg
IG1fZnJvbnRlbmRDbGllbnQtPnNldERlYnVnZ2luZ0VuYWJsZWQoZmFsc2UpOwotfQotCi12b2lk
IFdlYkluc3BlY3Rvcjo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCkKLXsKLSAg
ICAvLyBObyBsb25nZXIgc3VwcG9ydGVkLgotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6c3RhcnRK
YXZhU2NyaXB0UHJvZmlsaW5nKCkKLXsKLSAgICAvLyBObyBsb25nZXIgc3VwcG9ydGVkLgotfQot
Ci12b2lkIFdlYkluc3BlY3Rvcjo6c3RvcEphdmFTY3JpcHRQcm9maWxpbmcoKQotewotICAgIC8v
IE5vIGxvbmdlciBzdXBwb3J0ZWQuCisvLyAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNz
OjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKTsKKy8vICAgIGlmICghZnJhbWUpCisvLyAgICAg
ICAgcmV0dXJuOworLy8KKy8vICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLnNob3coKTsKKy8vICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQorLy8gICAgICAgIG1f
ZnJvbnRlbmRDbGllbnQtPnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1l
KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6c3RhcnRQYWdlUHJvZmlsaW5nKCkKIHsKLSAg
ICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAg
aWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldFRpbWVs
aW5lUHJvZmlsaW5nRW5hYmxlZCh0cnVlKTsKKy8vICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKKy8vICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQor
Ly8gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCh0
cnVlKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnN0b3BQYWdlUHJvZmlsaW5nKCkKIHsKLSAg
ICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAg
aWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldFRpbWVs
aW5lUHJvZmlsaW5nRW5hYmxlZChmYWxzZSk7CisvLyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7CisvLyAgICBpZiAobV9mcm9udGVuZENsaWVudCkK
Ky8vICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQo
ZmFsc2UpOwogfQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6dXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0
eSgpCiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBib29sIGNhbkF0dGFjaFdpbmRvdyA9IG1fZnJvbnRlbmRDbGllbnQtPmNhbkF0dGFjaFdpbmRv
dygpOwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hBdmFpbGFiaWxpdHlDaGFu
Z2VkKGNhbkF0dGFjaFdpbmRvdyksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAgIG1fZnJvbnRlbmRD
bGllbnQtPnNldERvY2tpbmdVbmF2YWlsYWJsZSghY2FuQXR0YWNoV2luZG93KTsKKy8vICAgIGlm
ICghbV9mcm9udGVuZENsaWVudCkKKy8vICAgICAgICByZXR1cm47CisvLworLy8gICAgYm9vbCBj
YW5BdHRhY2hXaW5kb3cgPSBtX2Zyb250ZW5kQ2xpZW50LT5jYW5BdHRhY2hXaW5kb3coKTsKKy8v
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGNh
bkF0dGFjaFdpbmRvdyksIG1fcGFnZS0+cGFnZUlEKCkpOworLy8gICAgbV9mcm9udGVuZENsaWVu
dC0+c2V0RG9ja2luZ1VuYXZhaWxhYmxlKCFjYW5BdHRhY2hXaW5kb3cpOwogfQogCi0jaWYgRU5B
QkxFKElOU1BFQ1RPUl9TRVJWRVIpCi12b2lkIFdlYkluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1Jl
bW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpz
ZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgQVNTRVJU
KG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpTZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQobWVzc2FnZSksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc3BhdGNo
TWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OmRp
c3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiti
b29sIFdlYkluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKIHsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5k
aXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CisjaWYgIUVOQUJMRShJTlNQRUNU
T1JfU0VSVkVSKQorICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JVSTo6U2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpLCAwKTsKKyNlbHNlCisg
ICAgQVNTRVJUKG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOworICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpTZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQobWVzc2FnZSksIG1fcGFnZS0+
cGFnZUlEKCkpOworI2VuZGlmCisgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX1NFUlZFUikKIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZENvbm5lY3Rl
ZCgpCiB7CiAgICAgQVNTRVJUKCFtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKTsKLSAgICAvLyBT
d2l0Y2hpbmcgYmV0d2VlbiBpbi1wcm9jZXNzIGFuZCByZW1vdGUgaW5zcGVjdG9ycyBpc24ndCBz
dXBwb3J0ZWQgeWV0LgotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JQYWdlKTsKLSAgICAKICAgICBt
X3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQo
bV9mcm9udGVuZENoYW5uZWwpOwogICAgIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQgPSB0cnVl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
ci5oCmluZGV4IGM5M2JjYjMuLjRhODY4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRpbmcuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTM5LDE1ICs0MCwyMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OwogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgV2ViSW5zcGVjdG9y
IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVj
dG9yPiB7CitjbGFzcyBXZWJJbnNwZWN0b3IgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpCdW5kbGVJbnNwZWN0b3I+LCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpD
bGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gY3JlYXRlKFdlYlBhZ2UqLCBX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJJbnNwZWN0b3I+IGNyZWF0ZShXZWJQYWdlKik7CiAKICAgICBXZWJQYWdlKiBwYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlOyB9Ci0gICAgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yUGFnZTsgfQorCisgICAgdm9pZCB1cGRhdGVEb2NraW5n
QXZhaWxhYmlsaXR5KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBJbXBsZW1lbnRlZCBp
biBnZW5lcmF0ZWQgV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcAotICAgIHZvaWQgZGlk
UmVjZWl2ZVdlYkluc3BlY3Rvck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdl
RGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwg
SVBDOjpNZXNzYWdlRGVjb2RlciYpOworCisgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQK
KyAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiopIHsgfQorICAgIHZvaWQgZGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6U3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSB7
IH0KIAogICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3IgbWVzc2FnZXMKICAgICB2b2lkIHNo
b3coKTsKQEAgLTU2LDc4ICs2NCw0MyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTYXZlKGNvbnN0
IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIGRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCk7CiAK
KyAgICB2b2lkIHNob3dDb25zb2xlKCk7CisgICAgdm9pZCBzaG93UmVzb3VyY2VzKCk7CisKKyAg
ICB2b2lkIHNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKKwogICAg
IHZvaWQgYXR0YWNoZWRCb3R0b20oKTsKICAgICB2b2lkIGF0dGFjaGVkUmlnaHQoKTsKICAgICB2
b2lkIGRldGFjaGVkKCk7CiAKICAgICB2b2lkIGV2YWx1YXRlU2NyaXB0Rm9yVGVzdChjb25zdCBT
dHJpbmcmIHNjcmlwdCk7CiAKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVk
KGJvb2wpOwogICAgIHZvaWQgc3RhcnRQYWdlUHJvZmlsaW5nKCk7CiAgICAgdm9pZCBzdG9wUGFn
ZVByb2ZpbGluZygpOwogCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJp
bmcmKTsKKwogI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotICAgIGJvb2wgaGFzUmVtb3Rl
RnJvbnRlbmRDb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZUZyb250ZW5kQ29ubmVj
dGVkOyB9Ci0gICAgdm9pZCBzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKLSAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHZvaWQgcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQo
KTsKICAgICB2b2lkIHJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCk7CisKKyAgICBib29sIGhh
c1JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGVGcm9udGVu
ZENvbm5lY3RlZDsgfQogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYklu
c3BlY3RvckNsaWVudDsKLSAgICBmcmllbmQgY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ7CiAKLSAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3IoV2ViUGFnZSosIFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCopOworICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvcihXZWJQYWdl
Kik7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JDbGllbnQKLSAgICBXZWJQYWdl
KiBjcmVhdGVJbnNwZWN0b3JQYWdlKCk7Ci0gICAgV2ViUGFnZSogY3JlYXRlSW5zcGVjdG9yUGFn
ZUZvclRlc3QoKTsKKyAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKKyAgICB2b2lkIGNy
ZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KCk7CiAgICAgdm9pZCBkZXN0cm95SW5zcGVjdG9yUGFn
ZSgpOwogCi0gICAgLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQKLSAg
ICB2b2lkIGRpZENsb3NlKCk7Ci0gICAgdm9pZCBicmluZ1RvRnJvbnQoKTsKLSAgICB2b2lkIGlu
c3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBib29sIGNhblNhdmUoKSBj
b25zdDsKLSAgICB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpOwotICAgIHZv
aWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7
Ci0KLSAgICB2b2lkIGF0dGFjaEJvdHRvbSgpOwotICAgIHZvaWQgYXR0YWNoUmlnaHQoKTsKLSAg
ICB2b2lkIGRldGFjaCgpOwotCi0gICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNp
Z25lZCk7Ci0gICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKTsKLSAgICB2
b2lkIHNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQpOwotCi0gICAgLy8gSW1wbGVtZW50ZWQgaW4g
cGxhdGZvcm0gV2ViSW5zcGVjdG9yIGZpbGUKLSAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VS
TCgpIGNvbnN0OwotCi0gICAgdm9pZCBzaG93Q29uc29sZSgpOwotCi0gICAgdm9pZCBzaG93UmVz
b3VyY2VzKCk7Ci0KLSAgICB2b2lkIHNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlEKTsKLQotICAgIHZvaWQgc3RhcnRKYXZhU2NyaXB0RGVidWdnaW5nKCk7Ci0gICAgdm9p
ZCBzdG9wSmF2YVNjcmlwdERlYnVnZ2luZygpOwotCi0gICAgdm9pZCBzdGFydEphdmFTY3JpcHRQ
cm9maWxpbmcoKTsKLSAgICB2b2lkIHN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCk7Ci0KLSAgICB2
b2lkIHVwZGF0ZURvY2tpbmdBdmFpbGFiaWxpdHkoKTsKLQogICAgIFdlYlBhZ2UqIG1fcGFnZTsK
LSAgICBXZWJQYWdlKiBtX2luc3BlY3RvclBhZ2U7Ci0gICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQqIG1fZnJvbnRlbmRDbGllbnQ7Ci0gICAgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBtX2Zyb250ZW5kQ2hhbm5lbDsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtdXRh
YmxlIFN0cmluZyBtX2xvY2FsaXplZFN0cmluZ3NVUkw7Ci0gICAgbXV0YWJsZSBib29sIG1faGFz
TG9jYWxpemVkU3RyaW5nc1VSTDsKLSNlbmRpZgorICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+
IG1fZnJvbnRlbmRDb25uZWN0aW9uOwogI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorICAg
IFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENoYW5uZWw7CiAg
ICAgYm9vbCBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVz
c2FnZXMuaW4KaW5kZXggYzIzYjg2Zi4uNDY5OGEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCkBA
IC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMiwyNiArMjIs
MjggQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLW1lc3NhZ2VzIC0+IFdlYkluc3BlY3Rv
ciBMZWdhY3lSZWNlaXZlciB7CittZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3IgewogICAgIFNob3co
KQogICAgIENsb3NlKCkKKwogICAgIEF0dGFjaGVkQm90dG9tKCkKICAgICBBdHRhY2hlZFJpZ2h0
KCkKICAgICBEZXRhY2hlZCgpCisKICAgICBEaWRTYXZlKFN0cmluZyB1cmwpCiAgICAgRGlkQXBw
ZW5kKFN0cmluZyB1cmwpCisKICAgICBTaG93Q29uc29sZSgpCiAgICAgU2hvd1Jlc291cmNlcygp
Ci0gICAgU2hvd01haW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgU3Rh
cnRKYXZhU2NyaXB0RGVidWdnaW5nKCkKLSAgICBTdG9wSmF2YVNjcmlwdERlYnVnZ2luZygpCi0g
ICAgU3RhcnRKYXZhU2NyaXB0UHJvZmlsaW5nKCkKLSAgICBTdG9wSmF2YVNjcmlwdFByb2ZpbGlu
ZygpCisKKyAgICBTaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJZGVudGlm
aWVyKQorCiAgICAgU3RhcnRQYWdlUHJvZmlsaW5nKCkKICAgICBTdG9wUGFnZVByb2ZpbGluZygp
CiAKKyAgICBTZW5kTWVzc2FnZVRvQmFja2VuZChTdHJpbmcgbWVzc2FnZSkKKwogI2lmIEVOQUJM
RShJTlNQRUNUT1JfU0VSVkVSKQotICAgIERpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVu
ZChTdHJpbmcgbWVzc2FnZSkKICAgICBSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpCiAgICAgUmVt
b3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi40ODk4MmJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcApAQCAtMCwwICsxLDE4
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnNw
ZWN0b3JVSS5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyNpbmNsdWRlICJXZWJQYWdlLmgi
CisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWUuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0RPTVdyYXBwZXJXb3JsZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
TWFpbkZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Ny
aXB0R2xvYmFsT2JqZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRTdGF0ZS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8V2ViSW5zcGVjdG9yVUk+
IFdlYkluc3BlY3RvclVJOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYkluc3BlY3RvclVJKHBhZ2UpKTsKK30KKworV2ViSW5zcGVjdG9yVUk6Oldl
Ykluc3BlY3RvclVJKFdlYlBhZ2UqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1f
aW5zcGVjdGVkUGFnZUlkZW50aWZpZXIoMCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAsIG1f
aGFzTG9jYWxpemVkU3RyaW5nc1VSTChmYWxzZSkKKyNlbmRpZgoreworfQorCit2b2lkIFdlYklu
c3BlY3RvclVJOjplc3RhYmxpc2hDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBlbmNvZGVkQ29u
bmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyKQorewor
I2lmIE9TKERBUldJTikKKyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlv
bklkZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7CisgICAgaWYg
KElQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikp
CisgICAgICAgIHJldHVybjsKKworICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgPSBpbnNw
ZWN0ZWRQYWdlSWRlbnRpZmllcjsKKworICAgIG1fYmFja2VuZENvbm5lY3Rpb24gPSBJUEM6OkNv
bm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsIHRo
aXMsIFJ1bkxvb3A6Om1haW4oKSk7CisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbi0+b3BlbigpOwor
I2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybjsKKyNlbmRpZgorCisgICAg
bV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQodGhpcyk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OndpbmRvd09iamVj
dENsZWFyZWQoKQoreworICAgIGlmIChtX2Zyb250ZW5kSG9zdCkKKyAgICAgICAgbV9mcm9udGVu
ZEhvc3QtPmRpc2Nvbm5lY3RDbGllbnQoKTsKKworICAgIG1fZnJvbnRlbmRIb3N0ID0gSW5zcGVj
dG9yRnJvbnRlbmRIb3N0OjpjcmVhdGUodGhpcywgbV9wYWdlLT5jb3JlUGFnZSgpKTsKKyAgICBT
Y3JpcHRHbG9iYWxPYmplY3Q6OnNldChleGVjU3RhdGVGcm9tUGFnZShtYWluVGhyZWFkTm9ybWFs
V29ybGQoKSwgbV9wYWdlLT5jb3JlUGFnZSgpKSwgIkluc3BlY3RvckZyb250ZW5kSG9zdCIsIG1f
ZnJvbnRlbmRIb3N0LmdldCgpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRM
b2FkZWQoKQoreworICAgIGJyaW5nVG9Gcm9udCgpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJ
Ojptb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICBGbG9hdFJlY3QgZnJhbWVS
ZWN0ID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5jaHJvbWUoKS53aW5kb3dSZWN0KCk7CisgICAgZnJh
bWVSZWN0Lm1vdmUoeCwgeSk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5jaHJvbWUoKS5zZXRX
aW5kb3dSZWN0KGZyYW1lUmVjdCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmJyaW5nVG9G
cm9udCgpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9udCgpLCBt
X2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2xv
c2VXaW5kb3coKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpLCBt
X2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6cmVx
dWVzdFNldERvY2tTaWRlKERvY2tTaWRlIHNpZGUpCit7CisgICAgc3dpdGNoIChzaWRlKSB7Cisg
ICAgY2FzZSBVTkRPQ0tFRDoKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRldGFj
aCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBET0NLRURfVE9fUklHSFQ6CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRh
Y2hSaWdodCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBET0NLRURfVE9fQk9UVE9NOgorICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6QXR0YWNoQm90dG9tKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgICAgICBi
cmVhazsKKyAgICB9Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmNoYW5nZUF0dGFjaGVkV2lu
ZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6U2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVpZ2h0KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmNoYW5nZUF0dGFjaGVkV2luZG93V2lk
dGgodW5zaWduZWQgd2lkdGgpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0
dGFjaGVkV2luZG93V2lkdGgod2lkdGgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCBoZWlnaHQp
Cit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldFRvb2xiYXJIZWlnaHQoaGVpZ2h0
KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6
Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVt
ZW50LgorfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzYXZlKGNvbnN0IFdURjo6U3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwg
Ym9vbCBmb3JjZVNhdmVBcykKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2F2ZShm
aWxlbmFtZSwgY29udGVudCwgYmFzZTY0RW5jb2RlZCwgZm9yY2VTYXZlQXMpLCBtX2luc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6YXBwZW5kKGNvbnN0
IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQpCit7Cisg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkFwcGVuZChmaWxlbmFtZSwgY29udGVudCksIG1f
aW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjppbnNw
ZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQoreworICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyksIG1faW5zcGVj
dGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIG1fcGFnZS0+Y29yZVBh
Z2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdCgiSW5zcGVjdG9yRnJvbnRl
bmRBUEkuZGlzcGF0Y2hNZXNzYWdlQXN5bmMoIiArIG1lc3NhZ2UgKyAiKSIpOworfQorCit2b2lk
IFdlYkluc3BlY3RvclVJOjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCit7CisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yOjpTZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKSwgMCk7Cit9CisKK2Jvb2wgV2ViSW5z
cGVjdG9yVUk6OmlzVW5kZXJUZXN0KCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAg
IHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkluc3BlY3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yVUkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45
MzhiYmZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3RvclVJLmgKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYkluc3BlY3RvclVJX2gKKyNkZWZpbmUgV2ViSW5zcGVjdG9yVUlfaAorCisjaWYgRU5B
QkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRpbmcuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vY2xh
c3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBX
ZWJJbnNwZWN0b3JVSSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6
OkJ1bmRsZUluc3BlY3RvclVJPiwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBwdWJs
aWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYkluc3BlY3RvclVJPiBjcmVhdGUoV2ViUGFnZSopOworCisgICAgV2Vi
UGFnZSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorCisgICAgLy8gSW1wbGVtZW50
ZWQgaW4gZ2VuZXJhdGVkIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcAorICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2Rl
ciYpOworCisgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKKyAgICB2b2lkIGRpZENsb3Nl
KElQQzo6Q29ubmVjdGlvbiopIHsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiosIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSB7IH0KKworICAgIC8vIENhbGxl
ZCBieSBXZWJJbnNwZWN0b3JVSSBtZXNzYWdlcworICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlv
bihJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGluc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBT
dHJpbmcmKTsKKworICAgIC8vIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50CisgICAg
dm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmcm9udGVuZExv
YWRlZCgpIG92ZXJyaWRlOworCisgICAgdm9pZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQg
eSkgb3ZlcnJpZGU7CisKKyAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIG92ZXJyaWRl
OworCisgICAgdm9pZCBicmluZ1RvRnJvbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlV2lu
ZG93KCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHJlcXVlc3RTZXREb2NrU2lkZShEb2NrU2lkZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKSBv
dmVycmlkZTsKKworICAgIHZvaWQgc2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7
CisKKyAgICB2b2lkIG9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkgb3ZlcnJpZGU7CisK
KyAgICBib29sIGNhblNhdmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmUoY29uc3QgV1RGOjpT
dHJpbmcmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2Rl
ZCwgYm9vbCBmb3JjZVNhdmVBcykgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgV1RG
OjpTdHJpbmcmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQpIG92ZXJyaWRlOworCisg
ICAgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworCisg
ICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKwor
ICAgIGJvb2wgaXNVbmRlclRlc3QoKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNp
dCBXZWJJbnNwZWN0b3JVSShXZWJQYWdlKik7CisKKyAgICBXZWJQYWdlKiBtX3BhZ2U7CisgICAg
UmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9iYWNrZW5kQ29ubmVjdGlvbjsKKyAgICB1aW50NjRf
dCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZEhvc3Q+IG1fZnJvbnRlbmRIb3N0OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IG11dGFibGUgU3RyaW5nIG1fbG9jYWxpemVkU3RyaW5nc1VSTDsKKyAgICBtdXRhYmxlIGJvb2wg
bV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisKKyNlbmRpZiAvLyBXZWJJbnNw
ZWN0b3JVSV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCnNpbWlsYXJpdHkgaW5kZXggNjclCmNvcHkg
ZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3Nh
Z2VzLmluCmNvcHkgdG8gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3RvclVJLm1lc3NhZ2VzLmluCmluZGV4IGMyM2I4NmYuLmIxNTAyOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1l
c3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMiwy
OSArMjIsMTAgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLW1lc3NhZ2VzIC0+IFdlYklu
c3BlY3RvciBMZWdhY3lSZWNlaXZlciB7Ci0gICAgU2hvdygpCi0gICAgQ2xvc2UoKQotICAgIEF0
dGFjaGVkQm90dG9tKCkKLSAgICBBdHRhY2hlZFJpZ2h0KCkKLSAgICBEZXRhY2hlZCgpCi0gICAg
RGlkU2F2ZShTdHJpbmcgdXJsKQotICAgIERpZEFwcGVuZChTdHJpbmcgdXJsKQotICAgIFNob3dD
b25zb2xlKCkKLSAgICBTaG93UmVzb3VyY2VzKCkKLSAgICBTaG93TWFpblJlc291cmNlRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCkKLSAgICBTdGFydEphdmFTY3JpcHREZWJ1Z2dpbmcoKQotICAg
IFN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCkKLSAgICBTdGFydEphdmFTY3JpcHRQcm9maWxpbmco
KQotICAgIFN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCkKLSAgICBTdGFydFBhZ2VQcm9maWxpbmco
KQotICAgIFN0b3BQYWdlUHJvZmlsaW5nKCkKK21lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJIHsK
KyAgICBFc3RhYmxpc2hDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpCiAKLSNpZiBFTkFCTEUoSU5T
UEVDVE9SX1NFUlZFUikKLSAgICBEaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoU3Ry
aW5nIG1lc3NhZ2UpCi0gICAgUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKQotICAgIFJlbW90ZUZy
b250ZW5kRGlzY29ubmVjdGVkKCkKLSNlbmRpZgorICAgIFNlbmRNZXNzYWdlVG9Gcm9udGVuZChT
dHJpbmcgbWVzc2FnZSkKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMDA2NjBjMi4uNWUwNjA0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtODAsNiArODAsOCBA
QAogI2luY2x1ZGUgIldlYkluc3BlY3Rvci5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvckNsaWVu
dC5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViSW5z
cGVjdG9yVUkuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCkBAIC00
NjEsNiArNDYzLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAjZW5kaWYKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAq
dGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRo
aXMpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFn
ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKQEAgLTUyMiw2ICs1
MjUsNyBAQCBXZWJQYWdlOjp+V2ViUGFnZSgpCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKKyAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKICNlbmRpZgogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKQEAgLTI4OTAsMTggKzI4OTQsMjYgQEAgdm9pZCBXZWJQ
YWdlOjpkaWRGbHVzaExheWVyVHJlZUF0VGltZShzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRp
bWVzdGFtcCkKIH0KICNlbmRpZgogCi0gICAgCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIFdlYklu
c3BlY3RvciogV2ViUGFnZTo6aW5zcGVjdG9yKCkKIHsKICAgICBpZiAobV9pc0Nsb3NlZCkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghbV9pbnNw
ZWN0b3IpCi0gICAgICAgIG1faW5zcGVjdG9yID0gV2ViSW5zcGVjdG9yOjpjcmVhdGUodGhpcywg
bV9pbnNwZWN0b3JDbGllbnQpOworICAgICAgICBtX2luc3BlY3RvciA9IFdlYkluc3BlY3Rvcjo6
Y3JlYXRlKHRoaXMpOwogICAgIHJldHVybiBtX2luc3BlY3Rvci5nZXQoKTsKIH0KKworV2ViSW5z
cGVjdG9yVUkqIFdlYlBhZ2U6Omluc3BlY3RvclVJKCkKK3sKKyAgICBpZiAobV9pc0Nsb3NlZCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFtX2luc3BlY3RvclVJKQorICAgICAg
ICBtX2luc3BlY3RvclVJID0gV2ViSW5zcGVjdG9yVUk6OmNyZWF0ZSh0aGlzKTsKKyAgICByZXR1
cm4gbV9pbnNwZWN0b3JVSS5nZXQoKTsKK30KICNlbmRpZgotICAgIAorCiAjaWYgUExBVEZPUk0o
SU9TKQogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciogV2ViUGFnZTo6dmlkZW9GdWxsc2NyZWVu
TWFuYWdlcigpCiB7CkBAIC0zNDk3LDExICszNTA5LDE3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VEZWNv
ZGVyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKLSAgICAKKwogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBpZiAo
V2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSB0aGlzLT5pbnNwZWN0b3IoKSkKLSAgICAgICAgICAg
IGluc3BlY3Rvci0+ZGlkUmVjZWl2ZVdlYkluc3BlY3Rvck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7CisgICAgICAgICAgICBpbnNwZWN0b3ItPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3JVSSogaW5zcGVjdG9y
VUkgPSB0aGlzLT5pbnNwZWN0b3JVSSgpKQorICAgICAgICAgICAgaW5zcGVjdG9yVUktPmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApp
bmRleCBiYWJhNTA2Li44Y2IzMWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTE1Myw2ICsxNTMsNyBAQCBjbGFzcyBXZWJGdWxsU2NyZWVuTWFu
YWdlcjsKIGNsYXNzIFdlYkltYWdlOwogY2xhc3MgV2ViSW5zcGVjdG9yOwogY2xhc3MgV2ViSW5z
cGVjdG9yQ2xpZW50OworY2xhc3MgV2ViSW5zcGVjdG9yVUk7CiBjbGFzcyBXZWJLZXlib2FyZEV2
ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbkNsaWVudDsK
QEAgLTIyNiw2ICsyMjcsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAg
IFdlYkluc3BlY3RvciogaW5zcGVjdG9yKCk7CisgICAgV2ViSW5zcGVjdG9yVUkqIGluc3BlY3Rv
clVJKCk7CiAjZW5kaWYKICAgICAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xMTU5LDYgKzExNjEs
NyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBSZWZQdHI8V2ViSW5z
cGVjdG9yPiBtX2luc3BlY3RvcjsKKyAgICBSZWZQdHI8V2ViSW5zcGVjdG9yVUk+IG1faW5zcGVj
dG9yVUk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI+IG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yTWFjLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5t
bQpzaW1pbGFyaXR5IGluZGV4IDkyJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3Rvck1hYy5tbQpyZW5hbWUgdG8gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5tbQppbmRleCA3OTVm
NDU2Li4yYmU3NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYkluc3BlY3Rvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYkluc3BlY3RvclVJTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAog
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3IuaCIKKyNpbXBvcnQgIldl
Ykluc3BlY3RvclVJLmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCkBAIC0zNCwxMiArMzQs
MTIgQEAgU09GVF9MSU5LX1NUQUdFRF9GUkFNRVdPUksoV2ViSW5zcGVjdG9yVUksIFByaXZhdGVG
cmFtZXdvcmtzLCBBKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotYm9vbCBXZWJJbnNwZWN0b3I6
OmNhblNhdmUoKSBjb25zdAorYm9vbCBXZWJJbnNwZWN0b3JVSTo6Y2FuU2F2ZSgpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLVN0cmluZyBXZWJJbnNwZWN0b3I6OmxvY2FsaXplZFN0cmluZ3NV
UkwoKSBjb25zdAorU3RyaW5nIFdlYkluc3BlY3RvclVJOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkK
IHsKICAgICBpZiAoIW1faGFzTG9jYWxpemVkU3RyaW5nc1VSTCkgewogICAgICAgICAvLyBDYWxs
IHRoZSBzb2Z0IGxpbmsgZnJhbWV3b3JrIGZ1bmN0aW9uIHRvIGRsb3BlbiBpdCwgdGhlbiBbTlNC
dW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6XSB3aWxsIHdvcmsuCkBAIC01Miw2ICs1Miw3IEBA
IFN0cmluZyBXZWJJbnNwZWN0b3I6OmxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdAogICAgICAg
ICAgICAgbV9sb2NhbGl6ZWRTdHJpbmdzVVJMID0gU3RyaW5nKCk7CiAgICAgICAgIG1faGFzTG9j
YWxpemVkU3RyaW5nc1VSTCA9IHRydWU7CiAgICAgfQorCiAgICAgcmV0dXJuIG1fbG9jYWxpemVk
U3RyaW5nc1VSTDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237727</attachid>
            <date>2014-09-05 17:34:42 -0700</date>
            <delta_ts>2014-09-08 11:32:47 -0700</delta_ts>
            <desc>WIP (latest)</desc>
            <filename>WIP.patch</filename>
            <type>text/plain</type>
            <size>119998</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNDJhNDY1ZC4uMTNjOGZhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTc3Myw2ICs3NzMsNyBAQCBfX1pON1dlYkNvcmUxN1NRTGl0ZVRyYW5zYWN0aW9u
RDFFdgogX19aTjdXZWJDb3JlMTdTdWJyZXNvdXJjZUxvYWRlcjZjcmVhdGVFUE5TXzVGcmFtZUVQ
TlNfMTRDYWNoZWRSZXNvdXJjZUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMjFSZXNvdXJj
ZUxvYWRlck9wdGlvbnNFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18xN0pT
RE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9fWk43
V2ViQ29yZTE3ZW5jb2RlRm9yRmlsZU5hbWVFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUx
N2V4ZWNTdGF0ZUZyb21QYWdlRVJOU18xNURPTVdyYXBwZXJXb3JsZEVQTlNfNFBhZ2VFCiBfX1pO
N1dlYkNvcmUxN2xhbmd1YWdlRGlkQ2hhbmdlRXYKIF9fWk43V2ViQ29yZTE3b3BlblRlbXBvcmFy
eUZpbGVFUktOM1dURjZTdHJpbmdFUmkKIF9fWk43V2ViQ29yZTE3c1JHQkNvbG9yU3BhY2VSZWZF
dgpAQCAtNzk2LDYgKzc5Nyw3IEBAIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkOGFk
ZFR5cGVzRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDCiBfX1pON1dlYkNv
cmUxOFBsYXRmb3JtUGFzdGVib2FyZDhnZXRUeXBlc0VSTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5n
RUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0
ZWJvYXJkOHNldFR5cGVzRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDcmFz
aE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkQzFFUktOM1dU
RjZTdHJpbmdFCitfX1pON1dlYkNvcmUxOFNjcmlwdEdsb2JhbE9iamVjdDNzZXRFUE4zSlNDOUV4
ZWNTdGF0ZUVQS2NQTlNfMjFJbnNwZWN0b3JGcm9udGVuZEhvc3RFCiBfX1pON1dlYkNvcmUxOFN0
eWxlU2hlZXRDb250ZW50czExcGFyc2VTdHJpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNv
cmUxOFN0eWxlU2hlZXRDb250ZW50c0MxRVBOU18xNVN0eWxlUnVsZUltcG9ydEVSS04zV1RGNlN0
cmluZ0VSS05TXzE2Q1NTUGFyc2VyQ29udGV4dEUKIF9fWk43V2ViQ29yZTE4U3R5bGVTaGVldENv
bnRlbnRzRDFFdgpAQCAtMTE5NCw2ICsxMTk2LDggQEAgX19aTjdXZWJDb3JlNVJhbmdlOHNldFN0
YXJ0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFaVJpCiBfX1pON1dlYkNvcmU1UmFuZ2VE
MUV2CiBfX1pON1dlYkNvcmU2Q2hyb21lMTZzZXRTdGF0dXNiYXJUZXh0RVBOU181RnJhbWVFUktO
M1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU2Q2hyb21lNXByaW50RVBOU181RnJhbWVFCitfX1pO
SzdXZWJDb3JlNkNocm9tZTEwd2luZG93UmVjdEV2CitfX1pOSzdXZWJDb3JlNkNocm9tZTEzc2V0
V2luZG93UmVjdEVSS05TXzlGbG9hdFJlY3RFCiBfX1pON1dlYkNvcmU2RWRpdG9yMTBhcHBseVN0
eWxlRVBOU18xNVN0eWxlUHJvcGVydGllc0VOU18xMEVkaXRBY3Rpb25FCiBfX1pON1dlYkNvcmU2
RWRpdG9yMTBmaW5kU3RyaW5nRVJLTjNXVEY2U3RyaW5nRWgKIF9fWk43V2ViQ29yZTZFZGl0b3Ix
MGluc2VydFRleHRFUktOM1dURjZTdHJpbmdFUE5TXzVFdmVudEUKQEAgLTMxNjQsMTMgKzMxNjgs
MTcgQEAgX19aTjdXZWJDb3JlNUNvbG9yQzFFUktOM1dURjZTdHJpbmdFCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKIF9fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnkyN3Nob3VsZFRyZWF0VVJMU2No
ZW1lQXNMb2NhbEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE1SW5zcGVjdG9yQ2xpZW50
MzFkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlRVBOU180UGFnZUVSS04zV1RGNlN0cmlu
Z0UKK19fWk43V2ViQ29yZTE4SW5zcGVjdG9yUGFnZUFnZW50N2ZyYW1lSWRFUE5TXzVGcmFtZUUK
IF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE1Y29ubmVjdEZyb250ZW5kRVBOOUlu
c3BlY3RvcjI0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRQogX19aTjdXZWJDb3JlMTlJbnNwZWN0
b3JDb250cm9sbGVyMThkaXNjb25uZWN0RnJvbnRlbmRFTjlJbnNwZWN0b3IyNUluc3BlY3RvckRp
c2Nvbm5lY3RSZWFzb25FCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOHNldFBy
b2ZpbGVyRW5hYmxlZEViCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNWV2YWx1
YXRlRm9yVGVzdEluRnJvbnRlbmRFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxOUluc3Bl
Y3RvckNvbnRyb2xsZXIyNnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50RU5TdDNfXzExMHVuaXF1
ZV9wdHJJTlNfMjNJbnNwZWN0b3JGcm9udGVuZENsaWVudEVOUzFfMTRkZWZhdWx0X2RlbGV0ZUlT
M19FRUVFCitfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNnNldEluc3BlY3RvckZy
b250ZW5kQ2xpZW50RVBOU18yM0luc3BlY3RvckZyb250ZW5kQ2xpZW50RQogX19aTjdXZWJDb3Jl
MTlJbnNwZWN0b3JDb250cm9sbGVyNHNob3dFdgogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250
cm9sbGVyNWNsb3NlRXYKK19fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0MTZkaXNj
b25uZWN0Q2xpZW50RXYKK19fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0QzFFUE5T
XzIzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFUE5TXzRQYWdlRQorX19aTjdXZWJDb3JlMjFJbnNw
ZWN0b3JGcm9udGVuZEhvc3REMUV2CiBfX1pON1dlYkNvcmUyMmluc3RydW1lbnRhdGlvbkZvclBh
Z2VFUE5TXzRQYWdlRQogX19aTjdXZWJDb3JlMjRJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24xN3Nf
ZnJvbnRlbmRDb3VudGVyRQogX19aTjdXZWJDb3JlMjRJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24y
Nmluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlRVBOU180UGFnZUUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4ZGY0ZTIxLi43OWVh
NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xNzY5LDcgKzE3NjksNyBAQAogCQk0RjE1MzRFMDExQjUzMzAyMDAyMUZEODYg
LyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRGMTUzNERGMTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZp
b3JUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTRGNEY1RkZCMTFDQkQyRTEwMEExODZCRiAvKiBJbnNwZWN0b3JXZWJGcm9udGVuZERpc3Bh
dGNoZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRGNEY1RkZBMTFDQkQyRDIwMEExODZCRiAvKiBJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNo
ZXJzLmNwcCAqLzsgfTsKIAkJNEY2RkRENjQxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBh
Z2VBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0RjZGREQ2MjEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmNwcCAqLzsg
fTsKLQkJNEY2RkRENjUxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRENjMxMzQx
REVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5oICovOyB9OworCQk0RjZGREQ2NTEz
NDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjZGREQ2MzEzNDFERUREMDAxRjhFRTMgLyog
SW5zcGVjdG9yUGFnZUFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNEY3MDdBOTkxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvcldlYkJh
Y2tlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0RjcwN0E5NzExRUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yV2ViQmFja2Vu
ZERpc3BhdGNoZXJzLmNwcCAqLzsgfTsKIAkJNEY3MDdBOUExMUVGNjc5NDAwQUNEQTY5IC8qIElu
c3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEY3MDdBOTgxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3Rv
cldlYkJhY2tlbmREaXNwYXRjaGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTRGQjM5MEFEMTVFRjYxRjMwMDdBRDUxRiAvKiBHZW5lcmF0ZWRJ
bWFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
RkIzOTBBQzE1RUY2MUYzMDA3QUQ1MUYgLyogR2VuZXJhdGVkSW1hZ2UuY3BwICovOyB9OwpAQCAt
MjMzMiw3ICsyMzMyLDcgQEAKIAkJNzlGMkY1QTExMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0
aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzlGMkY1OUUxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuY3BwICovOyB9
OwogCQk3OUYyRjVBMjEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlGMkY1OUYxMDkxOTM5
QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuaCAqLzsgfTsKIAkJN0EwRTc3MEUxMEMwMEE4
ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzcwQjEwQzAwQTg4MDBBMDI3NkUgLyog
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCAqLzsgfTsKLQkJN0EwRTc3MEYxMEMwMEE4ODAwQTAy
NzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0EwRTc3MEMxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3Rv
ckZyb250ZW5kSG9zdC5oICovOyB9OworCQk3QTBFNzcwRjEwQzAwQTg4MDBBMDI3NkUgLyogSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QTBFNzcwQzEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0EwRTc3MUUxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NzFDMTBD
MDBEQjEwMEEwMjc2RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgKi87IH07CiAJCTdB
MEU3NzFGMTBDMDBEQjEwMEEwMjc2RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EwRTc3MUQxMEMwMERC
MTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggKi87IH07CiAJCTdBMUQ3RkNC
MThGODVGMEYwMEMzODVBRCAvKiBtZWRpYUNvbnRyb2xzTG9jYWxpemVkU3RyaW5ncy5qcyBpbiBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0ExRDdGQzkxOEY4
NUYwRjAwQzM4NUFEIC8qIG1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJpbmdzLmpzICovOyB9OwpA
QCAtMjM3MCw3ICsyMzcwLDcgQEAKIAkJN0FCMEIxQzExMjExQTYyMjAwQTc2OTQwIC8qIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBQjBCMUJGMTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmggKi87IH07CiAJCTdBQ0Q4OEQzMTRDMDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QUNEODhEMTE0QzA4QkQ2MDA4NEVERDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwICovOyB9OwogCQk3QUNEODhENDE0QzA4QkQ2MDA4NEVERDIgLyogSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBQ0Q4OEQyMTRDMDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oICov
OyB9OwotCQk3QURFNzIyNjEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FERTcyMjUx
MENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLzsgfTsKKwkJN0FERTcy
MjYxMENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBREU3MjI1MTBDQkJCOUIwMDZCM0Iz
QSAvKiBDb250ZXh0TWVudVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0FGOUIyMDIxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5
QjFGQzE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uLmNwcCAqLzsgfTsKIAkJN0FGOUIyMDMx
OENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIxRkQxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lv
bi5oICovOyB9OwogCQk3QUY5QjIwNTE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uTGlzdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFG
RjE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uTGlzdC5jcHAgKi87IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oCmluZGV4IDhhYTA1NWIu
LjkyYmYyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEds
b2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2Jh
bE9iamVjdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFNjcmlwdEdsb2JhbE9iamVjdCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciog
bmFtZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKLSAgICBzdGF0aWMgYm9vbCBzZXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBu
YW1lLCBJbnNwZWN0b3JGcm9udGVuZEhvc3QqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
Ym9vbCBzZXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0b3JGcm9u
dGVuZEhvc3QqKTsKICNlbmRpZgogCiAgICAgc3RhdGljIGJvb2wgZ2V0KEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgY2hhciogbmFtZSwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAppbmRleCA4YTgyY2FiLi43ZTI2YWM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKQEAgLTU4LDcgKzU4LDcg
QEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVj
U3RhdGUoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RXhlY1N0YXRlKiBtYWluV29ybGRFeGVjU3Rh
dGUoRnJhbWUqKTsKIAogSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Ob2RlKERPTVdyYXBw
ZXJXb3JsZCYsIE5vZGUqKTsKLUpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tUGFnZShET01X
cmFwcGVyV29ybGQmLCBQYWdlKik7CitXRUJDT1JFX0VYUE9SVCBKU0M6OkV4ZWNTdGF0ZSogZXhl
Y1N0YXRlRnJvbVBhZ2UoRE9NV3JhcHBlcldvcmxkJiwgUGFnZSopOwogSlNDOjpFeGVjU3RhdGUq
IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSopOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggODNmZjFhZi4uNTU1MjMxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODcsNiAr
ODcsNyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UmIHBh
Z2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogICAgICwgbV9pbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwobnVsbHB0cikKICAgICAsIG1fcGFnZShwYWdlKQogICAgICwgbV9pbnNwZWN0b3JD
bGllbnQoaW5zcGVjdG9yQ2xpZW50KQorICAgICwgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudChu
dWxscHRyKQogICAgICwgbV9pc1VuZGVyVGVzdChmYWxzZSkKICNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKICAgICAsIG1faGFzUmVtb3RlRnJvbnRlbmQoZmFsc2UpCkBAIC0xOTQsOSArMTk1
LDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCkK
ICAgICBtX2luc3BlY3RvckNsaWVudCA9IG51bGxwdHI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50PiBpbnNwZWN0b3JGcm9udGVuZENsaWVudCkKK3ZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQqIGluc3BlY3RvckZyb250ZW5kQ2xpZW50KQogewotICAgIG1faW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQgPSBXVEY6Om1vdmUoaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOworICAgIG1f
aW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgPSBpbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIH0KIAog
Ym9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNMb2NhbEZyb250ZW5kKCkgY29uc3QKQEAgLTIx
OSw3ICsyMjAsNyBAQCBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc1JlbW90ZUZyb250ZW5k
KCkgY29uc3QKIAogYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNJbnNwZWN0b3JGcm9udGVu
ZENsaWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQu
Z2V0KCk7CisgICAgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiBm
cmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDFkMjBjMzguLjMzNGI2YjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtODQsNyAr
ODQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93KCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjbG9zZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJ
bnNwZWN0b3JGcm9udGVuZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KEluc3BlY3RvckZyb250ZW5kQ2xpZW50Kik7CiAgICAgYm9vbCBoYXNJbnNwZWN0b3JGcm9u
dGVuZENsaWVudCgpIGNvbnN0OwogICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxk
KEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkJik7CiAKQEAgLTEyMiw3ICsxMjIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZXN1bWUoKTsKIAogICAgIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xp
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JDbGllbnQ7IH0KLSAgICBJbnNwZWN0b3JQ
YWdlQWdlbnQqIHBhZ2VBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUFnZW50OyB9CisgICAg
V0VCQ09SRV9FWFBPUlQgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQoKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2VBZ2VudDsgfQogCiAgICAgdmlydHVhbCBib29sIGRldmVsb3BlckV4dHJhc0Vu
YWJsZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQWNjZXNzSW5zcGVj
dGVkU2NyaXB0U3RhdGUoSlNDOjpFeGVjU3RhdGUqKSBjb25zdCBvdmVycmlkZTsKQEAgLTE0OCwx
MCArMTQ4LDEwIEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogbV90aW1l
bGluZUFnZW50OwogCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50OwogICAg
IEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5k
Q2hhbm5lbDsKICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2luc3Bl
Y3RvckNsaWVudDsKKyAgICBJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9pbnNwZWN0b3JGcm9u
dGVuZENsaWVudDsKICAgICBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0cnkgbV9hZ2Vu
dHM7CiAgICAgVmVjdG9yPEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSwgMj4gbV9pbmpl
Y3RlZFNjcmlwdEluc3RydW1lbnRhdGlvbkNvb2tpZXM7CiAgICAgYm9vbCBtX2lzVW5kZXJUZXN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQuaAppbmRleCA5YjBiNzVkLi45MTFhZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaApAQCAtNDEsMTAgKzQxLDEwIEBAIGNs
YXNzIEV2ZW50OwogCiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudCB7CiBwdWJsaWM6Ci0g
ICAgZW51bSBEb2NrU2lkZSB7Ci0gICAgICAgIFVORE9DS0VEID0gMCwKLSAgICAgICAgRE9DS0VE
X1RPX1JJR0hULAotICAgICAgICBET0NLRURfVE9fQk9UVE9NCisgICAgZW51bSBjbGFzcyBEb2Nr
U2lkZSB7CisgICAgICAgIFVuZG9ja2VkLAorICAgICAgICBSaWdodCwKKyAgICAgICAgQm90dG9t
CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkluc3BlY3RvckZyb250ZW5kQ2xpZW50KCkgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5jcHAKaW5kZXggNWI4OWQ4ZDU3Li41Zjc0YjlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbChJbnNwZWN0b3JDb250cm9sbGVyKgogICAgICwgbV9m
cm9udGVuZFBhZ2UoZnJvbnRlbmRQYWdlKQogICAgICwgbV9zZXR0aW5ncyhXVEY6Om1vdmUoc2V0
dGluZ3MpKQogICAgICwgbV9mcm9udGVuZExvYWRlZChmYWxzZSkKLSAgICAsIG1fZG9ja1NpZGUo
VU5ET0NLRUQpCisgICAgLCBtX2RvY2tTaWRlKERvY2tTaWRlOjpVbmRvY2tlZCkKIHsKICAgICBt
X2Zyb250ZW5kUGFnZS0+c2V0dGluZ3MoKS5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMo
dHJ1ZSk7CiAgICAgbV9kaXNwYXRjaFRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaFRhc2s+KGluc3BlY3RvckNvbnRyb2xsZXIpOwpAQCAtMTYxLDcgKzE2MSw3
IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZnJvbnRlbmRMb2FkZWQoKQog
CiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnJlcXVlc3RTZXREb2NrU2lkZShE
b2NrU2lkZSBkb2NrU2lkZSkKIHsKLSAgICBpZiAoZG9ja1NpZGUgPT0gVU5ET0NLRUQpIHsKKyAg
ICBpZiAoZG9ja1NpZGUgPT0gRG9ja1NpZGU6OlVuZG9ja2VkKSB7CiAgICAgICAgIGRldGFjaFdp
bmRvdygpOwogICAgICAgICBzZXRBdHRhY2hlZFdpbmRvdyhkb2NrU2lkZSk7CiAgICAgfSBlbHNl
IGlmIChjYW5BdHRhY2hXaW5kb3coKSkgewpAQCAtMTc4LDcgKzE3OCw3IEBAIGJvb2wgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2FuQXR0YWNoV2luZG93KCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgLy8gSWYgd2UgYXJlIGFscmVhZHkgYXR0YWNoZWQsIGFsbG93IGF0dGFj
aGluZyBhZ2FpbiB0byBhbGxvdyBzd2l0Y2hpbmcgc2lkZXMuCi0gICAgaWYgKG1fZG9ja1NpZGUg
IT0gVU5ET0NLRUQpCisgICAgaWYgKG1fZG9ja1NpZGUgIT0gRG9ja1NpZGU6OlVuZG9ja2VkKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIERvbid0IGFsbG93IHRoZSBhdHRhY2ggaWYg
dGhlIHdpbmRvdyB3b3VsZCBiZSB0b28gc21hbGwgdG8gYWNjb21tb2RhdGUgdGhlIG1pbmltdW0g
aW5zcGVjdG9yIHNpemUuCkBAIC0yMzgsMTMgKzIzOCwxMyBAQCB2b2lkIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWw6OnNldEF0dGFjaGVkV2luZG93KERvY2tTaWRlIGRvY2tTaWRlKQogewog
ICAgIGNvbnN0IGNoYXIqIHNpZGUgPSAidW5kb2NrZWQiOwogICAgIHN3aXRjaCAoZG9ja1NpZGUp
IHsKLSAgICBjYXNlIFVORE9DS0VEOgorICAgIGNhc2UgRG9ja1NpZGU6OlVuZG9ja2VkOgogICAg
ICAgICBzaWRlID0gInVuZG9ja2VkIjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBET0NLRURf
VE9fUklHSFQ6CisgICAgY2FzZSBEb2NrU2lkZTo6UmlnaHQ6CiAgICAgICAgIHNpZGUgPSAicmln
aHQiOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERPQ0tFRF9UT19CT1RUT006CisgICAgY2Fz
ZSBEb2NrU2lkZTo6Qm90dG9tOgogICAgICAgICBzaWRlID0gImJvdHRvbSI7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kSG9zdC5jcHAKaW5kZXggZDFhNDYyNS4uODU2OTA5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTE1NiwxMSAr
MTU2LDExIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpyZXF1ZXN0U2V0RG9ja1NpZGUo
Y29uc3QgU3RyaW5nJiBzaWRlKQogICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsK
ICAgICBpZiAoc2lkZSA9PSAidW5kb2NrZWQiKQotICAgICAgICBtX2NsaWVudC0+cmVxdWVzdFNl
dERvY2tTaWRlKEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpVTkRPQ0tFRCk7CisgICAgICAgIG1f
Y2xpZW50LT5yZXF1ZXN0U2V0RG9ja1NpZGUoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tT
aWRlOjpVbmRvY2tlZCk7CiAgICAgZWxzZSBpZiAoc2lkZSA9PSAicmlnaHQiKQotICAgICAgICBt
X2NsaWVudC0+cmVxdWVzdFNldERvY2tTaWRlKEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpET0NL
RURfVE9fUklHSFQpOworICAgICAgICBtX2NsaWVudC0+cmVxdWVzdFNldERvY2tTaWRlKEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6UmlnaHQpOwogICAgIGVsc2UgaWYgKHNpZGUg
PT0gImJvdHRvbSIpCi0gICAgICAgIG1fY2xpZW50LT5yZXF1ZXN0U2V0RG9ja1NpZGUoSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OkRPQ0tFRF9UT19CT1RUT00pOworICAgICAgICBtX2NsaWVudC0+
cmVxdWVzdFNldERvY2tTaWRlKEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6Qm90
dG9tKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmNsb3NlV2luZG93KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAppbmRl
eCA4ZThjZDg1Li4xYTc0ZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JGcm9udGVuZEhvc3QoY2xpZW50LCBmcm9udGVu
ZFBhZ2UpKTsKICAgICB9CiAKLSAgICB+SW5zcGVjdG9yRnJvbnRlbmRIb3N0KCk7Ci0gICAgdm9p
ZCBkaXNjb25uZWN0Q2xpZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgfkluc3BlY3RvckZyb250
ZW5kSG9zdCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzY29ubmVjdENsaWVudCgpOwog
CiAgICAgdm9pZCBsb2FkZWQoKTsKICAgICB2b2lkIHJlcXVlc3RTZXREb2NrU2lkZShjb25zdCBT
dHJpbmcmKTsKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKICAgICBmcmllbmQgY2xhc3MgRnJvbnRlbmRNZW51UHJvdmlkZXI7CiAjZW5kaWYKLSAg
ICBJbnNwZWN0b3JGcm9udGVuZEhvc3QoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqLCBQYWdlKiBm
cm9udGVuZFBhZ2UpOworICAgIFdFQkNPUkVfRVhQT1JUIEluc3BlY3RvckZyb250ZW5kSG9zdChJ
bnNwZWN0b3JGcm9udGVuZENsaWVudCosIFBhZ2UqIGZyb250ZW5kUGFnZSk7CiAKICAgICBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudCogbV9jbGllbnQ7CiAgICAgUGFnZSogbV9mcm9udGVuZFBhZ2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXgg
MTEwNjcwZS4uMjVmZTFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuaApAQCAtMTU1LDcgKzE1NSw3IEBAIHB1YmxpYzoKICAgICBGcmFtZSogbWFp
bkZyYW1lKCk7CiAgICAgU3RyaW5nIGNyZWF0ZUlkZW50aWZpZXIoKTsKICAgICBGcmFtZSogZnJh
bWVGb3JJZChjb25zdCBTdHJpbmcmIGZyYW1lSWQpOwotICAgIFN0cmluZyBmcmFtZUlkKEZyYW1l
Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZyYW1lSWQoRnJhbWUqKTsKICAgICBib29s
IGhhc0lkRm9yRnJhbWUoRnJhbWUqKSBjb25zdDsKICAgICBTdHJpbmcgbG9hZGVySWQoRG9jdW1l
bnRMb2FkZXIqKTsKICAgICBGcmFtZSogZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKGNvbnN0
IFN0cmluZyYgb3JpZ2luUmF3U3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IGZjYTdmOTAu
LmFkYjBiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtMTAyLDggKzEwMiw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChGcmFtZSosIGNvbnN0IEludFNpemUmKSBj
b25zdDsKIAotICAgIHZvaWQgc2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsK
LSAgICBGbG9hdFJlY3Qgd2luZG93UmVjdCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBGbG9hdFJlY3Qgd2luZG93UmVjdCgpIGNvbnN0OwogCiAgICAgRmxvYXRSZWN0IHBhZ2VS
ZWN0KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBmMDY1
Y2QxLi5iNzVjMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNDcx
LDEyICsxNDcxLDEwIEBAIFBhc3NSZWZQdHI8RE9NV2luZG93PiBJbnRlcm5hbHM6Om9wZW5EdW1t
eUluc3BlY3RvckZyb250ZW5kKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIFBhZ2UqIGZyb250ZW5k
UGFnZSA9IG1fZnJvbnRlbmRXaW5kb3ctPmRvY3VtZW50KCktPnBhZ2UoKTsKICAgICBBU1NFUlQo
ZnJvbnRlbmRQYWdlKTsKIAotICAgIGF1dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3RvckZyb250ZW5kQ2xpZW50RHVtbXk+KCZwYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCksIGZyb250ZW5kUGFnZSk7Ci0KLSAgICBmcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChXVEY6Om1vdmUoZnJvbnRlbmRDbGll
bnQpKTsKLQotICAgIG1fZnJvbnRlbmRDaGFubmVsID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbER1bW15KGZyb250ZW5kUGFnZSkpOworICAgIG1fZnJvbnRlbmRDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kQ2xpZW50RHVtbXk+KCZwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCksIGZyb250ZW5kUGFnZSk7CisgICAgZnJvbnRlbmRQYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV9mcm9udGVu
ZENsaWVudC5nZXQoKSk7CiAKKyAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRHVtbXk+KGZyb250ZW5kUGFnZSk7CiAgICAgcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZChtX2Zyb250ZW5kQ2hhbm5l
bC5nZXQoKSk7CiAKICAgICByZXR1cm4gbV9mcm9udGVuZFdpbmRvdzsKQEAgLTE0OTAsNyArMTQ4
OCw4IEBAIHZvaWQgSW50ZXJuYWxzOjpjbG9zZUR1bW15SW5zcGVjdG9yRnJvbnRlbmQoKQogCiAg
ICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0
b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwogCi0gICAgbV9mcm9udGVu
ZENoYW5uZWwucmVsZWFzZSgpOworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBudWxscHRyOworICAg
IG1fZnJvbnRlbmRDaGFubmVsID0gbnVsbHB0cjsKIAogICAgIG1fZnJvbnRlbmRXaW5kb3ctPmNs
b3NlKG1fZnJvbnRlbmRXaW5kb3ctPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgbV9m
cm9udGVuZFdpbmRvdy5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRl
eCBmYWQ3MDNhLi5iZDFiYzY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC01
MCw2ICs1MCw3IEBAIGNsYXNzIERvY3VtZW50TWFya2VyOwogY2xhc3MgRWxlbWVudDsKIGNsYXNz
IEZyYW1lOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRHVtbXk7CitjbGFzcyBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudER1bW15OwogY2xhc3MgSW50ZXJuYWxTZXR0aW5nczsKIGNsYXNz
IE1hbGxvY1N0YXRpc3RpY3M7CiBjbGFzcyBNZW1vcnlJbmZvOwpAQCAtMzUwLDcgKzM1MSw4IEBA
IHByaXZhdGU6CiAgICAgRG9jdW1lbnRNYXJrZXIqIG1hcmtlckF0KE5vZGUqLCBjb25zdCBTdHJp
bmcmIG1hcmtlclR5cGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKICAgICBSZWZQdHI8RE9NV2luZG93PiBtX2Zyb250ZW5kV2luZG93Owot
ICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teT4gbV9mcm9udGVuZENoYW5u
ZWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250ZW5kQ2xpZW50RHVtbXk+IG1f
ZnJvbnRlbmRDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbER1bW15PiBtX2Zyb250ZW5kQ2hhbm5lbDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IGIzNDlhODQu
LjUzOTEyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0Jhc2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL01haW4uanMKQEAgLTMyNyw5ICszMjcsNiBAQCBXZWJJbnNwZWN0b3IuY29udGVudExvYWRl
ZCA9IGZ1bmN0aW9uKCkKICAgICBpZiAodGhpcy5fZGV0YWlsc1NpZGViYXJXaWR0aFNldHRpbmcu
dmFsdWUpCiAgICAgICAgIHRoaXMuZGV0YWlsc1NpZGViYXIud2lkdGggPSB0aGlzLl9kZXRhaWxz
U2lkZWJhcldpZHRoU2V0dGluZy52YWx1ZTsKIAotICAgIC8vIFVwZGF0ZSB0aGUgZG9ja2VkIHN0
YXRlIGJhc2VkIG9uIHRoZSBxdWVyeSBzdHJpbmcgcGFzc2VkIHdoZW4gdGhlIFdlYiBJbnNwZWN0
b3Igd2FzIGxvYWRlZC4KLSAgICB0aGlzLnVwZGF0ZURvY2tlZFN0YXRlKHBhcnNlTG9jYXRpb25R
dWVyeVBhcmFtZXRlcnMoKS5kb2NrU2lkZSB8fCAidW5kb2NrZWQiKTsKLQogICAgIC8vIFRlbGwg
dGhlIGZyb250ZW5kIEFQSSB3ZSBhcmUgbG9hZGVkIHNvIGFueSBwZW5kaW5nIGZyb250ZW5kIGNv
bW1hbmRzIGNhbiBiZSBkaXNwYXRjaGVkLgogICAgIEluc3BlY3RvckZyb250ZW5kQVBJLmxvYWRD
b21wbGV0ZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvSW1hZ2VzL0Rvd25sb2FkQXJyb3cuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvSW1hZ2VzL0Rvd25sb2FkQXJyb3cuc3ZnCmluZGV4IDlhYmNjNjUuLmMwMWNh
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdl
cy9Eb3dubG9hZEFycm93LnN2ZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9JbWFnZXMvRG93bmxvYWRBcnJvdy5zdmcKQEAgLTEsMTEgKzEsOCBAQAogPD94bWwgdmVy
c2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KIDwhLS0gQ29weXJpZ2h0IMKpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KIDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+Ci0gICAg
PGNsaXBQYXRoIGlkPSIxIj4KLSAgICAgICAgPHBhdGggZD0iTSA3LjUgMTUgQyAxMS4wODk4NSAx
NSAxNCAxMi4wODk4NTEgMTQgOC41IEMgMTQgNC45MTAxNSAxMS4wODk4NSAyIDcuNSAyIEMgMy45
MTAxNDkgMiAxIDQuOTEwMTUgMSA4LjUgQyAxIDEyLjA4OTg1MSAzLjkxMDE0OSAxNSA3LjUgMTUg
TCA3LjUgMTUgWiIvPgotICAgIDwvY2xpcFBhdGg+Ci0gICAgPGcgY2xpcC1wYXRoPSJ1cmwoIzEp
IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiBzdHJva2U9ImJsYWNrIj4KLSAg
ICAgICAgPHBhdGggY2xhc3M9InN0cm9rZWQiIHN0cm9rZS13aWR0aD0iMiIgZD0iTSA3LjUgMTUg
QyAxMS4wODk4NSAxNSAxNCAxMi4wODk4NSAxNCA4LjUgQyAxNCA0LjkxMDE0OSAxMS4wODk4NSAy
IDcuNSAyIEMgMy45MTAxNDkgMiAxIDQuOTEwMTQ5IDEgOC41IEMgMSAxMi4wODk4NSAzLjkxMDE0
OSAxNSA3LjUgMTUgTCA3LjUgMTUgWiIvPgorICAgIDxnIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5l
Y2FwPSJzcXVhcmUiIHN0cm9rZT0iYmxhY2siPgorICAgICAgICA8Y2lyY2xlIGNsYXNzPSJzdHJv
a2VkIiBjeD0iNy41IiBjeT0iOC41IiByPSI2Ii8+CiAgICAgICAgIDxwYXRoIGNsYXNzPSJzdHJv
a2VkIiBkPSJNIDEwLjUgOC41IEwgNy41IDExLjUiLz4KICAgICAgICAgPHBhdGggY2xhc3M9InN0
cm9rZWQiIGQ9Ik0gNC41IDguNSBMIDcuNSAxMS41Ii8+CiAgICAgICAgIDxwYXRoIGNsYXNzPSJz
dHJva2VkIiBkPSJNIDcuNSAzIEwgNy41IDEwLjUiLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9y
RnJvbnRlbmRBUEkuanMKaW5kZXggYmYwNGNkYi4uN2M0YTBiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRB
UEkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
SW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAgLTI1LDI4ICsyNSwxNiBAQAogCiBJbnNwZWN0b3JG
cm9udGVuZEFQSSA9IHsKICAgICBfbG9hZGVkOiBmYWxzZSwKLQogICAgIF9wZW5kaW5nQ29tbWFu
ZHM6IFtdLAogCiAgICAgc2F2ZWRVUkw6IGZ1bmN0aW9uKHVybCkKICAgICB7Ci0gICAgICAgIC8v
IEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgICAgIC8vIE5vdCB1c2VkIHlldC4KICAgICB9
LAogCiAgICAgYXBwZW5kZWRUb1VSTDogZnVuY3Rpb24odXJsKQogICAgIHsKLSAgICAgICAgLy8g
RklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KLSAgICB9LAotCi0gICAgaXNEZWJ1Z2dpbmdFbmFibGVk
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKLQotICAgIHNldERlYnVnZ2luZ0VuYWJsZWQ6
IGZ1bmN0aW9uKGVuYWJsZWQpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVu
dGVkLgorICAgICAgICAvLyBOb3QgdXNlZCB5ZXQuCiAgICAgfSwKIAogICAgIGlzVGltZWxpbmVQ
cm9maWxpbmdFbmFibGVkOiBmdW5jdGlvbigpCkBAIC0xMjQsMTEgKzExMiw2IEBAIEluc3BlY3Rv
ckZyb250ZW5kQVBJID0gewogICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFu
ZWwuc2hvd1NvdXJjZUNvZGVGb3JGcmFtZShmcmFtZUlkZW50aWZpZXIsIHRydWUpOwogICAgIH0s
CiAKLSAgICBzZXREb2NraW5nVW5hdmFpbGFibGU6IGZ1bmN0aW9uKHVuYXZhaWxhYmxlKQotICAg
IHsKLSAgICAgICAgLy8gTm90IHVzZWQuCi0gICAgfSwKLQogICAgIGNvbnRleHRNZW51SXRlbVNl
bGVjdGVkOiBmdW5jdGlvbihpZCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5jb250ZXh0
TWVudUl0ZW1TZWxlY3RlZChpZCk7CkBAIC0xNTcsNiArMTQwLDEwIEBAIEluc3BlY3RvckZyb250
ZW5kQVBJID0gewogICAgICAgICB9CiAKICAgICAgICAgdmFyIG1ldGhvZE5hbWUgPSBzaWduYXR1
cmUuc2hpZnQoKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoSW5zcGVjdG9yRnJvbnRlbmRBUElb
bWV0aG9kTmFtZV0sICJVbmV4cGVjdGVkIEluc3BlY3RvckZyb250ZW5kQVBJIG1ldGhvZCBuYW1l
OiAiICsgSW5zcGVjdG9yRnJvbnRlbmRBUElbbWV0aG9kTmFtZV0pOworICAgICAgICBpZiAoIUlu
c3BlY3RvckZyb250ZW5kQVBJW21ldGhvZE5hbWVdKQorICAgICAgICAgICAgcmV0dXJuOworCiAg
ICAgICAgIHJldHVybiBJbnNwZWN0b3JGcm9udGVuZEFQSVttZXRob2ROYW1lXS5hcHBseShJbnNw
ZWN0b3JGcm9udGVuZEFQSSwgc2lnbmF0dXJlKTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlRWxlbWVudFN0YXR1c0J1
dHRvbi5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVl
RWxlbWVudFN0YXR1c0J1dHRvbi5jc3MKaW5kZXggNzlhNjJkOC4uMDFmZWFmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVsZW1lbnRT
dGF0dXNCdXR0b24uY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RyZWVFbGVtZW50U3RhdHVzQnV0dG9uLmNzcwpAQCAtMjksMjcgKzI5LDI3IEBACiAg
ICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogfQogCi0uaXRlbSA+IC5zdGF0dXMgPiAuc3RhdHVz
LWJ1dHRvbiA+IHN2ZyBwYXRoLmZpbGxlZCB7CisuaXRlbSA+IC5zdGF0dXMgPiAuc3RhdHVzLWJ1
dHRvbiA+IHN2ZyAuZmlsbGVkIHsKICAgICBmaWxsOiByZ2IoMTI4LCAxMjgsIDEyOCk7CiB9CiAK
LWJvZHkubWFjLXBsYXRmb3JtLmxlZ2FjeSAuaXRlbSA+IC5zdGF0dXMgPiAuc3RhdHVzLWJ1dHRv
biA+IHN2ZyBwYXRoLmZpbGxlZCB7Citib2R5Lm1hYy1wbGF0Zm9ybS5sZWdhY3kgLml0ZW0gPiAu
c3RhdHVzID4gLnN0YXR1cy1idXR0b24gPiBzdmcgLmZpbGxlZCB7CiAgICAgZmlsbDogcmdiKDY0
LCA2NCwgNjQpOwogfQogCi06Zm9jdXMgLml0ZW0uc2VsZWN0ZWQgPiAuc3RhdHVzID4gLnN0YXR1
cy1idXR0b24gPiBzdmcgcGF0aC5maWxsZWQgeworOmZvY3VzIC5pdGVtLnNlbGVjdGVkID4gLnN0
YXR1cyA+IC5zdGF0dXMtYnV0dG9uID4gc3ZnIC5maWxsZWQgewogICAgIGZpbGw6IHdoaXRlICFp
bXBvcnRhbnQ7CiB9CiAKLS5pdGVtID4gLnN0YXR1cyA+IC5zdGF0dXMtYnV0dG9uID4gc3ZnIHBh
dGguc3Ryb2tlZCB7CisuaXRlbSA+IC5zdGF0dXMgPiAuc3RhdHVzLWJ1dHRvbiA+IHN2ZyAuc3Ry
b2tlZCB7CiAgICAgc3Ryb2tlOiByZ2IoMTI4LCAxMjgsIDEyOCk7CiB9CiAKLWJvZHkubWFjLXBs
YXRmb3JtLmxlZ2FjeSAuaXRlbSA+IC5zdGF0dXMgPiAuc3RhdHVzLWJ1dHRvbiA+IHN2ZyBwYXRo
LnN0cm9rZWQgeworYm9keS5tYWMtcGxhdGZvcm0ubGVnYWN5IC5pdGVtID4gLnN0YXR1cyA+IC5z
dGF0dXMtYnV0dG9uID4gc3ZnIC5zdHJva2VkIHsKICAgICBzdHJva2U6IHJnYig2NCwgNjQsIDY0
KTsKIH0KIAotOmZvY3VzIC5pdGVtLnNlbGVjdGVkID4gLnN0YXR1cyA+IC5zdGF0dXMtYnV0dG9u
ID4gc3ZnIHBhdGguc3Ryb2tlZCB7Cis6Zm9jdXMgLml0ZW0uc2VsZWN0ZWQgPiAuc3RhdHVzID4g
LnN0YXR1cy1idXR0b24gPiBzdmcgLnN0cm9rZWQgewogICAgIHN0cm9rZTogd2hpdGUgIWltcG9y
dGFudDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA0ODU2ODM2Li44OTg3N2ViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApA
QCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogICAg
IFJldGFpblB0cjxXZWJOb2RlSGlnaGxpZ2h0ZXI+IG1faGlnaGxpZ2h0ZXI7CiAgICAgV2ViQ29y
ZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7Ci0gICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQq
IG1fZnJvbnRlbmRDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50PiBtX2Zyb250ZW5kQ2xpZW50OwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggZGMz
ZTkyMy4uYzVhYWY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMTMzLDggKzEzMyw3IEBAIEBlbmQKIFdl
Ykluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiAg
ICAgOiBtX3dlYlZpZXcod2ViVmlldykKICAgICAsIG1faGlnaGxpZ2h0ZXIoYWRvcHROUyhbW1dl
Yk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3OndlYlZpZXdd
KSkKLSAgICAsIG1fZnJvbnRlbmRQYWdlKDApCi0gICAgLCBtX2Zyb250ZW5kQ2xpZW50KDApCisg
ICAgLCBtX2Zyb250ZW5kUGFnZShudWxscHRyKQogewogfQogCkBAIC0xNTAsMTEgKzE0OSwxMyBA
QCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3Bl
Y3RvckZyb250ZW5kKEluc3BlY3RvckNvbgogICAgIFt3aW5kb3dDb250cm9sbGVyLmdldCgpIHNl
dEluc3BlY3RvckNsaWVudDp0aGlzXTsKIAogICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShbd2lu
ZG93Q29udHJvbGxlci5nZXQoKSB3ZWJWaWV3XSk7Ci0gICAgYXV0byBmcm9udGVuZENsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fd2ViVmlldywg
d2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdG9yQ29udHJvbGxlciwgbV9mcm9udGVuZFBh
Z2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IGZy
b250ZW5kQ2xpZW50LmdldCgpOwotICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZD4g
d2ViSW5zcGVjdG9yRnJvbnRlbmQgPSBhZG9wdE5TKFtbV2ViSW5zcGVjdG9yRnJvbnRlbmQgYWxs
b2NdIGluaXRXaXRoRnJvbnRlbmRDbGllbnQ6ZnJvbnRlbmRDbGllbnQuZ2V0KCldKTsKKyAgICBt
X2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudD4obV93ZWJWaWV3LCB3aW5kb3dDb250cm9sbGVyLmdldCgpLCBpbnNwZWN0b3JDb250cm9s
bGVyLCBtX2Zyb250ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKKworICAgIFJl
dGFpblB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZD4gd2ViSW5zcGVjdG9yRnJvbnRlbmQgPSBhZG9w
dE5TKFtbV2ViSW5zcGVjdG9yRnJvbnRlbmQgYWxsb2NdIGluaXRXaXRoRnJvbnRlbmRDbGllbnQ6
bV9mcm9udGVuZENsaWVudC5nZXQoKV0pOwogICAgIFtbbV93ZWJWaWV3IGluc3BlY3Rvcl0gc2V0
RnJvbnRlbmQ6d2ViSW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCldOwotICAgIG1fZnJvbnRlbmRQYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV1RGOjpt
b3ZlKGZyb250ZW5kQ2xpZW50KSk7CisKKyAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1fZnJvbnRlbmRDbGllbnQuZ2V0
KCkpOworCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKQEAgLTE5OSw4ICsyMDAsOCBAQCB2b2lkIFdl
Ykluc3BlY3RvckNsaWVudDo6ZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQpCiAK
IHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpyZWxlYXNlRnJvbnRlbmQoKQogewotICAgIG1fZnJv
bnRlbmRDbGllbnQgPSAwOwotICAgIG1fZnJvbnRlbmRQYWdlID0gMDsKKyAgICBtX2Zyb250ZW5k
Q2xpZW50ID0gbnVsbHB0cjsKKyAgICBtX2Zyb250ZW5kUGFnZSA9IG51bGxwdHI7CiB9CiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9X
ZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNTkzODZjYi4uZDVkN2NlMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTIxLDYgKzEyMSw3IEBAIE1FU1NBR0VfUkVD
RUlWRVJTID0gXAogICAgIFdlYkljb25EYXRhYmFzZVByb3h5IFwKICAgICBXZWJJbnNwZWN0b3Ig
XAogICAgIFdlYkluc3BlY3RvclByb3h5IFwKKyAgICBXZWJJbnNwZWN0b3JVSSBcCiAgICAgV2Vi
TWVkaWFDYWNoZU1hbmFnZXIgXAogICAgIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkgXAogICAg
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCmluZGV4
IDZkZjQ5MTguLjkyMmU2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKQEAgLTE0Myw2
ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEJ1bmRsZUZyYW1lLAogICAgICAgICBCdW5kbGVI
aXRUZXN0UmVzdWx0LAogICAgICAgICBCdW5kbGVJbnNwZWN0b3IsCisgICAgICAgIEJ1bmRsZUlu
c3BlY3RvclVJLAogICAgICAgICBCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBCdW5k
bGVOb2RlSGFuZGxlLAogICAgICAgICBCdW5kbGVQYWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAKaW5kZXggMTZlODQ1Yi4uZDg1ZjViOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwCkBAIC0x
NzQsNDQgKzE3NCw2IEBAIHZvaWQgV0tJbnNwZWN0b3JEZXRhY2goV0tJbnNwZWN0b3JSZWYgaW5z
cGVjdG9yUmVmKQogI2VuZGlmCiB9CiAKLWJvb2wgV0tJbnNwZWN0b3JJc0RlYnVnZ2luZ0phdmFT
Y3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQotewotI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgcmV0dXJuIHRvSW1wbChpbnNwZWN0b3JSZWYpLT5pc0RlYnVnZ2luZ0phdmFTY3Jp
cHQoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGluc3BlY3RvclJlZik7Ci0gICAgcmV0dXJu
IGZhbHNlOwotI2VuZGlmCi19Ci0KLXZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0RGVi
dWdnaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKLXsKLSNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotICAgIHRvSW1wbChpbnNwZWN0b3JSZWYpLT50b2dnbGVKYXZhU2NyaXB0RGVidWdnaW5n
KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0b3JSZWYpOwotI2VuZGlmCi19Ci0K
LWJvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ0phdmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5z
cGVjdG9yUmVmKQotewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgcmV0dXJuIHRvSW1wbChp
bnNwZWN0b3JSZWYpLT5pc1Byb2ZpbGluZ0phdmFTY3JpcHQoKTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKGluc3BlY3RvclJlZik7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLXZv
aWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKFdLSW5zcGVjdG9yUmVmIGlu
c3BlY3RvclJlZikKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHRvSW1wbChpbnNwZWN0
b3JSZWYpLT50b2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShpbnNwZWN0b3JSZWYpOwotI2VuZGlmCi19Ci0KIGJvb2wgV0tJbnNwZWN0b3JJc1Byb2Zp
bGluZ1BhZ2UoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQogewogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNw
ZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oCmlu
ZGV4IGJhNzY0ODkuLjE0NjU0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0luc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0luc3BlY3Rvci5oCkBAIC01OCwxMiArNTgsNiBAQCBXS19FWFBPUlQgYm9vbCBXS0luc3Bl
Y3RvcklzQXR0YWNoZWQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKIFdLX0VYUE9SVCB2b2lk
IFdLSW5zcGVjdG9yQXR0YWNoKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7CiBXS19FWFBPUlQg
dm9pZCBXS0luc3BlY3RvckRldGFjaChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwogCi1XS19F
WFBPUlQgYm9vbCBXS0luc3BlY3RvcklzRGVidWdnaW5nSmF2YVNjcmlwdChXS0luc3BlY3RvclJl
ZiBpbnNwZWN0b3IpOwotV0tfRVhQT1JUIHZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0
RGVidWdnaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7Ci0KLVdLX0VYUE9SVCBib29sIFdL
SW5zcGVjdG9ySXNQcm9maWxpbmdKYXZhU2NyaXB0KFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7
Ci1XS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmcoV0tJ
bnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKLQogV0tfRVhQT1JUIGJvb2wgV0tJbnNwZWN0b3JJc1By
b2ZpbGluZ1BhZ2UoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKIFdLX0VYUE9SVCB2b2lkIFdL
SW5zcGVjdG9yVG9nZ2xlUGFnZVByb2ZpbGluZyhXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRl
eCAxY2Q5NTg5Li5mNWY2NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBQb3J0aW9ucyBDb3B5
cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiV2ViRnJh
bWVQcm94eS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViUHJlZmVyZW5jZXMuaCIKQEAgLTExMCw2ICsxMTAsNyBAQCBwcml2YXRlOgogICAgICAgICBw
YWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0TG9nc1BhZ2VNZXNzYWdlc1RvU3lzdGVtQ29uc29s
ZUVuYWJsZWQodHJ1ZSk7CiAjZW5kaWYKIAorICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2Vz
KCkuc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKHRydWUpOwogICAgICAgICBwYWdlR3Jv
dXAtPnByZWZlcmVuY2VzKCkuc2V0QXBwbGljYXRpb25DaHJvbWVNb2RlRW5hYmxlZCh0cnVlKTsK
IAogICAgICAgICByZXR1cm4gcGFnZUdyb3VwLnJlbGVhc2UoKTsKQEAgLTEyNCwxMyArMTI1LDE0
IEBAIHByaXZhdGU6CiAKIFdlYkluc3BlY3RvclByb3h5OjpXZWJJbnNwZWN0b3JQcm94eShXZWJQ
YWdlUHJveHkqIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1faW5zcGVjdG9yUGFn
ZShudWxscHRyKQogICAgICwgbV9pc1Zpc2libGUoZmFsc2UpCiAgICAgLCBtX2lzQXR0YWNoZWQo
ZmFsc2UpCisgICAgLCBtX2NhbkF0dGFjaChmYWxzZSkKICAgICAsIG1faXNEZWJ1Z2dpbmdKYXZh
U2NyaXB0KGZhbHNlKQogICAgICwgbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQoZmFsc2UpCiAgICAg
LCBtX2lzUHJvZmlsaW5nUGFnZShmYWxzZSkKICAgICAsIG1fc2hvd01lc3NhZ2VTZW50KGZhbHNl
KQotICAgICwgbV9jcmVhdGVkSW5zcGVjdG9yUGFnZShmYWxzZSkKICAgICAsIG1faWdub3JlRmly
c3RCcmluZ1RvRnJvbnQoZmFsc2UpCiAgICAgLCBtX2F0dGFjaG1lbnRTaWRlKEF0dGFjaG1lbnRT
aWRlQm90dG9tKQogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQpAQCAtMjc2LDEz
ICsyNzgsMTUgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoKEF0dGFjaG1lbnRTaWRl
IHNpZGUpCiAgICAgaWYgKG1faXNWaXNpYmxlKQogICAgICAgICBpbnNwZWN0b3JQYWdlR3JvdXAo
KS0+cHJlZmVyZW5jZXMoKS5zZXRJbnNwZWN0b3JTdGFydHNBdHRhY2hlZCh0cnVlKTsKIAorICAg
IG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNo
ZWQodHJ1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworCiAgICAgc3dpdGNoIChtX2F0dGFjaG1lbnRT
aWRlKSB7CiAgICAgY2FzZSBBdHRhY2htZW50U2lkZUJvdHRvbToKLSAgICAgICAgbV9wYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpBdHRhY2hlZEJvdHRvbSgpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90dG9tKCksIG1faW5zcGVjdG9y
UGFnZS0+cGFnZUlEKCkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQXR0YWNobWVudFNp
ZGVSaWdodDoKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yOjpBdHRhY2hlZFJpZ2h0KCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2lu
c3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0
YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCkBAIC0yOTksNyArMzAzLDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGV0
YWNoKCkKICAgICBpZiAobV9pc1Zpc2libGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VHcm91cCgp
LT5wcmVmZXJlbmNlcygpLnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKGZhbHNlKTsKIAotICAg
IG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGV0YWNoZWQo
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChmYWxzZSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clVJOjpEZXRhY2hlZCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIHBsYXRm
b3JtRGV0YWNoKCk7CiB9CkBAIC0zMTYsMzQgKzMyMSw2IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCiAgICAgcGxhdGZvcm1T
ZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6dG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZygpCi17Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChtX2lzRGVidWdnaW5nSmF2YVNjcmlwdCkKLSAgICAgICAg
bV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wSmF2YVNj
cmlwdERlYnVnZ2luZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1f
cGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRKYXZhU2Ny
aXB0RGVidWdnaW5nKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotCi0gICAgLy8gRklYTUU6IGhhdmUg
dGhlIFdlYlByb2Nlc3Mgbm90aWZ5IHVzIG9uIHN0YXRlIGNoYW5nZXMuCi0gICAgbV9pc0RlYnVn
Z2luZ0phdmFTY3JpcHQgPSAhbV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQ7Ci19Ci0KLXZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmcoKQotewotICAgIGlmICgh
bV9wYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9pc1Byb2ZpbGluZ0phdmFTY3Jp
cHQpCi0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
cjo6U3RvcEphdmFTY3JpcHRQcm9maWxpbmcoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0gICAgZWxz
ZQotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6
OlN0YXJ0SmF2YVNjcmlwdFByb2ZpbGluZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLQotICAgIC8v
IEZJWE1FOiBoYXZlIHRoZSBXZWJQcm9jZXNzIG5vdGlmeSB1cyBvbiBzdGF0ZSBjaGFuZ2VzLgot
ICAgIG1faXNQcm9maWxpbmdKYXZhU2NyaXB0ID0gIW1faXNQcm9maWxpbmdKYXZhU2NyaXB0Owot
fQotCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVQYWdlUHJvZmlsaW5nKCkKIHsKICAg
ICBpZiAoIW1fcGFnZSkKQEAgLTQyOCwyOCArNDA1LDI3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKIHsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6
OkRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChtZXNzYWdlKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpTZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAj
ZW5kaWYKIAogLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2VzCi12b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKHVpbnQ2NF90JiBpbnNwZWN0b3JQ
YWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIGluc3BlY3RvclBhZ2VQYXJhbWV0ZXJz
KQordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0dGFj
aG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgY2FuQXR0YWNoKQogewotICAgIGluc3Bl
Y3RvclBhZ2VJRCA9IDA7Ci0KICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgbV9jYW5BdHRhY2ggPSBjYW5BdHRhY2g7CiAgICAgbV9pc0F0dGFjaGVkID0gc2hvdWxkT3Bl
bkF0dGFjaGVkKCk7CiAgICAgbV9hdHRhY2htZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0dGFjaG1l
bnRTaWRlPihpbnNwZWN0b3JQYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRh
Y2htZW50U2lkZSgpKTsKIAotICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSA9IHBsYXRm
b3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpOwotICAgIEFTU0VSVChpbnNwZWN0b3JQYWdlKTsKLSAg
ICBpZiAoIWluc3BlY3RvclBhZ2UpCisgICAgbV9pbnNwZWN0b3JQYWdlID0gcGxhdGZvcm1DcmVh
dGVJbnNwZWN0b3JQYWdlKCk7CisgICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgaWYg
KCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluc3BlY3RvclBhZ2VJ
RCA9IGluc3BlY3RvclBhZ2UtPnBhZ2VJRCgpOwotICAgIGluc3BlY3RvclBhZ2VQYXJhbWV0ZXJz
ID0gaW5zcGVjdG9yUGFnZS0+Y3JlYXRpb25QYXJhbWV0ZXJzKCk7CisgICAgbV9pbnNwZWN0b3JQ
YWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7Cisg
ICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUk6OkVzdGFibGlzaENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsIG1fcGFnZS0+cGFn
ZUlEKCksIGZhbHNlKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAKICAgICBXS1BhZ2VQ
b2xpY3lDbGllbnRWMSBwb2xpY3lDbGllbnQgPSB7CiAgICAgICAgIHsgMSwgdGhpcyB9LApAQCAt
NDYxLDUxICs0MzcsNDIgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9y
UGFnZSh1aW50NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQYWdlQ3IKICAgICAgICAgMCwgLyog
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UgKi8KICAgICB9OwogCi0gICAgV0tQYWdlU2V0UGFnZVBv
bGljeUNsaWVudCh0b0FQSShpbnNwZWN0b3JQYWdlKSwgJnBvbGljeUNsaWVudC5iYXNlKTsKLQot
ICAgIFN0cmluZ0J1aWxkZXIgdXJsOworICAgIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQodG9B
UEkobV9pbnNwZWN0b3JQYWdlKSwgJnBvbGljeUNsaWVudC5iYXNlKTsKIAotICAgIHVybC5hcHBl
bmQoaW5zcGVjdG9yUGFnZVVSTCgpKTsKLQotICAgIHVybC5hcHBlbmRMaXRlcmFsKCI/ZG9ja1Np
ZGU9Iik7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpTZXRBdHRhY2hlZChtX2lzQXR0YWNoZWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIGlm
IChtX2lzQXR0YWNoZWQpIHsKICAgICAgICAgc3dpdGNoIChtX2F0dGFjaG1lbnRTaWRlKSB7CiAg
ICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVCb3R0b206Ci0gICAgICAgICAgICB1cmwuYXBwZW5k
TGl0ZXJhbCgiYm90dG9tIik7Ci0gICAgICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVkQm90dG9tKCksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90dG9tKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlE
KCkpOwogICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZVJp
Z2h0OgotICAgICAgICAgICAgdXJsLmFwcGVuZExpdGVyYWwoInJpZ2h0Iik7Ci0gICAgICAgICAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVk
UmlnaHQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgp
LCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgfSBlbHNlCi0gICAgICAgIHVybC5hcHBlbmRMaXRlcmFsKCJ1bmRvY2tlZCIpOwot
Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChpbnNwZWN0
b3JCYXNlVVJMKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdl
SUQoKSk7CiAKLSAgICBpbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIHVybC50
b1N0cmluZygpKSk7Ci0KLSAgICBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlID0gdHJ1ZTsKKyAgICBt
X2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGluc3Bl
Y3RvckJhc2VVUkwoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJM
KCksIGluc3BlY3RvclBhZ2VVUkwoKSkpOwogfQogCi12b2lkIFdlYkluc3BlY3RvclByb3h5Ojpj
cmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCh1aW50NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycykKK3ZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KElQQzo6QXR0YWNobWVu
dCBjb25uZWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBpbnNwZWN0b3JQYWdlSUQgPSAwOwotCiAg
ICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNBdHRhY2hlZCA9IGZh
bHNlOworICAgIG1fY2FuQXR0YWNoID0gZmFsc2U7CiAKLSAgICBXZWJQYWdlUHJveHkqIGluc3Bl
Y3RvclBhZ2UgPSBwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKLSAgICBBU1NFUlQoaW5z
cGVjdG9yUGFnZSk7Ci0gICAgaWYgKCFpbnNwZWN0b3JQYWdlKQorICAgIG1faW5zcGVjdG9yUGFn
ZSA9IHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpOworICAgIEFTU0VSVChtX2luc3BlY3Rv
clBhZ2UpOworICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpbnNwZWN0b3JQYWdlSUQgPSBpbnNwZWN0b3JQYWdlLT5wYWdlSUQoKTsKLSAgICBpbnNwZWN0
b3JQYWdlUGFyYW1ldGVycyA9IGluc3BlY3RvclBhZ2UtPmNyZWF0aW9uUGFyYW1ldGVycygpOwor
ICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdl
SUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlm
aWVyLCBtX3BhZ2UtPnBhZ2VJRCgpLCB0cnVlKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7
CiAKICAgICBXS1BhZ2VQb2xpY3lDbGllbnRWMSBwb2xpY3lDbGllbnQgPSB7CiAgICAgICAgIHsg
MSwgdGhpcyB9LApAQCAtNTE3LDEzICs0ODQsMTAgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
Y3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2UK
ICAgICAgICAgMCwgLyogZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UgKi8KICAgICB9OwogCi0gICAg
V0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSShpbnNwZWN0b3JQYWdlKSwgJnBvbGljeUNs
aWVudC5iYXNlKTsKLQotICAgIG1fcGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jh
c2VVUkwoaW5zcGVjdG9yQmFzZVVSTCgpKTsKKyAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50
KHRvQVBJKG1faW5zcGVjdG9yUGFnZSksICZwb2xpY3lDbGllbnQuYmFzZSk7CiAKLSAgICBpbnNw
ZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIGluc3BlY3RvclRlc3RQYWdlVVJMKCkp
KTsKLQotICAgIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UgPSB0cnVlOworICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVS
TCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgaW5zcGVj
dG9yVGVzdFBhZ2VVUkwoKSkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuKCkK
QEAgLTUzNSwyMCArNDk5LDIzIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Om9wZW4oKQogCiB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjpkaWRDbG9zZSgpCiB7Ci0gICAgaWYgKCFtX2NyZWF0ZWRJ
bnNwZWN0b3JQYWdlKQorICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQogICAgICAgICByZXR1cm47
CiAKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZSA9IG51bGxwdHI7CisKICAgICBtX2lz
VmlzaWJsZSA9IGZhbHNlOwogICAgIG1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0ID0gZmFsc2U7CiAg
ICAgbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQgPSBmYWxzZTsKICAgICBtX2lzUHJvZmlsaW5nUGFn
ZSA9IGZhbHNlOwotICAgIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UgPSBmYWxzZTsKICAgICBtX3No
b3dNZXNzYWdlU2VudCA9IGZhbHNlOwogICAgIG1faWdub3JlRmlyc3RCcmluZ1RvRnJvbnQgPSBm
YWxzZTsKIAogICAgIGlmIChtX2lzQXR0YWNoZWQpCiAgICAgICAgIHBsYXRmb3JtRGV0YWNoKCk7
CiAgICAgbV9pc0F0dGFjaGVkID0gZmFsc2U7CisgICAgbV9jYW5BdHRhY2ggPSBmYWxzZTsKIAog
ICAgIHBsYXRmb3JtRGlkQ2xvc2UoKTsKIH0KQEAgLTU3MSw5ICs1MzgsMTUgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6YnJpbmdUb0Zyb250KCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
YXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29sIGF2YWlsYWJsZSkKIHsKKyAgICBtX2NhbkF0
dGFjaCA9IGF2YWlsYWJsZTsKKwogICAgIHBsYXRmb3JtQXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdl
ZChhdmFpbGFibGUpOwogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuSW5OZXdUYWIo
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCit7Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAgICAgcGxh
dGZvcm1JbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyk7CkBAIC01ODksMjggKzU2Miw2IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnQpCiAgICAgcGxhdGZvcm1BcHBlbmQoZmlsZW5hbWUsIGNvbnRl
bnQpOwogfQogCi1ib29sIFdlYkluc3BlY3RvclByb3h5OjpjYW5BdHRhY2goKQotewotICAgIC8v
IEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2Fu
QXR0YWNoV2luZG93LiBUaGVyZSBhcmUgdHdvIGltcGxlbWVudGF0aW9ucwotICAgIC8vIHRvIG1h
a2UgbGlmZSBlYXNpZXIgaW4gdGhlIG11bHRpLXByb2Nlc3Mgd29ybGQgd2UgaGF2ZS4gV2ViSW5z
cGVjdG9yUHJveHkgdXNlcyBjYW5BdHRhY2ggdG8gZGVjaWRlIGlmCi0gICAgLy8gd2UgY2FuIGF0
dGFjaCBvbiBvcGVuIChvbiB0aGUgVUkgcHJvY2VzcyBzaWRlKS4gQW5kIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWw6OmNhbkF0dGFjaFdpbmRvdyBpcwotICAgIC8vIHVzZWQgdG8gZGVjaWRl
IGlmIHdlIGNhbiBhdHRhY2ggd2hlbiB0aGUgYXR0YWNoIGJ1dHRvbiBpcyBwcmVzc2VkIChvbiB0
aGUgV2ViUHJvY2VzcyBzaWRlKS4KLQotICAgIC8vIElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVk
LCBhbGxvdyBhdHRhY2hpbmcgYWdhaW4gdG8gYWxsb3cgc3dpdGNoaW5nIHNpZGVzLgotICAgIGlm
IChtX2lzQXR0YWNoZWQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gRG9uJ3QgYWxs
b3cgYXR0YWNoaW5nIHRvIGFub3RoZXIgaW5zcGVjdG9yIC0tIHR3byBpbnNwZWN0b3JzIGluIG9u
ZSB3aW5kb3cgaXMgdG9vIG11Y2ghCi0gICAgaWYgKG1fbGV2ZWwgPiAxKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAvLyBEb24ndCBhbGxvdyB0aGUgYXR0YWNoIGlmIHRoZSB3aW5kb3cg
d291bGQgYmUgdG9vIHNtYWxsIHRvIGFjY29tbW9kYXRlIHRoZSBtaW5pbXVtIGluc3BlY3RvciBo
ZWlnaHQuCi0gICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZUhlaWdodCA9IHBsYXRmb3JtSW5zcGVj
dGVkV2luZG93SGVpZ2h0KCk7Ci0gICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZVdpZHRoID0gcGxh
dGZvcm1JbnNwZWN0ZWRXaW5kb3dXaWR0aCgpOwotICAgIHVuc2lnbmVkIG1heGltdW1BdHRhY2hl
ZEhlaWdodCA9IGluc3BlY3RlZFBhZ2VIZWlnaHQgKiAzIC8gNDsKLSAgICByZXR1cm4gbWluaW11
bUF0dGFjaGVkSGVpZ2h0IDw9IG1heGltdW1BdHRhY2hlZEhlaWdodCAmJiBtaW5pbXVtQXR0YWNo
ZWRXaWR0aCA8PSBpbnNwZWN0ZWRQYWdlV2lkdGg7Ci19Ci0KIGJvb2wgV2ViSW5zcGVjdG9yUHJv
eHk6OnNob3VsZE9wZW5BdHRhY2hlZCgpCiB7CiAgICAgcmV0dXJuIGluc3BlY3RvclBhZ2VHcm91
cCgpLT5wcmVmZXJlbmNlcygpLmluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKCkgJiYgY2FuQXR0YWNo
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4
IDE3YTc0OTguLmFkMDIxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNw
ZWN0b3JQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogUG9ydGlvbnMgQ29weXJpZ2h0
IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtMzAsNiArMzAsNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNjIsNyArNjMsNiBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQ
YWdlUHJveHk7Ci1zdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIAogZW51bSBBdHRh
Y2htZW50U2lkZSB7CiAgICAgQXR0YWNobWVudFNpZGVCb3R0b20sCkBAIC04Myw3ICs4Myw3IEBA
IHB1YmxpYzoKICAgICAvLyBQdWJsaWMgQVBJcwogICAgIFdlYlBhZ2VQcm94eSogcGFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnZTsgfQogCi0gICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fY3JlYXRlZEluc3BlY3RvclBhZ2U7IH0KKyAgICBib29sIGlzQ29ubmVjdGVkKCkg
Y29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvclBhZ2U7IH0KICAgICBib29sIGlzVmlzaWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNWaXNpYmxlOyB9CiAgICAgYm9vbCBpc0Zyb250KCk7CiAKQEAg
LTEyMywxMiArMTIzLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0
aCh1bnNpZ25lZCk7CiAgICAgdm9pZCBzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkg
eyBwbGF0Zm9ybVNldFRvb2xiYXJIZWlnaHQoaGVpZ2h0KTsgfQogCi0gICAgYm9vbCBpc0RlYnVn
Z2luZ0phdmFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdDsg
fQotICAgIHZvaWQgdG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZygpOwotCi0gICAgYm9vbCBpc1By
b2ZpbGluZ0phdmFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvZmlsaW5nSmF2YVNjcmlw
dDsgfQotICAgIHZvaWQgdG9nZ2xlSmF2YVNjcmlwdFByb2ZpbGluZygpOwotCiAgICAgYm9vbCBp
c1Byb2ZpbGluZ1BhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvZmlsaW5nUGFnZTsgfQogICAg
IHZvaWQgdG9nZ2xlUGFnZVByb2ZpbGluZygpOwogCkBAIC0xNTIsNyArMTQ2LDYgQEAgcHJpdmF0
ZToKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpNZXNzYWdl
RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIFdlYlBhZ2VQcm94eSogcGxhdGZvcm1DcmVhdGVJ
bnNwZWN0b3JQYWdlKCk7CiAgICAgdm9pZCBwbGF0Zm9ybU9wZW4oKTsKQEAgLTE3MywxMSArMTY2
LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwogCiAgICAgLy8gQ2FsbGVkIGJ5IFdlYklu
c3BlY3RvclByb3h5IG1lc3NhZ2VzCi0gICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JQYWdlKHVpbnQ2
NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKLSAgICB2
b2lkIGNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQs
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBh
Z2UoSVBDOjpBdHRhY2htZW50LCBib29sIGNhbkF0dGFjaCk7CisgICAgdm9pZCBjcmVhdGVJbnNw
ZWN0b3JQYWdlRm9yVGVzdChJUEM6OkF0dGFjaG1lbnQpOwogICAgIHZvaWQgZGlkQ2xvc2UoKTsK
ICAgICB2b2lkIGJyaW5nVG9Gcm9udCgpOwogICAgIHZvaWQgYXR0YWNoQXZhaWxhYmlsaXR5Q2hh
bmdlZChib29sKTsKKyAgICB2b2lkIG9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIHNhdmUo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2
NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpOwpAQCAtMTg3LDcgKzE4MSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKICNlbmRpZgogCi0gICAgYm9vbCBjYW5BdHRhY2goKTsKKyAgICBib29sIGNhbkF0dGFj
aCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuQXR0YWNoOyB9CiAgICAgYm9vbCBzaG91bGRPcGVuQXR0
YWNoZWQoKTsKIAogICAgIHZvaWQgb3BlbigpOwpAQCAtMjA5LDE0ICsyMDMsMTUgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bUF0dGFjaGVkSGVpZ2h0OwogCiAg
ICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7CisgICAgV2ViUGFnZVByb3h5KiBtX2luc3BlY3RvclBh
Z2U7CiAKICAgICBib29sIG1faXNWaXNpYmxlOwogICAgIGJvb2wgbV9pc0F0dGFjaGVkOworICAg
IGJvb2wgbV9jYW5BdHRhY2g7CiAgICAgYm9vbCBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdDsKICAg
ICBib29sIG1faXNQcm9maWxpbmdKYXZhU2NyaXB0OwogICAgIGJvb2wgbV9pc1Byb2ZpbGluZ1Bh
Z2U7CiAgICAgYm9vbCBtX3Nob3dNZXNzYWdlU2VudDsKLSAgICBib29sIG1fY3JlYXRlZEluc3Bl
Y3RvclBhZ2U7CiAgICAgYm9vbCBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250OwogCiAgICAgLy8g
VGhlIGRlYnVnZ2VyIHN0b3BzIGFsbCB0aGUgcGFnZXMgaW4gdGhlIHNhbWUgUGFnZUdyb3VwLiBI
YXZpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCBlNmM5NDRkLi4zNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMCArMjMs
MTIgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JQ
cm94eSB7Ci0gICAgQ3JlYXRlSW5zcGVjdG9yUGFnZSgpIC0+ICh1aW50NjRfdCBpbnNwZWN0b3JQ
YWdlSUQsIFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBpbnNwZWN0b3JQYWdlUGFy
YW1ldGVycykKLSAgICBDcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgpIC0+ICh1aW50NjRfdCBp
bnNwZWN0b3JQYWdlSUQsIFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBpbnNwZWN0
b3JQYWdlUGFyYW1ldGVycykKKyAgICBDcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVu
dCBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBjYW5BdHRhY2gpCisgICAgQ3JlYXRlSW5zcGVj
dG9yUGFnZUZvclRlc3QoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQorCiAg
ICAgRGlkQ2xvc2UoKQogICAgIEJyaW5nVG9Gcm9udCgpCisKICAgICBJbnNwZWN0ZWRVUkxDaGFu
Z2VkKFN0cmluZyB1cmxTdHJpbmcpCiAKICAgICBTYXZlKFN0cmluZyBmaWxlbmFtZSwgU3RyaW5n
IGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykKQEAgLTM1LDYg
KzM3LDcgQEAgbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yUHJveHkgewogICAgIEF0dGFjaEJvdHRv
bSgpCiAgICAgQXR0YWNoUmlnaHQoKQogICAgIERldGFjaCgpCisKICAgICBBdHRhY2hBdmFpbGFi
aWxpdHlDaGFuZ2VkKGJvb2wgYXZhaWxhYmxlKQogCiAgICAgU2V0QXR0YWNoZWRXaW5kb3dIZWln
aHQodW5zaWduZWQgaGVpZ2h0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KaW5kZXggYzZjNjY4Yy4uZDU2ZTdkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFj
Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJXS1VSTENGLmgiCiAjaW1wb3J0ICJXS1ZpZXdQ
cml2YXRlLmgiCiAjaW1wb3J0ICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgorI2ltcG9ydCAiV2Vi
SW5zcGVjdG9yVUlNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUGFnZUdyb3VwLmgiCiAjaW1wb3J0
ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByZWZlcmVuY2VzLmgiCkBAIC00MTgsNyAr
NDE5LDcgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJ
bnNwZWN0b3JQYWdlKCkKICAgICAgICAgICAgIGluaXRpYWxSZWN0ID0gW05TV2luZG93IGNvbnRl
bnRSZWN0Rm9yRnJhbWVSZWN0OndpbmRvd0ZyYW1lIHN0eWxlTWFzazp3aW5kb3dTdHlsZU1hc2td
OwogICAgIH0KIAotICAgIG1faW5zcGVjdG9yVmlldyA9IGFkb3B0TlMoW1tXS1dlYkluc3BlY3Rv
cldLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTppbml0aWFsUmVjdCBjb250ZXh0UmVmOnRvQVBJ
KCZwYWdlKCktPnByb2Nlc3MoKS5jb250ZXh0KCkpIHBhZ2VHcm91cFJlZjp0b0FQSShpbnNwZWN0
b3JQYWdlR3JvdXAoKSkgcmVsYXRlZFRvUGFnZTp0b0FQSShtX3BhZ2UpXSk7CisgICAgbV9pbnNw
ZWN0b3JWaWV3ID0gYWRvcHROUyhbW1dLV2ViSW5zcGVjdG9yV0tWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOmluaXRpYWxSZWN0IGNvbnRleHRSZWY6dG9BUEkoJnBhZ2UoKS0+cHJvY2VzcygpLmNv
bnRleHQoKSkgcGFnZUdyb3VwUmVmOnRvQVBJKGluc3BlY3RvclBhZ2VHcm91cCgpKSByZWxhdGVk
VG9QYWdlOm51bGxwdHJdKTsKICAgICBBU1NFUlQobV9pbnNwZWN0b3JWaWV3KTsKIAogI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gMTA5MApAQCAtNTg5LDcgKzU5MCw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW2Nv
bnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOwogCi0gICAgICAgIG1fcGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGlkU2F2ZShbYWN0dWFsVVJMIGFic29s
dXRlU3RyaW5nXSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShbYWN0dWFs
VVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogICAgIH07
CiAKICAgICBpZiAoIWZvcmNlU2F2ZURpYWxvZykgewpAQCAtNjIzLDcgKzYyNCw3IEBAIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
VVJMLCBjb25zdCBTdHJpbmcmCiAgICAgW2hhbmRsZSB3cml0ZURhdGE6W2NvbnRlbnQgZGF0YVVz
aW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICBbaGFuZGxlIGNsb3NlRmls
ZV07CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6
OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX2luc3BlY3Rv
clBhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6d2luZG93RnJh
bWVEaWRDaGFuZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDc1MzVmNmUuLjAxYjQwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ5NSwxMCArNDk1LDEw
IEBACiAJCTFBRkU0MzY1MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRTQzNjMxOEI2QzA4MTAw
OUM3QTQ4IC8qIFVJRGVsZWdhdGUubW0gKi87IH07CiAJCTFBRkU0MzY2MThCNkMwODEwMDlDN0E0
OCAvKiBVSURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUZFNDM2NDE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5oICovOyB9Owog
CQkxQUZGNDkwMDE4MzNERTc4MDA5QUIxNUEgLyogV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRkY0OEZFMTgz
M0RFNzgwMDlBQjE1QSAvKiBXS0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwICovOyB9OworCQkxQzg5
MUQ2NTE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4OTFENjIxOUIxMjRGRjAwQkE3OURE
IC8qIFdlYkluc3BlY3RvclVJLmNwcCAqLzsgfTsKKwkJMUM4OTFENjYxOUIxMjRGRjAwQkE3OURE
IC8qIFdlYkluc3BlY3RvclVJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQzg5MUQ2MzE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCAq
LzsgfTsKIAkJMUM4QUU3NjExOTkyRjYzQTAwQUJGNkVDIC8qIERvY2tCb3R0b21MZWdhY3kucGRm
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhBRTc1
RjE5OTJGNjJGMDBBQkY2RUMgLyogRG9ja0JvdHRvbUxlZ2FjeS5wZGYgKi87IH07CiAJCTFDOEFF
NzYyMTk5MkY2M0MwMEFCRjZFQyAvKiBEb2NrUmlnaHRMZWdhY3kucGRmIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhBRTc2MDE5OTJGNjJGMDBBQkY2
RUMgLyogRG9ja1JpZ2h0TGVnYWN5LnBkZiAqLzsgfTsKLQkJMUM4RTI1QTgxMjcwRTNCQjAwQkM3
QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyNTZCMTI3MERFMzgwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAgKi87IH07Ci0JCTFDOEUyNUE5MTI3MEUzQkMw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI1NkExMjcwREUzODAwQkM3QkQwIC8q
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggKi87IH07CiAJCTFDOEUyODIwMTI3NUQxNTQw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDOEUyODFFMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3Iu
aCAqLzsgfTsKIAkJMUM4RTI4MjExMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjgxRjEy
NzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmNwcCAqLzsgfTsKIAkJMUM4RTI4MzQxMjc1
RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjgzMjEyNzVENzM4MDBCQzdCRDAgLyogV2Vi
SW5zcGVjdG9yUHJveHkuaCAqLzsgfTsKQEAgLTUxMCw4ICs1MTAsMTAgQEAKIAkJMUNBOEI5MzYx
MjdDNzc0RTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBOEI5MzUxMjdDNzc0RTAwNTc2QzJC
IC8qIFdlYkluc3BlY3RvclByb3h5TWFjLm1tICovOyB9OwogCQkxQ0E4Qjk0NTEyN0M4ODJBMDA1
NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBOEI5NDMxMjdDODgyQTAwNTc2
QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMUNB
OEI5NDYxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQThCOTQ0MTI3Qzg4
MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggKi87IH07Ci0JCTFDQThC
OTU0MTI3Qzg5MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yTWFjLm1tICovOyB9OworCQkxQ0E4Qjk1NDEyN0M4OTE1MDA1NzZDMkIg
LyogV2ViSW5zcGVjdG9yVUlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yVUlN
YWMubW0gKi87IH07CiAJCTFDQjc1Qzk0MTcwMUU4ODAwMDlGODA5RiAvKiBEb2NrUmlnaHQucGRm
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0I3NUM5
MzE3MDFFODgwMDA5RjgwOUYgLyogRG9ja1JpZ2h0LnBkZiAqLzsgfTsKKwkJMUNCQkU0QTAxOUI2
NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQkJFNDlFMTlCNjZDNTMw
MDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTFD
QkJFNEExMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0JCRTQ5RjE5QjY2QzUz
MDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oICovOyB9OwogCQkxQ0JDOTQ1RTE2
NTE1RUQyMDBENjhBQUUgLyogRG9ja0JvdHRvbS5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQkM5NDVEMTY1MTVFRDIwMEQ2OEFBRSAvKiBEb2Nr
Qm90dG9tLnBkZiAqLzsgfTsKIAkJMUYzMzVCQzAxODVCODRGMDAwMUEyMDFBIC8qIFdLV2ViUHJv
Y2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUYzMzVCQkYxODVCODREODAwMUEyMDFBIC8qIFdLV2ViUHJvY2Vzc1Bs
dWdJbkxvYWREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTFGNjA0QkE4MTg4OUZBNzQwMEVFMDM5NSAvKiBXS1JlbmRlcmluZ1Byb2dy
ZXNzRXZlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxRjYwNEJBNjE4ODlGQTc0MDBFRTAzOTUgLyogV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDgx
LDEwICsyNDgzLDExIEBACiAJCTFBRkY0OEZFMTgzM0RFNzgwMDlBQjE1QSAvKiBXS0RlcHJlY2F0
ZWRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tE
ZXByZWNhdGVkRnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUJC
NDE3QzkxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0Q2hlY2tlckNvbXBsZXRpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzc3QzE5NTEyODhBODcyMDA2QTc0MkYg
LyogV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDODkxRDYyMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JVSS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDODkxRDYzMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJ
bnNwZWN0b3JVSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0
b3JVSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzg5MUQ2NDE5QjEyNEZGMDBC
QTc5REQgLyogV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDOEFFNzVGMTk5MkY2MkYwMEFCRjZFQyAvKiBEb2NrQm90dG9tTGVnYWN5LnBkZiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBkZjsg
bmFtZSA9IERvY2tCb3R0b21MZWdhY3kucGRmOyBwYXRoID0gUmVzb3VyY2VzL0RvY2tCb3R0b21M
ZWdhY3kucGRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzhBRTc2MDE5OTJGNjJG
MDBBQkY2RUMgLyogRG9ja1JpZ2h0TGVnYWN5LnBkZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBkZjsgbmFtZSA9IERvY2tSaWdodExlZ2Fj
eS5wZGY7IHBhdGggPSBSZXNvdXJjZXMvRG9ja1JpZ2h0TGVnYWN5LnBkZjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUM4RTI1NkExMjcwREUzODAwQkM3QkQwIC8qIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFD
OEUyNTZCMTI3MERFMzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEUyODFFMTI3NUQx
NTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEUy
ODFGMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM4RTI4MzIxMjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDk0LDExICsyNDk3LDEzIEBACiAJCTFD
OEUyQTFDMTI3NzgzM0YwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQzhFMkEzMTEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9y
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDOEUyQTMyMTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3JNZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViSW5zcGVjdG9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yVUlNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JVSU1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBOEI5MzUxMjdDNzc0RTAwNTc2QzJCIC8qIFdl
Ykluc3BlY3RvclByb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViSW5zcGVjdG9yUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQThCOTQzMTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNw
ZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5TWVz
c2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCNzVDOTMxNzAxRTg4MDAw
OUY4MDlGIC8qIERvY2tSaWdodC5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7IG5hbWUgPSBEb2NrUmlnaHQucGRmOyBwYXRoID0g
UmVzb3VyY2VzL0RvY2tSaWdodC5wZGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
QkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JVSU1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQkJFNDlG
MTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCQzk0NUQxNjUxNUVEMjAwRDY4QUFFIC8qIERvY2tCb3R0
b20ucGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
aW1hZ2UucGRmOyBuYW1lID0gRG9ja0JvdHRvbS5wZGY7IHBhdGggPSBSZXNvdXJjZXMvRG9ja0Jv
dHRvbS5wZGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQzQxN0M5MTJDMDBDQ0Ew
MDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGV4dENoZWNrZXJDb21wbGV0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFGMDE4MTY5MTg1OERDMTUwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5G
cmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYlByb2Nlc3NQbHVn
SW5GcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTY3OCw4ICs1NjgzLDYg
QEAKIAkJCQlCQzFCRTFERTEyRDU0QTQxMDAwNEEyMjggLyogV2ViR2VvbG9jYXRpb25DbGllbnQu
aCAqLywKIAkJCQlCQzExMUE1OTExMkY0RkJCMDAzMzdCQUIgLyogV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcCAqLywKIAkJCQlCQzAzMkQ2RDEwRjQzNzhEMDA1OEMxNUEgLyogV2ViSW5zcGVjdG9yQ2xp
ZW50LmggKi8sCi0JCQkJMUM4RTI1NkIxMjcwREUzODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50LmNwcCAqLywKLQkJCQkxQzhFMjU2QTEyNzBERTM4MDBCQzdCRDAgLyogV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLywKIAkJCQkzMTA5OTk3MTE0NkM3NTlCMDAyOURF
QjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCAqLywKIAkJCQkzMTA5OTk2ODE0NkM3MUY1
MDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggKi8sCiAJCQkJNTEyMTI3QzExOTA4
MjM5QTAwREFGMzVDIC8qIFdlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwICovLApAQCAtNTczOSw2
ICs1NzQyLDkgQEAKIAkJCQkxQzhFMjgxRjEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9y
LmNwcCAqLywKIAkJCQkxQzhFMjgxRTEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmgg
Ki8sCiAJCQkJMUM4RTJBMUMxMjc3ODMzRjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5tZXNzYWdl
cy5pbiAqLywKKwkJCQkxQzg5MUQ2MjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUku
Y3BwICovLAorCQkJCTFDODkxRDYzMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5o
ICovLAorCQkJCTFDODkxRDY0MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5tZXNz
YWdlcy5pbiAqLywKIAkJCQlCQzg1N0Y4NDEyQjgyRDBCMDBFREVCMkUgLyogV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuY3BwICovLAogCQkJCUJDODU3RjgzMTJCODJEMEIwMEVERUIyRSAvKiBX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oICovLAogCQkJCUJDOTYzRDZBMTEzREQxOTIwMDU3
NEJFMiAvKiBXZWJQYWdlLmNwcCAqLywKQEAgLTY0ODcsNyArNjQ5Myw3IEBACiAJCQkJNTE5MkQ1
NzUxOTYxRkQwMzAwQ0QxOUFBIC8qIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0gKi8sCiAJ
CQkJMUFBRjI2MzcxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLmggKi8sCiAJCQkJMUFBRjI2MzYxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLm1tICovLAotCQkJCTFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JNYWMubW0gKi8sCisJCQkJMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdl
Ykluc3BlY3RvclVJTWFjLm1tICovLAogCQkJCUJDOTYzRDZEMTEzREQxQTUwMDU3NEJFMiAvKiBX
ZWJQYWdlTWFjLm1tICovLAogCQkJCTI5Q0Q1NUE4MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oICovLAogCQkJCTI5Q0Q1NUE5MTI4RTI5NEYwMDEz
M0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSAqLywKQEAgLTY4NDMs
NiArNjg0OSw4IEBACiAJCQkJMUM4RTJBMzIxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rv
ck1lc3NhZ2VzLmggKi8sCiAJCQkJMUNBOEI5NDMxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3Bl
Y3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQ0E4Qjk0NDEyN0M4ODJBMDA1
NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oICovLAorCQkJCTFDQkJFNDlFMTlC
NjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJ
CQkJMUNCQkU0OUYxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCAq
LywKIAkJCQkzM0QzQTNDNDEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTMzRDNBM0M1MTMzOTYxNzkwMDcwOUJFNCAvKiBX
ZWJNZWRpYUNhY2hlTWFuYWdlck1lc3NhZ2VzLmggKi8sCiAJCQkJMzNEM0EzQzYxMzM5NjE3OTAw
NzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICov
LApAQCAtNzQ1Nyw2ICs3NDY1LDcgQEAKIAkJCQkyREFDRTY0RTE4QURCRkYwMDBFNENBNzYgLyog
X1dLVGh1bWJuYWlsVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTU3OEI4MzEy
MDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjZBMjVGREQx
MkFEQzZDQzAwREM0MENDIC8qIFdlYkRhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMUM4OTFENjYxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGNjJBNzZCNzEyQjFCMjVGMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2Vy
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2MkE3NjVEMTJCMUFCQzMwMDA1RjFCNiAv
KiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2QUI1NDEx
OTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRvci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC03NTEzLDcgKzc1MjIsNiBAQAogCQkJCTFDOEUyODIwMTI3NUQxNTQwMEJDN0JEMCAv
KiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0NDMTY3MTg5MDZBQ0YwMDFF
NkVEOCAvKiBXS1dlYlZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDgyMTBGNDM3OEQw
MDU4QzE1QSAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTFDOEUy
NUE5MTI3MEUzQkMwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUM4RTJBMzYxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzhFMjgzNDEyNzVENzM4MDBCQzdCRDAgLyog
V2ViSW5zcGVjdG9yUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQThCOTQ2MTI3Qzg4MkEw
MDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAg
LTc3ODIsNiArNzc5MCw3IEBACiAJCQkJRjYzNDQ0NUQxMkE4ODVFOTAwMDYxMkQ4IC8qIFdLU2Vj
dXJpdHlPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUYwOEI4MTkyNjlFNkQwMEI2Mzkw
QyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM0MDc2MDQxMjRGRjAyNzAwNjhGMjBBIC8qIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkxQ0JCRTRBMTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVj
dG9yVUlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDQjRFNEMxOEJCRTA0NDAwMEZD
RkM5IC8qIFdLQ29udGVudFZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QTY0RTU3MThGMzhG
NDYwMEVCMzBGMSAvKiBfV0tGb3JtSW5wdXRTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
RjYwNEJBQTE4ODlGQkI4MDBFRTAzOTUgLyogV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0ludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTg5MDAsNiArODkwOSw3IEBACiAJCQkJMDBCOTY2MTkx
OEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUU1
QjdGQjExRTdBRUQyMDBCQTY3NjcgLyogTmV0c2NhcGVQbHVnaW5NYWMubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3QzM2MUQ3MjE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUM4OTFENjUxOUIxMjRGRjAwQkE3OUREIC8qIFdl
Ykluc3BlY3RvclVJLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNEE5QzU1MTJCODE2Q0YwMDhG
RTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRB
OUM5QTEyQjgyMUNEMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQkxQUE1ODg5MzExRUU3MDQwMDA2MUI4ODIgLyogTmV0c2NhcGVQbHVnaW5T
dHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04OTM4LDYgKzg5NDgsNyBAQAogCQkJCTFBMkQ4
NDM5MTI3RjY1RDUwMDFFQjk2MiAvKiBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUFGMDhBRDE5MjY5MzY3MDBCNjM5MEMgLyog
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ4MkE2
MTI3RjRFQUIwMDFFQjk2MiAvKiBOUE9iamVjdFByb3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTFDQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJEODJBODEyN0Y0RUFCMDAxRUI5NjIgLyogTlBS
ZW1vdGVPYmplY3RNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyMTYxQjExMUYzNzY2NDAw
OEFEMEY1IC8qIE5QUnVudGltZU9iamVjdE1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTIx
NjJCMDExRjM4OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtOTE5Nyw4ICs5MjA4LDcgQEAKIAkJCQlCQ0NGNkFCQzEyQzkxRUY5MDA4RjlDMzUg
LyogV2ViSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4RTI4MjExMjc1RDE1NDAwQkM3
QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzExMUE2MDExMkY0
RkJCMDAzMzdCQUIgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTFDOEUyNUE4MTI3MEUzQkIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQkxQ0E4Qjk1NDEyN0M4OTE1MDA1NzZDMkIgLyogV2ViSW5z
cGVjdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUNBOEI5NTQxMjdDODkxNTAwNTc2QzJC
IC8qIFdlYkluc3BlY3RvclVJTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4RTJBMzUxMjc3
ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQzhFMjgzNTEyNzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHku
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBOEI5MzYxMjdDNzc0RTAwNTc2QzJCIC8qIFdlYklu
c3BlY3RvclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5jcHAKaW5kZXggNTAxZDQxYy4uODJhZTRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtODQsMjAgKzg0LDI0IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JE
ZXN0cm95ZWQoKQogCiBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkluc3Bl
Y3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGNv
bnRyb2xsZXIpCiB7Ci0gICAgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSA9IGNvbnRyb2xsZXItPmlz
VW5kZXJUZXN0KCkgPyBtX3BhZ2UtPmluc3BlY3RvcigpLT5jcmVhdGVJbnNwZWN0b3JQYWdlRm9y
VGVzdCgpIDogbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y3JlYXRlSW5zcGVjdG9yUGFnZSgpOwotICAg
IEFTU0VSVF9VTlVTRUQoaW5zcGVjdG9yUGFnZSwgaW5zcGVjdG9yUGFnZSk7Ci0gICAgcmV0dXJu
IHRoaXM7CisgICAgaWYgKGNvbnRyb2xsZXItPmlzVW5kZXJUZXN0KCkpCisgICAgICAgIG1fcGFn
ZS0+aW5zcGVjdG9yKCktPmNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KCk7CisgICAgZWxzZQor
ICAgICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5jcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisKKyAg
ICByZXR1cm4gbV9wYWdlLT5pbnNwZWN0b3IoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGll
bnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQogewogICAgIGlmIChtX3BhZ2UtPmluc3BlY3Rv
cigpKQotICAgICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5kaWRDbG9zZSgpOworICAgICAgICBt
X3BhZ2UtPmluc3BlY3RvcigpLT5jbG9zZUZyb250ZW5kKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVj
dG9yQ2xpZW50OjpicmluZ0Zyb250ZW5kVG9Gcm9udCgpCiB7Ci0gICAgbV9wYWdlLT5pbnNwZWN0
b3IoKS0+YnJpbmdUb0Zyb250KCk7CisgICAgaWYgKG1fcGFnZS0+aW5zcGVjdG9yKCkpCisgICAg
ICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmJyaW5nVG9Gcm9udCgpOwogfQogCiB2b2lkIFdlYklu
c3BlY3RvckNsaWVudDo6ZGlkUmVzaXplTWFpbkZyYW1lKEZyYW1lKikKQEAgLTE5NywzNCArMjAx
LDYgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9v
bCBlbmFibGVkKQogfQogI2VuZGlmCiAKLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVz
c2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIFdlYkluc3BlY3Rv
ciogaW5zcGVjdG9yID0gbV9wYWdlLT5pbnNwZWN0b3IoKTsKLSAgICBpZiAoIWluc3BlY3RvcikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0g
ICAgaWYgKGluc3BlY3Rvci0+aGFzUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKSkgewotICAgICAg
ICBpbnNwZWN0b3ItPnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChtZXNzYWdlKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBXZWJQYWdlKiBpbnNwZWN0b3JQ
YWdlID0gaW5zcGVjdG9yLT5pbnNwZWN0b3JQYWdlKCk7Ci0gICAgaWYgKGluc3BlY3RvclBhZ2Up
Ci0gICAgICAgIHJldHVybiBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKGluc3BlY3Rv
clBhZ2UtPmNvcmVQYWdlKCksIG1lc3NhZ2UpOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1i
b29sIFdlYkluc3BlY3RvckNsaWVudDo6c3VwcG9ydHNGcmFtZUluc3RydW1lbnRhdGlvbigpCi17
Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIHJldHVybiB0cnVlOwotI2VuZGlm
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cGFnZU92
ZXJsYXlEZXN0cm95ZWQoUGFnZU92ZXJsYXkqKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmgKaW5kZXggNzAzM2JkZS4uNzk4Y2FjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBA
IC00NSwyMiArNDUsMjMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogY2xh
c3MgUmVwYWludEluZGljYXRvckxheWVyQ2xpZW50OwogCi1jbGFzcyBXZWJJbnNwZWN0b3JDbGll
bnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLCBwcml2YXRlIFBhZ2VPdmVybGF5OjpDbGllbnQgeworY2xh
c3MgV2ViSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwg
cHJpdmF0ZSBQYWdlT3ZlcmxheTo6Q2xpZW50IHsKIGZyaWVuZCBjbGFzcyBSZXBhaW50SW5kaWNh
dG9yTGF5ZXJDbGllbnQ7CiBwdWJsaWM6CiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50KFdlYlBhZ2Uq
KTsKICAgICB2aXJ0dWFsIH5XZWJJbnNwZWN0b3JDbGllbnQoKTsKIAogcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAgLy8gV2ViQ29y
ZTo6SW5zcGVjdG9yQ2xpZW50CisgICAgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9y
RnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFJlc2l6ZU1haW5GcmFtZShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOworICAgIFdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlSW5zcGVj
dG9yRnJvbnRlbmQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZXNpemVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWUqKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpIG92ZXJyaWRlOworICAgIHZvaWQgaGlnaGxpZ2h0
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgb3ZlcnJpZGU7CiAKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgdmlydHVhbCB2b2lkIHNob3dJbnNwZWN0b3JJbmRpY2F0aW9uKCkg
b3ZlcnJpZGU7CkBAIC03MiwxMCArNzMsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBv
dmVycmlkZXNTaG93UGFpbnRSZWN0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BhaW50UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGcmFtZUlu
c3RydW1lbnRhdGlvbigpOwotCiAgICAgLy8gUGFnZU92ZXJsYXk6OkNsaWVudAogICAgIHZpcnR1
YWwgdm9pZCBwYWdlT3ZlcmxheURlc3Ryb3llZChQYWdlT3ZlcmxheSopIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlZGI3NmEuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
IgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLQotI2luY2x1ZGUgIldlYkluc3BlY3Rvci5oIgot
I2luY2x1ZGUgIldlYlBhZ2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xs
ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnRCYXNlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLXVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlBhZ2UqIHBh
Z2UsIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsKCZwYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGluc3BlY3Rv
clBhZ2UtPmNvcmVQYWdlKCksIHN0ZDo6bWFrZV91bmlxdWU8U2V0dGluZ3M+KCkpCi0gICAgLCBt
X3BhZ2UocGFnZSkKLXsKLX0KLQotU3RyaW5nIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojps
b2NhbGl6ZWRTdHJpbmdzVVJMKCkKLXsKLSAgICByZXR1cm4gbV9wYWdlLT5pbnNwZWN0b3IoKS0+
bG9jYWxpemVkU3RyaW5nc1VSTCgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50OjpicmluZ1RvRnJvbnQoKQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmJyaW5nVG9G
cm9udCgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjbG9zZVdpbmRv
dygpCi17Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlz
Y29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5z
cGVjdG9yRGVzdHJveWVkKTsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5kaWRDbG9zZSgpOwot
fQotCi1ib29sIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjYW5TYXZlKCkKLXsKLSAgICBy
ZXR1cm4gbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y2FuU2F2ZSgpOwotfQotCi12b2lkIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKQotewot
ICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVu
Y29kZWQsIGZvcmNlU2F2ZUFzKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkK
LXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5hcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpOwot
fQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3coRG9ja1Np
ZGUgZG9ja1NpZGUpCi17Ci0gICAgc3dpdGNoIChkb2NrU2lkZSkgewotICAgIGNhc2UgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OlVORE9DS0VEOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6RE9D
S0VEX1RPX0JPVFRPTToKLSAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YXR0YWNoQm90dG9t
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRP
Q0tFRF9UT19SSUdIVDoKLSAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YXR0YWNoUmlnaHQo
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjpkZXRhY2hXaW5kb3coKQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmRldGFj
aCgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdp
bmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCi17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+
c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVpZ2h0KTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKLXsK
LSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5zZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKTsK
LX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0VG9vbGJhckhlaWdodCh1
bnNpZ25lZCBoZWlnaHQpCi17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+c2V0VG9vbGJhckhl
aWdodChoZWlnaHQpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjppbnNw
ZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQotewotICAgIG1fcGFnZS0+
aW5zcGVjdG9yKCktPmluc3BlY3RlZFVSTENoYW5nZWQodXJsU3RyaW5nKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjMzc3ZWY1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAorKysgL2Rldi9udWxsCkBA
IC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50X2gKLSNkZWZpbmUgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRfaAotCi0jaWYgRU5B
QkxFKElOU1BFQ1RPUikKLQotI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViUGFnZTsKLQotY2xh
c3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbCB7Ci1wdWJsaWM6Ci0gICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQoV2ViUGFnZSogcGFnZSwgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSk7Ci0KLXByaXZhdGU6
Ci0gICAgdmlydHVhbCBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIG92ZXJyaWRlOwotCi0g
ICAgdmlydHVhbCB2b2lkIGJyaW5nVG9Gcm9udCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZVdpbmRvdygpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBib29sIGNhblNhdmUoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoV2luZG93KERvY2tTaWRlKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93KCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKLQotICAgIFdlYlBhZ2UqIG1fcGFnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKLQotI2VuZGlmIC8vIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3Rvci5jcHAKaW5kZXggYzViYjJkYS4uNDU2NGVjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDE2NiAr
MjgsOTUgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIK
LSNpbmNsdWRlICJXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgorI2luY2x1ZGUgIldlYklu
c3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdl
LmgiCi0jaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvSW5zcGVjdG9yUGFnZUFnZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJh
bWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+Ci0jaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oPgogI2luY2x1ZGUgPGJpbmRpbmdz
L1NjcmlwdFZhbHVlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBjb25zdCBmbG9hdCBtaW5pbXVt
QXR0YWNoZWRIZWlnaHQgPSAyNTA7CitzdGF0aWMgY29uc3QgZmxvYXQgbWF4aW11bUF0dGFjaGVk
SGVpZ2h0UmF0aW8gPSAwLjc1Oworc3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1BdHRhY2hlZFdp
ZHRoID0gNzUwOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxXZWJJbnNwZWN0
b3I+IFdlYkluc3BlY3Rvcjo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UsIEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQorUGFzc1JlZlB0cjxXZWJJbnNwZWN0b3I+IFdlYklu
c3BlY3Rvcjo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJJbnNwZWN0b3IocGFnZSwgZnJvbnRlbmRDaGFubmVsKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJJbnNwZWN0b3IocGFnZSkpOwogfQogCi1XZWJJbnNwZWN0b3I6OldlYkluc3Bl
Y3RvcihXZWJQYWdlKiBwYWdlLCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCkKK1dlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlBhZ2UqIHBhZ2UpCiAgICAgOiBt
X3BhZ2UocGFnZSkKLSAgICAsIG1faW5zcGVjdG9yUGFnZShudWxscHRyKQotICAgICwgbV9mcm9u
dGVuZENsaWVudChudWxscHRyKQotICAgICwgbV9mcm9udGVuZENoYW5uZWwoZnJvbnRlbmRDaGFu
bmVsKQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICwgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJM
KGZhbHNlKQotI2VuZGlmCi0jaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0gICAgLCBtX3Jl
bW90ZUZyb250ZW5kQ29ubmVjdGVkKGZhbHNlKQotI2VuZGlmCisgICAgLCBtX2F0dGFjaGVkKGZh
bHNlKQorICAgICwgbV9wcmV2aW91c0NhbkF0dGFjaChmYWxzZSkKIHsKIH0KIAogLy8gQ2FsbGVk
IGZyb20gV2ViSW5zcGVjdG9yQ2xpZW50Ci1XZWJQYWdlKiBXZWJJbnNwZWN0b3I6OmNyZWF0ZUlu
c3BlY3RvclBhZ2UoKQordm9pZCBXZWJJbnNwZWN0b3I6OmNyZWF0ZUluc3BlY3RvclBhZ2UoKQog
ewogICAgIGlmICghbV9wYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEFTU0VS
VCghbV9pbnNwZWN0b3JQYWdlKTsKLSAgICBBU1NFUlQoIW1fZnJvbnRlbmRDbGllbnQpOwotCi0g
ICAgdWludDY0X3QgaW5zcGVjdG9yUGFnZUlEID0gMDsKLSAgICBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6Q3JlYXRlSW5zcGVjdG9yUGFnZSgpLAotICAgICAgICAgICAgTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpDcmVhdGVJbnNwZWN0b3JQYWdlOjpSZXBseShpbnNwZWN0b3JQYWdlSUQsIHBh
cmFtZXRlcnMpLAotICAgICAgICAgICAgbV9wYWdlLT5wYWdlSUQoKSwgc3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kczo6bWF4KCkpKSB7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KKyAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFpbnNwZWN0b3JQYWdlSUQpCi0gICAgICAgIHJldHVy
biBudWxscHRyOworI2lmIE9TKERBUldJTikKKyAgICBtYWNoX3BvcnRfdCBsaXN0ZW5pbmdQb3J0
OworICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklH
SFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOwogCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
Y3JlYXRlV2ViUGFnZShpbnNwZWN0b3JQYWdlSUQsIHBhcmFtZXRlcnMpOwotICAgIG1faW5zcGVj
dG9yUGFnZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYlBhZ2UoaW5zcGVjdG9yUGFnZUlEKTsK
LSAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbiA9
IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCksIHRoaXMsIFJ1bkxvb3A6Om1haW4oKSk7CisgICAg
bV9mcm9udGVuZENvbm5lY3Rpb24tPnNldE9ubHlTZW5kTWVzc2FnZXNBc0Rpc3BhdGNoV2hlbldh
aXRpbmdGb3JTeW5jUmVwbHlXaGVuUHJvY2Vzc2luZ1N1Y2hBTWVzc2FnZSh0cnVlKTsKKyAgICBt
X2Zyb250ZW5kQ29ubmVjdGlvbi0+b3BlbigpOwogCi0gICAgYXV0byBmcm9udGVuZENsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fcGFnZSwgbV9p
bnNwZWN0b3JQYWdlKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQuZ2V0
KCk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7
Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9yUGFnZTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6Q3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQobGlzdGVuaW5nUG9ydCwgTUFD
SF9NU0dfVFlQRV9NQUtFX1NFTkQpLCBjYW5BdHRhY2hXaW5kb3coKSksIG1fcGFnZS0+cGFnZUlE
KCkpOworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworI2VuZGlmCiB9CiAKLVdlYlBhZ2Uq
IFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QoKQordm9pZCBXZWJJbnNw
ZWN0b3I6OmNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KCkKIHsKICAgICBpZiAoIW1fcGFnZSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBBU1NFUlQoIW1faW5zcGVjdG9yUGFnZSk7
Ci0gICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2xpZW50KTsKLQotICAgIHVpbnQ2NF90IGluc3BlY3Rv
clBhZ2VJRCA9IDA7Ci0gICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwot
Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBh
Z2VGb3JUZXN0KCksCi0gICAgICAgICAgICBNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNy
ZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0OjpSZXBseShpbnNwZWN0b3JQYWdlSUQsIHBhcmFtZXRl
cnMpLAotICAgICAgICAgICAgbV9wYWdlLT5wYWdlSUQoKSwgc3RkOjpjaHJvbm86Om1pbGxpc2Vj
b25kczo6bWF4KCkpKSB7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGlm
ICghaW5zcGVjdG9yUGFnZUlEKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuOwogCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY3JlYXRlV2ViUGFnZShpbnNwZWN0b3JQ
YWdlSUQsIHBhcmFtZXRlcnMpOwotICAgIG1faW5zcGVjdG9yUGFnZSA9IFdlYlByb2Nlc3M6OnNo
YXJlZCgpLndlYlBhZ2UoaW5zcGVjdG9yUGFnZUlEKTsKLSAgICBBU1NFUlQobV9pbnNwZWN0b3JQ
YWdlKTsKKyNpZiBPUyhEQVJXSU4pCisgICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKKyAg
ICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JF
Q0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKIAotICAgIGF1dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX3BhZ2UsIG1faW5zcGVj
dG9yUGFnZSk7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5kQ2xpZW50LmdldCgpOwot
ICAgIG1faW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNl
dEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9udGVuZENsaWVudCkpOwotICAg
IHJldHVybiBtX2luc3BlY3RvclBhZ2U7Ci19CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24gPSBJ
UEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpLCB0aGlzLCBSdW5Mb29wOjptYWluKCkpOworICAgIG1f
ZnJvbnRlbmRDb25uZWN0aW9uLT5zZXRPbmx5U2VuZE1lc3NhZ2VzQXNEaXNwYXRjaFdoZW5XYWl0
aW5nRm9yU3luY1JlcGx5V2hlblByb2Nlc3NpbmdTdWNoQU1lc3NhZ2UodHJ1ZSk7CisgICAgbV9m
cm9udGVuZENvbm5lY3Rpb24tPm9wZW4oKTsKIAotdm9pZCBXZWJJbnNwZWN0b3I6OmRlc3Ryb3lJ
bnNwZWN0b3JQYWdlKCkKLXsKLSAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRyOwotICAgIG1f
ZnJvbnRlbmRDbGllbnQgPSBudWxscHRyOwotICAgIG1fZnJvbnRlbmRDaGFubmVsID0gbnVsbHB0
cjsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6Q3JlYXRlSW5zcGVjdG9yUGFnZUZvclRl
c3QoSVBDOjpBdHRhY2htZW50KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5E
KSksIG1fcGFnZS0+cGFnZUlEKCkpOworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworI2Vu
ZGlmCiB9CiAKLS8vIENhbGxlZCBmcm9tIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ci12b2lk
IFdlYkluc3BlY3Rvcjo6ZGlkQ2xvc2UoKQordm9pZCBXZWJJbnNwZWN0b3I6OmNsb3NlRnJvbnRl
bmQoKQogewogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKLSAgICBkZXN0cm95SW5zcGVjdG9yUGFnZSgpOwotfQogCi12b2lkIFdlYklu
c3BlY3Rvcjo6YnJpbmdUb0Zyb250KCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6
QnJpbmdUb0Zyb250KCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQorICAgIG1fZnJvbnRlbmRDb25u
ZWN0aW9uLT5pbnZhbGlkYXRlKCk7CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24gPSBudWxscHRy
OwogCi12b2lkIFdlYkluc3BlY3Rvcjo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcm
IHVybFN0cmluZykKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6SW5zcGVjdGVkVVJM
Q2hhbmdlZCh1cmxTdHJpbmcpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNw
ZWN0b3I6OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCi17Ci0gICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZv
cmNlU2F2ZUFzKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9hdHRhY2hlZCA9IGZhbHNlOwor
ICAgIG1fcHJldmlvdXNDYW5BdHRhY2ggPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6
OmFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCi17
Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkFwcGVuZChmaWxlbmFtZSwgY29udGVudCks
IG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNoQm90dG9t
KCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQm90dG9tKCksIG1fcGFn
ZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNoUmlnaHQoKQotewot
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hSaWdodCgpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OmRldGFjaCgpCi17Ci0gICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yUHJveHk6OkRldGFjaCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBX
ZWJJbnNwZWN0b3I6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKLXsK
LSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVp
Z2h0KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzZXRBdHRh
Y2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKSwgbV9wYWdlLT5wYWdlSUQoKSk7
Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkIGhlaWdo
dCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpicmluZ1RvRnJvbnQoKQogewotICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjpTZXRUb29sYmFySGVpZ2h0KGhlaWdodCksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CiB9CiAKIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3IgbWVzc2FnZXMKQEAgLTIw
MSwzNCArMTMwLDEyIEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZSgpCiAgICAgbV9wYWdlLT5j
b3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY2xvc2UoKTsKIH0KIAotdm9pZCBXZWJJ
bnNwZWN0b3I6OmRpZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgQVNTRVJUKG1faW5z
cGVjdG9yUGFnZSk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUo
KS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJ
LnNhdmVkVVJMKFwiIiwgdXJsLCAiXCIpIikpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6ZGlk
QXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBXZWJJbnNwZWN0b3I6Om9wZW5Jbk5ld1Rh
Yihjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdl
KTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgp
LmV4ZWN1dGVTY3JpcHQobWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRU
b1VSTChcIiIsIHVybCwgIlwiKSIpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OmF0dGFjaGVk
Qm90dG9tKCkKLXsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVu
ZENsaWVudC0+c2V0QXR0YWNoZWRXaW5kb3coSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRPQ0tF
RF9UT19CT1RUT00pOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNoZWRSaWdodCgpCi17
Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNl
dEF0dGFjaGVkV2luZG93KEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpET0NLRURfVE9fUklHSFQp
OwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6ZGV0YWNoZWQoKQotewotICAgIGlmIChtX2Zyb250
ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRBdHRhY2hlZFdpbmRvdyhJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6VU5ET0NLRUQpOworICAgIC8vIEZJWE1FOiBHZXQgdGhp
cyB3b3JraW5nIQorLy8gICAgUGFnZSogbmV3UGFnZSA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+Y2hy
b21lKCkuY3JlYXRlV2luZG93KG1fcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCksIHJlcXVl
c3RXaXRoUmVmZXJyZXIsIGZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3RXaXRoUmVm
ZXJyZXIucmVzb3VyY2VSZXF1ZXN0KCkpKTsKKy8vICAgIGlmICghbmV3UGFnZSkKKy8vICAgICAg
ICByZXR1cm47CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpldmFsdWF0ZVNjcmlwdEZvclRlc3Qo
Y29uc3QgU3RyaW5nJiBzY3JpcHQpCkBAIC0yMzksMTA4ICsxNDYsOTQgQEAgdm9pZCBXZWJJbnNw
ZWN0b3I6OmV2YWx1YXRlU2NyaXB0Rm9yVGVzdChjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHZvaWQg
V2ViSW5zcGVjdG9yOjpzaG93Q29uc29sZSgpCiB7CiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5p
bnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQot
ICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zaG93Q29uc29sZSgpOworICAgIG1fZnJvbnRlbmRD
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2hvd0NvbnNvbGUoKSwg
MCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpzaG93UmVzb3VyY2VzKCkKIHsKICAgICBtX3Bh
Z2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1f
ZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNob3dSZXNvdXJjZXMo
KTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUk6OlNob3dSZXNvdXJjZXMoKSwgMCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpzaG93TWFp
blJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpz
aG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJZGVudGlmaWVyKQogewotICAg
IFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQp
OworICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZy
YW1lSWRlbnRpZmllcik7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlm
IChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zaG93TWFpblJl
c291cmNlRm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpKTsKLX0KIAotdm9pZCBXZWJJbnNwZWN0
b3I6OnN0YXJ0SmF2YVNjcmlwdERlYnVnZ2luZygpCi17Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgp
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50
KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXREZWJ1Z2dpbmdFbmFibGVkKHRydWUpOwor
ICAgIFN0cmluZyBpbnNwZWN0b3JGcmFtZUlkZW50aWZpZXIgPSBtX3BhZ2UtPmNvcmVQYWdlKCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5wYWdlQWdlbnQoKS0+ZnJhbWVJZChmcmFtZS0+Y29yZUZy
YW1lKCkpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JVSTo6U2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGluc3BlY3RvckZyYW1lSWRlbnRpZmll
ciksIDApOwogfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6c3RvcEphdmFTY3JpcHREZWJ1Z2dpbmco
KQordm9pZCBXZWJJbnNwZWN0b3I6OnN0YXJ0UGFnZVByb2ZpbGluZygpCiB7CiAgICAgbV9wYWdl
LT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zy
b250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXREZWJ1Z2dpbmdFbmFi
bGVkKGZhbHNlKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OnNldEphdmFTY3JpcHRQcm9maWxp
bmdFbmFibGVkKGJvb2wpCi17Ci0gICAgLy8gTm8gbG9uZ2VyIHN1cHBvcnRlZC4KKyAgICBtX2Zy
b250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlN0YXJ0UGFn
ZVByb2ZpbGluZygpLCAwKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OnN0YXJ0SmF2YVNjcmlw
dFByb2ZpbGluZygpCit2b2lkIFdlYkluc3BlY3Rvcjo6c3RvcFBhZ2VQcm9maWxpbmcoKQogewot
ICAgIC8vIE5vIGxvbmdlciBzdXBwb3J0ZWQuCisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U3RvcFBhZ2VQcm9maWxpbmcoKSwgMCk7CiB9CiAK
LXZvaWQgV2ViSW5zcGVjdG9yOjpzdG9wSmF2YVNjcmlwdFByb2ZpbGluZygpCitib29sIFdlYklu
c3BlY3Rvcjo6Y2FuQXR0YWNoV2luZG93KCkKIHsKLSAgICAvLyBObyBsb25nZXIgc3VwcG9ydGVk
LgotfQorICAgIC8vIERvbid0IGFsbG93IGF0dGFjaGluZyB0byBhbm90aGVyIGluc3BlY3RvciAt
LSB0d28gaW5zcGVjdG9ycyBpbiBvbmUgd2luZG93IGlzIHRvbyBtdWNoIQorICAgIGlmIChtX3Bh
Z2UtPmlzSW5zcGVjdG9yUGFnZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLXZvaWQgV2Vi
SW5zcGVjdG9yOjpzdGFydFBhZ2VQcm9maWxpbmcoKQotewotICAgIG1fcGFnZS0+Y29yZVBhZ2Uo
KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVu
dCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVk
KHRydWUpOwotfQorICAgIC8vIElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCBhbGxvdyBhdHRh
Y2hpbmcgYWdhaW4gdG8gYWxsb3cgc3dpdGNoaW5nIHNpZGVzLgorICAgIGlmIChtX2F0dGFjaGVk
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotdm9pZCBXZWJJbnNwZWN0b3I6OnN0b3BQYWdlUHJv
ZmlsaW5nKCkKLXsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIo
KS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRD
bGllbnQtPnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChmYWxzZSk7CisgICAgLy8gRG9uJ3Qg
YWxsb3cgdGhlIGF0dGFjaCBpZiB0aGUgd2luZG93IHdvdWxkIGJlIHRvbyBzbWFsbCB0byBhY2Nv
bW1vZGF0ZSB0aGUgbWluaW11bSBpbnNwZWN0b3Igc2l6ZS4KKyAgICB1bnNpZ25lZCBpbnNwZWN0
ZWRQYWdlSGVpZ2h0ID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPnZp
c2libGVIZWlnaHQoKTsKKyAgICB1bnNpZ25lZCBpbnNwZWN0ZWRQYWdlV2lkdGggPSBtX3BhZ2Ut
PmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZVdpZHRoKCk7CisgICAgdW5z
aWduZWQgbWF4aW11bUF0dGFjaGVkSGVpZ2h0ID0gaW5zcGVjdGVkUGFnZUhlaWdodCAqIG1heGlt
dW1BdHRhY2hlZEhlaWdodFJhdGlvOworICAgIHJldHVybiBtaW5pbXVtQXR0YWNoZWRIZWlnaHQg
PD0gbWF4aW11bUF0dGFjaGVkSGVpZ2h0ICYmIG1pbmltdW1BdHRhY2hlZFdpZHRoIDw9IGluc3Bl
Y3RlZFBhZ2VXaWR0aDsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnVwZGF0ZURvY2tpbmdBdmFp
bGFiaWxpdHkoKQogewotICAgIGlmICghbV9mcm9udGVuZENsaWVudCkKKyAgICBpZiAobV9hdHRh
Y2hlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBjYW5BdHRhY2hXaW5kb3cgPSBtX2Zy
b250ZW5kQ2xpZW50LT5jYW5BdHRhY2hXaW5kb3coKTsKKyAgICBib29sIGNhbkF0dGFjaFdpbmRv
dyA9IHRoaXMtPmNhbkF0dGFjaFdpbmRvdygpOworICAgIGlmIChtX3ByZXZpb3VzQ2FuQXR0YWNo
ID09IGNhbkF0dGFjaFdpbmRvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcmV2aW91c0Nh
bkF0dGFjaCA9IGNhbkF0dGFjaFdpbmRvdzsKKwogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpBdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGNhbkF0dGFjaFdpbmRvdyksIG1fcGFnZS0+cGFn
ZUlEKCkpOwotICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldERvY2tpbmdVbmF2YWlsYWJsZSghY2Fu
QXR0YWNoV2luZG93KTsKIH0KIAotI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotdm9pZCBX
ZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCit2b2lkIFdlYkluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewotICAgIEFTU0VSVChtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKTsK
LSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5k
KG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7
CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorYm9vbCBXZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdl
VG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9wYWdlLT5jb3JlUGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1l
c3NhZ2UpOworI2lmICFFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICBtX2Zyb250ZW5kQ29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChtZXNzYWdlKSwgMCk7CisjZWxzZQorICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpT
ZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQobWVzc2FnZSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
I2VuZGlmCisgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZF
UikKIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpCiB7Ci0gICAg
QVNTRVJUKCFtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKTsKLSAgICAvLyBTd2l0Y2hpbmcgYmV0
d2VlbiBpbi1wcm9jZXNzIGFuZCByZW1vdGUgaW5zcGVjdG9ycyBpc24ndCBzdXBwb3J0ZWQgeWV0
LgotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JQYWdlKTsKLSAgICAKLSAgICBtX3BhZ2UtPmNvcmVQ
YWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENo
YW5uZWwpOwotICAgIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQgPSB0cnVlOworICAgIG1fcGFn
ZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZCh0aGlz
KTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkK
IHsKLSAgICBBU1NFUlQobV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCk7CiAgICAgbV9wYWdlLT5j
b3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKLSAg
ICBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkID0gZmFsc2U7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCmluZGV4IGM5
M2JjYjMuLmRhZWMzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDEwNiArMzAsODMgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVj
dC5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRpbmcuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogY2xh
c3MgV2ViUGFnZTsKIAotY2xhc3MgV2ViSW5zcGVjdG9yIDogcHVibGljIEFQSTo6T2JqZWN0SW1w
bDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yPiB7CitjbGFzcyBXZWJJbnNwZWN0
b3IgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVJbnNw
ZWN0b3I+LCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYkluc3BlY3Rvcj4gY3JlYXRlKFdlYlBhZ2UqLCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnNwZWN0b3I+IGNyZWF0ZShX
ZWJQYWdlKik7CiAKICAgICBXZWJQYWdlKiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9
Ci0gICAgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9y
UGFnZTsgfQorCisgICAgdm9pZCB1cGRhdGVEb2NraW5nQXZhaWxhYmlsaXR5KCk7CisKKyAgICB2
aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkg
b3ZlcnJpZGU7CiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViSW5zcGVjdG9y
TWVzc2FnZVJlY2VpdmVyLmNwcAotICAgIHZvaWQgZGlkUmVjZWl2ZVdlYkluc3BlY3Rvck1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOworICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwor
CisgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKKyAgICB2b2lkIGRpZENsb3NlKElQQzo6
Q29ubmVjdGlvbiopIHsgY2xvc2UoKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSB7IGNsb3NlKCk7IH0KIAog
ICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3IgbWVzc2FnZXMKKyAgICB2b2lkIGNvbm5lY3Rp
b25Fc3RhYmxpc2hlZCgpOworCiAgICAgdm9pZCBzaG93KCk7CiAgICAgdm9pZCBjbG9zZSgpOwog
Ci0gICAgdm9pZCBkaWRTYXZlKGNvbnN0IFN0cmluZyYgdXJsKTsKLSAgICB2b2lkIGRpZEFwcGVu
ZChjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCBvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcpOworCisgICAgdm9pZCBjYW5BdHRhY2hXaW5kb3coYm9vbCYgcmVzdWx0KTsK
KworICAgIHZvaWQgc2hvd0NvbnNvbGUoKTsKKyAgICB2b2lkIHNob3dSZXNvdXJjZXMoKTsKKwor
ICAgIHZvaWQgc2hvd01haW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSWRlbnRpZmll
cik7CiAKLSAgICB2b2lkIGF0dGFjaGVkQm90dG9tKCk7Ci0gICAgdm9pZCBhdHRhY2hlZFJpZ2h0
KCk7Ci0gICAgdm9pZCBkZXRhY2hlZCgpOworICAgIHZvaWQgc2V0QXR0YWNoZWQoYm9vbCBhdHRh
Y2hlZCkgeyBtX2F0dGFjaGVkID0gYXR0YWNoZWQ7IH0KIAogICAgIHZvaWQgZXZhbHVhdGVTY3Jp
cHRGb3JUZXN0KGNvbnN0IFN0cmluZyYgc2NyaXB0KTsKIAotICAgIHZvaWQgc2V0SmF2YVNjcmlw
dFByb2ZpbGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzdGFydFBhZ2VQcm9maWxpbmcoKTsK
ICAgICB2b2lkIHN0b3BQYWdlUHJvZmlsaW5nKCk7CiAKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9C
YWNrZW5kKGNvbnN0IFN0cmluZyYpOworCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0g
ICAgYm9vbCBoYXNSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVt
b3RlRnJvbnRlbmRDb25uZWN0ZWQ7IH0KLSAgICB2b2lkIHNlbmRNZXNzYWdlVG9SZW1vdGVGcm9u
dGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJv
bVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgdm9pZCByZW1vdGVG
cm9udGVuZENvbm5lY3RlZCgpOwogICAgIHZvaWQgcmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQo
KTsKKworICAgIGJvb2wgaGFzUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKSBjb25zdCB7IHJldHVy
biBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50OwotICAgIGZyaWVuZCBjbGFzcyBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDsKIAotICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvcihXZWJQYWdl
KiwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAgZXhwbGljaXQgV2Vi
SW5zcGVjdG9yKFdlYlBhZ2UqKTsKKworICAgIGJvb2wgY2FuQXR0YWNoV2luZG93KCk7CiAKICAg
ICAvLyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JDbGllbnQKLSAgICBXZWJQYWdlKiBjcmVhdGVJ
bnNwZWN0b3JQYWdlKCk7Ci0gICAgV2ViUGFnZSogY3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3Qo
KTsKLSAgICB2b2lkIGRlc3Ryb3lJbnNwZWN0b3JQYWdlKCk7CisgICAgdm9pZCBjcmVhdGVJbnNw
ZWN0b3JQYWdlKCk7CisgICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgpOwogCi0g
ICAgLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQKLSAgICB2b2lkIGRp
ZENsb3NlKCk7CisgICAgdm9pZCBjbG9zZUZyb250ZW5kKCk7CiAgICAgdm9pZCBicmluZ1RvRnJv
bnQoKTsKLSAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJik7Ci0KLSAg
ICBib29sIGNhblNhdmUoKSBjb25zdDsKLSAgICB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9y
Y2VTYXZlQXMpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgY29udGVudCk7CiAKLSAgICB2b2lkIGF0dGFjaEJvdHRvbSgpOwotICAgIHZvaWQg
YXR0YWNoUmlnaHQoKTsKLSAgICB2b2lkIGRldGFjaCgpOwotCi0gICAgdm9pZCBzZXRBdHRhY2hl
ZFdpbmRvd0hlaWdodCh1bnNpZ25lZCk7Ci0gICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd1dpZHRo
KHVuc2lnbmVkKTsKLSAgICB2b2lkIHNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQpOwotCi0gICAg
Ly8gSW1wbGVtZW50ZWQgaW4gcGxhdGZvcm0gV2ViSW5zcGVjdG9yIGZpbGUKLSAgICBTdHJpbmcg
bG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0OwotCi0gICAgdm9pZCBzaG93Q29uc29sZSgpOwot
Ci0gICAgdm9pZCBzaG93UmVzb3VyY2VzKCk7Ci0KLSAgICB2b2lkIHNob3dNYWluUmVzb3VyY2VG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKLQotICAgIHZvaWQgc3RhcnRKYXZhU2NyaXB0RGVi
dWdnaW5nKCk7Ci0gICAgdm9pZCBzdG9wSmF2YVNjcmlwdERlYnVnZ2luZygpOwotCi0gICAgdm9p
ZCBzdGFydEphdmFTY3JpcHRQcm9maWxpbmcoKTsKLSAgICB2b2lkIHN0b3BKYXZhU2NyaXB0UHJv
ZmlsaW5nKCk7CisgICAgV2ViUGFnZSogbV9wYWdlOwogCi0gICAgdm9pZCB1cGRhdGVEb2NraW5n
QXZhaWxhYmlsaXR5KCk7CisgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9mcm9udGVuZENv
bm5lY3Rpb247CiAKLSAgICBXZWJQYWdlKiBtX3BhZ2U7Ci0gICAgV2ViUGFnZSogbV9pbnNwZWN0
b3JQYWdlOwotICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2Zyb250ZW5kQ2xpZW50
OwotICAgIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENoYW5u
ZWw7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbXV0YWJsZSBTdHJpbmcgbV9sb2NhbGl6ZWRT
dHJpbmdzVVJMOwotICAgIG11dGFibGUgYm9vbCBtX2hhc0xvY2FsaXplZFN0cmluZ3NVUkw7Ci0j
ZW5kaWYKLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAgICBib29sIG1fcmVtb3RlRnJv
bnRlbmRDb25uZWN0ZWQ7Ci0jZW5kaWYKKyAgICBib29sIG1fYXR0YWNoZWQ7CisgICAgYm9vbCBt
X3ByZXZpb3VzQ2FuQXR0YWNoOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5t
ZXNzYWdlcy5pbgppbmRleCBjMjNiODZmLi5mYzA3M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4K
QEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIyLDI2ICsy
MiwyNSBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotbWVzc2FnZXMgLT4gV2ViSW5zcGVj
dG9yIExlZ2FjeVJlY2VpdmVyIHsKK21lc3NhZ2VzIC0+IFdlYkluc3BlY3RvciB7CiAgICAgU2hv
dygpCiAgICAgQ2xvc2UoKQotICAgIEF0dGFjaGVkQm90dG9tKCkKLSAgICBBdHRhY2hlZFJpZ2h0
KCkKLSAgICBEZXRhY2hlZCgpCi0gICAgRGlkU2F2ZShTdHJpbmcgdXJsKQotICAgIERpZEFwcGVu
ZChTdHJpbmcgdXJsKQorCisgICAgU2V0QXR0YWNoZWQoYm9vbCBhdHRhY2hlZCkKKwogICAgIFNo
b3dDb25zb2xlKCkKICAgICBTaG93UmVzb3VyY2VzKCkKLSAgICBTaG93TWFpblJlc291cmNlRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCkKLSAgICBTdGFydEphdmFTY3JpcHREZWJ1Z2dpbmcoKQot
ICAgIFN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCkKLSAgICBTdGFydEphdmFTY3JpcHRQcm9maWxp
bmcoKQotICAgIFN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCkKKworICAgIFNob3dNYWluUmVzb3Vy
Y2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlkZW50aWZpZXIpCisKKyAgICBPcGVuSW5OZXdUYWIo
U3RyaW5nIHVybCkKKwogICAgIFN0YXJ0UGFnZVByb2ZpbGluZygpCiAgICAgU3RvcFBhZ2VQcm9m
aWxpbmcoKQogCisgICAgU2VuZE1lc3NhZ2VUb0JhY2tlbmQoU3RyaW5nIG1lc3NhZ2UpCisKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAgICBEaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3Rl
RnJvbnRlbmQoU3RyaW5nIG1lc3NhZ2UpCiAgICAgUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKQog
ICAgIFJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmIzYTUwZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTAs
MCArMSwyODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yVUkuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisjaW5jbHVkZSAiV2Vi
UGFnZS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCIKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ2hy
b21lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29ybGQuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL01haW5GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NjcmlwdEdsb2JhbE9iamVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0U3RhdGUu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPFdlYkluc3Bl
Y3RvclVJPiBXZWJJbnNwZWN0b3JVSTo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJJbnNwZWN0b3JVSShwYWdlKSk7Cit9CisKK1dlYkluc3BlY3Rv
clVJOjpXZWJJbnNwZWN0b3JVSShXZWJQYWdlKiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCisg
ICAgLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKDApCisgICAgLCBtX3VuZGVyVGVzdChmYWxz
ZSkKKyAgICAsIG1fZnJvbnRlbmRMb2FkZWQoZmFsc2UpCisgICAgLCBtX2RvY2tTaWRlKERvY2tT
aWRlOjpVbmRvY2tlZCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAsIG1faGFzTG9jYWxpemVk
U3RyaW5nc1VSTChmYWxzZSkKKyNlbmRpZgoreworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpl
c3RhYmxpc2hDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBlbmNvZGVkQ29ubmVjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCkK
K3sKKyNpZiBPUyhEQVJXSU4pCisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5l
Y3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpOworICAg
IGlmIChJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZp
ZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0g
aW5zcGVjdGVkUGFnZUlkZW50aWZpZXI7CisgICAgbV91bmRlclRlc3QgPSB1bmRlclRlc3Q7CisK
KyAgICBtX2JhY2tlbmRDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRD
b25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCB0aGlzLCBSdW5Mb29wOjptYWluKCkpOwor
ICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPm9wZW4oKTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm47CisjZW5kaWYKKworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHRoaXMpOworfQor
Cit2b2lkIFdlYkluc3BlY3RvclVJOjp3aW5kb3dPYmplY3RDbGVhcmVkKCkKK3sKKyAgICBpZiAo
bV9mcm9udGVuZEhvc3QpCisgICAgICAgIG1fZnJvbnRlbmRIb3N0LT5kaXNjb25uZWN0Q2xpZW50
KCk7CisKKyAgICBtX2Zyb250ZW5kSG9zdCA9IEluc3BlY3RvckZyb250ZW5kSG9zdDo6Y3JlYXRl
KHRoaXMsIG1fcGFnZS0+Y29yZVBhZ2UoKSk7CisgICAgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQo
ZXhlY1N0YXRlRnJvbVBhZ2UobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIG1fcGFnZS0+Y29yZVBh
Z2UoKSksIEFTQ0lJTGl0ZXJhbCgiSW5zcGVjdG9yRnJvbnRlbmRIb3N0IiksIG1fZnJvbnRlbmRI
b3N0LmdldCgpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRMb2FkZWQoKQor
eworICAgIG1fZnJvbnRlbmRMb2FkZWQgPSB0cnVlOworCisgICAgZXZhbHVhdGVQZW5kaW5nRXhw
cmVzc2lvbnMoKTsKKyAgICBicmluZ1RvRnJvbnQoKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JV
STo6bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpCit7CisgICAgRmxvYXRSZWN0IGZyYW1l
UmVjdCA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+Y2hyb21lKCkud2luZG93UmVjdCgpOworICAgIGZy
YW1lUmVjdC5tb3ZlKHgsIHkpOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+Y2hyb21lKCkuc2V0
V2luZG93UmVjdChmcmFtZVJlY3QpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpicmluZ1Rv
RnJvbnQoKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwg
bV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmNs
b3NlV2luZG93KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGlkQ2xvc2UoKSwg
bV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5p
bnZhbGlkYXRlKCk7CisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbiA9IG51bGxwdHI7CisKKyAgICBt
X2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gMDsKKyAgICBtX3VuZGVyVGVzdCA9IGZhbHNlOwor
fQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpyZXF1ZXN0U2V0RG9ja1NpZGUoRG9ja1NpZGUgc2lk
ZSkKK3sKKyAgICBzd2l0Y2ggKHNpZGUpIHsKKyAgICBjYXNlIERvY2tTaWRlOjpVbmRvY2tlZDoK
KyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRldGFjaCgpLCBtX2luc3BlY3RlZFBh
Z2VJZGVudGlmaWVyKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERvY2tTaWRlOjpSaWdo
dDoKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaFJpZ2h0KCksIG1faW5z
cGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRG9ja1Np
ZGU6OkJvdHRvbToKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaEJvdHRv
bSgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
fQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzZXREb2NrU2lkZShEb2NrU2lkZSBzaWRlKQorewor
ICAgIGNvbnN0IGNoYXIgKnNpZGVTdHJpbmc7CisKKyAgICBzd2l0Y2ggKHNpZGUpIHsKKyAgICBj
YXNlIERvY2tTaWRlOjpVbmRvY2tlZDoKKyAgICAgICAgc2lkZVN0cmluZyA9ICJ1bmRvY2tlZCI7
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6UmlnaHQ6CisgICAgICAgIHNp
ZGVTdHJpbmcgPSAicmlnaHQiOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRG9ja1NpZGU6
OkJvdHRvbToKKyAgICAgICAgc2lkZVN0cmluZyA9ICJib3R0b20iOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBtX2RvY2tTaWRlID0gc2lkZTsKKworICAgIGV2YWx1YXRlQ29tbWFuZE9u
TG9hZChBU0NJSUxpdGVyYWwoInNldERvY2tTaWRlIiksIEFTQ0lJTGl0ZXJhbChzaWRlU3RyaW5n
KSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmNoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0
KHVuc2lnbmVkIGhlaWdodCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0
YWNoZWRXaW5kb3dIZWlnaHQoaGVpZ2h0KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmNoYW5nZUF0dGFjaGVkV2luZG93V2lkdGgodW5zaWdu
ZWQgd2lkdGgpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0dGFjaGVkV2lu
ZG93V2lkdGgod2lkdGgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JVSTo6c2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCBoZWlnaHQpCit7CisgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldFRvb2xiYXJIZWlnaHQoaGVpZ2h0KSwgbV9pbnNw
ZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6Om9wZW5Jbk5l
d1RhYihjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6Ok9wZW5Jbk5ld1RhYih1cmwpLCAwKTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JVSTo6c2F2ZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFdURjo6U3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZl
QXMpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNvbnRl
bnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2ZUFzKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmFwcGVuZChjb25zdCBXVEY6OlN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50KQoreworICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjpBcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpLCBtX2luc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6aW5zcGVjdGVkVVJMQ2hhbmdl
ZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6SW5zcGVjdGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlm
aWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2hvd0NvbnNvbGUoKQoreworICAgIGV2
YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNob3dDb25zb2xlIikpOworfQorCit2
b2lkIFdlYkluc3BlY3RvclVJOjpzaG93UmVzb3VyY2VzKCkKK3sKKyAgICBldmFsdWF0ZUNvbW1h
bmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzaG93UmVzb3VyY2VzIikpOworfQorCit2b2lkIFdlYklu
c3BlY3RvclVJOjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUoU3RyaW5nIGZyYW1lSWRlbnRpZmll
cikKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzaG93TWFpblJl
c291cmNlRm9yRnJhbWUiKSwgZnJhbWVJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JVSTo6c3RhcnRQYWdlUHJvZmlsaW5nKCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQo
QVNDSUlMaXRlcmFsKCJzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQiKSwgdHJ1ZSk7Cit9CisK
K3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnN0b3BQYWdlUHJvZmlsaW5nKCkKK3sKKyAgICBldmFsdWF0
ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQi
KSwgZmFsc2UpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpkaWRTYXZlKGNvbnN0IFN0cmlu
ZyYgdXJsKQoreworICAgIGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChtYWtlU3RyaW5nKCJJbnNw
ZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChcIiIsIHVybCwgIlwiKSIpKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JVSTo6ZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGV2YWx1
YXRlRXhwcmVzc2lvbk9uTG9hZChtYWtlU3RyaW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5hcHBl
bmRlZFRvVVJMKFwiIiwgdXJsLCAiXCIpIikpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGV2YWx1
YXRlRXhwcmVzc2lvbk9uTG9hZChtYWtlU3RyaW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNw
YXRjaE1lc3NhZ2VBc3luYygiLCBtZXNzYWdlLCAiKSIpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JVSTo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAg
IG1fYmFja2VuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2VuZE1l
c3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIDApOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpl
dmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBjb25zdCBTdHJpbmcm
IGFyZ3VtZW50KQoreworICAgIGlmIChhcmd1bWVudC5pc051bGwoKSkKKyAgICAgICAgZXZhbHVh
dGVFeHByZXNzaW9uT25Mb2FkKG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmRpc3Bh
dGNoKFtcIiIsIGNvbW1hbmQsICJcIl0pIikpOworICAgIGVsc2UKKyAgICAgICAgZXZhbHVhdGVF
eHByZXNzaW9uT25Mb2FkKG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNo
KFtcIiIsIGNvbW1hbmQsICJcIiwgXCIiLCBhcmd1bWVudCwgIlwiXSkiKSk7Cit9CisKK3ZvaWQg
V2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb25zdCBTdHJpbmcmIGNvbW1h
bmQsIGJvb2wgYXJndW1lbnQpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbW1hbmQs
IEFTQ0lJTGl0ZXJhbChhcmd1bWVudCA/ICJ0cnVlIiA6ICJmYWxzZSIpKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVFeHByZXNzaW9uT25Mb2FkKGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbikKK3sKKyAgICBpZiAobV9mcm9udGVuZExvYWRlZCkgeworICAgICAgICBBU1NFUlQo
bV9xdWV1ZS5pc0VtcHR5KCkpOworICAgICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFt
ZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtX3F1ZXVlLmFwcGVuZChleHByZXNzaW9uKTsKK30KKwordm9pZCBXZWJJ
bnNwZWN0b3JVSTo6ZXZhbHVhdGVQZW5kaW5nRXhwcmVzc2lvbnMoKQoreworICAgIEFTU0VSVCht
X2Zyb250ZW5kTG9hZGVkKTsKKworICAgIGZvciAoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uIDog
bV9xdWV1ZSkKKyAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQo
KS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOworCisgICAgbV9xdWV1ZS5jbGVhcigpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
VUkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMzQwZjkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUku
aApAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSW5zcGVjdG9yVUlf
aAorI2RlZmluZSBXZWJJbnNwZWN0b3JVSV9oCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvSW5zcGVjdG9yRm9yd2FyZGluZy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5k
SG9zdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy9jbGFzcyBXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDsKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYkluc3BlY3RvclVJIDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yVUk+
LCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZENsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW5z
cGVjdG9yVUk+IGNyZWF0ZShXZWJQYWdlKik7CisKKyAgICBXZWJQYWdlKiBwYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlOyB9CisKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2Vi
SW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisKKyAgICAvLyBJUEM6
OkNvbm5lY3Rpb246OkNsaWVudAorICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uKikg
eyBjbG9zZVdpbmRvdygpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uKiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIHsgY2xvc2VXaW5kb3coKTsgfQorCisg
ICAgLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclVJIG1lc3NhZ2VzCisgICAgdm9pZCBlc3RhYmxp
c2hDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0
X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0KTsKKworICAgIHZvaWQg
c2hvd0NvbnNvbGUoKTsKKyAgICB2b2lkIHNob3dSZXNvdXJjZXMoKTsKKworICAgIHZvaWQgc2hv
d01haW5SZXNvdXJjZUZvckZyYW1lKFN0cmluZyBmcmFtZUlkZW50aWZpZXIpOworCisgICAgdm9p
ZCBzdGFydFBhZ2VQcm9maWxpbmcoKTsKKyAgICB2b2lkIHN0b3BQYWdlUHJvZmlsaW5nKCk7CisK
KyAgICB2b2lkIGF0dGFjaGVkQm90dG9tKCkgeyBzZXREb2NrU2lkZShEb2NrU2lkZTo6Qm90dG9t
KTsgfQorICAgIHZvaWQgYXR0YWNoZWRSaWdodCgpIHsgc2V0RG9ja1NpZGUoRG9ja1NpZGU6OlJp
Z2h0KTsgfQorICAgIHZvaWQgZGV0YWNoZWQoKSB7IHNldERvY2tTaWRlKERvY2tTaWRlOjpVbmRv
Y2tlZCk7IH0KKworICAgIHZvaWQgc2V0RG9ja1NpZGUoRG9ja1NpZGUpOworCisgICAgdm9pZCBk
aWRTYXZlKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIGRpZEFwcGVuZChjb25zdCBTdHJp
bmcmIHVybCk7CisKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcm
KTsKKworICAgIC8vIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50CisgICAgdm9pZCB3
aW5kb3dPYmplY3RDbGVhcmVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmcm9udGVuZExvYWRlZCgp
IG92ZXJyaWRlOworCisgICAgdm9pZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgb3Zl
cnJpZGU7CisKKyAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIG92ZXJyaWRlOworCisg
ICAgdm9pZCBicmluZ1RvRnJvbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlV2luZG93KCkg
b3ZlcnJpZGU7CisKKyAgICB2b2lkIHJlcXVlc3RTZXREb2NrU2lkZShEb2NrU2lkZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKSBvdmVycmlk
ZTsKKworICAgIHZvaWQgc2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7CisKKyAg
ICB2b2lkIG9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkgb3ZlcnJpZGU7CisKKyAgICBi
b29sIGNhblNhdmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmUoY29uc3QgV1RGOjpTdHJpbmcm
IHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9v
bCBmb3JjZVNhdmVBcykgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgV1RGOjpTdHJp
bmcmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQpIG92ZXJyaWRlOworCisgICAgdm9p
ZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworCisgICAgdm9p
ZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKworICAgIGJv
b2wgaXNVbmRlclRlc3QoKSBvdmVycmlkZSB7IHJldHVybiBtX3VuZGVyVGVzdDsgfQorCitwcml2
YXRlOgorICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvclVJKFdlYlBhZ2UqKTsKKworICAgIHZvaWQg
ZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgY29uc3QgU3RyaW5n
JiBhcmd1bWVudCA9IFN0cmluZygpKTsKKyAgICB2b2lkIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChj
b25zdCBTdHJpbmcmIGNvbW1hbmQsIGNvbnN0IEFTQ0lJTGl0ZXJhbCYgYXJndW1lbnQpIHsgZXZh
bHVhdGVDb21tYW5kT25Mb2FkKGNvbW1hbmQsIFN0cmluZyhhcmd1bWVudCkpOyB9CisgICAgdm9p
ZCBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBib29sIGFyZ3Vt
ZW50KTsKKyAgICB2b2lkIGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24pOworICAgIHZvaWQgZXZhbHVhdGVQZW5kaW5nRXhwcmVzc2lvbnMoKTsKKworICAg
IFdlYlBhZ2UqIG1fcGFnZTsKKworICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fYmFja2Vu
ZENvbm5lY3Rpb247CisgICAgdWludDY0X3QgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKKwor
ICAgIGJvb2wgbV91bmRlclRlc3Q7CisgICAgYm9vbCBtX2Zyb250ZW5kTG9hZGVkOworICAgIERl
cXVlPFN0cmluZz4gbV9xdWV1ZTsKKworICAgIFJlZlB0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZEhvc3Q+IG1fZnJvbnRlbmRIb3N0OworCisgICAgRG9ja1NpZGUgbV9kb2NrU2lkZTsKKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG11dGFibGUgU3RyaW5nIG1fbG9jYWxpemVkU3RyaW5n
c1VSTDsKKyAgICBtdXRhYmxlIGJvb2wgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMOworI2VuZGlm
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1IpCisKKyNlbmRpZiAvLyBXZWJJbnNwZWN0b3JVSV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCnNp
bWlsYXJpdHkgaW5kZXggNzclCmNvcHkgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCmNvcHkgdG8gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCmluZGV4IGMyM2I4NmYu
LjIzZWI1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMiwyOSArMjIsMjUgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiAKLW1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvciBMZWdhY3lSZWNlaXZlciB7Ci0gICAgU2hv
dygpCi0gICAgQ2xvc2UoKQorbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yVUkgeworICAgIEVzdGFi
bGlzaENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50
NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QpCisKICAgICBBdHRh
Y2hlZEJvdHRvbSgpCiAgICAgQXR0YWNoZWRSaWdodCgpCiAgICAgRGV0YWNoZWQoKQotICAgIERp
ZFNhdmUoU3RyaW5nIHVybCkKLSAgICBEaWRBcHBlbmQoU3RyaW5nIHVybCkKKwogICAgIFNob3dD
b25zb2xlKCkKICAgICBTaG93UmVzb3VyY2VzKCkKLSAgICBTaG93TWFpblJlc291cmNlRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCkKLSAgICBTdGFydEphdmFTY3JpcHREZWJ1Z2dpbmcoKQotICAg
IFN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCkKLSAgICBTdGFydEphdmFTY3JpcHRQcm9maWxpbmco
KQotICAgIFN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCkKKworICAgIFNob3dNYWluUmVzb3VyY2VG
b3JGcmFtZShTdHJpbmcgZnJhbWVJZGVudGlmaWVyKQorCiAgICAgU3RhcnRQYWdlUHJvZmlsaW5n
KCkKICAgICBTdG9wUGFnZVByb2ZpbGluZygpCiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZF
UikKLSAgICBEaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoU3RyaW5nIG1lc3NhZ2Up
Ci0gICAgUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKQotICAgIFJlbW90ZUZyb250ZW5kRGlzY29u
bmVjdGVkKCkKLSNlbmRpZgorICAgIERpZFNhdmUoU3RyaW5nIHVybCkKKyAgICBEaWRBcHBlbmQo
U3RyaW5nIHVybCkKKworICAgIFNlbmRNZXNzYWdlVG9Gcm9udGVuZChTdHJpbmcgbWVzc2FnZSkK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggMDA2NjBjMi4uNWUwNjA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtODAsNiArODAsOCBAQAogI2luY2x1ZGUgIldl
Ykluc3BlY3Rvci5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUg
IldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUkuaCIKKyNp
bmNsdWRlICJXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0
aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCIKICNp
bmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCkBAIC00NjEsNiArNDYzLDcgQEAg
V2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5z
cGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CisgICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOwogI2VuZGlmCiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKQEAgLTUyMiw2ICs1MjUsNyBAQCBXZWJQYWdl
Ojp+V2ViUGFnZSgpCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKICNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cGFnZUlEKTsKQEAgLTI4OTAsMTggKzI4OTQsMjYgQEAgdm9pZCBXZWJQYWdlOjpkaWRGbHVzaExh
eWVyVHJlZUF0VGltZShzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVzdGFtcCkKIH0KICNl
bmRpZgogCi0gICAgCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIFdlYkluc3BlY3RvciogV2ViUGFn
ZTo6aW5zcGVjdG9yKCkKIHsKICAgICBpZiAobV9pc0Nsb3NlZCkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghbV9pbnNwZWN0b3IpCi0gICAgICAg
IG1faW5zcGVjdG9yID0gV2ViSW5zcGVjdG9yOjpjcmVhdGUodGhpcywgbV9pbnNwZWN0b3JDbGll
bnQpOworICAgICAgICBtX2luc3BlY3RvciA9IFdlYkluc3BlY3Rvcjo6Y3JlYXRlKHRoaXMpOwog
ICAgIHJldHVybiBtX2luc3BlY3Rvci5nZXQoKTsKIH0KKworV2ViSW5zcGVjdG9yVUkqIFdlYlBh
Z2U6Omluc3BlY3RvclVJKCkKK3sKKyAgICBpZiAobV9pc0Nsb3NlZCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgaWYgKCFtX2luc3BlY3RvclVJKQorICAgICAgICBtX2luc3BlY3RvclVJ
ID0gV2ViSW5zcGVjdG9yVUk6OmNyZWF0ZSh0aGlzKTsKKyAgICByZXR1cm4gbV9pbnNwZWN0b3JV
SS5nZXQoKTsKK30KICNlbmRpZgotICAgIAorCiAjaWYgUExBVEZPUk0oSU9TKQogV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlciogV2ViUGFnZTo6dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpCiB7CkBA
IC0zNDk3LDExICszNTA5LDE3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAjZW5kaWYKLSAgICAKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAg
aWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yKiBp
bnNwZWN0b3IgPSB0aGlzLT5pbnNwZWN0b3IoKSkKLSAgICAgICAgICAgIGluc3BlY3Rvci0+ZGlk
UmVjZWl2ZVdlYkluc3BlY3Rvck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAg
ICAgICBpbnNwZWN0b3ItPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpID09IE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
KSB7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3JVSSogaW5zcGVjdG9yVUkgPSB0aGlzLT5pbnNw
ZWN0b3JVSSgpKQorICAgICAgICAgICAgaW5zcGVjdG9yVUktPmRpZFJlY2VpdmVNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBiYWJhNTA2Li5i
N2Q0NDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTE1Myw2ICsxNTMsNyBAQCBjbGFzcyBXZWJGdWxsU2NyZWVuTWFuYWdlcjsKIGNsYXNzIFdl
YkltYWdlOwogY2xhc3MgV2ViSW5zcGVjdG9yOwogY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50Owor
Y2xhc3MgV2ViSW5zcGVjdG9yVUk7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2Vi
TW91c2VFdmVudDsKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbkNsaWVudDsKQEAgLTIyNiw4ICsyMjcs
MTAgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBXZWJJbnNwZWN0b3Iq
IGluc3BlY3RvcigpOworICAgIFdlYkluc3BlY3RvclVJKiBpbnNwZWN0b3JVSSgpOworICAgIGJv
b2wgaXNJbnNwZWN0b3JQYWdlKCkgeyByZXR1cm4gISFtX2luc3BlY3RvclVJOyB9CiAjZW5kaWYK
LSAgICAKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
KiB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCk7CiAjZW5kaWYKQEAgLTExNTksNiArMTE2Miw3IEBA
IHByaXZhdGU6CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFJlZlB0cjxXZWJJbnNwZWN0
b3I+IG1faW5zcGVjdG9yOworICAgIFJlZlB0cjxXZWJJbnNwZWN0b3JVST4gbV9pbnNwZWN0b3JV
STsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcj4gbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3RvclVJTWFjLm1tCnNp
bWlsYXJpdHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yTWFjLm1tCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3RvclVJTWFjLm1tCmluZGV4IDc5NWY0NTYu
LjJiZTc2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViSW5zcGVjdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViSW5zcGVjdG9yVUlNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW1w
b3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldlYkluc3BlY3Rvci5oIgorI2ltcG9ydCAiV2ViSW5z
cGVjdG9yVUkuaCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTM0LDEyICszNCwxMiBA
QCBTT0ZUX0xJTktfU1RBR0VEX0ZSQU1FV09SSyhXZWJJbnNwZWN0b3JVSSwgUHJpdmF0ZUZyYW1l
d29ya3MsIEEpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIFdlYkluc3BlY3Rvcjo6Y2Fu
U2F2ZSgpIGNvbnN0Citib29sIFdlYkluc3BlY3RvclVJOjpjYW5TYXZlKCkKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFdlYkluc3BlY3Rvcjo6bG9jYWxpemVkU3RyaW5nc1VSTCgp
IGNvbnN0CitTdHJpbmcgV2ViSW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwoKQogewog
ICAgIGlmICghbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMKSB7CiAgICAgICAgIC8vIENhbGwgdGhl
IHNvZnQgbGluayBmcmFtZXdvcmsgZnVuY3Rpb24gdG8gZGxvcGVuIGl0LCB0aGVuIFtOU0J1bmRs
ZSBidW5kbGVXaXRoSWRlbnRpZmllcjpdIHdpbGwgd29yay4KQEAgLTUyLDYgKzUyLDcgQEAgU3Ry
aW5nIFdlYkluc3BlY3Rvcjo6bG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0CiAgICAgICAgICAg
ICBtX2xvY2FsaXplZFN0cmluZ3NVUkwgPSBTdHJpbmcoKTsKICAgICAgICAgbV9oYXNMb2NhbGl6
ZWRTdHJpbmdzVVJMID0gdHJ1ZTsKICAgICB9CisKICAgICByZXR1cm4gbV9sb2NhbGl6ZWRTdHJp
bmdzVVJMOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237798</attachid>
            <date>2014-09-08 11:32:47 -0700</date>
            <delta_ts>2014-09-08 12:31:38 -0700</delta_ts>
            <desc>WIP (almost final)</desc>
            <filename>WIP.patch</filename>
            <type>text/plain</type>
            <size>120918</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYTk5MTExNy4uZDY4M2JhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTc3NSw2ICs3NzUsNyBAQCBfX1pON1dlYkNvcmUxN1NRTGl0ZVRyYW5zYWN0aW9u
RDFFdgogX19aTjdXZWJDb3JlMTdTdWJyZXNvdXJjZUxvYWRlcjZjcmVhdGVFUE5TXzVGcmFtZUVQ
TlNfMTRDYWNoZWRSZXNvdXJjZUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMjFSZXNvdXJj
ZUxvYWRlck9wdGlvbnNFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18xN0pT
RE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9fWk43
V2ViQ29yZTE3ZW5jb2RlRm9yRmlsZU5hbWVFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUx
N2V4ZWNTdGF0ZUZyb21QYWdlRVJOU18xNURPTVdyYXBwZXJXb3JsZEVQTlNfNFBhZ2VFCiBfX1pO
N1dlYkNvcmUxN2xhbmd1YWdlRGlkQ2hhbmdlRXYKIF9fWk43V2ViQ29yZTE3b3BlblRlbXBvcmFy
eUZpbGVFUktOM1dURjZTdHJpbmdFUmkKIF9fWk43V2ViQ29yZTE3c1JHQkNvbG9yU3BhY2VSZWZF
dgpAQCAtNzk4LDYgKzc5OSw3IEBAIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkOGFk
ZFR5cGVzRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDCiBfX1pON1dlYkNv
cmUxOFBsYXRmb3JtUGFzdGVib2FyZDhnZXRUeXBlc0VSTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5n
RUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0
ZWJvYXJkOHNldFR5cGVzRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDcmFz
aE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkQzFFUktOM1dU
RjZTdHJpbmdFCitfX1pON1dlYkNvcmUxOFNjcmlwdEdsb2JhbE9iamVjdDNzZXRFUE4zSlNDOUV4
ZWNTdGF0ZUVQS2NQTlNfMjFJbnNwZWN0b3JGcm9udGVuZEhvc3RFCiBfX1pON1dlYkNvcmUxOFN0
eWxlU2hlZXRDb250ZW50czExcGFyc2VTdHJpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNv
cmUxOFN0eWxlU2hlZXRDb250ZW50c0MxRVBOU18xNVN0eWxlUnVsZUltcG9ydEVSS04zV1RGNlN0
cmluZ0VSS05TXzE2Q1NTUGFyc2VyQ29udGV4dEUKIF9fWk43V2ViQ29yZTE4U3R5bGVTaGVldENv
bnRlbnRzRDFFdgpAQCAtMTE5NSw2ICsxMTk3LDkgQEAgX19aTjdXZWJDb3JlNVJhbmdlOHNldFN0
YXJ0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFaVJpCiBfX1pON1dlYkNvcmU1UmFuZ2VE
MUV2CiBfX1pON1dlYkNvcmU2Q2hyb21lMTZzZXRTdGF0dXNiYXJUZXh0RVBOU181RnJhbWVFUktO
M1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU2Q2hyb21lNXByaW50RVBOU181RnJhbWVFCitfX1pO
SzdXZWJDb3JlNkNocm9tZTRzaG93RXYKK19fWk5LN1dlYkNvcmU2Q2hyb21lMTB3aW5kb3dSZWN0
RXYKK19fWk5LN1dlYkNvcmU2Q2hyb21lMTNzZXRXaW5kb3dSZWN0RVJLTlNfOUZsb2F0UmVjdEUK
IF9fWk43V2ViQ29yZTZFZGl0b3IxMGFwcGx5U3R5bGVFUE5TXzE1U3R5bGVQcm9wZXJ0aWVzRU5T
XzEwRWRpdEFjdGlvbkUKIF9fWk43V2ViQ29yZTZFZGl0b3IxMGZpbmRTdHJpbmdFUktOM1dURjZT
dHJpbmdFaAogX19aTjdXZWJDb3JlNkVkaXRvcjEwaW5zZXJ0VGV4dEVSS04zV1RGNlN0cmluZ0VQ
TlNfNUV2ZW50RQpAQCAtMzEyNiwxMyArMzEzMSwxNyBAQCBfX1pON1dlYkNvcmU1Q29sb3JDMUVS
S04zV1RGNlN0cmluZ0UKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogX19aTjdXZWJDb3JlMTRTY2hl
bWVSZWdpc3RyeTI3c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsRVJLTjNXVEY2U3RyaW5nRQog
X19aTjdXZWJDb3JlMTVJbnNwZWN0b3JDbGllbnQzMWRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVu
ZFBhZ2VFUE5TXzRQYWdlRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMThJbnNwZWN0b3JQ
YWdlQWdlbnQ3ZnJhbWVJZEVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250
cm9sbGVyMTVjb25uZWN0RnJvbnRlbmRFUE45SW5zcGVjdG9yMjRJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWxFCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOGRpc2Nvbm5lY3RGcm9u
dGVuZEVOOUluc3BlY3RvcjI1SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbkUKIF9fWk43V2ViQ29y
ZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4c2V0UHJvZmlsZXJFbmFibGVkRWIKIF9fWk43V2ViQ29y
ZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI1ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZEVSS04zV1RG
NlN0cmluZ0UKLV9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI2c2V0SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRFTlN0M19fMTEwdW5pcXVlX3B0cklOU18yM0luc3BlY3RvckZyb250ZW5k
Q2xpZW50RU5TMV8xNGRlZmF1bHRfZGVsZXRlSVMzX0VFRUUKK19fWk43V2ViQ29yZTE5SW5zcGVj
dG9yQ29udHJvbGxlcjI2c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFUE5TXzIzSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRFCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI0c2hvd0V2
CiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI1Y2xvc2VFdgorX19aTjdXZWJDb3Jl
MjFJbnNwZWN0b3JGcm9udGVuZEhvc3QxNmRpc2Nvbm5lY3RDbGllbnRFdgorX19aTjdXZWJDb3Jl
MjFJbnNwZWN0b3JGcm9udGVuZEhvc3RDMUVQTlNfMjNJbnNwZWN0b3JGcm9udGVuZENsaWVudEVQ
TlNfNFBhZ2VFCitfX1pON1dlYkNvcmUyMUluc3BlY3RvckZyb250ZW5kSG9zdEQxRXYKIF9fWk43
V2ViQ29yZTIyaW5zdHJ1bWVudGF0aW9uRm9yUGFnZUVQTlNfNFBhZ2VFCiBfX1pON1dlYkNvcmUy
NEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjE3c19mcm9udGVuZENvdW50ZXJFCiBfX1pON1dlYkNv
cmUyNEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjI2aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2VF
UE5TXzRQYWdlRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDNmOTYwMjMuLmVhYTE5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3NjEsNyArMTc2MSw3IEBA
CiAJCTRGMTUzNEUwMTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3JUeXBlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxNTM0REYxMUI1
MzMwMjAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvclR5cGVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEY0RjVGRkIxMUNCRDJFMTAwQTE4NkJG
IC8qIEluc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY0RjVGRkExMUNCRDJEMjAwQTE4NkJGIC8q
IEluc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwICovOyB9OwogCQk0RjZGREQ2NDEz
NDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNkZERDYyMTM0MURFREQwMDFGOEVFMyAv
KiBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwICovOyB9OwotCQk0RjZGREQ2NTEzNDFERUREMDAxRjhF
RTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0RjZGREQ2MzEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFn
ZUFnZW50LmggKi87IH07CisJCTRGNkZERDY1MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQ
YWdlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRGNkZERDYzMTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjcwN0E5OTExRUY2
Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNzA3QTk3MTFFRjY3OTQw
MEFDREE2OSAvKiBJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwICovOyB9OwogCQk0
RjcwN0E5QTExRUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjcwN0E5
ODExRUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEZCMzkwQUQx
NUVGNjFGMzAwN0FENTFGIC8qIEdlbmVyYXRlZEltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGQjM5MEFDMTVFRjYxRjMwMDdBRDUxRiAvKiBH
ZW5lcmF0ZWRJbWFnZS5jcHAgKi87IH07CkBAIC0yMzI0LDcgKzIzMjQsNyBAQAogCQk3OUYyRjVB
MTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUYyRjU5RTEwOTE5MzlBMDAwRDg3Q0Ig
LyogQ29tcG9zaXRpb25FdmVudC5jcHAgKi87IH07CiAJCTc5RjJGNUEyMTA5MTkzOUEwMDBEODdD
QiAvKiBDb21wb3NpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3OUYyRjU5RjEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVu
dC5oICovOyB9OwogCQk3QTBFNzcwRTEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBMEU3NzBCMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwICov
OyB9OwotCQk3QTBFNzcwRjEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzcw
QzEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggKi87IH07CisJCTdB
MEU3NzBGMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NzBDMTBDMDBBODgw
MEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QTBFNzcxRTEwQzAwREIxMDBBMDI3NkUgLyog
SlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0EwRTc3MUMxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNwcCAqLzsgfTsKIAkJN0EwRTc3MUYxMEMwMERCMTAwQTAyNzZFIC8qIEpT
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QTBFNzcxRDEwQzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaCAqLzsgfTsKIAkJN0ExRDdGQ0IxOEY4NUYwRjAwQzM4NUFEIC8qIG1lZGlhQ29u
dHJvbHNMb2NhbGl6ZWRTdHJpbmdzLmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTFEN0ZDOTE4Rjg1RjBGMDBDMzg1QUQgLyogbWVkaWFDb250cm9s
c0xvY2FsaXplZFN0cmluZ3MuanMgKi87IH07CkBAIC0yMzYyLDcgKzIzNjIsNyBAQAogCQk3QUIw
QjFDMTEyMTFBNjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FCMEIxQkYxMjExQTYyMjAw
QTc2OTQwIC8qIEluc3BlY3RvckRhdGFiYXNlQWdlbnQuaCAqLzsgfTsKIAkJN0FDRDg4RDMxNEMw
OEJENjAwODRFREQyIC8qIEluc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQ0Q4OEQxMTRDMDhCRDYwMDg0RURE
MiAvKiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgKi87IH07CiAJCTdBQ0Q4OEQ0MTRDMDhC
RDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FDRDg4RDIxNEMwOEJENjAwODRFREQyIC8q
IEluc3BlY3RvckluZGV4ZWREQkFnZW50LmggKi87IH07Ci0JCTdBREU3MjI2MTBDQkJCOUIwMDZC
M0IzQSAvKiBDb250ZXh0TWVudVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QURFNzIyNTEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1l
bnVQcm92aWRlci5oICovOyB9OworCQk3QURFNzIyNjEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4
dE1lbnVQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0FERTcyMjUxMENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QUY5QjIw
MjE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlCMUZDMThDRkIyREYwMEM2NEJFRiAvKiBWVFRS
ZWdpb24uY3BwICovOyB9OwogCQk3QUY5QjIwMzE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFG
RDE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uLmggKi87IH07CiAJCTdBRjlCMjA1MThDRkIy
REYwMEM2NEJFRiAvKiBWVFRSZWdpb25MaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlCMUZGMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdp
b25MaXN0LmNwcCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEdsb2JhbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
R2xvYmFsT2JqZWN0LmgKaW5kZXggOGFhMDU1Yi4uOTJiZjIwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAg
Y2xhc3MgU2NyaXB0R2xvYmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzZXQo
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRPYmplY3QmKTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHN0YXRpYyBib29sIHNldChK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIEluc3BlY3RvckZyb250ZW5kSG9zdCop
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IGNoYXIqIG5hbWUsIEluc3BlY3RvckZyb250ZW5kSG9zdCopOwogI2VuZGlmCiAKICAgICBz
dGF0aWMgYm9vbCBnZXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBEZXByZWNh
dGVkOjpTY3JpcHRPYmplY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5oCmluZGV4IDhhODJjYWIuLjdlMjZhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0U3RhdGUuaApAQCAtNTgsNyArNTgsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZShKU0M6OkV4ZWNTdGF0ZSopOwogSlND
OjpFeGVjU3RhdGUqIG1haW5Xb3JsZEV4ZWNTdGF0ZShGcmFtZSopOwogCiBKU0M6OkV4ZWNTdGF0
ZSogZXhlY1N0YXRlRnJvbU5vZGUoRE9NV3JhcHBlcldvcmxkJiwgTm9kZSopOwotSlNDOjpFeGVj
U3RhdGUqIGV4ZWNTdGF0ZUZyb21QYWdlKERPTVdyYXBwZXJXb3JsZCYsIFBhZ2UqKTsKK1dFQkNP
UkVfRVhQT1JUIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tUGFnZShET01XcmFwcGVyV29y
bGQmLCBQYWdlKik7CiBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNj
b3BlKFdvcmtlckdsb2JhbFNjb3BlKik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBj
N2M4Nzk1Li4yMDQyNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCkBAIC04Niw2ICs4Niw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6
Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0
b3JDCiAgICAgLCBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChudWxscHRyKQogICAgICwgbV9w
YWdlKHBhZ2UpCiAgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQpCisgICAg
LCBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50KG51bGxwdHIpCiAgICAgLCBtX2lzVW5kZXJUZXN0
KGZhbHNlKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgICwgbV9oYXNSZW1vdGVG
cm9udGVuZChmYWxzZSkKQEAgLTE4OCw5ICsxODksOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKQogICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbnVs
bHB0cjsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbnNwZWN0b3JGcm9udGVu
ZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IGluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbnNwZWN0b3JG
cm9udGVuZENsaWVudChJbnNwZWN0b3JGcm9udGVuZENsaWVudCogaW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQpCiB7Ci0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudCA9IFdURjo6bW92ZShpbnNw
ZWN0b3JGcm9udGVuZENsaWVudCk7CisgICAgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudCA9IGlu
c3BlY3RvckZyb250ZW5kQ2xpZW50OwogfQogCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhh
c0xvY2FsRnJvbnRlbmQoKSBjb25zdApAQCAtMjEzLDcgKzIxNCw3IEBAIGJvb2wgSW5zcGVjdG9y
Q29udHJvbGxlcjo6aGFzUmVtb3RlRnJvbnRlbmQoKSBjb25zdAogCiBib29sIEluc3BlY3RvckNv
bnRyb2xsZXI6Omhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudC5nZXQoKTsKKyAgICByZXR1cm4gbV9pbnNwZWN0
b3JGcm9udGVuZENsaWVudDsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDbGVh
cldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxk
KQpAQCAtMjgzLDggKzI4NCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygpCiAg
ICAgaWYgKG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKQogICAgICAgICBtX2luc3BlY3RvckNs
aWVudC0+YnJpbmdGcm9udGVuZFRvRnJvbnQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBtX2luc3BlY3RvckNsaWVudC0+
b3Blbkluc3BlY3RvckZyb250ZW5kKHRoaXMpOwotICAgICAgICBpZiAoZnJvbnRlbmRDaGFubmVs
KQorICAgICAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwg
PSBtX2luc3BlY3RvckNsaWVudC0+b3Blbkluc3BlY3RvckZyb250ZW5kKHRoaXMpKQogICAgICAg
ICAgICAgY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZmQ1NTky
NC4uMzBkM2NjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNob3coKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlKCk7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqKTsKICAgICBi
b29sIGhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkgY29uc3Q7CiAgICAgdm9pZCBkaWRDbGVh
cldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqLCBET01XcmFwcGVyV29ybGQmKTsKIApAQCAtMTIx
LDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZSgpOwogCiAgICAgSW5zcGVjdG9y
Q2xpZW50KiBpbnNwZWN0b3JDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckNsaWVu
dDsgfQotICAgIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlQWdlbnQ7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBh
Z2VBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUFnZW50OyB9CiAKICAgICB2aXJ0dWFsIGJv
b2wgZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRTY3JpcHRTdGF0ZShKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0
IG92ZXJyaWRlOwpAQCAtMTQ2LDEwICsxNDYsMTAgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiBtX3RpbWVsaW5lQWdlbnQ7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1faW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ7CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogICAgIFBhZ2UmIG1fcGFnZTsKICAgICBJbnNw
ZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OworICAgIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50OwogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9y
QWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBWZWN0b3I8SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llLCAyPiBtX2luamVjdGVkU2NyaXB0SW5zdHJ1bWVudGF0aW9uQ29va2llczsKICAg
ICBib29sIG1faXNVbmRlclRlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmgKaW5kZXggOGU4Y2Q4NS4uMWE3NGVkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaApAQCAtNTAsOCAr
NTAsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0KGNsaWVudCwgZnJvbnRlbmRQYWdlKSk7CiAgICAgfQogCi0gICAgfkluc3BlY3Rv
ckZyb250ZW5kSG9zdCgpOwotICAgIHZvaWQgZGlzY29ubmVjdENsaWVudCgpOworICAgIFdFQkNP
UkVfRVhQT1JUIH5JbnNwZWN0b3JGcm9udGVuZEhvc3QoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRpc2Nvbm5lY3RDbGllbnQoKTsKIAogICAgIHZvaWQgbG9hZGVkKCk7CiAgICAgdm9pZCBy
ZXF1ZXN0U2V0RG9ja1NpZGUoY29uc3QgU3RyaW5nJik7CkBAIC05NSw3ICs5NSw3IEBAIHByaXZh
dGU6CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgZnJpZW5kIGNsYXNzIEZyb250ZW5k
TWVudVByb3ZpZGVyOwogI2VuZGlmCi0gICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0KEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KiwgUGFnZSogZnJvbnRlbmRQYWdlKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBJbnNwZWN0b3JGcm9udGVuZEhvc3QoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqLCBQYWdlKiBm
cm9udGVuZFBhZ2UpOwogCiAgICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1fY2xpZW50Owog
ICAgIFBhZ2UqIG1fZnJvbnRlbmRQYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDExMDY3MGUuLjI1ZmUxZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTE1NSw3ICsxNTUsNyBA
QCBwdWJsaWM6CiAgICAgRnJhbWUqIG1haW5GcmFtZSgpOwogICAgIFN0cmluZyBjcmVhdGVJZGVu
dGlmaWVyKCk7CiAgICAgRnJhbWUqIGZyYW1lRm9ySWQoY29uc3QgU3RyaW5nJiBmcmFtZUlkKTsK
LSAgICBTdHJpbmcgZnJhbWVJZChGcmFtZSopOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBm
cmFtZUlkKEZyYW1lKik7CiAgICAgYm9vbCBoYXNJZEZvckZyYW1lKEZyYW1lKikgY29uc3Q7CiAg
ICAgU3RyaW5nIGxvYWRlcklkKERvY3VtZW50TG9hZGVyKik7CiAgICAgRnJhbWUqIGZpbmRGcmFt
ZVdpdGhTZWN1cml0eU9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpblJhd1N0cmluZyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuaAppbmRleCBmY2E3ZjkwLi4zZTRmNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAg
LTEwMiw4ICsxMDIsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQo
RnJhbWUqLCBjb25zdCBJbnRTaXplJikgY29uc3Q7CiAKLSAgICB2b2lkIHNldFdpbmRvd1JlY3Qo
Y29uc3QgRmxvYXRSZWN0JikgY29uc3Q7Ci0gICAgRmxvYXRSZWN0IHdpbmRvd1JlY3QoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0
JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IHdpbmRvd1JlY3QoKSBjb25z
dDsKIAogICAgIEZsb2F0UmVjdCBwYWdlUmVjdCgpIGNvbnN0OwogCkBAIC0xMTcsNyArMTE3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZm9jdXNlZEZyYW1lQ2hhbmdlZChGcmFtZSopIGNvbnN0Owog
CiAgICAgV0VCQ09SRV9FWFBPUlQgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJh
bWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYpIGNvbnN0OwotICAgIHZvaWQgc2hvdygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2hvdygpIGNvbnN0OwogCiAgICAgYm9vbCBjYW5SdW5Nb2RhbCgpIGNvbnN0OwogICAg
IGJvb2wgY2FuUnVuTW9kYWxOb3coKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCBhYzk2ZjU1Li5lNzE5MjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCkBAIC0xNDcxLDEyICsxNDcxLDEwIEBAIFBhc3NSZWZQdHI8RE9NV2luZG93PiBJbnRl
cm5hbHM6Om9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKGNvbnN0IFN0cmluZyYgdXJsKQogICAg
IFBhZ2UqIGZyb250ZW5kUGFnZSA9IG1fZnJvbnRlbmRXaW5kb3ctPmRvY3VtZW50KCktPnBhZ2Uo
KTsKICAgICBBU1NFUlQoZnJvbnRlbmRQYWdlKTsKIAotICAgIGF1dG8gZnJvbnRlbmRDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kQ2xpZW50RHVtbXk+KCZwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCksIGZyb250ZW5kUGFnZSk7Ci0KLSAgICBmcm9udGVuZFBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChXVEY6Om1v
dmUoZnJvbnRlbmRDbGllbnQpKTsKLQotICAgIG1fZnJvbnRlbmRDaGFubmVsID0gYWRvcHRQdHIo
bmV3IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbER1bW15KGZyb250ZW5kUGFnZSkpOworICAgIG1f
ZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kQ2xpZW50
RHVtbXk+KCZwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGZyb250ZW5kUGFnZSk7CisgICAg
ZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQobV9mcm9udGVuZENsaWVudC5nZXQoKSk7CiAKKyAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9
IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRHVtbXk+KGZyb250ZW5k
UGFnZSk7CiAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZCht
X2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSk7CiAKICAgICByZXR1cm4gbV9mcm9udGVuZFdpbmRvdzsK
QEAgLTE0OTAsMTAgKzE0ODgsMTEgQEAgdm9pZCBJbnRlcm5hbHM6OmNsb3NlRHVtbXlJbnNwZWN0
b3JGcm9udGVuZCgpCiAKICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVj
dEZyb250ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7
CiAKLSAgICBtX2Zyb250ZW5kQ2hhbm5lbC5yZWxlYXNlKCk7CisgICAgbV9mcm9udGVuZENsaWVu
dCA9IG51bGxwdHI7CisgICAgbV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOwogCiAgICAgbV9m
cm9udGVuZFdpbmRvdy0+Y2xvc2UobV9mcm9udGVuZFdpbmRvdy0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKLSAgICBtX2Zyb250ZW5kV2luZG93LnJlbGVhc2UoKTsKKyAgICBtX2Zyb250ZW5k
V2luZG93LmNsZWFyKCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRKYXZhU2NyaXB0UHJvZmls
aW5nRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKaW5kZXggM2ZmOWE3Zi4uNmNjN2QyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIERvY3VtZW50TWFya2VyOwogY2xh
c3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
RHVtbXk7CitjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudER1bW15OwogY2xhc3MgSW50ZXJu
YWxTZXR0aW5nczsKIGNsYXNzIE1hbGxvY1N0YXRpc3RpY3M7CiBjbGFzcyBNZW1vcnlJbmZvOwpA
QCAtMzUwLDcgKzM1MSw4IEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnRNYXJrZXIqIG1hcmtlckF0
KE5vZGUqLCBjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRp
b25Db2RlJik7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBSZWZQdHI8RE9NV2luZG93PiBt
X2Zyb250ZW5kV2luZG93OwotICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1t
eT4gbV9mcm9udGVuZENoYW5uZWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250
ZW5kQ2xpZW50RHVtbXk+IG1fZnJvbnRlbmRDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbER1bW15PiBtX2Zyb250ZW5kQ2hhbm5lbDsKICNlbmRpZgog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFz
ZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWlu
LmpzCmluZGV4IGY1NWFmNDcuLjA4OTg2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViSW5zcGVj
dG9yLlR5cGVJZGVudGlmaWVyQ29va2llS2V5ID0gInJlcHJlc2VudGVkLW9iamVjdC10eXBlIjsK
IAogV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKIHsKLSAgICAvLyBUZWxsIHRoZSBJ
bnNwZWN0b3JGcm9udGVuZEhvc3Qgd2UgbG9hZGVkIGZpcnN0IHRvIGVzdGFibGlzaCBjb21tdW5p
Y2F0aW9uIHdpdGggSW5zcGVjdG9yQmFja2VuZC4KKyAgICAvLyBUZWxsIHRoZSBJbnNwZWN0b3JG
cm9udGVuZEhvc3Qgd2UgbG9hZGVkLCB3aGljaCBjYXVzZXMgdGhlIHdpbmRvdyB0byBkaXNwbGF5
LgogICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5sb2FkZWQoKTsKIAogICAgIC8vIEluaXRpYWxp
emUgV2ViU29ja2V0IHRvIGNvbW11bmljYXRpb24KQEAgLTMyOCw5ICszMjgsNiBAQCBXZWJJbnNw
ZWN0b3IuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICBpZiAodGhpcy5fZGV0YWlsc1Np
ZGViYXJXaWR0aFNldHRpbmcudmFsdWUpCiAgICAgICAgIHRoaXMuZGV0YWlsc1NpZGViYXIud2lk
dGggPSB0aGlzLl9kZXRhaWxzU2lkZWJhcldpZHRoU2V0dGluZy52YWx1ZTsKIAotICAgIC8vIFVw
ZGF0ZSB0aGUgZG9ja2VkIHN0YXRlIGJhc2VkIG9uIHRoZSBxdWVyeSBzdHJpbmcgcGFzc2VkIHdo
ZW4gdGhlIFdlYiBJbnNwZWN0b3Igd2FzIGxvYWRlZC4KLSAgICB0aGlzLnVwZGF0ZURvY2tlZFN0
YXRlKHBhcnNlTG9jYXRpb25RdWVyeVBhcmFtZXRlcnMoKS5kb2NrU2lkZSB8fCAidW5kb2NrZWQi
KTsKLQogICAgIC8vIFRlbGwgdGhlIGZyb250ZW5kIEFQSSB3ZSBhcmUgbG9hZGVkIHNvIGFueSBw
ZW5kaW5nIGZyb250ZW5kIGNvbW1hbmRzIGNhbiBiZSBkaXNwYXRjaGVkLgogICAgIEluc3BlY3Rv
ckZyb250ZW5kQVBJLmxvYWRDb21wbGV0ZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JG
cm9udGVuZEFQSS5qcwppbmRleCAxMjI3MjExLi43YjhkZWIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQ
SS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9J
bnNwZWN0b3JGcm9udGVuZEFQSS5qcwpAQCAtMjUsMjggKzI1LDE2IEBACiAKIEluc3BlY3RvckZy
b250ZW5kQVBJID0gewogICAgIF9sb2FkZWQ6IGZhbHNlLAotCiAgICAgX3BlbmRpbmdDb21tYW5k
czogW10sCiAKICAgICBzYXZlZFVSTDogZnVuY3Rpb24odXJsKQogICAgIHsKLSAgICAgICAgLy8g
RklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgLy8gTm90IHVzZWQgeWV0LgogICAgIH0s
CiAKICAgICBhcHBlbmRlZFRvVVJMOiBmdW5jdGlvbih1cmwpCiAgICAgewotICAgICAgICAvLyBG
SVhNRTogTm90IGltcGxlbWVudGVkLgotICAgIH0sCi0KLSAgICBpc0RlYnVnZ2luZ0VuYWJsZWQ6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCi0gICAgc2V0RGVidWdnaW5nRW5hYmxlZDog
ZnVuY3Rpb24oZW5hYmxlZCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50
ZWQuCisgICAgICAgIC8vIE5vdCB1c2VkIHlldC4KICAgICB9LAogCiAgICAgaXNUaW1lbGluZVBy
b2ZpbGluZ0VuYWJsZWQ6IGZ1bmN0aW9uKCkKQEAgLTEwOCwxMSArOTYsNiBAQCBJbnNwZWN0b3JG
cm9udGVuZEFQSSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlU2lkZWJhclBhbmVs
LnNob3dTb3VyY2VDb2RlRm9yRnJhbWUoZnJhbWVJZGVudGlmaWVyLCB0cnVlKTsKICAgICB9LAog
Ci0gICAgc2V0RG9ja2luZ1VuYXZhaWxhYmxlOiBmdW5jdGlvbih1bmF2YWlsYWJsZSkKLSAgICB7
Ci0gICAgICAgIC8vIE5vdCB1c2VkLgotICAgIH0sCi0KICAgICBjb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZDogZnVuY3Rpb24oaWQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuY29udGV4dE1l
bnVJdGVtU2VsZWN0ZWQoaWQpOwpAQCAtMTQxLDYgKzEyNCwxMCBAQCBJbnNwZWN0b3JGcm9udGVu
ZEFQSSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHZhciBtZXRob2ROYW1lID0gc2lnbmF0dXJl
LnNoaWZ0KCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KEluc3BlY3RvckZyb250ZW5kQVBJW21l
dGhvZE5hbWVdLCAiVW5leHBlY3RlZCBJbnNwZWN0b3JGcm9udGVuZEFQSSBtZXRob2QgbmFtZTog
IiArIEluc3BlY3RvckZyb250ZW5kQVBJW21ldGhvZE5hbWVdKTsKKyAgICAgICAgaWYgKCFJbnNw
ZWN0b3JGcm9udGVuZEFQSVttZXRob2ROYW1lXSkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yRnJvbnRlbmRBUElbbWV0aG9kTmFtZV0uYXBwbHkoSW5zcGVj
dG9yRnJvbnRlbmRBUEksIHNpZ25hdHVyZSk7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA0ODU2
ODM2Li44OTg3N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAg
ICAgV2ViVmlldyAqbV93ZWJWaWV3OwogICAgIFJldGFpblB0cjxXZWJOb2RlSGlnaGxpZ2h0ZXI+
IG1faGlnaGxpZ2h0ZXI7CiAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7Ci0gICAg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1fZnJvbnRlbmRDbGllbnQ7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2Zyb250ZW5kQ2xpZW50Owog
fTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW0KaW5kZXggNmUxNzg5ZC4uODMwOGI5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpA
QCAtMTMzLDggKzEzMyw3IEBAIEBlbmQKIFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9y
Q2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICAgICAs
IG1faGlnaGxpZ2h0ZXIoYWRvcHROUyhbW1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5pdFdp
dGhJbnNwZWN0ZWRXZWJWaWV3OndlYlZpZXddKSkKLSAgICAsIG1fZnJvbnRlbmRQYWdlKDApCi0g
ICAgLCBtX2Zyb250ZW5kQ2xpZW50KDApCisgICAgLCBtX2Zyb250ZW5kUGFnZShudWxscHRyKQog
ewogfQogCkBAIC0xNTAsMTEgKzE0OSwxMyBAQCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdl
Ykluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbgogICAg
IFt3aW5kb3dDb250cm9sbGVyLmdldCgpIHNldEluc3BlY3RvckNsaWVudDp0aGlzXTsKIAogICAg
IG1fZnJvbnRlbmRQYWdlID0gY29yZShbd2luZG93Q29udHJvbGxlci5nZXQoKSB3ZWJWaWV3XSk7
Ci0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ+KG1fd2ViVmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVj
dG9yQ29udHJvbGxlciwgbV9mcm9udGVuZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7
Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5kQ2xpZW50LmdldCgpOwotICAgIFJldGFp
blB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZD4gd2ViSW5zcGVjdG9yRnJvbnRlbmQgPSBhZG9wdE5T
KFtbV2ViSW5zcGVjdG9yRnJvbnRlbmQgYWxsb2NdIGluaXRXaXRoRnJvbnRlbmRDbGllbnQ6ZnJv
bnRlbmRDbGllbnQuZ2V0KCldKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV93ZWJWaWV3LCB3aW5kb3dDb250cm9s
bGVyLmdldCgpLCBpbnNwZWN0b3JDb250cm9sbGVyLCBtX2Zyb250ZW5kUGFnZSwgY3JlYXRlRnJv
bnRlbmRTZXR0aW5ncygpKTsKKworICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZD4g
d2ViSW5zcGVjdG9yRnJvbnRlbmQgPSBhZG9wdE5TKFtbV2ViSW5zcGVjdG9yRnJvbnRlbmQgYWxs
b2NdIGluaXRXaXRoRnJvbnRlbmRDbGllbnQ6bV9mcm9udGVuZENsaWVudC5nZXQoKV0pOwogICAg
IFtbbV93ZWJWaWV3IGluc3BlY3Rvcl0gc2V0RnJvbnRlbmQ6d2ViSW5zcGVjdG9yRnJvbnRlbmQu
Z2V0KCldOwotICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7CisKKyAgICBt
X2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5k
Q2xpZW50KG1fZnJvbnRlbmRDbGllbnQuZ2V0KCkpOworCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAK
QEAgLTE5OSw4ICsyMDAsOCBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGlkU2V0U2VhcmNo
aW5nRm9yTm9kZShib29sIGVuYWJsZWQpCiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpyZWxl
YXNlRnJvbnRlbmQoKQogewotICAgIG1fZnJvbnRlbmRDbGllbnQgPSAwOwotICAgIG1fZnJvbnRl
bmRQYWdlID0gMDsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbnVsbHB0cjsKKyAgICBtX2Zyb250
ZW5kUGFnZSA9IG51bGxwdHI7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCA0ZjM5MjNk
Li5hZGUzZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtNTMwLDcgKzUzMCw2IEBAIHNldChX
ZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwCi0gICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNh
dGlvbkNsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNs
aWVudC5jcHAKQEAgLTU1Miw2ICs1NTEsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVyLmNwcAogICAgIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNw
cAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKICAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCiAgICAgV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91
cFByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNTkzODZjYi4uZDVk
N2NlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTIxLDYgKzEyMSw3IEBA
IE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFdlYkljb25EYXRhYmFzZVByb3h5IFwKICAgICBX
ZWJJbnNwZWN0b3IgXAogICAgIFdlYkluc3BlY3RvclByb3h5IFwKKyAgICBXZWJJbnNwZWN0b3JV
SSBcCiAgICAgV2ViTWVkaWFDYWNoZU1hbmFnZXIgXAogICAgIFdlYk1lZGlhQ2FjaGVNYW5hZ2Vy
UHJveHkgXAogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQppbmRleCAwNTEyNzliLi5lOGIyZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtMTkyLDcgKzE5Miw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL2F0ay9XZWJQYWdlQWNjZXNzaWJpbGl0eU9iamVjdEF0ay5jcHAKIAot
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9yRWZsLmNwcAorICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9yVUlFZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcAogCiAgICAgV2ViUHJvY2Vzcy9lZmwvU2VjY29tcEZp
bHRlcnNXZWJQcm9jZXNzRWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA3MmRh
N2JiLi4wMzhjOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMzAyLDcgKzMwMiw3
IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUHJp
bnRlckxpc3RHdGsuY3BwCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JH
dGsuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAK
ICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCiAgICAgV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SU9iamVjdC5oCmluZGV4IDZkZjQ5MTguLjkyMmU2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2Jq
ZWN0LmgKQEAgLTE0Myw2ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEJ1bmRsZUZyYW1lLAog
ICAgICAgICBCdW5kbGVIaXRUZXN0UmVzdWx0LAogICAgICAgICBCdW5kbGVJbnNwZWN0b3IsCisg
ICAgICAgIEJ1bmRsZUluc3BlY3RvclVJLAogICAgICAgICBCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
LAogICAgICAgICBCdW5kbGVOb2RlSGFuZGxlLAogICAgICAgICBCdW5kbGVQYWdlLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAKaW5kZXggMTZlODQ1
Yi4uZDg1ZjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
SW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNw
ZWN0b3IuY3BwCkBAIC0xNzQsNDQgKzE3NCw2IEBAIHZvaWQgV0tJbnNwZWN0b3JEZXRhY2goV0tJ
bnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQogI2VuZGlmCiB9CiAKLWJvb2wgV0tJbnNwZWN0b3JJ
c0RlYnVnZ2luZ0phdmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQotewotI2lm
IEVOQUJMRShJTlNQRUNUT1IpCi0gICAgcmV0dXJuIHRvSW1wbChpbnNwZWN0b3JSZWYpLT5pc0Rl
YnVnZ2luZ0phdmFTY3JpcHQoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGluc3BlY3RvclJl
Zik7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLXZvaWQgV0tJbnNwZWN0b3JUb2dn
bGVKYXZhU2NyaXB0RGVidWdnaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKLXsKLSNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHRvSW1wbChpbnNwZWN0b3JSZWYpLT50b2dnbGVKYXZh
U2NyaXB0RGVidWdnaW5nKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0b3JSZWYp
OwotI2VuZGlmCi19Ci0KLWJvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ0phdmFTY3JpcHQoV0tJ
bnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQotewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAg
cmV0dXJuIHRvSW1wbChpbnNwZWN0b3JSZWYpLT5pc1Byb2ZpbGluZ0phdmFTY3JpcHQoKTsKLSNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKGluc3BlY3RvclJlZik7Ci0gICAgcmV0dXJuIGZhbHNlOwot
I2VuZGlmCi19Ci0KLXZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKFdL
SW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAg
IHRvSW1wbChpbnNwZWN0b3JSZWYpLT50b2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKCk7Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0b3JSZWYpOwotI2VuZGlmCi19Ci0KIGJvb2wgV0tJ
bnNwZWN0b3JJc1Byb2ZpbGluZ1BhZ2UoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQogewog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0luc3BlY3Rvci5oCmluZGV4IGJhNzY0ODkuLjE0NjU0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oCkBAIC01OCwxMiArNTgsNiBAQCBXS19FWFBP
UlQgYm9vbCBXS0luc3BlY3RvcklzQXR0YWNoZWQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsK
IFdLX0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9yQXR0YWNoKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rv
cik7CiBXS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvckRldGFjaChXS0luc3BlY3RvclJlZiBpbnNw
ZWN0b3IpOwogCi1XS19FWFBPUlQgYm9vbCBXS0luc3BlY3RvcklzRGVidWdnaW5nSmF2YVNjcmlw
dChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwotV0tfRVhQT1JUIHZvaWQgV0tJbnNwZWN0b3JU
b2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7Ci0KLVdL
X0VYUE9SVCBib29sIFdLSW5zcGVjdG9ySXNQcm9maWxpbmdKYXZhU2NyaXB0KFdLSW5zcGVjdG9y
UmVmIGluc3BlY3Rvcik7Ci1XS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvclRvZ2dsZUphdmFTY3Jp
cHRQcm9maWxpbmcoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKLQogV0tfRVhQT1JUIGJvb2wg
V0tJbnNwZWN0b3JJc1Byb2ZpbGluZ1BhZ2UoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKIFdL
X0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9yVG9nZ2xlUGFnZVByb2ZpbGluZyhXS0luc3BlY3RvclJl
ZiBpbnNwZWN0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
SW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5LmNwcAppbmRleCBiZTM3NzA0Li5mOGI4NDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNCw3ICszNCw3IEBACiAj
aW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSU1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKQEAgLTEwNSwxMSArMTA1LDEyIEBAIHBy
aXZhdGU6CiAgICAgICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IFdlYlBhZ2VH
cm91cDo6Y3JlYXRlKFN0cmluZzo6Zm9ybWF0KCJfX1dlYkluc3BlY3RvclBhZ2VHcm91cExldmVs
JXVfXyIsIGxldmVsKSwgZmFsc2UsIGZhbHNlKTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICAgICAg
Ly8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVn
IGJ1aWxkcy4KKyAgICAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIg
SW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgogICAg
ICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0
cnVlKTsKICAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnNldExvZ3NQYWdlTWVzc2Fn
ZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkKHRydWUpOwogI2VuZGlmCiAKKyAgICAgICAgcGFnZUdy
b3VwLT5wcmVmZXJlbmNlcygpLnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyh0cnVlKTsK
ICAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnNldEFwcGxpY2F0aW9uQ2hyb21lTW9k
ZUVuYWJsZWQodHJ1ZSk7CiAKICAgICAgICAgcmV0dXJuIHBhZ2VHcm91cC5yZWxlYXNlKCk7CkBA
IC0xMjQsMTMgKzEyNSwxMiBAQCBwcml2YXRlOgogCiBXZWJJbnNwZWN0b3JQcm94eTo6V2ViSW5z
cGVjdG9yUHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2UpCisgICAg
LCBtX2luc3BlY3RvclBhZ2UobnVsbHB0cikKICAgICAsIG1faXNWaXNpYmxlKGZhbHNlKQogICAg
ICwgbV9pc0F0dGFjaGVkKGZhbHNlKQotICAgICwgbV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQoZmFs
c2UpCi0gICAgLCBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdChmYWxzZSkKKyAgICAsIG1fY2FuQXR0
YWNoKGZhbHNlKQogICAgICwgbV9pc1Byb2ZpbGluZ1BhZ2UoZmFsc2UpCiAgICAgLCBtX3Nob3dN
ZXNzYWdlU2VudChmYWxzZSkKLSAgICAsIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UoZmFsc2UpCiAg
ICAgLCBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250KGZhbHNlKQogICAgICwgbV9hdHRhY2htZW50
U2lkZShBdHRhY2htZW50U2lkZUJvdHRvbSkKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KEVGTCkKQEAgLTE4OCw2ICsxODgsOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpjb25uZWN0
KCkKICAgICBtX3Nob3dNZXNzYWdlU2VudCA9IHRydWU7CiAgICAgbV9pZ25vcmVGaXJzdEJyaW5n
VG9Gcm9udCA9IHRydWU7CiAKKyAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOworCiAg
ICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93KCks
IG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCkBAIC0yMzIsNiArMjM0LDggQEAgdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6c2hvd0NvbnNvbGUoKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1
cm47CiAKKyAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOworCiAgICAgbV9wYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93Q29uc29sZSgpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKIH0KIApAQCAtMjQwLDYgKzI0NCw4IEBAIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnNob3dSZXNvdXJjZXMoKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47
CiAKKyAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOworCiAgICAgbV9wYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93UmVzb3VyY2VzKCksIG1fcGFn
ZS0+cGFnZUlEKCkpOwogfQogCkBAIC0yNDgsNiArMjU0LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lKQogICAg
IGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKKyAgICBlYWdlcmx5Q3JlYXRlSW5zcGVj
dG9yUGFnZSgpOworCiAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yOjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIG1fcGFn
ZS0+cGFnZUlEKCkpOwogfQogCkBAIC0yNzQsMTMgKzI4MiwxNSBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjphdHRhY2goQXR0YWNobWVudFNpZGUgc2lkZSkKICAgICBpZiAobV9pc1Zpc2libGUp
CiAgICAgICAgIGluc3BlY3RvclBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLnNldEluc3BlY3Rv
clN0YXJ0c0F0dGFjaGVkKHRydWUpOwogCisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0cnVlKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisKICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKICAgICBjYXNlIEF0dGFjaG1lbnRT
aWRlQm90dG9tOgotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OkF0dGFjaGVkQm90dG9tKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBt
X2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6
QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAgICAgICAgIGJy
ZWFrOwogCiAgICAgY2FzZSBBdHRhY2htZW50U2lkZVJpZ2h0OgotICAgICAgICBtX3BhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVkUmlnaHQoKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCksIG1faW5zcGVjdG9yUGFn
ZS0+cGFnZUlEKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTI5Nyw3ICszMDcsOCBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkZXRhY2goKQogICAgIGlmIChtX2lzVmlzaWJsZSkK
ICAgICAgICAgaW5zcGVjdG9yUGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9y
U3RhcnRzQXR0YWNoZWQoZmFsc2UpOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpEZXRhY2hlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVk
KGZhbHNlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFjaGVkKCksIG1faW5zcGVjdG9y
UGFnZS0+cGFnZUlEKCkpOwogCiAgICAgcGxhdGZvcm1EZXRhY2goKTsKIH0KQEAgLTMxNCwzNCAr
MzI1LDYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1
bnNpZ25lZCB3aWR0aCkKICAgICBwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgod2lkdGgp
OwogfQogCi12b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVKYXZhU2NyaXB0RGVidWdnaW5n
KCkKLXsKLSAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1faXNE
ZWJ1Z2dpbmdKYXZhU2NyaXB0KQotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3I6OlN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCksIG1fcGFnZS0+cGFn
ZUlEKCkpOwotICAgIGVsc2UKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpTdGFydEphdmFTY3JpcHREZWJ1Z2dpbmcoKSwgbV9wYWdlLT5wYWdl
SUQoKSk7Ci0KLSAgICAvLyBGSVhNRTogaGF2ZSB0aGUgV2ViUHJvY2VzcyBub3RpZnkgdXMgb24g
c3RhdGUgY2hhbmdlcy4KLSAgICBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdCA9ICFtX2lzRGVidWdn
aW5nSmF2YVNjcmlwdDsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlSmF2YVNj
cmlwdFByb2ZpbGluZygpCi17Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdCkKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wSmF2YVNjcmlwdFByb2ZpbGluZygp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRKYXZhU2NyaXB0UHJvZmlsaW5nKCks
IG1fcGFnZS0+cGFnZUlEKCkpOwotCi0gICAgLy8gRklYTUU6IGhhdmUgdGhlIFdlYlByb2Nlc3Mg
bm90aWZ5IHVzIG9uIHN0YXRlIGNoYW5nZXMuCi0gICAgbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQg
PSAhbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQ7Ci19Ci0KIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OnRvZ2dsZVBhZ2VQcm9maWxpbmcoKQogewogICAgIGlmICghbV9wYWdlKQpAQCAtNDI2LDI5ICs0
MDksMjAgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0
ZWQoKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3Rl
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZy
b250ZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3Nh
Z2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KICNlbmRpZgogCi0vLyBDYWxsZWQgYnkgV2ViSW5z
cGVjdG9yUHJveHkgbWVzc2FnZXMKLXZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3Bl
Y3RvclBhZ2UodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMpCit2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpl
YWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpCiB7Ci0gICAgaW5zcGVjdG9yUGFnZUlEID0gMDsK
LQotICAgIGlmICghbV9wYWdlKQorICAgIGlmIChtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1faXNBdHRhY2hlZCA9IHNob3VsZE9wZW5BdHRhY2hlZCgpOwotICAgIG1f
YXR0YWNobWVudFNpZGUgPSBzdGF0aWNfY2FzdDxBdHRhY2htZW50U2lkZT4oaW5zcGVjdG9yUGFn
ZUdyb3VwKCktPnByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0YWNobWVudFNpZGUoKSk7Ci0KLSAg
ICBXZWJQYWdlUHJveHkqIGluc3BlY3RvclBhZ2UgPSBwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBh
Z2UoKTsKLSAgICBBU1NFUlQoaW5zcGVjdG9yUGFnZSk7Ci0gICAgaWYgKCFpbnNwZWN0b3JQYWdl
KQorICAgIG1faW5zcGVjdG9yUGFnZSA9IHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpOwor
ICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOworICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpbnNwZWN0b3JQYWdlSUQgPSBpbnNwZWN0b3JQYWdlLT5w
YWdlSUQoKTsKLSAgICBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycyA9IGluc3BlY3RvclBhZ2UtPmNy
ZWF0aW9uUGFyYW1ldGVycygpOwotCiAgICAgV0tQYWdlUG9saWN5Q2xpZW50VjEgcG9saWN5Q2xp
ZW50ID0gewogICAgICAgICB7IDEsIHRoaXMgfSwKICAgICAgICAgMCwgLyogZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwICovCkBAIC00NTksNjkg
KzQzMyw2NSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKHVp
bnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcgogICAgICAgICAwLCAvKiBkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZSAqLwogICAgIH07CiAKLSAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xp
ZW50KHRvQVBJKGluc3BlY3RvclBhZ2UpLCAmcG9saWN5Q2xpZW50LmJhc2UpOworICAgIFdLUGFn
ZVNldFBhZ2VQb2xpY3lDbGllbnQodG9BUEkobV9pbnNwZWN0b3JQYWdlKSwgJnBvbGljeUNsaWVu
dC5iYXNlKTsKKworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVSTCgpKTsKK30KKworLy8g
Q2FsbGVkIGJ5IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2VzCit2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRp
ZmllciwgYm9vbCBjYW5BdHRhY2gpCit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisKKyAgICBBU1NFUlQobV9p
bnNwZWN0b3JQYWdlKTsKKyAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkKKyAgICAgICAgcmV0dXJu
OwogCi0gICAgU3RyaW5nQnVpbGRlciB1cmw7CisgICAgbV9jYW5BdHRhY2ggPSBjYW5BdHRhY2g7
CisgICAgbV9pc0F0dGFjaGVkID0gc2hvdWxkT3BlbkF0dGFjaGVkKCk7CisgICAgbV9hdHRhY2ht
ZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0dGFjaG1lbnRTaWRlPihpbnNwZWN0b3JQYWdlR3JvdXAo
KS0+cHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2htZW50U2lkZSgpKTsKIAotICAgIHVybC5h
cHBlbmQoaW5zcGVjdG9yUGFnZVVSTCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihjb25u
ZWN0aW9uSWRlbnRpZmllciwgbV9wYWdlLT5wYWdlSUQoKSwgZmFsc2UpLCBtX2luc3BlY3RvclBh
Z2UtPnBhZ2VJRCgpKTsKIAotICAgIHVybC5hcHBlbmRMaXRlcmFsKCI/ZG9ja1NpZGU9Iik7Cisg
ICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRh
Y2hlZChtX2lzQXR0YWNoZWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIGlmIChtX2lzQXR0
YWNoZWQpIHsKICAgICAgICAgc3dpdGNoIChtX2F0dGFjaG1lbnRTaWRlKSB7CiAgICAgICAgIGNh
c2UgQXR0YWNobWVudFNpZGVCb3R0b206Ci0gICAgICAgICAgICB1cmwuYXBwZW5kTGl0ZXJhbCgi
Ym90dG9tIik7Ci0gICAgICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3I6OkF0dGFjaGVkQm90dG9tKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAg
ICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUk6OkF0dGFjaGVkQm90dG9tKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogICAg
ICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZVJpZ2h0OgotICAg
ICAgICAgICAgdXJsLmFwcGVuZExpdGVyYWwoInJpZ2h0Iik7Ci0gICAgICAgICAgICBtX3BhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVkUmlnaHQoKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3Bl
Y3RvclBhZ2UtPnBhZ2VJRCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
fSBlbHNlCi0gICAgICAgIHVybC5hcHBlbmRMaXRlcmFsKCJ1bmRvY2tlZCIpOwotCi0gICAgbV9w
YWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChpbnNwZWN0b3JCYXNlVVJM
KCkpOwotCi0gICAgaW5zcGVjdG9yUGFnZS0+bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCB1cmwudG9T
dHJpbmcoKSkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQo
KSk7CiAKLSAgICBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlID0gdHJ1ZTsKKyAgICBtX2luc3BlY3Rv
clBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgaW5zcGVjdG9yUGFnZVVSTCgpKSk7CiB9CiAK
LXZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KHVpbnQ2
NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIGluc3BlY3Rv
clBhZ2VQYXJhbWV0ZXJzKQordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9y
UGFnZUZvclRlc3QoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQogewotICAg
IGluc3BlY3RvclBhZ2VJRCA9IDA7Ci0KICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9pc0F0dGFjaGVkID0gZmFsc2U7CisgICAgZWFnZXJseUNyZWF0ZUluc3BlY3Rv
clBhZ2UoKTsKIAotICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSA9IHBsYXRmb3JtQ3Jl
YXRlSW5zcGVjdG9yUGFnZSgpOwotICAgIEFTU0VSVChpbnNwZWN0b3JQYWdlKTsKLSAgICBpZiAo
IWluc3BlY3RvclBhZ2UpCisgICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgaWYgKCFt
X2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluc3BlY3RvclBhZ2VJRCA9
IGluc3BlY3RvclBhZ2UtPnBhZ2VJRCgpOwotICAgIGluc3BlY3RvclBhZ2VQYXJhbWV0ZXJzID0g
aW5zcGVjdG9yUGFnZS0+Y3JlYXRpb25QYXJhbWV0ZXJzKCk7Ci0KLSAgICBXS1BhZ2VQb2xpY3lD
bGllbnRWMSBwb2xpY3lDbGllbnQgPSB7Ci0gICAgICAgIHsgMSwgdGhpcyB9LAotICAgICAgICAw
LCAvKiBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjAgKi8KLSAgICAgICAgMCwgLyogZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uICovCi0g
ICAgICAgIDAsIC8qIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlX2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjAgKi8KLSAgICAgICAgMCwgLyogdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kgKi8KLSAgICAgICAg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiwKLSAgICAgICAgMCwgLyogZGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UgKi8KLSAgICB9OwotCi0gICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVu
dCh0b0FQSShpbnNwZWN0b3JQYWdlKSwgJnBvbGljeUNsaWVudC5iYXNlKTsKLQotICAgIG1fcGFn
ZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVSTCgp
KTsKKyAgICBtX2lzQXR0YWNoZWQgPSBmYWxzZTsKKyAgICBtX2NhbkF0dGFjaCA9IGZhbHNlOwog
Ci0gICAgaW5zcGVjdG9yUGFnZS0+bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCBpbnNwZWN0b3JUZXN0
UGFnZVVSTCgpKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OkVzdGFibGlzaENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZp
ZXIsIG1fcGFnZS0+cGFnZUlEKCksIHRydWUpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsK
IAotICAgIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UgPSB0cnVlOworICAgIG1faW5zcGVjdG9yUGFn
ZS0+bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCBpbnNwZWN0b3JUZXN0UGFnZVVSTCgpKSk7CiB9CiAK
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Om9wZW4oKQpAQCAtNTMzLDIwICs1MDMsMjEgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbigpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRp
ZENsb3NlKCkKIHsKLSAgICBpZiAoIW1fY3JlYXRlZEluc3BlY3RvclBhZ2UpCisgICAgaWYgKCFt
X2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNw
ZWN0b3JQYWdlID0gbnVsbHB0cjsKKwogICAgIG1faXNWaXNpYmxlID0gZmFsc2U7Ci0gICAgbV9p
c0RlYnVnZ2luZ0phdmFTY3JpcHQgPSBmYWxzZTsKLSAgICBtX2lzUHJvZmlsaW5nSmF2YVNjcmlw
dCA9IGZhbHNlOwogICAgIG1faXNQcm9maWxpbmdQYWdlID0gZmFsc2U7Ci0gICAgbV9jcmVhdGVk
SW5zcGVjdG9yUGFnZSA9IGZhbHNlOwogICAgIG1fc2hvd01lc3NhZ2VTZW50ID0gZmFsc2U7CiAg
ICAgbV9pZ25vcmVGaXJzdEJyaW5nVG9Gcm9udCA9IGZhbHNlOwogCiAgICAgaWYgKG1faXNBdHRh
Y2hlZCkKICAgICAgICAgcGxhdGZvcm1EZXRhY2goKTsKICAgICBtX2lzQXR0YWNoZWQgPSBmYWxz
ZTsKKyAgICBtX2NhbkF0dGFjaCA9IGZhbHNlOwogCiAgICAgcGxhdGZvcm1EaWRDbG9zZSgpOwog
fQpAQCAtNTY5LDkgKzU0MCwxNSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpicmluZ1RvRnJv
bnQoKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2Vk
KGJvb2wgYXZhaWxhYmxlKQogeworICAgIG1fY2FuQXR0YWNoID0gYXZhaWxhYmxlOworCiAgICAg
cGxhdGZvcm1BdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGF2YWlsYWJsZSk7CiB9CiAKK3ZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybFN0cmluZykK
K3sKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25z
dCBTdHJpbmcmIHVybFN0cmluZykKIHsKICAgICBwbGF0Zm9ybUluc3BlY3RlZFVSTENoYW5nZWQo
dXJsU3RyaW5nKTsKQEAgLTU4NywyOCArNTY0LDYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkKICAg
ICBwbGF0Zm9ybUFwcGVuZChmaWxlbmFtZSwgY29udGVudCk7CiB9CiAKLWJvb2wgV2ViSW5zcGVj
dG9yUHJveHk6OmNhbkF0dGFjaCgpCi17Ci0gICAgLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjYW5BdHRhY2hXaW5kb3cuIFRoZXJlIGFyZSB0
d28gaW1wbGVtZW50YXRpb25zCi0gICAgLy8gdG8gbWFrZSBsaWZlIGVhc2llciBpbiB0aGUgbXVs
dGktcHJvY2VzcyB3b3JsZCB3ZSBoYXZlLiBXZWJJbnNwZWN0b3JQcm94eSB1c2VzIGNhbkF0dGFj
aCB0byBkZWNpZGUgaWYKLSAgICAvLyB3ZSBjYW4gYXR0YWNoIG9uIG9wZW4gKG9uIHRoZSBVSSBw
cm9jZXNzIHNpZGUpLiBBbmQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2FuQXR0YWNo
V2luZG93IGlzCi0gICAgLy8gdXNlZCB0byBkZWNpZGUgaWYgd2UgY2FuIGF0dGFjaCB3aGVuIHRo
ZSBhdHRhY2ggYnV0dG9uIGlzIHByZXNzZWQgKG9uIHRoZSBXZWJQcm9jZXNzIHNpZGUpLgotCi0g
ICAgLy8gSWYgd2UgYXJlIGFscmVhZHkgYXR0YWNoZWQsIGFsbG93IGF0dGFjaGluZyBhZ2FpbiB0
byBhbGxvdyBzd2l0Y2hpbmcgc2lkZXMuCi0gICAgaWYgKG1faXNBdHRhY2hlZCkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICAvLyBEb24ndCBhbGxvdyBhdHRhY2hpbmcgdG8gYW5vdGhlciBp
bnNwZWN0b3IgLS0gdHdvIGluc3BlY3RvcnMgaW4gb25lIHdpbmRvdyBpcyB0b28gbXVjaCEKLSAg
ICBpZiAobV9sZXZlbCA+IDEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIERvbid0
IGFsbG93IHRoZSBhdHRhY2ggaWYgdGhlIHdpbmRvdyB3b3VsZCBiZSB0b28gc21hbGwgdG8gYWNj
b21tb2RhdGUgdGhlIG1pbmltdW0gaW5zcGVjdG9yIGhlaWdodC4KLSAgICB1bnNpZ25lZCBpbnNw
ZWN0ZWRQYWdlSGVpZ2h0ID0gcGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dIZWlnaHQoKTsKLSAgICB1
bnNpZ25lZCBpbnNwZWN0ZWRQYWdlV2lkdGggPSBwbGF0Zm9ybUluc3BlY3RlZFdpbmRvd1dpZHRo
KCk7Ci0gICAgdW5zaWduZWQgbWF4aW11bUF0dGFjaGVkSGVpZ2h0ID0gaW5zcGVjdGVkUGFnZUhl
aWdodCAqIDMgLyA0OwotICAgIHJldHVybiBtaW5pbXVtQXR0YWNoZWRIZWlnaHQgPD0gbWF4aW11
bUF0dGFjaGVkSGVpZ2h0ICYmIG1pbmltdW1BdHRhY2hlZFdpZHRoIDw9IGluc3BlY3RlZFBhZ2VX
aWR0aDsKLX0KLQogYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvdWxkT3BlbkF0dGFjaGVkKCkK
IHsKICAgICByZXR1cm4gaW5zcGVjdG9yUGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkuaW5zcGVj
dG9yU3RhcnRzQXR0YWNoZWQoKSAmJiBjYW5BdHRhY2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKaW5kZXggMTdhNzQ5OC4uMzdkMGZkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxp
dHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMCw2
ICszMCw3IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBA
IC02Miw3ICs2Myw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViRnJhbWVQcm94eTsK
IGNsYXNzIFdlYlBhZ2VHcm91cDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKLXN0cnVjdCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOwogCiBlbnVtIEF0dGFjaG1lbnRTaWRlIHsKICAgICBBdHRhY2ht
ZW50U2lkZUJvdHRvbSwKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIC8vIFB1YmxpYyBB
UElzCiAgICAgV2ViUGFnZVByb3h5KiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CiAK
LSAgICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGVkSW5zcGVjdG9y
UGFnZTsgfQorICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiAhIW1faW5zcGVj
dG9yUGFnZTsgfQogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Zpc2li
bGU7IH0KICAgICBib29sIGlzRnJvbnQoKTsKIApAQCAtMTIzLDEyICsxMjMsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKTsKICAgICB2b2lkIHNl
dFRvb2xiYXJIZWlnaHQodW5zaWduZWQgaGVpZ2h0KSB7IHBsYXRmb3JtU2V0VG9vbGJhckhlaWdo
dChoZWlnaHQpOyB9CiAKLSAgICBib29sIGlzRGVidWdnaW5nSmF2YVNjcmlwdCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0OyB9Ci0gICAgdm9pZCB0b2dnbGVKYXZhU2Ny
aXB0RGVidWdnaW5nKCk7Ci0KLSAgICBib29sIGlzUHJvZmlsaW5nSmF2YVNjcmlwdCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNQcm9maWxpbmdKYXZhU2NyaXB0OyB9Ci0gICAgdm9pZCB0b2dnbGVKYXZh
U2NyaXB0UHJvZmlsaW5nKCk7Ci0KICAgICBib29sIGlzUHJvZmlsaW5nUGFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNQcm9maWxpbmdQYWdlOyB9CiAgICAgdm9pZCB0b2dnbGVQYWdlUHJvZmlsaW5n
KCk7CiAKQEAgLTE1MCw5ICsxNDQsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkqKTsKIAorICAgIHZvaWQgZWFnZXJseUNy
ZWF0ZUluc3BlY3RvclBhZ2UoKTsKKwogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVz
c2FnZURlY29kZXImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIFdlYlBhZ2VQcm94
eSogcGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCk7CiAgICAgdm9pZCBwbGF0Zm9ybU9wZW4o
KTsKQEAgLTE3MywxMSArMTY4LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUFwcGVu
ZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwogCiAgICAg
Ly8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2VzCi0gICAgdm9pZCBjcmVhdGVJ
bnNwZWN0b3JQYWdlKHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmKTsKLSAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KHVpbnQ2NF90
JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAgICB2b2lk
IGNyZWF0ZUluc3BlY3RvclBhZ2UoSVBDOjpBdHRhY2htZW50LCBib29sIGNhbkF0dGFjaCk7Cisg
ICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdChJUEM6OkF0dGFjaG1lbnQpOwogICAg
IHZvaWQgZGlkQ2xvc2UoKTsKICAgICB2b2lkIGJyaW5nVG9Gcm9udCgpOwogICAgIHZvaWQgYXR0
YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29sKTsKKyAgICB2b2lkIG9wZW5Jbk5ld1RhYihjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJik7
CiAKICAgICB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpOwpAQCAtMTg3LDcg
KzE4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICNlbmRpZgogCi0gICAgYm9vbCBjYW5BdHRhY2goKTsK
KyAgICBib29sIGNhbkF0dGFjaCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuQXR0YWNoOyB9CiAgICAg
Ym9vbCBzaG91bGRPcGVuQXR0YWNoZWQoKTsKIAogICAgIHZvaWQgb3BlbigpOwpAQCAtMjA5LDE0
ICsyMDUsMTMgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bUF0
dGFjaGVkSGVpZ2h0OwogCiAgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7CisgICAgV2ViUGFnZVBy
b3h5KiBtX2luc3BlY3RvclBhZ2U7CiAKICAgICBib29sIG1faXNWaXNpYmxlOwogICAgIGJvb2wg
bV9pc0F0dGFjaGVkOwotICAgIGJvb2wgbV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQ7Ci0gICAgYm9v
bCBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdDsKKyAgICBib29sIG1fY2FuQXR0YWNoOwogICAgIGJv
b2wgbV9pc1Byb2ZpbGluZ1BhZ2U7CiAgICAgYm9vbCBtX3Nob3dNZXNzYWdlU2VudDsKLSAgICBi
b29sIG1fY3JlYXRlZEluc3BlY3RvclBhZ2U7CiAgICAgYm9vbCBtX2lnbm9yZUZpcnN0QnJpbmdU
b0Zyb250OwogCiAgICAgLy8gVGhlIGRlYnVnZ2VyIHN0b3BzIGFsbCB0aGUgcGFnZXMgaW4gdGhl
IHNhbWUgUGFnZUdyb3VwLiBIYXZpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlNmM5NDRkLi4zNzVkZjU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yMywxMCArMjMsMTIgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiBtZXNzYWdl
cyAtPiBXZWJJbnNwZWN0b3JQcm94eSB7Ci0gICAgQ3JlYXRlSW5zcGVjdG9yUGFnZSgpIC0+ICh1
aW50NjRfdCBpbnNwZWN0b3JQYWdlSUQsIFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycykKLSAgICBDcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVz
dCgpIC0+ICh1aW50NjRfdCBpbnNwZWN0b3JQYWdlSUQsIFdlYktpdDo6V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycykKKyAgICBDcmVhdGVJbnNwZWN0b3JQ
YWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBjYW5BdHRhY2gp
CisgICAgQ3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rp
b25JZGVudGlmaWVyKQorCiAgICAgRGlkQ2xvc2UoKQogICAgIEJyaW5nVG9Gcm9udCgpCisKICAg
ICBJbnNwZWN0ZWRVUkxDaGFuZ2VkKFN0cmluZyB1cmxTdHJpbmcpCiAKICAgICBTYXZlKFN0cmlu
ZyBmaWxlbmFtZSwgU3RyaW5nIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3Jj
ZVNhdmVBcykKQEAgLTM1LDYgKzM3LDcgQEAgbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yUHJveHkg
ewogICAgIEF0dGFjaEJvdHRvbSgpCiAgICAgQXR0YWNoUmlnaHQoKQogICAgIERldGFjaCgpCisK
ICAgICBBdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wgYXZhaWxhYmxlKQogCiAgICAgU2V0
QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KaW5kZXggYzZjNjY4
Yy4uZDU2ZTdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJ
bnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
Ykluc3BlY3RvclByb3h5TWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJXS1VSTENGLmgi
CiAjaW1wb3J0ICJXS1ZpZXdQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJJbnNwZWN0b3JNZXNzYWdl
cy5oIgorI2ltcG9ydCAiV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUGFn
ZUdyb3VwLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByZWZlcmVu
Y2VzLmgiCkBAIC00MTgsNyArNDE5LDcgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKICAgICAgICAgICAgIGluaXRpYWxSZWN0
ID0gW05TV2luZG93IGNvbnRlbnRSZWN0Rm9yRnJhbWVSZWN0OndpbmRvd0ZyYW1lIHN0eWxlTWFz
azp3aW5kb3dTdHlsZU1hc2tdOwogICAgIH0KIAotICAgIG1faW5zcGVjdG9yVmlldyA9IGFkb3B0
TlMoW1tXS1dlYkluc3BlY3RvcldLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTppbml0aWFsUmVj
dCBjb250ZXh0UmVmOnRvQVBJKCZwYWdlKCktPnByb2Nlc3MoKS5jb250ZXh0KCkpIHBhZ2VHcm91
cFJlZjp0b0FQSShpbnNwZWN0b3JQYWdlR3JvdXAoKSkgcmVsYXRlZFRvUGFnZTp0b0FQSShtX3Bh
Z2UpXSk7CisgICAgbV9pbnNwZWN0b3JWaWV3ID0gYWRvcHROUyhbW1dLV2ViSW5zcGVjdG9yV0tW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmluaXRpYWxSZWN0IGNvbnRleHRSZWY6dG9BUEkoJnBh
Z2UoKS0+cHJvY2VzcygpLmNvbnRleHQoKSkgcGFnZUdyb3VwUmVmOnRvQVBJKGluc3BlY3RvclBh
Z2VHcm91cCgpKSByZWxhdGVkVG9QYWdlOm51bGxwdHJdKTsKICAgICBBU1NFUlQobV9pbnNwZWN0
b3JWaWV3KTsKIAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gMTA5MApA
QCAtNTg5LDcgKzU5MCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjCiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2Fs
bHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOwogCi0gICAg
ICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGlkU2F2
ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAg
ICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
STo6RGlkU2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVjdG9yUGFnZS0+
cGFnZUlEKCkpOwogICAgIH07CiAKICAgICBpZiAoIWZvcmNlU2F2ZURpYWxvZykgewpAQCAtNjIz
LDcgKzYyNCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmCiAgICAgW2hhbmRsZSB3cml0ZURh
dGE6W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKICAg
ICBbaGFuZGxlIGNsb3NlRmlsZV07CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3I6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0
cmluZ10pLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6d2luZG93RnJhbWVEaWRDaGFuZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM5MGQ3NzUuLmYxYzg1YmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQ5NSwxMCArNDk1LDEwIEBACiAJCTFBRkU0MzY1MThCNkMwODEwMDlDN0E0OCAvKiBVSURl
bGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUFGRTQzNjMxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUubW0gKi87IH07CiAJCTFBRkU0
MzY2MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUZFNDM2NDE4QjZDMDgxMDA5QzdBNDggLyogVUlE
ZWxlZ2F0ZS5oICovOyB9OwogCQkxQUZGNDkwMDE4MzNERTc4MDA5QUIxNUEgLyogV0tEZXByZWNh
dGVkRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBRkY0OEZFMTgzM0RFNzgwMDlBQjE1QSAvKiBXS0RlcHJlY2F0ZWRGdW5jdGlvbnMu
Y3BwICovOyB9OworCQkxQzg5MUQ2NTE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4OTFE
NjIxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmNwcCAqLzsgfTsKKwkJMUM4OTFE
NjYxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzg5MUQ2MzE5QjEyNEZGMDBCQTc5REQgLyog
V2ViSW5zcGVjdG9yVUkuaCAqLzsgfTsKIAkJMUM4QUU3NjExOTkyRjYzQTAwQUJGNkVDIC8qIERv
Y2tCb3R0b21MZWdhY3kucGRmIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQzhBRTc1RjE5OTJGNjJGMDBBQkY2RUMgLyogRG9ja0JvdHRvbUxlZ2FjeS5w
ZGYgKi87IH07CiAJCTFDOEFFNzYyMTk5MkY2M0MwMEFCRjZFQyAvKiBEb2NrUmlnaHRMZWdhY3ku
cGRmIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhB
RTc2MDE5OTJGNjJGMDBBQkY2RUMgLyogRG9ja1JpZ2h0TGVnYWN5LnBkZiAqLzsgfTsKLQkJMUM4
RTI1QTgxMjcwRTNCQjAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyNTZCMTI3
MERFMzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAgKi87IH07Ci0J
CTFDOEUyNUE5MTI3MEUzQkMwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI1NkEx
MjcwREUzODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggKi87IH07CiAJ
CTFDOEUyODIwMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyODFFMTI3NUQxNTQwMEJDN0JE
MCAvKiBXZWJJbnNwZWN0b3IuaCAqLzsgfTsKIAkJMUM4RTI4MjExMjc1RDE1NDAwQkM3QkQwIC8q
IFdlYkluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzhFMjgxRjEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmNwcCAqLzsg
fTsKIAkJMUM4RTI4MzQxMjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjgzMjEyNzVE
NzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHkuaCAqLzsgfTsKQEAgLTUxMCw4ICs1MTAs
MTAgQEAKIAkJMUNBOEI5MzYxMjdDNzc0RTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBOEI5
MzUxMjdDNzc0RTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWFjLm1tICovOyB9OwogCQkx
Q0E4Qjk0NTEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNB
OEI5NDMxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLzsgfTsKIAkJMUNBOEI5NDYxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclBy
b3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2Vz
LmggKi87IH07Ci0JCTFDQThCOTU0MTI3Qzg5MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMkRB
RDEyNzhDNUIyMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWFjLm1tICovOyB9OworCQkxQ0E4Qjk1
NDEyN0M4OTE1MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yVUlNYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yVUlNYWMubW0gKi87IH07CiAJCTFDQjc1Qzk0MTcwMUU4ODAwMDlGODA5
RiAvKiBEb2NrUmlnaHQucGRmIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQ0I3NUM5MzE3MDFFODgwMDA5RjgwOUYgLyogRG9ja1JpZ2h0LnBkZiAqLzsg
fTsKKwkJMUNCQkU0QTAxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDQkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CisJCTFDQkJFNEExMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oICov
OyB9OwogCQkxQ0JDOTQ1RTE2NTE1RUQyMDBENjhBQUUgLyogRG9ja0JvdHRvbS5wZGYgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQkM5NDVEMTY1MTVF
RDIwMEQ2OEFBRSAvKiBEb2NrQm90dG9tLnBkZiAqLzsgfTsKIAkJMUYzMzVCQzAxODVCODRGMDAw
MUEyMDFBIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUYzMzVCQkYxODVCODREODAwMUEyMDFB
IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFGNjA0QkE4MTg4OUZBNzQwMEVFMDM5NSAv
KiBXS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxRjYwNEJBNjE4ODlGQTc0MDBFRTAzOTUgLyogV0tSZW5kZXJp
bmdQcm9ncmVzc0V2ZW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0yNDc2LDEwICsyNDc4LDExIEBACiAJCTFBRkY0OEZFMTgzM0RFNzgwMDlB
QjE1QSAvKiBXS0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUJCNDE3QzkxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29t
cGxldGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0Q2hl
Y2tlckNvbXBsZXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzc3QzE5
NTEyODhBODcyMDA2QTc0MkYgLyogV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDODkxRDYyMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNw
ZWN0b3JVSS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNw
ZWN0b3JVSS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDODkxRDYzMTlCMTI0
RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJJbnNwZWN0b3JVSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
Qzg5MUQ2NDE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEFFNzVGMTk5MkY2MkYwMEFCRjZFQyAvKiBEb2NrQm90
dG9tTGVnYWN5LnBkZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IGltYWdlLnBkZjsgbmFtZSA9IERvY2tCb3R0b21MZWdhY3kucGRmOyBwYXRoID0gUmVz
b3VyY2VzL0RvY2tCb3R0b21MZWdhY3kucGRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQzhBRTc2MDE5OTJGNjJGMDBBQkY2RUMgLyogRG9ja1JpZ2h0TGVnYWN5LnBkZiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBkZjsgbmFt
ZSA9IERvY2tSaWdodExlZ2FjeS5wZGY7IHBhdGggPSBSZXNvdXJjZXMvRG9ja1JpZ2h0TGVnYWN5
LnBkZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4RTI1NkExMjcwREUzODAwQkM3
QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTFDOEUyNTZCMTI3MERFMzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDOEUyODFFMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDOEUyODFGMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RTI4MzIxMjc1RDczODAwQkM3QkQwIC8q
IFdlYkluc3BlY3RvclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
Ykluc3BlY3RvclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDg5LDEx
ICsyNDkyLDEzIEBACiAJCTFDOEUyQTFDMTI3NzgzM0YwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3Iu
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViSW5zcGVjdG9yLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzhFMkEzMTEyNzc4NTI0MDBCQzdC
RDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEUyQTMyMTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJ
bnNwZWN0b3JNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJ
bnNwZWN0b3JNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzhFMkRB
RDEyNzhDNUIyMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9y
VUlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNw
ZWN0b3JVSU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBOEI5MzUxMjdD
Nzc0RTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yUHJveHlNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQThCOTQzMTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNw
ZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNw
ZWN0b3JQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
Ykluc3BlY3RvclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUNCNzVDOTMxNzAxRTg4MDAwOUY4MDlGIC8qIERvY2tSaWdodC5wZGYgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7IG5hbWUgPSBEb2Nr
UmlnaHQucGRmOyBwYXRoID0gUmVzb3VyY2VzL0RvY2tSaWdodC5wZGY7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDQkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFDQkJFNDlGMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclVJTWVz
c2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCQzk0NUQxNjUxNUVEMjAw
RDY4QUFFIC8qIERvY2tCb3R0b20ucGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBuYW1lID0gRG9ja0JvdHRvbS5wZGY7IHBhdGgg
PSBSZXNvdXJjZXMvRG9ja0JvdHRvbS5wZGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDQzQxN0M5MTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dENoZWNrZXJDb21wbGV0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFGMDE4MTY5MTg1OERDMTUwMEY5Mjg4NCAvKiBX
S1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNTY2Myw4ICs1NjY4LDYgQEAKIAkJCQlCQzFCRTFERTEyRDU0QTQxMDAwNEEyMjggLyogV2Vi
R2VvbG9jYXRpb25DbGllbnQuaCAqLywKIAkJCQlCQzExMUE1OTExMkY0RkJCMDAzMzdCQUIgLyog
V2ViSW5zcGVjdG9yQ2xpZW50LmNwcCAqLywKIAkJCQlCQzAzMkQ2RDEwRjQzNzhEMDA1OEMxNUEg
LyogV2ViSW5zcGVjdG9yQ2xpZW50LmggKi8sCi0JCQkJMUM4RTI1NkIxMjcwREUzODAwQkM3QkQw
IC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCAqLywKLQkJCQkxQzhFMjU2QTEyNzBE
RTM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLywKIAkJCQkzMTA5
OTk3MTE0NkM3NTlCMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCAqLywKIAkJ
CQkzMTA5OTk2ODE0NkM3MUY1MDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggKi8s
CiAJCQkJNTEyMTI3QzExOTA4MjM5QTAwREFGMzVDIC8qIFdlYlBhc3RlYm9hcmRPdmVycmlkZXMu
Y3BwICovLApAQCAtNTcyNCw2ICs1NzI3LDkgQEAKIAkJCQkxQzhFMjgxRjEyNzVEMTU0MDBCQzdC
RDAgLyogV2ViSW5zcGVjdG9yLmNwcCAqLywKIAkJCQkxQzhFMjgxRTEyNzVEMTU0MDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yLmggKi8sCiAJCQkJMUM4RTJBMUMxMjc3ODMzRjAwQkM3QkQwIC8qIFdl
Ykluc3BlY3Rvci5tZXNzYWdlcy5pbiAqLywKKwkJCQkxQzg5MUQ2MjE5QjEyNEZGMDBCQTc5REQg
LyogV2ViSW5zcGVjdG9yVUkuY3BwICovLAorCQkJCTFDODkxRDYzMTlCMTI0RkYwMEJBNzlERCAv
KiBXZWJJbnNwZWN0b3JVSS5oICovLAorCQkJCTFDODkxRDY0MTlCMTI0RkYwMEJBNzlERCAvKiBX
ZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbiAqLywKIAkJCQlCQzg1N0Y4NDEyQjgyRDBCMDBFREVC
MkUgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwICovLAogCQkJCUJDODU3RjgzMTJC
ODJEMEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oICovLAogCQkJCUJD
OTYzRDZBMTEzREQxOTIwMDU3NEJFMiAvKiBXZWJQYWdlLmNwcCAqLywKQEAgLTY0NzIsNyArNjQ3
OCw3IEBACiAJCQkJNTE5MkQ1NzUxOTYxRkQwMzAwQ0QxOUFBIC8qIFNlcnZpY2VzT3ZlcmxheUNv
bnRyb2xsZXIubW0gKi8sCiAJCQkJMUFBRjI2MzcxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggKi8sCiAJCQkJMUFBRjI2MzYxNDY4N0MzOTAwNEExRThB
IC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tICovLAotCQkJCTFDOEUyREFEMTI3
OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNYWMubW0gKi8sCisJCQkJMUM4RTJEQUQxMjc4
QzVCMjAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclVJTWFjLm1tICovLAogCQkJCUJDOTYzRDZEMTEz
REQxQTUwMDU3NEJFMiAvKiBXZWJQYWdlTWFjLm1tICovLAogCQkJCTI5Q0Q1NUE4MTI4RTI5NEYw
MDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oICovLAogCQkJCTI5
Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFz
ZS5tbSAqLywKQEAgLTY4MjgsNiArNjgzNCw4IEBACiAJCQkJMUM4RTJBMzIxMjc3ODUyNDAwQkM3
QkQwIC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VzLmggKi8sCiAJCQkJMUNBOEI5NDMxMjdDODgyQTAw
NTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkx
Q0E4Qjk0NDEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oICov
LAorCQkJCTFDQkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8sCisJCQkJMUNCQkU0OUYxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3Bl
Y3RvclVJTWVzc2FnZXMuaCAqLywKIAkJCQkzM0QzQTNDNDEzMzk2MTc5MDA3MDlCRTQgLyogV2Vi
TWVkaWFDYWNoZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTMzRDNBM0M1MTMz
OTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlck1lc3NhZ2VzLmggKi8sCiAJCQkJ
MzNEM0EzQzYxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwICovLApAQCAtNzQ0MCw2ICs3NDQ4LDcgQEAKIAkJCQkyREFDRTY0RTE4
QURCRkYwMDBFNENBNzYgLyogX1dLVGh1bWJuYWlsVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTU3OEI4MzEyMDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRjZBMjVGREQxMkFEQzZDQzAwREM0MENDIC8qIFdlYkRhdGFiYXNlTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMUM4OTFENjYxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3Bl
Y3RvclVJLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNjJBNzZCNzEyQjFCMjVGMDAwNUYxQjYgLyog
V2ViRGF0YWJhc2VNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2MkE3NjVE
MTJCMUFCQzMwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkQ2QUI1NDExOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGlj
YXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDk2LDcgKzc1MDUsNiBAQAogCQkJCTFDOEUyODIw
MTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
M0NDMTY3MTg5MDZBQ0YwMDFFNkVEOCAvKiBXS1dlYlZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMDMyRDgyMTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTFDOEUyNUE5MTI3MEUzQkMwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4RTJBMzYxMjc3ODUyNDAwQkM3QkQw
IC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzhFMjgzNDEy
NzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFDQThCOTQ2MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTc3NjQsNiArNzc3Miw3IEBACiAJCQkJRjYzNDQ0NUQxMkE4ODVF
OTAwMDYxMkQ4IC8qIFdLU2VjdXJpdHlPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUYw
OEI4MTkyNjlFNkQwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2MDQxMjRGRjAyNzAwNjhGMjBBIC8qIFdLU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQ0JCRTRBMTE5QjY2QzUzMDA2
QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZD
QjRFNEMxOEJCRTA0NDAwMEZDRkM5IC8qIFdLQ29udGVudFZpZXcuaCBpbiBIZWFkZXJzICovLAog
CQkJCTM3QTY0RTU3MThGMzhGNDYwMEVCMzBGMSAvKiBfV0tGb3JtSW5wdXRTZXNzaW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxRjYwNEJBQTE4ODlGQkI4MDBFRTAzOTUgLyogV0tSZW5kZXJpbmdQ
cm9ncmVzc0V2ZW50c0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTg4ODIsNiArODg5MSw3
IEBACiAJCQkJMDBCOTY2MTkxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQubW0gaW4gU291
cmNlcyAqLywKIAkJCQkxQUU1QjdGQjExRTdBRUQyMDBCQTY3NjcgLyogTmV0c2NhcGVQbHVnaW5N
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzM2MUQ3MjE5MjdGQTM2MDAzNkE1OUQgLyogV2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUM4OTFENjUxOUIx
MjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
NEE5QzU1MTJCODE2Q0YwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQTRBOUM5QTEyQjgyMUNEMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5N
b2R1bGVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUE1ODg5MzExRUU3MDQwMDA2MUI4ODIg
LyogTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04OTIwLDYgKzg5
MzAsNyBAQAogCQkJCTFBMkQ4NDM5MTI3RjY1RDUwMDFFQjk2MiAvKiBOUE9iamVjdE1lc3NhZ2VS
ZWNlaXZlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUFGMDhBRDE5
MjY5MzY3MDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBMkQ4MkE2MTI3RjRFQUIwMDFFQjk2MiAvKiBOUE9iamVjdFByb3h5LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTFDQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0
b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJEODJBODEyN0Y0
RUFCMDAxRUI5NjIgLyogTlBSZW1vdGVPYmplY3RNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUEyMTYxQjExMUYzNzY2NDAwOEFEMEY1IC8qIE5QUnVudGltZU9iamVjdE1hcC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQTIxNjJCMDExRjM4OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRpbGl0
aWVzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTE3OSw4ICs5MTkwLDcgQEAKIAkJCQlCQ0NGNkFC
QzEyQzkxRUY5MDA4RjlDMzUgLyogV2ViSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4
RTI4MjExMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzExMUE2MDExMkY0RkJCMDAzMzdCQUIgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTFDOEUyNUE4MTI3MEUzQkIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxQ0E4Qjk1NDEyN0M4OTE1
MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUNBOEI5
NTQxMjdDODkxNTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclVJTWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUM4RTJBMzUxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzhFMjgzNTEyNzVENzM4MDBCQzdCRDAgLyog
V2ViSW5zcGVjdG9yUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBOEI5MzYxMjdDNzc0
RTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggNTAxZDQxYy4uODJhZTRhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODQsMjAgKzg0LDI0IEBAIHZvaWQgV2ViSW5zcGVjdG9y
Q2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQoKQogCiBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCiB7Ci0gICAgV2ViUGFnZSogaW5zcGVjdG9yUGFn
ZSA9IGNvbnRyb2xsZXItPmlzVW5kZXJUZXN0KCkgPyBtX3BhZ2UtPmluc3BlY3RvcigpLT5jcmVh
dGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgpIDogbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y3JlYXRlSW5z
cGVjdG9yUGFnZSgpOwotICAgIEFTU0VSVF9VTlVTRUQoaW5zcGVjdG9yUGFnZSwgaW5zcGVjdG9y
UGFnZSk7Ci0gICAgcmV0dXJuIHRoaXM7CisgICAgaWYgKGNvbnRyb2xsZXItPmlzVW5kZXJUZXN0
KCkpCisgICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmNyZWF0ZUluc3BlY3RvclBhZ2VGb3JU
ZXN0KCk7CisgICAgZWxzZQorICAgICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5jcmVhdGVJbnNw
ZWN0b3JQYWdlKCk7CisKKyAgICByZXR1cm4gbV9wYWdlLT5pbnNwZWN0b3IoKTsKIH0KIAogdm9p
ZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQogewogICAgIGlm
IChtX3BhZ2UtPmluc3BlY3RvcigpKQotICAgICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5kaWRD
bG9zZSgpOworICAgICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5jbG9zZUZyb250ZW5kKCk7CiB9
CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpicmluZ0Zyb250ZW5kVG9Gcm9udCgpCiB7Ci0g
ICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YnJpbmdUb0Zyb250KCk7CisgICAgaWYgKG1fcGFnZS0+
aW5zcGVjdG9yKCkpCisgICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmJyaW5nVG9Gcm9udCgp
OwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGlkUmVzaXplTWFpbkZyYW1lKEZyYW1l
KikKQEAgLTE5NywzNCArMjAxLDYgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNl
YXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKQogfQogI2VuZGlmCiAKLWJvb2wgV2ViSW5zcGVj
dG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQot
ewotICAgIFdlYkluc3BlY3RvciogaW5zcGVjdG9yID0gbV9wYWdlLT5pbnNwZWN0b3IoKTsKLSAg
ICBpZiAoIWluc3BlY3RvcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0jaWYgRU5BQkxFKElO
U1BFQ1RPUl9TRVJWRVIpCi0gICAgaWYgKGluc3BlY3Rvci0+aGFzUmVtb3RlRnJvbnRlbmRDb25u
ZWN0ZWQoKSkgewotICAgICAgICBpbnNwZWN0b3ItPnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVu
ZChtZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBX
ZWJQYWdlKiBpbnNwZWN0b3JQYWdlID0gaW5zcGVjdG9yLT5pbnNwZWN0b3JQYWdlKCk7Ci0gICAg
aWYgKGluc3BlY3RvclBhZ2UpCi0gICAgICAgIHJldHVybiBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJv
bnRlbmRQYWdlKGluc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCksIG1lc3NhZ2UpOwotCi0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6c3VwcG9ydHNGcmFtZUlu
c3RydW1lbnRhdGlvbigpCi17Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIHJl
dHVybiB0cnVlOwotI2VuZGlmCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIFdlYkluc3Bl
Y3RvckNsaWVudDo6cGFnZU92ZXJsYXlEZXN0cm95ZWQoUGFnZU92ZXJsYXkqKQogewogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNzAzM2JkZS4uNzk4Y2FjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5oCkBAIC00NSwyMiArNDUsMjMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBXZWJQYWdlOwogY2xhc3MgUmVwYWludEluZGljYXRvckxheWVyQ2xpZW50OwogCi1jbGFz
cyBXZWJJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBw
dWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLCBwcml2YXRlIFBhZ2VPdmVy
bGF5OjpDbGllbnQgeworY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6
Okluc3BlY3RvckNsaWVudCwgcHJpdmF0ZSBQYWdlT3ZlcmxheTo6Q2xpZW50IHsKIGZyaWVuZCBj
bGFzcyBSZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ7CiBwdWJsaWM6CiAgICAgV2ViSW5zcGVj
dG9yQ2xpZW50KFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFsIH5XZWJJbnNwZWN0b3JDbGllbnQoKTsK
IAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgb3ZlcnJp
ZGU7CisgICAgLy8gV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50CisgICAgdm9pZCBpbnNwZWN0b3JE
ZXN0cm95ZWQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciop
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlc2l6ZU1haW5GcmFtZShXZWJDb3JlOjpGcmFtZSopIG92
ZXJyaWRlOworICAgIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3Bl
Y3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGJyaW5n
RnJvbnRlbmRUb0Zyb250KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZXNpemVNYWluRnJhbWUo
V2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgaGlnaGxpZ2h0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBoaWRlSGlnaGxpZ2h0KCkg
b3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCB2b2lkIHNob3dJbnNw
ZWN0b3JJbmRpY2F0aW9uKCkgb3ZlcnJpZGU7CkBAIC03MiwxMCArNzMsNiBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCBvdmVycmlkZXNTaG93UGFpbnRSZWN0cygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BhaW50UmVjdChjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVz
c2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNGcmFtZUluc3RydW1lbnRhdGlvbigpOwotCiAgICAgLy8gUGFnZU92ZXJsYXk6
OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBwYWdlT3ZlcmxheURlc3Ryb3llZChQYWdlT3Zlcmxh
eSopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvV2ViUGFnZShQYWdlT3Zl
cmxheSosIFdlYlBhZ2UqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0M2RhZTEuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudC5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLQotI2luY2x1ZGUg
IldlYkluc3BlY3Rvci5oIgotI2luY2x1ZGUgIldlYlBhZ2UuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L0luc3BlY3RvckNvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNs
dWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50KFdlYlBhZ2UqIHBhZ2UsIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UpCi0gICAgOiBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZwYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250
cm9sbGVyKCksIGluc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCksIHN0ZDo6bWFrZV91bmlxdWU8U2V0
dGluZ3M+KCkpCi0gICAgLCBtX3BhZ2UocGFnZSkKLXsKLX0KLQotU3RyaW5nIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50Ojpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkKLXsKLSAgICByZXR1cm4gbV9w
YWdlLT5pbnNwZWN0b3IoKS0+bG9jYWxpemVkU3RyaW5nc1VSTCgpOwotfQotCi12b2lkIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50OjpicmluZ1RvRnJvbnQoKQotewotICAgIG1fcGFnZS0+aW5z
cGVjdG9yKCktPmJyaW5nVG9Gcm9udCgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjpjbG9zZVdpbmRvdygpCi17Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlz
Y29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKLSAgICBtX3BhZ2UtPmluc3BlY3Rv
cigpLT5kaWRDbG9zZSgpOwotfQotCi1ib29sIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojpj
YW5TYXZlKCkKLXsKLSAgICByZXR1cm4gbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y2FuU2F2ZSgpOwot
fQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29s
IGZvcmNlU2F2ZUFzKQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNhdmUoZmlsZW5hbWUs
IGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2ZUFzKTsKLX0KLQotdm9pZCBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgY29udGVudCkKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5hcHBlbmQoZmls
ZW5hbWUsIGNvbnRlbnQpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojph
dHRhY2hXaW5kb3coRG9ja1NpZGUgZG9ja1NpZGUpCi17Ci0gICAgc3dpdGNoIChkb2NrU2lkZSkg
ewotICAgIGNhc2UgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpVbmRvY2tlZDoK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpCb3R0b206Ci0gICAgICAgIG1fcGFn
ZS0+aW5zcGVjdG9yKCktPmF0dGFjaEJvdHRvbSgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6UmlnaHQ6Ci0gICAgICAgIG1fcGFn
ZS0+aW5zcGVjdG9yKCktPmF0dGFjaFJpZ2h0KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0K
LQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGV0YWNoV2luZG93KCkKLXsKLSAg
ICBtX3BhZ2UtPmluc3BlY3RvcigpLT5kZXRhY2goKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQot
ewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdo
dCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldEF0dGFjaGVkV2lu
ZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCi17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+c2V0
QXR0YWNoZWRXaW5kb3dXaWR0aCh3aWR0aCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQotewotICAgIG1fcGFn
ZS0+aW5zcGVjdG9yKCktPnNldFRvb2xiYXJIZWlnaHQoaGVpZ2h0KTsKLX0KLQotdm9pZCBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcm
IHVybFN0cmluZykKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5pbnNwZWN0ZWRVUkxDaGFu
Z2VkKHVybFN0cmluZyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM3N2VmNS4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudF9oCi0jZGVmaW5lIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50X2gKLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0KLSNpbmNsdWRlIDxX
ZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaD4KLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLWNsYXNzIFdlYlBhZ2U7Ci0KLWNsYXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwgewotcHVibGlj
OgotICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlBhZ2UqIHBhZ2UsIFdlYlBhZ2Uq
IGluc3BlY3RvclBhZ2UpOwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgU3RyaW5nIGxvY2FsaXpl
ZFN0cmluZ3NVUkwoKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBicmluZ1RvRnJvbnQo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3coKSBvdmVycmlkZTsKLQot
ICAgIHZpcnR1YWwgYm9vbCBjYW5TYXZlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNh
dmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29s
IGZvcmNlU2F2ZUFzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIGF0dGFj
aFdpbmRvdyhEb2NrU2lkZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRv
dygpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0
KHVuc2lnbmVkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dX
aWR0aCh1bnNpZ25lZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRvb2xiYXJIZWln
aHQodW5zaWduZWQpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENo
YW5nZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0KLSAgICBXZWJQYWdlKiBtX3BhZ2U7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1Ip
Ci0KLSNlbmRpZiAvLyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IDU2MTI5
N2EuLmZjMjFjM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNywxNjcgKzI3LDk3IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVj
dG9yLmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIK
LSNpbmNsdWRlICJXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgorI2luY2x1ZGUgIldlYklu
c3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdl
LmgiCi0jaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZFJlcXVlc3QuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9y
Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvclBhZ2VBZ2VudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTWFpbkZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJv
bGxlci5oPgotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaD4KLSNpbmNs
dWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorc3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1BdHRhY2hl
ZEhlaWdodCA9IDI1MDsKK3N0YXRpYyBjb25zdCBmbG9hdCBtYXhpbXVtQXR0YWNoZWRIZWlnaHRS
YXRpbyA9IDAuNzU7CitzdGF0aWMgY29uc3QgZmxvYXQgbWluaW11bUF0dGFjaGVkV2lkdGggPSA3
NTA7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gV2Vi
SW5zcGVjdG9yOjpjcmVhdGUoV2ViUGFnZSogcGFnZSwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwpCitQYXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gV2ViSW5zcGVjdG9y
OjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYklu
c3BlY3RvcihwYWdlLCBmcm9udGVuZENoYW5uZWwpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYkluc3BlY3RvcihwYWdlKSk7CiB9CiAKLVdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdl
YlBhZ2UqIHBhZ2UsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQor
V2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2ViUGFnZSogcGFnZSkKICAgICA6IG1fcGFnZShw
YWdlKQotICAgICwgbV9pbnNwZWN0b3JQYWdlKG51bGxwdHIpCi0gICAgLCBtX2Zyb250ZW5kQ2xp
ZW50KG51bGxwdHIpCi0gICAgLCBtX2Zyb250ZW5kQ2hhbm5lbChmcm9udGVuZENoYW5uZWwpCi0j
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgLCBtX2hhc0xvY2FsaXplZFN0cmluZ3NVUkwoZmFsc2Up
Ci0jZW5kaWYKLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAgICAsIG1fcmVtb3RlRnJv
bnRlbmRDb25uZWN0ZWQoZmFsc2UpCi0jZW5kaWYKKyAgICAsIG1fYXR0YWNoZWQoZmFsc2UpCisg
ICAgLCBtX3ByZXZpb3VzQ2FuQXR0YWNoKGZhbHNlKQogewogfQogCiAvLyBDYWxsZWQgZnJvbSBX
ZWJJbnNwZWN0b3JDbGllbnQKLVdlYlBhZ2UqIFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zcGVjdG9y
UGFnZSgpCit2b2lkIFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zcGVjdG9yUGFnZSgpCiB7CiAgICAg
aWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgQVNTRVJUKCFtX2lu
c3BlY3RvclBhZ2UpOwotICAgIEFTU0VSVCghbV9mcm9udGVuZENsaWVudCk7Ci0KLSAgICB1aW50
NjRfdCBpbnNwZWN0b3JQYWdlSUQgPSAwOwotICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMg
cGFyYW1ldGVyczsKLQotICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpDcmVh
dGVJbnNwZWN0b3JQYWdlKCksCi0gICAgICAgICAgICBNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6OkNyZWF0ZUluc3BlY3RvclBhZ2U6OlJlcGx5KGluc3BlY3RvclBhZ2VJRCwgcGFyYW1ldGVy
cyksCi0gICAgICAgICAgICBtX3BhZ2UtPnBhZ2VJRCgpLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNv
bmRzOjptYXgoKSkpIHsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoIWluc3BlY3RvclBhZ2VJRCkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisjaWYgT1MoREFSV0lOKQorICAgIG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7CisgICAg
bWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNF
SVZFLCAmbGlzdGVuaW5nUG9ydCk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jcmVhdGVX
ZWJQYWdlKGluc3BlY3RvclBhZ2VJRCwgcGFyYW1ldGVycyk7Ci0gICAgbV9pbnNwZWN0b3JQYWdl
ID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViUGFnZShpbnNwZWN0b3JQYWdlSUQpOwotICAgIEFT
U0VSVChtX2luc3BlY3RvclBhZ2UpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uID0gSVBDOjpD
b25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllcihsaXN0ZW5pbmdQb3J0KSwgdGhpcywgUnVuTG9vcDo6bWFpbigpKTsKKyAgICBtX2Zyb250
ZW5kQ29ubmVjdGlvbi0+b3BlbigpOwogCi0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fcGFnZSwgbV9pbnNwZWN0
b3JQYWdlKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQuZ2V0KCk7Ci0g
ICAgbV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7Ci0gICAg
cmV0dXJuIG1faW5zcGVjdG9yUGFnZTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6Q3Jl
YXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0df
VFlQRV9NQUtFX1NFTkQpLCBjYW5BdHRhY2hXaW5kb3coKSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
I2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworI2VuZGlmCiB9CiAKLVdlYlBhZ2UqIFdlYklu
c3BlY3Rvcjo6Y3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QoKQordm9pZCBXZWJJbnNwZWN0b3I6
OmNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KCkKIHsKICAgICBpZiAoIW1fcGFnZSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBBU1NFUlQoIW1faW5zcGVjdG9yUGFnZSk7Ci0gICAg
QVNTRVJUKCFtX2Zyb250ZW5kQ2xpZW50KTsKLQotICAgIHVpbnQ2NF90IGluc3BlY3RvclBhZ2VJ
RCA9IDA7Ci0gICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0gICAg
aWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2VGb3JU
ZXN0KCksCi0gICAgICAgICAgICBNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUlu
c3BlY3RvclBhZ2VGb3JUZXN0OjpSZXBseShpbnNwZWN0b3JQYWdlSUQsIHBhcmFtZXRlcnMpLAot
ICAgICAgICAgICAgbV9wYWdlLT5wYWdlSUQoKSwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kczo6
bWF4KCkpKSB7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGlmICghaW5z
cGVjdG9yUGFnZUlEKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOwog
Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY3JlYXRlV2ViUGFnZShpbnNwZWN0b3JQYWdlSUQs
IHBhcmFtZXRlcnMpOwotICAgIG1faW5zcGVjdG9yUGFnZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgp
LndlYlBhZ2UoaW5zcGVjdG9yUGFnZUlEKTsKLSAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsK
KyNpZiBPUyhEQVJXSU4pCisgICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKKyAgICBtYWNo
X3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUs
ICZsaXN0ZW5pbmdQb3J0KTsKIAotICAgIGF1dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX3BhZ2UsIG1faW5zcGVjdG9yUGFn
ZSk7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5kQ2xpZW50LmdldCgpOwotICAgIG1f
aW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9udGVuZENsaWVudCkpOwotICAgIHJldHVy
biBtX2luc3BlY3RvclBhZ2U7Ci19CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24gPSBJUEM6OkNv
bm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyKGxpc3RlbmluZ1BvcnQpLCB0aGlzLCBSdW5Mb29wOjptYWluKCkpOworICAgIG1fZnJvbnRl
bmRDb25uZWN0aW9uLT5vcGVuKCk7CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpkZXN0cm95SW5zcGVj
dG9yUGFnZSgpCi17Ci0gICAgbV9pbnNwZWN0b3JQYWdlID0gbnVsbHB0cjsKLSAgICBtX2Zyb250
ZW5kQ2xpZW50ID0gbnVsbHB0cjsKLSAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7Cisg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KElQ
Qzo6QXR0YWNobWVudChsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyNlbmRpZgog
fQogCi0vLyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudAotdm9pZCBXZWJJ
bnNwZWN0b3I6OmRpZENsb3NlKCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kKCkK
IHsKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGlkQ2xvc2UoKSwgbV9wYWdlLT5wYWdl
SUQoKSk7Ci0gICAgZGVzdHJveUluc3BlY3RvclBhZ2UoKTsKLX0KIAotdm9pZCBXZWJJbnNwZWN0
b3I6OmJyaW5nVG9Gcm9udCgpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkJyaW5n
VG9Gcm9udCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6Omlu
c3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCi17Ci0gICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6Okluc3BlY3RlZFVSTENoYW5nZWQodXJsU3RyaW5nKSwgbV9wYWdl
LT5wYWdlSUQoKSk7Ci19CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsK
KyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbiA9IG51bGxwdHI7CiAKLXZvaWQgV2ViSW5zcGVjdG9y
OjpzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9v
bCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKQotewotICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpTYXZlKGZpbGVuYW1lLCBjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBmb3JjZVNh
dmVBcyksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6YXBwZW5k
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkKLXsKLSAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KSwgbV9wYWdl
LT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjphdHRhY2hCb3R0b20oKQotewot
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hCb3R0b20oKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9hdHRhY2hlZCA9IGZhbHNlOworICAgIG1fcHJldmlvdXNDYW5BdHRhY2gg
PSBmYWxzZTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OmF0dGFjaFJpZ2h0KCkKLXsKLSAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoUmlnaHQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7
Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpkZXRhY2goKQotewotICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpEZXRhY2goKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5z
cGVjdG9yOjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCi17Ci0gICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCks
IG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6c2V0QXR0YWNoZWRX
aW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6U2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh3aWR0aCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQot
Ci12b2lkIFdlYkluc3BlY3Rvcjo6c2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCBoZWlnaHQpCit2
b2lkIFdlYkluc3BlY3Rvcjo6YnJpbmdUb0Zyb250KCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JQcm94eTo6U2V0VG9vbGJhckhlaWdodChoZWlnaHQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250KCksIG1fcGFnZS0+cGFnZUlE
KCkpOwogfQogCiAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yIG1lc3NhZ2VzCkBAIC0yMDEsMzQg
KzEzMSwxNyBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6Y2xvc2UoKQogICAgIG1fcGFnZS0+Y29yZVBh
Z2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNsb3NlKCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVj
dG9yOjpkaWRTYXZlKGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBXZWJJbnNwZWN0b3I6Om9wZW5J
bk5ld1RhYihjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBBU1NFUlQobV9pbnNwZWN0
b3JQYWdlKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHQobWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2
ZWRVUkwoXCIiLCB1cmwsICJcIikiKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpkaWRBcHBl
bmQoY29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7Ci0g
ICAgbV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVj
dXRlU2NyaXB0KG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmFwcGVuZGVkVG9VUkwo
XCIiLCB1cmwsICJcIikiKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjphdHRhY2hlZEJvdHRv
bSgpCi17Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGll
bnQtPnNldEF0dGFjaGVkV2luZG93KEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6
Qm90dG9tKTsKLX0KKyAgICBQYWdlKiBpbnNwZWN0ZWRQYWdlID0gbV9wYWdlLT5jb3JlUGFnZSgp
OworICAgIEZyYW1lJiBpbnNwZWN0ZWRNYWluRnJhbWUgPSBpbnNwZWN0ZWRQYWdlLT5tYWluRnJh
bWUoKTsKKyAgICBGcmFtZUxvYWRSZXF1ZXN0IHJlcXVlc3QoaW5zcGVjdGVkTWFpbkZyYW1lLmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdCh1cmxTdHJpbmcpLCAi
X2JsYW5rIik7CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjphdHRhY2hlZFJpZ2h0KCkKLXsKLSAgICBp
ZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0QXR0YWNo
ZWRXaW5kb3coSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpSaWdodCk7Ci19Cisg
ICAgUGFnZSogbmV3UGFnZSA9IGluc3BlY3RlZFBhZ2UtPmNocm9tZSgpLmNyZWF0ZVdpbmRvdygm
aW5zcGVjdGVkTWFpbkZyYW1lLCByZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcygpLCBOYXZpZ2F0aW9u
QWN0aW9uKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIE5hdmlnYXRpb25UeXBlTGlua0NsaWNr
ZWQpKTsKKyAgICBpZiAoIW5ld1BhZ2UpCisgICAgICAgIHJldHVybjsKIAotdm9pZCBXZWJJbnNw
ZWN0b3I6OmRldGFjaGVkKCkKLXsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAg
bV9mcm9udGVuZENsaWVudC0+c2V0QXR0YWNoZWRXaW5kb3coSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OkRvY2tTaWRlOjpVbmRvY2tlZCk7CisgICAgbmV3UGFnZS0+bWFpbkZyYW1lKCkubG9hZGVy
KCkubG9hZChyZXF1ZXN0KTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OmV2YWx1YXRlU2NyaXB0
Rm9yVGVzdChjb25zdCBTdHJpbmcmIHNjcmlwdCkKQEAgLTIzOSwxMDggKzE1Miw5NCBAQCB2b2lk
IFdlYkluc3BlY3Rvcjo6ZXZhbHVhdGVTY3JpcHRGb3JUZXN0KGNvbnN0IFN0cmluZyYgc2NyaXB0
KQogdm9pZCBXZWJJbnNwZWN0b3I6OnNob3dDb25zb2xlKCkKIHsKICAgICBtX3BhZ2UtPmNvcmVQ
YWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRD
bGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNob3dDb25zb2xlKCk7CisgICAgbV9m
cm9udGVuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTaG93Q29u
c29sZSgpLCAwKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnNob3dSZXNvdXJjZXMoKQogewog
ICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAg
ICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2hvd1Jl
c291cmNlcygpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JVSTo6U2hvd1Jlc291cmNlcygpLCAwKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6
OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQordm9pZCBXZWJJbnNw
ZWN0b3I6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlkZW50aWZpZXIp
CiB7Ci0gICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUo
ZnJhbWVJRCk7CisgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2Vi
RnJhbWUoZnJhbWVJZGVudGlmaWVyKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47
CiAKICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7
Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNo
b3dNYWluUmVzb3VyY2VGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCkpOwotfQogCi12b2lkIFdl
Ykluc3BlY3Rvcjo6c3RhcnRKYXZhU2NyaXB0RGVidWdnaW5nKCkKLXsKLSAgICBtX3BhZ2UtPmNv
cmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRl
bmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldERlYnVnZ2luZ0VuYWJsZWQo
dHJ1ZSk7CisgICAgU3RyaW5nIGluc3BlY3RvckZyYW1lSWRlbnRpZmllciA9IG1fcGFnZS0+Y29y
ZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnBhZ2VBZ2VudCgpLT5mcmFtZUlkKGZyYW1l
LT5jb3JlRnJhbWUoKSk7CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJOjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUoaW5zcGVjdG9yRnJhbWVJ
ZGVudGlmaWVyKSwgMCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpzdG9wSmF2YVNjcmlwdERl
YnVnZ2luZygpCit2b2lkIFdlYkluc3BlY3Rvcjo6c3RhcnRQYWdlUHJvZmlsaW5nKCkKIHsKICAg
ICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAg
aWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldERlYnVn
Z2luZ0VuYWJsZWQoZmFsc2UpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6c2V0SmF2YVNjcmlw
dFByb2ZpbGluZ0VuYWJsZWQoYm9vbCkKLXsKLSAgICAvLyBObyBsb25nZXIgc3VwcG9ydGVkLgor
ICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6
U3RhcnRQYWdlUHJvZmlsaW5nKCksIDApOwogfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6c3RhcnRK
YXZhU2NyaXB0UHJvZmlsaW5nKCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpzdG9wUGFnZVByb2ZpbGlu
ZygpCiB7Ci0gICAgLy8gTm8gbG9uZ2VyIHN1cHBvcnRlZC4KKyAgICBtX3BhZ2UtPmNvcmVQYWdl
KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7CisgICAgbV9mcm9udGVuZENvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTdG9wUGFnZVByb2ZpbGluZygpLCAw
KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OnN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCkKK2Jv
b2wgV2ViSW5zcGVjdG9yOjpjYW5BdHRhY2hXaW5kb3coKQogewotICAgIC8vIE5vIGxvbmdlciBz
dXBwb3J0ZWQuCi19CisgICAgLy8gRG9uJ3QgYWxsb3cgYXR0YWNoaW5nIHRvIGFub3RoZXIgaW5z
cGVjdG9yIC0tIHR3byBpbnNwZWN0b3JzIGluIG9uZSB3aW5kb3cgaXMgdG9vIG11Y2ghCisgICAg
aWYgKG1fcGFnZS0+aXNJbnNwZWN0b3JQYWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAot
dm9pZCBXZWJJbnNwZWN0b3I6OnN0YXJ0UGFnZVByb2ZpbGluZygpCi17Ci0gICAgbV9wYWdlLT5j
b3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zyb250
ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRUaW1lbGluZVByb2ZpbGlu
Z0VuYWJsZWQodHJ1ZSk7Ci19CisgICAgLy8gSWYgd2UgYXJlIGFscmVhZHkgYXR0YWNoZWQsIGFs
bG93IGF0dGFjaGluZyBhZ2FpbiB0byBhbGxvdyBzd2l0Y2hpbmcgc2lkZXMuCisgICAgaWYgKG1f
YXR0YWNoZWQpCisgICAgICAgIHJldHVybiB0cnVlOwogCi12b2lkIFdlYkluc3BlY3Rvcjo6c3Rv
cFBhZ2VQcm9maWxpbmcoKQotewotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9m
cm9udGVuZENsaWVudC0+c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKGZhbHNlKTsKKyAgICAv
LyBEb24ndCBhbGxvdyB0aGUgYXR0YWNoIGlmIHRoZSB3aW5kb3cgd291bGQgYmUgdG9vIHNtYWxs
IHRvIGFjY29tbW9kYXRlIHRoZSBtaW5pbXVtIGluc3BlY3RvciBzaXplLgorICAgIHVuc2lnbmVk
IGluc3BlY3RlZFBhZ2VIZWlnaHQgPSBtX3BhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZp
ZXcoKS0+dmlzaWJsZUhlaWdodCgpOworICAgIHVuc2lnbmVkIGluc3BlY3RlZFBhZ2VXaWR0aCA9
IG1fcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlV2lkdGgoKTsK
KyAgICB1bnNpZ25lZCBtYXhpbXVtQXR0YWNoZWRIZWlnaHQgPSBpbnNwZWN0ZWRQYWdlSGVpZ2h0
ICogbWF4aW11bUF0dGFjaGVkSGVpZ2h0UmF0aW87CisgICAgcmV0dXJuIG1pbmltdW1BdHRhY2hl
ZEhlaWdodCA8PSBtYXhpbXVtQXR0YWNoZWRIZWlnaHQgJiYgbWluaW11bUF0dGFjaGVkV2lkdGgg
PD0gaW5zcGVjdGVkUGFnZVdpZHRoOwogfQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6dXBkYXRlRG9j
a2luZ0F2YWlsYWJpbGl0eSgpCiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KQorICAgIGlm
IChtX2F0dGFjaGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIGNhbkF0dGFjaFdpbmRv
dyA9IG1fZnJvbnRlbmRDbGllbnQtPmNhbkF0dGFjaFdpbmRvdygpOworICAgIGJvb2wgY2FuQXR0
YWNoV2luZG93ID0gdGhpcy0+Y2FuQXR0YWNoV2luZG93KCk7CisgICAgaWYgKG1fcHJldmlvdXND
YW5BdHRhY2ggPT0gY2FuQXR0YWNoV2luZG93KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3By
ZXZpb3VzQ2FuQXR0YWNoID0gY2FuQXR0YWNoV2luZG93OworCiAgICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OkF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoY2FuQXR0YWNoV2luZG93KSwgbV9w
YWdlLT5wYWdlSUQoKSk7Ci0gICAgbV9mcm9udGVuZENsaWVudC0+c2V0RG9ja2luZ1VuYXZhaWxh
YmxlKCFjYW5BdHRhY2hXaW5kb3cpOwogfQogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIp
Ci12b2lkIFdlYkluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvQmFja2VuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgQVNTRVJUKG1fcmVtb3RlRnJvbnRlbmRDb25u
ZWN0ZWQpOwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZW5kTWVzc2FnZVRvUmVtb3Rl
RnJvbnRlbmQobWVzc2FnZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+Y29yZVBh
Z2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZCht
ZXNzYWdlKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1v
dGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitib29sIFdlYkluc3BlY3Rvcjo6c2Vu
ZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBtX3BhZ2Ut
PmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJv
bnRlbmQobWVzc2FnZSk7CisjaWYgIUVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorICAgIG1fZnJv
bnRlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kKG1lc3NhZ2UpLCAwKTsKKyNlbHNlCisgICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
UHJveHk6OlNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChtZXNzYWdlKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmIEVOQUJMRShJTlNQRUNU
T1JfU0VSVkVSKQogdm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkK
IHsKLSAgICBBU1NFUlQoIW1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOwotICAgIC8vIFN3aXRj
aGluZyBiZXR3ZWVuIGluLXByb2Nlc3MgYW5kIHJlbW90ZSBpbnNwZWN0b3JzIGlzbid0IHN1cHBv
cnRlZCB5ZXQuCi0gICAgQVNTRVJUKCFtX2luc3BlY3RvclBhZ2UpOwotICAgIAotICAgIG1fcGFn
ZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZChtX2Zy
b250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCA9IHRydWU7Cisg
ICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250
ZW5kKHRoaXMpOwogfQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmREaXNjb25u
ZWN0ZWQoKQogewotICAgIEFTU0VSVChtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKTsKICAgICBt
X3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95
ZWQpOwotICAgIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQgPSBmYWxzZTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgK
aW5kZXggYzkzYmNiMy4uN2EyMTY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsMTA2ICszMCw4MSBAQAogCiAjaW5jbHVkZSAi
QVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRm9yd2FyZGluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ7CiBjbGFzcyBXZWJQYWdlOwogCi1jbGFzcyBXZWJJbnNwZWN0b3IgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVJbnNwZWN0b3I+IHsKK2NsYXNzIFdl
Ykluc3BlY3RvciA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1
bmRsZUluc3BlY3Rvcj4sIHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgcHVibGljIFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViSW5zcGVjdG9yPiBjcmVhdGUoV2ViUGFnZSosIFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4g
Y3JlYXRlKFdlYlBhZ2UqKTsKIAogICAgIFdlYlBhZ2UqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2U7IH0KLSAgICBXZWJQYWdlKiBpbnNwZWN0b3JQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9p
bnNwZWN0b3JQYWdlOyB9CisKKyAgICB2b2lkIHVwZGF0ZURvY2tpbmdBdmFpbGFiaWxpdHkoKTsK
KworICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKSBvdmVycmlkZTsKIAogICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJJ
bnNwZWN0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwCi0gICAgdm9pZCBkaWRSZWNlaXZlV2ViSW5zcGVj
dG9yTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJik7CisKKyAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAorICAgIHZvaWQgZGlkQ2xv
c2UoSVBDOjpDb25uZWN0aW9uKikgeyBjbG9zZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIHsgY2xvc2Uo
KTsgfQogCiAgICAgLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvciBtZXNzYWdlcworICAgIHZvaWQg
Y29ubmVjdGlvbkVzdGFibGlzaGVkKCk7CisKICAgICB2b2lkIHNob3coKTsKICAgICB2b2lkIGNs
b3NlKCk7CiAKLSAgICB2b2lkIGRpZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwpOwotICAgIHZvaWQg
ZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIG9wZW5Jbk5ld1RhYihjb25z
dCBTdHJpbmcmIHVybFN0cmluZyk7CisKKyAgICB2b2lkIGNhbkF0dGFjaFdpbmRvdyhib29sJiBy
ZXN1bHQpOworCisgICAgdm9pZCBzaG93Q29uc29sZSgpOworICAgIHZvaWQgc2hvd1Jlc291cmNl
cygpOwogCi0gICAgdm9pZCBhdHRhY2hlZEJvdHRvbSgpOwotICAgIHZvaWQgYXR0YWNoZWRSaWdo
dCgpOwotICAgIHZvaWQgZGV0YWNoZWQoKTsKKyAgICB2b2lkIHNob3dNYWluUmVzb3VyY2VGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlkZW50aWZpZXIpOworCisgICAgdm9pZCBzZXRBdHRhY2hlZChi
b29sIGF0dGFjaGVkKSB7IG1fYXR0YWNoZWQgPSBhdHRhY2hlZDsgfQogCiAgICAgdm9pZCBldmFs
dWF0ZVNjcmlwdEZvclRlc3QoY29uc3QgU3RyaW5nJiBzY3JpcHQpOwogCi0gICAgdm9pZCBzZXRK
YXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChib29sKTsKICAgICB2b2lkIHN0YXJ0UGFnZVByb2Zp
bGluZygpOwogICAgIHZvaWQgc3RvcFBhZ2VQcm9maWxpbmcoKTsKIAorICAgIHZvaWQgc2VuZE1l
c3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJik7CisKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NF
UlZFUikKLSAgICBib29sIGhhc1JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1
cm4gbV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZDsgfQotICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1Jl
bW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBkaXNwYXRjaE1l
c3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2b2lk
IHJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCk7CiAgICAgdm9pZCByZW1vdGVGcm9udGVuZERpc2Nv
bm5lY3RlZCgpOwogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYkluc3Bl
Y3RvckNsaWVudDsKLSAgICBmcmllbmQgY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7
CiAKLSAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3IoV2ViUGFnZSosIFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCopOworICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvcihXZWJQYWdlKik7
CisKKyAgICBib29sIGNhbkF0dGFjaFdpbmRvdygpOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gV2Vi
SW5zcGVjdG9yQ2xpZW50Ci0gICAgV2ViUGFnZSogY3JlYXRlSW5zcGVjdG9yUGFnZSgpOwotICAg
IFdlYlBhZ2UqIGNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KCk7Ci0gICAgdm9pZCBkZXN0cm95
SW5zcGVjdG9yUGFnZSgpOworICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZSgpOworICAgIHZv
aWQgY3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QoKTsKIAotICAgIC8vIENhbGxlZCBmcm9tIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50Ci0gICAgdm9pZCBkaWRDbG9zZSgpOworICAgIHZvaWQg
Y2xvc2VGcm9udGVuZCgpOwogICAgIHZvaWQgYnJpbmdUb0Zyb250KCk7Ci0gICAgdm9pZCBpbnNw
ZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpOwotCi0gICAgYm9vbCBjYW5TYXZlKCkgY29u
c3Q7Ci0gICAgdm9pZCBzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
Y29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKTsKLSAgICB2b2lk
IGFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwot
Ci0gICAgdm9pZCBhdHRhY2hCb3R0b20oKTsKLSAgICB2b2lkIGF0dGFjaFJpZ2h0KCk7Ci0gICAg
dm9pZCBkZXRhY2goKTsKIAotICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWdu
ZWQpOwotICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCk7Ci0gICAgdm9p
ZCBzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkKTsKLQotICAgIC8vIEltcGxlbWVudGVkIGluIHBs
YXRmb3JtIFdlYkluc3BlY3RvciBmaWxlCi0gICAgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwo
KSBjb25zdDsKLQotICAgIHZvaWQgc2hvd0NvbnNvbGUoKTsKLQotICAgIHZvaWQgc2hvd1Jlc291
cmNlcygpOwotCi0gICAgdm9pZCBzaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCk7Ci0KLSAgICB2b2lkIHN0YXJ0SmF2YVNjcmlwdERlYnVnZ2luZygpOwotICAgIHZvaWQg
c3RvcEphdmFTY3JpcHREZWJ1Z2dpbmcoKTsKLQotICAgIHZvaWQgc3RhcnRKYXZhU2NyaXB0UHJv
ZmlsaW5nKCk7Ci0gICAgdm9pZCBzdG9wSmF2YVNjcmlwdFByb2ZpbGluZygpOworICAgIFdlYlBh
Z2UqIG1fcGFnZTsKIAotICAgIHZvaWQgdXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgpOworICAg
IFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fZnJvbnRlbmRDb25uZWN0aW9uOwogCi0gICAgV2Vi
UGFnZSogbV9wYWdlOwotICAgIFdlYlBhZ2UqIG1faW5zcGVjdG9yUGFnZTsKLSAgICBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudCogbV9mcm9udGVuZENsaWVudDsKLSAgICBXZWJDb3JlOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVsOwotI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIG11dGFibGUgU3RyaW5nIG1fbG9jYWxpemVkU3RyaW5nc1VSTDsKLSAgICBtdXRh
YmxlIGJvb2wgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMOwotI2VuZGlmCi0jaWYgRU5BQkxFKElO
U1BFQ1RPUl9TRVJWRVIpCi0gICAgYm9vbCBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkOwotI2Vu
ZGlmCisgICAgYm9vbCBtX2F0dGFjaGVkOworICAgIGJvb2wgbV9wcmV2aW91c0NhbkF0dGFjaDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KaW5kZXggYzIz
Yjg2Zi4uZmMwNzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5
cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwog
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMiwyNiArMjIsMjUgQEAKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAKLW1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvciBMZWdhY3lSZWNlaXZlciB7
CittZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3IgewogICAgIFNob3coKQogICAgIENsb3NlKCkKLSAg
ICBBdHRhY2hlZEJvdHRvbSgpCi0gICAgQXR0YWNoZWRSaWdodCgpCi0gICAgRGV0YWNoZWQoKQot
ICAgIERpZFNhdmUoU3RyaW5nIHVybCkKLSAgICBEaWRBcHBlbmQoU3RyaW5nIHVybCkKKworICAg
IFNldEF0dGFjaGVkKGJvb2wgYXR0YWNoZWQpCisKICAgICBTaG93Q29uc29sZSgpCiAgICAgU2hv
d1Jlc291cmNlcygpCi0gICAgU2hvd01haW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQpCi0gICAgU3RhcnRKYXZhU2NyaXB0RGVidWdnaW5nKCkKLSAgICBTdG9wSmF2YVNjcmlwdERl
YnVnZ2luZygpCi0gICAgU3RhcnRKYXZhU2NyaXB0UHJvZmlsaW5nKCkKLSAgICBTdG9wSmF2YVNj
cmlwdFByb2ZpbGluZygpCisKKyAgICBTaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJZGVudGlmaWVyKQorCisgICAgT3BlbkluTmV3VGFiKFN0cmluZyB1cmwpCisKICAgICBT
dGFydFBhZ2VQcm9maWxpbmcoKQogICAgIFN0b3BQYWdlUHJvZmlsaW5nKCkKIAorICAgIFNlbmRN
ZXNzYWdlVG9CYWNrZW5kKFN0cmluZyBtZXNzYWdlKQorCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9T
RVJWRVIpCi0gICAgRGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKFN0cmluZyBtZXNz
YWdlKQogICAgIFJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkKICAgICBSZW1vdGVGcm9udGVuZERp
c2Nvbm5lY3RlZCgpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjhmMWMyYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC0wLDAgKzEsMjgyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCisK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUg
IldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIldlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9ET01XcmFwcGVyV29ybGQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0luc3BlY3RvckNvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEdsb2JhbE9i
amVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0U3RhdGUuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPFdlYkluc3BlY3RvclVJPiBXZWJJbnNwZWN0
b3JVSTo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJJbnNwZWN0b3JVSShwYWdlKSk7Cit9CisKK1dlYkluc3BlY3RvclVJOjpXZWJJbnNwZWN0b3JV
SShXZWJQYWdlKiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX2luc3BlY3RlZFBh
Z2VJZGVudGlmaWVyKDApCisgICAgLCBtX3VuZGVyVGVzdChmYWxzZSkKKyAgICAsIG1fZnJvbnRl
bmRMb2FkZWQoZmFsc2UpCisgICAgLCBtX2RvY2tTaWRlKERvY2tTaWRlOjpVbmRvY2tlZCkKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICAsIG1faGFzTG9jYWxpemVkU3RyaW5nc1VSTChmYWxzZSkK
KyNlbmRpZgoreworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjplc3RhYmxpc2hDb25uZWN0aW9u
KElQQzo6QXR0YWNobWVudCBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGlu
c3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCkKK3sKKyNpZiBPUyhEQVJXSU4p
CisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVu
Y29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpOworICAgIGlmIChJUEM6OkNvbm5lY3Rp
b246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gaW5zcGVjdGVkUGFnZUlkZW50
aWZpZXI7CisgICAgbV91bmRlclRlc3QgPSB1bmRlclRlc3Q7CisKKyAgICBtX2JhY2tlbmRDb25u
ZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKGNvbm5lY3Rp
b25JZGVudGlmaWVyLCB0aGlzLCBSdW5Mb29wOjptYWluKCkpOworICAgIG1fYmFja2VuZENvbm5l
Y3Rpb24tPm9wZW4oKTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm47
CisjZW5kaWYKKworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHRoaXMpOworfQorCit2b2lkIFdlYkluc3BlY3Rv
clVJOjp3aW5kb3dPYmplY3RDbGVhcmVkKCkKK3sKKyAgICBpZiAobV9mcm9udGVuZEhvc3QpCisg
ICAgICAgIG1fZnJvbnRlbmRIb3N0LT5kaXNjb25uZWN0Q2xpZW50KCk7CisKKyAgICBtX2Zyb250
ZW5kSG9zdCA9IEluc3BlY3RvckZyb250ZW5kSG9zdDo6Y3JlYXRlKHRoaXMsIG1fcGFnZS0+Y29y
ZVBhZ2UoKSk7CisgICAgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoZXhlY1N0YXRlRnJvbVBhZ2Uo
bWFpblRocmVhZE5vcm1hbFdvcmxkKCksIG1fcGFnZS0+Y29yZVBhZ2UoKSksIEFTQ0lJTGl0ZXJh
bCgiSW5zcGVjdG9yRnJvbnRlbmRIb3N0IiksIG1fZnJvbnRlbmRIb3N0LmdldCgpKTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRMb2FkZWQoKQoreworICAgIG1fZnJvbnRlbmRM
b2FkZWQgPSB0cnVlOworCisgICAgZXZhbHVhdGVQZW5kaW5nRXhwcmVzc2lvbnMoKTsKKyAgICBi
cmluZ1RvRnJvbnQoKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6bW92ZVdpbmRvd0J5KGZs
b2F0IHgsIGZsb2F0IHkpCit7CisgICAgRmxvYXRSZWN0IGZyYW1lUmVjdCA9IG1fcGFnZS0+Y29y
ZVBhZ2UoKS0+Y2hyb21lKCkud2luZG93UmVjdCgpOworICAgIGZyYW1lUmVjdC5tb3ZlKHgsIHkp
OworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+Y2hyb21lKCkuc2V0V2luZG93UmVjdChmcmFtZVJl
Y3QpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpicmluZ1RvRnJvbnQoKQoreworICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KCkKK3sKKyAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGlkQ2xvc2UoKSwgbV9pbnNwZWN0ZWRQYWdlSWRl
bnRpZmllcik7CisKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CisgICAg
bV9iYWNrZW5kQ29ubmVjdGlvbiA9IG51bGxwdHI7CisKKyAgICBtX2luc3BlY3RlZFBhZ2VJZGVu
dGlmaWVyID0gMDsKKyAgICBtX3VuZGVyVGVzdCA9IGZhbHNlOworfQorCit2b2lkIFdlYkluc3Bl
Y3RvclVJOjpyZXF1ZXN0U2V0RG9ja1NpZGUoRG9ja1NpZGUgc2lkZSkKK3sKKyAgICBzd2l0Y2gg
KHNpZGUpIHsKKyAgICBjYXNlIERvY2tTaWRlOjpVbmRvY2tlZDoKKyAgICAgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yUHJveHk6OkRldGFjaCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERvY2tTaWRlOjpSaWdodDoKKyAgICAgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaFJpZ2h0KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZp
ZXIpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRG9ja1NpZGU6OkJvdHRvbToKKyAgICAg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaEJvdHRvbSgpLCBtX2luc3BlY3RlZFBh
Z2VJZGVudGlmaWVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIFdlYkluc3Bl
Y3RvclVJOjpzZXREb2NrU2lkZShEb2NrU2lkZSBzaWRlKQoreworICAgIGNvbnN0IGNoYXIgKnNp
ZGVTdHJpbmc7CisKKyAgICBzd2l0Y2ggKHNpZGUpIHsKKyAgICBjYXNlIERvY2tTaWRlOjpVbmRv
Y2tlZDoKKyAgICAgICAgc2lkZVN0cmluZyA9ICJ1bmRvY2tlZCI7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBEb2NrU2lkZTo6UmlnaHQ6CisgICAgICAgIHNpZGVTdHJpbmcgPSAicmlnaHQi
OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRG9ja1NpZGU6OkJvdHRvbToKKyAgICAgICAg
c2lkZVN0cmluZyA9ICJib3R0b20iOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBtX2Rv
Y2tTaWRlID0gc2lkZTsKKworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwo
InNldERvY2tTaWRlIiksIEFTQ0lJTGl0ZXJhbChzaWRlU3RyaW5nKSk7Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yVUk6OmNoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkK
K3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQo
aGVpZ2h0KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yVUk6OmNoYW5nZUF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCit7CisgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0dGFjaGVkV2luZG93V2lkdGgod2lkdGgpLCBt
X2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2V0
VG9vbGJhckhlaWdodCh1bnNpZ25lZCBoZWlnaHQpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
UHJveHk6OlNldFRvb2xiYXJIZWlnaHQoaGVpZ2h0KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcm
IHVybCkKK3sKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3I6Ok9wZW5Jbk5ld1RhYih1cmwpLCAwKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6
c2F2ZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250
ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCit7CisgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQs
IGZvcmNlU2F2ZUFzKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yVUk6OmFwcGVuZChjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBjb250ZW50KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBcHBl
bmQoZmlsZW5hbWUsIGNvbnRlbnQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3JVSTo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVy
bFN0cmluZykKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6SW5zcGVjdGVkVVJMQ2hh
bmdlZCh1cmxTdHJpbmcpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JVSTo6c2hvd0NvbnNvbGUoKQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9h
ZChBU0NJSUxpdGVyYWwoInNob3dDb25zb2xlIikpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJ
OjpzaG93UmVzb3VyY2VzKCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRl
cmFsKCJzaG93UmVzb3VyY2VzIikpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzaG93TWFp
blJlc291cmNlRm9yRnJhbWUoU3RyaW5nIGZyYW1lSWRlbnRpZmllcikKK3sKKyAgICBldmFsdWF0
ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzaG93TWFpblJlc291cmNlRm9yRnJhbWUiKSwg
ZnJhbWVJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c3RhcnRQYWdlUHJv
ZmlsaW5nKCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzZXRU
aW1lbGluZVByb2ZpbGluZ0VuYWJsZWQiKSwgdHJ1ZSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9y
VUk6OnN0b3BQYWdlUHJvZmlsaW5nKCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVND
SUlMaXRlcmFsKCJzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQiKSwgZmFsc2UpOworfQorCit2
b2lkIFdlYkluc3BlY3RvclVJOjpkaWRTYXZlKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGV2
YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNhdmVkVVJMIiksIHVybCk7Cit9CisK
K3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAg
ICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJhcHBlbmRlZFRvVVJMIiksIHVy
bCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgZXZhbHVhdGVFeHByZXNzaW9uT25Mb2FkKG1ha2VT
dHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoTWVzc2FnZUFzeW5jKCIsIG1lc3Nh
Z2UsICIpIikpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzZW5kTWVzc2FnZVRvQmFja2Vu
ZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKSwg
MCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb25z
dCBTdHJpbmcmIGNvbW1hbmQsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQpCit7CisgICAgaWYgKGFy
Z3VtZW50LmlzTnVsbCgpKQorICAgICAgICBldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQobWFrZVN0
cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2goW1wiIiwgY29tbWFuZCwgIlwiXSki
KSk7CisgICAgZWxzZQorICAgICAgICBldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQobWFrZVN0cmlu
ZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2goW1wiIiwgY29tbWFuZCwgIlwiLCBcIiIs
IGFyZ3VtZW50LCAiXCJdKSIpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVD
b21tYW5kT25Mb2FkKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgYm9vbCBhcmd1bWVudCkKK3sKKyAg
ICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29tbWFuZCwgQVNDSUlMaXRlcmFsKGFyZ3VtZW50ID8g
InRydWUiIDogImZhbHNlIikpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpldmFsdWF0ZUV4
cHJlc3Npb25PbkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQoreworICAgIGlmIChtX2Zy
b250ZW5kTG9hZGVkKSB7CisgICAgICAgIEFTU0VSVChtX3F1ZXVlLmlzRW1wdHkoKSk7CisgICAg
ICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlw
dChleHByZXNzaW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcXVldWUuYXBw
ZW5kKGV4cHJlc3Npb24pOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpldmFsdWF0ZVBlbmRp
bmdFeHByZXNzaW9ucygpCit7CisgICAgQVNTRVJUKG1fZnJvbnRlbmRMb2FkZWQpOworCisgICAg
Zm9yIChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24gOiBtX3F1ZXVlKQorICAgICAgICBtX3BhZ2Ut
PmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lv
bik7CisKKyAgICBtX3F1ZXVlLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uN2MzNDBmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oCkBAIC0wLDAgKzEsMTM4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJJbnNwZWN0b3JVSV9oCisjZGVmaW5lIFdlYkluc3BlY3RvclVJ
X2gKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGb3J3YXJk
aW5nLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCisvL2NsYXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OworY2xhc3MgV2ViUGFn
ZTsKKworY2xhc3MgV2ViSW5zcGVjdG9yVUkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpCdW5kbGVJbnNwZWN0b3JVST4sIHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246
OkNsaWVudCwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnNwZWN0b3JVST4gY3JlYXRlKFdlYlBhZ2Uq
KTsKKworICAgIFdlYlBhZ2UqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KKworICAg
IC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZl
ci5jcHAKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6
TWVzc2FnZURlY29kZXImKTsKKworICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CisgICAg
dm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24qKSB7IGNsb3NlV2luZG93KCk7IH0KKyAgICB2
b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlTmFtZSkgeyBjbG9zZVdpbmRvdygpOyB9CisKKyAgICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVj
dG9yVUkgbWVzc2FnZXMKKyAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oSVBDOjpBdHRhY2ht
ZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmll
ciwgYm9vbCB1bmRlclRlc3QpOworCisgICAgdm9pZCBzaG93Q29uc29sZSgpOworICAgIHZvaWQg
c2hvd1Jlc291cmNlcygpOworCisgICAgdm9pZCBzaG93TWFpblJlc291cmNlRm9yRnJhbWUoU3Ry
aW5nIGZyYW1lSWRlbnRpZmllcik7CisKKyAgICB2b2lkIHN0YXJ0UGFnZVByb2ZpbGluZygpOwor
ICAgIHZvaWQgc3RvcFBhZ2VQcm9maWxpbmcoKTsKKworICAgIHZvaWQgYXR0YWNoZWRCb3R0b20o
KSB7IHNldERvY2tTaWRlKERvY2tTaWRlOjpCb3R0b20pOyB9CisgICAgdm9pZCBhdHRhY2hlZFJp
Z2h0KCkgeyBzZXREb2NrU2lkZShEb2NrU2lkZTo6UmlnaHQpOyB9CisgICAgdm9pZCBkZXRhY2hl
ZCgpIHsgc2V0RG9ja1NpZGUoRG9ja1NpZGU6OlVuZG9ja2VkKTsgfQorCisgICAgdm9pZCBzZXRE
b2NrU2lkZShEb2NrU2lkZSk7CisKKyAgICB2b2lkIGRpZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwp
OworICAgIHZvaWQgZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKTsKKworICAgIHZvaWQgc2Vu
ZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpOworCisgICAgLy8gV2ViQ29yZTo6SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQKKyAgICB2b2lkIHdpbmRvd09iamVjdENsZWFyZWQoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGZyb250ZW5kTG9hZGVkKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIG1v
dmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KSBvdmVycmlkZTsKKworICAgIFN0cmluZyBsb2Nh
bGl6ZWRTdHJpbmdzVVJMKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGJyaW5nVG9Gcm9udCgpIG92
ZXJyaWRlOworICAgIHZvaWQgY2xvc2VXaW5kb3coKSBvdmVycmlkZTsKKworICAgIHZvaWQgcmVx
dWVzdFNldERvY2tTaWRlKERvY2tTaWRlKSBvdmVycmlkZTsKKyAgICB2b2lkIGNoYW5nZUF0dGFj
aGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkKSBvdmVycmlkZTsKKyAgICB2b2lkIGNoYW5nZUF0dGFj
aGVkV2luZG93V2lkdGgodW5zaWduZWQpIG92ZXJyaWRlOworCisgICAgdm9pZCBzZXRUb29sYmFy
SGVpZ2h0KHVuc2lnbmVkKSBvdmVycmlkZTsKKworICAgIHZvaWQgb3BlbkluTmV3VGFiKGNvbnN0
IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKKworICAgIGJvb2wgY2FuU2F2ZSgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2F2ZShjb25zdCBXVEY6OlN0cmluZyYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYg
Y29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKSBvdmVycmlkZTsK
KyAgICB2b2lkIGFwcGVuZChjb25zdCBXVEY6OlN0cmluZyYgdXJsLCBjb25zdCBXVEY6OlN0cmlu
ZyYgY29udGVudCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOworCisgICAgYm9vbCBpc1VuZGVyVGVzdCgpIG92ZXJyaWRl
IHsgcmV0dXJuIG1fdW5kZXJUZXN0OyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgV2ViSW5z
cGVjdG9yVUkoV2ViUGFnZSopOworCisgICAgdm9pZCBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29u
c3QgU3RyaW5nJiBjb21tYW5kLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50ID0gU3RyaW5nKCkpOwor
ICAgIHZvaWQgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgY29u
c3QgQVNDSUlMaXRlcmFsJiBhcmd1bWVudCkgeyBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29tbWFu
ZCwgU3RyaW5nKGFyZ3VtZW50KSk7IH0KKyAgICB2b2lkIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChj
b25zdCBTdHJpbmcmIGNvbW1hbmQsIGJvb2wgYXJndW1lbnQpOworICAgIHZvaWQgZXZhbHVhdGVF
eHByZXNzaW9uT25Mb2FkKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbik7CisgICAgdm9pZCBldmFs
dWF0ZVBlbmRpbmdFeHByZXNzaW9ucygpOworCisgICAgV2ViUGFnZSogbV9wYWdlOworCisgICAg
UmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9iYWNrZW5kQ29ubmVjdGlvbjsKKyAgICB1aW50NjRf
dCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyOworCisgICAgYm9vbCBtX3VuZGVyVGVzdDsKKyAg
ICBib29sIG1fZnJvbnRlbmRMb2FkZWQ7CisgICAgRGVxdWU8U3RyaW5nPiBtX3F1ZXVlOworCisg
ICAgUmVmUHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdD4gbV9mcm9udGVuZEhvc3Q7
CisKKyAgICBEb2NrU2lkZSBtX2RvY2tTaWRlOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
bXV0YWJsZSBTdHJpbmcgbV9sb2NhbGl6ZWRTdHJpbmdzVVJMOworICAgIG11dGFibGUgYm9vbCBt
X2hhc0xvY2FsaXplZFN0cmluZ3NVUkw7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKworI2VuZGlmIC8vIFdlYkluc3Bl
Y3RvclVJX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4Kc2ltaWxhcml0eSBpbmRleCA3NyUKY29weSBm
cm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2Fn
ZXMuaW4KY29weSB0byBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yVUkubWVzc2FnZXMuaW4KaW5kZXggYzIzYjg2Zi4uMjNlYjVmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVz
c2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIyLDI5
ICsyMiwyNSBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotbWVzc2FnZXMgLT4gV2ViSW5z
cGVjdG9yIExlZ2FjeVJlY2VpdmVyIHsKLSAgICBTaG93KCkKLSAgICBDbG9zZSgpCittZXNzYWdl
cyAtPiBXZWJJbnNwZWN0b3JVSSB7CisgICAgRXN0YWJsaXNoQ29ubmVjdGlvbihJUEM6OkF0dGFj
aG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlm
aWVyLCBib29sIHVuZGVyVGVzdCkKKwogICAgIEF0dGFjaGVkQm90dG9tKCkKICAgICBBdHRhY2hl
ZFJpZ2h0KCkKICAgICBEZXRhY2hlZCgpCi0gICAgRGlkU2F2ZShTdHJpbmcgdXJsKQotICAgIERp
ZEFwcGVuZChTdHJpbmcgdXJsKQorCiAgICAgU2hvd0NvbnNvbGUoKQogICAgIFNob3dSZXNvdXJj
ZXMoKQotICAgIFNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQotICAg
IFN0YXJ0SmF2YVNjcmlwdERlYnVnZ2luZygpCi0gICAgU3RvcEphdmFTY3JpcHREZWJ1Z2dpbmco
KQotICAgIFN0YXJ0SmF2YVNjcmlwdFByb2ZpbGluZygpCi0gICAgU3RvcEphdmFTY3JpcHRQcm9m
aWxpbmcoKQorCisgICAgU2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFN0cmluZyBmcmFtZUlkZW50
aWZpZXIpCisKICAgICBTdGFydFBhZ2VQcm9maWxpbmcoKQogICAgIFN0b3BQYWdlUHJvZmlsaW5n
KCkKIAotI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotICAgIERpc3BhdGNoTWVzc2FnZUZy
b21SZW1vdGVGcm9udGVuZChTdHJpbmcgbWVzc2FnZSkKLSAgICBSZW1vdGVGcm9udGVuZENvbm5l
Y3RlZCgpCi0gICAgUmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKQotI2VuZGlmCisgICAgRGlk
U2F2ZShTdHJpbmcgdXJsKQorICAgIERpZEFwcGVuZChTdHJpbmcgdXJsKQorCisgICAgU2VuZE1l
c3NhZ2VUb0Zyb250ZW5kKFN0cmluZyBtZXNzYWdlKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAwMDY2MGMyLi41ZTA2
MDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC04MCw2ICs4MCw4IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSS5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaCIKQEAgLTQ2MSw2ICs0NjMsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90
IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICNl
bmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fcGFnZUlELCAqdGhpcyk7CiAjZW5kaWYKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJGdWxsU2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRo
aXMpOwpAQCAtNTIyLDYgKzUyNSw3IEBAIFdlYlBhZ2U6On5XZWJQYWdlKCkKICNlbmRpZgogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlSUQpOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
SUQpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1h
bmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwpAQCAtMjg5MCwxOCArMjg5
NCwyNiBAQCB2b2lkIFdlYlBhZ2U6OmRpZEZsdXNoTGF5ZXJUcmVlQXRUaW1lKHN0ZDo6Y2hyb25v
OjptaWxsaXNlY29uZHMgdGltZXN0YW1wKQogfQogI2VuZGlmCiAKLSAgICAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogV2ViSW5zcGVjdG9yKiBXZWJQYWdlOjppbnNwZWN0b3IoKQogewogICAgIGlm
IChtX2lzQ2xvc2VkKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgaWYgKCFtX2luc3BlY3RvcikKLSAgICAgICAgbV9pbnNwZWN0b3IgPSBXZWJJbnNwZWN0
b3I6OmNyZWF0ZSh0aGlzLCBtX2luc3BlY3RvckNsaWVudCk7CisgICAgICAgIG1faW5zcGVjdG9y
ID0gV2ViSW5zcGVjdG9yOjpjcmVhdGUodGhpcyk7CiAgICAgcmV0dXJuIG1faW5zcGVjdG9yLmdl
dCgpOwogfQorCitXZWJJbnNwZWN0b3JVSSogV2ViUGFnZTo6aW5zcGVjdG9yVUkoKQoreworICAg
IGlmIChtX2lzQ2xvc2VkKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIW1faW5z
cGVjdG9yVUkpCisgICAgICAgIG1faW5zcGVjdG9yVUkgPSBXZWJJbnNwZWN0b3JVSTo6Y3JlYXRl
KHRoaXMpOworICAgIHJldHVybiBtX2luc3BlY3RvclVJLmdldCgpOworfQogI2VuZGlmCi0gICAg
CisKICNpZiBQTEFURk9STShJT1MpCiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKiBXZWJQYWdl
Ojp2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkKIHsKQEAgLTM0OTcsMTEgKzM1MDksMTcgQEAgdm9p
ZCBXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24s
IElQQzo6TWVzc2FnZURlY29kZXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgotICAg
IAorCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
KSB7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IqIGluc3BlY3RvciA9IHRoaXMtPmluc3BlY3Rv
cigpKQotICAgICAgICAgICAgaW5zcGVjdG9yLT5kaWRSZWNlaXZlV2ViSW5zcGVjdG9yTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgICAgIGluc3BlY3Rvci0+ZGlkUmVjZWl2
ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKFdlYkluc3Bl
Y3RvclVJKiBpbnNwZWN0b3JVSSA9IHRoaXMtPmluc3BlY3RvclVJKCkpCisgICAgICAgICAgICBp
bnNwZWN0b3JVSS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IGJhYmE1MDYuLmI3ZDQ0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTUzLDYgKzE1Myw3IEBAIGNsYXNz
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOwogY2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBXZWJJbnNwZWN0
b3I7CiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7CitjbGFzcyBXZWJJbnNwZWN0b3JVSTsKIGNs
YXNzIFdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTm90
aWZpY2F0aW9uQ2xpZW50OwpAQCAtMjI2LDggKzIyNywxMCBAQCBwdWJsaWM6CiAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogICAgIFdlYkluc3BlY3RvciogaW5zcGVjdG9yKCk7CisgICAgV2ViSW5z
cGVjdG9yVUkqIGluc3BlY3RvclVJKCk7CisgICAgYm9vbCBpc0luc3BlY3RvclBhZ2UoKSB7IHJl
dHVybiAhIW1faW5zcGVjdG9yVUk7IH0KICNlbmRpZgotICAgIAorCiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIqIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXIo
KTsKICNlbmRpZgpAQCAtMTE1OSw2ICsxMTYyLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAgICAgUmVmUHRyPFdlYkluc3BlY3Rvcj4gbV9pbnNwZWN0b3I7CisgICAgUmVm
UHRyPFdlYkluc3BlY3RvclVJPiBtX2luc3BlY3RvclVJOwogI2VuZGlmCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiBtX3ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZWZsL1dlYkluc3BlY3RvckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvZWZsL1dlYkluc3BlY3RvclVJRWZsLmNwcApzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5h
bWUgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3Rv
ckVmbC5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwv
V2ViSW5zcGVjdG9yVUlFZmwuY3BwCmluZGV4IDJhYWNjMjkuLmEyZDhkM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9yRWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3Rv
clVJRWZsLmNwcApAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXZWJJbnNwZWN0b3IuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSS5oIgog
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIApAQCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1ib29sIFdlYkluc3BlY3Rvcjo6Y2FuU2F2ZSgpIGNvbnN0Citib29sIFdl
Ykluc3BlY3RvclVJOjpjYW5TYXZlKCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LVN0cmluZyBXZWJJbnNwZWN0b3I6OmxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdAorU3RyaW5n
IFdlYkluc3BlY3RvclVJOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgY29uc3QKIHsKICAgICByZXR1
cm4gImZpbGU6Ly8iICsgV2ViQ29yZTo6aW5zcGVjdG9yUmVzb3VyY2VQYXRoKCkgKyAiL2xvY2Fs
aXplZFN0cmluZ3MuanMiOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAKc2ltaWxhcml0eSBpbmRleCA5
MyUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJ
bnNwZWN0b3JHdGsuY3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcAppbmRleCA1YTBlZjllLi4yZjVlNDcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3Rv
ckd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJ
bnNwZWN0b3JVSUd0ay5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV2ViSW5zcGVjdG9yLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9y
VUkuaCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTM1LDEyICszNSwxMiBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotYm9vbCBXZWJJbnNwZWN0b3I6OmNhblNhdmUoKSBjb25zdAor
Ym9vbCBXZWJJbnNwZWN0b3JVSTo6Y2FuU2F2ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1TdHJpbmcgV2ViSW5zcGVjdG9yOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgY29uc3QK
K1N0cmluZyBXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFN0cmluZygicmVzb3VyY2U6Ly8vb3JnL3dlYmtpdGd0ay9pbnNwZWN0b3IvTG9j
YWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIik7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3Rvck1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yVUlN
YWMubW0Kc2ltaWxhcml0eSBpbmRleCA5MiUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JNYWMubW0KcmVuYW1lIHRvIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yVUlNYWMubW0KaW5kZXgg
Nzk1ZjQ1Ni4uMmJlNzZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsNyArMjQsNyBAQAogICov
CiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yLmgiCisjaW1wb3J0
ICJXZWJJbnNwZWN0b3JVSS5oIgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIApAQCAtMzQsMTIg
KzM0LDEyIEBAIFNPRlRfTElOS19TVEFHRURfRlJBTUVXT1JLKFdlYkluc3BlY3RvclVJLCBQcml2
YXRlRnJhbWV3b3JrcywgQSkKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWJvb2wgV2ViSW5zcGVj
dG9yOjpjYW5TYXZlKCkgY29uc3QKK2Jvb2wgV2ViSW5zcGVjdG9yVUk6OmNhblNhdmUoKQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1TdHJpbmcgV2ViSW5zcGVjdG9yOjpsb2NhbGl6ZWRTdHJp
bmdzVVJMKCkgY29uc3QKK1N0cmluZyBXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VS
TCgpCiB7CiAgICAgaWYgKCFtX2hhc0xvY2FsaXplZFN0cmluZ3NVUkwpIHsKICAgICAgICAgLy8g
Q2FsbCB0aGUgc29mdCBsaW5rIGZyYW1ld29yayBmdW5jdGlvbiB0byBkbG9wZW4gaXQsIHRoZW4g
W05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOl0gd2lsbCB3b3JrLgpAQCAtNTIsNiArNTIs
NyBAQCBTdHJpbmcgV2ViSW5zcGVjdG9yOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgY29uc3QKICAg
ICAgICAgICAgIG1fbG9jYWxpemVkU3RyaW5nc1VSTCA9IFN0cmluZygpOwogICAgICAgICBtX2hh
c0xvY2FsaXplZFN0cmluZ3NVUkwgPSB0cnVlOwogICAgIH0KKwogICAgIHJldHVybiBtX2xvY2Fs
aXplZFN0cmluZ3NVUkw7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237803</attachid>
            <date>2014-09-08 12:31:38 -0700</date>
            <delta_ts>2014-09-08 13:08:49 -0700</delta_ts>
            <desc>WIP (almost final x2)</desc>
            <filename>WIP.patch</filename>
            <type>text/plain</type>
            <size>120458</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYTk5MTExNy4uYTkxZjc3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTc3NSw2ICs3NzUsNyBAQCBfX1pON1dlYkNvcmUxN1NRTGl0ZVRyYW5zYWN0aW9u
RDFFdgogX19aTjdXZWJDb3JlMTdTdWJyZXNvdXJjZUxvYWRlcjZjcmVhdGVFUE5TXzVGcmFtZUVQ
TlNfMTRDYWNoZWRSZXNvdXJjZUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMjFSZXNvdXJj
ZUxvYWRlck9wdGlvbnNFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18xN0pT
RE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9fWk43
V2ViQ29yZTE3ZW5jb2RlRm9yRmlsZU5hbWVFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUx
N2V4ZWNTdGF0ZUZyb21QYWdlRVJOU18xNURPTVdyYXBwZXJXb3JsZEVQTlNfNFBhZ2VFCiBfX1pO
N1dlYkNvcmUxN2xhbmd1YWdlRGlkQ2hhbmdlRXYKIF9fWk43V2ViQ29yZTE3b3BlblRlbXBvcmFy
eUZpbGVFUktOM1dURjZTdHJpbmdFUmkKIF9fWk43V2ViQ29yZTE3c1JHQkNvbG9yU3BhY2VSZWZF
dgpAQCAtNzk4LDYgKzc5OSw3IEBAIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkOGFk
ZFR5cGVzRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDCiBfX1pON1dlYkNv
cmUxOFBsYXRmb3JtUGFzdGVib2FyZDhnZXRUeXBlc0VSTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5n
RUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0
ZWJvYXJkOHNldFR5cGVzRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDcmFz
aE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkQzFFUktOM1dU
RjZTdHJpbmdFCitfX1pON1dlYkNvcmUxOFNjcmlwdEdsb2JhbE9iamVjdDNzZXRFUE4zSlNDOUV4
ZWNTdGF0ZUVQS2NQTlNfMjFJbnNwZWN0b3JGcm9udGVuZEhvc3RFCiBfX1pON1dlYkNvcmUxOFN0
eWxlU2hlZXRDb250ZW50czExcGFyc2VTdHJpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNv
cmUxOFN0eWxlU2hlZXRDb250ZW50c0MxRVBOU18xNVN0eWxlUnVsZUltcG9ydEVSS04zV1RGNlN0
cmluZ0VSS05TXzE2Q1NTUGFyc2VyQ29udGV4dEUKIF9fWk43V2ViQ29yZTE4U3R5bGVTaGVldENv
bnRlbnRzRDFFdgpAQCAtMTkyOSw3ICsxOTMxLDEwIEBAIF9fWk5LN1dlYkNvcmU1UmFuZ2U5ZW5k
T2Zmc2V0RVJpCiBfX1pOSzdXZWJDb3JlNVJhbmdlOWZpcnN0Tm9kZUV2CiBfX1pOSzdXZWJDb3Jl
NVJhbmdlOXRleHRRdWFkc0VSTjNXVEY2VmVjdG9ySU5TXzlGbG9hdFF1YWRFTG0wRU5TMV8xNUNy
YXNoT25PdmVyZmxvd0VFRWJQTlMwXzIwUmFuZ2VJbkZpeGVkUG9zaXRpb25FCiBfX1pOSzdXZWJD
b3JlNVJhbmdlOXRleHRSZWN0c0VSTjNXVEY2VmVjdG9ySU5TXzdJbnRSZWN0RUxtMEVOUzFfMTVD
cmFzaE9uT3ZlcmZsb3dFRUViUE5TMF8yMFJhbmdlSW5GaXhlZFBvc2l0aW9uRQorX19aTks3V2Vi
Q29yZTZDaHJvbWUxMHdpbmRvd1JlY3RFdgogX19aTks3V2ViQ29yZTZDaHJvbWUxMmNyZWF0ZVdp
bmRvd0VQTlNfNUZyYW1lRVJLTlNfMTZGcmFtZUxvYWRSZXF1ZXN0RVJLTlNfMTRXaW5kb3dGZWF0
dXJlc0VSS05TXzE2TmF2aWdhdGlvbkFjdGlvbkUKK19fWk5LN1dlYkNvcmU2Q2hyb21lMTNzZXRX
aW5kb3dSZWN0RVJLTlNfOUZsb2F0UmVjdEUKK19fWk5LN1dlYkNvcmU2Q2hyb21lNHNob3dFdgog
X19aTks3V2ViQ29yZTZFZGl0b3IxMnNlbGVjdGVkVGV4dEV2CiBfX1pOSzdXZWJDb3JlNkVkaXRv
cjEzY2FuRWRpdFJpY2hseUV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjE2Y29tcG9zaXRpb25SYW5n
ZUV2CkBAIC0zMTI2LDEzICszMTMxLDE4IEBAIF9fWk43V2ViQ29yZTVDb2xvckMxRVJLTjNXVEY2
U3RyaW5nRQogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiBfX1pON1dlYkNvcmUxNFNjaGVtZVJlZ2lz
dHJ5MjdzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dl
YkNvcmUxNUluc3BlY3RvckNsaWVudDMxZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZUVQ
TlNfNFBhZ2VFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUxOEluc3BlY3RvclBhZ2VBZ2Vu
dDdmcmFtZUlkRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIx
NWNvbm5lY3RGcm9udGVuZEVQTjlJbnNwZWN0b3IyNEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbEUK
IF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4ZGlzY29ubmVjdEZyb250ZW5kRU45
SW5zcGVjdG9yMjVJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uRQogX19aTjdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyMThzZXRQcm9maWxlckVuYWJsZWRFYgogX19aTjdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyMjVldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kRVJLTjNXVEY2U3RyaW5n
RQotX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjZzZXRJbnNwZWN0b3JGcm9udGVu
ZENsaWVudEVOU3QzX18xMTB1bmlxdWVfcHRySU5TXzIzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRF
TlMxXzE0ZGVmYXVsdF9kZWxldGVJUzNfRUVFRQorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250
cm9sbGVyMjZzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudEVQTlNfMjNJbnNwZWN0b3JGcm9udGVu
ZENsaWVudEUKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI3ZGlzcGF0Y2hNZXNz
YWdlRnJvbUZyb250ZW5kRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JD
b250cm9sbGVyNHNob3dFdgogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyNWNsb3Nl
RXYKK19fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0MTZkaXNjb25uZWN0Q2xpZW50
RXYKK19fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0QzFFUE5TXzIzSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRFUE5TXzRQYWdlRQorX19aTjdXZWJDb3JlMjFJbnNwZWN0b3JGcm9udGVu
ZEhvc3REMUV2CiBfX1pON1dlYkNvcmUyMmluc3RydW1lbnRhdGlvbkZvclBhZ2VFUE5TXzRQYWdl
RQogX19aTjdXZWJDb3JlMjRJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24xN3NfZnJvbnRlbmRDb3Vu
dGVyRQogX19aTjdXZWJDb3JlMjRJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24yNmluc3RydW1lbnRp
bmdBZ2VudHNGb3JQYWdlRVBOU180UGFnZUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZjk2MDIzLi5lYWExOTlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NzYxLDcgKzE3NjEsNyBAQAogCQk0RjE1MzRFMDExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0Jl
aGF2aW9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRGMTUzNERGMTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3JUeXBlcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRGNEY1RkZC
MTFDQkQyRTEwMEExODZCRiAvKiBJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNEY1RkZBMTFD
QkQyRDIwMEExODZCRiAvKiBJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmNwcCAqLzsg
fTsKIAkJNEY2RkRENjQxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjZGREQ2MjEz
NDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmNwcCAqLzsgfTsKLQkJNEY2RkRE
NjUxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRENjMxMzQxREVERDAwMUY4RUUz
IC8qIEluc3BlY3RvclBhZ2VBZ2VudC5oICovOyB9OworCQk0RjZGREQ2NTEzNDFERUREMDAxRjhF
RTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0RjZGREQ2MzEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFn
ZUFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNEY3MDdBOTkxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRj
aGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
RjcwN0E5NzExRUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJz
LmNwcCAqLzsgfTsKIAkJNEY3MDdBOUExMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvcldlYkJh
Y2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEY3MDdBOTgxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvcldlYkJhY2tlbmRE
aXNwYXRjaGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTRGQjM5MEFEMTVFRjYxRjMwMDdBRDUxRiAvKiBHZW5lcmF0ZWRJbWFnZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RkIzOTBBQzE1RUY2
MUYzMDA3QUQ1MUYgLyogR2VuZXJhdGVkSW1hZ2UuY3BwICovOyB9OwpAQCAtMjMyNCw3ICsyMzI0
LDcgQEAKIAkJNzlGMkY1QTExMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlGMkY1OUUx
MDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuY3BwICovOyB9OwogCQk3OUYyRjVB
MjEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlGMkY1OUYxMDkxOTM5QTAwMEQ4N0NCIC8q
IENvbXBvc2l0aW9uRXZlbnQuaCAqLzsgfTsKIAkJN0EwRTc3MEUxMEMwMEE4ODAwQTAyNzZFIC8q
IEluc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzcwQjEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcCAqLzsgfTsKLQkJN0EwRTc3MEYxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3Bl
Y3RvckZyb250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0EwRTc3MEMxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9z
dC5oICovOyB9OworCQk3QTBFNzcwRjEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QTBFNzcwQzEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0EwRTc3MUUxMEMw
MERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NzFDMTBDMDBEQjEwMEEwMjc2
RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgKi87IH07CiAJCTdBMEU3NzFGMTBDMDBE
QjEwMEEwMjc2RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EwRTc3MUQxMEMwMERCMTAwQTAyNzZFIC8q
IEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggKi87IH07CiAJCTdBMUQ3RkNCMThGODVGMEYwMEMz
ODVBRCAvKiBtZWRpYUNvbnRyb2xzTG9jYWxpemVkU3RyaW5ncy5qcyBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0ExRDdGQzkxOEY4NUYwRjAwQzM4NUFE
IC8qIG1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJpbmdzLmpzICovOyB9OwpAQCAtMjM2Miw3ICsy
MzYyLDcgQEAKIAkJN0FCMEIxQzExMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFiYXNl
QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
QjBCMUJGMTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggKi87IH07
CiAJCTdBQ0Q4OEQzMTRDMDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUNEODhE
MTE0QzA4QkQ2MDA4NEVERDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwICovOyB9Owog
CQk3QUNEODhENDE0QzA4QkQ2MDA4NEVERDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQ0Q4OEQyMTRD
MDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oICovOyB9OwotCQk3QURF
NzIyNjEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FERTcyMjUxMENCQkI5QjAwNkIz
QjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLzsgfTsKKwkJN0FERTcyMjYxMENCQkI5QjAw
NkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBREU3MjI1MTBDQkJCOUIwMDZCM0IzQSAvKiBDb250ZXh0
TWVudVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0FGOUIyMDIxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFGQzE4Q0ZCMkRG
MDBDNjRCRUYgLyogVlRUUmVnaW9uLmNwcCAqLzsgfTsKIAkJN0FGOUIyMDMxOENGQjJERjAwQzY0
QkVGIC8qIFZUVFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0FGOUIxRkQxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5oICovOyB9Owog
CQk3QUY5QjIwNTE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uTGlzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFGRjE4Q0ZCMkRGMDBD
NjRCRUYgLyogVlRUUmVnaW9uTGlzdC5jcHAgKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oCmluZGV4IDhhYTA1NWIuLjkyYmYyMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oCkBA
IC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFNjcmlwdEdsb2JhbE9iamVjdCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBz
dGF0aWMgYm9vbCBzZXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0
b3JGcm9udGVuZEhvc3QqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzZXQoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0b3JGcm9udGVuZEhvc3QqKTsK
ICNlbmRpZgogCiAgICAgc3RhdGljIGJvb2wgZ2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hh
ciogbmFtZSwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuaAppbmRleCA4YTgyY2FiLi43ZTI2YWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKQEAgLTU4LDcgKzU4LDcgQEAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoSlNDOjpF
eGVjU3RhdGUqKTsKIEpTQzo6RXhlY1N0YXRlKiBtYWluV29ybGRFeGVjU3RhdGUoRnJhbWUqKTsK
IAogSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCYsIE5v
ZGUqKTsKLUpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tUGFnZShET01XcmFwcGVyV29ybGQm
LCBQYWdlKik7CitXRUJDT1JFX0VYUE9SVCBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVBh
Z2UoRE9NV3JhcHBlcldvcmxkJiwgUGFnZSopOwogSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZy
b21Xb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSopOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKaW5kZXggYzdjODc5NS4uMjA0MjUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODYsNiArODYsNyBAQCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3Rv
ckNsaWVudCogaW5zcGVjdG9yQwogICAgICwgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwobnVs
bHB0cikKICAgICAsIG1fcGFnZShwYWdlKQogICAgICwgbV9pbnNwZWN0b3JDbGllbnQoaW5zcGVj
dG9yQ2xpZW50KQorICAgICwgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudChudWxscHRyKQogICAg
ICwgbV9pc1VuZGVyVGVzdChmYWxzZSkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAg
ICAsIG1faGFzUmVtb3RlRnJvbnRlbmQoZmFsc2UpCkBAIC0xODgsOSArMTg5LDkgQEAgdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCkKICAgICBtX2luc3Bl
Y3RvckNsaWVudCA9IG51bGxwdHI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250ZW5k
Q2xpZW50PiBpbnNwZWN0b3JGcm9udGVuZENsaWVudCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIGlu
c3BlY3RvckZyb250ZW5kQ2xpZW50KQogewotICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQg
PSBXVEY6Om1vdmUoaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOworICAgIG1faW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQgPSBpbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIH0KIAogYm9vbCBJbnNwZWN0
b3JDb250cm9sbGVyOjpoYXNMb2NhbEZyb250ZW5kKCkgY29uc3QKQEAgLTIxMyw3ICsyMTQsNyBA
QCBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc1JlbW90ZUZyb250ZW5kKCkgY29uc3QKIAog
Ym9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuZ2V0KCk7CisgICAg
cmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiBmcmFtZSwgRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCkKQEAgLTI4Myw4ICsyODQsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OnNob3coKQogICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKICAgICAg
ICAgbV9pbnNwZWN0b3JDbGllbnQtPmJyaW5nRnJvbnRlbmRUb0Zyb250KCk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gbV9p
bnNwZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVuZCh0aGlzKTsKLSAgICAgICAgaWYg
KGZyb250ZW5kQ2hhbm5lbCkKKyAgICAgICAgaWYgKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsID0gbV9pbnNwZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVu
ZCh0aGlzKSkKICAgICAgICAgICAgIGNvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5oCmluZGV4IGZkNTU5MjQuLjMwZDNjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbG9z
ZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KEluc3BlY3RvckZyb250ZW5k
Q2xpZW50Kik7CiAgICAgYm9vbCBoYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIGNvbnN0Owog
ICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiwgRE9NV3JhcHBlcldv
cmxkJik7CiAKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWUoKTsK
IAogICAgIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KCkgY29uc3QgeyByZXR1cm4g
bV9pbnNwZWN0b3JDbGllbnQ7IH0KLSAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZUFnZW50OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgSW5zcGVj
dG9yUGFnZUFnZW50KiBwYWdlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VBZ2VudDsgfQog
CiAgICAgdmlydHVhbCBib29sIGRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVkU2NyaXB0U3RhdGUoSlNDOjpF
eGVjU3RhdGUqKSBjb25zdCBvdmVycmlkZTsKQEAgLTE0NiwxMCArMTQ2LDEwIEBAIHByaXZhdGU6
CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogbV90aW1lbGluZUFnZW50OwogCiAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50PiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50OwogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKICAgICBQYWdlJiBt
X3BhZ2U7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVudDsKKyAgICBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudCogbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudDsKICAgICBJbnNw
ZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CiAgICAgVmVjdG9yPEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSwgMj4gbV9pbmplY3RlZFNjcmlwdEluc3RydW1lbnRh
dGlvbkNvb2tpZXM7CiAgICAgYm9vbCBtX2lzVW5kZXJUZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCmluZGV4IDhlOGNkODUuLjFhNzRl
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEluc3BlY3RvckZyb250ZW5kSG9zdChjbGllbnQsIGZyb250ZW5kUGFnZSkpOwogICAgIH0K
IAotICAgIH5JbnNwZWN0b3JGcm9udGVuZEhvc3QoKTsKLSAgICB2b2lkIGRpc2Nvbm5lY3RDbGll
bnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+SW5zcGVjdG9yRnJvbnRlbmRIb3N0KCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCk7CiAKICAgICB2b2lkIGxvYWRl
ZCgpOwogICAgIHZvaWQgcmVxdWVzdFNldERvY2tTaWRlKGNvbnN0IFN0cmluZyYpOwpAQCAtOTUs
NyArOTUsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIGZyaWVu
ZCBjbGFzcyBGcm9udGVuZE1lbnVQcm92aWRlcjsKICNlbmRpZgotICAgIEluc3BlY3RvckZyb250
ZW5kSG9zdChJbnNwZWN0b3JGcm9udGVuZENsaWVudCosIFBhZ2UqIGZyb250ZW5kUGFnZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0KEluc3BlY3RvckZyb250ZW5k
Q2xpZW50KiwgUGFnZSogZnJvbnRlbmRQYWdlKTsKIAogICAgIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KiBtX2NsaWVudDsKICAgICBQYWdlKiBtX2Zyb250ZW5kUGFnZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCAxMTA2NzBlLi4yNWZlMWQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBA
IC0xNTUsNyArMTU1LDcgQEAgcHVibGljOgogICAgIEZyYW1lKiBtYWluRnJhbWUoKTsKICAgICBT
dHJpbmcgY3JlYXRlSWRlbnRpZmllcigpOwogICAgIEZyYW1lKiBmcmFtZUZvcklkKGNvbnN0IFN0
cmluZyYgZnJhbWVJZCk7Ci0gICAgU3RyaW5nIGZyYW1lSWQoRnJhbWUqKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgZnJhbWVJZChGcmFtZSopOwogICAgIGJvb2wgaGFzSWRGb3JGcmFtZShG
cmFtZSopIGNvbnN0OwogICAgIFN0cmluZyBsb2FkZXJJZChEb2N1bWVudExvYWRlciopOwogICAg
IEZyYW1lKiBmaW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5S
YXdTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggZmNhN2Y5MC4uM2U0ZjVmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5oCkBAIC0xMDIsOCArMTAyLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjb250
ZW50c1NpemVDaGFuZ2VkKEZyYW1lKiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0OwogCi0gICAgdm9p
ZCBzZXRXaW5kb3dSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwotICAgIEZsb2F0UmVjdCB3
aW5kb3dSZWN0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXaW5kb3dSZWN0
KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCB3
aW5kb3dSZWN0KCkgY29uc3Q7CiAKICAgICBGbG9hdFJlY3QgcGFnZVJlY3QoKSBjb25zdDsKIApA
QCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvY3VzZWRGcmFtZUNoYW5nZWQo
RnJhbWUqKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2UqIGNyZWF0ZVdpbmRvdyhG
cmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNv
bnN0IE5hdmlnYXRpb25BY3Rpb24mKSBjb25zdDsKLSAgICB2b2lkIHNob3coKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNob3coKSBjb25zdDsKIAogICAgIGJvb2wgY2FuUnVuTW9k
YWwoKSBjb25zdDsKICAgICBib29sIGNhblJ1bk1vZGFsTm93KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYWM5NmY1NS4uZTcxOTIxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTQ3MSwxMiArMTQ3MSwxMCBAQCBQYXNzUmVmUHRy
PERPTVdpbmRvdz4gSW50ZXJuYWxzOjpvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBT
dHJpbmcmIHVybCkKICAgICBQYWdlKiBmcm9udGVuZFBhZ2UgPSBtX2Zyb250ZW5kV2luZG93LT5k
b2N1bWVudCgpLT5wYWdlKCk7CiAgICAgQVNTRVJUKGZyb250ZW5kUGFnZSk7CiAKLSAgICBhdXRv
IGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZENsaWVu
dER1bW15PigmcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBmcm9udGVuZFBhZ2UpOwotCi0g
ICAgZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7Ci0KLSAgICBtX2Zyb250ZW5kQ2hh
bm5lbCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teShmcm9udGVu
ZFBhZ2UpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3JGcm9udGVuZENsaWVudER1bW15PigmcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBmcm9u
dGVuZFBhZ2UpOworICAgIGZyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldElu
c3BlY3RvckZyb250ZW5kQ2xpZW50KG1fZnJvbnRlbmRDbGllbnQuZ2V0KCkpOwogCisgICAgbV9m
cm9udGVuZENoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bER1bW15Pihmcm9udGVuZFBhZ2UpOwogICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5j
b25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENoYW5uZWwuZ2V0KCkpOwogCiAgICAgcmV0dXJuIG1f
ZnJvbnRlbmRXaW5kb3c7CkBAIC0xNDkwLDEwICsxNDg4LDExIEBAIHZvaWQgSW50ZXJuYWxzOjpj
bG9zZUR1bW15SW5zcGVjdG9yRnJvbnRlbmQoKQogCiAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNw
ZWN0b3JEZXN0cm95ZWQpOwogCi0gICAgbV9mcm9udGVuZENoYW5uZWwucmVsZWFzZSgpOworICAg
IG1fZnJvbnRlbmRDbGllbnQgPSBudWxscHRyOworICAgIG1fZnJvbnRlbmRDaGFubmVsID0gbnVs
bHB0cjsKIAogICAgIG1fZnJvbnRlbmRXaW5kb3ctPmNsb3NlKG1fZnJvbnRlbmRXaW5kb3ctPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgbV9mcm9udGVuZFdpbmRvdy5yZWxlYXNlKCk7
CisgICAgbV9mcm9udGVuZFdpbmRvdy5jbGVhcigpOwogfQogCiB2b2lkIEludGVybmFsczo6c2V0
SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBl
YykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDNmZjlhN2YuLjZjYzdkMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBEb2N1
bWVudE1hcmtlcjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbER1bW15OworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1t
eTsKIGNsYXNzIEludGVybmFsU2V0dGluZ3M7CiBjbGFzcyBNYWxsb2NTdGF0aXN0aWNzOwogY2xh
c3MgTWVtb3J5SW5mbzsKQEAgLTM1MCw3ICszNTEsOCBAQCBwcml2YXRlOgogICAgIERvY3VtZW50
TWFya2VyKiBtYXJrZXJBdChOb2RlKiwgY29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlLCB1bnNpZ25l
ZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgUmVm
UHRyPERPTVdpbmRvdz4gbV9mcm9udGVuZFdpbmRvdzsKLSAgICBPd25QdHI8SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsRHVtbXk+IG1fZnJvbnRlbmRDaGFubmVsOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudER1bW15PiBtX2Zyb250ZW5kQ2xpZW50OworICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teT4gbV9mcm9udGVuZENo
YW5uZWw7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvTWFpbi5qcwppbmRleCBmNTVhZjQ3Li4wODk4NjU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCkBAIC00OSw3ICs0
OSw3IEBAIFdlYkluc3BlY3Rvci5UeXBlSWRlbnRpZmllckNvb2tpZUtleSA9ICJyZXByZXNlbnRl
ZC1vYmplY3QtdHlwZSI7CiAKIFdlYkluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiB7Ci0g
ICAgLy8gVGVsbCB0aGUgSW5zcGVjdG9yRnJvbnRlbmRIb3N0IHdlIGxvYWRlZCBmaXJzdCB0byBl
c3RhYmxpc2ggY29tbXVuaWNhdGlvbiB3aXRoIEluc3BlY3RvckJhY2tlbmQuCisgICAgLy8gVGVs
bCB0aGUgSW5zcGVjdG9yRnJvbnRlbmRIb3N0IHdlIGxvYWRlZCwgd2hpY2ggY2F1c2VzIHRoZSB3
aW5kb3cgdG8gZGlzcGxheS4KICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZGVkKCk7CiAK
ICAgICAvLyBJbml0aWFsaXplIFdlYlNvY2tldCB0byBjb21tdW5pY2F0aW9uCkBAIC0zMjgsOSAr
MzI4LDYgQEAgV2ViSW5zcGVjdG9yLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgaWYg
KHRoaXMuX2RldGFpbHNTaWRlYmFyV2lkdGhTZXR0aW5nLnZhbHVlKQogICAgICAgICB0aGlzLmRl
dGFpbHNTaWRlYmFyLndpZHRoID0gdGhpcy5fZGV0YWlsc1NpZGViYXJXaWR0aFNldHRpbmcudmFs
dWU7CiAKLSAgICAvLyBVcGRhdGUgdGhlIGRvY2tlZCBzdGF0ZSBiYXNlZCBvbiB0aGUgcXVlcnkg
c3RyaW5nIHBhc3NlZCB3aGVuIHRoZSBXZWIgSW5zcGVjdG9yIHdhcyBsb2FkZWQuCi0gICAgdGhp
cy51cGRhdGVEb2NrZWRTdGF0ZShwYXJzZUxvY2F0aW9uUXVlcnlQYXJhbWV0ZXJzKCkuZG9ja1Np
ZGUgfHwgInVuZG9ja2VkIik7Ci0KICAgICAvLyBUZWxsIHRoZSBmcm9udGVuZCBBUEkgd2UgYXJl
IGxvYWRlZCBzbyBhbnkgcGVuZGluZyBmcm9udGVuZCBjb21tYW5kcyBjYW4gYmUgZGlzcGF0Y2hl
ZC4KICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3Rv
ckZyb250ZW5kQVBJLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKaW5kZXggMTIyNzIxMS4uN2I4ZGViMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5z
cGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAgLTI1LDI4ICsyNSwxNiBA
QAogCiBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICBfbG9hZGVkOiBmYWxzZSwKLQogICAg
IF9wZW5kaW5nQ29tbWFuZHM6IFtdLAogCiAgICAgc2F2ZWRVUkw6IGZ1bmN0aW9uKHVybCkKICAg
ICB7Ci0gICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgICAgIC8vIE5vdCB1
c2VkIHlldC4KICAgICB9LAogCiAgICAgYXBwZW5kZWRUb1VSTDogZnVuY3Rpb24odXJsKQogICAg
IHsKLSAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KLSAgICB9LAotCi0gICAgaXNE
ZWJ1Z2dpbmdFbmFibGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogTm90
IGltcGxlbWVudGVkLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKLQotICAgIHNldERl
YnVnZ2luZ0VuYWJsZWQ6IGZ1bmN0aW9uKGVuYWJsZWQpCi0gICAgewotICAgICAgICAvLyBGSVhN
RTogTm90IGltcGxlbWVudGVkLgorICAgICAgICAvLyBOb3QgdXNlZCB5ZXQuCiAgICAgfSwKIAog
ICAgIGlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkOiBmdW5jdGlvbigpCkBAIC0xMDgsMTEgKzk2
LDYgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNv
dXJjZVNpZGViYXJQYW5lbC5zaG93U291cmNlQ29kZUZvckZyYW1lKGZyYW1lSWRlbnRpZmllciwg
dHJ1ZSk7CiAgICAgfSwKIAotICAgIHNldERvY2tpbmdVbmF2YWlsYWJsZTogZnVuY3Rpb24odW5h
dmFpbGFibGUpCi0gICAgewotICAgICAgICAvLyBOb3QgdXNlZC4KLSAgICB9LAotCiAgICAgY29u
dGV4dE1lbnVJdGVtU2VsZWN0ZWQ6IGZ1bmN0aW9uKGlkKQogICAgIHsKICAgICAgICAgV2ViSW5z
cGVjdG9yLmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGlkKTsKQEAgLTE0MSw2ICsxMjQsMTAgQEAg
SW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgbWV0aG9k
TmFtZSA9IHNpZ25hdHVyZS5zaGlmdCgpOworICAgICAgICBjb25zb2xlLmFzc2VydChJbnNwZWN0
b3JGcm9udGVuZEFQSVttZXRob2ROYW1lXSwgIlVuZXhwZWN0ZWQgSW5zcGVjdG9yRnJvbnRlbmRB
UEkgbWV0aG9kIG5hbWU6ICIgKyBJbnNwZWN0b3JGcm9udGVuZEFQSVttZXRob2ROYW1lXSk7Cisg
ICAgICAgIGlmICghSW5zcGVjdG9yRnJvbnRlbmRBUElbbWV0aG9kTmFtZV0pCisgICAgICAgICAg
ICByZXR1cm47CisKICAgICAgICAgcmV0dXJuIEluc3BlY3RvckZyb250ZW5kQVBJW21ldGhvZE5h
bWVdLmFwcGx5KEluc3BlY3RvckZyb250ZW5kQVBJLCBzaWduYXR1cmUpOwogICAgIH0sCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgKaW5kZXggNDg1NjgzNi4uODk4NzdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTEwMCw3ICsxMDAs
NyBAQCBwcml2YXRlOgogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKICAgICBSZXRhaW5QdHI8V2Vi
Tm9kZUhpZ2hsaWdodGVyPiBtX2hpZ2hsaWdodGVyOwogICAgIFdlYkNvcmU6OlBhZ2UqIG1fZnJv
bnRlbmRQYWdlOwotICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2Zyb250ZW5kQ2xp
ZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9m
cm9udGVuZENsaWVudDsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDZlMTc4OWQuLjgzMDhiOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0KQEAgLTEzMyw4ICsxMzMsNyBAQCBAZW5kCiBXZWJJbnNwZWN0b3JDbGll
bnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3
KHdlYlZpZXcpCiAgICAgLCBtX2hpZ2hsaWdodGVyKGFkb3B0TlMoW1tXZWJOb2RlSGlnaGxpZ2h0
ZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzp3ZWJWaWV3XSkpCi0gICAgLCBtX2Zy
b250ZW5kUGFnZSgwKQotICAgICwgbV9mcm9udGVuZENsaWVudCgwKQorICAgICwgbV9mcm9udGVu
ZFBhZ2UobnVsbHB0cikKIHsKIH0KIApAQCAtMTUwLDExICsxNDksMTMgQEAgSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJ
bnNwZWN0b3JDb24KICAgICBbd2luZG93Q29udHJvbGxlci5nZXQoKSBzZXRJbnNwZWN0b3JDbGll
bnQ6dGhpc107CiAKICAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIu
Z2V0KCkgd2ViVmlld10pOwotICAgIGF1dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX3dlYlZpZXcsIHdpbmRvd0NvbnRyb2xs
ZXIuZ2V0KCksIGluc3BlY3RvckNvbnRyb2xsZXIsIG1fZnJvbnRlbmRQYWdlLCBjcmVhdGVGcm9u
dGVuZFNldHRpbmdzKCkpOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBmcm9udGVuZENsaWVudC5n
ZXQoKTsKLSAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yRnJvbnRlbmQ+IHdlYkluc3BlY3RvckZy
b250ZW5kID0gYWRvcHROUyhbW1dlYkluc3BlY3RvckZyb250ZW5kIGFsbG9jXSBpbml0V2l0aEZy
b250ZW5kQ2xpZW50OmZyb250ZW5kQ2xpZW50LmdldCgpXSk7CisgICAgbV9mcm9udGVuZENsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fd2ViVmll
dywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdG9yQ29udHJvbGxlciwgbV9mcm9udGVu
ZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CisKKyAgICBSZXRhaW5QdHI8V2ViSW5z
cGVjdG9yRnJvbnRlbmQ+IHdlYkluc3BlY3RvckZyb250ZW5kID0gYWRvcHROUyhbW1dlYkluc3Bl
Y3RvckZyb250ZW5kIGFsbG9jXSBpbml0V2l0aEZyb250ZW5kQ2xpZW50Om1fZnJvbnRlbmRDbGll
bnQuZ2V0KCldKTsKICAgICBbW21fd2ViVmlldyBpbnNwZWN0b3JdIHNldEZyb250ZW5kOndlYklu
c3BlY3RvckZyb250ZW5kLmdldCgpXTsKLSAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9udGVuZENs
aWVudCkpOworCisgICAgbV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJ
bnNwZWN0b3JGcm9udGVuZENsaWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsKKwogICAgIHJl
dHVybiB0aGlzOwogfQogCkBAIC0xOTksOCArMjAwLDggQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGll
bnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKQogCiB2b2lkIFdlYkluc3Bl
Y3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5kKCkKIHsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0g
MDsKLSAgICBtX2Zyb250ZW5kUGFnZSA9IDA7CisgICAgbV9mcm9udGVuZENsaWVudCA9IG51bGxw
dHI7CisgICAgbV9mcm9udGVuZFBhZ2UgPSBudWxscHRyOwogfQogCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50
eHQKaW5kZXggNGYzOTIzZC4uYWRlM2ZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTUzMCw3
ICs1MzAsNiBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAotICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbHVnSW5DbGllbnQuY3BwCkBAIC01NTIsNiArNTUxLDcgQEAgc2V0KFdlYktpdDJf
U09VUkNFUwogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5jcHAKICAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3Rvci5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUku
Y3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNw
cAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAogICAgIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rl
cml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCmlu
ZGV4IDU5Mzg2Y2IuLmQ1ZDdjZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTEyMSw2ICsxMjEsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBXZWJJY29uRGF0YWJh
c2VQcm94eSBcCiAgICAgV2ViSW5zcGVjdG9yIFwKICAgICBXZWJJbnNwZWN0b3JQcm94eSBcCisg
ICAgV2ViSW5zcGVjdG9yVUkgXAogICAgIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyIFwKICAgICBXZWJN
ZWRpYUNhY2hlTWFuYWdlclByb3h5IFwKICAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggMDUxMjc5Yi4uZThiMmUwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1FZmwuY21ha2UKQEAgLTE5Miw3ICsxOTIsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NP
VVJDRVMKIAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9hdGsvV2ViUGFnZUFjY2Vzc2liaWxpdHlP
YmplY3RBdGsuY3BwCiAKLSAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3RvckVm
bC5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3RvclVJRWZsLmNwcAog
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKIAogICAgIFdlYlByb2Nl
c3MvZWZsL1NlY2NvbXBGaWx0ZXJzV2ViUHJvY2Vzc0VmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsu
Y21ha2UKaW5kZXggNzJkYTdiYi4uMDM4YzhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UK
QEAgLTMwMiw3ICszMDIsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFdl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKICAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1ByaW50ZXJMaXN0R3RrLmNwcAotICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvV2ViSW5zcGVjdG9yR3RrLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5z
cGVjdG9yVUlHdGsuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNw
cAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAppbmRleCA2ZGY0OTE4Li45MjJlNmRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSU9iamVjdC5oCkBAIC0xNDMsNiArMTQzLDcgQEAgcHVibGljOgogICAgICAg
ICBCdW5kbGVGcmFtZSwKICAgICAgICAgQnVuZGxlSGl0VGVzdFJlc3VsdCwKICAgICAgICAgQnVu
ZGxlSW5zcGVjdG9yLAorICAgICAgICBCdW5kbGVJbnNwZWN0b3JVSSwKICAgICAgICAgQnVuZGxl
TmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgQnVuZGxlTm9kZUhhbmRsZSwKICAgICAgICAgQnVu
ZGxlUGFnZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0lu
c3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3Iu
Y3BwCmluZGV4IDE2ZTg0NWIuLmQ4NWY1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcApAQCAtMTc0LDQ0ICsxNzQsNiBAQCB2b2lkIFdLSW5z
cGVjdG9yRGV0YWNoKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKICNlbmRpZgogfQogCi1i
b29sIFdLSW5zcGVjdG9ySXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KFdLSW5zcGVjdG9yUmVmIGluc3Bl
Y3RvclJlZikKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHJldHVybiB0b0ltcGwoaW5z
cGVjdG9yUmVmKS0+aXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShpbnNwZWN0b3JSZWYpOwotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi12b2lk
IFdLSW5zcGVjdG9yVG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZyhXS0luc3BlY3RvclJlZiBpbnNw
ZWN0b3JSZWYpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICB0b0ltcGwoaW5zcGVjdG9y
UmVmKS0+dG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZygpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oaW5zcGVjdG9yUmVmKTsKLSNlbmRpZgotfQotCi1ib29sIFdLSW5zcGVjdG9ySXNQcm9maWxp
bmdKYXZhU2NyaXB0KFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKLXsKLSNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgIHJldHVybiB0b0ltcGwoaW5zcGVjdG9yUmVmKS0+aXNQcm9maWxpbmdK
YXZhU2NyaXB0KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0b3JSZWYpOwotICAg
IHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi12b2lkIFdLSW5zcGVjdG9yVG9nZ2xlSmF2YVNj
cmlwdFByb2ZpbGluZyhXS0luc3BlY3RvclJlZiBpbnNwZWN0b3JSZWYpCi17Ci0jaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICB0b0ltcGwoaW5zcGVjdG9yUmVmKS0+dG9nZ2xlSmF2YVNjcmlwdFBy
b2ZpbGluZygpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oaW5zcGVjdG9yUmVmKTsKLSNlbmRp
ZgotfQotCiBib29sIFdLSW5zcGVjdG9ySXNQcm9maWxpbmdQYWdlKFdLSW5zcGVjdG9yUmVmIGlu
c3BlY3RvclJlZikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuaAppbmRleCBiYTc2NDg5Li4xNDY1NGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuaApAQCAtNTgsMTIg
KzU4LDYgQEAgV0tfRVhQT1JUIGJvb2wgV0tJbnNwZWN0b3JJc0F0dGFjaGVkKFdLSW5zcGVjdG9y
UmVmIGluc3BlY3Rvcik7CiBXS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvckF0dGFjaChXS0luc3Bl
Y3RvclJlZiBpbnNwZWN0b3IpOwogV0tfRVhQT1JUIHZvaWQgV0tJbnNwZWN0b3JEZXRhY2goV0tJ
bnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKIAotV0tfRVhQT1JUIGJvb2wgV0tJbnNwZWN0b3JJc0Rl
YnVnZ2luZ0phdmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKLVdLX0VYUE9SVCB2
b2lkIFdLSW5zcGVjdG9yVG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZyhXS0luc3BlY3RvclJlZiBp
bnNwZWN0b3IpOwotCi1XS19FWFBPUlQgYm9vbCBXS0luc3BlY3RvcklzUHJvZmlsaW5nSmF2YVNj
cmlwdChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwotV0tfRVhQT1JUIHZvaWQgV0tJbnNwZWN0
b3JUb2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7Ci0K
IFdLX0VYUE9SVCBib29sIFdLSW5zcGVjdG9ySXNQcm9maWxpbmdQYWdlKFdLSW5zcGVjdG9yUmVm
IGluc3BlY3Rvcik7CiBXS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvclRvZ2dsZVBhZ2VQcm9maWxp
bmcoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggYmUzNzcwNC4uNjUxOTY2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1v
YmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAt
MzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJXZWJJ
bnNwZWN0b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5TWVzc2FnZXMu
aCIKLSNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiV2Vi
SW5zcGVjdG9yVUlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCkBAIC01Nyw5
ICs1Nyw2IEBAIGNvbnN0IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5OjptaW5pbXVtV2luZG93
SGVpZ2h0ID0gNDAwOwogY29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OmluaXRpYWxX
aW5kb3dXaWR0aCA9IDEwMDA7CiBjb25zdCB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5p
dGlhbFdpbmRvd0hlaWdodCA9IDY1MDsKIAotY29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJv
eHk6Om1pbmltdW1BdHRhY2hlZFdpZHRoID0gNzUwOwotY29uc3QgdW5zaWduZWQgV2ViSW5zcGVj
dG9yUHJveHk6Om1pbmltdW1BdHRhY2hlZEhlaWdodCA9IDI1MDsKLQogY2xhc3MgV2ViSW5zcGVj
dG9yUGFnZUdyb3VwcyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYkluc3BlY3RvclBhZ2VHcm91
cHMmIHNoYXJlZCgpCkBAIC0xMDUsMTEgKzEwMiwxMiBAQCBwcml2YXRlOgogICAgICAgICBSZWZQ
dHI8V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShTdHJpbmc6
OmZvcm1hdCgiX19XZWJJbnNwZWN0b3JQYWdlR3JvdXBMZXZlbCV1X18iLCBsZXZlbCksIGZhbHNl
LCBmYWxzZSk7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIC8vIEFsbG93IGRldmVsb3BlcnMg
dG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMuCisgICAgICAgIC8v
IEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBi
dWlsZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICAgICAgcGFnZUdyb3VwLT5wcmVm
ZXJlbmNlcygpLnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CiAgICAgICAgIHBhZ2VH
cm91cC0+cHJlZmVyZW5jZXMoKS5zZXRMb2dzUGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xlRW5h
YmxlZCh0cnVlKTsKICNlbmRpZgogCisgICAgICAgIHBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5z
ZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHModHJ1ZSk7CiAgICAgICAgIHBhZ2VHcm91cC0+
cHJlZmVyZW5jZXMoKS5zZXRBcHBsaWNhdGlvbkNocm9tZU1vZGVFbmFibGVkKHRydWUpOwogCiAg
ICAgICAgIHJldHVybiBwYWdlR3JvdXAucmVsZWFzZSgpOwpAQCAtMTI0LDEzICsxMjIsMTIgQEAg
cHJpdmF0ZToKIAogV2ViSW5zcGVjdG9yUHJveHk6OldlYkluc3BlY3RvclByb3h5KFdlYlBhZ2VQ
cm94eSogcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQorICAgICwgbV9pbnNwZWN0b3JQYWdlKG51
bGxwdHIpCiAgICAgLCBtX2lzVmlzaWJsZShmYWxzZSkKICAgICAsIG1faXNBdHRhY2hlZChmYWxz
ZSkKLSAgICAsIG1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KGZhbHNlKQotICAgICwgbV9pc1Byb2Zp
bGluZ0phdmFTY3JpcHQoZmFsc2UpCisgICAgLCBtX2NhbkF0dGFjaChmYWxzZSkKICAgICAsIG1f
aXNQcm9maWxpbmdQYWdlKGZhbHNlKQogICAgICwgbV9zaG93TWVzc2FnZVNlbnQoZmFsc2UpCi0g
ICAgLCBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlKGZhbHNlKQogICAgICwgbV9pZ25vcmVGaXJzdEJy
aW5nVG9Gcm9udChmYWxzZSkKICAgICAsIG1fYXR0YWNobWVudFNpZGUoQXR0YWNobWVudFNpZGVC
b3R0b20pCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCkBAIC0xODgsNiArMTg1
LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdCgpCiAgICAgbV9zaG93TWVzc2Fn
ZVNlbnQgPSB0cnVlOwogICAgIG1faWdub3JlRmlyc3RCcmluZ1RvRnJvbnQgPSB0cnVlOwogCisg
ICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKKwogICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvdygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
IH0KIApAQCAtMjMyLDYgKzIzMSw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25z
b2xlKCkKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgZWFnZXJseUNy
ZWF0ZUluc3BlY3RvclBhZ2UoKTsKKwogICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3Rvcjo6U2hvd0NvbnNvbGUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAK
QEAgLTI0MCw2ICsyNDEsOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93UmVzb3VyY2Vz
KCkKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgZWFnZXJseUNyZWF0
ZUluc3BlY3RvclBhZ2UoKTsKKwogICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3Rvcjo6U2hvd1Jlc291cmNlcygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIApA
QCAtMjQ4LDYgKzI1MSw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dNYWluUmVzb3Vy
Y2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSkKICAgICBpZiAoIW1fcGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKKwogICAgIG1f
cGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd01haW5SZXNv
dXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIApA
QCAtMjc0LDEzICsyNzksMTUgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoKEF0dGFj
aG1lbnRTaWRlIHNpZGUpCiAgICAgaWYgKG1faXNWaXNpYmxlKQogICAgICAgICBpbnNwZWN0b3JQ
YWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS5zZXRJbnNwZWN0b3JTdGFydHNBdHRhY2hlZCh0cnVl
KTsKIAorICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6
U2V0QXR0YWNoZWQodHJ1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworCiAgICAgc3dpdGNoIChtX2F0
dGFjaG1lbnRTaWRlKSB7CiAgICAgY2FzZSBBdHRhY2htZW50U2lkZUJvdHRvbToKLSAgICAgICAg
bV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpBdHRhY2hlZEJv
dHRvbSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90dG9tKCksIG1f
aW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQXR0
YWNobWVudFNpZGVSaWdodDoKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpBdHRhY2hlZFJpZ2h0KCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
ICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCkBAIC0yOTcsNyArMzA0LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6ZGV0YWNoKCkKICAgICBpZiAobV9pc1Zpc2libGUpCiAgICAgICAgIGluc3BlY3RvclBh
Z2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKGZhbHNl
KTsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6
RGV0YWNoZWQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChmYWxzZSksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJOjpEZXRhY2hlZCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKIAog
ICAgIHBsYXRmb3JtRGV0YWNoKCk7CiB9CkBAIC0zMTQsMzQgKzMyMiw2IEBAIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCiAgICAg
cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKTsKIH0KIAotdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6dG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZygpCi17Ci0gICAgaWYgKCFtX3Bh
Z2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2lzRGVidWdnaW5nSmF2YVNjcmlwdCkK
LSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpT
dG9wSmF2YVNjcmlwdERlYnVnZ2luZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICBlbHNlCi0g
ICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3Rh
cnRKYXZhU2NyaXB0RGVidWdnaW5nKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotCi0gICAgLy8gRklY
TUU6IGhhdmUgdGhlIFdlYlByb2Nlc3Mgbm90aWZ5IHVzIG9uIHN0YXRlIGNoYW5nZXMuCi0gICAg
bV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQgPSAhbV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQ7Ci19Ci0K
LXZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmcoKQotewot
ICAgIGlmICghbV9wYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9pc1Byb2ZpbGlu
Z0phdmFTY3JpcHQpCi0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3Rvcjo6U3RvcEphdmFTY3JpcHRQcm9maWxpbmcoKSwgbV9wYWdlLT5wYWdlSUQoKSk7
Ci0gICAgZWxzZQotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OlN0YXJ0SmF2YVNjcmlwdFByb2ZpbGluZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
LQotICAgIC8vIEZJWE1FOiBoYXZlIHRoZSBXZWJQcm9jZXNzIG5vdGlmeSB1cyBvbiBzdGF0ZSBj
aGFuZ2VzLgotICAgIG1faXNQcm9maWxpbmdKYXZhU2NyaXB0ID0gIW1faXNQcm9maWxpbmdKYXZh
U2NyaXB0OwotfQotCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVQYWdlUHJvZmlsaW5n
KCkKIHsKICAgICBpZiAoIW1fcGFnZSkKQEAgLTQyNiwyOSArNDA2LDIwIEBAIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKIAogdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OkRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChtZXNzYWdlKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yOjpTZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CiB9CiAjZW5kaWYKIAotLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2Vz
Ci12b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKHVpbnQ2NF90JiBp
bnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIGluc3BlY3RvclBhZ2VQ
YXJhbWV0ZXJzKQordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZWFnZXJseUNyZWF0ZUluc3BlY3Rv
clBhZ2UoKQogewotICAgIGluc3BlY3RvclBhZ2VJRCA9IDA7Ci0KLSAgICBpZiAoIW1fcGFnZSkK
KyAgICBpZiAobV9pbnNwZWN0b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2lzQXR0
YWNoZWQgPSBzaG91bGRPcGVuQXR0YWNoZWQoKTsKLSAgICBtX2F0dGFjaG1lbnRTaWRlID0gc3Rh
dGljX2Nhc3Q8QXR0YWNobWVudFNpZGU+KGluc3BlY3RvclBhZ2VHcm91cCgpLT5wcmVmZXJlbmNl
cygpLmluc3BlY3RvckF0dGFjaG1lbnRTaWRlKCkpOwotCi0gICAgV2ViUGFnZVByb3h5KiBpbnNw
ZWN0b3JQYWdlID0gcGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCk7Ci0gICAgQVNTRVJUKGlu
c3BlY3RvclBhZ2UpOwotICAgIGlmICghaW5zcGVjdG9yUGFnZSkKKyAgICBtX2luc3BlY3RvclBh
Z2UgPSBwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKKyAgICBBU1NFUlQobV9pbnNwZWN0
b3JQYWdlKTsKKyAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaW5zcGVjdG9yUGFnZUlEID0gaW5zcGVjdG9yUGFnZS0+cGFnZUlEKCk7Ci0gICAgaW5zcGVj
dG9yUGFnZVBhcmFtZXRlcnMgPSBpbnNwZWN0b3JQYWdlLT5jcmVhdGlvblBhcmFtZXRlcnMoKTsK
LQogICAgIFdLUGFnZVBvbGljeUNsaWVudFYxIHBvbGljeUNsaWVudCA9IHsKICAgICAgICAgeyAx
LCB0aGlzIH0sCiAgICAgICAgIDAsIC8qIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25f
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAqLwpAQCAtNDU5LDY5ICs0MzAsNDggQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZSh1aW50NjRfdCYgaW5zcGVjdG9yUGFn
ZUlELCBXZWJQYWdlQ3IKICAgICAgICAgMCwgLyogZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UgKi8K
ICAgICB9OwogCi0gICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSShpbnNwZWN0b3JQ
YWdlKSwgJnBvbGljeUNsaWVudC5iYXNlKTsKLQotICAgIFN0cmluZ0J1aWxkZXIgdXJsOworICAg
IFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQodG9BUEkobV9pbnNwZWN0b3JQYWdlKSwgJnBvbGlj
eUNsaWVudC5iYXNlKTsKIAotICAgIHVybC5hcHBlbmQoaW5zcGVjdG9yUGFnZVVSTCgpKTsKLQot
ICAgIHVybC5hcHBlbmRMaXRlcmFsKCI/ZG9ja1NpZGU9Iik7Ci0KLSAgICBpZiAobV9pc0F0dGFj
aGVkKSB7Ci0gICAgICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewotICAgICAgICBjYXNl
IEF0dGFjaG1lbnRTaWRlQm90dG9tOgotICAgICAgICAgICAgdXJsLmFwcGVuZExpdGVyYWwoImJv
dHRvbSIpOwotICAgICAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yOjpBdHRhY2hlZEJvdHRvbSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlUmlnaHQ6Ci0gICAgICAgICAg
ICB1cmwuYXBwZW5kTGl0ZXJhbCgicmlnaHQiKTsKLSAgICAgICAgICAgIG1fcGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6QXR0YWNoZWRSaWdodCgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0g
ICAgICAgIHVybC5hcHBlbmRMaXRlcmFsKCJ1bmRvY2tlZCIpOwotCi0gICAgbV9wYWdlLT5wcm9j
ZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChpbnNwZWN0b3JCYXNlVVJMKCkpOwotCi0g
ICAgaW5zcGVjdG9yUGFnZS0+bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCB1cmwudG9TdHJpbmcoKSkp
OwotCi0gICAgbV9jcmVhdGVkSW5zcGVjdG9yUGFnZSA9IHRydWU7CisgICAgbV9pbnNwZWN0b3JQ
YWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7Cisg
ICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChp
bnNwZWN0b3JCYXNlVVJMKCkpOwogfQogCi12b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJ
bnNwZWN0b3JQYWdlRm9yVGVzdCh1aW50NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycykKKy8vIENhbGxlZCBieSBX
ZWJJbnNwZWN0b3JQcm94eSBtZXNzYWdlcwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRl
SW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wg
Y2FuQXR0YWNoLCBib29sIHVuZGVyVGVzdCkKIHsKLSAgICBpbnNwZWN0b3JQYWdlSUQgPSAwOwot
CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faXNBdHRhY2hlZCA9
IGZhbHNlOworICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CiAKLSAgICBXZWJQYWdl
UHJveHkqIGluc3BlY3RvclBhZ2UgPSBwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKLSAg
ICBBU1NFUlQoaW5zcGVjdG9yUGFnZSk7Ci0gICAgaWYgKCFpbnNwZWN0b3JQYWdlKQorICAgIEFT
U0VSVChtX2luc3BlY3RvclBhZ2UpOworICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpbnNwZWN0b3JQYWdlSUQgPSBpbnNwZWN0b3JQYWdlLT5wYWdlSUQo
KTsKLSAgICBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycyA9IGluc3BlY3RvclBhZ2UtPmNyZWF0aW9u
UGFyYW1ldGVycygpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlm
aWVyLCBtX3BhZ2UtPnBhZ2VJRCgpLCBmYWxzZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkp
OwogCi0gICAgV0tQYWdlUG9saWN5Q2xpZW50VjEgcG9saWN5Q2xpZW50ID0gewotICAgICAgICB7
IDEsIHRoaXMgfSwKLSAgICAgICAgMCwgLyogZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwICovCi0gICAgICAgIDAsIC8qIGRlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbiAqLwotICAgICAgICAwLCAvKiBkZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwICovCi0gICAgICAgIDAsIC8qIHVuYWJsZVRvSW1wbGVt
ZW50UG9saWN5ICovCi0gICAgICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24sCi0g
ICAgICAgIDAsIC8qIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlICovCi0gICAgfTsKKyAgICBpZiAo
IXVuZGVyVGVzdCkgeworICAgICAgICBtX2NhbkF0dGFjaCA9IGNhbkF0dGFjaDsKKyAgICAgICAg
bV9pc0F0dGFjaGVkID0gc2hvdWxkT3BlbkF0dGFjaGVkKCk7CisgICAgICAgIG1fYXR0YWNobWVu
dFNpZGUgPSBzdGF0aWNfY2FzdDxBdHRhY2htZW50U2lkZT4oaW5zcGVjdG9yUGFnZUdyb3VwKCkt
PnByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0YWNobWVudFNpZGUoKSk7CiAKLSAgICBXS1BhZ2VT
ZXRQYWdlUG9saWN5Q2xpZW50KHRvQVBJKGluc3BlY3RvclBhZ2UpLCAmcG9saWN5Q2xpZW50LmJh
c2UpOworICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3I6OlNldEF0dGFjaGVkKG1faXNBdHRhY2hlZCksIG1fcGFnZS0+cGFnZUlEKCkpOwogCi0gICAg
bV9wYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChpbnNwZWN0b3JCYXNl
VVJMKCkpOworICAgICAgICBpZiAobV9pc0F0dGFjaGVkKSB7CisgICAgICAgICAgICBzd2l0Y2gg
KG1fYXR0YWNobWVudFNpZGUpIHsKKyAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVCb3R0
b206CisgICAgICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90dG9tKCksIG1faW5zcGVjdG9yUGFnZS0+
cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgaW5zcGVjdG9yUGFnZS0+
bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCBpbnNwZWN0b3JUZXN0UGFnZVVSTCgpKSk7CisgICAgICAg
ICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlUmlnaHQ6CisgICAgICAgICAgICAgICAgbV9pbnNwZWN0
b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVk
UmlnaHQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9pbnNwZWN0
b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFjaGVk
KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIH0KIAotICAgIG1fY3JlYXRlZElu
c3BlY3RvclBhZ2UgPSB0cnVlOworICAgIG1faW5zcGVjdG9yUGFnZS0+bG9hZFJlcXVlc3QoVVJM
KFVSTCgpLCB1bmRlclRlc3QgPyBpbnNwZWN0b3JUZXN0UGFnZVVSTCgpIDogaW5zcGVjdG9yUGFn
ZVVSTCgpKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Om9wZW4oKQpAQCAtNTMzLDIw
ICs0ODMsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbigpCiAKIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OmRpZENsb3NlKCkKIHsKLSAgICBpZiAoIW1fY3JlYXRlZEluc3BlY3RvclBh
Z2UpCisgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1f
aW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9pbnNwZWN0b3JQYWdlID0gbnVsbHB0cjsKKwogICAgIG1faXNWaXNpYmxlID0g
ZmFsc2U7Ci0gICAgbV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQgPSBmYWxzZTsKLSAgICBtX2lzUHJv
ZmlsaW5nSmF2YVNjcmlwdCA9IGZhbHNlOwogICAgIG1faXNQcm9maWxpbmdQYWdlID0gZmFsc2U7
Ci0gICAgbV9jcmVhdGVkSW5zcGVjdG9yUGFnZSA9IGZhbHNlOwogICAgIG1fc2hvd01lc3NhZ2VT
ZW50ID0gZmFsc2U7CiAgICAgbV9pZ25vcmVGaXJzdEJyaW5nVG9Gcm9udCA9IGZhbHNlOwogCiAg
ICAgaWYgKG1faXNBdHRhY2hlZCkKICAgICAgICAgcGxhdGZvcm1EZXRhY2goKTsKICAgICBtX2lz
QXR0YWNoZWQgPSBmYWxzZTsKKyAgICBtX2NhbkF0dGFjaCA9IGZhbHNlOwogCiAgICAgcGxhdGZv
cm1EaWRDbG9zZSgpOwogfQpAQCAtNTY5LDYgKzUyMCw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OmJyaW5nVG9Gcm9udCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEF2YWls
YWJpbGl0eUNoYW5nZWQoYm9vbCBhdmFpbGFibGUpCiB7CisgICAgbV9jYW5BdHRhY2ggPSBhdmFp
bGFibGU7CisKICAgICBwbGF0Zm9ybUF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoYXZhaWxhYmxl
KTsKIH0KIApAQCAtNTg3LDI4ICs1NDAsNiBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphcHBl
bmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgIHBs
YXRmb3JtQXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KTsKIH0KIAotYm9vbCBXZWJJbnNwZWN0b3JQ
cm94eTo6Y2FuQXR0YWNoKCkKLXsKLSAgICAvLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNhbkF0dGFjaFdpbmRvdy4gVGhlcmUgYXJlIHR3byBp
bXBsZW1lbnRhdGlvbnMKLSAgICAvLyB0byBtYWtlIGxpZmUgZWFzaWVyIGluIHRoZSBtdWx0aS1w
cm9jZXNzIHdvcmxkIHdlIGhhdmUuIFdlYkluc3BlY3RvclByb3h5IHVzZXMgY2FuQXR0YWNoIHRv
IGRlY2lkZSBpZgotICAgIC8vIHdlIGNhbiBhdHRhY2ggb24gb3BlbiAob24gdGhlIFVJIHByb2Nl
c3Mgc2lkZSkuIEFuZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjYW5BdHRhY2hXaW5k
b3cgaXMKLSAgICAvLyB1c2VkIHRvIGRlY2lkZSBpZiB3ZSBjYW4gYXR0YWNoIHdoZW4gdGhlIGF0
dGFjaCBidXR0b24gaXMgcHJlc3NlZCAob24gdGhlIFdlYlByb2Nlc3Mgc2lkZSkuCi0KLSAgICAv
LyBJZiB3ZSBhcmUgYWxyZWFkeSBhdHRhY2hlZCwgYWxsb3cgYXR0YWNoaW5nIGFnYWluIHRvIGFs
bG93IHN3aXRjaGluZyBzaWRlcy4KLSAgICBpZiAobV9pc0F0dGFjaGVkKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgIC8vIERvbid0IGFsbG93IGF0dGFjaGluZyB0byBhbm90aGVyIGluc3Bl
Y3RvciAtLSB0d28gaW5zcGVjdG9ycyBpbiBvbmUgd2luZG93IGlzIHRvbyBtdWNoIQotICAgIGlm
IChtX2xldmVsID4gMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRG9uJ3QgYWxs
b3cgdGhlIGF0dGFjaCBpZiB0aGUgd2luZG93IHdvdWxkIGJlIHRvbyBzbWFsbCB0byBhY2NvbW1v
ZGF0ZSB0aGUgbWluaW11bSBpbnNwZWN0b3IgaGVpZ2h0LgotICAgIHVuc2lnbmVkIGluc3BlY3Rl
ZFBhZ2VIZWlnaHQgPSBwbGF0Zm9ybUluc3BlY3RlZFdpbmRvd0hlaWdodCgpOwotICAgIHVuc2ln
bmVkIGluc3BlY3RlZFBhZ2VXaWR0aCA9IHBsYXRmb3JtSW5zcGVjdGVkV2luZG93V2lkdGgoKTsK
LSAgICB1bnNpZ25lZCBtYXhpbXVtQXR0YWNoZWRIZWlnaHQgPSBpbnNwZWN0ZWRQYWdlSGVpZ2h0
ICogMyAvIDQ7Ci0gICAgcmV0dXJuIG1pbmltdW1BdHRhY2hlZEhlaWdodCA8PSBtYXhpbXVtQXR0
YWNoZWRIZWlnaHQgJiYgbWluaW11bUF0dGFjaGVkV2lkdGggPD0gaW5zcGVjdGVkUGFnZVdpZHRo
OwotfQotCiBib29sIFdlYkluc3BlY3RvclByb3h5OjpzaG91bGRPcGVuQXR0YWNoZWQoKQogewog
ICAgIHJldHVybiBpbnNwZWN0b3JQYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JT
dGFydHNBdHRhY2hlZCgpICYmIGNhbkF0dGFjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCAxN2E3NDk4Li45YThiY2MxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMwLDYgKzMw
LDcgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisj
aW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTYy
LDcgKzYzLDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xh
c3MgV2ViUGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZVByb3h5Owotc3RydWN0IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM7CiAKIGVudW0gQXR0YWNobWVudFNpZGUgewogICAgIEF0dGFjaG1lbnRT
aWRlQm90dG9tLApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgLy8gUHVibGljIEFQSXMK
ICAgICBXZWJQYWdlUHJveHkqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KIAotICAg
IGJvb2wgaXNDb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdl
OyB9CisgICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbnNwZWN0b3JQ
YWdlOyB9CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2lzVmlzaWJsZTsg
fQogICAgIGJvb2wgaXNGcm9udCgpOwogCkBAIC0xMjMsMTIgKzEyMyw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpOwogICAgIHZvaWQgc2V0VG9v
bGJhckhlaWdodCh1bnNpZ25lZCBoZWlnaHQpIHsgcGxhdGZvcm1TZXRUb29sYmFySGVpZ2h0KGhl
aWdodCk7IH0KIAotICAgIGJvb2wgaXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KCkgY29uc3QgeyByZXR1
cm4gbV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQ7IH0KLSAgICB2b2lkIHRvZ2dsZUphdmFTY3JpcHRE
ZWJ1Z2dpbmcoKTsKLQotICAgIGJvb2wgaXNQcm9maWxpbmdKYXZhU2NyaXB0KCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQ7IH0KLSAgICB2b2lkIHRvZ2dsZUphdmFTY3Jp
cHRQcm9maWxpbmcoKTsKLQogICAgIGJvb2wgaXNQcm9maWxpbmdQYWdlKCkgY29uc3QgeyByZXR1
cm4gbV9pc1Byb2ZpbGluZ1BhZ2U7IH0KICAgICB2b2lkIHRvZ2dsZVBhZ2VQcm9maWxpbmcoKTsK
IApAQCAtMTUwLDkgKzE0NCwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdl
Ykluc3BlY3RvclByb3h5KFdlYlBhZ2VQcm94eSopOwogCisgICAgdm9pZCBlYWdlcmx5Q3JlYXRl
SW5zcGVjdG9yUGFnZSgpOworCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdl
RGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgV2ViUGFnZVByb3h5KiBw
bGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKICAgICB2b2lkIHBsYXRmb3JtT3BlbigpOwpA
QCAtMTczLDggKzE2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUFwcGVuZChjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwogCiAgICAgLy8gQ2Fs
bGVkIGJ5IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2VzCi0gICAgdm9pZCBjcmVhdGVJbnNwZWN0
b3JQYWdlKHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmKTsKLSAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KHVpbnQ2NF90JiBpbnNw
ZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIGNyZWF0
ZUluc3BlY3RvclBhZ2UoSVBDOjpBdHRhY2htZW50LCBib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRl
clRlc3QpOwogICAgIHZvaWQgZGlkQ2xvc2UoKTsKICAgICB2b2lkIGJyaW5nVG9Gcm9udCgpOwog
ICAgIHZvaWQgYXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29sKTsKQEAgLTE4Nyw3ICsxODEs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CiAjZW5kaWYKIAotICAgIGJvb2wgY2FuQXR0YWNoKCk7CisgICAg
Ym9vbCBjYW5BdHRhY2goKSBjb25zdCB7IHJldHVybiBtX2NhbkF0dGFjaDsgfQogICAgIGJvb2wg
c2hvdWxkT3BlbkF0dGFjaGVkKCk7CiAKICAgICB2b2lkIG9wZW4oKTsKQEAgLTIwNCwxOSArMTk4
LDE0IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluaXRpYWxXaW5kb3dX
aWR0aDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5pdGlhbFdpbmRvd0hlaWdodDsKIAot
ICAgIC8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggdGhlIHZhbHVlIGluIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwuCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1BdHRhY2hl
ZFdpZHRoOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtQXR0YWNoZWRIZWlnaHQ7
Ci0KICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKKyAgICBXZWJQYWdlUHJveHkqIG1faW5zcGVj
dG9yUGFnZTsKIAogICAgIGJvb2wgbV9pc1Zpc2libGU7CiAgICAgYm9vbCBtX2lzQXR0YWNoZWQ7
Ci0gICAgYm9vbCBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdDsKLSAgICBib29sIG1faXNQcm9maWxp
bmdKYXZhU2NyaXB0OworICAgIGJvb2wgbV9jYW5BdHRhY2g7CiAgICAgYm9vbCBtX2lzUHJvZmls
aW5nUGFnZTsKICAgICBib29sIG1fc2hvd01lc3NhZ2VTZW50OwotICAgIGJvb2wgbV9jcmVhdGVk
SW5zcGVjdG9yUGFnZTsKICAgICBib29sIG1faWdub3JlRmlyc3RCcmluZ1RvRnJvbnQ7CiAKICAg
ICAvLyBUaGUgZGVidWdnZXIgc3RvcHMgYWxsIHRoZSBwYWdlcyBpbiB0aGUgc2FtZSBQYWdlR3Jv
dXAuIEhhdmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3Bl
Y3RvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3Bl
Y3RvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU2Yzk0NGQuLmViN2ZhOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMu
aW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEw
ICsyMywxMSBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKIG1lc3NhZ2VzIC0+IFdlYkluc3Bl
Y3RvclByb3h5IHsKLSAgICBDcmVhdGVJbnNwZWN0b3JQYWdlKCkgLT4gKHVpbnQ2NF90IGluc3Bl
Y3RvclBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIGluc3BlY3RvclBh
Z2VQYXJhbWV0ZXJzKQotICAgIENyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KCkgLT4gKHVpbnQ2
NF90IGluc3BlY3RvclBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIGlu
c3BlY3RvclBhZ2VQYXJhbWV0ZXJzKQorICAgIENyZWF0ZUluc3BlY3RvclBhZ2UoSVBDOjpBdHRh
Y2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRl
c3QpCisKICAgICBEaWRDbG9zZSgpCiAgICAgQnJpbmdUb0Zyb250KCkKKwogICAgIEluc3BlY3Rl
ZFVSTENoYW5nZWQoU3RyaW5nIHVybFN0cmluZykKIAogICAgIFNhdmUoU3RyaW5nIGZpbGVuYW1l
LCBTdHJpbmcgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKQpA
QCAtMzUsNiArMzYsNyBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JQcm94eSB7CiAgICAgQXR0
YWNoQm90dG9tKCkKICAgICBBdHRhY2hSaWdodCgpCiAgICAgRGV0YWNoKCkKKwogICAgIEF0dGFj
aEF2YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCBhdmFpbGFibGUpCiAKICAgICBTZXRBdHRhY2hlZFdp
bmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCBjNmM2NjhjLi5kNTZlN2Rh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclBy
b3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9y
UHJveHlNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIldLVVJMQ0YuaCIKICNpbXBvcnQg
IldLVmlld1ByaXZhdGUuaCIKICNpbXBvcnQgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCisjaW1w
b3J0ICJXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIK
ICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXMuaCIKQEAg
LTQxOCw3ICs0MTksNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogICAgICAgICAgICAgaW5pdGlhbFJlY3QgPSBbTlNXaW5k
b3cgY29udGVudFJlY3RGb3JGcmFtZVJlY3Q6d2luZG93RnJhbWUgc3R5bGVNYXNrOndpbmRvd1N0
eWxlTWFza107CiAgICAgfQogCi0gICAgbV9pbnNwZWN0b3JWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
SW5zcGVjdG9yV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmluaXRpYWxSZWN0IGNvbnRleHRS
ZWY6dG9BUEkoJnBhZ2UoKS0+cHJvY2VzcygpLmNvbnRleHQoKSkgcGFnZUdyb3VwUmVmOnRvQVBJ
KGluc3BlY3RvclBhZ2VHcm91cCgpKSByZWxhdGVkVG9QYWdlOnRvQVBJKG1fcGFnZSldKTsKKyAg
ICBtX2luc3BlY3RvclZpZXcgPSBhZG9wdE5TKFtbV0tXZWJJbnNwZWN0b3JXS1ZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6aW5pdGlhbFJlY3QgY29udGV4dFJlZjp0b0FQSSgmcGFnZSgpLT5wcm9j
ZXNzKCkuY29udGV4dCgpKSBwYWdlR3JvdXBSZWY6dG9BUEkoaW5zcGVjdG9yUGFnZUdyb3VwKCkp
IHJlbGF0ZWRUb1BhZ2U6bnVsbHB0cl0pOwogICAgIEFTU0VSVChtX2luc3BlY3RvclZpZXcpOwog
CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSAxMDkwCkBAIC01ODksNyAr
NTkwLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmIGMKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBbY29udGVudENvcHkgd3JpdGVUb1VSTDphY3R1YWxVUkwgYXRvbWljYWxseTpZRVMgZW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVMTF07CiAKLSAgICAgICAgbV9wYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpEaWRTYXZlKFthY3R1YWxV
UkwgYWJzb2x1dGVTdHJpbmddKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRTYXZl
KFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7
CiAgICAgfTsKIAogICAgIGlmICghZm9yY2VTYXZlRGlhbG9nKSB7CkBAIC02MjMsNyArNjI0LDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYKICAgICBbaGFuZGxlIHdyaXRlRGF0YTpbY29udGVu
dCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgIFtoYW5kbGUg
Y2xvc2VGaWxlXTsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6RGlkQXBwZW5kKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1f
aW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp3
aW5kb3dGcmFtZURpZENoYW5nZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzkwZDc3NS4uZjFjODViYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDk1LDEw
ICs0OTUsMTAgQEAKIAkJMUFGRTQzNjUxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUZFNDM2MzE4
QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJMUFGRTQzNjYxOEI2QzA4
MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBRkU0MzY0MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLmgg
Ki87IH07CiAJCTFBRkY0OTAwMTgzM0RFNzgwMDlBQjE1QSAvKiBXS0RlcHJlY2F0ZWRGdW5jdGlv
bnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFG
RjQ4RkUxODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAgKi87IH07
CisJCTFDODkxRDY1MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzg5MUQ2MjE5QjEyNEZG
MDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwICovOyB9OworCQkxQzg5MUQ2NjE5QjEyNEZG
MDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDODkxRDYzMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0
b3JVSS5oICovOyB9OwogCQkxQzhBRTc2MTE5OTJGNjNBMDBBQkY2RUMgLyogRG9ja0JvdHRvbUxl
Z2FjeS5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDOEFFNzVGMTk5MkY2MkYwMEFCRjZFQyAvKiBEb2NrQm90dG9tTGVnYWN5LnBkZiAqLzsgfTsK
IAkJMUM4QUU3NjIxOTkyRjYzQzAwQUJGNkVDIC8qIERvY2tSaWdodExlZ2FjeS5wZGYgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEFFNzYwMTk5MkY2
MkYwMEFCRjZFQyAvKiBEb2NrUmlnaHRMZWdhY3kucGRmICovOyB9OwotCQkxQzhFMjVBODEyNzBF
M0JCMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI1NkIxMjcwREUzODAwQkM3
QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCAqLzsgfTsKLQkJMUM4RTI1QTkx
MjcwRTNCQzAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjU2QTEyNzBERTM4MDBC
QzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLzsgfTsKIAkJMUM4RTI4MjAx
Mjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI4MUUxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYklu
c3BlY3Rvci5oICovOyB9OwogCQkxQzhFMjgyMTEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVj
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
OEUyODFGMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3BwICovOyB9OwogCQkxQzhF
MjgzNDEyNzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyODMyMTI3NUQ3MzgwMEJDN0JE
MCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oICovOyB9OwpAQCAtNTEwLDggKzUxMCwxMCBAQAogCQkx
Q0E4QjkzNjEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0E4QjkzNTEyN0M3NzRF
MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gKi87IH07CiAJCTFDQThCOTQ1MTI3
Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0E4Qjk0MzEyN0M4
ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OwogCQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBOEI5
NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCAqLzsgfTsK
LQkJMUNBOEI5NTQxMjdDODkxNTAwNTc2QzJCIC8qIFdlYkluc3BlY3Rvck1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyREFEMTI3OEM1QjIw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNYWMubW0gKi87IH07CisJCTFDQThCOTU0MTI3Qzg5MTUw
MDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNw
ZWN0b3JVSU1hYy5tbSAqLzsgfTsKIAkJMUNCNzVDOTQxNzAxRTg4MDAwOUY4MDlGIC8qIERvY2tS
aWdodC5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDQjc1QzkzMTcwMUU4ODAwMDlGODA5RiAvKiBEb2NrUmlnaHQucGRmICovOyB9OworCQkxQ0JC
RTRBMDE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCQkU0OUUx
OUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKKwkJMUNCQkU0QTExOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQkJFNDlG
MTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggKi87IH07CiAJCTFD
QkM5NDVFMTY1MTVFRDIwMEQ2OEFBRSAvKiBEb2NrQm90dG9tLnBkZiBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCQzk0NUQxNjUxNUVEMjAwRDY4QUFF
IC8qIERvY2tCb3R0b20ucGRmICovOyB9OwogCQkxRjMzNUJDMDE4NUI4NEYwMDAxQTIwMUEgLyog
V0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjMzNUJCRjE4NUI4NEQ4MDAxQTIwMUEgLyogV0tXZWJQ
cm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUY2MDRCQTgxODg5RkE3NDAwRUUwMzk1IC8qIFdLUmVuZGVy
aW5nUHJvZ3Jlc3NFdmVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFGNjA0QkE2MTg4OUZBNzQwMEVFMDM5NSAvKiBXS1JlbmRlcmluZ1Byb2dyZXNz
RXZlbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTI0NzYsMTAgKzI0NzgsMTEgQEAKIAkJMUFGRjQ4RkUxODMzREU3ODAwOUFCMTVBIC8qIFdL
RGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXS0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQkI0MTdDOTEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRDaGVja2VyQ29tcGxl
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNzdDMTk1MTI4OEE4NzIw
MDZBNzQyRiAvKiBXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUM4OTFENjIxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM4OTFENjMxOUIxMjRGRjAwQkE3OURE
IC8qIFdlYkluc3BlY3RvclVJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
Ykluc3BlY3RvclVJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDODkxRDY0MTlC
MTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM4QUU3NUYxOTkyRjYyRjAwQUJGNkVDIC8qIERvY2tCb3R0b21MZWdhY3ku
cGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1h
Z2UucGRmOyBuYW1lID0gRG9ja0JvdHRvbUxlZ2FjeS5wZGY7IHBhdGggPSBSZXNvdXJjZXMvRG9j
a0JvdHRvbUxlZ2FjeS5wZGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEFFNzYw
MTk5MkY2MkYwMEFCRjZFQyAvKiBEb2NrUmlnaHRMZWdhY3kucGRmICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBuYW1lID0gRG9ja1Jp
Z2h0TGVnYWN5LnBkZjsgcGF0aCA9IFJlc291cmNlcy9Eb2NrUmlnaHRMZWdhY3kucGRmOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzhFMjU2QTEyNzBERTM4MDBCQzdCRDAgLyogV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMUM4RTI1NkIxMjcwREUzODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RTI4
MUUxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUM4RTI4MUYxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQzhFMjgzMjEyNzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVj
dG9yUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9y
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0ODksMTEgKzI0OTIsMTMg
QEAKIAkJMUM4RTJBMUMxMjc3ODMzRjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3IubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEUyQTMxMTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJ
bnNwZWN0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUM4RTJBMzIxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1l
c3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3Rvck1l
c3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOEUyREFEMTI3OEM1QjIw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0E4QjkzNTEyN0M3NzRFMDA1NzZD
MkIgLyogV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUNBOEI5NDMxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUNBOEI5NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9y
UHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0I3NUM5MzE3
MDFFODgwMDA5RjgwOUYgLyogRG9ja1JpZ2h0LnBkZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBkZjsgbmFtZSA9IERvY2tSaWdodC5wZGY7
IHBhdGggPSBSZXNvdXJjZXMvRG9ja1JpZ2h0LnBkZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3Bl
Y3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUNCQkU0OUYxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0JDOTQ1RDE2NTE1RUQyMDBENjhBQUUgLyog
RG9ja0JvdHRvbS5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBpbWFnZS5wZGY7IG5hbWUgPSBEb2NrQm90dG9tLnBkZjsgcGF0aCA9IFJlc291cmNl
cy9Eb2NrQm90dG9tLnBkZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDNDE3Qzkx
MkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUYwMTgxNjkxODU4REMxNTAwRjkyODg0IC8qIFdLV2ViUHJvY2Vz
c1BsdWdJbkZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViUHJv
Y2Vzc1BsdWdJbkZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NjYzLDgg
KzU2NjgsNiBAQAogCQkJCUJDMUJFMURFMTJENTRBNDEwMDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlv
bkNsaWVudC5oICovLAogCQkJCUJDMTExQTU5MTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJJbnNwZWN0
b3JDbGllbnQuY3BwICovLAogCQkJCUJDMDMyRDZEMTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJJbnNw
ZWN0b3JDbGllbnQuaCAqLywKLQkJCQkxQzhFMjU2QjEyNzBERTM4MDBCQzdCRDAgLyogV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwICovLAotCQkJCTFDOEUyNTZBMTI3MERFMzgwMEJDN0JE
MCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oICovLAogCQkJCTMxMDk5OTcxMTQ2Qzc1
OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwICovLAogCQkJCTMxMDk5OTY4
MTQ2QzcxRjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLywKIAkJCQk1MTIx
MjdDMTE5MDgyMzlBMDBEQUYzNUMgLyogV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAgKi8sCkBA
IC01NzI0LDYgKzU3MjcsOSBAQAogCQkJCTFDOEUyODFGMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJ
bnNwZWN0b3IuY3BwICovLAogCQkJCTFDOEUyODFFMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNw
ZWN0b3IuaCAqLywKIAkJCQkxQzhFMkExQzEyNzc4MzNGMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9y
Lm1lc3NhZ2VzLmluICovLAorCQkJCTFDODkxRDYyMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNw
ZWN0b3JVSS5jcHAgKi8sCisJCQkJMUM4OTFENjMxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3Bl
Y3RvclVJLmggKi8sCisJCQkJMUM4OTFENjQxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3Rv
clVJLm1lc3NhZ2VzLmluICovLAogCQkJCUJDODU3Rjg0MTJCODJEMEIwMEVERUIyRSAvKiBXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgKi8sCiAJCQkJQkM4NTdGODMxMkI4MkQwQjAwRURF
QjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi8sCiAJCQkJQkM5NjNENkExMTNE
RDE5MjAwNTc0QkUyIC8qIFdlYlBhZ2UuY3BwICovLApAQCAtNjQ3Miw3ICs2NDc4LDcgQEAKIAkJ
CQk1MTkyRDU3NTE5NjFGRDAzMDBDRDE5QUEgLyogU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5t
bSAqLywKIAkJCQkxQUFGMjYzNzE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEuaCAqLywKIAkJCQkxQUFGMjYzNjE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gKi8sCi0JCQkJMUM4RTJEQUQxMjc4QzVCMjAwQkM3
QkQwIC8qIFdlYkluc3BlY3Rvck1hYy5tbSAqLywKKwkJCQkxQzhFMkRBRDEyNzhDNUIyMDBCQzdC
RDAgLyogV2ViSW5zcGVjdG9yVUlNYWMubW0gKi8sCiAJCQkJQkM5NjNENkQxMTNERDFBNTAwNTc0
QkUyIC8qIFdlYlBhZ2VNYWMubW0gKi8sCiAJCQkJMjlDRDU1QTgxMjhFMjk0RjAwMTMzQzg1IC8q
IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggKi8sCiAJCQkJMjlDRDU1QTkxMjhF
Mjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tICovLApA
QCAtNjgyOCw2ICs2ODM0LDggQEAKIAkJCQkxQzhFMkEzMjEyNzc4NTI0MDBCQzdCRDAgLyogV2Vi
SW5zcGVjdG9yTWVzc2FnZXMuaCAqLywKIAkJCQkxQ0E4Qjk0MzEyN0M4ODJBMDA1NzZDMkIgLyog
V2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFDQThCOTQ0MTI3
Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJMUNC
QkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLywKKwkJCQkxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNz
YWdlcy5oICovLAogCQkJCTMzRDNBM0M0MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hl
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMzNEM0EzQzUxMzM5NjE3OTAwNzA5
QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyTWVzc2FnZXMuaCAqLywKIAkJCQkzM0QzQTNDNjEz
Mzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8sCkBAIC03NDQwLDYgKzc0NDgsNyBAQAogCQkJCTJEQUNFNjRFMThBREJGRjAwMEU0
Q0E3NiAvKiBfV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
NTc4QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NkEyNUZERDEyQURDNkNDMDBEQzQwQ0MgLyogV2ViRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkxQzg5MUQ2NjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCBp
biBIZWFkZXJzICovLAogCQkJCUY2MkE3NkI3MTJCMUIyNUYwMDA1RjFCNiAvKiBXZWJEYXRhYmFz
ZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYyQTc2NUQxMkIxQUJDMzAw
MDVGMUI2IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQky
RDZBQjU0MTE5MkIxQzRBMDAzQTlGRDEgLyogV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLmggaW4g
SGVhZGVycyAqLywKQEAgLTc0OTYsNyArNzUwNSw2IEBACiAJCQkJMUM4RTI4MjAxMjc1RDE1NDAw
QkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzQ0MxNjcxODkw
NkFDRjAwMUU2RUQ4IC8qIFdLV2ViVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJEODIx
MEY0Mzc4RDAwNThDMTVBIC8qIFdlYkluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMUM4RTI1QTkxMjcwRTNCQzAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzhFMkEzNjEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5z
cGVjdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyODM0MTI3NUQ3MzgwMEJD
N0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBOEI5NDYx
MjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLApAQCAtNzc2NCw2ICs3NzcyLDcgQEAKIAkJCQlGNjM0NDQ1RDEyQTg4NUU5MDAwNjEyRDgg
LyogV0tTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjA4QjgxOTI2OUU2
RDAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzQwNzYwNDEyNEZGMDI3MDA2OEYyMEEgLyogV0tTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTFDQkJFNEExMTlCNjZDNTMwMDZCN0Q4MSAvKiBX
ZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU0QzE4QkJF
MDQ0MDAwRkNGQzkgLyogV0tDb250ZW50Vmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdBNjRF
NTcxOEYzOEY0NjAwRUIzMEYxIC8qIF9XS0Zvcm1JbnB1dFNlc3Npb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTFGNjA0QkFBMTg4OUZCQjgwMEVFMDM5NSAvKiBXS1JlbmRlcmluZ1Byb2dyZXNzRXZl
bnRzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtODg4Miw2ICs4ODkxLDcgQEAKIAkJCQkw
MEI5NjYxOTE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTFBRTVCN0ZCMTFFN0FFRDIwMEJBNjc2NyAvKiBOZXRzY2FwZVBsdWdpbk1hYy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDMzYxRDcyMTkyN0ZBMzYwMDM2QTU5RCAvKiBXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQzg5MUQ2NTE5QjEyNEZGMDBCQTc5
REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDNTUxMkI4
MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBNEE5QzlBMTJCODIxQ0QwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTFBQTU4ODkzMTFFRTcwNDAwMDYxQjg4MiAvKiBOZXRzY2Fw
ZVBsdWdpblN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg5MjAsNiArODkzMCw3IEBACiAJ
CQkJMUEyRDg0MzkxMjdGNjVENTAwMUVCOTYyIC8qIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQUYwOEFEMTkyNjkzNjcwMEI2
MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUEyRDgyQTYxMjdGNEVBQjAwMUVCOTYyIC8qIE5QT2JqZWN0UHJveHkuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMUNCQkU0QTAxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ4MkE4MTI3RjRFQUIwMDFFQjk2
MiAvKiBOUFJlbW90ZU9iamVjdE1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTIxNjFCMTEx
RjM3NjY0MDA4QUQwRjUgLyogTlBSdW50aW1lT2JqZWN0TWFwLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBMjE2MkIwMTFGMzg5NzEwMDhBRDBGNSAvKiBOUFJ1bnRpbWVVdGlsaXRpZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC05MTc5LDggKzkxOTAsNyBAQAogCQkJCUJDQ0Y2QUJDMTJDOTFFRjkw
MDhGOUMzNSAvKiBXZWJJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzhFMjgyMTEyNzVE
MTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTEx
QTYwMTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJJbnNwZWN0b3JDbGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJMUM4RTI1QTgxMjcwRTNCQjAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFDQThCOTU0MTI3Qzg5MTUwMDU3NkMyQiAv
KiBXZWJJbnNwZWN0b3JNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQ0E4Qjk1NDEyN0M4OTE1
MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yVUlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzhF
MkEzNTEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFDOEUyODM1MTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0
b3JQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQ0E4QjkzNjEyN0M3NzRFMDA1NzZDMkIg
LyogV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmNwcAppbmRleCA1MDFkNDFjLi44NTkzNThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC04NCwyMCArODQsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omlu
c3BlY3RvckRlc3Ryb3llZCgpCiAKIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
V2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJv
bGxlciogY29udHJvbGxlcikKIHsKLSAgICBXZWJQYWdlKiBpbnNwZWN0b3JQYWdlID0gY29udHJv
bGxlci0+aXNVbmRlclRlc3QoKSA/IG1fcGFnZS0+aW5zcGVjdG9yKCktPmNyZWF0ZUluc3BlY3Rv
clBhZ2VGb3JUZXN0KCkgOiBtX3BhZ2UtPmluc3BlY3RvcigpLT5jcmVhdGVJbnNwZWN0b3JQYWdl
KCk7Ci0gICAgQVNTRVJUX1VOVVNFRChpbnNwZWN0b3JQYWdlLCBpbnNwZWN0b3JQYWdlKTsKLSAg
ICByZXR1cm4gdGhpczsKKyAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5jcmVhdGVJbnNwZWN0b3JQ
YWdlKGNvbnRyb2xsZXItPmlzVW5kZXJUZXN0KCkpOworCisgICAgcmV0dXJuIG1fcGFnZS0+aW5z
cGVjdG9yKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUluc3BlY3RvckZy
b250ZW5kKCkKIHsKICAgICBpZiAobV9wYWdlLT5pbnNwZWN0b3IoKSkKLSAgICAgICAgbV9wYWdl
LT5pbnNwZWN0b3IoKS0+ZGlkQ2xvc2UoKTsKKyAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+
Y2xvc2VGcm9udGVuZCgpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6YnJpbmdGcm9u
dGVuZFRvRnJvbnQoKQogewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmJyaW5nVG9Gcm9udCgp
OworICAgIGlmIChtX3BhZ2UtPmluc3BlY3RvcigpKQorICAgICAgICBtX3BhZ2UtPmluc3BlY3Rv
cigpLT5icmluZ1RvRnJvbnQoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFJl
c2l6ZU1haW5GcmFtZShGcmFtZSopCkBAIC0xOTcsMzQgKzE5OCw2IEBAIHZvaWQgV2ViSW5zcGVj
dG9yQ2xpZW50OjpkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCkKIH0KICNlbmRp
ZgogCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBXZWJJbnNwZWN0b3IqIGluc3BlY3RvciA9IG1fcGFn
ZS0+aW5zcGVjdG9yKCk7Ci0gICAgaWYgKCFpbnNwZWN0b3IpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotICAgIGlmIChpbnNwZWN0b3ItPmhh
c1JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkpIHsKLSAgICAgICAgaW5zcGVjdG9yLT5zZW5kTWVz
c2FnZVRvUmVtb3RlRnJvbnRlbmQobWVzc2FnZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLSNlbmRpZgotCi0gICAgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSA9IGluc3BlY3Rvci0+aW5z
cGVjdG9yUGFnZSgpOwotICAgIGlmIChpbnNwZWN0b3JQYWdlKQotICAgICAgICByZXR1cm4gZG9E
aXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZShpbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLCBt
ZXNzYWdlKTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBXZWJJbnNwZWN0b3JDbGll
bnQ6OnN1cHBvcnRzRnJhbWVJbnN0cnVtZW50YXRpb24oKQotewotI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgotICAgIHJldHVybiBmYWxzZTsK
LX0KLQogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnBhZ2VPdmVybGF5RGVzdHJveWVkKFBhZ2VP
dmVybGF5KikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDcwMzNiZGUuLjc5
OGNhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNDUsMjIgKzQ1LDIzIEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFJlcGFpbnRJbmRpY2F0b3JM
YXllckNsaWVudDsKIAotY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6
Okluc3BlY3RvckNsaWVudCwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCwgcHJpdmF0ZSBQYWdlT3ZlcmxheTo6Q2xpZW50IHsKK2NsYXNzIFdlYkluc3BlY3RvckNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHByaXZhdGUgUGFnZU92ZXJsYXk6
OkNsaWVudCB7CiBmcmllbmQgY2xhc3MgUmVwYWludEluZGljYXRvckxheWVyQ2xpZW50OwogcHVi
bGljOgogICAgIFdlYkluc3BlY3RvckNsaWVudChXZWJQYWdlKik7CiAgICAgdmlydHVhbCB+V2Vi
SW5zcGVjdG9yQ2xpZW50KCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGluc3BlY3Rv
ckRlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIC8vIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudAor
ICAgIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNw
ZWN0b3JGcm9udGVuZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5k
VG9Gcm9udCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNpemVNYWluRnJhbWUo
V2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkUmVzaXplTWFpbkZyYW1lKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgaGlnaGxpZ2h0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhpZGVIaWdo
bGlnaHQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGhpZ2hsaWdodCgpIG92ZXJyaWRlOworICAgIHZv
aWQgaGlkZUhpZ2hsaWdodCgpIG92ZXJyaWRlOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZp
cnR1YWwgdm9pZCBzaG93SW5zcGVjdG9ySW5kaWNhdGlvbigpIG92ZXJyaWRlOwpAQCAtNzIsMTAg
KzczLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgb3ZlcnJpZGVzU2hvd1BhaW50UmVj
dHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNo
b3dQYWludFJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwotCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnJhbWVJbnN0cnVtZW50YXRpb24oKTsKLQog
ICAgIC8vIFBhZ2VPdmVybGF5OjpDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgcGFnZU92ZXJsYXlE
ZXN0cm95ZWQoUGFnZU92ZXJsYXkqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbE1v
dmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkNDNkYWUxLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTIxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCIKLQotI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi0KLSNpbmNsdWRlICJXZWJJbnNwZWN0b3IuaCIKLSNpbmNsdWRlICJXZWJQYWdlLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlLmg+Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJQYWdlKiBwYWdlLCBXZWJQYWdlKiBpbnNwZWN0
b3JQYWdlKQotICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmcGFnZS0+Y29yZVBh
Z2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBpbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLCBz
dGQ6Om1ha2VfdW5pcXVlPFNldHRpbmdzPigpKQotICAgICwgbV9wYWdlKHBhZ2UpCi17Ci19Ci0K
LVN0cmluZyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6bG9jYWxpemVkU3RyaW5nc1VSTCgp
Ci17Ci0gICAgcmV0dXJuIG1fcGFnZS0+aW5zcGVjdG9yKCktPmxvY2FsaXplZFN0cmluZ3NVUkwo
KTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YnJpbmdUb0Zyb250KCkK
LXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5icmluZ1RvRnJvbnQoKTsKLX0KLQotdm9pZCBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2xvc2VXaW5kb3coKQotewotICAgIG1fcGFnZS0+
Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7Ci0g
ICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+ZGlkQ2xvc2UoKTsKLX0KLQotYm9vbCBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6Y2FuU2F2ZSgpCi17Ci0gICAgcmV0dXJuIG1fcGFnZS0+aW5zcGVj
dG9yKCktPmNhblNhdmUoKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
c2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wg
YmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3Rv
cigpLT5zYXZlKGZpbGVuYW1lLCBjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBmb3JjZVNhdmVBcyk7
Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZChjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCi17Ci0gICAgbV9wYWdlLT5pbnNw
ZWN0b3IoKS0+YXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6YXR0YWNoV2luZG93KERvY2tTaWRlIGRvY2tTaWRlKQotewotICAg
IHN3aXRjaCAoZG9ja1NpZGUpIHsKLSAgICBjYXNlIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpE
b2NrU2lkZTo6VW5kb2NrZWQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6Qm90
dG9tOgotICAgICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5hdHRhY2hCb3R0b20oKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU6OlJp
Z2h0OgotICAgICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5hdHRhY2hSaWdodCgpOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRl
dGFjaFdpbmRvdygpCi17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+ZGV0YWNoKCk7Ci19Ci0K
LXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0
KHVuc2lnbmVkIGhlaWdodCkKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5zZXRBdHRhY2hl
ZFdpbmRvd0hlaWdodChoZWlnaHQpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50OjpzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQotewotICAgIG1fcGFn
ZS0+aW5zcGVjdG9yKCktPnNldEF0dGFjaGVkV2luZG93V2lkdGgod2lkdGgpOwotfQotCi12b2lk
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkIGhl
aWdodCkKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5zZXRUb29sYmFySGVpZ2h0KGhlaWdo
dCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Omluc3BlY3RlZFVSTENo
YW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCi17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3Io
KS0+aW5zcGVjdGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzNzdl
ZjUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRfaAot
I2RlZmluZSBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudF9oCi0KLSNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotCi0jaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJQYWdlOwotCi1jbGFzcyBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsIHsKLXB1YmxpYzoKLSAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJQ
YWdlKiBwYWdlLCBXZWJQYWdlKiBpbnNwZWN0b3JQYWdlKTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgYnJpbmdUb0Zyb250KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlV2lu
ZG93KCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2F2ZSgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBzYXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wg
YmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLQotICAg
IHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coRG9ja1NpZGUpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkZXRhY2hXaW5kb3coKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRB
dHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwg
dm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotCi0gICAg
V2ViUGFnZSogbV9wYWdlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoSU5TUEVDVE9SKQotCi0jZW5kaWYgLy8gV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yLmNwcAppbmRleCA1NjEyOTdhLi41YzY0NDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMTE3ICsyNyw3NCBAQAog
I2luY2x1ZGUgIldlYkluc3BlY3Rvci5oIgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKKwogI2lu
Y2x1ZGUgIldlYkZyYW1lLmgiCi0jaW5jbHVkZSAiV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQu
aCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkluc3Bl
Y3RvclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZS5oIgotI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWUu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZUxvYWRSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JQYWdlQWdl
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
Tm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnRCYXNlLmg+Ci0jaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93
RmVhdHVyZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBjb25zdCBm
bG9hdCBtaW5pbXVtQXR0YWNoZWRIZWlnaHQgPSAyNTA7CitzdGF0aWMgY29uc3QgZmxvYXQgbWF4
aW11bUF0dGFjaGVkSGVpZ2h0UmF0aW8gPSAwLjc1Oworc3RhdGljIGNvbnN0IGZsb2F0IG1pbmlt
dW1BdHRhY2hlZFdpZHRoID0gNzUwOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0
cjxXZWJJbnNwZWN0b3I+IFdlYkluc3BlY3Rvcjo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UsIEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQorUGFzc1JlZlB0cjxXZWJJbnNw
ZWN0b3I+IFdlYkluc3BlY3Rvcjo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJJbnNwZWN0b3IocGFnZSwgZnJvbnRlbmRDaGFubmVsKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJJbnNwZWN0b3IocGFnZSkpOwogfQogCi1XZWJJbnNwZWN0
b3I6OldlYkluc3BlY3RvcihXZWJQYWdlKiBwYWdlLCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCkKK1dlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlBhZ2UqIHBh
Z2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKLSAgICAsIG1faW5zcGVjdG9yUGFnZShudWxscHRyKQot
ICAgICwgbV9mcm9udGVuZENsaWVudChudWxscHRyKQotICAgICwgbV9mcm9udGVuZENoYW5uZWwo
ZnJvbnRlbmRDaGFubmVsKQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICwgbV9oYXNMb2NhbGl6
ZWRTdHJpbmdzVVJMKGZhbHNlKQotI2VuZGlmCi0jaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIp
Ci0gICAgLCBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKGZhbHNlKQotI2VuZGlmCisgICAgLCBt
X2F0dGFjaGVkKGZhbHNlKQorICAgICwgbV9wcmV2aW91c0NhbkF0dGFjaChmYWxzZSkKIHsKIH0K
IAogLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yQ2xpZW50Ci1XZWJQYWdlKiBXZWJJbnNwZWN0
b3I6OmNyZWF0ZUluc3BlY3RvclBhZ2UoKQordm9pZCBXZWJJbnNwZWN0b3I6OmNyZWF0ZUluc3Bl
Y3RvclBhZ2UoYm9vbCB1bmRlclRlc3QpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgQVNTRVJUKCFtX2luc3BlY3RvclBhZ2UpOwotICAgIEFTU0VS
VCghbV9mcm9udGVuZENsaWVudCk7Ci0KLSAgICB1aW50NjRfdCBpbnNwZWN0b3JQYWdlSUQgPSAw
OwotICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIGlmICgh
V2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpDcmVhdGVJbnNwZWN0b3JQYWdlKCksCi0gICAg
ICAgICAgICBNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2U6
OlJlcGx5KGluc3BlY3RvclBhZ2VJRCwgcGFyYW1ldGVycyksCi0gICAgICAgICAgICBtX3BhZ2Ut
PnBhZ2VJRCgpLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzOjptYXgoKSkpIHsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWluc3Bl
Y3RvclBhZ2VJRCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisjaWYgT1MoREFSV0lOKQorICAg
IG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7CisgICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hf
dGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7CiAK
LSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jcmVhdGVXZWJQYWdlKGluc3BlY3RvclBhZ2VJRCwg
cGFyYW1ldGVycyk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlID0gV2ViUHJvY2Vzczo6c2hhcmVkKCku
d2ViUGFnZShpbnNwZWN0b3JQYWdlSUQpOwotICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOwor
ICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJD
b25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSwgdGhp
cywgUnVuTG9vcDo6bWFpbigpKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+b3BlbigpOwog
Ci0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ+KG1fcGFnZSwgbV9pbnNwZWN0b3JQYWdlKTsKLSAgICBtX2Zyb250ZW5k
Q2xpZW50ID0gZnJvbnRlbmRDbGllbnQuZ2V0KCk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5jb3Jl
UGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQo
V1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9yUGFnZTsK
KyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6Q3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0
dGFjaG1lbnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpLCBjYW5BdHRh
Y2hXaW5kb3coKSwgdW5kZXJUZXN0KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisjZWxzZQorICAgIG5v
dEltcGxlbWVudGVkKCk7CisjZW5kaWYKIH0KIAotV2ViUGFnZSogV2ViSW5zcGVjdG9yOjpjcmVh
dGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgpCit2b2lkIFdlYkluc3BlY3Rvcjo6Y2xvc2VGcm9udGVu
ZCgpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
QVNTRVJUKCFtX2luc3BlY3RvclBhZ2UpOwotICAgIEFTU0VSVCghbV9mcm9udGVuZENsaWVudCk7
Ci0KLSAgICB1aW50NjRfdCBpbnNwZWN0b3JQYWdlSUQgPSAwOwotICAgIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjpDcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgpLAotICAgICAgICAgICAgTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjpDcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdDo6UmVwbHko
aW5zcGVjdG9yUGFnZUlELCBwYXJhbWV0ZXJzKSwKLSAgICAgICAgICAgIG1fcGFnZS0+cGFnZUlE
KCksIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM6Om1heCgpKSkgewotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoIWluc3BlY3RvclBhZ2VJRCkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jcmVhdGVXZWJQYWdlKGlu
c3BlY3RvclBhZ2VJRCwgcGFyYW1ldGVycyk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlID0gV2ViUHJv
Y2Vzczo6c2hhcmVkKCkud2ViUGFnZShpbnNwZWN0b3JQYWdlSUQpOwotICAgIEFTU0VSVChtX2lu
c3BlY3RvclBhZ2UpOwotCi0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fcGFnZSwgbV9pbnNwZWN0b3JQYWdlKTsK
LSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQuZ2V0KCk7Ci0gICAgbV9pbnNw
ZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7Ci0gICAgcmV0dXJuIG1f
aW5zcGVjdG9yUGFnZTsKLX0KKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGlkQ2xvc2Uo
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpkZXN0cm95SW5zcGVj
dG9yUGFnZSgpCi17Ci0gICAgbV9pbnNwZWN0b3JQYWdlID0gbnVsbHB0cjsKLSAgICBtX2Zyb250
ZW5kQ2xpZW50ID0gbnVsbHB0cjsKLSAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7Ci19
CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKKyAgICBtX2Zyb250ZW5k
Q29ubmVjdGlvbiA9IG51bGxwdHI7CiAKLS8vIENhbGxlZCBmcm9tIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50Ci12b2lkIFdlYkluc3BlY3Rvcjo6ZGlkQ2xvc2UoKQotewotICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICBkZXN0
cm95SW5zcGVjdG9yUGFnZSgpOworICAgIG1fYXR0YWNoZWQgPSBmYWxzZTsKKyAgICBtX3ByZXZp
b3VzQ2FuQXR0YWNoID0gZmFsc2U7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpicmluZ1RvRnJv
bnQoKQpAQCAtMTQ1LDUxICsxMDIsNiBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6YnJpbmdUb0Zyb250
KCkKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250KCksIG1fcGFnZS0+
cGFnZUlEKCkpOwogfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6aW5zcGVjdGVkVVJMQ2hhbmdlZChj
b25zdCBTdHJpbmcmIHVybFN0cmluZykKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6
SW5zcGVjdGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQot
dm9pZCBXZWJJbnNwZWN0b3I6OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCi17Ci0g
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2
NEVuY29kZWQsIGZvcmNlU2F2ZUFzKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2Vi
SW5zcGVjdG9yOjphcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50KQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBcHBlbmQoZmlsZW5hbWUs
IGNvbnRlbnQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OmF0
dGFjaEJvdHRvbSgpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaEJvdHRv
bSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OmF0dGFjaFJp
Z2h0KCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoUmlnaHQoKSwgbV9w
YWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpkZXRhY2goKQotewotICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEZXRhY2goKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19
Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBo
ZWlnaHQpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0dGFjaGVkV2luZG93
SGVpZ2h0KGhlaWdodCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rv
cjo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKLXsKLSAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh3aWR0aCksIG1fcGFnZS0+
cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6c2V0VG9vbGJhckhlaWdodCh1bnNp
Z25lZCBoZWlnaHQpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldFRvb2xiYXJI
ZWlnaHQoaGVpZ2h0KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KIC8vIENhbGxlZCBieSBXZWJJ
bnNwZWN0b3IgbWVzc2FnZXMKIHZvaWQgV2ViSW5zcGVjdG9yOjpzaG93KCkKIHsKQEAgLTIwMSwz
NCArMTEzLDE3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZSgpCiAgICAgbV9wYWdlLT5jb3Jl
UGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY2xvc2UoKTsKIH0KIAotdm9pZCBXZWJJbnNw
ZWN0b3I6OmRpZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgQVNTRVJUKG1faW5zcGVj
dG9yUGFnZSk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5z
Y3JpcHQoKS5leGVjdXRlU2NyaXB0KG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLnNh
dmVkVVJMKFwiIiwgdXJsLCAiXCIpIikpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6ZGlkQXBw
ZW5kKGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOwot
ICAgIG1faW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdChtYWtlU3RyaW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5hcHBlbmRlZFRvVVJM
KFwiIiwgdXJsLCAiXCIpIikpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNoZWRCb3R0
b20oKQordm9pZCBXZWJJbnNwZWN0b3I6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybFN0
cmluZykKIHsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENs
aWVudC0+c2V0QXR0YWNoZWRXaW5kb3coSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRl
OjpCb3R0b20pOwotfQorICAgIFBhZ2UqIGluc3BlY3RlZFBhZ2UgPSBtX3BhZ2UtPmNvcmVQYWdl
KCk7CisgICAgRnJhbWUmIGluc3BlY3RlZE1haW5GcmFtZSA9IGluc3BlY3RlZFBhZ2UtPm1haW5G
cmFtZSgpOworICAgIEZyYW1lTG9hZFJlcXVlc3QgcmVxdWVzdChpbnNwZWN0ZWRNYWluRnJhbWUu
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KHVybFN0cmluZyks
ICJfYmxhbmsiKTsKIAotdm9pZCBXZWJJbnNwZWN0b3I6OmF0dGFjaGVkUmlnaHQoKQotewotICAg
IGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRBdHRh
Y2hlZFdpbmRvdyhJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU6OlJpZ2h0KTsKLX0K
KyAgICBQYWdlKiBuZXdQYWdlID0gaW5zcGVjdGVkUGFnZS0+Y2hyb21lKCkuY3JlYXRlV2luZG93
KCZpbnNwZWN0ZWRNYWluRnJhbWUsIHJlcXVlc3QsIFdpbmRvd0ZlYXR1cmVzKCksIE5hdmlnYXRp
b25BY3Rpb24ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgTmF2aWdhdGlvblR5cGVMaW5rQ2xp
Y2tlZCkpOworICAgIGlmICghbmV3UGFnZSkKKyAgICAgICAgcmV0dXJuOwogCi12b2lkIFdlYklu
c3BlY3Rvcjo6ZGV0YWNoZWQoKQotewotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAg
ICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRBdHRhY2hlZFdpbmRvdyhJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6RG9ja1NpZGU6OlVuZG9ja2VkKTsKKyAgICBuZXdQYWdlLT5tYWluRnJhbWUoKS5sb2Fk
ZXIoKS5sb2FkKHJlcXVlc3QpOwogfQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6ZXZhbHVhdGVTY3Jp
cHRGb3JUZXN0KGNvbnN0IFN0cmluZyYgc2NyaXB0KQpAQCAtMjM5LDEwOCArMTM0LDk0IEBAIHZv
aWQgV2ViSW5zcGVjdG9yOjpldmFsdWF0ZVNjcmlwdEZvclRlc3QoY29uc3QgU3RyaW5nJiBzY3Jp
cHQpCiB2b2lkIFdlYkluc3BlY3Rvcjo6c2hvd0NvbnNvbGUoKQogewogICAgIG1fcGFnZS0+Y29y
ZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVu
ZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2hvd0NvbnNvbGUoKTsKKyAgICBt
X2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNob3dD
b25zb2xlKCksIDApOwogfQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6c2hvd1Jlc291cmNlcygpCiB7
CiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwot
ICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zaG93
UmVzb3VyY2VzKCk7CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJOjpTaG93UmVzb3VyY2VzKCksIDApOwogfQogCi12b2lkIFdlYkluc3BlY3Rv
cjo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCit2b2lkIFdlYklu
c3BlY3Rvcjo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSWRlbnRpZmll
cikKIHsKLSAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFt
ZShmcmFtZUlEKTsKKyAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53
ZWJGcmFtZShmcmFtZUlkZW50aWZpZXIpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3co
KTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+
c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSk7Ci19CiAKLXZvaWQg
V2ViSW5zcGVjdG9yOjpzdGFydEphdmFTY3JpcHREZWJ1Z2dpbmcoKQotewotICAgIG1fcGFnZS0+
Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9u
dGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0RGVidWdnaW5nRW5hYmxl
ZCh0cnVlKTsKKyAgICBTdHJpbmcgaW5zcGVjdG9yRnJhbWVJZGVudGlmaWVyID0gbV9wYWdlLT5j
b3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkucGFnZUFnZW50KCktPmZyYW1lSWQoZnJh
bWUtPmNvcmVGcmFtZSgpKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OlNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShpbnNwZWN0b3JGcmFt
ZUlkZW50aWZpZXIpLCAwKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OnN0b3BKYXZhU2NyaXB0
RGVidWdnaW5nKCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpzdGFydFBhZ2VQcm9maWxpbmcoKQogewog
ICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAg
ICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0RGVi
dWdnaW5nRW5hYmxlZChmYWxzZSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzZXRKYXZhU2Ny
aXB0UHJvZmlsaW5nRW5hYmxlZChib29sKQotewotICAgIC8vIE5vIGxvbmdlciBzdXBwb3J0ZWQu
CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpTdGFydFBhZ2VQcm9maWxpbmcoKSwgMCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpzdGFy
dEphdmFTY3JpcHRQcm9maWxpbmcoKQordm9pZCBXZWJJbnNwZWN0b3I6OnN0b3BQYWdlUHJvZmls
aW5nKCkKIHsKLSAgICAvLyBObyBsb25nZXIgc3VwcG9ydGVkLgorICAgIG1fcGFnZS0+Y29yZVBh
Z2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlN0b3BQYWdlUHJvZmlsaW5nKCks
IDApOwogfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6c3RvcEphdmFTY3JpcHRQcm9maWxpbmcoKQor
Ym9vbCBXZWJJbnNwZWN0b3I6OmNhbkF0dGFjaFdpbmRvdygpCiB7Ci0gICAgLy8gTm8gbG9uZ2Vy
IHN1cHBvcnRlZC4KLX0KKyAgICAvLyBEb24ndCBhbGxvdyBhdHRhY2hpbmcgdG8gYW5vdGhlciBp
bnNwZWN0b3IgLS0gdHdvIGluc3BlY3RvcnMgaW4gb25lIHdpbmRvdyBpcyB0b28gbXVjaCEKKyAg
ICBpZiAobV9wYWdlLT5pc0luc3BlY3RvclBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci12b2lkIFdlYkluc3BlY3Rvcjo6c3RhcnRQYWdlUHJvZmlsaW5nKCkKLXsKLSAgICBtX3BhZ2Ut
PmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1fZnJv
bnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldFRpbWVsaW5lUHJvZmls
aW5nRW5hYmxlZCh0cnVlKTsKLX0KKyAgICAvLyBJZiB3ZSBhcmUgYWxyZWFkeSBhdHRhY2hlZCwg
YWxsb3cgYXR0YWNoaW5nIGFnYWluIHRvIGFsbG93IHN3aXRjaGluZyBzaWRlcy4KKyAgICBpZiAo
bV9hdHRhY2hlZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpz
dG9wUGFnZVByb2ZpbGluZygpCi17Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBt
X2Zyb250ZW5kQ2xpZW50LT5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoZmFsc2UpOworICAg
IC8vIERvbid0IGFsbG93IHRoZSBhdHRhY2ggaWYgdGhlIHdpbmRvdyB3b3VsZCBiZSB0b28gc21h
bGwgdG8gYWNjb21tb2RhdGUgdGhlIG1pbmltdW0gaW5zcGVjdG9yIHNpemUuCisgICAgdW5zaWdu
ZWQgaW5zcGVjdGVkUGFnZUhlaWdodCA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCku
dmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CisgICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZVdpZHRo
ID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPnZpc2libGVXaWR0aCgp
OworICAgIHVuc2lnbmVkIG1heGltdW1BdHRhY2hlZEhlaWdodCA9IGluc3BlY3RlZFBhZ2VIZWln
aHQgKiBtYXhpbXVtQXR0YWNoZWRIZWlnaHRSYXRpbzsKKyAgICByZXR1cm4gbWluaW11bUF0dGFj
aGVkSGVpZ2h0IDw9IG1heGltdW1BdHRhY2hlZEhlaWdodCAmJiBtaW5pbXVtQXR0YWNoZWRXaWR0
aCA8PSBpbnNwZWN0ZWRQYWdlV2lkdGg7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjp1cGRhdGVE
b2NraW5nQXZhaWxhYmlsaXR5KCkKIHsKLSAgICBpZiAoIW1fZnJvbnRlbmRDbGllbnQpCisgICAg
aWYgKG1fYXR0YWNoZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgY2FuQXR0YWNoV2lu
ZG93ID0gdGhpcy0+Y2FuQXR0YWNoV2luZG93KCk7CisgICAgaWYgKG1fcHJldmlvdXNDYW5BdHRh
Y2ggPT0gY2FuQXR0YWNoV2luZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIGNhbkF0
dGFjaFdpbmRvdyA9IG1fZnJvbnRlbmRDbGllbnQtPmNhbkF0dGFjaFdpbmRvdygpOworICAgIG1f
cHJldmlvdXNDYW5BdHRhY2ggPSBjYW5BdHRhY2hXaW5kb3c7CisKICAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JQcm94eTo6QXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChjYW5BdHRhY2hXaW5kb3cpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXREb2NraW5nVW5hdmFp
bGFibGUoIWNhbkF0dGFjaFdpbmRvdyk7CiB9CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZF
UikKLXZvaWQgV2ViSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQordm9pZCBXZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9CYWNrZW5k
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBBU1NFUlQobV9yZW1vdGVGcm9udGVuZENv
bm5lY3RlZCk7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNlbmRNZXNzYWdlVG9SZW1v
dGVGcm9udGVuZChtZXNzYWdlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5jb3Jl
UGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5k
KG1lc3NhZ2UpOwogfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJl
bW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK2Jvb2wgV2ViSW5zcGVjdG9yOjpz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fcGFn
ZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc3BhdGNoTWVzc2FnZUZyb21G
cm9udGVuZChtZXNzYWdlKTsKKyNpZiAhRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCisgICAgbV9m
cm9udGVuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZW5kTWVz
c2FnZVRvRnJvbnRlbmQobWVzc2FnZSksIDApOworI2Vsc2UKKyAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JQcm94eTo6U2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgRU5BQkxFKElOU1BF
Q1RPUl9TRVJWRVIpCiB2b2lkIFdlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQo
KQogewotICAgIEFTU0VSVCghbV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCk7Ci0gICAgLy8gU3dp
dGNoaW5nIGJldHdlZW4gaW4tcHJvY2VzcyBhbmQgcmVtb3RlIGluc3BlY3RvcnMgaXNuJ3Qgc3Vw
cG9ydGVkIHlldC4KLSAgICBBU1NFUlQoIW1faW5zcGVjdG9yUGFnZSk7Ci0gICAgCi0gICAgbV9w
YWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKG1f
ZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkID0gdHJ1ZTsK
KyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJv
bnRlbmQodGhpcyk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZERpc2Nv
bm5lY3RlZCgpCiB7Ci0gICAgQVNTRVJUKG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOwogICAg
IG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9u
dGVuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ry
b3llZCk7Ci0gICAgbV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCA9IGZhbHNlOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3Iu
aAppbmRleCBjOTNiY2IzLi4zYzE5YjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCwxMDYgKzMwLDgwIEBACiAKICNpbmNsdWRl
ICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGb3J3YXJkaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDsKIGNsYXNzIFdlYlBhZ2U7CiAKLWNsYXNzIFdlYkluc3BlY3RvciA6IHB1YmxpYyBBUEk6
Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUluc3BlY3Rvcj4geworY2xhc3Mg
V2ViSW5zcGVjdG9yIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
QnVuZGxlSW5zcGVjdG9yPiwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBwdWJsaWMg
V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJJbnNwZWN0b3I+IGNyZWF0ZShXZWJQYWdlKiwgV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW5zcGVjdG9y
PiBjcmVhdGUoV2ViUGFnZSopOwogCiAgICAgV2ViUGFnZSogcGFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFnZTsgfQotICAgIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UoKSBjb25zdCB7IHJldHVybiBt
X2luc3BlY3RvclBhZ2U7IH0KKworICAgIHZvaWQgdXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgp
OworCisgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpIG92ZXJyaWRlOwogCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdl
Ykluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAKLSAgICB2b2lkIGRpZFJlY2VpdmVXZWJJbnNw
ZWN0b3JNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURl
Y29kZXImKTsKKworICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CisgICAgdm9pZCBkaWRD
bG9zZShJUEM6OkNvbm5lY3Rpb24qKSB7IGNsb3NlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgeyBjbG9z
ZSgpOyB9CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yIG1lc3NhZ2VzCisgICAgdm9p
ZCBjb25uZWN0aW9uRXN0YWJsaXNoZWQoKTsKKwogICAgIHZvaWQgc2hvdygpOwogICAgIHZvaWQg
Y2xvc2UoKTsKIAotICAgIHZvaWQgZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgdm9p
ZCBkaWRBcHBlbmQoY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQgb3BlbkluTmV3VGFiKGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKKworICAgIHZvaWQgY2FuQXR0YWNoV2luZG93KGJvb2wm
IHJlc3VsdCk7CisKKyAgICB2b2lkIHNob3dDb25zb2xlKCk7CisgICAgdm9pZCBzaG93UmVzb3Vy
Y2VzKCk7CiAKLSAgICB2b2lkIGF0dGFjaGVkQm90dG9tKCk7Ci0gICAgdm9pZCBhdHRhY2hlZFJp
Z2h0KCk7Ci0gICAgdm9pZCBkZXRhY2hlZCgpOworICAgIHZvaWQgc2hvd01haW5SZXNvdXJjZUZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSWRlbnRpZmllcik7CisKKyAgICB2b2lkIHNldEF0dGFjaGVk
KGJvb2wgYXR0YWNoZWQpIHsgbV9hdHRhY2hlZCA9IGF0dGFjaGVkOyB9CiAKICAgICB2b2lkIGV2
YWx1YXRlU2NyaXB0Rm9yVGVzdChjb25zdCBTdHJpbmcmIHNjcmlwdCk7CiAKLSAgICB2b2lkIHNl
dEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc3RhcnRQYWdlUHJv
ZmlsaW5nKCk7CiAgICAgdm9pZCBzdG9wUGFnZVByb2ZpbGluZygpOwogCisgICAgdm9pZCBzZW5k
TWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKTsKKwogI2lmIEVOQUJMRShJTlNQRUNUT1Jf
U0VSVkVSKQotICAgIGJvb2wgaGFzUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkOyB9Ci0gICAgdm9pZCBzZW5kTWVzc2FnZVRv
UmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICB2b2lkIGRpc3BhdGNo
TWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHZv
aWQgcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKTsKICAgICB2b2lkIHJlbW90ZUZyb250ZW5kRGlz
Y29ubmVjdGVkKCk7CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViSW5z
cGVjdG9yQ2xpZW50OwotICAgIGZyaWVuZCBjbGFzcyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDsKIAotICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvcihXZWJQYWdlKiwgV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yKFdlYlBhZ2Uq
KTsKKworICAgIGJvb2wgY2FuQXR0YWNoV2luZG93KCk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBX
ZWJJbnNwZWN0b3JDbGllbnQKLSAgICBXZWJQYWdlKiBjcmVhdGVJbnNwZWN0b3JQYWdlKCk7Ci0g
ICAgV2ViUGFnZSogY3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QoKTsKLSAgICB2b2lkIGRlc3Ry
b3lJbnNwZWN0b3JQYWdlKCk7CisgICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JQYWdlKGJvb2wgdW5k
ZXJUZXN0KTsKIAotICAgIC8vIENhbGxlZCBmcm9tIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
Ci0gICAgdm9pZCBkaWRDbG9zZSgpOworICAgIHZvaWQgY2xvc2VGcm9udGVuZCgpOwogICAgIHZv
aWQgYnJpbmdUb0Zyb250KCk7Ci0gICAgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0
cmluZyYpOwotCi0gICAgYm9vbCBjYW5TYXZlKCkgY29uc3Q7Ci0gICAgdm9pZCBzYXZlKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNv
ZGVkLCBib29sIGZvcmNlU2F2ZUFzKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwotCi0gICAgdm9pZCBhdHRhY2hCb3R0b20o
KTsKLSAgICB2b2lkIGF0dGFjaFJpZ2h0KCk7Ci0gICAgdm9pZCBkZXRhY2goKTsKIAotICAgIHZv
aWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpOwotICAgIHZvaWQgc2V0QXR0YWNo
ZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCk7Ci0gICAgdm9pZCBzZXRUb29sYmFySGVpZ2h0KHVuc2ln
bmVkKTsKLQotICAgIC8vIEltcGxlbWVudGVkIGluIHBsYXRmb3JtIFdlYkluc3BlY3RvciBmaWxl
Ci0gICAgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdDsKLQotICAgIHZvaWQgc2hv
d0NvbnNvbGUoKTsKLQotICAgIHZvaWQgc2hvd1Jlc291cmNlcygpOwotCi0gICAgdm9pZCBzaG93
TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCk7Ci0KLSAgICB2b2lkIHN0YXJ0
SmF2YVNjcmlwdERlYnVnZ2luZygpOwotICAgIHZvaWQgc3RvcEphdmFTY3JpcHREZWJ1Z2dpbmco
KTsKLQotICAgIHZvaWQgc3RhcnRKYXZhU2NyaXB0UHJvZmlsaW5nKCk7Ci0gICAgdm9pZCBzdG9w
SmF2YVNjcmlwdFByb2ZpbGluZygpOworICAgIFdlYlBhZ2UqIG1fcGFnZTsKIAotICAgIHZvaWQg
dXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgpOworICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+
IG1fZnJvbnRlbmRDb25uZWN0aW9uOwogCi0gICAgV2ViUGFnZSogbV9wYWdlOwotICAgIFdlYlBh
Z2UqIG1faW5zcGVjdG9yUGFnZTsKLSAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9m
cm9udGVuZENsaWVudDsKLSAgICBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1f
ZnJvbnRlbmRDaGFubmVsOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG11dGFibGUgU3RyaW5n
IG1fbG9jYWxpemVkU3RyaW5nc1VSTDsKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNMb2NhbGl6ZWRT
dHJpbmdzVVJMOwotI2VuZGlmCi0jaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0gICAgYm9v
bCBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkOwotI2VuZGlmCisgICAgYm9vbCBtX2F0dGFjaGVk
OworICAgIGJvb2wgbV9wcmV2aW91c0NhbkF0dGFjaDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KaW5kZXggYzIzYjg2Zi4uZmMwNzNjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
Lm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMiwyNiArMjIsMjUgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLW1lc3NhZ2Vz
IC0+IFdlYkluc3BlY3RvciBMZWdhY3lSZWNlaXZlciB7CittZXNzYWdlcyAtPiBXZWJJbnNwZWN0
b3IgewogICAgIFNob3coKQogICAgIENsb3NlKCkKLSAgICBBdHRhY2hlZEJvdHRvbSgpCi0gICAg
QXR0YWNoZWRSaWdodCgpCi0gICAgRGV0YWNoZWQoKQotICAgIERpZFNhdmUoU3RyaW5nIHVybCkK
LSAgICBEaWRBcHBlbmQoU3RyaW5nIHVybCkKKworICAgIFNldEF0dGFjaGVkKGJvb2wgYXR0YWNo
ZWQpCisKICAgICBTaG93Q29uc29sZSgpCiAgICAgU2hvd1Jlc291cmNlcygpCi0gICAgU2hvd01h
aW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgU3RhcnRKYXZhU2NyaXB0
RGVidWdnaW5nKCkKLSAgICBTdG9wSmF2YVNjcmlwdERlYnVnZ2luZygpCi0gICAgU3RhcnRKYXZh
U2NyaXB0UHJvZmlsaW5nKCkKLSAgICBTdG9wSmF2YVNjcmlwdFByb2ZpbGluZygpCisKKyAgICBT
aG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJZGVudGlmaWVyKQorCisgICAg
T3BlbkluTmV3VGFiKFN0cmluZyB1cmwpCisKICAgICBTdGFydFBhZ2VQcm9maWxpbmcoKQogICAg
IFN0b3BQYWdlUHJvZmlsaW5nKCkKIAorICAgIFNlbmRNZXNzYWdlVG9CYWNrZW5kKFN0cmluZyBt
ZXNzYWdlKQorCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0gICAgRGlzcGF0Y2hNZXNz
YWdlRnJvbVJlbW90ZUZyb250ZW5kKFN0cmluZyBtZXNzYWdlKQogICAgIFJlbW90ZUZyb250ZW5k
Q29ubmVjdGVkKCkKICAgICBSZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JV
SS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUku
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMWQ2YjMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
VUkuY3BwCkBAIC0wLDAgKzEsMjgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQor
CisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0
b3JQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRWYWx1ZS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29ybGQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL01haW5GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NjcmlwdEdsb2JhbE9iamVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0U3RhdGUuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNz
UmVmUHRyPFdlYkluc3BlY3RvclVJPiBXZWJJbnNwZWN0b3JVSTo6Y3JlYXRlKFdlYlBhZ2UqIHBh
Z2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJJbnNwZWN0b3JVSShwYWdlKSk7Cit9
CisKK1dlYkluc3BlY3RvclVJOjpXZWJJbnNwZWN0b3JVSShXZWJQYWdlKiBwYWdlKQorICAgIDog
bV9wYWdlKHBhZ2UpCisgICAgLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKDApCisgICAgLCBt
X3VuZGVyVGVzdChmYWxzZSkKKyAgICAsIG1fZnJvbnRlbmRMb2FkZWQoZmFsc2UpCisgICAgLCBt
X2RvY2tTaWRlKERvY2tTaWRlOjpVbmRvY2tlZCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAs
IG1faGFzTG9jYWxpemVkU3RyaW5nc1VSTChmYWxzZSkKKyNlbmRpZgoreworfQorCit2b2lkIFdl
Ykluc3BlY3RvclVJOjplc3RhYmxpc2hDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBlbmNvZGVk
Q29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBi
b29sIHVuZGVyVGVzdCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmll
ci5wb3J0KCkpOworICAgIGlmIChJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29u
bmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2luc3BlY3RlZFBh
Z2VJZGVudGlmaWVyID0gaW5zcGVjdGVkUGFnZUlkZW50aWZpZXI7CisgICAgbV91bmRlclRlc3Qg
PSB1bmRlclRlc3Q7CisKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9u
OjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCB0aGlzLCBSdW5M
b29wOjptYWluKCkpOworICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPm9wZW4oKTsKKyNlbHNlCisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm47CisjZW5kaWYKKworICAgIG1fcGFnZS0+
Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KHRoaXMpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjp3aW5kb3dPYmplY3RDbGVhcmVk
KCkKK3sKKyAgICBpZiAobV9mcm9udGVuZEhvc3QpCisgICAgICAgIG1fZnJvbnRlbmRIb3N0LT5k
aXNjb25uZWN0Q2xpZW50KCk7CisKKyAgICBtX2Zyb250ZW5kSG9zdCA9IEluc3BlY3RvckZyb250
ZW5kSG9zdDo6Y3JlYXRlKHRoaXMsIG1fcGFnZS0+Y29yZVBhZ2UoKSk7CisgICAgU2NyaXB0R2xv
YmFsT2JqZWN0OjpzZXQoZXhlY1N0YXRlRnJvbVBhZ2UobWFpblRocmVhZE5vcm1hbFdvcmxkKCks
IG1fcGFnZS0+Y29yZVBhZ2UoKSksIEFTQ0lJTGl0ZXJhbCgiSW5zcGVjdG9yRnJvbnRlbmRIb3N0
IiksIG1fZnJvbnRlbmRIb3N0LmdldCgpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZnJv
bnRlbmRMb2FkZWQoKQoreworICAgIG1fZnJvbnRlbmRMb2FkZWQgPSB0cnVlOworCisgICAgZXZh
bHVhdGVQZW5kaW5nRXhwcmVzc2lvbnMoKTsKKyAgICBicmluZ1RvRnJvbnQoKTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JVSTo6bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpCit7CisgICAg
RmxvYXRSZWN0IGZyYW1lUmVjdCA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+Y2hyb21lKCkud2luZG93
UmVjdCgpOworICAgIGZyYW1lUmVjdC5tb3ZlKHgsIHkpOworICAgIG1fcGFnZS0+Y29yZVBhZ2Uo
KS0+Y2hyb21lKCkuc2V0V2luZG93UmVjdChmcmFtZVJlY3QpOworfQorCit2b2lkIFdlYkluc3Bl
Y3RvclVJOjpicmluZ1RvRnJvbnQoKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpC
cmluZ1RvRnJvbnQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6RGlkQ2xvc2UoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisKKyAgICBtX2JhY2tl
bmRDb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbiA9IG51
bGxwdHI7CisKKyAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gMDsKKyAgICBtX3VuZGVy
VGVzdCA9IGZhbHNlOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpyZXF1ZXN0U2V0RG9ja1Np
ZGUoRG9ja1NpZGUgc2lkZSkKK3sKKyAgICBzd2l0Y2ggKHNpZGUpIHsKKyAgICBjYXNlIERvY2tT
aWRlOjpVbmRvY2tlZDoKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRldGFjaCgp
LCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IERvY2tTaWRlOjpSaWdodDoKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFj
aFJpZ2h0KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKwor
ICAgIGNhc2UgRG9ja1NpZGU6OkJvdHRvbToKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6OkF0dGFjaEJvdHRvbSgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzZXREb2NrU2lkZShEb2Nr
U2lkZSBzaWRlKQoreworICAgIGNvbnN0IGNoYXIqIHNpZGVTdHJpbmc7CisKKyAgICBzd2l0Y2gg
KHNpZGUpIHsKKyAgICBjYXNlIERvY2tTaWRlOjpVbmRvY2tlZDoKKyAgICAgICAgc2lkZVN0cmlu
ZyA9ICJ1bmRvY2tlZCI7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6Umln
aHQ6CisgICAgICAgIHNpZGVTdHJpbmcgPSAicmlnaHQiOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgRG9ja1NpZGU6OkJvdHRvbToKKyAgICAgICAgc2lkZVN0cmluZyA9ICJib3R0b20iOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBtX2RvY2tTaWRlID0gc2lkZTsKKworICAgIGV2
YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNldERvY2tTaWRlIiksIEFTQ0lJTGl0
ZXJhbChzaWRlU3RyaW5nKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmNoYW5nZUF0dGFj
aGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVpZ2h0KSwgbV9pbnNwZWN0ZWRQYWdl
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmNoYW5nZUF0dGFjaGVkV2lu
ZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6
OlNldEF0dGFjaGVkV2luZG93V2lkdGgod2lkdGgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVy
KTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCBo
ZWlnaHQpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldFRvb2xiYXJIZWlnaHQo
aGVpZ2h0KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yVUk6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBtX2JhY2tlbmRD
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6Ok9wZW5Jbk5ld1RhYih1cmwp
LCAwKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2F2ZShjb25zdCBXVEY6OlN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQs
IGJvb2wgZm9yY2VTYXZlQXMpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUo
ZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2ZUFzKSwgbV9pbnNwZWN0
ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmFwcGVuZChjb25z
dCBXVEY6OlN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50KQorewor
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpLCBt
X2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6aW5z
cGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3sKKyAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6SW5zcGVjdGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcpLCBtX2luc3Bl
Y3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2hvd0NvbnNv
bGUoKQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNob3dDb25z
b2xlIikpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzaG93UmVzb3VyY2VzKCkKK3sKKyAg
ICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzaG93UmVzb3VyY2VzIikpOwor
fQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUoU3RyaW5n
IGZyYW1lSWRlbnRpZmllcikKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRl
cmFsKCJzaG93TWFpblJlc291cmNlRm9yRnJhbWUiKSwgZnJhbWVJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3JVSTo6c3RhcnRQYWdlUHJvZmlsaW5nKCkKK3sKKyAgICBldmFsdWF0
ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQi
KSwgdHJ1ZSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnN0b3BQYWdlUHJvZmlsaW5nKCkK
K3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzZXRUaW1lbGluZVBy
b2ZpbGluZ0VuYWJsZWQiKSwgZmFsc2UpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpkaWRT
YXZlKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJ
SUxpdGVyYWwoInNhdmVkVVJMIiksIHVybCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmRp
ZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQo
QVNDSUlMaXRlcmFsKCJhcHBlbmRlZFRvVVJMIiksIHVybCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yVUk6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgZXZhbHVhdGVFeHByZXNzaW9uT25Mb2FkKG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5k
QVBJLmRpc3BhdGNoTWVzc2FnZUFzeW5jKCIsIG1lc3NhZ2UsICIpIikpOworfQorCit2b2lkIFdl
Ykluc3BlY3RvclVJOjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
Cit7CisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpTZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKSwgMCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yVUk6OmV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGNvbnN0
IFN0cmluZyYgYXJndW1lbnQpCit7CisgICAgaWYgKGFyZ3VtZW50LmlzTnVsbCgpKQorICAgICAg
ICBldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQobWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRB
UEkuZGlzcGF0Y2goW1wiIiwgY29tbWFuZCwgIlwiXSkiKSk7CisgICAgZWxzZQorICAgICAgICBl
dmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQobWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEku
ZGlzcGF0Y2goW1wiIiwgY29tbWFuZCwgIlwiLCBcIiIsIGFyZ3VtZW50LCAiXCJdKSIpKTsKK30K
Kwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0IFN0cmlu
ZyYgY29tbWFuZCwgYm9vbCBhcmd1bWVudCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQo
Y29tbWFuZCwgQVNDSUlMaXRlcmFsKGFyZ3VtZW50ID8gInRydWUiIDogImZhbHNlIikpOworfQor
Cit2b2lkIFdlYkluc3BlY3RvclVJOjpldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQoY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uKQoreworICAgIGlmIChtX2Zyb250ZW5kTG9hZGVkKSB7CisgICAgICAg
IEFTU0VSVChtX3F1ZXVlLmlzRW1wdHkoKSk7CisgICAgICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+
bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChleHByZXNzaW9uKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1fcXVldWUuYXBwZW5kKGV4cHJlc3Npb24pOworfQorCit2
b2lkIFdlYkluc3BlY3RvclVJOjpldmFsdWF0ZVBlbmRpbmdFeHByZXNzaW9ucygpCit7CisgICAg
QVNTRVJUKG1fZnJvbnRlbmRMb2FkZWQpOworCisgICAgZm9yIChjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24gOiBtX3F1ZXVlKQorICAgICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgp
LnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbik7CisKKyAgICBtX3F1ZXVlLmNsZWFy
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3JVSS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3RvclVJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRiZmNiZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3JVSS5oCkBAIC0wLDAgKzEsMTM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJbnNw
ZWN0b3JVSV9oCisjZGVmaW5lIFdlYkluc3BlY3RvclVJX2gKKworI2lmIEVOQUJMRShJTlNQRUNU
T1IpCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGb3J3YXJkaW5nLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOwor
CitjbGFzcyBXZWJJbnNwZWN0b3JVSSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmpl
Y3Q6OlR5cGU6OkJ1bmRsZUluc3BlY3RvclVJPiwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6Q2xp
ZW50LCBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkluc3BlY3RvclVJPiBjcmVhdGUoV2ViUGFnZSopOwor
CisgICAgV2ViUGFnZSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorCisgICAgLy8g
SW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNw
cAorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNz
YWdlRGVjb2RlciYpOworCisgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKKyAgICB2b2lk
IGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiopIHsgY2xvc2VXaW5kb3coKTsgfQorICAgIHZvaWQg
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VO
YW1lKSB7IGNsb3NlV2luZG93KCk7IH0KKworICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JV
SSBtZXNzYWdlcworICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQg
Y29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBi
b29sIHVuZGVyVGVzdCk7CisKKyAgICB2b2lkIHNob3dDb25zb2xlKCk7CisgICAgdm9pZCBzaG93
UmVzb3VyY2VzKCk7CisKKyAgICB2b2lkIHNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShTdHJpbmcg
ZnJhbWVJZGVudGlmaWVyKTsKKworICAgIHZvaWQgc3RhcnRQYWdlUHJvZmlsaW5nKCk7CisgICAg
dm9pZCBzdG9wUGFnZVByb2ZpbGluZygpOworCisgICAgdm9pZCBhdHRhY2hlZEJvdHRvbSgpIHsg
c2V0RG9ja1NpZGUoRG9ja1NpZGU6OkJvdHRvbSk7IH0KKyAgICB2b2lkIGF0dGFjaGVkUmlnaHQo
KSB7IHNldERvY2tTaWRlKERvY2tTaWRlOjpSaWdodCk7IH0KKyAgICB2b2lkIGRldGFjaGVkKCkg
eyBzZXREb2NrU2lkZShEb2NrU2lkZTo6VW5kb2NrZWQpOyB9CisKKyAgICB2b2lkIHNldERvY2tT
aWRlKERvY2tTaWRlKTsKKworICAgIHZvaWQgZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVybCk7Cisg
ICAgdm9pZCBkaWRBcHBlbmQoY29uc3QgU3RyaW5nJiB1cmwpOworCisgICAgdm9pZCBzZW5kTWVz
c2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJik7CisKKyAgICAvLyBXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZENsaWVudAorICAgIHZvaWQgd2luZG93T2JqZWN0Q2xlYXJlZCgpIG92ZXJyaWRl
OworICAgIHZvaWQgZnJvbnRlbmRMb2FkZWQoKSBvdmVycmlkZTsKKworICAgIHZvaWQgbW92ZVdp
bmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpIG92ZXJyaWRlOworCisgICAgU3RyaW5nIGxvY2FsaXpl
ZFN0cmluZ3NVUkwoKSBvdmVycmlkZTsKKworICAgIHZvaWQgYnJpbmdUb0Zyb250KCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBjbG9zZVdpbmRvdygpIG92ZXJyaWRlOworCisgICAgdm9pZCByZXF1ZXN0
U2V0RG9ja1NpZGUoRG9ja1NpZGUpIG92ZXJyaWRlOworICAgIHZvaWQgY2hhbmdlQXR0YWNoZWRX
aW5kb3dIZWlnaHQodW5zaWduZWQpIG92ZXJyaWRlOworICAgIHZvaWQgY2hhbmdlQXR0YWNoZWRX
aW5kb3dXaWR0aCh1bnNpZ25lZCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldFRvb2xiYXJIZWln
aHQodW5zaWduZWQpIG92ZXJyaWRlOworCisgICAgdm9pZCBvcGVuSW5OZXdUYWIoY29uc3QgU3Ry
aW5nJiB1cmwpIG92ZXJyaWRlOworCisgICAgYm9vbCBjYW5TYXZlKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBzYXZlKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250
ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpIG92ZXJyaWRlOworICAg
IHZvaWQgYXBwZW5kKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBj
b250ZW50KSBvdmVycmlkZTsKKworICAgIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CisKKyAgICBib29sIGlzVW5kZXJUZXN0KCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV91bmRlclRlc3Q7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXZWJJbnNwZWN0
b3JVSShXZWJQYWdlKik7CisKKyAgICB2b2lkIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb25zdCBT
dHJpbmcmIGNvbW1hbmQsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQgPSBTdHJpbmcoKSk7CisgICAg
dm9pZCBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBjb25zdCBB
U0NJSUxpdGVyYWwmIGFyZ3VtZW50KSB7IGV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb21tYW5kLCBT
dHJpbmcoYXJndW1lbnQpKTsgfQorICAgIHZvaWQgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0
IFN0cmluZyYgY29tbWFuZCwgYm9vbCBhcmd1bWVudCk7CisgICAgdm9pZCBldmFsdWF0ZUV4cHJl
c3Npb25PbkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKTsKKyAgICB2b2lkIGV2YWx1YXRl
UGVuZGluZ0V4cHJlc3Npb25zKCk7CisKKyAgICBXZWJQYWdlKiBtX3BhZ2U7CisKKyAgICBSZWZQ
dHI8SVBDOjpDb25uZWN0aW9uPiBtX2JhY2tlbmRDb25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1f
aW5zcGVjdGVkUGFnZUlkZW50aWZpZXI7CisKKyAgICBib29sIG1fdW5kZXJUZXN0OworICAgIGJv
b2wgbV9mcm9udGVuZExvYWRlZDsKKyAgICBEZXF1ZTxTdHJpbmc+IG1fcXVldWU7CisKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0PiBtX2Zyb250ZW5kSG9zdDsKKwor
ICAgIERvY2tTaWRlIG1fZG9ja1NpZGU7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtdXRh
YmxlIFN0cmluZyBtX2xvY2FsaXplZFN0cmluZ3NVUkw7CisgICAgbXV0YWJsZSBib29sIG1faGFz
TG9jYWxpemVkU3RyaW5nc1VSTDsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorCisjZW5kaWYgLy8gV2ViSW5zcGVjdG9y
VUlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgpzaW1pbGFyaXR5IGluZGV4IDc3JQpjb3B5IGZyb20g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5p
bgpjb3B5IHRvIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JV
SS5tZXNzYWdlcy5pbgppbmRleCBjMjNiODZmLi4yM2ViNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdl
cy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjIsMjkgKzIy
LDI1IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi1tZXNzYWdlcyAtPiBXZWJJbnNwZWN0
b3IgTGVnYWN5UmVjZWl2ZXIgewotICAgIFNob3coKQotICAgIENsb3NlKCkKK21lc3NhZ2VzIC0+
IFdlYkluc3BlY3RvclVJIHsKKyAgICBFc3RhYmxpc2hDb25uZWN0aW9uKElQQzo6QXR0YWNobWVu
dCBjb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIs
IGJvb2wgdW5kZXJUZXN0KQorCiAgICAgQXR0YWNoZWRCb3R0b20oKQogICAgIEF0dGFjaGVkUmln
aHQoKQogICAgIERldGFjaGVkKCkKLSAgICBEaWRTYXZlKFN0cmluZyB1cmwpCi0gICAgRGlkQXBw
ZW5kKFN0cmluZyB1cmwpCisKICAgICBTaG93Q29uc29sZSgpCiAgICAgU2hvd1Jlc291cmNlcygp
Ci0gICAgU2hvd01haW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgU3Rh
cnRKYXZhU2NyaXB0RGVidWdnaW5nKCkKLSAgICBTdG9wSmF2YVNjcmlwdERlYnVnZ2luZygpCi0g
ICAgU3RhcnRKYXZhU2NyaXB0UHJvZmlsaW5nKCkKLSAgICBTdG9wSmF2YVNjcmlwdFByb2ZpbGlu
ZygpCisKKyAgICBTaG93TWFpblJlc291cmNlRm9yRnJhbWUoU3RyaW5nIGZyYW1lSWRlbnRpZmll
cikKKwogICAgIFN0YXJ0UGFnZVByb2ZpbGluZygpCiAgICAgU3RvcFBhZ2VQcm9maWxpbmcoKQog
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0gICAgRGlzcGF0Y2hNZXNzYWdlRnJvbVJl
bW90ZUZyb250ZW5kKFN0cmluZyBtZXNzYWdlKQotICAgIFJlbW90ZUZyb250ZW5kQ29ubmVjdGVk
KCkKLSAgICBSZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCi0jZW5kaWYKKyAgICBEaWRTYXZl
KFN0cmluZyB1cmwpCisgICAgRGlkQXBwZW5kKFN0cmluZyB1cmwpCisKKyAgICBTZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQoU3RyaW5nIG1lc3NhZ2UpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDAwNjYwYzIuLjVlMDYwNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTgwLDYgKzgwLDggQEAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3IuaCIKICNpbmNsdWRlICJXZWJJ
bnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIldlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oIgpAQCAtNDYxLDYgKzQ2Myw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFn
ZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogI2VuZGlm
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2VJRCwgKnRoaXMpOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlSUQsICp0aGlzKTsKICNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7
CkBAIC01MjIsNiArNTI1LDcgQEAgV2ViUGFnZTo6fldlYlBhZ2UoKQogI2VuZGlmCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3Bh
Z2VJRCk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7
CiAjZW5kaWYKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdl
cjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CkBAIC0yODkwLDE4ICsyODk0LDI2
IEBAIHZvaWQgV2ViUGFnZTo6ZGlkRmx1c2hMYXllclRyZWVBdFRpbWUoc3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kcyB0aW1lc3RhbXApCiB9CiAjZW5kaWYKIAotICAgIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiBXZWJJbnNwZWN0b3IqIFdlYlBhZ2U6Omluc3BlY3RvcigpCiB7CiAgICAgaWYgKG1f
aXNDbG9zZWQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICBpZiAoIW1faW5zcGVjdG9yKQotICAgICAgICBtX2luc3BlY3RvciA9IFdlYkluc3BlY3Rvcjo6
Y3JlYXRlKHRoaXMsIG1faW5zcGVjdG9yQ2xpZW50KTsKKyAgICAgICAgbV9pbnNwZWN0b3IgPSBX
ZWJJbnNwZWN0b3I6OmNyZWF0ZSh0aGlzKTsKICAgICByZXR1cm4gbV9pbnNwZWN0b3IuZ2V0KCk7
CiB9CisKK1dlYkluc3BlY3RvclVJKiBXZWJQYWdlOjppbnNwZWN0b3JVSSgpCit7CisgICAgaWYg
KG1faXNDbG9zZWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghbV9pbnNwZWN0
b3JVSSkKKyAgICAgICAgbV9pbnNwZWN0b3JVSSA9IFdlYkluc3BlY3RvclVJOjpjcmVhdGUodGhp
cyk7CisgICAgcmV0dXJuIG1faW5zcGVjdG9yVUkuZ2V0KCk7Cit9CiAjZW5kaWYKLSAgICAKKwog
I2lmIFBMQVRGT1JNKElPUykKIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIqIFdlYlBhZ2U6OnZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIoKQogewpAQCAtMzQ5NywxMSArMzUwOSwxNyBAQCB2b2lkIFdl
YlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgSVBD
OjpNZXNzYWdlRGVjb2RlcgogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAgCisK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsK
ICAgICAgICAgaWYgKFdlYkluc3BlY3RvciogaW5zcGVjdG9yID0gdGhpcy0+aW5zcGVjdG9yKCkp
Ci0gICAgICAgICAgICBpbnNwZWN0b3ItPmRpZFJlY2VpdmVXZWJJbnNwZWN0b3JNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICAgICAgaW5zcGVjdG9yLT5kaWRSZWNlaXZlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAoV2ViSW5zcGVjdG9y
VUkqIGluc3BlY3RvclVJID0gdGhpcy0+aW5zcGVjdG9yVUkoKSkKKyAgICAgICAgICAgIGluc3Bl
Y3RvclVJLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKaW5kZXggYmFiYTUwNi4uYjdkNDQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNTMsNiArMTUzLDcgQEAgY2xhc3MgV2Vi
RnVsbFNjcmVlbk1hbmFnZXI7CiBjbGFzcyBXZWJJbWFnZTsKIGNsYXNzIFdlYkluc3BlY3RvcjsK
IGNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsKK2NsYXNzIFdlYkluc3BlY3RvclVJOwogY2xhc3Mg
V2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJOb3RpZmlj
YXRpb25DbGllbnQ7CkBAIC0yMjYsOCArMjI3LDEwIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAgICAgV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IoKTsKKyAgICBXZWJJbnNwZWN0
b3JVSSogaW5zcGVjdG9yVUkoKTsKKyAgICBib29sIGlzSW5zcGVjdG9yUGFnZSgpIHsgcmV0dXJu
ICEhbV9pbnNwZWN0b3JVSTsgfQogI2VuZGlmCi0gICAgCisKICNpZiBQTEFURk9STShJT1MpCiAg
ICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciogdmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpOwog
I2VuZGlmCkBAIC0xMTU5LDYgKzExNjIsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKICAgICBSZWZQdHI8V2ViSW5zcGVjdG9yPiBtX2luc3BlY3RvcjsKKyAgICBSZWZQdHI8
V2ViSW5zcGVjdG9yVUk+IG1faW5zcGVjdG9yVUk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1Mp
CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+IG1fdmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9l
ZmwvV2ViSW5zcGVjdG9yRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9lZmwvV2ViSW5zcGVjdG9yVUlFZmwuY3BwCnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFtZSBm
cm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9yRWZs
LmNwcApyZW5hbWUgdG8gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJ
bnNwZWN0b3JVSUVmbC5jcHAKaW5kZXggMmFhY2MyOS4uYTJkOGQzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JFZmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9yVUlF
ZmwuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIldlYkluc3BlY3Rvci5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWJvb2wgV2ViSW5zcGVjdG9yOjpjYW5TYXZlKCkgY29uc3QKK2Jvb2wgV2ViSW5z
cGVjdG9yVUk6OmNhblNhdmUoKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3Ry
aW5nIFdlYkluc3BlY3Rvcjo6bG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0CitTdHJpbmcgV2Vi
SW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdAogewogICAgIHJldHVybiAi
ZmlsZTovLyIgKyBXZWJDb3JlOjppbnNwZWN0b3JSZXNvdXJjZVBhdGgoKSArICIvbG9jYWxpemVk
U3RyaW5ncy5qcyI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYkluc3BlY3Rvckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcApzaW1pbGFyaXR5IGluZGV4IDkzJQpy
ZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3Bl
Y3Rvckd0ay5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwCmluZGV4IDVhMGVmOWUuLjJmNWU0NzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3Bl
Y3RvclVJR3RrLmNwcApAQCAtMjUsNyArMjUsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXZWJJbnNwZWN0b3IuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSS5o
IgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIApAQCAtMzUsMTIgKzM1LDEyIEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1ib29sIFdlYkluc3BlY3Rvcjo6Y2FuU2F2ZSgpIGNvbnN0Citib29s
IFdlYkluc3BlY3RvclVJOjpjYW5TYXZlKCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLVN0cmluZyBXZWJJbnNwZWN0b3I6OmxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdAorU3Ry
aW5nIFdlYkluc3BlY3RvclVJOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gU3RyaW5nKCJyZXNvdXJjZTovLy9vcmcvd2Via2l0Z3RrL2luc3BlY3Rvci9Mb2NhbGl6
YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMiKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yTWFjLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5t
bQpzaW1pbGFyaXR5IGluZGV4IDkyJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3Rvck1hYy5tbQpyZW5hbWUgdG8gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5tbQppbmRleCA3OTVm
NDU2Li4yYmU3NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYkluc3BlY3Rvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYkluc3BlY3RvclVJTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAog
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3IuaCIKKyNpbXBvcnQgIldl
Ykluc3BlY3RvclVJLmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCkBAIC0zNCwxMiArMzQs
MTIgQEAgU09GVF9MSU5LX1NUQUdFRF9GUkFNRVdPUksoV2ViSW5zcGVjdG9yVUksIFByaXZhdGVG
cmFtZXdvcmtzLCBBKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotYm9vbCBXZWJJbnNwZWN0b3I6
OmNhblNhdmUoKSBjb25zdAorYm9vbCBXZWJJbnNwZWN0b3JVSTo6Y2FuU2F2ZSgpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLVN0cmluZyBXZWJJbnNwZWN0b3I6OmxvY2FsaXplZFN0cmluZ3NV
UkwoKSBjb25zdAorU3RyaW5nIFdlYkluc3BlY3RvclVJOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkK
IHsKICAgICBpZiAoIW1faGFzTG9jYWxpemVkU3RyaW5nc1VSTCkgewogICAgICAgICAvLyBDYWxs
IHRoZSBzb2Z0IGxpbmsgZnJhbWV3b3JrIGZ1bmN0aW9uIHRvIGRsb3BlbiBpdCwgdGhlbiBbTlNC
dW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6XSB3aWxsIHdvcmsuCkBAIC01Miw2ICs1Miw3IEBA
IFN0cmluZyBXZWJJbnNwZWN0b3I6OmxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdAogICAgICAg
ICAgICAgbV9sb2NhbGl6ZWRTdHJpbmdzVVJMID0gU3RyaW5nKCk7CiAgICAgICAgIG1faGFzTG9j
YWxpemVkU3RyaW5nc1VSTCA9IHRydWU7CiAgICAgfQorCiAgICAgcmV0dXJuIG1fbG9jYWxpemVk
U3RyaW5nc1VSTDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237806</attachid>
            <date>2014-09-08 13:08:49 -0700</date>
            <delta_ts>2014-09-08 16:37:33 -0700</delta_ts>
            <desc>WIP (almost final x3)</desc>
            <filename>WIP.patch</filename>
            <type>text/plain</type>
            <size>122968</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYTk5MTExNy4uYTkxZjc3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTc3NSw2ICs3NzUsNyBAQCBfX1pON1dlYkNvcmUxN1NRTGl0ZVRyYW5zYWN0aW9u
RDFFdgogX19aTjdXZWJDb3JlMTdTdWJyZXNvdXJjZUxvYWRlcjZjcmVhdGVFUE5TXzVGcmFtZUVQ
TlNfMTRDYWNoZWRSZXNvdXJjZUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMjFSZXNvdXJj
ZUxvYWRlck9wdGlvbnNFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18xN0pT
RE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9fWk43
V2ViQ29yZTE3ZW5jb2RlRm9yRmlsZU5hbWVFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUx
N2V4ZWNTdGF0ZUZyb21QYWdlRVJOU18xNURPTVdyYXBwZXJXb3JsZEVQTlNfNFBhZ2VFCiBfX1pO
N1dlYkNvcmUxN2xhbmd1YWdlRGlkQ2hhbmdlRXYKIF9fWk43V2ViQ29yZTE3b3BlblRlbXBvcmFy
eUZpbGVFUktOM1dURjZTdHJpbmdFUmkKIF9fWk43V2ViQ29yZTE3c1JHQkNvbG9yU3BhY2VSZWZF
dgpAQCAtNzk4LDYgKzc5OSw3IEBAIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkOGFk
ZFR5cGVzRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDCiBfX1pON1dlYkNv
cmUxOFBsYXRmb3JtUGFzdGVib2FyZDhnZXRUeXBlc0VSTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5n
RUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0
ZWJvYXJkOHNldFR5cGVzRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDcmFz
aE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkQzFFUktOM1dU
RjZTdHJpbmdFCitfX1pON1dlYkNvcmUxOFNjcmlwdEdsb2JhbE9iamVjdDNzZXRFUE4zSlNDOUV4
ZWNTdGF0ZUVQS2NQTlNfMjFJbnNwZWN0b3JGcm9udGVuZEhvc3RFCiBfX1pON1dlYkNvcmUxOFN0
eWxlU2hlZXRDb250ZW50czExcGFyc2VTdHJpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNv
cmUxOFN0eWxlU2hlZXRDb250ZW50c0MxRVBOU18xNVN0eWxlUnVsZUltcG9ydEVSS04zV1RGNlN0
cmluZ0VSS05TXzE2Q1NTUGFyc2VyQ29udGV4dEUKIF9fWk43V2ViQ29yZTE4U3R5bGVTaGVldENv
bnRlbnRzRDFFdgpAQCAtMTkyOSw3ICsxOTMxLDEwIEBAIF9fWk5LN1dlYkNvcmU1UmFuZ2U5ZW5k
T2Zmc2V0RVJpCiBfX1pOSzdXZWJDb3JlNVJhbmdlOWZpcnN0Tm9kZUV2CiBfX1pOSzdXZWJDb3Jl
NVJhbmdlOXRleHRRdWFkc0VSTjNXVEY2VmVjdG9ySU5TXzlGbG9hdFF1YWRFTG0wRU5TMV8xNUNy
YXNoT25PdmVyZmxvd0VFRWJQTlMwXzIwUmFuZ2VJbkZpeGVkUG9zaXRpb25FCiBfX1pOSzdXZWJD
b3JlNVJhbmdlOXRleHRSZWN0c0VSTjNXVEY2VmVjdG9ySU5TXzdJbnRSZWN0RUxtMEVOUzFfMTVD
cmFzaE9uT3ZlcmZsb3dFRUViUE5TMF8yMFJhbmdlSW5GaXhlZFBvc2l0aW9uRQorX19aTks3V2Vi
Q29yZTZDaHJvbWUxMHdpbmRvd1JlY3RFdgogX19aTks3V2ViQ29yZTZDaHJvbWUxMmNyZWF0ZVdp
bmRvd0VQTlNfNUZyYW1lRVJLTlNfMTZGcmFtZUxvYWRSZXF1ZXN0RVJLTlNfMTRXaW5kb3dGZWF0
dXJlc0VSS05TXzE2TmF2aWdhdGlvbkFjdGlvbkUKK19fWk5LN1dlYkNvcmU2Q2hyb21lMTNzZXRX
aW5kb3dSZWN0RVJLTlNfOUZsb2F0UmVjdEUKK19fWk5LN1dlYkNvcmU2Q2hyb21lNHNob3dFdgog
X19aTks3V2ViQ29yZTZFZGl0b3IxMnNlbGVjdGVkVGV4dEV2CiBfX1pOSzdXZWJDb3JlNkVkaXRv
cjEzY2FuRWRpdFJpY2hseUV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjE2Y29tcG9zaXRpb25SYW5n
ZUV2CkBAIC0zMTI2LDEzICszMTMxLDE4IEBAIF9fWk43V2ViQ29yZTVDb2xvckMxRVJLTjNXVEY2
U3RyaW5nRQogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiBfX1pON1dlYkNvcmUxNFNjaGVtZVJlZ2lz
dHJ5MjdzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dl
YkNvcmUxNUluc3BlY3RvckNsaWVudDMxZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZUVQ
TlNfNFBhZ2VFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUxOEluc3BlY3RvclBhZ2VBZ2Vu
dDdmcmFtZUlkRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIx
NWNvbm5lY3RGcm9udGVuZEVQTjlJbnNwZWN0b3IyNEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbEUK
IF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4ZGlzY29ubmVjdEZyb250ZW5kRU45
SW5zcGVjdG9yMjVJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uRQogX19aTjdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyMThzZXRQcm9maWxlckVuYWJsZWRFYgogX19aTjdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyMjVldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kRVJLTjNXVEY2U3RyaW5n
RQotX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjZzZXRJbnNwZWN0b3JGcm9udGVu
ZENsaWVudEVOU3QzX18xMTB1bmlxdWVfcHRySU5TXzIzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRF
TlMxXzE0ZGVmYXVsdF9kZWxldGVJUzNfRUVFRQorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250
cm9sbGVyMjZzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudEVQTlNfMjNJbnNwZWN0b3JGcm9udGVu
ZENsaWVudEUKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI3ZGlzcGF0Y2hNZXNz
YWdlRnJvbUZyb250ZW5kRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JD
b250cm9sbGVyNHNob3dFdgogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyNWNsb3Nl
RXYKK19fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0MTZkaXNjb25uZWN0Q2xpZW50
RXYKK19fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0QzFFUE5TXzIzSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRFUE5TXzRQYWdlRQorX19aTjdXZWJDb3JlMjFJbnNwZWN0b3JGcm9udGVu
ZEhvc3REMUV2CiBfX1pON1dlYkNvcmUyMmluc3RydW1lbnRhdGlvbkZvclBhZ2VFUE5TXzRQYWdl
RQogX19aTjdXZWJDb3JlMjRJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24xN3NfZnJvbnRlbmRDb3Vu
dGVyRQogX19aTjdXZWJDb3JlMjRJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24yNmluc3RydW1lbnRp
bmdBZ2VudHNGb3JQYWdlRVBOU180UGFnZUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZjk2MDIzLi5lYWExOTlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NzYxLDcgKzE3NjEsNyBAQAogCQk0RjE1MzRFMDExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0Jl
aGF2aW9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRGMTUzNERGMTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3JUeXBlcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRGNEY1RkZC
MTFDQkQyRTEwMEExODZCRiAvKiBJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNEY1RkZBMTFD
QkQyRDIwMEExODZCRiAvKiBJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmNwcCAqLzsg
fTsKIAkJNEY2RkRENjQxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjZGREQ2MjEz
NDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmNwcCAqLzsgfTsKLQkJNEY2RkRE
NjUxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRENjMxMzQxREVERDAwMUY4RUUz
IC8qIEluc3BlY3RvclBhZ2VBZ2VudC5oICovOyB9OworCQk0RjZGREQ2NTEzNDFERUREMDAxRjhF
RTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0RjZGREQ2MzEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFn
ZUFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNEY3MDdBOTkxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRj
aGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
RjcwN0E5NzExRUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJz
LmNwcCAqLzsgfTsKIAkJNEY3MDdBOUExMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvcldlYkJh
Y2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEY3MDdBOTgxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvcldlYkJhY2tlbmRE
aXNwYXRjaGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTRGQjM5MEFEMTVFRjYxRjMwMDdBRDUxRiAvKiBHZW5lcmF0ZWRJbWFnZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RkIzOTBBQzE1RUY2
MUYzMDA3QUQ1MUYgLyogR2VuZXJhdGVkSW1hZ2UuY3BwICovOyB9OwpAQCAtMjMyNCw3ICsyMzI0
LDcgQEAKIAkJNzlGMkY1QTExMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlGMkY1OUUx
MDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuY3BwICovOyB9OwogCQk3OUYyRjVB
MjEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlGMkY1OUYxMDkxOTM5QTAwMEQ4N0NCIC8q
IENvbXBvc2l0aW9uRXZlbnQuaCAqLzsgfTsKIAkJN0EwRTc3MEUxMEMwMEE4ODAwQTAyNzZFIC8q
IEluc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzcwQjEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcCAqLzsgfTsKLQkJN0EwRTc3MEYxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3Bl
Y3RvckZyb250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0EwRTc3MEMxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9z
dC5oICovOyB9OworCQk3QTBFNzcwRjEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QTBFNzcwQzEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0EwRTc3MUUxMEMw
MERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NzFDMTBDMDBEQjEwMEEwMjc2
RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgKi87IH07CiAJCTdBMEU3NzFGMTBDMDBE
QjEwMEEwMjc2RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EwRTc3MUQxMEMwMERCMTAwQTAyNzZFIC8q
IEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggKi87IH07CiAJCTdBMUQ3RkNCMThGODVGMEYwMEMz
ODVBRCAvKiBtZWRpYUNvbnRyb2xzTG9jYWxpemVkU3RyaW5ncy5qcyBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0ExRDdGQzkxOEY4NUYwRjAwQzM4NUFE
IC8qIG1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJpbmdzLmpzICovOyB9OwpAQCAtMjM2Miw3ICsy
MzYyLDcgQEAKIAkJN0FCMEIxQzExMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFiYXNl
QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
QjBCMUJGMTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggKi87IH07
CiAJCTdBQ0Q4OEQzMTRDMDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUNEODhE
MTE0QzA4QkQ2MDA4NEVERDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwICovOyB9Owog
CQk3QUNEODhENDE0QzA4QkQ2MDA4NEVERDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQ0Q4OEQyMTRD
MDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oICovOyB9OwotCQk3QURF
NzIyNjEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FERTcyMjUxMENCQkI5QjAwNkIz
QjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLzsgfTsKKwkJN0FERTcyMjYxMENCQkI5QjAw
NkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBREU3MjI1MTBDQkJCOUIwMDZCM0IzQSAvKiBDb250ZXh0
TWVudVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0FGOUIyMDIxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFGQzE4Q0ZCMkRG
MDBDNjRCRUYgLyogVlRUUmVnaW9uLmNwcCAqLzsgfTsKIAkJN0FGOUIyMDMxOENGQjJERjAwQzY0
QkVGIC8qIFZUVFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0FGOUIxRkQxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5oICovOyB9Owog
CQk3QUY5QjIwNTE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uTGlzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFGRjE4Q0ZCMkRGMDBD
NjRCRUYgLyogVlRUUmVnaW9uTGlzdC5jcHAgKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oCmluZGV4IDhhYTA1NWIuLjkyYmYyMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oCkBA
IC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFNjcmlwdEdsb2JhbE9iamVjdCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBz
dGF0aWMgYm9vbCBzZXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0
b3JGcm9udGVuZEhvc3QqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzZXQoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0b3JGcm9udGVuZEhvc3QqKTsK
ICNlbmRpZgogCiAgICAgc3RhdGljIGJvb2wgZ2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hh
ciogbmFtZSwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuaAppbmRleCA4YTgyY2FiLi43ZTI2YWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKQEAgLTU4LDcgKzU4LDcgQEAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoSlNDOjpF
eGVjU3RhdGUqKTsKIEpTQzo6RXhlY1N0YXRlKiBtYWluV29ybGRFeGVjU3RhdGUoRnJhbWUqKTsK
IAogSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCYsIE5v
ZGUqKTsKLUpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tUGFnZShET01XcmFwcGVyV29ybGQm
LCBQYWdlKik7CitXRUJDT1JFX0VYUE9SVCBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVBh
Z2UoRE9NV3JhcHBlcldvcmxkJiwgUGFnZSopOwogSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZy
b21Xb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSopOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKaW5kZXggYzdjODc5NS4uMjA0MjUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODYsNiArODYsNyBAQCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3Rv
ckNsaWVudCogaW5zcGVjdG9yQwogICAgICwgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwobnVs
bHB0cikKICAgICAsIG1fcGFnZShwYWdlKQogICAgICwgbV9pbnNwZWN0b3JDbGllbnQoaW5zcGVj
dG9yQ2xpZW50KQorICAgICwgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudChudWxscHRyKQogICAg
ICwgbV9pc1VuZGVyVGVzdChmYWxzZSkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAg
ICAsIG1faGFzUmVtb3RlRnJvbnRlbmQoZmFsc2UpCkBAIC0xODgsOSArMTg5LDkgQEAgdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCkKICAgICBtX2luc3Bl
Y3RvckNsaWVudCA9IG51bGxwdHI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250ZW5k
Q2xpZW50PiBpbnNwZWN0b3JGcm9udGVuZENsaWVudCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIGlu
c3BlY3RvckZyb250ZW5kQ2xpZW50KQogewotICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQg
PSBXVEY6Om1vdmUoaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOworICAgIG1faW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQgPSBpbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIH0KIAogYm9vbCBJbnNwZWN0
b3JDb250cm9sbGVyOjpoYXNMb2NhbEZyb250ZW5kKCkgY29uc3QKQEAgLTIxMyw3ICsyMTQsNyBA
QCBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc1JlbW90ZUZyb250ZW5kKCkgY29uc3QKIAog
Ym9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuZ2V0KCk7CisgICAg
cmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiBmcmFtZSwgRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCkKQEAgLTI4Myw4ICsyODQsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OnNob3coKQogICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKICAgICAg
ICAgbV9pbnNwZWN0b3JDbGllbnQtPmJyaW5nRnJvbnRlbmRUb0Zyb250KCk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gbV9p
bnNwZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVuZCh0aGlzKTsKLSAgICAgICAgaWYg
KGZyb250ZW5kQ2hhbm5lbCkKKyAgICAgICAgaWYgKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsID0gbV9pbnNwZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVu
ZCh0aGlzKSkKICAgICAgICAgICAgIGNvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5oCmluZGV4IGZkNTU5MjQuLjMwZDNjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbG9z
ZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KEluc3BlY3RvckZyb250ZW5k
Q2xpZW50Kik7CiAgICAgYm9vbCBoYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIGNvbnN0Owog
ICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiwgRE9NV3JhcHBlcldv
cmxkJik7CiAKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWUoKTsK
IAogICAgIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KCkgY29uc3QgeyByZXR1cm4g
bV9pbnNwZWN0b3JDbGllbnQ7IH0KLSAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZUFnZW50OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgSW5zcGVj
dG9yUGFnZUFnZW50KiBwYWdlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VBZ2VudDsgfQog
CiAgICAgdmlydHVhbCBib29sIGRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVkU2NyaXB0U3RhdGUoSlNDOjpF
eGVjU3RhdGUqKSBjb25zdCBvdmVycmlkZTsKQEAgLTE0NiwxMCArMTQ2LDEwIEBAIHByaXZhdGU6
CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogbV90aW1lbGluZUFnZW50OwogCiAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50PiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50OwogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKICAgICBQYWdlJiBt
X3BhZ2U7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVudDsKKyAgICBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudCogbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudDsKICAgICBJbnNw
ZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CiAgICAgVmVjdG9yPEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSwgMj4gbV9pbmplY3RlZFNjcmlwdEluc3RydW1lbnRh
dGlvbkNvb2tpZXM7CiAgICAgYm9vbCBtX2lzVW5kZXJUZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCmluZGV4IDhlOGNkODUuLjFhNzRl
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEluc3BlY3RvckZyb250ZW5kSG9zdChjbGllbnQsIGZyb250ZW5kUGFnZSkpOwogICAgIH0K
IAotICAgIH5JbnNwZWN0b3JGcm9udGVuZEhvc3QoKTsKLSAgICB2b2lkIGRpc2Nvbm5lY3RDbGll
bnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+SW5zcGVjdG9yRnJvbnRlbmRIb3N0KCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCk7CiAKICAgICB2b2lkIGxvYWRl
ZCgpOwogICAgIHZvaWQgcmVxdWVzdFNldERvY2tTaWRlKGNvbnN0IFN0cmluZyYpOwpAQCAtOTUs
NyArOTUsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIGZyaWVu
ZCBjbGFzcyBGcm9udGVuZE1lbnVQcm92aWRlcjsKICNlbmRpZgotICAgIEluc3BlY3RvckZyb250
ZW5kSG9zdChJbnNwZWN0b3JGcm9udGVuZENsaWVudCosIFBhZ2UqIGZyb250ZW5kUGFnZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0KEluc3BlY3RvckZyb250ZW5k
Q2xpZW50KiwgUGFnZSogZnJvbnRlbmRQYWdlKTsKIAogICAgIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KiBtX2NsaWVudDsKICAgICBQYWdlKiBtX2Zyb250ZW5kUGFnZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCAxMTA2NzBlLi4yNWZlMWQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBA
IC0xNTUsNyArMTU1LDcgQEAgcHVibGljOgogICAgIEZyYW1lKiBtYWluRnJhbWUoKTsKICAgICBT
dHJpbmcgY3JlYXRlSWRlbnRpZmllcigpOwogICAgIEZyYW1lKiBmcmFtZUZvcklkKGNvbnN0IFN0
cmluZyYgZnJhbWVJZCk7Ci0gICAgU3RyaW5nIGZyYW1lSWQoRnJhbWUqKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgZnJhbWVJZChGcmFtZSopOwogICAgIGJvb2wgaGFzSWRGb3JGcmFtZShG
cmFtZSopIGNvbnN0OwogICAgIFN0cmluZyBsb2FkZXJJZChEb2N1bWVudExvYWRlciopOwogICAg
IEZyYW1lKiBmaW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5S
YXdTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggZmNhN2Y5MC4uM2U0ZjVmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5oCkBAIC0xMDIsOCArMTAyLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjb250
ZW50c1NpemVDaGFuZ2VkKEZyYW1lKiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0OwogCi0gICAgdm9p
ZCBzZXRXaW5kb3dSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwotICAgIEZsb2F0UmVjdCB3
aW5kb3dSZWN0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXaW5kb3dSZWN0
KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCB3
aW5kb3dSZWN0KCkgY29uc3Q7CiAKICAgICBGbG9hdFJlY3QgcGFnZVJlY3QoKSBjb25zdDsKIApA
QCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvY3VzZWRGcmFtZUNoYW5nZWQo
RnJhbWUqKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2UqIGNyZWF0ZVdpbmRvdyhG
cmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNv
bnN0IE5hdmlnYXRpb25BY3Rpb24mKSBjb25zdDsKLSAgICB2b2lkIHNob3coKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNob3coKSBjb25zdDsKIAogICAgIGJvb2wgY2FuUnVuTW9k
YWwoKSBjb25zdDsKICAgICBib29sIGNhblJ1bk1vZGFsTm93KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYWM5NmY1NS4uZTcxOTIxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTQ3MSwxMiArMTQ3MSwxMCBAQCBQYXNzUmVmUHRy
PERPTVdpbmRvdz4gSW50ZXJuYWxzOjpvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBT
dHJpbmcmIHVybCkKICAgICBQYWdlKiBmcm9udGVuZFBhZ2UgPSBtX2Zyb250ZW5kV2luZG93LT5k
b2N1bWVudCgpLT5wYWdlKCk7CiAgICAgQVNTRVJUKGZyb250ZW5kUGFnZSk7CiAKLSAgICBhdXRv
IGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZENsaWVu
dER1bW15PigmcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBmcm9udGVuZFBhZ2UpOwotCi0g
ICAgZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7Ci0KLSAgICBtX2Zyb250ZW5kQ2hh
bm5lbCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teShmcm9udGVu
ZFBhZ2UpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3JGcm9udGVuZENsaWVudER1bW15PigmcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBmcm9u
dGVuZFBhZ2UpOworICAgIGZyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldElu
c3BlY3RvckZyb250ZW5kQ2xpZW50KG1fZnJvbnRlbmRDbGllbnQuZ2V0KCkpOwogCisgICAgbV9m
cm9udGVuZENoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bER1bW15Pihmcm9udGVuZFBhZ2UpOwogICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5j
b25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENoYW5uZWwuZ2V0KCkpOwogCiAgICAgcmV0dXJuIG1f
ZnJvbnRlbmRXaW5kb3c7CkBAIC0xNDkwLDEwICsxNDg4LDExIEBAIHZvaWQgSW50ZXJuYWxzOjpj
bG9zZUR1bW15SW5zcGVjdG9yRnJvbnRlbmQoKQogCiAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNw
ZWN0b3JEZXN0cm95ZWQpOwogCi0gICAgbV9mcm9udGVuZENoYW5uZWwucmVsZWFzZSgpOworICAg
IG1fZnJvbnRlbmRDbGllbnQgPSBudWxscHRyOworICAgIG1fZnJvbnRlbmRDaGFubmVsID0gbnVs
bHB0cjsKIAogICAgIG1fZnJvbnRlbmRXaW5kb3ctPmNsb3NlKG1fZnJvbnRlbmRXaW5kb3ctPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgbV9mcm9udGVuZFdpbmRvdy5yZWxlYXNlKCk7
CisgICAgbV9mcm9udGVuZFdpbmRvdy5jbGVhcigpOwogfQogCiB2b2lkIEludGVybmFsczo6c2V0
SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBl
YykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDNmZjlhN2YuLjZjYzdkMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBEb2N1
bWVudE1hcmtlcjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbER1bW15OworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1t
eTsKIGNsYXNzIEludGVybmFsU2V0dGluZ3M7CiBjbGFzcyBNYWxsb2NTdGF0aXN0aWNzOwogY2xh
c3MgTWVtb3J5SW5mbzsKQEAgLTM1MCw3ICszNTEsOCBAQCBwcml2YXRlOgogICAgIERvY3VtZW50
TWFya2VyKiBtYXJrZXJBdChOb2RlKiwgY29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlLCB1bnNpZ25l
ZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgUmVm
UHRyPERPTVdpbmRvdz4gbV9mcm9udGVuZFdpbmRvdzsKLSAgICBPd25QdHI8SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsRHVtbXk+IG1fZnJvbnRlbmRDaGFubmVsOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudER1bW15PiBtX2Zyb250ZW5kQ2xpZW50OworICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teT4gbV9mcm9udGVuZENo
YW5uZWw7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvTWFpbi5qcwppbmRleCBmNTVhZjQ3Li4wODk4NjU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCkBAIC00OSw3ICs0
OSw3IEBAIFdlYkluc3BlY3Rvci5UeXBlSWRlbnRpZmllckNvb2tpZUtleSA9ICJyZXByZXNlbnRl
ZC1vYmplY3QtdHlwZSI7CiAKIFdlYkluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiB7Ci0g
ICAgLy8gVGVsbCB0aGUgSW5zcGVjdG9yRnJvbnRlbmRIb3N0IHdlIGxvYWRlZCBmaXJzdCB0byBl
c3RhYmxpc2ggY29tbXVuaWNhdGlvbiB3aXRoIEluc3BlY3RvckJhY2tlbmQuCisgICAgLy8gVGVs
bCB0aGUgSW5zcGVjdG9yRnJvbnRlbmRIb3N0IHdlIGxvYWRlZCwgd2hpY2ggY2F1c2VzIHRoZSB3
aW5kb3cgdG8gZGlzcGxheS4KICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZGVkKCk7CiAK
ICAgICAvLyBJbml0aWFsaXplIFdlYlNvY2tldCB0byBjb21tdW5pY2F0aW9uCkBAIC0zMjgsOSAr
MzI4LDYgQEAgV2ViSW5zcGVjdG9yLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgaWYg
KHRoaXMuX2RldGFpbHNTaWRlYmFyV2lkdGhTZXR0aW5nLnZhbHVlKQogICAgICAgICB0aGlzLmRl
dGFpbHNTaWRlYmFyLndpZHRoID0gdGhpcy5fZGV0YWlsc1NpZGViYXJXaWR0aFNldHRpbmcudmFs
dWU7CiAKLSAgICAvLyBVcGRhdGUgdGhlIGRvY2tlZCBzdGF0ZSBiYXNlZCBvbiB0aGUgcXVlcnkg
c3RyaW5nIHBhc3NlZCB3aGVuIHRoZSBXZWIgSW5zcGVjdG9yIHdhcyBsb2FkZWQuCi0gICAgdGhp
cy51cGRhdGVEb2NrZWRTdGF0ZShwYXJzZUxvY2F0aW9uUXVlcnlQYXJhbWV0ZXJzKCkuZG9ja1Np
ZGUgfHwgInVuZG9ja2VkIik7Ci0KICAgICAvLyBUZWxsIHRoZSBmcm9udGVuZCBBUEkgd2UgYXJl
IGxvYWRlZCBzbyBhbnkgcGVuZGluZyBmcm9udGVuZCBjb21tYW5kcyBjYW4gYmUgZGlzcGF0Y2hl
ZC4KICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3Rv
ckZyb250ZW5kQVBJLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKaW5kZXggMTIyNzIxMS4uN2I4ZGViMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5z
cGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAgLTI1LDI4ICsyNSwxNiBA
QAogCiBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICBfbG9hZGVkOiBmYWxzZSwKLQogICAg
IF9wZW5kaW5nQ29tbWFuZHM6IFtdLAogCiAgICAgc2F2ZWRVUkw6IGZ1bmN0aW9uKHVybCkKICAg
ICB7Ci0gICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgICAgIC8vIE5vdCB1
c2VkIHlldC4KICAgICB9LAogCiAgICAgYXBwZW5kZWRUb1VSTDogZnVuY3Rpb24odXJsKQogICAg
IHsKLSAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KLSAgICB9LAotCi0gICAgaXNE
ZWJ1Z2dpbmdFbmFibGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogTm90
IGltcGxlbWVudGVkLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKLQotICAgIHNldERl
YnVnZ2luZ0VuYWJsZWQ6IGZ1bmN0aW9uKGVuYWJsZWQpCi0gICAgewotICAgICAgICAvLyBGSVhN
RTogTm90IGltcGxlbWVudGVkLgorICAgICAgICAvLyBOb3QgdXNlZCB5ZXQuCiAgICAgfSwKIAog
ICAgIGlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkOiBmdW5jdGlvbigpCkBAIC0xMDgsMTEgKzk2
LDYgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNv
dXJjZVNpZGViYXJQYW5lbC5zaG93U291cmNlQ29kZUZvckZyYW1lKGZyYW1lSWRlbnRpZmllciwg
dHJ1ZSk7CiAgICAgfSwKIAotICAgIHNldERvY2tpbmdVbmF2YWlsYWJsZTogZnVuY3Rpb24odW5h
dmFpbGFibGUpCi0gICAgewotICAgICAgICAvLyBOb3QgdXNlZC4KLSAgICB9LAotCiAgICAgY29u
dGV4dE1lbnVJdGVtU2VsZWN0ZWQ6IGZ1bmN0aW9uKGlkKQogICAgIHsKICAgICAgICAgV2ViSW5z
cGVjdG9yLmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGlkKTsKQEAgLTE0MSw2ICsxMjQsMTAgQEAg
SW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgbWV0aG9k
TmFtZSA9IHNpZ25hdHVyZS5zaGlmdCgpOworICAgICAgICBjb25zb2xlLmFzc2VydChJbnNwZWN0
b3JGcm9udGVuZEFQSVttZXRob2ROYW1lXSwgIlVuZXhwZWN0ZWQgSW5zcGVjdG9yRnJvbnRlbmRB
UEkgbWV0aG9kIG5hbWU6ICIgKyBJbnNwZWN0b3JGcm9udGVuZEFQSVttZXRob2ROYW1lXSk7Cisg
ICAgICAgIGlmICghSW5zcGVjdG9yRnJvbnRlbmRBUElbbWV0aG9kTmFtZV0pCisgICAgICAgICAg
ICByZXR1cm47CisKICAgICAgICAgcmV0dXJuIEluc3BlY3RvckZyb250ZW5kQVBJW21ldGhvZE5h
bWVdLmFwcGx5KEluc3BlY3RvckZyb250ZW5kQVBJLCBzaWduYXR1cmUpOwogICAgIH0sCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudElPUy5tbQppbmRleCBkMzBkOGI5Li45OGRjYWVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1t
CkBAIC00Niw3ICs0Niw2IEBAIFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50
KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICAgICAsIG1faGln
aGxpZ2h0ZXIoYWRvcHROUyhbW1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNw
ZWN0ZWRXZWJWaWV3OndlYlZpZXddKSkKICAgICAsIG1fZnJvbnRlbmRQYWdlKDApCi0gICAgLCBt
X2Zyb250ZW5kQ2xpZW50KDApCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNDg1NjgzNi4uODk4Nzdl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFdlYlZpZXcg
Km1fd2ViVmlldzsKICAgICBSZXRhaW5QdHI8V2ViTm9kZUhpZ2hsaWdodGVyPiBtX2hpZ2hsaWdo
dGVyOwogICAgIFdlYkNvcmU6OlBhZ2UqIG1fZnJvbnRlbmRQYWdlOwotICAgIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KiBtX2Zyb250ZW5kQ2xpZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9mcm9udGVuZENsaWVudDsKIH07CiAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lm1tCmluZGV4IDZlMTc4OWQuLjgzMDhiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTEzMyw4ICsx
MzMsNyBAQCBAZW5kCiBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJW
aWV3ICp3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiAgICAgLCBtX2hpZ2hsaWdo
dGVyKGFkb3B0TlMoW1tXZWJOb2RlSGlnaGxpZ2h0ZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVk
V2ViVmlldzp3ZWJWaWV3XSkpCi0gICAgLCBtX2Zyb250ZW5kUGFnZSgwKQotICAgICwgbV9mcm9u
dGVuZENsaWVudCgwKQorICAgICwgbV9mcm9udGVuZFBhZ2UobnVsbHB0cikKIHsKIH0KIApAQCAt
MTUwLDExICsxNDksMTMgQEAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JD
bGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb24KICAgICBbd2luZG93Q29u
dHJvbGxlci5nZXQoKSBzZXRJbnNwZWN0b3JDbGllbnQ6dGhpc107CiAKICAgICBtX2Zyb250ZW5k
UGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgd2ViVmlld10pOwotICAgIGF1dG8g
ZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50PihtX3dlYlZpZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RvckNvbnRyb2xs
ZXIsIG1fZnJvbnRlbmRQYWdlLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwotICAgIG1fZnJv
bnRlbmRDbGllbnQgPSBmcm9udGVuZENsaWVudC5nZXQoKTsKLSAgICBSZXRhaW5QdHI8V2ViSW5z
cGVjdG9yRnJvbnRlbmQ+IHdlYkluc3BlY3RvckZyb250ZW5kID0gYWRvcHROUyhbW1dlYkluc3Bl
Y3RvckZyb250ZW5kIGFsbG9jXSBpbml0V2l0aEZyb250ZW5kQ2xpZW50OmZyb250ZW5kQ2xpZW50
LmdldCgpXSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fd2ViVmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwg
aW5zcGVjdG9yQ29udHJvbGxlciwgbV9mcm9udGVuZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGlu
Z3MoKSk7CisKKyAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yRnJvbnRlbmQ+IHdlYkluc3BlY3Rv
ckZyb250ZW5kID0gYWRvcHROUyhbW1dlYkluc3BlY3RvckZyb250ZW5kIGFsbG9jXSBpbml0V2l0
aEZyb250ZW5kQ2xpZW50Om1fZnJvbnRlbmRDbGllbnQuZ2V0KCldKTsKICAgICBbW21fd2ViVmll
dyBpbnNwZWN0b3JdIHNldEZyb250ZW5kOndlYkluc3BlY3RvckZyb250ZW5kLmdldCgpXTsKLSAg
ICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250
ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9udGVuZENsaWVudCkpOworCisgICAgbV9mcm9udGVuZFBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2Zy
b250ZW5kQ2xpZW50LmdldCgpKTsKKwogICAgIHJldHVybiB0aGlzOwogfQogCkBAIC0xOTksOCAr
MjAwLDggQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUo
Ym9vbCBlbmFibGVkKQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5k
KCkKIHsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gMDsKLSAgICBtX2Zyb250ZW5kUGFnZSA9IDA7
CisgICAgbV9mcm9udGVuZENsaWVudCA9IG51bGxwdHI7CisgICAgbV9mcm9udGVuZFBhZ2UgPSBu
dWxscHRyOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDNmMzZkZWYuLjdmMjJiYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcApAQCAtMTcxLDkgKzE3MSw4IEBAIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zCiAg
ICAgICAgIHJldHVybiAwOwogCiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKGZyb250ZW5kV2Vi
Vmlldy5nZXQoKSk7Ci0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0
ZWRXZWJWaWV3SGFuZGxlLCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRX
ZWJWaWV3SHduZCwgdGhpcywgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKLSAgICBtX2Zyb250
ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQuZ2V0KCk7Ci0gICAgbV9mcm9udGVuZFBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChXVEY6Om1vdmUo
ZnJvbnRlbmRDbGllbnQpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3Bl
Y3RlZFdlYlZpZXdIYW5kbGUsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVu
ZFdlYlZpZXdId25kLCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOworICAgIG1fZnJv
bnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQobV9mcm9udGVuZENsaWVudC5nZXQoKSk7CiAgICAgbV9mcm9udGVuZEhhbmRsZSA9IGZyb250
ZW5kSHduZDsKICAgICByZXR1cm4gdGhpczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggYjMxZGQ4OS4uNDdm
YmVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBy
ZWxlYXNlRnJvbnRlbmQoKTsKIAotICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBmcm9u
dGVuZENsaWVudCgpIHsgcmV0dXJuIG1fZnJvbnRlbmRDbGllbnQ7IH0KKyAgICBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudCogZnJvbnRlbmRDbGllbnQoKSB7IHJldHVybiBtX2Zyb250ZW5kQ2xp
ZW50LmdldCgpOyB9CiAKICAgICB2b2lkIHVwZGF0ZUhpZ2hsaWdodCgpOwogCkBAIC04NSw3ICs4
NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJWaWV3KiBtX2luc3BlY3RlZFdlYlZpZXc7CiAgICAg
V2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7Ci0gICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQqIG1fZnJvbnRlbmRDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50PiBtX2Zyb250ZW5kQ2xpZW50OwogICAgIEhXTkQgbV9pbnNwZWN0ZWRX
ZWJWaWV3SGFuZGxlOwogICAgIEhXTkQgbV9mcm9udGVuZEhhbmRsZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3Rz
LnR4dAppbmRleCA0ZjM5MjNkLi5hZGUzZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtNTMw
LDcgKzUzMCw2IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCi0gICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsdWdJbkNsaWVudC5jcHAKQEAgLTU1Miw2ICs1NTEsNyBAQCBzZXQoV2ViS2l0
Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVyLmNwcAog
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JV
SS5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggNTkzODZjYi4uZDVkN2NlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMTIxLDYgKzEyMSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFdlYkljb25EYXRh
YmFzZVByb3h5IFwKICAgICBXZWJJbnNwZWN0b3IgXAogICAgIFdlYkluc3BlY3RvclByb3h5IFwK
KyAgICBXZWJJbnNwZWN0b3JVSSBcCiAgICAgV2ViTWVkaWFDYWNoZU1hbmFnZXIgXAogICAgIFdl
Yk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkgXAogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAwNTEyNzliLi5lOGIyZTA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTkyLDcgKzE5Miw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJf
U09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2F0ay9XZWJQYWdlQWNjZXNzaWJpbGl0
eU9iamVjdEF0ay5jcHAKIAotICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9y
RWZsLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9yVUlFZmwuY3Bw
CiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcAogCiAgICAgV2ViUHJv
Y2Vzcy9lZmwvU2VjY29tcEZpbHRlcnNXZWJQcm9jZXNzRWZsLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZQppbmRleCA3MmRhN2JiLi4wMzhjOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFr
ZQpAQCAtMzAyLDcgKzMwMiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAogICAgIFdlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvUHJpbnRlckxpc3RHdGsuY3BwCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9XZWJJbnNwZWN0b3JHdGsuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJ
bnNwZWN0b3JVSUd0ay5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCmluZGV4IDZkZjQ5MTguLjkyMmU2ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKQEAgLTE0Myw2ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEJ1bmRsZUZyYW1lLAogICAgICAgICBCdW5kbGVIaXRUZXN0UmVzdWx0LAogICAgICAgICBC
dW5kbGVJbnNwZWN0b3IsCisgICAgICAgIEJ1bmRsZUluc3BlY3RvclVJLAogICAgICAgICBCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBCdW5kbGVOb2RlSGFuZGxlLAogICAgICAgICBC
dW5kbGVQYWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
SW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rv
ci5jcHAKaW5kZXggMTZlODQ1Yi4uZDg1ZjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwCkBAIC0xNzQsNDQgKzE3NCw2IEBAIHZvaWQgV0tJ
bnNwZWN0b3JEZXRhY2goV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQogI2VuZGlmCiB9CiAK
LWJvb2wgV0tJbnNwZWN0b3JJc0RlYnVnZ2luZ0phdmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5z
cGVjdG9yUmVmKQotewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgcmV0dXJuIHRvSW1wbChp
bnNwZWN0b3JSZWYpLT5pc0RlYnVnZ2luZ0phdmFTY3JpcHQoKTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKGluc3BlY3RvclJlZik7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLXZv
aWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKFdLSW5zcGVjdG9yUmVmIGlu
c3BlY3RvclJlZikKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHRvSW1wbChpbnNwZWN0
b3JSZWYpLT50b2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShpbnNwZWN0b3JSZWYpOwotI2VuZGlmCi19Ci0KLWJvb2wgV0tJbnNwZWN0b3JJc1Byb2Zp
bGluZ0phdmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQotewotI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0gICAgcmV0dXJuIHRvSW1wbChpbnNwZWN0b3JSZWYpLT5pc1Byb2ZpbGlu
Z0phdmFTY3JpcHQoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGluc3BlY3RvclJlZik7Ci0g
ICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLXZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZh
U2NyaXB0UHJvZmlsaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKLXsKLSNpZiBFTkFC
TEUoSU5TUEVDVE9SKQotICAgIHRvSW1wbChpbnNwZWN0b3JSZWYpLT50b2dnbGVKYXZhU2NyaXB0
UHJvZmlsaW5nKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0b3JSZWYpOwotI2Vu
ZGlmCi19Ci0KIGJvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ1BhZ2UoV0tJbnNwZWN0b3JSZWYg
aW5zcGVjdG9yUmVmKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oCmluZGV4IGJhNzY0ODkuLjE0NjU0ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oCkBAIC01OCwx
MiArNTgsNiBAQCBXS19FWFBPUlQgYm9vbCBXS0luc3BlY3RvcklzQXR0YWNoZWQoV0tJbnNwZWN0
b3JSZWYgaW5zcGVjdG9yKTsKIFdLX0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9yQXR0YWNoKFdLSW5z
cGVjdG9yUmVmIGluc3BlY3Rvcik7CiBXS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvckRldGFjaChX
S0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwogCi1XS19FWFBPUlQgYm9vbCBXS0luc3BlY3Rvcklz
RGVidWdnaW5nSmF2YVNjcmlwdChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwotV0tfRVhQT1JU
IHZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKFdLSW5zcGVjdG9yUmVm
IGluc3BlY3Rvcik7Ci0KLVdLX0VYUE9SVCBib29sIFdLSW5zcGVjdG9ySXNQcm9maWxpbmdKYXZh
U2NyaXB0KFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7Ci1XS19FWFBPUlQgdm9pZCBXS0luc3Bl
Y3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmcoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsK
LQogV0tfRVhQT1JUIGJvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ1BhZ2UoV0tJbnNwZWN0b3JS
ZWYgaW5zcGVjdG9yKTsKIFdLX0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9yVG9nZ2xlUGFnZVByb2Zp
bGluZyhXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBiZTM3NzA0Li42NTE5NjY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEg
TW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBA
IC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgogI2luY2x1ZGUgIldl
Ykluc3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdl
cy5oIgotI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJX
ZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKQEAgLTU3
LDkgKzU3LDYgQEAgY29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6Om1pbmltdW1XaW5k
b3dIZWlnaHQgPSA0MDA7CiBjb25zdCB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5pdGlh
bFdpbmRvd1dpZHRoID0gMTAwMDsKIGNvbnN0IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5Ojpp
bml0aWFsV2luZG93SGVpZ2h0ID0gNjUwOwogCi1jb25zdCB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQ
cm94eTo6bWluaW11bUF0dGFjaGVkV2lkdGggPSA3NTA7Ci1jb25zdCB1bnNpZ25lZCBXZWJJbnNw
ZWN0b3JQcm94eTo6bWluaW11bUF0dGFjaGVkSGVpZ2h0ID0gMjUwOwotCiBjbGFzcyBXZWJJbnNw
ZWN0b3JQYWdlR3JvdXBzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViSW5zcGVjdG9yUGFnZUdy
b3VwcyYgc2hhcmVkKCkKQEAgLTEwNSwxMSArMTAyLDEyIEBAIHByaXZhdGU6CiAgICAgICAgIFJl
ZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKFN0cmlu
Zzo6Zm9ybWF0KCJfX1dlYkluc3BlY3RvclBhZ2VHcm91cExldmVsJXVfXyIsIGxldmVsKSwgZmFs
c2UsIGZhbHNlKTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLy8gQWxsb3cgZGV2ZWxvcGVy
cyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcy4KKyAgICAgICAg
Ly8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVn
IGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgogICAgICAgICBwYWdlR3JvdXAtPnBy
ZWZlcmVuY2VzKCkuc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKICAgICAgICAgcGFn
ZUdyb3VwLT5wcmVmZXJlbmNlcygpLnNldExvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVF
bmFibGVkKHRydWUpOwogI2VuZGlmCiAKKyAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygp
LnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyh0cnVlKTsKICAgICAgICAgcGFnZUdyb3Vw
LT5wcmVmZXJlbmNlcygpLnNldEFwcGxpY2F0aW9uQ2hyb21lTW9kZUVuYWJsZWQodHJ1ZSk7CiAK
ICAgICAgICAgcmV0dXJuIHBhZ2VHcm91cC5yZWxlYXNlKCk7CkBAIC0xMjQsMTMgKzEyMiwxMiBA
QCBwcml2YXRlOgogCiBXZWJJbnNwZWN0b3JQcm94eTo6V2ViSW5zcGVjdG9yUHJveHkoV2ViUGFn
ZVByb3h5KiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX2luc3BlY3RvclBhZ2Uo
bnVsbHB0cikKICAgICAsIG1faXNWaXNpYmxlKGZhbHNlKQogICAgICwgbV9pc0F0dGFjaGVkKGZh
bHNlKQotICAgICwgbV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQoZmFsc2UpCi0gICAgLCBtX2lzUHJv
ZmlsaW5nSmF2YVNjcmlwdChmYWxzZSkKKyAgICAsIG1fY2FuQXR0YWNoKGZhbHNlKQogICAgICwg
bV9pc1Byb2ZpbGluZ1BhZ2UoZmFsc2UpCiAgICAgLCBtX3Nob3dNZXNzYWdlU2VudChmYWxzZSkK
LSAgICAsIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UoZmFsc2UpCiAgICAgLCBtX2lnbm9yZUZpcnN0
QnJpbmdUb0Zyb250KGZhbHNlKQogICAgICwgbV9hdHRhY2htZW50U2lkZShBdHRhY2htZW50U2lk
ZUJvdHRvbSkKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKQEAgLTE4OCw2ICsx
ODUsOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpjb25uZWN0KCkKICAgICBtX3Nob3dNZXNz
YWdlU2VudCA9IHRydWU7CiAgICAgbV9pZ25vcmVGaXJzdEJyaW5nVG9Gcm9udCA9IHRydWU7CiAK
KyAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOworCiAgICAgbV9wYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93KCksIG1fcGFnZS0+cGFnZUlEKCkp
OwogfQogCkBAIC0yMzIsNiArMjMxLDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd0Nv
bnNvbGUoKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKKyAgICBlYWdlcmx5
Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOworCiAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpTaG93Q29uc29sZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0K
IApAQCAtMjQwLDYgKzI0MSw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dSZXNvdXJj
ZXMoKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKKyAgICBlYWdlcmx5Q3Jl
YXRlSW5zcGVjdG9yUGFnZSgpOworCiAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpTaG93UmVzb3VyY2VzKCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQog
CkBAIC0yNDgsNiArMjUxLDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd01haW5SZXNv
dXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lKQogICAgIGlmICghbV9wYWdlKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOworCiAgICAg
bV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93TWFpblJl
c291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQog
CkBAIC0yNzQsMTMgKzI3OSwxNSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2goQXR0
YWNobWVudFNpZGUgc2lkZSkKICAgICBpZiAobV9pc1Zpc2libGUpCiAgICAgICAgIGluc3BlY3Rv
clBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKHRy
dWUpOwogCisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpTZXRBdHRhY2hlZCh0cnVlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisKICAgICBzd2l0Y2ggKG1f
YXR0YWNobWVudFNpZGUpIHsKICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlQm90dG9tOgotICAgICAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVk
Qm90dG9tKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwg
bV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBB
dHRhY2htZW50U2lkZVJpZ2h0OgotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVkUmlnaHQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJOjpBdHRhY2hlZFJpZ2h0KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAKQEAgLTI5Nyw3ICszMDQsOCBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpkZXRhY2goKQogICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAgaW5zcGVjdG9y
UGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoZmFs
c2UpOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpEZXRhY2hlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKGZhbHNlKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yVUk6OkRldGFjaGVkKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwog
CiAgICAgcGxhdGZvcm1EZXRhY2goKTsKIH0KQEAgLTMxNCwzNCArMzIyLDYgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKICAg
ICBwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgod2lkdGgpOwogfQogCi12b2lkIFdlYklu
c3BlY3RvclByb3h5Ojp0b2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKCkKLXsKLSAgICBpZiAoIW1f
cGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0
KQotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6
OlN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAgIGVsc2UK
LSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpT
dGFydEphdmFTY3JpcHREZWJ1Z2dpbmcoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0KLSAgICAvLyBG
SVhNRTogaGF2ZSB0aGUgV2ViUHJvY2VzcyBub3RpZnkgdXMgb24gc3RhdGUgY2hhbmdlcy4KLSAg
ICBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdCA9ICFtX2lzRGVidWdnaW5nSmF2YVNjcmlwdDsKLX0K
LQotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlSmF2YVNjcmlwdFByb2ZpbGluZygpCi17
Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2lzUHJvZmls
aW5nSmF2YVNjcmlwdCkKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjpTdG9wSmF2YVNjcmlwdFByb2ZpbGluZygpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3Rvcjo6U3RhcnRKYXZhU2NyaXB0UHJvZmlsaW5nKCksIG1fcGFnZS0+cGFnZUlEKCkp
OwotCi0gICAgLy8gRklYTUU6IGhhdmUgdGhlIFdlYlByb2Nlc3Mgbm90aWZ5IHVzIG9uIHN0YXRl
IGNoYW5nZXMuCi0gICAgbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQgPSAhbV9pc1Byb2ZpbGluZ0ph
dmFTY3JpcHQ7Ci19Ci0KIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnRvZ2dsZVBhZ2VQcm9maWxp
bmcoKQogewogICAgIGlmICghbV9wYWdlKQpAQCAtNDI2LDI5ICs0MDYsMjAgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKQogCiB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3Rvcjo6RGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKG1lc3NhZ2UpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3I6OlNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKIH0KICNlbmRpZgogCi0vLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yUHJveHkgbWVzc2Fn
ZXMKLXZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2UodWludDY0X3Qm
IGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgaW5zcGVjdG9yUGFn
ZVBhcmFtZXRlcnMpCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjplYWdlcmx5Q3JlYXRlSW5zcGVj
dG9yUGFnZSgpCiB7Ci0gICAgaW5zcGVjdG9yUGFnZUlEID0gMDsKLQotICAgIGlmICghbV9wYWdl
KQorICAgIGlmIChtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faXNB
dHRhY2hlZCA9IHNob3VsZE9wZW5BdHRhY2hlZCgpOwotICAgIG1fYXR0YWNobWVudFNpZGUgPSBz
dGF0aWNfY2FzdDxBdHRhY2htZW50U2lkZT4oaW5zcGVjdG9yUGFnZUdyb3VwKCktPnByZWZlcmVu
Y2VzKCkuaW5zcGVjdG9yQXR0YWNobWVudFNpZGUoKSk7Ci0KLSAgICBXZWJQYWdlUHJveHkqIGlu
c3BlY3RvclBhZ2UgPSBwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKLSAgICBBU1NFUlQo
aW5zcGVjdG9yUGFnZSk7Ci0gICAgaWYgKCFpbnNwZWN0b3JQYWdlKQorICAgIG1faW5zcGVjdG9y
UGFnZSA9IHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpOworICAgIEFTU0VSVChtX2luc3Bl
Y3RvclBhZ2UpOworICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpbnNwZWN0b3JQYWdlSUQgPSBpbnNwZWN0b3JQYWdlLT5wYWdlSUQoKTsKLSAgICBpbnNw
ZWN0b3JQYWdlUGFyYW1ldGVycyA9IGluc3BlY3RvclBhZ2UtPmNyZWF0aW9uUGFyYW1ldGVycygp
OwotCiAgICAgV0tQYWdlUG9saWN5Q2xpZW50VjEgcG9saWN5Q2xpZW50ID0gewogICAgICAgICB7
IDEsIHRoaXMgfSwKICAgICAgICAgMCwgLyogZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwICovCkBAIC00NTksNjkgKzQzMCw0OCBAQCB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKHVpbnQ2NF90JiBpbnNwZWN0b3JQ
YWdlSUQsIFdlYlBhZ2VDcgogICAgICAgICAwLCAvKiBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSAq
LwogICAgIH07CiAKLSAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KHRvQVBJKGluc3BlY3Rv
clBhZ2UpLCAmcG9saWN5Q2xpZW50LmJhc2UpOwotCi0gICAgU3RyaW5nQnVpbGRlciB1cmw7Cisg
ICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSShtX2luc3BlY3RvclBhZ2UpLCAmcG9s
aWN5Q2xpZW50LmJhc2UpOwogCi0gICAgdXJsLmFwcGVuZChpbnNwZWN0b3JQYWdlVVJMKCkpOwot
Ci0gICAgdXJsLmFwcGVuZExpdGVyYWwoIj9kb2NrU2lkZT0iKTsKLQotICAgIGlmIChtX2lzQXR0
YWNoZWQpIHsKLSAgICAgICAgc3dpdGNoIChtX2F0dGFjaG1lbnRTaWRlKSB7Ci0gICAgICAgIGNh
c2UgQXR0YWNobWVudFNpZGVCb3R0b206Ci0gICAgICAgICAgICB1cmwuYXBwZW5kTGl0ZXJhbCgi
Ym90dG9tIik7Ci0gICAgICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3I6OkF0dGFjaGVkQm90dG9tKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVSaWdodDoKLSAgICAgICAg
ICAgIHVybC5hcHBlbmRMaXRlcmFsKCJyaWdodCIpOwotICAgICAgICAgICAgbV9wYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpBdHRhY2hlZFJpZ2h0KCksIG1fcGFn
ZS0+cGFnZUlEKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UK
LSAgICAgICAgdXJsLmFwcGVuZExpdGVyYWwoInVuZG9ja2VkIik7Ci0KLSAgICBtX3BhZ2UtPnBy
b2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGluc3BlY3RvckJhc2VVUkwoKSk7Ci0K
LSAgICBpbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIHVybC50b1N0cmluZygp
KSk7Ci0KLSAgICBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlID0gdHJ1ZTsKKyAgICBtX2luc3BlY3Rv
clBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCksICp0aGlzKTsK
KyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJM
KGluc3BlY3RvckJhc2VVUkwoKSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0
ZUluc3BlY3RvclBhZ2VGb3JUZXN0KHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmIGluc3BlY3RvclBhZ2VQYXJhbWV0ZXJzKQorLy8gQ2FsbGVkIGJ5
IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2VzCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVh
dGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9v
bCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXN0KQogewotICAgIGluc3BlY3RvclBhZ2VJRCA9IDA7
Ci0KICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pc0F0dGFjaGVk
ID0gZmFsc2U7CisgICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKIAotICAgIFdlYlBh
Z2VQcm94eSogaW5zcGVjdG9yUGFnZSA9IHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpOwot
ICAgIEFTU0VSVChpbnNwZWN0b3JQYWdlKTsKLSAgICBpZiAoIWluc3BlY3RvclBhZ2UpCisgICAg
QVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGluc3BlY3RvclBhZ2VJRCA9IGluc3BlY3RvclBhZ2UtPnBhZ2VJ
RCgpOwotICAgIGluc3BlY3RvclBhZ2VQYXJhbWV0ZXJzID0gaW5zcGVjdG9yUGFnZS0+Y3JlYXRp
b25QYXJhbWV0ZXJzKCk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUk6OkVzdGFibGlzaENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50
aWZpZXIsIG1fcGFnZS0+cGFnZUlEKCksIGZhbHNlKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQo
KSk7CiAKLSAgICBXS1BhZ2VQb2xpY3lDbGllbnRWMSBwb2xpY3lDbGllbnQgPSB7Ci0gICAgICAg
IHsgMSwgdGhpcyB9LAotICAgICAgICAwLCAvKiBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgKi8KLSAgICAgICAgMCwgLyogZGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uICovCi0gICAgICAgIDAsIC8qIGRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgKi8KLSAgICAgICAgMCwgLyogdW5hYmxlVG9JbXBs
ZW1lbnRQb2xpY3kgKi8KLSAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiwK
LSAgICAgICAgMCwgLyogZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UgKi8KLSAgICB9OworICAgIGlm
ICghdW5kZXJUZXN0KSB7CisgICAgICAgIG1fY2FuQXR0YWNoID0gY2FuQXR0YWNoOworICAgICAg
ICBtX2lzQXR0YWNoZWQgPSBzaG91bGRPcGVuQXR0YWNoZWQoKTsKKyAgICAgICAgbV9hdHRhY2ht
ZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0dGFjaG1lbnRTaWRlPihpbnNwZWN0b3JQYWdlR3JvdXAo
KS0+cHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2htZW50U2lkZSgpKTsKIAotICAgIFdLUGFn
ZVNldFBhZ2VQb2xpY3lDbGllbnQodG9BUEkoaW5zcGVjdG9yUGFnZSksICZwb2xpY3lDbGllbnQu
YmFzZSk7CisgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3Rvcjo6U2V0QXR0YWNoZWQobV9pc0F0dGFjaGVkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiAKLSAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGluc3BlY3RvckJh
c2VVUkwoKSk7CisgICAgICAgIGlmIChtX2lzQXR0YWNoZWQpIHsKKyAgICAgICAgICAgIHN3aXRj
aCAobV9hdHRhY2htZW50U2lkZSkgeworICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZUJv
dHRvbToKKyAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdl
LT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBpbnNwZWN0b3JQYWdl
LT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIGluc3BlY3RvclRlc3RQYWdlVVJMKCkpKTsKKyAgICAg
ICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVSaWdodDoKKyAgICAgICAgICAgICAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNo
ZWRSaWdodCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNo
ZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgfQogCi0gICAgbV9jcmVhdGVk
SW5zcGVjdG9yUGFnZSA9IHRydWU7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChV
UkwoVVJMKCksIHVuZGVyVGVzdCA/IGluc3BlY3RvclRlc3RQYWdlVVJMKCkgOiBpbnNwZWN0b3JQ
YWdlVVJMKCkpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbigpCkBAIC01MzMs
MjAgKzQ4MywyMSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuKCkKIAogdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6ZGlkQ2xvc2UoKQogewotICAgIGlmICghbV9jcmVhdGVkSW5zcGVjdG9y
UGFnZSkKKyAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRyOworCiAgICAgbV9pc1Zpc2libGUg
PSBmYWxzZTsKLSAgICBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdCA9IGZhbHNlOwotICAgIG1faXNQ
cm9maWxpbmdKYXZhU2NyaXB0ID0gZmFsc2U7CiAgICAgbV9pc1Byb2ZpbGluZ1BhZ2UgPSBmYWxz
ZTsKLSAgICBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlID0gZmFsc2U7CiAgICAgbV9zaG93TWVzc2Fn
ZVNlbnQgPSBmYWxzZTsKICAgICBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250ID0gZmFsc2U7CiAK
ICAgICBpZiAobV9pc0F0dGFjaGVkKQogICAgICAgICBwbGF0Zm9ybURldGFjaCgpOwogICAgIG1f
aXNBdHRhY2hlZCA9IGZhbHNlOworICAgIG1fY2FuQXR0YWNoID0gZmFsc2U7CiAKICAgICBwbGF0
Zm9ybURpZENsb3NlKCk7CiB9CkBAIC01NjksNiArNTIwLDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6YnJpbmdUb0Zyb250KCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoQXZh
aWxhYmlsaXR5Q2hhbmdlZChib29sIGF2YWlsYWJsZSkKIHsKKyAgICBtX2NhbkF0dGFjaCA9IGF2
YWlsYWJsZTsKKwogICAgIHBsYXRmb3JtQXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChhdmFpbGFi
bGUpOwogfQogCkBAIC01ODcsMjggKzU0MCw2IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmFw
cGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiAgICAg
cGxhdGZvcm1BcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpOwogfQogCi1ib29sIFdlYkluc3BlY3Rv
clByb3h5OjpjYW5BdHRhY2goKQotewotICAgIC8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2FuQXR0YWNoV2luZG93LiBUaGVyZSBhcmUgdHdv
IGltcGxlbWVudGF0aW9ucwotICAgIC8vIHRvIG1ha2UgbGlmZSBlYXNpZXIgaW4gdGhlIG11bHRp
LXByb2Nlc3Mgd29ybGQgd2UgaGF2ZS4gV2ViSW5zcGVjdG9yUHJveHkgdXNlcyBjYW5BdHRhY2gg
dG8gZGVjaWRlIGlmCi0gICAgLy8gd2UgY2FuIGF0dGFjaCBvbiBvcGVuIChvbiB0aGUgVUkgcHJv
Y2VzcyBzaWRlKS4gQW5kIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNhbkF0dGFjaFdp
bmRvdyBpcwotICAgIC8vIHVzZWQgdG8gZGVjaWRlIGlmIHdlIGNhbiBhdHRhY2ggd2hlbiB0aGUg
YXR0YWNoIGJ1dHRvbiBpcyBwcmVzc2VkIChvbiB0aGUgV2ViUHJvY2VzcyBzaWRlKS4KLQotICAg
IC8vIElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCBhbGxvdyBhdHRhY2hpbmcgYWdhaW4gdG8g
YWxsb3cgc3dpdGNoaW5nIHNpZGVzLgotICAgIGlmIChtX2lzQXR0YWNoZWQpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgLy8gRG9uJ3QgYWxsb3cgYXR0YWNoaW5nIHRvIGFub3RoZXIgaW5z
cGVjdG9yIC0tIHR3byBpbnNwZWN0b3JzIGluIG9uZSB3aW5kb3cgaXMgdG9vIG11Y2ghCi0gICAg
aWYgKG1fbGV2ZWwgPiAxKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBEb24ndCBh
bGxvdyB0aGUgYXR0YWNoIGlmIHRoZSB3aW5kb3cgd291bGQgYmUgdG9vIHNtYWxsIHRvIGFjY29t
bW9kYXRlIHRoZSBtaW5pbXVtIGluc3BlY3RvciBoZWlnaHQuCi0gICAgdW5zaWduZWQgaW5zcGVj
dGVkUGFnZUhlaWdodCA9IHBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0KCk7Ci0gICAgdW5z
aWduZWQgaW5zcGVjdGVkUGFnZVdpZHRoID0gcGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dXaWR0aCgp
OwotICAgIHVuc2lnbmVkIG1heGltdW1BdHRhY2hlZEhlaWdodCA9IGluc3BlY3RlZFBhZ2VIZWln
aHQgKiAzIC8gNDsKLSAgICByZXR1cm4gbWluaW11bUF0dGFjaGVkSGVpZ2h0IDw9IG1heGltdW1B
dHRhY2hlZEhlaWdodCAmJiBtaW5pbXVtQXR0YWNoZWRXaWR0aCA8PSBpbnNwZWN0ZWRQYWdlV2lk
dGg7Ci19Ci0KIGJvb2wgV2ViSW5zcGVjdG9yUHJveHk6OnNob3VsZE9wZW5BdHRhY2hlZCgpCiB7
CiAgICAgcmV0dXJuIGluc3BlY3RvclBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLmluc3BlY3Rv
clN0YXJ0c0F0dGFjaGVkKCkgJiYgY2FuQXR0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDE3YTc0OTguLjlhOGJjYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzAsNiAr
MzAsNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
KyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAt
NjIsNyArNjMsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBj
bGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7Ci1zdHJ1Y3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVyczsKIAogZW51bSBBdHRhY2htZW50U2lkZSB7CiAgICAgQXR0YWNobWVu
dFNpZGVCb3R0b20sCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICAvLyBQdWJsaWMgQVBJ
cwogICAgIFdlYlBhZ2VQcm94eSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQogCi0g
ICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRlZEluc3BlY3RvclBh
Z2U7IH0KKyAgICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3BlY3Rv
clBhZ2U7IH0KICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaXNpYmxl
OyB9CiAgICAgYm9vbCBpc0Zyb250KCk7CiAKQEAgLTEyMywxMiArMTIzLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCk7CiAgICAgdm9pZCBzZXRU
b29sYmFySGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkgeyBwbGF0Zm9ybVNldFRvb2xiYXJIZWlnaHQo
aGVpZ2h0KTsgfQogCi0gICAgYm9vbCBpc0RlYnVnZ2luZ0phdmFTY3JpcHQoKSBjb25zdCB7IHJl
dHVybiBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdDsgfQotICAgIHZvaWQgdG9nZ2xlSmF2YVNjcmlw
dERlYnVnZ2luZygpOwotCi0gICAgYm9vbCBpc1Byb2ZpbGluZ0phdmFTY3JpcHQoKSBjb25zdCB7
IHJldHVybiBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdDsgfQotICAgIHZvaWQgdG9nZ2xlSmF2YVNj
cmlwdFByb2ZpbGluZygpOwotCiAgICAgYm9vbCBpc1Byb2ZpbGluZ1BhZ2UoKSBjb25zdCB7IHJl
dHVybiBtX2lzUHJvZmlsaW5nUGFnZTsgfQogICAgIHZvaWQgdG9nZ2xlUGFnZVByb2ZpbGluZygp
OwogCkBAIC0xNTAsOSArMTQ0LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
V2ViSW5zcGVjdG9yUHJveHkoV2ViUGFnZVByb3h5Kik7CiAKKyAgICB2b2lkIGVhZ2VybHlDcmVh
dGVJbnNwZWN0b3JQYWdlKCk7CisKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6TWVzc2FnZUVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICBXZWJQYWdlUHJveHkq
IHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpOwogICAgIHZvaWQgcGxhdGZvcm1PcGVuKCk7
CkBAIC0xNzMsOCArMTY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtQXBwZW5kKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CiAKICAgICAvLyBD
YWxsZWQgYnkgV2ViSW5zcGVjdG9yUHJveHkgbWVzc2FnZXMKLSAgICB2b2lkIGNyZWF0ZUluc3Bl
Y3RvclBhZ2UodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYpOwotICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QodWludDY0X3QmIGlu
c3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOworICAgIHZvaWQgY3Jl
YXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQsIGJvb2wgY2FuQXR0YWNoLCBib29sIHVu
ZGVyVGVzdCk7CiAgICAgdm9pZCBkaWRDbG9zZSgpOwogICAgIHZvaWQgYnJpbmdUb0Zyb250KCk7
CiAgICAgdm9pZCBhdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wpOwpAQCAtMTg3LDcgKzE4
MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKICNlbmRpZgogCi0gICAgYm9vbCBjYW5BdHRhY2goKTsKKyAg
ICBib29sIGNhbkF0dGFjaCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuQXR0YWNoOyB9CiAgICAgYm9v
bCBzaG91bGRPcGVuQXR0YWNoZWQoKTsKIAogICAgIHZvaWQgb3BlbigpOwpAQCAtMjA0LDE5ICsx
OTgsMTQgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5pdGlhbFdpbmRv
d1dpZHRoOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbml0aWFsV2luZG93SGVpZ2h0Owog
Ci0gICAgLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0aGUgdmFsdWUgaW4gSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC4KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bUF0dGFj
aGVkV2lkdGg7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1BdHRhY2hlZEhlaWdo
dDsKLQogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOworICAgIFdlYlBhZ2VQcm94eSogbV9pbnNw
ZWN0b3JQYWdlOwogCiAgICAgYm9vbCBtX2lzVmlzaWJsZTsKICAgICBib29sIG1faXNBdHRhY2hl
ZDsKLSAgICBib29sIG1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0OwotICAgIGJvb2wgbV9pc1Byb2Zp
bGluZ0phdmFTY3JpcHQ7CisgICAgYm9vbCBtX2NhbkF0dGFjaDsKICAgICBib29sIG1faXNQcm9m
aWxpbmdQYWdlOwogICAgIGJvb2wgbV9zaG93TWVzc2FnZVNlbnQ7Ci0gICAgYm9vbCBtX2NyZWF0
ZWRJbnNwZWN0b3JQYWdlOwogICAgIGJvb2wgbV9pZ25vcmVGaXJzdEJyaW5nVG9Gcm9udDsKIAog
ICAgIC8vIFRoZSBkZWJ1Z2dlciBzdG9wcyBhbGwgdGhlIHBhZ2VzIGluIHRoZSBzYW1lIFBhZ2VH
cm91cC4gSGF2aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5z
cGVjdG9yUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5z
cGVjdG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTZjOTQ0ZC4uZWI3ZmE5YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdl
cy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMs
MTAgKzIzLDExIEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogbWVzc2FnZXMgLT4gV2ViSW5z
cGVjdG9yUHJveHkgewotICAgIENyZWF0ZUluc3BlY3RvclBhZ2UoKSAtPiAodWludDY0X3QgaW5z
cGVjdG9yUGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgaW5zcGVjdG9y
UGFnZVBhcmFtZXRlcnMpCi0gICAgQ3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QoKSAtPiAodWlu
dDY0X3QgaW5zcGVjdG9yUGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMg
aW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMpCisgICAgQ3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0
dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgY2FuQXR0YWNoLCBib29sIHVuZGVy
VGVzdCkKKwogICAgIERpZENsb3NlKCkKICAgICBCcmluZ1RvRnJvbnQoKQorCiAgICAgSW5zcGVj
dGVkVVJMQ2hhbmdlZChTdHJpbmcgdXJsU3RyaW5nKQogCiAgICAgU2F2ZShTdHJpbmcgZmlsZW5h
bWUsIFN0cmluZyBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMp
CkBAIC0zNSw2ICszNiw3IEBAIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclByb3h5IHsKICAgICBB
dHRhY2hCb3R0b20oKQogICAgIEF0dGFjaFJpZ2h0KCkKICAgICBEZXRhY2goKQorCiAgICAgQXR0
YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29sIGF2YWlsYWJsZSkKIAogICAgIFNldEF0dGFjaGVk
V2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IGM2YzY2OGMuLmQ1NmU3
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9y
UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0
b3JQcm94eU1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCAiV0tVUkxDRi5oIgogI2ltcG9y
dCAiV0tWaWV3UHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCIKKyNp
bXBvcnQgIldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlBhZ2VHcm91cC5o
IgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlcy5oIgpA
QCAtNDE4LDcgKzQxOSw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgICAgICAgICBpbml0aWFsUmVjdCA9IFtOU1dp
bmRvdyBjb250ZW50UmVjdEZvckZyYW1lUmVjdDp3aW5kb3dGcmFtZSBzdHlsZU1hc2s6d2luZG93
U3R5bGVNYXNrXTsKICAgICB9CiAKLSAgICBtX2luc3BlY3RvclZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJJbnNwZWN0b3JXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6aW5pdGlhbFJlY3QgY29udGV4
dFJlZjp0b0FQSSgmcGFnZSgpLT5wcm9jZXNzKCkuY29udGV4dCgpKSBwYWdlR3JvdXBSZWY6dG9B
UEkoaW5zcGVjdG9yUGFnZUdyb3VwKCkpIHJlbGF0ZWRUb1BhZ2U6dG9BUEkobV9wYWdlKV0pOwor
ICAgIG1faW5zcGVjdG9yVmlldyA9IGFkb3B0TlMoW1tXS1dlYkluc3BlY3RvcldLVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTppbml0aWFsUmVjdCBjb250ZXh0UmVmOnRvQVBJKCZwYWdlKCktPnBy
b2Nlc3MoKS5jb250ZXh0KCkpIHBhZ2VHcm91cFJlZjp0b0FQSShpbnNwZWN0b3JQYWdlR3JvdXAo
KSkgcmVsYXRlZFRvUGFnZTpudWxscHRyXSk7CiAgICAgQVNTRVJUKG1faW5zcGVjdG9yVmlldyk7
CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDw9IDEwOTAKQEAgLTU4OSw3
ICs1OTAsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYgYwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIFtjb250ZW50Q29weSB3cml0ZVRvVVJMOmFjdHVhbFVSTCBhdG9taWNhbGx5OllFUyBl
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpOVUxMXTsKIAotICAgICAgICBtX3Bh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkRpZFNhdmUoW2FjdHVh
bFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNw
ZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRpZFNh
dmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgp
KTsKICAgICB9OwogCiAgICAgaWYgKCFmb3JjZVNhdmVEaWFsb2cpIHsKQEAgLTYyMyw3ICs2MjQs
NyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJgogICAgIFtoYW5kbGUgd3JpdGVEYXRhOltjb250
ZW50IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgW2hhbmRs
ZSBjbG9zZUZpbGVdOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JVSTo6RGlkQXBwZW5kKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwg
bV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OndpbmRvd0ZyYW1lRGlkQ2hhbmdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjOTBkNzc1Li5mMWM4NWJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00OTUs
MTAgKzQ5NSwxMCBAQAogCQkxQUZFNDM2NTE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRkU0MzYz
MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLm1tICovOyB9OwogCQkxQUZFNDM2NjE4QjZD
MDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFGRTQzNjQxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUu
aCAqLzsgfTsKIAkJMUFGRjQ5MDAxODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1bmN0
aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QUZGNDhGRTE4MzNERTc4MDA5QUIxNUEgLyogV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcCAqLzsg
fTsKKwkJMUM4OTFENjUxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODkxRDYyMTlCMTI0
RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgKi87IH07CisJCTFDODkxRDY2MTlCMTI0
RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4OTFENjMxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3Bl
Y3RvclVJLmggKi87IH07CiAJCTFDOEFFNzYxMTk5MkY2M0EwMEFCRjZFQyAvKiBEb2NrQm90dG9t
TGVnYWN5LnBkZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUM4QUU3NUYxOTkyRjYyRjAwQUJGNkVDIC8qIERvY2tCb3R0b21MZWdhY3kucGRmICovOyB9
OwogCQkxQzhBRTc2MjE5OTJGNjNDMDBBQkY2RUMgLyogRG9ja1JpZ2h0TGVnYWN5LnBkZiBpbiBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4QUU3NjAxOTky
RjYyRjAwQUJGNkVDIC8qIERvY2tSaWdodExlZ2FjeS5wZGYgKi87IH07Ci0JCTFDOEUyNUE4MTI3
MEUzQkIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjU2QjEyNzBERTM4MDBC
QzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwICovOyB9OwotCQkxQzhFMjVB
OTEyNzBFM0JDMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyNTZBMTI3MERFMzgw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oICovOyB9OwogCQkxQzhFMjgy
MDEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjgxRTEyNzVEMTU0MDBCQzdCRDAgLyogV2Vi
SW5zcGVjdG9yLmggKi87IH07CiAJCTFDOEUyODIxMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNw
ZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM4RTI4MUYxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAgKi87IH07CiAJCTFD
OEUyODM0MTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI4MzIxMjc1RDczODAwQkM3
QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggKi87IH07CkBAIC01MTAsOCArNTEwLDEwIEBACiAJ
CTFDQThCOTM2MTI3Qzc3NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQThCOTM1MTI3Qzc3
NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSAqLzsgfTsKIAkJMUNBOEI5NDUx
MjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQThCOTQzMTI3
Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87
IH07CiAJCTFDQThCOTQ2MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0E4
Qjk0NDEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oICovOyB9
OwotCQkxQ0E4Qjk1NDEyN0M4OTE1MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yTWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTJEQUQxMjc4QzVC
MjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1hYy5tbSAqLzsgfTsKKwkJMUNBOEI5NTQxMjdDODkx
NTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclVJTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYklu
c3BlY3RvclVJTWFjLm1tICovOyB9OwogCQkxQ0I3NUM5NDE3MDFFODgwMDA5RjgwOUYgLyogRG9j
a1JpZ2h0LnBkZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUNCNzVDOTMxNzAxRTg4MDAwOUY4MDlGIC8qIERvY2tSaWdodC5wZGYgKi87IH07CisJCTFD
QkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0JCRTQ5
RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OworCQkxQ0JCRTRBMTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCQkU0
OUYxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCAqLzsgfTsKIAkJ
MUNCQzk0NUUxNjUxNUVEMjAwRDY4QUFFIC8qIERvY2tCb3R0b20ucGRmIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0JDOTQ1RDE2NTE1RUQyMDBENjhB
QUUgLyogRG9ja0JvdHRvbS5wZGYgKi87IH07CiAJCTFGMzM1QkMwMTg1Qjg0RjAwMDFBMjAxQSAv
KiBXS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGMzM1QkJGMTg1Qjg0RDgwMDFBMjAxQSAvKiBXS1dl
YlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkxRjYwNEJBODE4ODlGQTc0MDBFRTAzOTUgLyogV0tSZW5k
ZXJpbmdQcm9ncmVzc0V2ZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUY2MDRCQTYxODg5RkE3NDAwRUUwMzk1IC8qIFdLUmVuZGVyaW5nUHJvZ3Jl
c3NFdmVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMjQ3NiwxMCArMjQ3OCwxMSBAQAogCQkxQUZGNDhGRTE4MzNERTc4MDA5QUIxNUEgLyog
V0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFCQjQxN0M5MTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dENoZWNrZXJDb21w
bGV0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM3N0MxOTUxMjg4QTg3
MjAwNkE3NDJGIC8qIFdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzg5MUQ2MjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yVUku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzg5MUQ2MzE5QjEyNEZGMDBCQTc5
REQgLyogV2ViSW5zcGVjdG9yVUkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViSW5zcGVjdG9yVUkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM4OTFENjQx
OUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQzhBRTc1RjE5OTJGNjJGMDBBQkY2RUMgLyogRG9ja0JvdHRvbUxlZ2Fj
eS5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBp
bWFnZS5wZGY7IG5hbWUgPSBEb2NrQm90dG9tTGVnYWN5LnBkZjsgcGF0aCA9IFJlc291cmNlcy9E
b2NrQm90dG9tTGVnYWN5LnBkZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4QUU3
NjAxOTkyRjYyRjAwQUJGNkVDIC8qIERvY2tSaWdodExlZ2FjeS5wZGYgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7IG5hbWUgPSBEb2Nr
UmlnaHRMZWdhY3kucGRmOyBwYXRoID0gUmVzb3VyY2VzL0RvY2tSaWdodExlZ2FjeS5wZGY7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOEUyNTZBMTI3MERFMzgwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkxQzhFMjU2QjEyNzBERTM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzhF
MjgxRTEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzhFMjgxRjEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3Rvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEUyODMyMTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNw
ZWN0b3JQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0
b3JQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ4OSwxMSArMjQ5Miwx
MyBAQAogCQkxQzhFMkExQzEyNzc4MzNGMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkluc3BlY3Rvci5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RTJBMzExMjc3ODUyNDAwQkM3QkQwIC8qIFdl
Ykluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJJbnNwZWN0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQzhFMkEzMjEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9y
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9y
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4RTJEQUQxMjc4QzVC
MjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3Rvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclVJTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQThCOTM1MTI3Qzc3NEUwMDU3
NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQ0E4Qjk0MzEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQ0E4Qjk0NDEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJv
eHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0
b3JQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQjc1Qzkz
MTcwMUU4ODAwMDlGODA5RiAvKiBEb2NrUmlnaHQucGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBuYW1lID0gRG9ja1JpZ2h0LnBk
ZjsgcGF0aCA9IFJlc291cmNlcy9Eb2NrUmlnaHQucGRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQ0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5z
cGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQkM5NDVEMTY1MTVFRDIwMEQ2OEFBRSAv
KiBEb2NrQm90dG9tLnBkZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGltYWdlLnBkZjsgbmFtZSA9IERvY2tCb3R0b20ucGRmOyBwYXRoID0gUmVzb3Vy
Y2VzL0RvY2tCb3R0b20ucGRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0M0MTdD
OTEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDaGVja2VyQ29tcGxldGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxRjAxODE2OTE4NThEQzE1MDBGOTI4ODQgLyogV0tXZWJQcm9j
ZXNzUGx1Z0luRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJQ
cm9jZXNzUGx1Z0luRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2NjMs
OCArNTY2OCw2IEBACiAJCQkJQkMxQkUxREUxMkQ1NEE0MTAwMDRBMjI4IC8qIFdlYkdlb2xvY2F0
aW9uQ2xpZW50LmggKi8sCiAJCQkJQkMxMTFBNTkxMTJGNEZCQjAwMzM3QkFCIC8qIFdlYkluc3Bl
Y3RvckNsaWVudC5jcHAgKi8sCiAJCQkJQkMwMzJENkQxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYklu
c3BlY3RvckNsaWVudC5oICovLAotCQkJCTFDOEUyNTZCMTI3MERFMzgwMEJDN0JEMCAvKiBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAgKi8sCi0JCQkJMUM4RTI1NkExMjcwREUzODAwQkM3
QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggKi8sCiAJCQkJMzEwOTk5NzExNDZD
NzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgKi8sCiAJCQkJMzEwOTk5
NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICovLAogCQkJCTUx
MjEyN0MxMTkwODIzOUEwMERBRjM1QyAvKiBXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcCAqLywK
QEAgLTU3MjQsNiArNTcyNyw5IEBACiAJCQkJMUM4RTI4MUYxMjc1RDE1NDAwQkM3QkQwIC8qIFdl
Ykluc3BlY3Rvci5jcHAgKi8sCiAJCQkJMUM4RTI4MUUxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYklu
c3BlY3Rvci5oICovLAogCQkJCTFDOEUyQTFDMTI3NzgzM0YwMEJDN0JEMCAvKiBXZWJJbnNwZWN0
b3IubWVzc2FnZXMuaW4gKi8sCisJCQkJMUM4OTFENjIxOUIxMjRGRjAwQkE3OUREIC8qIFdlYklu
c3BlY3RvclVJLmNwcCAqLywKKwkJCQkxQzg5MUQ2MzE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5z
cGVjdG9yVUkuaCAqLywKKwkJCQkxQzg5MUQ2NDE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVj
dG9yVUkubWVzc2FnZXMuaW4gKi8sCiAJCQkJQkM4NTdGODQxMkI4MkQwQjAwRURFQjJFIC8qIFdl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCAqLywKIAkJCQlCQzg1N0Y4MzEyQjgyRDBCMDBF
REVCMkUgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLywKIAkJCQlCQzk2M0Q2QTEx
M0REMTkyMDA1NzRCRTIgLyogV2ViUGFnZS5jcHAgKi8sCkBAIC02NDcyLDcgKzY0NzgsNyBAQAog
CQkJCTUxOTJENTc1MTk2MUZEMDMwMENEMTlBQSAvKiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVy
Lm1tICovLAogCQkJCTFBQUYyNjM3MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5oICovLAogCQkJCTFBQUYyNjM2MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSAqLywKLQkJCQkxQzhFMkRBRDEyNzhDNUIyMDBC
QzdCRDAgLyogV2ViSW5zcGVjdG9yTWFjLm1tICovLAorCQkJCTFDOEUyREFEMTI3OEM1QjIwMEJD
N0JEMCAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSAqLywKIAkJCQlCQzk2M0Q2RDExM0REMUE1MDA1
NzRCRTIgLyogV2ViUGFnZU1hYy5tbSAqLywKIAkJCQkyOUNENTVBODEyOEUyOTRGMDAxMzNDODUg
LyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCAqLywKIAkJCQkyOUNENTVBOTEy
OEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gKi8s
CkBAIC02ODI4LDYgKzY4MzQsOCBAQAogCQkJCTFDOEUyQTMyMTI3Nzg1MjQwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JNZXNzYWdlcy5oICovLAogCQkJCTFDQThCOTQzMTI3Qzg4MkEwMDU3NkMyQiAv
KiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUNBOEI5NDQx
MjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQkx
Q0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovLAorCQkJCTFDQkJFNDlGMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1l
c3NhZ2VzLmggKi8sCiAJCQkJMzNEM0EzQzQxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2Fj
aGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkzM0QzQTNDNTEzMzk2MTc5MDA3
MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJNZXNzYWdlcy5oICovLAogCQkJCTMzRDNBM0M2
MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLywKQEAgLTc0NDAsNiArNzQ0OCw3IEBACiAJCQkJMkRBQ0U2NEUxOEFEQkZGMDAw
RTRDQTc2IC8qIF9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE1NzhCODMxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY2QTI1RkREMTJBREM2Q0MwMERDNDBDQyAvKiBXZWJEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTFDODkxRDY2MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRjYyQTc2QjcxMkIxQjI1RjAwMDVGMUI2IC8qIFdlYkRhdGFi
YXNlTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNjJBNzY1RDEyQjFBQkMz
MDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJENkFCNTQxMTkyQjFDNEEwMDNBOUZEMSAvKiBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IuaCBp
biBIZWFkZXJzICovLApAQCAtNzQ5Niw3ICs3NTA1LDYgQEAKIAkJCQkxQzhFMjgyMDEyNzVEMTU0
MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNDQzE2NzE4
OTA2QUNGMDAxRTZFRDggLyogV0tXZWJWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkQ4
MjEwRjQzNzhEMDA1OEMxNUEgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
LQkJCQkxQzhFMjVBOTEyNzBFM0JDMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyQTM2MTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJ
bnNwZWN0b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4RTI4MzQxMjc1RDczODAw
QkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0E4Qjk0
NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC03NzY0LDYgKzc3NzIsNyBAQAogCQkJCUY2MzQ0NDVEMTJBODg1RTkwMDA2MTJE
OCAvKiBXS1NlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFGMDhCODE5MjY5
RTZEMDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNDA3NjA0MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUNCQkU0QTExOUI2NkM1MzAwNkI3RDgxIC8q
IFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0I0RTRDMThC
QkUwNDQwMDBGQ0ZDOSAvKiBXS0NvbnRlbnRWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0E2
NEU1NzE4RjM4RjQ2MDBFQjMwRjEgLyogX1dLRm9ybUlucHV0U2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUY2MDRCQUExODg5RkJCODAwRUUwMzk1IC8qIFdLUmVuZGVyaW5nUHJvZ3Jlc3NF
dmVudHNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC04ODgyLDYgKzg4OTEsNyBAQAogCQkJ
CTAwQjk2NjE5MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUFFNUI3RkIxMUU3QUVEMjAwQkE2NzY3IC8qIE5ldHNjYXBlUGx1Z2luTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0MzNjFENzIxOTI3RkEzNjAwMzZBNTlEIC8qIFdlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDODkxRDY1MTlCMTI0RkYwMEJB
NzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRBOUM1NTEy
QjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUE0QTlDOUExMkI4MjFDRDAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBNTg4OTMxMUVFNzA0MDAwNjFCODgyIC8qIE5ldHNj
YXBlUGx1Z2luU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODkyMCw2ICs4OTMwLDcgQEAK
IAkJCQkxQTJEODQzOTEyN0Y2NUQ1MDAxRUI5NjIgLyogTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBRjA4QUQxOTI2OTM2NzAw
QjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQTJEODJBNjEyN0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RQcm94eS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkxQ0JCRTRBMDE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDgyQTgxMjdGNEVBQjAwMUVC
OTYyIC8qIE5QUmVtb3RlT2JqZWN0TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjE2MUIx
MTFGMzc2NjQwMDhBRDBGNSAvKiBOUFJ1bnRpbWVPYmplY3RNYXAuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUEyMTYyQjAxMUYzODk3MTAwOEFEMEY1IC8qIE5QUnVudGltZVV0aWxpdGllcy5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTkxNzksOCArOTE5MCw3IEBACiAJCQkJQkNDRjZBQkMxMkM5MUVG
OTAwOEY5QzM1IC8qIFdlYkltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDOEUyODIxMTI3
NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMx
MTFBNjAxMTJGNEZCQjAwMzM3QkFCIC8qIFdlYkluc3BlY3RvckNsaWVudC5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQkxQzhFMjVBODEyNzBFM0JCMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUNBOEI5NTQxMjdDODkxNTAwNTc2QzJC
IC8qIFdlYkluc3BlY3Rvck1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFDQThCOTU0MTI3Qzg5
MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFD
OEUyQTM1MTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4RTI4MzUxMjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3Bl
Y3RvclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQThCOTM2MTI3Qzc3NEUwMDU3NkMy
QiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuY3BwCmluZGV4IDUwMWQ0MWMuLjg1OTM1OGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTg0LDIwICs4NCwyMSBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6
aW5zcGVjdG9yRGVzdHJveWVkKCkKIAogV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250
cm9sbGVyKiBjb250cm9sbGVyKQogewotICAgIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UgPSBjb250
cm9sbGVyLT5pc1VuZGVyVGVzdCgpID8gbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y3JlYXRlSW5zcGVj
dG9yUGFnZUZvclRlc3QoKSA6IG1fcGFnZS0+aW5zcGVjdG9yKCktPmNyZWF0ZUluc3BlY3RvclBh
Z2UoKTsKLSAgICBBU1NFUlRfVU5VU0VEKGluc3BlY3RvclBhZ2UsIGluc3BlY3RvclBhZ2UpOwot
ICAgIHJldHVybiB0aGlzOworICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmNyZWF0ZUluc3BlY3Rv
clBhZ2UoY29udHJvbGxlci0+aXNVbmRlclRlc3QoKSk7CisKKyAgICByZXR1cm4gbV9wYWdlLT5p
bnNwZWN0b3IoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9y
RnJvbnRlbmQoKQogewogICAgIGlmIChtX3BhZ2UtPmluc3BlY3RvcigpKQotICAgICAgICBtX3Bh
Z2UtPmluc3BlY3RvcigpLT5kaWRDbG9zZSgpOworICAgICAgICBtX3BhZ2UtPmluc3BlY3Rvcigp
LT5jbG9zZUZyb250ZW5kKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpicmluZ0Zy
b250ZW5kVG9Gcm9udCgpCiB7Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YnJpbmdUb0Zyb250
KCk7CisgICAgaWYgKG1fcGFnZS0+aW5zcGVjdG9yKCkpCisgICAgICAgIG1fcGFnZS0+aW5zcGVj
dG9yKCktPmJyaW5nVG9Gcm9udCgpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGlk
UmVzaXplTWFpbkZyYW1lKEZyYW1lKikKQEAgLTE5NywzNCArMTk4LDYgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKQogfQogI2Vu
ZGlmCiAKLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIFdlYkluc3BlY3RvciogaW5zcGVjdG9yID0gbV9w
YWdlLT5pbnNwZWN0b3IoKTsKLSAgICBpZiAoIWluc3BlY3RvcikKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0gICAgaWYgKGluc3BlY3Rvci0+
aGFzUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKSkgewotICAgICAgICBpbnNwZWN0b3ItPnNlbmRN
ZXNzYWdlVG9SZW1vdGVGcm9udGVuZChtZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotI2VuZGlmCi0KLSAgICBXZWJQYWdlKiBpbnNwZWN0b3JQYWdlID0gaW5zcGVjdG9yLT5p
bnNwZWN0b3JQYWdlKCk7Ci0gICAgaWYgKGluc3BlY3RvclBhZ2UpCi0gICAgICAgIHJldHVybiBk
b0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKGluc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCks
IG1lc3NhZ2UpOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFdlYkluc3BlY3RvckNs
aWVudDo6c3VwcG9ydHNGcmFtZUluc3RydW1lbnRhdGlvbigpCi17Ci0jaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQotICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cGFnZU92ZXJsYXlEZXN0cm95ZWQoUGFn
ZU92ZXJsYXkqKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNzAzM2JkZS4u
Nzk4Y2FjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC00NSwyMiArNDUsMjMgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgUmVwYWludEluZGljYXRv
ckxheWVyQ2xpZW50OwogCi1jbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsLCBwcml2YXRlIFBhZ2VPdmVybGF5OjpDbGllbnQgeworY2xhc3MgV2ViSW5zcGVjdG9yQ2xp
ZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHJpdmF0ZSBQYWdlT3Zlcmxh
eTo6Q2xpZW50IHsKIGZyaWVuZCBjbGFzcyBSZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ7CiBw
dWJsaWM6CiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50KFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFsIH5X
ZWJJbnNwZWN0b3JDbGllbnQoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgaW5zcGVj
dG9yRGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAgLy8gV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50
CisgICAgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZUlu
c3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGJyaW5nRnJvbnRl
bmRUb0Zyb250KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlc2l6ZU1haW5GcmFt
ZShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOworICAgIFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRSZXNpemVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgdm9pZCBoaWdobGlnaHQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZUhp
Z2hsaWdodCgpIG92ZXJyaWRlOworICAgIHZvaWQgaGlnaGxpZ2h0KCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBoaWRlSGlnaGxpZ2h0KCkgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAg
dmlydHVhbCB2b2lkIHNob3dJbnNwZWN0b3JJbmRpY2F0aW9uKCkgb3ZlcnJpZGU7CkBAIC03Miwx
MCArNzMsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBvdmVycmlkZXNTaG93UGFpbnRS
ZWN0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2hvd1BhaW50UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGcmFtZUluc3RydW1lbnRhdGlvbigpOwot
CiAgICAgLy8gUGFnZU92ZXJsYXk6OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBwYWdlT3Zlcmxh
eURlc3Ryb3llZChQYWdlT3ZlcmxheSopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxs
TW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGQ0M2RhZTEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgotCi0jaWYgRU5BQkxFKElO
U1BFQ1RPUikKLQotI2luY2x1ZGUgIldlYkluc3BlY3Rvci5oIgotI2luY2x1ZGUgIldlYlBhZ2Uu
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlBhZ2UqIHBhZ2UsIFdlYlBhZ2UqIGluc3Bl
Y3RvclBhZ2UpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZwYWdlLT5jb3Jl
UGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGluc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCks
IHN0ZDo6bWFrZV91bmlxdWU8U2V0dGluZ3M+KCkpCi0gICAgLCBtX3BhZ2UocGFnZSkKLXsKLX0K
LQotU3RyaW5nIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojpsb2NhbGl6ZWRTdHJpbmdzVVJM
KCkKLXsKLSAgICByZXR1cm4gbV9wYWdlLT5pbnNwZWN0b3IoKS0+bG9jYWxpemVkU3RyaW5nc1VS
TCgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpicmluZ1RvRnJvbnQo
KQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmJyaW5nVG9Gcm9udCgpOwotfQotCi12b2lk
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjbG9zZVdpbmRvdygpCi17Ci0gICAgbV9wYWdl
LT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsK
LSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5kaWRDbG9zZSgpOwotfQotCi1ib29sIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpjYW5TYXZlKCkKLXsKLSAgICByZXR1cm4gbV9wYWdlLT5pbnNw
ZWN0b3IoKS0+Y2FuU2F2ZSgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
OjpzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9v
bCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKQotewotICAgIG1fcGFnZS0+aW5zcGVj
dG9yKCktPnNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2ZUFz
KTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkKLXsKLSAgICBtX3BhZ2UtPmlu
c3BlY3RvcigpLT5hcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpOwotfQotCi12b2lkIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3coRG9ja1NpZGUgZG9ja1NpZGUpCi17Ci0g
ICAgc3dpdGNoIChkb2NrU2lkZSkgewotICAgIGNhc2UgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OkRvY2tTaWRlOjpVbmRvY2tlZDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpC
b3R0b206Ci0gICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmF0dGFjaEJvdHRvbSgpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6
UmlnaHQ6Ci0gICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmF0dGFjaFJpZ2h0KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
ZGV0YWNoV2luZG93KCkKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5kZXRhY2goKTsKLX0K
LQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0QXR0YWNoZWRXaW5kb3dIZWln
aHQodW5zaWduZWQgaGVpZ2h0KQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNldEF0dGFj
aGVkV2luZG93SGVpZ2h0KGhlaWdodCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OnNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCi17Ci0gICAgbV9w
YWdlLT5pbnNwZWN0b3IoKS0+c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh3aWR0aCk7Ci19Ci0KLXZv
aWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQg
aGVpZ2h0KQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNldFRvb2xiYXJIZWlnaHQoaGVp
Z2h0KTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6aW5zcGVjdGVkVVJM
Q2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3Rv
cigpLT5pbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM3
N2VmNS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudF9o
Ci0jZGVmaW5lIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50X2gKLQotI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
aD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2U7Ci0KLWNsYXNzIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwgewotcHVibGljOgotICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdl
YlBhZ2UqIHBhZ2UsIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UpOwotCi1wcml2YXRlOgotICAgIHZp
cnR1YWwgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBvdmVycmlkZTsKLQotICAgIHZpcnR1
YWwgdm9pZCBicmluZ1RvRnJvbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VX
aW5kb3coKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgYm9vbCBjYW5TYXZlKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9v
bCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotCi0g
ICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGRldGFjaFdpbmRvdygpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHNl
dEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQpIG92ZXJyaWRlOwotCi0gICAgdmlydHVh
bCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0KLSAg
ICBXZWJQYWdlKiBtX3BhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEVOQUJMRShJTlNQRUNUT1IpCi0KLSNlbmRpZiAvLyBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuY3BwCmluZGV4IDU2MTI5N2EuLjVjNjQ0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywxMTcgKzI3LDc0IEBA
CiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yLmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCiAj
aW5jbHVkZSAiV2ViRnJhbWUuaCIKLSNpbmNsdWRlICJXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dC5oIgorI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5z
cGVjdG9yUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nocm9t
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lTG9hZFJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvclBhZ2VB
Z2VudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudEJhc2UuaD4KLSNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XaW5k
b3dGZWF0dXJlcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorc3RhdGljIGNvbnN0
IGZsb2F0IG1pbmltdW1BdHRhY2hlZEhlaWdodCA9IDI1MDsKK3N0YXRpYyBjb25zdCBmbG9hdCBt
YXhpbXVtQXR0YWNoZWRIZWlnaHRSYXRpbyA9IDAuNzU7CitzdGF0aWMgY29uc3QgZmxvYXQgbWlu
aW11bUF0dGFjaGVkV2lkdGggPSA3NTA7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVm
UHRyPFdlYkluc3BlY3Rvcj4gV2ViSW5zcGVjdG9yOjpjcmVhdGUoV2ViUGFnZSogcGFnZSwgSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwpCitQYXNzUmVmUHRyPFdlYklu
c3BlY3Rvcj4gV2ViSW5zcGVjdG9yOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvcihwYWdlLCBmcm9udGVuZENoYW5uZWwpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvcihwYWdlKSk7CiB9CiAKLVdlYkluc3Bl
Y3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlBhZ2UqIHBhZ2UsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsKQorV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2ViUGFnZSog
cGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQotICAgICwgbV9pbnNwZWN0b3JQYWdlKG51bGxwdHIp
Ci0gICAgLCBtX2Zyb250ZW5kQ2xpZW50KG51bGxwdHIpCi0gICAgLCBtX2Zyb250ZW5kQ2hhbm5l
bChmcm9udGVuZENoYW5uZWwpCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgLCBtX2hhc0xvY2Fs
aXplZFN0cmluZ3NVUkwoZmFsc2UpCi0jZW5kaWYKLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZF
UikKLSAgICAsIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoZmFsc2UpCi0jZW5kaWYKKyAgICAs
IG1fYXR0YWNoZWQoZmFsc2UpCisgICAgLCBtX3ByZXZpb3VzQ2FuQXR0YWNoKGZhbHNlKQogewog
fQogCiAvLyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JDbGllbnQKLVdlYlBhZ2UqIFdlYkluc3Bl
Y3Rvcjo6Y3JlYXRlSW5zcGVjdG9yUGFnZSgpCit2b2lkIFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5z
cGVjdG9yUGFnZShib29sIHVuZGVyVGVzdCkKIHsKICAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICBBU1NFUlQoIW1faW5zcGVjdG9yUGFnZSk7Ci0gICAgQVNT
RVJUKCFtX2Zyb250ZW5kQ2xpZW50KTsKLQotICAgIHVpbnQ2NF90IGluc3BlY3RvclBhZ2VJRCA9
IDA7Ci0gICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0gICAgaWYg
KCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2UoKSwKLSAg
ICAgICAgICAgIE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6Q3JlYXRlSW5zcGVjdG9yUGFn
ZTo6UmVwbHkoaW5zcGVjdG9yUGFnZUlELCBwYXJhbWV0ZXJzKSwKLSAgICAgICAgICAgIG1fcGFn
ZS0+cGFnZUlEKCksIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM6Om1heCgpKSkgewotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaW5z
cGVjdG9yUGFnZUlEKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNpZiBPUyhEQVJXSU4pCisg
ICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKKyAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFj
aF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsK
IAotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNyZWF0ZVdlYlBhZ2UoaW5zcGVjdG9yUGFnZUlE
LCBwYXJhbWV0ZXJzKTsKLSAgICBtX2luc3BlY3RvclBhZ2UgPSBXZWJQcm9jZXNzOjpzaGFyZWQo
KS53ZWJQYWdlKGluc3BlY3RvclBhZ2VJRCk7Ci0gICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7
CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZl
ckNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpLCB0
aGlzLCBSdW5Mb29wOjptYWluKCkpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5vcGVuKCk7
CiAKLSAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudD4obV9wYWdlLCBtX2luc3BlY3RvclBhZ2UpOwotICAgIG1fZnJvbnRl
bmRDbGllbnQgPSBmcm9udGVuZENsaWVudC5nZXQoKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPmNv
cmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVu
dChXVEY6Om1vdmUoZnJvbnRlbmRDbGllbnQpKTsKLSAgICByZXR1cm4gbV9pbnNwZWN0b3JQYWdl
OworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpDcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6
QXR0YWNobWVudChsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCksIGNhbkF0
dGFjaFdpbmRvdygpLCB1bmRlclRlc3QpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyNlbHNlCisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyNlbmRpZgogfQogCi1XZWJQYWdlKiBXZWJJbnNwZWN0b3I6OmNy
ZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZUZyb250
ZW5kKCkKIHsKLSAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBBU1NFUlQoIW1faW5zcGVjdG9yUGFnZSk7Ci0gICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2xpZW50
KTsKLQotICAgIHVpbnQ2NF90IGluc3BlY3RvclBhZ2VJRCA9IDA7Ci0gICAgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQo
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KCksCi0gICAgICAgICAgICBNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0OjpSZXBs
eShpbnNwZWN0b3JQYWdlSUQsIHBhcmFtZXRlcnMpLAotICAgICAgICAgICAgbV9wYWdlLT5wYWdl
SUQoKSwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kczo6bWF4KCkpKSB7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLQotICAgIGlmICghaW5zcGVjdG9yUGFnZUlEKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNyZWF0ZVdlYlBhZ2Uo
aW5zcGVjdG9yUGFnZUlELCBwYXJhbWV0ZXJzKTsKLSAgICBtX2luc3BlY3RvclBhZ2UgPSBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS53ZWJQYWdlKGluc3BlY3RvclBhZ2VJRCk7Ci0gICAgQVNTRVJUKG1f
aW5zcGVjdG9yUGFnZSk7Ci0KLSAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9wYWdlLCBtX2luc3BlY3RvclBhZ2Up
OwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBmcm9udGVuZENsaWVudC5nZXQoKTsKLSAgICBtX2lu
c3BlY3RvclBhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0
b3JGcm9udGVuZENsaWVudChXVEY6Om1vdmUoZnJvbnRlbmRDbGllbnQpKTsKLSAgICByZXR1cm4g
bV9pbnNwZWN0b3JQYWdlOwotfQorICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEaWRDbG9z
ZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIAotdm9pZCBXZWJJbnNwZWN0b3I6OmRlc3Ryb3lJbnNw
ZWN0b3JQYWdlKCkKLXsKLSAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRyOwotICAgIG1fZnJv
bnRlbmRDbGllbnQgPSBudWxscHRyOwotICAgIG1fZnJvbnRlbmRDaGFubmVsID0gbnVsbHB0cjsK
LX0KKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworICAgIG1fZnJvbnRl
bmRDb25uZWN0aW9uID0gbnVsbHB0cjsKIAotLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQKLXZvaWQgV2ViSW5zcGVjdG9yOjpkaWRDbG9zZSgpCi17Ci0gICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAgIGRl
c3Ryb3lJbnNwZWN0b3JQYWdlKCk7CisgICAgbV9hdHRhY2hlZCA9IGZhbHNlOworICAgIG1fcHJl
dmlvdXNDYW5BdHRhY2ggPSBmYWxzZTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OmJyaW5nVG9G
cm9udCgpCkBAIC0xNDUsNTEgKzEwMiw2IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpicmluZ1RvRnJv
bnQoKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjppbnNwZWN0ZWRVUkxDaGFuZ2Vk
KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQot
Ci12b2lkIFdlYkluc3BlY3Rvcjo6c2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykKLXsK
LSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2F2ZShmaWxlbmFtZSwgY29udGVudCwgYmFz
ZTY0RW5jb2RlZCwgZm9yY2VTYXZlQXMpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBX
ZWJJbnNwZWN0b3I6OmFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnQpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkFwcGVuZChmaWxlbmFt
ZSwgY29udGVudCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6
YXR0YWNoQm90dG9tKCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQm90
dG9tKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNo
UmlnaHQoKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hSaWdodCgpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OmRldGFjaCgpCi17Ci0g
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRldGFjaCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
LX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVk
IGhlaWdodCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5k
b3dIZWlnaHQoaGVpZ2h0KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVj
dG9yOjpzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQotewotICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzZXRUb29sYmFySGVpZ2h0KHVu
c2lnbmVkIGhlaWdodCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0VG9vbGJh
ckhlaWdodChoZWlnaHQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQogLy8gQ2FsbGVkIGJ5IFdl
Ykluc3BlY3RvciBtZXNzYWdlcwogdm9pZCBXZWJJbnNwZWN0b3I6OnNob3coKQogewpAQCAtMjAx
LDM0ICsxMTMsMTcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OmNsb3NlKCkKICAgICBtX3BhZ2UtPmNv
cmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jbG9zZSgpOwogfQogCi12b2lkIFdlYklu
c3BlY3Rvcjo6ZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICBBU1NFUlQobV9pbnNw
ZWN0b3JQYWdlKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgp
LnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQobWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEku
c2F2ZWRVUkwoXCIiLCB1cmwsICJcIikiKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpkaWRB
cHBlbmQoY29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7
Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5l
eGVjdXRlU2NyaXB0KG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmFwcGVuZGVkVG9V
UkwoXCIiLCB1cmwsICJcIikiKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjphdHRhY2hlZEJv
dHRvbSgpCit2b2lkIFdlYkluc3BlY3Rvcjo6b3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKQogewotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5k
Q2xpZW50LT5zZXRBdHRhY2hlZFdpbmRvdyhJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6RG9ja1Np
ZGU6OkJvdHRvbSk7Ci19CisgICAgUGFnZSogaW5zcGVjdGVkUGFnZSA9IG1fcGFnZS0+Y29yZVBh
Z2UoKTsKKyAgICBGcmFtZSYgaW5zcGVjdGVkTWFpbkZyYW1lID0gaW5zcGVjdGVkUGFnZS0+bWFp
bkZyYW1lKCk7CisgICAgRnJhbWVMb2FkUmVxdWVzdCByZXF1ZXN0KGluc3BlY3RlZE1haW5GcmFt
ZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QodXJsU3RyaW5n
KSwgIl9ibGFuayIpOwogCi12b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNoZWRSaWdodCgpCi17Ci0g
ICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldEF0
dGFjaGVkV2luZG93KEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6UmlnaHQpOwot
fQorICAgIFBhZ2UqIG5ld1BhZ2UgPSBpbnNwZWN0ZWRQYWdlLT5jaHJvbWUoKS5jcmVhdGVXaW5k
b3coJmluc3BlY3RlZE1haW5GcmFtZSwgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMoKSwgTmF2aWdh
dGlvbkFjdGlvbihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBOYXZpZ2F0aW9uVHlwZUxpbmtD
bGlja2VkKSk7CisgICAgaWYgKCFuZXdQYWdlKQorICAgICAgICByZXR1cm47CiAKLXZvaWQgV2Vi
SW5zcGVjdG9yOjpkZXRhY2hlZCgpCi17Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAg
ICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldEF0dGFjaGVkV2luZG93KEluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjpEb2NrU2lkZTo6VW5kb2NrZWQpOworICAgIG5ld1BhZ2UtPm1haW5GcmFtZSgpLmxv
YWRlcigpLmxvYWQocmVxdWVzdCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpldmFsdWF0ZVNj
cmlwdEZvclRlc3QoY29uc3QgU3RyaW5nJiBzY3JpcHQpCkBAIC0yMzksMTA4ICsxMzQsOTQgQEAg
dm9pZCBXZWJJbnNwZWN0b3I6OmV2YWx1YXRlU2NyaXB0Rm9yVGVzdChjb25zdCBTdHJpbmcmIHNj
cmlwdCkKIHZvaWQgV2ViSW5zcGVjdG9yOjpzaG93Q29uc29sZSgpCiB7CiAgICAgbV9wYWdlLT5j
b3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zyb250
ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zaG93Q29uc29sZSgpOworICAg
IG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2hv
d0NvbnNvbGUoKSwgMCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpzaG93UmVzb3VyY2VzKCkK
IHsKICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7
Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNo
b3dSZXNvdXJjZXMoKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yVUk6OlNob3dSZXNvdXJjZXMoKSwgMCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVj
dG9yOjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKK3ZvaWQgV2Vi
SW5zcGVjdG9yOjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJZGVudGlm
aWVyKQogewotICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZy
YW1lKGZyYW1lSUQpOworICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgp
LndlYkZyYW1lKGZyYW1lSWRlbnRpZmllcik7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hv
dygpOwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50
LT5zaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpKTsKLX0KIAotdm9p
ZCBXZWJJbnNwZWN0b3I6OnN0YXJ0SmF2YVNjcmlwdERlYnVnZ2luZygpCi17Ci0gICAgbV9wYWdl
LT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zy
b250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXREZWJ1Z2dpbmdFbmFi
bGVkKHRydWUpOworICAgIFN0cmluZyBpbnNwZWN0b3JGcmFtZUlkZW50aWZpZXIgPSBtX3BhZ2Ut
PmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5wYWdlQWdlbnQoKS0+ZnJhbWVJZChm
cmFtZS0+Y29yZUZyYW1lKCkpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6U2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGluc3BlY3RvckZy
YW1lSWRlbnRpZmllciksIDApOwogfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6c3RvcEphdmFTY3Jp
cHREZWJ1Z2dpbmcoKQordm9pZCBXZWJJbnNwZWN0b3I6OnN0YXJ0UGFnZVByb2ZpbGluZygpCiB7
CiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwot
ICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRE
ZWJ1Z2dpbmdFbmFibGVkKGZhbHNlKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OnNldEphdmFT
Y3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wpCi17Ci0gICAgLy8gTm8gbG9uZ2VyIHN1cHBvcnRl
ZC4KKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUk6OlN0YXJ0UGFnZVByb2ZpbGluZygpLCAwKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OnN0
YXJ0SmF2YVNjcmlwdFByb2ZpbGluZygpCit2b2lkIFdlYkluc3BlY3Rvcjo6c3RvcFBhZ2VQcm9m
aWxpbmcoKQogewotICAgIC8vIE5vIGxvbmdlciBzdXBwb3J0ZWQuCisgICAgbV9wYWdlLT5jb3Jl
UGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOworICAgIG1fZnJvbnRlbmRDb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U3RvcFBhZ2VQcm9maWxpbmco
KSwgMCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpzdG9wSmF2YVNjcmlwdFByb2ZpbGluZygp
Citib29sIFdlYkluc3BlY3Rvcjo6Y2FuQXR0YWNoV2luZG93KCkKIHsKLSAgICAvLyBObyBsb25n
ZXIgc3VwcG9ydGVkLgotfQorICAgIC8vIERvbid0IGFsbG93IGF0dGFjaGluZyB0byBhbm90aGVy
IGluc3BlY3RvciAtLSB0d28gaW5zcGVjdG9ycyBpbiBvbmUgd2luZG93IGlzIHRvbyBtdWNoIQor
ICAgIGlmIChtX3BhZ2UtPmlzSW5zcGVjdG9yUGFnZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpzdGFydFBhZ2VQcm9maWxpbmcoKQotewotICAgIG1fcGFn
ZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9m
cm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0VGltZWxpbmVQcm9m
aWxpbmdFbmFibGVkKHRydWUpOwotfQorICAgIC8vIElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVk
LCBhbGxvdyBhdHRhY2hpbmcgYWdhaW4gdG8gYWxsb3cgc3dpdGNoaW5nIHNpZGVzLgorICAgIGlm
IChtX2F0dGFjaGVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotdm9pZCBXZWJJbnNwZWN0b3I6
OnN0b3BQYWdlUHJvZmlsaW5nKCkKLXsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAg
IG1fZnJvbnRlbmRDbGllbnQtPnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChmYWxzZSk7Cisg
ICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGF0dGFjaCBpZiB0aGUgd2luZG93IHdvdWxkIGJlIHRvbyBz
bWFsbCB0byBhY2NvbW1vZGF0ZSB0aGUgbWluaW11bSBpbnNwZWN0b3Igc2l6ZS4KKyAgICB1bnNp
Z25lZCBpbnNwZWN0ZWRQYWdlSGVpZ2h0ID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUo
KS52aWV3KCktPnZpc2libGVIZWlnaHQoKTsKKyAgICB1bnNpZ25lZCBpbnNwZWN0ZWRQYWdlV2lk
dGggPSBtX3BhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZVdpZHRo
KCk7CisgICAgdW5zaWduZWQgbWF4aW11bUF0dGFjaGVkSGVpZ2h0ID0gaW5zcGVjdGVkUGFnZUhl
aWdodCAqIG1heGltdW1BdHRhY2hlZEhlaWdodFJhdGlvOworICAgIHJldHVybiBtaW5pbXVtQXR0
YWNoZWRIZWlnaHQgPD0gbWF4aW11bUF0dGFjaGVkSGVpZ2h0ICYmIG1pbmltdW1BdHRhY2hlZFdp
ZHRoIDw9IGluc3BlY3RlZFBhZ2VXaWR0aDsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnVwZGF0
ZURvY2tpbmdBdmFpbGFiaWxpdHkoKQogewotICAgIGlmICghbV9mcm9udGVuZENsaWVudCkKKyAg
ICBpZiAobV9hdHRhY2hlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBjYW5BdHRhY2hX
aW5kb3cgPSB0aGlzLT5jYW5BdHRhY2hXaW5kb3coKTsKKyAgICBpZiAobV9wcmV2aW91c0NhbkF0
dGFjaCA9PSBjYW5BdHRhY2hXaW5kb3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgY2Fu
QXR0YWNoV2luZG93ID0gbV9mcm9udGVuZENsaWVudC0+Y2FuQXR0YWNoV2luZG93KCk7CisgICAg
bV9wcmV2aW91c0NhbkF0dGFjaCA9IGNhbkF0dGFjaFdpbmRvdzsKKwogICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjpBdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGNhbkF0dGFjaFdpbmRvdyks
IG1fcGFnZS0+cGFnZUlEKCkpOwotICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldERvY2tpbmdVbmF2
YWlsYWJsZSghY2FuQXR0YWNoV2luZG93KTsKIH0KIAotI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VS
VkVSKQotdm9pZCBXZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIFdlYkluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb0JhY2tl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIEFTU0VSVChtX3JlbW90ZUZyb250ZW5k
Q29ubmVjdGVkKTsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2VuZE1lc3NhZ2VUb1Jl
bW90ZUZyb250ZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPmNv
cmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRl
bmQobWVzc2FnZSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpkaXNwYXRjaE1lc3NhZ2VGcm9t
UmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorYm9vbCBXZWJJbnNwZWN0b3I6
OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9w
YWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0Y2hNZXNzYWdlRnJv
bUZyb250ZW5kKG1lc3NhZ2UpOworI2lmICFFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICBt
X2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNlbmRN
ZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKSwgMCk7CisjZWxzZQorICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpTZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQobWVzc2FnZSksIG1fcGFnZS0+
cGFnZUlEKCkpOworI2VuZGlmCisgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX1NFUlZFUikKIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZENvbm5lY3Rl
ZCgpCiB7Ci0gICAgQVNTRVJUKCFtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKTsKLSAgICAvLyBT
d2l0Y2hpbmcgYmV0d2VlbiBpbi1wcm9jZXNzIGFuZCByZW1vdGUgaW5zcGVjdG9ycyBpc24ndCBz
dXBwb3J0ZWQgeWV0LgotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JQYWdlKTsKLSAgICAKLSAgICBt
X3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQo
bV9mcm9udGVuZENoYW5uZWwpOwotICAgIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQgPSB0cnVl
OworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RG
cm9udGVuZCh0aGlzKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kRGlz
Y29ubmVjdGVkKCkKIHsKLSAgICBBU1NFUlQobV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCk7CiAg
ICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZy
b250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVz
dHJveWVkKTsKLSAgICBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkID0gZmFsc2U7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
ci5oCmluZGV4IGM5M2JjYjMuLjNjMTliOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDEwNiArMzAsODAgQEAKIAogI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50OwogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgV2ViSW5zcGVjdG9yIDogcHVibGljIEFQ
STo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yPiB7CitjbGFz
cyBXZWJJbnNwZWN0b3IgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpCdW5kbGVJbnNwZWN0b3I+LCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIHB1Ymxp
YyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gY3JlYXRlKFdlYlBhZ2UqLCBXZWJDb3JlOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnNwZWN0
b3I+IGNyZWF0ZShXZWJQYWdlKik7CiAKICAgICBXZWJQYWdlKiBwYWdlKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlOyB9Ci0gICAgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1faW5zcGVjdG9yUGFnZTsgfQorCisgICAgdm9pZCB1cGRhdGVEb2NraW5nQXZhaWxhYmlsaXR5
KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQg
V2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcAotICAgIHZvaWQgZGlkUmVjZWl2ZVdlYklu
c3BlY3Rvck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdl
RGVjb2RlciYpOworCisgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKKyAgICB2b2lkIGRp
ZENsb3NlKElQQzo6Q29ubmVjdGlvbiopIHsgY2xvc2UoKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSB7IGNs
b3NlKCk7IH0KIAogICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3IgbWVzc2FnZXMKKyAgICB2
b2lkIGNvbm5lY3Rpb25Fc3RhYmxpc2hlZCgpOworCiAgICAgdm9pZCBzaG93KCk7CiAgICAgdm9p
ZCBjbG9zZSgpOwogCi0gICAgdm9pZCBkaWRTYXZlKGNvbnN0IFN0cmluZyYgdXJsKTsKLSAgICB2
b2lkIGRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCBvcGVuSW5OZXdUYWIo
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOworCisgICAgdm9pZCBjYW5BdHRhY2hXaW5kb3coYm9v
bCYgcmVzdWx0KTsKKworICAgIHZvaWQgc2hvd0NvbnNvbGUoKTsKKyAgICB2b2lkIHNob3dSZXNv
dXJjZXMoKTsKIAotICAgIHZvaWQgYXR0YWNoZWRCb3R0b20oKTsKLSAgICB2b2lkIGF0dGFjaGVk
UmlnaHQoKTsKLSAgICB2b2lkIGRldGFjaGVkKCk7CisgICAgdm9pZCBzaG93TWFpblJlc291cmNl
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJZGVudGlmaWVyKTsKKworICAgIHZvaWQgc2V0QXR0YWNo
ZWQoYm9vbCBhdHRhY2hlZCkgeyBtX2F0dGFjaGVkID0gYXR0YWNoZWQ7IH0KIAogICAgIHZvaWQg
ZXZhbHVhdGVTY3JpcHRGb3JUZXN0KGNvbnN0IFN0cmluZyYgc2NyaXB0KTsKIAotICAgIHZvaWQg
c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzdGFydFBhZ2VQ
cm9maWxpbmcoKTsKICAgICB2b2lkIHN0b3BQYWdlUHJvZmlsaW5nKCk7CiAKKyAgICB2b2lkIHNl
bmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYpOworCiAjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9TRVJWRVIpCi0gICAgYm9vbCBoYXNSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQ7IH0KLSAgICB2b2lkIHNlbmRNZXNzYWdl
VG9SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQgZGlzcGF0
Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAg
dm9pZCByZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpOwogICAgIHZvaWQgcmVtb3RlRnJvbnRlbmRE
aXNjb25uZWN0ZWQoKTsKICNlbmRpZgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJJ
bnNwZWN0b3JDbGllbnQ7Ci0gICAgZnJpZW5kIGNsYXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50OwogCi0gICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yKFdlYlBhZ2UqLCBXZWJDb3JlOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKKyAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3IoV2ViUGFn
ZSopOworCisgICAgYm9vbCBjYW5BdHRhY2hXaW5kb3coKTsKIAogICAgIC8vIENhbGxlZCBmcm9t
IFdlYkluc3BlY3RvckNsaWVudAotICAgIFdlYlBhZ2UqIGNyZWF0ZUluc3BlY3RvclBhZ2UoKTsK
LSAgICBXZWJQYWdlKiBjcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgpOwotICAgIHZvaWQgZGVz
dHJveUluc3BlY3RvclBhZ2UoKTsKKyAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBhZ2UoYm9vbCB1
bmRlclRlc3QpOwogCi0gICAgLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQKLSAgICB2b2lkIGRpZENsb3NlKCk7CisgICAgdm9pZCBjbG9zZUZyb250ZW5kKCk7CiAgICAg
dm9pZCBicmluZ1RvRnJvbnQoKTsKLSAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3Qg
U3RyaW5nJik7Ci0KLSAgICBib29sIGNhblNhdmUoKSBjb25zdDsKLSAgICB2b2lkIHNhdmUoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVu
Y29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7Ci0KLSAgICB2b2lkIGF0dGFjaEJvdHRv
bSgpOwotICAgIHZvaWQgYXR0YWNoUmlnaHQoKTsKLSAgICB2b2lkIGRldGFjaCgpOwogCi0gICAg
dm9pZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCk7Ci0gICAgdm9pZCBzZXRBdHRh
Y2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKTsKLSAgICB2b2lkIHNldFRvb2xiYXJIZWlnaHQodW5z
aWduZWQpOwotCi0gICAgLy8gSW1wbGVtZW50ZWQgaW4gcGxhdGZvcm0gV2ViSW5zcGVjdG9yIGZp
bGUKLSAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0OwotCi0gICAgdm9pZCBz
aG93Q29uc29sZSgpOwotCi0gICAgdm9pZCBzaG93UmVzb3VyY2VzKCk7Ci0KLSAgICB2b2lkIHNo
b3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKLQotICAgIHZvaWQgc3Rh
cnRKYXZhU2NyaXB0RGVidWdnaW5nKCk7Ci0gICAgdm9pZCBzdG9wSmF2YVNjcmlwdERlYnVnZ2lu
ZygpOwotCi0gICAgdm9pZCBzdGFydEphdmFTY3JpcHRQcm9maWxpbmcoKTsKLSAgICB2b2lkIHN0
b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCk7CisgICAgV2ViUGFnZSogbV9wYWdlOwogCi0gICAgdm9p
ZCB1cGRhdGVEb2NraW5nQXZhaWxhYmlsaXR5KCk7CisgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlv
bj4gbV9mcm9udGVuZENvbm5lY3Rpb247CiAKLSAgICBXZWJQYWdlKiBtX3BhZ2U7Ci0gICAgV2Vi
UGFnZSogbV9pbnNwZWN0b3JQYWdlOwotICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBt
X2Zyb250ZW5kQ2xpZW50OwotICAgIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
bV9mcm9udGVuZENoYW5uZWw7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbXV0YWJsZSBTdHJp
bmcgbV9sb2NhbGl6ZWRTdHJpbmdzVVJMOwotICAgIG11dGFibGUgYm9vbCBtX2hhc0xvY2FsaXpl
ZFN0cmluZ3NVUkw7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAgICBi
b29sIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQ7Ci0jZW5kaWYKKyAgICBib29sIG1fYXR0YWNo
ZWQ7CisgICAgYm9vbCBtX3ByZXZpb3VzQ2FuQXR0YWNoOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgppbmRleCBjMjNiODZmLi5mYzA3M2NhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3IubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIyLDI2ICsyMiwyNSBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotbWVzc2Fn
ZXMgLT4gV2ViSW5zcGVjdG9yIExlZ2FjeVJlY2VpdmVyIHsKK21lc3NhZ2VzIC0+IFdlYkluc3Bl
Y3RvciB7CiAgICAgU2hvdygpCiAgICAgQ2xvc2UoKQotICAgIEF0dGFjaGVkQm90dG9tKCkKLSAg
ICBBdHRhY2hlZFJpZ2h0KCkKLSAgICBEZXRhY2hlZCgpCi0gICAgRGlkU2F2ZShTdHJpbmcgdXJs
KQotICAgIERpZEFwcGVuZChTdHJpbmcgdXJsKQorCisgICAgU2V0QXR0YWNoZWQoYm9vbCBhdHRh
Y2hlZCkKKwogICAgIFNob3dDb25zb2xlKCkKICAgICBTaG93UmVzb3VyY2VzKCkKLSAgICBTaG93
TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKLSAgICBTdGFydEphdmFTY3Jp
cHREZWJ1Z2dpbmcoKQotICAgIFN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCkKLSAgICBTdGFydEph
dmFTY3JpcHRQcm9maWxpbmcoKQotICAgIFN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCkKKworICAg
IFNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlkZW50aWZpZXIpCisKKyAg
ICBPcGVuSW5OZXdUYWIoU3RyaW5nIHVybCkKKwogICAgIFN0YXJ0UGFnZVByb2ZpbGluZygpCiAg
ICAgU3RvcFBhZ2VQcm9maWxpbmcoKQogCisgICAgU2VuZE1lc3NhZ2VUb0JhY2tlbmQoU3RyaW5n
IG1lc3NhZ2UpCisKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAgICBEaXNwYXRjaE1l
c3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoU3RyaW5nIG1lc3NhZ2UpCiAgICAgUmVtb3RlRnJvbnRl
bmRDb25uZWN0ZWQoKQogICAgIFJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
clVJLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JV
SS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTIxZDZiMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JVSS5jcHAKQEAgLTAsMCArMSwyODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUkuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CisKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkluc3Bl
Y3RvclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdFZhbHVlLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9DaHJvbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RPTVdyYXBwZXJXb3Js
ZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTWFpbkZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU2NyaXB0R2xvYmFsT2JqZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRTdGF0ZS5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bh
c3NSZWZQdHI8V2ViSW5zcGVjdG9yVUk+IFdlYkluc3BlY3RvclVJOjpjcmVhdGUoV2ViUGFnZSog
cGFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvclVJKHBhZ2UpKTsK
K30KKworV2ViSW5zcGVjdG9yVUk6OldlYkluc3BlY3RvclVJKFdlYlBhZ2UqIHBhZ2UpCisgICAg
OiBtX3BhZ2UocGFnZSkKKyAgICAsIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIoMCkKKyAgICAs
IG1fdW5kZXJUZXN0KGZhbHNlKQorICAgICwgbV9mcm9udGVuZExvYWRlZChmYWxzZSkKKyAgICAs
IG1fZG9ja1NpZGUoRG9ja1NpZGU6OlVuZG9ja2VkKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
ICwgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMKGZhbHNlKQorI2VuZGlmCit7Cit9CisKK3ZvaWQg
V2ViSW5zcGVjdG9yVUk6OmVzdGFibGlzaENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGVuY29k
ZWRDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIs
IGJvb2wgdW5kZXJUZXN0KQoreworI2lmIE9TKERBUldJTikKKyAgICBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlm
aWVyLnBvcnQoKSk7CisgICAgaWYgKElQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbChj
b25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIG1faW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIgPSBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKKyAgICBtX3VuZGVyVGVz
dCA9IHVuZGVyVGVzdDsKKworICAgIG1fYmFja2VuZENvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rp
b246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsIHRoaXMsIFJ1
bkxvb3A6Om1haW4oKSk7CisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbi0+b3BlbigpOworI2Vsc2UK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybjsKKyNlbmRpZgorCisgICAgbV9wYWdl
LT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQodGhpcyk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OndpbmRvd09iamVjdENsZWFy
ZWQoKQoreworICAgIGlmIChtX2Zyb250ZW5kSG9zdCkKKyAgICAgICAgbV9mcm9udGVuZEhvc3Qt
PmRpc2Nvbm5lY3RDbGllbnQoKTsKKworICAgIG1fZnJvbnRlbmRIb3N0ID0gSW5zcGVjdG9yRnJv
bnRlbmRIb3N0OjpjcmVhdGUodGhpcywgbV9wYWdlLT5jb3JlUGFnZSgpKTsKKyAgICBTY3JpcHRH
bG9iYWxPYmplY3Q6OnNldChleGVjU3RhdGVGcm9tUGFnZShtYWluVGhyZWFkTm9ybWFsV29ybGQo
KSwgbV9wYWdlLT5jb3JlUGFnZSgpKSwgQVNDSUlMaXRlcmFsKCJJbnNwZWN0b3JGcm9udGVuZEhv
c3QiKSwgbV9mcm9udGVuZEhvc3QuZ2V0KCkpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpm
cm9udGVuZExvYWRlZCgpCit7CisgICAgbV9mcm9udGVuZExvYWRlZCA9IHRydWU7CisKKyAgICBl
dmFsdWF0ZVBlbmRpbmdFeHByZXNzaW9ucygpOworICAgIGJyaW5nVG9Gcm9udCgpOworfQorCit2
b2lkIFdlYkluc3BlY3RvclVJOjptb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAg
ICBGbG9hdFJlY3QgZnJhbWVSZWN0ID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5jaHJvbWUoKS53aW5k
b3dSZWN0KCk7CisgICAgZnJhbWVSZWN0Lm1vdmUoeCwgeSk7CisgICAgbV9wYWdlLT5jb3JlUGFn
ZSgpLT5jaHJvbWUoKS5zZXRXaW5kb3dSZWN0KGZyYW1lUmVjdCk7Cit9CisKK3ZvaWQgV2ViSW5z
cGVjdG9yVUk6OmJyaW5nVG9Gcm9udCgpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6
OkJyaW5nVG9Gcm9udCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JVSTo6Y2xvc2VXaW5kb3coKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclBy
b3h5OjpEaWRDbG9zZSgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKworICAgIG1fYmFj
a2VuZENvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uID0g
bnVsbHB0cjsKKworICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgPSAwOworICAgIG1fdW5k
ZXJUZXN0ID0gZmFsc2U7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnJlcXVlc3RTZXREb2Nr
U2lkZShEb2NrU2lkZSBzaWRlKQoreworICAgIHN3aXRjaCAoc2lkZSkgeworICAgIGNhc2UgRG9j
a1NpZGU6OlVuZG9ja2VkOgorICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGV0YWNo
KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgRG9ja1NpZGU6OlJpZ2h0OgorICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0
YWNoUmlnaHQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBEb2NrU2lkZTo6Qm90dG9tOgorICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6QXR0YWNoQm90dG9tKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgICAg
ICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNldERvY2tTaWRlKERv
Y2tTaWRlIHNpZGUpCit7CisgICAgY29uc3QgY2hhciogc2lkZVN0cmluZzsKKworICAgIHN3aXRj
aCAoc2lkZSkgeworICAgIGNhc2UgRG9ja1NpZGU6OlVuZG9ja2VkOgorICAgICAgICBzaWRlU3Ry
aW5nID0gInVuZG9ja2VkIjsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERvY2tTaWRlOjpS
aWdodDoKKyAgICAgICAgc2lkZVN0cmluZyA9ICJyaWdodCI7CisgICAgICAgIGJyZWFrOworCisg
ICAgY2FzZSBEb2NrU2lkZTo6Qm90dG9tOgorICAgICAgICBzaWRlU3RyaW5nID0gImJvdHRvbSI7
CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIG1fZG9ja1NpZGUgPSBzaWRlOworCisgICAg
ZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2V0RG9ja1NpZGUiKSwgQVNDSUlM
aXRlcmFsKHNpZGVTdHJpbmcpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2hhbmdlQXR0
YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQoreworICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQpLCBtX2luc3BlY3RlZFBh
Z2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2hhbmdlQXR0YWNoZWRX
aW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6U2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh3aWR0aCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZp
ZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVk
IGhlaWdodCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0VG9vbGJhckhlaWdo
dChoZWlnaHQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JVSTo6b3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIG1fYmFja2Vu
ZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6T3BlbkluTmV3VGFiKHVy
bCksIDApOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzYXZlKGNvbnN0IFdURjo6U3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2Rl
ZCwgYm9vbCBmb3JjZVNhdmVBcykKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2F2
ZShmaWxlbmFtZSwgY29udGVudCwgYmFzZTY0RW5jb2RlZCwgZm9yY2VTYXZlQXMpLCBtX2luc3Bl
Y3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6YXBwZW5kKGNv
bnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQpCit7
CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkFwcGVuZChmaWxlbmFtZSwgY29udGVudCks
IG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpp
bnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQoreworICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclByb3h5OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyksIG1faW5z
cGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzaG93Q29u
c29sZSgpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2hvd0Nv
bnNvbGUiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNob3dSZXNvdXJjZXMoKQorewor
ICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNob3dSZXNvdXJjZXMiKSk7
Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShTdHJp
bmcgZnJhbWVJZGVudGlmaWVyKQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxp
dGVyYWwoInNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSIpLCBmcmFtZUlkZW50aWZpZXIpOworfQor
Cit2b2lkIFdlYkluc3BlY3RvclVJOjpzdGFydFBhZ2VQcm9maWxpbmcoKQoreworICAgIGV2YWx1
YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxl
ZCIpLCB0cnVlKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c3RvcFBhZ2VQcm9maWxpbmco
KQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNldFRpbWVsaW5l
UHJvZmlsaW5nRW5hYmxlZCIpLCBmYWxzZSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmRp
ZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFT
Q0lJTGl0ZXJhbCgic2F2ZWRVUkwiKSwgdXJsKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6
ZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9h
ZChBU0NJSUxpdGVyYWwoImFwcGVuZGVkVG9VUkwiKSwgdXJsKTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JVSTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sK
KyAgICBldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQobWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRl
bmRBUEkuZGlzcGF0Y2hNZXNzYWdlQXN5bmMoIiwgbWVzc2FnZSwgIikiKSk7Cit9CisKK3ZvaWQg
V2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKK3sKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3I6OlNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2UpLCAwKTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JVSTo6ZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgY29u
c3QgU3RyaW5nJiBhcmd1bWVudCkKK3sKKyAgICBpZiAoYXJndW1lbnQuaXNOdWxsKCkpCisgICAg
ICAgIGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChtYWtlU3RyaW5nKCJJbnNwZWN0b3JGcm9udGVu
ZEFQSS5kaXNwYXRjaChbXCIiLCBjb21tYW5kLCAiXCJdKSIpKTsKKyAgICBlbHNlCisgICAgICAg
IGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChtYWtlU3RyaW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQ
SS5kaXNwYXRjaChbXCIiLCBjb21tYW5kLCAiXCIsIFwiIiwgYXJndW1lbnQsICJcIl0pIikpOwor
fQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3Ry
aW5nJiBjb21tYW5kLCBib29sIGFyZ3VtZW50KQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9h
ZChjb21tYW5kLCBBU0NJSUxpdGVyYWwoYXJndW1lbnQgPyAidHJ1ZSIgOiAiZmFsc2UiKSk7Cit9
CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24pCit7CisgICAgaWYgKG1fZnJvbnRlbmRMb2FkZWQpIHsKKyAgICAg
ICAgQVNTRVJUKG1fcXVldWUuaXNFbXB0eSgpKTsKKyAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgp
LT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9xdWV1ZS5hcHBlbmQoZXhwcmVzc2lvbik7Cit9CisK
K3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRlUGVuZGluZ0V4cHJlc3Npb25zKCkKK3sKKyAg
ICBBU1NFUlQobV9mcm9udGVuZExvYWRlZCk7CisKKyAgICBmb3IgKGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbiA6IG1fcXVldWUpCisgICAgICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1l
KCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChleHByZXNzaW9uKTsKKworICAgIG1fcXVldWUuY2xl
YXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5z
cGVjdG9yVUkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGJmY2JlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3RvclVJLmgKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYklu
c3BlY3RvclVJX2gKKyNkZWZpbmUgV2ViSW5zcGVjdG9yVUlfaAorCisjaWYgRU5BQkxFKElOU1BF
Q1RPUikKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRpbmcuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7
CisKK2NsYXNzIFdlYkluc3BlY3RvclVJIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9i
amVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yVUk+LCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpD
bGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudCB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW5zcGVjdG9yVUk+IGNyZWF0ZShXZWJQYWdlKik7
CisKKyAgICBXZWJQYWdlKiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CisKKyAgICAv
LyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1l
c3NhZ2VEZWNvZGVyJik7CisKKyAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAorICAgIHZv
aWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uKikgeyBjbG9zZVdpbmRvdygpOyB9CisgICAgdm9p
ZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZU5hbWUpIHsgY2xvc2VXaW5kb3coKTsgfQorCisgICAgLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3Rv
clVJIG1lc3NhZ2VzCisgICAgdm9pZCBlc3RhYmxpc2hDb25uZWN0aW9uKElQQzo6QXR0YWNobWVu
dCBjb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIs
IGJvb2wgdW5kZXJUZXN0KTsKKworICAgIHZvaWQgc2hvd0NvbnNvbGUoKTsKKyAgICB2b2lkIHNo
b3dSZXNvdXJjZXMoKTsKKworICAgIHZvaWQgc2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFN0cmlu
ZyBmcmFtZUlkZW50aWZpZXIpOworCisgICAgdm9pZCBzdGFydFBhZ2VQcm9maWxpbmcoKTsKKyAg
ICB2b2lkIHN0b3BQYWdlUHJvZmlsaW5nKCk7CisKKyAgICB2b2lkIGF0dGFjaGVkQm90dG9tKCkg
eyBzZXREb2NrU2lkZShEb2NrU2lkZTo6Qm90dG9tKTsgfQorICAgIHZvaWQgYXR0YWNoZWRSaWdo
dCgpIHsgc2V0RG9ja1NpZGUoRG9ja1NpZGU6OlJpZ2h0KTsgfQorICAgIHZvaWQgZGV0YWNoZWQo
KSB7IHNldERvY2tTaWRlKERvY2tTaWRlOjpVbmRvY2tlZCk7IH0KKworICAgIHZvaWQgc2V0RG9j
a1NpZGUoRG9ja1NpZGUpOworCisgICAgdm9pZCBkaWRTYXZlKGNvbnN0IFN0cmluZyYgdXJsKTsK
KyAgICB2b2lkIGRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCk7CisKKyAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50CisgICAgdm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBmcm9udGVuZExvYWRlZCgpIG92ZXJyaWRlOworCisgICAgdm9pZCBtb3Zl
V2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgb3ZlcnJpZGU7CisKKyAgICBTdHJpbmcgbG9jYWxp
emVkU3RyaW5nc1VSTCgpIG92ZXJyaWRlOworCisgICAgdm9pZCBicmluZ1RvRnJvbnQoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGNsb3NlV2luZG93KCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHJlcXVl
c3RTZXREb2NrU2lkZShEb2NrU2lkZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGFuZ2VBdHRhY2hl
ZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGFuZ2VBdHRhY2hl
ZFdpbmRvd1dpZHRoKHVuc2lnbmVkKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0VG9vbGJhckhl
aWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIG9wZW5Jbk5ld1RhYihjb25zdCBT
dHJpbmcmIHVybCkgb3ZlcnJpZGU7CisKKyAgICBib29sIGNhblNhdmUoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNhdmUoY29uc3QgV1RGOjpTdHJpbmcmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIGNv
bnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBhcHBlbmQoY29uc3QgV1RGOjpTdHJpbmcmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcm
IGNvbnRlbnQpIG92ZXJyaWRlOworCisgICAgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOworCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKKworICAgIGJvb2wgaXNVbmRlclRlc3QoKSBvdmVycmlkZSB7
IHJldHVybiBtX3VuZGVyVGVzdDsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFdlYkluc3Bl
Y3RvclVJKFdlYlBhZ2UqKTsKKworICAgIHZvaWQgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0
IFN0cmluZyYgY29tbWFuZCwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCA9IFN0cmluZygpKTsKKyAg
ICB2b2lkIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGNvbnN0
IEFTQ0lJTGl0ZXJhbCYgYXJndW1lbnQpIHsgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbW1hbmQs
IFN0cmluZyhhcmd1bWVudCkpOyB9CisgICAgdm9pZCBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29u
c3QgU3RyaW5nJiBjb21tYW5kLCBib29sIGFyZ3VtZW50KTsKKyAgICB2b2lkIGV2YWx1YXRlRXhw
cmVzc2lvbk9uTG9hZChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pOworICAgIHZvaWQgZXZhbHVh
dGVQZW5kaW5nRXhwcmVzc2lvbnMoKTsKKworICAgIFdlYlBhZ2UqIG1fcGFnZTsKKworICAgIFJl
ZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fYmFja2VuZENvbm5lY3Rpb247CisgICAgdWludDY0X3Qg
bV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKKworICAgIGJvb2wgbV91bmRlclRlc3Q7CisgICAg
Ym9vbCBtX2Zyb250ZW5kTG9hZGVkOworICAgIERlcXVlPFN0cmluZz4gbV9xdWV1ZTsKKworICAg
IFJlZlB0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q+IG1fZnJvbnRlbmRIb3N0Owor
CisgICAgRG9ja1NpZGUgbV9kb2NrU2lkZTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG11
dGFibGUgU3RyaW5nIG1fbG9jYWxpemVkU3RyaW5nc1VSTDsKKyAgICBtdXRhYmxlIGJvb2wgbV9o
YXNMb2NhbGl6ZWRTdHJpbmdzVVJMOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisKKyNlbmRpZiAvLyBXZWJJbnNwZWN0
b3JVSV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCnNpbWlsYXJpdHkgaW5kZXggNzclCmNvcHkgZnJv
bSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2Vz
LmluCmNvcHkgdG8gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
clVJLm1lc3NhZ2VzLmluCmluZGV4IGMyM2I4NmYuLjIzZWI1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3Nh
Z2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMiwyOSAr
MjIsMjUgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLW1lc3NhZ2VzIC0+IFdlYkluc3Bl
Y3RvciBMZWdhY3lSZWNlaXZlciB7Ci0gICAgU2hvdygpCi0gICAgQ2xvc2UoKQorbWVzc2FnZXMg
LT4gV2ViSW5zcGVjdG9yVUkgeworICAgIEVzdGFibGlzaENvbm5lY3Rpb24oSVBDOjpBdHRhY2ht
ZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmll
ciwgYm9vbCB1bmRlclRlc3QpCisKICAgICBBdHRhY2hlZEJvdHRvbSgpCiAgICAgQXR0YWNoZWRS
aWdodCgpCiAgICAgRGV0YWNoZWQoKQotICAgIERpZFNhdmUoU3RyaW5nIHVybCkKLSAgICBEaWRB
cHBlbmQoU3RyaW5nIHVybCkKKwogICAgIFNob3dDb25zb2xlKCkKICAgICBTaG93UmVzb3VyY2Vz
KCkKLSAgICBTaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKLSAgICBT
dGFydEphdmFTY3JpcHREZWJ1Z2dpbmcoKQotICAgIFN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCkK
LSAgICBTdGFydEphdmFTY3JpcHRQcm9maWxpbmcoKQotICAgIFN0b3BKYXZhU2NyaXB0UHJvZmls
aW5nKCkKKworICAgIFNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShTdHJpbmcgZnJhbWVJZGVudGlm
aWVyKQorCiAgICAgU3RhcnRQYWdlUHJvZmlsaW5nKCkKICAgICBTdG9wUGFnZVByb2ZpbGluZygp
CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAgICBEaXNwYXRjaE1lc3NhZ2VGcm9t
UmVtb3RlRnJvbnRlbmQoU3RyaW5nIG1lc3NhZ2UpCi0gICAgUmVtb3RlRnJvbnRlbmRDb25uZWN0
ZWQoKQotICAgIFJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKLSNlbmRpZgorICAgIERpZFNh
dmUoU3RyaW5nIHVybCkKKyAgICBEaWRBcHBlbmQoU3RyaW5nIHVybCkKKworICAgIFNlbmRNZXNz
YWdlVG9Gcm9udGVuZChTdHJpbmcgbWVzc2FnZSkKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMDA2NjBjMi4uNWUwNjA0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtODAsNiArODAsOCBAQAogI2luY2x1ZGUgIldlYkluc3BlY3Rvci5oIgogI2luY2x1ZGUgIldl
Ykluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiV2ViSW5zcGVjdG9yVUkuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSU1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCkBAIC00NjEsNiArNDYzLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAjZW5k
aWYKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fcGFnZUlELCAqdGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2VJRCwgKnRoaXMpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQog
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
RnVsbFNjcmVlbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlz
KTsKQEAgLTUyMiw2ICs1MjUsNyBAQCBXZWJQYWdlOjp+V2ViUGFnZSgpCiAjZW5kaWYKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cGFnZUlEKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlE
KTsKICNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5h
Z2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKQEAgLTI4OTAsMTggKzI4OTQs
MjYgQEAgdm9pZCBXZWJQYWdlOjpkaWRGbHVzaExheWVyVHJlZUF0VGltZShzdGQ6OmNocm9ubzo6
bWlsbGlzZWNvbmRzIHRpbWVzdGFtcCkKIH0KICNlbmRpZgogCi0gICAgCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKIFdlYkluc3BlY3RvciogV2ViUGFnZTo6aW5zcGVjdG9yKCkKIHsKICAgICBpZiAo
bV9pc0Nsb3NlZCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIGlmICghbV9pbnNwZWN0b3IpCi0gICAgICAgIG1faW5zcGVjdG9yID0gV2ViSW5zcGVjdG9y
OjpjcmVhdGUodGhpcywgbV9pbnNwZWN0b3JDbGllbnQpOworICAgICAgICBtX2luc3BlY3RvciA9
IFdlYkluc3BlY3Rvcjo6Y3JlYXRlKHRoaXMpOwogICAgIHJldHVybiBtX2luc3BlY3Rvci5nZXQo
KTsKIH0KKworV2ViSW5zcGVjdG9yVUkqIFdlYlBhZ2U6Omluc3BlY3RvclVJKCkKK3sKKyAgICBp
ZiAobV9pc0Nsb3NlZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFtX2luc3Bl
Y3RvclVJKQorICAgICAgICBtX2luc3BlY3RvclVJID0gV2ViSW5zcGVjdG9yVUk6OmNyZWF0ZSh0
aGlzKTsKKyAgICByZXR1cm4gbV9pbnNwZWN0b3JVSS5nZXQoKTsKK30KICNlbmRpZgotICAgIAor
CiAjaWYgUExBVEZPUk0oSU9TKQogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciogV2ViUGFnZTo6
dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpCiB7CkBAIC0zNDk3LDExICszNTA5LDE3IEBAIHZvaWQg
V2ViUGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBJ
UEM6Ok1lc3NhZ2VEZWNvZGVyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKLSAgICAK
KwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpID09IE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
ewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSB0aGlzLT5pbnNwZWN0b3Io
KSkKLSAgICAgICAgICAgIGluc3BlY3Rvci0+ZGlkUmVjZWl2ZVdlYkluc3BlY3Rvck1lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgICAgICBpbnNwZWN0b3ItPmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChXZWJJbnNwZWN0
b3JVSSogaW5zcGVjdG9yVUkgPSB0aGlzLT5pbnNwZWN0b3JVSSgpKQorICAgICAgICAgICAgaW5z
cGVjdG9yVUktPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAppbmRleCBiYWJhNTA2Li5iN2Q0NDhjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1Myw2ICsxNTMsNyBAQCBjbGFzcyBX
ZWJGdWxsU2NyZWVuTWFuYWdlcjsKIGNsYXNzIFdlYkltYWdlOwogY2xhc3MgV2ViSW5zcGVjdG9y
OwogY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50OworY2xhc3MgV2ViSW5zcGVjdG9yVUk7CiBjbGFz
cyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk5vdGlm
aWNhdGlvbkNsaWVudDsKQEAgLTIyNiw4ICsyMjcsMTAgQEAgcHVibGljOgogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKICAgICBXZWJJbnNwZWN0b3IqIGluc3BlY3RvcigpOworICAgIFdlYkluc3Bl
Y3RvclVJKiBpbnNwZWN0b3JVSSgpOworICAgIGJvb2wgaXNJbnNwZWN0b3JQYWdlKCkgeyByZXR1
cm4gISFtX2luc3BlY3RvclVJOyB9CiAjZW5kaWYKLSAgICAKKwogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKiB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCk7
CiAjZW5kaWYKQEAgLTExNTksNiArMTE2Miw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIFJlZlB0cjxXZWJJbnNwZWN0b3I+IG1faW5zcGVjdG9yOworICAgIFJlZlB0
cjxXZWJJbnNwZWN0b3JVST4gbV9pbnNwZWN0b3JVSTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElP
UykKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4gbV92aWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2VmbC9XZWJJbnNwZWN0b3JFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2VmbC9XZWJJbnNwZWN0b3JVSUVmbC5jcHAKc2ltaWxhcml0eSBpbmRleCA5MyUKcmVuYW1l
IGZyb20gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JF
ZmwuY3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dl
Ykluc3BlY3RvclVJRWZsLmNwcAppbmRleCAyYWFjYzI5Li5hMmQ4ZDNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3RvckVmbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JV
SUVmbC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV2ViSW5zcGVjdG9yLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUkuaCIKIAog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotYm9vbCBXZWJJbnNwZWN0b3I6OmNhblNhdmUoKSBjb25zdAorYm9vbCBXZWJJ
bnNwZWN0b3JVSTo6Y2FuU2F2ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1T
dHJpbmcgV2ViSW5zcGVjdG9yOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgY29uc3QKK1N0cmluZyBX
ZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
ICJmaWxlOi8vIiArIFdlYkNvcmU6Omluc3BlY3RvclJlc291cmNlUGF0aCgpICsgIi9sb2NhbGl6
ZWRTdHJpbmdzLmpzIjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwCnNpbWlsYXJpdHkgaW5kZXggOTMl
CnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5z
cGVjdG9yR3RrLmNwcApyZW5hbWUgdG8gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAKaW5kZXggNWEwZWY5ZS4uMmY1ZTQ3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5z
cGVjdG9yVUlHdGsuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldlYkluc3BlY3Rvci5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJ
LmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCkBAIC0zNSwxMiArMzUsMTIgQEAKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWJvb2wgV2ViSW5zcGVjdG9yOjpjYW5TYXZlKCkgY29uc3QKK2Jv
b2wgV2ViSW5zcGVjdG9yVUk6OmNhblNhdmUoKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotU3RyaW5nIFdlYkluc3BlY3Rvcjo6bG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0CitT
dHJpbmcgV2ViSW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdAogewogICAg
IHJldHVybiBTdHJpbmcoInJlc291cmNlOi8vL29yZy93ZWJraXRndGsvaW5zcGVjdG9yL0xvY2Fs
aXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3RvclVJTWFj
Lm1tCnNpbWlsYXJpdHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yTWFjLm1tCnJlbmFtZSB0byBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3RvclVJTWFjLm1tCmluZGV4IDc5
NWY0NTYuLjJiZTc2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViSW5zcGVjdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yVUlNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwog
CiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldlYkluc3BlY3Rvci5oIgorI2ltcG9ydCAi
V2ViSW5zcGVjdG9yVUkuaCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTM0LDEyICsz
NCwxMiBAQCBTT0ZUX0xJTktfU1RBR0VEX0ZSQU1FV09SSyhXZWJJbnNwZWN0b3JVSSwgUHJpdmF0
ZUZyYW1ld29ya3MsIEEpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIFdlYkluc3BlY3Rv
cjo6Y2FuU2F2ZSgpIGNvbnN0Citib29sIFdlYkluc3BlY3RvclVJOjpjYW5TYXZlKCkKIHsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFdlYkluc3BlY3Rvcjo6bG9jYWxpemVkU3RyaW5n
c1VSTCgpIGNvbnN0CitTdHJpbmcgV2ViSW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwo
KQogewogICAgIGlmICghbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMKSB7CiAgICAgICAgIC8vIENh
bGwgdGhlIHNvZnQgbGluayBmcmFtZXdvcmsgZnVuY3Rpb24gdG8gZGxvcGVuIGl0LCB0aGVuIFtO
U0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpdIHdpbGwgd29yay4KQEAgLTUyLDYgKzUyLDcg
QEAgU3RyaW5nIFdlYkluc3BlY3Rvcjo6bG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0CiAgICAg
ICAgICAgICBtX2xvY2FsaXplZFN0cmluZ3NVUkwgPSBTdHJpbmcoKTsKICAgICAgICAgbV9oYXNM
b2NhbGl6ZWRTdHJpbmdzVVJMID0gdHJ1ZTsKICAgICB9CisKICAgICByZXR1cm4gbV9sb2NhbGl6
ZWRTdHJpbmdzVVJMOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237818</attachid>
            <date>2014-09-08 16:37:33 -0700</date>
            <delta_ts>2014-09-12 10:29:31 -0700</delta_ts>
            <desc>WIP (almost final x4)</desc>
            <filename>WIP.patch</filename>
            <type>text/plain</type>
            <size>123310</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYTk5MTExNy4uYTkxZjc3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTc3NSw2ICs3NzUsNyBAQCBfX1pON1dlYkNvcmUxN1NRTGl0ZVRyYW5zYWN0aW9u
RDFFdgogX19aTjdXZWJDb3JlMTdTdWJyZXNvdXJjZUxvYWRlcjZjcmVhdGVFUE5TXzVGcmFtZUVQ
TlNfMTRDYWNoZWRSZXNvdXJjZUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMjFSZXNvdXJj
ZUxvYWRlck9wdGlvbnNFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18xN0pT
RE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9fWk43
V2ViQ29yZTE3ZW5jb2RlRm9yRmlsZU5hbWVFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUx
N2V4ZWNTdGF0ZUZyb21QYWdlRVJOU18xNURPTVdyYXBwZXJXb3JsZEVQTlNfNFBhZ2VFCiBfX1pO
N1dlYkNvcmUxN2xhbmd1YWdlRGlkQ2hhbmdlRXYKIF9fWk43V2ViQ29yZTE3b3BlblRlbXBvcmFy
eUZpbGVFUktOM1dURjZTdHJpbmdFUmkKIF9fWk43V2ViQ29yZTE3c1JHQkNvbG9yU3BhY2VSZWZF
dgpAQCAtNzk4LDYgKzc5OSw3IEBAIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkOGFk
ZFR5cGVzRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDCiBfX1pON1dlYkNv
cmUxOFBsYXRmb3JtUGFzdGVib2FyZDhnZXRUeXBlc0VSTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5n
RUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0
ZWJvYXJkOHNldFR5cGVzRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDcmFz
aE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkQzFFUktOM1dU
RjZTdHJpbmdFCitfX1pON1dlYkNvcmUxOFNjcmlwdEdsb2JhbE9iamVjdDNzZXRFUE4zSlNDOUV4
ZWNTdGF0ZUVQS2NQTlNfMjFJbnNwZWN0b3JGcm9udGVuZEhvc3RFCiBfX1pON1dlYkNvcmUxOFN0
eWxlU2hlZXRDb250ZW50czExcGFyc2VTdHJpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNv
cmUxOFN0eWxlU2hlZXRDb250ZW50c0MxRVBOU18xNVN0eWxlUnVsZUltcG9ydEVSS04zV1RGNlN0
cmluZ0VSS05TXzE2Q1NTUGFyc2VyQ29udGV4dEUKIF9fWk43V2ViQ29yZTE4U3R5bGVTaGVldENv
bnRlbnRzRDFFdgpAQCAtMTkyOSw3ICsxOTMxLDEwIEBAIF9fWk5LN1dlYkNvcmU1UmFuZ2U5ZW5k
T2Zmc2V0RVJpCiBfX1pOSzdXZWJDb3JlNVJhbmdlOWZpcnN0Tm9kZUV2CiBfX1pOSzdXZWJDb3Jl
NVJhbmdlOXRleHRRdWFkc0VSTjNXVEY2VmVjdG9ySU5TXzlGbG9hdFF1YWRFTG0wRU5TMV8xNUNy
YXNoT25PdmVyZmxvd0VFRWJQTlMwXzIwUmFuZ2VJbkZpeGVkUG9zaXRpb25FCiBfX1pOSzdXZWJD
b3JlNVJhbmdlOXRleHRSZWN0c0VSTjNXVEY2VmVjdG9ySU5TXzdJbnRSZWN0RUxtMEVOUzFfMTVD
cmFzaE9uT3ZlcmZsb3dFRUViUE5TMF8yMFJhbmdlSW5GaXhlZFBvc2l0aW9uRQorX19aTks3V2Vi
Q29yZTZDaHJvbWUxMHdpbmRvd1JlY3RFdgogX19aTks3V2ViQ29yZTZDaHJvbWUxMmNyZWF0ZVdp
bmRvd0VQTlNfNUZyYW1lRVJLTlNfMTZGcmFtZUxvYWRSZXF1ZXN0RVJLTlNfMTRXaW5kb3dGZWF0
dXJlc0VSS05TXzE2TmF2aWdhdGlvbkFjdGlvbkUKK19fWk5LN1dlYkNvcmU2Q2hyb21lMTNzZXRX
aW5kb3dSZWN0RVJLTlNfOUZsb2F0UmVjdEUKK19fWk5LN1dlYkNvcmU2Q2hyb21lNHNob3dFdgog
X19aTks3V2ViQ29yZTZFZGl0b3IxMnNlbGVjdGVkVGV4dEV2CiBfX1pOSzdXZWJDb3JlNkVkaXRv
cjEzY2FuRWRpdFJpY2hseUV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjE2Y29tcG9zaXRpb25SYW5n
ZUV2CkBAIC0zMTI2LDEzICszMTMxLDE4IEBAIF9fWk43V2ViQ29yZTVDb2xvckMxRVJLTjNXVEY2
U3RyaW5nRQogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiBfX1pON1dlYkNvcmUxNFNjaGVtZVJlZ2lz
dHJ5MjdzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dl
YkNvcmUxNUluc3BlY3RvckNsaWVudDMxZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZUVQ
TlNfNFBhZ2VFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUxOEluc3BlY3RvclBhZ2VBZ2Vu
dDdmcmFtZUlkRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIx
NWNvbm5lY3RGcm9udGVuZEVQTjlJbnNwZWN0b3IyNEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbEUK
IF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4ZGlzY29ubmVjdEZyb250ZW5kRU45
SW5zcGVjdG9yMjVJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uRQogX19aTjdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyMThzZXRQcm9maWxlckVuYWJsZWRFYgogX19aTjdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyMjVldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kRVJLTjNXVEY2U3RyaW5n
RQotX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjZzZXRJbnNwZWN0b3JGcm9udGVu
ZENsaWVudEVOU3QzX18xMTB1bmlxdWVfcHRySU5TXzIzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRF
TlMxXzE0ZGVmYXVsdF9kZWxldGVJUzNfRUVFRQorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250
cm9sbGVyMjZzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudEVQTlNfMjNJbnNwZWN0b3JGcm9udGVu
ZENsaWVudEUKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI3ZGlzcGF0Y2hNZXNz
YWdlRnJvbUZyb250ZW5kRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JD
b250cm9sbGVyNHNob3dFdgogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyNWNsb3Nl
RXYKK19fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0MTZkaXNjb25uZWN0Q2xpZW50
RXYKK19fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0QzFFUE5TXzIzSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRFUE5TXzRQYWdlRQorX19aTjdXZWJDb3JlMjFJbnNwZWN0b3JGcm9udGVu
ZEhvc3REMUV2CiBfX1pON1dlYkNvcmUyMmluc3RydW1lbnRhdGlvbkZvclBhZ2VFUE5TXzRQYWdl
RQogX19aTjdXZWJDb3JlMjRJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24xN3NfZnJvbnRlbmRDb3Vu
dGVyRQogX19aTjdXZWJDb3JlMjRJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24yNmluc3RydW1lbnRp
bmdBZ2VudHNGb3JQYWdlRVBOU180UGFnZUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZjk2MDIzLi5lYWExOTlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NzYxLDcgKzE3NjEsNyBAQAogCQk0RjE1MzRFMDExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0Jl
aGF2aW9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRGMTUzNERGMTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3JUeXBlcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRGNEY1RkZC
MTFDQkQyRTEwMEExODZCRiAvKiBJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNEY1RkZBMTFD
QkQyRDIwMEExODZCRiAvKiBJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmNwcCAqLzsg
fTsKIAkJNEY2RkRENjQxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjZGREQ2MjEz
NDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmNwcCAqLzsgfTsKLQkJNEY2RkRE
NjUxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRENjMxMzQxREVERDAwMUY4RUUz
IC8qIEluc3BlY3RvclBhZ2VBZ2VudC5oICovOyB9OworCQk0RjZGREQ2NTEzNDFERUREMDAxRjhF
RTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0RjZGREQ2MzEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFn
ZUFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNEY3MDdBOTkxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRj
aGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
RjcwN0E5NzExRUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJz
LmNwcCAqLzsgfTsKIAkJNEY3MDdBOUExMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvcldlYkJh
Y2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEY3MDdBOTgxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvcldlYkJhY2tlbmRE
aXNwYXRjaGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTRGQjM5MEFEMTVFRjYxRjMwMDdBRDUxRiAvKiBHZW5lcmF0ZWRJbWFnZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RkIzOTBBQzE1RUY2
MUYzMDA3QUQ1MUYgLyogR2VuZXJhdGVkSW1hZ2UuY3BwICovOyB9OwpAQCAtMjMyNCw3ICsyMzI0
LDcgQEAKIAkJNzlGMkY1QTExMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlGMkY1OUUx
MDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuY3BwICovOyB9OwogCQk3OUYyRjVB
MjEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlGMkY1OUYxMDkxOTM5QTAwMEQ4N0NCIC8q
IENvbXBvc2l0aW9uRXZlbnQuaCAqLzsgfTsKIAkJN0EwRTc3MEUxMEMwMEE4ODAwQTAyNzZFIC8q
IEluc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzcwQjEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcCAqLzsgfTsKLQkJN0EwRTc3MEYxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3Bl
Y3RvckZyb250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0EwRTc3MEMxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9z
dC5oICovOyB9OworCQk3QTBFNzcwRjEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QTBFNzcwQzEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0EwRTc3MUUxMEMw
MERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NzFDMTBDMDBEQjEwMEEwMjc2
RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgKi87IH07CiAJCTdBMEU3NzFGMTBDMDBE
QjEwMEEwMjc2RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EwRTc3MUQxMEMwMERCMTAwQTAyNzZFIC8q
IEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggKi87IH07CiAJCTdBMUQ3RkNCMThGODVGMEYwMEMz
ODVBRCAvKiBtZWRpYUNvbnRyb2xzTG9jYWxpemVkU3RyaW5ncy5qcyBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0ExRDdGQzkxOEY4NUYwRjAwQzM4NUFE
IC8qIG1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJpbmdzLmpzICovOyB9OwpAQCAtMjM2Miw3ICsy
MzYyLDcgQEAKIAkJN0FCMEIxQzExMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFiYXNl
QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
QjBCMUJGMTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggKi87IH07
CiAJCTdBQ0Q4OEQzMTRDMDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUNEODhE
MTE0QzA4QkQ2MDA4NEVERDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwICovOyB9Owog
CQk3QUNEODhENDE0QzA4QkQ2MDA4NEVERDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQ0Q4OEQyMTRD
MDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oICovOyB9OwotCQk3QURF
NzIyNjEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FERTcyMjUxMENCQkI5QjAwNkIz
QjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLzsgfTsKKwkJN0FERTcyMjYxMENCQkI5QjAw
NkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBREU3MjI1MTBDQkJCOUIwMDZCM0IzQSAvKiBDb250ZXh0
TWVudVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0FGOUIyMDIxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFGQzE4Q0ZCMkRG
MDBDNjRCRUYgLyogVlRUUmVnaW9uLmNwcCAqLzsgfTsKIAkJN0FGOUIyMDMxOENGQjJERjAwQzY0
QkVGIC8qIFZUVFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0FGOUIxRkQxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5oICovOyB9Owog
CQk3QUY5QjIwNTE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uTGlzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFGRjE4Q0ZCMkRGMDBD
NjRCRUYgLyogVlRUUmVnaW9uTGlzdC5jcHAgKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oCmluZGV4IDhhYTA1NWIuLjkyYmYyMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oCkBA
IC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFNjcmlwdEdsb2JhbE9iamVjdCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBz
dGF0aWMgYm9vbCBzZXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0
b3JGcm9udGVuZEhvc3QqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzZXQoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0b3JGcm9udGVuZEhvc3QqKTsK
ICNlbmRpZgogCiAgICAgc3RhdGljIGJvb2wgZ2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hh
ciogbmFtZSwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuaAppbmRleCA4YTgyY2FiLi43ZTI2YWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKQEAgLTU4LDcgKzU4LDcgQEAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoSlNDOjpF
eGVjU3RhdGUqKTsKIEpTQzo6RXhlY1N0YXRlKiBtYWluV29ybGRFeGVjU3RhdGUoRnJhbWUqKTsK
IAogSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCYsIE5v
ZGUqKTsKLUpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tUGFnZShET01XcmFwcGVyV29ybGQm
LCBQYWdlKik7CitXRUJDT1JFX0VYUE9SVCBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVBh
Z2UoRE9NV3JhcHBlcldvcmxkJiwgUGFnZSopOwogSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZy
b21Xb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSopOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKaW5kZXggYzdjODc5NS4uMjA0MjUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODYsNiArODYsNyBAQCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3Rv
ckNsaWVudCogaW5zcGVjdG9yQwogICAgICwgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwobnVs
bHB0cikKICAgICAsIG1fcGFnZShwYWdlKQogICAgICwgbV9pbnNwZWN0b3JDbGllbnQoaW5zcGVj
dG9yQ2xpZW50KQorICAgICwgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudChudWxscHRyKQogICAg
ICwgbV9pc1VuZGVyVGVzdChmYWxzZSkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAg
ICAsIG1faGFzUmVtb3RlRnJvbnRlbmQoZmFsc2UpCkBAIC0xODgsOSArMTg5LDkgQEAgdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCkKICAgICBtX2luc3Bl
Y3RvckNsaWVudCA9IG51bGxwdHI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250ZW5k
Q2xpZW50PiBpbnNwZWN0b3JGcm9udGVuZENsaWVudCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIGlu
c3BlY3RvckZyb250ZW5kQ2xpZW50KQogewotICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQg
PSBXVEY6Om1vdmUoaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOworICAgIG1faW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQgPSBpbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIH0KIAogYm9vbCBJbnNwZWN0
b3JDb250cm9sbGVyOjpoYXNMb2NhbEZyb250ZW5kKCkgY29uc3QKQEAgLTIxMyw3ICsyMTQsNyBA
QCBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc1JlbW90ZUZyb250ZW5kKCkgY29uc3QKIAog
Ym9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuZ2V0KCk7CisgICAg
cmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiBmcmFtZSwgRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCkKQEAgLTI4Myw4ICsyODQsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OnNob3coKQogICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKICAgICAg
ICAgbV9pbnNwZWN0b3JDbGllbnQtPmJyaW5nRnJvbnRlbmRUb0Zyb250KCk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gbV9p
bnNwZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVuZCh0aGlzKTsKLSAgICAgICAgaWYg
KGZyb250ZW5kQ2hhbm5lbCkKKyAgICAgICAgaWYgKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsID0gbV9pbnNwZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVu
ZCh0aGlzKSkKICAgICAgICAgICAgIGNvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5oCmluZGV4IGZkNTU5MjQuLjMwZDNjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbG9z
ZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KEluc3BlY3RvckZyb250ZW5k
Q2xpZW50Kik7CiAgICAgYm9vbCBoYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIGNvbnN0Owog
ICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiwgRE9NV3JhcHBlcldv
cmxkJik7CiAKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWUoKTsK
IAogICAgIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KCkgY29uc3QgeyByZXR1cm4g
bV9pbnNwZWN0b3JDbGllbnQ7IH0KLSAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZUFnZW50OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgSW5zcGVj
dG9yUGFnZUFnZW50KiBwYWdlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VBZ2VudDsgfQog
CiAgICAgdmlydHVhbCBib29sIGRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVkU2NyaXB0U3RhdGUoSlNDOjpF
eGVjU3RhdGUqKSBjb25zdCBvdmVycmlkZTsKQEAgLTE0NiwxMCArMTQ2LDEwIEBAIHByaXZhdGU6
CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogbV90aW1lbGluZUFnZW50OwogCiAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50PiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50OwogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKICAgICBQYWdlJiBt
X3BhZ2U7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVudDsKKyAgICBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudCogbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudDsKICAgICBJbnNw
ZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CiAgICAgVmVjdG9yPEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSwgMj4gbV9pbmplY3RlZFNjcmlwdEluc3RydW1lbnRh
dGlvbkNvb2tpZXM7CiAgICAgYm9vbCBtX2lzVW5kZXJUZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCmluZGV4IDhlOGNkODUuLjFhNzRl
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEluc3BlY3RvckZyb250ZW5kSG9zdChjbGllbnQsIGZyb250ZW5kUGFnZSkpOwogICAgIH0K
IAotICAgIH5JbnNwZWN0b3JGcm9udGVuZEhvc3QoKTsKLSAgICB2b2lkIGRpc2Nvbm5lY3RDbGll
bnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+SW5zcGVjdG9yRnJvbnRlbmRIb3N0KCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCk7CiAKICAgICB2b2lkIGxvYWRl
ZCgpOwogICAgIHZvaWQgcmVxdWVzdFNldERvY2tTaWRlKGNvbnN0IFN0cmluZyYpOwpAQCAtOTUs
NyArOTUsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIGZyaWVu
ZCBjbGFzcyBGcm9udGVuZE1lbnVQcm92aWRlcjsKICNlbmRpZgotICAgIEluc3BlY3RvckZyb250
ZW5kSG9zdChJbnNwZWN0b3JGcm9udGVuZENsaWVudCosIFBhZ2UqIGZyb250ZW5kUGFnZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0KEluc3BlY3RvckZyb250ZW5k
Q2xpZW50KiwgUGFnZSogZnJvbnRlbmRQYWdlKTsKIAogICAgIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KiBtX2NsaWVudDsKICAgICBQYWdlKiBtX2Zyb250ZW5kUGFnZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCAxMTA2NzBlLi4yNWZlMWQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBA
IC0xNTUsNyArMTU1LDcgQEAgcHVibGljOgogICAgIEZyYW1lKiBtYWluRnJhbWUoKTsKICAgICBT
dHJpbmcgY3JlYXRlSWRlbnRpZmllcigpOwogICAgIEZyYW1lKiBmcmFtZUZvcklkKGNvbnN0IFN0
cmluZyYgZnJhbWVJZCk7Ci0gICAgU3RyaW5nIGZyYW1lSWQoRnJhbWUqKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgZnJhbWVJZChGcmFtZSopOwogICAgIGJvb2wgaGFzSWRGb3JGcmFtZShG
cmFtZSopIGNvbnN0OwogICAgIFN0cmluZyBsb2FkZXJJZChEb2N1bWVudExvYWRlciopOwogICAg
IEZyYW1lKiBmaW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5S
YXdTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggZmNhN2Y5MC4uM2U0ZjVmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5oCkBAIC0xMDIsOCArMTAyLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjb250
ZW50c1NpemVDaGFuZ2VkKEZyYW1lKiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0OwogCi0gICAgdm9p
ZCBzZXRXaW5kb3dSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwotICAgIEZsb2F0UmVjdCB3
aW5kb3dSZWN0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXaW5kb3dSZWN0
KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCB3
aW5kb3dSZWN0KCkgY29uc3Q7CiAKICAgICBGbG9hdFJlY3QgcGFnZVJlY3QoKSBjb25zdDsKIApA
QCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvY3VzZWRGcmFtZUNoYW5nZWQo
RnJhbWUqKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2UqIGNyZWF0ZVdpbmRvdyhG
cmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNv
bnN0IE5hdmlnYXRpb25BY3Rpb24mKSBjb25zdDsKLSAgICB2b2lkIHNob3coKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNob3coKSBjb25zdDsKIAogICAgIGJvb2wgY2FuUnVuTW9k
YWwoKSBjb25zdDsKICAgICBib29sIGNhblJ1bk1vZGFsTm93KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYWM5NmY1NS4uZTcxOTIxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTQ3MSwxMiArMTQ3MSwxMCBAQCBQYXNzUmVmUHRy
PERPTVdpbmRvdz4gSW50ZXJuYWxzOjpvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBT
dHJpbmcmIHVybCkKICAgICBQYWdlKiBmcm9udGVuZFBhZ2UgPSBtX2Zyb250ZW5kV2luZG93LT5k
b2N1bWVudCgpLT5wYWdlKCk7CiAgICAgQVNTRVJUKGZyb250ZW5kUGFnZSk7CiAKLSAgICBhdXRv
IGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZENsaWVu
dER1bW15PigmcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBmcm9udGVuZFBhZ2UpOwotCi0g
ICAgZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7Ci0KLSAgICBtX2Zyb250ZW5kQ2hh
bm5lbCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teShmcm9udGVu
ZFBhZ2UpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3JGcm9udGVuZENsaWVudER1bW15PigmcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBmcm9u
dGVuZFBhZ2UpOworICAgIGZyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldElu
c3BlY3RvckZyb250ZW5kQ2xpZW50KG1fZnJvbnRlbmRDbGllbnQuZ2V0KCkpOwogCisgICAgbV9m
cm9udGVuZENoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bER1bW15Pihmcm9udGVuZFBhZ2UpOwogICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5j
b25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENoYW5uZWwuZ2V0KCkpOwogCiAgICAgcmV0dXJuIG1f
ZnJvbnRlbmRXaW5kb3c7CkBAIC0xNDkwLDEwICsxNDg4LDExIEBAIHZvaWQgSW50ZXJuYWxzOjpj
bG9zZUR1bW15SW5zcGVjdG9yRnJvbnRlbmQoKQogCiAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNw
ZWN0b3JEZXN0cm95ZWQpOwogCi0gICAgbV9mcm9udGVuZENoYW5uZWwucmVsZWFzZSgpOworICAg
IG1fZnJvbnRlbmRDbGllbnQgPSBudWxscHRyOworICAgIG1fZnJvbnRlbmRDaGFubmVsID0gbnVs
bHB0cjsKIAogICAgIG1fZnJvbnRlbmRXaW5kb3ctPmNsb3NlKG1fZnJvbnRlbmRXaW5kb3ctPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgbV9mcm9udGVuZFdpbmRvdy5yZWxlYXNlKCk7
CisgICAgbV9mcm9udGVuZFdpbmRvdy5jbGVhcigpOwogfQogCiB2b2lkIEludGVybmFsczo6c2V0
SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBl
YykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDNmZjlhN2YuLjZjYzdkMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBEb2N1
bWVudE1hcmtlcjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbER1bW15OworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1t
eTsKIGNsYXNzIEludGVybmFsU2V0dGluZ3M7CiBjbGFzcyBNYWxsb2NTdGF0aXN0aWNzOwogY2xh
c3MgTWVtb3J5SW5mbzsKQEAgLTM1MCw3ICszNTEsOCBAQCBwcml2YXRlOgogICAgIERvY3VtZW50
TWFya2VyKiBtYXJrZXJBdChOb2RlKiwgY29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlLCB1bnNpZ25l
ZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgUmVm
UHRyPERPTVdpbmRvdz4gbV9mcm9udGVuZFdpbmRvdzsKLSAgICBPd25QdHI8SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsRHVtbXk+IG1fZnJvbnRlbmRDaGFubmVsOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudER1bW15PiBtX2Zyb250ZW5kQ2xpZW50OworICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teT4gbV9mcm9udGVuZENo
YW5uZWw7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvTWFpbi5qcwppbmRleCBmNTVhZjQ3Li4wODk4NjU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCkBAIC00OSw3ICs0
OSw3IEBAIFdlYkluc3BlY3Rvci5UeXBlSWRlbnRpZmllckNvb2tpZUtleSA9ICJyZXByZXNlbnRl
ZC1vYmplY3QtdHlwZSI7CiAKIFdlYkluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiB7Ci0g
ICAgLy8gVGVsbCB0aGUgSW5zcGVjdG9yRnJvbnRlbmRIb3N0IHdlIGxvYWRlZCBmaXJzdCB0byBl
c3RhYmxpc2ggY29tbXVuaWNhdGlvbiB3aXRoIEluc3BlY3RvckJhY2tlbmQuCisgICAgLy8gVGVs
bCB0aGUgSW5zcGVjdG9yRnJvbnRlbmRIb3N0IHdlIGxvYWRlZCwgd2hpY2ggY2F1c2VzIHRoZSB3
aW5kb3cgdG8gZGlzcGxheS4KICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZGVkKCk7CiAK
ICAgICAvLyBJbml0aWFsaXplIFdlYlNvY2tldCB0byBjb21tdW5pY2F0aW9uCkBAIC0zMjgsOSAr
MzI4LDYgQEAgV2ViSW5zcGVjdG9yLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgaWYg
KHRoaXMuX2RldGFpbHNTaWRlYmFyV2lkdGhTZXR0aW5nLnZhbHVlKQogICAgICAgICB0aGlzLmRl
dGFpbHNTaWRlYmFyLndpZHRoID0gdGhpcy5fZGV0YWlsc1NpZGViYXJXaWR0aFNldHRpbmcudmFs
dWU7CiAKLSAgICAvLyBVcGRhdGUgdGhlIGRvY2tlZCBzdGF0ZSBiYXNlZCBvbiB0aGUgcXVlcnkg
c3RyaW5nIHBhc3NlZCB3aGVuIHRoZSBXZWIgSW5zcGVjdG9yIHdhcyBsb2FkZWQuCi0gICAgdGhp
cy51cGRhdGVEb2NrZWRTdGF0ZShwYXJzZUxvY2F0aW9uUXVlcnlQYXJhbWV0ZXJzKCkuZG9ja1Np
ZGUgfHwgInVuZG9ja2VkIik7Ci0KICAgICAvLyBUZWxsIHRoZSBmcm9udGVuZCBBUEkgd2UgYXJl
IGxvYWRlZCBzbyBhbnkgcGVuZGluZyBmcm9udGVuZCBjb21tYW5kcyBjYW4gYmUgZGlzcGF0Y2hl
ZC4KICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3Rv
ckZyb250ZW5kQVBJLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKaW5kZXggMTIyNzIxMS4uN2I4ZGViMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5z
cGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAgLTI1LDI4ICsyNSwxNiBA
QAogCiBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICBfbG9hZGVkOiBmYWxzZSwKLQogICAg
IF9wZW5kaW5nQ29tbWFuZHM6IFtdLAogCiAgICAgc2F2ZWRVUkw6IGZ1bmN0aW9uKHVybCkKICAg
ICB7Ci0gICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgICAgIC8vIE5vdCB1
c2VkIHlldC4KICAgICB9LAogCiAgICAgYXBwZW5kZWRUb1VSTDogZnVuY3Rpb24odXJsKQogICAg
IHsKLSAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KLSAgICB9LAotCi0gICAgaXNE
ZWJ1Z2dpbmdFbmFibGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogTm90
IGltcGxlbWVudGVkLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKLQotICAgIHNldERl
YnVnZ2luZ0VuYWJsZWQ6IGZ1bmN0aW9uKGVuYWJsZWQpCi0gICAgewotICAgICAgICAvLyBGSVhN
RTogTm90IGltcGxlbWVudGVkLgorICAgICAgICAvLyBOb3QgdXNlZCB5ZXQuCiAgICAgfSwKIAog
ICAgIGlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkOiBmdW5jdGlvbigpCkBAIC0xMDgsMTEgKzk2
LDYgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNv
dXJjZVNpZGViYXJQYW5lbC5zaG93U291cmNlQ29kZUZvckZyYW1lKGZyYW1lSWRlbnRpZmllciwg
dHJ1ZSk7CiAgICAgfSwKIAotICAgIHNldERvY2tpbmdVbmF2YWlsYWJsZTogZnVuY3Rpb24odW5h
dmFpbGFibGUpCi0gICAgewotICAgICAgICAvLyBOb3QgdXNlZC4KLSAgICB9LAotCiAgICAgY29u
dGV4dE1lbnVJdGVtU2VsZWN0ZWQ6IGZ1bmN0aW9uKGlkKQogICAgIHsKICAgICAgICAgV2ViSW5z
cGVjdG9yLmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGlkKTsKQEAgLTE0MSw2ICsxMjQsMTAgQEAg
SW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgbWV0aG9k
TmFtZSA9IHNpZ25hdHVyZS5zaGlmdCgpOworICAgICAgICBjb25zb2xlLmFzc2VydChJbnNwZWN0
b3JGcm9udGVuZEFQSVttZXRob2ROYW1lXSwgIlVuZXhwZWN0ZWQgSW5zcGVjdG9yRnJvbnRlbmRB
UEkgbWV0aG9kIG5hbWU6ICIgKyBJbnNwZWN0b3JGcm9udGVuZEFQSVttZXRob2ROYW1lXSk7Cisg
ICAgICAgIGlmICghSW5zcGVjdG9yRnJvbnRlbmRBUElbbWV0aG9kTmFtZV0pCisgICAgICAgICAg
ICByZXR1cm47CisKICAgICAgICAgcmV0dXJuIEluc3BlY3RvckZyb250ZW5kQVBJW21ldGhvZE5h
bWVdLmFwcGx5KEluc3BlY3RvckZyb250ZW5kQVBJLCBzaWduYXR1cmUpOwogICAgIH0sCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudElPUy5tbQppbmRleCBkMzBkOGI5Li45OGRjYWVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1t
CkBAIC00Niw3ICs0Niw2IEBAIFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50
KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICAgICAsIG1faGln
aGxpZ2h0ZXIoYWRvcHROUyhbW1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNw
ZWN0ZWRXZWJWaWV3OndlYlZpZXddKSkKICAgICAsIG1fZnJvbnRlbmRQYWdlKDApCi0gICAgLCBt
X2Zyb250ZW5kQ2xpZW50KDApCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNDg1NjgzNi4uODk4Nzdl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFdlYlZpZXcg
Km1fd2ViVmlldzsKICAgICBSZXRhaW5QdHI8V2ViTm9kZUhpZ2hsaWdodGVyPiBtX2hpZ2hsaWdo
dGVyOwogICAgIFdlYkNvcmU6OlBhZ2UqIG1fZnJvbnRlbmRQYWdlOwotICAgIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KiBtX2Zyb250ZW5kQ2xpZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9mcm9udGVuZENsaWVudDsKIH07CiAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lm1tCmluZGV4IDZlMTc4OWQuLjgzMDhiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTEzMyw4ICsx
MzMsNyBAQCBAZW5kCiBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJW
aWV3ICp3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiAgICAgLCBtX2hpZ2hsaWdo
dGVyKGFkb3B0TlMoW1tXZWJOb2RlSGlnaGxpZ2h0ZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVk
V2ViVmlldzp3ZWJWaWV3XSkpCi0gICAgLCBtX2Zyb250ZW5kUGFnZSgwKQotICAgICwgbV9mcm9u
dGVuZENsaWVudCgwKQorICAgICwgbV9mcm9udGVuZFBhZ2UobnVsbHB0cikKIHsKIH0KIApAQCAt
MTUwLDExICsxNDksMTMgQEAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JD
bGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb24KICAgICBbd2luZG93Q29u
dHJvbGxlci5nZXQoKSBzZXRJbnNwZWN0b3JDbGllbnQ6dGhpc107CiAKICAgICBtX2Zyb250ZW5k
UGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgd2ViVmlld10pOwotICAgIGF1dG8g
ZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50PihtX3dlYlZpZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RvckNvbnRyb2xs
ZXIsIG1fZnJvbnRlbmRQYWdlLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwotICAgIG1fZnJv
bnRlbmRDbGllbnQgPSBmcm9udGVuZENsaWVudC5nZXQoKTsKLSAgICBSZXRhaW5QdHI8V2ViSW5z
cGVjdG9yRnJvbnRlbmQ+IHdlYkluc3BlY3RvckZyb250ZW5kID0gYWRvcHROUyhbW1dlYkluc3Bl
Y3RvckZyb250ZW5kIGFsbG9jXSBpbml0V2l0aEZyb250ZW5kQ2xpZW50OmZyb250ZW5kQ2xpZW50
LmdldCgpXSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fd2ViVmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwg
aW5zcGVjdG9yQ29udHJvbGxlciwgbV9mcm9udGVuZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGlu
Z3MoKSk7CisKKyAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yRnJvbnRlbmQ+IHdlYkluc3BlY3Rv
ckZyb250ZW5kID0gYWRvcHROUyhbW1dlYkluc3BlY3RvckZyb250ZW5kIGFsbG9jXSBpbml0V2l0
aEZyb250ZW5kQ2xpZW50Om1fZnJvbnRlbmRDbGllbnQuZ2V0KCldKTsKICAgICBbW21fd2ViVmll
dyBpbnNwZWN0b3JdIHNldEZyb250ZW5kOndlYkluc3BlY3RvckZyb250ZW5kLmdldCgpXTsKLSAg
ICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250
ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9udGVuZENsaWVudCkpOworCisgICAgbV9mcm9udGVuZFBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2Zy
b250ZW5kQ2xpZW50LmdldCgpKTsKKwogICAgIHJldHVybiB0aGlzOwogfQogCkBAIC0xOTksOCAr
MjAwLDggQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUo
Ym9vbCBlbmFibGVkKQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5k
KCkKIHsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gMDsKLSAgICBtX2Zyb250ZW5kUGFnZSA9IDA7
CisgICAgbV9mcm9udGVuZENsaWVudCA9IG51bGxwdHI7CisgICAgbV9mcm9udGVuZFBhZ2UgPSBu
dWxscHRyOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDNmMzZkZWYuLjdmMjJiYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcApAQCAtMTcxLDkgKzE3MSw4IEBAIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zCiAg
ICAgICAgIHJldHVybiAwOwogCiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKGZyb250ZW5kV2Vi
Vmlldy5nZXQoKSk7Ci0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0
ZWRXZWJWaWV3SGFuZGxlLCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRX
ZWJWaWV3SHduZCwgdGhpcywgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKLSAgICBtX2Zyb250
ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQuZ2V0KCk7Ci0gICAgbV9mcm9udGVuZFBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChXVEY6Om1vdmUo
ZnJvbnRlbmRDbGllbnQpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3Bl
Y3RlZFdlYlZpZXdIYW5kbGUsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVu
ZFdlYlZpZXdId25kLCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOworICAgIG1fZnJv
bnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQobV9mcm9udGVuZENsaWVudC5nZXQoKSk7CiAgICAgbV9mcm9udGVuZEhhbmRsZSA9IGZyb250
ZW5kSHduZDsKICAgICByZXR1cm4gdGhpczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggYjMxZGQ4OS4uNDdm
YmVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBy
ZWxlYXNlRnJvbnRlbmQoKTsKIAotICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBmcm9u
dGVuZENsaWVudCgpIHsgcmV0dXJuIG1fZnJvbnRlbmRDbGllbnQ7IH0KKyAgICBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudCogZnJvbnRlbmRDbGllbnQoKSB7IHJldHVybiBtX2Zyb250ZW5kQ2xp
ZW50LmdldCgpOyB9CiAKICAgICB2b2lkIHVwZGF0ZUhpZ2hsaWdodCgpOwogCkBAIC04NSw3ICs4
NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJWaWV3KiBtX2luc3BlY3RlZFdlYlZpZXc7CiAgICAg
V2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7Ci0gICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQqIG1fZnJvbnRlbmRDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50PiBtX2Zyb250ZW5kQ2xpZW50OwogICAgIEhXTkQgbV9pbnNwZWN0ZWRX
ZWJWaWV3SGFuZGxlOwogICAgIEhXTkQgbV9mcm9udGVuZEhhbmRsZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3Rz
LnR4dAppbmRleCA0ZjM5MjNkLi42YmRjNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtNTMw
LDcgKzUzMCw2IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCi0gICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsdWdJbkNsaWVudC5jcHAKQEAgLTU1Miw2ICs1NTEsNyBAQCBzZXQoV2ViS2l0
Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVyLmNwcAog
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JV
SS5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcApAQCAtNjQ1LDYgKzY0NSw3IEBAIHNldChXZWJL
aXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0
Y2hlci5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxl
Q29udHJvbGxlci5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3IubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVz
c2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5tZXNzYWdlcy5pbgogKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJL
aXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNTkzODZjYi4uZDVkN2NlMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktp
dDIvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTIxLDYgKzEyMSw3IEBAIE1FU1NBR0VfUkVDRUlW
RVJTID0gXAogICAgIFdlYkljb25EYXRhYmFzZVByb3h5IFwKICAgICBXZWJJbnNwZWN0b3IgXAog
ICAgIFdlYkluc3BlY3RvclByb3h5IFwKKyAgICBXZWJJbnNwZWN0b3JVSSBcCiAgICAgV2ViTWVk
aWFDYWNoZU1hbmFnZXIgXAogICAgIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkgXAogICAgIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAwNTEy
NzliLi5lOGIyZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTkyLDcgKzE5Miw3
IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdl
L2F0ay9XZWJQYWdlQWNjZXNzaWJpbGl0eU9iamVjdEF0ay5jcHAKIAotICAgIFdlYlByb2Nlc3Mv
V2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9yRWZsLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9l
ZmwvV2ViSW5zcGVjdG9yVUlFZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQ
YWdlRWZsLmNwcAogCiAgICAgV2ViUHJvY2Vzcy9lZmwvU2VjY29tcEZpbHRlcnNXZWJQcm9jZXNz
RWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA3MmRhN2JiLi4wMzhjOGNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMzAyLDcgKzMwMiw3IEBAIGxpc3QoQVBQRU5E
IFdlYktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUHJpbnRlckxpc3RHdGsuY3Bw
Ci0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JHdGsuY3BwCisgICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAKICAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCmluZGV4
IDZkZjQ5MTguLjkyMmU2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKQEAgLTE0Myw2
ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEJ1bmRsZUZyYW1lLAogICAgICAgICBCdW5kbGVI
aXRUZXN0UmVzdWx0LAogICAgICAgICBCdW5kbGVJbnNwZWN0b3IsCisgICAgICAgIEJ1bmRsZUlu
c3BlY3RvclVJLAogICAgICAgICBCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBCdW5k
bGVOb2RlSGFuZGxlLAogICAgICAgICBCdW5kbGVQYWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAKaW5kZXggMTZlODQ1Yi4uZDg1ZjViOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwCkBAIC0x
NzQsNDQgKzE3NCw2IEBAIHZvaWQgV0tJbnNwZWN0b3JEZXRhY2goV0tJbnNwZWN0b3JSZWYgaW5z
cGVjdG9yUmVmKQogI2VuZGlmCiB9CiAKLWJvb2wgV0tJbnNwZWN0b3JJc0RlYnVnZ2luZ0phdmFT
Y3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQotewotI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgcmV0dXJuIHRvSW1wbChpbnNwZWN0b3JSZWYpLT5pc0RlYnVnZ2luZ0phdmFTY3Jp
cHQoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGluc3BlY3RvclJlZik7Ci0gICAgcmV0dXJu
IGZhbHNlOwotI2VuZGlmCi19Ci0KLXZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0RGVi
dWdnaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKLXsKLSNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotICAgIHRvSW1wbChpbnNwZWN0b3JSZWYpLT50b2dnbGVKYXZhU2NyaXB0RGVidWdnaW5n
KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0b3JSZWYpOwotI2VuZGlmCi19Ci0K
LWJvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ0phdmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5z
cGVjdG9yUmVmKQotewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgcmV0dXJuIHRvSW1wbChp
bnNwZWN0b3JSZWYpLT5pc1Byb2ZpbGluZ0phdmFTY3JpcHQoKTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKGluc3BlY3RvclJlZik7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLXZv
aWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKFdLSW5zcGVjdG9yUmVmIGlu
c3BlY3RvclJlZikKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHRvSW1wbChpbnNwZWN0
b3JSZWYpLT50b2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShpbnNwZWN0b3JSZWYpOwotI2VuZGlmCi19Ci0KIGJvb2wgV0tJbnNwZWN0b3JJc1Byb2Zp
bGluZ1BhZ2UoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQogewogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNw
ZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oCmlu
ZGV4IGJhNzY0ODkuLjE0NjU0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0luc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0luc3BlY3Rvci5oCkBAIC01OCwxMiArNTgsNiBAQCBXS19FWFBPUlQgYm9vbCBXS0luc3Bl
Y3RvcklzQXR0YWNoZWQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKIFdLX0VYUE9SVCB2b2lk
IFdLSW5zcGVjdG9yQXR0YWNoKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7CiBXS19FWFBPUlQg
dm9pZCBXS0luc3BlY3RvckRldGFjaChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwogCi1XS19F
WFBPUlQgYm9vbCBXS0luc3BlY3RvcklzRGVidWdnaW5nSmF2YVNjcmlwdChXS0luc3BlY3RvclJl
ZiBpbnNwZWN0b3IpOwotV0tfRVhQT1JUIHZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0
RGVidWdnaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7Ci0KLVdLX0VYUE9SVCBib29sIFdL
SW5zcGVjdG9ySXNQcm9maWxpbmdKYXZhU2NyaXB0KFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7
Ci1XS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmcoV0tJ
bnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKLQogV0tfRVhQT1JUIGJvb2wgV0tJbnNwZWN0b3JJc1By
b2ZpbGluZ1BhZ2UoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKIFdLX0VYUE9SVCB2b2lkIFdL
SW5zcGVjdG9yVG9nZ2xlUGFnZVByb2ZpbGluZyhXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRl
eCBiZTM3NzA0Li42NTE5NjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBQb3J0aW9ucyBDb3B5
cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiV2ViRnJh
bWVQcm94eS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViUHJlZmVyZW5jZXMuaCIKQEAgLTU3LDkgKzU3LDYgQEAgY29uc3QgdW5zaWduZWQgV2ViSW5z
cGVjdG9yUHJveHk6Om1pbmltdW1XaW5kb3dIZWlnaHQgPSA0MDA7CiBjb25zdCB1bnNpZ25lZCBX
ZWJJbnNwZWN0b3JQcm94eTo6aW5pdGlhbFdpbmRvd1dpZHRoID0gMTAwMDsKIGNvbnN0IHVuc2ln
bmVkIFdlYkluc3BlY3RvclByb3h5Ojppbml0aWFsV2luZG93SGVpZ2h0ID0gNjUwOwogCi1jb25z
dCB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6bWluaW11bUF0dGFjaGVkV2lkdGggPSA3NTA7
Ci1jb25zdCB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6bWluaW11bUF0dGFjaGVkSGVpZ2h0
ID0gMjUwOwotCiBjbGFzcyBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgV2ViSW5zcGVjdG9yUGFnZUdyb3VwcyYgc2hhcmVkKCkKQEAgLTEwNSwxMSArMTAyLDEy
IEBAIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IFdl
YlBhZ2VHcm91cDo6Y3JlYXRlKFN0cmluZzo6Zm9ybWF0KCJfX1dlYkluc3BlY3RvclBhZ2VHcm91
cExldmVsJXVfXyIsIGxldmVsKSwgZmFsc2UsIGZhbHNlKTsKIAogI2lmbmRlZiBOREVCVUcKLSAg
ICAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGlu
IGRlYnVnIGJ1aWxkcy4KKyAgICAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRo
ZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdz
LgogICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0RGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCh0cnVlKTsKICAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnNldExvZ3NQYWdl
TWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkKHRydWUpOwogI2VuZGlmCiAKKyAgICAgICAg
cGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyh0
cnVlKTsKICAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnNldEFwcGxpY2F0aW9uQ2hy
b21lTW9kZUVuYWJsZWQodHJ1ZSk7CiAKICAgICAgICAgcmV0dXJuIHBhZ2VHcm91cC5yZWxlYXNl
KCk7CkBAIC0xMjQsMTMgKzEyMiwxMiBAQCBwcml2YXRlOgogCiBXZWJJbnNwZWN0b3JQcm94eTo6
V2ViSW5zcGVjdG9yUHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2Up
CisgICAgLCBtX2luc3BlY3RvclBhZ2UobnVsbHB0cikKICAgICAsIG1faXNWaXNpYmxlKGZhbHNl
KQogICAgICwgbV9pc0F0dGFjaGVkKGZhbHNlKQotICAgICwgbV9pc0RlYnVnZ2luZ0phdmFTY3Jp
cHQoZmFsc2UpCi0gICAgLCBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdChmYWxzZSkKKyAgICAsIG1f
Y2FuQXR0YWNoKGZhbHNlKQogICAgICwgbV9pc1Byb2ZpbGluZ1BhZ2UoZmFsc2UpCiAgICAgLCBt
X3Nob3dNZXNzYWdlU2VudChmYWxzZSkKLSAgICAsIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UoZmFs
c2UpCiAgICAgLCBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250KGZhbHNlKQogICAgICwgbV9hdHRh
Y2htZW50U2lkZShBdHRhY2htZW50U2lkZUJvdHRvbSkKICNpZiBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKEVGTCkKQEAgLTE4OCw2ICsxODUsOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpj
b25uZWN0KCkKICAgICBtX3Nob3dNZXNzYWdlU2VudCA9IHRydWU7CiAgICAgbV9pZ25vcmVGaXJz
dEJyaW5nVG9Gcm9udCA9IHRydWU7CiAKKyAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgp
OworCiAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpT
aG93KCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCkBAIC0yMzIsNiArMjMxLDggQEAgdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6c2hvd0NvbnNvbGUoKQogICAgIGlmICghbV9wYWdlKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOworCiAgICAgbV9w
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93Q29uc29sZSgp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIApAQCAtMjQwLDYgKzI0MSw4IEBAIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnNob3dSZXNvdXJjZXMoKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOworCiAgICAgbV9wYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93UmVzb3VyY2VzKCks
IG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCkBAIC0yNDgsNiArMjUxLDggQEAgdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1l
KQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKKyAgICBlYWdlcmx5Q3JlYXRl
SW5zcGVjdG9yUGFnZSgpOworCiAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSks
IG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCkBAIC0yNzQsMTMgKzI3OSwxNSBAQCB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjphdHRhY2goQXR0YWNobWVudFNpZGUgc2lkZSkKICAgICBpZiAobV9pc1Zp
c2libGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLnNldElu
c3BlY3RvclN0YXJ0c0F0dGFjaGVkKHRydWUpOwogCisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0cnVlKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisKICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKICAgICBjYXNlIEF0dGFj
aG1lbnRTaWRlQm90dG9tOgotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVkQm90dG9tKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
ICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAgICAg
ICAgIGJyZWFrOwogCiAgICAgY2FzZSBBdHRhY2htZW50U2lkZVJpZ2h0OgotICAgICAgICBtX3Bh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVkUmlnaHQo
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCksIG1faW5zcGVj
dG9yUGFnZS0+cGFnZUlEKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTI5Nyw3ICsz
MDQsOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkZXRhY2goKQogICAgIGlmIChtX2lzVmlz
aWJsZSkKICAgICAgICAgaW5zcGVjdG9yUGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkuc2V0SW5z
cGVjdG9yU3RhcnRzQXR0YWNoZWQoZmFsc2UpOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpEZXRhY2hlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0
dGFjaGVkKGZhbHNlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFjaGVkKCksIG1faW5z
cGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogCiAgICAgcGxhdGZvcm1EZXRhY2goKTsKIH0KQEAgLTMx
NCwzNCArMzIyLDYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2V0QXR0YWNoZWRXaW5kb3dX
aWR0aCh1bnNpZ25lZCB3aWR0aCkKICAgICBwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgo
d2lkdGgpOwogfQogCi12b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVKYXZhU2NyaXB0RGVi
dWdnaW5nKCkKLXsKLSAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KG1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KQotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCksIG1fcGFn
ZS0+cGFnZUlEKCkpOwotICAgIGVsc2UKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdGFydEphdmFTY3JpcHREZWJ1Z2dpbmcoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7Ci0KLSAgICAvLyBGSVhNRTogaGF2ZSB0aGUgV2ViUHJvY2VzcyBub3RpZnkg
dXMgb24gc3RhdGUgY2hhbmdlcy4KLSAgICBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdCA9ICFtX2lz
RGVidWdnaW5nSmF2YVNjcmlwdDsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xl
SmF2YVNjcmlwdFByb2ZpbGluZygpCi17Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdCkKLSAgICAgICAgbV9wYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wSmF2YVNjcmlwdFByb2Zp
bGluZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRKYXZhU2NyaXB0UHJvZmls
aW5nKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotCi0gICAgLy8gRklYTUU6IGhhdmUgdGhlIFdlYlBy
b2Nlc3Mgbm90aWZ5IHVzIG9uIHN0YXRlIGNoYW5nZXMuCi0gICAgbV9pc1Byb2ZpbGluZ0phdmFT
Y3JpcHQgPSAhbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQ7Ci19Ci0KIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnRvZ2dsZVBhZ2VQcm9maWxpbmcoKQogewogICAgIGlmICghbV9wYWdlKQpAQCAtNDI2
LDI5ICs0MDYsMjAgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmREaXNj
b25uZWN0ZWQoKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9t
UmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fcGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGlzcGF0Y2hNZXNzYWdlRnJvbVJl
bW90ZUZyb250ZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNlbmRNZXNzYWdlVG9CYWNrZW5k
KG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KICNlbmRpZgogCi0vLyBDYWxsZWQgYnkg
V2ViSW5zcGVjdG9yUHJveHkgbWVzc2FnZXMKLXZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0
ZUluc3BlY3RvclBhZ2UodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyYgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMpCit2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjplYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpCiB7Ci0gICAgaW5zcGVjdG9yUGFnZUlE
ID0gMDsKLQotICAgIGlmICghbV9wYWdlKQorICAgIGlmIChtX2luc3BlY3RvclBhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1faXNBdHRhY2hlZCA9IHNob3VsZE9wZW5BdHRhY2hlZCgpOwot
ICAgIG1fYXR0YWNobWVudFNpZGUgPSBzdGF0aWNfY2FzdDxBdHRhY2htZW50U2lkZT4oaW5zcGVj
dG9yUGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0YWNobWVudFNpZGUoKSk7
Ci0KLSAgICBXZWJQYWdlUHJveHkqIGluc3BlY3RvclBhZ2UgPSBwbGF0Zm9ybUNyZWF0ZUluc3Bl
Y3RvclBhZ2UoKTsKLSAgICBBU1NFUlQoaW5zcGVjdG9yUGFnZSk7Ci0gICAgaWYgKCFpbnNwZWN0
b3JQYWdlKQorICAgIG1faW5zcGVjdG9yUGFnZSA9IHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFn
ZSgpOworICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOworICAgIGlmICghbV9pbnNwZWN0b3JQ
YWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnNwZWN0b3JQYWdlSUQgPSBpbnNwZWN0b3JQ
YWdlLT5wYWdlSUQoKTsKLSAgICBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycyA9IGluc3BlY3RvclBh
Z2UtPmNyZWF0aW9uUGFyYW1ldGVycygpOwotCiAgICAgV0tQYWdlUG9saWN5Q2xpZW50VjEgcG9s
aWN5Q2xpZW50ID0gewogICAgICAgICB7IDEsIHRoaXMgfSwKICAgICAgICAgMCwgLyogZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwICovCkBAIC00
NTksNjkgKzQzMCw0OCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQ
YWdlKHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcgogICAgICAgICAwLCAvKiBk
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZSAqLwogICAgIH07CiAKLSAgICBXS1BhZ2VTZXRQYWdlUG9s
aWN5Q2xpZW50KHRvQVBJKGluc3BlY3RvclBhZ2UpLCAmcG9saWN5Q2xpZW50LmJhc2UpOwotCi0g
ICAgU3RyaW5nQnVpbGRlciB1cmw7CisgICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQ
SShtX2luc3BlY3RvclBhZ2UpLCAmcG9saWN5Q2xpZW50LmJhc2UpOwogCi0gICAgdXJsLmFwcGVu
ZChpbnNwZWN0b3JQYWdlVVJMKCkpOwotCi0gICAgdXJsLmFwcGVuZExpdGVyYWwoIj9kb2NrU2lk
ZT0iKTsKLQotICAgIGlmIChtX2lzQXR0YWNoZWQpIHsKLSAgICAgICAgc3dpdGNoIChtX2F0dGFj
aG1lbnRTaWRlKSB7Ci0gICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVCb3R0b206Ci0gICAgICAg
ICAgICB1cmwuYXBwZW5kTGl0ZXJhbCgiYm90dG9tIik7Ci0gICAgICAgICAgICBtX3BhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVkQm90dG9tKCksIG1f
cGFnZS0+cGFnZUlEKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQXR0YWNo
bWVudFNpZGVSaWdodDoKLSAgICAgICAgICAgIHVybC5hcHBlbmRMaXRlcmFsKCJyaWdodCIpOwot
ICAgICAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpBdHRhY2hlZFJpZ2h0KCksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgdXJsLmFwcGVuZExpdGVyYWwoInVuZG9j
a2VkIik7Ci0KLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJM
KGluc3BlY3RvckJhc2VVUkwoKSk7Ci0KLSAgICBpbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChV
UkwoVVJMKCksIHVybC50b1N0cmluZygpKSk7Ci0KLSAgICBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdl
ID0gdHJ1ZTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5h
c3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGluc3BlY3RvckJhc2VVUkwoKSk7CiB9CiAKLXZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KHVpbnQ2NF90JiBp
bnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIGluc3BlY3RvclBhZ2VQ
YXJhbWV0ZXJzKQorLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2VzCit2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBj
b25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXN0KQogewot
ICAgIGluc3BlY3RvclBhZ2VJRCA9IDA7Ci0KICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9pc0F0dGFjaGVkID0gZmFsc2U7CisgICAgZWFnZXJseUNyZWF0ZUluc3Bl
Y3RvclBhZ2UoKTsKIAotICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSA9IHBsYXRmb3Jt
Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOwotICAgIEFTU0VSVChpbnNwZWN0b3JQYWdlKTsKLSAgICBp
ZiAoIWluc3BlY3RvclBhZ2UpCisgICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgaWYg
KCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluc3BlY3RvclBhZ2VJ
RCA9IGluc3BlY3RvclBhZ2UtPnBhZ2VJRCgpOwotICAgIGluc3BlY3RvclBhZ2VQYXJhbWV0ZXJz
ID0gaW5zcGVjdG9yUGFnZS0+Y3JlYXRpb25QYXJhbWV0ZXJzKCk7CisgICAgbV9pbnNwZWN0b3JQ
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkVzdGFibGlzaENv
bm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsIG1fcGFnZS0+cGFnZUlEKCksIGZhbHNlKSwg
bV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAKLSAgICBXS1BhZ2VQb2xpY3lDbGllbnRWMSBw
b2xpY3lDbGllbnQgPSB7Ci0gICAgICAgIHsgMSwgdGhpcyB9LAotICAgICAgICAwLCAvKiBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgKi8KLSAg
ICAgICAgMCwgLyogZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uICovCi0gICAgICAgIDAs
IC8qIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgKi8KLSAg
ICAgICAgMCwgLyogdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kgKi8KLSAgICAgICAgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiwKLSAgICAgICAgMCwgLyogZGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2UgKi8KLSAgICB9OworICAgIGlmICghdW5kZXJUZXN0KSB7CisgICAgICAgIG1fY2FuQXR0
YWNoID0gY2FuQXR0YWNoOworICAgICAgICBtX2lzQXR0YWNoZWQgPSBzaG91bGRPcGVuQXR0YWNo
ZWQoKTsKKyAgICAgICAgbV9hdHRhY2htZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0dGFjaG1lbnRT
aWRlPihpbnNwZWN0b3JQYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2ht
ZW50U2lkZSgpKTsKIAotICAgIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQodG9BUEkoaW5zcGVj
dG9yUGFnZSksICZwb2xpY3lDbGllbnQuYmFzZSk7CisgICAgICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQobV9pc0F0dGFjaGVkKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNj
ZXNzVG9CYXNlVVJMKGluc3BlY3RvckJhc2VVUkwoKSk7CisgICAgICAgIGlmIChtX2lzQXR0YWNo
ZWQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgeworICAgICAgICAg
ICAgY2FzZSBBdHRhY2htZW50U2lkZUJvdHRvbToKKyAgICAgICAgICAgICAgICBtX2luc3BlY3Rv
clBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRC
b3R0b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICBpbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIGluc3BlY3Rv
clRlc3RQYWdlVVJMKCkpKTsKKyAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVSaWdodDoK
KyAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7
CisgICAgfQogCi0gICAgbV9jcmVhdGVkSW5zcGVjdG9yUGFnZSA9IHRydWU7CisgICAgbV9pbnNw
ZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIHVuZGVyVGVzdCA/IGluc3BlY3RvclRl
c3RQYWdlVVJMKCkgOiBpbnNwZWN0b3JQYWdlVVJMKCkpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6b3BlbigpCkBAIC01MzMsMjAgKzQ4MywyMSBAQCB2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjpvcGVuKCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGlkQ2xvc2UoKQogewotICAg
IGlmICghbV9jcmVhdGVkSW5zcGVjdG9yUGFnZSkKKyAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkK
ICAgICAgICAgcmV0dXJuOwogCisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxs
cHRyOworCiAgICAgbV9pc1Zpc2libGUgPSBmYWxzZTsKLSAgICBtX2lzRGVidWdnaW5nSmF2YVNj
cmlwdCA9IGZhbHNlOwotICAgIG1faXNQcm9maWxpbmdKYXZhU2NyaXB0ID0gZmFsc2U7CiAgICAg
bV9pc1Byb2ZpbGluZ1BhZ2UgPSBmYWxzZTsKLSAgICBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlID0g
ZmFsc2U7CiAgICAgbV9zaG93TWVzc2FnZVNlbnQgPSBmYWxzZTsKICAgICBtX2lnbm9yZUZpcnN0
QnJpbmdUb0Zyb250ID0gZmFsc2U7CiAKICAgICBpZiAobV9pc0F0dGFjaGVkKQogICAgICAgICBw
bGF0Zm9ybURldGFjaCgpOwogICAgIG1faXNBdHRhY2hlZCA9IGZhbHNlOworICAgIG1fY2FuQXR0
YWNoID0gZmFsc2U7CiAKICAgICBwbGF0Zm9ybURpZENsb3NlKCk7CiB9CkBAIC01NjksNiArNTIw
LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YnJpbmdUb0Zyb250KCkKIAogdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6YXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29sIGF2YWlsYWJsZSkK
IHsKKyAgICBtX2NhbkF0dGFjaCA9IGF2YWlsYWJsZTsKKwogICAgIHBsYXRmb3JtQXR0YWNoQXZh
aWxhYmlsaXR5Q2hhbmdlZChhdmFpbGFibGUpOwogfQogCkBAIC01ODcsMjggKzU0MCw2IEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OmFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnQpCiAgICAgcGxhdGZvcm1BcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQp
OwogfQogCi1ib29sIFdlYkluc3BlY3RvclByb3h5OjpjYW5BdHRhY2goKQotewotICAgIC8vIEtl
ZXAgdGhpcyBpbiBzeW5jIHdpdGggSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2FuQXR0
YWNoV2luZG93LiBUaGVyZSBhcmUgdHdvIGltcGxlbWVudGF0aW9ucwotICAgIC8vIHRvIG1ha2Ug
bGlmZSBlYXNpZXIgaW4gdGhlIG11bHRpLXByb2Nlc3Mgd29ybGQgd2UgaGF2ZS4gV2ViSW5zcGVj
dG9yUHJveHkgdXNlcyBjYW5BdHRhY2ggdG8gZGVjaWRlIGlmCi0gICAgLy8gd2UgY2FuIGF0dGFj
aCBvbiBvcGVuIChvbiB0aGUgVUkgcHJvY2VzcyBzaWRlKS4gQW5kIEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWw6OmNhbkF0dGFjaFdpbmRvdyBpcwotICAgIC8vIHVzZWQgdG8gZGVjaWRlIGlm
IHdlIGNhbiBhdHRhY2ggd2hlbiB0aGUgYXR0YWNoIGJ1dHRvbiBpcyBwcmVzc2VkIChvbiB0aGUg
V2ViUHJvY2VzcyBzaWRlKS4KLQotICAgIC8vIElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCBh
bGxvdyBhdHRhY2hpbmcgYWdhaW4gdG8gYWxsb3cgc3dpdGNoaW5nIHNpZGVzLgotICAgIGlmICht
X2lzQXR0YWNoZWQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gRG9uJ3QgYWxsb3cg
YXR0YWNoaW5nIHRvIGFub3RoZXIgaW5zcGVjdG9yIC0tIHR3byBpbnNwZWN0b3JzIGluIG9uZSB3
aW5kb3cgaXMgdG9vIG11Y2ghCi0gICAgaWYgKG1fbGV2ZWwgPiAxKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAvLyBEb24ndCBhbGxvdyB0aGUgYXR0YWNoIGlmIHRoZSB3aW5kb3cgd291
bGQgYmUgdG9vIHNtYWxsIHRvIGFjY29tbW9kYXRlIHRoZSBtaW5pbXVtIGluc3BlY3RvciBoZWln
aHQuCi0gICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZUhlaWdodCA9IHBsYXRmb3JtSW5zcGVjdGVk
V2luZG93SGVpZ2h0KCk7Ci0gICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZVdpZHRoID0gcGxhdGZv
cm1JbnNwZWN0ZWRXaW5kb3dXaWR0aCgpOwotICAgIHVuc2lnbmVkIG1heGltdW1BdHRhY2hlZEhl
aWdodCA9IGluc3BlY3RlZFBhZ2VIZWlnaHQgKiAzIC8gNDsKLSAgICByZXR1cm4gbWluaW11bUF0
dGFjaGVkSGVpZ2h0IDw9IG1heGltdW1BdHRhY2hlZEhlaWdodCAmJiBtaW5pbXVtQXR0YWNoZWRX
aWR0aCA8PSBpbnNwZWN0ZWRQYWdlV2lkdGg7Ci19Ci0KIGJvb2wgV2ViSW5zcGVjdG9yUHJveHk6
OnNob3VsZE9wZW5BdHRhY2hlZCgpCiB7CiAgICAgcmV0dXJuIGluc3BlY3RvclBhZ2VHcm91cCgp
LT5wcmVmZXJlbmNlcygpLmluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKCkgJiYgY2FuQXR0YWNoKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDE3
YTc0OTguLjlhOGJjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0
b3JQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChj
KSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtMzAsNiArMzAsNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAK
ICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNjIsNyArNjMsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdl
UHJveHk7Ci1zdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIAogZW51bSBBdHRhY2ht
ZW50U2lkZSB7CiAgICAgQXR0YWNobWVudFNpZGVCb3R0b20sCkBAIC04Myw3ICs4Myw3IEBAIHB1
YmxpYzoKICAgICAvLyBQdWJsaWMgQVBJcwogICAgIFdlYlBhZ2VQcm94eSogcGFnZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnZTsgfQogCi0gICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY3JlYXRlZEluc3BlY3RvclBhZ2U7IH0KKyAgICBib29sIGlzQ29ubmVjdGVkKCkgY29u
c3QgeyByZXR1cm4gISFtX2luc3BlY3RvclBhZ2U7IH0KICAgICBib29sIGlzVmlzaWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNWaXNpYmxlOyB9CiAgICAgYm9vbCBpc0Zyb250KCk7CiAKQEAgLTEy
MywxMiArMTIzLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1
bnNpZ25lZCk7CiAgICAgdm9pZCBzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkgeyBw
bGF0Zm9ybVNldFRvb2xiYXJIZWlnaHQoaGVpZ2h0KTsgfQogCi0gICAgYm9vbCBpc0RlYnVnZ2lu
Z0phdmFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdDsgfQot
ICAgIHZvaWQgdG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZygpOwotCi0gICAgYm9vbCBpc1Byb2Zp
bGluZ0phdmFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdDsg
fQotICAgIHZvaWQgdG9nZ2xlSmF2YVNjcmlwdFByb2ZpbGluZygpOwotCiAgICAgYm9vbCBpc1By
b2ZpbGluZ1BhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvZmlsaW5nUGFnZTsgfQogICAgIHZv
aWQgdG9nZ2xlUGFnZVByb2ZpbGluZygpOwogCkBAIC0xNTAsOSArMTQ0LDEwIEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yUHJveHkoV2ViUGFnZVByb3h5Kik7
CiAKKyAgICB2b2lkIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+Jikgb3ZlcnJp
ZGU7CiAKICAgICBXZWJQYWdlUHJveHkqIHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpOwog
ICAgIHZvaWQgcGxhdGZvcm1PcGVuKCk7CkBAIC0xNzMsOCArMTY4LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudCk7CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yUHJveHkgbWVzc2Fn
ZXMKLSAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBhZ2UodWludDY0X3QmIGluc3BlY3RvclBhZ2VJ
RCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwotICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9y
UGFnZUZvclRlc3QodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYpOworICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQs
IGJvb2wgY2FuQXR0YWNoLCBib29sIHVuZGVyVGVzdCk7CiAgICAgdm9pZCBkaWRDbG9zZSgpOwog
ICAgIHZvaWQgYnJpbmdUb0Zyb250KCk7CiAgICAgdm9pZCBhdHRhY2hBdmFpbGFiaWxpdHlDaGFu
Z2VkKGJvb2wpOwpAQCAtMTg3LDcgKzE4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kTWVz
c2FnZVRvUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICNlbmRpZgogCi0g
ICAgYm9vbCBjYW5BdHRhY2goKTsKKyAgICBib29sIGNhbkF0dGFjaCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FuQXR0YWNoOyB9CiAgICAgYm9vbCBzaG91bGRPcGVuQXR0YWNoZWQoKTsKIAogICAgIHZv
aWQgb3BlbigpOwpAQCAtMjA0LDE5ICsxOTgsMTQgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgaW5pdGlhbFdpbmRvd1dpZHRoOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBpbml0aWFsV2luZG93SGVpZ2h0OwogCi0gICAgLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0
aGUgdmFsdWUgaW4gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC4KLSAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbWluaW11bUF0dGFjaGVkV2lkdGg7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIG1pbmltdW1BdHRhY2hlZEhlaWdodDsKLQogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwor
ICAgIFdlYlBhZ2VQcm94eSogbV9pbnNwZWN0b3JQYWdlOwogCiAgICAgYm9vbCBtX2lzVmlzaWJs
ZTsKICAgICBib29sIG1faXNBdHRhY2hlZDsKLSAgICBib29sIG1faXNEZWJ1Z2dpbmdKYXZhU2Ny
aXB0OwotICAgIGJvb2wgbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQ7CisgICAgYm9vbCBtX2NhbkF0
dGFjaDsKICAgICBib29sIG1faXNQcm9maWxpbmdQYWdlOwogICAgIGJvb2wgbV9zaG93TWVzc2Fn
ZVNlbnQ7Ci0gICAgYm9vbCBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlOwogICAgIGJvb2wgbV9pZ25v
cmVGaXJzdEJyaW5nVG9Gcm9udDsKIAogICAgIC8vIFRoZSBkZWJ1Z2dlciBzdG9wcyBhbGwgdGhl
IHBhZ2VzIGluIHRoZSBzYW1lIFBhZ2VHcm91cC4gSGF2aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTZj
OTQ0ZC4uZWI3ZmE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYklu
c3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTAgKzIzLDExIEBACiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKIAogbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yUHJveHkgewotICAgIENyZWF0ZUluc3BlY3Rv
clBhZ2UoKSAtPiAodWludDY0X3QgaW5zcGVjdG9yUGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMpCi0gICAgQ3JlYXRlSW5zcGVj
dG9yUGFnZUZvclRlc3QoKSAtPiAodWludDY0X3QgaW5zcGVjdG9yUGFnZUlELCBXZWJLaXQ6Oldl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMpCisgICAgQ3Jl
YXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIGJv
b2wgY2FuQXR0YWNoLCBib29sIHVuZGVyVGVzdCkKKwogICAgIERpZENsb3NlKCkKICAgICBCcmlu
Z1RvRnJvbnQoKQorCiAgICAgSW5zcGVjdGVkVVJMQ2hhbmdlZChTdHJpbmcgdXJsU3RyaW5nKQog
CiAgICAgU2F2ZShTdHJpbmcgZmlsZW5hbWUsIFN0cmluZyBjb250ZW50LCBib29sIGJhc2U2NEVu
Y29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCkBAIC0zNSw2ICszNiw3IEBAIG1lc3NhZ2VzIC0+IFdl
Ykluc3BlY3RvclByb3h5IHsKICAgICBBdHRhY2hCb3R0b20oKQogICAgIEF0dGFjaFJpZ2h0KCkK
ICAgICBEZXRhY2goKQorCiAgICAgQXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29sIGF2YWls
YWJsZSkKIAogICAgIFNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFj
Lm1tCmluZGV4IGM2YzY2OGMuLmQ1NmU3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNiArMzgsNyBAQAogI2lt
cG9ydCAiV0tVUkxDRi5oIgogI2ltcG9ydCAiV0tWaWV3UHJpdmF0ZS5oIgogI2ltcG9ydCAiV2Vi
SW5zcGVjdG9yTWVzc2FnZXMuaCIKKyNpbXBvcnQgIldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIK
ICNpbXBvcnQgIldlYlBhZ2VHcm91cC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1w
b3J0ICJXZWJQcmVmZXJlbmNlcy5oIgpAQCAtNDE4LDcgKzQxOSw3IEBAIFdlYlBhZ2VQcm94eSog
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgICAg
ICAgICBpbml0aWFsUmVjdCA9IFtOU1dpbmRvdyBjb250ZW50UmVjdEZvckZyYW1lUmVjdDp3aW5k
b3dGcmFtZSBzdHlsZU1hc2s6d2luZG93U3R5bGVNYXNrXTsKICAgICB9CiAKLSAgICBtX2luc3Bl
Y3RvclZpZXcgPSBhZG9wdE5TKFtbV0tXZWJJbnNwZWN0b3JXS1ZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6aW5pdGlhbFJlY3QgY29udGV4dFJlZjp0b0FQSSgmcGFnZSgpLT5wcm9jZXNzKCkuY29u
dGV4dCgpKSBwYWdlR3JvdXBSZWY6dG9BUEkoaW5zcGVjdG9yUGFnZUdyb3VwKCkpIHJlbGF0ZWRU
b1BhZ2U6dG9BUEkobV9wYWdlKV0pOworICAgIG1faW5zcGVjdG9yVmlldyA9IGFkb3B0TlMoW1tX
S1dlYkluc3BlY3RvcldLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTppbml0aWFsUmVjdCBjb250
ZXh0UmVmOnRvQVBJKCZwYWdlKCktPnByb2Nlc3MoKS5jb250ZXh0KCkpIHBhZ2VHcm91cFJlZjp0
b0FQSShpbnNwZWN0b3JQYWdlR3JvdXAoKSkgcmVsYXRlZFRvUGFnZTpudWxscHRyXSk7CiAgICAg
QVNTRVJUKG1faW5zcGVjdG9yVmlldyk7CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEIDw9IDEwOTAKQEAgLTU4OSw3ICs1OTAsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYg
YwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFtjb250ZW50Q29weSB3cml0ZVRvVVJMOmFj
dHVhbFVSTCBhdG9taWNhbGx5OllFUyBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJv
cjpOVUxMXTsKIAotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBt
X2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKICAgICB9OwogCiAgICAgaWYgKCFmb3JjZVNhdmVE
aWFsb2cpIHsKQEAgLTYyMyw3ICs2MjQsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJgogICAg
IFtoYW5kbGUgd3JpdGVEYXRhOltjb250ZW50IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXV07CiAgICAgW2hhbmRsZSBjbG9zZUZpbGVdOwogCi0gICAgbV9wYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBh
YnNvbHV0ZVN0cmluZ10pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGlkQXBwZW5kKFthY3R1
YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiB9CiAK
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OndpbmRvd0ZyYW1lRGlkQ2hhbmdlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjOTBk
Nzc1Li5mMWM4NWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC00OTUsMTAgKzQ5NSwxMCBAQAogCQkxQUZFNDM2NTE4QjZDMDgx
MDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBRkU0MzYzMThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLm1t
ICovOyB9OwogCQkxQUZFNDM2NjE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRTQzNjQxOEI2QzA4
MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUuaCAqLzsgfTsKIAkJMUFGRjQ5MDAxODMzREU3ODAwOUFC
MTVBIC8qIFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUZGNDhGRTE4MzNERTc4MDA5QUIxNUEgLyogV0tEZXBy
ZWNhdGVkRnVuY3Rpb25zLmNwcCAqLzsgfTsKKwkJMUM4OTFENjUxOUIxMjRGRjAwQkE3OUREIC8q
IFdlYkluc3BlY3RvclVJLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDODkxRDYyMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAg
Ki87IH07CisJCTFDODkxRDY2MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4OTFENjMxOUIx
MjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggKi87IH07CiAJCTFDOEFFNzYxMTk5MkY2
M0EwMEFCRjZFQyAvKiBEb2NrQm90dG9tTGVnYWN5LnBkZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4QUU3NUYxOTkyRjYyRjAwQUJGNkVDIC8qIERv
Y2tCb3R0b21MZWdhY3kucGRmICovOyB9OwogCQkxQzhBRTc2MjE5OTJGNjNDMDBBQkY2RUMgLyog
RG9ja1JpZ2h0TGVnYWN5LnBkZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUM4QUU3NjAxOTkyRjYyRjAwQUJGNkVDIC8qIERvY2tSaWdodExlZ2FjeS5w
ZGYgKi87IH07Ci0JCTFDOEUyNUE4MTI3MEUzQkIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQzhFMjU2QjEyNzBERTM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQuY3BwICovOyB9OwotCQkxQzhFMjVBOTEyNzBFM0JDMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDOEUyNTZBMTI3MERFMzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudC5oICovOyB9OwogCQkxQzhFMjgyMDEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjgx
RTEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmggKi87IH07CiAJCTFDOEUyODIxMTI3
NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI4MUYxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYklu
c3BlY3Rvci5jcHAgKi87IH07CiAJCTFDOEUyODM0MTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNw
ZWN0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUM4RTI4MzIxMjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggKi87IH07
CkBAIC01MTAsOCArNTEwLDEwIEBACiAJCTFDQThCOTM2MTI3Qzc3NEUwMDU3NkMyQiAvKiBXZWJJ
bnNwZWN0b3JQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDQThCOTM1MTI3Qzc3NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1h
Yy5tbSAqLzsgfTsKIAkJMUNBOEI5NDUxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDQThCOTQzMTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTFDQThCOTQ2MTI3Qzg4MkEwMDU3NkMyQiAv
KiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0E4Qjk0NDEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVj
dG9yUHJveHlNZXNzYWdlcy5oICovOyB9OwotCQkxQ0E4Qjk1NDEyN0M4OTE1MDA1NzZDMkIgLyog
V2ViSW5zcGVjdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1hYy5tbSAq
LzsgfTsKKwkJMUNBOEI5NTQxMjdDODkxNTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclVJTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTJEQUQx
Mjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclVJTWFjLm1tICovOyB9OwogCQkxQ0I3NUM5
NDE3MDFFODgwMDA5RjgwOUYgLyogRG9ja1JpZ2h0LnBkZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCNzVDOTMxNzAxRTg4MDAwOUY4MDlGIC8qIERv
Y2tSaWdodC5wZGYgKi87IH07CisJCTFDQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNw
ZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQ0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9y
VUlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQkxQ0JCRTRBMTE5QjY2QzUzMDA2QjdEODEg
LyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUNCQkU0OUYxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3Rv
clVJTWVzc2FnZXMuaCAqLzsgfTsKIAkJMUNCQzk0NUUxNjUxNUVEMjAwRDY4QUFFIC8qIERvY2tC
b3R0b20ucGRmIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQ0JDOTQ1RDE2NTE1RUQyMDBENjhBQUUgLyogRG9ja0JvdHRvbS5wZGYgKi87IH07CiAJCTFG
MzM1QkMwMTg1Qjg0RjAwMDFBMjAxQSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGMzM1QkJG
MTg1Qjg0RDgwMDFBMjAxQSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxRjYwNEJBODE4
ODlGQTc0MDBFRTAzOTUgLyogV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUY2MDRCQTYxODg5RkE3NDAwRUUw
Mzk1IC8qIFdLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjQ3NiwxMCArMjQ3OCwxMSBAQAogCQkxQUZG
NDhGRTE4MzNERTc4MDA5QUIxNUEgLyogV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFCQjQxN0M5MTJDMDBDQ0EwMDJCRTY3QiAv
KiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUM3N0MxOTUxMjg4QTg3MjAwNkE3NDJGIC8qIFdlYkluc3BlY3RvclByb3h5Lm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5Lm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzg5MUQ2MjE5QjEyNEZGMDBC
QTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViSW5zcGVjdG9yVUkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQzg5MUQ2MzE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yVUkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUM4OTFENjQxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJ
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkluc3BlY3RvclVJLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzhBRTc1RjE5OTJGNjJGMDBB
QkY2RUMgLyogRG9ja0JvdHRvbUxlZ2FjeS5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7IG5hbWUgPSBEb2NrQm90dG9tTGVnYWN5
LnBkZjsgcGF0aCA9IFJlc291cmNlcy9Eb2NrQm90dG9tTGVnYWN5LnBkZjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUM4QUU3NjAxOTkyRjYyRjAwQUJGNkVDIC8qIERvY2tSaWdodExl
Z2FjeS5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBpbWFnZS5wZGY7IG5hbWUgPSBEb2NrUmlnaHRMZWdhY3kucGRmOyBwYXRoID0gUmVzb3VyY2Vz
L0RvY2tSaWdodExlZ2FjeS5wZGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOEUy
NTZBMTI3MERFMzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzhFMjU2QjEyNzBERTM4MDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQzhFMjgxRTEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVj
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3Rvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzhFMjgxRjEyNzVEMTU0MDBCQzdCRDAgLyog
V2ViSW5zcGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
Ykluc3BlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEUyODMyMTI3
NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjQ4OSwxMSArMjQ5MiwxMyBAQAogCQkxQzhFMkExQzEyNzc4MzNGMDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYklu
c3BlY3Rvci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RTJB
MzExMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzhFMkEzMjEyNzc4NTI0
MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3Rvck1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQw
IC8qIFdlYkluc3BlY3RvclVJTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViSW5zcGVjdG9yVUlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQThCOTM1MTI3Qzc3NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0E4Qjk0MzEyN0M4ODJBMDA1
NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0E4Qjk0NDEyN0M4ODJBMDA1
NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDQjc1QzkzMTcwMUU4ODAwMDlGODA5RiAvKiBEb2NrUmlnaHQucGRm
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2Uu
cGRmOyBuYW1lID0gRG9ja1JpZ2h0LnBkZjsgcGF0aCA9IFJlc291cmNlcy9Eb2NrUmlnaHQucGRm
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEg
LyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2Vi
SW5zcGVjdG9yVUlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
QkM5NDVEMTY1MTVFRDIwMEQ2OEFBRSAvKiBEb2NrQm90dG9tLnBkZiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBkZjsgbmFtZSA9IERvY2tC
b3R0b20ucGRmOyBwYXRoID0gUmVzb3VyY2VzL0RvY2tCb3R0b20ucGRmOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQ0M0MTdDOTEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXJD
b21wbGV0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDaGVja2Vy
Q29tcGxldGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRjAxODE2OTE4NThE
QzE1MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTU2NjMsOCArNTY2OCw2IEBACiAJCQkJQkMxQkUxREUxMkQ1NEE0
MTAwMDRBMjI4IC8qIFdlYkdlb2xvY2F0aW9uQ2xpZW50LmggKi8sCiAJCQkJQkMxMTFBNTkxMTJG
NEZCQjAwMzM3QkFCIC8qIFdlYkluc3BlY3RvckNsaWVudC5jcHAgKi8sCiAJCQkJQkMwMzJENkQx
MEY0Mzc4RDAwNThDMTVBIC8qIFdlYkluc3BlY3RvckNsaWVudC5oICovLAotCQkJCTFDOEUyNTZC
MTI3MERFMzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAgKi8sCi0J
CQkJMUM4RTI1NkExMjcwREUzODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
LmggKi8sCiAJCQkJMzEwOTk5NzExNDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNs
aWVudC5jcHAgKi8sCiAJCQkJMzEwOTk5NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNh
dGlvbkNsaWVudC5oICovLAogCQkJCTUxMjEyN0MxMTkwODIzOUEwMERBRjM1QyAvKiBXZWJQYXN0
ZWJvYXJkT3ZlcnJpZGVzLmNwcCAqLywKQEAgLTU3MjQsNiArNTcyNyw5IEBACiAJCQkJMUM4RTI4
MUYxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAgKi8sCiAJCQkJMUM4RTI4MUUx
Mjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oICovLAogCQkJCTFDOEUyQTFDMTI3Nzgz
M0YwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4gKi8sCisJCQkJMUM4OTFENjIx
OUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmNwcCAqLywKKwkJCQkxQzg5MUQ2MzE5
QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCAqLywKKwkJCQkxQzg5MUQ2NDE5QjEy
NEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4gKi8sCiAJCQkJQkM4NTdG
ODQxMkI4MkQwQjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCAqLywK
IAkJCQlCQzg1N0Y4MzEyQjgyRDBCMDBFREVCMkUgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXIuaCAqLywKIAkJCQlCQzk2M0Q2QTExM0REMTkyMDA1NzRCRTIgLyogV2ViUGFnZS5jcHAgKi8s
CkBAIC02NDcyLDcgKzY0NzgsNyBAQAogCQkJCTUxOTJENTc1MTk2MUZEMDMwMENEMTlBQSAvKiBT
ZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tICovLAogCQkJCTFBQUYyNjM3MTQ2ODdDMzkwMDRB
MUU4QSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oICovLAogCQkJCTFBQUYyNjM2
MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSAqLywK
LQkJCQkxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWFjLm1tICovLAor
CQkJCTFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSAqLywK
IAkJCQlCQzk2M0Q2RDExM0REMUE1MDA1NzRCRTIgLyogV2ViUGFnZU1hYy5tbSAqLywKIAkJCQky
OUNENTVBODEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJh
c2UuaCAqLywKIAkJCQkyOUNENTVBOTEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdEJhc2UubW0gKi8sCkBAIC02ODI4LDYgKzY4MzQsOCBAQAogCQkJCTFDOEUy
QTMyMTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlcy5oICovLAogCQkJCTFD
QThCOTQzMTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8sCiAJCQkJMUNBOEI5NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclBy
b3h5TWVzc2FnZXMuaCAqLywKKwkJCQkxQ0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5z
cGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTFDQkJFNDlGMTlCNjZDNTMwMDZC
N0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggKi8sCiAJCQkJMzNEM0EzQzQxMzM5NjE3
OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywK
IAkJCQkzM0QzQTNDNTEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJNZXNz
YWdlcy5oICovLAogCQkJCTMzRDNBM0M2MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hl
TWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTc0NDAsNiArNzQ0OCw3IEBA
CiAJCQkJMkRBQ0U2NEUxOEFEQkZGMDAwRTRDQTc2IC8qIF9XS1RodW1ibmFpbFZpZXdJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1NzhCODMxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2QTI1RkREMTJBREM2Q0MwMERDNDBDQyAvKiBXZWJE
YXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTFDODkxRDY2MTlCMTI0RkYwMEJB
NzlERCAvKiBXZWJJbnNwZWN0b3JVSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYyQTc2QjcxMkIx
QjI1RjAwMDVGMUI2IC8qIFdlYkRhdGFiYXNlTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNjJBNzY1RDEyQjFBQkMzMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJv
eHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENkFCNTQxMTkyQjFDNEEwMDNBOUZEMSAvKiBXS1BE
RlBhZ2VOdW1iZXJJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtNzQ5Niw3ICs3NTA1LDYg
QEAKIAkJCQkxQzhFMjgyMDEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTNDQzE2NzE4OTA2QUNGMDAxRTZFRDggLyogV0tXZWJWaWV3LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzAzMkQ4MjEwRjQzNzhEMDA1OEMxNUEgLyogV2ViSW5zcGVjdG9y
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQkxQzhFMjVBOTEyNzBFM0JDMDBCQzdCRDAgLyog
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyQTM2
MTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUM4RTI4MzQxMjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9y
UHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03NzY0LDYgKzc3NzIsNyBAQAogCQkJ
CUY2MzQ0NDVEMTJBODg1RTkwMDA2MTJEOCAvKiBXS1NlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUFGMDhCODE5MjY5RTZEMDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjA0MTI0RkYwMjcwMDY4
RjIwQSAvKiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUNC
QkU0QTExOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQ0I0RTRDMThCQkUwNDQwMDBGQ0ZDOSAvKiBXS0NvbnRlbnRWaWV3Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzN0E2NEU1NzE4RjM4RjQ2MDBFQjMwRjEgLyogX1dLRm9ybUlu
cHV0U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUY2MDRCQUExODg5RkJCODAwRUUwMzk1
IC8qIFdLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBA
IC04ODgyLDYgKzg4OTEsNyBAQAogCQkJCTAwQjk2NjE5MThFMjVBRTEwMENFMUY4OCAvKiBGaW5k
Q2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFNUI3RkIxMUU3QUVEMjAwQkE2NzY3IC8q
IE5ldHNjYXBlUGx1Z2luTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MzNjFENzIxOTI3RkEz
NjAwMzZBNTlEIC8qIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTFDODkxRDY1MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQTRBOUM1NTEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5N
b2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDOUExMkI4MjFDRDAwOEZFOTg0IC8q
IE5ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBNTg4OTMx
MUVFNzA0MDAwNjFCODgyIC8qIE5ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtODkyMCw2ICs4OTMwLDcgQEAKIAkJCQkxQTJEODQzOTEyN0Y2NUQ1MDAxRUI5NjIgLyog
TlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUFBRjA4QUQxOTI2OTM2NzAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJEODJBNjEyN0Y0RUFCMDAxRUI5NjIgLyogTlBP
YmplY3RQcm94eS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQ0JCRTRBMDE5QjY2QzUzMDA2QjdE
ODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUEyRDgyQTgxMjdGNEVBQjAwMUVCOTYyIC8qIE5QUmVtb3RlT2JqZWN0TWFwLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBMjE2MUIxMTFGMzc2NjQwMDhBRDBGNSAvKiBOUFJ1bnRpbWVPYmpl
Y3RNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyMTYyQjAxMUYzODk3MTAwOEFEMEY1IC8q
IE5QUnVudGltZVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkxNzksOCArOTE5MCw3
IEBACiAJCQkJQkNDRjZBQkMxMkM5MUVGOTAwOEY5QzM1IC8qIFdlYkltYWdlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFDOEUyODIxMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFBNjAxMTJGNEZCQjAwMzM3QkFCIC8qIFdlYkluc3Bl
Y3RvckNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxQzhFMjVBODEyNzBFM0JCMDBCQzdC
RDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
MUNBOEI5NTQxMjdDODkxNTAwNTc2QzJCIC8qIFdlYkluc3BlY3Rvck1hYy5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTFDQThCOTU0MTI3Qzg5MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JVSU1hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTFDOEUyQTM1MTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNw
ZWN0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4RTI4MzUxMjc1
RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFDQThCOTM2MTI3Qzc3NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDUwMWQ0MWMuLjg1
OTM1OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0LDIwICs4NCwyMSBAQCB2
b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKIAogV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0
b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyKQogewotICAgIFdlYlBh
Z2UqIGluc3BlY3RvclBhZ2UgPSBjb250cm9sbGVyLT5pc1VuZGVyVGVzdCgpID8gbV9wYWdlLT5p
bnNwZWN0b3IoKS0+Y3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QoKSA6IG1fcGFnZS0+aW5zcGVj
dG9yKCktPmNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKLSAgICBBU1NFUlRfVU5VU0VEKGluc3BlY3Rv
clBhZ2UsIGluc3BlY3RvclBhZ2UpOwotICAgIHJldHVybiB0aGlzOworICAgIG1fcGFnZS0+aW5z
cGVjdG9yKCktPmNyZWF0ZUluc3BlY3RvclBhZ2UoY29udHJvbGxlci0+aXNVbmRlclRlc3QoKSk7
CisKKyAgICByZXR1cm4gbV9wYWdlLT5pbnNwZWN0b3IoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0
b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQogewogICAgIGlmIChtX3BhZ2UtPmlu
c3BlY3RvcigpKQotICAgICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5kaWRDbG9zZSgpOworICAg
ICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5jbG9zZUZyb250ZW5kKCk7CiB9CiAKIHZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpicmluZ0Zyb250ZW5kVG9Gcm9udCgpCiB7Ci0gICAgbV9wYWdlLT5p
bnNwZWN0b3IoKS0+YnJpbmdUb0Zyb250KCk7CisgICAgaWYgKG1fcGFnZS0+aW5zcGVjdG9yKCkp
CisgICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmJyaW5nVG9Gcm9udCgpOwogfQogCiB2b2lk
IFdlYkluc3BlY3RvckNsaWVudDo6ZGlkUmVzaXplTWFpbkZyYW1lKEZyYW1lKikKQEAgLTE5Nywz
NCArMTk4LDYgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5v
ZGUoYm9vbCBlbmFibGVkKQogfQogI2VuZGlmCiAKLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50Ojpz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIFdlYklu
c3BlY3RvciogaW5zcGVjdG9yID0gbV9wYWdlLT5pbnNwZWN0b3IoKTsKLSAgICBpZiAoIWluc3Bl
Y3RvcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJW
RVIpCi0gICAgaWYgKGluc3BlY3Rvci0+aGFzUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKSkgewot
ICAgICAgICBpbnNwZWN0b3ItPnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChtZXNzYWdlKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBXZWJQYWdlKiBpbnNw
ZWN0b3JQYWdlID0gaW5zcGVjdG9yLT5pbnNwZWN0b3JQYWdlKCk7Ci0gICAgaWYgKGluc3BlY3Rv
clBhZ2UpCi0gICAgICAgIHJldHVybiBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKGlu
c3BlY3RvclBhZ2UtPmNvcmVQYWdlKCksIG1lc3NhZ2UpOwotCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6c3VwcG9ydHNGcmFtZUluc3RydW1lbnRhdGlv
bigpCi17Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIHJldHVybiB0cnVlOwot
I2VuZGlmCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6
cGFnZU92ZXJsYXlEZXN0cm95ZWQoUGFnZU92ZXJsYXkqKQogewogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmgKaW5kZXggNzAzM2JkZS4uNzk4Y2FjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5oCkBAIC00NSwyMiArNDUsMjMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdl
OwogY2xhc3MgUmVwYWludEluZGljYXRvckxheWVyQ2xpZW50OwogCi1jbGFzcyBXZWJJbnNwZWN0
b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLCBwcml2YXRlIFBhZ2VPdmVybGF5OjpDbGllbnQg
eworY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNs
aWVudCwgcHJpdmF0ZSBQYWdlT3ZlcmxheTo6Q2xpZW50IHsKIGZyaWVuZCBjbGFzcyBSZXBhaW50
SW5kaWNhdG9yTGF5ZXJDbGllbnQ7CiBwdWJsaWM6CiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50KFdl
YlBhZ2UqKTsKICAgICB2aXJ0dWFsIH5XZWJJbnNwZWN0b3JDbGllbnQoKTsKIAogcHJpdmF0ZToK
LSAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAgLy8g
V2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50CisgICAgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5z
cGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlc2l6ZU1haW5GcmFtZShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOworICAg
IFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5k
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3Nl
SW5zcGVjdG9yRnJvbnRlbmQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zy
b250KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZXNpemVNYWluRnJhbWUoV2ViQ29yZTo6RnJh
bWUqKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpIG92ZXJyaWRlOworICAgIHZvaWQgaGln
aGxpZ2h0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgb3ZlcnJpZGU7CiAK
ICNpZiBQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCB2b2lkIHNob3dJbnNwZWN0b3JJbmRpY2F0
aW9uKCkgb3ZlcnJpZGU7CkBAIC03MiwxMCArNzMsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBvdmVycmlkZXNTaG93UGFpbnRSZWN0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BhaW50UmVjdChjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRl
bmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNG
cmFtZUluc3RydW1lbnRhdGlvbigpOwotCiAgICAgLy8gUGFnZU92ZXJsYXk6OkNsaWVudAogICAg
IHZpcnR1YWwgdm9pZCBwYWdlT3ZlcmxheURlc3Ryb3llZChQYWdlT3ZlcmxheSopIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBh
Z2UqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0M2RhZTEuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudC5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLQotI2luY2x1ZGUgIldlYkluc3BlY3Rv
ci5oIgotI2luY2x1ZGUgIldlYlBhZ2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNv
bnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDxpbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlBh
Z2UqIHBhZ2UsIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsKCZwYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGlu
c3BlY3RvclBhZ2UtPmNvcmVQYWdlKCksIHN0ZDo6bWFrZV91bmlxdWU8U2V0dGluZ3M+KCkpCi0g
ICAgLCBtX3BhZ2UocGFnZSkKLXsKLX0KLQotU3RyaW5nIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50Ojpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkKLXsKLSAgICByZXR1cm4gbV9wYWdlLT5pbnNwZWN0
b3IoKS0+bG9jYWxpemVkU3RyaW5nc1VSTCgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpicmluZ1RvRnJvbnQoKQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmJy
aW5nVG9Gcm9udCgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjbG9z
ZVdpbmRvdygpCi17Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNv
bjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5kaWRDbG9z
ZSgpOwotfQotCi1ib29sIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjYW5TYXZlKCkKLXsK
LSAgICByZXR1cm4gbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y2FuU2F2ZSgpOwotfQotCi12b2lkIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFz
KQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJh
c2U2NEVuY29kZWQsIGZvcmNlU2F2ZUFzKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29u
dGVudCkKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5hcHBlbmQoZmlsZW5hbWUsIGNvbnRl
bnQpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3co
RG9ja1NpZGUgZG9ja1NpZGUpCi17Ci0gICAgc3dpdGNoIChkb2NrU2lkZSkgewotICAgIGNhc2Ug
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpVbmRvY2tlZDoKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpCb3R0b206Ci0gICAgICAgIG1fcGFnZS0+aW5zcGVjdG9y
KCktPmF0dGFjaEJvdHRvbSgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3RvckZy
b250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6UmlnaHQ6Ci0gICAgICAgIG1fcGFnZS0+aW5zcGVjdG9y
KCktPmF0dGFjaFJpZ2h0KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGV0YWNoV2luZG93KCkKLXsKLSAgICBtX3BhZ2UtPmlu
c3BlY3RvcigpLT5kZXRhY2goKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDo6c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQotewotICAgIG1fcGFn
ZS0+aW5zcGVjdG9yKCktPnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCk7Ci19Ci0KLXZv
aWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93V2lkdGgodW5z
aWduZWQgd2lkdGgpCi17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+c2V0QXR0YWNoZWRXaW5k
b3dXaWR0aCh3aWR0aCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNl
dFRvb2xiYXJIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9y
KCktPnNldFRvb2xiYXJIZWlnaHQoaGVpZ2h0KTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykK
LXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5pbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmlu
Zyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzM3N2VmNS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgK
KysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudF9oCi0jZGVmaW5lIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50X2gKLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNz
IFdlYlBhZ2U7Ci0KLWNsYXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50IDogcHVibGljIFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwgewotcHVibGljOgotICAgIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlBhZ2UqIHBhZ2UsIFdlYlBhZ2UqIGluc3BlY3RvclBh
Z2UpOwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwo
KSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBicmluZ1RvRnJvbnQoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3coKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwg
Ym9vbCBjYW5TYXZlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmUoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFz
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhEb2Nr
U2lkZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpIG92ZXJyaWRl
OwotCi0gICAgdmlydHVhbCB2b2lkIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25l
ZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQp
IG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7Ci0KLSAgICBXZWJQYWdlKiBtX3BhZ2U7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCi0KLSNlbmRpZiAv
LyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IDU2MTI5N2EuLjVjNjQ0NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNywxMTcgKzI3LDc0IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yLmgiCiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQorCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKLSNpbmNsdWRlICJX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgorI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVk
ZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZFJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0luc3BlY3RvclBhZ2VBZ2VudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZy
YW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaD4KLSNpbmNsdWRlIDxiaW5kaW5n
cy9TY3JpcHRWYWx1ZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAorc3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1BdHRhY2hlZEhlaWdodCA9IDI1
MDsKK3N0YXRpYyBjb25zdCBmbG9hdCBtYXhpbXVtQXR0YWNoZWRIZWlnaHRSYXRpbyA9IDAuNzU7
CitzdGF0aWMgY29uc3QgZmxvYXQgbWluaW11bUF0dGFjaGVkV2lkdGggPSA3NTA7CisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gV2ViSW5zcGVjdG9yOjpj
cmVhdGUoV2ViUGFnZSogcGFnZSwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENo
YW5uZWwpCitQYXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gV2ViSW5zcGVjdG9yOjpjcmVhdGUoV2Vi
UGFnZSogcGFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvcihwYWdl
LCBmcm9udGVuZENoYW5uZWwpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3Rv
cihwYWdlKSk7CiB9CiAKLVdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlBhZ2UqIHBhZ2Us
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQorV2ViSW5zcGVjdG9y
OjpXZWJJbnNwZWN0b3IoV2ViUGFnZSogcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQotICAgICwg
bV9pbnNwZWN0b3JQYWdlKG51bGxwdHIpCi0gICAgLCBtX2Zyb250ZW5kQ2xpZW50KG51bGxwdHIp
Ci0gICAgLCBtX2Zyb250ZW5kQ2hhbm5lbChmcm9udGVuZENoYW5uZWwpCi0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgLCBtX2hhc0xvY2FsaXplZFN0cmluZ3NVUkwoZmFsc2UpCi0jZW5kaWYKLSNp
ZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAgICAsIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0
ZWQoZmFsc2UpCi0jZW5kaWYKKyAgICAsIG1fYXR0YWNoZWQoZmFsc2UpCisgICAgLCBtX3ByZXZp
b3VzQ2FuQXR0YWNoKGZhbHNlKQogewogfQogCiAvLyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JD
bGllbnQKLVdlYlBhZ2UqIFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zcGVjdG9yUGFnZSgpCit2b2lk
IFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zcGVjdG9yUGFnZShib29sIHVuZGVyVGVzdCkKIHsKICAg
ICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBBU1NFUlQoIW1f
aW5zcGVjdG9yUGFnZSk7Ci0gICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2xpZW50KTsKLQotICAgIHVp
bnQ2NF90IGluc3BlY3RvclBhZ2VJRCA9IDA7Ci0gICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzOwotCi0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNy
ZWF0ZUluc3BlY3RvclBhZ2UoKSwKLSAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6Q3JlYXRlSW5zcGVjdG9yUGFnZTo6UmVwbHkoaW5zcGVjdG9yUGFnZUlELCBwYXJhbWV0
ZXJzKSwKLSAgICAgICAgICAgIG1fcGFnZS0+cGFnZUlEKCksIHN0ZDo6Y2hyb25vOjptaWxsaXNl
Y29uZHM6Om1heCgpKSkgewotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgICAg
IHJldHVybjsKIAotICAgIGlmICghaW5zcGVjdG9yUGFnZUlEKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyNpZiBPUyhEQVJXSU4pCisgICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKKyAg
ICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JF
Q0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKIAotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNyZWF0
ZVdlYlBhZ2UoaW5zcGVjdG9yUGFnZUlELCBwYXJhbWV0ZXJzKTsKLSAgICBtX2luc3BlY3RvclBh
Z2UgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJQYWdlKGluc3BlY3RvclBhZ2VJRCk7Ci0gICAg
QVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24gPSBJUEM6
OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVu
dGlmaWVyKGxpc3RlbmluZ1BvcnQpLCB0aGlzLCBSdW5Mb29wOjptYWluKCkpOworICAgIG1fZnJv
bnRlbmRDb25uZWN0aW9uLT5vcGVuKCk7CiAKLSAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9wYWdlLCBtX2luc3Bl
Y3RvclBhZ2UpOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBmcm9udGVuZENsaWVudC5nZXQoKTsK
LSAgICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5z
ZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChXVEY6Om1vdmUoZnJvbnRlbmRDbGllbnQpKTsKLSAg
ICByZXR1cm4gbV9pbnNwZWN0b3JQYWdlOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpD
cmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudChsaXN0ZW5pbmdQb3J0LCBNQUNIX01T
R19UWVBFX01BS0VfU0VORCksIGNhbkF0dGFjaFdpbmRvdygpLCB1bmRlclRlc3QpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyNlbmRpZgogfQogCi1X
ZWJQYWdlKiBXZWJJbnNwZWN0b3I6OmNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KCkKK3ZvaWQg
V2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kKCkKIHsKLSAgICBpZiAoIW1fcGFnZSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBBU1NFUlQoIW1faW5zcGVjdG9yUGFnZSk7Ci0gICAg
QVNTRVJUKCFtX2Zyb250ZW5kQ2xpZW50KTsKLQotICAgIHVpbnQ2NF90IGluc3BlY3RvclBhZ2VJ
RCA9IDA7Ci0gICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0gICAg
aWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2VGb3JU
ZXN0KCksCi0gICAgICAgICAgICBNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUlu
c3BlY3RvclBhZ2VGb3JUZXN0OjpSZXBseShpbnNwZWN0b3JQYWdlSUQsIHBhcmFtZXRlcnMpLAot
ICAgICAgICAgICAgbV9wYWdlLT5wYWdlSUQoKSwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kczo6
bWF4KCkpKSB7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGlmICghaW5z
cGVjdG9yUGFnZUlEKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLmNyZWF0ZVdlYlBhZ2UoaW5zcGVjdG9yUGFnZUlELCBwYXJhbWV0ZXJzKTsKLSAg
ICBtX2luc3BlY3RvclBhZ2UgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJQYWdlKGluc3BlY3Rv
clBhZ2VJRCk7Ci0gICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7Ci0KLSAgICBhdXRvIGZyb250
ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4o
bV9wYWdlLCBtX2luc3BlY3RvclBhZ2UpOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBmcm9udGVu
ZENsaWVudC5nZXQoKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChXVEY6Om1vdmUoZnJvbnRl
bmRDbGllbnQpKTsKLSAgICByZXR1cm4gbV9pbnNwZWN0b3JQYWdlOwotfQorICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIAotdm9pZCBX
ZWJJbnNwZWN0b3I6OmRlc3Ryb3lJbnNwZWN0b3JQYWdlKCkKLXsKLSAgICBtX2luc3BlY3RvclBh
Z2UgPSBudWxscHRyOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBudWxscHRyOwotICAgIG1fZnJv
bnRlbmRDaGFubmVsID0gbnVsbHB0cjsKLX0KKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+aW52
YWxpZGF0ZSgpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uID0gbnVsbHB0cjsKIAotLy8gQ2Fs
bGVkIGZyb20gV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQKLXZvaWQgV2ViSW5zcGVjdG9yOjpk
aWRDbG9zZSgpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCksIG1f
cGFnZS0+cGFnZUlEKCkpOwotICAgIGRlc3Ryb3lJbnNwZWN0b3JQYWdlKCk7CisgICAgbV9hdHRh
Y2hlZCA9IGZhbHNlOworICAgIG1fcHJldmlvdXNDYW5BdHRhY2ggPSBmYWxzZTsKIH0KIAogdm9p
ZCBXZWJJbnNwZWN0b3I6OmJyaW5nVG9Gcm9udCgpCkBAIC0xNDUsNTEgKzEwMiw2IEBAIHZvaWQg
V2ViSW5zcGVjdG9yOjpicmluZ1RvRnJvbnQoKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpCcmluZ1RvRnJvbnQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVj
dG9yOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQotewotICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyks
IG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6c2F2ZShjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2Rl
ZCwgYm9vbCBmb3JjZVNhdmVBcykKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2F2
ZShmaWxlbmFtZSwgY29udGVudCwgYmFzZTY0RW5jb2RlZCwgZm9yY2VTYXZlQXMpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OmFwcGVuZChjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OkFwcGVuZChmaWxlbmFtZSwgY29udGVudCksIG1fcGFnZS0+cGFnZUlEKCkpOwot
fQotCi12b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNoQm90dG9tKCkKLXsKLSAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JQcm94eTo6QXR0YWNoQm90dG9tKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12
b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNoUmlnaHQoKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjpBdHRhY2hSaWdodCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJ
bnNwZWN0b3I6OmRldGFjaCgpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRldGFj
aCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OnNldEF0dGFj
aGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVpZ2h0KSwgbV9wYWdlLT5wYWdlSUQo
KSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2ln
bmVkIHdpZHRoKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdp
bmRvd1dpZHRoKHdpZHRoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVj
dG9yOjpzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKLXsKLSAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JQcm94eTo6U2V0VG9vbGJhckhlaWdodChoZWlnaHQpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKLX0KLQogLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvciBtZXNzYWdlcwogdm9pZCBXZWJJbnNw
ZWN0b3I6OnNob3coKQogewpAQCAtMjAxLDM0ICsxMTMsMTcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6
OmNsb3NlKCkKICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5j
bG9zZSgpOwogfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6ZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVy
bCkKLXsKLSAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKLSAgICBtX2luc3BlY3RvclBhZ2Ut
PmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQobWFrZVN0cmlu
ZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIiLCB1cmwsICJcIikiKSk7Ci19Ci0K
LXZvaWQgV2ViSW5zcGVjdG9yOjpkaWRBcHBlbmQoY29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAg
QVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgp
LT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KG1ha2VTdHJpbmcoIkluc3BlY3Rv
ckZyb250ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIiLCB1cmwsICJcIikiKSk7Ci19Ci0KLXZvaWQg
V2ViSW5zcGVjdG9yOjphdHRhY2hlZEJvdHRvbSgpCit2b2lkIFdlYkluc3BlY3Rvcjo6b3Blbklu
TmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewotICAgIGlmIChtX2Zyb250ZW5kQ2xp
ZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRBdHRhY2hlZFdpbmRvdyhJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU6OkJvdHRvbSk7Ci19CisgICAgUGFnZSogaW5zcGVj
dGVkUGFnZSA9IG1fcGFnZS0+Y29yZVBhZ2UoKTsKKyAgICBGcmFtZSYgaW5zcGVjdGVkTWFpbkZy
YW1lID0gaW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCk7CisgICAgRnJhbWVMb2FkUmVxdWVzdCBy
ZXF1ZXN0KGluc3BlY3RlZE1haW5GcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBS
ZXNvdXJjZVJlcXVlc3QodXJsU3RyaW5nKSwgIl9ibGFuayIpOwogCi12b2lkIFdlYkluc3BlY3Rv
cjo6YXR0YWNoZWRSaWdodCgpCi17Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAg
IG1fZnJvbnRlbmRDbGllbnQtPnNldEF0dGFjaGVkV2luZG93KEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50OjpEb2NrU2lkZTo6UmlnaHQpOwotfQorICAgIFBhZ2UqIG5ld1BhZ2UgPSBpbnNwZWN0ZWRQ
YWdlLT5jaHJvbWUoKS5jcmVhdGVXaW5kb3coJmluc3BlY3RlZE1haW5GcmFtZSwgcmVxdWVzdCwg
V2luZG93RmVhdHVyZXMoKSwgTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpLCBOYXZpZ2F0aW9uVHlwZUxpbmtDbGlja2VkKSk7CisgICAgaWYgKCFuZXdQYWdlKQorICAg
ICAgICByZXR1cm47CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpkZXRhY2hlZCgpCi17Ci0gICAgaWYg
KG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldEF0dGFjaGVk
V2luZG93KEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6VW5kb2NrZWQpOworICAg
IG5ld1BhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmxvYWQocmVxdWVzdCk7CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yOjpldmFsdWF0ZVNjcmlwdEZvclRlc3QoY29uc3QgU3RyaW5nJiBzY3JpcHQp
CkBAIC0yMzksMTA4ICsxMzQsOTQgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OmV2YWx1YXRlU2NyaXB0
Rm9yVGVzdChjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHZvaWQgV2ViSW5zcGVjdG9yOjpzaG93Q29u
c29sZSgpCiB7CiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCku
c2hvdygpOwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xp
ZW50LT5zaG93Q29uc29sZSgpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6U2hvd0NvbnNvbGUoKSwgMCk7CiB9CiAKIHZvaWQgV2ViSW5z
cGVjdG9yOjpzaG93UmVzb3VyY2VzKCkKIHsKICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAg
ICAgIG1fZnJvbnRlbmRDbGllbnQtPnNob3dSZXNvdXJjZXMoKTsKKyAgICBtX2Zyb250ZW5kQ29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNob3dSZXNvdXJjZXMoKSwg
MCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpzaG93TWFpblJlc291cmNlRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJZGVudGlmaWVyKQogewotICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdl
YlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpOworICAgIFdlYkZyYW1lKiBmcmFt
ZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSWRlbnRpZmllcik7CiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5p
bnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQot
ICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUt
PmNvcmVGcmFtZSgpKTsKLX0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OnN0YXJ0SmF2YVNjcmlwdERl
YnVnZ2luZygpCi17Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCkuc2hvdygpOwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5k
Q2xpZW50LT5zZXREZWJ1Z2dpbmdFbmFibGVkKHRydWUpOworICAgIFN0cmluZyBpbnNwZWN0b3JG
cmFtZUlkZW50aWZpZXIgPSBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIo
KS5wYWdlQWdlbnQoKS0+ZnJhbWVJZChmcmFtZS0+Y29yZUZyYW1lKCkpOworICAgIG1fZnJvbnRl
bmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2hvd01haW5SZXNv
dXJjZUZvckZyYW1lKGluc3BlY3RvckZyYW1lSWRlbnRpZmllciksIDApOwogfQogCi12b2lkIFdl
Ykluc3BlY3Rvcjo6c3RvcEphdmFTY3JpcHREZWJ1Z2dpbmcoKQordm9pZCBXZWJJbnNwZWN0b3I6
OnN0YXJ0UGFnZVByb2ZpbGluZygpCiB7CiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAg
ICBtX2Zyb250ZW5kQ2xpZW50LT5zZXREZWJ1Z2dpbmdFbmFibGVkKGZhbHNlKTsKLX0KLQotdm9p
ZCBXZWJJbnNwZWN0b3I6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wpCi17Ci0g
ICAgLy8gTm8gbG9uZ2VyIHN1cHBvcnRlZC4KKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlN0YXJ0UGFnZVByb2ZpbGluZygpLCAwKTsKIH0K
IAotdm9pZCBXZWJJbnNwZWN0b3I6OnN0YXJ0SmF2YVNjcmlwdFByb2ZpbGluZygpCit2b2lkIFdl
Ykluc3BlY3Rvcjo6c3RvcFBhZ2VQcm9maWxpbmcoKQogewotICAgIC8vIE5vIGxvbmdlciBzdXBw
b3J0ZWQuCisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hv
dygpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JVSTo6U3RvcFBhZ2VQcm9maWxpbmcoKSwgMCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpz
dG9wSmF2YVNjcmlwdFByb2ZpbGluZygpCitib29sIFdlYkluc3BlY3Rvcjo6Y2FuQXR0YWNoV2lu
ZG93KCkKIHsKLSAgICAvLyBObyBsb25nZXIgc3VwcG9ydGVkLgotfQorICAgIC8vIERvbid0IGFs
bG93IGF0dGFjaGluZyB0byBhbm90aGVyIGluc3BlY3RvciAtLSB0d28gaW5zcGVjdG9ycyBpbiBv
bmUgd2luZG93IGlzIHRvbyBtdWNoIQorICAgIGlmIChtX3BhZ2UtPmlzSW5zcGVjdG9yUGFnZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpzdGFydFBhZ2VQ
cm9maWxpbmcoKQotewotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVu
ZENsaWVudC0+c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKHRydWUpOwotfQorICAgIC8vIElm
IHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCBhbGxvdyBhdHRhY2hpbmcgYWdhaW4gdG8gYWxsb3cg
c3dpdGNoaW5nIHNpZGVzLgorICAgIGlmIChtX2F0dGFjaGVkKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotdm9pZCBXZWJJbnNwZWN0b3I6OnN0b3BQYWdlUHJvZmlsaW5nKCkKLXsKLSAgICBtX3Bh
Z2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1f
ZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldFRpbWVsaW5lUHJv
ZmlsaW5nRW5hYmxlZChmYWxzZSk7CisgICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGF0dGFjaCBpZiB0
aGUgd2luZG93IHdvdWxkIGJlIHRvbyBzbWFsbCB0byBhY2NvbW1vZGF0ZSB0aGUgbWluaW11bSBp
bnNwZWN0b3Igc2l6ZS4KKyAgICB1bnNpZ25lZCBpbnNwZWN0ZWRQYWdlSGVpZ2h0ID0gbV9wYWdl
LT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPnZpc2libGVIZWlnaHQoKTsKKyAgICB1
bnNpZ25lZCBpbnNwZWN0ZWRQYWdlV2lkdGggPSBtX3BhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFt
ZSgpLnZpZXcoKS0+dmlzaWJsZVdpZHRoKCk7CisgICAgdW5zaWduZWQgbWF4aW11bUF0dGFjaGVk
SGVpZ2h0ID0gaW5zcGVjdGVkUGFnZUhlaWdodCAqIG1heGltdW1BdHRhY2hlZEhlaWdodFJhdGlv
OworICAgIHJldHVybiBtaW5pbXVtQXR0YWNoZWRIZWlnaHQgPD0gbWF4aW11bUF0dGFjaGVkSGVp
Z2h0ICYmIG1pbmltdW1BdHRhY2hlZFdpZHRoIDw9IGluc3BlY3RlZFBhZ2VXaWR0aDsKIH0KIAog
dm9pZCBXZWJJbnNwZWN0b3I6OnVwZGF0ZURvY2tpbmdBdmFpbGFiaWxpdHkoKQogewotICAgIGlm
ICghbV9mcm9udGVuZENsaWVudCkKKyAgICBpZiAobV9hdHRhY2hlZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYm9vbCBjYW5BdHRhY2hXaW5kb3cgPSB0aGlzLT5jYW5BdHRhY2hXaW5kb3coKTsK
KyAgICBpZiAobV9wcmV2aW91c0NhbkF0dGFjaCA9PSBjYW5BdHRhY2hXaW5kb3cpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGJvb2wgY2FuQXR0YWNoV2luZG93ID0gbV9mcm9udGVuZENsaWVudC0+
Y2FuQXR0YWNoV2luZG93KCk7CisgICAgbV9wcmV2aW91c0NhbkF0dGFjaCA9IGNhbkF0dGFjaFdp
bmRvdzsKKwogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hBdmFpbGFiaWxpdHlD
aGFuZ2VkKGNhbkF0dGFjaFdpbmRvdyksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAgIG1fZnJvbnRl
bmRDbGllbnQtPnNldERvY2tpbmdVbmF2YWlsYWJsZSghY2FuQXR0YWNoV2luZG93KTsKIH0KIAot
I2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotdm9pZCBXZWJJbnNwZWN0b3I6OnNlbmRNZXNz
YWdlVG9SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIFdlYkluc3Bl
Y3Rvcjo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAg
IEFTU0VSVChtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKTsKLSAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JQcm94eTo6U2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5k
aXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVj
dG9yOjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQorYm9vbCBXZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkuZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOworI2lmICFFTkFCTEUo
SU5TUEVDVE9SX1NFUlZFUikKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKSwgMCk7Cisj
ZWxzZQorICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZW5kTWVzc2FnZVRvUmVtb3RlRnJv
bnRlbmQobWVzc2FnZSksIG1fcGFnZS0+cGFnZUlEKCkpOworI2VuZGlmCisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKIHZvaWQgV2ViSW5zcGVjdG9y
OjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpCiB7Ci0gICAgQVNTRVJUKCFtX3JlbW90ZUZyb250
ZW5kQ29ubmVjdGVkKTsKLSAgICAvLyBTd2l0Y2hpbmcgYmV0d2VlbiBpbi1wcm9jZXNzIGFuZCBy
ZW1vdGUgaW5zcGVjdG9ycyBpc24ndCBzdXBwb3J0ZWQgeWV0LgotICAgIEFTU0VSVCghbV9pbnNw
ZWN0b3JQYWdlKTsKLSAgICAKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKS5jb25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENoYW5uZWwpOwotICAgIG1fcmVtb3Rl
RnJvbnRlbmRDb25uZWN0ZWQgPSB0cnVlOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZCh0aGlzKTsKIH0KIAogdm9pZCBXZWJJbnNw
ZWN0b3I6OnJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKIHsKLSAgICBBU1NFUlQobV9yZW1v
dGVGcm9udGVuZENvbm5lY3RlZCk7CiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29u
bmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKLSAgICBtX3JlbW90ZUZyb250ZW5kQ29u
bmVjdGVkID0gZmFsc2U7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCmluZGV4IGM5M2JjYjMuLjNjMTliOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMw
LDEwNiArMzAsODAgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0luc3BlY3RvckZvcndhcmRpbmcuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNs
YXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3Mg
V2ViSW5zcGVjdG9yIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
QnVuZGxlSW5zcGVjdG9yPiB7CitjbGFzcyBXZWJJbnNwZWN0b3IgOiBwdWJsaWMgQVBJOjpPYmpl
Y3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVJbnNwZWN0b3I+LCBwdWJsaWMgSVBDOjpD
b25uZWN0aW9uOjpDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gY3JlYXRl
KFdlYlBhZ2UqLCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJJbnNwZWN0b3I+IGNyZWF0ZShXZWJQYWdlKik7CiAKICAgICBXZWJQ
YWdlKiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9Ci0gICAgV2ViUGFnZSogaW5zcGVj
dG9yUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yUGFnZTsgfQorCisgICAgdm9pZCB1
cGRhdGVEb2NraW5nQXZhaWxhYmlsaXR5KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBJ
bXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcAot
ICAgIHZvaWQgZGlkUmVjZWl2ZVdlYkluc3BlY3Rvck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwg
SVBDOjpNZXNzYWdlRGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOworCisgICAgLy8gSVBDOjpDb25uZWN0
aW9uOjpDbGllbnQKKyAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiopIHsgY2xvc2Uo
KTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbios
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VOYW1lKSB7IGNsb3NlKCk7IH0KIAogICAgIC8vIENhbGxlZCBieSBXZWJJ
bnNwZWN0b3IgbWVzc2FnZXMKKyAgICB2b2lkIGNvbm5lY3Rpb25Fc3RhYmxpc2hlZCgpOworCiAg
ICAgdm9pZCBzaG93KCk7CiAgICAgdm9pZCBjbG9zZSgpOwogCi0gICAgdm9pZCBkaWRTYXZlKGNv
bnN0IFN0cmluZyYgdXJsKTsKLSAgICB2b2lkIGRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCk7
CisgICAgdm9pZCBvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOworCisgICAg
dm9pZCBjYW5BdHRhY2hXaW5kb3coYm9vbCYgcmVzdWx0KTsKKworICAgIHZvaWQgc2hvd0NvbnNv
bGUoKTsKKyAgICB2b2lkIHNob3dSZXNvdXJjZXMoKTsKIAotICAgIHZvaWQgYXR0YWNoZWRCb3R0
b20oKTsKLSAgICB2b2lkIGF0dGFjaGVkUmlnaHQoKTsKLSAgICB2b2lkIGRldGFjaGVkKCk7Cisg
ICAgdm9pZCBzaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJZGVudGlmaWVy
KTsKKworICAgIHZvaWQgc2V0QXR0YWNoZWQoYm9vbCBhdHRhY2hlZCkgeyBtX2F0dGFjaGVkID0g
YXR0YWNoZWQ7IH0KIAogICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRGb3JUZXN0KGNvbnN0IFN0cmlu
ZyYgc2NyaXB0KTsKIAotICAgIHZvaWQgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9v
bCk7CiAgICAgdm9pZCBzdGFydFBhZ2VQcm9maWxpbmcoKTsKICAgICB2b2lkIHN0b3BQYWdlUHJv
ZmlsaW5nKCk7CiAKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYp
OworCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0gICAgYm9vbCBoYXNSZW1vdGVGcm9u
dGVuZENvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQ7
IH0KLSAgICB2b2lkIHNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOwotICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgdm9pZCByZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpOwog
ICAgIHZvaWQgcmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKTsKICNlbmRpZgogCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7Ci0gICAgZnJpZW5kIGNsYXNz
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogCi0gICAgZXhwbGljaXQgV2ViSW5zcGVjdG9y
KFdlYlBhZ2UqLCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKKyAgICBleHBs
aWNpdCBXZWJJbnNwZWN0b3IoV2ViUGFnZSopOworCisgICAgYm9vbCBjYW5BdHRhY2hXaW5kb3co
KTsKIAogICAgIC8vIENhbGxlZCBmcm9tIFdlYkluc3BlY3RvckNsaWVudAotICAgIFdlYlBhZ2Uq
IGNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKLSAgICBXZWJQYWdlKiBjcmVhdGVJbnNwZWN0b3JQYWdl
Rm9yVGVzdCgpOwotICAgIHZvaWQgZGVzdHJveUluc3BlY3RvclBhZ2UoKTsKKyAgICB2b2lkIGNy
ZWF0ZUluc3BlY3RvclBhZ2UoYm9vbCB1bmRlclRlc3QpOwogCi0gICAgLy8gQ2FsbGVkIGZyb20g
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQKLSAgICB2b2lkIGRpZENsb3NlKCk7CisgICAgdm9p
ZCBjbG9zZUZyb250ZW5kKCk7CiAgICAgdm9pZCBicmluZ1RvRnJvbnQoKTsKLSAgICB2b2lkIGlu
c3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBib29sIGNhblNhdmUoKSBj
b25zdDsKLSAgICB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpOwotICAgIHZv
aWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7
Ci0KLSAgICB2b2lkIGF0dGFjaEJvdHRvbSgpOwotICAgIHZvaWQgYXR0YWNoUmlnaHQoKTsKLSAg
ICB2b2lkIGRldGFjaCgpOwogCi0gICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNp
Z25lZCk7Ci0gICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKTsKLSAgICB2
b2lkIHNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQpOwotCi0gICAgLy8gSW1wbGVtZW50ZWQgaW4g
cGxhdGZvcm0gV2ViSW5zcGVjdG9yIGZpbGUKLSAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VS
TCgpIGNvbnN0OwotCi0gICAgdm9pZCBzaG93Q29uc29sZSgpOwotCi0gICAgdm9pZCBzaG93UmVz
b3VyY2VzKCk7Ci0KLSAgICB2b2lkIHNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlEKTsKLQotICAgIHZvaWQgc3RhcnRKYXZhU2NyaXB0RGVidWdnaW5nKCk7Ci0gICAgdm9p
ZCBzdG9wSmF2YVNjcmlwdERlYnVnZ2luZygpOwotCi0gICAgdm9pZCBzdGFydEphdmFTY3JpcHRQ
cm9maWxpbmcoKTsKLSAgICB2b2lkIHN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCk7CisgICAgV2Vi
UGFnZSogbV9wYWdlOwogCi0gICAgdm9pZCB1cGRhdGVEb2NraW5nQXZhaWxhYmlsaXR5KCk7Cisg
ICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9mcm9udGVuZENvbm5lY3Rpb247CiAKLSAgICBX
ZWJQYWdlKiBtX3BhZ2U7Ci0gICAgV2ViUGFnZSogbV9pbnNwZWN0b3JQYWdlOwotICAgIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2Zyb250ZW5kQ2xpZW50OwotICAgIFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENoYW5uZWw7Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgbXV0YWJsZSBTdHJpbmcgbV9sb2NhbGl6ZWRTdHJpbmdzVVJMOwotICAgIG11
dGFibGUgYm9vbCBtX2hhc0xvY2FsaXplZFN0cmluZ3NVUkw7Ci0jZW5kaWYKLSNpZiBFTkFCTEUo
SU5TUEVDVE9SX1NFUlZFUikKLSAgICBib29sIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQ7Ci0j
ZW5kaWYKKyAgICBib29sIG1fYXR0YWNoZWQ7CisgICAgYm9vbCBtX3ByZXZpb3VzQ2FuQXR0YWNo
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgppbmRleCBj
MjNiODZmLi5mYzA3M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0j
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAj
CiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIyLDI2ICsyMiwyNSBAQAogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKIAotbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yIExlZ2FjeVJlY2VpdmVy
IHsKK21lc3NhZ2VzIC0+IFdlYkluc3BlY3RvciB7CiAgICAgU2hvdygpCiAgICAgQ2xvc2UoKQot
ICAgIEF0dGFjaGVkQm90dG9tKCkKLSAgICBBdHRhY2hlZFJpZ2h0KCkKLSAgICBEZXRhY2hlZCgp
Ci0gICAgRGlkU2F2ZShTdHJpbmcgdXJsKQotICAgIERpZEFwcGVuZChTdHJpbmcgdXJsKQorCisg
ICAgU2V0QXR0YWNoZWQoYm9vbCBhdHRhY2hlZCkKKwogICAgIFNob3dDb25zb2xlKCkKICAgICBT
aG93UmVzb3VyY2VzKCkKLSAgICBTaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCkKLSAgICBTdGFydEphdmFTY3JpcHREZWJ1Z2dpbmcoKQotICAgIFN0b3BKYXZhU2NyaXB0
RGVidWdnaW5nKCkKLSAgICBTdGFydEphdmFTY3JpcHRQcm9maWxpbmcoKQotICAgIFN0b3BKYXZh
U2NyaXB0UHJvZmlsaW5nKCkKKworICAgIFNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlkZW50aWZpZXIpCisKKyAgICBPcGVuSW5OZXdUYWIoU3RyaW5nIHVybCkKKwogICAg
IFN0YXJ0UGFnZVByb2ZpbGluZygpCiAgICAgU3RvcFBhZ2VQcm9maWxpbmcoKQogCisgICAgU2Vu
ZE1lc3NhZ2VUb0JhY2tlbmQoU3RyaW5nIG1lc3NhZ2UpCisKICNpZiBFTkFCTEUoSU5TUEVDVE9S
X1NFUlZFUikKLSAgICBEaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoU3RyaW5nIG1l
c3NhZ2UpCiAgICAgUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKQogICAgIFJlbW90ZUZyb250ZW5k
RGlzY29ubmVjdGVkKCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMTIxZDZiMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTAsMCArMSwyODIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUkuaCIK
KworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJX
ZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1NjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0RPTVdyYXBwZXJXb3JsZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9y
Q29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJv
bGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0R2xvYmFsT2JqZWN0Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TY3JpcHRTdGF0ZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8V2ViSW5zcGVjdG9yVUk+IFdlYkluc3Bl
Y3RvclVJOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYkluc3BlY3RvclVJKHBhZ2UpKTsKK30KKworV2ViSW5zcGVjdG9yVUk6OldlYkluc3BlY3Rv
clVJKFdlYlBhZ2UqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1faW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIoMCkKKyAgICAsIG1fdW5kZXJUZXN0KGZhbHNlKQorICAgICwgbV9mcm9u
dGVuZExvYWRlZChmYWxzZSkKKyAgICAsIG1fZG9ja1NpZGUoRG9ja1NpZGU6OlVuZG9ja2VkKQor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgICwgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMKGZhbHNl
KQorI2VuZGlmCit7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFibGlzaENvbm5lY3Rp
b24oSVBDOjpBdHRhY2htZW50IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qg
aW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0KQoreworI2lmIE9TKERBUldJ
TikKKyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIo
ZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7CisgICAgaWYgKElQQzo6Q29ubmVj
dGlvbjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgPSBpbnNwZWN0ZWRQYWdlSWRl
bnRpZmllcjsKKyAgICBtX3VuZGVyVGVzdCA9IHVuZGVyVGVzdDsKKworICAgIG1fYmFja2VuZENv
bm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVj
dGlvbklkZW50aWZpZXIsIHRoaXMsIFJ1bkxvb3A6Om1haW4oKSk7CisgICAgbV9iYWNrZW5kQ29u
bmVjdGlvbi0+b3BlbigpOworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
bjsKKyNlbmRpZgorCisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQodGhpcyk7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yVUk6OndpbmRvd09iamVjdENsZWFyZWQoKQoreworICAgIGlmIChtX2Zyb250ZW5kSG9zdCkK
KyAgICAgICAgbV9mcm9udGVuZEhvc3QtPmRpc2Nvbm5lY3RDbGllbnQoKTsKKworICAgIG1fZnJv
bnRlbmRIb3N0ID0gSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpjcmVhdGUodGhpcywgbV9wYWdlLT5j
b3JlUGFnZSgpKTsKKyAgICBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChleGVjU3RhdGVGcm9tUGFn
ZShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgbV9wYWdlLT5jb3JlUGFnZSgpKSwgQVNDSUlMaXRl
cmFsKCJJbnNwZWN0b3JGcm9udGVuZEhvc3QiKSwgbV9mcm9udGVuZEhvc3QuZ2V0KCkpOworfQor
Cit2b2lkIFdlYkluc3BlY3RvclVJOjpmcm9udGVuZExvYWRlZCgpCit7CisgICAgbV9mcm9udGVu
ZExvYWRlZCA9IHRydWU7CisKKyAgICBldmFsdWF0ZVBlbmRpbmdFeHByZXNzaW9ucygpOworICAg
IGJyaW5nVG9Gcm9udCgpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjptb3ZlV2luZG93Qnko
ZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICBGbG9hdFJlY3QgZnJhbWVSZWN0ID0gbV9wYWdlLT5j
b3JlUGFnZSgpLT5jaHJvbWUoKS53aW5kb3dSZWN0KCk7CisgICAgZnJhbWVSZWN0Lm1vdmUoeCwg
eSk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5jaHJvbWUoKS5zZXRXaW5kb3dSZWN0KGZyYW1l
UmVjdCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmJyaW5nVG9Gcm9udCgpCit7CisgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9udCgpLCBtX2luc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2xvc2VXaW5kb3coKQorewor
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpLCBtX2luc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyKTsKKworICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKKyAg
ICBtX2JhY2tlbmRDb25uZWN0aW9uID0gbnVsbHB0cjsKKworICAgIG1faW5zcGVjdGVkUGFnZUlk
ZW50aWZpZXIgPSAwOworICAgIG1fdW5kZXJUZXN0ID0gZmFsc2U7Cit9CisKK3ZvaWQgV2ViSW5z
cGVjdG9yVUk6OnJlcXVlc3RTZXREb2NrU2lkZShEb2NrU2lkZSBzaWRlKQoreworICAgIHN3aXRj
aCAoc2lkZSkgeworICAgIGNhc2UgRG9ja1NpZGU6OlVuZG9ja2VkOgorICAgICAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6RGV0YWNoKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgRG9ja1NpZGU6OlJpZ2h0OgorICAgICAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoUmlnaHQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRp
Zmllcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6Qm90dG9tOgorICAg
ICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQm90dG9tKCksIG1faW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgV2ViSW5z
cGVjdG9yVUk6OnNldERvY2tTaWRlKERvY2tTaWRlIHNpZGUpCit7CisgICAgY29uc3QgY2hhciog
c2lkZVN0cmluZzsKKworICAgIHN3aXRjaCAoc2lkZSkgeworICAgIGNhc2UgRG9ja1NpZGU6OlVu
ZG9ja2VkOgorICAgICAgICBzaWRlU3RyaW5nID0gInVuZG9ja2VkIjsKKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIERvY2tTaWRlOjpSaWdodDoKKyAgICAgICAgc2lkZVN0cmluZyA9ICJyaWdo
dCI7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6Qm90dG9tOgorICAgICAg
ICBzaWRlU3RyaW5nID0gImJvdHRvbSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIG1f
ZG9ja1NpZGUgPSBzaWRlOworCisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJh
bCgic2V0RG9ja1NpZGUiKSwgQVNDSUlMaXRlcmFsKHNpZGVTdHJpbmcpKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JVSTo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0
KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd0hlaWdo
dChoZWlnaHQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JVSTo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKK3sKKyAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh3aWR0aCks
IG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpz
ZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JQcm94eTo6U2V0VG9vbGJhckhlaWdodChoZWlnaHQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlm
aWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6b3BlbkluTmV3VGFiKGNvbnN0IFN0cmlu
ZyYgdXJsKQoreworICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6T3BlbkluTmV3VGFiKHVybCksIDApOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJ
OjpzYXZlKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGNv
bnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykKK3sKKyAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6U2F2ZShmaWxlbmFtZSwgY29udGVudCwgYmFzZTY0RW5jb2Rl
ZCwgZm9yY2VTYXZlQXMpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JVSTo6YXBwZW5kKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIGNvbnRlbnQpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkFw
cGVuZChmaWxlbmFtZSwgY29udGVudCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQor
Cit2b2lkIFdlYkluc3BlY3RvclVJOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpJbnNwZWN0ZWRVUkxD
aGFuZ2VkKHVybFN0cmluZyksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lk
IFdlYkluc3BlY3RvclVJOjpzaG93Q29uc29sZSgpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25M
b2FkKEFTQ0lJTGl0ZXJhbCgic2hvd0NvbnNvbGUiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9y
VUk6OnNob3dSZXNvdXJjZXMoKQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxp
dGVyYWwoInNob3dSZXNvdXJjZXMiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNob3dN
YWluUmVzb3VyY2VGb3JGcmFtZShTdHJpbmcgZnJhbWVJZGVudGlmaWVyKQoreworICAgIGV2YWx1
YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSIp
LCBmcmFtZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzdGFydFBhZ2VQ
cm9maWxpbmcoKQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNl
dFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCIpLCB0cnVlKTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JVSTo6c3RvcFBhZ2VQcm9maWxpbmcoKQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChB
U0NJSUxpdGVyYWwoInNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCIpLCBmYWxzZSk7Cit9CisK
K3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmRpZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAg
ZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2F2ZWRVUkwiKSwgdXJsKTsKK30K
Kwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKQorewor
ICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoImFwcGVuZGVkVG9VUkwiKSwg
dXJsKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQobWFr
ZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2hNZXNzYWdlQXN5bmMoIiwgbWVz
c2FnZSwgIikiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9CYWNr
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2Up
LCAwKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNv
bnN0IFN0cmluZyYgY29tbWFuZCwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCkKK3sKKyAgICBpZiAo
YXJndW1lbnQuaXNOdWxsKCkpCisgICAgICAgIGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChtYWtl
U3RyaW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaChbXCIiLCBjb21tYW5kLCAiXCJd
KSIpKTsKKyAgICBlbHNlCisgICAgICAgIGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChtYWtlU3Ry
aW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaChbXCIiLCBjb21tYW5kLCAiXCIsIFwi
IiwgYXJndW1lbnQsICJcIl0pIikpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpldmFsdWF0
ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBib29sIGFyZ3VtZW50KQorewor
ICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb21tYW5kLCBBU0NJSUxpdGVyYWwoYXJndW1lbnQg
PyAidHJ1ZSIgOiAiZmFsc2UiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRl
RXhwcmVzc2lvbk9uTG9hZChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pCit7CisgICAgaWYgKG1f
ZnJvbnRlbmRMb2FkZWQpIHsKKyAgICAgICAgQVNTRVJUKG1fcXVldWUuaXNFbXB0eSgpKTsKKyAg
ICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2Ny
aXB0KGV4cHJlc3Npb24pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9xdWV1ZS5h
cHBlbmQoZXhwcmVzc2lvbik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRlUGVu
ZGluZ0V4cHJlc3Npb25zKCkKK3sKKyAgICBBU1NFUlQobV9mcm9udGVuZExvYWRlZCk7CisKKyAg
ICBmb3IgKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiA6IG1fcXVldWUpCisgICAgICAgIG1fcGFn
ZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChleHByZXNz
aW9uKTsKKworICAgIG1fcXVldWUuY2xlYXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5iZGJmY2JlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKQEAgLTAsMCArMSwxMzcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYkluc3BlY3RvclVJX2gKKyNkZWZpbmUgV2ViSW5zcGVjdG9y
VUlfaAorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgor
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndh
cmRpbmcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYkluc3BlY3RvclVJIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yVUk+LCBw
dWJsaWMgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW5zcGVj
dG9yVUk+IGNyZWF0ZShXZWJQYWdlKik7CisKKyAgICBXZWJQYWdlKiBwYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYWdlOyB9CisKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViSW5z
cGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisKKyAgICAvLyBJUEM6OkNv
bm5lY3Rpb246OkNsaWVudAorICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uKikgeyBj
bG9zZVdpbmRvdygpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uKiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIHsgY2xvc2VXaW5kb3coKTsgfQorCisgICAg
Ly8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclVJIG1lc3NhZ2VzCisgICAgdm9pZCBlc3RhYmxpc2hD
b25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qg
aW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0KTsKKworICAgIHZvaWQgc2hv
d0NvbnNvbGUoKTsKKyAgICB2b2lkIHNob3dSZXNvdXJjZXMoKTsKKworICAgIHZvaWQgc2hvd01h
aW5SZXNvdXJjZUZvckZyYW1lKFN0cmluZyBmcmFtZUlkZW50aWZpZXIpOworCisgICAgdm9pZCBz
dGFydFBhZ2VQcm9maWxpbmcoKTsKKyAgICB2b2lkIHN0b3BQYWdlUHJvZmlsaW5nKCk7CisKKyAg
ICB2b2lkIGF0dGFjaGVkQm90dG9tKCkgeyBzZXREb2NrU2lkZShEb2NrU2lkZTo6Qm90dG9tKTsg
fQorICAgIHZvaWQgYXR0YWNoZWRSaWdodCgpIHsgc2V0RG9ja1NpZGUoRG9ja1NpZGU6OlJpZ2h0
KTsgfQorICAgIHZvaWQgZGV0YWNoZWQoKSB7IHNldERvY2tTaWRlKERvY2tTaWRlOjpVbmRvY2tl
ZCk7IH0KKworICAgIHZvaWQgc2V0RG9ja1NpZGUoRG9ja1NpZGUpOworCisgICAgdm9pZCBkaWRT
YXZlKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIGRpZEFwcGVuZChjb25zdCBTdHJpbmcm
IHVybCk7CisKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKTsK
KworICAgIC8vIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50CisgICAgdm9pZCB3aW5k
b3dPYmplY3RDbGVhcmVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmcm9udGVuZExvYWRlZCgpIG92
ZXJyaWRlOworCisgICAgdm9pZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgb3ZlcnJp
ZGU7CisKKyAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIG92ZXJyaWRlOworCisgICAg
dm9pZCBicmluZ1RvRnJvbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlV2luZG93KCkgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIHJlcXVlc3RTZXREb2NrU2lkZShEb2NrU2lkZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKSBvdmVycmlkZTsK
KworICAgIHZvaWQgc2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7CisKKyAgICB2
b2lkIG9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkgb3ZlcnJpZGU7CisKKyAgICBib29s
IGNhblNhdmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmUoY29uc3QgV1RGOjpTdHJpbmcmIHVy
bCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBm
b3JjZVNhdmVBcykgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgV1RGOjpTdHJpbmcm
IHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQpIG92ZXJyaWRlOworCisgICAgdm9pZCBp
bnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworCisgICAgdm9pZCBz
ZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKworICAgIGJvb2wg
aXNVbmRlclRlc3QoKSBvdmVycmlkZSB7IHJldHVybiBtX3VuZGVyVGVzdDsgfQorCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvclVJKFdlYlBhZ2UqKTsKKworICAgIHZvaWQgZXZh
bHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgY29uc3QgU3RyaW5nJiBh
cmd1bWVudCA9IFN0cmluZygpKTsKKyAgICB2b2lkIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb25z
dCBTdHJpbmcmIGNvbW1hbmQsIGNvbnN0IEFTQ0lJTGl0ZXJhbCYgYXJndW1lbnQpIHsgZXZhbHVh
dGVDb21tYW5kT25Mb2FkKGNvbW1hbmQsIFN0cmluZyhhcmd1bWVudCkpOyB9CisgICAgdm9pZCBl
dmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBib29sIGFyZ3VtZW50
KTsKKyAgICB2b2lkIGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24pOworICAgIHZvaWQgZXZhbHVhdGVQZW5kaW5nRXhwcmVzc2lvbnMoKTsKKworICAgIFdl
YlBhZ2UqIG1fcGFnZTsKKworICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fYmFja2VuZENv
bm5lY3Rpb247CisgICAgdWludDY0X3QgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKKworICAg
IGJvb2wgbV91bmRlclRlc3Q7CisgICAgYm9vbCBtX2Zyb250ZW5kTG9hZGVkOworICAgIERlcXVl
PFN0cmluZz4gbV9xdWV1ZTsKKworICAgIFJlZlB0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZEhvc3Q+IG1fZnJvbnRlbmRIb3N0OworCisgICAgRG9ja1NpZGUgbV9kb2NrU2lkZTsKKworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIG11dGFibGUgU3RyaW5nIG1fbG9jYWxpemVkU3RyaW5nc1VS
TDsKKyAgICBtdXRhYmxlIGJvb2wgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMOworI2VuZGlmCit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1Ip
CisKKyNlbmRpZiAvLyBXZWJJbnNwZWN0b3JVSV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCnNpbWls
YXJpdHkgaW5kZXggNzclCmNvcHkgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCmNvcHkgdG8gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCmluZGV4IGMyM2I4NmYuLjIz
ZWI1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3IubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMiwyOSArMjIsMjUgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAKLW1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvciBMZWdhY3lSZWNlaXZlciB7Ci0gICAgU2hvdygp
Ci0gICAgQ2xvc2UoKQorbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yVUkgeworICAgIEVzdGFibGlz
aENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QpCisKICAgICBBdHRhY2hl
ZEJvdHRvbSgpCiAgICAgQXR0YWNoZWRSaWdodCgpCiAgICAgRGV0YWNoZWQoKQotICAgIERpZFNh
dmUoU3RyaW5nIHVybCkKLSAgICBEaWRBcHBlbmQoU3RyaW5nIHVybCkKKwogICAgIFNob3dDb25z
b2xlKCkKICAgICBTaG93UmVzb3VyY2VzKCkKLSAgICBTaG93TWFpblJlc291cmNlRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCkKLSAgICBTdGFydEphdmFTY3JpcHREZWJ1Z2dpbmcoKQotICAgIFN0
b3BKYXZhU2NyaXB0RGVidWdnaW5nKCkKLSAgICBTdGFydEphdmFTY3JpcHRQcm9maWxpbmcoKQot
ICAgIFN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCkKKworICAgIFNob3dNYWluUmVzb3VyY2VGb3JG
cmFtZShTdHJpbmcgZnJhbWVJZGVudGlmaWVyKQorCiAgICAgU3RhcnRQYWdlUHJvZmlsaW5nKCkK
ICAgICBTdG9wUGFnZVByb2ZpbGluZygpCiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikK
LSAgICBEaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoU3RyaW5nIG1lc3NhZ2UpCi0g
ICAgUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKQotICAgIFJlbW90ZUZyb250ZW5kRGlzY29ubmVj
dGVkKCkKLSNlbmRpZgorICAgIERpZFNhdmUoU3RyaW5nIHVybCkKKyAgICBEaWRBcHBlbmQoU3Ry
aW5nIHVybCkKKworICAgIFNlbmRNZXNzYWdlVG9Gcm9udGVuZChTdHJpbmcgbWVzc2FnZSkKIH0K
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggMDA2NjBjMi4uNWUwNjA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtODAsNiArODAsOCBAQAogI2luY2x1ZGUgIldlYklu
c3BlY3Rvci5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIldl
Ykluc3BlY3Rvck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUkuaCIKKyNpbmNs
dWRlICJXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCkBAIC00NjEsNiArNDYzLDcgQEAgV2Vi
UGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVj
dG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CisgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
STo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOwogI2VuZGlmCiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKQEAgLTUyMiw2ICs1MjUsNyBAQCBXZWJQYWdlOjp+
V2ViUGFnZSgpCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKICNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZUlEKTsKQEAgLTI4OTAsMTggKzI4OTQsMjYgQEAgdm9pZCBXZWJQYWdlOjpkaWRGbHVzaExheWVy
VHJlZUF0VGltZShzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVzdGFtcCkKIH0KICNlbmRp
ZgogCi0gICAgCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIFdlYkluc3BlY3RvciogV2ViUGFnZTo6
aW5zcGVjdG9yKCkKIHsKICAgICBpZiAobV9pc0Nsb3NlZCkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghbV9pbnNwZWN0b3IpCi0gICAgICAgIG1f
aW5zcGVjdG9yID0gV2ViSW5zcGVjdG9yOjpjcmVhdGUodGhpcywgbV9pbnNwZWN0b3JDbGllbnQp
OworICAgICAgICBtX2luc3BlY3RvciA9IFdlYkluc3BlY3Rvcjo6Y3JlYXRlKHRoaXMpOwogICAg
IHJldHVybiBtX2luc3BlY3Rvci5nZXQoKTsKIH0KKworV2ViSW5zcGVjdG9yVUkqIFdlYlBhZ2U6
Omluc3BlY3RvclVJKCkKK3sKKyAgICBpZiAobV9pc0Nsb3NlZCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgaWYgKCFtX2luc3BlY3RvclVJKQorICAgICAgICBtX2luc3BlY3RvclVJID0g
V2ViSW5zcGVjdG9yVUk6OmNyZWF0ZSh0aGlzKTsKKyAgICByZXR1cm4gbV9pbnNwZWN0b3JVSS5n
ZXQoKTsKK30KICNlbmRpZgotICAgIAorCiAjaWYgUExBVEZPUk0oSU9TKQogV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlciogV2ViUGFnZTo6dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpCiB7CkBAIC0z
NDk3LDExICszNTA5LDE3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uKiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAjZW5kaWYKLSAgICAKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yKiBpbnNw
ZWN0b3IgPSB0aGlzLT5pbnNwZWN0b3IoKSkKLSAgICAgICAgICAgIGluc3BlY3Rvci0+ZGlkUmVj
ZWl2ZVdlYkluc3BlY3Rvck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgICAg
ICBpbnNwZWN0b3ItPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3JVSSogaW5zcGVjdG9yVUkgPSB0aGlzLT5pbnNwZWN0
b3JVSSgpKQorICAgICAgICAgICAgaW5zcGVjdG9yVUktPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBiYWJhNTA2Li5iN2Q0
NDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAg
LTE1Myw2ICsxNTMsNyBAQCBjbGFzcyBXZWJGdWxsU2NyZWVuTWFuYWdlcjsKIGNsYXNzIFdlYklt
YWdlOwogY2xhc3MgV2ViSW5zcGVjdG9yOwogY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50OworY2xh
c3MgV2ViSW5zcGVjdG9yVUk7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91
c2VFdmVudDsKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbkNsaWVudDsKQEAgLTIyNiw4ICsyMjcsMTAg
QEAgcHVibGljOgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBXZWJJbnNwZWN0b3IqIGlu
c3BlY3RvcigpOworICAgIFdlYkluc3BlY3RvclVJKiBpbnNwZWN0b3JVSSgpOworICAgIGJvb2wg
aXNJbnNwZWN0b3JQYWdlKCkgeyByZXR1cm4gISFtX2luc3BlY3RvclVJOyB9CiAjZW5kaWYKLSAg
ICAKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKiB2
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCk7CiAjZW5kaWYKQEAgLTExNTksNiArMTE2Miw3IEBAIHBy
aXZhdGU6CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFJlZlB0cjxXZWJJbnNwZWN0b3I+
IG1faW5zcGVjdG9yOworICAgIFJlZlB0cjxXZWJJbnNwZWN0b3JVST4gbV9pbnNwZWN0b3JVSTsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcj4gbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JFZmwuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JVSUVmbC5jcHAKc2lt
aWxhcml0eSBpbmRleCA5MyUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JFZmwuY3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3RvclVJRWZsLmNwcAppbmRleCAyYWFjYzI5
Li4xODU3YzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
ZWZsL1dlYkluc3BlY3RvckVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JVSUVmbC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViSW5zcGVjdG9yLmgiCisjaW5jbHVk
ZSAiV2ViSW5zcGVjdG9yVUkuaCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTMzLDEy
ICszMywxMiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotYm9vbCBXZWJJbnNwZWN0b3I6OmNh
blNhdmUoKSBjb25zdAorYm9vbCBXZWJJbnNwZWN0b3JVSTo6Y2FuU2F2ZSgpCiB7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1TdHJpbmcgV2ViSW5zcGVjdG9yOjpsb2NhbGl6ZWRTdHJpbmdzVVJM
KCkgY29uc3QKK1N0cmluZyBXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCiB7
CiAgICAgcmV0dXJuICJmaWxlOi8vIiArIFdlYkNvcmU6Omluc3BlY3RvclJlc291cmNlUGF0aCgp
ICsgIi9sb2NhbGl6ZWRTdHJpbmdzLmpzIjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yR3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwCnNpbWlsYXJp
dHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvV2ViSW5zcGVjdG9yR3RrLmNwcApyZW5hbWUgdG8gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAKaW5kZXggNWEwZWY5ZS4uNDY0
Njc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJJbnNwZWN0b3JHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAgKi8KIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkluc3BlY3Rvci5oIgorI2luY2x1ZGUgIldl
Ykluc3BlY3RvclVJLmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCkBAIC0zNSwxMiArMzUs
MTIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWJvb2wgV2ViSW5zcGVjdG9yOjpjYW5TYXZl
KCkgY29uc3QKK2Jvb2wgV2ViSW5zcGVjdG9yVUk6OmNhblNhdmUoKQogewogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotU3RyaW5nIFdlYkluc3BlY3Rvcjo6bG9jYWxpemVkU3RyaW5nc1VSTCgpIGNv
bnN0CitTdHJpbmcgV2ViSW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwoKQogewogICAg
IHJldHVybiBTdHJpbmcoInJlc291cmNlOi8vL29yZy93ZWJraXRndGsvaW5zcGVjdG9yL0xvY2Fs
aXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3RvclVJTWFj
Lm1tCnNpbWlsYXJpdHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yTWFjLm1tCnJlbmFtZSB0byBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3RvclVJTWFjLm1tCmluZGV4IDc5
NWY0NTYuLjJiZTc2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViSW5zcGVjdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yVUlNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwog
CiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldlYkluc3BlY3Rvci5oIgorI2ltcG9ydCAi
V2ViSW5zcGVjdG9yVUkuaCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTM0LDEyICsz
NCwxMiBAQCBTT0ZUX0xJTktfU1RBR0VEX0ZSQU1FV09SSyhXZWJJbnNwZWN0b3JVSSwgUHJpdmF0
ZUZyYW1ld29ya3MsIEEpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIFdlYkluc3BlY3Rv
cjo6Y2FuU2F2ZSgpIGNvbnN0Citib29sIFdlYkluc3BlY3RvclVJOjpjYW5TYXZlKCkKIHsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFdlYkluc3BlY3Rvcjo6bG9jYWxpemVkU3RyaW5n
c1VSTCgpIGNvbnN0CitTdHJpbmcgV2ViSW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwo
KQogewogICAgIGlmICghbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMKSB7CiAgICAgICAgIC8vIENh
bGwgdGhlIHNvZnQgbGluayBmcmFtZXdvcmsgZnVuY3Rpb24gdG8gZGxvcGVuIGl0LCB0aGVuIFtO
U0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpdIHdpbGwgd29yay4KQEAgLTUyLDYgKzUyLDcg
QEAgU3RyaW5nIFdlYkluc3BlY3Rvcjo6bG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0CiAgICAg
ICAgICAgICBtX2xvY2FsaXplZFN0cmluZ3NVUkwgPSBTdHJpbmcoKTsKICAgICAgICAgbV9oYXNM
b2NhbGl6ZWRTdHJpbmdzVVJMID0gdHJ1ZTsKICAgICB9CisKICAgICByZXR1cm4gbV9sb2NhbGl6
ZWRTdHJpbmdzVVJMOwogfQogCg==
</data>
<flag name="commit-queue"
          id="262558"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>237830</attachid>
            <date>2014-09-08 19:29:12 -0700</date>
            <delta_ts>2014-09-12 10:29:31 -0700</delta_ts>
            <desc>Archive of layout-test-results from webkit-ews-08 for mac-mountainlion</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>614469</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kveHNsLWFsbG93ZWQtc3RkZXJy
LnR4dFVUCQADTV0OVE1dDlR1eAsAAQT2AQAABFAAAAAtjUEKwzAMBO95hV4QO72k+BWFviC4G2JQ
LCMppf59TSl7WobZzXK2wpsXqQRV0UR7YdDh3lIIy22d48iS7jHGYMiXFu8hS3VUf/77Q7jkHhQm
l2ZYMO+M+WNMXCpoJTDOIdAP2AH4NGh6Q21cJ5LKnZY50o7NrzFEm4Lsak3U8Zq+UEsDBBQAAgAI
AIeWKEVjqqxsggAAAKgAAABSABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kveHNsLXVuYWZmZWN0ZWQtYnktc3R5bGUtc3JjLTItc3RkZXJyLnR4dFVUCQADTl0OVE5d
DlR1eAsAAQT2AQAABFAAAAAtjUEKwzAMBO95hV4QO72k+BWFviC4G2JQLCMppf59TSl7WobZzXK2
wpsXqQRV0UR7YdDh3lIIy22d48iS7jHGYMiXFu8hS3VUf/77Q7jkHhQml2ZYMO+M+WNMXCpoJTDO
IdAP2AH4NGh6Q21cJ5LKnZY50o7NrzFEm4Lsak3U8Zq+UEsDBBQAAgAIAHiWKEVgS2YQkQAAAPsB
AABFABwAaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1kb2N1bWVudC1zZWN1cml0
eU9yaWdpbi1zdGRlcnIudHh0VVQJAAM0XQ5UNF0OVHV4CwABBPYBAAAEUAAAAO2OMQ6DMAxFd07h
C4QEllaZYejSngEFUyKZJLKdCm5fOvQGHau/vq/3Qt5KpEljToDMmT0skRBW1eKt7fpL6851/uqc
s4KhctTD7iJmGO+3cTC7kJlzqBsmNV/gwfEZU7tvBBQTQg9I+CFA9CCUFVGb8+lfyHK6PeREB3St
gwUnrYwCEyNILSWz4tyEf+iPQ99QSwMECgAAAAAAHZcoRQAAAAAAAAAAAAAAABoAHABodHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L1VUCQADal4OVG1eDlR1eAsAAQT2AQAABFAAAABQSwMEFAACAAgA
HZcoRZ95fBIpNQAA3sMAAFYAHABodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250
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
k9dxrO5A2Sfft+QfQAV80nSWK53I/uEG90YdD8pJka6q0d4x3eHOl1megCVsW1WtkXbl4n5BJsoU
a1F7m0RFVY9M8TzPxkkh08m27DAmt4WotMwr1hp9KRlJ/rQb/dKNbknuZ5gIG0/xZUwhbPrgfxMs
4bGlVE1GfHbp14zEapbccPmgu5RS6pfkLuGUOLrL0ykMWae7rXk7vTWS3fHUt7sBrX3NvDWSn3YC
DJQ2d/DuA8eWX6M1ElVt6HLCzJ29mjVjS29MGbUjRh4d85MlBOCLklaEeQ1h1HicMM4fAKw4PZKH
M9BD81Fza0RZqDRsvSPjCGxAylqA2+MTOrFpjcRBCgfWgAD3Spy0kJFlzFiULkFZgDmVzyLKtkjM
LGK/mAzZ4vZPyyKrEXi26wCssy2+sAx8VKcoVI4H1KXBGHrNiH/uKV4xVXJrpD4PKHPm3v8BUEsD
BAoAAAAAABuXKEUAAAAAAAAAAAAAAAAIABwAcmV0cmllcy9VVAkAA2ZeDlRtXg5UdXgLAAEE9gEA
AARQAAAAUEsDBAoAAAAAABqXKEUAAAAAAAAAAAAAAAANABwAcmV0cmllcy9odHRwL1VUCQADZF4O
VG1eDlR1eAsAAQT2AQAABFAAAABQSwMECgAAAAAAGpcoRQAAAAAAAAAAAAAAABMAHAByZXRyaWVz
L2h0dHAvdGVzdHMvVVQJAANkXg5UbV4OVHV4CwABBPYBAAAEUAAAAFBLAwQKAAAAAAAalyhFAAAA
AAAAAAAAAAAAIgAcAHJldHJpZXMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9VVAkAA2ReDlRt
Xg5UdXgLAAEE9gEAAARQAAAAUEsDBBQAAgAIABqXKEWfeXwSKTUAAN7DAABeABwAcmV0cmllcy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXJlcGVhdGVkLWZhaWxlZC1w
cmVmbGlnaHQtY3Jhc2gtY3Jhc2gtbG9nLnR4dFVUCQADZF4OVGReDlR1eAsAAQT2AQAABFAAAADs
XFtv28a2fj76FXwq5CaU584ZIQhAUmTq1o4Ny0kLFIXAy8jmjm4lKSfev36vISWZlGjHSvt0YAGx
Lc5wrW/d18yQucqXiS6KobX9jNbz1bVepDq/ybW2/nS4xPSv3lVU3j1Ogs/p5+VsPdfF6efL808X
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
cy93ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9VVAkAA2heDlRtXg5UdXgLAAEE9gEAAARQAAAAUEsD
BAoAAAAAABuXKEUAAAAAAAAAAAAAAAAoABwAcmV0cmllcy93ZWJnbC8xLjAuMS9jb25mb3JtYW5j
ZS9jb250ZXh0L1VUCQADZl4OVG1eDlR1eAsAAQT2AQAABFAAAABQSwMEFAACAAgAG5coRS7KUUrP
AAAADwEAAEgAHAByZXRyaWVzL3dlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4
dC1sb3N0LXJlc3RvcmVkLWFjdHVhbC50eHRVVAkAA2ZeDlRmXg5UdXgLAAEE9gEAAARQAAAANY7N
asNADITv+xRzS3uIc2zxzQQ3FNymYEOPwT9yvGUtBa3ctG/f3UNBMB8Do5nj+b09NzXe6ratTnWJ
4Jnw9Fyi+71RrSpagrcQ4CNYDD1Dhi8aDQ/03YetN89X7OjHiKMXLoJEOgpbcnaPrltSzigadONE
C+GThlODLnvBR6MJAwW5w3N+7mftV0o0QekmahEfVdtCFC/Va1M4l5MliuKQTinKpiPFw52Ga7jk
psvsQzJG4Vl07XmkzHnPv+7TRtunrInSVCy2BpdLnPsDUEsDBBQAAgAIABuXKEXHhwxRLAEAADsC
AABGABwAcmV0cmllcy93ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9jb250ZXh0L2NvbnRleHQtbG9z
dC1yZXN0b3JlZC1kaWZmLnR4dFVUCQADZl4OVGZeDlR1eAsAAQT2AQAABFAAAADFUE1PwkAQvfdX
zA1N2a6NJhpORazEiGIskSPZtgOsme6S3VmBf+9W5O7NZJJ5meTN+xBCgPywFDr08kGxkuWykkus
nzX/rvugqZXvSKg8SlJHG1gwehYOfSD20iE7Hfl7rDck8+wqy2Vjzdq6TpkGe8x44PMWZE9ktg5b
gYcdNoxtxgdO0jT9bz+q4aDox01RgMiH15DmwxsoiiSdzF+r+ayEl7KqxtNyBKQNwu3dCBbHHZbO
WTcCE4hAezCWQRmw9WfMBxf4pSgo1mYDg6iKxmtrsqiNk5OPwWUCi20k9mHABRPRFiGmns5g0d9I
+1gU1Eh2D9r03/XaqQ4jasHhzjr28DauKrAOHsdPsyyB5Ic7giyTcWJMG1xzbmfVa63WmuLhzxVl
W+4o+QZQSwMEFAACAAgAG5coRdtqgd6JAAAArwAAAEoAHAByZXRyaWVzL3dlYmdsLzEuMC4xL2Nv
bmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1sb3N0LXJlc3RvcmVkLWV4cGVjdGVkLnR4dFVUCQAD
Zl4OVGZeDlR1eAsAAQT2AQAABFAAAAA1jb0Kg0AQhPt7inkBzz6djSFgEVBIKf6s8eC8Dbsr5vFz
VwQG5uODYYY9KIzUIGfKtBNeNN87DMXFoEYrZop8ISRMCWGT6aBMK4Q+LKZ4Nn0PFrTNo/POleUN
3tc5QsqnLKT1RfM7juVp3ELMYuG0sRxTWqiw0df+XUVWq/LWWGj1ux3RlRPnflBLAwQUAAIACAAb
lyhFfnMkLvwHAAAsGQAATgAcAHJldHJpZXMvd2ViZ2wvMS4wLjEvY29uZm9ybWFuY2UvY29udGV4
dC9jb250ZXh0LWxvc3QtcmVzdG9yZWQtcHJldHR5LWRpZmYuaHRtbFVUCQADZl4OVGZeDlR1eAsA
AQT2AQAABFAAAACtWWtz27gV/e5fgbGndbtjkpIlZfVI1Elsedtp9jGVp/sxA5KgiBgktABoy2n7
33vxokiKtN3ZJnH4wAVwn+dc0O9zVbD12fuc4BQuBVEYJTkWkqgPl5XKgvklvJbqmZH12ZLR8uEK
LR+ppIqk6F9nCP4oclBBShIusKK8XKKSl2RlhmIuUiKCmCvFiyUa7w8ohXuSrs7+c2aXc4sknHGx
RBejycKMhXeUkVuaZW48xsnDTvCqTAMvms313+ZGdgfJGU3RRZqmdizjpQoyXFD2vEQFL7nc48Qp
WGCxo6DymBRoZF/tORhn7BCEgUWPxCiUjzuaTiaTnvUlLmUgiaBZY1DSb8Ts0dw0YCRTSzQKZ/59
SuWeYViEluAZp+ETTVUOk0ejPzj9cJrSclfPtLq50Oi7dnScurTMQSlVi+f8kYiORbPZbDXkbEKs
G0Idk8+wl3STM8YxmCHoLlftyGmpGzAfgy1+Kw6upwpMHHVMVjhmJEgIYy0rA7Nuy0tPOVgXmBjq
VHsSeH/UbEsSHbvBpDGT2ynTTReXs97vkFCj/cHusDnsIbywPphGrlCoL10LB9WTNCXxs/4fGVU/
MZ48/IKFCsHUZUaFVEGSU5YOOlZvt4X5Vy8tJkgBob16ZT+3h3e/Tbgg1iKttJv5rINsUTTBLMCM
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
ZnVuY3Rpb24tc21vb3Roc3RlcC1nZW50eXBlLWFjdHVhbC50eHRVVAkAA2ZeDlRmXg5UdXgLAAEE
9gEAAARQAAAANY6xCsMwEEN3f8X9QOy9W5eWQoZCAh1D4pxjg+0Lvguhf1+7paBBeiCk0QcGQRYo
R67OI7xwufcwNhYDC66wYKQTQoY5Q3BlTljdCgV3KsLwvA4DUIHb9dFrpVrzAlqbnwoyHcUimxOX
LU5tbHIhVmApOyppzhbNFjkad2QrgTJ/Y/ePHSci8fXL3m2Y5b2j9pKiaotKfQBQSwMEFAACAAgA
G5coRXrd+av8AAAAIQIAAFgAHAByZXRyaWVzL3dlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL2dsc2wv
ZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tc21vb3Roc3RlcC1nZW50eXBlLWRpZmYudHh0VVQJAANm
Xg5UZl4OVHV4CwABBPYBAAAEUAAAAM2Pz07DMAzG73kK30sSeuDCqUMMhNgB0Ykdp6x120huUiWO
tr09SWFPwAXJ8j/J/n2flBL0l6c0Y9TPho3eHlp9wNO75d/ylCz1+hMJTURN5uoTS8bIMmBMxFEH
5GDz/RlPI+la3atad94NPszGdahHiqSH5Dq23sV1lLdRxtl7niLjIkd0fF1Q4mXBjrFXfGFRVdX/
U2g6ToZWfU0Dsr57gKqkphGwn2yEQoeQXO4mhCzzdQf7siObH/VwQvJnsA6MAzsEM2Puegi4+MAR
PjZtCz7Ay+ZtpwSI9fYRlNI/kX35FLqbo2PBHQdLefEHW2rimYQscFEVdCZ/A1BLAwQUAAIACAAb
lyhF9fwHlpgAAADEAAAAXAAcAHJldHJpZXMvd2ViZ2wvMS4wLjEvY29uZm9ybWFuY2UvZ2xzbC9m
dW5jdGlvbnMvZ2xzbC1mdW5jdGlvbi1zbW9vdGhzdGVwLWdlbnR5cGUtZXhwZWN0ZWQudHh0VVQJ
AANmXg5UZl4OVHV4CwABBPYBAAAEUAAAADWOsQrDMBBDd3/F/UDsvVuXlkKGQgIdQ+KcY4PtC74L
oX9fu6WgQXogpNEHBkEWKEeuziO8cLn3MDYWAwuusGCkE0KGOUNwZU5Y3QoFdyrC8LwOA1CB2/XR
a6Va8wJam58KMh3FIpsTly1ObWxyIVZgKTsqac4WzRY5GndkK4Eyf2P3jx0nIvH1y95tmOW9o/aS
omrLSn0AUEsDBBQAAgAIABuXKEWwtJ8lAwgAAN4aAABgABwAcmV0cmllcy93ZWJnbC8xLjAuMS9j
b25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLXNtb290aHN0ZXAtZ2VudHlw
ZS1wcmV0dHktZGlmZi5odG1sVVQJAANmXg5UZl4OVHV4CwABBPYBAAAEUAAAAL1Za2/bRhb97l9B
2GgNBCYpWVLWkhwViR+7i02LYB20H4MhORQnHnLYmaElZ9v/vndeFEmRkooWjZOQ877Pc+7Qt5nM
6ersNsMogUeOJfLiDHGB5bvLSqb+zSV0C/lK8epsQUnxfOUtXoggEife/848+CPxVvoJjhlHkrBi
4RWswEs9FDGeYO5HTEqWL7xxufUSeMfJ8uz3M7Od3SRmlPGFdzGazPVY8EgovidpascjFD+vOauK
xHdT0xv10zzInCAYJYl3kSSJGUtZIf0U5YS+LrycFUyUKLYC5oivCYg8xrk3Ml0lA+W0HhxT0OgF
a4GycUfSyWTSs79AhfAF5iRtDAryDeszmof6FKdy4Y2CmetPiCgpgk1IAZaxEm5IIjNYPBp9Z+VD
SUKKdb3SyGZdo97a3rHikiIDoWQ9PWMvmHc0ms1myyFjY2zMECiffISzhF2cUoZADU7WmWx7Ts26
A/UR6OKOYmB6IkHFUUdliSKK/RhT2tLS1/u2rLTJQDtf+1CF2oajcifZE46V7waDRi9uh0w3XGzM
OrtDQI3KrTnhYVuCe2F/UA1feYF6dDUcFE+QBEev6n9Pi/qBsvj5E+IyAFUXKeFC+nFGaDJoWHXc
E6y/OrQZxzm49urIefYMZ34TcH6kprTCbuaiDqJFkhhRH1GyhtyQrEctjlWk/wsVCcXOHHYfZULV
zrBx6C6e44oL5RoldjcDUQTeqZzH4Mw6cEzyaPEOSdGK8/1wWHP8uuwEZjA75i9jYi+Q7KiZg5Sz
vGNsi4/qDGX1n6o8whyiCTejy/Q6wfdh1EbtfN4CQJcufTDoMnk6nfbCTdP7NcaojWYmBUwa1IBv
48CGZ1+IGHFb4TSxgNVQXKvYCziGJAbNcgCkSq6yU4lpDejQxEaNU6SVq7DIN9mqh8Ceugl6cIye
fdVhBCI5WuOWZxbedW3wiCJlRTUxBmgAGUAU++Z19d555WY6H8TeFKc7AFBhBTvW9NjI5p6lSZq0
l4KzxfD0OZ4vD3F6vZNFmaYcNiuG6TpJ9jbwEkyHV+D5UWnCN95TVZaMS2BabiMZjJrnuJDCexPC
eaiSGTP2NmysihmIeglxGjtP6QV6zgD/13OUMAhCQk92cPbWBbaCG0TpnZOgd/a14bIcbf0OvedQ
F9iu61HNO92jwe4Hz6kzu07p1jF9cgasxIY2/Q2Onon0JVdpZyxhBPeCa7FsqDG1Sl8IiWQlPlQR
cHjNh4HKnl5x1BLJGI0Qb4+7o1OKdYbuBnL2re6twWli8tjWUerVVQvqfbgkHEKOg6XcLixSssVm
H4vHo7ZKAdI1iEmzfRbfEMAC3gm1es9vPikSvAWQOqDajggbIvTpZcGoRW83FsUKJaZN2F5qgvMi
tj0q6NudoGMTxI6ETEsLa99rBrPNWuC6MmsdTVKOciNhJ0/aZUQjR+4GkHbfNq9Qa7KN5XpMoXCE
mvkEYno7f9yFl+XkgUFtiPZYXUYm++Vxuzi2exjz7cfwYEmQOJw1x7x3oOCuOqPm6GfHkZ07ydt/
OEDbF/NAkjRuOyJHppZvYm7BOHQvB1DG6q9KMNF3uNHD5fWobwpFEaYLlEKGXe0tN/16E03IBah6
7v3mnS/PaiJu0Hd3NUVQobPUl68l7t3qfFAiO7Fzxc0w1QBZF6NIFaMDHHWRYyFc4TFo5z63NLLj
SQP1KVQIFAMF0Qthlbire6CY/YaLuwZZ9vG8Kzm6FNMkF4XlELU6Ehy227aNRAsiE8eBJ0ljQwNq
HCxVTrTowpZ9A0Vfk2ejCrKqaOKO4/eEvCxSFlsbskoqvGimX0QrzSR2COIlBVmAwcZOkSZZ6l2g
hvmcYXNSaJl2DfIrHSTzJIxFZrYNNeG9EKQwWf5oYwKEjTjbgMOhEsgQrLVFEZGBKoJqPaYzW8XX
pYhtO3RQhaz6N2qTqPuk063xc5LALcsophwk3OW7h1GgDmMCvYDtwQK4wyvNm94e1fnjYGJKpt3H
D8f+PT64uL+/b6T0xc3j/ePssRefoLjsj+KHh4c+qRc4LwGhWs63ZVpnZgCvIGkr8x/mN6Mbi1sx
xYh/0eWBuwqoHn1tytSU29B+dbsVMScl+JTH784zKUuxCEP0FW2DNWNrWFQSoUJX94WURCL8+muF
+Ws4DqbBtW0EUFoGX8X5CvbV+6289s4xS7CvfIg3MO8H8LRy5rvpTWMJCGU/FEYseYUH5APIjYR4
d+luAup7YTZehT+DPwGzwnskUfjwy1P4C47+Q6R9fKgITcL/Au8igUOIFDCnLzEgLFzfKypFyLHk
BNYDYqwpqDIKxiEkQKoopIhxuKaChmlVmGJLN33X9EXOwIxC4tJfQ8YAYvtQ7lSIBnIrQYlxW/bG
p6PL/RF9pR/qV1d9T2RQeyedKeqe47U+EelPqUC7bob+OLCrOC5XY7A0jK9aswADjs8BHr9cfc6I
ugkI6fGqEBo5wNr//Oh9Vn2UCFXiAB2xDUCkB6ttgQWFAFx2FGAI79P7pycPrkuP7//9MbBHgdtB
rz+t3fUJ2l0Pa/fXCjM5QZjJAVODRRdeEITmLwQtq3jswvWLcsKXFDJC/JmYDdTH+a7a+tFUvoEk
ykh6eN9EpwWyuZYfDeTGvINGnp5g5O+LSJTLA25PMF19Ao3god8hQG3rmGXaugF1HFfMTjqo1QGJ
2QnqG62gRlk93obqod8h3Wzr7/T3XwVcsxOsMTs9tf+Izp2HJiZAeP1rrf8DUEsDBAoAAAAAABuX
KEUAAAAAAAAAAAAAAAAvABwAcmV0cmllcy93ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9nbHNsL3Zh
cmlhYmxlcy9VVAkAA2ZeDlRtXg5UdXgLAAEE9gEAAARQAAAAUEsDBBQAAgAIABuXKEU3LHQmjgAA
ALEAAABHABwAcmV0cmllcy93ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9nbHNsL3ZhcmlhYmxlcy9n
bC1wb2ludGNvb3JkLWFjdHVhbC50eHRVVAkAA2ZeDlRmXg5UdXgLAAEE9gEAAARQAAAAJY2xCsMw
DER3f4V+oPbeLUtLIUMhgY7BdpTEoFhBcprfr03hhscddzduSaGgFpAzV9oQPhiePYzNo6QFZwhI
fEHK4DOkRfyOlWYQPFiKwrsbBmCBR/fqrTGteQdr3V+CyqdEVHdhWGlqZ9OSqBqR88Ky+xzRraTk
vl6SDy1a6XZwyiUyy2y3spNp88b8AFBLAwQUAAIACAAblyhFz+h5Q/QAAADoAQAARQAcAHJldHJp
ZXMvd2ViZ2wvMS4wLjEvY29uZm9ybWFuY2UvZ2xzbC92YXJpYWJsZXMvZ2wtcG9pbnRjb29yZC1k
aWZmLnR4dFVUCQADZl4OVGZeDlR1eAsAAQT2AQAABFAAAADFjz1PxDAMhvf8Cu8lCR1YmHqIDyFu
QNyJG09p6raR3KRKHO749yQH7GxIkWNZtp7nlVKCfg+UF0z63rDRD4edPmD/4vjnu8uOBv2GhCah
JvMZMkvGxDJiysRJR+Toyv0J+4l0q65Vq23wY4iL8Rb1RIn0h4nO9FTWJpJrcJ5tCHGQeF7RMg6K
zyyapvlnHWM5G7rIdB3I9uoGmlq6TsB+dgkqCmL2pZsRitPTFvZ1Ri6VGNAjhRM4D8aDG6NZsHQD
RFxD5ASvm90OQoTHzfNWCRCX21tQSn+/EiLkaH/1jxV3HF0V/WsGNfNCQlaSaCqnYL4AUEsDBBQA
AgAIABuXKEUHniXbjQAAALEAAABJABwAcmV0cmllcy93ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9n
bHNsL3ZhcmlhYmxlcy9nbC1wb2ludGNvb3JkLWV4cGVjdGVkLnR4dFVUCQADZl4OVGZeDlR1eAsA
AQT2AQAABFAAAAAljbEKwzAMRHd/hX6g9t4tS0shQyGBjsF2lMSgWEFymt+vTeGGxx3HG7ekUFAL
yJkrbQgfDM8extZR0oIzBCS+IGXwGdIifsdKMwgeLEXh3Q0DsMCje/XWmPa8g7XuH0HlUyKquzCs
NDXZtCSqReS8sOw+R3QrKbmvl+RDm1a6HZxyicwy263sZJrGmB9QSwMEFAACAAgAG5coRRJ/L8T+
BwAAuBoAAE0AHAByZXRyaWVzL3dlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL2dsc2wvdmFyaWFibGVz
L2dsLXBvaW50Y29vcmQtcHJldHR5LWRpZmYuaHRtbFVUCQADZl4OVGZeDlR1eAsAAQT2AQAABFAA
AAC9WWtv20YW/e5fQdjYNRCYpGRJqSU5WiR+tEXTIlgH24/BkByKEw857MzQktP2v/fOiyIpUtJi
i42TkJznfZx7z53xbSZzujq7zTBK4JFjibw4Q1xg+e6ykql/cwnNQr5SvDpbUFI8X3mLFyKIxIn3
+5kHfyTeSj/BMeNIElYsvIIVeKm7IsYTzP2IScnyhTcut14C7zhZnv15Zpazi8SMMr7wLkaTue4L
HgnF9yRNbX+E4uc1Z1WR+G5oeqN+mhuZHQSjJPEukiQxfSkrpJ+inNDXhZezgokSxVbAHPE1AZHH
OPdGpqlkoJzWg2MKGr1gLVA27kg6mUx61heoEL7AnKSNTkG+Yb1Hc1Of4lQuvFEwc+0JESVFsAgp
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
L2xpbWl0cy9VVAkAA2ZeDlRtXg5UdXgLAAEE9gEAAARQAAAAUEsDBBQAAgAIABuXKEVjerB1kAAA
ALIAAABLABwAcmV0cmllcy93ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9saW1pdHMvZ2wtbWF4LXRl
eHR1cmUtZGltZW5zaW9ucy1hY3R1YWwudHh0VVQJAANmXg5UZl4OVHV4CwABBPYBAAAEUAAAABWN
zQqDMBCE73mKfQGTe29eWgoeCgo9SqKrLuSn7K7o4zeBOXx8MDPTQQKKosBnrnQgfDG8BpiaiySK
KwSM5QLK4DPQxj5hpRUYf4VV4NOPIxSGZ/8erDGt+QBrXQ2jlJMXFHdh2OPcnuaNYhVLyVvh5POC
LlIiFbfHLvm7U7z1ZOxWSpiFShZ7aIqm7RvzB1BLAwQUAAIACAAblyhF6a7hFvYAAADxAQAASQAc
AHJldHJpZXMvd2ViZ2wvMS4wLjEvY29uZm9ybWFuY2UvbGltaXRzL2dsLW1heC10ZXh0dXJlLWRp
bWVuc2lvbnMtZGlmZi50eHRVVAkAA2ZeDlRmXg5UdXgLAAEE9gEAAARQAAAAzY+7bsMwDEV3fQV3
V1I9dOnkFH2gaIaiDpoxUGw6JqBHIFGI+/elg/YDuhUgSILgxblXaw32M/kasNhHx84+7Xu7x+Mb
8c94qORH+4EeXUHr3VeqrBkL64ylei42I2cS/QWPJ29bc2taO6Q4pRxcHERDgeTt5HVwi0gXrhn1
SAFjoRSLxuWMA+NoeGHVNM0/sOQGrs5fDXUd6PbmDpq1dZ2C3UwFVhzkGmWbEcTXyxZ2681TkShw
RJ8uQBFcBJqyCyjbCBnPKXOB903fQ8rwvHndGgXqqr0HY6yUpEg1D7/+DyvrMJGXw19CmJmDV3pF
qWYFCecbUEsDBBQAAgAIABuXKEVTyOGIjwAAALIAAABNABwAcmV0cmllcy93ZWJnbC8xLjAuMS9j
b25mb3JtYW5jZS9saW1pdHMvZ2wtbWF4LXRleHR1cmUtZGltZW5zaW9ucy1leHBlY3RlZC50eHRV
VAkAA2ZeDlRmXg5UdXgLAAEE9gEAAARQAAAAFY3LCoMwEEX3+Yr5AZN9d25aCi4KCl1KoqMO5FFm
RvTzm8BdHA5cznSQgKIo8JkrHQhfDK8BpuYiieIKAWO5gDL4DLSxT1hpBcZfYRX49OMIheHZvwdr
THs+wFpXxyjl5AXFXRj2OLfSvFGsYil5K5x8XtBFSqTi9tglf3eKt56M3UoJs1DJYg9N0bSOMX9Q
SwMEFAACAAgAG5coRYbRQGX+BwAAvRoAAFEAHAByZXRyaWVzL3dlYmdsLzEuMC4xL2NvbmZvcm1h
bmNlL2xpbWl0cy9nbC1tYXgtdGV4dHVyZS1kaW1lbnNpb25zLXByZXR0eS1kaWZmLmh0bWxVVAkA
A2ZeDlRmXg5UdXgLAAEE9gEAAARQAAAAvVlrb9tGFv3uX0HYaA0EJilZUtaSHBWJH7uLTYtgHbQf
gyE5FCcectiZoSVn2/++d14USZGSihaNk5Cc532ce8+d8W0mc7o6u80wSuCRY4m8OENcYPnuspKp
f3MJzUK+Urw6W1BSPF95ixciiMSJ978zD/5IvJV+gmPGkSSsWHgFK/BSd0WMJ5j7EZOS5QtvXG69
BN5xsjz7/cwsZxeJGWV84V2MJnPdFzwSiu9Jmtr+CMXPa86qIvHd0PRG/TQ3MjsIRkniXSRJYvpS
Vkg/RTmhrwsvZwUTJYqtgDniawIij3HujUxTyUA5rQfHFDR6wVqgbNyRdDKZ9KwvUCF8gTlJG52C
fMN6j+amPsWpXHijYObaEyJKimARUoBlrIQbksgMJo9G31n5UJKQYl3PNLJZ16i3tnesuKTIQChZ
D8/YC+YdjWaz2XLI2BgbMwTKJx9hL2Enp5QhUIOTdSbbnlOj7kB9BLq4rRiYnkhQcdRRWaKIYj/G
lLa09PW6LSttMtDO1z5UUNtwVO4ke8Kx8t0gaPTkNmS6cLGYdXYHQI3KrdnhYVuCe2F9UA1feYF6
dDUcFE+QBEev6n9Pi/qBsvj5E+IyAFUXKeFC+nFGaDJoWLXdE8y/OrQYxzm49urIfnYPZ34DOD9S
Q1qwmznUAVokiRH1ESVriA3JetTiWCH9X6hIKHbmsOsoE6rvDBuH7vAcV1wo1yixuxGIIvBO5TwG
e9bAMcGjxTskRQvn+3BYc/y67AAzmB3zlzGxF0h21MxBylneMbbNj2oPZfWfqjzCHNCEm+gyrU7w
/TRqUTuftxKgC5e+NOgieTqd9qabpvfrHKMWmpkQMGFQJ3yLAwvPPogYcVtwmtiE1VBcq9ibcAxJ
DJrlQJIquYpOJaY1oMsmFjVOkVaswiTfRKvuAnvqT9CDY/TsqwYjEMnRGrc8s/Cua4NHFCkrqoEx
pAaQAUSxb15X751Xbqbzwdyb4nSXABSsYMWaHhvR3DM1SZP2VHC2GB4+x/PlIU6vV7JZpimHjYph
uk6SvQW8BNPhGXh+VJrwjfdUlSXjEpiWWySDUfMcF1J4b0LYD1UyY8beho1VMQOol4DT2HlKT9Bj
Bvi/HqOEQQAJPdils7cO2CrdIErvnAS9o68Nl+Vo63foPYe6wDZdj2re6W4Ndj+4Tx3ZdUi3tumT
M2AlNrTpb3D0TKQvuQo7YwkjuBdci2VDjalV+kJIJCvxoYqAw2s+DFT09IqjpkjGaIR4u99tnVKs
I3TXkbNvdWudnCYmjm0dpV5dtaDeh0vCocxxsJTbwSIlW2zWsfl41FYpQLoGMWG2z+IbArmAd6BW
r/nNJ0WCt5CkDqi2I8KGCH162WTUorcbm8UKJaYN2F5qgv0itj0q6NudoGMDYkdC5ksLa99rBrOf
tcB1ZdbamqQc5UbCTpy0y4hGjNwNZNp927xCrck2lusxhcIRauYTiOnt/HEHL8vJA53aEO2+uoxM
9svjdnFs1zDm28fwYEmQuDxrtnnvkoI76oyavZ8dR3bOJG//4RLavpgHgqRx2hE5MrV8M+cWjEPz
ciDLWP1VCSb6Njd6uLge9Q2hKMJ0gVKIsKu96aZdL6IJuQBVz73fvPPlWU3EDfruzqYIKnSW+vK1
xL1LnQ9KZAd2jrgZpjpB1sUoUsXoAEdd5FgIV3gM2rnPLY3oeNKJ+hQqBIqBguiFsErc1S1QzH7D
xV2DLPt43pUcXYppkovK5YBajQSX2+23RaJNIhPHgSdJY6EBNQ6WKiZadGHLvoGir8mzUQVRVTTz
juP3hLwsUhZbG7JKqnzRDL+IVppJbBfgJQVZgMHGTpEmWepVoIb5nGGzU2iZdg3yKx0k8yT0RWa0
hZrwXghSOVn+aDEBwkacbcDhUAlkCObaoojIQBVBtR7Tma3i61LEfrvsoApZ9W/UJlF3pdOt8XOS
wCnLKKYcJNzhu4dRoA5jAr2A7cECuMMrzZPeHtX542BiSqbd5Ydj/x4fXNzf3zdC+uLm8f5x9tib
n6C47Efxw8NDn9QLnJeQoVrOt2VaZ2QAryBpK/If5jejG5u3YooR/6LLA3cUUC362JSpIbehvXW7
FTEnJfiUx+/OMylLsQhD9BVtgzVja5hUEqGgq9tCSiIRfv21wvw1HAfT4Np+BFBaBl/F+QrW1eut
vPbKMUuwr3yINzDuB/C0cua76U1jCghlLwojlrzCA+IB5EZCvLt0JwF1X5iNV+HP4E/IWeE9kih8
+OUp/AVH/yHSPj5UhCbhf4F3kcAhIAXM6UsMGRaO7xWVIuRYcgLzIWOsKagyCsYhBECqKKSIYQ7J
CQxbU1/V0Yr0KwjmhEAEK8GFD/VNhWggtxKkHreFbdwVXe736DP8ULs623sig2I76QxRBxuvdSek
706BZ90IfRuwKzEuV2MwLfSvWqMg6I+PAX0vV58zokp/IT1eFUKnCjDvPz96n1UbJULVNMA/bAM5
0YPZtqIC5ofTjcoQwvv0/unJg/PR4/t/fwzsVuBn0OtPa3d9gnbXw9r9tcJMThBmcsDUYNGFFwQh
/AWIsorHDpxflAe+pIB/8YcQGqi7966S+tFUtZEolEl0975BToOtOXUfhW1j3EGTTk8w6fdFJMrl
AScnmK4+gUbw0O8AR/t1zDJt3YAZjitmBx3U6oDE7AT1jVZQgqweb0P10O8QXPbr7/T3X5WmZidY
Y3Z6IP8RnTsPzTuQz/Vvrf4PUEsDBAoAAAAAAByXKEUAAAAAAAAAAAAAAAApABwAcmV0cmllcy93
ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS90ZXh0dXJlcy9VVAkAA2heDlRtXg5UdXgLAAEE9gEAAARQ
AAAAUEsDBBQAAgAIAByXKEVnBRbihwAAAKcAAABAABwAcmV0cmllcy93ZWJnbC8xLjAuMS9jb25m
b3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLXNpemUtYWN0dWFsLnR4dFVUCQADaF4OVGheDlR1eAsA
AQT2AQAABFAAAAA1jTsKwzAQRHudYi4QqU/nxiHgImBDSuPPKhbIUthd45DTRyoCUzyG+QxbECiJ
go9UaCM8ab51GKoXgyitmCnmEyFhSgiep50KrWB6Z1bBo+l7ZEbb3DtrTG1eYa0rYpJ88ELiTppf
caxPow+xGEtOPvM+pYWc0kePkv3DRcKX7KZ7NHXUmB9QSwMEFAACAAgAHJcoRYQrfpzqAAAA0AEA
AD4AHAByZXRyaWVzL3dlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1cmUtc2l6
ZS1kaWZmLnR4dFVUCQADaF4OVGheDlR1eAsAAQT2AQAABFAAAADFjkFPwzAMhe/5Fb6XxPTAhVOH
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
AAAAAAAgABwAcmV0cmllcy93ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9VVAkAA2peDlRtXg5UdXgL
AAEE9gEAAARQAAAAUEsDBAoAAAAAAByXKEUAAAAAAAAAAAAAAAAlABwAcmV0cmllcy93ZWJnbC8x
LjAuMi9jb25mb3JtYW5jZS9nbHNsL1VUCQADaF4OVG1eDlR1eAsAAQT2AQAABFAAAABQSwMECgAA
AAAAHJcoRQAAAAAAAAAAAAAAAC8AHAByZXRyaWVzL3dlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL2ds
c2wvZnVuY3Rpb25zL1VUCQADaF4OVG1eDlR1eAsAAQT2AQAABFAAAABQSwMEFAACAAgAHJcoRcVO
VmuYAAAAxAAAAFoAHAByZXRyaWVzL3dlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rp
b25zL2dsc2wtZnVuY3Rpb24tc21vb3Roc3RlcC1nZW50eXBlLWFjdHVhbC50eHRVVAkAA2heDlRo
Xg5UdXgLAAEE9gEAAARQAAAANY6xCsMwEEN3f8X9QOy9W5eWQoZCAh1D4pxjg+0Lvguhf1+7paBB
eiCk0QcGQRYoR67OI7xwufcwNhYDC66wYKQTQoY5Q3BlTljdCgV3KsLwvA4DUIHb9dFrpVrzAlqb
nwoyHcUimxOXLU5tbHIhVmApOyppzhbNFjkad2QrgTJ/Y/ePHSci8fXL3m2Y5b2j9pKiaotKfQBQ
SwMEFAACAAgAHJcoRXKLWin8AAAAIQIAAFgAHAByZXRyaWVzL3dlYmdsLzEuMC4yL2NvbmZvcm1h
bmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tc21vb3Roc3RlcC1nZW50eXBlLWRpZmYu
dHh0VVQJAANoXg5UaF4OVHV4CwABBPYBAAAEUAAAAM2Py07DMBBF9/mK2QfbFIkNqxTxEKILRCq6
rBxnklia2JE9Vtu/xw70C9ggjeYlzZx7hRCgvjylGaN60qzV86FVB+zeLf+Wx2SpV59IqCMq0hef
WDBGFgFjIo4qIAeb70/YjaQ28lbeKePd4MOsnUE1UiQ1JGfYehfXUVxHEWfveYqMixjR8WVBgecF
DWMv+cxVXdf/T6E2nDSt+poGxObmHuqSmqaC/WQjFDqE5HI3IWSZrzvYlx3Z/KiHDsmfwDrQDuwQ
9Iy56yHg4gNH+Ni2LfgAL9u3naygWm8fQEr1E9mXT8FcHR0L7jhYyos/2JITz1SJAq/qgs7kb1BL
AwQUAAIACAAclyhF9fwHlpgAAADEAAAAXAAcAHJldHJpZXMvd2ViZ2wvMS4wLjIvY29uZm9ybWFu
Y2UvZ2xzbC9mdW5jdGlvbnMvZ2xzbC1mdW5jdGlvbi1zbW9vdGhzdGVwLWdlbnR5cGUtZXhwZWN0
ZWQudHh0VVQJAANoXg5UaF4OVHV4CwABBPYBAAAEUAAAADWOsQrDMBBDd3/F/UDsvVuXlkKGQgId
Q+KcY4PtC74LoX9fu6WgQXogpNEHBkEWKEeuziO8cLn3MDYWAwuusGCkE0KGOUNwZU5Y3QoFdyrC
8LwOA1CB2/XRa6Va8wJam58KMh3FIpsTly1ObWxyIVZgKTsqac4WzRY5GndkK4Eyf2P3jx0nIvH1
y95tmOW9o/aSomrLSn0AUEsDBBQAAgAIAByXKEU+88SeAggAAN4aAABgABwAcmV0cmllcy93ZWJn
bC8xLjAuMi9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLXNtb290aHN0
ZXAtZ2VudHlwZS1wcmV0dHktZGlmZi5odG1sVVQJAANoXg5UaF4OVHV4CwABBPYBAAAEUAAAAL1Z
a2/bRhb97l9B2GgNBCYpWVLWkhwViR+7i02LYB20H4MhORQnHnLYmaElZ9v/vndeFEmRkooWjZOQ
877Pc+7Qt5nM6ersNsMogUeOJfLiDHGB5bvLSqb+zSV0C/lK8epsQUnxfOUtXoggEife/848+CPx
VvoJjhlHkrBi4RWswEs9FDGeYO5HTEqWL7xxufUSeMfJ8uz3M7Od3SRmlPGFdzGazPVY8Egovidp
ascjFD+vOauKxHdT0xv10zzInCAYJYl3kSSJGUtZIf0U5YS+LrycFUyUKLYC5oivCYg8xrk3Ml0l
A+W0HhxT0OgFa4GycUfSyWTSs79AhfAF5iRtDAryDeszmof6FKdy4Y2CmetPiCgpgk1IAZaxEm5I
IjNYPBp9Z+VDSUKKdb3SyGZdo97a3rHikiIDoWQ9PWMvmHc0ms1myyFjY2zMECiffISzhF2cUoZA
DU7WmWx7Ts26A/UR6OKOYmB6IkHFUUdliSKK/RhT2tLS1/u2rLTJQDtf+1CF2oajcifZE46V7waD
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
aWFibGVzL2dsLXBvaW50Y29vcmQtYWN0dWFsLnR4dFVUCQADaF4OVGheDlR1eAsAAQT2AQAABFAA
AAAljbEKwzAMRHd/hX6g9t4tS0shQyGBjsF2lMSgWEFymt+vTeGGxx13N25JoaAWkDNX2hA+GJ49
jM2jpAVnCEh8QcrgM6RF/I6VZhA8WIrCuxsGYIFH9+qtMa15B2vdX4LKp0RUd2FYaWpn05KoGpHz
wrL7HNGtpOS+XpIPLVrpdnDKJTLLbLeyk2nzxvwAUEsDBBQAAgAIAByXKEVAIitY9AAAAOgBAABF
ABwAcmV0cmllcy93ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9nbHNsL3ZhcmlhYmxlcy9nbC1wb2lu
dGNvb3JkLWRpZmYudHh0VVQJAANoXg5UaF4OVHV4CwABBPYBAAAEUAAAAMWPwU7DMAyG73kK30sS
hsSFU4cGCLEDohM7TmnqtpHcZEocNt6eZMCdG1LkWJat7/ullKDfA+UFk94YNvph3+k99i+Of777
7GjQb0hoEmoynyGzZEwsI6ZMnHREjq7cn7CfSK/UtbrRNvgxxMV4i3qiRPrDRGd6KmsTyWNwnm0I
cZB4PqJlHBSfWTRN8886xnI2dJFpW5Crq1toamlbAbvZJagoiNmXbkYoTk9b2NUZuVRiQI8UTuA8
GA9ujGbB0g0Q8RgiJ3hddx2ECI/r560SIC63d6CU/n4lRMjR/uofKu4wuir61wxq5oWErCTRVE7B
fAFQSwMEFAACAAgAHJcoRQeeJduNAAAAsQAAAEkAHAByZXRyaWVzL3dlYmdsLzEuMC4yL2NvbmZv
cm1hbmNlL2dsc2wvdmFyaWFibGVzL2dsLXBvaW50Y29vcmQtZXhwZWN0ZWQudHh0VVQJAANoXg5U
aF4OVHV4CwABBPYBAAAEUAAAACWNsQrDMAxEd3+FfqD23i1LSyFDIYGOwXaUxKBYQXKa369N4YbH
Hccbt6RQUAvImSttCB8Mzx7G1lHSgjMEJL4gZfAZ0iJ+x0ozCB4sReHdDQOwwKN79daY9ryDte4f
QeVTIqq7MKw0Ndm0JKpF5Lyw7D5HdCspua+X5EObVrodnHKJzDLbrexkmsaYH1BLAwQUAAIACAAc
lyhFQeERSv0HAAC4GgAATQAcAHJldHJpZXMvd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvZ2xzbC92
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
TJ3coLapEA3kVoLE47agjXuiy/0efX4falfnek9kUGgnnSHqUOO17oP0vSlwrBuhbwJ25cXlagxm
hf5VaxQE/PExQNqXq88ZUWW/kB6vCqHTBJj2+4/eZ9VGiVD1DHAP20A+9GC2raaA9eFko7KD8D69
f3ry4Gz0+P7Hj4HdCnwMev3P2l2foN31sHZ/rzCTE4SZHDA1WHThBUFo/gJCWcVjh80vyglfUqJQ
eCpAA3Xt3tVRP5qaNnKEsoju3rfHaag1B+6jqG2MO2jR6QkW/WcRiXJ5wMdw+l99Ao3god8Bjfbr
mGXaugEpHFfMDjqo1QGJ2QnqG62g+lg93obqod8htuzX/9Pff1eWmp1gjdnpcfzf6Nx5aMqBdK5/
YfUXUEsDBAoAAAAAAB2XKEUAAAAAAAAAAAAAAAAnABwAcmV0cmllcy93ZWJnbC8xLjAuMi9jb25m
b3JtYW5jZS9saW1pdHMvVVQJAANpXg5UbV4OVHV4CwABBPYBAAAEUAAAAFBLAwQUAAIACAAclyhF
Y3qwdZAAAACyAAAASwAcAHJldHJpZXMvd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvbGltaXRzL2ds
LW1heC10ZXh0dXJlLWRpbWVuc2lvbnMtYWN0dWFsLnR4dFVUCQADaF4OVGheDlR1eAsAAQT2AQAA
BFAAAAAVjc0KgzAQhO95in0Bk3tvXloKHgoKPUqiqy7kp+yu6OM3gTl8fDAz00ECiqLAZ650IHwx
vAaYmoskiisEjOUCyuAz0MY+YaUVGH+FVeDTjyMUhmf/HqwxrfkAa10No5STFxR3Ydjj3J7mjWIV
S8lb4eTzgi5SIhW3xy75u1O89WTsVkqYhUoWe2iKpu0b8wdQSwMEFAACAAgAHJcoRRXRbOT2AAAA
8QEAAEkAHAByZXRyaWVzL3dlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL2xpbWl0cy9nbC1tYXgtdGV4
dHVyZS1kaW1lbnNpb25zLWRpZmYudHh0VVQJAANoXg5UaV4OVHV4CwABBPYBAAAEUAAAAM2PwU7D
MAyG730K30sShsSFU4cGCLEDohM7TlnrrpacZEocrbw9yQQPwA3Jsi3Lv77/V0qB+QycHSazsWLN
0743ezy+kfyMx0w8mg9ktAkN26+QRQkmURFTZkkmokQq+gseT2xW+lbfmSH4KURn/VA05Ki8nVg5
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
b25mb3JtYW5jZS9vZ2xlcy9HTC9VVAkAA2leDlRtXg5UdXgLAAEE9gEAAARQAAAAUEsDBAoAAAAA
AB2XKEUAAAAAAAAAAAAAAAAzABwAcmV0cmllcy93ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9vZ2xl
cy9HTC9vcGVyYXRvcnMvVVQJAANpXg5UbV4OVHV4CwABBPYBAAAEUAAAAFBLAwQUAAIACAAdlyhF
miXocpIAAAC/AAAAUgAcAHJldHJpZXMvd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2Uvb2dsZXMvR0wv
b3BlcmF0b3JzL29wZXJhdG9yc18wMDlfdG9fMDE2LWFjdHVhbC50eHRVVAkAA2leDlRpXg5UdXgL
AAEE9gEAAARQAAAARY1BCoMwEEX3OcWcILGbQrtzUym4KCh0GaKONRAzMjPi9Ws2LfzF48Hn9UsU
UBQF3vNJC8Ibh6aFvrgURXGCARMdEDOEDHHmsOJJEzBuxCrwqrsOiOFRP1trTHnewVr3G6PQziOK
O3D4JF96fo7pFCPlmXgNeURHn2Ka1tGGHJRY/uSr6uaVfHW52kXXZErMmC9QSwMEFAACAAgAHZco
RShJYZ36AAAADAIAAFAAHAByZXRyaWVzL3dlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL29nbGVzL0dM
L29wZXJhdG9ycy9vcGVyYXRvcnNfMDA5X3RvXzAxNi1kaWZmLnR4dFVUCQADaV4OVGleDlR1eAsA
AQT2AQAABFAAAADNj09rwzAMxe/5FLpntpPBBtspLdvKWA5jKesxOInSGJwo2DLtvv3ssj/3nQZC
ekiI33tCCFDvZMOMXj1o1urx0KgDdi+Gv8Y2GDuoN7SoPSqrPyiwYPQsHPpg2SuH7Ez8P2F3tKqU
hbxWPS0juVkvPSo62njd1YpWdJrJ+V/VFsVdy9QW5a3A84o94yD5zFme5//Hme45aHvxVVUgyqsb
yFOrqgz2k/GQqODCEtWEEO3tatinnTU+JoIOLZ3ALKAXMKPTM0Y1gMOVHHt43TQNkIOnzXMtM8gu
v/cgpfqpGImC67/DtInYjib5/0MiOfFsM5G4WZ6oEfoJUEsDBBQAAgAIAB2XKEWql7mPkgAAAL8A
AABUABwAcmV0cmllcy93ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMv
b3BlcmF0b3JzXzAwOV90b18wMTYtZXhwZWN0ZWQudHh0VVQJAANpXg5UaV4OVHV4CwABBPYBAAAE
UAAAAEWNQQqDMBBF9znFnCCxm0K7c1MpuCgodBmijjUQMzIz4vVrNi38xePB5/VLFFAUBd7zSQvC
G4emhb64FEVxggETHRAzhAxx5rDiSRMwbsQq8Kq7DojhUT9ba0x53sFa9xuj0M4jijtw+CRfen6O
6RQj5Zl4DXlER59imtbRhhyUWP7kq+rmlXx1udpF12RK1JgvUEsDBBQAAgAIAB2XKEUS4NsyBAgA
ANEaAABYABwAcmV0cmllcy93ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRv
cnMvb3BlcmF0b3JzXzAwOV90b18wMTYtcHJldHR5LWRpZmYuaHRtbFVUCQADaV4OVGleDlR1eAsA
AQT2AQAABFAAAAC9WWtz27gV/e5fwbGn9cyOSUqW5FqSo07ix7bT7E6mznQ/ekASFBGDBAuAlpzu
/vdevCiSIiW13WmchCSe93HuPRfwXSZzujq7yzBK4JFjibw4Q1xg+eGykql/ewnNQr5TvDpbUFK8
XnmLNyKIxIn3rzMP/ki8lX6CY8aRJKxYeAUr8FJ3RYwnmPsRk5LlC29cbr0E3nGyPPvtzCxnF4kZ
ZXzhXYwmc90XPBGKH0ia2v4Ixa9rzqoi8d3Q9Fb9NDcyOwhGSeJdJEli+lJWSD9FOaHvCy9nBRMl
iq2AOeJrAiKPce6NTFPJQDmtB8cUNHrDWqBs3JF0Mpn0rC9QIXyBOUkbnYJ8x3qP5qY+xalceKNg
5toTIkqKYBFSgGWshBuSyAwmj0Z/sPKhJCHFup5pZLOuUW9t71hxSZGBULIenrE3zDsazWaz5ZCx
MTZmCJRPPsNewk5OKUOgBifrTLY9p0bdg/oIdHFbMTA9kaDiqKOyRBHFfowpbWnp63VbVtpkoJ2v
faigtuGo3En2jGPlu0HQ6MltyHThYjHr7A6AGpVbs8PjtgT3wvqgGr7yAvXoajgoniAJjt7V/54W
9RNl8esXxGUAqi5SwoX044zQZNCwartnmH91aDGOc3Dt1ZH97B7O/AZwfqSGtGA3c6gDtEgSI+oj
StYQG5L1qMWxQvpfUJFQ7Mxh11EmVN8ZNg7d4TmuuFCuUWJ3IxBF4J3KeQz2rIFjgkeLd0iKFs73
4bDm+H3ZAWYwO+YvY2IvkOyomYOUs7xjbJsf1R7K6j9XeYQ5oAk30WVaneD7adSidj5vJUAXLn1p
0EXydDrtTTdN79c5Ri00MyFgwqBO+BYHFp59EDHituA0sQmrobhWsTfhGJIYNMuBJFVyFZ1KTGtA
l00sapwirViFSb6JVt0F9tSfoAfH6NVXDUYgkqM1bnlm4V3XBo8oUlZUA2NIDSADiGLfvK7eO6/c
TueDuTfF6S4BKFjBijU9NqK5Z2qSJu2p4GwxPHyO58tDnF6vZLNMUw4bFcN0nSR7C3gJpsMz8Pyo
NOEP3nNVloxLYFpukQxGzXNcSOH9EMJ+qJIZM/Y2bKyKGUC9BJzGzlN6gh4zwP/1GCUMAkjowS6d
3Thgq3SDKL13EvSOvjZclqOt36H3HOoC23Q9qnmnuzXY/eA+dWTXId3apk/OgJXY0Ka/wdErkb7k
KuyMJYzgXnAtlg01plbpCyGRrMSnKgIOr/kwUNHTK46aIhmjEeLtfrd1SrGO0F1Hzr7XrXVympg4
tnWUenXVgnofLgmHMsfBUm4Hi5RssVnH5uNRW6UA6RrEhNk+i28I5ALegVq95nefFAneQpI6oNqO
CBsi9Ollk1GL3m5tFiuUmDZge6kJ9ovY9qigNztBxwbEjoTMlxbWvtcMZj9rgevKrLU1STnKjYSd
OGmXEY0YuR/ItPu2eYdak20s12MKhSPUzCcQ0838aQcvy8kDndoQ7b66jEz2y+N2cWzXMObbx/Bg
SZC4PGu2+eiSgjvqjJq9Xx1Hds4kN39yCW1fzANB0jjtiByZWr6ZcwvGoXk5kGWs/qoEE32bGz1c
XI/6hlAUYbpAKUTY1d50064X0YRcgKrn3q/e+fKsJuIGfXdnUwQVOkt9+V7i3qXOByWyAztH3AxT
nSDrYhSpYnSAoy5yLIQrPAbt3OeWRnQ860R9ChUCxUBB9EZYJe7rFihmv+PivkGWfTzvSo4uxTTJ
ReVyQK1Ggsvt9tsi0SaRiePAk6Sx0IAaB0sVEy26sGXfQNHX5NmogqgqmnnH8XtC3hYpi60NWSVV
vmiGX0QrzSS2C/CSgizAYGOnSJMs9SpQw3zNsNkptEy7BvmVDpJ5EvoiM9pCTXhvBKmcLH+ymABh
I8424HCoBDIEc21RRGSgiqBaj+nMVvF1KWK/XXZQhaz6N2qTqLvS6db4OUnglGUUUw4S7vDdwyhQ
hzGB3sD2YAHc4ZXmSW+P6vxxMDEl0+7yw7F/jw8uHh4eGiF9cfv08DR76s1PUFz2o/jx8bFP6gXO
S8hQLefbMq0zMoBXkLQV+Y/z29GtzVsxxYi/6PLAHQVUiz42ZWrIXWhv3e5EzEkJPuXxh/NMylIs
whB9Q9tgzdgaJpVEKOjqtpCSSITf/llh/h6Og2lwbT8CKC2Db+J8Bevq9VZee+WYJdhXPsQbGPdn
8LRy5ofpbWMKCGUvCiOWvMMD4gHkRkJ8uHQnAXVfmI1X4T/An5CzwgckUfj4y3P4C47+RqR9fKoI
TcK/A+8igUNACpjTlxgyLBzfKypFyLHkBOZDxlhTUGUEqkAApIpCihiHSnUR/vg5hMoVzgWMi93b
y2g0f5HsZTS+8aHMqRAN5FaC8OO2zI0ro8v9Hn2UH2pXR3xPZFBzJ50h6nzjta6G9BUq0K0boS8F
dpXG5WoMFob+VWsUxP7xMcDfl6uvGVEnACE9XhVCZwyw8o+fva+qjRKhShugIbaB1OjBbFtYQQEA
hxyVKIT35ePzswfHpKePf/0c2K3A3aDX/6zd9QnaXQ9r9/sKMzlBmMkBU4NFF14QhPVfwCureOyQ
+qL88JISBc7/Aq6Buo/vaqwfTb0byUPZR3fvW+c0DJuT+FEMN8YdtO/0BPv+sYhEuTzg8QTT1RfQ
CB76HbBpv45Zpq0bsMVxxeygg1odkJidoL7RCsqS1dNdqB76HSLNfv0//f175azZCdaYnR7V/4nO
nYfmIkju+jdZ/wZQSwMECgAAAAAAHZcoRQAAAAAAAAAAAAAAACkAHAByZXRyaWVzL3dlYmdsLzEu
MC4yL2NvbmZvcm1hbmNlL3RleHR1cmVzL1VUCQADal4OVG1eDlR1eAsAAQT2AQAABFAAAABQSwME
FAACAAgAHZcoRWcFFuKHAAAApwAAAEAAHAByZXRyaWVzL3dlYmdsLzEuMC4yL2NvbmZvcm1hbmNl
L3RleHR1cmVzL3RleHR1cmUtc2l6ZS1hY3R1YWwudHh0VVQJAANqXg5Ual4OVHV4CwABBPYBAAAE
UAAAADWNOwrDMBBEe51iLhCpT+fGIeAiYENK488qFshS2F3jkNNHKgJTPIb5DFsQKImCj1RoIzxp
vnUYqheDKK2YKeYTIWFKCJ6nnQqtYHpnVsGj6XtkRtvcO2tMbV5hrStiknzwQuJOml9xrE+jD7EY
S04+8z6lhZzSR4+S/cNFwpfspns0ddSYH1BLAwQUAAIACAAdlyhFPB653+sAAADQAQAAPgAcAHJl
dHJpZXMvd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1zaXplLWRpZmYu
dHh0VVQJAANqXg5Ual4OVHV4CwABBPYBAAAEUAAAAMWOQU/DMAyF7/kVvpfEDIkLpw7BJsQOiE7s
OKWtSyO5zZQ4WuHXk0zszBHJsp8s+71Paw344TlNFPHJisXnQ4MHal+d/I7H5LjHd2KykZDtl0+i
haLoQDGxRAwkweX/M7WfjCtza+6w8/Pgw2TnjlBokZSPr0JH902alhN1Qr2RRVRVVf/FYTtJli8U
dQ16dXMPVWl1rWA/ugglA0KasxoJMsx2B/uyYxczP7TE/gxuBjuDG4KdKKseAp18kAhv66YBH2Cz
ftkZBery+wDGYK5M41PortDHknUcHOfFn+RmlImVLv6qKu7Z/AdQSwMEFAACAAgAHZcoRVe3Rx+H
AAAApwAAAEIAHAByZXRyaWVzL3dlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1
cmUtc2l6ZS1leHBlY3RlZC50eHRVVAkAA2peDlRqXg5UdXgLAAEE9gEAAARQAAAANY07CsMwEER7
nWIuEKlP58Yh4CJgQ0rjzyoWyFLYXeOQ00cqAlM8hvkMWxAoiYKPVGgjPGm+dRiqF4MorZgp5hMh
YUoInqedCq1gemdWwaPpe2RG29w7a0xtXmGtK2KSfPBC4k6aX3GsT6MPsRhLTj7zPqWFnNJHj5L9
w0XCl+ymezR13JgfUEsDBBQAAgAIAB2XKEUf/1VF8gcAAKcaAABGABwAcmV0cmllcy93ZWJnbC8x
LjAuMi9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLXNpemUtcHJldHR5LWRpZmYuaHRtbFVU
CQADal4OVGpeDlR1eAsAAQT2AQAABFAAAAC9WWtv20YW/e5fQdjYNRCYpGRJqSU5WiR+tEXTIlgH
24/BkByKEw857MzQktP2v/fOiyIpUtJii42TkJznfZx7z53xbSZzujq7zTBK4JFjibw4Q1xg+e6y
kql/cwnNQr5SvDpbUFI8X3mLFyKIxIn3+5kHfyTeSj/BMeNIElYsvIIVeKm7IsYTzP2IScnyhTcu
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
po4yIZE7S/lrwLidpLggaQBNTYVZqA4KVB23NWx8ILo8HTEH96H3+kCPAHudcX2UQe2vQE4I6kvp
pcw3gGNjcbn+YxnL/Qq8CkLrlijke1Nw3CsDVl+ub37+afvz5w36cbPdfvxhszTz0PfzJboHftoI
oRFXVowhKiEJQfsS8fgrmI/+RB4xq+BoA/C8hMWIOV6H4Eji2qfLP7uNIeBgrr80TW/g93Lthp3s
/+xYmcPR5XXfvurX8Rtcej3s0vuc6oOUVEhUpTSFF8D6w2d0r98xKnWHCGzOn4BhtD9dfwp9FJwV
db2V6JeP2y2C0+bdx799DrtO/H3WXb/Busmwdf9fZSZvUGb6gqvBo0sUhhH8g9zllUiIS/kvOgJf
Mqgm8u15H+pfY/wezHYuprxBBTG/HPkvUEsDBAoAAAAAANKWKEUAAAAAAAAAAAAAAAAdABwAd2Vi
Z2wvMS4wLjEvY29uZm9ybWFuY2UvZ2xzbC9VVAkAA9tdDlRtXg5UdXgLAAEE9gEAAARQAAAAUEsD
BAoAAAAAANKWKEUAAAAAAAAAAAAAAAAnABwAd2ViZ2wvMS4wLjEvY29uZm9ybWFuY2UvZ2xzbC9m
dW5jdGlvbnMvVVQJAAPbXQ5UbV4OVHV4CwABBPYBAAAEUAAAAFBLAwQUAAIACADSlihFxU5Wa5gA
AADEAAAAUgAcAHdlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVu
Y3Rpb24tc21vb3Roc3RlcC1nZW50eXBlLWFjdHVhbC50eHRVVAkAA9tdDlTbXQ5UdXgLAAEE9gEA
AARQAAAANY6xCsMwEEN3f8X9QOy9W5eWQoZCAh1D4pxjg+0Lvguhf1+7paBBeiCk0QcGQRYoR67O
I7xwufcwNhYDC66wYKQTQoY5Q3BlTljdCgV3KsLwvA4DUIHb9dFrpVrzAlqbnwoyHcUimxOXLU5t
bHIhVmApOyppzhbNFjkad2QrgTJ/Y/ePHSci8fXL3m2Y5b2j9pKiaotKfQBQSwMEFAACAAgA0pYo
RfOjHFH4AAAAEQIAAFAAHAB3ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9n
bHNsLWZ1bmN0aW9uLXNtb290aHN0ZXAtZ2VudHlwZS1kaWZmLnR4dFVUCQAD210OVNtdDlR1eAsA
AQT2AQAABFAAAADNj89OwzAMxu95Ct9LEnrgwqlDDITYAdGJHaesddtIblIljra9PUkZT8AFyfI/
yf59n5QS9JenNGPUz4aN3h5afcDTu+VbeUqWev2JhCaiJnP1iSVjZBkwJuKoz3gaSdfqXtW6827w
YTauQz1SJD0k17H1Lq6j/B1lnL3nKTIuckTH1wUlXhbsGHvFFxZVVf0fZabjZGjV1TQg67sHqEpq
GgH7yUYoVAjJ5W5CyPJed7AvO7L5UQ8nJH8G68A4sEMwM+auh4CLDxzhY9O24AO8bN52SoBYbx9B
Kf0T2Y9PocObo2PBHQdLefEHW2rimYQscFEVdCZ/A1BLAwQUAAIACADSlihF9fwHlpgAAADEAAAA
VAAcAHdlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24t
c21vb3Roc3RlcC1nZW50eXBlLWV4cGVjdGVkLnR4dFVUCQAD210OVNtdDlR1eAsAAQT2AQAABFAA
AAA1jrEKwzAQQ3d/xf1A7L1bl5ZChkICHUPinGOD7Qu+C6F/X7uloEF6IKTRBwZBFihHrs4jvHC5
9zA2FgMLrrBgpBNChjlDcGVOWN0KBXcqwvC8DgNQgdv10WulWvMCWpufCjIdxSKbE5ctTm1sciFW
YCk7KmnOFs0WORp3ZCuBMn9j948dJyLx9cvebZjlvaP2kqJqy0p9AFBLAwQUAAIACADSlihF3Df8
0P8HAADWGgAAWAAcAHdlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wt
ZnVuY3Rpb24tc21vb3Roc3RlcC1nZW50eXBlLXByZXR0eS1kaWZmLmh0bWxVVAkAA9tdDlTbXQ5U
dXgLAAEE9gEAAARQAAAAvVlrb9tGFv3uX0HYaA0EJilZUtaSHBWJH7uLTYtgHbQfgyE5FCcectiZ
oSVn2/++d14USZGSihaNk5Dzvs9z7tC3mczp6uw2wyiBR44l8uIMcYHlu8tKpv7NJXQL+Urx6mxB
SfF85S1eiCASJ97/zjz4I/FW+gmOGUeSsGLhFazASz0UMZ5g7kdMSpYvvHG59RJ4x8ny7Pczs53d
JGaU8YV3MZrM9VjwSCi+J2lqxyMUP685q4rEd1PTG/XTPMicIBgliXeRJIkZS1kh/RTlhL4uvJwV
TJQotgLmiK8JiDzGuTcyXSUD5bQeHFPQ6AVrgbJxR9LJZNKzv0CF8AXmJG0MCvIN6zOah/oUp3Lh
jYKZ60+IKCmCTUgBlrESbkgiM1g8Gn1n5UNJQop1vdLIZl2j3treseKSIgOhZD09Yy+YdzSazWbL
IWNjbMwQKJ98hLOEXZxShkANTtaZbHtOzboD9RHo4o5iYHoiQcVRR2WJIor9GFPa0tLX+7astMlA
O1/7UIXahqNyJ9kTjpXvBoNGL26HTDdcbMw6u0NAjcqtOeFhW4J7YX9QDV95gXp0NRwUT5AER6/q
f0+L+oGy+PkT4jIAVRcp4UL6cUZoMmhYddwTrL86tBnHObj26sh59gxnfhNwfqSmtMJu5qIOokWS
GFEfUbKG3JCsRy2OVaT/CxUJxc4cdh9lQtXOsHHoLp7jigvlGiV2NwNRBN6pnMfgzDpwTPJo8Q5J
0Yrz/XBYc/y67ARmMDvmL2NiL5DsqJmDlLO8Y2yLj+oMZfWfqjzCHKIJN6PL9DrB92HURu183gJA
ly59MOgyeTqd9sJN0/s1xqiNZiYFTBrUgG/jwIZnX4gYcVvhNLGA1VBcq9gLOIYkBs1yAKRKrrJT
iWkN6NDERo1TpJWrsMg32aqHwJ66CXpwjJ591WEEIjla45ZnFt51bfCIImVFNTEGaAAZQBT75nX1
3nnlZjofxN4UpzsAUGEFO9b02MjmnqVJmrSXgrPF8PQ5ni8PcXq9k0WZphw2K4bpOkn2NvASTIdX
4PlRacI33lNVloxLYFpuIxmMmue4kMJ7E8J5qJIZM/Y2bKyKGYh6CXEaO0/pBXrOAP/Xc5QwCEJC
T3Zw9tYFtoIbROmdk6B39rXhshxt/Q6951AX2K7rUc073aPB7gfPqTO7TunWMX1yBqzEhjb9DY6e
ifQlV2lnLGEE94JrsWyoMbVKXwiJZCU+VBFweM2HgcqeXnHUEskYjRBvj7ujU4p1hu4Gcvat7q3B
aWLy2NZR6tVVC+p9uCQcQo6DpdwuLFKyxWYfi8ejtkoB0jWISbN9Ft8QwALeCbV6z28+KRK8BZA6
oNqOCBsi9OllwahFbzcWxQolpk3YXmqC8yK2PSro252gYxPEjoRMSwtr32sGs81a4Loyax1NUo5y
I2EnT9plRCNH7gaQdt82r1Brso3lekyhcISa+QRiejt/3IWX5eSBQW2I9lhdRib75XG7OLZ7GPPt
x/BgSZA4nDXHvHeg4K46o+boZ8eRnTvJ2384QNsX80CSNG47Ikemlm9ibsE4dC8HUMbqr0ow0Xe4
0cPl9ahvCkURpguUQoZd7S03/XoTTcgFqHru/eadL89qIm7Qd3c1RVChs9SXryXu3ep8UCI7sXPF
zTDVAFkXo0gVowMcdZFjIVzhMWjnPrc0suNJA/UpVAgUAwXRC2GVuKt7oJj9hou7Bln28bwrOboU
0yQXheUQtToSHLbbto1ECyITx4EnSWNDA2ocLFVOtOjCln0DRV+TZ6MKsqpo4o7j94S8LFIWWxuy
Siq8aKZfRCvNJHYI4iUFWYDBxk6RJlnqXaCG+Zxhc1JomXYN8isdJPMkjEVmtg014b0QpDBZ/mhj
AoSNONuAw6ESyBCstUURkYEqgmo9pjNbxdeliG07dFCFrPo3apOo+6TTrfFzksAtyyimHCTc5buH
UaAOYwK9gO3BArjDK82b3h7V+eNgYkqm3ccPx/49Pri4v79vpPTFzeP94+yxF5+guOyP4oeHhz6p
FzgvAaFazrdlWmdmAK8gaSvzH+Y3oxuLWzHFiH/R5YG7CqgefW3K1JTb0H51uxUxJyX4lMfvzjMp
S7EIQ/QVbYM1Y2tYVBKhQlf3hZREIvz6a4X5azgOpsG1bQRQWgZfxfkK9tX7rbz2zjFLsK98iDcw
7wfwtHLmu+lNYwkIZT8URix5hQfkA8iNhHh36W4C6nthNl6FP4M/AbPCeyRR+PDLU/gLjv5DpH18
qAhNwv8C7yKBQ4gUMKcvMSAsXN8rKkUISLGmoMIoGIcQ+KmijiLG4ZoKGqZVYYos3fRd0xc5A/MJ
iUt/DZkCSO1DmVMhGsitBOHHbZkbn4wu90f0VX6oX13xPZFBzZ10pqj7jdf6NKQ/oQLduhn6o8Cu
0rhcjcHCML5qzYLcPz4H+Pty9Tkj6gYgpMerQmjEACv/86P3WfVRIlRpAzTENgCNHqy2hRUUAHDJ
UUAhvE/vn548uCY9vv/3x8AeBe4Gvf60dtcnaHc9rN1fK8zkBGEmB0wNFl14QRCavxCsrOIxtuH6
RTnhSwqZIP5MzAbqo3xXbf1oKt9AEGUkPbxvotMC2VzHjwZyY95BI09PMPL3RSTK5QG3J5iuPoFG
8NDvEKC2dcwybd2AMo4rZicd1OqAxOwE9Y1WUJusHm9D9dDvkG629Xf6+68CrtkJ1pidntp/ROfO
QxMSILz+ddb/AVBLAwQKAAAAAADNlihFAAAAAAAAAAAAAAAAJwAcAHdlYmdsLzEuMC4xL2NvbmZv
cm1hbmNlL2dsc2wvdmFyaWFibGVzL1VUCQAD0l0OVG1eDlR1eAsAAQT2AQAABFAAAABQSwMEFAAC
AAgAzZYoRTcsdCaOAAAAsQAAAD8AHAB3ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9nbHNsL3Zhcmlh
Ymxlcy9nbC1wb2ludGNvb3JkLWFjdHVhbC50eHRVVAkAA9FdDlTRXQ5UdXgLAAEE9gEAAARQAAAA
JY2xCsMwDER3f4V+oPbeLUtLIUMhgY7BdpTEoFhBcprfr03hhscddzduSaGgFpAzV9oQPhiePYzN
o6QFZwhIfEHK4DOkRfyOlWYQPFiKwrsbBmCBR/fqrTGteQdr3V+CyqdEVHdhWGlqZ9OSqBqR88Ky
+xzRraTkvl6SDy1a6XZwyiUyy2y3spNp88b8AFBLAwQUAAIACADNlihFqDxHVe8AAADYAQAAPQAc
AHdlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL2dsc2wvdmFyaWFibGVzL2dsLXBvaW50Y29vcmQtZGlm
Zi50eHRVVAkAA9FdDlTSXQ5UdXgLAAEE9gEAAARQAAAAxY/NTsMwDIDveQrfSxJ64MKpQ/wIsQNi
EztOaeq2kdykShw23p5k7AG4IVm2Zcn+PkspQX8Gygsm/WjY6KfDTh+wf3N8LQ/Z0aA/kNAk1GS+
Q2bJmFhGTJk46RP2E+lW3apW2+DHEBfjLeqJEukvE53pqZyfSK7BebYhxEHieUXLOCg+s2ia5p80
jOVs6CLRdSDbmztoauo6AfvZJagIiNmXbkYoLi9b2NcZuVT0oUcKJ3AejAc3RrNg6QaIuIbICd43
ux2ECM+b160SIC6796CU/o0iH3K0eNU/VtxxdFX0rz+omRcSspJEUzkF8wNQSwMEFAACAAgAzZYo
RQeeJduNAAAAsQAAAEEAHAB3ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9nbHNsL3ZhcmlhYmxlcy9n
bC1wb2ludGNvb3JkLWV4cGVjdGVkLnR4dFVUCQAD0V0OVNFdDlR1eAsAAQT2AQAABFAAAAAljbEK
wzAMRHd/hX6g9t4tS0shQyGBjsF2lMSgWEFymt+vTeGGxx3HG7ekUFALyJkrbQgfDM8extZR0oIz
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
AZSWwVdxvoJ19Xorr71yzBLsKx/iDYz7F3haOfPd9KYxBYSyF4URS17hAfEAciMh3l26k4C6L8zG
q/A/4E/IWeE9kih8+PUp/BVHPxFpHx8qQpPw38C7SOAQkALm9CWGDAvH94pKEUKmWFNQYRSMQwB+
qqijiHG4poKGL4gTdWMk4NMvGZRUMVMnNqhpKkQDuZUg6bgtYON+6HK/R5/bh9rVed4TGRTYSWeI
Osx4rXsgfV8K3OpG6BuAXVlxuRqDOaF/1RoFgX58DJD15epzRlS5L6THq0Lo9AAm/f6j91m1USJU
HQOcwzaQBz2YbasoYHs40aisILxP75+ePDgTPb7/8WNgtwLfgl7/s3bXJ2h3Pazd3yvM5ARhJgdM
DRZdeEEQmr+ATFbxGFtsflFO+JIShcJTARqo6/aujvrR1LSRG5RFdPe+PU5DrTloH0VtY9xBi05P
sOg/i0iUywM+hlP/6hNoBA/9Dmi0X8cs09YNyOC4YnbQQa0OSMxOUN9oBVXH6vE2VA/9DrFlv/6f
/v67stTsBGvMTo/j/0bnzkNTDaRz/YuqvwBQSwMECgAAAAAAzZYoRQAAAAAAAAAAAAAAAB8AHAB3
ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9saW1pdHMvVVQJAAPSXQ5UbV4OVHV4CwABBPYBAAAEUAAA
AFBLAwQUAAIACADNlihFY3qwdZAAAACyAAAAQwAcAHdlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL2xp
bWl0cy9nbC1tYXgtdGV4dHVyZS1kaW1lbnNpb25zLWFjdHVhbC50eHRVVAkAA9JdDlTSXQ5UdXgL
AAEE9gEAAARQAAAAFY3NCoMwEITveYp9AZN7b15aCh4KCj1Koqsu5KfsrujjN4E5fHwwM9NBAoqi
wGeudCB8MbwGmJqLJIorBIzlAsrgM9DGPmGlFRh/hVXg048jFIZn/x6sMa35AGtdDaOUkxcUd2HY
49ye5o1iFUvJW+Hk84IuUiIVt8cu+btTvPVk7FZKmIVKFntoiqbtG/MHUEsDBBQAAgAIAM2WKEWp
xGSu8QAAAOEBAABBABwAd2ViZ2wvMS4wLjEvY29uZm9ybWFuY2UvbGltaXRzL2dsLW1heC10ZXh0
dXJlLWRpbWVuc2lvbnMtZGlmZi50eHRVVAkAA9JdDlTSXQ5UdXgLAAEE9gEAAARQAAAAxY+9asMw
EIB3PcXtjqR66NLJKf0hNEOpQzMG2T7HgpMUpBNx375SyAt0KojTcT9830kpQX8Hyg6TfjFs9Oux
10ccPizfv+dsadJfSGgSajI/IbNkTCwjpkyc9BWHM+lWPahWj8HPITrjxzJrnS3tM0ln1rKyco4o
J+vQJxt8krhecGScFK8smqb5RxUzcjZ0E+k6kO3mEZoauk7AYbEJKgZi9iVbEIrP+x4OtUY2lRNg
QApXsB6MBztH47BkE0S8hMgJPrd9DyHC23a3VwLEbfcJlNLlFfuQ44h3/1NlnWZLpfCXI9TCjoSs
KNFUUOH8AlBLAwQUAAIACADNlihFU8jhiI8AAACyAAAARQAcAHdlYmdsLzEuMC4xL2NvbmZvcm1h
bmNlL2xpbWl0cy9nbC1tYXgtdGV4dHVyZS1kaW1lbnNpb25zLWV4cGVjdGVkLnR4dFVUCQAD0l0O
VNJdDlR1eAsAAQT2AQAABFAAAAAVjcsKgzAQRff5ivkBk313bloKLgoKXUqiow7kUWZG9PObwF0c
DlzOdJCAoijwmSsdCF8MrwGm5iKJ4goBY7mAMvgMtLFPWGkFxl9hFfj04wiF4dm/B2tMez7AWlfH
KOXkBcVdGPY4t9K8UaxiKXkrnHxe0EVKpOL22CV/d4q3nozdSgmzUMliD03RtI4xf1BLAwQUAAIA
CADNlihFraeqYPoHAAC1GgAASQAcAHdlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL2xpbWl0cy9nbC1t
YXgtdGV4dHVyZS1kaW1lbnNpb25zLXByZXR0eS1kaWZmLmh0bWxVVAkAA9JdDlTSXQ5UdXgLAAEE
9gEAAARQAAAAvVlrb9tGFv3uX0HYaA0EJilZUtaSHBWJH7uLTYtgHbQfgyE5FCcectiZoSVn2/++
d14USZGSihaNk5Cc532ce8+d8W0mc7o6u80wSuCRY4m8OENcYPnuspKpf3MJzUK+Urw6W1BSPF95
ixciiMSJ978zD/5IvJV+gmPGkSSsWHgFK/BSd0WMJ5j7EZOS5QtvXG69BN5xsjz7/cwsZxeJGWV8
4V2MJnPdFzwSiu9Jmtr+CMXPa86qIvHd0PRG/TQ3MjsIRkniXSRJYvpSVkg/RTmhrwsvZwUTJYqt
gDniawIij3HujUxTyUA5rQfHFDR6wVqgbNyRdDKZ9KwvUCF8gTlJG52CfMN6j+amPsWpXHijYOba
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
dXJlcy9VVAkAA+BdDlRtXg5UdXgLAAEE9gEAAARQAAAAUEsDBBQAAgAIANSWKEVnBRbihwAAAKcA
AAA4ABwAd2ViZ2wvMS4wLjEvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1zaXplLWFjdHVh
bC50eHRVVAkAA+BdDlTgXQ5UdXgLAAEE9gEAAARQAAAANY07CsMwEER7nWIuEKlP58Yh4CJgQ0rj
zyoWyFLYXeOQ00cqAlM8hvkMWxAoiYKPVGgjPGm+dRiqF4MorZgp5hMhYUoInqedCq1gemdWwaPp
e2RG29w7a0xtXmGtK2KSfPBC4k6aX3GsT6MPsRhLTj7zPqWFnNJHj5L9w0XCl+ymezR11JgfUEsD
BBQAAgAIANSWKEX5y1jU5gAAAMABAAA2ABwAd2ViZ2wvMS4wLjEvY29uZm9ybWFuY2UvdGV4dHVy
ZXMvdGV4dHVyZS1zaXplLWRpZmYudHh0VVQJAAPgXQ5U4F0OVHV4CwABBPYBAAAEUAAAAL2OQU/D
MAyF7/kVvpfE9MCFU4cYCLEDohM7Tmnr0khuMyWOVvj1JNM4c0Oy7CfLfu/TWgN+eE4zRXy0YnF7
aPFA3auT63hIjgd8JyYbCdl++SRaKIoOFBNLxDN1n4y1uTU19n4ZfZjt0hMKrZLy0a/Q0X2TpvVE
vdBgZBVVVdV/59tekuVLetOArm/uoCqtaRTsJxeheENIS1YTQYZ43sG+7NjFzA0dsT+DW8Au4MZg
Z8pqgEAnHyTC26ZtwQd42rzsjAJ1+b0HYzBXpvEp9HSFPpas4+g4L/4kN5PMrHTxV1Vxz+Y/UEsD
BBQAAgAIANSWKEVXt0cfhwAAAKcAAAA6ABwAd2ViZ2wvMS4wLjEvY29uZm9ybWFuY2UvdGV4dHVy
ZXMvdGV4dHVyZS1zaXplLWV4cGVjdGVkLnR4dFVUCQAD4F0OVOBdDlR1eAsAAQT2AQAABFAAAAA1
jTsKwzAQRHudYi4QqU/nxiHgImBDSuPPKhbIUthd45DTRyoCUzyG+QxbECiJgo9UaCM8ab51GKoX
gyitmCnmEyFhSgiep50KrWB6Z1bBo+l7ZEbb3DtrTG1eYa0rYpJ88ELiTppfcaxPow+xGEtOPvM+
pYWc0kePkv3DRcKX7KZ7NHXcmB9QSwMEFAACAAgA1JYoRQG5On7uBwAAnxoAAD4AHAB3ZWJnbC8x
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
a2h/+lDMVIgGcitBxHFbssaHocv9EX1hH+pXF3lPZFBZJ50p6hbjtT4A6Q+lQKpuhr767+qJy9UY
7Ajjq9YsiPDjc0DTy9XnjKg6X0iPV4XQeQFs+f1H77Pqo0SoAgbIhm0gAXqw2pZPQPNwlVHpQHif
3j89eXAZenz/48fAHgVOBb3+Z+2uT9Dueli7v1eYyQnCTA6YGiy68IIghL8ANVbxGFtEflEe+JIC
2MVxWAbq63pXM/1o6tdIBcoOenjfCqdh1dyrj2K1Me+gHacn2PGfRSTK5QHPwiV/9Qk0goduAwbt
2zHLtHWD3H9cMTvpoFYHJGYnqG+0giJj9XgbqoduQ0TZt/+nv/+u3DQ7wRqz06P3v9G589DMAklc
/17qL1BLAwQKAAAAAADVlihFAAAAAAAAAAAAAAAADAAcAHdlYmdsLzEuMC4yL1VUCQAD4l0OVG1e
DlR1eAsAAQT2AQAABFAAAABQSwMECgAAAAAA/ZYoRQAAAAAAAAAAAAAAABgAHAB3ZWJnbC8xLjAu
Mi9jb25mb3JtYW5jZS9VVAkAAy1eDlRtXg5UdXgLAAEE9gEAAARQAAAAUEsDBAoAAAAAANqWKEUA
AAAAAAAAAAAAAAAdABwAd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvZ2xzbC9VVAkAA+xdDlRtXg5U
dXgLAAEE9gEAAARQAAAAUEsDBAoAAAAAANqWKEUAAAAAAAAAAAAAAAAnABwAd2ViZ2wvMS4wLjIv
Y29uZm9ybWFuY2UvZ2xzbC9mdW5jdGlvbnMvVVQJAAPsXQ5UbV4OVHV4CwABBPYBAAAEUAAAAFBL
AwQUAAIACADalihFxU5Wa5gAAADEAAAAUgAcAHdlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL2dsc2wv
ZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tc21vb3Roc3RlcC1nZW50eXBlLWFjdHVhbC50eHRVVAkA
A+xdDlTsXQ5UdXgLAAEE9gEAAARQAAAANY6xCsMwEEN3f8X9QOy9W5eWQoZCAh1D4pxjg+0Lvguh
f1+7paBBeiCk0QcGQRYoR67OI7xwufcwNhYDC66wYKQTQoY5Q3BlTljdCgV3KsLwvA4DUIHb9dFr
pVrzAlqbnwoyHcUimxOXLU5tbHIhVmApOyppzhbNFjkad2QrgTJ/Y/ePHSci8fXL3m2Y5b2j9pKi
aotKfQBQSwMEFAACAAgA2pYoRW19DAX4AAAAEQIAAFAAHAB3ZWJnbC8xLjAuMi9jb25mb3JtYW5j
ZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLXNtb290aHN0ZXAtZ2VudHlwZS1kaWZmLnR4
dFVUCQAD7F0OVOxdDlR1eAsAAQT2AQAABFAAAADNj8tOwzAQRff5itkH2xSJDasU8RCiC0Qquqwc
Z5JYmtiRPVbbv8cO5QvYII3mJc2ce4UQoL48pRmjetKs1fOhVQfs3i1fy2Oy1KtPJNQRFemLTywY
I4uAMRFHdcJuJLWRt/JOGe8GH2btDKqRIqkhOcPWu7iO4ncUcfaep8i4iBEdXxYUeF7QMPaSz1zV
df1/lGnDSdOqq2lAbG7uoS6paSrYTzZCoUJILncTQpb3uoN92ZHNj3rokPwJrAPtwA5Bz5i7HgIu
PnCEj23bgg/wsn3byQqq9fYBpFQ/kf34FAxeHR0L7jhYyos/2JITz1SJAq/qgs7kb1BLAwQUAAIA
CADalihF9fwHlpgAAADEAAAAVAAcAHdlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rp
b25zL2dsc2wtZnVuY3Rpb24tc21vb3Roc3RlcC1nZW50eXBlLWV4cGVjdGVkLnR4dFVUCQAD7F0O
VOxdDlR1eAsAAQT2AQAABFAAAAA1jrEKwzAQQ3d/xf1A7L1bl5ZChkICHUPinGOD7Qu+C6F/X7ul
oEF6IKTRBwZBFihHrs4jvHC59zA2FgMLrrBgpBNChjlDcGVOWN0KBXcqwvC8DgNQgdv10WulWvMC
WpufCjIdxSKbE5ctTm1sciFWYCk7KmnOFs0WORp3ZCuBMn9j948dJyLx9cvebZjlvaP2kqJqy0p9
AFBLAwQUAAIACADalihFUnCna/4HAADWGgAAWAAcAHdlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL2ds
c2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tc21vb3Roc3RlcC1nZW50eXBlLXByZXR0eS1kaWZm
Lmh0bWxVVAkAA+xdDlTsXQ5UdXgLAAEE9gEAAARQAAAAvVlrb9tGFv3uX0HYaA0EJilZUtaSHBWJ
H7uLTYtgHbQfgyE5FCcectiZoSVn2/++d14USZGSihaNk5Dzvs9z7tC3mczp6uw2wyiBR44l8uIM
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
YGqw6MILgtD8hWBlFY+xDdcvyglfUsgE8WdiNlAf5btq60dT+QaCKCPp4X0TnRbI5jp+NJAb8w4a
eXqCkb8vIlEuD7g9wXT1CTSCh36HALWtY5Zp6waUcVwxO+mgVgckZieob7SC2mT1eBuqh36HdLOt
v9PffxVwzU6wxuz01P4jOncempAA4fWvs/4PUEsDBAoAAAAAANWWKEUAAAAAAAAAAAAAAAAnABwA
d2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvZ2xzbC92YXJpYWJsZXMvVVQJAAPiXQ5UbV4OVHV4CwAB
BPYBAAAEUAAAAFBLAwQUAAIACADVlihFNyx0Jo4AAACxAAAAPwAcAHdlYmdsLzEuMC4yL2NvbmZv
cm1hbmNlL2dsc2wvdmFyaWFibGVzL2dsLXBvaW50Y29vcmQtYWN0dWFsLnR4dFVUCQAD4l0OVOJd
DlR1eAsAAQT2AQAABFAAAAAljbEKwzAMRHd/hX6g9t4tS0shQyGBjsF2lMSgWEFymt+vTeGGxx13
N25JoaAWkDNX2hA+GJ49jM2jpAVnCEh8QcrgM6RF/I6VZhA8WIrCuxsGYIFH9+qtMa15B2vdX4LK
p0RUd2FYaWpn05KoGpHzwrL7HNGtpOS+XpIPLVrpdnDKJTLLbLeyk2nzxvwAUEsDBBQAAgAIANWW
KEXjoEzW7wAAANgBAAA9ABwAd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvZ2xzbC92YXJpYWJsZXMv
Z2wtcG9pbnRjb29yZC1kaWZmLnR4dFVUCQAD4l0OVOJdDlR1eAsAAQT2AQAABFAAAADFj8FOwzAM
QO/5Ct9LEobEhVOHBgixA6ITO05p6raR3GRKHDb+nmTsA7ghWbZlyX7PUkrQn4HygklvDBv9tO/0
Hvs3x9fymB0N+gMJTUJN5jtkloyJZcSUiZM+YT+RXqlbdadt8GOIi/EW9USJ9JeJzvRUzk8kj8F5
tiHEQeL5iJZxUHxm0TTNP2kYy9nQRaJtQa5u7qGpqW0F7GaXoCIgZl+6GaG4vGxhV2fkUtGHHimc
wHkwHtwYzYKlGyDiMURO8L7uOggRntevWyVAXHYfQCn9G0U+5Gjxqn+ouMPoquhff1AzLyRkJYmm
cgrmB1BLAwQUAAIACADVlihFB54l240AAACxAAAAQQAcAHdlYmdsLzEuMC4yL2NvbmZvcm1hbmNl
L2dsc2wvdmFyaWFibGVzL2dsLXBvaW50Y29vcmQtZXhwZWN0ZWQudHh0VVQJAAPiXQ5U4l0OVHV4
CwABBPYBAAAEUAAAACWNsQrDMAxEd3+FfqD23i1LSyFDIYGOwXaUxKBYQXKa369N4YbHHccbt6RQ
UAvImSttCB8Mzx7G1lHSgjMEJL4gZfAZ0iJ+x0ozCB4sReHdDQOwwKN79daY9ryDte4fQeVTIqq7
MKw0Ndm0JKpF5Lyw7D5HdCspua+X5EObVrodnHKJzDLbrexkmsaYH1BLAwQUAAIACADVlihFwHjt
HfkHAACwGgAARQAcAHdlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL2dsc2wvdmFyaWFibGVzL2dsLXBv
aW50Y29vcmQtcHJldHR5LWRpZmYuaHRtbFVUCQAD4l0OVOJdDlR1eAsAAQT2AQAABFAAAAC9WWtv
20YW/e5fQdjYNRCYpGRJqSU5WiR+tEXTIlgH24/BkByKEw857MzQktP2v/fOiyIpUtJii42TkJzn
fZx7z53xbSZzujq7zTBK4JFjibw4Q1xg+e6ykql/cwnNQr5SvDpbUFI8X3mLFyKIxIn3+5kHfyTe
Sj/BMeNIElYsvIIVeKm7IsYTzP2IScnyhTcut14C7zhZnv15Zpazi8SMMr7wLkaTue4LHgnF9yRN
bX+E4uc1Z1WR+G5oeqN+mhuZHQSjJPEukiQxfSkrpJ+inNDXhZezgokSxVbAHPE1AZHHOPdGpqlk
oJzWg2MKGr1gLVA27kg6mUx61heoEL7AnKSNTkG+Yb1Hc1Of4lQuvFEwc+0JESVFsAgpwDJWwg1J
ZAaTR6N/WPlQkpBiXc80slnXqLe2d6y4pMhAKFkPz9gL5h2NZrPZcsjYGBszBMonH2EvYSenlCFQ
g5N1JtueU6PuQH0EuritGJieSFBx1FFZoohiP8aUtrT09botK20y0M7XPlRQ23BU7iR7wrHy3SBo
9OQ2ZLpwsZh1dgdAjcqt2eFhW4J7YX1QDV95gXp0NRwUT5AER6/qf0+L+oGy+PkT4jIAVRcp4UL6
cUZoMmhYtd0TzL86tBjHObj26sh+dg9nfgM4P1JDWrCbOdQBWiSJEfURJWuIDcl61OJYIf0HVCQU
O3PYdZQJ1XeGjUN3eI4rLpRrlNjdCEQReKdyHoM9a+CY4NHiHZKihfN9OKw5fl12gBnMjvnLmNgL
JDtq5iDlLO8Y2+ZHtYey+i9VHmEOaMJNdJlWJ/h+GrWonc9bCdCFS18adJE8nU57003T+3WOUQvN
TAiYMKgTvsWBhWcfRIy4LThNbMJqKK5V7E04hiQGzXIgSZVcRacS0xrQZROLGqdIK1Zhkm+iVXeB
PfUn6MExevZVgxGI5GiNW55ZeNe1wSOKlBXVwBhSA8gAotg3r6v3zis30/lg7k1xuksAClawYk2P
jWjumZqkSXsqOFsMD5/j+fIQp9cr2SzTlMNGxTBdJ8neAl6C6fAMPD8qTfjGe6rKknEJTMstksGo
eY4LKbw3IeyHKpkxY2/DxqqYAdRLwGnsPKUn6DED/F+PUcIggIQe7NLZWwdslW4QpXdOgt7R14bL
crT1O/SeQ11gm65HNe90twa7H9ynjuw6pFvb9MkZsBIb2vQ3OHom0pdchZ2xhBHcC67FsqHG1Cp9
ISSSlfhQRcDhNR8GKnp6xVFTJGM0Qrzd77ZOKdYRuuvI2be6tU5OExPHto5Sr65aUO/DJeFQ5jhY
yu1gkZItNuvYfDxqqxQgXYOYMNtn8Q2BXMA7UKvX/OaTIsFbSFIHVNsRYUOEPr1sMmrR243NYoUS
0wZsLzXBfhHbHhX07U7QsQGxIyHzpYW17zWD2c9a4Loya21NUo5yI2EnTtplRCNG7gYy7b5tXqHW
ZBvL9ZhC4Qg18wnE9Hb+uIOX5eSBTm2Idl9dRib75XG7OLZrGPPtY3iwJEhcnjXbvHdJwR11Rs3e
z44jO2eSt9+5hLYv5oEgaZx2RI5MLd/MuQXj0LwcyDJWf1WCib7NjR4urkd9QyiKMF2gFCLsam+6
adeLaEIuQNVz7w/vfHlWE3GDvruzKYIKnaW+fC1x71LngxLZgZ0jboapTpB1MYpUMTrAURc5FsIV
HoN27nNLIzqedKI+hQqBYqAgeiGsEnd1CxSz33Bx1yDLPp53JUeXYprkonI5oFYjweV2+22RaJPI
xHHgSdJYaECNg6WKiRZd2LJvoOhr8mxUQVQVzbzj+D0hL4uUxdaGrJIqXzTDL6KVZhLbBXhJQRZg
sLFTpEmWehWoYT5n2OwUWqZdg/xKB8k8CX2RGW2hJrwXglROlj9bTICwEWcbcDhUAhmCubYoIjJQ
RVCtx3Rmq/i6FLHfLjuoQlb9G7VJ1F3pdGv8nCRwyjKKKQcJd/juYRSow5hAL2B7sADu8ErzpLdH
df44mJiSaXf54di/xwcX9/f3jZC+uHm8f5w99uYnKC77Ufzw8NAn9QLnJWSolvNtmdYZGcArSNqK
/If5zejG5q2YYsS/6PLAHQVUiz42ZWrIbWhv3W5FzEkJPuXxu/NMylIswhB9RdtgzdgaJpVEKOjq
tpCSSIRff6swfw3HwTS4th8BlJbBV3G+gnX1eiuvvXLMEuwrH+INjPsXeFo58930pjEFhLIXhRFL
XuEB8QByIyHeXbqTgLovzMar8D/gT8hZ4T2SKHz49Sn8FUc/EWkfHypCk/DfwLtI4BCQAub0JYYM
C8f3ikoRQqZYU1BhBCoA8FNFHUWMwzUVNHxBnKgbIwGffsmgpIqZOrFBTVMhGsitBEnHbQEb90OX
+z363D7Urs7znsigwE46Q9RhxmvdA+n7UuBWN0LfAOzKisvVGMwJ/avWKAj042OArC9XnzOiyn0h
PV4VQqcHMOn3H73Pqo0SoeoY4By2gTzowWxbRQHbw4lGZQXhfXr/9OTBmejx/Y8fA7sV+Bb0+p+1
uz5Bu+th7f5eYSYnCDM5YGqw6MILgtD8BWSyisfYYvOLcsKXlCgUngrQQF23d3XUj6amjdygLKK7
9+1xGmrNQfsoahvjDlp0eoJF/1lEolwe8DGc+lefQCN46HdAo/06Zpm2bkAGxxWzgw5qdUBidoL6
RiuoOlaPt6F66HeILfv1//T335WlZidYY3Z6HP83OncemmognetfVP0FUEsDBAoAAAAAANWWKEUA
AAAAAAAAAAAAAAAfABwAd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvbGltaXRzL1VUCQAD4l0OVG1e
DlR1eAsAAQT2AQAABFAAAABQSwMEFAACAAgA1ZYoRWN6sHWQAAAAsgAAAEMAHAB3ZWJnbC8xLjAu
Mi9jb25mb3JtYW5jZS9saW1pdHMvZ2wtbWF4LXRleHR1cmUtZGltZW5zaW9ucy1hY3R1YWwudHh0
VVQJAAPiXQ5U4l0OVHV4CwABBPYBAAAEUAAAABWNzQqDMBCE73mKfQGTe29eWgoeCgo9SqKrLuSn
7K7o4zeBOXx8MDPTQQKKosBnrnQgfDG8BpiaiySKKwSM5QLK4DPQxj5hpRUYf4VV4NOPIxSGZ/8e
rDGt+QBrXQ2jlJMXFHdh2OPcnuaNYhVLyVvh5POCLlIiFbfHLvm7U7z1ZOxWSpiFShZ7aIqm7Rvz
B1BLAwQUAAIACADVlihFGivzbfEAAADhAQAAQQAcAHdlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL2xp
bWl0cy9nbC1tYXgtdGV4dHVyZS1kaW1lbnNpb25zLWRpZmYudHh0VVQJAAPiXQ5U4l0OVHV4CwAB
BPYBAAAEUAAAAMWPzWrDMAyA734K3VPb62CXndLRbZT1MJayHouTKI1Btost0+ztZ5e+wE4DIwv9
8H2SUoL+DpQdJr01bPTrsdNH7D8s37+XbGnUX0hoEmoyPyGzZEwsI6ZMnPQV+zPptXpQj3oIfgrR
GT+UWetsaZ9JOrOUlYVzRDlahz7Z4JPE5YID46h4YdE0zT+qmIGzoZtI24Jcr56gqaFtBRxmm6Bi
IGZfshmh+Lzv4VBrZFM5AXqkcAXrwXiwUzQOSzZCxEuInOBz03UQIrxtdnslQNx2n0EpXV6xDzkO
ePc/VdZpslQKfzlCzexIyIoSTQUVzi9QSwMEFAACAAgA1ZYoRVPI4YiPAAAAsgAAAEUAHAB3ZWJn
bC8xLjAuMi9jb25mb3JtYW5jZS9saW1pdHMvZ2wtbWF4LXRleHR1cmUtZGltZW5zaW9ucy1leHBl
Y3RlZC50eHRVVAkAA+JdDlTiXQ5UdXgLAAEE9gEAAARQAAAAFY3LCoMwEEX3+Yr5AZN9d25aCi4K
Cl1KoqMO5FFmRvTzm8BdHA5cznSQgKIo8JkrHQhfDK8BpuYiieIKAWO5gDL4DLSxT1hpBcZfYRX4
9OMIheHZvwdrTHs+wFpXxyjl5AXFXRj2OLfSvFGsYil5K5x8XtBFSqTi9tglf3eKt56M3UoJs1DJ
Yg9N0bSOMX9QSwMEFAACAAgA1ZYoRX75c8n5BwAAtRoAAEkAHAB3ZWJnbC8xLjAuMi9jb25mb3Jt
YW5jZS9saW1pdHMvZ2wtbWF4LXRleHR1cmUtZGltZW5zaW9ucy1wcmV0dHktZGlmZi5odG1sVVQJ
AAPiXQ5U4l0OVHV4CwABBPYBAAAEUAAAAL1Za2/bRhb97l9B2GgNBCYpWVLWkhwViR+7i02LYB20
H4MhORQnHnLYmaElZ9v/vndeFEmRkooWjZOQnOd9nHvPnfFtJnO6OrvNMErgkWOJvDhDXGD57rKS
qX9zCc1CvlK8OltQUjxfeYsXIojEife/Mw/+SLyVfoJjxpEkrFh4BSvwUndFjCeY+xGTkuULb1xu
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
f/UJNIKHfgc42q9jlmnrBoxwXDE76KBWByRmJ6hvtILSY/V4G6qHfofgsl9/p7//qjQ1O8Eas9MD
+Y/o3HlovoF8rn9b9X9QSwMECgAAAAAA65YoRQAAAAAAAAAAAAAAAB4AHAB3ZWJnbC8xLjAuMi9j
b25mb3JtYW5jZS9vZ2xlcy9VVAkAAwpeDlRtXg5UdXgLAAEE9gEAAARQAAAAUEsDBAoAAAAAAOuW
KEUAAAAAAAAAAAAAAAAhABwAd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2Uvb2dsZXMvR0wvVVQJAAMK
Xg5UbV4OVHV4CwABBPYBAAAEUAAAAFBLAwQKAAAAAADrlihFAAAAAAAAAAAAAAAAKwAcAHdlYmds
LzEuMC4yL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9VVAkAAwpeDlRtXg5UdXgLAAEE
9gEAAARQAAAAUEsDBBQAAgAIAOuWKEWaJehykgAAAL8AAABKABwAd2ViZ2wvMS4wLjIvY29uZm9y
bWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL29wZXJhdG9yc18wMDlfdG9fMDE2LWFjdHVhbC50eHRV
VAkAAwpeDlQKXg5UdXgLAAEE9gEAAARQAAAARY1BCoMwEEX3OcWcILGbQrtzUym4KCh0GaKONRAz
MjPi9Ws2LfzF48Hn9UsUUBQF3vNJC8Ibh6aFvrgURXGCARMdEDOEDHHmsOJJEzBuxCrwqrsOiOFR
P1trTHnewVr3G6PQziOKO3D4JF96fo7pFCPlmXgNeURHn2Ka1tGGHJRY/uSr6uaVfHW52kXXZErM
mC9QSwMEFAACAAgA65YoRYQaCiH2AAAA/AEAAEgAHAB3ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9vcGVyYXRvcnMvb3BlcmF0b3JzXzAwOV90b18wMTYtZGlmZi50eHRVVAkAAwpeDlQK
Xg5UdXgLAAEE9gEAAARQAAAAxY9Ba8MwDIXv+RW6Z7aSwQbbKS3bylgOYynrMTiJ0hicONgy7f79
7FK2+y4DIT0E0veeEALw05owk8cnxQqfDw0eqHvTfB3boM2AH2RIeUKjvmxgweRZOPLBsMcTdUeD
pSzkLfZ2Ga2b1dIT2qOJX3c12pWcYuv8r2qL4qFl2xblvaDzSj3TIPnMWZ7n/+9I9RyUufipKhDl
zR3kqVVVBvtJe0g0cGGJaiKItnY17NPOaB+TQEfGnkAvoBbQo1MzRTWAo9U69vC+aRqwDl42r7XM
ILvcPoKU+FMxig2up2uYNhHbUSf/f0gkJ55NJhI3yxM1Qr8BUEsDBBQAAgAIAOuWKEWql7mPkgAA
AL8AAABMABwAd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3JzL29wZXJh
dG9yc18wMDlfdG9fMDE2LWV4cGVjdGVkLnR4dFVUCQADCl4OVApeDlR1eAsAAQT2AQAABFAAAABF
jUEKgzAQRfc5xZwgsZtCu3NTKbgoKHQZoo41EDMyM+L1azYt/MXjwef1SxRQFAXe80kLwhuHpoW+
uBRFcYIBEx0QM4QMceaw4kkTMG7EKvCquw6I4VE/W2tMed7BWvcbo9DOI4o7cPgkX3p+jukUI+WZ
eA15REefYprW0YYclFj+5Kvq5pV8dbnaRddkStSYL1BLAwQUAAIACADrlihFlobMUP8HAADJGgAA
UAAcAHdlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL29nbGVzL0dML29wZXJhdG9ycy9vcGVyYXRvcnNf
MDA5X3RvXzAxNi1wcmV0dHktZGlmZi5odG1sVVQJAAMKXg5UCl4OVHV4CwABBPYBAAAEUAAAAL1Z
a3PbuBX97l/Bsaf1zI5JSpbkWpKjTuLHttPsTqbOdD96QBIUEYMEC4CWnO7+9168KJIiJbXdaZyE
JJ73ce49F/BdJnO6OrvLMErgkWOJvDhDXGD54bKSqX97Cc1CvlO8OltQUrxeeYs3IojEifevMw/+
SLyVfoJjxpEkrFh4BSvwUndFjCeY+xGTkuULb1xuvQTecbI8++3MLGcXiRllfOFdjCZz3Rc8EYof
SJra/gjFr2vOqiLx3dD0Vv00NzI7CEZJ4l0kSWL6UlZIP0U5oe8LL2cFEyWKrYA54msCIo9x7o1M
U8lAOa0HxxQ0esNaoGzckXQymfSsL1AhfIE5SRudgnzHeo/mpj7FqVx4o2Dm2hMiSopgEVKAZayE
G5LIDCaPRn+w8qEkIcW6nmlks65Rb23vWHFJkYFQsh6esTfMOxrNZrPlkLExNmYIlE8+w17CTk4p
Q6AGJ+tMtj2nRt2D+gh0cVsxMD2RoOKoo7JEEcV+jCltaenrdVtW2mSgna99qKC24ajcSfaMY+W7
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
VAkAAy1eDlQtXg5UdXgLAAEE9gEAAARQAAAANY07CsMwEER7nWIuEKlP58Yh4CJgQ0rjzyoWyFLY
XeOQ00cqAlM8hvkMWxAoiYKPVGgjPGm+dRiqF4MorZgp5hMhYUoInqedCq1gemdWwaPpe2RG29w7
a0xtXmGtK2KSfPBC4k6aX3GsT6MPsRhLTj7zPqWFnNJHj5L9w0XCl+ymezR11JgfUEsDBBQAAgAI
AP2WKEUw4dnz5wAAAMABAAA2ABwAd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4
dHVyZS1zaXplLWRpZmYudHh0VVQJAAMtXg5ULV4OVHV4CwABBPYBAAAEUAAAAL2OQU/DMAyF7/kV
vpfEDIkLpw7BJsQOiE7sOKWtSyO5zZQ4WuHXk0zjzA3Jsp8s+71Paw344TlNFPHJisXnQ4MHal+d
XMdjctzjOzHZSMj2yyfRQlF0oJhYIp6p/WRcmVtzh52fBx8mO3eEQoukfPQrdHTfpGk5USfUG1lE
VVX13/m2k2T5kl7XoFc391CVVtcK9qOLULwhpDmrkSBDbHewLzt2MXNDS+zP4GawM7gh2Imy6iHQ
yQeJ8LZuGvABNuuXnVGgLr8PYAzmyjQ+hY6u0MeSdRwc58Wf5GaUiZUu/qoq7tn8B1BLAwQUAAIA
CAD9lihFV7dHH4cAAACnAAAAOgAcAHdlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL3RleHR1cmVzL3Rl
eHR1cmUtc2l6ZS1leHBlY3RlZC50eHRVVAkAAy1eDlQtXg5UdXgLAAEE9gEAAARQAAAANY07CsMw
EER7nWIuEKlP58Yh4CJgQ0rjzyoWyFLYXeOQ00cqAlM8hvkMWxAoiYKPVGgjPGm+dRiqF4MorZgp
5hMhYUoInqedCq1gemdWwaPpe2RG29w7a0xtXmGtK2KSfPBC4k6aX3GsT6MPsRhLTj7zPqWFnNJH
j5L9w0XCl+ymezR13JgfUEsDBBQAAgAIAP2WKEVow8yU7gcAAJ8aAAA+ABwAd2ViZ2wvMS4wLjIv
Y29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1zaXplLXByZXR0eS1kaWZmLmh0bWxVVAkAAy1e
DlQtXg5UdXgLAAEE9gEAAARQAAAAvVlrb9tGFv3uX0HY2DUQmKRkSaklOVokfrRF0yJYB9uPwZAc
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
AARQAAAAUEsBAh4DCgAAAAAAh5YoRQAAAAAAAAAAAAAAACoAGAAAAAAAAAAQAO1BC+cAAGh0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L1VUBQADTl0OVHV4CwABBPYBAAAE
UAAAAFBLAQIeAxQAAgAIAIeWKEVjqqxsggAAAKgAAABAABgAAAAAAAEAAACkgW/nAABodHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS94c2wtYWxsb3dlZC1zdGRlcnIudHh0
VVQFAANNXQ5UdXgLAAEE9gEAAARQAAAAUEsBAh4DFAACAAgAh5YoRWOqrGyCAAAAqAAAAFIAGAAA
AAAAAQAAAKSBa+gAAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hz
bC11bmFmZmVjdGVkLWJ5LXN0eWxlLXNyYy0yLXN0ZGVyci50eHRVVAUAA05dDlR1eAsAAQT2AQAA
BFAAAABQSwECHgMUAAIACAB4lihFYEtmEJEAAAD7AQAARQAYAAAAAAABAAAApIF56QAAaHR0cC90
ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1kb2N1bWVudC1zZWN1cml0eU9yaWdpbi1zdGRl
cnIudHh0VVQFAAM0XQ5UdXgLAAEE9gEAAARQAAAAUEsBAh4DCgAAAAAAHZcoRQAAAAAAAAAAAAAA
ABoAGAAAAAAAAAAQAO1BieoAAGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvVVQFAANqXg5UdXgL
AAEE9gEAAARQAAAAUEsBAh4DFAACAAgAHZcoRZ95fBIpNQAA3sMAAFYAGAAAAAAAAQAAAKSB3eoA
AGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtcmVwZWF0ZWQtZmFpbGVk
LXByZWZsaWdodC1jcmFzaC1jcmFzaC1sb2cudHh0VVQFAANqXg5UdXgLAAEE9gEAAARQAAAAUEsB
Ah4DFAACAAgADZcoReqKfEJhBQAABQ8AAAoAGAAAAAAAAQAAAKSBliABAGh0dHBkLmNvbmZVVAUA
A0leDlR1eAsAAQT2AQAABFAAAABQSwECHgMKAAAAAACHlihFAAAAAAAAAAAAAAAABgAYAAAAAAAA
ABAA7UE7JgEAbWVkaWEvVVQFAANOXQ5UdXgLAAEE9gEAAARQAAAAUEsBAh4DFAACAAgAg5YoRb7e
U1W6AAAABwEAACoAGAAAAAAAAQAAAKSBeyYBAG1lZGlhL2NvbnRyb2xzLWxheW91dC1kaXJlY3Rp
b24tc3RkZXJyLnR4dFVUBQADRV0OVHV4CwABBPYBAAAEUAAAAFBLAQIeAwoAAAAAAIeWKEUAAAAA
AAAAAAAAAAAWABgAAAAAAAAAEADtQZknAQBtZWRpYS9tZWRpYS1mcmFnbWVudHMvVVQFAANOXQ5U
dXgLAAEE9gEAAARQAAAAUEsBAh4DFAACAAgAh5YoRe4BRLq6AAAABwEAACcAGAAAAAAAAQAAAKSB
6ScBAG1lZGlhL21lZGlhLWZyYWdtZW50cy9UQzAwMTEtc3RkZXJyLnR4dFVUBQADTl0OVHV4CwAB
BPYBAAAEUAAAAFBLAQIeAxQAAgAIALmWKEUOUGmdHwIAAKEJAAArABgAAAAAAAEAAACkgQQpAQBw
eXdlYnNvY2tldC53cy5sb2ctMDhTZXAyMDE0LTE4NDc1OS1lcnIudHh0VVQFAAOuXQ5UdXgLAAEE
9gEAAARQAAAAUEsBAh4DFAACAAgAuZYoRfc+IG8KAQAAjwIAACsAGAAAAAAAAQAAAKSBiCsBAHB5
d2Vic29ja2V0LndzLmxvZy0wOFNlcDIwMTQtMTg0NzU5LW91dC50eHRVVAUAA65dDlR1eAsAAQT2
AQAABFAAAABQSwECHgMUAAIACAAglyhFhwrRGYYmAABhpAAADAAYAAAAAAABAAAApIH3LAEAcmVz
dWx0cy5odG1sVVQFAANsXg5UdXgLAAEE9gEAAARQAAAAUEsBAh4DCgAAAAAAG5coRQAAAAAAAAAA
AAAAAAgAGAAAAAAAAAAQAO1Bw1MBAHJldHJpZXMvVVQFAANmXg5UdXgLAAEE9gEAAARQAAAAUEsB
Ah4DCgAAAAAAGpcoRQAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQAO1BBVQBAHJldHJpZXMvaHR0cC9V
VAUAA2ReDlR1eAsAAQT2AQAABFAAAABQSwECHgMKAAAAAAAalyhFAAAAAAAAAAAAAAAAEwAYAAAA
AAAAABAA7UFMVAEAcmV0cmllcy9odHRwL3Rlc3RzL1VUBQADZF4OVHV4CwABBPYBAAAEUAAAAFBL
AQIeAwoAAAAAABqXKEUAAAAAAAAAAAAAAAAiABgAAAAAAAAAEADtQZlUAQByZXRyaWVzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvVVQFAANkXg5UdXgLAAEE9gEAAARQAAAAUEsBAh4DFAACAAgA
GpcoRZ95fBIpNQAA3sMAAF4AGAAAAAAAAQAAAKSB9VQBAHJldHJpZXMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1yZXBlYXRlZC1mYWlsZWQtcHJlZmxpZ2h0LWNyYXNo
LWNyYXNoLWxvZy50eHRVVAUAA2ReDlR1eAsAAQT2AQAABFAAAABQSwECHgMKAAAAAAAclyhFAAAA
AAAAAAAAAAAADgAYAAAAAAAAABAA7UG2igEAcmV0cmllcy93ZWJnbC9VVAUAA2heDlR1eAsAAQT2
AQAABFAAAABQSwECHgMKAAAAAAAblyhFAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UH+igEAcmV0
cmllcy93ZWJnbC8xLjAuMS9VVAUAA2ZeDlR1eAsAAQT2AQAABFAAAABQSwECHgMKAAAAAAAclyhF
AAAAAAAAAAAAAAAAIAAYAAAAAAAAABAA7UFMiwEAcmV0cmllcy93ZWJnbC8xLjAuMS9jb25mb3Jt
YW5jZS9VVAUAA2heDlR1eAsAAQT2AQAABFAAAABQSwECHgMKAAAAAAAblyhFAAAAAAAAAAAAAAAA
KAAYAAAAAAAAABAA7UGmiwEAcmV0cmllcy93ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9jb250ZXh0
L1VUBQADZl4OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIABuXKEUuylFKzwAAAA8BAABIABgA
AAAAAAEAAACkgQiMAQByZXRyaWVzL3dlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL2NvbnRleHQvY29u
dGV4dC1sb3N0LXJlc3RvcmVkLWFjdHVhbC50eHRVVAUAA2ZeDlR1eAsAAQT2AQAABFAAAABQSwEC
HgMUAAIACAAblyhFx4cMUSwBAAA7AgAARgAYAAAAAAABAAAApIFZjQEAcmV0cmllcy93ZWJnbC8x
LjAuMS9jb25mb3JtYW5jZS9jb250ZXh0L2NvbnRleHQtbG9zdC1yZXN0b3JlZC1kaWZmLnR4dFVU
BQADZl4OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIABuXKEXbaoHeiQAAAK8AAABKABgAAAAA
AAEAAACkgQWPAQByZXRyaWVzL3dlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4
dC1sb3N0LXJlc3RvcmVkLWV4cGVjdGVkLnR4dFVUBQADZl4OVHV4CwABBPYBAAAEUAAAAFBLAQIe
AxQAAgAIABuXKEV+cyQu/AcAACwZAABOABgAAAAAAAEAAACkgRKQAQByZXRyaWVzL3dlYmdsLzEu
MC4xL2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1sb3N0LXJlc3RvcmVkLXByZXR0eS1kaWZm
Lmh0bWxVVAUAA2ZeDlR1eAsAAQT2AQAABFAAAABQSwECHgMKAAAAAAAblyhFAAAAAAAAAAAAAAAA
JQAYAAAAAAAAABAA7UGWmAEAcmV0cmllcy93ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9nbHNsL1VU
BQADZl4OVHV4CwABBPYBAAAEUAAAAFBLAQIeAwoAAAAAABuXKEUAAAAAAAAAAAAAAAAvABgAAAAA
AAAAEADtQfWYAQByZXRyaWVzL3dlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25z
L1VUBQADZl4OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIABuXKEXFTlZrmAAAAMQAAABaABgA
AAAAAAEAAACkgV6ZAQByZXRyaWVzL3dlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rp
b25zL2dsc2wtZnVuY3Rpb24tc21vb3Roc3RlcC1nZW50eXBlLWFjdHVhbC50eHRVVAUAA2ZeDlR1
eAsAAQT2AQAABFAAAABQSwECHgMUAAIACAAblyhFet35q/wAAAAhAgAAWAAYAAAAAAABAAAApIGK
mgEAcmV0cmllcy93ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1
bmN0aW9uLXNtb290aHN0ZXAtZ2VudHlwZS1kaWZmLnR4dFVUBQADZl4OVHV4CwABBPYBAAAEUAAA
AFBLAQIeAxQAAgAIABuXKEX1/AeWmAAAAMQAAABcABgAAAAAAAEAAACkgRicAQByZXRyaWVzL3dl
YmdsLzEuMC4xL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tc21vb3Ro
c3RlcC1nZW50eXBlLWV4cGVjdGVkLnR4dFVUBQADZl4OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQA
AgAIABuXKEWwtJ8lAwgAAN4aAABgABgAAAAAAAEAAACkgUadAQByZXRyaWVzL3dlYmdsLzEuMC4x
L2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tc21vb3Roc3RlcC1nZW50
eXBlLXByZXR0eS1kaWZmLmh0bWxVVAUAA2ZeDlR1eAsAAQT2AQAABFAAAABQSwECHgMKAAAAAAAb
lyhFAAAAAAAAAAAAAAAALwAYAAAAAAAAABAA7UHjpQEAcmV0cmllcy93ZWJnbC8xLjAuMS9jb25m
b3JtYW5jZS9nbHNsL3ZhcmlhYmxlcy9VVAUAA2ZeDlR1eAsAAQT2AQAABFAAAABQSwECHgMUAAIA
CAAblyhFNyx0Jo4AAACxAAAARwAYAAAAAAABAAAApIFMpgEAcmV0cmllcy93ZWJnbC8xLjAuMS9j
b25mb3JtYW5jZS9nbHNsL3ZhcmlhYmxlcy9nbC1wb2ludGNvb3JkLWFjdHVhbC50eHRVVAUAA2Ze
DlR1eAsAAQT2AQAABFAAAABQSwECHgMUAAIACAAblyhFz+h5Q/QAAADoAQAARQAYAAAAAAABAAAA
pIFbpwEAcmV0cmllcy93ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9nbHNsL3ZhcmlhYmxlcy9nbC1w
b2ludGNvb3JkLWRpZmYudHh0VVQFAANmXg5UdXgLAAEE9gEAAARQAAAAUEsBAh4DFAACAAgAG5co
RQeeJduNAAAAsQAAAEkAGAAAAAAAAQAAAKSBzqgBAHJldHJpZXMvd2ViZ2wvMS4wLjEvY29uZm9y
bWFuY2UvZ2xzbC92YXJpYWJsZXMvZ2wtcG9pbnRjb29yZC1leHBlY3RlZC50eHRVVAUAA2ZeDlR1
eAsAAQT2AQAABFAAAABQSwECHgMUAAIACAAblyhFEn8vxP4HAAC4GgAATQAYAAAAAAABAAAApIHe
qQEAcmV0cmllcy93ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9nbHNsL3ZhcmlhYmxlcy9nbC1wb2lu
dGNvb3JkLXByZXR0eS1kaWZmLmh0bWxVVAUAA2ZeDlR1eAsAAQT2AQAABFAAAABQSwECHgMKAAAA
AAAblyhFAAAAAAAAAAAAAAAAJwAYAAAAAAAAABAA7UFjsgEAcmV0cmllcy93ZWJnbC8xLjAuMS9j
b25mb3JtYW5jZS9saW1pdHMvVVQFAANmXg5UdXgLAAEE9gEAAARQAAAAUEsBAh4DFAACAAgAG5co
RWN6sHWQAAAAsgAAAEsAGAAAAAAAAQAAAKSBxLIBAHJldHJpZXMvd2ViZ2wvMS4wLjEvY29uZm9y
bWFuY2UvbGltaXRzL2dsLW1heC10ZXh0dXJlLWRpbWVuc2lvbnMtYWN0dWFsLnR4dFVUBQADZl4O
VHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIABuXKEXpruEW9gAAAPEBAABJABgAAAAAAAEAAACk
gdmzAQByZXRyaWVzL3dlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL2xpbWl0cy9nbC1tYXgtdGV4dHVy
ZS1kaW1lbnNpb25zLWRpZmYudHh0VVQFAANmXg5UdXgLAAEE9gEAAARQAAAAUEsBAh4DFAACAAgA
G5coRVPI4YiPAAAAsgAAAE0AGAAAAAAAAQAAAKSBUrUBAHJldHJpZXMvd2ViZ2wvMS4wLjEvY29u
Zm9ybWFuY2UvbGltaXRzL2dsLW1heC10ZXh0dXJlLWRpbWVuc2lvbnMtZXhwZWN0ZWQudHh0VVQF
AANmXg5UdXgLAAEE9gEAAARQAAAAUEsBAh4DFAACAAgAG5coRYbRQGX+BwAAvRoAAFEAGAAAAAAA
AQAAAKSBaLYBAHJldHJpZXMvd2ViZ2wvMS4wLjEvY29uZm9ybWFuY2UvbGltaXRzL2dsLW1heC10
ZXh0dXJlLWRpbWVuc2lvbnMtcHJldHR5LWRpZmYuaHRtbFVUBQADZl4OVHV4CwABBPYBAAAEUAAA
AFBLAQIeAwoAAAAAAByXKEUAAAAAAAAAAAAAAAApABgAAAAAAAAAEADtQfG+AQByZXRyaWVzL3dl
YmdsLzEuMC4xL2NvbmZvcm1hbmNlL3RleHR1cmVzL1VUBQADaF4OVHV4CwABBPYBAAAEUAAAAFBL
AQIeAxQAAgAIAByXKEVnBRbihwAAAKcAAABAABgAAAAAAAEAAACkgVS/AQByZXRyaWVzL3dlYmds
LzEuMC4xL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1cmUtc2l6ZS1hY3R1YWwudHh0VVQFAANo
Xg5UdXgLAAEE9gEAAARQAAAAUEsBAh4DFAACAAgAHJcoRYQrfpzqAAAA0AEAAD4AGAAAAAAAAQAA
AKSBVcABAHJldHJpZXMvd2ViZ2wvMS4wLjEvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1z
aXplLWRpZmYudHh0VVQFAANoXg5UdXgLAAEE9gEAAARQAAAAUEsBAh4DFAACAAgAHJcoRVe3Rx+H
AAAApwAAAEIAGAAAAAAAAQAAAKSBt8EBAHJldHJpZXMvd2ViZ2wvMS4wLjEvY29uZm9ybWFuY2Uv
dGV4dHVyZXMvdGV4dHVyZS1zaXplLWV4cGVjdGVkLnR4dFVUBQADaF4OVHV4CwABBPYBAAAEUAAA
AFBLAQIeAxQAAgAIAByXKEV2haOv8wcAAKcaAABGABgAAAAAAAEAAACkgbrCAQByZXRyaWVzL3dl
YmdsLzEuMC4xL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1cmUtc2l6ZS1wcmV0dHktZGlmZi5o
dG1sVVQFAANoXg5UdXgLAAEE9gEAAARQAAAAUEsBAh4DCgAAAAAAHJcoRQAAAAAAAAAAAAAAABQA
GAAAAAAAAAAQAO1BLcsBAHJldHJpZXMvd2ViZ2wvMS4wLjIvVVQFAANoXg5UdXgLAAEE9gEAAARQ
AAAAUEsBAh4DCgAAAAAAHZcoRQAAAAAAAAAAAAAAACAAGAAAAAAAAAAQAO1Be8sBAHJldHJpZXMv
d2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvVVQFAANqXg5UdXgLAAEE9gEAAARQAAAAUEsBAh4DCgAA
AAAAHJcoRQAAAAAAAAAAAAAAACUAGAAAAAAAAAAQAO1B1csBAHJldHJpZXMvd2ViZ2wvMS4wLjIv
Y29uZm9ybWFuY2UvZ2xzbC9VVAUAA2heDlR1eAsAAQT2AQAABFAAAABQSwECHgMKAAAAAAAclyhF
AAAAAAAAAAAAAAAALwAYAAAAAAAAABAA7UE0zAEAcmV0cmllcy93ZWJnbC8xLjAuMi9jb25mb3Jt
YW5jZS9nbHNsL2Z1bmN0aW9ucy9VVAUAA2heDlR1eAsAAQT2AQAABFAAAABQSwECHgMUAAIACAAc
lyhFxU5Wa5gAAADEAAAAWgAYAAAAAAABAAAApIGdzAEAcmV0cmllcy93ZWJnbC8xLjAuMi9jb25m
b3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLXNtb290aHN0ZXAtZ2VudHlwZS1h
Y3R1YWwudHh0VVQFAANoXg5UdXgLAAEE9gEAAARQAAAAUEsBAh4DFAACAAgAHJcoRXKLWin8AAAA
IQIAAFgAGAAAAAAAAQAAAKSByc0BAHJldHJpZXMvd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvZ2xz
bC9mdW5jdGlvbnMvZ2xzbC1mdW5jdGlvbi1zbW9vdGhzdGVwLWdlbnR5cGUtZGlmZi50eHRVVAUA
A2heDlR1eAsAAQT2AQAABFAAAABQSwECHgMUAAIACAAclyhF9fwHlpgAAADEAAAAXAAYAAAAAAAB
AAAApIFXzwEAcmV0cmllcy93ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9n
bHNsLWZ1bmN0aW9uLXNtb290aHN0ZXAtZ2VudHlwZS1leHBlY3RlZC50eHRVVAUAA2heDlR1eAsA
AQT2AQAABFAAAABQSwECHgMUAAIACAAclyhFPvPEngIIAADeGgAAYAAYAAAAAAABAAAApIGF0AEA
cmV0cmllcy93ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9ucy9nbHNsLWZ1bmN0
aW9uLXNtb290aHN0ZXAtZ2VudHlwZS1wcmV0dHktZGlmZi5odG1sVVQFAANoXg5UdXgLAAEE9gEA
AARQAAAAUEsBAh4DCgAAAAAAHJcoRQAAAAAAAAAAAAAAAC8AGAAAAAAAAAAQAO1BIdkBAHJldHJp
ZXMvd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvZ2xzbC92YXJpYWJsZXMvVVQFAANoXg5UdXgLAAEE
9gEAAARQAAAAUEsBAh4DFAACAAgAHJcoRTcsdCaOAAAAsQAAAEcAGAAAAAAAAQAAAKSBitkBAHJl
dHJpZXMvd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvZ2xzbC92YXJpYWJsZXMvZ2wtcG9pbnRjb29y
ZC1hY3R1YWwudHh0VVQFAANoXg5UdXgLAAEE9gEAAARQAAAAUEsBAh4DFAACAAgAHJcoRUAiK1j0
AAAA6AEAAEUAGAAAAAAAAQAAAKSBmdoBAHJldHJpZXMvd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2Uv
Z2xzbC92YXJpYWJsZXMvZ2wtcG9pbnRjb29yZC1kaWZmLnR4dFVUBQADaF4OVHV4CwABBPYBAAAE
UAAAAFBLAQIeAxQAAgAIAByXKEUHniXbjQAAALEAAABJABgAAAAAAAEAAACkgQzcAQByZXRyaWVz
L3dlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL2dsc2wvdmFyaWFibGVzL2dsLXBvaW50Y29vcmQtZXhw
ZWN0ZWQudHh0VVQFAANoXg5UdXgLAAEE9gEAAARQAAAAUEsBAh4DFAACAAgAHJcoRUHhEUr9BwAA
uBoAAE0AGAAAAAAAAQAAAKSBHN0BAHJldHJpZXMvd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvZ2xz
bC92YXJpYWJsZXMvZ2wtcG9pbnRjb29yZC1wcmV0dHktZGlmZi5odG1sVVQFAANoXg5UdXgLAAEE
9gEAAARQAAAAUEsBAh4DCgAAAAAAHZcoRQAAAAAAAAAAAAAAACcAGAAAAAAAAAAQAO1BoOUBAHJl
dHJpZXMvd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvbGltaXRzL1VUBQADaV4OVHV4CwABBPYBAAAE
UAAAAFBLAQIeAxQAAgAIAByXKEVjerB1kAAAALIAAABLABgAAAAAAAEAAACkgQHmAQByZXRyaWVz
L3dlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL2xpbWl0cy9nbC1tYXgtdGV4dHVyZS1kaW1lbnNpb25z
LWFjdHVhbC50eHRVVAUAA2heDlR1eAsAAQT2AQAABFAAAABQSwECHgMUAAIACAAclyhFFdFs5PYA
AADxAQAASQAYAAAAAAABAAAApIEW5wEAcmV0cmllcy93ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9s
aW1pdHMvZ2wtbWF4LXRleHR1cmUtZGltZW5zaW9ucy1kaWZmLnR4dFVUBQADaF4OVHV4CwABBPYB
AAAEUAAAAFBLAQIeAxQAAgAIAByXKEVTyOGIjwAAALIAAABNABgAAAAAAAEAAACkgY/oAQByZXRy
aWVzL3dlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL2xpbWl0cy9nbC1tYXgtdGV4dHVyZS1kaW1lbnNp
b25zLWV4cGVjdGVkLnR4dFVUBQADaF4OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIAB2XKEVV
j5nM/QcAAL0aAABRABgAAAAAAAEAAACkgaXpAQByZXRyaWVzL3dlYmdsLzEuMC4yL2NvbmZvcm1h
bmNlL2xpbWl0cy9nbC1tYXgtdGV4dHVyZS1kaW1lbnNpb25zLXByZXR0eS1kaWZmLmh0bWxVVAUA
A2leDlR1eAsAAQT2AQAABFAAAABQSwECHgMKAAAAAAAdlyhFAAAAAAAAAAAAAAAAJgAYAAAAAAAA
ABAA7UEt8gEAcmV0cmllcy93ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9vZ2xlcy9VVAUAA2leDlR1
eAsAAQT2AQAABFAAAABQSwECHgMKAAAAAAAdlyhFAAAAAAAAAAAAAAAAKQAYAAAAAAAAABAA7UGN
8gEAcmV0cmllcy93ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9vZ2xlcy9HTC9VVAUAA2leDlR1eAsA
AQT2AQAABFAAAABQSwECHgMKAAAAAAAdlyhFAAAAAAAAAAAAAAAAMwAYAAAAAAAAABAA7UHw8gEA
cmV0cmllcy93ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvVVQFAANp
Xg5UdXgLAAEE9gEAAARQAAAAUEsBAh4DFAACAAgAHZcoRZol6HKSAAAAvwAAAFIAGAAAAAAAAQAA
AKSBXfMBAHJldHJpZXMvd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3Jz
L29wZXJhdG9yc18wMDlfdG9fMDE2LWFjdHVhbC50eHRVVAUAA2leDlR1eAsAAQT2AQAABFAAAABQ
SwECHgMUAAIACAAdlyhFKElhnfoAAAAMAgAAUAAYAAAAAAABAAAApIF79AEAcmV0cmllcy93ZWJn
bC8xLjAuMi9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvb3BlcmF0b3JzXzAwOV90b18w
MTYtZGlmZi50eHRVVAUAA2leDlR1eAsAAQT2AQAABFAAAABQSwECHgMUAAIACAAdlyhFqpe5j5IA
AAC/AAAAVAAYAAAAAAABAAAApIH/9QEAcmV0cmllcy93ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9v
Z2xlcy9HTC9vcGVyYXRvcnMvb3BlcmF0b3JzXzAwOV90b18wMTYtZXhwZWN0ZWQudHh0VVQFAANp
Xg5UdXgLAAEE9gEAAARQAAAAUEsBAh4DFAACAAgAHZcoRRLg2zIECAAA0RoAAFgAGAAAAAAAAQAA
AKSBH/cBAHJldHJpZXMvd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2Uvb2dsZXMvR0wvb3BlcmF0b3Jz
L29wZXJhdG9yc18wMDlfdG9fMDE2LXByZXR0eS1kaWZmLmh0bWxVVAUAA2leDlR1eAsAAQT2AQAA
BFAAAABQSwECHgMKAAAAAAAdlyhFAAAAAAAAAAAAAAAAKQAYAAAAAAAAABAA7UG1/wEAcmV0cmll
cy93ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS90ZXh0dXJlcy9VVAUAA2peDlR1eAsAAQT2AQAABFAA
AABQSwECHgMUAAIACAAdlyhFZwUW4ocAAACnAAAAQAAYAAAAAAABAAAApIEYAAIAcmV0cmllcy93
ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLXNpemUtYWN0dWFsLnR4dFVU
BQADal4OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIAB2XKEU8Hrnf6wAAANABAAA+ABgAAAAA
AAEAAACkgRkBAgByZXRyaWVzL3dlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1
cmUtc2l6ZS1kaWZmLnR4dFVUBQADal4OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIAB2XKEVX
t0cfhwAAAKcAAABCABgAAAAAAAEAAACkgXwCAgByZXRyaWVzL3dlYmdsLzEuMC4yL2NvbmZvcm1h
bmNlL3RleHR1cmVzL3RleHR1cmUtc2l6ZS1leHBlY3RlZC50eHRVVAUAA2peDlR1eAsAAQT2AQAA
BFAAAABQSwECHgMUAAIACAAdlyhFH/9VRfIHAACnGgAARgAYAAAAAAABAAAApIF/AwIAcmV0cmll
cy93ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLXNpemUtcHJldHR5LWRp
ZmYuaHRtbFVUBQADal4OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIACCXKEX3MZJkgYUGAAB7
JAAKABgAAAAAAAEAAACkgfELAgBzdGF0cy5qc29uVVQFAANsXg5UdXgLAAEE9gEAAARQAAAAUEsB
Ah4DCgAAAAAAwJYoRQAAAAAAAAAAAAAAAAQAGAAAAAAAAAAQAO1BtpEIAHN2Zy9VVAUAA7ddDlR1
eAsAAQT2AQAABFAAAABQSwECHgMKAAAAAADAlihFAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UH0
kQgAc3ZnL3N0cm9rZS9VVAUAA7ddDlR1eAsAAQT2AQAABFAAAABQSwECHgMUAAIACADAlihF8exU
GIMAAACUAAAAJQAYAAAAAAABAAAApIE5kggAc3ZnL3N0cm9rZS96ZXJvLXdpZHRoLWhhbmctc3Rk
ZXJyLnR4dFVUBQADt10OVHV4CwABBPYBAAAEUAAAAFBLAQIeAwoAAAAAAM2WKEUAAAAAAAAAAAAA
AAAMABgAAAAAAAAAEADtQRuTCAB0cmFuc2l0aW9ucy9VVAUAA9FdDlR1eAsAAQT2AQAABFAAAABQ
SwECHgMUAAIACADNlihFWVl6F4oAAAA8AgAANwAYAAAAAAABAAAApIFhkwgAdHJhbnNpdGlvbnMv
Y3ViaWMtYmV6aWVyLW92ZXJmbG93LXN2Zy1sZW5ndGgtc3RkZXJyLnR4dFVUBQAD0V0OVHV4CwAB
BPYBAAAEUAAAAFBLAQIeAwoAAAAAANWWKEUAAAAAAAAAAAAAAAAGABgAAAAAAAAAEADtQVyUCAB3
ZWJnbC9VVAUAA+JdDlR1eAsAAQT2AQAABFAAAABQSwECHgMKAAAAAADKlihFAAAAAAAAAAAAAAAA
DAAYAAAAAAAAABAA7UGclAgAd2ViZ2wvMS4wLjEvVVQFAAPLXQ5UdXgLAAEE9gEAAARQAAAAUEsB
Ah4DCgAAAAAA1JYoRQAAAAAAAAAAAAAAABgAGAAAAAAAAAAQAO1B4pQIAHdlYmdsLzEuMC4xL2Nv
bmZvcm1hbmNlL1VUBQAD4F0OVHV4CwABBPYBAAAEUAAAAFBLAQIeAwoAAAAAAMqWKEUAAAAAAAAA
AAAAAAAgABgAAAAAAAAAEADtQTSVCAB3ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9jb250ZXh0L1VU
BQADy10OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIAMqWKEUuylFKzwAAAA8BAABAABgAAAAA
AAEAAACkgY6VCAB3ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9jb250ZXh0L2NvbnRleHQtbG9zdC1y
ZXN0b3JlZC1hY3R1YWwudHh0VVQFAAPLXQ5UdXgLAAEE9gEAAARQAAAAUEsBAh4DFAACAAgAypYo
RZZYflcoAQAAKwIAAD4AGAAAAAAAAQAAAKSB15YIAHdlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL2Nv
bnRleHQvY29udGV4dC1sb3N0LXJlc3RvcmVkLWRpZmYudHh0VVQFAAPLXQ5UdXgLAAEE9gEAAARQ
AAAAUEsBAh4DFAACAAgAypYoRdtqgd6JAAAArwAAAEIAGAAAAAAAAQAAAKSBd5gIAHdlYmdsLzEu
MC4xL2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1sb3N0LXJlc3RvcmVkLWV4cGVjdGVkLnR4
dFVUBQADy10OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIAMqWKEVj/boV+QcAACQZAABGABgA
AAAAAAEAAACkgXyZCAB3ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9jb250ZXh0L2NvbnRleHQtbG9z
dC1yZXN0b3JlZC1wcmV0dHktZGlmZi5odG1sVVQFAAPLXQ5UdXgLAAEE9gEAAARQAAAAUEsBAh4D
CgAAAAAA0pYoRQAAAAAAAAAAAAAAAB0AGAAAAAAAAAAQAO1B9aEIAHdlYmdsLzEuMC4xL2NvbmZv
cm1hbmNlL2dsc2wvVVQFAAPbXQ5UdXgLAAEE9gEAAARQAAAAUEsBAh4DCgAAAAAA0pYoRQAAAAAA
AAAAAAAAACcAGAAAAAAAAAAQAO1BTKIIAHdlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL2dsc2wvZnVu
Y3Rpb25zL1VUBQAD210OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIANKWKEXFTlZrmAAAAMQA
AABSABgAAAAAAAEAAACkga2iCAB3ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9u
cy9nbHNsLWZ1bmN0aW9uLXNtb290aHN0ZXAtZ2VudHlwZS1hY3R1YWwudHh0VVQFAAPbXQ5UdXgL
AAEE9gEAAARQAAAAUEsBAh4DFAACAAgA0pYoRfOjHFH4AAAAEQIAAFAAGAAAAAAAAQAAAKSB0aMI
AHdlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tc21v
b3Roc3RlcC1nZW50eXBlLWRpZmYudHh0VVQFAAPbXQ5UdXgLAAEE9gEAAARQAAAAUEsBAh4DFAAC
AAgA0pYoRfX8B5aYAAAAxAAAAFQAGAAAAAAAAQAAAKSBU6UIAHdlYmdsLzEuMC4xL2NvbmZvcm1h
bmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tc21vb3Roc3RlcC1nZW50eXBlLWV4cGVj
dGVkLnR4dFVUBQAD210OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIANKWKEXcN/zQ/wcAANYa
AABYABgAAAAAAAEAAACkgXmmCAB3ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9nbHNsL2Z1bmN0aW9u
cy9nbHNsLWZ1bmN0aW9uLXNtb290aHN0ZXAtZ2VudHlwZS1wcmV0dHktZGlmZi5odG1sVVQFAAPb
XQ5UdXgLAAEE9gEAAARQAAAAUEsBAh4DCgAAAAAAzZYoRQAAAAAAAAAAAAAAACcAGAAAAAAAAAAQ
AO1BCq8IAHdlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL2dsc2wvdmFyaWFibGVzL1VUBQAD0l0OVHV4
CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIAM2WKEU3LHQmjgAAALEAAAA/ABgAAAAAAAEAAACkgWuv
CAB3ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9nbHNsL3ZhcmlhYmxlcy9nbC1wb2ludGNvb3JkLWFj
dHVhbC50eHRVVAUAA9FdDlR1eAsAAQT2AQAABFAAAABQSwECHgMUAAIACADNlihFqDxHVe8AAADY
AQAAPQAYAAAAAAABAAAApIFysAgAd2ViZ2wvMS4wLjEvY29uZm9ybWFuY2UvZ2xzbC92YXJpYWJs
ZXMvZ2wtcG9pbnRjb29yZC1kaWZmLnR4dFVUBQAD0V0OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQA
AgAIAM2WKEUHniXbjQAAALEAAABBABgAAAAAAAEAAACkgdixCAB3ZWJnbC8xLjAuMS9jb25mb3Jt
YW5jZS9nbHNsL3ZhcmlhYmxlcy9nbC1wb2ludGNvb3JkLWV4cGVjdGVkLnR4dFVUBQAD0V0OVHV4
CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIAM2WKEWT5tOT+gcAALAaAABFABgAAAAAAAEAAACkgeCy
CAB3ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9nbHNsL3ZhcmlhYmxlcy9nbC1wb2ludGNvb3JkLXBy
ZXR0eS1kaWZmLmh0bWxVVAUAA9JdDlR1eAsAAQT2AQAABFAAAABQSwECHgMKAAAAAADNlihFAAAA
AAAAAAAAAAAAHwAYAAAAAAAAABAA7UFZuwgAd2ViZ2wvMS4wLjEvY29uZm9ybWFuY2UvbGltaXRz
L1VUBQAD0l0OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIAM2WKEVjerB1kAAAALIAAABDABgA
AAAAAAEAAACkgbK7CAB3ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9saW1pdHMvZ2wtbWF4LXRleHR1
cmUtZGltZW5zaW9ucy1hY3R1YWwudHh0VVQFAAPSXQ5UdXgLAAEE9gEAAARQAAAAUEsBAh4DFAAC
AAgAzZYoRanEZK7xAAAA4QEAAEEAGAAAAAAAAQAAAKSBv7wIAHdlYmdsLzEuMC4xL2NvbmZvcm1h
bmNlL2xpbWl0cy9nbC1tYXgtdGV4dHVyZS1kaW1lbnNpb25zLWRpZmYudHh0VVQFAAPSXQ5UdXgL
AAEE9gEAAARQAAAAUEsBAh4DFAACAAgAzZYoRVPI4YiPAAAAsgAAAEUAGAAAAAAAAQAAAKSBK74I
AHdlYmdsLzEuMC4xL2NvbmZvcm1hbmNlL2xpbWl0cy9nbC1tYXgtdGV4dHVyZS1kaW1lbnNpb25z
LWV4cGVjdGVkLnR4dFVUBQAD0l0OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIAM2WKEWtp6pg
+gcAALUaAABJABgAAAAAAAEAAACkgTm/CAB3ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS9saW1pdHMv
Z2wtbWF4LXRleHR1cmUtZGltZW5zaW9ucy1wcmV0dHktZGlmZi5odG1sVVQFAAPSXQ5UdXgLAAEE
9gEAAARQAAAAUEsBAh4DCgAAAAAA1JYoRQAAAAAAAAAAAAAAACEAGAAAAAAAAAAQAO1BtscIAHdl
YmdsLzEuMC4xL2NvbmZvcm1hbmNlL3RleHR1cmVzL1VUBQAD4F0OVHV4CwABBPYBAAAEUAAAAFBL
AQIeAxQAAgAIANSWKEVnBRbihwAAAKcAAAA4ABgAAAAAAAEAAACkgRHICAB3ZWJnbC8xLjAuMS9j
b25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLXNpemUtYWN0dWFsLnR4dFVUBQAD4F0OVHV4CwAB
BPYBAAAEUAAAAFBLAQIeAxQAAgAIANSWKEX5y1jU5gAAAMABAAA2ABgAAAAAAAEAAACkgQrJCAB3
ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLXNpemUtZGlmZi50eHRVVAUA
A+BdDlR1eAsAAQT2AQAABFAAAABQSwECHgMUAAIACADUlihFV7dHH4cAAACnAAAAOgAYAAAAAAAB
AAAApIFgyggAd2ViZ2wvMS4wLjEvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1zaXplLWV4
cGVjdGVkLnR4dFVUBQAD4F0OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIANSWKEUBuTp+7gcA
AJ8aAAA+ABgAAAAAAAEAAACkgVvLCAB3ZWJnbC8xLjAuMS9jb25mb3JtYW5jZS90ZXh0dXJlcy90
ZXh0dXJlLXNpemUtcHJldHR5LWRpZmYuaHRtbFVUBQAD4F0OVHV4CwABBPYBAAAEUAAAAFBLAQIe
AwoAAAAAANWWKEUAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQcHTCAB3ZWJnbC8xLjAuMi9VVAUA
A+JdDlR1eAsAAQT2AQAABFAAAABQSwECHgMKAAAAAAD9lihFAAAAAAAAAAAAAAAAGAAYAAAAAAAA
ABAA7UEH1AgAd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvVVQFAAMtXg5UdXgLAAEE9gEAAARQAAAA
UEsBAh4DCgAAAAAA2pYoRQAAAAAAAAAAAAAAAB0AGAAAAAAAAAAQAO1BWdQIAHdlYmdsLzEuMC4y
L2NvbmZvcm1hbmNlL2dsc2wvVVQFAAPsXQ5UdXgLAAEE9gEAAARQAAAAUEsBAh4DCgAAAAAA2pYo
RQAAAAAAAAAAAAAAACcAGAAAAAAAAAAQAO1BsNQIAHdlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL2ds
c2wvZnVuY3Rpb25zL1VUBQAD7F0OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIANqWKEXFTlZr
mAAAAMQAAABSABgAAAAAAAEAAACkgRHVCAB3ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9nbHNsL2Z1
bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLXNtb290aHN0ZXAtZ2VudHlwZS1hY3R1YWwudHh0VVQFAAPs
XQ5UdXgLAAEE9gEAAARQAAAAUEsBAh4DFAACAAgA2pYoRW19DAX4AAAAEQIAAFAAGAAAAAAAAQAA
AKSBNdYIAHdlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rp
b24tc21vb3Roc3RlcC1nZW50eXBlLWRpZmYudHh0VVQFAAPsXQ5UdXgLAAEE9gEAAARQAAAAUEsB
Ah4DFAACAAgA2pYoRfX8B5aYAAAAxAAAAFQAGAAAAAAAAQAAAKSBt9cIAHdlYmdsLzEuMC4yL2Nv
bmZvcm1hbmNlL2dsc2wvZnVuY3Rpb25zL2dsc2wtZnVuY3Rpb24tc21vb3Roc3RlcC1nZW50eXBl
LWV4cGVjdGVkLnR4dFVUBQAD7F0OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIANqWKEVScKdr
/gcAANYaAABYABgAAAAAAAEAAACkgd3YCAB3ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9nbHNsL2Z1
bmN0aW9ucy9nbHNsLWZ1bmN0aW9uLXNtb290aHN0ZXAtZ2VudHlwZS1wcmV0dHktZGlmZi5odG1s
VVQFAAPsXQ5UdXgLAAEE9gEAAARQAAAAUEsBAh4DCgAAAAAA1ZYoRQAAAAAAAAAAAAAAACcAGAAA
AAAAAAAQAO1BbeEIAHdlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL2dsc2wvdmFyaWFibGVzL1VUBQAD
4l0OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIANWWKEU3LHQmjgAAALEAAAA/ABgAAAAAAAEA
AACkgc7hCAB3ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9nbHNsL3ZhcmlhYmxlcy9nbC1wb2ludGNv
b3JkLWFjdHVhbC50eHRVVAUAA+JdDlR1eAsAAQT2AQAABFAAAABQSwECHgMUAAIACADVlihF46BM
1u8AAADYAQAAPQAYAAAAAAABAAAApIHV4ggAd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvZ2xzbC92
YXJpYWJsZXMvZ2wtcG9pbnRjb29yZC1kaWZmLnR4dFVUBQAD4l0OVHV4CwABBPYBAAAEUAAAAFBL
AQIeAxQAAgAIANWWKEUHniXbjQAAALEAAABBABgAAAAAAAEAAACkgTvkCAB3ZWJnbC8xLjAuMi9j
b25mb3JtYW5jZS9nbHNsL3ZhcmlhYmxlcy9nbC1wb2ludGNvb3JkLWV4cGVjdGVkLnR4dFVUBQAD
4l0OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIANWWKEXAeO0d+QcAALAaAABFABgAAAAAAAEA
AACkgUPlCAB3ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9nbHNsL3ZhcmlhYmxlcy9nbC1wb2ludGNv
b3JkLXByZXR0eS1kaWZmLmh0bWxVVAUAA+JdDlR1eAsAAQT2AQAABFAAAABQSwECHgMKAAAAAADV
lihFAAAAAAAAAAAAAAAAHwAYAAAAAAAAABAA7UG77QgAd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2Uv
bGltaXRzL1VUBQAD4l0OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIANWWKEVjerB1kAAAALIA
AABDABgAAAAAAAEAAACkgRTuCAB3ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9saW1pdHMvZ2wtbWF4
LXRleHR1cmUtZGltZW5zaW9ucy1hY3R1YWwudHh0VVQFAAPiXQ5UdXgLAAEE9gEAAARQAAAAUEsB
Ah4DFAACAAgA1ZYoRRor823xAAAA4QEAAEEAGAAAAAAAAQAAAKSBIe8IAHdlYmdsLzEuMC4yL2Nv
bmZvcm1hbmNlL2xpbWl0cy9nbC1tYXgtdGV4dHVyZS1kaW1lbnNpb25zLWRpZmYudHh0VVQFAAPi
XQ5UdXgLAAEE9gEAAARQAAAAUEsBAh4DFAACAAgA1ZYoRVPI4YiPAAAAsgAAAEUAGAAAAAAAAQAA
AKSBjfAIAHdlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL2xpbWl0cy9nbC1tYXgtdGV4dHVyZS1kaW1l
bnNpb25zLWV4cGVjdGVkLnR4dFVUBQAD4l0OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIANWW
KEV++XPJ+QcAALUaAABJABgAAAAAAAEAAACkgZvxCAB3ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9s
aW1pdHMvZ2wtbWF4LXRleHR1cmUtZGltZW5zaW9ucy1wcmV0dHktZGlmZi5odG1sVVQFAAPiXQ5U
dXgLAAEE9gEAAARQAAAAUEsBAh4DCgAAAAAA65YoRQAAAAAAAAAAAAAAAB4AGAAAAAAAAAAQAO1B
F/oIAHdlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL29nbGVzL1VUBQADCl4OVHV4CwABBPYBAAAEUAAA
AFBLAQIeAwoAAAAAAOuWKEUAAAAAAAAAAAAAAAAhABgAAAAAAAAAEADtQW/6CAB3ZWJnbC8xLjAu
Mi9jb25mb3JtYW5jZS9vZ2xlcy9HTC9VVAUAAwpeDlR1eAsAAQT2AQAABFAAAABQSwECHgMKAAAA
AADrlihFAAAAAAAAAAAAAAAAKwAYAAAAAAAAABAA7UHK+ggAd2ViZ2wvMS4wLjIvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvb3BlcmF0b3JzL1VUBQADCl4OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAI
AOuWKEWaJehykgAAAL8AAABKABgAAAAAAAEAAACkgS/7CAB3ZWJnbC8xLjAuMi9jb25mb3JtYW5j
ZS9vZ2xlcy9HTC9vcGVyYXRvcnMvb3BlcmF0b3JzXzAwOV90b18wMTYtYWN0dWFsLnR4dFVUBQAD
Cl4OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIAOuWKEWEGgoh9gAAAPwBAABIABgAAAAAAAEA
AACkgUX8CAB3ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvb3BlcmF0
b3JzXzAwOV90b18wMTYtZGlmZi50eHRVVAUAAwpeDlR1eAsAAQT2AQAABFAAAABQSwECHgMUAAIA
CADrlihFqpe5j5IAAAC/AAAATAAYAAAAAAABAAAApIG9/QgAd2ViZ2wvMS4wLjIvY29uZm9ybWFu
Y2Uvb2dsZXMvR0wvb3BlcmF0b3JzL29wZXJhdG9yc18wMDlfdG9fMDE2LWV4cGVjdGVkLnR4dFVU
BQADCl4OVHV4CwABBPYBAAAEUAAAAFBLAQIeAxQAAgAIAOuWKEWWhsxQ/wcAAMkaAABQABgAAAAA
AAEAAACkgdX+CAB3ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS9vZ2xlcy9HTC9vcGVyYXRvcnMvb3Bl
cmF0b3JzXzAwOV90b18wMTYtcHJldHR5LWRpZmYuaHRtbFVUBQADCl4OVHV4CwABBPYBAAAEUAAA
AFBLAQIeAwoAAAAAAP2WKEUAAAAAAAAAAAAAAAAhABgAAAAAAAAAEADtQV4HCQB3ZWJnbC8xLjAu
Mi9jb25mb3JtYW5jZS90ZXh0dXJlcy9VVAUAAy1eDlR1eAsAAQT2AQAABFAAAABQSwECHgMUAAIA
CAD9lihFZwUW4ocAAACnAAAAOAAYAAAAAAABAAAApIG5BwkAd2ViZ2wvMS4wLjIvY29uZm9ybWFu
Y2UvdGV4dHVyZXMvdGV4dHVyZS1zaXplLWFjdHVhbC50eHRVVAUAAy1eDlR1eAsAAQT2AQAABFAA
AABQSwECHgMUAAIACAD9lihFMOHZ8+cAAADAAQAANgAYAAAAAAABAAAApIGyCAkAd2ViZ2wvMS4w
LjIvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1zaXplLWRpZmYudHh0VVQFAAMtXg5UdXgL
AAEE9gEAAARQAAAAUEsBAh4DFAACAAgA/ZYoRVe3Rx+HAAAApwAAADoAGAAAAAAAAQAAAKSBCQoJ
AHdlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1cmUtc2l6ZS1leHBlY3RlZC50
eHRVVAUAAy1eDlR1eAsAAQT2AQAABFAAAABQSwECHgMUAAIACAD9lihFaMPMlO4HAACfGgAAPgAY
AAAAAAABAAAApIEECwkAd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1z
aXplLXByZXR0eS1kaWZmLmh0bWxVVAUAAy1eDlR1eAsAAQT2AQAABFAAAABQSwUGAAAAAKEAoQDF
TAAAahMJAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238037</attachid>
            <date>2014-09-12 10:29:31 -0700</date>
            <delta_ts>2014-09-21 11:15:54 -0700</delta_ts>
            <desc>WIP (latest final)</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>124220</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggOGQxZmQ0MC4uYTlmODE5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTc3MSw2ICs3NzEsNyBAQCBfX1pON1dlYkNvcmUxN1NRTGl0ZVRyYW5zYWN0aW9u
RDFFdgogX19aTjdXZWJDb3JlMTdTdWJyZXNvdXJjZUxvYWRlcjZjcmVhdGVFUE5TXzVGcmFtZUVQ
TlNfMTRDYWNoZWRSZXNvdXJjZUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMjFSZXNvdXJj
ZUxvYWRlck9wdGlvbnNFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18xN0pT
RE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9fWk43
V2ViQ29yZTE3ZW5jb2RlRm9yRmlsZU5hbWVFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUx
N2V4ZWNTdGF0ZUZyb21QYWdlRVJOU18xNURPTVdyYXBwZXJXb3JsZEVQTlNfNFBhZ2VFCiBfX1pO
N1dlYkNvcmUxN2xhbmd1YWdlRGlkQ2hhbmdlRXYKIF9fWk43V2ViQ29yZTE3b3BlblRlbXBvcmFy
eUZpbGVFUktOM1dURjZTdHJpbmdFUmkKIF9fWk43V2ViQ29yZTE3c1JHQkNvbG9yU3BhY2VSZWZF
dgpAQCAtNzk0LDYgKzc5NSw3IEBAIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkOGFk
ZFR5cGVzRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDCiBfX1pON1dlYkNv
cmUxOFBsYXRmb3JtUGFzdGVib2FyZDhnZXRUeXBlc0VSTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5n
RUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0
ZWJvYXJkOHNldFR5cGVzRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDcmFz
aE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkQzFFUktOM1dU
RjZTdHJpbmdFCitfX1pON1dlYkNvcmUxOFNjcmlwdEdsb2JhbE9iamVjdDNzZXRFUE4zSlNDOUV4
ZWNTdGF0ZUVQS2NQTlNfMjFJbnNwZWN0b3JGcm9udGVuZEhvc3RFCiBfX1pON1dlYkNvcmUxOFN0
eWxlU2hlZXRDb250ZW50czExcGFyc2VTdHJpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNv
cmUxOFN0eWxlU2hlZXRDb250ZW50c0MxRVBOU18xNVN0eWxlUnVsZUltcG9ydEVSS04zV1RGNlN0
cmluZ0VSS05TXzE2Q1NTUGFyc2VyQ29udGV4dEUKIF9fWk43V2ViQ29yZTE4U3R5bGVTaGVldENv
bnRlbnRzRDFFdgpAQCAtMTkyNyw3ICsxOTI5LDEwIEBAIF9fWk5LN1dlYkNvcmU1UmFuZ2U5ZW5k
T2Zmc2V0RVJpCiBfX1pOSzdXZWJDb3JlNVJhbmdlOWZpcnN0Tm9kZUV2CiBfX1pOSzdXZWJDb3Jl
NVJhbmdlOXRleHRRdWFkc0VSTjNXVEY2VmVjdG9ySU5TXzlGbG9hdFF1YWRFTG0wRU5TMV8xNUNy
YXNoT25PdmVyZmxvd0VFRWJQTlMwXzIwUmFuZ2VJbkZpeGVkUG9zaXRpb25FCiBfX1pOSzdXZWJD
b3JlNVJhbmdlOXRleHRSZWN0c0VSTjNXVEY2VmVjdG9ySU5TXzdJbnRSZWN0RUxtMEVOUzFfMTVD
cmFzaE9uT3ZlcmZsb3dFRUViUE5TMF8yMFJhbmdlSW5GaXhlZFBvc2l0aW9uRQorX19aTks3V2Vi
Q29yZTZDaHJvbWUxMHdpbmRvd1JlY3RFdgogX19aTks3V2ViQ29yZTZDaHJvbWUxMmNyZWF0ZVdp
bmRvd0VQTlNfNUZyYW1lRVJLTlNfMTZGcmFtZUxvYWRSZXF1ZXN0RVJLTlNfMTRXaW5kb3dGZWF0
dXJlc0VSS05TXzE2TmF2aWdhdGlvbkFjdGlvbkUKK19fWk5LN1dlYkNvcmU2Q2hyb21lMTNzZXRX
aW5kb3dSZWN0RVJLTlNfOUZsb2F0UmVjdEUKK19fWk5LN1dlYkNvcmU2Q2hyb21lNHNob3dFdgog
X19aTks3V2ViQ29yZTZFZGl0b3IxMnNlbGVjdGVkVGV4dEV2CiBfX1pOSzdXZWJDb3JlNkVkaXRv
cjEzY2FuRWRpdFJpY2hseUV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjE2Y29tcG9zaXRpb25SYW5n
ZUV2CkBAIC0zMTI0LDEzICszMTI5LDE4IEBAIF9fWk43V2ViQ29yZTVDb2xvckMxRVJLTjNXVEY2
U3RyaW5nRQogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiBfX1pON1dlYkNvcmUxNFNjaGVtZVJlZ2lz
dHJ5MjdzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dl
YkNvcmUxNUluc3BlY3RvckNsaWVudDMxZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZUVQ
TlNfNFBhZ2VFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUxOEluc3BlY3RvclBhZ2VBZ2Vu
dDdmcmFtZUlkRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIx
NWNvbm5lY3RGcm9udGVuZEVQTjlJbnNwZWN0b3IyNEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbEUK
IF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4ZGlzY29ubmVjdEZyb250ZW5kRU45
SW5zcGVjdG9yMjVJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uRQogX19aTjdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyMThzZXRQcm9maWxlckVuYWJsZWRFYgogX19aTjdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyMjVldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kRVJLTjNXVEY2U3RyaW5n
RQotX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjZzZXRJbnNwZWN0b3JGcm9udGVu
ZENsaWVudEVOU3QzX18xMTB1bmlxdWVfcHRySU5TXzIzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRF
TlMxXzE0ZGVmYXVsdF9kZWxldGVJUzNfRUVFRQorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250
cm9sbGVyMjZzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudEVQTlNfMjNJbnNwZWN0b3JGcm9udGVu
ZENsaWVudEUKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI3ZGlzcGF0Y2hNZXNz
YWdlRnJvbUZyb250ZW5kRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JD
b250cm9sbGVyNHNob3dFdgogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyNWNsb3Nl
RXYKK19fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0MTZkaXNjb25uZWN0Q2xpZW50
RXYKK19fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0QzFFUE5TXzIzSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRFUE5TXzRQYWdlRQorX19aTjdXZWJDb3JlMjFJbnNwZWN0b3JGcm9udGVu
ZEhvc3REMUV2CiBfX1pON1dlYkNvcmUyMmluc3RydW1lbnRhdGlvbkZvclBhZ2VFUE5TXzRQYWdl
RQogX19aTjdXZWJDb3JlMjRJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24xN3NfZnJvbnRlbmRDb3Vu
dGVyRQogX19aTjdXZWJDb3JlMjRJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24yNmluc3RydW1lbnRp
bmdBZ2VudHNGb3JQYWdlRVBOU180UGFnZUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NTlhMjQyLi5lNWQ1NGNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NzYxLDcgKzE3NjEsNyBAQAogCQk0RjE1MzRFMDExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0Jl
aGF2aW9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRGMTUzNERGMTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3JUeXBlcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRGNEY1RkZC
MTFDQkQyRTEwMEExODZCRiAvKiBJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNEY1RkZBMTFD
QkQyRDIwMEExODZCRiAvKiBJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmNwcCAqLzsg
fTsKIAkJNEY2RkRENjQxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjZGREQ2MjEz
NDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmNwcCAqLzsgfTsKLQkJNEY2RkRE
NjUxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRENjMxMzQxREVERDAwMUY4RUUz
IC8qIEluc3BlY3RvclBhZ2VBZ2VudC5oICovOyB9OworCQk0RjZGREQ2NTEzNDFERUREMDAxRjhF
RTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0RjZGREQ2MzEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFn
ZUFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNEY3MDdBOTkxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRj
aGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
RjcwN0E5NzExRUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJz
LmNwcCAqLzsgfTsKIAkJNEY3MDdBOUExMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvcldlYkJh
Y2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEY3MDdBOTgxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvcldlYkJhY2tlbmRE
aXNwYXRjaGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTRGQjM5MEFEMTVFRjYxRjMwMDdBRDUxRiAvKiBHZW5lcmF0ZWRJbWFnZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RkIzOTBBQzE1RUY2
MUYzMDA3QUQ1MUYgLyogR2VuZXJhdGVkSW1hZ2UuY3BwICovOyB9OwpAQCAtMjMyNCw3ICsyMzI0
LDcgQEAKIAkJNzlGMkY1QTExMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlGMkY1OUUx
MDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuY3BwICovOyB9OwogCQk3OUYyRjVB
MjEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlGMkY1OUYxMDkxOTM5QTAwMEQ4N0NCIC8q
IENvbXBvc2l0aW9uRXZlbnQuaCAqLzsgfTsKIAkJN0EwRTc3MEUxMEMwMEE4ODAwQTAyNzZFIC8q
IEluc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzcwQjEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcCAqLzsgfTsKLQkJN0EwRTc3MEYxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3Bl
Y3RvckZyb250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0EwRTc3MEMxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9z
dC5oICovOyB9OworCQk3QTBFNzcwRjEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QTBFNzcwQzEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0EwRTc3MUUxMEMw
MERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NzFDMTBDMDBEQjEwMEEwMjc2
RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgKi87IH07CiAJCTdBMEU3NzFGMTBDMDBE
QjEwMEEwMjc2RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EwRTc3MUQxMEMwMERCMTAwQTAyNzZFIC8q
IEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggKi87IH07CiAJCTdBMUQ3RkNCMThGODVGMEYwMEMz
ODVBRCAvKiBtZWRpYUNvbnRyb2xzTG9jYWxpemVkU3RyaW5ncy5qcyBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0ExRDdGQzkxOEY4NUYwRjAwQzM4NUFE
IC8qIG1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJpbmdzLmpzICovOyB9OwpAQCAtMjM2Miw3ICsy
MzYyLDcgQEAKIAkJN0FCMEIxQzExMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFiYXNl
QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
QjBCMUJGMTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggKi87IH07
CiAJCTdBQ0Q4OEQzMTRDMDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUNEODhE
MTE0QzA4QkQ2MDA4NEVERDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwICovOyB9Owog
CQk3QUNEODhENDE0QzA4QkQ2MDA4NEVERDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQ0Q4OEQyMTRD
MDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oICovOyB9OwotCQk3QURF
NzIyNjEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FERTcyMjUxMENCQkI5QjAwNkIz
QjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLzsgfTsKKwkJN0FERTcyMjYxMENCQkI5QjAw
NkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBREU3MjI1MTBDQkJCOUIwMDZCM0IzQSAvKiBDb250ZXh0
TWVudVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0FGOUIyMDIxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFGQzE4Q0ZCMkRG
MDBDNjRCRUYgLyogVlRUUmVnaW9uLmNwcCAqLzsgfTsKIAkJN0FGOUIyMDMxOENGQjJERjAwQzY0
QkVGIC8qIFZUVFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0FGOUIxRkQxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5oICovOyB9Owog
CQk3QUY5QjIwNTE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uTGlzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFGRjE4Q0ZCMkRGMDBD
NjRCRUYgLyogVlRUUmVnaW9uTGlzdC5jcHAgKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oCmluZGV4IDhhYTA1NWIuLjkyYmYyMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVjdC5oCkBA
IC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFNjcmlwdEdsb2JhbE9iamVjdCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBz
dGF0aWMgYm9vbCBzZXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0
b3JGcm9udGVuZEhvc3QqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzZXQoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBJbnNwZWN0b3JGcm9udGVuZEhvc3QqKTsK
ICNlbmRpZgogCiAgICAgc3RhdGljIGJvb2wgZ2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hh
ciogbmFtZSwgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuaAppbmRleCA4YTgyY2FiLi43ZTI2YWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKQEAgLTU4LDcgKzU4LDcgQEAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoSlNDOjpF
eGVjU3RhdGUqKTsKIEpTQzo6RXhlY1N0YXRlKiBtYWluV29ybGRFeGVjU3RhdGUoRnJhbWUqKTsK
IAogSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCYsIE5v
ZGUqKTsKLUpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tUGFnZShET01XcmFwcGVyV29ybGQm
LCBQYWdlKik7CitXRUJDT1JFX0VYUE9SVCBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVBh
Z2UoRE9NV3JhcHBlcldvcmxkJiwgUGFnZSopOwogSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZy
b21Xb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSopOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKaW5kZXggYzdjODc5NS4uMjA0MjUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODYsNiArODYsNyBAQCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3Rv
ckNsaWVudCogaW5zcGVjdG9yQwogICAgICwgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwobnVs
bHB0cikKICAgICAsIG1fcGFnZShwYWdlKQogICAgICwgbV9pbnNwZWN0b3JDbGllbnQoaW5zcGVj
dG9yQ2xpZW50KQorICAgICwgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudChudWxscHRyKQogICAg
ICwgbV9pc1VuZGVyVGVzdChmYWxzZSkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAg
ICAsIG1faGFzUmVtb3RlRnJvbnRlbmQoZmFsc2UpCkBAIC0xODgsOSArMTg5LDkgQEAgdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCkKICAgICBtX2luc3Bl
Y3RvckNsaWVudCA9IG51bGxwdHI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250ZW5k
Q2xpZW50PiBpbnNwZWN0b3JGcm9udGVuZENsaWVudCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIGlu
c3BlY3RvckZyb250ZW5kQ2xpZW50KQogewotICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQg
PSBXVEY6Om1vdmUoaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOworICAgIG1faW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQgPSBpbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIH0KIAogYm9vbCBJbnNwZWN0
b3JDb250cm9sbGVyOjpoYXNMb2NhbEZyb250ZW5kKCkgY29uc3QKQEAgLTIxMyw3ICsyMTQsNyBA
QCBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc1JlbW90ZUZyb250ZW5kKCkgY29uc3QKIAog
Ym9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuZ2V0KCk7CisgICAg
cmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiBmcmFtZSwgRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCkKQEAgLTI4Myw4ICsyODQsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OnNob3coKQogICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKICAgICAg
ICAgbV9pbnNwZWN0b3JDbGllbnQtPmJyaW5nRnJvbnRlbmRUb0Zyb250KCk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gbV9p
bnNwZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVuZCh0aGlzKTsKLSAgICAgICAgaWYg
KGZyb250ZW5kQ2hhbm5lbCkKKyAgICAgICAgaWYgKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsID0gbV9pbnNwZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVu
ZCh0aGlzKSkKICAgICAgICAgICAgIGNvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5oCmluZGV4IGZkNTU5MjQuLjMwZDNjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbG9z
ZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KEluc3BlY3RvckZyb250ZW5k
Q2xpZW50Kik7CiAgICAgYm9vbCBoYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIGNvbnN0Owog
ICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiwgRE9NV3JhcHBlcldv
cmxkJik7CiAKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWUoKTsK
IAogICAgIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KCkgY29uc3QgeyByZXR1cm4g
bV9pbnNwZWN0b3JDbGllbnQ7IH0KLSAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZUFnZW50OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgSW5zcGVj
dG9yUGFnZUFnZW50KiBwYWdlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VBZ2VudDsgfQog
CiAgICAgdmlydHVhbCBib29sIGRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVkU2NyaXB0U3RhdGUoSlNDOjpF
eGVjU3RhdGUqKSBjb25zdCBvdmVycmlkZTsKQEAgLTE0NiwxMCArMTQ2LDEwIEBAIHByaXZhdGU6
CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogbV90aW1lbGluZUFnZW50OwogCiAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50PiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50OwogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKICAgICBQYWdlJiBt
X3BhZ2U7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVudDsKKyAgICBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudCogbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudDsKICAgICBJbnNw
ZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CiAgICAgVmVjdG9yPEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSwgMj4gbV9pbmplY3RlZFNjcmlwdEluc3RydW1lbnRh
dGlvbkNvb2tpZXM7CiAgICAgYm9vbCBtX2lzVW5kZXJUZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCmluZGV4IDhlOGNkODUuLjFhNzRl
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEluc3BlY3RvckZyb250ZW5kSG9zdChjbGllbnQsIGZyb250ZW5kUGFnZSkpOwogICAgIH0K
IAotICAgIH5JbnNwZWN0b3JGcm9udGVuZEhvc3QoKTsKLSAgICB2b2lkIGRpc2Nvbm5lY3RDbGll
bnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+SW5zcGVjdG9yRnJvbnRlbmRIb3N0KCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCk7CiAKICAgICB2b2lkIGxvYWRl
ZCgpOwogICAgIHZvaWQgcmVxdWVzdFNldERvY2tTaWRlKGNvbnN0IFN0cmluZyYpOwpAQCAtOTUs
NyArOTUsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIGZyaWVu
ZCBjbGFzcyBGcm9udGVuZE1lbnVQcm92aWRlcjsKICNlbmRpZgotICAgIEluc3BlY3RvckZyb250
ZW5kSG9zdChJbnNwZWN0b3JGcm9udGVuZENsaWVudCosIFBhZ2UqIGZyb250ZW5kUGFnZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0KEluc3BlY3RvckZyb250ZW5k
Q2xpZW50KiwgUGFnZSogZnJvbnRlbmRQYWdlKTsKIAogICAgIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KiBtX2NsaWVudDsKICAgICBQYWdlKiBtX2Zyb250ZW5kUGFnZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCAxMTA2NzBlLi4yNWZlMWQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBA
IC0xNTUsNyArMTU1LDcgQEAgcHVibGljOgogICAgIEZyYW1lKiBtYWluRnJhbWUoKTsKICAgICBT
dHJpbmcgY3JlYXRlSWRlbnRpZmllcigpOwogICAgIEZyYW1lKiBmcmFtZUZvcklkKGNvbnN0IFN0
cmluZyYgZnJhbWVJZCk7Ci0gICAgU3RyaW5nIGZyYW1lSWQoRnJhbWUqKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgZnJhbWVJZChGcmFtZSopOwogICAgIGJvb2wgaGFzSWRGb3JGcmFtZShG
cmFtZSopIGNvbnN0OwogICAgIFN0cmluZyBsb2FkZXJJZChEb2N1bWVudExvYWRlciopOwogICAg
IEZyYW1lKiBmaW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5S
YXdTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggZmNhN2Y5MC4uM2U0ZjVmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5oCkBAIC0xMDIsOCArMTAyLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjb250
ZW50c1NpemVDaGFuZ2VkKEZyYW1lKiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0OwogCi0gICAgdm9p
ZCBzZXRXaW5kb3dSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwotICAgIEZsb2F0UmVjdCB3
aW5kb3dSZWN0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXaW5kb3dSZWN0
KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCB3
aW5kb3dSZWN0KCkgY29uc3Q7CiAKICAgICBGbG9hdFJlY3QgcGFnZVJlY3QoKSBjb25zdDsKIApA
QCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvY3VzZWRGcmFtZUNoYW5nZWQo
RnJhbWUqKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2UqIGNyZWF0ZVdpbmRvdyhG
cmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNv
bnN0IE5hdmlnYXRpb25BY3Rpb24mKSBjb25zdDsKLSAgICB2b2lkIHNob3coKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNob3coKSBjb25zdDsKIAogICAgIGJvb2wgY2FuUnVuTW9k
YWwoKSBjb25zdDsKICAgICBib29sIGNhblJ1bk1vZGFsTm93KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMGEwMjY3YS4uNTllNzFjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTQ3MSwxMiArMTQ3MSwxMCBAQCBQYXNzUmVmUHRy
PERPTVdpbmRvdz4gSW50ZXJuYWxzOjpvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBT
dHJpbmcmIHVybCkKICAgICBQYWdlKiBmcm9udGVuZFBhZ2UgPSBtX2Zyb250ZW5kV2luZG93LT5k
b2N1bWVudCgpLT5wYWdlKCk7CiAgICAgQVNTRVJUKGZyb250ZW5kUGFnZSk7CiAKLSAgICBhdXRv
IGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZENsaWVu
dER1bW15PigmcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBmcm9udGVuZFBhZ2UpOwotCi0g
ICAgZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7Ci0KLSAgICBtX2Zyb250ZW5kQ2hh
bm5lbCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teShmcm9udGVu
ZFBhZ2UpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3JGcm9udGVuZENsaWVudER1bW15PigmcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBmcm9u
dGVuZFBhZ2UpOworICAgIGZyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldElu
c3BlY3RvckZyb250ZW5kQ2xpZW50KG1fZnJvbnRlbmRDbGllbnQuZ2V0KCkpOwogCisgICAgbV9m
cm9udGVuZENoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bER1bW15Pihmcm9udGVuZFBhZ2UpOwogICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5j
b25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENoYW5uZWwuZ2V0KCkpOwogCiAgICAgcmV0dXJuIG1f
ZnJvbnRlbmRXaW5kb3c7CkBAIC0xNDkwLDEwICsxNDg4LDExIEBAIHZvaWQgSW50ZXJuYWxzOjpj
bG9zZUR1bW15SW5zcGVjdG9yRnJvbnRlbmQoKQogCiAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNw
ZWN0b3JEZXN0cm95ZWQpOwogCi0gICAgbV9mcm9udGVuZENoYW5uZWwucmVsZWFzZSgpOworICAg
IG1fZnJvbnRlbmRDbGllbnQgPSBudWxscHRyOworICAgIG1fZnJvbnRlbmRDaGFubmVsID0gbnVs
bHB0cjsKIAogICAgIG1fZnJvbnRlbmRXaW5kb3ctPmNsb3NlKG1fZnJvbnRlbmRXaW5kb3ctPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgbV9mcm9udGVuZFdpbmRvdy5yZWxlYXNlKCk7
CisgICAgbV9mcm9udGVuZFdpbmRvdy5jbGVhcigpOwogfQogCiB2b2lkIEludGVybmFsczo6c2V0
SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBl
YykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDNmZjlhN2YuLjZjYzdkMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBEb2N1
bWVudE1hcmtlcjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbER1bW15OworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1t
eTsKIGNsYXNzIEludGVybmFsU2V0dGluZ3M7CiBjbGFzcyBNYWxsb2NTdGF0aXN0aWNzOwogY2xh
c3MgTWVtb3J5SW5mbzsKQEAgLTM1MCw3ICszNTEsOCBAQCBwcml2YXRlOgogICAgIERvY3VtZW50
TWFya2VyKiBtYXJrZXJBdChOb2RlKiwgY29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlLCB1bnNpZ25l
ZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgUmVm
UHRyPERPTVdpbmRvdz4gbV9mcm9udGVuZFdpbmRvdzsKLSAgICBPd25QdHI8SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsRHVtbXk+IG1fZnJvbnRlbmRDaGFubmVsOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudER1bW15PiBtX2Zyb250ZW5kQ2xpZW50OworICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teT4gbV9mcm9udGVuZENo
YW5uZWw7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvTWFpbi5qcwppbmRleCA4NWM1ZWM3Li41NjlkZmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCkBAIC00OSw3ICs0
OSw3IEBAIFdlYkluc3BlY3Rvci5UeXBlSWRlbnRpZmllckNvb2tpZUtleSA9ICJyZXByZXNlbnRl
ZC1vYmplY3QtdHlwZSI7CiAKIFdlYkluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiB7Ci0g
ICAgLy8gVGVsbCB0aGUgSW5zcGVjdG9yRnJvbnRlbmRIb3N0IHdlIGxvYWRlZCBmaXJzdCB0byBl
c3RhYmxpc2ggY29tbXVuaWNhdGlvbiB3aXRoIEluc3BlY3RvckJhY2tlbmQuCisgICAgLy8gVGVs
bCB0aGUgSW5zcGVjdG9yRnJvbnRlbmRIb3N0IHdlIGxvYWRlZCwgd2hpY2ggY2F1c2VzIHRoZSB3
aW5kb3cgdG8gZGlzcGxheS4KICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZGVkKCk7CiAK
ICAgICAvLyBJbml0aWFsaXplIFdlYlNvY2tldCB0byBjb21tdW5pY2F0aW9uCkBAIC0zMjgsOSAr
MzI4LDYgQEAgV2ViSW5zcGVjdG9yLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgaWYg
KHRoaXMuX2RldGFpbHNTaWRlYmFyV2lkdGhTZXR0aW5nLnZhbHVlKQogICAgICAgICB0aGlzLmRl
dGFpbHNTaWRlYmFyLndpZHRoID0gdGhpcy5fZGV0YWlsc1NpZGViYXJXaWR0aFNldHRpbmcudmFs
dWU7CiAKLSAgICAvLyBVcGRhdGUgdGhlIGRvY2tlZCBzdGF0ZSBiYXNlZCBvbiB0aGUgcXVlcnkg
c3RyaW5nIHBhc3NlZCB3aGVuIHRoZSBXZWIgSW5zcGVjdG9yIHdhcyBsb2FkZWQuCi0gICAgdGhp
cy51cGRhdGVEb2NrZWRTdGF0ZShwYXJzZUxvY2F0aW9uUXVlcnlQYXJhbWV0ZXJzKCkuZG9ja1Np
ZGUgfHwgInVuZG9ja2VkIik7Ci0KICAgICAvLyBUZWxsIHRoZSBmcm9udGVuZCBBUEkgd2UgYXJl
IGxvYWRlZCBzbyBhbnkgcGVuZGluZyBmcm9udGVuZCBjb21tYW5kcyBjYW4gYmUgZGlzcGF0Y2hl
ZC4KICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3Rv
ckZyb250ZW5kQVBJLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKaW5kZXggMTIyNzIxMS4uN2I4ZGViMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5z
cGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAgLTI1LDI4ICsyNSwxNiBA
QAogCiBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICBfbG9hZGVkOiBmYWxzZSwKLQogICAg
IF9wZW5kaW5nQ29tbWFuZHM6IFtdLAogCiAgICAgc2F2ZWRVUkw6IGZ1bmN0aW9uKHVybCkKICAg
ICB7Ci0gICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgICAgIC8vIE5vdCB1
c2VkIHlldC4KICAgICB9LAogCiAgICAgYXBwZW5kZWRUb1VSTDogZnVuY3Rpb24odXJsKQogICAg
IHsKLSAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KLSAgICB9LAotCi0gICAgaXNE
ZWJ1Z2dpbmdFbmFibGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogTm90
IGltcGxlbWVudGVkLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKLQotICAgIHNldERl
YnVnZ2luZ0VuYWJsZWQ6IGZ1bmN0aW9uKGVuYWJsZWQpCi0gICAgewotICAgICAgICAvLyBGSVhN
RTogTm90IGltcGxlbWVudGVkLgorICAgICAgICAvLyBOb3QgdXNlZCB5ZXQuCiAgICAgfSwKIAog
ICAgIGlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkOiBmdW5jdGlvbigpCkBAIC0xMDgsMTEgKzk2
LDYgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNv
dXJjZVNpZGViYXJQYW5lbC5zaG93U291cmNlQ29kZUZvckZyYW1lKGZyYW1lSWRlbnRpZmllciwg
dHJ1ZSk7CiAgICAgfSwKIAotICAgIHNldERvY2tpbmdVbmF2YWlsYWJsZTogZnVuY3Rpb24odW5h
dmFpbGFibGUpCi0gICAgewotICAgICAgICAvLyBOb3QgdXNlZC4KLSAgICB9LAotCiAgICAgY29u
dGV4dE1lbnVJdGVtU2VsZWN0ZWQ6IGZ1bmN0aW9uKGlkKQogICAgIHsKICAgICAgICAgV2ViSW5z
cGVjdG9yLmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGlkKTsKQEAgLTE0MSw2ICsxMjQsMTAgQEAg
SW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgbWV0aG9k
TmFtZSA9IHNpZ25hdHVyZS5zaGlmdCgpOworICAgICAgICBjb25zb2xlLmFzc2VydChJbnNwZWN0
b3JGcm9udGVuZEFQSVttZXRob2ROYW1lXSwgIlVuZXhwZWN0ZWQgSW5zcGVjdG9yRnJvbnRlbmRB
UEkgbWV0aG9kIG5hbWU6ICIgKyBJbnNwZWN0b3JGcm9udGVuZEFQSVttZXRob2ROYW1lXSk7Cisg
ICAgICAgIGlmICghSW5zcGVjdG9yRnJvbnRlbmRBUElbbWV0aG9kTmFtZV0pCisgICAgICAgICAg
ICByZXR1cm47CisKICAgICAgICAgcmV0dXJuIEluc3BlY3RvckZyb250ZW5kQVBJW21ldGhvZE5h
bWVdLmFwcGx5KEluc3BlY3RvckZyb250ZW5kQVBJLCBzaWduYXR1cmUpOwogICAgIH0sCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudElPUy5tbQppbmRleCBkMzBkOGI5Li45OGRjYWVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1t
CkBAIC00Niw3ICs0Niw2IEBAIFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50
KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICAgICAsIG1faGln
aGxpZ2h0ZXIoYWRvcHROUyhbW1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNw
ZWN0ZWRXZWJWaWV3OndlYlZpZXddKSkKICAgICAsIG1fZnJvbnRlbmRQYWdlKDApCi0gICAgLCBt
X2Zyb250ZW5kQ2xpZW50KDApCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNDg1NjgzNi4uODk4Nzdl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFdlYlZpZXcg
Km1fd2ViVmlldzsKICAgICBSZXRhaW5QdHI8V2ViTm9kZUhpZ2hsaWdodGVyPiBtX2hpZ2hsaWdo
dGVyOwogICAgIFdlYkNvcmU6OlBhZ2UqIG1fZnJvbnRlbmRQYWdlOwotICAgIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KiBtX2Zyb250ZW5kQ2xpZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9mcm9udGVuZENsaWVudDsKIH07CiAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lm1tCmluZGV4IDZlMTc4OWQuLjgzMDhiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTEzMyw4ICsx
MzMsNyBAQCBAZW5kCiBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJW
aWV3ICp3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiAgICAgLCBtX2hpZ2hsaWdo
dGVyKGFkb3B0TlMoW1tXZWJOb2RlSGlnaGxpZ2h0ZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVk
V2ViVmlldzp3ZWJWaWV3XSkpCi0gICAgLCBtX2Zyb250ZW5kUGFnZSgwKQotICAgICwgbV9mcm9u
dGVuZENsaWVudCgwKQorICAgICwgbV9mcm9udGVuZFBhZ2UobnVsbHB0cikKIHsKIH0KIApAQCAt
MTUwLDExICsxNDksMTMgQEAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JD
bGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb24KICAgICBbd2luZG93Q29u
dHJvbGxlci5nZXQoKSBzZXRJbnNwZWN0b3JDbGllbnQ6dGhpc107CiAKICAgICBtX2Zyb250ZW5k
UGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgd2ViVmlld10pOwotICAgIGF1dG8g
ZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50PihtX3dlYlZpZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RvckNvbnRyb2xs
ZXIsIG1fZnJvbnRlbmRQYWdlLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwotICAgIG1fZnJv
bnRlbmRDbGllbnQgPSBmcm9udGVuZENsaWVudC5nZXQoKTsKLSAgICBSZXRhaW5QdHI8V2ViSW5z
cGVjdG9yRnJvbnRlbmQ+IHdlYkluc3BlY3RvckZyb250ZW5kID0gYWRvcHROUyhbW1dlYkluc3Bl
Y3RvckZyb250ZW5kIGFsbG9jXSBpbml0V2l0aEZyb250ZW5kQ2xpZW50OmZyb250ZW5kQ2xpZW50
LmdldCgpXSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fd2ViVmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwg
aW5zcGVjdG9yQ29udHJvbGxlciwgbV9mcm9udGVuZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGlu
Z3MoKSk7CisKKyAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yRnJvbnRlbmQ+IHdlYkluc3BlY3Rv
ckZyb250ZW5kID0gYWRvcHROUyhbW1dlYkluc3BlY3RvckZyb250ZW5kIGFsbG9jXSBpbml0V2l0
aEZyb250ZW5kQ2xpZW50Om1fZnJvbnRlbmRDbGllbnQuZ2V0KCldKTsKICAgICBbW21fd2ViVmll
dyBpbnNwZWN0b3JdIHNldEZyb250ZW5kOndlYkluc3BlY3RvckZyb250ZW5kLmdldCgpXTsKLSAg
ICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250
ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9udGVuZENsaWVudCkpOworCisgICAgbV9mcm9udGVuZFBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2Zy
b250ZW5kQ2xpZW50LmdldCgpKTsKKwogICAgIHJldHVybiB0aGlzOwogfQogCkBAIC0xOTksOCAr
MjAwLDggQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUo
Ym9vbCBlbmFibGVkKQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5k
KCkKIHsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gMDsKLSAgICBtX2Zyb250ZW5kUGFnZSA9IDA7
CisgICAgbV9mcm9udGVuZENsaWVudCA9IG51bGxwdHI7CisgICAgbV9mcm9udGVuZFBhZ2UgPSBu
dWxscHRyOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDNmMzZkZWYuLjdmMjJiYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcApAQCAtMTcxLDkgKzE3MSw4IEBAIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zCiAg
ICAgICAgIHJldHVybiAwOwogCiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKGZyb250ZW5kV2Vi
Vmlldy5nZXQoKSk7Ci0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0
ZWRXZWJWaWV3SGFuZGxlLCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRX
ZWJWaWV3SHduZCwgdGhpcywgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKLSAgICBtX2Zyb250
ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQuZ2V0KCk7Ci0gICAgbV9mcm9udGVuZFBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChXVEY6Om1vdmUo
ZnJvbnRlbmRDbGllbnQpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3Bl
Y3RlZFdlYlZpZXdIYW5kbGUsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVu
ZFdlYlZpZXdId25kLCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOworICAgIG1fZnJv
bnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQobV9mcm9udGVuZENsaWVudC5nZXQoKSk7CiAgICAgbV9mcm9udGVuZEhhbmRsZSA9IGZyb250
ZW5kSHduZDsKICAgICByZXR1cm4gdGhpczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggYjMxZGQ4OS4uNDdm
YmVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBy
ZWxlYXNlRnJvbnRlbmQoKTsKIAotICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBmcm9u
dGVuZENsaWVudCgpIHsgcmV0dXJuIG1fZnJvbnRlbmRDbGllbnQ7IH0KKyAgICBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudCogZnJvbnRlbmRDbGllbnQoKSB7IHJldHVybiBtX2Zyb250ZW5kQ2xp
ZW50LmdldCgpOyB9CiAKICAgICB2b2lkIHVwZGF0ZUhpZ2hsaWdodCgpOwogCkBAIC04NSw3ICs4
NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJWaWV3KiBtX2luc3BlY3RlZFdlYlZpZXc7CiAgICAg
V2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7Ci0gICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQqIG1fZnJvbnRlbmRDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50PiBtX2Zyb250ZW5kQ2xpZW50OwogICAgIEhXTkQgbV9pbnNwZWN0ZWRX
ZWJWaWV3SGFuZGxlOwogICAgIEhXTkQgbV9mcm9udGVuZEhhbmRsZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3Rz
LnR4dAppbmRleCA0ZjM5MjNkLi42YmRjNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtNTMw
LDcgKzUzMCw2IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCi0gICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsdWdJbkNsaWVudC5jcHAKQEAgLTU1Miw2ICs1NTEsNyBAQCBzZXQoV2ViS2l0
Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVyLmNwcAog
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JV
SS5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcApAQCAtNjQ1LDYgKzY0NSw3IEBAIHNldChXZWJL
aXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0
Y2hlci5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxl
Q29udHJvbGxlci5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3IubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVz
c2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5tZXNzYWdlcy5pbgogKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJL
aXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNTkzODZjYi4uZDVkN2NlMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktp
dDIvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTIxLDYgKzEyMSw3IEBAIE1FU1NBR0VfUkVDRUlW
RVJTID0gXAogICAgIFdlYkljb25EYXRhYmFzZVByb3h5IFwKICAgICBXZWJJbnNwZWN0b3IgXAog
ICAgIFdlYkluc3BlY3RvclByb3h5IFwKKyAgICBXZWJJbnNwZWN0b3JVSSBcCiAgICAgV2ViTWVk
aWFDYWNoZU1hbmFnZXIgXAogICAgIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkgXAogICAgIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAwNTEy
NzliLi5lOGIyZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTkyLDcgKzE5Miw3
IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdl
L2F0ay9XZWJQYWdlQWNjZXNzaWJpbGl0eU9iamVjdEF0ay5jcHAKIAotICAgIFdlYlByb2Nlc3Mv
V2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9yRWZsLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9l
ZmwvV2ViSW5zcGVjdG9yVUlFZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQ
YWdlRWZsLmNwcAogCiAgICAgV2ViUHJvY2Vzcy9lZmwvU2VjY29tcEZpbHRlcnNXZWJQcm9jZXNz
RWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA3MmRhN2JiLi4wMzhjOGNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMzAyLDcgKzMwMiw3IEBAIGxpc3QoQVBQRU5E
IFdlYktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUHJpbnRlckxpc3RHdGsuY3Bw
Ci0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JHdGsuY3BwCisgICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAKICAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCmluZGV4
IDZkZjQ5MTguLjkyMmU2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKQEAgLTE0Myw2
ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEJ1bmRsZUZyYW1lLAogICAgICAgICBCdW5kbGVI
aXRUZXN0UmVzdWx0LAogICAgICAgICBCdW5kbGVJbnNwZWN0b3IsCisgICAgICAgIEJ1bmRsZUlu
c3BlY3RvclVJLAogICAgICAgICBCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBCdW5k
bGVOb2RlSGFuZGxlLAogICAgICAgICBCdW5kbGVQYWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAKaW5kZXggMTZlODQ1Yi4uZDg1ZjViOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwCkBAIC0x
NzQsNDQgKzE3NCw2IEBAIHZvaWQgV0tJbnNwZWN0b3JEZXRhY2goV0tJbnNwZWN0b3JSZWYgaW5z
cGVjdG9yUmVmKQogI2VuZGlmCiB9CiAKLWJvb2wgV0tJbnNwZWN0b3JJc0RlYnVnZ2luZ0phdmFT
Y3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQotewotI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgcmV0dXJuIHRvSW1wbChpbnNwZWN0b3JSZWYpLT5pc0RlYnVnZ2luZ0phdmFTY3Jp
cHQoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGluc3BlY3RvclJlZik7Ci0gICAgcmV0dXJu
IGZhbHNlOwotI2VuZGlmCi19Ci0KLXZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0RGVi
dWdnaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKLXsKLSNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotICAgIHRvSW1wbChpbnNwZWN0b3JSZWYpLT50b2dnbGVKYXZhU2NyaXB0RGVidWdnaW5n
KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0b3JSZWYpOwotI2VuZGlmCi19Ci0K
LWJvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ0phdmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5z
cGVjdG9yUmVmKQotewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgcmV0dXJuIHRvSW1wbChp
bnNwZWN0b3JSZWYpLT5pc1Byb2ZpbGluZ0phdmFTY3JpcHQoKTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKGluc3BlY3RvclJlZik7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLXZv
aWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKFdLSW5zcGVjdG9yUmVmIGlu
c3BlY3RvclJlZikKLXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHRvSW1wbChpbnNwZWN0
b3JSZWYpLT50b2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShpbnNwZWN0b3JSZWYpOwotI2VuZGlmCi19Ci0KIGJvb2wgV0tJbnNwZWN0b3JJc1Byb2Zp
bGluZ1BhZ2UoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQogewogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNw
ZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oCmlu
ZGV4IGJhNzY0ODkuLjE0NjU0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0luc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0luc3BlY3Rvci5oCkBAIC01OCwxMiArNTgsNiBAQCBXS19FWFBPUlQgYm9vbCBXS0luc3Bl
Y3RvcklzQXR0YWNoZWQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKIFdLX0VYUE9SVCB2b2lk
IFdLSW5zcGVjdG9yQXR0YWNoKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7CiBXS19FWFBPUlQg
dm9pZCBXS0luc3BlY3RvckRldGFjaChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwogCi1XS19F
WFBPUlQgYm9vbCBXS0luc3BlY3RvcklzRGVidWdnaW5nSmF2YVNjcmlwdChXS0luc3BlY3RvclJl
ZiBpbnNwZWN0b3IpOwotV0tfRVhQT1JUIHZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0
RGVidWdnaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7Ci0KLVdLX0VYUE9SVCBib29sIFdL
SW5zcGVjdG9ySXNQcm9maWxpbmdKYXZhU2NyaXB0KFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7
Ci1XS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmcoV0tJ
bnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKLQogV0tfRVhQT1JUIGJvb2wgV0tJbnNwZWN0b3JJc1By
b2ZpbGluZ1BhZ2UoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKIFdLX0VYUE9SVCB2b2lkIFdL
SW5zcGVjdG9yVG9nZ2xlUGFnZVByb2ZpbGluZyhXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRl
eCBiZTM3NzA0Li42NTE5NjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBQb3J0aW9ucyBDb3B5
cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiV2ViRnJh
bWVQcm94eS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViUHJlZmVyZW5jZXMuaCIKQEAgLTU3LDkgKzU3LDYgQEAgY29uc3QgdW5zaWduZWQgV2ViSW5z
cGVjdG9yUHJveHk6Om1pbmltdW1XaW5kb3dIZWlnaHQgPSA0MDA7CiBjb25zdCB1bnNpZ25lZCBX
ZWJJbnNwZWN0b3JQcm94eTo6aW5pdGlhbFdpbmRvd1dpZHRoID0gMTAwMDsKIGNvbnN0IHVuc2ln
bmVkIFdlYkluc3BlY3RvclByb3h5Ojppbml0aWFsV2luZG93SGVpZ2h0ID0gNjUwOwogCi1jb25z
dCB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6bWluaW11bUF0dGFjaGVkV2lkdGggPSA3NTA7
Ci1jb25zdCB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6bWluaW11bUF0dGFjaGVkSGVpZ2h0
ID0gMjUwOwotCiBjbGFzcyBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgV2ViSW5zcGVjdG9yUGFnZUdyb3VwcyYgc2hhcmVkKCkKQEAgLTEwNSwxMSArMTAyLDEy
IEBAIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IFdl
YlBhZ2VHcm91cDo6Y3JlYXRlKFN0cmluZzo6Zm9ybWF0KCJfX1dlYkluc3BlY3RvclBhZ2VHcm91
cExldmVsJXVfXyIsIGxldmVsKSwgZmFsc2UsIGZhbHNlKTsKIAogI2lmbmRlZiBOREVCVUcKLSAg
ICAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGlu
IGRlYnVnIGJ1aWxkcy4KKyAgICAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRo
ZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdz
LgogICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0RGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCh0cnVlKTsKICAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnNldExvZ3NQYWdl
TWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkKHRydWUpOwogI2VuZGlmCiAKKyAgICAgICAg
cGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyh0
cnVlKTsKICAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnNldEFwcGxpY2F0aW9uQ2hy
b21lTW9kZUVuYWJsZWQodHJ1ZSk7CiAKICAgICAgICAgcmV0dXJuIHBhZ2VHcm91cC5yZWxlYXNl
KCk7CkBAIC0xMjQsMTMgKzEyMiwxMiBAQCBwcml2YXRlOgogCiBXZWJJbnNwZWN0b3JQcm94eTo6
V2ViSW5zcGVjdG9yUHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2Up
CisgICAgLCBtX2luc3BlY3RvclBhZ2UobnVsbHB0cikKICAgICAsIG1faXNWaXNpYmxlKGZhbHNl
KQogICAgICwgbV9pc0F0dGFjaGVkKGZhbHNlKQotICAgICwgbV9pc0RlYnVnZ2luZ0phdmFTY3Jp
cHQoZmFsc2UpCi0gICAgLCBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdChmYWxzZSkKKyAgICAsIG1f
Y2FuQXR0YWNoKGZhbHNlKQogICAgICwgbV9pc1Byb2ZpbGluZ1BhZ2UoZmFsc2UpCiAgICAgLCBt
X3Nob3dNZXNzYWdlU2VudChmYWxzZSkKLSAgICAsIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UoZmFs
c2UpCiAgICAgLCBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250KGZhbHNlKQogICAgICwgbV9hdHRh
Y2htZW50U2lkZShBdHRhY2htZW50U2lkZUJvdHRvbSkKICNpZiBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKEVGTCkKQEAgLTE4OCw2ICsxODUsOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpj
b25uZWN0KCkKICAgICBtX3Nob3dNZXNzYWdlU2VudCA9IHRydWU7CiAgICAgbV9pZ25vcmVGaXJz
dEJyaW5nVG9Gcm9udCA9IHRydWU7CiAKKyAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgp
OworCiAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpT
aG93KCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCkBAIC0yMzIsNiArMjMxLDggQEAgdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6c2hvd0NvbnNvbGUoKQogICAgIGlmICghbV9wYWdlKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOworCiAgICAgbV9w
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93Q29uc29sZSgp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIApAQCAtMjQwLDYgKzI0MSw4IEBAIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnNob3dSZXNvdXJjZXMoKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOworCiAgICAgbV9wYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93UmVzb3VyY2VzKCks
IG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCkBAIC0yNDgsNiArMjUxLDggQEAgdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1l
KQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKKyAgICBlYWdlcmx5Q3JlYXRl
SW5zcGVjdG9yUGFnZSgpOworCiAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSks
IG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCkBAIC0yNzQsMTMgKzI3OSwxNSBAQCB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjphdHRhY2goQXR0YWNobWVudFNpZGUgc2lkZSkKICAgICBpZiAobV9pc1Zp
c2libGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLnNldElu
c3BlY3RvclN0YXJ0c0F0dGFjaGVkKHRydWUpOwogCisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0cnVlKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisKICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKICAgICBjYXNlIEF0dGFj
aG1lbnRTaWRlQm90dG9tOgotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVkQm90dG9tKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
ICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAgICAg
ICAgIGJyZWFrOwogCiAgICAgY2FzZSBBdHRhY2htZW50U2lkZVJpZ2h0OgotICAgICAgICBtX3Bh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVkUmlnaHQo
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCksIG1faW5zcGVj
dG9yUGFnZS0+cGFnZUlEKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTI5Nyw3ICsz
MDQsOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkZXRhY2goKQogICAgIGlmIChtX2lzVmlz
aWJsZSkKICAgICAgICAgaW5zcGVjdG9yUGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkuc2V0SW5z
cGVjdG9yU3RhcnRzQXR0YWNoZWQoZmFsc2UpOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpEZXRhY2hlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0
dGFjaGVkKGZhbHNlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFjaGVkKCksIG1faW5z
cGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogCiAgICAgcGxhdGZvcm1EZXRhY2goKTsKIH0KQEAgLTMx
NCwzNCArMzIyLDYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2V0QXR0YWNoZWRXaW5kb3dX
aWR0aCh1bnNpZ25lZCB3aWR0aCkKICAgICBwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgo
d2lkdGgpOwogfQogCi12b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVKYXZhU2NyaXB0RGVi
dWdnaW5nKCkKLXsKLSAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KG1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KQotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCksIG1fcGFn
ZS0+cGFnZUlEKCkpOwotICAgIGVsc2UKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdGFydEphdmFTY3JpcHREZWJ1Z2dpbmcoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7Ci0KLSAgICAvLyBGSVhNRTogaGF2ZSB0aGUgV2ViUHJvY2VzcyBub3RpZnkg
dXMgb24gc3RhdGUgY2hhbmdlcy4KLSAgICBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdCA9ICFtX2lz
RGVidWdnaW5nSmF2YVNjcmlwdDsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xl
SmF2YVNjcmlwdFByb2ZpbGluZygpCi17Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdCkKLSAgICAgICAgbV9wYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wSmF2YVNjcmlwdFByb2Zp
bGluZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRKYXZhU2NyaXB0UHJvZmls
aW5nKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotCi0gICAgLy8gRklYTUU6IGhhdmUgdGhlIFdlYlBy
b2Nlc3Mgbm90aWZ5IHVzIG9uIHN0YXRlIGNoYW5nZXMuCi0gICAgbV9pc1Byb2ZpbGluZ0phdmFT
Y3JpcHQgPSAhbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQ7Ci19Ci0KIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnRvZ2dsZVBhZ2VQcm9maWxpbmcoKQogewogICAgIGlmICghbV9wYWdlKQpAQCAtNDI2
LDI5ICs0MDYsMjAgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmREaXNj
b25uZWN0ZWQoKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9t
UmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fcGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGlzcGF0Y2hNZXNzYWdlRnJvbVJl
bW90ZUZyb250ZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNlbmRNZXNzYWdlVG9CYWNrZW5k
KG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KICNlbmRpZgogCi0vLyBDYWxsZWQgYnkg
V2ViSW5zcGVjdG9yUHJveHkgbWVzc2FnZXMKLXZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0
ZUluc3BlY3RvclBhZ2UodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyYgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMpCit2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjplYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpCiB7Ci0gICAgaW5zcGVjdG9yUGFnZUlE
ID0gMDsKLQotICAgIGlmICghbV9wYWdlKQorICAgIGlmIChtX2luc3BlY3RvclBhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1faXNBdHRhY2hlZCA9IHNob3VsZE9wZW5BdHRhY2hlZCgpOwot
ICAgIG1fYXR0YWNobWVudFNpZGUgPSBzdGF0aWNfY2FzdDxBdHRhY2htZW50U2lkZT4oaW5zcGVj
dG9yUGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0YWNobWVudFNpZGUoKSk7
Ci0KLSAgICBXZWJQYWdlUHJveHkqIGluc3BlY3RvclBhZ2UgPSBwbGF0Zm9ybUNyZWF0ZUluc3Bl
Y3RvclBhZ2UoKTsKLSAgICBBU1NFUlQoaW5zcGVjdG9yUGFnZSk7Ci0gICAgaWYgKCFpbnNwZWN0
b3JQYWdlKQorICAgIG1faW5zcGVjdG9yUGFnZSA9IHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFn
ZSgpOworICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOworICAgIGlmICghbV9pbnNwZWN0b3JQ
YWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnNwZWN0b3JQYWdlSUQgPSBpbnNwZWN0b3JQ
YWdlLT5wYWdlSUQoKTsKLSAgICBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycyA9IGluc3BlY3RvclBh
Z2UtPmNyZWF0aW9uUGFyYW1ldGVycygpOwotCiAgICAgV0tQYWdlUG9saWN5Q2xpZW50VjEgcG9s
aWN5Q2xpZW50ID0gewogICAgICAgICB7IDEsIHRoaXMgfSwKICAgICAgICAgMCwgLyogZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwICovCkBAIC00
NTksNjkgKzQzMCw0OCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQ
YWdlKHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcgogICAgICAgICAwLCAvKiBk
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZSAqLwogICAgIH07CiAKLSAgICBXS1BhZ2VTZXRQYWdlUG9s
aWN5Q2xpZW50KHRvQVBJKGluc3BlY3RvclBhZ2UpLCAmcG9saWN5Q2xpZW50LmJhc2UpOwotCi0g
ICAgU3RyaW5nQnVpbGRlciB1cmw7CisgICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQ
SShtX2luc3BlY3RvclBhZ2UpLCAmcG9saWN5Q2xpZW50LmJhc2UpOwogCi0gICAgdXJsLmFwcGVu
ZChpbnNwZWN0b3JQYWdlVVJMKCkpOwotCi0gICAgdXJsLmFwcGVuZExpdGVyYWwoIj9kb2NrU2lk
ZT0iKTsKLQotICAgIGlmIChtX2lzQXR0YWNoZWQpIHsKLSAgICAgICAgc3dpdGNoIChtX2F0dGFj
aG1lbnRTaWRlKSB7Ci0gICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVCb3R0b206Ci0gICAgICAg
ICAgICB1cmwuYXBwZW5kTGl0ZXJhbCgiYm90dG9tIik7Ci0gICAgICAgICAgICBtX3BhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVkQm90dG9tKCksIG1f
cGFnZS0+cGFnZUlEKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQXR0YWNo
bWVudFNpZGVSaWdodDoKLSAgICAgICAgICAgIHVybC5hcHBlbmRMaXRlcmFsKCJyaWdodCIpOwot
ICAgICAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpBdHRhY2hlZFJpZ2h0KCksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgdXJsLmFwcGVuZExpdGVyYWwoInVuZG9j
a2VkIik7Ci0KLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJM
KGluc3BlY3RvckJhc2VVUkwoKSk7Ci0KLSAgICBpbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChV
UkwoVVJMKCksIHVybC50b1N0cmluZygpKSk7Ci0KLSAgICBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdl
ID0gdHJ1ZTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5h
c3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGluc3BlY3RvckJhc2VVUkwoKSk7CiB9CiAKLXZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KHVpbnQ2NF90JiBp
bnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIGluc3BlY3RvclBhZ2VQ
YXJhbWV0ZXJzKQorLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2VzCit2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBj
b25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXN0KQogewot
ICAgIGluc3BlY3RvclBhZ2VJRCA9IDA7Ci0KICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9pc0F0dGFjaGVkID0gZmFsc2U7CisgICAgZWFnZXJseUNyZWF0ZUluc3Bl
Y3RvclBhZ2UoKTsKIAotICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSA9IHBsYXRmb3Jt
Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOwotICAgIEFTU0VSVChpbnNwZWN0b3JQYWdlKTsKLSAgICBp
ZiAoIWluc3BlY3RvclBhZ2UpCisgICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgaWYg
KCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluc3BlY3RvclBhZ2VJ
RCA9IGluc3BlY3RvclBhZ2UtPnBhZ2VJRCgpOwotICAgIGluc3BlY3RvclBhZ2VQYXJhbWV0ZXJz
ID0gaW5zcGVjdG9yUGFnZS0+Y3JlYXRpb25QYXJhbWV0ZXJzKCk7CisgICAgbV9pbnNwZWN0b3JQ
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkVzdGFibGlzaENv
bm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsIG1fcGFnZS0+cGFnZUlEKCksIGZhbHNlKSwg
bV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAKLSAgICBXS1BhZ2VQb2xpY3lDbGllbnRWMSBw
b2xpY3lDbGllbnQgPSB7Ci0gICAgICAgIHsgMSwgdGhpcyB9LAotICAgICAgICAwLCAvKiBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgKi8KLSAg
ICAgICAgMCwgLyogZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uICovCi0gICAgICAgIDAs
IC8qIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgKi8KLSAg
ICAgICAgMCwgLyogdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kgKi8KLSAgICAgICAgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiwKLSAgICAgICAgMCwgLyogZGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2UgKi8KLSAgICB9OworICAgIGlmICghdW5kZXJUZXN0KSB7CisgICAgICAgIG1fY2FuQXR0
YWNoID0gY2FuQXR0YWNoOworICAgICAgICBtX2lzQXR0YWNoZWQgPSBzaG91bGRPcGVuQXR0YWNo
ZWQoKTsKKyAgICAgICAgbV9hdHRhY2htZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0dGFjaG1lbnRT
aWRlPihpbnNwZWN0b3JQYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2ht
ZW50U2lkZSgpKTsKIAotICAgIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQodG9BUEkoaW5zcGVj
dG9yUGFnZSksICZwb2xpY3lDbGllbnQuYmFzZSk7CisgICAgICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQobV9pc0F0dGFjaGVkKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNj
ZXNzVG9CYXNlVVJMKGluc3BlY3RvckJhc2VVUkwoKSk7CisgICAgICAgIGlmIChtX2lzQXR0YWNo
ZWQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgeworICAgICAgICAg
ICAgY2FzZSBBdHRhY2htZW50U2lkZUJvdHRvbToKKyAgICAgICAgICAgICAgICBtX2luc3BlY3Rv
clBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRC
b3R0b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICBpbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIGluc3BlY3Rv
clRlc3RQYWdlVVJMKCkpKTsKKyAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVSaWdodDoK
KyAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7
CisgICAgfQogCi0gICAgbV9jcmVhdGVkSW5zcGVjdG9yUGFnZSA9IHRydWU7CisgICAgbV9pbnNw
ZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIHVuZGVyVGVzdCA/IGluc3BlY3RvclRl
c3RQYWdlVVJMKCkgOiBpbnNwZWN0b3JQYWdlVVJMKCkpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6b3BlbigpCkBAIC01MzMsMjAgKzQ4MywyMSBAQCB2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjpvcGVuKCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGlkQ2xvc2UoKQogewotICAg
IGlmICghbV9jcmVhdGVkSW5zcGVjdG9yUGFnZSkKKyAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkK
ICAgICAgICAgcmV0dXJuOwogCisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxs
cHRyOworCiAgICAgbV9pc1Zpc2libGUgPSBmYWxzZTsKLSAgICBtX2lzRGVidWdnaW5nSmF2YVNj
cmlwdCA9IGZhbHNlOwotICAgIG1faXNQcm9maWxpbmdKYXZhU2NyaXB0ID0gZmFsc2U7CiAgICAg
bV9pc1Byb2ZpbGluZ1BhZ2UgPSBmYWxzZTsKLSAgICBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlID0g
ZmFsc2U7CiAgICAgbV9zaG93TWVzc2FnZVNlbnQgPSBmYWxzZTsKICAgICBtX2lnbm9yZUZpcnN0
QnJpbmdUb0Zyb250ID0gZmFsc2U7CiAKICAgICBpZiAobV9pc0F0dGFjaGVkKQogICAgICAgICBw
bGF0Zm9ybURldGFjaCgpOwogICAgIG1faXNBdHRhY2hlZCA9IGZhbHNlOworICAgIG1fY2FuQXR0
YWNoID0gZmFsc2U7CiAKICAgICBwbGF0Zm9ybURpZENsb3NlKCk7CiB9CkBAIC01NjksNiArNTIw
LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YnJpbmdUb0Zyb250KCkKIAogdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6YXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29sIGF2YWlsYWJsZSkK
IHsKKyAgICBtX2NhbkF0dGFjaCA9IGF2YWlsYWJsZTsKKwogICAgIHBsYXRmb3JtQXR0YWNoQXZh
aWxhYmlsaXR5Q2hhbmdlZChhdmFpbGFibGUpOwogfQogCkBAIC01ODcsMjggKzU0MCw2IEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OmFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnQpCiAgICAgcGxhdGZvcm1BcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQp
OwogfQogCi1ib29sIFdlYkluc3BlY3RvclByb3h5OjpjYW5BdHRhY2goKQotewotICAgIC8vIEtl
ZXAgdGhpcyBpbiBzeW5jIHdpdGggSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2FuQXR0
YWNoV2luZG93LiBUaGVyZSBhcmUgdHdvIGltcGxlbWVudGF0aW9ucwotICAgIC8vIHRvIG1ha2Ug
bGlmZSBlYXNpZXIgaW4gdGhlIG11bHRpLXByb2Nlc3Mgd29ybGQgd2UgaGF2ZS4gV2ViSW5zcGVj
dG9yUHJveHkgdXNlcyBjYW5BdHRhY2ggdG8gZGVjaWRlIGlmCi0gICAgLy8gd2UgY2FuIGF0dGFj
aCBvbiBvcGVuIChvbiB0aGUgVUkgcHJvY2VzcyBzaWRlKS4gQW5kIEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWw6OmNhbkF0dGFjaFdpbmRvdyBpcwotICAgIC8vIHVzZWQgdG8gZGVjaWRlIGlm
IHdlIGNhbiBhdHRhY2ggd2hlbiB0aGUgYXR0YWNoIGJ1dHRvbiBpcyBwcmVzc2VkIChvbiB0aGUg
V2ViUHJvY2VzcyBzaWRlKS4KLQotICAgIC8vIElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCBh
bGxvdyBhdHRhY2hpbmcgYWdhaW4gdG8gYWxsb3cgc3dpdGNoaW5nIHNpZGVzLgotICAgIGlmICht
X2lzQXR0YWNoZWQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gRG9uJ3QgYWxsb3cg
YXR0YWNoaW5nIHRvIGFub3RoZXIgaW5zcGVjdG9yIC0tIHR3byBpbnNwZWN0b3JzIGluIG9uZSB3
aW5kb3cgaXMgdG9vIG11Y2ghCi0gICAgaWYgKG1fbGV2ZWwgPiAxKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAvLyBEb24ndCBhbGxvdyB0aGUgYXR0YWNoIGlmIHRoZSB3aW5kb3cgd291
bGQgYmUgdG9vIHNtYWxsIHRvIGFjY29tbW9kYXRlIHRoZSBtaW5pbXVtIGluc3BlY3RvciBoZWln
aHQuCi0gICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZUhlaWdodCA9IHBsYXRmb3JtSW5zcGVjdGVk
V2luZG93SGVpZ2h0KCk7Ci0gICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZVdpZHRoID0gcGxhdGZv
cm1JbnNwZWN0ZWRXaW5kb3dXaWR0aCgpOwotICAgIHVuc2lnbmVkIG1heGltdW1BdHRhY2hlZEhl
aWdodCA9IGluc3BlY3RlZFBhZ2VIZWlnaHQgKiAzIC8gNDsKLSAgICByZXR1cm4gbWluaW11bUF0
dGFjaGVkSGVpZ2h0IDw9IG1heGltdW1BdHRhY2hlZEhlaWdodCAmJiBtaW5pbXVtQXR0YWNoZWRX
aWR0aCA8PSBpbnNwZWN0ZWRQYWdlV2lkdGg7Ci19Ci0KIGJvb2wgV2ViSW5zcGVjdG9yUHJveHk6
OnNob3VsZE9wZW5BdHRhY2hlZCgpCiB7CiAgICAgcmV0dXJuIGluc3BlY3RvclBhZ2VHcm91cCgp
LT5wcmVmZXJlbmNlcygpLmluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKCkgJiYgY2FuQXR0YWNoKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDE3
YTc0OTguLjlhOGJjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0
b3JQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChj
KSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtMzAsNiArMzAsNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAK
ICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNjIsNyArNjMsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdl
UHJveHk7Ci1zdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIAogZW51bSBBdHRhY2ht
ZW50U2lkZSB7CiAgICAgQXR0YWNobWVudFNpZGVCb3R0b20sCkBAIC04Myw3ICs4Myw3IEBAIHB1
YmxpYzoKICAgICAvLyBQdWJsaWMgQVBJcwogICAgIFdlYlBhZ2VQcm94eSogcGFnZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnZTsgfQogCi0gICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY3JlYXRlZEluc3BlY3RvclBhZ2U7IH0KKyAgICBib29sIGlzQ29ubmVjdGVkKCkgY29u
c3QgeyByZXR1cm4gISFtX2luc3BlY3RvclBhZ2U7IH0KICAgICBib29sIGlzVmlzaWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNWaXNpYmxlOyB9CiAgICAgYm9vbCBpc0Zyb250KCk7CiAKQEAgLTEy
MywxMiArMTIzLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1
bnNpZ25lZCk7CiAgICAgdm9pZCBzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkgeyBw
bGF0Zm9ybVNldFRvb2xiYXJIZWlnaHQoaGVpZ2h0KTsgfQogCi0gICAgYm9vbCBpc0RlYnVnZ2lu
Z0phdmFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdDsgfQot
ICAgIHZvaWQgdG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZygpOwotCi0gICAgYm9vbCBpc1Byb2Zp
bGluZ0phdmFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdDsg
fQotICAgIHZvaWQgdG9nZ2xlSmF2YVNjcmlwdFByb2ZpbGluZygpOwotCiAgICAgYm9vbCBpc1By
b2ZpbGluZ1BhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvZmlsaW5nUGFnZTsgfQogICAgIHZv
aWQgdG9nZ2xlUGFnZVByb2ZpbGluZygpOwogCkBAIC0xNTAsOSArMTQ0LDEwIEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yUHJveHkoV2ViUGFnZVByb3h5Kik7
CiAKKyAgICB2b2lkIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+Jikgb3ZlcnJp
ZGU7CiAKICAgICBXZWJQYWdlUHJveHkqIHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpOwog
ICAgIHZvaWQgcGxhdGZvcm1PcGVuKCk7CkBAIC0xNzMsOCArMTY4LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudCk7CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yUHJveHkgbWVzc2Fn
ZXMKLSAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBhZ2UodWludDY0X3QmIGluc3BlY3RvclBhZ2VJ
RCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwotICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9y
UGFnZUZvclRlc3QodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYpOworICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQs
IGJvb2wgY2FuQXR0YWNoLCBib29sIHVuZGVyVGVzdCk7CiAgICAgdm9pZCBkaWRDbG9zZSgpOwog
ICAgIHZvaWQgYnJpbmdUb0Zyb250KCk7CiAgICAgdm9pZCBhdHRhY2hBdmFpbGFiaWxpdHlDaGFu
Z2VkKGJvb2wpOwpAQCAtMTg3LDcgKzE4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kTWVz
c2FnZVRvUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICNlbmRpZgogCi0g
ICAgYm9vbCBjYW5BdHRhY2goKTsKKyAgICBib29sIGNhbkF0dGFjaCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FuQXR0YWNoOyB9CiAgICAgYm9vbCBzaG91bGRPcGVuQXR0YWNoZWQoKTsKIAogICAgIHZv
aWQgb3BlbigpOwpAQCAtMjA0LDE5ICsxOTgsMTQgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgaW5pdGlhbFdpbmRvd1dpZHRoOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBpbml0aWFsV2luZG93SGVpZ2h0OwogCi0gICAgLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0
aGUgdmFsdWUgaW4gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC4KLSAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbWluaW11bUF0dGFjaGVkV2lkdGg7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIG1pbmltdW1BdHRhY2hlZEhlaWdodDsKLQogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwor
ICAgIFdlYlBhZ2VQcm94eSogbV9pbnNwZWN0b3JQYWdlOwogCiAgICAgYm9vbCBtX2lzVmlzaWJs
ZTsKICAgICBib29sIG1faXNBdHRhY2hlZDsKLSAgICBib29sIG1faXNEZWJ1Z2dpbmdKYXZhU2Ny
aXB0OwotICAgIGJvb2wgbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQ7CisgICAgYm9vbCBtX2NhbkF0
dGFjaDsKICAgICBib29sIG1faXNQcm9maWxpbmdQYWdlOwogICAgIGJvb2wgbV9zaG93TWVzc2Fn
ZVNlbnQ7Ci0gICAgYm9vbCBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlOwogICAgIGJvb2wgbV9pZ25v
cmVGaXJzdEJyaW5nVG9Gcm9udDsKIAogICAgIC8vIFRoZSBkZWJ1Z2dlciBzdG9wcyBhbGwgdGhl
IHBhZ2VzIGluIHRoZSBzYW1lIFBhZ2VHcm91cC4gSGF2aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTZj
OTQ0ZC4uZWI3ZmE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYklu
c3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTAgKzIzLDExIEBACiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKIAogbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yUHJveHkgewotICAgIENyZWF0ZUluc3BlY3Rv
clBhZ2UoKSAtPiAodWludDY0X3QgaW5zcGVjdG9yUGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMpCi0gICAgQ3JlYXRlSW5zcGVj
dG9yUGFnZUZvclRlc3QoKSAtPiAodWludDY0X3QgaW5zcGVjdG9yUGFnZUlELCBXZWJLaXQ6Oldl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMpCisgICAgQ3Jl
YXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIGJv
b2wgY2FuQXR0YWNoLCBib29sIHVuZGVyVGVzdCkKKwogICAgIERpZENsb3NlKCkKICAgICBCcmlu
Z1RvRnJvbnQoKQorCiAgICAgSW5zcGVjdGVkVVJMQ2hhbmdlZChTdHJpbmcgdXJsU3RyaW5nKQog
CiAgICAgU2F2ZShTdHJpbmcgZmlsZW5hbWUsIFN0cmluZyBjb250ZW50LCBib29sIGJhc2U2NEVu
Y29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCkBAIC0zNSw2ICszNiw3IEBAIG1lc3NhZ2VzIC0+IFdl
Ykluc3BlY3RvclByb3h5IHsKICAgICBBdHRhY2hCb3R0b20oKQogICAgIEF0dGFjaFJpZ2h0KCkK
ICAgICBEZXRhY2goKQorCiAgICAgQXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29sIGF2YWls
YWJsZSkKIAogICAgIFNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlH
dGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0
ay5jcHAKaW5kZXggNTBlNDVjNC4uYzg5OWEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTE4Miw4ICsxODIs
MTEgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2goKQogICAgICAgICBt
X2luc3BlY3RvcldpbmRvdyA9IDA7CiAgICAgfQogCi0gICAgLy8gU2V0IGEgZGVmYXVsdCBhdHRh
Y2hlZCBzaXplIGJhc2VkIG9uIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuCisgICAgLy8g
U2V0IGEgZGVmYXVsdCBzaXplcyBiYXNlZCBvbiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0QXR0YWNoZWRTaXplID0gMzAwOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtQXR0YWNoZWRXaWR0aCA9IDc1MDsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bUF0dGFjaGVkSGVpZ2h0ID0gMjUwOworCiAg
ICAgaWYgKG1fYXR0YWNobWVudFNpZGUgPT0gQXR0YWNobWVudFNpZGVCb3R0b20pIHsKICAgICAg
ICAgdW5zaWduZWQgbWF4aW11bUF0dGFjaGVkSGVpZ2h0ID0gcGxhdGZvcm1JbnNwZWN0ZWRXaW5k
b3dIZWlnaHQoKSAqIDMgLyA0OwogICAgICAgICBwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93SGVp
Z2h0KHN0ZDo6bWF4KG1pbmltdW1BdHRhY2hlZEhlaWdodCwgc3RkOjptaW4oZGVmYXVsdEF0dGFj
aGVkU2l6ZSwgbWF4aW11bUF0dGFjaGVkSGVpZ2h0KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KaW5kZXggYzZjNjY4Yy4u
ZDU2ZTdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNw
ZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYklu
c3BlY3RvclByb3h5TWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJXS1VSTENGLmgiCiAj
aW1wb3J0ICJXS1ZpZXdQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5o
IgorI2ltcG9ydCAiV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUGFnZUdy
b3VwLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByZWZlcmVuY2Vz
LmgiCkBAIC00MTgsNyArNDE5LDcgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6
cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKICAgICAgICAgICAgIGluaXRpYWxSZWN0ID0g
W05TV2luZG93IGNvbnRlbnRSZWN0Rm9yRnJhbWVSZWN0OndpbmRvd0ZyYW1lIHN0eWxlTWFzazp3
aW5kb3dTdHlsZU1hc2tdOwogICAgIH0KIAotICAgIG1faW5zcGVjdG9yVmlldyA9IGFkb3B0TlMo
W1tXS1dlYkluc3BlY3RvcldLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTppbml0aWFsUmVjdCBj
b250ZXh0UmVmOnRvQVBJKCZwYWdlKCktPnByb2Nlc3MoKS5jb250ZXh0KCkpIHBhZ2VHcm91cFJl
Zjp0b0FQSShpbnNwZWN0b3JQYWdlR3JvdXAoKSkgcmVsYXRlZFRvUGFnZTp0b0FQSShtX3BhZ2Up
XSk7CisgICAgbV9pbnNwZWN0b3JWaWV3ID0gYWRvcHROUyhbW1dLV2ViSW5zcGVjdG9yV0tWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOmluaXRpYWxSZWN0IGNvbnRleHRSZWY6dG9BUEkoJnBhZ2Uo
KS0+cHJvY2VzcygpLmNvbnRleHQoKSkgcGFnZUdyb3VwUmVmOnRvQVBJKGluc3BlY3RvclBhZ2VH
cm91cCgpKSByZWxhdGVkVG9QYWdlOm51bGxwdHJdKTsKICAgICBBU1NFUlQobV9pbnNwZWN0b3JW
aWV3KTsKIAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gMTA5MApAQCAt
NTg5LDcgKzU5MCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjCiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgW2NvbnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6
WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOwogCi0gICAgICAg
IG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGlkU2F2ZShb
YWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBt
X2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6
RGlkU2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVjdG9yUGFnZS0+cGFn
ZUlEKCkpOwogICAgIH07CiAKICAgICBpZiAoIWZvcmNlU2F2ZURpYWxvZykgewpAQCAtNjIzLDcg
KzYyNCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmCiAgICAgW2hhbmRsZSB3cml0ZURhdGE6
W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICBb
aGFuZGxlIGNsb3NlRmlsZV07CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmlu
Z10pLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6d2luZG93RnJhbWVEaWRDaGFuZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA3NGFmY2YuLmI3Yjc4OGVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC00OTUsMTAgKzQ5NSwxMCBAQAogCQkxQUZFNDM2NTE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxl
Z2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
RkU0MzYzMThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLm1tICovOyB9OwogCQkxQUZFNDM2
NjE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRTQzNjQxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVs
ZWdhdGUuaCAqLzsgfTsKIAkJMUFGRjQ5MDAxODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRl
ZEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUZGNDhGRTE4MzNERTc4MDA5QUIxNUEgLyogV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNw
cCAqLzsgfTsKKwkJMUM4OTFENjUxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODkxRDYy
MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgKi87IH07CisJCTFDODkxRDY2
MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4OTFENjMxOUIxMjRGRjAwQkE3OUREIC8qIFdl
Ykluc3BlY3RvclVJLmggKi87IH07CiAJCTFDOEFFNzYxMTk5MkY2M0EwMEFCRjZFQyAvKiBEb2Nr
Qm90dG9tTGVnYWN5LnBkZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUM4QUU3NUYxOTkyRjYyRjAwQUJGNkVDIC8qIERvY2tCb3R0b21MZWdhY3kucGRm
ICovOyB9OwogCQkxQzhBRTc2MjE5OTJGNjNDMDBBQkY2RUMgLyogRG9ja1JpZ2h0TGVnYWN5LnBk
ZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4QUU3
NjAxOTkyRjYyRjAwQUJGNkVDIC8qIERvY2tSaWdodExlZ2FjeS5wZGYgKi87IH07Ci0JCTFDOEUy
NUE4MTI3MEUzQkIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjU2QjEyNzBE
RTM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwICovOyB9OwotCQkx
QzhFMjVBOTEyNzBFM0JDMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyNTZBMTI3
MERFMzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oICovOyB9OwogCQkx
QzhFMjgyMDEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjgxRTEyNzVEMTU0MDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yLmggKi87IH07CiAJCTFDOEUyODIxMTI3NUQxNTQwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUM4RTI4MUYxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAgKi87IH07
CiAJCTFDOEUyODM0MTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI4MzIxMjc1RDcz
ODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggKi87IH07CkBAIC01MTAsOCArNTEwLDEw
IEBACiAJCTFDQThCOTM2MTI3Qzc3NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQThCOTM1
MTI3Qzc3NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSAqLzsgfTsKIAkJMUNB
OEI5NDUxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQThC
OTQzMTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi87IH07CiAJCTFDQThCOTQ2MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94
eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQ0E4Qjk0NDEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5o
ICovOyB9OwotCQkxQ0E4Qjk1NDEyN0M4OTE1MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTJEQUQx
Mjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1hYy5tbSAqLzsgfTsKKwkJMUNBOEI5NTQx
MjdDODkxNTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclVJTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8q
IFdlYkluc3BlY3RvclVJTWFjLm1tICovOyB9OwogCQkxQ0I3NUM5NDE3MDFFODgwMDA5RjgwOUYg
LyogRG9ja1JpZ2h0LnBkZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUNCNzVDOTMxNzAxRTg4MDAwOUY4MDlGIC8qIERvY2tSaWdodC5wZGYgKi87IH07
CisJCTFDQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
Q0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OworCQkxQ0JCRTRBMTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUNCQkU0OUYxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCAqLzsg
fTsKIAkJMUNCQzk0NUUxNjUxNUVEMjAwRDY4QUFFIC8qIERvY2tCb3R0b20ucGRmIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0JDOTQ1RDE2NTE1RUQy
MDBENjhBQUUgLyogRG9ja0JvdHRvbS5wZGYgKi87IH07CiAJCTFGMzM1QkMwMTg1Qjg0RjAwMDFB
MjAxQSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGMzM1QkJGMTg1Qjg0RDgwMDFBMjAxQSAv
KiBXS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxRjYwNEJBODE4ODlGQTc0MDBFRTAzOTUgLyog
V0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUY2MDRCQTYxODg5RkE3NDAwRUUwMzk1IC8qIFdLUmVuZGVyaW5n
UHJvZ3Jlc3NFdmVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMjQ3NSwxMCArMjQ3NywxMSBAQAogCQkxQUZGNDhGRTE4MzNERTc4MDA5QUIx
NUEgLyogV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFCQjQxN0M5MTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBs
ZXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dENoZWNr
ZXJDb21wbGV0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM3N0MxOTUx
Mjg4QTg3MjAwNkE3NDJGIC8qIFdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzg5MUQ2MjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVj
dG9yVUkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5zcGVj
dG9yVUkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzg5MUQ2MzE5QjEyNEZG
MDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViSW5zcGVjdG9yVUkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM4
OTFENjQxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQzhBRTc1RjE5OTJGNjJGMDBBQkY2RUMgLyogRG9ja0JvdHRv
bUxlZ2FjeS5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBpbWFnZS5wZGY7IG5hbWUgPSBEb2NrQm90dG9tTGVnYWN5LnBkZjsgcGF0aCA9IFJlc291
cmNlcy9Eb2NrQm90dG9tTGVnYWN5LnBkZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUM4QUU3NjAxOTkyRjYyRjAwQUJGNkVDIC8qIERvY2tSaWdodExlZ2FjeS5wZGYgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7IG5hbWUg
PSBEb2NrUmlnaHRMZWdhY3kucGRmOyBwYXRoID0gUmVzb3VyY2VzL0RvY2tSaWdodExlZ2FjeS5w
ZGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOEUyNTZBMTI3MERFMzgwMEJDN0JE
MCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkxQzhFMjU2QjEyNzBERTM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQzhFMjgxRTEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQzhFMjgxRjEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3Rvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEUyODMyMTI3NUQ3MzgwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJ
bnNwZWN0b3JQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ4OCwxMSAr
MjQ5MSwxMyBAQAogCQkxQzhFMkExQzEyNzc4MzNGMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkluc3BlY3Rvci5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RTJBMzExMjc3ODUyNDAwQkM3QkQw
IC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQzhFMkEzMjEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5z
cGVjdG9yTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5z
cGVjdG9yTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4RTJEQUQx
Mjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3Rvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclVJ
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5zcGVj
dG9yVUlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQThCOTM1MTI3Qzc3
NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5TWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQ0E4Qjk0MzEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVj
dG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQ0E4Qjk0NDEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVj
dG9yUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJ
bnNwZWN0b3JQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
Qjc1QzkzMTcwMUU4ODAwMDlGODA5RiAvKiBEb2NrUmlnaHQucGRmICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBuYW1lID0gRG9ja1Jp
Z2h0LnBkZjsgcGF0aCA9IFJlc291cmNlcy9Eb2NrUmlnaHQucGRmOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQ0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3JVSU1lc3Nh
Z2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQkM5NDVEMTY1MTVFRDIwMEQ2
OEFBRSAvKiBEb2NrQm90dG9tLnBkZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IGltYWdlLnBkZjsgbmFtZSA9IERvY2tCb3R0b20ucGRmOyBwYXRoID0g
UmVzb3VyY2VzL0RvY2tCb3R0b20ucGRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
Q0M0MTdDOTEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDaGVja2VyQ29tcGxldGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRjAxODE2OTE4NThEQzE1MDBGOTI4ODQgLyogV0tX
ZWJQcm9jZXNzUGx1Z0luRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTU2NjIsOCArNTY2Nyw2IEBACiAJCQkJQkMxQkUxREUxMkQ1NEE0MTAwMDRBMjI4IC8qIFdlYkdl
b2xvY2F0aW9uQ2xpZW50LmggKi8sCiAJCQkJQkMxMTFBNTkxMTJGNEZCQjAwMzM3QkFCIC8qIFdl
Ykluc3BlY3RvckNsaWVudC5jcHAgKi8sCiAJCQkJQkMwMzJENkQxMEY0Mzc4RDAwNThDMTVBIC8q
IFdlYkluc3BlY3RvckNsaWVudC5oICovLAotCQkJCTFDOEUyNTZCMTI3MERFMzgwMEJDN0JEMCAv
KiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAgKi8sCi0JCQkJMUM4RTI1NkExMjcwREUz
ODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggKi8sCiAJCQkJMzEwOTk5
NzExNDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgKi8sCiAJCQkJ
MzEwOTk5NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICovLAog
CQkJCTUxMjEyN0MxMTkwODIzOUEwMERBRjM1QyAvKiBXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNw
cCAqLywKQEAgLTU3MjMsNiArNTcyNiw5IEBACiAJCQkJMUM4RTI4MUYxMjc1RDE1NDAwQkM3QkQw
IC8qIFdlYkluc3BlY3Rvci5jcHAgKi8sCiAJCQkJMUM4RTI4MUUxMjc1RDE1NDAwQkM3QkQwIC8q
IFdlYkluc3BlY3Rvci5oICovLAogCQkJCTFDOEUyQTFDMTI3NzgzM0YwMEJDN0JEMCAvKiBXZWJJ
bnNwZWN0b3IubWVzc2FnZXMuaW4gKi8sCisJCQkJMUM4OTFENjIxOUIxMjRGRjAwQkE3OUREIC8q
IFdlYkluc3BlY3RvclVJLmNwcCAqLywKKwkJCQkxQzg5MUQ2MzE5QjEyNEZGMDBCQTc5REQgLyog
V2ViSW5zcGVjdG9yVUkuaCAqLywKKwkJCQkxQzg5MUQ2NDE5QjEyNEZGMDBCQTc5REQgLyogV2Vi
SW5zcGVjdG9yVUkubWVzc2FnZXMuaW4gKi8sCiAJCQkJQkM4NTdGODQxMkI4MkQwQjAwRURFQjJF
IC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCAqLywKIAkJCQlCQzg1N0Y4MzEyQjgy
RDBCMDBFREVCMkUgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLywKIAkJCQlCQzk2
M0Q2QTExM0REMTkyMDA1NzRCRTIgLyogV2ViUGFnZS5jcHAgKi8sCkBAIC02NDcxLDcgKzY0Nzcs
NyBAQAogCQkJCTUxOTJENTc1MTk2MUZEMDMwMENEMTlBQSAvKiBTZXJ2aWNlc092ZXJsYXlDb250
cm9sbGVyLm1tICovLAogCQkJCTFBQUYyNjM3MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5oICovLAogCQkJCTFBQUYyNjM2MTQ2ODdDMzkwMDRBMUU4QSAv
KiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSAqLywKLQkJCQkxQzhFMkRBRDEyNzhD
NUIyMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWFjLm1tICovLAorCQkJCTFDOEUyREFEMTI3OEM1
QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSAqLywKIAkJCQlCQzk2M0Q2RDExM0RE
MUE1MDA1NzRCRTIgLyogV2ViUGFnZU1hYy5tbSAqLywKIAkJCQkyOUNENTVBODEyOEUyOTRGMDAx
MzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCAqLywKIAkJCQkyOUNE
NTVBOTEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Uu
bW0gKi8sCkBAIC02ODI3LDYgKzY4MzMsOCBAQAogCQkJCTFDOEUyQTMyMTI3Nzg1MjQwMEJDN0JE
MCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlcy5oICovLAogCQkJCTFDQThCOTQzMTI3Qzg4MkEwMDU3
NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUNB
OEI5NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCAqLywK
KwkJCQkxQ0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLAorCQkJCTFDQkJFNDlGMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0
b3JVSU1lc3NhZ2VzLmggKi8sCiAJCQkJMzNEM0EzQzQxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1l
ZGlhQ2FjaGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkzM0QzQTNDNTEzMzk2
MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJNZXNzYWdlcy5oICovLAogCQkJCTMz
RDNBM0M2MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKQEAgLTc0MzgsNiArNzQ0Niw3IEBACiAJCQkJMkRBQ0U2NEUxOEFE
QkZGMDAwRTRDQTc2IC8qIF9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTE1NzhCODMxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCBpbiBIZWFkZXJzICov
LAogCQkJCUY2QTI1RkREMTJBREM2Q0MwMERDNDBDQyAvKiBXZWJEYXRhYmFzZU1hbmFnZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTFDODkxRDY2MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0
b3JVSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYyQTc2QjcxMkIxQjI1RjAwMDVGMUI2IC8qIFdl
YkRhdGFiYXNlTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNjJBNzY1RDEy
QjFBQkMzMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJENkFCNTQxMTkyQjFDNEEwMDNBOUZEMSAvKiBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0
b3IuaCBpbiBIZWFkZXJzICovLApAQCAtNzQ5NCw3ICs3NTAzLDYgQEAKIAkJCQkxQzhFMjgyMDEy
NzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTND
QzE2NzE4OTA2QUNGMDAxRTZFRDggLyogV0tXZWJWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzAzMkQ4MjEwRjQzNzhEMDA1OEMxNUEgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKLQkJCQkxQzhFMjVBOTEyNzBFM0JDMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyQTM2MTI3Nzg1MjQwMEJDN0JEMCAv
KiBXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4RTI4MzQxMjc1
RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
Q0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCkBAIC03NzYyLDYgKzc3NzAsNyBAQAogCQkJCUY2MzQ0NDVEMTJBODg1RTkw
MDA2MTJEOCAvKiBXS1NlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFGMDhC
ODE5MjY5RTZEMDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNDA3NjA0MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUNCQkU0QTExOUI2NkM1MzAwNkI3
RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0I0
RTRDMThCQkUwNDQwMDBGQ0ZDOSAvKiBXS0NvbnRlbnRWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzN0E2NEU1NzE4RjM4RjQ2MDBFQjMwRjEgLyogX1dLRm9ybUlucHV0U2Vzc2lvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUY2MDRCQUExODg5RkJCODAwRUUwMzk1IC8qIFdLUmVuZGVyaW5nUHJv
Z3Jlc3NFdmVudHNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC04ODgwLDYgKzg4ODksNyBA
QAogCQkJCTAwQjk2NjE5MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFFNUI3RkIxMUU3QUVEMjAwQkE2NzY3IC8qIE5ldHNjYXBlUGx1Z2luTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MzNjFENzIxOTI3RkEzNjAwMzZBNTlEIC8qIFdlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDODkxRDY1MTlCMTI0
RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRB
OUM1NTEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUE0QTlDOUExMkI4MjFDRDAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9k
dWxlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBNTg4OTMxMUVFNzA0MDAwNjFCODgyIC8q
IE5ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODkxOCw2ICs4OTI4
LDcgQEAKIAkJCQkxQTJEODQzOTEyN0Y2NUQ1MDAxRUI5NjIgLyogTlBPYmplY3RNZXNzYWdlUmVj
ZWl2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBRjA4QUQxOTI2
OTM2NzAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQTJEODJBNjEyN0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RQcm94eS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkxQ0JCRTRBMDE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9y
VUlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDgyQTgxMjdGNEVB
QjAwMUVCOTYyIC8qIE5QUmVtb3RlT2JqZWN0TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
MjE2MUIxMTFGMzc2NjQwMDhBRDBGNSAvKiBOUFJ1bnRpbWVPYmplY3RNYXAuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUEyMTYyQjAxMUYzODk3MTAwOEFEMEY1IC8qIE5QUnVudGltZVV0aWxpdGll
cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkxNzcsOCArOTE4OCw3IEBACiAJCQkJQkNDRjZBQkMx
MkM5MUVGOTAwOEY5QzM1IC8qIFdlYkltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDOEUy
ODIxMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkMxMTFBNjAxMTJGNEZCQjAwMzM3QkFCIC8qIFdlYkluc3BlY3RvckNsaWVudC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQkxQzhFMjVBODEyNzBFM0JCMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUNBOEI5NTQxMjdDODkxNTAw
NTc2QzJCIC8qIFdlYkluc3BlY3Rvck1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFDQThCOTU0
MTI3Qzg5MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTFDOEUyQTM1MTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4RTI4MzUxMjc1RDczODAwQkM3QkQwIC8qIFdl
Ykluc3BlY3RvclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQThCOTM2MTI3Qzc3NEUw
MDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDUwMWQ0MWMuLjg1OTM1OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0LDIwICs4NCwyMSBAQCB2b2lkIFdlYkluc3BlY3RvckNs
aWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKIAogV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0
b3JDb250cm9sbGVyKiBjb250cm9sbGVyKQogewotICAgIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2Ug
PSBjb250cm9sbGVyLT5pc1VuZGVyVGVzdCgpID8gbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y3JlYXRl
SW5zcGVjdG9yUGFnZUZvclRlc3QoKSA6IG1fcGFnZS0+aW5zcGVjdG9yKCktPmNyZWF0ZUluc3Bl
Y3RvclBhZ2UoKTsKLSAgICBBU1NFUlRfVU5VU0VEKGluc3BlY3RvclBhZ2UsIGluc3BlY3RvclBh
Z2UpOwotICAgIHJldHVybiB0aGlzOworICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmNyZWF0ZUlu
c3BlY3RvclBhZ2UoY29udHJvbGxlci0+aXNVbmRlclRlc3QoKSk7CisKKyAgICByZXR1cm4gbV9w
YWdlLT5pbnNwZWN0b3IoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5z
cGVjdG9yRnJvbnRlbmQoKQogewogICAgIGlmIChtX3BhZ2UtPmluc3BlY3RvcigpKQotICAgICAg
ICBtX3BhZ2UtPmluc3BlY3RvcigpLT5kaWRDbG9zZSgpOworICAgICAgICBtX3BhZ2UtPmluc3Bl
Y3RvcigpLT5jbG9zZUZyb250ZW5kKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojpi
cmluZ0Zyb250ZW5kVG9Gcm9udCgpCiB7Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YnJpbmdU
b0Zyb250KCk7CisgICAgaWYgKG1fcGFnZS0+aW5zcGVjdG9yKCkpCisgICAgICAgIG1fcGFnZS0+
aW5zcGVjdG9yKCktPmJyaW5nVG9Gcm9udCgpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVu
dDo6ZGlkUmVzaXplTWFpbkZyYW1lKEZyYW1lKikKQEAgLTE5NywzNCArMTk4LDYgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKQog
fQogI2VuZGlmCiAKLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIFdlYkluc3BlY3RvciogaW5zcGVjdG9y
ID0gbV9wYWdlLT5pbnNwZWN0b3IoKTsKLSAgICBpZiAoIWluc3BlY3RvcikKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0gICAgaWYgKGluc3Bl
Y3Rvci0+aGFzUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKSkgewotICAgICAgICBpbnNwZWN0b3It
PnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChtZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBXZWJQYWdlKiBpbnNwZWN0b3JQYWdlID0gaW5zcGVj
dG9yLT5pbnNwZWN0b3JQYWdlKCk7Ci0gICAgaWYgKGluc3BlY3RvclBhZ2UpCi0gICAgICAgIHJl
dHVybiBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKGluc3BlY3RvclBhZ2UtPmNvcmVQ
YWdlKCksIG1lc3NhZ2UpOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFdlYkluc3Bl
Y3RvckNsaWVudDo6c3VwcG9ydHNGcmFtZUluc3RydW1lbnRhdGlvbigpCi17Ci0jaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQotICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgcmV0dXJu
IGZhbHNlOwotfQotCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cGFnZU92ZXJsYXlEZXN0cm95
ZWQoUGFnZU92ZXJsYXkqKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNzAz
M2JkZS4uNzk4Y2FjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC00NSwyMiArNDUs
MjMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgUmVwYWludElu
ZGljYXRvckxheWVyQ2xpZW50OwogCi1jbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMg
V2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLCBwcml2YXRlIFBhZ2VPdmVybGF5OjpDbGllbnQgeworY2xhc3MgV2ViSW5zcGVj
dG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHJpdmF0ZSBQYWdl
T3ZlcmxheTo6Q2xpZW50IHsKIGZyaWVuZCBjbGFzcyBSZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGll
bnQ7CiBwdWJsaWM6CiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50KFdlYlBhZ2UqKTsKICAgICB2aXJ0
dWFsIH5XZWJJbnNwZWN0b3JDbGllbnQoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQg
aW5zcGVjdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAgLy8gV2ViQ29yZTo6SW5zcGVjdG9y
Q2xpZW50CisgICAgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBj
bG9zZUluc3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGJyaW5n
RnJvbnRlbmRUb0Zyb250KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlc2l6ZU1h
aW5GcmFtZShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOworICAgIFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQo
KSBvdmVycmlkZTsKKyAgICB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRSZXNpemVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
aGlkZUhpZ2hsaWdodCgpIG92ZXJyaWRlOworICAgIHZvaWQgaGlnaGxpZ2h0KCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShJT1Mp
CiAgICAgdmlydHVhbCB2b2lkIHNob3dJbnNwZWN0b3JJbmRpY2F0aW9uKCkgb3ZlcnJpZGU7CkBA
IC03MiwxMCArNzMsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBvdmVycmlkZXNTaG93
UGFpbnRSZWN0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2hvd1BhaW50UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGcmFtZUluc3RydW1lbnRhdGlv
bigpOwotCiAgICAgLy8gUGFnZU92ZXJsYXk6OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBwYWdl
T3ZlcmxheURlc3Ryb3llZChQYWdlT3ZlcmxheSopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGQ0M2RhZTEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgotCi0jaWYgRU5B
QkxFKElOU1BFQ1RPUikKLQotI2luY2x1ZGUgIldlYkluc3BlY3Rvci5oIgotI2luY2x1ZGUgIldl
YlBhZ2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRC
YXNlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlBhZ2UqIHBhZ2UsIFdlYlBhZ2Uq
IGluc3BlY3RvclBhZ2UpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZwYWdl
LT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGluc3BlY3RvclBhZ2UtPmNvcmVQ
YWdlKCksIHN0ZDo6bWFrZV91bmlxdWU8U2V0dGluZ3M+KCkpCi0gICAgLCBtX3BhZ2UocGFnZSkK
LXsKLX0KLQotU3RyaW5nIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojpsb2NhbGl6ZWRTdHJp
bmdzVVJMKCkKLXsKLSAgICByZXR1cm4gbV9wYWdlLT5pbnNwZWN0b3IoKS0+bG9jYWxpemVkU3Ry
aW5nc1VSTCgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpicmluZ1Rv
RnJvbnQoKQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmJyaW5nVG9Gcm9udCgpOwotfQot
Ci12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjbG9zZVdpbmRvdygpCi17Ci0gICAg
bV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250
ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJv
eWVkKTsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5kaWRDbG9zZSgpOwotfQotCi1ib29sIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjYW5TYXZlKCkKLXsKLSAgICByZXR1cm4gbV9wYWdl
LT5pbnNwZWN0b3IoKS0+Y2FuU2F2ZSgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVu
dCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKQotewotICAgIG1fcGFnZS0+
aW5zcGVjdG9yKCktPnNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNl
U2F2ZUFzKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkKLXsKLSAgICBtX3Bh
Z2UtPmluc3BlY3RvcigpLT5hcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpOwotfQotCi12b2lkIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3coRG9ja1NpZGUgZG9ja1NpZGUp
Ci17Ci0gICAgc3dpdGNoIChkb2NrU2lkZSkgewotICAgIGNhc2UgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OkRvY2tTaWRlOjpVbmRvY2tlZDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tT
aWRlOjpCb3R0b206Ci0gICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmF0dGFjaEJvdHRvbSgp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2Nr
U2lkZTo6UmlnaHQ6Ci0gICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmF0dGFjaFJpZ2h0KCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6ZGV0YWNoV2luZG93KCkKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5kZXRhY2go
KTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0QXR0YWNoZWRXaW5k
b3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNl
dEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCi17Ci0g
ICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh3aWR0aCk7Ci19
Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldFRvb2xiYXJIZWlnaHQodW5z
aWduZWQgaGVpZ2h0KQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNldFRvb2xiYXJIZWln
aHQoaGVpZ2h0KTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6aW5zcGVj
dGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKLXsKLSAgICBtX3BhZ2UtPmlu
c3BlY3RvcigpLT5pbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYzM3N2VmNS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAt
MSw2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudF9oCi0jZGVmaW5lIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50X2gKLQotI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2U7Ci0KLWNsYXNz
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWwgewotcHVibGljOgotICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KFdlYlBhZ2UqIHBhZ2UsIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UpOwotCi1wcml2YXRlOgot
ICAgIHZpcnR1YWwgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBvdmVycmlkZTsKLQotICAg
IHZpcnR1YWwgdm9pZCBicmluZ1RvRnJvbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2VXaW5kb3coKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgYm9vbCBjYW5TYXZlKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwotCi0gICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2
b2lkIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQpIG92ZXJyaWRlOwotCi0gICAg
dmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
Ci0KLSAgICBXZWJQYWdlKiBtX3BhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCi0KLSNlbmRpZiAvLyBXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3IuY3BwCmluZGV4IDU2MTI5N2EuLjVjNjQ0NDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywxMTcgKzI3
LDc0IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yLmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKLSNpbmNsdWRlICJXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5oIgorI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0Nocm9tZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lTG9hZFJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3Rv
clBhZ2VBZ2VudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2luY2x1ZGUgPGluc3BlY3Rvci9J
bnNwZWN0b3JBZ2VudEJhc2UuaD4KLSNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9XaW5kb3dGZWF0dXJlcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorc3RhdGlj
IGNvbnN0IGZsb2F0IG1pbmltdW1BdHRhY2hlZEhlaWdodCA9IDI1MDsKK3N0YXRpYyBjb25zdCBm
bG9hdCBtYXhpbXVtQXR0YWNoZWRIZWlnaHRSYXRpbyA9IDAuNzU7CitzdGF0aWMgY29uc3QgZmxv
YXQgbWluaW11bUF0dGFjaGVkV2lkdGggPSA3NTA7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Q
YXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gV2ViSW5zcGVjdG9yOjpjcmVhdGUoV2ViUGFnZSogcGFn
ZSwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwpCitQYXNzUmVmUHRy
PFdlYkluc3BlY3Rvcj4gV2ViSW5zcGVjdG9yOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvcihwYWdlLCBmcm9udGVuZENoYW5uZWwp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvcihwYWdlKSk7CiB9CiAKLVdl
Ykluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlBhZ2UqIHBhZ2UsIEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQorV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2Vi
UGFnZSogcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQotICAgICwgbV9pbnNwZWN0b3JQYWdlKG51
bGxwdHIpCi0gICAgLCBtX2Zyb250ZW5kQ2xpZW50KG51bGxwdHIpCi0gICAgLCBtX2Zyb250ZW5k
Q2hhbm5lbChmcm9udGVuZENoYW5uZWwpCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgLCBtX2hh
c0xvY2FsaXplZFN0cmluZ3NVUkwoZmFsc2UpCi0jZW5kaWYKLSNpZiBFTkFCTEUoSU5TUEVDVE9S
X1NFUlZFUikKLSAgICAsIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoZmFsc2UpCi0jZW5kaWYK
KyAgICAsIG1fYXR0YWNoZWQoZmFsc2UpCisgICAgLCBtX3ByZXZpb3VzQ2FuQXR0YWNoKGZhbHNl
KQogewogfQogCiAvLyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JDbGllbnQKLVdlYlBhZ2UqIFdl
Ykluc3BlY3Rvcjo6Y3JlYXRlSW5zcGVjdG9yUGFnZSgpCit2b2lkIFdlYkluc3BlY3Rvcjo6Y3Jl
YXRlSW5zcGVjdG9yUGFnZShib29sIHVuZGVyVGVzdCkKIHsKICAgICBpZiAoIW1fcGFnZSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBBU1NFUlQoIW1faW5zcGVjdG9yUGFnZSk7Ci0g
ICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2xpZW50KTsKLQotICAgIHVpbnQ2NF90IGluc3BlY3RvclBh
Z2VJRCA9IDA7Ci0gICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0g
ICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2Uo
KSwKLSAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6Q3JlYXRlSW5zcGVj
dG9yUGFnZTo6UmVwbHkoaW5zcGVjdG9yUGFnZUlELCBwYXJhbWV0ZXJzKSwKLSAgICAgICAgICAg
IG1fcGFnZS0+cGFnZUlEKCksIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM6Om1heCgpKSkgewot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgICAgIHJldHVybjsKIAotICAgIGlm
ICghaW5zcGVjdG9yUGFnZUlEKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNpZiBPUyhEQVJX
SU4pCisgICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKKyAgICBtYWNoX3BvcnRfYWxsb2Nh
dGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQ
b3J0KTsKIAotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNyZWF0ZVdlYlBhZ2UoaW5zcGVjdG9y
UGFnZUlELCBwYXJhbWV0ZXJzKTsKLSAgICBtX2luc3BlY3RvclBhZ2UgPSBXZWJQcm9jZXNzOjpz
aGFyZWQoKS53ZWJQYWdlKGluc3BlY3RvclBhZ2VJRCk7Ci0gICAgQVNTRVJUKG1faW5zcGVjdG9y
UGFnZSk7CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0
ZVNlcnZlckNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1Bv
cnQpLCB0aGlzLCBSdW5Mb29wOjptYWluKCkpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5v
cGVuKCk7CiAKLSAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9wYWdlLCBtX2luc3BlY3RvclBhZ2UpOwotICAgIG1f
ZnJvbnRlbmRDbGllbnQgPSBmcm9udGVuZENsaWVudC5nZXQoKTsKLSAgICBtX2luc3BlY3RvclBh
Z2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVu
ZENsaWVudChXVEY6Om1vdmUoZnJvbnRlbmRDbGllbnQpKTsKLSAgICByZXR1cm4gbV9pbnNwZWN0
b3JQYWdlOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpDcmVhdGVJbnNwZWN0b3JQYWdl
KElQQzo6QXR0YWNobWVudChsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCks
IGNhbkF0dGFjaFdpbmRvdygpLCB1bmRlclRlc3QpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyNlbHNl
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyNlbmRpZgogfQogCi1XZWJQYWdlKiBXZWJJbnNwZWN0
b3I6OmNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpjbG9z
ZUZyb250ZW5kKCkKIHsKLSAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICBBU1NFUlQoIW1faW5zcGVjdG9yUGFnZSk7Ci0gICAgQVNTRVJUKCFtX2Zyb250ZW5k
Q2xpZW50KTsKLQotICAgIHVpbnQ2NF90IGluc3BlY3RvclBhZ2VJRCA9IDA7Ci0gICAgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0gICAgaWYgKCFXZWJQcm9jZXNzOjpz
aGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KCksCi0gICAgICAgICAg
ICBNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0
OjpSZXBseShpbnNwZWN0b3JQYWdlSUQsIHBhcmFtZXRlcnMpLAotICAgICAgICAgICAgbV9wYWdl
LT5wYWdlSUQoKSwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kczo6bWF4KCkpKSB7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGlmICghaW5zcGVjdG9yUGFnZUlEKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNyZWF0ZVdl
YlBhZ2UoaW5zcGVjdG9yUGFnZUlELCBwYXJhbWV0ZXJzKTsKLSAgICBtX2luc3BlY3RvclBhZ2Ug
PSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJQYWdlKGluc3BlY3RvclBhZ2VJRCk7Ci0gICAgQVNT
RVJUKG1faW5zcGVjdG9yUGFnZSk7Ci0KLSAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9wYWdlLCBtX2luc3BlY3Rv
clBhZ2UpOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBmcm9udGVuZENsaWVudC5nZXQoKTsKLSAg
ICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJ
bnNwZWN0b3JGcm9udGVuZENsaWVudChXVEY6Om1vdmUoZnJvbnRlbmRDbGllbnQpKTsKLSAgICBy
ZXR1cm4gbV9pbnNwZWN0b3JQYWdlOwotfQorICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpE
aWRDbG9zZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIAotdm9pZCBXZWJJbnNwZWN0b3I6OmRlc3Ry
b3lJbnNwZWN0b3JQYWdlKCkKLXsKLSAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRyOwotICAg
IG1fZnJvbnRlbmRDbGllbnQgPSBudWxscHRyOwotICAgIG1fZnJvbnRlbmRDaGFubmVsID0gbnVs
bHB0cjsKLX0KKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworICAgIG1f
ZnJvbnRlbmRDb25uZWN0aW9uID0gbnVsbHB0cjsKIAotLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQKLXZvaWQgV2ViSW5zcGVjdG9yOjpkaWRDbG9zZSgpCi17Ci0gICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCksIG1fcGFnZS0+cGFnZUlEKCkpOwot
ICAgIGRlc3Ryb3lJbnNwZWN0b3JQYWdlKCk7CisgICAgbV9hdHRhY2hlZCA9IGZhbHNlOworICAg
IG1fcHJldmlvdXNDYW5BdHRhY2ggPSBmYWxzZTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OmJy
aW5nVG9Gcm9udCgpCkBAIC0xNDUsNTEgKzEwMiw2IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpicmlu
Z1RvRnJvbnQoKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjppbnNwZWN0ZWRVUkxD
aGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyksIG1fcGFnZS0+cGFnZUlEKCkp
OwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6c2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVB
cykKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2F2ZShmaWxlbmFtZSwgY29udGVu
dCwgYmFzZTY0RW5jb2RlZCwgZm9yY2VTYXZlQXMpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQot
dm9pZCBXZWJJbnNwZWN0b3I6OmFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnQpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkFwcGVuZChm
aWxlbmFtZSwgY29udGVudCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3Bl
Y3Rvcjo6YXR0YWNoQm90dG9tKCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0
YWNoQm90dG9tKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6
YXR0YWNoUmlnaHQoKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hSaWdo
dCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OmRldGFjaCgp
Ci17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRldGFjaCgpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVu
c2lnbmVkIGhlaWdodCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNo
ZWRXaW5kb3dIZWlnaHQoaGVpZ2h0KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2Vi
SW5zcGVjdG9yOjpzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQotewotICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKSwg
bV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzZXRUb29sYmFySGVp
Z2h0KHVuc2lnbmVkIGhlaWdodCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0
VG9vbGJhckhlaWdodChoZWlnaHQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQogLy8gQ2FsbGVk
IGJ5IFdlYkluc3BlY3RvciBtZXNzYWdlcwogdm9pZCBXZWJJbnNwZWN0b3I6OnNob3coKQogewpA
QCAtMjAxLDM0ICsxMTMsMTcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OmNsb3NlKCkKICAgICBtX3Bh
Z2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jbG9zZSgpOwogfQogCi12b2lk
IFdlYkluc3BlY3Rvcjo6ZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICBBU1NFUlQo
bV9pbnNwZWN0b3JQYWdlKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCktPm1haW5G
cmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQobWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRl
bmRBUEkuc2F2ZWRVUkwoXCIiLCB1cmwsICJcIikiKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9y
OjpkaWRBcHBlbmQoY29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgQVNTRVJUKG1faW5zcGVjdG9y
UGFnZSk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3Jp
cHQoKS5leGVjdXRlU2NyaXB0KG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmFwcGVu
ZGVkVG9VUkwoXCIiLCB1cmwsICJcIikiKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjphdHRh
Y2hlZEJvdHRvbSgpCit2b2lkIFdlYkluc3BlY3Rvcjo6b3BlbkluTmV3VGFiKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKQogewotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zy
b250ZW5kQ2xpZW50LT5zZXRBdHRhY2hlZFdpbmRvdyhJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
RG9ja1NpZGU6OkJvdHRvbSk7Ci19CisgICAgUGFnZSogaW5zcGVjdGVkUGFnZSA9IG1fcGFnZS0+
Y29yZVBhZ2UoKTsKKyAgICBGcmFtZSYgaW5zcGVjdGVkTWFpbkZyYW1lID0gaW5zcGVjdGVkUGFn
ZS0+bWFpbkZyYW1lKCk7CisgICAgRnJhbWVMb2FkUmVxdWVzdCByZXF1ZXN0KGluc3BlY3RlZE1h
aW5GcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QodXJs
U3RyaW5nKSwgIl9ibGFuayIpOwogCi12b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNoZWRSaWdodCgp
Ci17Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQt
PnNldEF0dGFjaGVkV2luZG93KEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6Umln
aHQpOwotfQorICAgIFBhZ2UqIG5ld1BhZ2UgPSBpbnNwZWN0ZWRQYWdlLT5jaHJvbWUoKS5jcmVh
dGVXaW5kb3coJmluc3BlY3RlZE1haW5GcmFtZSwgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMoKSwg
TmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBOYXZpZ2F0aW9uVHlw
ZUxpbmtDbGlja2VkKSk7CisgICAgaWYgKCFuZXdQYWdlKQorICAgICAgICByZXR1cm47CiAKLXZv
aWQgV2ViSW5zcGVjdG9yOjpkZXRhY2hlZCgpCi17Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQp
Ci0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldEF0dGFjaGVkV2luZG93KEluc3BlY3RvckZy
b250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6VW5kb2NrZWQpOworICAgIG5ld1BhZ2UtPm1haW5GcmFt
ZSgpLmxvYWRlcigpLmxvYWQocmVxdWVzdCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpldmFs
dWF0ZVNjcmlwdEZvclRlc3QoY29uc3QgU3RyaW5nJiBzY3JpcHQpCkBAIC0yMzksMTA4ICsxMzQs
OTQgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OmV2YWx1YXRlU2NyaXB0Rm9yVGVzdChjb25zdCBTdHJp
bmcmIHNjcmlwdCkKIHZvaWQgV2ViSW5zcGVjdG9yOjpzaG93Q29uc29sZSgpCiB7CiAgICAgbV9w
YWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmICht
X2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zaG93Q29uc29sZSgp
OworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
STo6U2hvd0NvbnNvbGUoKSwgMCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpzaG93UmVzb3Vy
Y2VzKCkKIHsKICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5z
aG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGll
bnQtPnNob3dSZXNvdXJjZXMoKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUk6OlNob3dSZXNvdXJjZXMoKSwgMCk7CiB9CiAKLXZvaWQgV2Vi
SW5zcGVjdG9yOjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKK3Zv
aWQgV2ViSW5zcGVjdG9yOjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
ZGVudGlmaWVyKQogewotICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgp
LndlYkZyYW1lKGZyYW1lSUQpOworICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNo
YXJlZCgpLndlYkZyYW1lKGZyYW1lSWRlbnRpZmllcik7CiAgICAgaWYgKCFmcmFtZSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCkuc2hvdygpOwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5k
Q2xpZW50LT5zaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpKTsKLX0K
IAotdm9pZCBXZWJJbnNwZWN0b3I6OnN0YXJ0SmF2YVNjcmlwdERlYnVnZ2luZygpCi17Ci0gICAg
bV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlm
IChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXREZWJ1Z2dp
bmdFbmFibGVkKHRydWUpOworICAgIFN0cmluZyBpbnNwZWN0b3JGcmFtZUlkZW50aWZpZXIgPSBt
X3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5wYWdlQWdlbnQoKS0+ZnJh
bWVJZChmcmFtZS0+Y29yZUZyYW1lKCkpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGluc3Bl
Y3RvckZyYW1lSWRlbnRpZmllciksIDApOwogfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6c3RvcEph
dmFTY3JpcHREZWJ1Z2dpbmcoKQordm9pZCBXZWJJbnNwZWN0b3I6OnN0YXJ0UGFnZVByb2ZpbGlu
ZygpCiB7CiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hv
dygpOwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50
LT5zZXREZWJ1Z2dpbmdFbmFibGVkKGZhbHNlKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OnNl
dEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wpCi17Ci0gICAgLy8gTm8gbG9uZ2VyIHN1
cHBvcnRlZC4KKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yVUk6OlN0YXJ0UGFnZVByb2ZpbGluZygpLCAwKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0
b3I6OnN0YXJ0SmF2YVNjcmlwdFByb2ZpbGluZygpCit2b2lkIFdlYkluc3BlY3Rvcjo6c3RvcFBh
Z2VQcm9maWxpbmcoKQogewotICAgIC8vIE5vIGxvbmdlciBzdXBwb3J0ZWQuCisgICAgbV9wYWdl
LT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOworICAgIG1fZnJvbnRl
bmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U3RvcFBhZ2VQcm9m
aWxpbmcoKSwgMCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpzdG9wSmF2YVNjcmlwdFByb2Zp
bGluZygpCitib29sIFdlYkluc3BlY3Rvcjo6Y2FuQXR0YWNoV2luZG93KCkKIHsKLSAgICAvLyBO
byBsb25nZXIgc3VwcG9ydGVkLgotfQorICAgIC8vIERvbid0IGFsbG93IGF0dGFjaGluZyB0byBh
bm90aGVyIGluc3BlY3RvciAtLSB0d28gaW5zcGVjdG9ycyBpbiBvbmUgd2luZG93IGlzIHRvbyBt
dWNoIQorICAgIGlmIChtX3BhZ2UtPmlzSW5zcGVjdG9yUGFnZSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpzdGFydFBhZ2VQcm9maWxpbmcoKQotewotICAg
IG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBp
ZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0VGltZWxp
bmVQcm9maWxpbmdFbmFibGVkKHRydWUpOwotfQorICAgIC8vIElmIHdlIGFyZSBhbHJlYWR5IGF0
dGFjaGVkLCBhbGxvdyBhdHRhY2hpbmcgYWdhaW4gdG8gYWxsb3cgc3dpdGNoaW5nIHNpZGVzLgor
ICAgIGlmIChtX2F0dGFjaGVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotdm9pZCBXZWJJbnNw
ZWN0b3I6OnN0b3BQYWdlUHJvZmlsaW5nKCkKLXsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0g
ICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChmYWxz
ZSk7CisgICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGF0dGFjaCBpZiB0aGUgd2luZG93IHdvdWxkIGJl
IHRvbyBzbWFsbCB0byBhY2NvbW1vZGF0ZSB0aGUgbWluaW11bSBpbnNwZWN0b3Igc2l6ZS4KKyAg
ICB1bnNpZ25lZCBpbnNwZWN0ZWRQYWdlSGVpZ2h0ID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5tYWlu
RnJhbWUoKS52aWV3KCktPnZpc2libGVIZWlnaHQoKTsKKyAgICB1bnNpZ25lZCBpbnNwZWN0ZWRQ
YWdlV2lkdGggPSBtX3BhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJs
ZVdpZHRoKCk7CisgICAgdW5zaWduZWQgbWF4aW11bUF0dGFjaGVkSGVpZ2h0ID0gaW5zcGVjdGVk
UGFnZUhlaWdodCAqIG1heGltdW1BdHRhY2hlZEhlaWdodFJhdGlvOworICAgIHJldHVybiBtaW5p
bXVtQXR0YWNoZWRIZWlnaHQgPD0gbWF4aW11bUF0dGFjaGVkSGVpZ2h0ICYmIG1pbmltdW1BdHRh
Y2hlZFdpZHRoIDw9IGluc3BlY3RlZFBhZ2VXaWR0aDsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6
OnVwZGF0ZURvY2tpbmdBdmFpbGFiaWxpdHkoKQogewotICAgIGlmICghbV9mcm9udGVuZENsaWVu
dCkKKyAgICBpZiAobV9hdHRhY2hlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBjYW5B
dHRhY2hXaW5kb3cgPSB0aGlzLT5jYW5BdHRhY2hXaW5kb3coKTsKKyAgICBpZiAobV9wcmV2aW91
c0NhbkF0dGFjaCA9PSBjYW5BdHRhY2hXaW5kb3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJv
b2wgY2FuQXR0YWNoV2luZG93ID0gbV9mcm9udGVuZENsaWVudC0+Y2FuQXR0YWNoV2luZG93KCk7
CisgICAgbV9wcmV2aW91c0NhbkF0dGFjaCA9IGNhbkF0dGFjaFdpbmRvdzsKKwogICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGNhbkF0dGFjaFdp
bmRvdyksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldERvY2tp
bmdVbmF2YWlsYWJsZSghY2FuQXR0YWNoV2luZG93KTsKIH0KIAotI2lmIEVOQUJMRShJTlNQRUNU
T1JfU0VSVkVSKQotdm9pZCBXZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVu
ZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIFdlYkluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VU
b0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIEFTU0VSVChtX3JlbW90ZUZy
b250ZW5kQ29ubmVjdGVkKTsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2VuZE1lc3Nh
Z2VUb1JlbW90ZUZyb250ZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRjaE1lc3NhZ2VGcm9t
RnJvbnRlbmQobWVzc2FnZSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpkaXNwYXRjaE1lc3Nh
Z2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorYm9vbCBXZWJJbnNw
ZWN0b3I6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0g
ICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0Y2hNZXNz
YWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOworI2lmICFFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikK
KyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6
OlNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKSwgMCk7CisjZWxzZQorICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpTZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQobWVzc2FnZSksIG1f
cGFnZS0+cGFnZUlEKCkpOworI2VuZGlmCisgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SX1NFUlZFUikKIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZENv
bm5lY3RlZCgpCiB7Ci0gICAgQVNTRVJUKCFtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKTsKLSAg
ICAvLyBTd2l0Y2hpbmcgYmV0d2VlbiBpbi1wcm9jZXNzIGFuZCByZW1vdGUgaW5zcGVjdG9ycyBp
c24ndCBzdXBwb3J0ZWQgeWV0LgotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JQYWdlKTsKLSAgICAK
LSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJv
bnRlbmQobV9mcm9udGVuZENoYW5uZWwpOwotICAgIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQg
PSB0cnVlOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNv
bm5lY3RGcm9udGVuZCh0aGlzKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250
ZW5kRGlzY29ubmVjdGVkKCkKIHsKLSAgICBBU1NFUlQobV9yZW1vdGVGcm9udGVuZENvbm5lY3Rl
ZCk7CiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29u
bmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVj
dG9yRGVzdHJveWVkKTsKLSAgICBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkID0gZmFsc2U7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5oCmluZGV4IGM5M2JjYjMuLjNjMTliOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDEwNiArMzAsODAgQEAKIAog
I2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRp
bmcuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50OwogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgV2ViSW5zcGVjdG9yIDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yPiB7
CitjbGFzcyBXZWJJbnNwZWN0b3IgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpCdW5kbGVJbnNwZWN0b3I+LCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQs
IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gY3JlYXRlKFdlYlBhZ2UqLCBXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJ
bnNwZWN0b3I+IGNyZWF0ZShXZWJQYWdlKik7CiAKICAgICBXZWJQYWdlKiBwYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlOyB9Ci0gICAgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1faW5zcGVjdG9yUGFnZTsgfQorCisgICAgdm9pZCB1cGRhdGVEb2NraW5nQXZhaWxh
YmlsaXR5KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5l
cmF0ZWQgV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcAotICAgIHZvaWQgZGlkUmVjZWl2
ZVdlYkluc3BlY3Rvck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2Rl
ciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpN
ZXNzYWdlRGVjb2RlciYpOworCisgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKKyAgICB2
b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiopIHsgY2xvc2UoKTsgfQorICAgIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1l
KSB7IGNsb3NlKCk7IH0KIAogICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3IgbWVzc2FnZXMK
KyAgICB2b2lkIGNvbm5lY3Rpb25Fc3RhYmxpc2hlZCgpOworCiAgICAgdm9pZCBzaG93KCk7CiAg
ICAgdm9pZCBjbG9zZSgpOwogCi0gICAgdm9pZCBkaWRTYXZlKGNvbnN0IFN0cmluZyYgdXJsKTsK
LSAgICB2b2lkIGRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCBvcGVuSW5O
ZXdUYWIoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOworCisgICAgdm9pZCBjYW5BdHRhY2hXaW5k
b3coYm9vbCYgcmVzdWx0KTsKKworICAgIHZvaWQgc2hvd0NvbnNvbGUoKTsKKyAgICB2b2lkIHNo
b3dSZXNvdXJjZXMoKTsKIAotICAgIHZvaWQgYXR0YWNoZWRCb3R0b20oKTsKLSAgICB2b2lkIGF0
dGFjaGVkUmlnaHQoKTsKLSAgICB2b2lkIGRldGFjaGVkKCk7CisgICAgdm9pZCBzaG93TWFpblJl
c291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJZGVudGlmaWVyKTsKKworICAgIHZvaWQgc2V0
QXR0YWNoZWQoYm9vbCBhdHRhY2hlZCkgeyBtX2F0dGFjaGVkID0gYXR0YWNoZWQ7IH0KIAogICAg
IHZvaWQgZXZhbHVhdGVTY3JpcHRGb3JUZXN0KGNvbnN0IFN0cmluZyYgc2NyaXB0KTsKIAotICAg
IHZvaWQgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzdGFy
dFBhZ2VQcm9maWxpbmcoKTsKICAgICB2b2lkIHN0b3BQYWdlUHJvZmlsaW5nKCk7CiAKKyAgICB2
b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYpOworCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUl9TRVJWRVIpCi0gICAgYm9vbCBoYXNSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQ7IH0KLSAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQg
ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7
CiAgICAgdm9pZCByZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpOwogICAgIHZvaWQgcmVtb3RlRnJv
bnRlbmREaXNjb25uZWN0ZWQoKTsKICNlbmRpZgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBXZWJJbnNwZWN0b3JDbGllbnQ7Ci0gICAgZnJpZW5kIGNsYXNzIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50OwogCi0gICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yKFdlYlBhZ2UqLCBXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKKyAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3Io
V2ViUGFnZSopOworCisgICAgYm9vbCBjYW5BdHRhY2hXaW5kb3coKTsKIAogICAgIC8vIENhbGxl
ZCBmcm9tIFdlYkluc3BlY3RvckNsaWVudAotICAgIFdlYlBhZ2UqIGNyZWF0ZUluc3BlY3RvclBh
Z2UoKTsKLSAgICBXZWJQYWdlKiBjcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgpOwotICAgIHZv
aWQgZGVzdHJveUluc3BlY3RvclBhZ2UoKTsKKyAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBhZ2Uo
Ym9vbCB1bmRlclRlc3QpOwogCi0gICAgLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQKLSAgICB2b2lkIGRpZENsb3NlKCk7CisgICAgdm9pZCBjbG9zZUZyb250ZW5kKCk7
CiAgICAgdm9pZCBicmluZ1RvRnJvbnQoKTsKLSAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQo
Y29uc3QgU3RyaW5nJik7Ci0KLSAgICBib29sIGNhblNhdmUoKSBjb25zdDsKLSAgICB2b2lkIHNh
dmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJh
c2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7Ci0KLSAgICB2b2lkIGF0dGFj
aEJvdHRvbSgpOwotICAgIHZvaWQgYXR0YWNoUmlnaHQoKTsKLSAgICB2b2lkIGRldGFjaCgpOwog
Ci0gICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCk7Ci0gICAgdm9pZCBz
ZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKTsKLSAgICB2b2lkIHNldFRvb2xiYXJIZWln
aHQodW5zaWduZWQpOwotCi0gICAgLy8gSW1wbGVtZW50ZWQgaW4gcGxhdGZvcm0gV2ViSW5zcGVj
dG9yIGZpbGUKLSAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0OwotCi0gICAg
dm9pZCBzaG93Q29uc29sZSgpOwotCi0gICAgdm9pZCBzaG93UmVzb3VyY2VzKCk7Ci0KLSAgICB2
b2lkIHNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKLQotICAgIHZv
aWQgc3RhcnRKYXZhU2NyaXB0RGVidWdnaW5nKCk7Ci0gICAgdm9pZCBzdG9wSmF2YVNjcmlwdERl
YnVnZ2luZygpOwotCi0gICAgdm9pZCBzdGFydEphdmFTY3JpcHRQcm9maWxpbmcoKTsKLSAgICB2
b2lkIHN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCk7CisgICAgV2ViUGFnZSogbV9wYWdlOwogCi0g
ICAgdm9pZCB1cGRhdGVEb2NraW5nQXZhaWxhYmlsaXR5KCk7CisgICAgUmVmUHRyPElQQzo6Q29u
bmVjdGlvbj4gbV9mcm9udGVuZENvbm5lY3Rpb247CiAKLSAgICBXZWJQYWdlKiBtX3BhZ2U7Ci0g
ICAgV2ViUGFnZSogbV9pbnNwZWN0b3JQYWdlOwotICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KiBtX2Zyb250ZW5kQ2xpZW50OwotICAgIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogbV9mcm9udGVuZENoYW5uZWw7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbXV0YWJs
ZSBTdHJpbmcgbV9sb2NhbGl6ZWRTdHJpbmdzVVJMOwotICAgIG11dGFibGUgYm9vbCBtX2hhc0xv
Y2FsaXplZFN0cmluZ3NVUkw7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikK
LSAgICBib29sIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQ7Ci0jZW5kaWYKKyAgICBib29sIG1f
YXR0YWNoZWQ7CisgICAgYm9vbCBtX3ByZXZpb3VzQ2FuQXR0YWNoOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgppbmRleCBjMjNiODZmLi5mYzA3M2NhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3IubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCwg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIyLDI2ICsyMiwyNSBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAot
bWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yIExlZ2FjeVJlY2VpdmVyIHsKK21lc3NhZ2VzIC0+IFdl
Ykluc3BlY3RvciB7CiAgICAgU2hvdygpCiAgICAgQ2xvc2UoKQotICAgIEF0dGFjaGVkQm90dG9t
KCkKLSAgICBBdHRhY2hlZFJpZ2h0KCkKLSAgICBEZXRhY2hlZCgpCi0gICAgRGlkU2F2ZShTdHJp
bmcgdXJsKQotICAgIERpZEFwcGVuZChTdHJpbmcgdXJsKQorCisgICAgU2V0QXR0YWNoZWQoYm9v
bCBhdHRhY2hlZCkKKwogICAgIFNob3dDb25zb2xlKCkKICAgICBTaG93UmVzb3VyY2VzKCkKLSAg
ICBTaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKLSAgICBTdGFydEph
dmFTY3JpcHREZWJ1Z2dpbmcoKQotICAgIFN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCkKLSAgICBT
dGFydEphdmFTY3JpcHRQcm9maWxpbmcoKQotICAgIFN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCkK
KworICAgIFNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlkZW50aWZpZXIp
CisKKyAgICBPcGVuSW5OZXdUYWIoU3RyaW5nIHVybCkKKwogICAgIFN0YXJ0UGFnZVByb2ZpbGlu
ZygpCiAgICAgU3RvcFBhZ2VQcm9maWxpbmcoKQogCisgICAgU2VuZE1lc3NhZ2VUb0JhY2tlbmQo
U3RyaW5nIG1lc3NhZ2UpCisKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAgICBEaXNw
YXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoU3RyaW5nIG1lc3NhZ2UpCiAgICAgUmVtb3Rl
RnJvbnRlbmRDb25uZWN0ZWQoKQogICAgIFJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3JVSS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTIxZDZiMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3JVSS5jcHAKQEAgLTAsMCArMSwyODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUkuaCIKKworI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCisKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldl
Ykluc3BlY3RvclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdFZhbHVlLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RPTVdyYXBw
ZXJXb3JsZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2NyaXB0R2xvYmFsT2JqZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRT
dGF0ZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1Bhc3NSZWZQdHI8V2ViSW5zcGVjdG9yVUk+IFdlYkluc3BlY3RvclVJOjpjcmVhdGUoV2Vi
UGFnZSogcGFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvclVJKHBh
Z2UpKTsKK30KKworV2ViSW5zcGVjdG9yVUk6OldlYkluc3BlY3RvclVJKFdlYlBhZ2UqIHBhZ2Up
CisgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIoMCkK
KyAgICAsIG1fdW5kZXJUZXN0KGZhbHNlKQorICAgICwgbV9mcm9udGVuZExvYWRlZChmYWxzZSkK
KyAgICAsIG1fZG9ja1NpZGUoRG9ja1NpZGU6OlVuZG9ja2VkKQorI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgICwgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMKGZhbHNlKQorI2VuZGlmCit7Cit9CisK
K3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFibGlzaENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50
IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50
aWZpZXIsIGJvb2wgdW5kZXJUZXN0KQoreworI2lmIE9TKERBUldJTikKKyAgICBJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25J
ZGVudGlmaWVyLnBvcnQoKSk7CisgICAgaWYgKElQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklz
TnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIG1faW5z
cGVjdGVkUGFnZUlkZW50aWZpZXIgPSBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKKyAgICBtX3Vu
ZGVyVGVzdCA9IHVuZGVyVGVzdDsKKworICAgIG1fYmFja2VuZENvbm5lY3Rpb24gPSBJUEM6OkNv
bm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsIHRo
aXMsIFJ1bkxvb3A6Om1haW4oKSk7CisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbi0+b3BlbigpOwor
I2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybjsKKyNlbmRpZgorCisgICAg
bV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQodGhpcyk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OndpbmRvd09iamVj
dENsZWFyZWQoKQoreworICAgIGlmIChtX2Zyb250ZW5kSG9zdCkKKyAgICAgICAgbV9mcm9udGVu
ZEhvc3QtPmRpc2Nvbm5lY3RDbGllbnQoKTsKKworICAgIG1fZnJvbnRlbmRIb3N0ID0gSW5zcGVj
dG9yRnJvbnRlbmRIb3N0OjpjcmVhdGUodGhpcywgbV9wYWdlLT5jb3JlUGFnZSgpKTsKKyAgICBT
Y3JpcHRHbG9iYWxPYmplY3Q6OnNldChleGVjU3RhdGVGcm9tUGFnZShtYWluVGhyZWFkTm9ybWFs
V29ybGQoKSwgbV9wYWdlLT5jb3JlUGFnZSgpKSwgQVNDSUlMaXRlcmFsKCJJbnNwZWN0b3JGcm9u
dGVuZEhvc3QiKSwgbV9mcm9udGVuZEhvc3QuZ2V0KCkpOworfQorCit2b2lkIFdlYkluc3BlY3Rv
clVJOjpmcm9udGVuZExvYWRlZCgpCit7CisgICAgbV9mcm9udGVuZExvYWRlZCA9IHRydWU7CisK
KyAgICBldmFsdWF0ZVBlbmRpbmdFeHByZXNzaW9ucygpOworICAgIGJyaW5nVG9Gcm9udCgpOwor
fQorCit2b2lkIFdlYkluc3BlY3RvclVJOjptb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkK
K3sKKyAgICBGbG9hdFJlY3QgZnJhbWVSZWN0ID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5jaHJvbWUo
KS53aW5kb3dSZWN0KCk7CisgICAgZnJhbWVSZWN0Lm1vdmUoeCwgeSk7CisgICAgbV9wYWdlLT5j
b3JlUGFnZSgpLT5jaHJvbWUoKS5zZXRXaW5kb3dSZWN0KGZyYW1lUmVjdCk7Cit9CisKK3ZvaWQg
V2ViSW5zcGVjdG9yVUk6OmJyaW5nVG9Gcm9udCgpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
UHJveHk6OkJyaW5nVG9Gcm9udCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2xvc2VXaW5kb3coKQoreworICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpEaWRDbG9zZSgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKworICAg
IG1fYmFja2VuZENvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKKyAgICBtX2JhY2tlbmRDb25uZWN0
aW9uID0gbnVsbHB0cjsKKworICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgPSAwOworICAg
IG1fdW5kZXJUZXN0ID0gZmFsc2U7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnJlcXVlc3RT
ZXREb2NrU2lkZShEb2NrU2lkZSBzaWRlKQoreworICAgIHN3aXRjaCAoc2lkZSkgeworICAgIGNh
c2UgRG9ja1NpZGU6OlVuZG9ja2VkOgorICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6
RGV0YWNoKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKwor
ICAgIGNhc2UgRG9ja1NpZGU6OlJpZ2h0OgorICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6QXR0YWNoUmlnaHQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6Qm90dG9tOgorICAgICAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JQcm94eTo6QXR0YWNoQm90dG9tKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNldERvY2tT
aWRlKERvY2tTaWRlIHNpZGUpCit7CisgICAgY29uc3QgY2hhciogc2lkZVN0cmluZzsKKworICAg
IHN3aXRjaCAoc2lkZSkgeworICAgIGNhc2UgRG9ja1NpZGU6OlVuZG9ja2VkOgorICAgICAgICBz
aWRlU3RyaW5nID0gInVuZG9ja2VkIjsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERvY2tT
aWRlOjpSaWdodDoKKyAgICAgICAgc2lkZVN0cmluZyA9ICJyaWdodCI7CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBEb2NrU2lkZTo6Qm90dG9tOgorICAgICAgICBzaWRlU3RyaW5nID0gImJv
dHRvbSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIG1fZG9ja1NpZGUgPSBzaWRlOwor
CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2V0RG9ja1NpZGUiKSwg
QVNDSUlMaXRlcmFsKHNpZGVTdHJpbmcpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2hh
bmdlQXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQoreworICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQpLCBtX2luc3Bl
Y3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2hhbmdlQXR0
YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh3aWR0aCksIG1faW5zcGVjdGVkUGFnZUlk
ZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzZXRUb29sYmFySGVpZ2h0KHVu
c2lnbmVkIGhlaWdodCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0VG9vbGJh
ckhlaWdodChoZWlnaHQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JVSTo6b3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIG1f
YmFja2VuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6T3BlbkluTmV3
VGFiKHVybCksIDApOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzYXZlKGNvbnN0IFdURjo6
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0
RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6U2F2ZShmaWxlbmFtZSwgY29udGVudCwgYmFzZTY0RW5jb2RlZCwgZm9yY2VTYXZlQXMpLCBt
X2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6YXBw
ZW5kKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRl
bnQpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkFwcGVuZChmaWxlbmFtZSwgY29u
dGVudCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3Rv
clVJOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQoreworICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyks
IG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpz
aG93Q29uc29sZSgpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgi
c2hvd0NvbnNvbGUiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNob3dSZXNvdXJjZXMo
KQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNob3dSZXNvdXJj
ZXMiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFt
ZShTdHJpbmcgZnJhbWVJZGVudGlmaWVyKQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChB
U0NJSUxpdGVyYWwoInNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSIpLCBmcmFtZUlkZW50aWZpZXIp
OworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzdGFydFBhZ2VQcm9maWxpbmcoKQoreworICAg
IGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNldFRpbWVsaW5lUHJvZmlsaW5n
RW5hYmxlZCIpLCB0cnVlKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c3RvcFBhZ2VQcm9m
aWxpbmcoKQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNldFRp
bWVsaW5lUHJvZmlsaW5nRW5hYmxlZCIpLCBmYWxzZSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9y
VUk6OmRpZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25M
b2FkKEFTQ0lJTGl0ZXJhbCgic2F2ZWRVUkwiKSwgdXJsKTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JVSTo6ZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGV2YWx1YXRlQ29tbWFu
ZE9uTG9hZChBU0NJSUxpdGVyYWwoImFwcGVuZGVkVG9VUkwiKSwgdXJsKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JVSTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKK3sKKyAgICBldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQobWFrZVN0cmluZygiSW5zcGVjdG9y
RnJvbnRlbmRBUEkuZGlzcGF0Y2hNZXNzYWdlQXN5bmMoIiwgbWVzc2FnZSwgIikiKSk7Cit9CisK
K3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKK3sKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OlNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2UpLCAwKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0IFN0cmluZyYgY29tbWFu
ZCwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCkKK3sKKyAgICBpZiAoYXJndW1lbnQuaXNOdWxsKCkp
CisgICAgICAgIGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChtYWtlU3RyaW5nKCJJbnNwZWN0b3JG
cm9udGVuZEFQSS5kaXNwYXRjaChbXCIiLCBjb21tYW5kLCAiXCJdKSIpKTsKKyAgICBlbHNlCisg
ICAgICAgIGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChtYWtlU3RyaW5nKCJJbnNwZWN0b3JGcm9u
dGVuZEFQSS5kaXNwYXRjaChbXCIiLCBjb21tYW5kLCAiXCIsIFwiIiwgYXJndW1lbnQsICJcIl0p
IikpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29u
c3QgU3RyaW5nJiBjb21tYW5kLCBib29sIGFyZ3VtZW50KQoreworICAgIGV2YWx1YXRlQ29tbWFu
ZE9uTG9hZChjb21tYW5kLCBBU0NJSUxpdGVyYWwoYXJndW1lbnQgPyAidHJ1ZSIgOiAiZmFsc2Ui
KSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24pCit7CisgICAgaWYgKG1fZnJvbnRlbmRMb2FkZWQpIHsK
KyAgICAgICAgQVNTRVJUKG1fcXVldWUuaXNFbXB0eSgpKTsKKyAgICAgICAgbV9wYWdlLT5jb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9xdWV1ZS5hcHBlbmQoZXhwcmVzc2lvbik7
Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRlUGVuZGluZ0V4cHJlc3Npb25zKCkK
K3sKKyAgICBBU1NFUlQobV9mcm9udGVuZExvYWRlZCk7CisKKyAgICBmb3IgKGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiA6IG1fcXVldWUpCisgICAgICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+bWFp
bkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChleHByZXNzaW9uKTsKKworICAgIG1fcXVl
dWUuY2xlYXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yVUkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGJm
Y2JlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3RvclVJLmgKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYkluc3BlY3RvclVJX2gKKyNkZWZpbmUgV2ViSW5zcGVjdG9yVUlfaAorCisjaWYgRU5BQkxF
KElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRpbmcuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YlBhZ2U7CisKK2NsYXNzIFdlYkluc3BlY3RvclVJIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxB
UEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yVUk+LCBwdWJsaWMgSVBDOjpDb25uZWN0
aW9uOjpDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudCB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW5zcGVjdG9yVUk+IGNyZWF0ZShXZWJQ
YWdlKik7CisKKyAgICBXZWJQYWdlKiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CisK
KyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVj
ZWl2ZXIuY3BwCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJ
UEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisKKyAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAor
ICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uKikgeyBjbG9zZVdpbmRvdygpOyB9Cisg
ICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZU5hbWUpIHsgY2xvc2VXaW5kb3coKTsgfQorCisgICAgLy8gQ2FsbGVkIGJ5IFdlYklu
c3BlY3RvclVJIG1lc3NhZ2VzCisgICAgdm9pZCBlc3RhYmxpc2hDb25uZWN0aW9uKElQQzo6QXR0
YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50
aWZpZXIsIGJvb2wgdW5kZXJUZXN0KTsKKworICAgIHZvaWQgc2hvd0NvbnNvbGUoKTsKKyAgICB2
b2lkIHNob3dSZXNvdXJjZXMoKTsKKworICAgIHZvaWQgc2hvd01haW5SZXNvdXJjZUZvckZyYW1l
KFN0cmluZyBmcmFtZUlkZW50aWZpZXIpOworCisgICAgdm9pZCBzdGFydFBhZ2VQcm9maWxpbmco
KTsKKyAgICB2b2lkIHN0b3BQYWdlUHJvZmlsaW5nKCk7CisKKyAgICB2b2lkIGF0dGFjaGVkQm90
dG9tKCkgeyBzZXREb2NrU2lkZShEb2NrU2lkZTo6Qm90dG9tKTsgfQorICAgIHZvaWQgYXR0YWNo
ZWRSaWdodCgpIHsgc2V0RG9ja1NpZGUoRG9ja1NpZGU6OlJpZ2h0KTsgfQorICAgIHZvaWQgZGV0
YWNoZWQoKSB7IHNldERvY2tTaWRlKERvY2tTaWRlOjpVbmRvY2tlZCk7IH0KKworICAgIHZvaWQg
c2V0RG9ja1NpZGUoRG9ja1NpZGUpOworCisgICAgdm9pZCBkaWRTYXZlKGNvbnN0IFN0cmluZyYg
dXJsKTsKKyAgICB2b2lkIGRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCk7CisKKyAgICB2b2lk
IHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kQ2xpZW50CisgICAgdm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBmcm9udGVuZExvYWRlZCgpIG92ZXJyaWRlOworCisgICAgdm9p
ZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgb3ZlcnJpZGU7CisKKyAgICBTdHJpbmcg
bG9jYWxpemVkU3RyaW5nc1VSTCgpIG92ZXJyaWRlOworCisgICAgdm9pZCBicmluZ1RvRnJvbnQo
KSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlV2luZG93KCkgb3ZlcnJpZGU7CisKKyAgICB2b2lk
IHJlcXVlc3RTZXREb2NrU2lkZShEb2NrU2lkZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGFuZ2VB
dHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGFuZ2VB
dHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0VG9v
bGJhckhlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIG9wZW5Jbk5ld1RhYihj
b25zdCBTdHJpbmcmIHVybCkgb3ZlcnJpZGU7CisKKyAgICBib29sIGNhblNhdmUoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNhdmUoY29uc3QgV1RGOjpTdHJpbmcmIHVybCwgY29uc3QgV1RGOjpTdHJp
bmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykgb3ZlcnJp
ZGU7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgV1RGOjpTdHJpbmcmIHVybCwgY29uc3QgV1RGOjpT
dHJpbmcmIGNvbnRlbnQpIG92ZXJyaWRlOworCisgICAgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2Vk
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2Vu
ZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKworICAgIGJvb2wgaXNVbmRlclRlc3QoKSBvdmVy
cmlkZSB7IHJldHVybiBtX3VuZGVyVGVzdDsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFdl
Ykluc3BlY3RvclVJKFdlYlBhZ2UqKTsKKworICAgIHZvaWQgZXZhbHVhdGVDb21tYW5kT25Mb2Fk
KGNvbnN0IFN0cmluZyYgY29tbWFuZCwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCA9IFN0cmluZygp
KTsKKyAgICB2b2lkIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb25zdCBTdHJpbmcmIGNvbW1hbmQs
IGNvbnN0IEFTQ0lJTGl0ZXJhbCYgYXJndW1lbnQpIHsgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNv
bW1hbmQsIFN0cmluZyhhcmd1bWVudCkpOyB9CisgICAgdm9pZCBldmFsdWF0ZUNvbW1hbmRPbkxv
YWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBib29sIGFyZ3VtZW50KTsKKyAgICB2b2lkIGV2YWx1
YXRlRXhwcmVzc2lvbk9uTG9hZChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pOworICAgIHZvaWQg
ZXZhbHVhdGVQZW5kaW5nRXhwcmVzc2lvbnMoKTsKKworICAgIFdlYlBhZ2UqIG1fcGFnZTsKKwor
ICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fYmFja2VuZENvbm5lY3Rpb247CisgICAgdWlu
dDY0X3QgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKKworICAgIGJvb2wgbV91bmRlclRlc3Q7
CisgICAgYm9vbCBtX2Zyb250ZW5kTG9hZGVkOworICAgIERlcXVlPFN0cmluZz4gbV9xdWV1ZTsK
KworICAgIFJlZlB0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q+IG1fZnJvbnRlbmRI
b3N0OworCisgICAgRG9ja1NpZGUgbV9kb2NrU2lkZTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIG11dGFibGUgU3RyaW5nIG1fbG9jYWxpemVkU3RyaW5nc1VSTDsKKyAgICBtdXRhYmxlIGJv
b2wgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisKKyNlbmRpZiAvLyBXZWJJ
bnNwZWN0b3JVSV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCnNpbWlsYXJpdHkgaW5kZXggNzclCmNv
cHkgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1l
c3NhZ2VzLmluCmNvcHkgdG8gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3RvclVJLm1lc3NhZ2VzLmluCmluZGV4IGMyM2I4NmYuLjIzZWI1ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJ
Lm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
MiwyOSArMjIsMjUgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLW1lc3NhZ2VzIC0+IFdl
Ykluc3BlY3RvciBMZWdhY3lSZWNlaXZlciB7Ci0gICAgU2hvdygpCi0gICAgQ2xvc2UoKQorbWVz
c2FnZXMgLT4gV2ViSW5zcGVjdG9yVUkgeworICAgIEVzdGFibGlzaENvbm5lY3Rpb24oSVBDOjpB
dHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRl
bnRpZmllciwgYm9vbCB1bmRlclRlc3QpCisKICAgICBBdHRhY2hlZEJvdHRvbSgpCiAgICAgQXR0
YWNoZWRSaWdodCgpCiAgICAgRGV0YWNoZWQoKQotICAgIERpZFNhdmUoU3RyaW5nIHVybCkKLSAg
ICBEaWRBcHBlbmQoU3RyaW5nIHVybCkKKwogICAgIFNob3dDb25zb2xlKCkKICAgICBTaG93UmVz
b3VyY2VzKCkKLSAgICBTaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkK
LSAgICBTdGFydEphdmFTY3JpcHREZWJ1Z2dpbmcoKQotICAgIFN0b3BKYXZhU2NyaXB0RGVidWdn
aW5nKCkKLSAgICBTdGFydEphdmFTY3JpcHRQcm9maWxpbmcoKQotICAgIFN0b3BKYXZhU2NyaXB0
UHJvZmlsaW5nKCkKKworICAgIFNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShTdHJpbmcgZnJhbWVJ
ZGVudGlmaWVyKQorCiAgICAgU3RhcnRQYWdlUHJvZmlsaW5nKCkKICAgICBTdG9wUGFnZVByb2Zp
bGluZygpCiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAgICBEaXNwYXRjaE1lc3Nh
Z2VGcm9tUmVtb3RlRnJvbnRlbmQoU3RyaW5nIG1lc3NhZ2UpCi0gICAgUmVtb3RlRnJvbnRlbmRD
b25uZWN0ZWQoKQotICAgIFJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKLSNlbmRpZgorICAg
IERpZFNhdmUoU3RyaW5nIHVybCkKKyAgICBEaWRBcHBlbmQoU3RyaW5nIHVybCkKKworICAgIFNl
bmRNZXNzYWdlVG9Gcm9udGVuZChTdHJpbmcgbWVzc2FnZSkKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOTZlNTVhYS4u
ZGUxNmZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtODAsNiArODAsOCBAQAogI2luY2x1ZGUgIldlYkluc3BlY3Rvci5oIgogI2luY2x1
ZGUgIldlYkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUkuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmgiCkBAIC00NjAsNiArNDYyLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQs
ICp0aGlzKTsKQEAgLTUyMCw2ICs1MjMsNyBAQCBXZWJQYWdlOjp+V2ViUGFnZSgpCiAjZW5kaWYK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fcGFnZUlEKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cGFnZUlEKTsKICNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKQEAgLTI4ODgsMTgg
KzI4OTIsMjYgQEAgdm9pZCBXZWJQYWdlOjpkaWRGbHVzaExheWVyVHJlZUF0VGltZShzdGQ6OmNo
cm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVzdGFtcCkKIH0KICNlbmRpZgogCi0gICAgCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKIFdlYkluc3BlY3RvciogV2ViUGFnZTo6aW5zcGVjdG9yKCkKIHsKICAg
ICBpZiAobV9pc0Nsb3NlZCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIGlmICghbV9pbnNwZWN0b3IpCi0gICAgICAgIG1faW5zcGVjdG9yID0gV2ViSW5z
cGVjdG9yOjpjcmVhdGUodGhpcywgbV9pbnNwZWN0b3JDbGllbnQpOworICAgICAgICBtX2luc3Bl
Y3RvciA9IFdlYkluc3BlY3Rvcjo6Y3JlYXRlKHRoaXMpOwogICAgIHJldHVybiBtX2luc3BlY3Rv
ci5nZXQoKTsKIH0KKworV2ViSW5zcGVjdG9yVUkqIFdlYlBhZ2U6Omluc3BlY3RvclVJKCkKK3sK
KyAgICBpZiAobV9pc0Nsb3NlZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFt
X2luc3BlY3RvclVJKQorICAgICAgICBtX2luc3BlY3RvclVJID0gV2ViSW5zcGVjdG9yVUk6OmNy
ZWF0ZSh0aGlzKTsKKyAgICByZXR1cm4gbV9pbnNwZWN0b3JVSS5nZXQoKTsKK30KICNlbmRpZgot
ICAgIAorCiAjaWYgUExBVEZPUk0oSU9TKQogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciogV2Vi
UGFnZTo6dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpCiB7CkBAIC0zNDkzLDcgKzM1MDUsMTMgQEAg
dm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rp
b24sIElQQzo6TWVzc2FnZURlY29kZXIKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3RvciogaW5zcGVj
dG9yID0gdGhpcy0+aW5zcGVjdG9yKCkpCi0gICAgICAgICAgICBpbnNwZWN0b3ItPmRpZFJlY2Vp
dmVXZWJJbnNwZWN0b3JNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICAgICAg
aW5zcGVjdG9yLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewor
ICAgICAgICBpZiAoV2ViSW5zcGVjdG9yVUkqIGluc3BlY3RvclVJID0gdGhpcy0+aW5zcGVjdG9y
VUkoKSkKKyAgICAgICAgICAgIGluc3BlY3RvclVJLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYmFiYTUwNi4uYjdkNDQ4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0x
NTMsNiArMTUzLDcgQEAgY2xhc3MgV2ViRnVsbFNjcmVlbk1hbmFnZXI7CiBjbGFzcyBXZWJJbWFn
ZTsKIGNsYXNzIFdlYkluc3BlY3RvcjsKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsKK2NsYXNz
IFdlYkluc3BlY3RvclVJOwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNl
RXZlbnQ7CiBjbGFzcyBXZWJOb3RpZmljYXRpb25DbGllbnQ7CkBAIC0yMjYsOCArMjI3LDEwIEBA
IHB1YmxpYzoKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgV2ViSW5zcGVjdG9yKiBpbnNw
ZWN0b3IoKTsKKyAgICBXZWJJbnNwZWN0b3JVSSogaW5zcGVjdG9yVUkoKTsKKyAgICBib29sIGlz
SW5zcGVjdG9yUGFnZSgpIHsgcmV0dXJuICEhbV9pbnNwZWN0b3JVSTsgfQogI2VuZGlmCi0gICAg
CisKICNpZiBQTEFURk9STShJT1MpCiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciogdmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcigpOwogI2VuZGlmCkBAIC0xMTU5LDYgKzExNjIsNyBAQCBwcml2
YXRlOgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBSZWZQdHI8V2ViSW5zcGVjdG9yPiBt
X2luc3BlY3RvcjsKKyAgICBSZWZQdHI8V2ViSW5zcGVjdG9yVUk+IG1faW5zcGVjdG9yVUk7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShJT1MpCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI+IG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9yRWZsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9yVUlFZmwuY3BwCnNpbWls
YXJpdHkgaW5kZXggOTMlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9lZmwvV2ViSW5zcGVjdG9yRWZsLmNwcApyZW5hbWUgdG8gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JVSUVmbC5jcHAKaW5kZXggMmFhY2MyOS4u
MTg1N2M3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2Vm
bC9XZWJJbnNwZWN0b3JFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9lZmwvV2ViSW5zcGVjdG9yVUlFZmwuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAog
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkluc3BlY3Rvci5oIgorI2luY2x1ZGUg
IldlYkluc3BlY3RvclVJLmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCkBAIC0zMywxMiAr
MzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWJvb2wgV2ViSW5zcGVjdG9yOjpjYW5T
YXZlKCkgY29uc3QKK2Jvb2wgV2ViSW5zcGVjdG9yVUk6OmNhblNhdmUoKQogewogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotU3RyaW5nIFdlYkluc3BlY3Rvcjo6bG9jYWxpemVkU3RyaW5nc1VSTCgp
IGNvbnN0CitTdHJpbmcgV2ViSW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwoKQogewog
ICAgIHJldHVybiAiZmlsZTovLyIgKyBXZWJDb3JlOjppbnNwZWN0b3JSZXNvdXJjZVBhdGgoKSAr
ICIvbG9jYWxpemVkU3RyaW5ncy5qcyI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3Rvckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcApzaW1pbGFyaXR5
IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYkluc3BlY3Rvckd0ay5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwCmluZGV4IDVhMGVmOWUuLjQ2NDY3
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
SW5zcGVjdG9yR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcApAQCAtMjUsNyArMjUsNyBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJJbnNwZWN0b3IuaCIKKyNpbmNsdWRlICJXZWJJ
bnNwZWN0b3JVSS5oIgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIApAQCAtMzUsMTIgKzM1LDEy
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIFdlYkluc3BlY3Rvcjo6Y2FuU2F2ZSgp
IGNvbnN0Citib29sIFdlYkluc3BlY3RvclVJOjpjYW5TYXZlKCkKIHsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLVN0cmluZyBXZWJJbnNwZWN0b3I6OmxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25z
dAorU3RyaW5nIFdlYkluc3BlY3RvclVJOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkKIHsKICAgICBy
ZXR1cm4gU3RyaW5nKCJyZXNvdXJjZTovLy9vcmcvd2Via2l0Z3RrL2luc3BlY3Rvci9Mb2NhbGl6
YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMiKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yTWFjLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5t
bQpzaW1pbGFyaXR5IGluZGV4IDkyJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3Rvck1hYy5tbQpyZW5hbWUgdG8gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5tbQppbmRleCA3OTVm
NDU2Li4yYmU3NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYkluc3BlY3Rvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYkluc3BlY3RvclVJTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAog
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3IuaCIKKyNpbXBvcnQgIldl
Ykluc3BlY3RvclVJLmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCkBAIC0zNCwxMiArMzQs
MTIgQEAgU09GVF9MSU5LX1NUQUdFRF9GUkFNRVdPUksoV2ViSW5zcGVjdG9yVUksIFByaXZhdGVG
cmFtZXdvcmtzLCBBKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotYm9vbCBXZWJJbnNwZWN0b3I6
OmNhblNhdmUoKSBjb25zdAorYm9vbCBXZWJJbnNwZWN0b3JVSTo6Y2FuU2F2ZSgpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLVN0cmluZyBXZWJJbnNwZWN0b3I6OmxvY2FsaXplZFN0cmluZ3NV
UkwoKSBjb25zdAorU3RyaW5nIFdlYkluc3BlY3RvclVJOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkK
IHsKICAgICBpZiAoIW1faGFzTG9jYWxpemVkU3RyaW5nc1VSTCkgewogICAgICAgICAvLyBDYWxs
IHRoZSBzb2Z0IGxpbmsgZnJhbWV3b3JrIGZ1bmN0aW9uIHRvIGRsb3BlbiBpdCwgdGhlbiBbTlNC
dW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6XSB3aWxsIHdvcmsuCkBAIC01Miw2ICs1Miw3IEBA
IFN0cmluZyBXZWJJbnNwZWN0b3I6OmxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdAogICAgICAg
ICAgICAgbV9sb2NhbGl6ZWRTdHJpbmdzVVJMID0gU3RyaW5nKCk7CiAgICAgICAgIG1faGFzTG9j
YWxpemVkU3RyaW5nc1VSTCA9IHRydWU7CiAgICAgfQorCiAgICAgcmV0dXJuIG1fbG9jYWxpemVk
U3RyaW5nc1VSTDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238427</attachid>
            <date>2014-09-21 11:15:54 -0700</date>
            <delta_ts>2014-09-21 13:18:47 -0700</delta_ts>
            <desc>WIP (For Bots)</desc>
            <filename>WIP.patch</filename>
            <type>text/plain</type>
            <size>138868</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5ncyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpp
bmRleCAxNDExNjdlLi43N2RkNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNo
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5s
cHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCkBAIC00OSw2ICs0OSw5IEBACiAvKiBWaXNpYmxlIG5h
bWUgb2YgdGhlIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5h
bWUuICovCiAiJUAgV2ViIENvbnRlbnQiID0gIiVAIFdlYiBDb250ZW50IjsKIAorLyogVmlzaWJs
ZSBuYW1lIG9mIFdlYiBJbnNwZWN0b3IncyB3ZWIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRo
ZSBhcHBsaWNhdGlvbiBuYW1lLiAqLworIiVAIFdlYiBJbnNwZWN0b3IiID0gIiVAIFdlYiBJbnNw
ZWN0b3IiOworCiAvKiBOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0byBtYXN0
ZXIga2V5IGluIEtleWNoYWluICovCiAiJUAgV2ViQ3J5cHRvIE1hc3RlciBLZXkiID0gIiVAIFdl
YkNyeXB0byBNYXN0ZXIgS2V5IjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAxYWE4NmNmLi40
MTJiNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNzcxLDYgKzc3MSw3IEBAIF9fWk43V2Vi
Q29yZTE3U1FMaXRlVHJhbnNhY3Rpb25EMUV2CiBfX1pON1dlYkNvcmUxN1N1YnJlc291cmNlTG9h
ZGVyNmNyZWF0ZUVQTlNfNUZyYW1lRVBOU18xNENhY2hlZFJlc291cmNlRVJLTlNfMTVSZXNvdXJj
ZVJlcXVlc3RFUktOU18yMVJlc291cmNlTG9hZGVyT3B0aW9uc0UKIF9fWk43V2ViQ29yZTE3Y2Fj
aGVET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE4zSlNDOVN0cnVjdHVyZUVQ
S05TMl85Q2xhc3NJbmZvRQogX19aTjdXZWJDb3JlMTdlbmNvZGVGb3JGaWxlTmFtZUVSS04zV1RG
NlN0cmluZ0UKK19fWk43V2ViQ29yZTE3ZXhlY1N0YXRlRnJvbVBhZ2VFUk5TXzE1RE9NV3JhcHBl
cldvcmxkRVBOU180UGFnZUUKIF9fWk43V2ViQ29yZTE3bGFuZ3VhZ2VEaWRDaGFuZ2VFdgogX19a
TjdXZWJDb3JlMTdvcGVuVGVtcG9yYXJ5RmlsZUVSS04zV1RGNlN0cmluZ0VSaQogX19aTjdXZWJD
b3JlMTdzUkdCQ29sb3JTcGFjZVJlZkV2CkBAIC03OTQsNiArNzk1LDcgQEAgX19aTjdXZWJDb3Jl
MThQbGF0Zm9ybVBhc3RlYm9hcmQ4YWRkVHlwZXNFUktOM1dURjZWZWN0b3JJTlMxXzZTdHJpbmdF
TG0wRU5TMV8xNUMKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkOGdldFR5cGVzRVJO
M1dURjZWZWN0b3JJTlMxXzZTdHJpbmdFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19a
TjdXZWJDb3JlMThQbGF0Zm9ybVBhc3RlYm9hcmQ4c2V0VHlwZXNFUktOM1dURjZWZWN0b3JJTlMx
XzZTdHJpbmdFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMThQbGF0
Zm9ybVBhc3RlYm9hcmRDMUVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE4U2NyaXB0R2xv
YmFsT2JqZWN0M3NldEVQTjNKU0M5RXhlY1N0YXRlRVBLY1BOU18yMUluc3BlY3RvckZyb250ZW5k
SG9zdEUKIF9fWk43V2ViQ29yZTE4U3R5bGVTaGVldENvbnRlbnRzMTFwYXJzZVN0cmluZ0VSS04z
V1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE4U3R5bGVTaGVldENvbnRlbnRzQzFFUE5TXzE1U3R5
bGVSdWxlSW1wb3J0RVJLTjNXVEY2U3RyaW5nRVJLTlNfMTZDU1NQYXJzZXJDb250ZXh0RQogX19a
TjdXZWJDb3JlMThTdHlsZVNoZWV0Q29udGVudHNEMUV2CkBAIC0xOTI3LDcgKzE5MjksMTAgQEAg
X19aTks3V2ViQ29yZTVSYW5nZTllbmRPZmZzZXRFUmkKIF9fWk5LN1dlYkNvcmU1UmFuZ2U5Zmly
c3ROb2RlRXYKIF9fWk5LN1dlYkNvcmU1UmFuZ2U5dGV4dFF1YWRzRVJOM1dURjZWZWN0b3JJTlNf
OUZsb2F0UXVhZEVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFYlBOUzBfMjBSYW5nZUluRml4
ZWRQb3NpdGlvbkUKIF9fWk5LN1dlYkNvcmU1UmFuZ2U5dGV4dFJlY3RzRVJOM1dURjZWZWN0b3JJ
TlNfN0ludFJlY3RFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRWJQTlMwXzIwUmFuZ2VJbkZp
eGVkUG9zaXRpb25FCitfX1pOSzdXZWJDb3JlNkNocm9tZTEwd2luZG93UmVjdEV2CiBfX1pOSzdX
ZWJDb3JlNkNocm9tZTEyY3JlYXRlV2luZG93RVBOU181RnJhbWVFUktOU18xNkZyYW1lTG9hZFJl
cXVlc3RFUktOU18xNFdpbmRvd0ZlYXR1cmVzRVJLTlNfMTZOYXZpZ2F0aW9uQWN0aW9uRQorX19a
Tks3V2ViQ29yZTZDaHJvbWUxM3NldFdpbmRvd1JlY3RFUktOU185RmxvYXRSZWN0RQorX19aTks3
V2ViQ29yZTZDaHJvbWU0c2hvd0V2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjEyc2VsZWN0ZWRUZXh0
RXYKIF9fWk5LN1dlYkNvcmU2RWRpdG9yMTNjYW5FZGl0UmljaGx5RXYKIF9fWk5LN1dlYkNvcmU2
RWRpdG9yMTZjb21wb3NpdGlvblJhbmdlRXYKQEAgLTMxMjQsMTMgKzMxMjksMTggQEAgX19aTjdX
ZWJDb3JlNUNvbG9yQzFFUktOM1dURjZTdHJpbmdFCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIF9f
Wk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnkyN3Nob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbEVS
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE1SW5zcGVjdG9yQ2xpZW50MzFkb0Rpc3BhdGNo
TWVzc2FnZU9uRnJvbnRlbmRQYWdlRVBOU180UGFnZUVSS04zV1RGNlN0cmluZ0UKK19fWk43V2Vi
Q29yZTE4SW5zcGVjdG9yUGFnZUFnZW50N2ZyYW1lSWRFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29y
ZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE1Y29ubmVjdEZyb250ZW5kRVBOOUluc3BlY3RvcjI0SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsRQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVy
MThkaXNjb25uZWN0RnJvbnRlbmRFTjlJbnNwZWN0b3IyNUluc3BlY3RvckRpc2Nvbm5lY3RSZWFz
b25FCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOHNldFByb2ZpbGVyRW5hYmxl
ZEViCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNWV2YWx1YXRlRm9yVGVzdElu
RnJvbnRlbmRFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xs
ZXIyNnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50RU5TdDNfXzExMHVuaXF1ZV9wdHJJTlNfMjNJ
bnNwZWN0b3JGcm9udGVuZENsaWVudEVOUzFfMTRkZWZhdWx0X2RlbGV0ZUlTM19FRUVFCitfX1pO
N1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50
RVBOU18yM0luc3BlY3RvckZyb250ZW5kQ2xpZW50RQorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JD
b250cm9sbGVyMjdkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI0c2hvd0V2CiBfX1pON1dlYkNvcmUxOUlu
c3BlY3RvckNvbnRyb2xsZXI1Y2xvc2VFdgorX19aTjdXZWJDb3JlMjFJbnNwZWN0b3JGcm9udGVu
ZEhvc3QxNmRpc2Nvbm5lY3RDbGllbnRFdgorX19aTjdXZWJDb3JlMjFJbnNwZWN0b3JGcm9udGVu
ZEhvc3RDMUVQTlNfMjNJbnNwZWN0b3JGcm9udGVuZENsaWVudEVQTlNfNFBhZ2VFCitfX1pON1dl
YkNvcmUyMUluc3BlY3RvckZyb250ZW5kSG9zdEQxRXYKIF9fWk43V2ViQ29yZTIyaW5zdHJ1bWVu
dGF0aW9uRm9yUGFnZUVQTlNfNFBhZ2VFCiBfX1pON1dlYkNvcmUyNEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjE3c19mcm9udGVuZENvdW50ZXJFCiBfX1pON1dlYkNvcmUyNEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjI2aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2VFUE5TXzRQYWdlRQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY2
M2NmNmMuLmNjYjkyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE3NjEsNyArMTc2MSw3IEBACiAJCTRGMTUzNEUwMTFCNTMz
MDIwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3JUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxNTM0REYxMUI1MzMwMjAwMjFGRDg2IC8qIEVk
aXRpbmdCZWhhdmlvclR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNEY0RjVGRkIxMUNCRDJFMTAwQTE4NkJGIC8qIEluc3BlY3RvcldlYkZy
b250ZW5kRGlzcGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEY0RjVGRkExMUNCRDJEMjAwQTE4NkJGIC8qIEluc3BlY3RvcldlYkZyb250
ZW5kRGlzcGF0Y2hlcnMuY3BwICovOyB9OwogCQk0RjZGREQ2NDEzNDFERUREMDAxRjhFRTMgLyog
SW5zcGVjdG9yUGFnZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRGNkZERDYyMTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdl
bnQuY3BwICovOyB9OwotCQk0RjZGREQ2NTEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFn
ZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
RjZGREQ2MzEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmggKi87IH07CisJ
CTRGNkZERDY1MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNkZERDYzMTM0MURFREQw
MDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjcwN0E5OTExRUY2Nzk0MDBBQ0RBNjkgLyogSW5z
cGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNzA3QTk3MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0
b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwICovOyB9OwogCQk0RjcwN0E5QTExRUY2Nzk0MDBB
Q0RBNjkgLyogSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjcwN0E5ODExRUY2Nzk0MDBBQ0RBNjkg
LyogSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEZCMzkwQUQxNUVGNjFGMzAwN0FENTFGIC8q
IEdlbmVyYXRlZEltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRGQjM5MEFDMTVFRjYxRjMwMDdBRDUxRiAvKiBHZW5lcmF0ZWRJbWFnZS5jcHAg
Ki87IH07CkBAIC0yMzMwLDcgKzIzMzAsNyBAQAogCQk3OUYyRjVBMTEwOTE5MzlBMDAwRDg3Q0Ig
LyogQ29tcG9zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3OUYyRjU5RTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVu
dC5jcHAgKi87IH07CiAJCTc5RjJGNUEyMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUYy
RjU5RjEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5oICovOyB9OwogCQk3QTBF
NzcwRTEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NzBCMTBDMDBBODgw
MEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwICovOyB9OwotCQk3QTBFNzcwRjEw
QzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzcwQzEwQzAwQTg4MDBBMDI3NkUg
LyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggKi87IH07CisJCTdBMEU3NzBGMTBDMDBBODgwMEEw
Mjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NzBDMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0
b3JGcm9udGVuZEhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3QTBFNzcxRTEwQzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0EwRTc3MUMxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCAq
LzsgfTsKIAkJN0EwRTc3MUYxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBF
NzcxRDEwQzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCAqLzsgfTsK
IAkJN0ExRDdGQ0IxOEY4NUYwRjAwQzM4NUFEIC8qIG1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJp
bmdzLmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QTFEN0ZDOTE4Rjg1RjBGMDBDMzg1QUQgLyogbWVkaWFDb250cm9sc0xvY2FsaXplZFN0cmluZ3Mu
anMgKi87IH07CkBAIC0yMzY4LDcgKzIzNjgsNyBAQAogCQk3QUIwQjFDMTEyMTFBNjIyMDBBNzY5
NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0FCMEIxQkYxMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuaCAqLzsgfTsKIAkJN0FDRDg4RDMxNEMwOEJENjAwODRFREQyIC8qIElu
c3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBQ0Q4OEQxMTRDMDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAgKi87IH07CiAJCTdBQ0Q4OEQ0MTRDMDhCRDYwMDg0RUREMiAvKiBJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0FDRDg4RDIxNEMwOEJENjAwODRFREQyIC8qIEluc3BlY3RvckluZGV4ZWRE
QkFnZW50LmggKi87IH07Ci0JCTdBREU3MjI2MTBDQkJCOUIwMDZCM0IzQSAvKiBDb250ZXh0TWVu
dVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QURFNzIyNTEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5oICovOyB9
OworCQk3QURFNzIyNjEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FERTcyMjUxMENC
QkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QUY5QjIwMjE4Q0ZCMkRGMDBDNjRCRUYg
LyogVlRUUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBRjlCMUZDMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uY3BwICovOyB9Owog
CQk3QUY5QjIwMzE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFGRDE4Q0ZCMkRGMDBDNjRCRUYg
LyogVlRUUmVnaW9uLmggKi87IH07CiAJCTdBRjlCMjA1MThDRkIyREYwMEM2NEJFRiAvKiBWVFRS
ZWdpb25MaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBRjlCMUZGMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb25MaXN0LmNwcCAqLzsgfTsK
QEAgLTU1MjYsNyArNTUyNiw3IEBACiAJCUM1NUM3QkExMTcxOEFGQkEwMDEzMjdFNCAvKiBSZW5k
ZXJUaGVtZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM1NUM3QkEwMTcxOEFGQkEwMDEzMjdFNCAvKiBSZW5kZXJUaGVtZUlPUy5tbSAqLzsgfTsK
IAkJQzU1RTM4QkYxMDA0MEQ1RDAwQTU2QkRCIC8qIFN0b3JhZ2VOYW1lc3BhY2VJbXBsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTVFMzhCQjEwMDQw
RDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuaCAqLzsgfTsKIAkJQzU1RTM4QzAx
MDA0MEQ1RDAwQTU2QkRCIC8qIFN0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NUUzOEJDMTAwNDBENUQwMEE1NkJE
QiAvKiBTdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgKi87IH07Ci0JCUM1NjRGQTc4MTlDOEQ4NUMw
MDQ4OENBQyAvKiBIVE1MQ29udmVydGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDNTY0RkE3NjE5QzhEODVDMDA0ODhDQUMgLyogSFRNTENvbnZlcnRl
ci5oICovOyB9OworCQlDNTY0RkE3ODE5QzhEODVDMDA0ODhDQUMgLyogSFRNTENvbnZlcnRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU2NEZBNzYx
OUM4RDg1QzAwNDg4Q0FDIC8qIEhUTUxDb252ZXJ0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTY0RkE3OTE5QzhEODVDMDA0ODhDQUMgLyog
SFRNTENvbnZlcnRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM1NjRGQTc3MTlDOEQ4NUMwMDQ4OENBQyAvKiBIVE1MQ29udmVydGVyLm1tICovOyB9
OwogCQlDNTcyRUUxRjEyMDFDOUJDMDA3RDhGODIgLyogSlNJREJJbmRleC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU3MkVFMUQxMjAxQzlCQzAwN0Q4
RjgyIC8qIEpTSURCSW5kZXguaCAqLzsgfTsKIAkJQzU3RkVERTExMjEyRUU5QzAwOTdCRTY1IC8q
IEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzU3RkVERTAxMjEyRUU5QzAwOTdCRTY1IC8qIEZpbGVTeXN0ZW0uY3BwICovOyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaAppbmRl
eCA4YWEwNTViLi45MmJmMjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRHbG9iYWxPYmplY3QuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBTY3JpcHRHbG9iYWxP
YmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0gICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgY2hhciogbmFtZSwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Kik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0Kik7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBib29sIGdldChKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKaW5kZXggOGE4MmNhYi4u
N2UyNmFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3Rh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBAIC01
OCw3ICs1OCw3IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkV4ZWNTdGF0ZSogbWFpbldv
cmxkRXhlY1N0YXRlKEZyYW1lKik7CiAKIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tTm9k
ZShET01XcmFwcGVyV29ybGQmLCBOb2RlKik7Ci1KU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJv
bVBhZ2UoRE9NV3JhcHBlcldvcmxkJiwgUGFnZSopOworV0VCQ09SRV9FWFBPUlQgSlNDOjpFeGVj
U3RhdGUqIGV4ZWNTdGF0ZUZyb21QYWdlKERPTVdyYXBwZXJXb3JsZCYsIFBhZ2UqKTsKIEpTQzo6
RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2Nv
cGUqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGM3Yzg3OTUuLjIwNDI1MTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
QEAgLTg2LDYgKzg2LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxl
cihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICAsIG1faW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKG51bGxwdHIpCiAgICAgLCBtX3BhZ2UocGFnZSkKICAgICAsIG1f
aW5zcGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKKyAgICAsIG1faW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQobnVsbHB0cikKICAgICAsIG1faXNVbmRlclRlc3QoZmFsc2UpCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCiAgICAgLCBtX2hhc1JlbW90ZUZyb250ZW5kKGZhbHNlKQpAQCAt
MTg4LDkgKzE4OSw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURl
c3Ryb3llZCgpCiAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBudWxscHRyOwogfQogCi12b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpCit2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50KiBpbnNwZWN0b3JGcm9udGVuZENsaWVudCkKIHsKLSAgICBtX2lu
c3BlY3RvckZyb250ZW5kQ2xpZW50ID0gV1RGOjptb3ZlKGluc3BlY3RvckZyb250ZW5kQ2xpZW50
KTsKKyAgICBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50ID0gaW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ7CiB9CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzTG9jYWxGcm9udGVuZCgpIGNv
bnN0CkBAIC0yMTMsNyArMjE0LDcgQEAgYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNSZW1v
dGVGcm9udGVuZCgpIGNvbnN0CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2luc3BlY3RvckZyb250
ZW5kQ2xpZW50LmdldCgpOworICAgIHJldHVybiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50Owog
fQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3Js
ZChGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCkBAIC0yODMsOCArMjg0LDcg
QEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KCkKICAgICBpZiAobV9pbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwpCiAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5icmluZ0Zyb250ZW5k
VG9Gcm9udCgpOwogICAgIGVsc2UgewotICAgICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9yRnJvbnRl
bmQodGhpcyk7Ci0gICAgICAgIGlmIChmcm9udGVuZENoYW5uZWwpCisgICAgICAgIGlmIChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50
LT5vcGVuSW5zcGVjdG9yRnJvbnRlbmQodGhpcykpCiAgICAgICAgICAgICBjb25uZWN0RnJvbnRl
bmQoZnJvbnRlbmRDaGFubmVsKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBmZDU1OTI0Li4zMGQzY2M3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTgzLDcg
KzgzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvdygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2xvc2UoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250ZW5k
Q2xpZW50Pik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbnNwZWN0b3JGcm9udGVuZENs
aWVudChJbnNwZWN0b3JGcm9udGVuZENsaWVudCopOwogICAgIGJvb2wgaGFzSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQoKSBjb25zdDsKICAgICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3Js
ZChGcmFtZSosIERPTVdyYXBwZXJXb3JsZCYpOwogCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVzdW1lKCk7CiAKICAgICBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNs
aWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yQ2xpZW50OyB9Ci0gICAgSW5zcGVjdG9y
UGFnZUFnZW50KiBwYWdlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VBZ2VudDsgfQorICAg
IFdFQkNPUkVfRVhQT1JUIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9wYWdlQWdlbnQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBkZXZlbG9wZXJFeHRyYXNF
bmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNhbkFjY2Vzc0luc3Bl
Y3RlZFNjcmlwdFN0YXRlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xNDYs
MTAgKzE0NiwxMCBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIG1fdGlt
ZWxpbmVBZ2VudDsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyPiBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudDsKICAg
ICBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWw7CiAgICAgUGFnZSYgbV9wYWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9pbnNw
ZWN0b3JDbGllbnQ7CisgICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1faW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ7CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1fYWdl
bnRzOwogICAgIFZlY3RvcjxJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUsIDI+IG1faW5q
ZWN0ZWRTY3JpcHRJbnN0cnVtZW50YXRpb25Db29raWVzOwogICAgIGJvb2wgbV9pc1VuZGVyVGVz
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
aAppbmRleCA4ZThjZDg1Li4xYTc0ZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JGcm9udGVuZEhvc3QoY2xpZW50LCBm
cm9udGVuZFBhZ2UpKTsKICAgICB9CiAKLSAgICB+SW5zcGVjdG9yRnJvbnRlbmRIb3N0KCk7Ci0g
ICAgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgfkluc3BlY3Rv
ckZyb250ZW5kSG9zdCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzY29ubmVjdENsaWVu
dCgpOwogCiAgICAgdm9pZCBsb2FkZWQoKTsKICAgICB2b2lkIHJlcXVlc3RTZXREb2NrU2lkZShj
b25zdCBTdHJpbmcmKTsKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKICAgICBmcmllbmQgY2xhc3MgRnJvbnRlbmRNZW51UHJvdmlkZXI7CiAjZW5k
aWYKLSAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqLCBQ
YWdlKiBmcm9udGVuZFBhZ2UpOworICAgIFdFQkNPUkVfRVhQT1JUIEluc3BlY3RvckZyb250ZW5k
SG9zdChJbnNwZWN0b3JGcm9udGVuZENsaWVudCosIFBhZ2UqIGZyb250ZW5kUGFnZSk7CiAKICAg
ICBJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9jbGllbnQ7CiAgICAgUGFnZSogbV9mcm9udGVu
ZFBhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgK
aW5kZXggMTEwNjcwZS4uMjVmZTFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtMTU1LDcgKzE1NSw3IEBAIHB1YmxpYzoKICAgICBGcmFt
ZSogbWFpbkZyYW1lKCk7CiAgICAgU3RyaW5nIGNyZWF0ZUlkZW50aWZpZXIoKTsKICAgICBGcmFt
ZSogZnJhbWVGb3JJZChjb25zdCBTdHJpbmcmIGZyYW1lSWQpOwotICAgIFN0cmluZyBmcmFtZUlk
KEZyYW1lKik7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZyYW1lSWQoRnJhbWUqKTsKICAg
ICBib29sIGhhc0lkRm9yRnJhbWUoRnJhbWUqKSBjb25zdDsKICAgICBTdHJpbmcgbG9hZGVySWQo
RG9jdW1lbnRMb2FkZXIqKTsKICAgICBGcmFtZSogZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2lu
KGNvbnN0IFN0cmluZyYgb3JpZ2luUmF3U3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IGZj
YTdmOTAuLjNlNGY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtMTAyLDggKzEwMiw4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChGcmFtZSosIGNvbnN0IEludFNp
emUmKSBjb25zdDsKIAotICAgIHZvaWQgc2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKSBj
b25zdDsKLSAgICBGbG9hdFJlY3Qgd2luZG93UmVjdCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBGbG9hdFJlY3Qgd2luZG93UmVjdCgpIGNvbnN0OwogCiAgICAgRmxvYXRSZWN0
IHBhZ2VSZWN0KCkgY29uc3Q7CiAKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBmb2N1c2VkRnJhbWVDaGFuZ2VkKEZyYW1lKikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29u
c3QgV2luZG93RmVhdHVyZXMmLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikgY29uc3Q7Ci0gICAg
dm9pZCBzaG93KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93KCkgY29uc3Q7
CiAKICAgICBib29sIGNhblJ1bk1vZGFsKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5SdW5Nb2RhbE5v
dygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDBhMDI2N2Eu
LjU5ZTcxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE0NzEsMTIg
KzE0NzEsMTAgQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IEludGVybmFsczo6b3BlbkR1bW15SW5z
cGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgUGFnZSogZnJvbnRlbmRQYWdl
ID0gbV9mcm9udGVuZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgpOwogICAgIEFTU0VSVChmcm9u
dGVuZFBhZ2UpOwogCi0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teT4oJnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KSwgZnJvbnRlbmRQYWdlKTsKLQotICAgIGZyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9udGVuZENsaWVudCkp
OwotCi0gICAgbV9mcm9udGVuZENoYW5uZWwgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsRHVtbXkoZnJvbnRlbmRQYWdlKSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teT4oJnBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRQYWdlKTsKKyAgICBmcm9udGVuZFBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2Zyb250ZW5kQ2xp
ZW50LmdldCgpKTsKIAorICAgIG1fZnJvbnRlbmRDaGFubmVsID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teT4oZnJvbnRlbmRQYWdlKTsKICAgICBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmRDaGFubmVsLmdl
dCgpKTsKIAogICAgIHJldHVybiBtX2Zyb250ZW5kV2luZG93OwpAQCAtMTQ5MCwxMCArMTQ4OCwx
MSBAQCB2b2lkIEludGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKCkKIAogICAg
IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9y
RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKIAotICAgIG1fZnJvbnRlbmRD
aGFubmVsLnJlbGVhc2UoKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbnVsbHB0cjsKKyAgICBt
X2Zyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7CiAKICAgICBtX2Zyb250ZW5kV2luZG93LT5jbG9z
ZShtX2Zyb250ZW5kV2luZG93LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIG1fZnJv
bnRlbmRXaW5kb3cucmVsZWFzZSgpOworICAgIG1fZnJvbnRlbmRXaW5kb3cuY2xlYXIoKTsKIH0K
IAogdm9pZCBJbnRlcm5hbHM6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRl
eCAzZmY5YTdmLi42Y2M3ZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTUw
LDYgKzUwLDcgQEAgY2xhc3MgRG9jdW1lbnRNYXJrZXI7CiBjbGFzcyBFbGVtZW50OwogY2xhc3Mg
RnJhbWU7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teTsKK2NsYXNzIEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50RHVtbXk7CiBjbGFzcyBJbnRlcm5hbFNldHRpbmdzOwogY2xhc3Mg
TWFsbG9jU3RhdGlzdGljczsKIGNsYXNzIE1lbW9yeUluZm87CkBAIC0zNTAsNyArMzUxLDggQEAg
cHJpdmF0ZToKICAgICBEb2N1bWVudE1hcmtlciogbWFya2VyQXQoTm9kZSosIGNvbnN0IFN0cmlu
ZyYgbWFya2VyVHlwZSwgdW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogICAgIFJlZlB0cjxET01XaW5kb3c+IG1fZnJvbnRlbmRXaW5kb3c7Ci0g
ICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbER1bW15PiBtX2Zyb250ZW5kQ2hhbm5l
bDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teT4gbV9m
cm9udGVuZENsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsRHVtbXk+IG1fZnJvbnRlbmRDaGFubmVsOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJp
bmdzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9j
YWxpemVkU3RyaW5ncy5qcwppbmRleCA2NDhmNWUyLi44ZmViMzQ4IDEwMDY0NApCaW5hcnkgZmls
ZXMgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6
ZWRTdHJpbmdzLmpzIGFuZCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2Vu
Lmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgZGlmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKaW5kZXggZWQ4ZTJhMC4uYjcyYWYyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWlu
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5q
cwpAQCAtNDksMTAgKzQ5LDcgQEAgV2ViSW5zcGVjdG9yLlR5cGVJZGVudGlmaWVyQ29va2llS2V5
ID0gInJlcHJlc2VudGVkLW9iamVjdC10eXBlIjsKIAogV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1
bmN0aW9uKCkKIHsKLSAgICAvLyBUZWxsIHRoZSBJbnNwZWN0b3JGcm9udGVuZEhvc3Qgd2UgbG9h
ZGVkIGZpcnN0IHRvIGVzdGFibGlzaCBjb21tdW5pY2F0aW9uIHdpdGggSW5zcGVjdG9yQmFja2Vu
ZC4KLSAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZGVkKCk7Ci0KLSAgICAvLyBJbml0aWFs
aXplIFdlYlNvY2tldCB0byBjb21tdW5pY2F0aW9uCisgICAgLy8gSW5pdGlhbGl6ZSBXZWJTb2Nr
ZXQgdG8gY29tbXVuaWNhdGlvbi4KICAgICB0aGlzLl9pbml0aWFsaXplV2ViU29ja2V0SWZOZWVk
ZWQoKTsKIAogICAgIC8vIFJlZ2lzdGVyIG9ic2VydmVycyBmb3IgZXZlbnRzIGZyb20gdGhlIElu
c3BlY3RvckJhY2tlbmQuCkBAIC0zMjgsMTAgKzMyNSwxMSBAQCBXZWJJbnNwZWN0b3IuY29udGVu
dExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICBpZiAodGhpcy5fZGV0YWlsc1NpZGViYXJXaWR0aFNl
dHRpbmcudmFsdWUpCiAgICAgICAgIHRoaXMuZGV0YWlsc1NpZGViYXIud2lkdGggPSB0aGlzLl9k
ZXRhaWxzU2lkZWJhcldpZHRoU2V0dGluZy52YWx1ZTsKIAotICAgIC8vIFVwZGF0ZSB0aGUgZG9j
a2VkIHN0YXRlIGJhc2VkIG9uIHRoZSBxdWVyeSBzdHJpbmcgcGFzc2VkIHdoZW4gdGhlIFdlYiBJ
bnNwZWN0b3Igd2FzIGxvYWRlZC4KLSAgICB0aGlzLnVwZGF0ZURvY2tlZFN0YXRlKHBhcnNlTG9j
YXRpb25RdWVyeVBhcmFtZXRlcnMoKS5kb2NrU2lkZSB8fCAidW5kb2NrZWQiKTsKKyAgICAvLyBU
ZWxsIHRoZSBJbnNwZWN0b3JGcm9udGVuZEhvc3Qgd2UgbG9hZGVkLCB3aGljaCBjYXVzZXMgdGhl
IHdpbmRvdyB0byBkaXNwbGF5CisgICAgLy8gYW5kIHBlbmRpbmcgSW5zcGVjdG9yRnJvbnRlbmRB
UEkgY29tbWFuZHMgdG8gYmUgc2VudC4KKyAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZGVk
KCk7CiAKLSAgICAvLyBUZWxsIHRoZSBmcm9udGVuZCBBUEkgd2UgYXJlIGxvYWRlZCBzbyBhbnkg
cGVuZGluZyBmcm9udGVuZCBjb21tYW5kcyBjYW4gYmUgZGlzcGF0Y2hlZC4KKyAgICAvLyBTaWdu
YWwgdGhhdCB0aGUgZnJvbnRlbmQgaXMgbm93IHJlYWR5IHRvIHJlY2VpdmUgbWVzc2FnZXMuCiAg
ICAgSW5zcGVjdG9yRnJvbnRlbmRBUEkubG9hZENvbXBsZXRlZCgpOwogCiAgICAgLy8gU2V0IGNv
bGxhcHNlZCBhZnRlciBsb2FkaW5nIHRoZSBwZW5kaW5nIGZyb250ZW5kIGNvbW1hbmRzIGFyZSBk
aXNwYXRjaGVkIHNvIG9ubHkgdGhlIGZpbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1Rlc3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9CYXNlL1Rlc3QuanMKaW5kZXggNzQyMDc1YS4uMDEyMTZjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9UZXN0LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVGVzdC5qcwpAQCAt
NTUsMTMgKzU1LDE0IEBAIFdlYkluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiAKICAgICAv
LyBQZXJmb3JtIG9uZS10aW1lIHRhc2tzLgogICAgIFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9u
cy5yZXF1ZXN0Q1NTTmFtZUNvbXBsZXRpb25zKCk7Ci0KLSAgICAvLyBFc3RhYmxpc2ggY29tbXVu
aWNhdGlvbiB3aXRoIHRoZSBJbnNwZWN0b3JCYWNrZW5kLgotICAgIEluc3BlY3RvckZyb250ZW5k
SG9zdC5sb2FkZWQoKTsKIH0KIAogV2ViSW5zcGVjdG9yLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlv
bigpCiB7CisgICAgLy8gVGVsbCB0aGUgSW5zcGVjdG9yRnJvbnRlbmRIb3N0IHdlIGxvYWRlZCwg
d2hpY2ggY2F1c2VzIHRoZSB3aW5kb3cgdG8gZGlzcGxheQorICAgIC8vIGFuZCBwZW5kaW5nIElu
c3BlY3RvckZyb250ZW5kQVBJIGNvbW1hbmRzIHRvIGJlIHNlbnQuCisgICAgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmxvYWRlZCgpOworCiAgICAgLy8gU2lnbmFsIHRoYXQgdGhlIGZyb250ZW5kIGlz
IG5vdyByZWFkeSB0byByZWNlaXZlIG1lc3NhZ2VzLgogICAgIEluc3BlY3RvckZyb250ZW5kQVBJ
LmxvYWRDb21wbGV0ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEku
anMKaW5kZXggMTIyNzIxMS4uN2I4ZGViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJv
bnRlbmRBUEkuanMKQEAgLTI1LDI4ICsyNSwxNiBAQAogCiBJbnNwZWN0b3JGcm9udGVuZEFQSSA9
IHsKICAgICBfbG9hZGVkOiBmYWxzZSwKLQogICAgIF9wZW5kaW5nQ29tbWFuZHM6IFtdLAogCiAg
ICAgc2F2ZWRVUkw6IGZ1bmN0aW9uKHVybCkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBOb3Qg
aW1wbGVtZW50ZWQuCisgICAgICAgIC8vIE5vdCB1c2VkIHlldC4KICAgICB9LAogCiAgICAgYXBw
ZW5kZWRUb1VSTDogZnVuY3Rpb24odXJsKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IE5vdCBp
bXBsZW1lbnRlZC4KLSAgICB9LAotCi0gICAgaXNEZWJ1Z2dpbmdFbmFibGVkOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfSwKLQotICAgIHNldERlYnVnZ2luZ0VuYWJsZWQ6IGZ1bmN0aW9uKGVu
YWJsZWQpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorICAgICAg
ICAvLyBOb3QgdXNlZCB5ZXQuCiAgICAgfSwKIAogICAgIGlzVGltZWxpbmVQcm9maWxpbmdFbmFi
bGVkOiBmdW5jdGlvbigpCkBAIC0xMDgsMTEgKzk2LDYgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkg
PSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93U291cmNl
Q29kZUZvckZyYW1lKGZyYW1lSWRlbnRpZmllciwgdHJ1ZSk7CiAgICAgfSwKIAotICAgIHNldERv
Y2tpbmdVbmF2YWlsYWJsZTogZnVuY3Rpb24odW5hdmFpbGFibGUpCi0gICAgewotICAgICAgICAv
LyBOb3QgdXNlZC4KLSAgICB9LAotCiAgICAgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQ6IGZ1bmN0
aW9uKGlkKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnRleHRNZW51SXRlbVNlbGVj
dGVkKGlkKTsKQEAgLTE0MSw2ICsxMjQsMTAgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAg
ICAgICAgIH0KIAogICAgICAgICB2YXIgbWV0aG9kTmFtZSA9IHNpZ25hdHVyZS5zaGlmdCgpOwor
ICAgICAgICBjb25zb2xlLmFzc2VydChJbnNwZWN0b3JGcm9udGVuZEFQSVttZXRob2ROYW1lXSwg
IlVuZXhwZWN0ZWQgSW5zcGVjdG9yRnJvbnRlbmRBUEkgbWV0aG9kIG5hbWU6ICIgKyBJbnNwZWN0
b3JGcm9udGVuZEFQSVttZXRob2ROYW1lXSk7CisgICAgICAgIGlmICghSW5zcGVjdG9yRnJvbnRl
bmRBUElbbWV0aG9kTmFtZV0pCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgcmV0dXJu
IEluc3BlY3RvckZyb250ZW5kQVBJW21ldGhvZE5hbWVdLmFwcGx5KEluc3BlY3RvckZyb250ZW5k
QVBJLCBzaWduYXR1cmUpOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9z
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbQppbmRleCBkMzBkOGI5
Li45OGRjYWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tCkBAIC00Niw3ICs0Niw2IEBAIFdlYkluc3Bl
Y3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgOiBt
X3dlYlZpZXcod2ViVmlldykKICAgICAsIG1faGlnaGxpZ2h0ZXIoYWRvcHROUyhbW1dlYk5vZGVI
aWdobGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3OndlYlZpZXddKSkKICAg
ICAsIG1fZnJvbnRlbmRQYWdlKDApCi0gICAgLCBtX2Zyb250ZW5kQ2xpZW50KDApCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmgKaW5kZXggNDg1NjgzNi4uODk4NzdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTEwMCw3ICsx
MDAsNyBAQCBwcml2YXRlOgogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKICAgICBSZXRhaW5QdHI8
V2ViTm9kZUhpZ2hsaWdodGVyPiBtX2hpZ2hsaWdodGVyOwogICAgIFdlYkNvcmU6OlBhZ2UqIG1f
ZnJvbnRlbmRQYWdlOwotICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2Zyb250ZW5k
Q2xpZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4g
bV9mcm9udGVuZENsaWVudDsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDZlMTc4OWQuLjgzMDhi
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW0KQEAgLTEzMyw4ICsxMzMsNyBAQCBAZW5kCiBXZWJJbnNwZWN0b3JD
bGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQogICAgIDogbV93ZWJW
aWV3KHdlYlZpZXcpCiAgICAgLCBtX2hpZ2hsaWdodGVyKGFkb3B0TlMoW1tXZWJOb2RlSGlnaGxp
Z2h0ZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzp3ZWJWaWV3XSkpCi0gICAgLCBt
X2Zyb250ZW5kUGFnZSgwKQotICAgICwgbV9mcm9udGVuZENsaWVudCgwKQorICAgICwgbV9mcm9u
dGVuZFBhZ2UobnVsbHB0cikKIHsKIH0KIApAQCAtMTUwLDExICsxNDksMTMgQEAgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVu
ZChJbnNwZWN0b3JDb24KICAgICBbd2luZG93Q29udHJvbGxlci5nZXQoKSBzZXRJbnNwZWN0b3JD
bGllbnQ6dGhpc107CiAKICAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xs
ZXIuZ2V0KCkgd2ViVmlld10pOwotICAgIGF1dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX3dlYlZpZXcsIHdpbmRvd0NvbnRy
b2xsZXIuZ2V0KCksIGluc3BlY3RvckNvbnRyb2xsZXIsIG1fZnJvbnRlbmRQYWdlLCBjcmVhdGVG
cm9udGVuZFNldHRpbmdzKCkpOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBmcm9udGVuZENsaWVu
dC5nZXQoKTsKLSAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yRnJvbnRlbmQ+IHdlYkluc3BlY3Rv
ckZyb250ZW5kID0gYWRvcHROUyhbW1dlYkluc3BlY3RvckZyb250ZW5kIGFsbG9jXSBpbml0V2l0
aEZyb250ZW5kQ2xpZW50OmZyb250ZW5kQ2xpZW50LmdldCgpXSk7CisgICAgbV9mcm9udGVuZENs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fd2Vi
Vmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdG9yQ29udHJvbGxlciwgbV9mcm9u
dGVuZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CisKKyAgICBSZXRhaW5QdHI8V2Vi
SW5zcGVjdG9yRnJvbnRlbmQ+IHdlYkluc3BlY3RvckZyb250ZW5kID0gYWRvcHROUyhbW1dlYklu
c3BlY3RvckZyb250ZW5kIGFsbG9jXSBpbml0V2l0aEZyb250ZW5kQ2xpZW50Om1fZnJvbnRlbmRD
bGllbnQuZ2V0KCldKTsKICAgICBbW21fd2ViVmlldyBpbnNwZWN0b3JdIHNldEZyb250ZW5kOndl
Ykluc3BlY3RvckZyb250ZW5kLmdldCgpXTsKLSAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9udGVu
ZENsaWVudCkpOworCisgICAgbV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5z
ZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsKKwogICAg
IHJldHVybiB0aGlzOwogfQogCkBAIC0xOTksOCArMjAwLDggQEAgdm9pZCBXZWJJbnNwZWN0b3JD
bGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKQogCiB2b2lkIFdlYklu
c3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5kKCkKIHsKLSAgICBtX2Zyb250ZW5kQ2xpZW50
ID0gMDsKLSAgICBtX2Zyb250ZW5kUGFnZSA9IDA7CisgICAgbV9mcm9udGVuZENsaWVudCA9IG51
bGxwdHI7CisgICAgbV9mcm9udGVuZFBhZ2UgPSBudWxscHRyOwogfQogCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
CmluZGV4IDNmMzZkZWYuLjdmMjJiYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTcxLDkgKzE3MSw4
IEBAIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50
OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgbV9m
cm9udGVuZFBhZ2UgPSBjb3JlKGZyb250ZW5kV2ViVmlldy5nZXQoKSk7Ci0gICAgYXV0byBmcm9u
dGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+
KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0ZWRXZWJWaWV3SGFuZGxlLCBmcm9udGVuZEh3
bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhpcywgY3JlYXRlRnJv
bnRlbmRTZXR0aW5ncygpKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQu
Z2V0KCk7Ci0gICAgbV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNw
ZWN0b3JGcm9udGVuZENsaWVudChXVEY6Om1vdmUoZnJvbnRlbmRDbGllbnQpKTsKKyAgICBtX2Zy
b250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dD4obV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3BlY3RlZFdlYlZpZXdIYW5kbGUsIGZyb250ZW5k
SHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlzLCBjcmVhdGVG
cm9udGVuZFNldHRpbmdzKCkpOworICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV9mcm9udGVuZENsaWVudC5nZXQoKSk7
CiAgICAgbV9mcm9udGVuZEhhbmRsZSA9IGZyb250ZW5kSHduZDsKICAgICByZXR1cm4gdGhpczsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmgKaW5kZXggYjMxZGQ4OS4uNDdmYmVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTc1LDcg
Kzc1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZWxlYXNlRnJvbnRlbmQoKTsKIAotICAgIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBmcm9udGVuZENsaWVudCgpIHsgcmV0dXJuIG1fZnJv
bnRlbmRDbGllbnQ7IH0KKyAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogZnJvbnRlbmRD
bGllbnQoKSB7IHJldHVybiBtX2Zyb250ZW5kQ2xpZW50LmdldCgpOyB9CiAKICAgICB2b2lkIHVw
ZGF0ZUhpZ2hsaWdodCgpOwogCkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJW
aWV3KiBtX2luc3BlY3RlZFdlYlZpZXc7CiAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBh
Z2U7Ci0gICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1fZnJvbnRlbmRDbGllbnQ7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2Zyb250ZW5k
Q2xpZW50OwogICAgIEhXTkQgbV9pbnNwZWN0ZWRXZWJWaWV3SGFuZGxlOwogICAgIEhXTkQgbV9m
cm9udGVuZEhhbmRsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCA0ZjM5MjNkLi42YmRjNTlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtNTMwLDcgKzUzMCw2IEBAIHNldChXZWJLaXQyX1NP
VVJDRVMKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
Ci0gICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVu
dC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5jcHAK
QEAgLTU1Miw2ICs1NTEsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVyLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorICAgIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNw
cApAQCAtNjQ1LDYgKzY0NSw3IEBAIHNldChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgogICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5tZXNzYWdlcy5pbgogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
R3JvdXBQcm94eS5tZXNzYWdlcy5pbgogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5k
ZXggZWFlZjUxNi4uY2EwNmEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0x
MjEsNiArMTIxLDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgV2ViSWNvbkRhdGFiYXNl
UHJveHkgXAogICAgIFdlYkluc3BlY3RvciBcCiAgICAgV2ViSW5zcGVjdG9yUHJveHkgXAorICAg
IFdlYkluc3BlY3RvclVJIFwKICAgICBXZWJNZWRpYUNhY2hlTWFuYWdlciBcCiAgICAgV2ViTWVk
aWFDYWNoZU1hbmFnZXJQcm94eSBcCiAgICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlciBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDAxZTM0ZWEuLmYwN2ZiNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtRWZsLmNtYWtlCkBAIC0xOTQsNyArMTk0LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VS
Q0VTCiAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvYXRrL1dlYlBhZ2VBY2Nlc3NpYmlsaXR5T2Jq
ZWN0QXRrLmNwcAogCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JFZmwu
Y3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JVSUVmbC5jcHAKICAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCiAKICAgICBXZWJQcm9jZXNz
L2VmbC9TZWNjb21wRmlsdGVyc1dlYlByb2Nlc3NFZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNt
YWtlCmluZGV4IDcyZGE3YmIuLjAzOGM4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBA
IC0zMDIsNyArMzAyLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9QcmludGVyTGlzdEd0ay5jcHAKLSAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1dlYkluc3BlY3Rvckd0ay5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3Bl
Y3RvclVJR3RrLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAK
ICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggNmRmNDkxOC4uOTIyZTZkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElPYmplY3QuaApAQCAtMTQzLDYgKzE0Myw3IEBAIHB1YmxpYzoKICAgICAgICAg
QnVuZGxlRnJhbWUsCiAgICAgICAgIEJ1bmRsZUhpdFRlc3RSZXN1bHQsCiAgICAgICAgIEJ1bmRs
ZUluc3BlY3RvciwKKyAgICAgICAgQnVuZGxlSW5zcGVjdG9yVUksCiAgICAgICAgIEJ1bmRsZU5h
dmlnYXRpb25BY3Rpb24sCiAgICAgICAgIEJ1bmRsZU5vZGVIYW5kbGUsCiAgICAgICAgIEJ1bmRs
ZVBhZ2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxp
dGllcy9tYWMvTGVnYWN5UHJvY2Vzcy9DaGlsZFByb2Nlc3NFbnRyeVBvaW50Lm1tIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL0xlZ2FjeVByb2Nlc3MvQ2hp
bGRQcm9jZXNzRW50cnlQb2ludC5tbQppbmRleCAxM2YzMDZlLi5kOTVjZWZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvTGVnYWN5UHJv
Y2Vzcy9DaGlsZFByb2Nlc3NFbnRyeVBvaW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9MZWdhY3lQcm9jZXNzL0NoaWxkUHJvY2Vzc0VudHJ5
UG9pbnQubW0KQEAgLTg4LDggKzg4LDExIEBAIGJvb2wgQ2hpbGRQcm9jZXNzTWFpbkRlbGVnYXRl
OjpnZXRDbGllbnRQcm9jZXNzTmFtZShTdHJpbmcmIGNsaWVudFByb2Nlc3NOYW1lKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIENoaWxkUHJvY2Vzc01haW5EZWxlZ2F0ZTo6Z2V0RXh0cmFJ
bml0aWFsaXphdGlvbkRhdGEoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKQorYm9vbCBDaGlsZFBy
b2Nlc3NNYWluRGVsZWdhdGU6OmdldEV4dHJhSW5pdGlhbGl6YXRpb25EYXRhKEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+JiBleHRyYUluaXRpYWxpemF0aW9uRGF0YSkKIHsKKyAgICBTdHJpbmcgaW5z
cGVjdG9yUHJvY2VzcyA9IG1fY29tbWFuZExpbmVbImluc3BlY3Rvci1wcm9jZXNzIl07CisgICAg
aWYgKCFpbnNwZWN0b3JQcm9jZXNzLmlzRW1wdHkoKSkKKyAgICAgICAgZXh0cmFJbml0aWFsaXph
dGlvbkRhdGEuYWRkKEFTQ0lJTGl0ZXJhbCgiaW5zcGVjdG9yLXByb2Nlc3MiKSwgaW5zcGVjdG9y
UHJvY2Vzcyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VF
bnRyeVBvaW50Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMv
bWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0KaW5kZXggMTY5N2VlOS4uMzY1
ZWE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRp
ZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0KKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2Vydmlj
ZUVudHJ5UG9pbnQubW0KQEAgLTkyLDggKzkyLDE0IEBAIGJvb2wgWFBDU2VydmljZUluaXRpYWxp
emVyRGVsZWdhdGU6OmdldENsaWVudFByb2Nlc3NOYW1lKFN0cmluZyYgY2xpZW50UHJvY2Vzc05h
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdh
dGU6OmdldEV4dHJhSW5pdGlhbGl6YXRpb25EYXRhKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JikK
K2Jvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldEV4dHJhSW5pdGlhbGl6YXRp
b25EYXRhKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBleHRyYUluaXRpYWxpemF0aW9uRGF0YSkK
IHsKKyAgICB4cGNfb2JqZWN0X3QgZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0ID0g
eHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAiZXh0cmEtaW5p
dGlhbGl6YXRpb24tZGF0YSIpOworCisgICAgU3RyaW5nIGluc3BlY3RvclByb2Nlc3MgPSB4cGNf
ZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCwg
Imluc3BlY3Rvci1wcm9jZXNzIik7CisgICAgaWYgKCFpbnNwZWN0b3JQcm9jZXNzLmlzRW1wdHko
KSkKKyAgICAgICAgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKEFTQ0lJTGl0ZXJhbCgiaW5z
cGVjdG9yLXByb2Nlc3MiKSwgaW5zcGVjdG9yUHJvY2Vzcyk7CisKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVj
dG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAK
aW5kZXggMTZlODQ1Yi4uOGM5OTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tJbnNwZWN0b3IuY3BwCkBAIC0xNzQsNDIgKzE3NCwzMCBAQCB2b2lkIFdLSW5zcGVj
dG9yRGV0YWNoKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKICNlbmRpZgogfQogCi1ib29s
IFdLSW5zcGVjdG9ySXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rv
clJlZikKK2Jvb2wgV0tJbnNwZWN0b3JJc0RlYnVnZ2luZ0phdmFTY3JpcHQoV0tJbnNwZWN0b3JS
ZWYpCiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICByZXR1cm4gdG9JbXBsKGluc3BlY3Rv
clJlZiktPmlzRGVidWdnaW5nSmF2YVNjcmlwdCgpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
aW5zcGVjdG9yUmVmKTsKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBmb3IgYmFja3dhcmRzIGNvbXBh
dGliaWxpdHkgd2l0aCBuaWdodGx5IGJ1aWxkcyBhbmQgU2FmYXJpLgorICAgIC8vIFJlbW92ZSBp
dCBvbmNlIFNhZmFyaSBubyBsb25nZXIgZGVwZW5kcyBvbiBpdC4KICAgICByZXR1cm4gZmFsc2U7
Ci0jZW5kaWYKIH0KIAotdm9pZCBXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHREZWJ1Z2dpbmco
V0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQordm9pZCBXS0luc3BlY3RvclRvZ2dsZUphdmFT
Y3JpcHREZWJ1Z2dpbmcoV0tJbnNwZWN0b3JSZWYpCiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSAgICB0b0ltcGwoaW5zcGVjdG9yUmVmKS0+dG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZygpOwot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oaW5zcGVjdG9yUmVmKTsKLSNlbmRpZgorICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIG5pZ2h0bHkgYnVp
bGRzIGFuZCBTYWZhcmkuCisgICAgLy8gUmVtb3ZlIGl0IG9uY2UgU2FmYXJpIG5vIGxvbmdlciBk
ZXBlbmRzIG9uIGl0LgogfQogCi1ib29sIFdLSW5zcGVjdG9ySXNQcm9maWxpbmdKYXZhU2NyaXB0
KFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKK2Jvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGlu
Z0phdmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYpCiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAg
ICByZXR1cm4gdG9JbXBsKGluc3BlY3RvclJlZiktPmlzUHJvZmlsaW5nSmF2YVNjcmlwdCgpOwot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oaW5zcGVjdG9yUmVmKTsKKyAgICAvLyBGSVhNRTogVGhp
cyBpcyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBuaWdodGx5IGJ1aWxkcyBhbmQg
U2FmYXJpLgorICAgIC8vIFJlbW92ZSBpdCBvbmNlIFNhZmFyaSBubyBsb25nZXIgZGVwZW5kcyBv
biBpdC4KICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKIH0KIAotdm9pZCBXS0luc3BlY3RvclRv
Z2dsZUphdmFTY3JpcHRQcm9maWxpbmcoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQordm9p
ZCBXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmcoV0tJbnNwZWN0b3JSZWYpCiB7
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICB0b0ltcGwoaW5zcGVjdG9yUmVmKS0+dG9nZ2xl
SmF2YVNjcmlwdFByb2ZpbGluZygpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oaW5zcGVjdG9y
UmVmKTsKLSNlbmRpZgorICAgIC8vIEZJWE1FOiBUaGlzIGlzIGZvciBiYWNrd2FyZHMgY29tcGF0
aWJpbGl0eSB3aXRoIG5pZ2h0bHkgYnVpbGRzIGFuZCBTYWZhcmkuCisgICAgLy8gUmVtb3ZlIGl0
IG9uY2UgU2FmYXJpIG5vIGxvbmdlciBkZXBlbmRzIG9uIGl0LgogfQogCiBib29sIFdLSW5zcGVj
dG9ySXNQcm9maWxpbmdQYWdlKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmgKaW5kZXggYmE3NjQ4OS4uMjA2
NTc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVj
dG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmgK
QEAgLTU4LDE1ICs1OCwxNyBAQCBXS19FWFBPUlQgYm9vbCBXS0luc3BlY3RvcklzQXR0YWNoZWQo
V0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKIFdLX0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9yQXR0
YWNoKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7CiBXS19FWFBPUlQgdm9pZCBXS0luc3BlY3Rv
ckRldGFjaChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwogCitXS19FWFBPUlQgYm9vbCBXS0lu
c3BlY3RvcklzUHJvZmlsaW5nUGFnZShXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOworV0tfRVhQ
T1JUIHZvaWQgV0tJbnNwZWN0b3JUb2dnbGVQYWdlUHJvZmlsaW5nKFdLSW5zcGVjdG9yUmVmIGlu
c3BlY3Rvcik7CisKKy8vIEZJWE1FOiBUaGVzZSBhcmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmls
aXR5IHdpdGggbmlnaHRseSBidWlsZHMgYW5kIFNhZmFyaS4KKy8vIFJlbW92ZSB0aGVtIG9uY2Ug
U2FmYXJpIG5vIGxvbmdlciBkZXBlbmRzIG9uIHRoZW0uCiBXS19FWFBPUlQgYm9vbCBXS0luc3Bl
Y3RvcklzRGVidWdnaW5nSmF2YVNjcmlwdChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwogV0tf
RVhQT1JUIHZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKFdLSW5zcGVj
dG9yUmVmIGluc3BlY3Rvcik7CiAKIFdLX0VYUE9SVCBib29sIFdLSW5zcGVjdG9ySXNQcm9maWxp
bmdKYXZhU2NyaXB0KFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7CiBXS19FWFBPUlQgdm9pZCBX
S0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmcoV0tJbnNwZWN0b3JSZWYgaW5zcGVj
dG9yKTsKIAotV0tfRVhQT1JUIGJvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ1BhZ2UoV0tJbnNw
ZWN0b3JSZWYgaW5zcGVjdG9yKTsKLVdLX0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9yVG9nZ2xlUGFn
ZVByb2ZpbGluZyhXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwotCiAjaWZkZWYgX19jcGx1c3Bs
dXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4
IDZhMjQzYzcuLjk3ZThhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5j
cHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJXZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5o
IgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
SWNvbkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxp
emUuaCIKICNpbmNsdWRlICJXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBiZTM3NzA0Li5k
ZTU4OTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94
eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIw
MTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC0zMCwxMSArMzAsMTIgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAj
aW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNs
dWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJJ
bnNwZWN0b3JQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQ
cmVmZXJlbmNlcy5oIgpAQCAtNTcsOSArNTgsNiBAQCBjb25zdCB1bnNpZ25lZCBXZWJJbnNwZWN0
b3JQcm94eTo6bWluaW11bVdpbmRvd0hlaWdodCA9IDQwMDsKIGNvbnN0IHVuc2lnbmVkIFdlYklu
c3BlY3RvclByb3h5Ojppbml0aWFsV2luZG93V2lkdGggPSAxMDAwOwogY29uc3QgdW5zaWduZWQg
V2ViSW5zcGVjdG9yUHJveHk6OmluaXRpYWxXaW5kb3dIZWlnaHQgPSA2NTA7CiAKLWNvbnN0IHVu
c2lnbmVkIFdlYkluc3BlY3RvclByb3h5OjptaW5pbXVtQXR0YWNoZWRXaWR0aCA9IDc1MDsKLWNv
bnN0IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5OjptaW5pbXVtQXR0YWNoZWRIZWlnaHQgPSAy
NTA7Ci0KIGNsYXNzIFdlYkluc3BlY3RvclBhZ2VHcm91cHMgewogcHVibGljOgogICAgIHN0YXRp
YyBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzJiBzaGFyZWQoKQpAQCAtMTA1LDExICsxMDMsMTIgQEAg
cHJpdmF0ZToKICAgICAgICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFn
ZUdyb3VwOjpjcmVhdGUoU3RyaW5nOjpmb3JtYXQoIl9fV2ViSW5zcGVjdG9yUGFnZUdyb3VwTGV2
ZWwldV9fIiwgbGV2ZWwpLCBmYWxzZSwgZmFsc2UpOwogCiAjaWZuZGVmIE5ERUJVRwotICAgICAg
ICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVi
dWcgYnVpbGRzLgorICAgICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdl
YiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAg
ICAgICAgIHBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVk
KHRydWUpOwogICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0TG9nc1BhZ2VNZXNz
YWdlc1RvU3lzdGVtQ29uc29sZUVuYWJsZWQodHJ1ZSk7CiAjZW5kaWYKIAorICAgICAgICBwYWdl
R3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKHRydWUp
OwogICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0QXBwbGljYXRpb25DaHJvbWVN
b2RlRW5hYmxlZCh0cnVlKTsKIAogICAgICAgICByZXR1cm4gcGFnZUdyb3VwLnJlbGVhc2UoKTsK
QEAgLTEyNCwxMyArMTIzLDEzIEBAIHByaXZhdGU6CiAKIFdlYkluc3BlY3RvclByb3h5OjpXZWJJ
bnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKKyAg
ICAsIG1faW5zcGVjdG9yUGFnZShudWxscHRyKQorICAgICwgbV91bmRlclRlc3QoZmFsc2UpCiAg
ICAgLCBtX2lzVmlzaWJsZShmYWxzZSkKICAgICAsIG1faXNBdHRhY2hlZChmYWxzZSkKLSAgICAs
IG1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KGZhbHNlKQotICAgICwgbV9pc1Byb2ZpbGluZ0phdmFT
Y3JpcHQoZmFsc2UpCisgICAgLCBtX2NhbkF0dGFjaChmYWxzZSkKICAgICAsIG1faXNQcm9maWxp
bmdQYWdlKGZhbHNlKQogICAgICwgbV9zaG93TWVzc2FnZVNlbnQoZmFsc2UpCi0gICAgLCBtX2Ny
ZWF0ZWRJbnNwZWN0b3JQYWdlKGZhbHNlKQogICAgICwgbV9pZ25vcmVGaXJzdEJyaW5nVG9Gcm9u
dChmYWxzZSkKICAgICAsIG1fYXR0YWNobWVudFNpZGUoQXR0YWNobWVudFNpZGVCb3R0b20pCiAj
aWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCkBAIC0xNjUsNyArMTY0LDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6aW52YWxpZGF0ZSgpCiAKICAgICBkaWRDbG9zZSgpOwogCi0g
ICAgbV9wYWdlID0gMDsKKyAgICBtX3BhZ2UgPSBudWxscHRyOwogfQogCiAvLyBQdWJsaWMgQVBJ
cwpAQCAtMTg4LDYgKzE4Nyw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNvbm5lY3QoKQog
ICAgIG1fc2hvd01lc3NhZ2VTZW50ID0gdHJ1ZTsKICAgICBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zy
b250ID0gdHJ1ZTsKIAorICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisKICAgICBt
X3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3coKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CiB9CiAKQEAgLTIzMiw2ICsyMzMsOCBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpzaG93Q29uc29sZSgpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsK
IAorICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisKICAgICBtX3BhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dDb25zb2xlKCksIG1fcGFnZS0+
cGFnZUlEKCkpOwogfQogCkBAIC0yNDAsNiArMjQzLDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6c2hvd1Jlc291cmNlcygpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisKICAgICBtX3BhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dSZXNvdXJjZXMoKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CiB9CiAKQEAgLTI0OCw2ICsyNTMsOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCiAgICAgaWYg
KCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQ
YWdlKCk7CisKICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3I6OlNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CiB9CiAKQEAgLTI3NCwxMyArMjgxLDE1IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OmF0dGFjaChBdHRhY2htZW50U2lkZSBzaWRlKQogICAgIGlmIChtX2lzVmlzaWJsZSkKICAg
ICAgICAgaW5zcGVjdG9yUGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yU3Rh
cnRzQXR0YWNoZWQodHJ1ZSk7CiAKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKHRydWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKwog
ICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewogICAgIGNhc2UgQXR0YWNobWVudFNpZGVC
b3R0b206Ci0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3Rvcjo6QXR0YWNoZWRCb3R0b20oKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5z
cGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRh
Y2hlZEJvdHRvbSgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKICAgICAgICAgYnJlYWs7
CiAKICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlUmlnaHQ6Ci0gICAgICAgIG1fcGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6QXR0YWNoZWRSaWdodCgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkUmlnaHQoKSwgbV9pbnNwZWN0b3JQYWdlLT5w
YWdlSUQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMjk3LDcgKzMwNiw4IEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OmRldGFjaCgpCiAgICAgaWYgKG1faXNWaXNpYmxlKQogICAg
ICAgICBpbnNwZWN0b3JQYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS5zZXRJbnNwZWN0b3JTdGFy
dHNBdHRhY2hlZChmYWxzZSk7CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OkRldGFjaGVkKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQoZmFs
c2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdl
LT5wYWdlSUQoKSk7CiAKICAgICBwbGF0Zm9ybURldGFjaCgpOwogfQpAQCAtMzE0LDM0ICszMjQs
NiBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2ln
bmVkIHdpZHRoKQogICAgIHBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh3aWR0aCk7CiB9
CiAKLXZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnRvZ2dsZUphdmFTY3JpcHREZWJ1Z2dpbmcoKQot
ewotICAgIGlmICghbV9wYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9pc0RlYnVn
Z2luZ0phdmFTY3JpcHQpCi0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3Rvcjo6U3RvcEphdmFTY3JpcHREZWJ1Z2dpbmcoKSwgbV9wYWdlLT5wYWdlSUQo
KSk7Ci0gICAgZWxzZQotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3I6OlN0YXJ0SmF2YVNjcmlwdERlYnVnZ2luZygpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKLQotICAgIC8vIEZJWE1FOiBoYXZlIHRoZSBXZWJQcm9jZXNzIG5vdGlmeSB1cyBvbiBzdGF0
ZSBjaGFuZ2VzLgotICAgIG1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0ID0gIW1faXNEZWJ1Z2dpbmdK
YXZhU2NyaXB0OwotfQotCi12b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVKYXZhU2NyaXB0
UHJvZmlsaW5nKCkKLXsKLSAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKG1faXNQcm9maWxpbmdKYXZhU2NyaXB0KQotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCksIG1f
cGFnZS0+cGFnZUlEKCkpOwotICAgIGVsc2UKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdGFydEphdmFTY3JpcHRQcm9maWxpbmcoKSwgbV9w
YWdlLT5wYWdlSUQoKSk7Ci0KLSAgICAvLyBGSVhNRTogaGF2ZSB0aGUgV2ViUHJvY2VzcyBub3Rp
ZnkgdXMgb24gc3RhdGUgY2hhbmdlcy4KLSAgICBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdCA9ICFt
X2lzUHJvZmlsaW5nSmF2YVNjcmlwdDsKLX0KLQogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9n
Z2xlUGFnZVByb2ZpbGluZygpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCkBAIC0zNjEsNiArMzQzLDIx
IEBAIGJvb2wgV2ViSW5zcGVjdG9yUHJveHk6OmlzSW5zcGVjdG9yUGFnZShXZWJQYWdlUHJveHkm
IHBhZ2UpCiAgICAgcmV0dXJuIFdlYkluc3BlY3RvclBhZ2VHcm91cHM6OnNoYXJlZCgpLmlzSW5z
cGVjdG9yUGFnZUdyb3VwKHBhZ2UucGFnZUdyb3VwKCkpOwogfQogCitXZWJDb250ZXh0JiBXZWJJ
bnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQ29udGV4dCgpCit7CisgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VGbGFnOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPFdl
YkNvbnRleHQ+PiBjb250ZXh0OworCisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdewor
ICAgICAgICBXZWJDb250ZXh0Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgICAgICBX
ZWJDb250ZXh0OjphcHBseVBsYXRmb3JtU3BlY2lmaWNDb25maWd1cmF0aW9uRGVmYXVsdHMoY29u
ZmlndXJhdGlvbik7CisgICAgICAgIGNvbnRleHQuY29uc3RydWN0KFdlYkNvbnRleHQ6OmNyZWF0
ZShjb25maWd1cmF0aW9uKSk7CisgICAgICAgIGNvbnRleHQuZ2V0KCktPnNldFByb2Nlc3NNb2Rl
bChQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3Nlcyk7CisgICAgfSk7CisKKyAg
ICByZXR1cm4gKmNvbnRleHQuZ2V0KCk7Cit9CisKIHN0YXRpYyBib29sIGlzTWFpbk9yVGVzdElu
c3BlY3RvclBhZ2UoY29uc3QgV2ViSW5zcGVjdG9yUHJveHkqIHdlYkluc3BlY3RvclByb3h5LCBX
S1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKIHsKICAgICBVUkwgcmVxdWVzdFVSTChVUkwoKSwg
dG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSk7CkBAIC00MjYsMjkg
KzQyMywyMCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZERpc2Nvbm5l
Y3RlZCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1v
dGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpEaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3Rl
RnJvbnRlbmQobWVzc2FnZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVz
c2FnZSksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogI2VuZGlmCiAKLS8vIENhbGxlZCBieSBXZWJJ
bnNwZWN0b3JQcm94eSBtZXNzYWdlcwotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5z
cGVjdG9yUGFnZSh1aW50NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJiBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycykKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OmVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCkKIHsKLSAgICBpbnNwZWN0b3JQYWdlSUQgPSAw
OwotCi0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKG1faW5zcGVjdG9yUGFnZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9pc0F0dGFjaGVkID0gc2hvdWxkT3BlbkF0dGFjaGVkKCk7Ci0gICAg
bV9hdHRhY2htZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0dGFjaG1lbnRTaWRlPihpbnNwZWN0b3JQ
YWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2htZW50U2lkZSgpKTsKLQot
ICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSA9IHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9y
UGFnZSgpOwotICAgIEFTU0VSVChpbnNwZWN0b3JQYWdlKTsKLSAgICBpZiAoIWluc3BlY3RvclBh
Z2UpCisgICAgbV9pbnNwZWN0b3JQYWdlID0gcGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCk7
CisgICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgaWYgKCFtX2luc3BlY3RvclBhZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIGluc3BlY3RvclBhZ2VJRCA9IGluc3BlY3RvclBhZ2Ut
PnBhZ2VJRCgpOwotICAgIGluc3BlY3RvclBhZ2VQYXJhbWV0ZXJzID0gaW5zcGVjdG9yUGFnZS0+
Y3JlYXRpb25QYXJhbWV0ZXJzKCk7Ci0KICAgICBXS1BhZ2VQb2xpY3lDbGllbnRWMSBwb2xpY3lD
bGllbnQgPSB7CiAgICAgICAgIHsgMSwgdGhpcyB9LAogICAgICAgICAwLCAvKiBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgKi8KQEAgLTQ1OSw3
MyArNDQ3LDU3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2Uo
dWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyCiAgICAgICAgIDAsIC8qIGRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlICovCiAgICAgfTsKIAotICAgIFdLUGFnZVNldFBhZ2VQb2xpY3lD
bGllbnQodG9BUEkoaW5zcGVjdG9yUGFnZSksICZwb2xpY3lDbGllbnQuYmFzZSk7CisgICAgV0tQ
YWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSShtX2luc3BlY3RvclBhZ2UpLCAmcG9saWN5Q2xp
ZW50LmJhc2UpOwogCi0gICAgU3RyaW5nQnVpbGRlciB1cmw7Ci0KLSAgICB1cmwuYXBwZW5kKGlu
c3BlY3RvclBhZ2VVUkwoKSk7Ci0KLSAgICB1cmwuYXBwZW5kTGl0ZXJhbCgiP2RvY2tTaWRlPSIp
OwotCi0gICAgaWYgKG1faXNBdHRhY2hlZCkgewotICAgICAgICBzd2l0Y2ggKG1fYXR0YWNobWVu
dFNpZGUpIHsKLSAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZUJvdHRvbToKLSAgICAgICAgICAg
IHVybC5hcHBlbmRMaXRlcmFsKCJib3R0b20iKTsKLSAgICAgICAgICAgIG1fcGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6QXR0YWNoZWRCb3R0b20oKSwgbV9wYWdl
LT5wYWdlSUQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBdHRhY2htZW50
U2lkZVJpZ2h0OgotICAgICAgICAgICAgdXJsLmFwcGVuZExpdGVyYWwoInJpZ2h0Iik7Ci0gICAg
ICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkF0
dGFjaGVkUmlnaHQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICB1cmwuYXBwZW5kTGl0ZXJhbCgidW5kb2NrZWQi
KTsKLQotICAgIG1fcGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5z
cGVjdG9yQmFzZVVSTCgpKTsKLQotICAgIGluc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChV
UkwoKSwgdXJsLnRvU3RyaW5nKCkpKTsKLQotICAgIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UgPSB0
cnVlOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
LT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFzc3Vt
ZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVSTCgpKTsKIH0KIAotdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QodWludDY0X3QmIGluc3Bl
Y3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgaW5zcGVjdG9yUGFnZVBhcmFt
ZXRlcnMpCisvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yUHJveHkgbWVzc2FnZXMKK3ZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2UoSVBDOjpBdHRhY2htZW50IGNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlc3QpCiB7Ci0gICAg
aW5zcGVjdG9yUGFnZUlEID0gMDsKLQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2lzQXR0YWNoZWQgPSBmYWxzZTsKKyAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9y
UGFnZSgpOwogCi0gICAgV2ViUGFnZVByb3h5KiBpbnNwZWN0b3JQYWdlID0gcGxhdGZvcm1DcmVh
dGVJbnNwZWN0b3JQYWdlKCk7Ci0gICAgQVNTRVJUKGluc3BlY3RvclBhZ2UpOwotICAgIGlmICgh
aW5zcGVjdG9yUGFnZSkKKyAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKKyAgICBpZiAoIW1f
aW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW5zcGVjdG9yUGFnZUlEID0g
aW5zcGVjdG9yUGFnZS0+cGFnZUlEKCk7Ci0gICAgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMgPSBp
bnNwZWN0b3JQYWdlLT5jcmVhdGlvblBhcmFtZXRlcnMoKTsKKyAgICBtX3VuZGVyVGVzdCA9IHVu
ZGVyVGVzdDsKIAotICAgIFdLUGFnZVBvbGljeUNsaWVudFYxIHBvbGljeUNsaWVudCA9IHsKLSAg
ICAgICAgeyAxLCB0aGlzIH0sCi0gICAgICAgIDAsIC8qIGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25fZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAqLwotICAgICAgICAwLCAvKiBkZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24gKi8KLSAgICAgICAgMCwgLyogZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAqLwotICAgICAgICAwLCAvKiB1bmFibGVU
b0ltcGxlbWVudFBvbGljeSAqLwotICAgICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uLAotICAgICAgICAwLCAvKiBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSAqLwotICAgIH07Cisg
ICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUk6OkVzdGFibGlzaENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsIG1fcGFnZS0+cGFn
ZUlEKCksIG1fdW5kZXJUZXN0KSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisKKyAgICBp
ZiAoIW1fdW5kZXJUZXN0KSB7CisgICAgICAgIG1fY2FuQXR0YWNoID0gY2FuQXR0YWNoOworICAg
ICAgICBtX2lzQXR0YWNoZWQgPSBzaG91bGRPcGVuQXR0YWNoZWQoKTsKKyAgICAgICAgbV9hdHRh
Y2htZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0dGFjaG1lbnRTaWRlPihpbnNwZWN0b3JQYWdlR3Jv
dXAoKS0+cHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2htZW50U2lkZSgpKTsKIAotICAgIFdL
UGFnZVNldFBhZ2VQb2xpY3lDbGllbnQodG9BUEkoaW5zcGVjdG9yUGFnZSksICZwb2xpY3lDbGll
bnQuYmFzZSk7CisgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6U2V0QXR0YWNoZWQobV9pc0F0dGFjaGVkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiAK
LSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGluc3BlY3Rv
ckJhc2VVUkwoKSk7CisgICAgICAgIGlmIChtX2lzQXR0YWNoZWQpIHsKKyAgICAgICAgICAgIHN3
aXRjaCAobV9hdHRhY2htZW50U2lkZSkgeworICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lk
ZUJvdHRvbToKKyAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQ
YWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBpbnNwZWN0b3JQ
YWdlLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIGluc3BlY3RvclRlc3RQYWdlVVJMKCkpKTsKKyAg
ICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVSaWdodDoKKyAgICAgICAgICAgICAgICBtX2lu
c3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0
YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2lu
c3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0
YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgfQogCi0gICAgbV9jcmVh
dGVkSW5zcGVjdG9yUGFnZSA9IHRydWU7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVz
dChVUkwoVVJMKCksIG1fdW5kZXJUZXN0ID8gaW5zcGVjdG9yVGVzdFBhZ2VVUkwoKSA6IGluc3Bl
Y3RvclBhZ2VVUkwoKSkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuKCkKIHsK
KyAgICBpZiAobV91bmRlclRlc3QpCisgICAgICAgIHJldHVybjsKKwogICAgIG1faXNWaXNpYmxl
ID0gdHJ1ZTsKIAogICAgIHBsYXRmb3JtT3BlbigpOwpAQCAtNTMzLDIwICs1MDUsMjMgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbigpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRp
ZENsb3NlKCkKIHsKLSAgICBpZiAoIW1fY3JlYXRlZEluc3BlY3RvclBhZ2UpCisgICAgaWYgKCFt
X2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1faW5zcGVjdG9yUGFnZS0+
Y2xvc2UoKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZSA9IG51bGxwdHI7CisKICAg
ICBtX2lzVmlzaWJsZSA9IGZhbHNlOwotICAgIG1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0ID0gZmFs
c2U7Ci0gICAgbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQgPSBmYWxzZTsKICAgICBtX2lzUHJvZmls
aW5nUGFnZSA9IGZhbHNlOwotICAgIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UgPSBmYWxzZTsKICAg
ICBtX3Nob3dNZXNzYWdlU2VudCA9IGZhbHNlOwogICAgIG1faWdub3JlRmlyc3RCcmluZ1RvRnJv
bnQgPSBmYWxzZTsKIAogICAgIGlmIChtX2lzQXR0YWNoZWQpCiAgICAgICAgIHBsYXRmb3JtRGV0
YWNoKCk7CiAgICAgbV9pc0F0dGFjaGVkID0gZmFsc2U7CisgICAgbV9jYW5BdHRhY2ggPSBmYWxz
ZTsKKyAgICBtX3VuZGVyVGVzdCA9IGZhbHNlOwogCiAgICAgcGxhdGZvcm1EaWRDbG9zZSgpOwog
fQpAQCAtNTY5LDYgKzU0NCw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmJyaW5nVG9Gcm9u
dCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQo
Ym9vbCBhdmFpbGFibGUpCiB7CisgICAgbV9jYW5BdHRhY2ggPSBhdmFpbGFibGU7CisKICAgICBw
bGF0Zm9ybUF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoYXZhaWxhYmxlKTsKIH0KIApAQCAtNTg3
LDI4ICs1NjQsNiBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphcHBlbmQoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgIHBsYXRmb3JtQXBwZW5kKGZp
bGVuYW1lLCBjb250ZW50KTsKIH0KIAotYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6Y2FuQXR0YWNo
KCkKLXsKLSAgICAvLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWw6OmNhbkF0dGFjaFdpbmRvdy4gVGhlcmUgYXJlIHR3byBpbXBsZW1lbnRhdGlvbnMK
LSAgICAvLyB0byBtYWtlIGxpZmUgZWFzaWVyIGluIHRoZSBtdWx0aS1wcm9jZXNzIHdvcmxkIHdl
IGhhdmUuIFdlYkluc3BlY3RvclByb3h5IHVzZXMgY2FuQXR0YWNoIHRvIGRlY2lkZSBpZgotICAg
IC8vIHdlIGNhbiBhdHRhY2ggb24gb3BlbiAob24gdGhlIFVJIHByb2Nlc3Mgc2lkZSkuIEFuZCBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjYW5BdHRhY2hXaW5kb3cgaXMKLSAgICAvLyB1
c2VkIHRvIGRlY2lkZSBpZiB3ZSBjYW4gYXR0YWNoIHdoZW4gdGhlIGF0dGFjaCBidXR0b24gaXMg
cHJlc3NlZCAob24gdGhlIFdlYlByb2Nlc3Mgc2lkZSkuCi0KLSAgICAvLyBJZiB3ZSBhcmUgYWxy
ZWFkeSBhdHRhY2hlZCwgYWxsb3cgYXR0YWNoaW5nIGFnYWluIHRvIGFsbG93IHN3aXRjaGluZyBz
aWRlcy4KLSAgICBpZiAobV9pc0F0dGFjaGVkKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IC8vIERvbid0IGFsbG93IGF0dGFjaGluZyB0byBhbm90aGVyIGluc3BlY3RvciAtLSB0d28gaW5z
cGVjdG9ycyBpbiBvbmUgd2luZG93IGlzIHRvbyBtdWNoIQotICAgIGlmIChtX2xldmVsID4gMSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGF0dGFjaCBp
ZiB0aGUgd2luZG93IHdvdWxkIGJlIHRvbyBzbWFsbCB0byBhY2NvbW1vZGF0ZSB0aGUgbWluaW11
bSBpbnNwZWN0b3IgaGVpZ2h0LgotICAgIHVuc2lnbmVkIGluc3BlY3RlZFBhZ2VIZWlnaHQgPSBw
bGF0Zm9ybUluc3BlY3RlZFdpbmRvd0hlaWdodCgpOwotICAgIHVuc2lnbmVkIGluc3BlY3RlZFBh
Z2VXaWR0aCA9IHBsYXRmb3JtSW5zcGVjdGVkV2luZG93V2lkdGgoKTsKLSAgICB1bnNpZ25lZCBt
YXhpbXVtQXR0YWNoZWRIZWlnaHQgPSBpbnNwZWN0ZWRQYWdlSGVpZ2h0ICogMyAvIDQ7Ci0gICAg
cmV0dXJuIG1pbmltdW1BdHRhY2hlZEhlaWdodCA8PSBtYXhpbXVtQXR0YWNoZWRIZWlnaHQgJiYg
bWluaW11bUF0dGFjaGVkV2lkdGggPD0gaW5zcGVjdGVkUGFnZVdpZHRoOwotfQotCiBib29sIFdl
Ykluc3BlY3RvclByb3h5OjpzaG91bGRPcGVuQXR0YWNoZWQoKQogewogICAgIHJldHVybiBpbnNw
ZWN0b3JQYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JTdGFydHNBdHRhY2hlZCgp
ICYmIGNhbkF0dGFjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Ykluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuaAppbmRleCAxN2E3NDk4Li4wNjVkN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIFBvcnRp
b25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiQXR0YWNo
bWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTU5LDEwICs2MCwxMCBAQCBP
QkpDX0NMQVNTIFdLV2ViSW5zcGVjdG9yV0tWaWV3OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
Y2xhc3MgV2ViQ29udGV4dDsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlR3Jv
dXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7Ci1zdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czsKIAogZW51bSBBdHRhY2htZW50U2lkZSB7CiAgICAgQXR0YWNobWVudFNpZGVCb3R0b20sCkBA
IC04Myw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICAvLyBQdWJsaWMgQVBJcwogICAgIFdlYlBhZ2VQ
cm94eSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQogCi0gICAgYm9vbCBpc0Nvbm5l
Y3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRlZEluc3BlY3RvclBhZ2U7IH0KKyAgICBib29s
IGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvclBhZ2U7IH0KICAgICBi
b29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaXNpYmxlOyB9CiAgICAgYm9vbCBp
c0Zyb250KCk7CiAKQEAgLTEyMywxNiArMTI0LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF0
dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpOwogICAgIHZvaWQgc2V0VG9vbGJhckhlaWdodCh1
bnNpZ25lZCBoZWlnaHQpIHsgcGxhdGZvcm1TZXRUb29sYmFySGVpZ2h0KGhlaWdodCk7IH0KIAot
ICAgIGJvb2wgaXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9pc0RlYnVn
Z2luZ0phdmFTY3JpcHQ7IH0KLSAgICB2b2lkIHRvZ2dsZUphdmFTY3JpcHREZWJ1Z2dpbmcoKTsK
LQotICAgIGJvb2wgaXNQcm9maWxpbmdKYXZhU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9pc1By
b2ZpbGluZ0phdmFTY3JpcHQ7IH0KLSAgICB2b2lkIHRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmco
KTsKLQogICAgIGJvb2wgaXNQcm9maWxpbmdQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Byb2Zp
bGluZ1BhZ2U7IH0KICAgICB2b2lkIHRvZ2dsZVBhZ2VQcm9maWxpbmcoKTsKIAogICAgIHN0YXRp
YyBib29sIGlzSW5zcGVjdG9yUGFnZShXZWJQYWdlUHJveHkmKTsKKyAgICBzdGF0aWMgV2ViQ29u
dGV4dCYgaW5zcGVjdG9yQ29udGV4dCgpOwogCiAgICAgLy8gUHJvdmlkZWQgYnkgcGxhdGZvcm0g
V2ViSW5zcGVjdG9yUHJveHkgaW1wbGVtZW50YXRpb25zLgogICAgIFN0cmluZyBpbnNwZWN0b3JQ
YWdlVVJMKCkgY29uc3Q7CkBAIC0xNTAsOSArMTQ2LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yUHJveHkoV2ViUGFnZVByb3h5Kik7CiAKKyAgICB2b2lk
IGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24q
LCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICBX
ZWJQYWdlUHJveHkqIHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpOwogICAgIHZvaWQgcGxh
dGZvcm1PcGVuKCk7CkBAIC0xNzMsOCArMTcwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRm
b3JtQXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7
CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yUHJveHkgbWVzc2FnZXMKLSAgICB2b2lk
IGNyZWF0ZUluc3BlY3RvclBhZ2UodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYpOwotICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3Qo
dWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwor
ICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQsIGJvb2wgY2FuQXR0
YWNoLCBib29sIHVuZGVyVGVzdCk7CiAgICAgdm9pZCBkaWRDbG9zZSgpOwogICAgIHZvaWQgYnJp
bmdUb0Zyb250KCk7CiAgICAgdm9pZCBhdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wpOwpA
QCAtMTg3LDcgKzE4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvUmVtb3Rl
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICNlbmRpZgogCi0gICAgYm9vbCBjYW5B
dHRhY2goKTsKKyAgICBib29sIGNhbkF0dGFjaCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuQXR0YWNo
OyB9CiAgICAgYm9vbCBzaG91bGRPcGVuQXR0YWNoZWQoKTsKIAogICAgIHZvaWQgb3BlbigpOwpA
QCAtMjA0LDE5ICsyMDAsMTUgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
aW5pdGlhbFdpbmRvd1dpZHRoOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbml0aWFsV2lu
ZG93SGVpZ2h0OwogCi0gICAgLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0aGUgdmFsdWUgaW4g
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC4KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
bWluaW11bUF0dGFjaGVkV2lkdGg7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1B
dHRhY2hlZEhlaWdodDsKLQogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOworICAgIFdlYlBhZ2VQ
cm94eSogbV9pbnNwZWN0b3JQYWdlOwogCisgICAgYm9vbCBtX3VuZGVyVGVzdDsKICAgICBib29s
IG1faXNWaXNpYmxlOwogICAgIGJvb2wgbV9pc0F0dGFjaGVkOwotICAgIGJvb2wgbV9pc0RlYnVn
Z2luZ0phdmFTY3JpcHQ7Ci0gICAgYm9vbCBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdDsKKyAgICBi
b29sIG1fY2FuQXR0YWNoOwogICAgIGJvb2wgbV9pc1Byb2ZpbGluZ1BhZ2U7CiAgICAgYm9vbCBt
X3Nob3dNZXNzYWdlU2VudDsKLSAgICBib29sIG1fY3JlYXRlZEluc3BlY3RvclBhZ2U7CiAgICAg
Ym9vbCBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250OwogCiAgICAgLy8gVGhlIGRlYnVnZ2VyIHN0
b3BzIGFsbCB0aGUgcGFnZXMgaW4gdGhlIHNhbWUgUGFnZUdyb3VwLiBIYXZpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5p
bgppbmRleCBlNmM5NDRkLi5lYjdmYTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAot
IyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBD
b3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
IwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMCArMjMsMTEgQEAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogCiBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JQcm94eSB7Ci0gICAgQ3Jl
YXRlSW5zcGVjdG9yUGFnZSgpIC0+ICh1aW50NjRfdCBpbnNwZWN0b3JQYWdlSUQsIFdlYktpdDo6
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycykKLSAgICBD
cmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgpIC0+ICh1aW50NjRfdCBpbnNwZWN0b3JQYWdlSUQs
IFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBpbnNwZWN0b3JQYWdlUGFyYW1ldGVy
cykKKyAgICBDcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRl
bnRpZmllciwgYm9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXN0KQorCiAgICAgRGlkQ2xvc2Uo
KQogICAgIEJyaW5nVG9Gcm9udCgpCisKICAgICBJbnNwZWN0ZWRVUkxDaGFuZ2VkKFN0cmluZyB1
cmxTdHJpbmcpCiAKICAgICBTYXZlKFN0cmluZyBmaWxlbmFtZSwgU3RyaW5nIGNvbnRlbnQsIGJv
b2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykKQEAgLTM1LDYgKzM2LDcgQEAgbWVz
c2FnZXMgLT4gV2ViSW5zcGVjdG9yUHJveHkgewogICAgIEF0dGFjaEJvdHRvbSgpCiAgICAgQXR0
YWNoUmlnaHQoKQogICAgIERldGFjaCgpCisKICAgICBBdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2Vk
KGJvb2wgYXZhaWxhYmxlKQogCiAgICAgU2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQg
aGVpZ2h0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCA5MDQ5ZjliLi45NzMyYzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIldlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5o
IgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eS5o
IgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25EYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKQEAgLTEx
NSw2ICsxMTYsOCBAQCBXZWJQcm9jZXNzUHJveHk6On5XZWJQcm9jZXNzUHJveHkoKQogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hP
cHRpb25zJiBsYXVuY2hPcHRpb25zKQogewogICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUg
PSBQcm9jZXNzTGF1bmNoZXI6OldlYlByb2Nlc3M7CisgICAgaWYgKCZtX2NvbnRleHQuZ2V0KCkg
PT0gJldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JDb250ZXh0KCkpCisgICAgICAgIGxhdW5j
aE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKEFTQ0lJTGl0ZXJhbCgiaW5zcGVj
dG9yLXByb2Nlc3MiKSwgQVNDSUlMaXRlcmFsKCIxIikpOwogICAgIHBsYXRmb3JtR2V0TGF1bmNo
T3B0aW9ucyhsYXVuY2hPcHRpb25zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAppbmRleCBlZWMzOWNjLi4wOTEy
MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3Rv
clByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3Bl
Y3RvclByb3h5RWZsLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgaWYgKCFtX2lu
c3BlY3RvcldpbmRvdykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBXS0NvbnRleHRSZWYgd2tD
b250ZXh0ID0gdG9BUEkoJnBhZ2UoKS0+cHJvY2VzcygpLmNvbnRleHQoKSk7CisgICAgV0tDb250
ZXh0UmVmIHdrQ29udGV4dCA9IHRvQVBJKCZpbnNwZWN0b3JDb250ZXh0KCkpOwogICAgIFdLUGFn
ZUdyb3VwUmVmIHdrUGFnZUdyb3VwID0gdG9BUEkoaW5zcGVjdG9yUGFnZUdyb3VwKCkpOwogCiAg
ICAgbV9pbnNwZWN0b3JWaWV3ID0gRVdLVmlld0NyZWF0ZSh3a0NvbnRleHQsIHdrUGFnZUdyb3Vw
LCBlY29yZV9ldmFzX2dldChtX2luc3BlY3RvcldpbmRvdyksIC8qIHNtYXJ0ICovIDApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3Rr
LmNwcAppbmRleCA1MGU0NWM0Li5iMjIxOTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtNjIsNyArNjIsNyBA
QCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3Rv
clBhZ2UoKQogewogICAgIEFTU0VSVChtX3BhZ2UpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JW
aWV3KTsKLSAgICBtX2luc3BlY3RvclZpZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNl
Q3JlYXRlKCZwYWdlKCktPnByb2Nlc3MoKS5jb250ZXh0KCksIG51bGxwdHIsIGluc3BlY3RvclBh
Z2VHcm91cCgpLCBudWxscHRyLCBtX3BhZ2UpKTsKKyAgICBtX2luc3BlY3RvclZpZXcgPSBHVEtf
V0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKCZpbnNwZWN0b3JDb250ZXh0KCksIG51bGxw
dHIsIGluc3BlY3RvclBhZ2VHcm91cCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgZ19vYmpl
Y3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVDVChtX2luc3BlY3RvclZpZXcpLCByZWludGVycHJl
dF9jYXN0PHZvaWQqKj4oJm1faW5zcGVjdG9yVmlldykpOwogICAgIHJldHVybiB3ZWJraXRXZWJW
aWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV9pbnNwZWN0b3JWaWV3KSk7CiB9
CkBAIC0xODIsOCArMTgyLDExIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0
YWNoKCkKICAgICAgICAgbV9pbnNwZWN0b3JXaW5kb3cgPSAwOwogICAgIH0KIAotICAgIC8vIFNl
dCBhIGRlZmF1bHQgYXR0YWNoZWQgc2l6ZSBiYXNlZCBvbiBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLgorICAgIC8vIFNldCBhIGRlZmF1bHQgc2l6ZXMgYmFzZWQgb24gSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdEF0dGFj
aGVkU2l6ZSA9IDMwMDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bUF0dGFjaGVk
V2lkdGggPSA3NTA7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1BdHRhY2hlZEhl
aWdodCA9IDI1MDsKKwogICAgIGlmIChtX2F0dGFjaG1lbnRTaWRlID09IEF0dGFjaG1lbnRTaWRl
Qm90dG9tKSB7CiAgICAgICAgIHVuc2lnbmVkIG1heGltdW1BdHRhY2hlZEhlaWdodCA9IHBsYXRm
b3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0KCkgKiAzIC8gNDsKICAgICAgICAgcGxhdGZvcm1TZXRB
dHRhY2hlZFdpbmRvd0hlaWdodChzdGQ6Om1heChtaW5pbXVtQXR0YWNoZWRIZWlnaHQsIHN0ZDo6
bWluKGRlZmF1bHRBdHRhY2hlZFNpemUsIG1heGltdW1BdHRhY2hlZEhlaWdodCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1t
CmluZGV4IGM2YzY2OGMuLjljZWNmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9y
dCAiV0tVUkxDRi5oIgogI2ltcG9ydCAiV0tWaWV3UHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViSW5z
cGVjdG9yTWVzc2FnZXMuaCIKKyNpbXBvcnQgIldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNp
bXBvcnQgIldlYlBhZ2VHcm91cC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0
ICJXZWJQcmVmZXJlbmNlcy5oIgpAQCAtMTE0LDcgKzExNSw3IEBAIC0gKElCQWN0aW9uKWF0dGFj
aEJvdHRvbTooaWQpc2VuZGVyCiAKIC0gKHZvaWQpY2xvc2UKIHsKLSAgICBfaW5zcGVjdG9yUHJv
eHkgPSAwOworICAgIF9pbnNwZWN0b3JQcm94eSA9IG51bGxwdHI7CiB9CiAKIC0gKHZvaWQpd2lu
ZG93RGlkTW92ZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KQEAgLTQxOCw3ICs0MTks
NyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3Bl
Y3RvclBhZ2UoKQogICAgICAgICAgICAgaW5pdGlhbFJlY3QgPSBbTlNXaW5kb3cgY29udGVudFJl
Y3RGb3JGcmFtZVJlY3Q6d2luZG93RnJhbWUgc3R5bGVNYXNrOndpbmRvd1N0eWxlTWFza107CiAg
ICAgfQogCi0gICAgbV9pbnNwZWN0b3JWaWV3ID0gYWRvcHROUyhbW1dLV2ViSW5zcGVjdG9yV0tW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmluaXRpYWxSZWN0IGNvbnRleHRSZWY6dG9BUEkoJnBh
Z2UoKS0+cHJvY2VzcygpLmNvbnRleHQoKSkgcGFnZUdyb3VwUmVmOnRvQVBJKGluc3BlY3RvclBh
Z2VHcm91cCgpKSByZWxhdGVkVG9QYWdlOnRvQVBJKG1fcGFnZSldKTsKKyAgICBtX2luc3BlY3Rv
clZpZXcgPSBhZG9wdE5TKFtbV0tXZWJJbnNwZWN0b3JXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6aW5pdGlhbFJlY3QgY29udGV4dFJlZjp0b0FQSSgmaW5zcGVjdG9yQ29udGV4dCgpKSBwYWdl
R3JvdXBSZWY6dG9BUEkoaW5zcGVjdG9yUGFnZUdyb3VwKCkpIHJlbGF0ZWRUb1BhZ2U6bnVsbHB0
cl0pOwogICAgIEFTU0VSVChtX2luc3BlY3RvclZpZXcpOwogCiAjaWYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA8PSAxMDkwCkBAIC00OTksMTMgKzUwMCwxMyBAQCB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybURpZENsb3NlKCkKICAgICBpZiAobV9pbnNwZWN0b3JXaW5k
b3cpIHsKICAgICAgICAgW21faW5zcGVjdG9yV2luZG93IHNldERlbGVnYXRlOm5pbF07CiAgICAg
ICAgIFttX2luc3BlY3RvcldpbmRvdyBvcmRlck91dDpuaWxdOwotICAgICAgICBtX2luc3BlY3Rv
cldpbmRvdyA9IDA7CisgICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gbmlsOwogICAgIH0KIAot
ICAgIG1faW5zcGVjdG9yVmlldyA9IDA7CisgICAgbV9pbnNwZWN0b3JWaWV3ID0gbmlsOwogCiAg
ICAgW21faW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlciBjbG9zZV07Ci0gICAgbV9pbnNwZWN0b3JQ
cm94eU9iakNBZGFwdGVyID0gMDsKKyAgICBtX2luc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIgPSBu
aWw7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSGlkZSgpCkBAIC01MTgs
NyArNTE5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1IaWRlKCkKICAgICBp
ZiAobV9pbnNwZWN0b3JXaW5kb3cpIHsKICAgICAgICAgW21faW5zcGVjdG9yV2luZG93IHNldERl
bGVnYXRlOm5pbF07CiAgICAgICAgIFttX2luc3BlY3RvcldpbmRvdyBvcmRlck91dDpuaWxdOwot
ICAgICAgICBtX2luc3BlY3RvcldpbmRvdyA9IDA7CisgICAgICAgIG1faW5zcGVjdG9yV2luZG93
ID0gbmlsOwogICAgIH0KIH0KIApAQCAtNTg5LDcgKzU5MCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3Ry
aW5nJiBjCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5IHdyaXRlVG9V
Ukw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
IGVycm9yOk5VTExdOwogCi0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3Rvcjo6RGlkU2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5n
XSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogICAgIH07CiAKICAgICBpZiAoIWZvcmNl
U2F2ZURpYWxvZykgewpAQCAtNjIzLDcgKzYyNCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcm
CiAgICAgW2hhbmRsZSB3cml0ZURhdGE6W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmddXTsKICAgICBbaGFuZGxlIGNsb3NlRmlsZV07CiAKLSAgICBtX3BhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkRpZEFwcGVuZChbYWN0dWFs
VVJMIGFic29sdXRlU3RyaW5nXSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRBcHBlbmQo
W2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsK
IH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6d2luZG93RnJhbWVEaWRDaGFuZ2UoKQpAQCAt
NzA4LDcgKzcwOSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKCkK
ICAgICBpZiAobV9pbnNwZWN0b3JXaW5kb3cpIHsKICAgICAgICAgW21faW5zcGVjdG9yV2luZG93
IHNldERlbGVnYXRlOm5pbF07CiAgICAgICAgIFttX2luc3BlY3RvcldpbmRvdyBvcmRlck91dDpu
aWxdOwotICAgICAgICBtX2luc3BlY3RvcldpbmRvdyA9IDA7CisgICAgICAgIG1faW5zcGVjdG9y
V2luZG93ID0gbmlsOwogICAgIH0KIAogICAgIFttX2luc3BlY3RvclZpZXcgcmVtb3ZlRnJvbVN1
cGVydmlld107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNjdjMzZmMC4uZDBhOTJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDk1LDEwICs0OTUsMTAgQEAK
IAkJMUFGRTQzNjUxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUZFNDM2MzE4QjZDMDgxMDA5QzdB
NDggLyogVUlEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJMUFGRTQzNjYxOEI2QzA4MTAwOUM3QTQ4IC8q
IFVJRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBRkU0MzY0MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLmggKi87IH07CiAJCTFB
RkY0OTAwMTgzM0RFNzgwMDlBQjE1QSAvKiBXS0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRjQ4RkUxODMzREU3
ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAgKi87IH07CisJCTFDODkxRDY1
MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzg5MUQ2MjE5QjEyNEZGMDBCQTc5REQgLyog
V2ViSW5zcGVjdG9yVUkuY3BwICovOyB9OworCQkxQzg5MUQ2NjE5QjEyNEZGMDBCQTc5REQgLyog
V2ViSW5zcGVjdG9yVUkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDODkxRDYzMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5oICovOyB9
OwogCQkxQzhBRTc2MTE5OTJGNjNBMDBBQkY2RUMgLyogRG9ja0JvdHRvbUxlZ2FjeS5wZGYgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEFFNzVGMTk5
MkY2MkYwMEFCRjZFQyAvKiBEb2NrQm90dG9tTGVnYWN5LnBkZiAqLzsgfTsKIAkJMUM4QUU3NjIx
OTkyRjYzQzAwQUJGNkVDIC8qIERvY2tSaWdodExlZ2FjeS5wZGYgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEFFNzYwMTk5MkY2MkYwMEFCRjZFQyAv
KiBEb2NrUmlnaHRMZWdhY3kucGRmICovOyB9OwotCQkxQzhFMjVBODEyNzBFM0JCMDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI1NkIxMjcwREUzODAwQkM3QkQwIC8qIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCAqLzsgfTsKLQkJMUM4RTI1QTkxMjcwRTNCQzAwQkM3
QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjU2QTEyNzBERTM4MDBCQzdCRDAgLyogV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLzsgfTsKIAkJMUM4RTI4MjAxMjc1RDE1NDAwQkM3
QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUM4RTI4MUUxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oICov
OyB9OwogCQkxQzhFMjgyMTEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyODFGMTI3NUQx
NTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3BwICovOyB9OwogCQkxQzhFMjgzNDEyNzVENzM4
MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyODMyMTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNw
ZWN0b3JQcm94eS5oICovOyB9OwpAQCAtNTEwLDggKzUxMCwxMCBAQAogCQkxQ0E4QjkzNjEyN0M3
NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0E4QjkzNTEyN0M3NzRFMDA1NzZDMkIgLyog
V2ViSW5zcGVjdG9yUHJveHlNYWMubW0gKi87IH07CiAJCTFDQThCOTQ1MTI3Qzg4MkEwMDU3NkMy
QiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0E4Qjk0MzEyN0M4ODJBMDA1NzZDMkIg
LyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkxQ0E4Qjk0
NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBOEI5NDQxMjdDODgyQTAw
NTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKLQkJMUNBOEI5NTQx
MjdDODkxNTAwNTc2QzJCIC8qIFdlYkluc3BlY3Rvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JNYWMubW0gKi87IH07CisJCTFDQThCOTU0MTI3Qzg5MTUwMDU3NkMyQiAvKiBX
ZWJJbnNwZWN0b3JVSU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JVSU1hYy5t
bSAqLzsgfTsKIAkJMUNCNzVDOTQxNzAxRTg4MDAwOUY4MDlGIC8qIERvY2tSaWdodC5wZGYgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQjc1QzkzMTcw
MUU4ODAwMDlGODA5RiAvKiBEb2NrUmlnaHQucGRmICovOyB9OworCQkxQ0JCRTRBMDE5QjY2QzUz
MDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCQkU0OUUxOUI2NkM1MzAwNkI3
RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJMUNCQkU0
QTExOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQkJFNDlGMTlCNjZDNTMwMDZC
N0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggKi87IH07CiAJCTFDQkM5NDVFMTY1MTVF
RDIwMEQ2OEFBRSAvKiBEb2NrQm90dG9tLnBkZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCQzk0NUQxNjUxNUVEMjAwRDY4QUFFIC8qIERvY2tCb3R0
b20ucGRmICovOyB9OwogCQkxRjMzNUJDMDE4NUI4NEYwMDAxQTIwMUEgLyogV0tXZWJQcm9jZXNz
UGx1Z0luTG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxRjMzNUJCRjE4NUI4NEQ4MDAxQTIwMUEgLyogV0tXZWJQcm9jZXNzUGx1Z0lu
TG9hZERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMUY2MDRCQTgxODg5RkE3NDAwRUUwMzk1IC8qIFdLUmVuZGVyaW5nUHJvZ3Jlc3NF
dmVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFG
NjA0QkE2MTg4OUZBNzQwMEVFMDM5NSAvKiBXS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI0NzUsMTAg
KzI0NzcsMTEgQEAKIAkJMUFGRjQ4RkUxODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1
bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0RlcHJl
Y2F0ZWRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQkI0MTdD
OTEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNzdDMTk1MTI4OEE4NzIwMDZBNzQyRiAvKiBX
ZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJ
bnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM4OTFENjIxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM4OTFENjMxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3Bl
Y3RvclVJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclVJ
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDODkxRDY0MTlCMTI0RkYwMEJBNzlE
RCAvKiBXZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUM4QUU3NUYxOTkyRjYyRjAwQUJGNkVDIC8qIERvY2tCb3R0b21MZWdhY3kucGRmICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBuYW1l
ID0gRG9ja0JvdHRvbUxlZ2FjeS5wZGY7IHBhdGggPSBSZXNvdXJjZXMvRG9ja0JvdHRvbUxlZ2Fj
eS5wZGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEFFNzYwMTk5MkY2MkYwMEFC
RjZFQyAvKiBEb2NrUmlnaHRMZWdhY3kucGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBuYW1lID0gRG9ja1JpZ2h0TGVnYWN5LnBk
ZjsgcGF0aCA9IFJlc291cmNlcy9Eb2NrUmlnaHRMZWdhY3kucGRmOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkxQzhFMjU2QTEyNzBERTM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4RTI1
NkIxMjcwREUzODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RTI4MUUxMjc1RDE1NDAw
QkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJJbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RTI4MUYx
Mjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQzhFMjgzMjEyNzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0ODgsMTEgKzI0OTEsMTMgQEAKIAkJMUM4RTJB
MUMxMjc3ODMzRjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3IubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDOEUyQTMxMTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
SW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUM4RTJBMzIxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3Rvck1lc3NhZ2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJJbnNwZWN0b3JNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOEUy
REFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJTWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0E4QjkzNTEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5z
cGVjdG9yUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUNBOEI5NDMxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3Rv
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUNBOEI5NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0I3NUM5MzE3MDFFODgwMDA5Rjgw
OUYgLyogRG9ja1JpZ2h0LnBkZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGltYWdlLnBkZjsgbmFtZSA9IERvY2tSaWdodC5wZGY7IHBhdGggPSBSZXNv
dXJjZXMvRG9ja1JpZ2h0LnBkZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCQkU0
OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJTWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCQkU0OUYxOUI2
NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQ0JDOTQ1RDE2NTE1RUQyMDBENjhBQUUgLyogRG9ja0JvdHRvbS5w
ZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFn
ZS5wZGY7IG5hbWUgPSBEb2NrQm90dG9tLnBkZjsgcGF0aCA9IFJlc291cmNlcy9Eb2NrQm90dG9t
LnBkZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDNDE3QzkxMkMwMENDQTAwMkJF
NjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUYwMTgxNjkxODU4REMxNTAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViUHJvY2Vzc1BsdWdJbkZy
YW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NjYyLDggKzU2NjcsNiBAQAog
CQkJCUJDMUJFMURFMTJENTRBNDEwMDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlvbkNsaWVudC5oICov
LAogCQkJCUJDMTExQTU5MTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJJbnNwZWN0b3JDbGllbnQuY3Bw
ICovLAogCQkJCUJDMDMyRDZEMTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJJbnNwZWN0b3JDbGllbnQu
aCAqLywKLQkJCQkxQzhFMjU2QjEyNzBERTM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQuY3BwICovLAotCQkJCTFDOEUyNTZBMTI3MERFMzgwMEJDN0JEMCAvKiBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudC5oICovLAogCQkJCTMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAv
KiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwICovLAogCQkJCTMxMDk5OTY4MTQ2QzcxRjUwMDI5
REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLywKIAkJCQk1MTIxMjdDMTE5MDgyMzlB
MDBEQUYzNUMgLyogV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAgKi8sCkBAIC01NzIzLDYgKzU3
MjYsOSBAQAogCQkJCTFDOEUyODFGMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3Bw
ICovLAogCQkJCTFDOEUyODFFMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuaCAqLywK
IAkJCQkxQzhFMkExQzEyNzc4MzNGMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmlu
ICovLAorCQkJCTFDODkxRDYyMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAg
Ki8sCisJCQkJMUM4OTFENjMxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggKi8s
CisJCQkJMUM4OTFENjQxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLm1lc3NhZ2Vz
LmluICovLAogCQkJCUJDODU3Rjg0MTJCODJEMEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci5jcHAgKi8sCiAJCQkJQkM4NTdGODMxMkI4MkQwQjAwRURFQjJFIC8qIFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi8sCiAJCQkJQkM5NjNENkExMTNERDE5MjAwNTc0QkUy
IC8qIFdlYlBhZ2UuY3BwICovLApAQCAtNjQ3MSw3ICs2NDc3LDcgQEAKIAkJCQk1MTkyRDU3NTE5
NjFGRDAzMDBDRDE5QUEgLyogU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbSAqLywKIAkJCQkx
QUFGMjYzNzE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
aCAqLywKIAkJCQkxQUFGMjYzNjE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW0gKi8sCi0JCQkJMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYklu
c3BlY3Rvck1hYy5tbSAqLywKKwkJCQkxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAgLyogV2ViSW5z
cGVjdG9yVUlNYWMubW0gKi8sCiAJCQkJQkM5NjNENkQxMTNERDFBNTAwNTc0QkUyIC8qIFdlYlBh
Z2VNYWMubW0gKi8sCiAJCQkJMjlDRDU1QTgxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggKi8sCiAJCQkJMjlDRDU1QTkxMjhFMjk0RjAwMTMzQzg1
IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tICovLApAQCAtNjgyNyw2ICs2
ODMzLDggQEAKIAkJCQkxQzhFMkEzMjEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVz
c2FnZXMuaCAqLywKIAkJCQkxQ0E4Qjk0MzEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9y
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMy
QiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJMUNCQkU0OUUxOUI2NkM1
MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQkx
Q0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oICovLAog
CQkJCTMzRDNBM0M0MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMzNEM0EzQzUxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1l
ZGlhQ2FjaGVNYW5hZ2VyTWVzc2FnZXMuaCAqLywKIAkJCQkzM0QzQTNDNjEzMzk2MTc5MDA3MDlC
RTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBA
IC03NDM4LDYgKzc0NDYsNyBAQAogCQkJCTJEQUNFNjRFMThBREJGRjAwMEU0Q0E3NiAvKiBfV0tU
aHVtYm5haWxWaWV3SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNTc4QjgzMTIwOUVD
RUYwMEEzN0M0QSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNkEyNUZERDEyQURD
NkNDMDBEQzQwQ0MgLyogV2ViRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkx
Qzg5MUQ2NjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUY2MkE3NkI3MTJCMUIyNUYwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYyQTc2NUQxMkIxQUJDMzAwMDVGMUI2IC8qIFdl
YkRhdGFiYXNlTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZBQjU0MTE5MkIx
QzRBMDAzQTlGRDEgLyogV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywK
QEAgLTc0OTQsNyArNzUwMyw2IEBACiAJCQkJMUM4RTI4MjAxMjc1RDE1NDAwQkM3QkQwIC8qIFdl
Ykluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzQ0MxNjcxODkwNkFDRjAwMUU2RUQ4
IC8qIFdLV2ViVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJEODIxMEY0Mzc4RDAwNThD
MTVBIC8qIFdlYkluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUM4RTI1QTkx
MjcwRTNCQzAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQzhFMkEzNjEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyODM0MTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJ
bnNwZWN0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBOEI5NDYxMjdDODgyQTAwNTc2
QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzc2
Miw2ICs3NzcwLDcgQEAKIAkJCQlGNjM0NDQ1RDEyQTg4NUU5MDAwNjEyRDggLyogV0tTZWN1cml0
eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjA4QjgxOTI2OUU2RDAwQjYzOTBDIC8q
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzQwNzYwNDEyNEZGMDI3MDA2OEYyMEEgLyogV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTFDQkJFNEExMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU0QzE4QkJFMDQ0MDAwRkNGQzkg
LyogV0tDb250ZW50Vmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdBNjRFNTcxOEYzOEY0NjAw
RUIzMEYxIC8qIF9XS0Zvcm1JbnB1dFNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFGNjA0
QkFBMTg4OUZCQjgwMEVFMDM5NSAvKiBXS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzSW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovLApAQCAtODg2NSw2ICs4ODc0LDcgQEAKIAkJCQkwMEI5NjYxOTE4RTI1
QUUxMDBDRTFGODggLyogRmluZENsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBRTVCN0ZC
MTFFN0FFRDIwMEJBNjc2NyAvKiBOZXRzY2FwZVBsdWdpbk1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTdDMzYxRDcyMTkyN0ZBMzYwMDM2QTU5RCAvKiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkxQzg5MUQ2NTE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5z
cGVjdG9yVUkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDNTUxMkI4MTZDRjAwOEZFOTg0
IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNEE5QzlB
MTJCODIxQ0QwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBQTU4ODkzMTFFRTcwNDAwMDYxQjg4MiAvKiBOZXRzY2FwZVBsdWdpblN0cmVh
bS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg5MDMsNiArODkxMyw3IEBACiAJCQkJMUEyRDg0Mzkx
MjdGNjVENTAwMUVCOTYyIC8qIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQUYwOEFEMTkyNjkzNjcwMEI2MzkwQyAvKiBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDgyQTYxMjdG
NEVBQjAwMUVCOTYyIC8qIE5QT2JqZWN0UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUNC
QkU0QTAxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ4MkE4MTI3RjRFQUIwMDFFQjk2MiAvKiBOUFJlbW90
ZU9iamVjdE1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTIxNjFCMTExRjM3NjY0MDA4QUQw
RjUgLyogTlBSdW50aW1lT2JqZWN0TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjE2MkIw
MTFGMzg5NzEwMDhBRDBGNSAvKiBOUFJ1bnRpbWVVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC05MTYyLDggKzkxNzMsNyBAQAogCQkJCUJDQ0Y2QUJDMTJDOTFFRjkwMDhGOUMzNSAvKiBX
ZWJJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzhFMjgyMTEyNzVEMTU0MDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTExQTYwMTEyRjRGQkIw
MDMzN0JBQiAvKiBXZWJJbnNwZWN0b3JDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUM4
RTI1QTgxMjcwRTNCQjAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTFDQThCOTU0MTI3Qzg5MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0
b3JNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQ0E4Qjk1NDEyN0M4OTE1MDA1NzZDMkIgLyog
V2ViSW5zcGVjdG9yVUlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzhFMkEzNTEyNzc4NTI0
MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFDOEUyODM1MTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQ0E4QjkzNjEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVj
dG9yUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNw
cAppbmRleCA1MDFkNDFjLi44NTkzNThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC04NCwyMCArODQsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ry
b3llZCgpCiAKIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9y
Q2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJv
bGxlcikKIHsKLSAgICBXZWJQYWdlKiBpbnNwZWN0b3JQYWdlID0gY29udHJvbGxlci0+aXNVbmRl
clRlc3QoKSA/IG1fcGFnZS0+aW5zcGVjdG9yKCktPmNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0
KCkgOiBtX3BhZ2UtPmluc3BlY3RvcigpLT5jcmVhdGVJbnNwZWN0b3JQYWdlKCk7Ci0gICAgQVNT
RVJUX1VOVVNFRChpbnNwZWN0b3JQYWdlLCBpbnNwZWN0b3JQYWdlKTsKLSAgICByZXR1cm4gdGhp
czsKKyAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5jcmVhdGVJbnNwZWN0b3JQYWdlKGNvbnRyb2xs
ZXItPmlzVW5kZXJUZXN0KCkpOworCisgICAgcmV0dXJuIG1fcGFnZS0+aW5zcGVjdG9yKCk7CiB9
CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKCkKIHsK
ICAgICBpZiAobV9wYWdlLT5pbnNwZWN0b3IoKSkKLSAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3Io
KS0+ZGlkQ2xvc2UoKTsKKyAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y2xvc2VGcm9udGVu
ZCgpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6YnJpbmdGcm9udGVuZFRvRnJvbnQo
KQogewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmJyaW5nVG9Gcm9udCgpOworICAgIGlmICht
X3BhZ2UtPmluc3BlY3RvcigpKQorICAgICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5icmluZ1Rv
RnJvbnQoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFJlc2l6ZU1haW5GcmFt
ZShGcmFtZSopCkBAIC0xOTcsMzQgKzE5OCw2IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojpk
aWRTZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCkKIH0KICNlbmRpZgogCi1ib29sIFdl
Ykluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKLXsKLSAgICBXZWJJbnNwZWN0b3IqIGluc3BlY3RvciA9IG1fcGFnZS0+aW5zcGVjdG9y
KCk7Ci0gICAgaWYgKCFpbnNwZWN0b3IpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotI2lmIEVO
QUJMRShJTlNQRUNUT1JfU0VSVkVSKQotICAgIGlmIChpbnNwZWN0b3ItPmhhc1JlbW90ZUZyb250
ZW5kQ29ubmVjdGVkKCkpIHsKLSAgICAgICAgaW5zcGVjdG9yLT5zZW5kTWVzc2FnZVRvUmVtb3Rl
RnJvbnRlbmQobWVzc2FnZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSNlbmRpZgot
Ci0gICAgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSA9IGluc3BlY3Rvci0+aW5zcGVjdG9yUGFnZSgp
OwotICAgIGlmIChpbnNwZWN0b3JQYWdlKQotICAgICAgICByZXR1cm4gZG9EaXNwYXRjaE1lc3Nh
Z2VPbkZyb250ZW5kUGFnZShpbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLCBtZXNzYWdlKTsKLQot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnN1cHBvcnRz
RnJhbWVJbnN0cnVtZW50YXRpb24oKQotewotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
LSAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgotICAgIHJldHVybiBmYWxzZTsKLX0KLQogdm9pZCBX
ZWJJbnNwZWN0b3JDbGllbnQ6OnBhZ2VPdmVybGF5RGVzdHJveWVkKFBhZ2VPdmVybGF5KikKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDcwMzNiZGUuLjc5OGNhYzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNDUsMjIgKzQ1LDIzIEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudDsK
IAotY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNs
aWVudCwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCwgcHJpdmF0ZSBQ
YWdlT3ZlcmxheTo6Q2xpZW50IHsKK2NsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBX
ZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHByaXZhdGUgUGFnZU92ZXJsYXk6OkNsaWVudCB7CiBm
cmllbmQgY2xhc3MgUmVwYWludEluZGljYXRvckxheWVyQ2xpZW50OwogcHVibGljOgogICAgIFdl
Ykluc3BlY3RvckNsaWVudChXZWJQYWdlKik7CiAgICAgdmlydHVhbCB+V2ViSW5zcGVjdG9yQ2xp
ZW50KCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgp
IG92ZXJyaWRlOworICAgIC8vIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudAorICAgIHZvaWQgaW5z
cGVjdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVu
ZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNpemVNYWluRnJhbWUoV2ViQ29yZTo6RnJh
bWUqKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9w
ZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVzaXplTWFp
bkZyYW1lKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGln
aGxpZ2h0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGhpZ2hsaWdodCgpIG92ZXJyaWRlOworICAgIHZvaWQgaGlkZUhpZ2hs
aWdodCgpIG92ZXJyaWRlOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgdm9pZCBz
aG93SW5zcGVjdG9ySW5kaWNhdGlvbigpIG92ZXJyaWRlOwpAQCAtNzIsMTAgKzczLDYgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgb3ZlcnJpZGVzU2hvd1BhaW50UmVjdHMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNob3dQYWludFJlY3Qo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotCi0gICAgdmly
dHVhbCBib29sIHN1cHBvcnRzRnJhbWVJbnN0cnVtZW50YXRpb24oKTsKLQogICAgIC8vIFBhZ2VP
dmVybGF5OjpDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgcGFnZU92ZXJsYXlEZXN0cm95ZWQoUGFn
ZU92ZXJsYXkqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb1dlYlBhZ2Uo
UGFnZU92ZXJsYXkqLCBXZWJQYWdlKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDNk
YWUxLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTIx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCIKLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0KLSNp
bmNsdWRlICJXZWJJbnNwZWN0b3IuaCIKLSNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+
Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLVdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudChXZWJQYWdlKiBwYWdlLCBXZWJQYWdlKiBpbnNwZWN0b3JQYWdlKQotICAg
IDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLCBpbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLCBzdGQ6Om1ha2VfdW5p
cXVlPFNldHRpbmdzPigpKQotICAgICwgbV9wYWdlKHBhZ2UpCi17Ci19Ci0KLVN0cmluZyBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCi17Ci0gICAgcmV0
dXJuIG1fcGFnZS0+aW5zcGVjdG9yKCktPmxvY2FsaXplZFN0cmluZ3NVUkwoKTsKLX0KLQotdm9p
ZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YnJpbmdUb0Zyb250KCkKLXsKLSAgICBtX3Bh
Z2UtPmluc3BlY3RvcigpLT5icmluZ1RvRnJvbnQoKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6Y2xvc2VXaW5kb3coKQotewotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7Ci0gICAgbV9wYWdlLT5p
bnNwZWN0b3IoKS0+ZGlkQ2xvc2UoKTsKLX0KLQotYm9vbCBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6Y2FuU2F2ZSgpCi17Ci0gICAgcmV0dXJuIG1fcGFnZS0+aW5zcGVjdG9yKCktPmNhblNh
dmUoKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2F2ZShjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2Rl
ZCwgYm9vbCBmb3JjZVNhdmVBcykKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5zYXZlKGZp
bGVuYW1lLCBjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBmb3JjZVNhdmVBcyk7Ci19Ci0KLXZvaWQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCi17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YXBw
ZW5kKGZpbGVuYW1lLCBjb250ZW50KTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6YXR0YWNoV2luZG93KERvY2tTaWRlIGRvY2tTaWRlKQotewotICAgIHN3aXRjaCAoZG9j
a1NpZGUpIHsKLSAgICBjYXNlIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6VW5k
b2NrZWQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6Qm90dG9tOgotICAgICAg
ICBtX3BhZ2UtPmluc3BlY3RvcigpLT5hdHRhY2hCb3R0b20oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU6OlJpZ2h0OgotICAgICAg
ICBtX3BhZ2UtPmluc3BlY3RvcigpLT5hdHRhY2hSaWdodCgpOwotICAgICAgICBicmVhazsKLSAg
ICB9Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRldGFjaFdpbmRvdygp
Ci17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+ZGV0YWNoKCk7Ci19Ci0KLXZvaWQgV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhl
aWdodCkKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5zZXRBdHRhY2hlZFdpbmRvd0hlaWdo
dChoZWlnaHQpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRBdHRh
Y2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9y
KCktPnNldEF0dGFjaGVkV2luZG93V2lkdGgod2lkdGgpOwotfQotCi12b2lkIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKLXsKLSAg
ICBtX3BhZ2UtPmluc3BlY3RvcigpLT5zZXRUb29sYmFySGVpZ2h0KGhlaWdodCk7Ci19Ci0KLXZv
aWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcpCi17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+aW5zcGVjdGVk
VVJMQ2hhbmdlZCh1cmxTdHJpbmcpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IDU2MTI5N2EuLjQ3NzQzNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNywxMTcgKzI3LDgyIEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yLmgiCiAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQorCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKLSNpbmNsdWRlICJXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudC5oIgorI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYklu
c3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSAiV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0Nocm9tZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZFJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0luc3BlY3RvclBhZ2VBZ2VudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaD4KLSNpbmNsdWRlIDxiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAorc3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1BdHRhY2hlZEhlaWdodCA9IDI1MDsKK3N0
YXRpYyBjb25zdCBmbG9hdCBtYXhpbXVtQXR0YWNoZWRIZWlnaHRSYXRpbyA9IDAuNzU7CitzdGF0
aWMgY29uc3QgZmxvYXQgbWluaW11bUF0dGFjaGVkV2lkdGggPSA3NTA7CisKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1QYXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gV2ViSW5zcGVjdG9yOjpjcmVhdGUo
V2ViUGFnZSogcGFnZSwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwp
CitQYXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gV2ViSW5zcGVjdG9yOjpjcmVhdGUoV2ViUGFnZSog
cGFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvcihwYWdlLCBmcm9u
dGVuZENoYW5uZWwpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvcihwYWdl
KSk7CiB9CiAKLVdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlBhZ2UqIHBhZ2UsIEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQorV2ViSW5zcGVjdG9yOjpXZWJJ
bnNwZWN0b3IoV2ViUGFnZSogcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQotICAgICwgbV9pbnNw
ZWN0b3JQYWdlKG51bGxwdHIpCi0gICAgLCBtX2Zyb250ZW5kQ2xpZW50KG51bGxwdHIpCi0gICAg
LCBtX2Zyb250ZW5kQ2hhbm5lbChmcm9udGVuZENoYW5uZWwpCi0jaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgLCBtX2hhc0xvY2FsaXplZFN0cmluZ3NVUkwoZmFsc2UpCi0jZW5kaWYKLSNpZiBFTkFC
TEUoSU5TUEVDVE9SX1NFUlZFUikKLSAgICAsIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoZmFs
c2UpCi0jZW5kaWYKKyAgICAsIG1fYXR0YWNoZWQoZmFsc2UpCisgICAgLCBtX3ByZXZpb3VzQ2Fu
QXR0YWNoKGZhbHNlKQogewogfQogCiAvLyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JDbGllbnQK
LVdlYlBhZ2UqIFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zcGVjdG9yUGFnZSgpCit2b2lkIFdlYklu
c3BlY3Rvcjo6Y3JlYXRlSW5zcGVjdG9yUGFnZShib29sIHVuZGVyVGVzdCkKIHsKICAgICBpZiAo
IW1fcGFnZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBBU1NFUlQoIW1faW5zcGVj
dG9yUGFnZSk7Ci0gICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2xpZW50KTsKLQotICAgIHVpbnQ2NF90
IGluc3BlY3RvclBhZ2VJRCA9IDA7Ci0gICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwotCi0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUlu
c3BlY3RvclBhZ2UoKSwKLSAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6
Q3JlYXRlSW5zcGVjdG9yUGFnZTo6UmVwbHkoaW5zcGVjdG9yUGFnZUlELCBwYXJhbWV0ZXJzKSwK
LSAgICAgICAgICAgIG1fcGFnZS0+cGFnZUlEKCksIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM6
Om1heCgpKSkgewotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgICAgIHJldHVy
bjsKIAotICAgIGlmICghaW5zcGVjdG9yUGFnZUlEKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyNpZiBPUyhEQVJXSU4pCisgICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKKyAgICBtYWNo
X3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUs
ICZsaXN0ZW5pbmdQb3J0KTsKKworICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25u
ZWN0aW9uSWRlbnRpZmVyKGxpc3RlbmluZ1BvcnQpOworICAgIElQQzo6QXR0YWNobWVudCBjb25u
ZWN0aW9uQ2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7
CisjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICBJUEM6OkNvbm5lY3Rpb246OlNv
Y2tldFBhaXIgc29ja2V0UGFpciA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25u
ZWN0aW9uKCk7CisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVu
dGlmZXIoc29ja2V0UGFpci5zZXJ2ZXIpOworICAgIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9u
Q2xpZW50UG9ydChzb2NrZXRQYWlyLmNsaWVudCk7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuOworI2VuZGlmCiAKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jcmVh
dGVXZWJQYWdlKGluc3BlY3RvclBhZ2VJRCwgcGFyYW1ldGVycyk7Ci0gICAgbV9pbnNwZWN0b3JQ
YWdlID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViUGFnZShpbnNwZWN0b3JQYWdlSUQpOwotICAg
IEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uID0gSVBD
OjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmZXIs
IHRoaXMsIFJ1bkxvb3A6Om1haW4oKSk7CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPm9wZW4o
KTsKIAotICAgIGF1dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50PihtX3BhZ2UsIG1faW5zcGVjdG9yUGFnZSk7Ci0gICAgbV9mcm9u
dGVuZENsaWVudCA9IGZyb250ZW5kQ2xpZW50LmdldCgpOwotICAgIG1faW5zcGVjdG9yUGFnZS0+
Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KFdURjo6bW92ZShmcm9udGVuZENsaWVudCkpOwotICAgIHJldHVybiBtX2luc3BlY3RvclBh
Z2U7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2UoY29u
bmVjdGlvbkNsaWVudFBvcnQsIGNhbkF0dGFjaFdpbmRvdygpLCB1bmRlclRlc3QpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKIH0KIAotV2ViUGFnZSogV2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQ
YWdlRm9yVGVzdCgpCit2b2lkIFdlYkluc3BlY3Rvcjo6Y2xvc2VGcm9udGVuZCgpCiB7Ci0gICAg
aWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgQVNTRVJUKCFtX2lu
c3BlY3RvclBhZ2UpOwotICAgIEFTU0VSVCghbV9mcm9udGVuZENsaWVudCk7Ci0KLSAgICB1aW50
NjRfdCBpbnNwZWN0b3JQYWdlSUQgPSAwOwotICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMg
cGFyYW1ldGVyczsKLQotICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpDcmVh
dGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgpLAotICAgICAgICAgICAgTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpDcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdDo6UmVwbHkoaW5zcGVjdG9yUGFn
ZUlELCBwYXJhbWV0ZXJzKSwKLSAgICAgICAgICAgIG1fcGFnZS0+cGFnZUlEKCksIHN0ZDo6Y2hy
b25vOjptaWxsaXNlY29uZHM6Om1heCgpKSkgewotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9Ci0KLSAgICBpZiAoIWluc3BlY3RvclBhZ2VJRCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jcmVhdGVXZWJQYWdlKGluc3BlY3RvclBhZ2VJ
RCwgcGFyYW1ldGVycyk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlID0gV2ViUHJvY2Vzczo6c2hhcmVk
KCkud2ViUGFnZShpbnNwZWN0b3JQYWdlSUQpOwotICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2Up
OwotCi0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ+KG1fcGFnZSwgbV9pbnNwZWN0b3JQYWdlKTsKLSAgICBtX2Zyb250
ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQuZ2V0KCk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5j
b3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9yUGFn
ZTsKLX0KKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGlkQ2xvc2UoKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpkZXN0cm95SW5zcGVjdG9yUGFnZSgpCi17
Ci0gICAgbV9pbnNwZWN0b3JQYWdlID0gbnVsbHB0cjsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0g
bnVsbHB0cjsKLSAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7Ci19CisgICAgbV9mcm9u
dGVuZENvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbiA9
IG51bGxwdHI7CiAKLS8vIENhbGxlZCBmcm9tIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ci12
b2lkIFdlYkluc3BlY3Rvcjo6ZGlkQ2xvc2UoKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclBy
b3h5OjpEaWRDbG9zZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICBkZXN0cm95SW5zcGVjdG9y
UGFnZSgpOworICAgIG1fYXR0YWNoZWQgPSBmYWxzZTsKKyAgICBtX3ByZXZpb3VzQ2FuQXR0YWNo
ID0gZmFsc2U7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpicmluZ1RvRnJvbnQoKQpAQCAtMTQ1
LDUxICsxMTAsNiBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6YnJpbmdUb0Zyb250KCkKICAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250KCksIG1fcGFnZS0+cGFnZUlEKCkpOwog
fQogCi12b2lkIFdlYkluc3BlY3Rvcjo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcm
IHVybFN0cmluZykKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6SW5zcGVjdGVkVVJM
Q2hhbmdlZCh1cmxTdHJpbmcpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNw
ZWN0b3I6OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCi17Ci0gICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZv
cmNlU2F2ZUFzKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjph
cHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KQotewot
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OmF0dGFjaEJvdHRvbSgp
Ci17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaEJvdHRvbSgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OmF0dGFjaFJpZ2h0KCkKLXsKLSAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoUmlnaHQoKSwgbV9wYWdlLT5wYWdlSUQo
KSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpkZXRhY2goKQotewotICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjpEZXRhY2goKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2Vi
SW5zcGVjdG9yOjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCi17Ci0g
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdo
dCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6c2V0QXR0YWNo
ZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6U2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh3aWR0aCksIG1fcGFnZS0+cGFnZUlEKCkpOwot
fQotCi12b2lkIFdlYkluc3BlY3Rvcjo6c2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCBoZWlnaHQp
Ci17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldFRvb2xiYXJIZWlnaHQoaGVpZ2h0
KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3IgbWVz
c2FnZXMKIHZvaWQgV2ViSW5zcGVjdG9yOjpzaG93KCkKIHsKQEAgLTIwMSwzNCArMTIxLDE3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZSgpCiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuY2xvc2UoKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OmRpZFNh
dmUoY29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7Ci0g
ICAgbV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVj
dXRlU2NyaXB0KG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLnNhdmVkVVJMKFwiIiwg
dXJsLCAiXCIpIikpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6ZGlkQXBwZW5kKGNvbnN0IFN0
cmluZyYgdXJsKQotewotICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOwotICAgIG1faW5zcGVj
dG9yUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdCht
YWtlU3RyaW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5hcHBlbmRlZFRvVVJMKFwiIiwgdXJsLCAi
XCIpIikpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNoZWRCb3R0b20oKQordm9pZCBX
ZWJJbnNwZWN0b3I6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAg
ICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0QXR0
YWNoZWRXaW5kb3coSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpCb3R0b20pOwot
fQorICAgIFBhZ2UqIGluc3BlY3RlZFBhZ2UgPSBtX3BhZ2UtPmNvcmVQYWdlKCk7CisgICAgRnJh
bWUmIGluc3BlY3RlZE1haW5GcmFtZSA9IGluc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpOworICAg
IEZyYW1lTG9hZFJlcXVlc3QgcmVxdWVzdChpbnNwZWN0ZWRNYWluRnJhbWUuZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KHVybFN0cmluZyksICJfYmxhbmsiKTsK
IAotdm9pZCBXZWJJbnNwZWN0b3I6OmF0dGFjaGVkUmlnaHQoKQotewotICAgIGlmIChtX2Zyb250
ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRBdHRhY2hlZFdpbmRvdyhJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU6OlJpZ2h0KTsKLX0KKyAgICBQYWdlKiBu
ZXdQYWdlID0gaW5zcGVjdGVkUGFnZS0+Y2hyb21lKCkuY3JlYXRlV2luZG93KCZpbnNwZWN0ZWRN
YWluRnJhbWUsIHJlcXVlc3QsIFdpbmRvd0ZlYXR1cmVzKCksIE5hdmlnYXRpb25BY3Rpb24ocmVx
dWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgTmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tlZCkpOworICAg
IGlmICghbmV3UGFnZSkKKyAgICAgICAgcmV0dXJuOwogCi12b2lkIFdlYkluc3BlY3Rvcjo6ZGV0
YWNoZWQoKQotewotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5k
Q2xpZW50LT5zZXRBdHRhY2hlZFdpbmRvdyhJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6RG9ja1Np
ZGU6OlVuZG9ja2VkKTsKKyAgICBuZXdQYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5sb2FkKHJl
cXVlc3QpOwogfQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6ZXZhbHVhdGVTY3JpcHRGb3JUZXN0KGNv
bnN0IFN0cmluZyYgc2NyaXB0KQpAQCAtMjM5LDEwOCArMTQyLDk0IEBAIHZvaWQgV2ViSW5zcGVj
dG9yOjpldmFsdWF0ZVNjcmlwdEZvclRlc3QoY29uc3QgU3RyaW5nJiBzY3JpcHQpCiB2b2lkIFdl
Ykluc3BlY3Rvcjo6c2hvd0NvbnNvbGUoKQogewogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAg
ICAgICAgbV9mcm9udGVuZENsaWVudC0+c2hvd0NvbnNvbGUoKTsKKyAgICBtX2Zyb250ZW5kQ29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNob3dDb25zb2xlKCksIDAp
OwogfQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6c2hvd1Jlc291cmNlcygpCiB7CiAgICAgbV9wYWdl
LT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zy
b250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zaG93UmVzb3VyY2VzKCk7
CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpTaG93UmVzb3VyY2VzKCksIDApOwogfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6c2hvd01haW5S
ZXNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCit2b2lkIFdlYkluc3BlY3Rvcjo6c2hv
d01haW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSWRlbnRpZmllcikKIHsKLSAgICBX
ZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKTsK
KyAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFt
ZUlkZW50aWZpZXIpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
cGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAo
bV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2hvd01haW5SZXNv
dXJjZUZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSk7Ci19CiAKLXZvaWQgV2ViSW5zcGVjdG9y
OjpzdGFydEphdmFTY3JpcHREZWJ1Z2dpbmcoKQotewotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkK
LSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0RGVidWdnaW5nRW5hYmxlZCh0cnVlKTsKKyAg
ICBTdHJpbmcgaW5zcGVjdG9yRnJhbWVJZGVudGlmaWVyID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5p
bnNwZWN0b3JDb250cm9sbGVyKCkucGFnZUFnZW50KCktPmZyYW1lSWQoZnJhbWUtPmNvcmVGcmFt
ZSgpKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUk6OlNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShpbnNwZWN0b3JGcmFtZUlkZW50aWZpZXIp
LCAwKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OnN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCkK
K3ZvaWQgV2ViSW5zcGVjdG9yOjpzdGFydFBhZ2VQcm9maWxpbmcoKQogewogICAgIG1fcGFnZS0+
Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9u
dGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0RGVidWdnaW5nRW5hYmxl
ZChmYWxzZSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5n
RW5hYmxlZChib29sKQotewotICAgIC8vIE5vIGxvbmdlciBzdXBwb3J0ZWQuCisgICAgbV9mcm9u
dGVuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTdGFydFBhZ2VQ
cm9maWxpbmcoKSwgMCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpzdGFydEphdmFTY3JpcHRQ
cm9maWxpbmcoKQordm9pZCBXZWJJbnNwZWN0b3I6OnN0b3BQYWdlUHJvZmlsaW5nKCkKIHsKLSAg
ICAvLyBObyBsb25nZXIgc3VwcG9ydGVkLgorICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLnNob3coKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlN0b3BQYWdlUHJvZmlsaW5nKCksIDApOwogfQogCi12
b2lkIFdlYkluc3BlY3Rvcjo6c3RvcEphdmFTY3JpcHRQcm9maWxpbmcoKQorYm9vbCBXZWJJbnNw
ZWN0b3I6OmNhbkF0dGFjaFdpbmRvdygpCiB7Ci0gICAgLy8gTm8gbG9uZ2VyIHN1cHBvcnRlZC4K
LX0KKyAgICAvLyBEb24ndCBhbGxvdyBhdHRhY2hpbmcgdG8gYW5vdGhlciBpbnNwZWN0b3IgLS0g
dHdvIGluc3BlY3RvcnMgaW4gb25lIHdpbmRvdyBpcyB0b28gbXVjaCEKKyAgICBpZiAobV9wYWdl
LT5pc0luc3BlY3RvclBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi12b2lkIFdlYklu
c3BlY3Rvcjo6c3RhcnRQYWdlUHJvZmlsaW5nKCkKLXsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQp
Ci0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCh0
cnVlKTsKLX0KKyAgICAvLyBJZiB3ZSBhcmUgYWxyZWFkeSBhdHRhY2hlZCwgYWxsb3cgYXR0YWNo
aW5nIGFnYWluIHRvIGFsbG93IHN3aXRjaGluZyBzaWRlcy4KKyAgICBpZiAobV9hdHRhY2hlZCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpzdG9wUGFnZVByb2Zp
bGluZygpCi17Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCku
c2hvdygpOwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xp
ZW50LT5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoZmFsc2UpOworICAgIC8vIERvbid0IGFs
bG93IHRoZSBhdHRhY2ggaWYgdGhlIHdpbmRvdyB3b3VsZCBiZSB0b28gc21hbGwgdG8gYWNjb21t
b2RhdGUgdGhlIG1pbmltdW0gaW5zcGVjdG9yIHNpemUuCisgICAgdW5zaWduZWQgaW5zcGVjdGVk
UGFnZUhlaWdodCA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpLT52aXNp
YmxlSGVpZ2h0KCk7CisgICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZVdpZHRoID0gbV9wYWdlLT5j
b3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPnZpc2libGVXaWR0aCgpOworICAgIHVuc2ln
bmVkIG1heGltdW1BdHRhY2hlZEhlaWdodCA9IGluc3BlY3RlZFBhZ2VIZWlnaHQgKiBtYXhpbXVt
QXR0YWNoZWRIZWlnaHRSYXRpbzsKKyAgICByZXR1cm4gbWluaW11bUF0dGFjaGVkSGVpZ2h0IDw9
IG1heGltdW1BdHRhY2hlZEhlaWdodCAmJiBtaW5pbXVtQXR0YWNoZWRXaWR0aCA8PSBpbnNwZWN0
ZWRQYWdlV2lkdGg7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjp1cGRhdGVEb2NraW5nQXZhaWxh
YmlsaXR5KCkKIHsKLSAgICBpZiAoIW1fZnJvbnRlbmRDbGllbnQpCisgICAgaWYgKG1fYXR0YWNo
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgY2FuQXR0YWNoV2luZG93ID0gdGhpcy0+
Y2FuQXR0YWNoV2luZG93KCk7CisgICAgaWYgKG1fcHJldmlvdXNDYW5BdHRhY2ggPT0gY2FuQXR0
YWNoV2luZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIGNhbkF0dGFjaFdpbmRvdyA9
IG1fZnJvbnRlbmRDbGllbnQtPmNhbkF0dGFjaFdpbmRvdygpOworICAgIG1fcHJldmlvdXNDYW5B
dHRhY2ggPSBjYW5BdHRhY2hXaW5kb3c7CisKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6
QXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChjYW5BdHRhY2hXaW5kb3cpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXREb2NraW5nVW5hdmFpbGFibGUoIWNhbkF0
dGFjaFdpbmRvdyk7CiB9CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLXZvaWQgV2Vi
SW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQordm9pZCBXZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKLSAgICBBU1NFUlQobV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCk7Ci0g
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZCht
ZXNzYWdlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwog
fQogCi12b2lkIFdlYkluc3BlY3Rvcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5k
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK2Jvb2wgV2ViSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRv
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fcGFnZS0+Y29yZVBhZ2Uo
KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNz
YWdlKTsKKyNpZiAhRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCisgICAgbV9mcm9udGVuZENvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRl
bmQobWVzc2FnZSksIDApOworI2Vsc2UKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2Vu
ZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyNl
bmRpZgorICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIp
CiB2b2lkIFdlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKQogewotICAgIEFT
U0VSVCghbV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCk7Ci0gICAgLy8gU3dpdGNoaW5nIGJldHdl
ZW4gaW4tcHJvY2VzcyBhbmQgcmVtb3RlIGluc3BlY3RvcnMgaXNuJ3Qgc3VwcG9ydGVkIHlldC4K
LSAgICBBU1NFUlQoIW1faW5zcGVjdG9yUGFnZSk7Ci0gICAgCi0gICAgbV9wYWdlLT5jb3JlUGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmRDaGFu
bmVsKTsKLSAgICBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkID0gdHJ1ZTsKKyAgICBtX3BhZ2Ut
PmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQodGhpcyk7
CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCiB7
Ci0gICAgQVNTRVJUKG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOwogICAgIG1fcGFnZS0+Y29y
ZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0
b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7Ci0gICAg
bV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCA9IGZhbHNlOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAppbmRleCBjOTNi
Y2IzLi4zYzE5YjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3Rvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMCwxMDYgKzMwLDgwIEBACiAKICNpbmNsdWRlICJBUElPYmplY3Qu
aCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGb3J3YXJkaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIGNsYXNz
IFdlYlBhZ2U7CiAKLWNsYXNzIFdlYkluc3BlY3RvciA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8
QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUluc3BlY3Rvcj4geworY2xhc3MgV2ViSW5zcGVjdG9y
IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVj
dG9yPiwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
ZWJJbnNwZWN0b3I+IGNyZWF0ZShXZWJQYWdlKiwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW5zcGVjdG9yPiBjcmVhdGUoV2Vi
UGFnZSopOwogCiAgICAgV2ViUGFnZSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQot
ICAgIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvclBh
Z2U7IH0KKworICAgIHZvaWQgdXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgpOworCisgICAgdmly
dHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92
ZXJyaWRlOwogCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkluc3BlY3Rvck1l
c3NhZ2VSZWNlaXZlci5jcHAKLSAgICB2b2lkIGRpZFJlY2VpdmVXZWJJbnNwZWN0b3JNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKTsKKwor
ICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CisgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNv
bm5lY3Rpb24qKSB7IGNsb3NlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgeyBjbG9zZSgpOyB9CiAKICAg
ICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yIG1lc3NhZ2VzCisgICAgdm9pZCBjb25uZWN0aW9u
RXN0YWJsaXNoZWQoKTsKKwogICAgIHZvaWQgc2hvdygpOwogICAgIHZvaWQgY2xvc2UoKTsKIAot
ICAgIHZvaWQgZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgdm9pZCBkaWRBcHBlbmQo
Y29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQgb3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nKTsKKworICAgIHZvaWQgY2FuQXR0YWNoV2luZG93KGJvb2wmIHJlc3VsdCk7CisK
KyAgICB2b2lkIHNob3dDb25zb2xlKCk7CisgICAgdm9pZCBzaG93UmVzb3VyY2VzKCk7CiAKLSAg
ICB2b2lkIGF0dGFjaGVkQm90dG9tKCk7Ci0gICAgdm9pZCBhdHRhY2hlZFJpZ2h0KCk7Ci0gICAg
dm9pZCBkZXRhY2hlZCgpOworICAgIHZvaWQgc2hvd01haW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSWRlbnRpZmllcik7CisKKyAgICB2b2lkIHNldEF0dGFjaGVkKGJvb2wgYXR0YWNo
ZWQpIHsgbV9hdHRhY2hlZCA9IGF0dGFjaGVkOyB9CiAKICAgICB2b2lkIGV2YWx1YXRlU2NyaXB0
Rm9yVGVzdChjb25zdCBTdHJpbmcmIHNjcmlwdCk7CiAKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQ
cm9maWxpbmdFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc3RhcnRQYWdlUHJvZmlsaW5nKCk7CiAg
ICAgdm9pZCBzdG9wUGFnZVByb2ZpbGluZygpOwogCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFj
a2VuZChjb25zdCBTdHJpbmcmKTsKKwogI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotICAg
IGJvb2wgaGFzUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3JlbW90
ZUZyb250ZW5kQ29ubmVjdGVkOyB9Ci0gICAgdm9pZCBzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21S
ZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHZvaWQgcmVtb3RlRnJv
bnRlbmRDb25uZWN0ZWQoKTsKICAgICB2b2lkIHJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCk7
CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50
OwotICAgIGZyaWVuZCBjbGFzcyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIAotICAgIGV4
cGxpY2l0IFdlYkluc3BlY3RvcihXZWJQYWdlKiwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKik7CisgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yKFdlYlBhZ2UqKTsKKworICAgIGJv
b2wgY2FuQXR0YWNoV2luZG93KCk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JD
bGllbnQKLSAgICBXZWJQYWdlKiBjcmVhdGVJbnNwZWN0b3JQYWdlKCk7Ci0gICAgV2ViUGFnZSog
Y3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QoKTsKLSAgICB2b2lkIGRlc3Ryb3lJbnNwZWN0b3JQ
YWdlKCk7CisgICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JQYWdlKGJvb2wgdW5kZXJUZXN0KTsKIAot
ICAgIC8vIENhbGxlZCBmcm9tIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ci0gICAgdm9pZCBk
aWRDbG9zZSgpOworICAgIHZvaWQgY2xvc2VGcm9udGVuZCgpOwogICAgIHZvaWQgYnJpbmdUb0Zy
b250KCk7Ci0gICAgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpOwotCi0g
ICAgYm9vbCBjYW5TYXZlKCkgY29uc3Q7Ci0gICAgdm9pZCBzYXZlKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZv
cmNlU2F2ZUFzKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnQpOwotCi0gICAgdm9pZCBhdHRhY2hCb3R0b20oKTsKLSAgICB2b2lk
IGF0dGFjaFJpZ2h0KCk7Ci0gICAgdm9pZCBkZXRhY2goKTsKIAotICAgIHZvaWQgc2V0QXR0YWNo
ZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpOwotICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0
aCh1bnNpZ25lZCk7Ci0gICAgdm9pZCBzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkKTsKLQotICAg
IC8vIEltcGxlbWVudGVkIGluIHBsYXRmb3JtIFdlYkluc3BlY3RvciBmaWxlCi0gICAgU3RyaW5n
IGxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdDsKLQotICAgIHZvaWQgc2hvd0NvbnNvbGUoKTsK
LQotICAgIHZvaWQgc2hvd1Jlc291cmNlcygpOwotCi0gICAgdm9pZCBzaG93TWFpblJlc291cmNl
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCk7Ci0KLSAgICB2b2lkIHN0YXJ0SmF2YVNjcmlwdERl
YnVnZ2luZygpOwotICAgIHZvaWQgc3RvcEphdmFTY3JpcHREZWJ1Z2dpbmcoKTsKLQotICAgIHZv
aWQgc3RhcnRKYXZhU2NyaXB0UHJvZmlsaW5nKCk7Ci0gICAgdm9pZCBzdG9wSmF2YVNjcmlwdFBy
b2ZpbGluZygpOworICAgIFdlYlBhZ2UqIG1fcGFnZTsKIAotICAgIHZvaWQgdXBkYXRlRG9ja2lu
Z0F2YWlsYWJpbGl0eSgpOworICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fZnJvbnRlbmRD
b25uZWN0aW9uOwogCi0gICAgV2ViUGFnZSogbV9wYWdlOwotICAgIFdlYlBhZ2UqIG1faW5zcGVj
dG9yUGFnZTsKLSAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9mcm9udGVuZENsaWVu
dDsKLSAgICBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFu
bmVsOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG11dGFibGUgU3RyaW5nIG1fbG9jYWxpemVk
U3RyaW5nc1VSTDsKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMOwot
I2VuZGlmCi0jaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0gICAgYm9vbCBtX3JlbW90ZUZy
b250ZW5kQ29ubmVjdGVkOwotI2VuZGlmCisgICAgYm9vbCBtX2F0dGFjaGVkOworICAgIGJvb2wg
bV9wcmV2aW91c0NhbkF0dGFjaDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3Iu
bWVzc2FnZXMuaW4KaW5kZXggYzIzYjg2Zi4uZmMwNzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmlu
CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMiwyNiAr
MjIsMjUgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLW1lc3NhZ2VzIC0+IFdlYkluc3Bl
Y3RvciBMZWdhY3lSZWNlaXZlciB7CittZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3IgewogICAgIFNo
b3coKQogICAgIENsb3NlKCkKLSAgICBBdHRhY2hlZEJvdHRvbSgpCi0gICAgQXR0YWNoZWRSaWdo
dCgpCi0gICAgRGV0YWNoZWQoKQotICAgIERpZFNhdmUoU3RyaW5nIHVybCkKLSAgICBEaWRBcHBl
bmQoU3RyaW5nIHVybCkKKworICAgIFNldEF0dGFjaGVkKGJvb2wgYXR0YWNoZWQpCisKICAgICBT
aG93Q29uc29sZSgpCiAgICAgU2hvd1Jlc291cmNlcygpCi0gICAgU2hvd01haW5SZXNvdXJjZUZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgU3RhcnRKYXZhU2NyaXB0RGVidWdnaW5nKCkK
LSAgICBTdG9wSmF2YVNjcmlwdERlYnVnZ2luZygpCi0gICAgU3RhcnRKYXZhU2NyaXB0UHJvZmls
aW5nKCkKLSAgICBTdG9wSmF2YVNjcmlwdFByb2ZpbGluZygpCisKKyAgICBTaG93TWFpblJlc291
cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJZGVudGlmaWVyKQorCisgICAgT3BlbkluTmV3VGFi
KFN0cmluZyB1cmwpCisKICAgICBTdGFydFBhZ2VQcm9maWxpbmcoKQogICAgIFN0b3BQYWdlUHJv
ZmlsaW5nKCkKIAorICAgIFNlbmRNZXNzYWdlVG9CYWNrZW5kKFN0cmluZyBtZXNzYWdlKQorCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0gICAgRGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90
ZUZyb250ZW5kKFN0cmluZyBtZXNzYWdlKQogICAgIFJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkK
ICAgICBSZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyOTdhZDMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC0w
LDAgKzEsMjg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYkluc3BlY3RvclVJLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eU1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
Q2hyb21lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29ybGQuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01haW5G
cmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEdsb2Jh
bE9iamVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0U3RhdGUuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPFdlYklu
c3BlY3RvclVJPiBXZWJJbnNwZWN0b3JVSTo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJJbnNwZWN0b3JVSShwYWdlKSk7Cit9CisKK1dlYkluc3Bl
Y3RvclVJOjpXZWJJbnNwZWN0b3JVSShXZWJQYWdlKiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2Up
CisgICAgLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKDApCisgICAgLCBtX3VuZGVyVGVzdChm
YWxzZSkKKyAgICAsIG1fZnJvbnRlbmRMb2FkZWQoZmFsc2UpCisgICAgLCBtX2RvY2tTaWRlKERv
Y2tTaWRlOjpVbmRvY2tlZCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAsIG1faGFzTG9jYWxp
emVkU3RyaW5nc1VSTChmYWxzZSkKKyNlbmRpZgoreworfQorCit2b2lkIFdlYkluc3BlY3RvclVJ
Ojplc3RhYmxpc2hDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBlbmNvZGVkQ29ubmVjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVz
dCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNv
bm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpOwor
I2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVu
dGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5y
ZWxlYXNlRmlsZURlc2NyaXB0b3IoKSk7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuOworI2VuZGlmCisKKyAgICBpZiAoSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVy
SXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9p
bnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyOworICAgIG1f
dW5kZXJUZXN0ID0gdW5kZXJUZXN0OworCisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQodGhpcyk7CisKKyAgICBt
X2JhY2tlbmRDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0
aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCB0aGlzLCBSdW5Mb29wOjptYWluKCkpOworICAgIG1f
YmFja2VuZENvbm5lY3Rpb24tPm9wZW4oKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6d2lu
ZG93T2JqZWN0Q2xlYXJlZCgpCit7CisgICAgaWYgKG1fZnJvbnRlbmRIb3N0KQorICAgICAgICBt
X2Zyb250ZW5kSG9zdC0+ZGlzY29ubmVjdENsaWVudCgpOworCisgICAgbV9mcm9udGVuZEhvc3Qg
PSBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmNyZWF0ZSh0aGlzLCBtX3BhZ2UtPmNvcmVQYWdlKCkp
OworICAgIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KGV4ZWNTdGF0ZUZyb21QYWdlKG1haW5UaHJl
YWROb3JtYWxXb3JsZCgpLCBtX3BhZ2UtPmNvcmVQYWdlKCkpLCBBU0NJSUxpdGVyYWwoIkluc3Bl
Y3RvckZyb250ZW5kSG9zdCIpLCBtX2Zyb250ZW5kSG9zdC5nZXQoKSk7Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yVUk6OmZyb250ZW5kTG9hZGVkKCkKK3sKKyAgICBtX2Zyb250ZW5kTG9hZGVkID0g
dHJ1ZTsKKworICAgIGV2YWx1YXRlUGVuZGluZ0V4cHJlc3Npb25zKCk7CisgICAgYnJpbmdUb0Zy
b250KCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6Om1vdmVXaW5kb3dCeShmbG9hdCB4LCBm
bG9hdCB5KQoreworICAgIEZsb2F0UmVjdCBmcmFtZVJlY3QgPSBtX3BhZ2UtPmNvcmVQYWdlKCkt
PmNocm9tZSgpLndpbmRvd1JlY3QoKTsKKyAgICBmcmFtZVJlY3QubW92ZSh4LCB5KTsKKyAgICBt
X3BhZ2UtPmNvcmVQYWdlKCktPmNocm9tZSgpLnNldFdpbmRvd1JlY3QoZnJhbWVSZWN0KTsKK30K
Kwordm9pZCBXZWJJbnNwZWN0b3JVSTo6YnJpbmdUb0Zyb250KCkKK3sKKyAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIp
OworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpjbG9zZVdpbmRvdygpCit7CisgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIp
OworCisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworICAgIG1fYmFja2Vu
ZENvbm5lY3Rpb24gPSBudWxscHRyOworCisgICAgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9
IDA7CisgICAgbV91bmRlclRlc3QgPSBmYWxzZTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6
cmVxdWVzdFNldERvY2tTaWRlKERvY2tTaWRlIHNpZGUpCit7CisgICAgc3dpdGNoIChzaWRlKSB7
CisgICAgY2FzZSBEb2NrU2lkZTo6VW5kb2NrZWQ6CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjpEZXRhY2goKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6UmlnaHQ6CisgICAgICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpBdHRhY2hSaWdodCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERvY2tTaWRlOjpCb3R0b206CisgICAgICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hCb3R0b20oKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRp
Zmllcik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6
c2V0RG9ja1NpZGUoRG9ja1NpZGUgc2lkZSkKK3sKKyAgICBjb25zdCBjaGFyKiBzaWRlU3RyaW5n
OworCisgICAgc3dpdGNoIChzaWRlKSB7CisgICAgY2FzZSBEb2NrU2lkZTo6VW5kb2NrZWQ6Cisg
ICAgICAgIHNpZGVTdHJpbmcgPSAidW5kb2NrZWQiOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgRG9ja1NpZGU6OlJpZ2h0OgorICAgICAgICBzaWRlU3RyaW5nID0gInJpZ2h0IjsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIERvY2tTaWRlOjpCb3R0b206CisgICAgICAgIHNpZGVTdHJp
bmcgPSAiYm90dG9tIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgbV9kb2NrU2lkZSA9
IHNpZGU7CisKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzZXREb2Nr
U2lkZSIpLCBBU0NJSUxpdGVyYWwoc2lkZVN0cmluZykpOworfQorCit2b2lkIFdlYkluc3BlY3Rv
clVJOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCit7CisgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCks
IG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpj
aGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQoreworICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKSwgbV9pbnNwZWN0
ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNldFRvb2xiYXJI
ZWlnaHQodW5zaWduZWQgaGVpZ2h0KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpT
ZXRUb29sYmFySGVpZ2h0KGhlaWdodCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQor
Cit2b2lkIFdlYkluc3BlY3RvclVJOjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCit7
CisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpP
cGVuSW5OZXdUYWIodXJsKSwgMCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNhdmUoY29u
c3QgV1RGOjpTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudCwgYm9v
bCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKQoreworICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpTYXZlKGZpbGVuYW1lLCBjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBmb3JjZVNh
dmVBcyksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3Rv
clVJOjphcHBlbmQoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBXVEY6OlN0cmlu
ZyYgY29udGVudCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXBwZW5kKGZpbGVu
YW1lLCBjb250ZW50KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yVUk6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcp
Cit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Okluc3BlY3RlZFVSTENoYW5nZWQodXJs
U3RyaW5nKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yVUk6OnNob3dDb25zb2xlKCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlM
aXRlcmFsKCJzaG93Q29uc29sZSIpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2hvd1Jl
c291cmNlcygpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2hv
d1Jlc291cmNlcyIpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2hvd01haW5SZXNvdXJj
ZUZvckZyYW1lKFN0cmluZyBmcmFtZUlkZW50aWZpZXIpCit7CisgICAgZXZhbHVhdGVDb21tYW5k
T25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2hvd01haW5SZXNvdXJjZUZvckZyYW1lIiksIGZyYW1lSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnN0YXJ0UGFnZVByb2ZpbGluZygp
Cit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2V0VGltZWxpbmVQ
cm9maWxpbmdFbmFibGVkIiksIHRydWUpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzdG9w
UGFnZVByb2ZpbGluZygpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJh
bCgic2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkIiksIGZhbHNlKTsKK30KKwordm9pZCBXZWJJ
bnNwZWN0b3JVSTo6ZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBldmFsdWF0ZUNv
bW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzYXZlZFVSTCIpLCB1cmwpOworfQorCit2b2lkIFdl
Ykluc3BlY3RvclVJOjpkaWRBcHBlbmQoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgZXZhbHVh
dGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgiYXBwZW5kZWRUb1VSTCIpLCB1cmwpOworfQor
Cit2b2lkIFdlYkluc3BlY3RvclVJOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQoreworICAgIGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChtYWtlU3RyaW5nKCJJ
bnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaE1lc3NhZ2VBc3luYygiLCBtZXNzYWdlLCAiKSIp
KTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQoreworICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIDApOworfQor
Cit2b2lkIFdlYkluc3BlY3RvclVJOjpldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3RyaW5n
JiBjb21tYW5kLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50KQoreworICAgIGlmIChhcmd1bWVudC5p
c051bGwoKSkKKyAgICAgICAgZXZhbHVhdGVFeHByZXNzaW9uT25Mb2FkKG1ha2VTdHJpbmcoIklu
c3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoKFtcIiIsIGNvbW1hbmQsICJcIl0pIikpOworICAg
IGVsc2UKKyAgICAgICAgZXZhbHVhdGVFeHByZXNzaW9uT25Mb2FkKG1ha2VTdHJpbmcoIkluc3Bl
Y3RvckZyb250ZW5kQVBJLmRpc3BhdGNoKFtcIiIsIGNvbW1hbmQsICJcIiwgXCIiLCBhcmd1bWVu
dCwgIlwiXSkiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRlQ29tbWFuZE9u
TG9hZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGJvb2wgYXJndW1lbnQpCit7CisgICAgZXZhbHVh
dGVDb21tYW5kT25Mb2FkKGNvbW1hbmQsIEFTQ0lJTGl0ZXJhbChhcmd1bWVudCA/ICJ0cnVlIiA6
ICJmYWxzZSIpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVFeHByZXNzaW9u
T25Mb2FkKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbikKK3sKKyAgICBpZiAobV9mcm9udGVuZExv
YWRlZCkgeworICAgICAgICBBU1NFUlQobV9xdWV1ZS5pc0VtcHR5KCkpOworICAgICAgICBtX3Bh
Z2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVz
c2lvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3F1ZXVlLmFwcGVuZChleHBy
ZXNzaW9uKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVQZW5kaW5nRXhwcmVz
c2lvbnMoKQoreworICAgIEFTU0VSVChtX2Zyb250ZW5kTG9hZGVkKTsKKworICAgIGZvciAoY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uIDogbV9xdWV1ZSkKKyAgICAgICAgbV9wYWdlLT5jb3JlUGFn
ZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOworCisg
ICAgbV9xdWV1ZS5jbGVhcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmJkYmZjYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViSW5zcGVjdG9yVUlfaAorI2RlZmluZSBXZWJJbnNwZWN0b3JVSV9oCisKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRm9yd2FyZGluZy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0luc3BlY3RvckZyb250ZW5kSG9zdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViUGFnZTsKKworY2xhc3MgV2ViSW5zcGVjdG9yVUkgOiBwdWJsaWMgQVBJOjpPYmpl
Y3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVJbnNwZWN0b3JVST4sIHB1YmxpYyBJUEM6
OkNvbm5lY3Rpb246OkNsaWVudCwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnNwZWN0b3JVST4gY3Jl
YXRlKFdlYlBhZ2UqKTsKKworICAgIFdlYlBhZ2UqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2U7IH0KKworICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJJbnNwZWN0b3JVSU1l
c3NhZ2VSZWNlaXZlci5jcHAKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKTsKKworICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6
Q2xpZW50CisgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24qKSB7IGNsb3NlV2luZG93
KCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24q
LCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlTmFtZSkgeyBjbG9zZVdpbmRvdygpOyB9CisKKyAgICAvLyBDYWxsZWQg
YnkgV2ViSW5zcGVjdG9yVUkgbWVzc2FnZXMKKyAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24o
SVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBpbnNwZWN0ZWRQ
YWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QpOworCisgICAgdm9pZCBzaG93Q29uc29sZSgp
OworICAgIHZvaWQgc2hvd1Jlc291cmNlcygpOworCisgICAgdm9pZCBzaG93TWFpblJlc291cmNl
Rm9yRnJhbWUoU3RyaW5nIGZyYW1lSWRlbnRpZmllcik7CisKKyAgICB2b2lkIHN0YXJ0UGFnZVBy
b2ZpbGluZygpOworICAgIHZvaWQgc3RvcFBhZ2VQcm9maWxpbmcoKTsKKworICAgIHZvaWQgYXR0
YWNoZWRCb3R0b20oKSB7IHNldERvY2tTaWRlKERvY2tTaWRlOjpCb3R0b20pOyB9CisgICAgdm9p
ZCBhdHRhY2hlZFJpZ2h0KCkgeyBzZXREb2NrU2lkZShEb2NrU2lkZTo6UmlnaHQpOyB9CisgICAg
dm9pZCBkZXRhY2hlZCgpIHsgc2V0RG9ja1NpZGUoRG9ja1NpZGU6OlVuZG9ja2VkKTsgfQorCisg
ICAgdm9pZCBzZXREb2NrU2lkZShEb2NrU2lkZSk7CisKKyAgICB2b2lkIGRpZFNhdmUoY29uc3Qg
U3RyaW5nJiB1cmwpOworICAgIHZvaWQgZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKTsKKwor
ICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpOworCisgICAgLy8g
V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQKKyAgICB2b2lkIHdpbmRvd09iamVjdENs
ZWFyZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGZyb250ZW5kTG9hZGVkKCkgb3ZlcnJpZGU7CisK
KyAgICB2b2lkIG1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KSBvdmVycmlkZTsKKworICAg
IFN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGJyaW5n
VG9Gcm9udCgpIG92ZXJyaWRlOworICAgIHZvaWQgY2xvc2VXaW5kb3coKSBvdmVycmlkZTsKKwor
ICAgIHZvaWQgcmVxdWVzdFNldERvY2tTaWRlKERvY2tTaWRlKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNoYW5nZUF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpIG92ZXJyaWRlOworCisgICAgdm9p
ZCBzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkKSBvdmVycmlkZTsKKworICAgIHZvaWQgb3Blbklu
TmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKKworICAgIGJvb2wgY2FuU2F2ZSgp
IG92ZXJyaWRlOworICAgIHZvaWQgc2F2ZShjb25zdCBXVEY6OlN0cmluZyYgdXJsLCBjb25zdCBX
VEY6OlN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFz
KSBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBXVEY6OlN0cmluZyYgdXJsLCBjb25z
dCBXVEY6OlN0cmluZyYgY29udGVudCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGluc3BlY3RlZFVS
TENoYW5nZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNlbmRNZXNzYWdl
VG9CYWNrZW5kKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworCisgICAgYm9vbCBpc1VuZGVyVGVz
dCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdW5kZXJUZXN0OyB9CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgV2ViSW5zcGVjdG9yVUkoV2ViUGFnZSopOworCisgICAgdm9pZCBldmFsdWF0ZUNvbW1h
bmRPbkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50ID0g
U3RyaW5nKCkpOworICAgIHZvaWQgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0IFN0cmluZyYg
Y29tbWFuZCwgY29uc3QgQVNDSUlMaXRlcmFsJiBhcmd1bWVudCkgeyBldmFsdWF0ZUNvbW1hbmRP
bkxvYWQoY29tbWFuZCwgU3RyaW5nKGFyZ3VtZW50KSk7IH0KKyAgICB2b2lkIGV2YWx1YXRlQ29t
bWFuZE9uTG9hZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGJvb2wgYXJndW1lbnQpOworICAgIHZv
aWQgZXZhbHVhdGVFeHByZXNzaW9uT25Mb2FkKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbik7Cisg
ICAgdm9pZCBldmFsdWF0ZVBlbmRpbmdFeHByZXNzaW9ucygpOworCisgICAgV2ViUGFnZSogbV9w
YWdlOworCisgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9iYWNrZW5kQ29ubmVjdGlvbjsK
KyAgICB1aW50NjRfdCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyOworCisgICAgYm9vbCBtX3Vu
ZGVyVGVzdDsKKyAgICBib29sIG1fZnJvbnRlbmRMb2FkZWQ7CisgICAgRGVxdWU8U3RyaW5nPiBt
X3F1ZXVlOworCisgICAgUmVmUHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdD4gbV9m
cm9udGVuZEhvc3Q7CisKKyAgICBEb2NrU2lkZSBtX2RvY2tTaWRlOworCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgbXV0YWJsZSBTdHJpbmcgbV9sb2NhbGl6ZWRTdHJpbmdzVVJMOworICAgIG11
dGFibGUgYm9vbCBtX2hhc0xvY2FsaXplZFN0cmluZ3NVUkw7CisjZW5kaWYKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKworI2VuZGlm
IC8vIFdlYkluc3BlY3RvclVJX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4Kc2ltaWxhcml0eSBpbmRl
eCA3NyUKY29weSBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IubWVzc2FnZXMuaW4KY29weSB0byBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KaW5kZXggYzIzYjg2Zi4uMjNlYjVmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5z
cGVjdG9yVUkubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIyLDI5ICsyMiwyNSBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotbWVzc2Fn
ZXMgLT4gV2ViSW5zcGVjdG9yIExlZ2FjeVJlY2VpdmVyIHsKLSAgICBTaG93KCkKLSAgICBDbG9z
ZSgpCittZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JVSSB7CisgICAgRXN0YWJsaXNoQ29ubmVjdGlv
bihJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGluc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCkKKwogICAgIEF0dGFjaGVkQm90dG9tKCkK
ICAgICBBdHRhY2hlZFJpZ2h0KCkKICAgICBEZXRhY2hlZCgpCi0gICAgRGlkU2F2ZShTdHJpbmcg
dXJsKQotICAgIERpZEFwcGVuZChTdHJpbmcgdXJsKQorCiAgICAgU2hvd0NvbnNvbGUoKQogICAg
IFNob3dSZXNvdXJjZXMoKQotICAgIFNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlEKQotICAgIFN0YXJ0SmF2YVNjcmlwdERlYnVnZ2luZygpCi0gICAgU3RvcEphdmFTY3Jp
cHREZWJ1Z2dpbmcoKQotICAgIFN0YXJ0SmF2YVNjcmlwdFByb2ZpbGluZygpCi0gICAgU3RvcEph
dmFTY3JpcHRQcm9maWxpbmcoKQorCisgICAgU2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFN0cmlu
ZyBmcmFtZUlkZW50aWZpZXIpCisKICAgICBTdGFydFBhZ2VQcm9maWxpbmcoKQogICAgIFN0b3BQ
YWdlUHJvZmlsaW5nKCkKIAotI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotICAgIERpc3Bh
dGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChTdHJpbmcgbWVzc2FnZSkKLSAgICBSZW1vdGVG
cm9udGVuZENvbm5lY3RlZCgpCi0gICAgUmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKQotI2Vu
ZGlmCisgICAgRGlkU2F2ZShTdHJpbmcgdXJsKQorICAgIERpZEFwcGVuZChTdHJpbmcgdXJsKQor
CisgICAgU2VuZE1lc3NhZ2VUb0Zyb250ZW5kKFN0cmluZyBtZXNzYWdlKQogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA5
NmU1NWFhLi5kZTE2ZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC04MCw2ICs4MCw4IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yLmgi
CiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9y
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSS5oIgorI2luY2x1ZGUgIldlYklu
c3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25DbGllbnQuaCIK
ICNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIldlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAgLTQ2MCw2ICs0NjIsNyBAQCBXZWJQYWdlOjpXZWJQ
YWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFy
YW1ldGVycykKICNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CiAjZW5kaWYKICNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X3BhZ2VJRCwgKnRoaXMpOwpAQCAtNTIwLDYgKzUyMyw3IEBAIFdlYlBhZ2U6On5XZWJQYWdlKCkK
ICNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlSUQpOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlSUQpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
RnVsbFNjcmVlbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwpAQCAt
Mjg4OCwxOCArMjg5MiwyNiBAQCB2b2lkIFdlYlBhZ2U6OmRpZEZsdXNoTGF5ZXJUcmVlQXRUaW1l
KHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgdGltZXN0YW1wKQogfQogI2VuZGlmCiAKLSAgICAK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogV2ViSW5zcGVjdG9yKiBXZWJQYWdlOjppbnNwZWN0b3Io
KQogewogICAgIGlmIChtX2lzQ2xvc2VkKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgaWYgKCFtX2luc3BlY3RvcikKLSAgICAgICAgbV9pbnNwZWN0b3Ig
PSBXZWJJbnNwZWN0b3I6OmNyZWF0ZSh0aGlzLCBtX2luc3BlY3RvckNsaWVudCk7CisgICAgICAg
IG1faW5zcGVjdG9yID0gV2ViSW5zcGVjdG9yOjpjcmVhdGUodGhpcyk7CiAgICAgcmV0dXJuIG1f
aW5zcGVjdG9yLmdldCgpOwogfQorCitXZWJJbnNwZWN0b3JVSSogV2ViUGFnZTo6aW5zcGVjdG9y
VUkoKQoreworICAgIGlmIChtX2lzQ2xvc2VkKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBpZiAoIW1faW5zcGVjdG9yVUkpCisgICAgICAgIG1faW5zcGVjdG9yVUkgPSBXZWJJbnNwZWN0
b3JVSTo6Y3JlYXRlKHRoaXMpOworICAgIHJldHVybiBtX2luc3BlY3RvclVJLmdldCgpOworfQog
I2VuZGlmCi0gICAgCisKICNpZiBQTEFURk9STShJT1MpCiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyKiBXZWJQYWdlOjp2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkKIHsKQEAgLTM0OTMsNyArMzUw
NSwxMyBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiog
Y29ubmVjdGlvbiwgSVBDOjpNZXNzYWdlRGVjb2RlcgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAg
ICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9y
KiBpbnNwZWN0b3IgPSB0aGlzLT5pbnNwZWN0b3IoKSkKLSAgICAgICAgICAgIGluc3BlY3Rvci0+
ZGlkUmVjZWl2ZVdlYkluc3BlY3Rvck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAg
ICAgICAgICBpbnNwZWN0b3ItPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSB7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3JVSSogaW5zcGVjdG9yVUkgPSB0aGlzLT5p
bnNwZWN0b3JVSSgpKQorICAgICAgICAgICAgaW5zcGVjdG9yVUktPmRpZFJlY2VpdmVNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBiYWJhNTA2
Li5iN2Q0NDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTE1Myw2ICsxNTMsNyBAQCBjbGFzcyBXZWJGdWxsU2NyZWVuTWFuYWdlcjsKIGNsYXNz
IFdlYkltYWdlOwogY2xhc3MgV2ViSW5zcGVjdG9yOwogY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50
OworY2xhc3MgV2ViSW5zcGVjdG9yVUk7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3Mg
V2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbkNsaWVudDsKQEAgLTIyNiw4ICsy
MjcsMTAgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBXZWJJbnNwZWN0
b3IqIGluc3BlY3RvcigpOworICAgIFdlYkluc3BlY3RvclVJKiBpbnNwZWN0b3JVSSgpOworICAg
IGJvb2wgaXNJbnNwZWN0b3JQYWdlKCkgeyByZXR1cm4gISFtX2luc3BlY3RvclVJOyB9CiAjZW5k
aWYKLSAgICAKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyKiB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCk7CiAjZW5kaWYKQEAgLTExNTksNiArMTE2Miw3
IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFJlZlB0cjxXZWJJbnNw
ZWN0b3I+IG1faW5zcGVjdG9yOworICAgIFJlZlB0cjxXZWJJbnNwZWN0b3JVST4gbV9pbnNwZWN0
b3JVSTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcj4gbV92aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JVSUVmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3RvclVJRWZs
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODU3YzdiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNw
ZWN0b3JVSUVmbC5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJJbnNwZWN0b3JVSS5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2lu
Y2x1ZGUgPFdlYkNvcmUvRWZsSW5zcGVjdG9yVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29sIFdlYkluc3BlY3Rv
clVJOjpjYW5TYXZlKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBXZWJJbnNw
ZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCit7CisgICAgcmV0dXJuICJmaWxlOi8vIiAr
IFdlYkNvcmU6Omluc3BlY3RvclJlc291cmNlUGF0aCgpICsgIi9sb2NhbGl6ZWRTdHJpbmdzLmpz
IjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJJbnNwZWN0b3JVSUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi40NjQ2Nzg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJJbnNwZWN0b3JVSS5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1
ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgV2ViSW5z
cGVjdG9yVUk6OmNhblNhdmUoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIFdl
Ykluc3BlY3RvclVJOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkKK3sKKyAgICByZXR1cm4gU3RyaW5n
KCJyZXNvdXJjZTovLy9vcmcvd2Via2l0Z3RrL2luc3BlY3Rvci9Mb2NhbGl6YXRpb25zL2VuLmxw
cm9qL2xvY2FsaXplZFN0cmluZ3MuanMiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yVUlNYWMubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJlNzZhNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yVUlNYWMubW0K
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiV2ViSW5zcGVjdG9yVUkuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNp
bXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX1NUQUdFRF9GUkFNRVdP
UksoV2ViSW5zcGVjdG9yVUksIFByaXZhdGVGcmFtZXdvcmtzLCBBKQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworYm9vbCBXZWJJbnNwZWN0b3JVSTo6Y2FuU2F2ZSgpCit7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK1N0cmluZyBXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCit7
CisgICAgaWYgKCFtX2hhc0xvY2FsaXplZFN0cmluZ3NVUkwpIHsKKyAgICAgICAgLy8gQ2FsbCB0
aGUgc29mdCBsaW5rIGZyYW1ld29yayBmdW5jdGlvbiB0byBkbG9wZW4gaXQsIHRoZW4gW05TQnVu
ZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOl0gd2lsbCB3b3JrLgorICAgICAgICBXZWJJbnNwZWN0
b3JVSUxpYnJhcnkoKTsKKworICAgICAgICBOU1N0cmluZyAqcGF0aCA9IFtbTlNCdW5kbGUgYnVu
ZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViSW5zcGVjdG9yVUkiXSBwYXRoRm9yUmVz
b3VyY2U6QCJsb2NhbGl6ZWRTdHJpbmdzIiBvZlR5cGU6QCJqcyJdOworICAgICAgICBpZiAoW3Bh
dGggbGVuZ3RoXSkKKyAgICAgICAgICAgIG1fbG9jYWxpemVkU3RyaW5nc1VSTCA9IFtbTlNVUkwg
ZmlsZVVSTFdpdGhQYXRoOnBhdGhdIGFic29sdXRlU3RyaW5nXTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgbV9sb2NhbGl6ZWRTdHJpbmdzVVJMID0gU3RyaW5nKCk7CisgICAgICAgIG1faGFz
TG9jYWxpemVkU3RyaW5nc1VSTCA9IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIG1fbG9jYWxp
emVkU3RyaW5nc1VSTDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCAyY2JmZWFiLi41MmViZmIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMjA1
LDcgKzIwNSwxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nl
c3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycwogdm9pZCBXZWJQcm9jZXNzOjpp
bml0aWFsaXplUHJvY2Vzc05hbWUoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogI2lmICFQTEFURk9STShJT1MpCi0gICAgTlNTdHJpbmcg
KmFwcGxpY2F0aW9uTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9TVFJJ
TkcoIiVAIFdlYiBDb250ZW50IiwgIlZpc2libGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRo
ZSBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4iKSwgKE5TU3RyaW5nICopcGFyYW1l
dGVycy51aVByb2Nlc3NOYW1lXTsKKyAgICBOU1N0cmluZyAqYXBwbGljYXRpb25OYW1lOworICAg
IGlmIChwYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmdldChBU0NJSUxpdGVyYWwo
Imluc3BlY3Rvci1wcm9jZXNzIikpID09ICIxIikKKyAgICAgICAgYXBwbGljYXRpb25OYW1lID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX1NUUklORygiJUAgV2ViIEluc3BlY3Rv
ciIsICJWaXNpYmxlIG5hbWUgb2YgV2ViIEluc3BlY3RvcidzIHdlYiBwcm9jZXNzLiBUaGUgYXJn
dW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuIiksIChOU1N0cmluZyAqKXBhcmFtZXRlcnMu
dWlQcm9jZXNzTmFtZV07CisgICAgZWxzZQorICAgICAgICBhcHBsaWNhdGlvbk5hbWUgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCIlQCBXZWIgQ29udGVudCIsICJW
aXNpYmxlIG5hbWUgb2YgdGhlIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxp
Y2F0aW9uIG5hbWUuIiksIChOU1N0cmluZyAqKXBhcmFtZXRlcnMudWlQcm9jZXNzTmFtZV07CiAg
ICAgV0tTZXRWaXNpYmxlQXBwbGljYXRpb25OYW1lKChDRlN0cmluZ1JlZilhcHBsaWNhdGlvbk5h
bWUpOwogI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238430</attachid>
            <date>2014-09-21 13:18:47 -0700</date>
            <delta_ts>2014-09-21 16:09:32 -0700</delta_ts>
            <desc>WIP (Rebased For Bots)</desc>
            <filename>WIP.patch</filename>
            <type>text/plain</type>
            <size>138790</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5ncyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpp
bmRleCAxNDExNjdlLi43N2RkNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNo
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5s
cHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCkBAIC00OSw2ICs0OSw5IEBACiAvKiBWaXNpYmxlIG5h
bWUgb2YgdGhlIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5h
bWUuICovCiAiJUAgV2ViIENvbnRlbnQiID0gIiVAIFdlYiBDb250ZW50IjsKIAorLyogVmlzaWJs
ZSBuYW1lIG9mIFdlYiBJbnNwZWN0b3IncyB3ZWIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRo
ZSBhcHBsaWNhdGlvbiBuYW1lLiAqLworIiVAIFdlYiBJbnNwZWN0b3IiID0gIiVAIFdlYiBJbnNw
ZWN0b3IiOworCiAvKiBOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0byBtYXN0
ZXIga2V5IGluIEtleWNoYWluICovCiAiJUAgV2ViQ3J5cHRvIE1hc3RlciBLZXkiID0gIiVAIFdl
YkNyeXB0byBNYXN0ZXIgS2V5IjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA4NzRlNTFlLi44
MTlhNTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNzcxLDYgKzc3MSw3IEBAIF9fWk43V2Vi
Q29yZTE3U1FMaXRlVHJhbnNhY3Rpb25EMUV2CiBfX1pON1dlYkNvcmUxN1N1YnJlc291cmNlTG9h
ZGVyNmNyZWF0ZUVQTlNfNUZyYW1lRVBOU18xNENhY2hlZFJlc291cmNlRVJLTlNfMTVSZXNvdXJj
ZVJlcXVlc3RFUktOU18yMVJlc291cmNlTG9hZGVyT3B0aW9uc0UKIF9fWk43V2ViQ29yZTE3Y2Fj
aGVET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE4zSlNDOVN0cnVjdHVyZUVQ
S05TMl85Q2xhc3NJbmZvRQogX19aTjdXZWJDb3JlMTdlbmNvZGVGb3JGaWxlTmFtZUVSS04zV1RG
NlN0cmluZ0UKK19fWk43V2ViQ29yZTE3ZXhlY1N0YXRlRnJvbVBhZ2VFUk5TXzE1RE9NV3JhcHBl
cldvcmxkRVBOU180UGFnZUUKIF9fWk43V2ViQ29yZTE3bGFuZ3VhZ2VEaWRDaGFuZ2VFdgogX19a
TjdXZWJDb3JlMTdvcGVuVGVtcG9yYXJ5RmlsZUVSS04zV1RGNlN0cmluZ0VSaQogX19aTjdXZWJD
b3JlMTdzUkdCQ29sb3JTcGFjZVJlZkV2CkBAIC03OTQsNiArNzk1LDcgQEAgX19aTjdXZWJDb3Jl
MThQbGF0Zm9ybVBhc3RlYm9hcmQ4YWRkVHlwZXNFUktOM1dURjZWZWN0b3JJTlMxXzZTdHJpbmdF
TG0wRU5TMV8xNUMKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkOGdldFR5cGVzRVJO
M1dURjZWZWN0b3JJTlMxXzZTdHJpbmdFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19a
TjdXZWJDb3JlMThQbGF0Zm9ybVBhc3RlYm9hcmQ4c2V0VHlwZXNFUktOM1dURjZWZWN0b3JJTlMx
XzZTdHJpbmdFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMThQbGF0
Zm9ybVBhc3RlYm9hcmRDMUVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE4U2NyaXB0R2xv
YmFsT2JqZWN0M3NldEVQTjNKU0M5RXhlY1N0YXRlRVBLY1BOU18yMUluc3BlY3RvckZyb250ZW5k
SG9zdEUKIF9fWk43V2ViQ29yZTE4U3R5bGVTaGVldENvbnRlbnRzMTFwYXJzZVN0cmluZ0VSS04z
V1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE4U3R5bGVTaGVldENvbnRlbnRzQzFFUE5TXzE1U3R5
bGVSdWxlSW1wb3J0RVJLTjNXVEY2U3RyaW5nRVJLTlNfMTZDU1NQYXJzZXJDb250ZXh0RQogX19a
TjdXZWJDb3JlMThTdHlsZVNoZWV0Q29udGVudHNEMUV2CkBAIC0xOTI2LDcgKzE5MjgsMTAgQEAg
X19aTks3V2ViQ29yZTVSYW5nZTllbmRPZmZzZXRFUmkKIF9fWk5LN1dlYkNvcmU1UmFuZ2U5Zmly
c3ROb2RlRXYKIF9fWk5LN1dlYkNvcmU1UmFuZ2U5dGV4dFF1YWRzRVJOM1dURjZWZWN0b3JJTlNf
OUZsb2F0UXVhZEVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFYlBOUzBfMjBSYW5nZUluRml4
ZWRQb3NpdGlvbkUKIF9fWk5LN1dlYkNvcmU1UmFuZ2U5dGV4dFJlY3RzRVJOM1dURjZWZWN0b3JJ
TlNfN0ludFJlY3RFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRWJQTlMwXzIwUmFuZ2VJbkZp
eGVkUG9zaXRpb25FCitfX1pOSzdXZWJDb3JlNkNocm9tZTEwd2luZG93UmVjdEV2CiBfX1pOSzdX
ZWJDb3JlNkNocm9tZTEyY3JlYXRlV2luZG93RVBOU181RnJhbWVFUktOU18xNkZyYW1lTG9hZFJl
cXVlc3RFUktOU18xNFdpbmRvd0ZlYXR1cmVzRVJLTlNfMTZOYXZpZ2F0aW9uQWN0aW9uRQorX19a
Tks3V2ViQ29yZTZDaHJvbWUxM3NldFdpbmRvd1JlY3RFUktOU185RmxvYXRSZWN0RQorX19aTks3
V2ViQ29yZTZDaHJvbWU0c2hvd0V2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjEyc2VsZWN0ZWRUZXh0
RXYKIF9fWk5LN1dlYkNvcmU2RWRpdG9yMTNjYW5FZGl0UmljaGx5RXYKIF9fWk5LN1dlYkNvcmU2
RWRpdG9yMTZjb21wb3NpdGlvblJhbmdlRXYKQEAgLTMxMjMsMTMgKzMxMjgsMTggQEAgX19aTjdX
ZWJDb3JlNUNvbG9yQzFFUktOM1dURjZTdHJpbmdFCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIF9f
Wk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnkyN3Nob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbEVS
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE1SW5zcGVjdG9yQ2xpZW50MzFkb0Rpc3BhdGNo
TWVzc2FnZU9uRnJvbnRlbmRQYWdlRVBOU180UGFnZUVSS04zV1RGNlN0cmluZ0UKK19fWk43V2Vi
Q29yZTE4SW5zcGVjdG9yUGFnZUFnZW50N2ZyYW1lSWRFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29y
ZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE1Y29ubmVjdEZyb250ZW5kRVBOOUluc3BlY3RvcjI0SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsRQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVy
MThkaXNjb25uZWN0RnJvbnRlbmRFTjlJbnNwZWN0b3IyNUluc3BlY3RvckRpc2Nvbm5lY3RSZWFz
b25FCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOHNldFByb2ZpbGVyRW5hYmxl
ZEViCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNWV2YWx1YXRlRm9yVGVzdElu
RnJvbnRlbmRFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xs
ZXIyNnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50RU5TdDNfXzExMHVuaXF1ZV9wdHJJTlNfMjNJ
bnNwZWN0b3JGcm9udGVuZENsaWVudEVOUzFfMTRkZWZhdWx0X2RlbGV0ZUlTM19FRUVFCitfX1pO
N1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50
RVBOU18yM0luc3BlY3RvckZyb250ZW5kQ2xpZW50RQorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JD
b250cm9sbGVyMjdkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI0c2hvd0V2CiBfX1pON1dlYkNvcmUxOUlu
c3BlY3RvckNvbnRyb2xsZXI1Y2xvc2VFdgorX19aTjdXZWJDb3JlMjFJbnNwZWN0b3JGcm9udGVu
ZEhvc3QxNmRpc2Nvbm5lY3RDbGllbnRFdgorX19aTjdXZWJDb3JlMjFJbnNwZWN0b3JGcm9udGVu
ZEhvc3RDMUVQTlNfMjNJbnNwZWN0b3JGcm9udGVuZENsaWVudEVQTlNfNFBhZ2VFCitfX1pON1dl
YkNvcmUyMUluc3BlY3RvckZyb250ZW5kSG9zdEQxRXYKIF9fWk43V2ViQ29yZTIyaW5zdHJ1bWVu
dGF0aW9uRm9yUGFnZUVQTlNfNFBhZ2VFCiBfX1pON1dlYkNvcmUyNEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjE3c19mcm9udGVuZENvdW50ZXJFCiBfX1pON1dlYkNvcmUyNEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjI2aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2VFUE5TXzRQYWdlRQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg3
ZDJiYmMuLjBjNmEzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE3NjEsNyArMTc2MSw3IEBACiAJCTRGMTUzNEUwMTFCNTMz
MDIwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3JUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxNTM0REYxMUI1MzMwMjAwMjFGRDg2IC8qIEVk
aXRpbmdCZWhhdmlvclR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNEY0RjVGRkIxMUNCRDJFMTAwQTE4NkJGIC8qIEluc3BlY3RvcldlYkZy
b250ZW5kRGlzcGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEY0RjVGRkExMUNCRDJEMjAwQTE4NkJGIC8qIEluc3BlY3RvcldlYkZyb250
ZW5kRGlzcGF0Y2hlcnMuY3BwICovOyB9OwogCQk0RjZGREQ2NDEzNDFERUREMDAxRjhFRTMgLyog
SW5zcGVjdG9yUGFnZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRGNkZERDYyMTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdl
bnQuY3BwICovOyB9OwotCQk0RjZGREQ2NTEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFn
ZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
RjZGREQ2MzEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmggKi87IH07CisJ
CTRGNkZERDY1MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNkZERDYzMTM0MURFREQw
MDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjcwN0E5OTExRUY2Nzk0MDBBQ0RBNjkgLyogSW5z
cGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNzA3QTk3MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0
b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwICovOyB9OwogCQk0RjcwN0E5QTExRUY2Nzk0MDBB
Q0RBNjkgLyogSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjcwN0E5ODExRUY2Nzk0MDBBQ0RBNjkg
LyogSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEZCMzkwQUQxNUVGNjFGMzAwN0FENTFGIC8q
IEdlbmVyYXRlZEltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRGQjM5MEFDMTVFRjYxRjMwMDdBRDUxRiAvKiBHZW5lcmF0ZWRJbWFnZS5jcHAg
Ki87IH07CkBAIC0yMzMwLDcgKzIzMzAsNyBAQAogCQk3OUYyRjVBMTEwOTE5MzlBMDAwRDg3Q0Ig
LyogQ29tcG9zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3OUYyRjU5RTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVu
dC5jcHAgKi87IH07CiAJCTc5RjJGNUEyMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUYy
RjU5RjEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5oICovOyB9OwogCQk3QTBF
NzcwRTEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NzBCMTBDMDBBODgw
MEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwICovOyB9OwotCQk3QTBFNzcwRjEw
QzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzcwQzEwQzAwQTg4MDBBMDI3NkUg
LyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggKi87IH07CisJCTdBMEU3NzBGMTBDMDBBODgwMEEw
Mjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NzBDMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0
b3JGcm9udGVuZEhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3QTBFNzcxRTEwQzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0EwRTc3MUMxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCAq
LzsgfTsKIAkJN0EwRTc3MUYxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBF
NzcxRDEwQzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCAqLzsgfTsK
IAkJN0ExRDdGQ0IxOEY4NUYwRjAwQzM4NUFEIC8qIG1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJp
bmdzLmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QTFEN0ZDOTE4Rjg1RjBGMDBDMzg1QUQgLyogbWVkaWFDb250cm9sc0xvY2FsaXplZFN0cmluZ3Mu
anMgKi87IH07CkBAIC0yMzcwLDcgKzIzNzAsNyBAQAogCQk3QUIwQjFDMTEyMTFBNjIyMDBBNzY5
NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0FCMEIxQkYxMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuaCAqLzsgfTsKIAkJN0FDRDg4RDMxNEMwOEJENjAwODRFREQyIC8qIElu
c3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBQ0Q4OEQxMTRDMDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAgKi87IH07CiAJCTdBQ0Q4OEQ0MTRDMDhCRDYwMDg0RUREMiAvKiBJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0FDRDg4RDIxNEMwOEJENjAwODRFREQyIC8qIEluc3BlY3RvckluZGV4ZWRE
QkFnZW50LmggKi87IH07Ci0JCTdBREU3MjI2MTBDQkJCOUIwMDZCM0IzQSAvKiBDb250ZXh0TWVu
dVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QURFNzIyNTEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5oICovOyB9
OworCQk3QURFNzIyNjEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FERTcyMjUxMENC
QkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QUY5QjIwMjE4Q0ZCMkRGMDBDNjRCRUYg
LyogVlRUUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBRjlCMUZDMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uY3BwICovOyB9Owog
CQk3QUY5QjIwMzE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFGRDE4Q0ZCMkRGMDBDNjRCRUYg
LyogVlRUUmVnaW9uLmggKi87IH07CiAJCTdBRjlCMjA1MThDRkIyREYwMEM2NEJFRiAvKiBWVFRS
ZWdpb25MaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBRjlCMUZGMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb25MaXN0LmNwcCAqLzsgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmgKaW5k
ZXggOGFhMDU1Yi4uOTJiZjIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0R2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0R2xvYmFsT2JqZWN0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU2NyaXB0R2xvYmFs
T2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzZXQoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBjaGFyKiBuYW1lLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IGNoYXIqIG5hbWUsIEluc3BlY3RvckZyb250ZW5kSG9zdCopOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIElu
c3BlY3RvckZyb250ZW5kSG9zdCopOwogI2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBnZXQoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCmluZGV4IDhhODJjYWIu
LjdlMjZhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApAQCAt
NTgsNyArNTgsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0RnJvbUV4ZWNTdGF0ZShKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFeGVjU3RhdGUqIG1haW5X
b3JsZEV4ZWNTdGF0ZShGcmFtZSopOwogCiBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbU5v
ZGUoRE9NV3JhcHBlcldvcmxkJiwgTm9kZSopOwotSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZy
b21QYWdlKERPTVdyYXBwZXJXb3JsZCYsIFBhZ2UqKTsKK1dFQkNPUkVfRVhQT1JUIEpTQzo6RXhl
Y1N0YXRlKiBleGVjU3RhdGVGcm9tUGFnZShET01XcmFwcGVyV29ybGQmLCBQYWdlKik7CiBKU0M6
OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNj
b3BlKik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBjN2M4Nzk1Li4yMDQyNTE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CkBAIC04Niw2ICs4Niw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xs
ZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAgICAgLCBtX2luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbChudWxscHRyKQogICAgICwgbV9wYWdlKHBhZ2UpCiAgICAgLCBt
X2luc3BlY3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQpCisgICAgLCBtX2luc3BlY3RvckZyb250
ZW5kQ2xpZW50KG51bGxwdHIpCiAgICAgLCBtX2lzVW5kZXJUZXN0KGZhbHNlKQogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQogICAgICwgbV9oYXNSZW1vdGVGcm9udGVuZChmYWxzZSkKQEAg
LTE4OCw5ICsxODksOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2VE
ZXN0cm95ZWQoKQogICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IGluc3BlY3RvckZyb250ZW5kQ2xpZW50KQor
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChJbnNw
ZWN0b3JGcm9udGVuZENsaWVudCogaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpCiB7Ci0gICAgbV9p
bnNwZWN0b3JGcm9udGVuZENsaWVudCA9IFdURjo6bW92ZShpbnNwZWN0b3JGcm9udGVuZENsaWVu
dCk7CisgICAgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudCA9IGluc3BlY3RvckZyb250ZW5kQ2xp
ZW50OwogfQogCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc0xvY2FsRnJvbnRlbmQoKSBj
b25zdApAQCAtMjEzLDcgKzIxNCw3IEBAIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzUmVt
b3RlRnJvbnRlbmQoKSBjb25zdAogCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5nZXQoKTsKKyAgICByZXR1cm4gbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudDsK
IH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29y
bGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQpAQCAtMjgzLDggKzI4NCw3
IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygpCiAgICAgaWYgKG1faW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKQogICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+YnJpbmdGcm9udGVu
ZFRvRnJvbnQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwgPSBtX2luc3BlY3RvckNsaWVudC0+b3Blbkluc3BlY3RvckZyb250
ZW5kKHRoaXMpOwotICAgICAgICBpZiAoZnJvbnRlbmRDaGFubmVsKQorICAgICAgICBpZiAoSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBtX2luc3BlY3RvckNsaWVu
dC0+b3Blbkluc3BlY3RvckZyb250ZW5kKHRoaXMpKQogICAgICAgICAgICAgY29ubmVjdEZyb250
ZW5kKGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZmQ1NTkyNC4uMzBkM2NjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC04Myw3
ICs4Myw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNob3coKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVu
ZENsaWVudD4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqKTsKICAgICBib29sIGhhc0luc3BlY3RvckZy
b250ZW5kQ2xpZW50KCkgY29uc3Q7CiAgICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29y
bGQoRnJhbWUqLCBET01XcmFwcGVyV29ybGQmKTsKIApAQCAtMTIxLDcgKzEyMSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlc3VtZSgpOwogCiAgICAgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JD
bGllbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckNsaWVudDsgfQotICAgIEluc3BlY3Rv
clBhZ2VBZ2VudCogcGFnZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlQWdlbnQ7IH0KKyAg
ICBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZUFnZW50OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjYW5BY2Nlc3NJbnNw
ZWN0ZWRTY3JpcHRTdGF0ZShKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTQ2
LDEwICsxNDYsMTAgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBtX3Rp
bWVsaW5lQWdlbnQ7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiAg
ICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsOwogICAgIFBhZ2UmIG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1faW5z
cGVjdG9yQ2xpZW50OworICAgIEluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2luc3BlY3RvckZy
b250ZW5kQ2xpZW50OwogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBtX2Fn
ZW50czsKICAgICBWZWN0b3I8SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLCAyPiBtX2lu
amVjdGVkU2NyaXB0SW5zdHJ1bWVudGF0aW9uQ29va2llczsKICAgICBib29sIG1faXNVbmRlclRl
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmgKaW5kZXggOGU4Y2Q4NS4uMWE3NGVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaApAQCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yRnJvbnRlbmRIb3N0KGNsaWVudCwg
ZnJvbnRlbmRQYWdlKSk7CiAgICAgfQogCi0gICAgfkluc3BlY3RvckZyb250ZW5kSG9zdCgpOwot
ICAgIHZvaWQgZGlzY29ubmVjdENsaWVudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIH5JbnNwZWN0
b3JGcm9udGVuZEhvc3QoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc2Nvbm5lY3RDbGll
bnQoKTsKIAogICAgIHZvaWQgbG9hZGVkKCk7CiAgICAgdm9pZCByZXF1ZXN0U2V0RG9ja1NpZGUo
Y29uc3QgU3RyaW5nJik7CkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCiAgICAgZnJpZW5kIGNsYXNzIEZyb250ZW5kTWVudVByb3ZpZGVyOwogI2Vu
ZGlmCi0gICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0KEluc3BlY3RvckZyb250ZW5kQ2xpZW50Kiwg
UGFnZSogZnJvbnRlbmRQYWdlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JGcm9udGVu
ZEhvc3QoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqLCBQYWdlKiBmcm9udGVuZFBhZ2UpOwogCiAg
ICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1fY2xpZW50OwogICAgIFBhZ2UqIG1fZnJvbnRl
bmRQYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5o
CmluZGV4IDExMDY3MGUuLjI1ZmUxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTE1NSw3ICsxNTUsNyBAQCBwdWJsaWM6CiAgICAgRnJh
bWUqIG1haW5GcmFtZSgpOwogICAgIFN0cmluZyBjcmVhdGVJZGVudGlmaWVyKCk7CiAgICAgRnJh
bWUqIGZyYW1lRm9ySWQoY29uc3QgU3RyaW5nJiBmcmFtZUlkKTsKLSAgICBTdHJpbmcgZnJhbWVJ
ZChGcmFtZSopOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmcmFtZUlkKEZyYW1lKik7CiAg
ICAgYm9vbCBoYXNJZEZvckZyYW1lKEZyYW1lKikgY29uc3Q7CiAgICAgU3RyaW5nIGxvYWRlcklk
KERvY3VtZW50TG9hZGVyKik7CiAgICAgRnJhbWUqIGZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdp
bihjb25zdCBTdHJpbmcmIG9yaWdpblJhd1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAppbmRleCBm
Y2E3ZjkwLi4zZTRmNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTEwMiw4ICsxMDIsOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoRnJhbWUqLCBjb25zdCBJbnRT
aXplJikgY29uc3Q7CiAKLSAgICB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0Jikg
Y29uc3Q7Ci0gICAgRmxvYXRSZWN0IHdpbmRvd1JlY3QoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgRmxvYXRSZWN0IHdpbmRvd1JlY3QoKSBjb25zdDsKIAogICAgIEZsb2F0UmVj
dCBwYWdlUmVjdCgpIGNvbnN0OwogCkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZm9jdXNlZEZyYW1lQ2hhbmdlZChGcmFtZSopIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNv
bnN0IFdpbmRvd0ZlYXR1cmVzJiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpIGNvbnN0OwotICAg
IHZvaWQgc2hvdygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvdygpIGNvbnN0
OwogCiAgICAgYm9vbCBjYW5SdW5Nb2RhbCgpIGNvbnN0OwogICAgIGJvb2wgY2FuUnVuTW9kYWxO
b3coKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAwYTAyNjdh
Li41OWU3MWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNDcxLDEy
ICsxNDcxLDEwIEBAIFBhc3NSZWZQdHI8RE9NV2luZG93PiBJbnRlcm5hbHM6Om9wZW5EdW1teUlu
c3BlY3RvckZyb250ZW5kKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIFBhZ2UqIGZyb250ZW5kUGFn
ZSA9IG1fZnJvbnRlbmRXaW5kb3ctPmRvY3VtZW50KCktPnBhZ2UoKTsKICAgICBBU1NFUlQoZnJv
bnRlbmRQYWdlKTsKIAotICAgIGF1dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckZyb250ZW5kQ2xpZW50RHVtbXk+KCZwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVy
KCksIGZyb250ZW5kUGFnZSk7Ci0KLSAgICBmcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChXVEY6Om1vdmUoZnJvbnRlbmRDbGllbnQp
KTsKLQotICAgIG1fZnJvbnRlbmRDaGFubmVsID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbER1bW15KGZyb250ZW5kUGFnZSkpOworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kQ2xpZW50RHVtbXk+KCZwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCksIGZyb250ZW5kUGFnZSk7CisgICAgZnJvbnRlbmRQYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV9mcm9udGVuZENs
aWVudC5nZXQoKSk7CiAKKyAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRHVtbXk+KGZyb250ZW5kUGFnZSk7CiAgICAgcGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZChtX2Zyb250ZW5kQ2hhbm5lbC5n
ZXQoKSk7CiAKICAgICByZXR1cm4gbV9mcm9udGVuZFdpbmRvdzsKQEAgLTE0OTAsMTAgKzE0ODgs
MTEgQEAgdm9pZCBJbnRlcm5hbHM6OmNsb3NlRHVtbXlJbnNwZWN0b3JGcm9udGVuZCgpCiAKICAg
ICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rv
ckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CiAKLSAgICBtX2Zyb250ZW5k
Q2hhbm5lbC5yZWxlYXNlKCk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IG51bGxwdHI7CisgICAg
bV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOwogCiAgICAgbV9mcm9udGVuZFdpbmRvdy0+Y2xv
c2UobV9mcm9udGVuZFdpbmRvdy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICBtX2Zy
b250ZW5kV2luZG93LnJlbGVhc2UoKTsKKyAgICBtX2Zyb250ZW5kV2luZG93LmNsZWFyKCk7CiB9
CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChib29sIGVu
YWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5k
ZXggM2ZmOWE3Zi4uNmNjN2QyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC01
MCw2ICs1MCw3IEBAIGNsYXNzIERvY3VtZW50TWFya2VyOwogY2xhc3MgRWxlbWVudDsKIGNsYXNz
IEZyYW1lOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRHVtbXk7CitjbGFzcyBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudER1bW15OwogY2xhc3MgSW50ZXJuYWxTZXR0aW5nczsKIGNsYXNz
IE1hbGxvY1N0YXRpc3RpY3M7CiBjbGFzcyBNZW1vcnlJbmZvOwpAQCAtMzUwLDcgKzM1MSw4IEBA
IHByaXZhdGU6CiAgICAgRG9jdW1lbnRNYXJrZXIqIG1hcmtlckF0KE5vZGUqLCBjb25zdCBTdHJp
bmcmIG1hcmtlclR5cGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKICAgICBSZWZQdHI8RE9NV2luZG93PiBtX2Zyb250ZW5kV2luZG93Owot
ICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teT4gbV9mcm9udGVuZENoYW5u
ZWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250ZW5kQ2xpZW50RHVtbXk+IG1f
ZnJvbnRlbmRDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbER1bW15PiBtX2Zyb250ZW5kQ2hhbm5lbDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKaW5kZXggODY3ZGVmYS4uYjg5MGZkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTA5LTA2ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgYSA8Y2lyY2xlPiBpbnN0ZWFkIG9mIGEgPHBhdGg+
IGluIERvd25sb2FkQXJyb3cuc3ZnLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM2NjA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ltYWdlcy9Eb3dubG9hZEFycm93LnN2ZzoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50U3RhdHVzQnV0dG9uLmNz
czoKKyAgICAgICAgKC5pdGVtID4gLnN0YXR1cyA+IC5zdGF0dXMtYnV0dG9uID4gc3ZnIC5maWxs
ZWQpOgorICAgICAgICAoYm9keS5tYWMtcGxhdGZvcm0ubGVnYWN5IC5pdGVtID4gLnN0YXR1cyA+
IC5zdGF0dXMtYnV0dG9uID4gc3ZnIC5maWxsZWQpOgorICAgICAgICAoOmZvY3VzIC5pdGVtLnNl
bGVjdGVkID4gLnN0YXR1cyA+IC5zdGF0dXMtYnV0dG9uID4gc3ZnIC5maWxsZWQpOgorICAgICAg
ICAoLml0ZW0gPiAuc3RhdHVzID4gLnN0YXR1cy1idXR0b24gPiBzdmcgLnN0cm9rZWQpOgorICAg
ICAgICAoYm9keS5tYWMtcGxhdGZvcm0ubGVnYWN5IC5pdGVtID4gLnN0YXR1cyA+IC5zdGF0dXMt
YnV0dG9uID4gc3ZnIC5zdHJva2VkKToKKyAgICAgICAgKDpmb2N1cyAuaXRlbS5zZWxlY3RlZCA+
IC5zdGF0dXMgPiAuc3RhdHVzLWJ1dHRvbiA+IHN2ZyAuc3Ryb2tlZCk6CisgICAgICAgIFR3ZWFr
IENTUyBzZWxlY3RvcnMgdG8gYXBwbHkgdG8gb3RoZXIgc2hhcGVzLCBub3QganVzdCBwYXRoLgor
CiAyMDE0LTA5LTIwICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogT3B0aW9uK0NsaWNrIG9uIENTUyB1cmwoLi4uKSBzaG91bGQg
anVtcCB0byByZXNvdXJjZSB2aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
TG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRl
eCA2NDhmNWUyLi44ZmViMzQ4IDEwMDY0NApCaW5hcnkgZmlsZXMgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGFuZCBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmlu
Z3MuanMgZGlmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9CYXNlL01haW4uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL01haW4uanMKaW5kZXggZWQ4ZTJhMC4uYjcyYWYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtNDksMTAgKzQ5LDcgQEAg
V2ViSW5zcGVjdG9yLlR5cGVJZGVudGlmaWVyQ29va2llS2V5ID0gInJlcHJlc2VudGVkLW9iamVj
dC10eXBlIjsKIAogV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKIHsKLSAgICAvLyBU
ZWxsIHRoZSBJbnNwZWN0b3JGcm9udGVuZEhvc3Qgd2UgbG9hZGVkIGZpcnN0IHRvIGVzdGFibGlz
aCBjb21tdW5pY2F0aW9uIHdpdGggSW5zcGVjdG9yQmFja2VuZC4KLSAgICBJbnNwZWN0b3JGcm9u
dGVuZEhvc3QubG9hZGVkKCk7Ci0KLSAgICAvLyBJbml0aWFsaXplIFdlYlNvY2tldCB0byBjb21t
dW5pY2F0aW9uCisgICAgLy8gSW5pdGlhbGl6ZSBXZWJTb2NrZXQgdG8gY29tbXVuaWNhdGlvbi4K
ICAgICB0aGlzLl9pbml0aWFsaXplV2ViU29ja2V0SWZOZWVkZWQoKTsKIAogICAgIC8vIFJlZ2lz
dGVyIG9ic2VydmVycyBmb3IgZXZlbnRzIGZyb20gdGhlIEluc3BlY3RvckJhY2tlbmQuCkBAIC0z
MjgsMTAgKzMyNSwxMSBAQCBXZWJJbnNwZWN0b3IuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkK
ICAgICBpZiAodGhpcy5fZGV0YWlsc1NpZGViYXJXaWR0aFNldHRpbmcudmFsdWUpCiAgICAgICAg
IHRoaXMuZGV0YWlsc1NpZGViYXIud2lkdGggPSB0aGlzLl9kZXRhaWxzU2lkZWJhcldpZHRoU2V0
dGluZy52YWx1ZTsKIAotICAgIC8vIFVwZGF0ZSB0aGUgZG9ja2VkIHN0YXRlIGJhc2VkIG9uIHRo
ZSBxdWVyeSBzdHJpbmcgcGFzc2VkIHdoZW4gdGhlIFdlYiBJbnNwZWN0b3Igd2FzIGxvYWRlZC4K
LSAgICB0aGlzLnVwZGF0ZURvY2tlZFN0YXRlKHBhcnNlTG9jYXRpb25RdWVyeVBhcmFtZXRlcnMo
KS5kb2NrU2lkZSB8fCAidW5kb2NrZWQiKTsKKyAgICAvLyBUZWxsIHRoZSBJbnNwZWN0b3JGcm9u
dGVuZEhvc3Qgd2UgbG9hZGVkLCB3aGljaCBjYXVzZXMgdGhlIHdpbmRvdyB0byBkaXNwbGF5Cisg
ICAgLy8gYW5kIHBlbmRpbmcgSW5zcGVjdG9yRnJvbnRlbmRBUEkgY29tbWFuZHMgdG8gYmUgc2Vu
dC4KKyAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZGVkKCk7CiAKLSAgICAvLyBUZWxsIHRo
ZSBmcm9udGVuZCBBUEkgd2UgYXJlIGxvYWRlZCBzbyBhbnkgcGVuZGluZyBmcm9udGVuZCBjb21t
YW5kcyBjYW4gYmUgZGlzcGF0Y2hlZC4KKyAgICAvLyBTaWduYWwgdGhhdCB0aGUgZnJvbnRlbmQg
aXMgbm93IHJlYWR5IHRvIHJlY2VpdmUgbWVzc2FnZXMuCiAgICAgSW5zcGVjdG9yRnJvbnRlbmRB
UEkubG9hZENvbXBsZXRlZCgpOwogCiAgICAgLy8gU2V0IGNvbGxhcHNlZCBhZnRlciBsb2FkaW5n
IHRoZSBwZW5kaW5nIGZyb250ZW5kIGNvbW1hbmRzIGFyZSBkaXNwYXRjaGVkIHNvIG9ubHkgdGhl
IGZpbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL1Rlc3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1Rl
c3QuanMKaW5kZXggNzQyMDc1YS4uMDEyMTZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9UZXN0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVGVzdC5qcwpAQCAtNTUsMTMgKzU1LDE0IEBAIFdlYklu
c3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiAKICAgICAvLyBQZXJmb3JtIG9uZS10aW1lIHRh
c2tzLgogICAgIFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5yZXF1ZXN0Q1NTTmFtZUNvbXBs
ZXRpb25zKCk7Ci0KLSAgICAvLyBFc3RhYmxpc2ggY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBJbnNw
ZWN0b3JCYWNrZW5kLgotICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5sb2FkZWQoKTsKIH0KIAog
V2ViSW5zcGVjdG9yLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiB7CisgICAgLy8gVGVsbCB0
aGUgSW5zcGVjdG9yRnJvbnRlbmRIb3N0IHdlIGxvYWRlZCwgd2hpY2ggY2F1c2VzIHRoZSB3aW5k
b3cgdG8gZGlzcGxheQorICAgIC8vIGFuZCBwZW5kaW5nIEluc3BlY3RvckZyb250ZW5kQVBJIGNv
bW1hbmRzIHRvIGJlIHNlbnQuCisgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmxvYWRlZCgpOwor
CiAgICAgLy8gU2lnbmFsIHRoYXQgdGhlIGZyb250ZW5kIGlzIG5vdyByZWFkeSB0byByZWNlaXZl
IG1lc3NhZ2VzLgogICAgIEluc3BlY3RvckZyb250ZW5kQVBJLmxvYWRDb21wbGV0ZWQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L0luc3BlY3RvckZyb250ZW5kQVBJLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKaW5kZXggMTIyNzIxMS4uN2I4
ZGViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAgLTI1LDI4
ICsyNSwxNiBAQAogCiBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICBfbG9hZGVkOiBmYWxz
ZSwKLQogICAgIF9wZW5kaW5nQ29tbWFuZHM6IFtdLAogCiAgICAgc2F2ZWRVUkw6IGZ1bmN0aW9u
KHVybCkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgICAg
IC8vIE5vdCB1c2VkIHlldC4KICAgICB9LAogCiAgICAgYXBwZW5kZWRUb1VSTDogZnVuY3Rpb24o
dXJsKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KLSAgICB9LAot
Ci0gICAgaXNEZWJ1Z2dpbmdFbmFibGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICAvLyBG
SVhNRTogTm90IGltcGxlbWVudGVkLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKLQot
ICAgIHNldERlYnVnZ2luZ0VuYWJsZWQ6IGZ1bmN0aW9uKGVuYWJsZWQpCi0gICAgewotICAgICAg
ICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorICAgICAgICAvLyBOb3QgdXNlZCB5ZXQuCiAg
ICAgfSwKIAogICAgIGlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkOiBmdW5jdGlvbigpCkBAIC0x
MDgsMTEgKzk2LDYgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93U291cmNlQ29kZUZvckZyYW1lKGZyYW1lSWRl
bnRpZmllciwgdHJ1ZSk7CiAgICAgfSwKIAotICAgIHNldERvY2tpbmdVbmF2YWlsYWJsZTogZnVu
Y3Rpb24odW5hdmFpbGFibGUpCi0gICAgewotICAgICAgICAvLyBOb3QgdXNlZC4KLSAgICB9LAot
CiAgICAgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQ6IGZ1bmN0aW9uKGlkKQogICAgIHsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGlkKTsKQEAgLTE0MSw2ICsx
MjQsMTAgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB2
YXIgbWV0aG9kTmFtZSA9IHNpZ25hdHVyZS5zaGlmdCgpOworICAgICAgICBjb25zb2xlLmFzc2Vy
dChJbnNwZWN0b3JGcm9udGVuZEFQSVttZXRob2ROYW1lXSwgIlVuZXhwZWN0ZWQgSW5zcGVjdG9y
RnJvbnRlbmRBUEkgbWV0aG9kIG5hbWU6ICIgKyBJbnNwZWN0b3JGcm9udGVuZEFQSVttZXRob2RO
YW1lXSk7CisgICAgICAgIGlmICghSW5zcGVjdG9yRnJvbnRlbmRBUElbbWV0aG9kTmFtZV0pCisg
ICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgcmV0dXJuIEluc3BlY3RvckZyb250ZW5kQVBJ
W21ldGhvZE5hbWVdLmFwcGx5KEluc3BlY3RvckZyb250ZW5kQVBJLCBzaWduYXR1cmUpOwogICAg
IH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudElPUy5tbQppbmRleCBkMzBkOGI5Li45OGRjYWVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50SU9TLm1tCkBAIC00Niw3ICs0Niw2IEBAIFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVj
dG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICAg
ICAsIG1faGlnaGxpZ2h0ZXIoYWRvcHROUyhbW1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5p
dFdpdGhJbnNwZWN0ZWRXZWJWaWV3OndlYlZpZXddKSkKICAgICAsIG1fZnJvbnRlbmRQYWdlKDAp
Ci0gICAgLCBtX2Zyb250ZW5kQ2xpZW50KDApCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNDg1Njgz
Ni4uODk4NzdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAg
IFdlYlZpZXcgKm1fd2ViVmlldzsKICAgICBSZXRhaW5QdHI8V2ViTm9kZUhpZ2hsaWdodGVyPiBt
X2hpZ2hsaWdodGVyOwogICAgIFdlYkNvcmU6OlBhZ2UqIG1fZnJvbnRlbmRQYWdlOwotICAgIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2Zyb250ZW5kQ2xpZW50OworICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9mcm9udGVuZENsaWVudDsKIH07
CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50Lm1tCmluZGV4IDZlMTc4OWQuLjgzMDhiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAg
LTEzMyw4ICsxMzMsNyBAQCBAZW5kCiBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNs
aWVudChXZWJWaWV3ICp3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiAgICAgLCBt
X2hpZ2hsaWdodGVyKGFkb3B0TlMoW1tXZWJOb2RlSGlnaGxpZ2h0ZXIgYWxsb2NdIGluaXRXaXRo
SW5zcGVjdGVkV2ViVmlldzp3ZWJWaWV3XSkpCi0gICAgLCBtX2Zyb250ZW5kUGFnZSgwKQotICAg
ICwgbV9mcm9udGVuZENsaWVudCgwKQorICAgICwgbV9mcm9udGVuZFBhZ2UobnVsbHB0cikKIHsK
IH0KIApAQCAtMTUwLDExICsxNDksMTMgQEAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBXZWJJ
bnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb24KICAgICBb
d2luZG93Q29udHJvbGxlci5nZXQoKSBzZXRJbnNwZWN0b3JDbGllbnQ6dGhpc107CiAKICAgICBt
X2Zyb250ZW5kUGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgd2ViVmlld10pOwot
ICAgIGF1dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50PihtX3dlYlZpZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3Rv
ckNvbnRyb2xsZXIsIG1fZnJvbnRlbmRQYWdlLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwot
ICAgIG1fZnJvbnRlbmRDbGllbnQgPSBmcm9udGVuZENsaWVudC5nZXQoKTsKLSAgICBSZXRhaW5Q
dHI8V2ViSW5zcGVjdG9yRnJvbnRlbmQ+IHdlYkluc3BlY3RvckZyb250ZW5kID0gYWRvcHROUyhb
W1dlYkluc3BlY3RvckZyb250ZW5kIGFsbG9jXSBpbml0V2l0aEZyb250ZW5kQ2xpZW50OmZyb250
ZW5kQ2xpZW50LmdldCgpXSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fd2ViVmlldywgd2luZG93Q29udHJvbGxl
ci5nZXQoKSwgaW5zcGVjdG9yQ29udHJvbGxlciwgbV9mcm9udGVuZFBhZ2UsIGNyZWF0ZUZyb250
ZW5kU2V0dGluZ3MoKSk7CisKKyAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yRnJvbnRlbmQ+IHdl
Ykluc3BlY3RvckZyb250ZW5kID0gYWRvcHROUyhbW1dlYkluc3BlY3RvckZyb250ZW5kIGFsbG9j
XSBpbml0V2l0aEZyb250ZW5kQ2xpZW50Om1fZnJvbnRlbmRDbGllbnQuZ2V0KCldKTsKICAgICBb
W21fd2ViVmlldyBpbnNwZWN0b3JdIHNldEZyb250ZW5kOndlYkluc3BlY3RvckZyb250ZW5kLmdl
dCgpXTsKLSAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9udGVuZENsaWVudCkpOworCisgICAgbV9m
cm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENs
aWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsKKwogICAgIHJldHVybiB0aGlzOwogfQogCkBA
IC0xOTksOCArMjAwLDggQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGlu
Z0Zvck5vZGUoYm9vbCBlbmFibGVkKQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cmVsZWFz
ZUZyb250ZW5kKCkKIHsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gMDsKLSAgICBtX2Zyb250ZW5k
UGFnZSA9IDA7CisgICAgbV9mcm9udGVuZENsaWVudCA9IG51bGxwdHI7CisgICAgbV9mcm9udGVu
ZFBhZ2UgPSBudWxscHRyOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDNmMzZkZWYuLjdmMjJi
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTcxLDkgKzE3MSw4IEBAIFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRl
bmQoSW5zCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKGZy
b250ZW5kV2ViVmlldy5nZXQoKSk7Ci0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywg
bV9pbnNwZWN0ZWRXZWJWaWV3SGFuZGxlLCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywg
ZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhpcywgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKLSAg
ICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQuZ2V0KCk7Ci0gICAgbV9mcm9udGVu
ZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChX
VEY6Om1vdmUoZnJvbnRlbmRDbGllbnQpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3
LCBtX2luc3BlY3RlZFdlYlZpZXdIYW5kbGUsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3
LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwor
ICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQobV9mcm9udGVuZENsaWVudC5nZXQoKSk7CiAgICAgbV9mcm9udGVuZEhhbmRs
ZSA9IGZyb250ZW5kSHduZDsKICAgICByZXR1cm4gdGhpczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggYjMx
ZGQ4OS4uNDdmYmVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCByZWxlYXNlRnJvbnRlbmQoKTsKIAotICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KiBmcm9udGVuZENsaWVudCgpIHsgcmV0dXJuIG1fZnJvbnRlbmRDbGllbnQ7IH0KKyAgICBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogZnJvbnRlbmRDbGllbnQoKSB7IHJldHVybiBtX2Zy
b250ZW5kQ2xpZW50LmdldCgpOyB9CiAKICAgICB2b2lkIHVwZGF0ZUhpZ2hsaWdodCgpOwogCkBA
IC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJWaWV3KiBtX2luc3BlY3RlZFdlYlZp
ZXc7CiAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7Ci0gICAgV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQqIG1fZnJvbnRlbmRDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2Zyb250ZW5kQ2xpZW50OwogICAgIEhXTkQgbV9p
bnNwZWN0ZWRXZWJWaWV3SGFuZGxlOwogICAgIEhXTkQgbV9mcm9udGVuZEhhbmRsZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9D
TWFrZUxpc3RzLnR4dAppbmRleCA0ZjM5MjNkLi42YmRjNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4
dApAQCAtNTMwLDcgKzUzMCw2IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCi0gICAgV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKICAgICBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAKICAgICBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKICAgICBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5jcHAKQEAgLTU1Miw2ICs1NTEsNyBAQCBz
ZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3VtZW50TG9h
ZGVyLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKICAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3JVSS5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXIuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCiAgICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcApAQCAtNjQ1LDYgKzY0NSw3IEBA
IHNldChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0V2
ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVk
TGlua1RhYmxlQ29udHJvbGxlci5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yVUkubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5tZXNzYWdlcy5p
bgogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZWFlZjUxNi4uY2EwNmEwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMjEsNiArMTIxLDcgQEAgTUVTU0FH
RV9SRUNFSVZFUlMgPSBcCiAgICAgV2ViSWNvbkRhdGFiYXNlUHJveHkgXAogICAgIFdlYkluc3Bl
Y3RvciBcCiAgICAgV2ViSW5zcGVjdG9yUHJveHkgXAorICAgIFdlYkluc3BlY3RvclVJIFwKICAg
ICBXZWJNZWRpYUNhY2hlTWFuYWdlciBcCiAgICAgV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eSBc
CiAgICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmlu
ZGV4IDAxZTM0ZWEuLmYwN2ZiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xOTQs
NyArMTk0LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvYXRrL1dlYlBhZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0QXRrLmNwcAogCi0gICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JFZmwuY3BwCisgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JVSUVmbC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
ZWZsL1dlYlBhZ2VFZmwuY3BwCiAKICAgICBXZWJQcm9jZXNzL2VmbC9TZWNjb21wRmlsdGVyc1dl
YlByb2Nlc3NFZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5j
bWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDY4NTY4NjEuLmZl
NjNjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0zMDIsNyArMzAyLDcgQEAgbGlz
dChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xh
eWVyVHJlZUhvc3RHdGsuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9QcmludGVyTGlz
dEd0ay5jcHAKLSAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3Rvckd0ay5jcHAK
KyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcAogICAgIFdl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0
LmgKaW5kZXggNmRmNDkxOC4uOTIyZTZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaApA
QCAtMTQzLDYgKzE0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgQnVuZGxlRnJhbWUsCiAgICAgICAg
IEJ1bmRsZUhpdFRlc3RSZXN1bHQsCiAgICAgICAgIEJ1bmRsZUluc3BlY3RvciwKKyAgICAgICAg
QnVuZGxlSW5zcGVjdG9yVUksCiAgICAgICAgIEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24sCiAgICAg
ICAgIEJ1bmRsZU5vZGVIYW5kbGUsCiAgICAgICAgIEJ1bmRsZVBhZ2UsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvTGVnYWN5UHJvY2Vz
cy9DaGlsZFByb2Nlc3NFbnRyeVBvaW50Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5
UG9pbnRVdGlsaXRpZXMvbWFjL0xlZ2FjeVByb2Nlc3MvQ2hpbGRQcm9jZXNzRW50cnlQb2ludC5t
bQppbmRleCAxM2YzMDZlLi5kOTVjZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvTGVnYWN5UHJvY2Vzcy9DaGlsZFByb2Nlc3NFbnRy
eVBvaW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVz
L21hYy9MZWdhY3lQcm9jZXNzL0NoaWxkUHJvY2Vzc0VudHJ5UG9pbnQubW0KQEAgLTg4LDggKzg4
LDExIEBAIGJvb2wgQ2hpbGRQcm9jZXNzTWFpbkRlbGVnYXRlOjpnZXRDbGllbnRQcm9jZXNzTmFt
ZShTdHJpbmcmIGNsaWVudFByb2Nlc3NOYW1lKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IENoaWxkUHJvY2Vzc01haW5EZWxlZ2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlvbkRhdGEoSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4mKQorYm9vbCBDaGlsZFByb2Nlc3NNYWluRGVsZWdhdGU6Omdl
dEV4dHJhSW5pdGlhbGl6YXRpb25EYXRhKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBleHRyYUlu
aXRpYWxpemF0aW9uRGF0YSkKIHsKKyAgICBTdHJpbmcgaW5zcGVjdG9yUHJvY2VzcyA9IG1fY29t
bWFuZExpbmVbImluc3BlY3Rvci1wcm9jZXNzIl07CisgICAgaWYgKCFpbnNwZWN0b3JQcm9jZXNz
LmlzRW1wdHkoKSkKKyAgICAgICAgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKEFTQ0lJTGl0
ZXJhbCgiaW5zcGVjdG9yLXByb2Nlc3MiKSwgaW5zcGVjdG9yUHJvY2Vzcyk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50
VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZUVudHJ5UG9pbnQubW0KaW5kZXggMTY5N2VlOS4uMzY1ZWE4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBD
U2VydmljZUVudHJ5UG9pbnQubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9p
bnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0KQEAgLTky
LDggKzkyLDE0IEBAIGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVu
dFByb2Nlc3NOYW1lKFN0cmluZyYgY2xpZW50UHJvY2Vzc05hCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldEV4dHJhSW5pdGlhbGl6
YXRpb25EYXRhKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JikKK2Jvb2wgWFBDU2VydmljZUluaXRp
YWxpemVyRGVsZWdhdGU6OmdldEV4dHJhSW5pdGlhbGl6YXRpb25EYXRhKEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+JiBleHRyYUluaXRpYWxpemF0aW9uRGF0YSkKIHsKKyAgICB4cGNfb2JqZWN0X3Qg
ZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3Zh
bHVlKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAiZXh0cmEtaW5pdGlhbGl6YXRpb24tZGF0YSIpOwor
CisgICAgU3RyaW5nIGluc3BlY3RvclByb2Nlc3MgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5n
KGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCwgImluc3BlY3Rvci1wcm9jZXNzIik7
CisgICAgaWYgKCFpbnNwZWN0b3JQcm9jZXNzLmlzRW1wdHkoKSkKKyAgICAgICAgZXh0cmFJbml0
aWFsaXphdGlvbkRhdGEuYWRkKEFTQ0lJTGl0ZXJhbCgiaW5zcGVjdG9yLXByb2Nlc3MiKSwgaW5z
cGVjdG9yUHJvY2Vzcyk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAKaW5kZXggMTZlODQ1Yi4uOGM5OTc1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3Bw
CkBAIC0xNzQsNDIgKzE3NCwzMCBAQCB2b2lkIFdLSW5zcGVjdG9yRGV0YWNoKFdLSW5zcGVjdG9y
UmVmIGluc3BlY3RvclJlZikKICNlbmRpZgogfQogCi1ib29sIFdLSW5zcGVjdG9ySXNEZWJ1Z2dp
bmdKYXZhU2NyaXB0KFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKK2Jvb2wgV0tJbnNwZWN0
b3JJc0RlYnVnZ2luZ0phdmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYpCiB7Ci0jaWYgRU5BQkxFKElO
U1BFQ1RPUikKLSAgICByZXR1cm4gdG9JbXBsKGluc3BlY3RvclJlZiktPmlzRGVidWdnaW5nSmF2
YVNjcmlwdCgpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oaW5zcGVjdG9yUmVmKTsKKyAgICAv
LyBGSVhNRTogVGhpcyBpcyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBuaWdodGx5
IGJ1aWxkcyBhbmQgU2FmYXJpLgorICAgIC8vIFJlbW92ZSBpdCBvbmNlIFNhZmFyaSBubyBsb25n
ZXIgZGVwZW5kcyBvbiBpdC4KICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKIH0KIAotdm9pZCBX
S0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHREZWJ1Z2dpbmcoV0tJbnNwZWN0b3JSZWYgaW5zcGVj
dG9yUmVmKQordm9pZCBXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHREZWJ1Z2dpbmcoV0tJbnNw
ZWN0b3JSZWYpCiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICB0b0ltcGwoaW5zcGVjdG9y
UmVmKS0+dG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZygpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oaW5zcGVjdG9yUmVmKTsKLSNlbmRpZgorICAgIC8vIEZJWE1FOiBUaGlzIGlzIGZvciBiYWNr
d2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIG5pZ2h0bHkgYnVpbGRzIGFuZCBTYWZhcmkuCisgICAg
Ly8gUmVtb3ZlIGl0IG9uY2UgU2FmYXJpIG5vIGxvbmdlciBkZXBlbmRzIG9uIGl0LgogfQogCi1i
b29sIFdLSW5zcGVjdG9ySXNQcm9maWxpbmdKYXZhU2NyaXB0KFdLSW5zcGVjdG9yUmVmIGluc3Bl
Y3RvclJlZikKK2Jvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ0phdmFTY3JpcHQoV0tJbnNwZWN0
b3JSZWYpCiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICByZXR1cm4gdG9JbXBsKGluc3Bl
Y3RvclJlZiktPmlzUHJvZmlsaW5nSmF2YVNjcmlwdCgpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oaW5zcGVjdG9yUmVmKTsKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBmb3IgYmFja3dhcmRzIGNv
bXBhdGliaWxpdHkgd2l0aCBuaWdodGx5IGJ1aWxkcyBhbmQgU2FmYXJpLgorICAgIC8vIFJlbW92
ZSBpdCBvbmNlIFNhZmFyaSBubyBsb25nZXIgZGVwZW5kcyBvbiBpdC4KICAgICByZXR1cm4gZmFs
c2U7Ci0jZW5kaWYKIH0KIAotdm9pZCBXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxp
bmcoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQordm9pZCBXS0luc3BlY3RvclRvZ2dsZUph
dmFTY3JpcHRQcm9maWxpbmcoV0tJbnNwZWN0b3JSZWYpCiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RP
UikKLSAgICB0b0ltcGwoaW5zcGVjdG9yUmVmKS0+dG9nZ2xlSmF2YVNjcmlwdFByb2ZpbGluZygp
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oaW5zcGVjdG9yUmVmKTsKLSNlbmRpZgorICAgIC8v
IEZJWE1FOiBUaGlzIGlzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIG5pZ2h0bHkg
YnVpbGRzIGFuZCBTYWZhcmkuCisgICAgLy8gUmVtb3ZlIGl0IG9uY2UgU2FmYXJpIG5vIGxvbmdl
ciBkZXBlbmRzIG9uIGl0LgogfQogCiBib29sIFdLSW5zcGVjdG9ySXNQcm9maWxpbmdQYWdlKFdL
SW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLSW5zcGVjdG9yLmgKaW5kZXggYmE3NjQ4OS4uMjA2NTc4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmgKQEAgLTU4LDE1ICs1OCwxNyBAQCBX
S19FWFBPUlQgYm9vbCBXS0luc3BlY3RvcklzQXR0YWNoZWQoV0tJbnNwZWN0b3JSZWYgaW5zcGVj
dG9yKTsKIFdLX0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9yQXR0YWNoKFdLSW5zcGVjdG9yUmVmIGlu
c3BlY3Rvcik7CiBXS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvckRldGFjaChXS0luc3BlY3RvclJl
ZiBpbnNwZWN0b3IpOwogCitXS19FWFBPUlQgYm9vbCBXS0luc3BlY3RvcklzUHJvZmlsaW5nUGFn
ZShXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOworV0tfRVhQT1JUIHZvaWQgV0tJbnNwZWN0b3JU
b2dnbGVQYWdlUHJvZmlsaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7CisKKy8vIEZJWE1F
OiBUaGVzZSBhcmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggbmlnaHRseSBidWls
ZHMgYW5kIFNhZmFyaS4KKy8vIFJlbW92ZSB0aGVtIG9uY2UgU2FmYXJpIG5vIGxvbmdlciBkZXBl
bmRzIG9uIHRoZW0uCiBXS19FWFBPUlQgYm9vbCBXS0luc3BlY3RvcklzRGVidWdnaW5nSmF2YVNj
cmlwdChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwogV0tfRVhQT1JUIHZvaWQgV0tJbnNwZWN0
b3JUb2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7CiAK
IFdLX0VYUE9SVCBib29sIFdLSW5zcGVjdG9ySXNQcm9maWxpbmdKYXZhU2NyaXB0KFdLSW5zcGVj
dG9yUmVmIGluc3BlY3Rvcik7CiBXS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvclRvZ2dsZUphdmFT
Y3JpcHRQcm9maWxpbmcoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKIAotV0tfRVhQT1JUIGJv
b2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ1BhZ2UoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsK
LVdLX0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9yVG9nZ2xlUGFnZVByb2ZpbGluZyhXS0luc3BlY3Rv
clJlZiBpbnNwZWN0b3IpOwotCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IDZhMjQzYzcuLjk3ZThhMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAK
ICNpbmNsdWRlICJXZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCisjaW5j
bHVkZSAiV2ViSW5zcGVjdG9yUHJveHkuaCIKICNpbmNsdWRlICJXZWJLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxpemUuaCIKICNpbmNsdWRlICJXZWJN
ZWRpYUNhY2hlTWFuYWdlclByb3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Ykluc3BlY3RvclByb3h5LmNwcAppbmRleCBiZTM3NzA0Li5kZTU4OTlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHks
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMCwxMSAr
MzAsMTIgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiQVBJVVJMUmVxdWVz
dC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
SW5zcGVjdG9yTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIldl
Ykluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgpAQCAtNTcs
OSArNTgsNiBAQCBjb25zdCB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6bWluaW11bVdpbmRv
d0hlaWdodCA9IDQwMDsKIGNvbnN0IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5Ojppbml0aWFs
V2luZG93V2lkdGggPSAxMDAwOwogY29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6Omlu
aXRpYWxXaW5kb3dIZWlnaHQgPSA2NTA7CiAKLWNvbnN0IHVuc2lnbmVkIFdlYkluc3BlY3RvclBy
b3h5OjptaW5pbXVtQXR0YWNoZWRXaWR0aCA9IDc1MDsKLWNvbnN0IHVuc2lnbmVkIFdlYkluc3Bl
Y3RvclByb3h5OjptaW5pbXVtQXR0YWNoZWRIZWlnaHQgPSAyNTA7Ci0KIGNsYXNzIFdlYkluc3Bl
Y3RvclBhZ2VHcm91cHMgewogcHVibGljOgogICAgIHN0YXRpYyBXZWJJbnNwZWN0b3JQYWdlR3Jv
dXBzJiBzaGFyZWQoKQpAQCAtMTA1LDExICsxMDMsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgUmVm
UHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoU3RyaW5n
Ojpmb3JtYXQoIl9fV2ViSW5zcGVjdG9yUGFnZUdyb3VwTGV2ZWwldV9fIiwgbGV2ZWwpLCBmYWxz
ZSwgZmFsc2UpOwogCiAjaWZuZGVmIE5ERUJVRwotICAgICAgICAvLyBBbGxvdyBkZXZlbG9wZXJz
IHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzLgorICAgICAgICAv
LyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcg
YnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgICAgIHBhZ2VHcm91cC0+cHJl
ZmVyZW5jZXMoKS5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwogICAgICAgICBwYWdl
R3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0TG9nc1BhZ2VNZXNzYWdlc1RvU3lzdGVtQ29uc29sZUVu
YWJsZWQodHJ1ZSk7CiAjZW5kaWYKIAorICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCku
c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKHRydWUpOwogICAgICAgICBwYWdlR3JvdXAt
PnByZWZlcmVuY2VzKCkuc2V0QXBwbGljYXRpb25DaHJvbWVNb2RlRW5hYmxlZCh0cnVlKTsKIAog
ICAgICAgICByZXR1cm4gcGFnZUdyb3VwLnJlbGVhc2UoKTsKQEAgLTEyNCwxMyArMTIzLDEzIEBA
IHByaXZhdGU6CiAKIFdlYkluc3BlY3RvclByb3h5OjpXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdl
UHJveHkqIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1faW5zcGVjdG9yUGFnZShu
dWxscHRyKQorICAgICwgbV91bmRlclRlc3QoZmFsc2UpCiAgICAgLCBtX2lzVmlzaWJsZShmYWxz
ZSkKICAgICAsIG1faXNBdHRhY2hlZChmYWxzZSkKLSAgICAsIG1faXNEZWJ1Z2dpbmdKYXZhU2Ny
aXB0KGZhbHNlKQotICAgICwgbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQoZmFsc2UpCisgICAgLCBt
X2NhbkF0dGFjaChmYWxzZSkKICAgICAsIG1faXNQcm9maWxpbmdQYWdlKGZhbHNlKQogICAgICwg
bV9zaG93TWVzc2FnZVNlbnQoZmFsc2UpCi0gICAgLCBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlKGZh
bHNlKQogICAgICwgbV9pZ25vcmVGaXJzdEJyaW5nVG9Gcm9udChmYWxzZSkKICAgICAsIG1fYXR0
YWNobWVudFNpZGUoQXR0YWNobWVudFNpZGVCb3R0b20pCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQ
TEFURk9STShFRkwpCkBAIC0xNjUsNyArMTY0LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
aW52YWxpZGF0ZSgpCiAKICAgICBkaWRDbG9zZSgpOwogCi0gICAgbV9wYWdlID0gMDsKKyAgICBt
X3BhZ2UgPSBudWxscHRyOwogfQogCiAvLyBQdWJsaWMgQVBJcwpAQCAtMTg4LDYgKzE4Nyw4IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNvbm5lY3QoKQogICAgIG1fc2hvd01lc3NhZ2VTZW50
ID0gdHJ1ZTsKICAgICBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250ID0gdHJ1ZTsKIAorICAgIGVh
Z2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisKICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3coKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAK
QEAgLTIzMiw2ICsyMzMsOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93Q29uc29sZSgp
CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIGVhZ2VybHlDcmVhdGVJ
bnNwZWN0b3JQYWdlKCk7CisKICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3I6OlNob3dDb25zb2xlKCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCkBAIC0y
NDAsNiArMjQzLDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1Jlc291cmNlcygpCiAg
ICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIGVhZ2VybHlDcmVhdGVJbnNw
ZWN0b3JQYWdlKCk7CisKICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OlNob3dSZXNvdXJjZXMoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKQEAgLTI0
OCw2ICsyNTMsOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93TWFpblJlc291cmNlRm9y
RnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisKICAgICBtX3BhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dNYWluUmVzb3VyY2VG
b3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKQEAgLTI3
NCwxMyArMjgxLDE1IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaChBdHRhY2htZW50
U2lkZSBzaWRlKQogICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAgaW5zcGVjdG9yUGFnZUdy
b3VwKCktPnByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQodHJ1ZSk7CiAK
KyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0
dGFjaGVkKHRydWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKwogICAgIHN3aXRjaCAobV9hdHRhY2ht
ZW50U2lkZSkgewogICAgIGNhc2UgQXR0YWNobWVudFNpZGVCb3R0b206Ci0gICAgICAgIG1fcGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6QXR0YWNoZWRCb3R0b20o
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZEJvdHRvbSgpLCBtX2luc3Bl
Y3RvclBhZ2UtPnBhZ2VJRCgpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEF0dGFjaG1l
bnRTaWRlUmlnaHQ6Ci0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3Rvcjo6QXR0YWNoZWRSaWdodCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6
OkF0dGFjaGVkUmlnaHQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIApAQCAtMjk3LDcgKzMwNiw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OmRldGFjaCgpCiAgICAgaWYgKG1faXNWaXNpYmxlKQogICAgICAgICBpbnNwZWN0b3JQYWdlR3Jv
dXAoKS0+cHJlZmVyZW5jZXMoKS5zZXRJbnNwZWN0b3JTdGFydHNBdHRhY2hlZChmYWxzZSk7CiAK
LSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkRldGFj
aGVkKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQoZmFsc2UpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAKICAgICBw
bGF0Zm9ybURldGFjaCgpOwogfQpAQCAtMzE0LDM0ICszMjQsNiBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQogICAgIHBsYXRm
b3JtU2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh3aWR0aCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnRvZ2dsZUphdmFTY3JpcHREZWJ1Z2dpbmcoKQotewotICAgIGlmICghbV9wYWdlKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQpCi0gICAg
ICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RvcEph
dmFTY3JpcHREZWJ1Z2dpbmcoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0gICAgZWxzZQotICAgICAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0SmF2
YVNjcmlwdERlYnVnZ2luZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLQotICAgIC8vIEZJWE1FOiBo
YXZlIHRoZSBXZWJQcm9jZXNzIG5vdGlmeSB1cyBvbiBzdGF0ZSBjaGFuZ2VzLgotICAgIG1faXNE
ZWJ1Z2dpbmdKYXZhU2NyaXB0ID0gIW1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0OwotfQotCi12b2lk
IFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKCkKLXsKLSAgICBp
ZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1faXNQcm9maWxpbmdKYXZh
U2NyaXB0KQotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3I6OlN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAg
IGVsc2UKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yOjpTdGFydEphdmFTY3JpcHRQcm9maWxpbmcoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0KLSAg
ICAvLyBGSVhNRTogaGF2ZSB0aGUgV2ViUHJvY2VzcyBub3RpZnkgdXMgb24gc3RhdGUgY2hhbmdl
cy4KLSAgICBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdCA9ICFtX2lzUHJvZmlsaW5nSmF2YVNjcmlw
dDsKLX0KLQogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlUGFnZVByb2ZpbGluZygpCiB7
CiAgICAgaWYgKCFtX3BhZ2UpCkBAIC0zNjEsNiArMzQzLDIxIEBAIGJvb2wgV2ViSW5zcGVjdG9y
UHJveHk6OmlzSW5zcGVjdG9yUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAgcmV0dXJuIFdl
Ykluc3BlY3RvclBhZ2VHcm91cHM6OnNoYXJlZCgpLmlzSW5zcGVjdG9yUGFnZUdyb3VwKHBhZ2Uu
cGFnZUdyb3VwKCkpOwogfQogCitXZWJDb250ZXh0JiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVj
dG9yQ29udGV4dCgpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAg
IHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPFdlYkNvbnRleHQ+PiBjb250ZXh0Owor
CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdeworICAgICAgICBXZWJDb250ZXh0Q29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgICAgICBXZWJDb250ZXh0OjphcHBseVBsYXRm
b3JtU3BlY2lmaWNDb25maWd1cmF0aW9uRGVmYXVsdHMoY29uZmlndXJhdGlvbik7CisgICAgICAg
IGNvbnRleHQuY29uc3RydWN0KFdlYkNvbnRleHQ6OmNyZWF0ZShjb25maWd1cmF0aW9uKSk7Cisg
ICAgICAgIGNvbnRleHQuZ2V0KCktPnNldFByb2Nlc3NNb2RlbChQcm9jZXNzTW9kZWxNdWx0aXBs
ZVNlY29uZGFyeVByb2Nlc3Nlcyk7CisgICAgfSk7CisKKyAgICByZXR1cm4gKmNvbnRleHQuZ2V0
KCk7Cit9CisKIHN0YXRpYyBib29sIGlzTWFpbk9yVGVzdEluc3BlY3RvclBhZ2UoY29uc3QgV2Vi
SW5zcGVjdG9yUHJveHkqIHdlYkluc3BlY3RvclByb3h5LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVz
dFJlZikKIHsKICAgICBVUkwgcmVxdWVzdFVSTChVUkwoKSwgdG9JbXBsKHJlcXVlc3RSZWYpLT5y
ZXNvdXJjZVJlcXVlc3QoKS51cmwoKSk7CkBAIC00MjYsMjkgKzQyMywyMCBAQCB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCiAKIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yOjpEaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQobWVzc2FnZSksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIG1fcGFnZS0+cGFnZUlE
KCkpOwogfQogI2VuZGlmCiAKLS8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JQcm94eSBtZXNzYWdl
cwotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZSh1aW50NjRfdCYg
aW5zcGVjdG9yUGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBpbnNwZWN0b3JQYWdl
UGFyYW1ldGVycykKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmVhZ2VybHlDcmVhdGVJbnNwZWN0
b3JQYWdlKCkKIHsKLSAgICBpbnNwZWN0b3JQYWdlSUQgPSAwOwotCi0gICAgaWYgKCFtX3BhZ2Up
CisgICAgaWYgKG1faW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pc0F0
dGFjaGVkID0gc2hvdWxkT3BlbkF0dGFjaGVkKCk7Ci0gICAgbV9hdHRhY2htZW50U2lkZSA9IHN0
YXRpY19jYXN0PEF0dGFjaG1lbnRTaWRlPihpbnNwZWN0b3JQYWdlR3JvdXAoKS0+cHJlZmVyZW5j
ZXMoKS5pbnNwZWN0b3JBdHRhY2htZW50U2lkZSgpKTsKLQotICAgIFdlYlBhZ2VQcm94eSogaW5z
cGVjdG9yUGFnZSA9IHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpOwotICAgIEFTU0VSVChp
bnNwZWN0b3JQYWdlKTsKLSAgICBpZiAoIWluc3BlY3RvclBhZ2UpCisgICAgbV9pbnNwZWN0b3JQ
YWdlID0gcGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisgICAgQVNTRVJUKG1faW5zcGVj
dG9yUGFnZSk7CisgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGluc3BlY3RvclBhZ2VJRCA9IGluc3BlY3RvclBhZ2UtPnBhZ2VJRCgpOwotICAgIGluc3Bl
Y3RvclBhZ2VQYXJhbWV0ZXJzID0gaW5zcGVjdG9yUGFnZS0+Y3JlYXRpb25QYXJhbWV0ZXJzKCk7
Ci0KICAgICBXS1BhZ2VQb2xpY3lDbGllbnRWMSBwb2xpY3lDbGllbnQgPSB7CiAgICAgICAgIHsg
MSwgdGhpcyB9LAogICAgICAgICAwLCAvKiBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgKi8KQEAgLTQ1OSw3MyArNDQ3LDU3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2UodWludDY0X3QmIGluc3BlY3RvclBh
Z2VJRCwgV2ViUGFnZUNyCiAgICAgICAgIDAsIC8qIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlICov
CiAgICAgfTsKIAotICAgIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQodG9BUEkoaW5zcGVjdG9y
UGFnZSksICZwb2xpY3lDbGllbnQuYmFzZSk7CisgICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVu
dCh0b0FQSShtX2luc3BlY3RvclBhZ2UpLCAmcG9saWN5Q2xpZW50LmJhc2UpOwogCi0gICAgU3Ry
aW5nQnVpbGRlciB1cmw7Ci0KLSAgICB1cmwuYXBwZW5kKGluc3BlY3RvclBhZ2VVUkwoKSk7Ci0K
LSAgICB1cmwuYXBwZW5kTGl0ZXJhbCgiP2RvY2tTaWRlPSIpOwotCi0gICAgaWYgKG1faXNBdHRh
Y2hlZCkgewotICAgICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKLSAgICAgICAgY2Fz
ZSBBdHRhY2htZW50U2lkZUJvdHRvbToKLSAgICAgICAgICAgIHVybC5hcHBlbmRMaXRlcmFsKCJi
b3R0b20iKTsKLSAgICAgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3Rvcjo6QXR0YWNoZWRCb3R0b20oKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZVJpZ2h0OgotICAgICAgICAg
ICAgdXJsLmFwcGVuZExpdGVyYWwoInJpZ2h0Iik7Ci0gICAgICAgICAgICBtX3BhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVkUmlnaHQoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0gZWxzZQot
ICAgICAgICB1cmwuYXBwZW5kTGl0ZXJhbCgidW5kb2NrZWQiKTsKLQotICAgIG1fcGFnZS0+cHJv
Y2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVSTCgpKTsKLQot
ICAgIGluc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgdXJsLnRvU3RyaW5nKCkp
KTsKLQotICAgIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UgPSB0cnVlOworICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9y
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOwor
ICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwo
aW5zcGVjdG9yQmFzZVVSTCgpKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRl
SW5zcGVjdG9yUGFnZUZvclRlc3QodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMpCisvLyBDYWxsZWQgYnkg
V2ViSW5zcGVjdG9yUHJveHkgbWVzc2FnZXMKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0
ZUluc3BlY3RvclBhZ2UoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29s
IGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlc3QpCiB7Ci0gICAgaW5zcGVjdG9yUGFnZUlEID0gMDsK
LQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2lzQXR0YWNoZWQg
PSBmYWxzZTsKKyAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOwogCi0gICAgV2ViUGFn
ZVByb3h5KiBpbnNwZWN0b3JQYWdlID0gcGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCk7Ci0g
ICAgQVNTRVJUKGluc3BlY3RvclBhZ2UpOwotICAgIGlmICghaW5zcGVjdG9yUGFnZSkKKyAgICBB
U1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKKyAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaW5zcGVjdG9yUGFnZUlEID0gaW5zcGVjdG9yUGFnZS0+cGFnZUlE
KCk7Ci0gICAgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMgPSBpbnNwZWN0b3JQYWdlLT5jcmVhdGlv
blBhcmFtZXRlcnMoKTsKKyAgICBtX3VuZGVyVGVzdCA9IHVuZGVyVGVzdDsKIAotICAgIFdLUGFn
ZVBvbGljeUNsaWVudFYxIHBvbGljeUNsaWVudCA9IHsKLSAgICAgICAgeyAxLCB0aGlzIH0sCi0g
ICAgICAgIDAsIC8qIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZv
clVzZVdpdGhWMCAqLwotICAgICAgICAwLCAvKiBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24gKi8KLSAgICAgICAgMCwgLyogZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VfZGVwcmVjYXRlZEZv
clVzZVdpdGhWMCAqLwotICAgICAgICAwLCAvKiB1bmFibGVUb0ltcGxlbWVudFBvbGljeSAqLwot
ICAgICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uLAotICAgICAgICAwLCAvKiBk
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZSAqLwotICAgIH07CisgICAgbV9pbnNwZWN0b3JQYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkVzdGFibGlzaENvbm5lY3Rp
b24oY29ubmVjdGlvbklkZW50aWZpZXIsIG1fcGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0KSwg
bV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisKKyAgICBpZiAoIW1fdW5kZXJUZXN0KSB7Cisg
ICAgICAgIG1fY2FuQXR0YWNoID0gY2FuQXR0YWNoOworICAgICAgICBtX2lzQXR0YWNoZWQgPSBz
aG91bGRPcGVuQXR0YWNoZWQoKTsKKyAgICAgICAgbV9hdHRhY2htZW50U2lkZSA9IHN0YXRpY19j
YXN0PEF0dGFjaG1lbnRTaWRlPihpbnNwZWN0b3JQYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS5p
bnNwZWN0b3JBdHRhY2htZW50U2lkZSgpKTsKIAotICAgIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGll
bnQodG9BUEkoaW5zcGVjdG9yUGFnZSksICZwb2xpY3lDbGllbnQuYmFzZSk7CisgICAgICAgIG1f
cGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQo
bV9pc0F0dGFjaGVkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3Mo
KS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGluc3BlY3RvckJhc2VVUkwoKSk7CisgICAgICAg
IGlmIChtX2lzQXR0YWNoZWQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lk
ZSkgeworICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZUJvdHRvbToKKyAgICAgICAgICAg
ICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBpbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwo
VVJMKCksIGluc3BlY3RvclRlc3RQYWdlVVJMKCkpKTsKKyAgICAgICAgICAgIGNhc2UgQXR0YWNo
bWVudFNpZGVSaWdodDoKKyAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3Bl
Y3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQ
YWdlLT5wYWdlSUQoKSk7CisgICAgfQogCi0gICAgbV9jcmVhdGVkSW5zcGVjdG9yUGFnZSA9IHRy
dWU7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIG1fdW5kZXJU
ZXN0ID8gaW5zcGVjdG9yVGVzdFBhZ2VVUkwoKSA6IGluc3BlY3RvclBhZ2VVUkwoKSkpOwogfQog
CiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuKCkKIHsKKyAgICBpZiAobV91bmRlclRlc3Qp
CisgICAgICAgIHJldHVybjsKKwogICAgIG1faXNWaXNpYmxlID0gdHJ1ZTsKIAogICAgIHBsYXRm
b3JtT3BlbigpOwpAQCAtNTMzLDIwICs1MDUsMjMgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
b3BlbigpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRpZENsb3NlKCkKIHsKLSAgICBpZiAo
IW1fY3JlYXRlZEluc3BlY3RvclBhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIG1faW5zcGVjdG9yUGFnZS0+Y2xvc2UoKTsKKyAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1faW5zcGVjdG9yUGFnZSA9IG51bGxwdHI7CisKICAgICBtX2lzVmlzaWJsZSA9IGZhbHNl
OwotICAgIG1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0ID0gZmFsc2U7Ci0gICAgbV9pc1Byb2ZpbGlu
Z0phdmFTY3JpcHQgPSBmYWxzZTsKICAgICBtX2lzUHJvZmlsaW5nUGFnZSA9IGZhbHNlOwotICAg
IG1fY3JlYXRlZEluc3BlY3RvclBhZ2UgPSBmYWxzZTsKICAgICBtX3Nob3dNZXNzYWdlU2VudCA9
IGZhbHNlOwogICAgIG1faWdub3JlRmlyc3RCcmluZ1RvRnJvbnQgPSBmYWxzZTsKIAogICAgIGlm
IChtX2lzQXR0YWNoZWQpCiAgICAgICAgIHBsYXRmb3JtRGV0YWNoKCk7CiAgICAgbV9pc0F0dGFj
aGVkID0gZmFsc2U7CisgICAgbV9jYW5BdHRhY2ggPSBmYWxzZTsKKyAgICBtX3VuZGVyVGVzdCA9
IGZhbHNlOwogCiAgICAgcGxhdGZvcm1EaWRDbG9zZSgpOwogfQpAQCAtNTY5LDYgKzU0NCw4IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmJyaW5nVG9Gcm9udCgpCiAKIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OmF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCBhdmFpbGFibGUpCiB7Cisg
ICAgbV9jYW5BdHRhY2ggPSBhdmFpbGFibGU7CisKICAgICBwbGF0Zm9ybUF0dGFjaEF2YWlsYWJp
bGl0eUNoYW5nZWQoYXZhaWxhYmxlKTsKIH0KIApAQCAtNTg3LDI4ICs1NjQsNiBAQCB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjphcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50KQogICAgIHBsYXRmb3JtQXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KTsKIH0K
IAotYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6Y2FuQXR0YWNoKCkKLXsKLSAgICAvLyBLZWVwIHRo
aXMgaW4gc3luYyB3aXRoIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNhbkF0dGFjaFdp
bmRvdy4gVGhlcmUgYXJlIHR3byBpbXBsZW1lbnRhdGlvbnMKLSAgICAvLyB0byBtYWtlIGxpZmUg
ZWFzaWVyIGluIHRoZSBtdWx0aS1wcm9jZXNzIHdvcmxkIHdlIGhhdmUuIFdlYkluc3BlY3RvclBy
b3h5IHVzZXMgY2FuQXR0YWNoIHRvIGRlY2lkZSBpZgotICAgIC8vIHdlIGNhbiBhdHRhY2ggb24g
b3BlbiAob24gdGhlIFVJIHByb2Nlc3Mgc2lkZSkuIEFuZCBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsOjpjYW5BdHRhY2hXaW5kb3cgaXMKLSAgICAvLyB1c2VkIHRvIGRlY2lkZSBpZiB3ZSBj
YW4gYXR0YWNoIHdoZW4gdGhlIGF0dGFjaCBidXR0b24gaXMgcHJlc3NlZCAob24gdGhlIFdlYlBy
b2Nlc3Mgc2lkZSkuCi0KLSAgICAvLyBJZiB3ZSBhcmUgYWxyZWFkeSBhdHRhY2hlZCwgYWxsb3cg
YXR0YWNoaW5nIGFnYWluIHRvIGFsbG93IHN3aXRjaGluZyBzaWRlcy4KLSAgICBpZiAobV9pc0F0
dGFjaGVkKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIERvbid0IGFsbG93IGF0dGFj
aGluZyB0byBhbm90aGVyIGluc3BlY3RvciAtLSB0d28gaW5zcGVjdG9ycyBpbiBvbmUgd2luZG93
IGlzIHRvbyBtdWNoIQotICAgIGlmIChtX2xldmVsID4gMSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGF0dGFjaCBpZiB0aGUgd2luZG93IHdvdWxkIGJl
IHRvbyBzbWFsbCB0byBhY2NvbW1vZGF0ZSB0aGUgbWluaW11bSBpbnNwZWN0b3IgaGVpZ2h0Lgot
ICAgIHVuc2lnbmVkIGluc3BlY3RlZFBhZ2VIZWlnaHQgPSBwbGF0Zm9ybUluc3BlY3RlZFdpbmRv
d0hlaWdodCgpOwotICAgIHVuc2lnbmVkIGluc3BlY3RlZFBhZ2VXaWR0aCA9IHBsYXRmb3JtSW5z
cGVjdGVkV2luZG93V2lkdGgoKTsKLSAgICB1bnNpZ25lZCBtYXhpbXVtQXR0YWNoZWRIZWlnaHQg
PSBpbnNwZWN0ZWRQYWdlSGVpZ2h0ICogMyAvIDQ7Ci0gICAgcmV0dXJuIG1pbmltdW1BdHRhY2hl
ZEhlaWdodCA8PSBtYXhpbXVtQXR0YWNoZWRIZWlnaHQgJiYgbWluaW11bUF0dGFjaGVkV2lkdGgg
PD0gaW5zcGVjdGVkUGFnZVdpZHRoOwotfQotCiBib29sIFdlYkluc3BlY3RvclByb3h5OjpzaG91
bGRPcGVuQXR0YWNoZWQoKQogewogICAgIHJldHVybiBpbnNwZWN0b3JQYWdlR3JvdXAoKS0+cHJl
ZmVyZW5jZXMoKS5pbnNwZWN0b3JTdGFydHNBdHRhY2hlZCgpICYmIGNhbkF0dGFjaCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCAxN2E3NDk4
Li4wNjVkN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVj
dG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAx
MSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KQEAgLTU5LDEwICs2MCwxMCBAQCBPQkpDX0NMQVNTIFdLV2ViSW5zcGVj
dG9yV0tWaWV3OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViQ29udGV4dDsKIGNs
YXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJv
eHk7Ci1zdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIAogZW51bSBBdHRhY2htZW50
U2lkZSB7CiAgICAgQXR0YWNobWVudFNpZGVCb3R0b20sCkBAIC04Myw3ICs4NCw3IEBAIHB1Ymxp
YzoKICAgICAvLyBQdWJsaWMgQVBJcwogICAgIFdlYlBhZ2VQcm94eSogcGFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZTsgfQogCi0gICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fY3JlYXRlZEluc3BlY3RvclBhZ2U7IH0KKyAgICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3Qg
eyByZXR1cm4gISFtX2luc3BlY3RvclBhZ2U7IH0KICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXNWaXNpYmxlOyB9CiAgICAgYm9vbCBpc0Zyb250KCk7CiAKQEAgLTEyMywx
NiArMTI0LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF0dGFjaGVkV2luZG93V2lkdGgodW5z
aWduZWQpOwogICAgIHZvaWQgc2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCBoZWlnaHQpIHsgcGxh
dGZvcm1TZXRUb29sYmFySGVpZ2h0KGhlaWdodCk7IH0KIAotICAgIGJvb2wgaXNEZWJ1Z2dpbmdK
YXZhU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQ7IH0KLSAg
ICB2b2lkIHRvZ2dsZUphdmFTY3JpcHREZWJ1Z2dpbmcoKTsKLQotICAgIGJvb2wgaXNQcm9maWxp
bmdKYXZhU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQ7IH0K
LSAgICB2b2lkIHRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmcoKTsKLQogICAgIGJvb2wgaXNQcm9m
aWxpbmdQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Byb2ZpbGluZ1BhZ2U7IH0KICAgICB2b2lk
IHRvZ2dsZVBhZ2VQcm9maWxpbmcoKTsKIAogICAgIHN0YXRpYyBib29sIGlzSW5zcGVjdG9yUGFn
ZShXZWJQYWdlUHJveHkmKTsKKyAgICBzdGF0aWMgV2ViQ29udGV4dCYgaW5zcGVjdG9yQ29udGV4
dCgpOwogCiAgICAgLy8gUHJvdmlkZWQgYnkgcGxhdGZvcm0gV2ViSW5zcGVjdG9yUHJveHkgaW1w
bGVtZW50YXRpb25zLgogICAgIFN0cmluZyBpbnNwZWN0b3JQYWdlVVJMKCkgY29uc3Q7CkBAIC0x
NTAsOSArMTQ2LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViSW5zcGVj
dG9yUHJveHkoV2ViUGFnZVByb3h5Kik7CiAKKyAgICB2b2lkIGVhZ2VybHlDcmVhdGVJbnNwZWN0
b3JQYWdlKCk7CisKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVy
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
TWVzc2FnZUVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICBXZWJQYWdlUHJveHkqIHBsYXRmb3Jt
Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOwogICAgIHZvaWQgcGxhdGZvcm1PcGVuKCk7CkBAIC0xNzMs
OCArMTcwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CiAKICAgICAvLyBDYWxsZWQgYnkg
V2ViSW5zcGVjdG9yUHJveHkgbWVzc2FnZXMKLSAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBhZ2Uo
dWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwot
ICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QodWludDY0X3QmIGluc3BlY3RvclBh
Z2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOworICAgIHZvaWQgY3JlYXRlSW5zcGVj
dG9yUGFnZShJUEM6OkF0dGFjaG1lbnQsIGJvb2wgY2FuQXR0YWNoLCBib29sIHVuZGVyVGVzdCk7
CiAgICAgdm9pZCBkaWRDbG9zZSgpOwogICAgIHZvaWQgYnJpbmdUb0Zyb250KCk7CiAgICAgdm9p
ZCBhdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wpOwpAQCAtMTg3LDcgKzE4Myw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKICNlbmRpZgogCi0gICAgYm9vbCBjYW5BdHRhY2goKTsKKyAgICBib29sIGNh
bkF0dGFjaCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuQXR0YWNoOyB9CiAgICAgYm9vbCBzaG91bGRP
cGVuQXR0YWNoZWQoKTsKIAogICAgIHZvaWQgb3BlbigpOwpAQCAtMjA0LDE5ICsyMDAsMTUgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5pdGlhbFdpbmRvd1dpZHRoOwog
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbml0aWFsV2luZG93SGVpZ2h0OwogCi0gICAgLy8g
S2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0aGUgdmFsdWUgaW4gSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC4KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bUF0dGFjaGVkV2lkdGg7
Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1BdHRhY2hlZEhlaWdodDsKLQogICAg
IFdlYlBhZ2VQcm94eSogbV9wYWdlOworICAgIFdlYlBhZ2VQcm94eSogbV9pbnNwZWN0b3JQYWdl
OwogCisgICAgYm9vbCBtX3VuZGVyVGVzdDsKICAgICBib29sIG1faXNWaXNpYmxlOwogICAgIGJv
b2wgbV9pc0F0dGFjaGVkOwotICAgIGJvb2wgbV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQ7Ci0gICAg
Ym9vbCBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdDsKKyAgICBib29sIG1fY2FuQXR0YWNoOwogICAg
IGJvb2wgbV9pc1Byb2ZpbGluZ1BhZ2U7CiAgICAgYm9vbCBtX3Nob3dNZXNzYWdlU2VudDsKLSAg
ICBib29sIG1fY3JlYXRlZEluc3BlY3RvclBhZ2U7CiAgICAgYm9vbCBtX2lnbm9yZUZpcnN0QnJp
bmdUb0Zyb250OwogCiAgICAgLy8gVGhlIGRlYnVnZ2VyIHN0b3BzIGFsbCB0aGUgcGFnZXMgaW4g
dGhlIHNhbWUgUGFnZUdyb3VwLiBIYXZpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlNmM5NDRkLi5lYjdm
YTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMywxMCArMjMsMTEgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiBtZXNz
YWdlcyAtPiBXZWJJbnNwZWN0b3JQcm94eSB7Ci0gICAgQ3JlYXRlSW5zcGVjdG9yUGFnZSgpIC0+
ICh1aW50NjRfdCBpbnNwZWN0b3JQYWdlSUQsIFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycykKLSAgICBDcmVhdGVJbnNwZWN0b3JQYWdlRm9y
VGVzdCgpIC0+ICh1aW50NjRfdCBpbnNwZWN0b3JQYWdlSUQsIFdlYktpdDo6V2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycykKKyAgICBDcmVhdGVJbnNwZWN0
b3JQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBjYW5BdHRh
Y2gsIGJvb2wgdW5kZXJUZXN0KQorCiAgICAgRGlkQ2xvc2UoKQogICAgIEJyaW5nVG9Gcm9udCgp
CisKICAgICBJbnNwZWN0ZWRVUkxDaGFuZ2VkKFN0cmluZyB1cmxTdHJpbmcpCiAKICAgICBTYXZl
KFN0cmluZyBmaWxlbmFtZSwgU3RyaW5nIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9v
bCBmb3JjZVNhdmVBcykKQEAgLTM1LDYgKzM2LDcgQEAgbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9y
UHJveHkgewogICAgIEF0dGFjaEJvdHRvbSgpCiAgICAgQXR0YWNoUmlnaHQoKQogICAgIERldGFj
aCgpCisKICAgICBBdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wgYXZhaWxhYmxlKQogCiAg
ICAgU2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA5MDQ5ZjliLi45NzMyYzA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAt
MzksNiArMzksNyBAQAogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUgIldlYkNvbnRl
eHQuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eS5oIgogI2luY2x1ZGUgIldlYk5hdmln
YXRpb25EYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHku
aCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKQEAgLTExNSw2ICsxMTYsOCBAQCBXZWJQcm9j
ZXNzUHJveHk6On5XZWJQcm9jZXNzUHJveHkoKQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldExh
dW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25z
KQogewogICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPSBQcm9jZXNzTGF1bmNoZXI6Oldl
YlByb2Nlc3M7CisgICAgaWYgKCZtX2NvbnRleHQuZ2V0KCkgPT0gJldlYkluc3BlY3RvclByb3h5
OjppbnNwZWN0b3JDb250ZXh0KCkpCisgICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFs
aXphdGlvbkRhdGEuYWRkKEFTQ0lJTGl0ZXJhbCgiaW5zcGVjdG9yLXByb2Nlc3MiKSwgQVNDSUlM
aXRlcmFsKCIxIikpOwogICAgIHBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyhsYXVuY2hPcHRpb25z
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNw
ZWN0b3JQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3Bl
Y3RvclByb3h5RWZsLmNwcAppbmRleCBlZWMzOWNjLi4wOTEyMTdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApAQCAt
MTA0LDcgKzEwNCw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
Q3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgaWYgKCFtX2luc3BlY3RvcldpbmRvdykKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBXS0NvbnRleHRSZWYgd2tDb250ZXh0ID0gdG9BUEkoJnBhZ2Uo
KS0+cHJvY2VzcygpLmNvbnRleHQoKSk7CisgICAgV0tDb250ZXh0UmVmIHdrQ29udGV4dCA9IHRv
QVBJKCZpbnNwZWN0b3JDb250ZXh0KCkpOwogICAgIFdLUGFnZUdyb3VwUmVmIHdrUGFnZUdyb3Vw
ID0gdG9BUEkoaW5zcGVjdG9yUGFnZUdyb3VwKCkpOwogCiAgICAgbV9pbnNwZWN0b3JWaWV3ID0g
RVdLVmlld0NyZWF0ZSh3a0NvbnRleHQsIHdrUGFnZUdyb3VwLCBlY29yZV9ldmFzX2dldChtX2lu
c3BlY3RvcldpbmRvdyksIC8qIHNtYXJ0ICovIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRleCA1MGU0NWM0Li5i
MjIxOTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3Bl
Y3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYklu
c3BlY3RvclByb3h5R3RrLmNwcApAQCAtNjIsNyArNjIsNyBAQCBXZWJQYWdlUHJveHkqIFdlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogewogICAgIEFTU0VS
VChtX3BhZ2UpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JWaWV3KTsKLSAgICBtX2luc3BlY3Rv
clZpZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKCZwYWdlKCktPnByb2Nl
c3MoKS5jb250ZXh0KCksIG51bGxwdHIsIGluc3BlY3RvclBhZ2VHcm91cCgpLCBudWxscHRyLCBt
X3BhZ2UpKTsKKyAgICBtX2luc3BlY3RvclZpZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdC
YXNlQ3JlYXRlKCZpbnNwZWN0b3JDb250ZXh0KCksIG51bGxwdHIsIGluc3BlY3RvclBhZ2VHcm91
cCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgZ19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcihH
X09CSkVDVChtX2luc3BlY3RvclZpZXcpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJm1faW5z
cGVjdG9yVmlldykpOwogICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lU
X1dFQl9WSUVXX0JBU0UobV9pbnNwZWN0b3JWaWV3KSk7CiB9CkBAIC0xODIsOCArMTgyLDExIEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKCkKICAgICAgICAgbV9pbnNw
ZWN0b3JXaW5kb3cgPSAwOwogICAgIH0KIAotICAgIC8vIFNldCBhIGRlZmF1bHQgYXR0YWNoZWQg
c2l6ZSBiYXNlZCBvbiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLgorICAgIC8vIFNldCBh
IGRlZmF1bHQgc2l6ZXMgYmFzZWQgb24gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC4KICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdEF0dGFjaGVkU2l6ZSA9IDMwMDsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bUF0dGFjaGVkV2lkdGggPSA3NTA7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1BdHRhY2hlZEhlaWdodCA9IDI1MDsKKwogICAgIGlm
IChtX2F0dGFjaG1lbnRTaWRlID09IEF0dGFjaG1lbnRTaWRlQm90dG9tKSB7CiAgICAgICAgIHVu
c2lnbmVkIG1heGltdW1BdHRhY2hlZEhlaWdodCA9IHBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVp
Z2h0KCkgKiAzIC8gNDsKICAgICAgICAgcGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodChz
dGQ6Om1heChtaW5pbXVtQXR0YWNoZWRIZWlnaHQsIHN0ZDo6bWluKGRlZmF1bHRBdHRhY2hlZFNp
emUsIG1heGltdW1BdHRhY2hlZEhlaWdodCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IGM2YzY2OGMuLjljZWNm
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9y
UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0
b3JQcm94eU1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCAiV0tVUkxDRi5oIgogI2ltcG9y
dCAiV0tWaWV3UHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCIKKyNp
bXBvcnQgIldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlBhZ2VHcm91cC5o
IgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlcy5oIgpA
QCAtMTE0LDcgKzExNSw3IEBAIC0gKElCQWN0aW9uKWF0dGFjaEJvdHRvbTooaWQpc2VuZGVyCiAK
IC0gKHZvaWQpY2xvc2UKIHsKLSAgICBfaW5zcGVjdG9yUHJveHkgPSAwOworICAgIF9pbnNwZWN0
b3JQcm94eSA9IG51bGxwdHI7CiB9CiAKIC0gKHZvaWQpd2luZG93RGlkTW92ZTooTlNOb3RpZmlj
YXRpb24gKilub3RpZmljYXRpb24KQEAgLTQxOCw3ICs0MTksNyBAQCBXZWJQYWdlUHJveHkqIFdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogICAgICAgICAg
ICAgaW5pdGlhbFJlY3QgPSBbTlNXaW5kb3cgY29udGVudFJlY3RGb3JGcmFtZVJlY3Q6d2luZG93
RnJhbWUgc3R5bGVNYXNrOndpbmRvd1N0eWxlTWFza107CiAgICAgfQogCi0gICAgbV9pbnNwZWN0
b3JWaWV3ID0gYWRvcHROUyhbW1dLV2ViSW5zcGVjdG9yV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOmluaXRpYWxSZWN0IGNvbnRleHRSZWY6dG9BUEkoJnBhZ2UoKS0+cHJvY2VzcygpLmNvbnRl
eHQoKSkgcGFnZUdyb3VwUmVmOnRvQVBJKGluc3BlY3RvclBhZ2VHcm91cCgpKSByZWxhdGVkVG9Q
YWdlOnRvQVBJKG1fcGFnZSldKTsKKyAgICBtX2luc3BlY3RvclZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJJbnNwZWN0b3JXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6aW5pdGlhbFJlY3QgY29udGV4
dFJlZjp0b0FQSSgmaW5zcGVjdG9yQ29udGV4dCgpKSBwYWdlR3JvdXBSZWY6dG9BUEkoaW5zcGVj
dG9yUGFnZUdyb3VwKCkpIHJlbGF0ZWRUb1BhZ2U6bnVsbHB0cl0pOwogICAgIEFTU0VSVChtX2lu
c3BlY3RvclZpZXcpOwogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSAx
MDkwCkBAIC00OTksMTMgKzUwMCwxMyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bURpZENsb3NlKCkKICAgICBpZiAobV9pbnNwZWN0b3JXaW5kb3cpIHsKICAgICAgICAgW21faW5z
cGVjdG9yV2luZG93IHNldERlbGVnYXRlOm5pbF07CiAgICAgICAgIFttX2luc3BlY3RvcldpbmRv
dyBvcmRlck91dDpuaWxdOwotICAgICAgICBtX2luc3BlY3RvcldpbmRvdyA9IDA7CisgICAgICAg
IG1faW5zcGVjdG9yV2luZG93ID0gbmlsOwogICAgIH0KIAotICAgIG1faW5zcGVjdG9yVmlldyA9
IDA7CisgICAgbV9pbnNwZWN0b3JWaWV3ID0gbmlsOwogCiAgICAgW21faW5zcGVjdG9yUHJveHlP
YmpDQWRhcHRlciBjbG9zZV07Ci0gICAgbV9pbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyID0gMDsK
KyAgICBtX2luc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIgPSBuaWw7CiB9CiAKIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtSGlkZSgpCkBAIC01MTgsNyArNTE5LDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6cGxhdGZvcm1IaWRlKCkKICAgICBpZiAobV9pbnNwZWN0b3JXaW5kb3cp
IHsKICAgICAgICAgW21faW5zcGVjdG9yV2luZG93IHNldERlbGVnYXRlOm5pbF07CiAgICAgICAg
IFttX2luc3BlY3RvcldpbmRvdyBvcmRlck91dDpuaWxdOwotICAgICAgICBtX2luc3BlY3Rvcldp
bmRvdyA9IDA7CisgICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gbmlsOwogICAgIH0KIH0KIApA
QCAtNTg5LDcgKzU5MCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjCiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2Fs
bHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOwogCi0gICAg
ICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGlkU2F2
ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAg
ICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
STo6RGlkU2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVjdG9yUGFnZS0+
cGFnZUlEKCkpOwogICAgIH07CiAKICAgICBpZiAoIWZvcmNlU2F2ZURpYWxvZykgewpAQCAtNjIz
LDcgKzYyNCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmCiAgICAgW2hhbmRsZSB3cml0ZURh
dGE6W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKICAg
ICBbaGFuZGxlIGNsb3NlRmlsZV07CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3I6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0
cmluZ10pLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6d2luZG93RnJhbWVEaWRDaGFuZ2UoKQpAQCAtNzA4LDcgKzcwOSw3IEBAIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKCkKICAgICBpZiAobV9pbnNwZWN0b3JX
aW5kb3cpIHsKICAgICAgICAgW21faW5zcGVjdG9yV2luZG93IHNldERlbGVnYXRlOm5pbF07CiAg
ICAgICAgIFttX2luc3BlY3RvcldpbmRvdyBvcmRlck91dDpuaWxdOwotICAgICAgICBtX2luc3Bl
Y3RvcldpbmRvdyA9IDA7CisgICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gbmlsOwogICAgIH0K
IAogICAgIFttX2luc3BlY3RvclZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjdjMzZm
MC4uZDBhOTJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNDk1LDEwICs0OTUsMTAgQEAKIAkJMUFGRTQzNjUxOEI2QzA4MTAw
OUM3QTQ4IC8qIFVJRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQUZFNDM2MzE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5tbSAq
LzsgfTsKIAkJMUFGRTQzNjYxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRkU0MzY0MThCNkMwODEw
MDlDN0E0OCAvKiBVSURlbGVnYXRlLmggKi87IH07CiAJCTFBRkY0OTAwMTgzM0RFNzgwMDlBQjE1
QSAvKiBXS0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRjQ4RkUxODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVj
YXRlZEZ1bmN0aW9ucy5jcHAgKi87IH07CisJCTFDODkxRDY1MTlCMTI0RkYwMEJBNzlERCAvKiBX
ZWJJbnNwZWN0b3JVSS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzg5MUQ2MjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwICov
OyB9OworCQkxQzg5MUQ2NjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODkxRDYzMTlCMTI0
RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5oICovOyB9OwogCQkxQzhBRTc2MTE5OTJGNjNB
MDBBQkY2RUMgLyogRG9ja0JvdHRvbUxlZ2FjeS5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEFFNzVGMTk5MkY2MkYwMEFCRjZFQyAvKiBEb2Nr
Qm90dG9tTGVnYWN5LnBkZiAqLzsgfTsKIAkJMUM4QUU3NjIxOTkyRjYzQzAwQUJGNkVDIC8qIERv
Y2tSaWdodExlZ2FjeS5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDOEFFNzYwMTk5MkY2MkYwMEFCRjZFQyAvKiBEb2NrUmlnaHRMZWdhY3kucGRm
ICovOyB9OwotCQkxQzhFMjVBODEyNzBFM0JCMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUM4RTI1NkIxMjcwREUzODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
LmNwcCAqLzsgfTsKLQkJMUM4RTI1QTkxMjcwRTNCQzAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQzhFMjU2QTEyNzBERTM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQuaCAqLzsgfTsKIAkJMUM4RTI4MjAxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI4MUUx
Mjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oICovOyB9OwogCQkxQzhFMjgyMTEyNzVE
MTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyODFGMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNw
ZWN0b3IuY3BwICovOyB9OwogCQkxQzhFMjgzNDEyNzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVj
dG9yUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDOEUyODMyMTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oICovOyB9OwpA
QCAtNTEwLDggKzUxMCwxMCBAQAogCQkxQ0E4QjkzNjEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5z
cGVjdG9yUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQ0E4QjkzNTEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW0gKi87IH07CiAJCTFDQThCOTQ1MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQ0E4Qjk0MzEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIgLyog
V2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUNBOEI5NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3Rv
clByb3h5TWVzc2FnZXMuaCAqLzsgfTsKLQkJMUNBOEI5NTQxMjdDODkxNTAwNTc2QzJCIC8qIFdl
Ykluc3BlY3Rvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNYWMubW0gKi87
IH07CisJCTFDQThCOTU0MTI3Qzg5MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyREFEMTI3
OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSAqLzsgfTsKIAkJMUNCNzVDOTQx
NzAxRTg4MDAwOUY4MDlGIC8qIERvY2tSaWdodC5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQjc1QzkzMTcwMUU4ODAwMDlGODA5RiAvKiBEb2Nr
UmlnaHQucGRmICovOyB9OworCQkxQ0JCRTRBMDE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVj
dG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJ
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJMUNCQkU0QTExOUI2NkM1MzAwNkI3RDgxIC8q
IFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDQkJFNDlGMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VzLmggKi87IH07CiAJCTFDQkM5NDVFMTY1MTVFRDIwMEQ2OEFBRSAvKiBEb2NrQm90
dG9tLnBkZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUNCQzk0NUQxNjUxNUVEMjAwRDY4QUFFIC8qIERvY2tCb3R0b20ucGRmICovOyB9OwogCQkxRjMz
NUJDMDE4NUI4NEYwMDAxQTIwMUEgLyogV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjMzNUJCRjE4
NUI4NEQ4MDAxQTIwMUEgLyogV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUY2MDRCQTgxODg5
RkE3NDAwRUUwMzk1IC8qIFdLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGNjA0QkE2MTg4OUZBNzQwMEVFMDM5
NSAvKiBXS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI0NzUsMTAgKzI0NzcsMTEgQEAKIAkJMUFGRjQ4
RkUxODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQkI0MTdDOTEyQzAwQ0NBMDAyQkU2N0IgLyog
VGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDNzdDMTk1MTI4OEE4NzIwMDZBNzQyRiAvKiBXZWJJbnNwZWN0b3JQcm94eS5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM4OTFENjIxOUIxMjRGRjAwQkE3
OUREIC8qIFdlYkluc3BlY3RvclVJLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkluc3BlY3RvclVJLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM4OTFENjMxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclVJLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDODkxRDY0MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JVSS5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4QUU3NUYxOTkyRjYyRjAwQUJG
NkVDIC8qIERvY2tCb3R0b21MZWdhY3kucGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBuYW1lID0gRG9ja0JvdHRvbUxlZ2FjeS5w
ZGY7IHBhdGggPSBSZXNvdXJjZXMvRG9ja0JvdHRvbUxlZ2FjeS5wZGY7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDOEFFNzYwMTk5MkY2MkYwMEFCRjZFQyAvKiBEb2NrUmlnaHRMZWdh
Y3kucGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
aW1hZ2UucGRmOyBuYW1lID0gRG9ja1JpZ2h0TGVnYWN5LnBkZjsgcGF0aCA9IFJlc291cmNlcy9E
b2NrUmlnaHRMZWdhY3kucGRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzhFMjU2
QTEyNzBERTM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4RTI1NkIxMjcwREUzODAwQkM3QkQwIC8q
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RTI4MUUxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RTI4MUYxMjc1RDE1NDAwQkM3QkQwIC8qIFdl
Ykluc3BlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJ
bnNwZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzhFMjgzMjEyNzVE
NzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI0ODgsMTEgKzI0OTEsMTMgQEAKIAkJMUM4RTJBMUMxMjc3ODMzRjAwQkM3QkQwIC8q
IFdlYkluc3BlY3Rvci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNw
ZWN0b3IubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEUyQTMx
MTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2Vp
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RTJBMzIxMjc3ODUyNDAw
QkM3QkQwIC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkluc3BlY3Rvck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAv
KiBXZWJJbnNwZWN0b3JVSU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYkluc3BlY3RvclVJTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQ0E4QjkzNTEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94eU1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBOEI5NDMxMjdDODgyQTAwNTc2
QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBOEI5NDQxMjdDODgyQTAwNTc2
QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQ0I3NUM5MzE3MDFFODgwMDA5RjgwOUYgLyogRG9ja1JpZ2h0LnBkZiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBk
ZjsgbmFtZSA9IERvY2tSaWdodC5wZGY7IHBhdGggPSBSZXNvdXJjZXMvRG9ja1JpZ2h0LnBkZjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8q
IFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCQkU0OUYxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYklu
c3BlY3RvclVJTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
SW5zcGVjdG9yVUlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0JD
OTQ1RDE2NTE1RUQyMDBENjhBQUUgLyogRG9ja0JvdHRvbS5wZGYgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7IG5hbWUgPSBEb2NrQm90
dG9tLnBkZjsgcGF0aCA9IFJlc291cmNlcy9Eb2NrQm90dG9tLnBkZjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUNDNDE3QzkxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29t
cGxldGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0Q2hlY2tlckNv
bXBsZXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYwMTgxNjkxODU4REMx
NTAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC01NjYyLDggKzU2NjcsNiBAQAogCQkJCUJDMUJFMURFMTJENTRBNDEw
MDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlvbkNsaWVudC5oICovLAogCQkJCUJDMTExQTU5MTEyRjRG
QkIwMDMzN0JBQiAvKiBXZWJJbnNwZWN0b3JDbGllbnQuY3BwICovLAogCQkJCUJDMDMyRDZEMTBG
NDM3OEQwMDU4QzE1QSAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCAqLywKLQkJCQkxQzhFMjU2QjEy
NzBERTM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwICovLAotCQkJ
CTFDOEUyNTZBMTI3MERFMzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
ICovLAogCQkJCTMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGll
bnQuY3BwICovLAogCQkJCTMxMDk5OTY4MTQ2QzcxRjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRp
b25DbGllbnQuaCAqLywKIAkJCQk1MTIxMjdDMTE5MDgyMzlBMDBEQUYzNUMgLyogV2ViUGFzdGVi
b2FyZE92ZXJyaWRlcy5jcHAgKi8sCkBAIC01NzIzLDYgKzU3MjYsOSBAQAogCQkJCTFDOEUyODFG
MTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3BwICovLAogCQkJCTFDOEUyODFFMTI3
NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuaCAqLywKIAkJCQkxQzhFMkExQzEyNzc4MzNG
MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluICovLAorCQkJCTFDODkxRDYyMTlC
MTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgKi8sCisJCQkJMUM4OTFENjMxOUIx
MjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggKi8sCisJCQkJMUM4OTFENjQxOUIxMjRG
RjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluICovLAogCQkJCUJDODU3Rjg0
MTJCODJEMEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgKi8sCiAJ
CQkJQkM4NTdGODMxMkI4MkQwQjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
LmggKi8sCiAJCQkJQkM5NjNENkExMTNERDE5MjAwNTc0QkUyIC8qIFdlYlBhZ2UuY3BwICovLApA
QCAtNjQ3MSw3ICs2NDc3LDcgQEAKIAkJCQk1MTkyRDU3NTE5NjFGRDAzMDBDRDE5QUEgLyogU2Vy
dmljZXNPdmVybGF5Q29udHJvbGxlci5tbSAqLywKIAkJCQkxQUFGMjYzNzE0Njg3QzM5MDA0QTFF
OEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCAqLywKIAkJCQkxQUFGMjYzNjE0
Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gKi8sCi0J
CQkJMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1hYy5tbSAqLywKKwkJ
CQkxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yVUlNYWMubW0gKi8sCiAJ
CQkJQkM5NjNENkQxMTNERDFBNTAwNTc0QkUyIC8qIFdlYlBhZ2VNYWMubW0gKi8sCiAJCQkJMjlD
RDU1QTgxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNl
LmggKi8sCiAJCQkJMjlDRDU1QTkxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RCYXNlLm1tICovLApAQCAtNjgyNyw2ICs2ODMzLDggQEAKIAkJCQkxQzhFMkEz
MjEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCAqLywKIAkJCQkxQ0E4
Qjk0MzEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovLAogCQkJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94
eU1lc3NhZ2VzLmggKi8sCisJCQkJMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3Bl
Y3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQkxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdE
ODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oICovLAogCQkJCTMzRDNBM0M0MTMzOTYxNzkw
MDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJ
CQkJMzNEM0EzQzUxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyTWVzc2Fn
ZXMuaCAqLywKIAkJCQkzM0QzQTNDNjEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1h
bmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC03NDM4LDYgKzc0NDYsNyBAQAog
CQkJCTJEQUNFNjRFMThBREJGRjAwMEU0Q0E3NiAvKiBfV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxNTc4QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNkEyNUZERDEyQURDNkNDMDBEQzQwQ0MgLyogV2ViRGF0
YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzg5MUQ2NjE5QjEyNEZGMDBCQTc5
REQgLyogV2ViSW5zcGVjdG9yVUkuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2MkE3NkI3MTJCMUIy
NUYwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRjYyQTc2NUQxMkIxQUJDMzAwMDVGMUI2IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZBQjU0MTE5MkIxQzRBMDAzQTlGRDEgLyogV0tQREZQ
YWdlTnVtYmVySW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTc0OTQsNyArNzUwMyw2IEBA
CiAJCQkJMUM4RTI4MjAxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUEzQ0MxNjcxODkwNkFDRjAwMUU2RUQ4IC8qIFdLV2ViVmlldy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMwMzJEODIxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkluc3BlY3RvckNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUM4RTI1QTkxMjcwRTNCQzAwQkM3QkQwIC8qIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzhFMkEzNjEy
Nzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFDOEUyODM0MTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUNBOEI5NDYxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclBy
b3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzc2Miw2ICs3NzcwLDcgQEAKIAkJCQlG
NjM0NDQ1RDEyQTg4NUU5MDAwNjEyRDggLyogV0tTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFBRjA4QjgxOTI2OUU2RDAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYwNDEyNEZGMDI3MDA2OEYy
MEEgLyogV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTFDQkJF
NEExMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkNCNEU0QzE4QkJFMDQ0MDAwRkNGQzkgLyogV0tDb250ZW50Vmlldy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzdBNjRFNTcxOEYzOEY0NjAwRUIzMEYxIC8qIF9XS0Zvcm1JbnB1
dFNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFGNjA0QkFBMTg4OUZCQjgwMEVFMDM5NSAv
KiBXS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAt
ODg2NSw2ICs4ODc0LDcgQEAKIAkJCQkwMEI5NjYxOTE4RTI1QUUxMDBDRTFGODggLyogRmluZENs
aWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBRTVCN0ZCMTFFN0FFRDIwMEJBNjc2NyAvKiBO
ZXRzY2FwZVBsdWdpbk1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDMzYxRDcyMTkyN0ZBMzYw
MDM2QTU5RCAvKiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkxQzg5MUQ2NTE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUE0QTlDNTUxMkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9k
dWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNEE5QzlBMTJCODIxQ0QwMDhGRTk4NCAvKiBO
ZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQTU4ODkzMTFF
RTcwNDAwMDYxQjg4MiAvKiBOZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTg5MDMsNiArODkxMyw3IEBACiAJCQkJMUEyRDg0MzkxMjdGNjVENTAwMUVCOTYyIC8qIE5Q
T2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBQUYwOEFEMTkyNjkzNjcwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDgyQTYxMjdGNEVBQjAwMUVCOTYyIC8qIE5QT2Jq
ZWN0UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUNCQkU0QTAxOUI2NkM1MzAwNkI3RDgx
IC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBMkQ4MkE4MTI3RjRFQUIwMDFFQjk2MiAvKiBOUFJlbW90ZU9iamVjdE1hcC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQTIxNjFCMTExRjM3NjY0MDA4QUQwRjUgLyogTlBSdW50aW1lT2JqZWN0
TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjE2MkIwMTFGMzg5NzEwMDhBRDBGNSAvKiBO
UFJ1bnRpbWVVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MTYyLDggKzkxNzMsNyBA
QAogCQkJCUJDQ0Y2QUJDMTJDOTFFRjkwMDhGOUMzNSAvKiBXZWJJbWFnZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQzhFMjgyMTEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDMTExQTYwMTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJJbnNwZWN0
b3JDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUM4RTI1QTgxMjcwRTNCQjAwQkM3QkQw
IC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFD
QThCOTU0MTI3Qzg5MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JNYWMubW0gaW4gU291cmNlcyAq
LywKKwkJCQkxQ0E4Qjk1NDEyN0M4OTE1MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yVUlNYWMubW0g
aW4gU291cmNlcyAqLywKIAkJCQkxQzhFMkEzNTEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVj
dG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDOEUyODM1MTI3NUQ3
MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
Q0E4QjkzNjEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA1MDFkNDFjLi44NTkz
NThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NCwyMCArODQsMjEgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCiAKIFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9y
RnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlcikKIHsKLSAgICBXZWJQYWdl
KiBpbnNwZWN0b3JQYWdlID0gY29udHJvbGxlci0+aXNVbmRlclRlc3QoKSA/IG1fcGFnZS0+aW5z
cGVjdG9yKCktPmNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KCkgOiBtX3BhZ2UtPmluc3BlY3Rv
cigpLT5jcmVhdGVJbnNwZWN0b3JQYWdlKCk7Ci0gICAgQVNTRVJUX1VOVVNFRChpbnNwZWN0b3JQ
YWdlLCBpbnNwZWN0b3JQYWdlKTsKLSAgICByZXR1cm4gdGhpczsKKyAgICBtX3BhZ2UtPmluc3Bl
Y3RvcigpLT5jcmVhdGVJbnNwZWN0b3JQYWdlKGNvbnRyb2xsZXItPmlzVW5kZXJUZXN0KCkpOwor
CisgICAgcmV0dXJuIG1fcGFnZS0+aW5zcGVjdG9yKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9y
Q2xpZW50OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKCkKIHsKICAgICBpZiAobV9wYWdlLT5pbnNw
ZWN0b3IoKSkKLSAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+ZGlkQ2xvc2UoKTsKKyAgICAg
ICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y2xvc2VGcm9udGVuZCgpOwogfQogCiB2b2lkIFdlYklu
c3BlY3RvckNsaWVudDo6YnJpbmdGcm9udGVuZFRvRnJvbnQoKQogewotICAgIG1fcGFnZS0+aW5z
cGVjdG9yKCktPmJyaW5nVG9Gcm9udCgpOworICAgIGlmIChtX3BhZ2UtPmluc3BlY3RvcigpKQor
ICAgICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5icmluZ1RvRnJvbnQoKTsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFJlc2l6ZU1haW5GcmFtZShGcmFtZSopCkBAIC0xOTcsMzQg
KzE5OCw2IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRTZXRTZWFyY2hpbmdGb3JOb2Rl
KGJvb2wgZW5hYmxlZCkKIH0KICNlbmRpZgogCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2Vu
ZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBXZWJJbnNw
ZWN0b3IqIGluc3BlY3RvciA9IG1fcGFnZS0+aW5zcGVjdG9yKCk7Ci0gICAgaWYgKCFpbnNwZWN0
b3IpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVS
KQotICAgIGlmIChpbnNwZWN0b3ItPmhhc1JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkpIHsKLSAg
ICAgICAgaW5zcGVjdG9yLT5zZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQobWVzc2FnZSk7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSNlbmRpZgotCi0gICAgV2ViUGFnZSogaW5zcGVj
dG9yUGFnZSA9IGluc3BlY3Rvci0+aW5zcGVjdG9yUGFnZSgpOwotICAgIGlmIChpbnNwZWN0b3JQ
YWdlKQotICAgICAgICByZXR1cm4gZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZShpbnNw
ZWN0b3JQYWdlLT5jb3JlUGFnZSgpLCBtZXNzYWdlKTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnN1cHBvcnRzRnJhbWVJbnN0cnVtZW50YXRpb24o
KQotewotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICByZXR1cm4gdHJ1ZTsKLSNl
bmRpZgotICAgIHJldHVybiBmYWxzZTsKLX0KLQogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnBh
Z2VPdmVybGF5RGVzdHJveWVkKFBhZ2VPdmVybGF5KikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oCmluZGV4IDcwMzNiZGUuLjc5OGNhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
aApAQCAtNDUsMjIgKzQ1LDIzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsK
IGNsYXNzIFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudDsKIAotY2xhc3MgV2ViSW5zcGVjdG9y
Q2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVibGljIFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCwgcHJpdmF0ZSBQYWdlT3ZlcmxheTo6Q2xpZW50IHsK
K2NsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGll
bnQsIHByaXZhdGUgUGFnZU92ZXJsYXk6OkNsaWVudCB7CiBmcmllbmQgY2xhc3MgUmVwYWludElu
ZGljYXRvckxheWVyQ2xpZW50OwogcHVibGljOgogICAgIFdlYkluc3BlY3RvckNsaWVudChXZWJQ
YWdlKik7CiAgICAgdmlydHVhbCB+V2ViSW5zcGVjdG9yQ2xpZW50KCk7CiAKIHByaXZhdGU6Ci0g
ICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIC8vIFdl
YkNvcmU6Okluc3BlY3RvckNsaWVudAorICAgIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3Bl
Y3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZXNpemVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICBX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbG9zZUlu
c3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9u
dCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVzaXplTWFpbkZyYW1lKFdlYkNvcmU6OkZyYW1l
Kikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGhpZ2hs
aWdodCgpIG92ZXJyaWRlOworICAgIHZvaWQgaGlkZUhpZ2hsaWdodCgpIG92ZXJyaWRlOwogCiAj
aWYgUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgdm9pZCBzaG93SW5zcGVjdG9ySW5kaWNhdGlv
bigpIG92ZXJyaWRlOwpAQCAtNzIsMTAgKzczLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJv
b2wgb3ZlcnJpZGVzU2hvd1BhaW50UmVjdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHNob3dQYWludFJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnJh
bWVJbnN0cnVtZW50YXRpb24oKTsKLQogICAgIC8vIFBhZ2VPdmVybGF5OjpDbGllbnQKICAgICB2
aXJ0dWFsIHZvaWQgcGFnZU92ZXJsYXlEZXN0cm95ZWQoUGFnZU92ZXJsYXkqKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdl
Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDNkYWUxLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQuaCIKLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0KLSNpbmNsdWRlICJXZWJJbnNwZWN0b3Iu
aCIKLSNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250
cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+Ci0jaW5jbHVkZSA8aW5zcGVjdG9y
L0luc3BlY3RvckFnZW50QmFzZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgot
Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50OjpXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJQYWdl
KiBwYWdlLCBXZWJQYWdlKiBpbnNwZWN0b3JQYWdlKQotICAgIDogSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbCgmcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBpbnNw
ZWN0b3JQYWdlLT5jb3JlUGFnZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFNldHRpbmdzPigpKQotICAg
ICwgbV9wYWdlKHBhZ2UpCi17Ci19Ci0KLVN0cmluZyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCi17Ci0gICAgcmV0dXJuIG1fcGFnZS0+aW5zcGVjdG9y
KCktPmxvY2FsaXplZFN0cmluZ3NVUkwoKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6YnJpbmdUb0Zyb250KCkKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5icmlu
Z1RvRnJvbnQoKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2xvc2VX
aW5kb3coKQotewotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246
Okluc3BlY3RvckRlc3Ryb3llZCk7Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+ZGlkQ2xvc2Uo
KTsKLX0KLQotYm9vbCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2FuU2F2ZSgpCi17Ci0g
ICAgcmV0dXJuIG1fcGFnZS0+aW5zcGVjdG9yKCktPmNhblNhdmUoKTsKLX0KLQotdm9pZCBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykK
LXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5zYXZlKGZpbGVuYW1lLCBjb250ZW50LCBiYXNl
NjRFbmNvZGVkLCBmb3JjZVNhdmVBcyk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OmFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnQpCi17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YXBwZW5kKGZpbGVuYW1lLCBjb250ZW50
KTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNoV2luZG93KERv
Y2tTaWRlIGRvY2tTaWRlKQotewotICAgIHN3aXRjaCAoZG9ja1NpZGUpIHsKLSAgICBjYXNlIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6VW5kb2NrZWQ6Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpEb2NrU2lkZTo6Qm90dG9tOgotICAgICAgICBtX3BhZ2UtPmluc3BlY3Rvcigp
LT5hdHRhY2hCb3R0b20oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDo6RG9ja1NpZGU6OlJpZ2h0OgotICAgICAgICBtX3BhZ2UtPmluc3BlY3Rvcigp
LT5hdHRhY2hSaWdodCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRldGFjaFdpbmRvdygpCi17Ci0gICAgbV9wYWdlLT5pbnNw
ZWN0b3IoKS0+ZGV0YWNoKCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKLXsKLSAgICBtX3BhZ2Ut
Pmluc3BlY3RvcigpLT5zZXRBdHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQpOwotfQotCi12b2lk
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2ln
bmVkIHdpZHRoKQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNldEF0dGFjaGVkV2luZG93
V2lkdGgod2lkdGgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRU
b29sYmFySGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3Rvcigp
LT5zZXRUb29sYmFySGVpZ2h0KGhlaWdodCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCi17
Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+aW5zcGVjdGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5z
cGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3IuY3BwCmluZGV4IDU2MTI5N2EuLjQ3NzQzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywxMTcgKzI3LDgyIEBACiAj
aW5jbHVkZSAiV2ViSW5zcGVjdG9yLmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCiAjaW5j
bHVkZSAiV2ViRnJhbWUuaCIKLSNpbmNsdWRlICJXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
IgorI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVj
dG9yUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
TG9hZFJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvclBhZ2VBZ2Vu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudEJhc2UuaD4KLSNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dG
ZWF0dXJlcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorc3RhdGljIGNvbnN0IGZs
b2F0IG1pbmltdW1BdHRhY2hlZEhlaWdodCA9IDI1MDsKK3N0YXRpYyBjb25zdCBmbG9hdCBtYXhp
bXVtQXR0YWNoZWRIZWlnaHRSYXRpbyA9IDAuNzU7CitzdGF0aWMgY29uc3QgZmxvYXQgbWluaW11
bUF0dGFjaGVkV2lkdGggPSA3NTA7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRy
PFdlYkluc3BlY3Rvcj4gV2ViSW5zcGVjdG9yOjpjcmVhdGUoV2ViUGFnZSogcGFnZSwgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwpCitQYXNzUmVmUHRyPFdlYkluc3Bl
Y3Rvcj4gV2ViSW5zcGVjdG9yOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYkluc3BlY3RvcihwYWdlLCBmcm9udGVuZENoYW5uZWwpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvcihwYWdlKSk7CiB9CiAKLVdlYkluc3BlY3Rv
cjo6V2ViSW5zcGVjdG9yKFdlYlBhZ2UqIHBhZ2UsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsKQorV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2ViUGFnZSogcGFn
ZSkKICAgICA6IG1fcGFnZShwYWdlKQotICAgICwgbV9pbnNwZWN0b3JQYWdlKG51bGxwdHIpCi0g
ICAgLCBtX2Zyb250ZW5kQ2xpZW50KG51bGxwdHIpCi0gICAgLCBtX2Zyb250ZW5kQ2hhbm5lbChm
cm9udGVuZENoYW5uZWwpCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgLCBtX2hhc0xvY2FsaXpl
ZFN0cmluZ3NVUkwoZmFsc2UpCi0jZW5kaWYKLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikK
LSAgICAsIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoZmFsc2UpCi0jZW5kaWYKKyAgICAsIG1f
YXR0YWNoZWQoZmFsc2UpCisgICAgLCBtX3ByZXZpb3VzQ2FuQXR0YWNoKGZhbHNlKQogewogfQog
CiAvLyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JDbGllbnQKLVdlYlBhZ2UqIFdlYkluc3BlY3Rv
cjo6Y3JlYXRlSW5zcGVjdG9yUGFnZSgpCit2b2lkIFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zcGVj
dG9yUGFnZShib29sIHVuZGVyVGVzdCkKIHsKICAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICBBU1NFUlQoIW1faW5zcGVjdG9yUGFnZSk7Ci0gICAgQVNTRVJU
KCFtX2Zyb250ZW5kQ2xpZW50KTsKLQotICAgIHVpbnQ2NF90IGluc3BlY3RvclBhZ2VJRCA9IDA7
Ci0gICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0gICAgaWYgKCFX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2UoKSwKLSAgICAg
ICAgICAgIE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6Q3JlYXRlSW5zcGVjdG9yUGFnZTo6
UmVwbHkoaW5zcGVjdG9yUGFnZUlELCBwYXJhbWV0ZXJzKSwKLSAgICAgICAgICAgIG1fcGFnZS0+
cGFnZUlEKCksIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM6Om1heCgpKSkgewotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaW5zcGVj
dG9yUGFnZUlEKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNpZiBPUyhEQVJXSU4pCisgICAg
bWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKKyAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90
YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKKwor
ICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmVyKGxpc3Rl
bmluZ1BvcnQpOworICAgIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uQ2xpZW50UG9ydChsaXN0
ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7CisjZWxpZiBVU0UoVU5JWF9ET01B
SU5fU09DS0VUUykKKyAgICBJUEM6OkNvbm5lY3Rpb246OlNvY2tldFBhaXIgc29ja2V0UGFpciA9
IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CisgICAgSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmZXIoc29ja2V0UGFpci5zZXJ2
ZXIpOworICAgIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uQ2xpZW50UG9ydChzb2NrZXRQYWly
LmNsaWVudCk7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuOworI2Vu
ZGlmCiAKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jcmVhdGVXZWJQYWdlKGluc3BlY3RvclBh
Z2VJRCwgcGFyYW1ldGVycyk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlID0gV2ViUHJvY2Vzczo6c2hh
cmVkKCkud2ViUGFnZShpbnNwZWN0b3JQYWdlSUQpOwotICAgIEFTU0VSVChtX2luc3BlY3RvclBh
Z2UpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVT
ZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmZXIsIHRoaXMsIFJ1bkxvb3A6Om1haW4o
KSk7CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPm9wZW4oKTsKIAotICAgIGF1dG8gZnJvbnRl
bmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Piht
X3BhZ2UsIG1faW5zcGVjdG9yUGFnZSk7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5k
Q2xpZW50LmdldCgpOwotICAgIG1faW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9udGVu
ZENsaWVudCkpOwotICAgIHJldHVybiBtX2luc3BlY3RvclBhZ2U7CisgICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2UoY29ubmVjdGlvbkNsaWVudFBvcnQsIGNh
bkF0dGFjaFdpbmRvdygpLCB1bmRlclRlc3QpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAotV2Vi
UGFnZSogV2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgpCit2b2lkIFdl
Ykluc3BlY3Rvcjo6Y2xvc2VGcm9udGVuZCgpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgQVNTRVJUKCFtX2luc3BlY3RvclBhZ2UpOwotICAgIEFT
U0VSVCghbV9mcm9udGVuZENsaWVudCk7Ci0KLSAgICB1aW50NjRfdCBpbnNwZWN0b3JQYWdlSUQg
PSAwOwotICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIGlm
ICghV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpDcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVz
dCgpLAotICAgICAgICAgICAgTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpDcmVhdGVJbnNw
ZWN0b3JQYWdlRm9yVGVzdDo6UmVwbHkoaW5zcGVjdG9yUGFnZUlELCBwYXJhbWV0ZXJzKSwKLSAg
ICAgICAgICAgIG1fcGFnZS0+cGFnZUlEKCksIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM6Om1h
eCgpKSkgewotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoIWluc3Bl
Y3RvclBhZ2VJRCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5jcmVhdGVXZWJQYWdlKGluc3BlY3RvclBhZ2VJRCwgcGFyYW1ldGVycyk7Ci0gICAg
bV9pbnNwZWN0b3JQYWdlID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViUGFnZShpbnNwZWN0b3JQ
YWdlSUQpOwotICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOwotCi0gICAgYXV0byBmcm9udGVu
ZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1f
cGFnZSwgbV9pbnNwZWN0b3JQYWdlKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRD
bGllbnQuZ2V0KCk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5k
Q2xpZW50KSk7Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9yUGFnZTsKLX0KKyAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JQcm94eTo6RGlkQ2xvc2UoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiAKLXZvaWQgV2Vi
SW5zcGVjdG9yOjpkZXN0cm95SW5zcGVjdG9yUGFnZSgpCi17Ci0gICAgbV9pbnNwZWN0b3JQYWdl
ID0gbnVsbHB0cjsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbnVsbHB0cjsKLSAgICBtX2Zyb250
ZW5kQ2hhbm5lbCA9IG51bGxwdHI7Ci19CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPmludmFs
aWRhdGUoKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbiA9IG51bGxwdHI7CiAKLS8vIENhbGxl
ZCBmcm9tIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ci12b2lkIFdlYkluc3BlY3Rvcjo6ZGlk
Q2xvc2UoKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKLSAgICBkZXN0cm95SW5zcGVjdG9yUGFnZSgpOworICAgIG1fYXR0YWNo
ZWQgPSBmYWxzZTsKKyAgICBtX3ByZXZpb3VzQ2FuQXR0YWNoID0gZmFsc2U7CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yOjpicmluZ1RvRnJvbnQoKQpAQCAtMTQ1LDUxICsxMTAsNiBAQCB2b2lkIFdl
Ykluc3BlY3Rvcjo6YnJpbmdUb0Zyb250KCkKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6
QnJpbmdUb0Zyb250KCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCi12b2lkIFdlYkluc3BlY3Rv
cjo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKLXsKLSAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6SW5zcGVjdGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OnNhdmUoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQs
IGJvb2wgZm9yY2VTYXZlQXMpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUo
ZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2ZUFzKSwgbV9wYWdlLT5w
YWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjphcHBlbmQoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjpBcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0K
LQotdm9pZCBXZWJJbnNwZWN0b3I6OmF0dGFjaEJvdHRvbSgpCi17Ci0gICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6OkF0dGFjaEJvdHRvbSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9p
ZCBXZWJJbnNwZWN0b3I6OmF0dGFjaFJpZ2h0KCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6QXR0YWNoUmlnaHQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5z
cGVjdG9yOjpkZXRhY2goKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEZXRhY2go
KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzZXRBdHRhY2hl
ZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
UHJveHk6OlNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCksIG1fcGFnZS0+cGFnZUlEKCkp
OwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25l
ZCB3aWR0aCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5k
b3dXaWR0aCh3aWR0aCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rv
cjo6c2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCBoZWlnaHQpCi17Ci0gICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6OlNldFRvb2xiYXJIZWlnaHQoaGVpZ2h0KSwgbV9wYWdlLT5wYWdlSUQoKSk7
Ci19Ci0KIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3IgbWVzc2FnZXMKIHZvaWQgV2ViSW5zcGVj
dG9yOjpzaG93KCkKIHsKQEAgLTIwMSwzNCArMTIxLDE3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpj
bG9zZSgpCiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY2xv
c2UoKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OmRpZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwp
Ci17Ci0gICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5j
b3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KG1ha2VTdHJpbmco
Ikluc3BlY3RvckZyb250ZW5kQVBJLnNhdmVkVVJMKFwiIiwgdXJsLCAiXCIpIikpOwotfQotCi12
b2lkIFdlYkluc3BlY3Rvcjo6ZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIEFT
U0VSVChtX2luc3BlY3RvclBhZ2UpOwotICAgIG1faW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKS0+
bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChtYWtlU3RyaW5nKCJJbnNwZWN0b3JG
cm9udGVuZEFQSS5hcHBlbmRlZFRvVVJMKFwiIiwgdXJsLCAiXCIpIikpOwotfQotCi12b2lkIFdl
Ykluc3BlY3Rvcjo6YXR0YWNoZWRCb3R0b20oKQordm9pZCBXZWJJbnNwZWN0b3I6Om9wZW5Jbk5l
d1RhYihjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBpZiAobV9mcm9udGVuZENsaWVu
dCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0QXR0YWNoZWRXaW5kb3coSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpCb3R0b20pOwotfQorICAgIFBhZ2UqIGluc3BlY3Rl
ZFBhZ2UgPSBtX3BhZ2UtPmNvcmVQYWdlKCk7CisgICAgRnJhbWUmIGluc3BlY3RlZE1haW5GcmFt
ZSA9IGluc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpOworICAgIEZyYW1lTG9hZFJlcXVlc3QgcmVx
dWVzdChpbnNwZWN0ZWRNYWluRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVz
b3VyY2VSZXF1ZXN0KHVybFN0cmluZyksICJfYmxhbmsiKTsKIAotdm9pZCBXZWJJbnNwZWN0b3I6
OmF0dGFjaGVkUmlnaHQoKQotewotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBt
X2Zyb250ZW5kQ2xpZW50LT5zZXRBdHRhY2hlZFdpbmRvdyhJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDo6RG9ja1NpZGU6OlJpZ2h0KTsKLX0KKyAgICBQYWdlKiBuZXdQYWdlID0gaW5zcGVjdGVkUGFn
ZS0+Y2hyb21lKCkuY3JlYXRlV2luZG93KCZpbnNwZWN0ZWRNYWluRnJhbWUsIHJlcXVlc3QsIFdp
bmRvd0ZlYXR1cmVzKCksIE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KSwgTmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tlZCkpOworICAgIGlmICghbmV3UGFnZSkKKyAgICAg
ICAgcmV0dXJuOwogCi12b2lkIFdlYkluc3BlY3Rvcjo6ZGV0YWNoZWQoKQotewotICAgIGlmICht
X2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRBdHRhY2hlZFdp
bmRvdyhJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU6OlVuZG9ja2VkKTsKKyAgICBu
ZXdQYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5sb2FkKHJlcXVlc3QpOwogfQogCiB2b2lkIFdl
Ykluc3BlY3Rvcjo6ZXZhbHVhdGVTY3JpcHRGb3JUZXN0KGNvbnN0IFN0cmluZyYgc2NyaXB0KQpA
QCAtMjM5LDEwOCArMTQyLDk0IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpldmFsdWF0ZVNjcmlwdEZv
clRlc3QoY29uc3QgU3RyaW5nJiBzY3JpcHQpCiB2b2lkIFdlYkluc3BlY3Rvcjo6c2hvd0NvbnNv
bGUoKQogewogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNo
b3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVu
dC0+c2hvd0NvbnNvbGUoKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OlNob3dDb25zb2xlKCksIDApOwogfQogCiB2b2lkIFdlYkluc3Bl
Y3Rvcjo6c2hvd1Jlc291cmNlcygpCiB7CiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAg
ICBtX2Zyb250ZW5kQ2xpZW50LT5zaG93UmVzb3VyY2VzKCk7CisgICAgbV9mcm9udGVuZENvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTaG93UmVzb3VyY2VzKCksIDAp
OwogfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQpCit2b2lkIFdlYkluc3BlY3Rvcjo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSWRlbnRpZmllcikKIHsKLSAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBXZWJGcmFtZSogZnJhbWUg
PSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlkZW50aWZpZXIpOwogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAg
ICAgICAgbV9mcm9udGVuZENsaWVudC0+c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGZyYW1lLT5j
b3JlRnJhbWUoKSk7Ci19CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpzdGFydEphdmFTY3JpcHREZWJ1
Z2dpbmcoKQotewotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LnNob3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENs
aWVudC0+c2V0RGVidWdnaW5nRW5hYmxlZCh0cnVlKTsKKyAgICBTdHJpbmcgaW5zcGVjdG9yRnJh
bWVJZGVudGlmaWVyID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCku
cGFnZUFnZW50KCktPmZyYW1lSWQoZnJhbWUtPmNvcmVGcmFtZSgpKTsKKyAgICBtX2Zyb250ZW5k
Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNob3dNYWluUmVzb3Vy
Y2VGb3JGcmFtZShpbnNwZWN0b3JGcmFtZUlkZW50aWZpZXIpLCAwKTsKIH0KIAotdm9pZCBXZWJJ
bnNwZWN0b3I6OnN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpz
dGFydFBhZ2VQcm9maWxpbmcoKQogewogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAg
bV9mcm9udGVuZENsaWVudC0+c2V0RGVidWdnaW5nRW5hYmxlZChmYWxzZSk7Ci19Ci0KLXZvaWQg
V2ViSW5zcGVjdG9yOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChib29sKQotewotICAg
IC8vIE5vIGxvbmdlciBzdXBwb3J0ZWQuCisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTdGFydFBhZ2VQcm9maWxpbmcoKSwgMCk7CiB9CiAK
LXZvaWQgV2ViSW5zcGVjdG9yOjpzdGFydEphdmFTY3JpcHRQcm9maWxpbmcoKQordm9pZCBXZWJJ
bnNwZWN0b3I6OnN0b3BQYWdlUHJvZmlsaW5nKCkKIHsKLSAgICAvLyBObyBsb25nZXIgc3VwcG9y
dGVkLgorICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3co
KTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUk6OlN0b3BQYWdlUHJvZmlsaW5nKCksIDApOwogfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6c3Rv
cEphdmFTY3JpcHRQcm9maWxpbmcoKQorYm9vbCBXZWJJbnNwZWN0b3I6OmNhbkF0dGFjaFdpbmRv
dygpCiB7Ci0gICAgLy8gTm8gbG9uZ2VyIHN1cHBvcnRlZC4KLX0KKyAgICAvLyBEb24ndCBhbGxv
dyBhdHRhY2hpbmcgdG8gYW5vdGhlciBpbnNwZWN0b3IgLS0gdHdvIGluc3BlY3RvcnMgaW4gb25l
IHdpbmRvdyBpcyB0b28gbXVjaCEKKyAgICBpZiAobV9wYWdlLT5pc0luc3BlY3RvclBhZ2UoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi12b2lkIFdlYkluc3BlY3Rvcjo6c3RhcnRQYWdlUHJv
ZmlsaW5nKCkKLXsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIo
KS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRD
bGllbnQtPnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCh0cnVlKTsKLX0KKyAgICAvLyBJZiB3
ZSBhcmUgYWxyZWFkeSBhdHRhY2hlZCwgYWxsb3cgYXR0YWNoaW5nIGFnYWluIHRvIGFsbG93IHN3
aXRjaGluZyBzaWRlcy4KKyAgICBpZiAobV9hdHRhY2hlZCkKKyAgICAgICAgcmV0dXJuIHRydWU7
CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpzdG9wUGFnZVByb2ZpbGluZygpCi17Ci0gICAgbV9wYWdl
LT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zy
b250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRUaW1lbGluZVByb2Zp
bGluZ0VuYWJsZWQoZmFsc2UpOworICAgIC8vIERvbid0IGFsbG93IHRoZSBhdHRhY2ggaWYgdGhl
IHdpbmRvdyB3b3VsZCBiZSB0b28gc21hbGwgdG8gYWNjb21tb2RhdGUgdGhlIG1pbmltdW0gaW5z
cGVjdG9yIHNpemUuCisgICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZUhlaWdodCA9IG1fcGFnZS0+
Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CisgICAgdW5z
aWduZWQgaW5zcGVjdGVkUGFnZVdpZHRoID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUo
KS52aWV3KCktPnZpc2libGVXaWR0aCgpOworICAgIHVuc2lnbmVkIG1heGltdW1BdHRhY2hlZEhl
aWdodCA9IGluc3BlY3RlZFBhZ2VIZWlnaHQgKiBtYXhpbXVtQXR0YWNoZWRIZWlnaHRSYXRpbzsK
KyAgICByZXR1cm4gbWluaW11bUF0dGFjaGVkSGVpZ2h0IDw9IG1heGltdW1BdHRhY2hlZEhlaWdo
dCAmJiBtaW5pbXVtQXR0YWNoZWRXaWR0aCA8PSBpbnNwZWN0ZWRQYWdlV2lkdGg7CiB9CiAKIHZv
aWQgV2ViSW5zcGVjdG9yOjp1cGRhdGVEb2NraW5nQXZhaWxhYmlsaXR5KCkKIHsKLSAgICBpZiAo
IW1fZnJvbnRlbmRDbGllbnQpCisgICAgaWYgKG1fYXR0YWNoZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIGJvb2wgY2FuQXR0YWNoV2luZG93ID0gdGhpcy0+Y2FuQXR0YWNoV2luZG93KCk7Cisg
ICAgaWYgKG1fcHJldmlvdXNDYW5BdHRhY2ggPT0gY2FuQXR0YWNoV2luZG93KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBib29sIGNhbkF0dGFjaFdpbmRvdyA9IG1fZnJvbnRlbmRDbGllbnQtPmNh
bkF0dGFjaFdpbmRvdygpOworICAgIG1fcHJldmlvdXNDYW5BdHRhY2ggPSBjYW5BdHRhY2hXaW5k
b3c7CisKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQXZhaWxhYmlsaXR5Q2hh
bmdlZChjYW5BdHRhY2hXaW5kb3cpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICBtX2Zyb250ZW5k
Q2xpZW50LT5zZXREb2NraW5nVW5hdmFpbGFibGUoIWNhbkF0dGFjaFdpbmRvdyk7CiB9CiAKLSNp
ZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLXZvaWQgV2ViSW5zcGVjdG9yOjpzZW5kTWVzc2Fn
ZVRvUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBXZWJJbnNwZWN0
b3I6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBB
U1NFUlQobV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCk7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
UHJveHk6OlNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChtZXNzYWdlKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlz
cGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwogfQogCi12b2lkIFdlYkluc3BlY3Rv
cjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKK2Jvb2wgV2ViSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlKTsKKyNpZiAhRU5BQkxFKElO
U1BFQ1RPUl9TRVJWRVIpCisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSksIDApOworI2Vs
c2UKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250
ZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVl
OwogfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCiB2b2lkIFdlYkluc3BlY3Rvcjo6
cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKQogewotICAgIEFTU0VSVCghbV9yZW1vdGVGcm9udGVu
ZENvbm5lY3RlZCk7Ci0gICAgLy8gU3dpdGNoaW5nIGJldHdlZW4gaW4tcHJvY2VzcyBhbmQgcmVt
b3RlIGluc3BlY3RvcnMgaXNuJ3Qgc3VwcG9ydGVkIHlldC4KLSAgICBBU1NFUlQoIW1faW5zcGVj
dG9yUGFnZSk7Ci0gICAgCi0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkuY29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX3JlbW90ZUZy
b250ZW5kQ29ubmVjdGVkID0gdHJ1ZTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQodGhpcyk7CiB9CiAKIHZvaWQgV2ViSW5zcGVj
dG9yOjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCiB7Ci0gICAgQVNTRVJUKG1fcmVtb3Rl
RnJvbnRlbmRDb25uZWN0ZWQpOwogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7Ci0gICAgbV9yZW1vdGVGcm9udGVuZENvbm5l
Y3RlZCA9IGZhbHNlOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAppbmRleCBjOTNiY2IzLi4zYzE5YjllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCwx
MDYgKzMwLDgwIEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnNwZWN0b3JGb3J3YXJkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFz
cyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIGNsYXNzIFdlYlBhZ2U7CiAKLWNsYXNzIFdl
Ykluc3BlY3RvciA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1
bmRsZUluc3BlY3Rvcj4geworY2xhc3MgV2ViSW5zcGVjdG9yIDogcHVibGljIEFQSTo6T2JqZWN0
SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yPiwgcHVibGljIElQQzo6Q29u
bmVjdGlvbjo6Q2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnNwZWN0b3I+IGNyZWF0ZShX
ZWJQYWdlKiwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViSW5zcGVjdG9yPiBjcmVhdGUoV2ViUGFnZSopOwogCiAgICAgV2ViUGFn
ZSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQotICAgIFdlYlBhZ2UqIGluc3BlY3Rv
clBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvclBhZ2U7IH0KKworICAgIHZvaWQgdXBk
YXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgpOworCisgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdl
VG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlOwogCiAgICAgLy8gSW1w
bGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAKLSAg
ICB2b2lkIGRpZFJlY2VpdmVXZWJJbnNwZWN0b3JNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQ
Qzo6TWVzc2FnZURlY29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKTsKKworICAgIC8vIElQQzo6Q29ubmVjdGlv
bjo6Q2xpZW50CisgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24qKSB7IGNsb3NlKCk7
IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlTmFtZSkgeyBjbG9zZSgpOyB9CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViSW5z
cGVjdG9yIG1lc3NhZ2VzCisgICAgdm9pZCBjb25uZWN0aW9uRXN0YWJsaXNoZWQoKTsKKwogICAg
IHZvaWQgc2hvdygpOwogICAgIHZvaWQgY2xvc2UoKTsKIAotICAgIHZvaWQgZGlkU2F2ZShjb25z
dCBTdHJpbmcmIHVybCk7Ci0gICAgdm9pZCBkaWRBcHBlbmQoY29uc3QgU3RyaW5nJiB1cmwpOwor
ICAgIHZvaWQgb3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKKworICAgIHZv
aWQgY2FuQXR0YWNoV2luZG93KGJvb2wmIHJlc3VsdCk7CisKKyAgICB2b2lkIHNob3dDb25zb2xl
KCk7CisgICAgdm9pZCBzaG93UmVzb3VyY2VzKCk7CiAKLSAgICB2b2lkIGF0dGFjaGVkQm90dG9t
KCk7Ci0gICAgdm9pZCBhdHRhY2hlZFJpZ2h0KCk7Ci0gICAgdm9pZCBkZXRhY2hlZCgpOworICAg
IHZvaWQgc2hvd01haW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSWRlbnRpZmllcik7
CisKKyAgICB2b2lkIHNldEF0dGFjaGVkKGJvb2wgYXR0YWNoZWQpIHsgbV9hdHRhY2hlZCA9IGF0
dGFjaGVkOyB9CiAKICAgICB2b2lkIGV2YWx1YXRlU2NyaXB0Rm9yVGVzdChjb25zdCBTdHJpbmcm
IHNjcmlwdCk7CiAKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wp
OwogICAgIHZvaWQgc3RhcnRQYWdlUHJvZmlsaW5nKCk7CiAgICAgdm9pZCBzdG9wUGFnZVByb2Zp
bGluZygpOwogCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKTsK
KwogI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotICAgIGJvb2wgaGFzUmVtb3RlRnJvbnRl
bmRDb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkOyB9
Ci0gICAgdm9pZCBzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKLSAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOwogICAgIHZvaWQgcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKTsKICAg
ICB2b2lkIHJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCk7CiAjZW5kaWYKIAogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50OwotICAgIGZyaWVuZCBjbGFzcyBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIAotICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvcihX
ZWJQYWdlKiwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAgZXhwbGlj
aXQgV2ViSW5zcGVjdG9yKFdlYlBhZ2UqKTsKKworICAgIGJvb2wgY2FuQXR0YWNoV2luZG93KCk7
CiAKICAgICAvLyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JDbGllbnQKLSAgICBXZWJQYWdlKiBj
cmVhdGVJbnNwZWN0b3JQYWdlKCk7Ci0gICAgV2ViUGFnZSogY3JlYXRlSW5zcGVjdG9yUGFnZUZv
clRlc3QoKTsKLSAgICB2b2lkIGRlc3Ryb3lJbnNwZWN0b3JQYWdlKCk7CisgICAgdm9pZCBjcmVh
dGVJbnNwZWN0b3JQYWdlKGJvb2wgdW5kZXJUZXN0KTsKIAotICAgIC8vIENhbGxlZCBmcm9tIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50Ci0gICAgdm9pZCBkaWRDbG9zZSgpOworICAgIHZvaWQg
Y2xvc2VGcm9udGVuZCgpOwogICAgIHZvaWQgYnJpbmdUb0Zyb250KCk7Ci0gICAgdm9pZCBpbnNw
ZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpOwotCi0gICAgYm9vbCBjYW5TYXZlKCkgY29u
c3Q7Ci0gICAgdm9pZCBzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
Y29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKTsKLSAgICB2b2lk
IGFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwot
Ci0gICAgdm9pZCBhdHRhY2hCb3R0b20oKTsKLSAgICB2b2lkIGF0dGFjaFJpZ2h0KCk7Ci0gICAg
dm9pZCBkZXRhY2goKTsKIAotICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWdu
ZWQpOwotICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCk7Ci0gICAgdm9p
ZCBzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkKTsKLQotICAgIC8vIEltcGxlbWVudGVkIGluIHBs
YXRmb3JtIFdlYkluc3BlY3RvciBmaWxlCi0gICAgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwo
KSBjb25zdDsKLQotICAgIHZvaWQgc2hvd0NvbnNvbGUoKTsKLQotICAgIHZvaWQgc2hvd1Jlc291
cmNlcygpOwotCi0gICAgdm9pZCBzaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCk7Ci0KLSAgICB2b2lkIHN0YXJ0SmF2YVNjcmlwdERlYnVnZ2luZygpOwotICAgIHZvaWQg
c3RvcEphdmFTY3JpcHREZWJ1Z2dpbmcoKTsKLQotICAgIHZvaWQgc3RhcnRKYXZhU2NyaXB0UHJv
ZmlsaW5nKCk7Ci0gICAgdm9pZCBzdG9wSmF2YVNjcmlwdFByb2ZpbGluZygpOworICAgIFdlYlBh
Z2UqIG1fcGFnZTsKIAotICAgIHZvaWQgdXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgpOworICAg
IFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fZnJvbnRlbmRDb25uZWN0aW9uOwogCi0gICAgV2Vi
UGFnZSogbV9wYWdlOwotICAgIFdlYlBhZ2UqIG1faW5zcGVjdG9yUGFnZTsKLSAgICBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudCogbV9mcm9udGVuZENsaWVudDsKLSAgICBXZWJDb3JlOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVsOwotI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIG11dGFibGUgU3RyaW5nIG1fbG9jYWxpemVkU3RyaW5nc1VSTDsKLSAgICBtdXRh
YmxlIGJvb2wgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMOwotI2VuZGlmCi0jaWYgRU5BQkxFKElO
U1BFQ1RPUl9TRVJWRVIpCi0gICAgYm9vbCBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkOwotI2Vu
ZGlmCisgICAgYm9vbCBtX2F0dGFjaGVkOworICAgIGJvb2wgbV9wcmV2aW91c0NhbkF0dGFjaDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KaW5kZXggYzIz
Yjg2Zi4uZmMwNzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5
cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwog
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMiwyNiArMjIsMjUgQEAKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAKLW1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvciBMZWdhY3lSZWNlaXZlciB7
CittZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3IgewogICAgIFNob3coKQogICAgIENsb3NlKCkKLSAg
ICBBdHRhY2hlZEJvdHRvbSgpCi0gICAgQXR0YWNoZWRSaWdodCgpCi0gICAgRGV0YWNoZWQoKQot
ICAgIERpZFNhdmUoU3RyaW5nIHVybCkKLSAgICBEaWRBcHBlbmQoU3RyaW5nIHVybCkKKworICAg
IFNldEF0dGFjaGVkKGJvb2wgYXR0YWNoZWQpCisKICAgICBTaG93Q29uc29sZSgpCiAgICAgU2hv
d1Jlc291cmNlcygpCi0gICAgU2hvd01haW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQpCi0gICAgU3RhcnRKYXZhU2NyaXB0RGVidWdnaW5nKCkKLSAgICBTdG9wSmF2YVNjcmlwdERl
YnVnZ2luZygpCi0gICAgU3RhcnRKYXZhU2NyaXB0UHJvZmlsaW5nKCkKLSAgICBTdG9wSmF2YVNj
cmlwdFByb2ZpbGluZygpCisKKyAgICBTaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJZGVudGlmaWVyKQorCisgICAgT3BlbkluTmV3VGFiKFN0cmluZyB1cmwpCisKICAgICBT
dGFydFBhZ2VQcm9maWxpbmcoKQogICAgIFN0b3BQYWdlUHJvZmlsaW5nKCkKIAorICAgIFNlbmRN
ZXNzYWdlVG9CYWNrZW5kKFN0cmluZyBtZXNzYWdlKQorCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9T
RVJWRVIpCi0gICAgRGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKFN0cmluZyBtZXNz
YWdlKQogICAgIFJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkKICAgICBSZW1vdGVGcm9udGVuZERp
c2Nvbm5lY3RlZCgpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmEyOTdhZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC0wLDAgKzEsMjg1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCisK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2Vi
UGFnZS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9ET01XcmFwcGVyV29ybGQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNv
bnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xs
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEdsb2JhbE9iamVjdC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2NyaXB0U3RhdGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPFdlYkluc3BlY3RvclVJPiBXZWJJbnNwZWN0
b3JVSTo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJJbnNwZWN0b3JVSShwYWdlKSk7Cit9CisKK1dlYkluc3BlY3RvclVJOjpXZWJJbnNwZWN0b3JV
SShXZWJQYWdlKiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX2luc3BlY3RlZFBh
Z2VJZGVudGlmaWVyKDApCisgICAgLCBtX3VuZGVyVGVzdChmYWxzZSkKKyAgICAsIG1fZnJvbnRl
bmRMb2FkZWQoZmFsc2UpCisgICAgLCBtX2RvY2tTaWRlKERvY2tTaWRlOjpVbmRvY2tlZCkKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICAsIG1faGFzTG9jYWxpemVkU3RyaW5nc1VSTChmYWxzZSkK
KyNlbmRpZgoreworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjplc3RhYmxpc2hDb25uZWN0aW9u
KElQQzo6QXR0YWNobWVudCBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGlu
c3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCkKK3sKKyNpZiBPUyhEQVJXSU4p
CisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVu
Y29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpOworI2VsaWYgVVNFKFVOSVhfRE9NQUlO
X1NPQ0tFVFMpCisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVu
dGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5yZWxlYXNlRmlsZURlc2NyaXB0b3Io
KSk7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuOworI2VuZGlmCisK
KyAgICBpZiAoSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVu
dGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmll
ciA9IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyOworICAgIG1fdW5kZXJUZXN0ID0gdW5kZXJUZXN0
OworCisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQodGhpcyk7CisKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uID0g
SVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlm
aWVyLCB0aGlzLCBSdW5Mb29wOjptYWluKCkpOworICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPm9w
ZW4oKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6d2luZG93T2JqZWN0Q2xlYXJlZCgpCit7
CisgICAgaWYgKG1fZnJvbnRlbmRIb3N0KQorICAgICAgICBtX2Zyb250ZW5kSG9zdC0+ZGlzY29u
bmVjdENsaWVudCgpOworCisgICAgbV9mcm9udGVuZEhvc3QgPSBJbnNwZWN0b3JGcm9udGVuZEhv
c3Q6OmNyZWF0ZSh0aGlzLCBtX3BhZ2UtPmNvcmVQYWdlKCkpOworICAgIFNjcmlwdEdsb2JhbE9i
amVjdDo6c2V0KGV4ZWNTdGF0ZUZyb21QYWdlKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBtX3Bh
Z2UtPmNvcmVQYWdlKCkpLCBBU0NJSUxpdGVyYWwoIkluc3BlY3RvckZyb250ZW5kSG9zdCIpLCBt
X2Zyb250ZW5kSG9zdC5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmZyb250ZW5k
TG9hZGVkKCkKK3sKKyAgICBtX2Zyb250ZW5kTG9hZGVkID0gdHJ1ZTsKKworICAgIGV2YWx1YXRl
UGVuZGluZ0V4cHJlc3Npb25zKCk7CisgICAgYnJpbmdUb0Zyb250KCk7Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yVUk6Om1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KQoreworICAgIEZsb2F0
UmVjdCBmcmFtZVJlY3QgPSBtX3BhZ2UtPmNvcmVQYWdlKCktPmNocm9tZSgpLndpbmRvd1JlY3Qo
KTsKKyAgICBmcmFtZVJlY3QubW92ZSh4LCB5KTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmNo
cm9tZSgpLnNldFdpbmRvd1JlY3QoZnJhbWVSZWN0KTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JV
STo6YnJpbmdUb0Zyb250KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdU
b0Zyb250KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3Bl
Y3RvclVJOjpjbG9zZVdpbmRvdygpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRp
ZENsb3NlKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworCisgICAgbV9iYWNrZW5kQ29u
bmVjdGlvbi0+aW52YWxpZGF0ZSgpOworICAgIG1fYmFja2VuZENvbm5lY3Rpb24gPSBudWxscHRy
OworCisgICAgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9IDA7CisgICAgbV91bmRlclRlc3Qg
PSBmYWxzZTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6cmVxdWVzdFNldERvY2tTaWRlKERv
Y2tTaWRlIHNpZGUpCit7CisgICAgc3dpdGNoIChzaWRlKSB7CisgICAgY2FzZSBEb2NrU2lkZTo6
VW5kb2NrZWQ6CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEZXRhY2goKSwgbV9p
bnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEb2Nr
U2lkZTo6UmlnaHQ6CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hSaWdo
dCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBj
YXNlIERvY2tTaWRlOjpCb3R0b206CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpB
dHRhY2hCb3R0b20oKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAgIGJyZWFr
OworICAgIH0KK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2V0RG9ja1NpZGUoRG9ja1NpZGUg
c2lkZSkKK3sKKyAgICBjb25zdCBjaGFyKiBzaWRlU3RyaW5nOworCisgICAgc3dpdGNoIChzaWRl
KSB7CisgICAgY2FzZSBEb2NrU2lkZTo6VW5kb2NrZWQ6CisgICAgICAgIHNpZGVTdHJpbmcgPSAi
dW5kb2NrZWQiOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRG9ja1NpZGU6OlJpZ2h0Ogor
ICAgICAgICBzaWRlU3RyaW5nID0gInJpZ2h0IjsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IERvY2tTaWRlOjpCb3R0b206CisgICAgICAgIHNpZGVTdHJpbmcgPSAiYm90dG9tIjsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgbV9kb2NrU2lkZSA9IHNpZGU7CisKKyAgICBldmFsdWF0
ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzZXREb2NrU2lkZSIpLCBBU0NJSUxpdGVyYWwo
c2lkZVN0cmluZykpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpjaGFuZ2VBdHRhY2hlZFdp
bmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6OlNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCksIG1faW5zcGVjdGVkUGFnZUlkZW50
aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd1dp
ZHRoKHVuc2lnbmVkIHdpZHRoKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRB
dHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQgaGVpZ2h0
KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRUb29sYmFySGVpZ2h0KGhlaWdo
dCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJ
OjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgbV9iYWNrZW5kQ29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpPcGVuSW5OZXdUYWIodXJsKSwgMCk7
Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNhdmUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29s
IGZvcmNlU2F2ZUFzKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTYXZlKGZpbGVu
YW1lLCBjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBmb3JjZVNhdmVBcyksIG1faW5zcGVjdGVkUGFn
ZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjphcHBlbmQoY29uc3QgV1RG
OjpTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudCkKK3sKKyAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KSwgbV9pbnNw
ZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6Omluc3BlY3Rl
ZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCit7CisgICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6Okluc3BlY3RlZFVSTENoYW5nZWQodXJsU3RyaW5nKSwgbV9pbnNwZWN0ZWRQ
YWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNob3dDb25zb2xlKCkK
K3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzaG93Q29uc29sZSIp
KTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2hvd1Jlc291cmNlcygpCit7CisgICAgZXZh
bHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2hvd1Jlc291cmNlcyIpKTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3JVSTo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFN0cmluZyBmcmFt
ZUlkZW50aWZpZXIpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgi
c2hvd01haW5SZXNvdXJjZUZvckZyYW1lIiksIGZyYW1lSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
V2ViSW5zcGVjdG9yVUk6OnN0YXJ0UGFnZVByb2ZpbGluZygpCit7CisgICAgZXZhbHVhdGVDb21t
YW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkIiksIHRy
dWUpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzdG9wUGFnZVByb2ZpbGluZygpCit7Cisg
ICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2V0VGltZWxpbmVQcm9maWxp
bmdFbmFibGVkIiksIGZhbHNlKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZGlkU2F2ZShj
b25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRl
cmFsKCJzYXZlZFVSTCIpLCB1cmwpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpkaWRBcHBl
bmQoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJ
TGl0ZXJhbCgiYXBwZW5kZWRUb1VSTCIpLCB1cmwpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJ
OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGV2
YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChtYWtlU3RyaW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5k
aXNwYXRjaE1lc3NhZ2VBc3luYygiLCBtZXNzYWdlLCAiKSIpKTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JVSTo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorewor
ICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2Vu
ZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIDApOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJ
OjpldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBjb25zdCBTdHJp
bmcmIGFyZ3VtZW50KQoreworICAgIGlmIChhcmd1bWVudC5pc051bGwoKSkKKyAgICAgICAgZXZh
bHVhdGVFeHByZXNzaW9uT25Mb2FkKG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmRp
c3BhdGNoKFtcIiIsIGNvbW1hbmQsICJcIl0pIikpOworICAgIGVsc2UKKyAgICAgICAgZXZhbHVh
dGVFeHByZXNzaW9uT25Mb2FkKG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmRpc3Bh
dGNoKFtcIiIsIGNvbW1hbmQsICJcIiwgXCIiLCBhcmd1bWVudCwgIlwiXSkiKSk7Cit9CisKK3Zv
aWQgV2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb25zdCBTdHJpbmcmIGNv
bW1hbmQsIGJvb2wgYXJndW1lbnQpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbW1h
bmQsIEFTQ0lJTGl0ZXJhbChhcmd1bWVudCA/ICJ0cnVlIiA6ICJmYWxzZSIpKTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVFeHByZXNzaW9uT25Mb2FkKGNvbnN0IFN0cmluZyYg
ZXhwcmVzc2lvbikKK3sKKyAgICBpZiAobV9mcm9udGVuZExvYWRlZCkgeworICAgICAgICBBU1NF
UlQobV9xdWV1ZS5pc0VtcHR5KCkpOworICAgICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPm1haW5G
cmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX3F1ZXVlLmFwcGVuZChleHByZXNzaW9uKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVQZW5kaW5nRXhwcmVzc2lvbnMoKQoreworICAgIEFTU0VS
VChtX2Zyb250ZW5kTG9hZGVkKTsKKworICAgIGZvciAoY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
IDogbV9xdWV1ZSkKKyAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3Jp
cHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOworCisgICAgbV9xdWV1ZS5jbGVhcigpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JV
SS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkYmZjYmUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
VUkuaApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSW5zcGVjdG9y
VUlfaAorI2RlZmluZSBXZWJJbnNwZWN0b3JVSV9oCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQor
CisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRm9yd2FyZGluZy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250
ZW5kSG9zdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xh
c3MgV2ViSW5zcGVjdG9yVUkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpCdW5kbGVJbnNwZWN0b3JVST4sIHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwg
cHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJJbnNwZWN0b3JVST4gY3JlYXRlKFdlYlBhZ2UqKTsKKworICAg
IFdlYlBhZ2UqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KKworICAgIC8vIEltcGxl
bWVudGVkIGluIGdlbmVyYXRlZCBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAKKyAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURl
Y29kZXImKTsKKworICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CisgICAgdm9pZCBkaWRD
bG9zZShJUEM6OkNvbm5lY3Rpb24qKSB7IGNsb3NlV2luZG93KCk7IH0KKyAgICB2b2lkIGRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkg
eyBjbG9zZVdpbmRvdygpOyB9CisKKyAgICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yVUkgbWVz
c2FnZXMKKyAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5l
Y3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1
bmRlclRlc3QpOworCisgICAgdm9pZCBzaG93Q29uc29sZSgpOworICAgIHZvaWQgc2hvd1Jlc291
cmNlcygpOworCisgICAgdm9pZCBzaG93TWFpblJlc291cmNlRm9yRnJhbWUoU3RyaW5nIGZyYW1l
SWRlbnRpZmllcik7CisKKyAgICB2b2lkIHN0YXJ0UGFnZVByb2ZpbGluZygpOworICAgIHZvaWQg
c3RvcFBhZ2VQcm9maWxpbmcoKTsKKworICAgIHZvaWQgYXR0YWNoZWRCb3R0b20oKSB7IHNldERv
Y2tTaWRlKERvY2tTaWRlOjpCb3R0b20pOyB9CisgICAgdm9pZCBhdHRhY2hlZFJpZ2h0KCkgeyBz
ZXREb2NrU2lkZShEb2NrU2lkZTo6UmlnaHQpOyB9CisgICAgdm9pZCBkZXRhY2hlZCgpIHsgc2V0
RG9ja1NpZGUoRG9ja1NpZGU6OlVuZG9ja2VkKTsgfQorCisgICAgdm9pZCBzZXREb2NrU2lkZShE
b2NrU2lkZSk7CisKKyAgICB2b2lkIGRpZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZv
aWQgZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKTsKKworICAgIHZvaWQgc2VuZE1lc3NhZ2VU
b0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpOworCisgICAgLy8gV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQKKyAgICB2b2lkIHdpbmRvd09iamVjdENsZWFyZWQoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGZyb250ZW5kTG9hZGVkKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIG1vdmVXaW5kb3dC
eShmbG9hdCB4LCBmbG9hdCB5KSBvdmVycmlkZTsKKworICAgIFN0cmluZyBsb2NhbGl6ZWRTdHJp
bmdzVVJMKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGJyaW5nVG9Gcm9udCgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgY2xvc2VXaW5kb3coKSBvdmVycmlkZTsKKworICAgIHZvaWQgcmVxdWVzdFNldERv
Y2tTaWRlKERvY2tTaWRlKSBvdmVycmlkZTsKKyAgICB2b2lkIGNoYW5nZUF0dGFjaGVkV2luZG93
SGVpZ2h0KHVuc2lnbmVkKSBvdmVycmlkZTsKKyAgICB2b2lkIGNoYW5nZUF0dGFjaGVkV2luZG93
V2lkdGgodW5zaWduZWQpIG92ZXJyaWRlOworCisgICAgdm9pZCBzZXRUb29sYmFySGVpZ2h0KHVu
c2lnbmVkKSBvdmVycmlkZTsKKworICAgIHZvaWQgb3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYg
dXJsKSBvdmVycmlkZTsKKworICAgIGJvb2wgY2FuU2F2ZSgpIG92ZXJyaWRlOworICAgIHZvaWQg
c2F2ZShjb25zdCBXVEY6OlN0cmluZyYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudCwg
Ym9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKSBvdmVycmlkZTsKKyAgICB2b2lk
IGFwcGVuZChjb25zdCBXVEY6OlN0cmluZyYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVu
dCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOworCisgICAgYm9vbCBpc1VuZGVyVGVzdCgpIG92ZXJyaWRlIHsgcmV0dXJu
IG1fdW5kZXJUZXN0OyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yVUko
V2ViUGFnZSopOworCisgICAgdm9pZCBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3RyaW5n
JiBjb21tYW5kLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50ID0gU3RyaW5nKCkpOworICAgIHZvaWQg
ZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgY29uc3QgQVNDSUlM
aXRlcmFsJiBhcmd1bWVudCkgeyBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29tbWFuZCwgU3RyaW5n
KGFyZ3VtZW50KSk7IH0KKyAgICB2b2lkIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb25zdCBTdHJp
bmcmIGNvbW1hbmQsIGJvb2wgYXJndW1lbnQpOworICAgIHZvaWQgZXZhbHVhdGVFeHByZXNzaW9u
T25Mb2FkKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbik7CisgICAgdm9pZCBldmFsdWF0ZVBlbmRp
bmdFeHByZXNzaW9ucygpOworCisgICAgV2ViUGFnZSogbV9wYWdlOworCisgICAgUmVmUHRyPElQ
Qzo6Q29ubmVjdGlvbj4gbV9iYWNrZW5kQ29ubmVjdGlvbjsKKyAgICB1aW50NjRfdCBtX2luc3Bl
Y3RlZFBhZ2VJZGVudGlmaWVyOworCisgICAgYm9vbCBtX3VuZGVyVGVzdDsKKyAgICBib29sIG1f
ZnJvbnRlbmRMb2FkZWQ7CisgICAgRGVxdWU8U3RyaW5nPiBtX3F1ZXVlOworCisgICAgUmVmUHRy
PFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdD4gbV9mcm9udGVuZEhvc3Q7CisKKyAgICBE
b2NrU2lkZSBtX2RvY2tTaWRlOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbXV0YWJsZSBT
dHJpbmcgbV9sb2NhbGl6ZWRTdHJpbmdzVVJMOworICAgIG11dGFibGUgYm9vbCBtX2hhc0xvY2Fs
aXplZFN0cmluZ3NVUkw7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKworI2VuZGlmIC8vIFdlYkluc3BlY3RvclVJX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3IubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5z
cGVjdG9yVUkubWVzc2FnZXMuaW4Kc2ltaWxhcml0eSBpbmRleCA3NyUKY29weSBmcm9tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KY29w
eSB0byBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVz
c2FnZXMuaW4KaW5kZXggYzIzYjg2Zi4uMjNlYjVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4K
QEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIyLDI5ICsyMiwyNSBA
QAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yIExl
Z2FjeVJlY2VpdmVyIHsKLSAgICBTaG93KCkKLSAgICBDbG9zZSgpCittZXNzYWdlcyAtPiBXZWJJ
bnNwZWN0b3JVSSB7CisgICAgRXN0YWJsaXNoQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgY29u
bmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29s
IHVuZGVyVGVzdCkKKwogICAgIEF0dGFjaGVkQm90dG9tKCkKICAgICBBdHRhY2hlZFJpZ2h0KCkK
ICAgICBEZXRhY2hlZCgpCi0gICAgRGlkU2F2ZShTdHJpbmcgdXJsKQotICAgIERpZEFwcGVuZChT
dHJpbmcgdXJsKQorCiAgICAgU2hvd0NvbnNvbGUoKQogICAgIFNob3dSZXNvdXJjZXMoKQotICAg
IFNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQotICAgIFN0YXJ0SmF2
YVNjcmlwdERlYnVnZ2luZygpCi0gICAgU3RvcEphdmFTY3JpcHREZWJ1Z2dpbmcoKQotICAgIFN0
YXJ0SmF2YVNjcmlwdFByb2ZpbGluZygpCi0gICAgU3RvcEphdmFTY3JpcHRQcm9maWxpbmcoKQor
CisgICAgU2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFN0cmluZyBmcmFtZUlkZW50aWZpZXIpCisK
ICAgICBTdGFydFBhZ2VQcm9maWxpbmcoKQogICAgIFN0b3BQYWdlUHJvZmlsaW5nKCkKIAotI2lm
IEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotICAgIERpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVG
cm9udGVuZChTdHJpbmcgbWVzc2FnZSkKLSAgICBSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpCi0g
ICAgUmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKQotI2VuZGlmCisgICAgRGlkU2F2ZShTdHJp
bmcgdXJsKQorICAgIERpZEFwcGVuZChTdHJpbmcgdXJsKQorCisgICAgU2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKFN0cmluZyBtZXNzYWdlKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBlNjJhY2ZkLi5jY2M2M2I1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC04MCw2
ICs4MCw4IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVj
dG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJJbnNwZWN0b3JVSS5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJXZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aCIKQEAgLTQ2MCw2ICs0NjIsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwg
Y29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICNlbmRpZgogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9w
YWdlSUQsICp0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZUlELCAqdGhpcyk7CiAjZW5kaWYKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2Ny
ZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOwpAQCAt
NTIwLDYgKzUyMyw3IEBAIFdlYlBhZ2U6On5XZWJQYWdlKCkKICNlbmRpZgogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQp
OworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwpAQCAtMjg4NiwxOCArMjg5MCwyNiBAQCB2
b2lkIFdlYlBhZ2U6OmRpZEZsdXNoTGF5ZXJUcmVlQXRUaW1lKHN0ZDo6Y2hyb25vOjptaWxsaXNl
Y29uZHMgdGltZXN0YW1wKQogfQogI2VuZGlmCiAKLSAgICAKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogV2ViSW5zcGVjdG9yKiBXZWJQYWdlOjppbnNwZWN0b3IoKQogewogICAgIGlmIChtX2lzQ2xv
c2VkKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYg
KCFtX2luc3BlY3RvcikKLSAgICAgICAgbV9pbnNwZWN0b3IgPSBXZWJJbnNwZWN0b3I6OmNyZWF0
ZSh0aGlzLCBtX2luc3BlY3RvckNsaWVudCk7CisgICAgICAgIG1faW5zcGVjdG9yID0gV2ViSW5z
cGVjdG9yOjpjcmVhdGUodGhpcyk7CiAgICAgcmV0dXJuIG1faW5zcGVjdG9yLmdldCgpOwogfQor
CitXZWJJbnNwZWN0b3JVSSogV2ViUGFnZTo6aW5zcGVjdG9yVUkoKQoreworICAgIGlmIChtX2lz
Q2xvc2VkKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIW1faW5zcGVjdG9yVUkp
CisgICAgICAgIG1faW5zcGVjdG9yVUkgPSBXZWJJbnNwZWN0b3JVSTo6Y3JlYXRlKHRoaXMpOwor
ICAgIHJldHVybiBtX2luc3BlY3RvclVJLmdldCgpOworfQogI2VuZGlmCi0gICAgCisKICNpZiBQ
TEFURk9STShJT1MpCiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKiBXZWJQYWdlOjp2aWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyKCkKIHsKQEAgLTM0NzksNyArMzQ5MSwxMyBAQCB2b2lkIFdlYlBhZ2U6
OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgSVBDOjpNZXNz
YWdlRGVjb2RlcgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSB0aGlzLT5p
bnNwZWN0b3IoKSkKLSAgICAgICAgICAgIGluc3BlY3Rvci0+ZGlkUmVjZWl2ZVdlYkluc3BlY3Rv
ck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgICAgICBpbnNwZWN0b3ItPmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChX
ZWJJbnNwZWN0b3JVSSogaW5zcGVjdG9yVUkgPSB0aGlzLT5pbnNwZWN0b3JVSSgpKQorICAgICAg
ICAgICAgaW5zcGVjdG9yVUktPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBiYWJhNTA2Li5iN2Q0NDhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1Myw2ICsxNTMsNyBA
QCBjbGFzcyBXZWJGdWxsU2NyZWVuTWFuYWdlcjsKIGNsYXNzIFdlYkltYWdlOwogY2xhc3MgV2Vi
SW5zcGVjdG9yOwogY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50OworY2xhc3MgV2ViSW5zcGVjdG9y
VUk7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNz
IFdlYk5vdGlmaWNhdGlvbkNsaWVudDsKQEAgLTIyNiw4ICsyMjcsMTAgQEAgcHVibGljOgogCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBXZWJJbnNwZWN0b3IqIGluc3BlY3RvcigpOworICAg
IFdlYkluc3BlY3RvclVJKiBpbnNwZWN0b3JVSSgpOworICAgIGJvb2wgaXNJbnNwZWN0b3JQYWdl
KCkgeyByZXR1cm4gISFtX2luc3BlY3RvclVJOyB9CiAjZW5kaWYKLSAgICAKKwogI2lmIFBMQVRG
T1JNKElPUykKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKiB2aWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyKCk7CiAjZW5kaWYKQEAgLTExNTksNiArMTE2Miw3IEBAIHByaXZhdGU6CiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogICAgIFJlZlB0cjxXZWJJbnNwZWN0b3I+IG1faW5zcGVjdG9yOwor
ICAgIFJlZlB0cjxXZWJJbnNwZWN0b3JVST4gbV9pbnNwZWN0b3JVSTsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKElPUykKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4gbV92aWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JVSUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3RvclVJRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4xODU3YzdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JVSUVmbC5jcHAKQEAgLTAs
MCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNz
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JV
SS5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgPFdlYkNvcmUvRWZsSW5z
cGVjdG9yVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitib29sIFdlYkluc3BlY3RvclVJOjpjYW5TYXZlKCkKK3sKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3Ry
aW5nc1VSTCgpCit7CisgICAgcmV0dXJuICJmaWxlOi8vIiArIFdlYkNvcmU6Omluc3BlY3RvclJl
c291cmNlUGF0aCgpICsgIi9sb2NhbGl6ZWRTdHJpbmdzLmpzIjsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3Rr
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjQ2Nzg1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNw
ZWN0b3JVSUd0ay5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg
KGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSS5o
IgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgV2ViSW5zcGVjdG9yVUk6OmNhblNhdmUoKQor
eworICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIFdlYkluc3BlY3RvclVJOjpsb2NhbGl6
ZWRTdHJpbmdzVVJMKCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKCJyZXNvdXJjZTovLy9vcmcvd2Vi
a2l0Z3RrL2luc3BlY3Rvci9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3Mu
anMiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJJbnNwZWN0b3JVSU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViSW5zcGVjdG9yVUlNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMmJlNzZhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yVUlNYWMubW0KQEAgLTAsMCArMSw2MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViSW5zcGVjdG9y
VUkuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNpbXBvcnQgPFdlYkNvcmUvU29mdExp
bmtpbmcuaD4KKworU09GVF9MSU5LX1NUQUdFRF9GUkFNRVdPUksoV2ViSW5zcGVjdG9yVUksIFBy
aXZhdGVGcmFtZXdvcmtzLCBBKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBXZWJJbnNw
ZWN0b3JVSTo6Y2FuU2F2ZSgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyBXZWJJ
bnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCit7CisgICAgaWYgKCFtX2hhc0xvY2Fs
aXplZFN0cmluZ3NVUkwpIHsKKyAgICAgICAgLy8gQ2FsbCB0aGUgc29mdCBsaW5rIGZyYW1ld29y
ayBmdW5jdGlvbiB0byBkbG9wZW4gaXQsIHRoZW4gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlm
aWVyOl0gd2lsbCB3b3JrLgorICAgICAgICBXZWJJbnNwZWN0b3JVSUxpYnJhcnkoKTsKKworICAg
ICAgICBOU1N0cmluZyAqcGF0aCA9IFtbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJj
b20uYXBwbGUuV2ViSW5zcGVjdG9yVUkiXSBwYXRoRm9yUmVzb3VyY2U6QCJsb2NhbGl6ZWRTdHJp
bmdzIiBvZlR5cGU6QCJqcyJdOworICAgICAgICBpZiAoW3BhdGggbGVuZ3RoXSkKKyAgICAgICAg
ICAgIG1fbG9jYWxpemVkU3RyaW5nc1VSTCA9IFtbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGhd
IGFic29sdXRlU3RyaW5nXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9sb2NhbGl6ZWRT
dHJpbmdzVVJMID0gU3RyaW5nKCk7CisgICAgICAgIG1faGFzTG9jYWxpemVkU3RyaW5nc1VSTCA9
IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIG1fbG9jYWxpemVkU3RyaW5nc1VSTDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpp
bmRleCAyY2JmZWFiLi41MmViZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMjA1LDcgKzIwNSwxMSBAQCB2b2lkIFdl
YlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycwogdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUo
Y29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQog
ewogI2lmICFQTEFURk9STShJT1MpCi0gICAgTlNTdHJpbmcgKmFwcGxpY2F0aW9uTmFtZSA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9TVFJJTkcoIiVAIFdlYiBDb250ZW50Iiwg
IlZpc2libGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUgYXBw
bGljYXRpb24gbmFtZS4iKSwgKE5TU3RyaW5nICopcGFyYW1ldGVycy51aVByb2Nlc3NOYW1lXTsK
KyAgICBOU1N0cmluZyAqYXBwbGljYXRpb25OYW1lOworICAgIGlmIChwYXJhbWV0ZXJzLmV4dHJh
SW5pdGlhbGl6YXRpb25EYXRhLmdldChBU0NJSUxpdGVyYWwoImluc3BlY3Rvci1wcm9jZXNzIikp
ID09ICIxIikKKyAgICAgICAgYXBwbGljYXRpb25OYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6V0VCX1VJX1NUUklORygiJUAgV2ViIEluc3BlY3RvciIsICJWaXNpYmxlIG5hbWUgb2Yg
V2ViIEluc3BlY3RvcidzIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0
aW9uIG5hbWUuIiksIChOU1N0cmluZyAqKXBhcmFtZXRlcnMudWlQcm9jZXNzTmFtZV07CisgICAg
ZWxzZQorICAgICAgICBhcHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpXRUJfVUlfU1RSSU5HKCIlQCBXZWIgQ29udGVudCIsICJWaXNpYmxlIG5hbWUgb2YgdGhlIHdl
YiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuIiksIChOU1N0
cmluZyAqKXBhcmFtZXRlcnMudWlQcm9jZXNzTmFtZV07CiAgICAgV0tTZXRWaXNpYmxlQXBwbGlj
YXRpb25OYW1lKChDRlN0cmluZ1JlZilhcHBsaWNhdGlvbk5hbWUpOwogI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238437</attachid>
            <date>2014-09-21 16:09:32 -0700</date>
            <delta_ts>2014-09-21 20:06:35 -0700</delta_ts>
            <desc>WIP (Binary Patch)</desc>
            <filename>WIP.patch</filename>
            <type>text/plain</type>
            <size>139683</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5ncyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpp
bmRleCAxNDExNjdlLi43N2RkNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNo
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5s
cHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCkBAIC00OSw2ICs0OSw5IEBACiAvKiBWaXNpYmxlIG5h
bWUgb2YgdGhlIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5h
bWUuICovCiAiJUAgV2ViIENvbnRlbnQiID0gIiVAIFdlYiBDb250ZW50IjsKIAorLyogVmlzaWJs
ZSBuYW1lIG9mIFdlYiBJbnNwZWN0b3IncyB3ZWIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRo
ZSBhcHBsaWNhdGlvbiBuYW1lLiAqLworIiVAIFdlYiBJbnNwZWN0b3IiID0gIiVAIFdlYiBJbnNw
ZWN0b3IiOworCiAvKiBOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0byBtYXN0
ZXIga2V5IGluIEtleWNoYWluICovCiAiJUAgV2ViQ3J5cHRvIE1hc3RlciBLZXkiID0gIiVAIFdl
YkNyeXB0byBNYXN0ZXIgS2V5IjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA4NzRlNTFlLi44
MTlhNTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNzcxLDYgKzc3MSw3IEBAIF9fWk43V2Vi
Q29yZTE3U1FMaXRlVHJhbnNhY3Rpb25EMUV2CiBfX1pON1dlYkNvcmUxN1N1YnJlc291cmNlTG9h
ZGVyNmNyZWF0ZUVQTlNfNUZyYW1lRVBOU18xNENhY2hlZFJlc291cmNlRVJLTlNfMTVSZXNvdXJj
ZVJlcXVlc3RFUktOU18yMVJlc291cmNlTG9hZGVyT3B0aW9uc0UKIF9fWk43V2ViQ29yZTE3Y2Fj
aGVET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE4zSlNDOVN0cnVjdHVyZUVQ
S05TMl85Q2xhc3NJbmZvRQogX19aTjdXZWJDb3JlMTdlbmNvZGVGb3JGaWxlTmFtZUVSS04zV1RG
NlN0cmluZ0UKK19fWk43V2ViQ29yZTE3ZXhlY1N0YXRlRnJvbVBhZ2VFUk5TXzE1RE9NV3JhcHBl
cldvcmxkRVBOU180UGFnZUUKIF9fWk43V2ViQ29yZTE3bGFuZ3VhZ2VEaWRDaGFuZ2VFdgogX19a
TjdXZWJDb3JlMTdvcGVuVGVtcG9yYXJ5RmlsZUVSS04zV1RGNlN0cmluZ0VSaQogX19aTjdXZWJD
b3JlMTdzUkdCQ29sb3JTcGFjZVJlZkV2CkBAIC03OTQsNiArNzk1LDcgQEAgX19aTjdXZWJDb3Jl
MThQbGF0Zm9ybVBhc3RlYm9hcmQ4YWRkVHlwZXNFUktOM1dURjZWZWN0b3JJTlMxXzZTdHJpbmdF
TG0wRU5TMV8xNUMKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkOGdldFR5cGVzRVJO
M1dURjZWZWN0b3JJTlMxXzZTdHJpbmdFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19a
TjdXZWJDb3JlMThQbGF0Zm9ybVBhc3RlYm9hcmQ4c2V0VHlwZXNFUktOM1dURjZWZWN0b3JJTlMx
XzZTdHJpbmdFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMThQbGF0
Zm9ybVBhc3RlYm9hcmRDMUVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE4U2NyaXB0R2xv
YmFsT2JqZWN0M3NldEVQTjNKU0M5RXhlY1N0YXRlRVBLY1BOU18yMUluc3BlY3RvckZyb250ZW5k
SG9zdEUKIF9fWk43V2ViQ29yZTE4U3R5bGVTaGVldENvbnRlbnRzMTFwYXJzZVN0cmluZ0VSS04z
V1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE4U3R5bGVTaGVldENvbnRlbnRzQzFFUE5TXzE1U3R5
bGVSdWxlSW1wb3J0RVJLTjNXVEY2U3RyaW5nRVJLTlNfMTZDU1NQYXJzZXJDb250ZXh0RQogX19a
TjdXZWJDb3JlMThTdHlsZVNoZWV0Q29udGVudHNEMUV2CkBAIC0xOTI2LDcgKzE5MjgsMTAgQEAg
X19aTks3V2ViQ29yZTVSYW5nZTllbmRPZmZzZXRFUmkKIF9fWk5LN1dlYkNvcmU1UmFuZ2U5Zmly
c3ROb2RlRXYKIF9fWk5LN1dlYkNvcmU1UmFuZ2U5dGV4dFF1YWRzRVJOM1dURjZWZWN0b3JJTlNf
OUZsb2F0UXVhZEVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFYlBOUzBfMjBSYW5nZUluRml4
ZWRQb3NpdGlvbkUKIF9fWk5LN1dlYkNvcmU1UmFuZ2U5dGV4dFJlY3RzRVJOM1dURjZWZWN0b3JJ
TlNfN0ludFJlY3RFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRWJQTlMwXzIwUmFuZ2VJbkZp
eGVkUG9zaXRpb25FCitfX1pOSzdXZWJDb3JlNkNocm9tZTEwd2luZG93UmVjdEV2CiBfX1pOSzdX
ZWJDb3JlNkNocm9tZTEyY3JlYXRlV2luZG93RVBOU181RnJhbWVFUktOU18xNkZyYW1lTG9hZFJl
cXVlc3RFUktOU18xNFdpbmRvd0ZlYXR1cmVzRVJLTlNfMTZOYXZpZ2F0aW9uQWN0aW9uRQorX19a
Tks3V2ViQ29yZTZDaHJvbWUxM3NldFdpbmRvd1JlY3RFUktOU185RmxvYXRSZWN0RQorX19aTks3
V2ViQ29yZTZDaHJvbWU0c2hvd0V2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjEyc2VsZWN0ZWRUZXh0
RXYKIF9fWk5LN1dlYkNvcmU2RWRpdG9yMTNjYW5FZGl0UmljaGx5RXYKIF9fWk5LN1dlYkNvcmU2
RWRpdG9yMTZjb21wb3NpdGlvblJhbmdlRXYKQEAgLTMxMjMsMTMgKzMxMjgsMTggQEAgX19aTjdX
ZWJDb3JlNUNvbG9yQzFFUktOM1dURjZTdHJpbmdFCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIF9f
Wk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnkyN3Nob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbEVS
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE1SW5zcGVjdG9yQ2xpZW50MzFkb0Rpc3BhdGNo
TWVzc2FnZU9uRnJvbnRlbmRQYWdlRVBOU180UGFnZUVSS04zV1RGNlN0cmluZ0UKK19fWk43V2Vi
Q29yZTE4SW5zcGVjdG9yUGFnZUFnZW50N2ZyYW1lSWRFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29y
ZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE1Y29ubmVjdEZyb250ZW5kRVBOOUluc3BlY3RvcjI0SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsRQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVy
MThkaXNjb25uZWN0RnJvbnRlbmRFTjlJbnNwZWN0b3IyNUluc3BlY3RvckRpc2Nvbm5lY3RSZWFz
b25FCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOHNldFByb2ZpbGVyRW5hYmxl
ZEViCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNWV2YWx1YXRlRm9yVGVzdElu
RnJvbnRlbmRFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xs
ZXIyNnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50RU5TdDNfXzExMHVuaXF1ZV9wdHJJTlNfMjNJ
bnNwZWN0b3JGcm9udGVuZENsaWVudEVOUzFfMTRkZWZhdWx0X2RlbGV0ZUlTM19FRUVFCitfX1pO
N1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50
RVBOU18yM0luc3BlY3RvckZyb250ZW5kQ2xpZW50RQorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JD
b250cm9sbGVyMjdkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI0c2hvd0V2CiBfX1pON1dlYkNvcmUxOUlu
c3BlY3RvckNvbnRyb2xsZXI1Y2xvc2VFdgorX19aTjdXZWJDb3JlMjFJbnNwZWN0b3JGcm9udGVu
ZEhvc3QxNmRpc2Nvbm5lY3RDbGllbnRFdgorX19aTjdXZWJDb3JlMjFJbnNwZWN0b3JGcm9udGVu
ZEhvc3RDMUVQTlNfMjNJbnNwZWN0b3JGcm9udGVuZENsaWVudEVQTlNfNFBhZ2VFCitfX1pON1dl
YkNvcmUyMUluc3BlY3RvckZyb250ZW5kSG9zdEQxRXYKIF9fWk43V2ViQ29yZTIyaW5zdHJ1bWVu
dGF0aW9uRm9yUGFnZUVQTlNfNFBhZ2VFCiBfX1pON1dlYkNvcmUyNEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjE3c19mcm9udGVuZENvdW50ZXJFCiBfX1pON1dlYkNvcmUyNEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjI2aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2VFUE5TXzRQYWdlRQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg3
ZDJiYmMuLjBjNmEzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE3NjEsNyArMTc2MSw3IEBACiAJCTRGMTUzNEUwMTFCNTMz
MDIwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3JUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxNTM0REYxMUI1MzMwMjAwMjFGRDg2IC8qIEVk
aXRpbmdCZWhhdmlvclR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNEY0RjVGRkIxMUNCRDJFMTAwQTE4NkJGIC8qIEluc3BlY3RvcldlYkZy
b250ZW5kRGlzcGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEY0RjVGRkExMUNCRDJEMjAwQTE4NkJGIC8qIEluc3BlY3RvcldlYkZyb250
ZW5kRGlzcGF0Y2hlcnMuY3BwICovOyB9OwogCQk0RjZGREQ2NDEzNDFERUREMDAxRjhFRTMgLyog
SW5zcGVjdG9yUGFnZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRGNkZERDYyMTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdl
bnQuY3BwICovOyB9OwotCQk0RjZGREQ2NTEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFn
ZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
RjZGREQ2MzEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmggKi87IH07CisJ
CTRGNkZERDY1MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNkZERDYzMTM0MURFREQw
MDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjcwN0E5OTExRUY2Nzk0MDBBQ0RBNjkgLyogSW5z
cGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNzA3QTk3MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0
b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwICovOyB9OwogCQk0RjcwN0E5QTExRUY2Nzk0MDBB
Q0RBNjkgLyogSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjcwN0E5ODExRUY2Nzk0MDBBQ0RBNjkg
LyogSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEZCMzkwQUQxNUVGNjFGMzAwN0FENTFGIC8q
IEdlbmVyYXRlZEltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRGQjM5MEFDMTVFRjYxRjMwMDdBRDUxRiAvKiBHZW5lcmF0ZWRJbWFnZS5jcHAg
Ki87IH07CkBAIC0yMzMwLDcgKzIzMzAsNyBAQAogCQk3OUYyRjVBMTEwOTE5MzlBMDAwRDg3Q0Ig
LyogQ29tcG9zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3OUYyRjU5RTEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVu
dC5jcHAgKi87IH07CiAJCTc5RjJGNUEyMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUYy
RjU5RjEwOTE5MzlBMDAwRDg3Q0IgLyogQ29tcG9zaXRpb25FdmVudC5oICovOyB9OwogCQk3QTBF
NzcwRTEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NzBCMTBDMDBBODgw
MEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwICovOyB9OwotCQk3QTBFNzcwRjEw
QzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzcwQzEwQzAwQTg4MDBBMDI3NkUg
LyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggKi87IH07CisJCTdBMEU3NzBGMTBDMDBBODgwMEEw
Mjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NzBDMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0
b3JGcm9udGVuZEhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3QTBFNzcxRTEwQzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0EwRTc3MUMxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCAq
LzsgfTsKIAkJN0EwRTc3MUYxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBF
NzcxRDEwQzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCAqLzsgfTsK
IAkJN0ExRDdGQ0IxOEY4NUYwRjAwQzM4NUFEIC8qIG1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJp
bmdzLmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QTFEN0ZDOTE4Rjg1RjBGMDBDMzg1QUQgLyogbWVkaWFDb250cm9sc0xvY2FsaXplZFN0cmluZ3Mu
anMgKi87IH07CkBAIC0yMzcwLDcgKzIzNzAsNyBAQAogCQk3QUIwQjFDMTEyMTFBNjIyMDBBNzY5
NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0FCMEIxQkYxMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuaCAqLzsgfTsKIAkJN0FDRDg4RDMxNEMwOEJENjAwODRFREQyIC8qIElu
c3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBQ0Q4OEQxMTRDMDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAgKi87IH07CiAJCTdBQ0Q4OEQ0MTRDMDhCRDYwMDg0RUREMiAvKiBJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0FDRDg4RDIxNEMwOEJENjAwODRFREQyIC8qIEluc3BlY3RvckluZGV4ZWRE
QkFnZW50LmggKi87IH07Ci0JCTdBREU3MjI2MTBDQkJCOUIwMDZCM0IzQSAvKiBDb250ZXh0TWVu
dVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QURFNzIyNTEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5oICovOyB9
OworCQk3QURFNzIyNjEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FERTcyMjUxMENC
QkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QUY5QjIwMjE4Q0ZCMkRGMDBDNjRCRUYg
LyogVlRUUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBRjlCMUZDMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uY3BwICovOyB9Owog
CQk3QUY5QjIwMzE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFGRDE4Q0ZCMkRGMDBDNjRCRUYg
LyogVlRUUmVnaW9uLmggKi87IH07CiAJCTdBRjlCMjA1MThDRkIyREYwMEM2NEJFRiAvKiBWVFRS
ZWdpb25MaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBRjlCMUZGMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb25MaXN0LmNwcCAqLzsgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEdsb2JhbE9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmgKaW5k
ZXggOGFhMDU1Yi4uOTJiZjIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0R2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0R2xvYmFsT2JqZWN0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU2NyaXB0R2xvYmFs
T2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzZXQoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBjaGFyKiBuYW1lLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmKTsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IGNoYXIqIG5hbWUsIEluc3BlY3RvckZyb250ZW5kSG9zdCopOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIElu
c3BlY3RvckZyb250ZW5kSG9zdCopOwogI2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBnZXQoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBuYW1lLCBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3Qm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCmluZGV4IDhhODJjYWIu
LjdlMjZhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApAQCAt
NTgsNyArNTgsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0RnJvbUV4ZWNTdGF0ZShKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFeGVjU3RhdGUqIG1haW5X
b3JsZEV4ZWNTdGF0ZShGcmFtZSopOwogCiBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbU5v
ZGUoRE9NV3JhcHBlcldvcmxkJiwgTm9kZSopOwotSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZy
b21QYWdlKERPTVdyYXBwZXJXb3JsZCYsIFBhZ2UqKTsKK1dFQkNPUkVfRVhQT1JUIEpTQzo6RXhl
Y1N0YXRlKiBleGVjU3RhdGVGcm9tUGFnZShET01XcmFwcGVyV29ybGQmLCBQYWdlKik7CiBKU0M6
OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNj
b3BlKik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBjN2M4Nzk1Li4yMDQyNTE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CkBAIC04Niw2ICs4Niw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xs
ZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAgICAgLCBtX2luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbChudWxscHRyKQogICAgICwgbV9wYWdlKHBhZ2UpCiAgICAgLCBt
X2luc3BlY3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQpCisgICAgLCBtX2luc3BlY3RvckZyb250
ZW5kQ2xpZW50KG51bGxwdHIpCiAgICAgLCBtX2lzVW5kZXJUZXN0KGZhbHNlKQogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQogICAgICwgbV9oYXNSZW1vdGVGcm9udGVuZChmYWxzZSkKQEAg
LTE4OCw5ICsxODksOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2VE
ZXN0cm95ZWQoKQogICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IGluc3BlY3RvckZyb250ZW5kQ2xpZW50KQor
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChJbnNw
ZWN0b3JGcm9udGVuZENsaWVudCogaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpCiB7Ci0gICAgbV9p
bnNwZWN0b3JGcm9udGVuZENsaWVudCA9IFdURjo6bW92ZShpbnNwZWN0b3JGcm9udGVuZENsaWVu
dCk7CisgICAgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudCA9IGluc3BlY3RvckZyb250ZW5kQ2xp
ZW50OwogfQogCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc0xvY2FsRnJvbnRlbmQoKSBj
b25zdApAQCAtMjEzLDcgKzIxNCw3IEBAIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzUmVt
b3RlRnJvbnRlbmQoKSBjb25zdAogCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5nZXQoKTsKKyAgICByZXR1cm4gbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudDsK
IH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29y
bGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQpAQCAtMjgzLDggKzI4NCw3
IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygpCiAgICAgaWYgKG1faW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKQogICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+YnJpbmdGcm9udGVu
ZFRvRnJvbnQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwgPSBtX2luc3BlY3RvckNsaWVudC0+b3Blbkluc3BlY3RvckZyb250
ZW5kKHRoaXMpOwotICAgICAgICBpZiAoZnJvbnRlbmRDaGFubmVsKQorICAgICAgICBpZiAoSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBtX2luc3BlY3RvckNsaWVu
dC0+b3Blbkluc3BlY3RvckZyb250ZW5kKHRoaXMpKQogICAgICAgICAgICAgY29ubmVjdEZyb250
ZW5kKGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZmQ1NTkyNC4uMzBkM2NjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC04Myw3
ICs4Myw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNob3coKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVu
ZENsaWVudD4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqKTsKICAgICBib29sIGhhc0luc3BlY3RvckZy
b250ZW5kQ2xpZW50KCkgY29uc3Q7CiAgICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29y
bGQoRnJhbWUqLCBET01XcmFwcGVyV29ybGQmKTsKIApAQCAtMTIxLDcgKzEyMSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlc3VtZSgpOwogCiAgICAgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JD
bGllbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckNsaWVudDsgfQotICAgIEluc3BlY3Rv
clBhZ2VBZ2VudCogcGFnZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlQWdlbnQ7IH0KKyAg
ICBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZUFnZW50OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjYW5BY2Nlc3NJbnNw
ZWN0ZWRTY3JpcHRTdGF0ZShKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTQ2
LDEwICsxNDYsMTAgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBtX3Rp
bWVsaW5lQWdlbnQ7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiAg
ICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsOwogICAgIFBhZ2UmIG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1faW5z
cGVjdG9yQ2xpZW50OworICAgIEluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2luc3BlY3RvckZy
b250ZW5kQ2xpZW50OwogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBtX2Fn
ZW50czsKICAgICBWZWN0b3I8SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLCAyPiBtX2lu
amVjdGVkU2NyaXB0SW5zdHJ1bWVudGF0aW9uQ29va2llczsKICAgICBib29sIG1faXNVbmRlclRl
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmgKaW5kZXggOGU4Y2Q4NS4uMWE3NGVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaApAQCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yRnJvbnRlbmRIb3N0KGNsaWVudCwg
ZnJvbnRlbmRQYWdlKSk7CiAgICAgfQogCi0gICAgfkluc3BlY3RvckZyb250ZW5kSG9zdCgpOwot
ICAgIHZvaWQgZGlzY29ubmVjdENsaWVudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIH5JbnNwZWN0
b3JGcm9udGVuZEhvc3QoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc2Nvbm5lY3RDbGll
bnQoKTsKIAogICAgIHZvaWQgbG9hZGVkKCk7CiAgICAgdm9pZCByZXF1ZXN0U2V0RG9ja1NpZGUo
Y29uc3QgU3RyaW5nJik7CkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCiAgICAgZnJpZW5kIGNsYXNzIEZyb250ZW5kTWVudVByb3ZpZGVyOwogI2Vu
ZGlmCi0gICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0KEluc3BlY3RvckZyb250ZW5kQ2xpZW50Kiwg
UGFnZSogZnJvbnRlbmRQYWdlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JGcm9udGVu
ZEhvc3QoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqLCBQYWdlKiBmcm9udGVuZFBhZ2UpOwogCiAg
ICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1fY2xpZW50OwogICAgIFBhZ2UqIG1fZnJvbnRl
bmRQYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5o
CmluZGV4IDExMDY3MGUuLjI1ZmUxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTE1NSw3ICsxNTUsNyBAQCBwdWJsaWM6CiAgICAgRnJh
bWUqIG1haW5GcmFtZSgpOwogICAgIFN0cmluZyBjcmVhdGVJZGVudGlmaWVyKCk7CiAgICAgRnJh
bWUqIGZyYW1lRm9ySWQoY29uc3QgU3RyaW5nJiBmcmFtZUlkKTsKLSAgICBTdHJpbmcgZnJhbWVJ
ZChGcmFtZSopOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmcmFtZUlkKEZyYW1lKik7CiAg
ICAgYm9vbCBoYXNJZEZvckZyYW1lKEZyYW1lKikgY29uc3Q7CiAgICAgU3RyaW5nIGxvYWRlcklk
KERvY3VtZW50TG9hZGVyKik7CiAgICAgRnJhbWUqIGZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdp
bihjb25zdCBTdHJpbmcmIG9yaWdpblJhd1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAppbmRleCBm
Y2E3ZjkwLi4zZTRmNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTEwMiw4ICsxMDIsOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoRnJhbWUqLCBjb25zdCBJbnRT
aXplJikgY29uc3Q7CiAKLSAgICB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0Jikg
Y29uc3Q7Ci0gICAgRmxvYXRSZWN0IHdpbmRvd1JlY3QoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgRmxvYXRSZWN0IHdpbmRvd1JlY3QoKSBjb25zdDsKIAogICAgIEZsb2F0UmVj
dCBwYWdlUmVjdCgpIGNvbnN0OwogCkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZm9jdXNlZEZyYW1lQ2hhbmdlZChGcmFtZSopIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNv
bnN0IFdpbmRvd0ZlYXR1cmVzJiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpIGNvbnN0OwotICAg
IHZvaWQgc2hvdygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvdygpIGNvbnN0
OwogCiAgICAgYm9vbCBjYW5SdW5Nb2RhbCgpIGNvbnN0OwogICAgIGJvb2wgY2FuUnVuTW9kYWxO
b3coKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAwYTAyNjdh
Li41OWU3MWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNDcxLDEy
ICsxNDcxLDEwIEBAIFBhc3NSZWZQdHI8RE9NV2luZG93PiBJbnRlcm5hbHM6Om9wZW5EdW1teUlu
c3BlY3RvckZyb250ZW5kKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIFBhZ2UqIGZyb250ZW5kUGFn
ZSA9IG1fZnJvbnRlbmRXaW5kb3ctPmRvY3VtZW50KCktPnBhZ2UoKTsKICAgICBBU1NFUlQoZnJv
bnRlbmRQYWdlKTsKIAotICAgIGF1dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckZyb250ZW5kQ2xpZW50RHVtbXk+KCZwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVy
KCksIGZyb250ZW5kUGFnZSk7Ci0KLSAgICBmcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChXVEY6Om1vdmUoZnJvbnRlbmRDbGllbnQp
KTsKLQotICAgIG1fZnJvbnRlbmRDaGFubmVsID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbER1bW15KGZyb250ZW5kUGFnZSkpOworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kQ2xpZW50RHVtbXk+KCZwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCksIGZyb250ZW5kUGFnZSk7CisgICAgZnJvbnRlbmRQYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV9mcm9udGVuZENs
aWVudC5nZXQoKSk7CiAKKyAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRHVtbXk+KGZyb250ZW5kUGFnZSk7CiAgICAgcGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZChtX2Zyb250ZW5kQ2hhbm5lbC5n
ZXQoKSk7CiAKICAgICByZXR1cm4gbV9mcm9udGVuZFdpbmRvdzsKQEAgLTE0OTAsMTAgKzE0ODgs
MTEgQEAgdm9pZCBJbnRlcm5hbHM6OmNsb3NlRHVtbXlJbnNwZWN0b3JGcm9udGVuZCgpCiAKICAg
ICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rv
ckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CiAKLSAgICBtX2Zyb250ZW5k
Q2hhbm5lbC5yZWxlYXNlKCk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IG51bGxwdHI7CisgICAg
bV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOwogCiAgICAgbV9mcm9udGVuZFdpbmRvdy0+Y2xv
c2UobV9mcm9udGVuZFdpbmRvdy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICBtX2Zy
b250ZW5kV2luZG93LnJlbGVhc2UoKTsKKyAgICBtX2Zyb250ZW5kV2luZG93LmNsZWFyKCk7CiB9
CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChib29sIGVu
YWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5k
ZXggM2ZmOWE3Zi4uNmNjN2QyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC01
MCw2ICs1MCw3IEBAIGNsYXNzIERvY3VtZW50TWFya2VyOwogY2xhc3MgRWxlbWVudDsKIGNsYXNz
IEZyYW1lOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRHVtbXk7CitjbGFzcyBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudER1bW15OwogY2xhc3MgSW50ZXJuYWxTZXR0aW5nczsKIGNsYXNz
IE1hbGxvY1N0YXRpc3RpY3M7CiBjbGFzcyBNZW1vcnlJbmZvOwpAQCAtMzUwLDcgKzM1MSw4IEBA
IHByaXZhdGU6CiAgICAgRG9jdW1lbnRNYXJrZXIqIG1hcmtlckF0KE5vZGUqLCBjb25zdCBTdHJp
bmcmIG1hcmtlclR5cGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKICAgICBSZWZQdHI8RE9NV2luZG93PiBtX2Zyb250ZW5kV2luZG93Owot
ICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teT4gbV9mcm9udGVuZENoYW5u
ZWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250ZW5kQ2xpZW50RHVtbXk+IG1f
ZnJvbnRlbmRDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbER1bW15PiBtX2Zyb250ZW5kQ2hhbm5lbDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKaW5kZXggODY3ZGVmYS4uYjg5MGZkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTA5LTA2ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgYSA8Y2lyY2xlPiBpbnN0ZWFkIG9mIGEgPHBhdGg+
IGluIERvd25sb2FkQXJyb3cuc3ZnLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM2NjA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ltYWdlcy9Eb3dubG9hZEFycm93LnN2ZzoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50U3RhdHVzQnV0dG9uLmNz
czoKKyAgICAgICAgKC5pdGVtID4gLnN0YXR1cyA+IC5zdGF0dXMtYnV0dG9uID4gc3ZnIC5maWxs
ZWQpOgorICAgICAgICAoYm9keS5tYWMtcGxhdGZvcm0ubGVnYWN5IC5pdGVtID4gLnN0YXR1cyA+
IC5zdGF0dXMtYnV0dG9uID4gc3ZnIC5maWxsZWQpOgorICAgICAgICAoOmZvY3VzIC5pdGVtLnNl
bGVjdGVkID4gLnN0YXR1cyA+IC5zdGF0dXMtYnV0dG9uID4gc3ZnIC5maWxsZWQpOgorICAgICAg
ICAoLml0ZW0gPiAuc3RhdHVzID4gLnN0YXR1cy1idXR0b24gPiBzdmcgLnN0cm9rZWQpOgorICAg
ICAgICAoYm9keS5tYWMtcGxhdGZvcm0ubGVnYWN5IC5pdGVtID4gLnN0YXR1cyA+IC5zdGF0dXMt
YnV0dG9uID4gc3ZnIC5zdHJva2VkKToKKyAgICAgICAgKDpmb2N1cyAuaXRlbS5zZWxlY3RlZCA+
IC5zdGF0dXMgPiAuc3RhdHVzLWJ1dHRvbiA+IHN2ZyAuc3Ryb2tlZCk6CisgICAgICAgIFR3ZWFr
IENTUyBzZWxlY3RvcnMgdG8gYXBwbHkgdG8gb3RoZXIgc2hhcGVzLCBub3QganVzdCBwYXRoLgor
CiAyMDE0LTA5LTIwICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogT3B0aW9uK0NsaWNrIG9uIENTUyB1cmwoLi4uKSBzaG91bGQg
anVtcCB0byByZXNvdXJjZSB2aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
TG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRl
eCA2NDhmNWUyYjQ1NzUwNWU5NWU2YWVhMjhkMDEyZGUwODJlOGI1YThjLi44ZmViMzQ4NmJjNmQ3
MTFmNWQ0NTQxMDIyMWZiOWEwODYyY2UxOTI5IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRh
IDE1Ngp6Y21WO04wQXY2QndnYllZMUYqPmh2bHwzJTc/Yn1UNDNpenUzYlhNWGJQVGZ0RGxrbHd0
Iz1sYWI5V014b3khVzcKelUzWEJrVXdOYiF2dzR1SjNYPXpuOG5jXzVuZ2c/Q3BzRXFHUmtEbDxs
VUtlVmxXUHFNbGRaYzl2c2I9VTA8JXJRCno3ejJ8bCNUMWp6ITQ4dzMjMElrfiNoZVBXNXpzQ1E4
RXBWejBCISh6MDNyWmcwM1pOODAzWk0mMEJyemEwQikwagpLQTEkKiMrQzJnMlE5RSh+CgpkZWx0
YSAxMjI1CnpjbWQ1Ki0lSGFgNmhIUXImfW9vTnppVDxfbmBgTT54fjslQkE3bSZmbDlFdiVlWnl+
YXZvQ0NHWjJQN0Axd2xfSwp6aHpCSjA7dlZ2JEQzQzQ8M2MtRnNfITlPMV53OCh0QzREei1fU25Q
V29fbypkZUQxbURlRDBAaD9QcGNuKzFJb1gKemg0QF5uUHB5P3g1d1dLJnBXKUhLU3pkWDRTJWRA
NklAPmRwcCVmKmx2fDsrZjJGKn1gOSNFUVdiPSpmTDg4aWF4CnpxWGY+fjswX208VzA3bSg8M01i
UndATjF5RFI3aktsTyMpSjd9eW5YTmVWMX5fJERZdjR7PiVSY0hgM0U/TVdKPwp6VGQtTU5lUzs9
WStEKHdvekBNZ1o/NUFpOUYqb0h1V2lhfXtMMSUjZCZLeT8jUU5IZlVNY2glT2AqYGRVeWRgK0QK
eiMxI0NKQCh1WFF1cH5KK3Y0UDh9bWB6IVF2WEx6cl40UjU2OCpHSkcwbiExSmZydiRtaTFzVndC
KTZMMDlzQDBSCnpmV3NWcWF+NWZjYnRte2dST2RhU0k8N24mNmgtSGBLMzJmUDwoIVkzX2pOU2p1
VU1YYzkyZFVUbSE4T2heYjg4bwp6TGZ2JWhySE1HdGI2bzZnUnlBSngre1QqTy1ScUwxKChmSEte
KHdfKyEpJW4jYkJuMXIjakthM29Hckk/JCZvRW0Kekx3MUxJNTJWUEotKmtFMWBrVGQ2R25ENTFp
PlQ7KndlQVZtTD9IIVhzYk8xbTUzQnF+UWFtK0xER1l6dUAlUEtvCnpPQSNHfD1Tbil4KFlLdyFN
em9ZJTBUUVlTUGwtKE9VTzNGI2ZhTEZ8PDZeNzJjfHRaM1Q2RikyU31UUylAWksrQApxKDg4Z3Ao
bjkjJU1YZ0V0LUNiWVBedStFcjReUXZ3WTw7O1IrUEBCYSNGSE4qRXghUGNVPThkNQoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwppbmRleCBl
ZDhlMmEwLi5iNzJhZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9CYXNlL01haW4uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9NYWluLmpzCkBAIC00OSwxMCArNDksNyBAQCBXZWJJbnNwZWN0b3IuVHlwZUlk
ZW50aWZpZXJDb29raWVLZXkgPSAicmVwcmVzZW50ZWQtb2JqZWN0LXR5cGUiOwogCiBXZWJJbnNw
ZWN0b3IubG9hZGVkID0gZnVuY3Rpb24oKQogewotICAgIC8vIFRlbGwgdGhlIEluc3BlY3RvckZy
b250ZW5kSG9zdCB3ZSBsb2FkZWQgZmlyc3QgdG8gZXN0YWJsaXNoIGNvbW11bmljYXRpb24gd2l0
aCBJbnNwZWN0b3JCYWNrZW5kLgotICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5sb2FkZWQoKTsK
LQotICAgIC8vIEluaXRpYWxpemUgV2ViU29ja2V0IHRvIGNvbW11bmljYXRpb24KKyAgICAvLyBJ
bml0aWFsaXplIFdlYlNvY2tldCB0byBjb21tdW5pY2F0aW9uLgogICAgIHRoaXMuX2luaXRpYWxp
emVXZWJTb2NrZXRJZk5lZWRlZCgpOwogCiAgICAgLy8gUmVnaXN0ZXIgb2JzZXJ2ZXJzIGZvciBl
dmVudHMgZnJvbSB0aGUgSW5zcGVjdG9yQmFja2VuZC4KQEAgLTMyOCwxMCArMzI1LDExIEBAIFdl
Ykluc3BlY3Rvci5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogICAgIGlmICh0aGlzLl9kZXRh
aWxzU2lkZWJhcldpZHRoU2V0dGluZy52YWx1ZSkKICAgICAgICAgdGhpcy5kZXRhaWxzU2lkZWJh
ci53aWR0aCA9IHRoaXMuX2RldGFpbHNTaWRlYmFyV2lkdGhTZXR0aW5nLnZhbHVlOwogCi0gICAg
Ly8gVXBkYXRlIHRoZSBkb2NrZWQgc3RhdGUgYmFzZWQgb24gdGhlIHF1ZXJ5IHN0cmluZyBwYXNz
ZWQgd2hlbiB0aGUgV2ViIEluc3BlY3RvciB3YXMgbG9hZGVkLgotICAgIHRoaXMudXBkYXRlRG9j
a2VkU3RhdGUocGFyc2VMb2NhdGlvblF1ZXJ5UGFyYW1ldGVycygpLmRvY2tTaWRlIHx8ICJ1bmRv
Y2tlZCIpOworICAgIC8vIFRlbGwgdGhlIEluc3BlY3RvckZyb250ZW5kSG9zdCB3ZSBsb2FkZWQs
IHdoaWNoIGNhdXNlcyB0aGUgd2luZG93IHRvIGRpc3BsYXkKKyAgICAvLyBhbmQgcGVuZGluZyBJ
bnNwZWN0b3JGcm9udGVuZEFQSSBjb21tYW5kcyB0byBiZSBzZW50LgorICAgIEluc3BlY3RvckZy
b250ZW5kSG9zdC5sb2FkZWQoKTsKIAotICAgIC8vIFRlbGwgdGhlIGZyb250ZW5kIEFQSSB3ZSBh
cmUgbG9hZGVkIHNvIGFueSBwZW5kaW5nIGZyb250ZW5kIGNvbW1hbmRzIGNhbiBiZSBkaXNwYXRj
aGVkLgorICAgIC8vIFNpZ25hbCB0aGF0IHRoZSBmcm9udGVuZCBpcyBub3cgcmVhZHkgdG8gcmVj
ZWl2ZSBtZXNzYWdlcy4KICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKCk7
CiAKICAgICAvLyBTZXQgY29sbGFwc2VkIGFmdGVyIGxvYWRpbmcgdGhlIHBlbmRpbmcgZnJvbnRl
bmQgY29tbWFuZHMgYXJlIGRpc3BhdGNoZWQgc28gb25seSB0aGUgZmluYWwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVGVzdC5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVGVzdC5qcwppbmRleCA3NDIwNzVh
Li4wMTIxNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9CYXNlL1Rlc3QuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
QmFzZS9UZXN0LmpzCkBAIC01NSwxMyArNTUsMTQgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1
bmN0aW9uKCkKIAogICAgIC8vIFBlcmZvcm0gb25lLXRpbWUgdGFza3MuCiAgICAgV2ViSW5zcGVj
dG9yLkNTU0NvbXBsZXRpb25zLnJlcXVlc3RDU1NOYW1lQ29tcGxldGlvbnMoKTsKLQotICAgIC8v
IEVzdGFibGlzaCBjb21tdW5pY2F0aW9uIHdpdGggdGhlIEluc3BlY3RvckJhY2tlbmQuCi0gICAg
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmxvYWRlZCgpOwogfQogCiBXZWJJbnNwZWN0b3IuY29udGVu
dExvYWRlZCA9IGZ1bmN0aW9uKCkKIHsKKyAgICAvLyBUZWxsIHRoZSBJbnNwZWN0b3JGcm9udGVu
ZEhvc3Qgd2UgbG9hZGVkLCB3aGljaCBjYXVzZXMgdGhlIHdpbmRvdyB0byBkaXNwbGF5CisgICAg
Ly8gYW5kIHBlbmRpbmcgSW5zcGVjdG9yRnJvbnRlbmRBUEkgY29tbWFuZHMgdG8gYmUgc2VudC4K
KyAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZGVkKCk7CisKICAgICAvLyBTaWduYWwgdGhh
dCB0aGUgZnJvbnRlbmQgaXMgbm93IHJlYWR5IHRvIHJlY2VpdmUgbWVzc2FnZXMuCiAgICAgSW5z
cGVjdG9yRnJvbnRlbmRBUEkubG9hZENvbXBsZXRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRB
UEkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNw
ZWN0b3JGcm9udGVuZEFQSS5qcwppbmRleCAxMjI3MjExLi43YjhkZWIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9u
dGVuZEFQSS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwpAQCAtMjUsMjggKzI1LDE2IEBACiAKIEluc3Bl
Y3RvckZyb250ZW5kQVBJID0gewogICAgIF9sb2FkZWQ6IGZhbHNlLAotCiAgICAgX3BlbmRpbmdD
b21tYW5kczogW10sCiAKICAgICBzYXZlZFVSTDogZnVuY3Rpb24odXJsKQogICAgIHsKLSAgICAg
ICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgLy8gTm90IHVzZWQgeWV0Lgog
ICAgIH0sCiAKICAgICBhcHBlbmRlZFRvVVJMOiBmdW5jdGlvbih1cmwpCiAgICAgewotICAgICAg
ICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgotICAgIH0sCi0KLSAgICBpc0RlYnVnZ2luZ0Vu
YWJsZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50
ZWQuCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCi0gICAgc2V0RGVidWdnaW5nRW5h
YmxlZDogZnVuY3Rpb24oZW5hYmxlZCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBOb3QgaW1w
bGVtZW50ZWQuCisgICAgICAgIC8vIE5vdCB1c2VkIHlldC4KICAgICB9LAogCiAgICAgaXNUaW1l
bGluZVByb2ZpbGluZ0VuYWJsZWQ6IGZ1bmN0aW9uKCkKQEAgLTEwOCwxMSArOTYsNiBAQCBJbnNw
ZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlU2lkZWJh
clBhbmVsLnNob3dTb3VyY2VDb2RlRm9yRnJhbWUoZnJhbWVJZGVudGlmaWVyLCB0cnVlKTsKICAg
ICB9LAogCi0gICAgc2V0RG9ja2luZ1VuYXZhaWxhYmxlOiBmdW5jdGlvbih1bmF2YWlsYWJsZSkK
LSAgICB7Ci0gICAgICAgIC8vIE5vdCB1c2VkLgotICAgIH0sCi0KICAgICBjb250ZXh0TWVudUl0
ZW1TZWxlY3RlZDogZnVuY3Rpb24oaWQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuY29u
dGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpOwpAQCAtMTQxLDYgKzEyNCwxMCBAQCBJbnNwZWN0b3JG
cm9udGVuZEFQSSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHZhciBtZXRob2ROYW1lID0gc2ln
bmF0dXJlLnNoaWZ0KCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KEluc3BlY3RvckZyb250ZW5k
QVBJW21ldGhvZE5hbWVdLCAiVW5leHBlY3RlZCBJbnNwZWN0b3JGcm9udGVuZEFQSSBtZXRob2Qg
bmFtZTogIiArIEluc3BlY3RvckZyb250ZW5kQVBJW21ldGhvZE5hbWVdKTsKKyAgICAgICAgaWYg
KCFJbnNwZWN0b3JGcm9udGVuZEFQSVttZXRob2ROYW1lXSkKKyAgICAgICAgICAgIHJldHVybjsK
KwogICAgICAgICByZXR1cm4gSW5zcGVjdG9yRnJvbnRlbmRBUElbbWV0aG9kTmFtZV0uYXBwbHko
SW5zcGVjdG9yRnJvbnRlbmRBUEksIHNpZ25hdHVyZSk7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1t
IGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9T
Lm1tCmluZGV4IGQzMGQ4YjkuLjk4ZGNhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9z
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KQEAgLTQ2LDcg
KzQ2LDYgQEAgV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAq
d2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogICAgICwgbV9oaWdobGlnaHRlcihh
ZG9wdE5TKFtbV2ViTm9kZUhpZ2hsaWdodGVyIGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFdlYlZp
ZXc6d2ViVmlld10pKQogICAgICwgbV9mcm9udGVuZFBhZ2UoMCkKLSAgICAsIG1fZnJvbnRlbmRD
bGllbnQoMCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA0ODU2ODM2Li44OTg3N2ViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgV2ViVmlldyAqbV93ZWJWaWV3
OwogICAgIFJldGFpblB0cjxXZWJOb2RlSGlnaGxpZ2h0ZXI+IG1faGlnaGxpZ2h0ZXI7CiAgICAg
V2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7Ci0gICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQqIG1fZnJvbnRlbmRDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50PiBtX2Zyb250ZW5kQ2xpZW50OwogfTsKIAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5k
ZXggNmUxNzg5ZC4uODMwOGI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMTMzLDggKzEzMyw3IEBAIEBl
bmQKIFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZp
ZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICAgICAsIG1faGlnaGxpZ2h0ZXIoYWRvcHRO
UyhbW1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3Ondl
YlZpZXddKSkKLSAgICAsIG1fZnJvbnRlbmRQYWdlKDApCi0gICAgLCBtX2Zyb250ZW5kQ2xpZW50
KDApCisgICAgLCBtX2Zyb250ZW5kUGFnZShudWxscHRyKQogewogfQogCkBAIC0xNTAsMTEgKzE0
OSwxMyBAQCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3Bl
bkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbgogICAgIFt3aW5kb3dDb250cm9sbGVyLmdl
dCgpIHNldEluc3BlY3RvckNsaWVudDp0aGlzXTsKIAogICAgIG1fZnJvbnRlbmRQYWdlID0gY29y
ZShbd2luZG93Q29udHJvbGxlci5nZXQoKSB3ZWJWaWV3XSk7Ci0gICAgYXV0byBmcm9udGVuZENs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fd2Vi
Vmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdG9yQ29udHJvbGxlciwgbV9mcm9u
dGVuZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7Ci0gICAgbV9mcm9udGVuZENsaWVu
dCA9IGZyb250ZW5kQ2xpZW50LmdldCgpOwotICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JGcm9u
dGVuZD4gd2ViSW5zcGVjdG9yRnJvbnRlbmQgPSBhZG9wdE5TKFtbV2ViSW5zcGVjdG9yRnJvbnRl
bmQgYWxsb2NdIGluaXRXaXRoRnJvbnRlbmRDbGllbnQ6ZnJvbnRlbmRDbGllbnQuZ2V0KCldKTsK
KyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudD4obV93ZWJWaWV3LCB3aW5kb3dDb250cm9sbGVyLmdldCgpLCBpbnNwZWN0b3JD
b250cm9sbGVyLCBtX2Zyb250ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKKwor
ICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZD4gd2ViSW5zcGVjdG9yRnJvbnRlbmQg
PSBhZG9wdE5TKFtbV2ViSW5zcGVjdG9yRnJvbnRlbmQgYWxsb2NdIGluaXRXaXRoRnJvbnRlbmRD
bGllbnQ6bV9mcm9udGVuZENsaWVudC5nZXQoKV0pOwogICAgIFtbbV93ZWJWaWV3IGluc3BlY3Rv
cl0gc2V0RnJvbnRlbmQ6d2ViSW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCldOwotICAgIG1fZnJvbnRl
bmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQo
V1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7CisKKyAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1fZnJvbnRlbmRDbGll
bnQuZ2V0KCkpOworCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKQEAgLTE5OSw4ICsyMDAsOCBAQCB2
b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJs
ZWQpCiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpyZWxlYXNlRnJvbnRlbmQoKQogewotICAg
IG1fZnJvbnRlbmRDbGllbnQgPSAwOwotICAgIG1fZnJvbnRlbmRQYWdlID0gMDsKKyAgICBtX2Zy
b250ZW5kQ2xpZW50ID0gbnVsbHB0cjsKKyAgICBtX2Zyb250ZW5kUGFnZSA9IG51bGxwdHI7CiB9
CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5jcHAKaW5kZXggM2YzNmRlZi4uN2YyMmJjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
CkBAIC0xNzEsOSArMTcxLDggQEAgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBX
ZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnMKICAgICAgICAgcmV0
dXJuIDA7CiAKICAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoZnJvbnRlbmRXZWJWaWV3LmdldCgp
KTsKLSAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3BlY3RlZFdlYlZpZXdI
YW5kbGUsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25k
LCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwotICAgIG1fZnJvbnRlbmRDbGllbnQg
PSBmcm9udGVuZENsaWVudC5nZXQoKTsKLSAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9udGVuZENs
aWVudCkpOworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmll
d0hhbmRsZSwgZnJvbnRlbmRId25kLCBmcm9udGVuZFdlYlZpZXcsIGZyb250ZW5kV2ViVmlld0h3
bmQsIHRoaXMsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CisgICAgbV9mcm9udGVuZFBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2Zyb250
ZW5kQ2xpZW50LmdldCgpKTsKICAgICBtX2Zyb250ZW5kSGFuZGxlID0gZnJvbnRlbmRId25kOwog
ICAgIHJldHVybiB0aGlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBiMzFkZDg5Li40N2ZiZWEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbGVhc2VGcm9u
dGVuZCgpOwogCi0gICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIGZyb250ZW5kQ2xpZW50
KCkgeyByZXR1cm4gbV9mcm9udGVuZENsaWVudDsgfQorICAgIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50KiBmcm9udGVuZENsaWVudCgpIHsgcmV0dXJuIG1fZnJvbnRlbmRDbGllbnQuZ2V0KCk7
IH0KIAogICAgIHZvaWQgdXBkYXRlSGlnaGxpZ2h0KCk7CiAKQEAgLTg1LDcgKzg1LDcgQEAgcHJp
dmF0ZToKIAogICAgIFdlYlZpZXcqIG1faW5zcGVjdGVkV2ViVmlldzsKICAgICBXZWJDb3JlOjpQ
YWdlKiBtX2Zyb250ZW5kUGFnZTsKLSAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9m
cm9udGVuZENsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ+IG1fZnJvbnRlbmRDbGllbnQ7CiAgICAgSFdORCBtX2luc3BlY3RlZFdlYlZpZXdIYW5k
bGU7CiAgICAgSFdORCBtX2Zyb250ZW5kSGFuZGxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4
IDRmMzkyM2QuLjZiZGM1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC01MzAsNyArNTMwLDYg
QEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5jcHAKLSAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGx1Z0luQ2xpZW50LmNwcApAQCAtNTUyLDYgKzU1MSw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMK
ICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIuY3BwCiAgICAgV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcAogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKICAgICBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZUdyb3VwUHJveHkuY3BwCkBAIC02NDUsNiArNjQ1LDcgQEAgc2V0KFdlYktpdDJfTUVTU0FH
RVNfSU5fRklMRVMKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLm1lc3Nh
Z2VzLmluCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVy
Lm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdl
cy5pbgorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgog
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5Lm1lc3NhZ2VzLmluCiApCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdDIvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCBlYWVmNTE2Li5jYTA2YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTEyMSw2ICsxMjEsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAg
ICBXZWJJY29uRGF0YWJhc2VQcm94eSBcCiAgICAgV2ViSW5zcGVjdG9yIFwKICAgICBXZWJJbnNw
ZWN0b3JQcm94eSBcCisgICAgV2ViSW5zcGVjdG9yVUkgXAogICAgIFdlYk1lZGlhQ2FjaGVNYW5h
Z2VyIFwKICAgICBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5IFwKICAgICBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtl
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggMDFlMzRlYS4uZjA3ZmI2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE5NCw3ICsxOTQsNyBAQCBsaXN0KEFQ
UEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9hdGsvV2ViUGFn
ZUFjY2Vzc2liaWxpdHlPYmplY3RBdGsuY3BwCiAKLSAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZWZs
L1dlYkluc3BlY3RvckVmbC5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3Bl
Y3RvclVJRWZsLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAK
IAogICAgIFdlYlByb2Nlc3MvZWZsL1NlY2NvbXBGaWx0ZXJzV2ViUHJvY2Vzc0VmbC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNjg1Njg2MS4uZmU2M2MxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1HVEsuY21ha2UKQEAgLTMwMiw3ICszMDIsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NP
VVJDRVMKIAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAK
ICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1ByaW50ZXJMaXN0R3RrLmNwcAotICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yR3RrLmNwcAorICAgIFdlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9XZWJQYWdlR3RrLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVy
YXRpb25HdGsuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAppbmRleCA2ZGY0OTE4Li45
MjJlNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCkBAIC0xNDMsNiArMTQzLDcgQEAg
cHVibGljOgogICAgICAgICBCdW5kbGVGcmFtZSwKICAgICAgICAgQnVuZGxlSGl0VGVzdFJlc3Vs
dCwKICAgICAgICAgQnVuZGxlSW5zcGVjdG9yLAorICAgICAgICBCdW5kbGVJbnNwZWN0b3JVSSwK
ICAgICAgICAgQnVuZGxlTmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgQnVuZGxlTm9kZUhhbmRs
ZSwKICAgICAgICAgQnVuZGxlUGFnZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9MZWdhY3lQcm9jZXNzL0NoaWxkUHJvY2Vzc0VudHJ5
UG9pbnQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMv
TGVnYWN5UHJvY2Vzcy9DaGlsZFByb2Nlc3NFbnRyeVBvaW50Lm1tCmluZGV4IDEzZjMwNmUuLmQ5
NWNlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0
aWVzL21hYy9MZWdhY3lQcm9jZXNzL0NoaWxkUHJvY2Vzc0VudHJ5UG9pbnQubW0KKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL0xlZ2FjeVByb2Nlc3Mv
Q2hpbGRQcm9jZXNzRW50cnlQb2ludC5tbQpAQCAtODgsOCArODgsMTEgQEAgYm9vbCBDaGlsZFBy
b2Nlc3NNYWluRGVsZWdhdGU6OmdldENsaWVudFByb2Nlc3NOYW1lKFN0cmluZyYgY2xpZW50UHJv
Y2Vzc05hbWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ2hpbGRQcm9jZXNzTWFpbkRl
bGVnYXRlOjpnZXRFeHRyYUluaXRpYWxpemF0aW9uRGF0YShIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiYpCitib29sIENoaWxkUHJvY2Vzc01haW5EZWxlZ2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlv
bkRhdGEoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhKQog
eworICAgIFN0cmluZyBpbnNwZWN0b3JQcm9jZXNzID0gbV9jb21tYW5kTGluZVsiaW5zcGVjdG9y
LXByb2Nlc3MiXTsKKyAgICBpZiAoIWluc3BlY3RvclByb2Nlc3MuaXNFbXB0eSgpKQorICAgICAg
ICBleHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoQVNDSUlMaXRlcmFsKCJpbnNwZWN0b3ItcHJv
Y2VzcyIpLCBpbnNwZWN0b3JQcm9jZXNzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1Nl
cnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50
cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQpp
bmRleCAxNjk3ZWU5Li4zNjVlYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
RW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBD
U2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQpAQCAtOTIsOCArOTIsMTQgQEAgYm9vbCBY
UENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50UHJvY2Vzc05hbWUoU3RyaW5n
JiBjbGllbnRQcm9jZXNzTmEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBYUENTZXJ2aWNl
SW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlvbkRhdGEoSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4mKQorYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0
RXh0cmFJbml0aWFsaXphdGlvbkRhdGEoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4dHJhSW5p
dGlhbGl6YXRpb25EYXRhKQogeworICAgIHhwY19vYmplY3RfdCBleHRyYURhdGFJbml0aWFsaXph
dGlvbkRhdGFPYmplY3QgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUobV9pbml0aWFsaXplck1l
c3NhZ2UsICJleHRyYS1pbml0aWFsaXphdGlvbi1kYXRhIik7CisKKyAgICBTdHJpbmcgaW5zcGVj
dG9yUHJvY2VzcyA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6
YXRpb25EYXRhT2JqZWN0LCAiaW5zcGVjdG9yLXByb2Nlc3MiKTsKKyAgICBpZiAoIWluc3BlY3Rv
clByb2Nlc3MuaXNFbXB0eSgpKQorICAgICAgICBleHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQo
QVNDSUlMaXRlcmFsKCJpbnNwZWN0b3ItcHJvY2VzcyIpLCBpbnNwZWN0b3JQcm9jZXNzKTsKKwog
ICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLSW5zcGVjdG9yLmNwcAppbmRleCAxNmU4NDViLi44Yzk5NzViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAKQEAgLTE3NCw0MiArMTc0LDMw
IEBAIHZvaWQgV0tJbnNwZWN0b3JEZXRhY2goV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQog
I2VuZGlmCiB9CiAKLWJvb2wgV0tJbnNwZWN0b3JJc0RlYnVnZ2luZ0phdmFTY3JpcHQoV0tJbnNw
ZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQorYm9vbCBXS0luc3BlY3RvcklzRGVidWdnaW5nSmF2YVNj
cmlwdChXS0luc3BlY3RvclJlZikKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHJldHVy
biB0b0ltcGwoaW5zcGVjdG9yUmVmKS0+aXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KCk7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0b3JSZWYpOworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGZv
ciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIG5pZ2h0bHkgYnVpbGRzIGFuZCBTYWZhcmku
CisgICAgLy8gUmVtb3ZlIGl0IG9uY2UgU2FmYXJpIG5vIGxvbmdlciBkZXBlbmRzIG9uIGl0Lgog
ICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQogCi12b2lkIFdLSW5zcGVjdG9yVG9nZ2xlSmF2
YVNjcmlwdERlYnVnZ2luZyhXS0luc3BlY3RvclJlZiBpbnNwZWN0b3JSZWYpCit2b2lkIFdLSW5z
cGVjdG9yVG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZyhXS0luc3BlY3RvclJlZikKIHsKLSNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotICAgIHRvSW1wbChpbnNwZWN0b3JSZWYpLT50b2dnbGVKYXZhU2Ny
aXB0RGVidWdnaW5nKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0b3JSZWYpOwot
I2VuZGlmCisgICAgLy8gRklYTUU6IFRoaXMgaXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5
IHdpdGggbmlnaHRseSBidWlsZHMgYW5kIFNhZmFyaS4KKyAgICAvLyBSZW1vdmUgaXQgb25jZSBT
YWZhcmkgbm8gbG9uZ2VyIGRlcGVuZHMgb24gaXQuCiB9CiAKLWJvb2wgV0tJbnNwZWN0b3JJc1By
b2ZpbGluZ0phdmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQorYm9vbCBXS0lu
c3BlY3RvcklzUHJvZmlsaW5nSmF2YVNjcmlwdChXS0luc3BlY3RvclJlZikKIHsKLSNpZiBFTkFC
TEUoSU5TUEVDVE9SKQotICAgIHJldHVybiB0b0ltcGwoaW5zcGVjdG9yUmVmKS0+aXNQcm9maWxp
bmdKYXZhU2NyaXB0KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0b3JSZWYpOwor
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIG5p
Z2h0bHkgYnVpbGRzIGFuZCBTYWZhcmkuCisgICAgLy8gUmVtb3ZlIGl0IG9uY2UgU2FmYXJpIG5v
IGxvbmdlciBkZXBlbmRzIG9uIGl0LgogICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQogCi12
b2lkIFdLSW5zcGVjdG9yVG9nZ2xlSmF2YVNjcmlwdFByb2ZpbGluZyhXS0luc3BlY3RvclJlZiBp
bnNwZWN0b3JSZWYpCit2b2lkIFdLSW5zcGVjdG9yVG9nZ2xlSmF2YVNjcmlwdFByb2ZpbGluZyhX
S0luc3BlY3RvclJlZikKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHRvSW1wbChpbnNw
ZWN0b3JSZWYpLT50b2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKCk7Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTShpbnNwZWN0b3JSZWYpOwotI2VuZGlmCisgICAgLy8gRklYTUU6IFRoaXMgaXMgZm9y
IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggbmlnaHRseSBidWlsZHMgYW5kIFNhZmFyaS4K
KyAgICAvLyBSZW1vdmUgaXQgb25jZSBTYWZhcmkgbm8gbG9uZ2VyIGRlcGVuZHMgb24gaXQuCiB9
CiAKIGJvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ1BhZ2UoV0tJbnNwZWN0b3JSZWYgaW5zcGVj
dG9yUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5z
cGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuaApp
bmRleCBiYTc2NDg5Li4yMDY1NzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tJbnNwZWN0b3IuaApAQCAtNTgsMTUgKzU4LDE3IEBAIFdLX0VYUE9SVCBib29sIFdLSW5z
cGVjdG9ySXNBdHRhY2hlZChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwogV0tfRVhQT1JUIHZv
aWQgV0tJbnNwZWN0b3JBdHRhY2goV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKIFdLX0VYUE9S
VCB2b2lkIFdLSW5zcGVjdG9yRGV0YWNoKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7CiAKK1dL
X0VYUE9SVCBib29sIFdLSW5zcGVjdG9ySXNQcm9maWxpbmdQYWdlKFdLSW5zcGVjdG9yUmVmIGlu
c3BlY3Rvcik7CitXS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvclRvZ2dsZVBhZ2VQcm9maWxpbmco
V0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKKworLy8gRklYTUU6IFRoZXNlIGFyZSBmb3IgYmFj
a3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBuaWdodGx5IGJ1aWxkcyBhbmQgU2FmYXJpLgorLy8g
UmVtb3ZlIHRoZW0gb25jZSBTYWZhcmkgbm8gbG9uZ2VyIGRlcGVuZHMgb24gdGhlbS4KIFdLX0VY
UE9SVCBib29sIFdLSW5zcGVjdG9ySXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KFdLSW5zcGVjdG9yUmVm
IGluc3BlY3Rvcik7CiBXS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRE
ZWJ1Z2dpbmcoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKIAogV0tfRVhQT1JUIGJvb2wgV0tJ
bnNwZWN0b3JJc1Byb2ZpbGluZ0phdmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsK
IFdLX0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9yVG9nZ2xlSmF2YVNjcmlwdFByb2ZpbGluZyhXS0lu
c3BlY3RvclJlZiBpbnNwZWN0b3IpOwogCi1XS19FWFBPUlQgYm9vbCBXS0luc3BlY3RvcklzUHJv
ZmlsaW5nUGFnZShXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwotV0tfRVhQT1JUIHZvaWQgV0tJ
bnNwZWN0b3JUb2dnbGVQYWdlUHJvZmlsaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7Ci0K
ICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5jcHAKaW5kZXggNmEyNDNjNy4uOTdlOGExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIldlYkRhdGFi
YXNlTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHku
aCIKICNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JQ
cm94eS5oIgogI2luY2x1ZGUgIldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRl
ICJXZWJLaXQySW5pdGlhbGl6ZS5oIgogI2luY2x1ZGUgIldlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJv
eHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3Bw
CmluZGV4IGJlMzc3MDQuLmRlNTg5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkluc3BlY3RvclByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIFBvcnRpb25z
IENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMwLDExICszMCwxMiBAQAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJBUElVUkxSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2Vi
Q29udGV4dC5oIgogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCkBAIC01Nyw5ICs1OCw2IEBAIGNvbnN0IHVu
c2lnbmVkIFdlYkluc3BlY3RvclByb3h5OjptaW5pbXVtV2luZG93SGVpZ2h0ID0gNDAwOwogY29u
c3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OmluaXRpYWxXaW5kb3dXaWR0aCA9IDEwMDA7
CiBjb25zdCB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5pdGlhbFdpbmRvd0hlaWdodCA9
IDY1MDsKIAotY29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6Om1pbmltdW1BdHRhY2hl
ZFdpZHRoID0gNzUwOwotY29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6Om1pbmltdW1B
dHRhY2hlZEhlaWdodCA9IDI1MDsKLQogY2xhc3MgV2ViSW5zcGVjdG9yUGFnZUdyb3VwcyB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFdlYkluc3BlY3RvclBhZ2VHcm91cHMmIHNoYXJlZCgpCkBAIC0x
MDUsMTEgKzEwMywxMiBAQCBwcml2YXRlOgogICAgICAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBw
YWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShTdHJpbmc6OmZvcm1hdCgiX19XZWJJbnNw
ZWN0b3JQYWdlR3JvdXBMZXZlbCV1X18iLCBsZXZlbCksIGZhbHNlLCBmYWxzZSk7CiAKICNpZm5k
ZWYgTkRFQlVHCi0gICAgICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2Vi
IEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMuCisgICAgICAgIC8vIEFsbG93IGRldmVsb3BlcnMg
dG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFu
Z2luZyBzZXR0aW5ncy4KICAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnNldERldmVs
b3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CiAgICAgICAgIHBhZ2VHcm91cC0+cHJlZmVyZW5jZXMo
KS5zZXRMb2dzUGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xlRW5hYmxlZCh0cnVlKTsKICNlbmRp
ZgogCisgICAgICAgIHBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zZXRBbGxvd0ZpbGVBY2Nlc3NG
cm9tRmlsZVVSTHModHJ1ZSk7CiAgICAgICAgIHBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zZXRB
cHBsaWNhdGlvbkNocm9tZU1vZGVFbmFibGVkKHRydWUpOwogCiAgICAgICAgIHJldHVybiBwYWdl
R3JvdXAucmVsZWFzZSgpOwpAQCAtMTI0LDEzICsxMjMsMTMgQEAgcHJpdmF0ZToKIAogV2ViSW5z
cGVjdG9yUHJveHk6OldlYkluc3BlY3RvclByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKICAgICA6
IG1fcGFnZShwYWdlKQorICAgICwgbV9pbnNwZWN0b3JQYWdlKG51bGxwdHIpCisgICAgLCBtX3Vu
ZGVyVGVzdChmYWxzZSkKICAgICAsIG1faXNWaXNpYmxlKGZhbHNlKQogICAgICwgbV9pc0F0dGFj
aGVkKGZhbHNlKQotICAgICwgbV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQoZmFsc2UpCi0gICAgLCBt
X2lzUHJvZmlsaW5nSmF2YVNjcmlwdChmYWxzZSkKKyAgICAsIG1fY2FuQXR0YWNoKGZhbHNlKQog
ICAgICwgbV9pc1Byb2ZpbGluZ1BhZ2UoZmFsc2UpCiAgICAgLCBtX3Nob3dNZXNzYWdlU2VudChm
YWxzZSkKLSAgICAsIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UoZmFsc2UpCiAgICAgLCBtX2lnbm9y
ZUZpcnN0QnJpbmdUb0Zyb250KGZhbHNlKQogICAgICwgbV9hdHRhY2htZW50U2lkZShBdHRhY2ht
ZW50U2lkZUJvdHRvbSkKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKQEAgLTE2
NSw3ICsxNjQsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjppbnZhbGlkYXRlKCkKIAogICAg
IGRpZENsb3NlKCk7CiAKLSAgICBtX3BhZ2UgPSAwOworICAgIG1fcGFnZSA9IG51bGxwdHI7CiB9
CiAKIC8vIFB1YmxpYyBBUElzCkBAIC0xODgsNiArMTg3LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6Y29ubmVjdCgpCiAgICAgbV9zaG93TWVzc2FnZVNlbnQgPSB0cnVlOwogICAgIG1faWdu
b3JlRmlyc3RCcmluZ1RvRnJvbnQgPSB0cnVlOwogCisgICAgZWFnZXJseUNyZWF0ZUluc3BlY3Rv
clBhZ2UoKTsKKwogICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3Rvcjo6U2hvdygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIApAQCAtMjMyLDYgKzIzMyw4IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25zb2xlKCkKICAgICBpZiAoIW1fcGFnZSkK
ICAgICAgICAgcmV0dXJuOwogCisgICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKKwog
ICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd0Nv
bnNvbGUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKQEAgLTI0MCw2ICsyNDMsOCBAQCB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpzaG93UmVzb3VyY2VzKCkKICAgICBpZiAoIW1fcGFnZSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKKwogICAg
IG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd1Jlc291
cmNlcygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIApAQCAtMjQ4LDYgKzI1Myw4IEBAIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5
KiBmcmFtZSkKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgZWFnZXJs
eUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKKwogICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFt
ZUlEKCkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIApAQCAtMjc0LDEzICsyODEsMTUgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoKEF0dGFjaG1lbnRTaWRlIHNpZGUpCiAgICAgaWYg
KG1faXNWaXNpYmxlKQogICAgICAgICBpbnNwZWN0b3JQYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMo
KS5zZXRJbnNwZWN0b3JTdGFydHNBdHRhY2hlZCh0cnVlKTsKIAorICAgIG1fcGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQodHJ1ZSksIG1fcGFn
ZS0+cGFnZUlEKCkpOworCiAgICAgc3dpdGNoIChtX2F0dGFjaG1lbnRTaWRlKSB7CiAgICAgY2Fz
ZSBBdHRhY2htZW50U2lkZUJvdHRvbToKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpBdHRhY2hlZEJvdHRvbSgpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90dG9tKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkp
OwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQXR0YWNobWVudFNpZGVSaWdodDoKLSAgICAg
ICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpBdHRhY2hl
ZFJpZ2h0KCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBt
X2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0y
OTcsNyArMzA2LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGV0YWNoKCkKICAgICBpZiAo
bV9pc1Zpc2libGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygp
LnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKGZhbHNlKTsKIAotICAgIG1fcGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGV0YWNoZWQoKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpTZXRBdHRhY2hlZChmYWxzZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEZXRhY2hlZCgp
LCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIHBsYXRmb3JtRGV0YWNoKCk7CiB9
CkBAIC0zMTQsMzQgKzMyNCw2IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNldEF0dGFjaGVk
V2luZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCiAgICAgcGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRv
d1dpZHRoKHdpZHRoKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlSmF2YVNj
cmlwdERlYnVnZ2luZygpCi17Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChtX2lzRGVidWdnaW5nSmF2YVNjcmlwdCkKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wSmF2YVNjcmlwdERlYnVnZ2luZygp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRKYXZhU2NyaXB0RGVidWdnaW5nKCks
IG1fcGFnZS0+cGFnZUlEKCkpOwotCi0gICAgLy8gRklYTUU6IGhhdmUgdGhlIFdlYlByb2Nlc3Mg
bm90aWZ5IHVzIG9uIHN0YXRlIGNoYW5nZXMuCi0gICAgbV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQg
PSAhbV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQ7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OnRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmcoKQotewotICAgIGlmICghbV9wYWdlKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAobV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQpCi0gICAgICAgIG1f
cGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RvcEphdmFTY3Jp
cHRQcm9maWxpbmcoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0gICAgZWxzZQotICAgICAgICBtX3Bh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0SmF2YVNjcmlw
dFByb2ZpbGluZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLQotICAgIC8vIEZJWE1FOiBoYXZlIHRo
ZSBXZWJQcm9jZXNzIG5vdGlmeSB1cyBvbiBzdGF0ZSBjaGFuZ2VzLgotICAgIG1faXNQcm9maWxp
bmdKYXZhU2NyaXB0ID0gIW1faXNQcm9maWxpbmdKYXZhU2NyaXB0OwotfQotCiB2b2lkIFdlYklu
c3BlY3RvclByb3h5Ojp0b2dnbGVQYWdlUHJvZmlsaW5nKCkKIHsKICAgICBpZiAoIW1fcGFnZSkK
QEAgLTM2MSw2ICszNDMsMjEgQEAgYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6aXNJbnNwZWN0b3JQ
YWdlKFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICByZXR1cm4gV2ViSW5zcGVjdG9yUGFnZUdyb3Vw
czo6c2hhcmVkKCkuaXNJbnNwZWN0b3JQYWdlR3JvdXAocGFnZS5wYWdlR3JvdXAoKSk7CiB9CiAK
K1dlYkNvbnRleHQmIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JDb250ZXh0KCkKK3sKKyAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RhdGljIExhenlOZXZlckRl
c3Ryb3llZDxSZWZQdHI8V2ViQ29udGV4dD4+IGNvbnRleHQ7CisKKyAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlRmxhZywgW117CisgICAgICAgIFdlYkNvbnRleHRDb25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpb247CisgICAgICAgIFdlYkNvbnRleHQ6OmFwcGx5UGxhdGZvcm1TcGVjaWZpY0NvbmZpZ3Vy
YXRpb25EZWZhdWx0cyhjb25maWd1cmF0aW9uKTsKKyAgICAgICAgY29udGV4dC5jb25zdHJ1Y3Qo
V2ViQ29udGV4dDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICAgICAgY29udGV4dC5nZXQo
KS0+c2V0UHJvY2Vzc01vZGVsKFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2Vz
KTsKKyAgICB9KTsKKworICAgIHJldHVybiAqY29udGV4dC5nZXQoKTsKK30KKwogc3RhdGljIGJv
b2wgaXNNYWluT3JUZXN0SW5zcGVjdG9yUGFnZShjb25zdCBXZWJJbnNwZWN0b3JQcm94eSogd2Vi
SW5zcGVjdG9yUHJveHksIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQogewogICAgIFVSTCBy
ZXF1ZXN0VVJMKFVSTCgpLCB0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpLnVy
bCgpKTsKQEAgLTQyNiwyOSArNDIzLDIwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnJlbW90
ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGlzcGF0
Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkRpc3BhdGNo
TWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChtZXNzYWdlKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZW5kTWVz
c2FnZVRvQmFja2VuZChtZXNzYWdlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAjZW5kaWYKIAot
Ly8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2VzCi12b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIGluc3BlY3RvclBhZ2VQYXJhbWV0ZXJzKQordm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6ZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogewotICAgIGlu
c3BlY3RvclBhZ2VJRCA9IDA7Ci0KLSAgICBpZiAoIW1fcGFnZSkKKyAgICBpZiAobV9pbnNwZWN0
b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2lzQXR0YWNoZWQgPSBzaG91bGRPcGVu
QXR0YWNoZWQoKTsKLSAgICBtX2F0dGFjaG1lbnRTaWRlID0gc3RhdGljX2Nhc3Q8QXR0YWNobWVu
dFNpZGU+KGluc3BlY3RvclBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLmluc3BlY3RvckF0dGFj
aG1lbnRTaWRlKCkpOwotCi0gICAgV2ViUGFnZVByb3h5KiBpbnNwZWN0b3JQYWdlID0gcGxhdGZv
cm1DcmVhdGVJbnNwZWN0b3JQYWdlKCk7Ci0gICAgQVNTRVJUKGluc3BlY3RvclBhZ2UpOwotICAg
IGlmICghaW5zcGVjdG9yUGFnZSkKKyAgICBtX2luc3BlY3RvclBhZ2UgPSBwbGF0Zm9ybUNyZWF0
ZUluc3BlY3RvclBhZ2UoKTsKKyAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKKyAgICBpZiAo
IW1faW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW5zcGVjdG9yUGFnZUlE
ID0gaW5zcGVjdG9yUGFnZS0+cGFnZUlEKCk7Ci0gICAgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMg
PSBpbnNwZWN0b3JQYWdlLT5jcmVhdGlvblBhcmFtZXRlcnMoKTsKLQogICAgIFdLUGFnZVBvbGlj
eUNsaWVudFYxIHBvbGljeUNsaWVudCA9IHsKICAgICAgICAgeyAxLCB0aGlzIH0sCiAgICAgICAg
IDAsIC8qIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVzZVdp
dGhWMCAqLwpAQCAtNDU5LDczICs0NDcsNTcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3Jl
YXRlSW5zcGVjdG9yUGFnZSh1aW50NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQYWdlQ3IKICAg
ICAgICAgMCwgLyogZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UgKi8KICAgICB9OwogCi0gICAgV0tQ
YWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSShpbnNwZWN0b3JQYWdlKSwgJnBvbGljeUNsaWVu
dC5iYXNlKTsKKyAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KHRvQVBJKG1faW5zcGVjdG9y
UGFnZSksICZwb2xpY3lDbGllbnQuYmFzZSk7CiAKLSAgICBTdHJpbmdCdWlsZGVyIHVybDsKLQot
ICAgIHVybC5hcHBlbmQoaW5zcGVjdG9yUGFnZVVSTCgpKTsKLQotICAgIHVybC5hcHBlbmRMaXRl
cmFsKCI/ZG9ja1NpZGU9Iik7Ci0KLSAgICBpZiAobV9pc0F0dGFjaGVkKSB7Ci0gICAgICAgIHN3
aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewotICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlQm90
dG9tOgotICAgICAgICAgICAgdXJsLmFwcGVuZExpdGVyYWwoImJvdHRvbSIpOwotICAgICAgICAg
ICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpBdHRhY2hl
ZEJvdHRvbSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEF0dGFjaG1lbnRTaWRlUmlnaHQ6Ci0gICAgICAgICAgICB1cmwuYXBwZW5kTGl0ZXJh
bCgicmlnaHQiKTsKLSAgICAgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3Rvcjo6QXR0YWNoZWRSaWdodCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIHVybC5hcHBlbmRM
aXRlcmFsKCJ1bmRvY2tlZCIpOwotCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFj
Y2Vzc1RvQmFzZVVSTChpbnNwZWN0b3JCYXNlVVJMKCkpOwotCi0gICAgaW5zcGVjdG9yUGFnZS0+
bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCB1cmwudG9TdHJpbmcoKSkpOwotCi0gICAgbV9jcmVhdGVk
SW5zcGVjdG9yUGFnZSA9IHRydWU7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JQYWdl
LT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChpbnNwZWN0b3JCYXNlVVJMKCkp
OwogfQogCi12b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVz
dCh1aW50NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBp
bnNwZWN0b3JQYWdlUGFyYW1ldGVycykKKy8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JQcm94eSBt
ZXNzYWdlcwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6
OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgY2FuQXR0YWNoLCBib29sIHVu
ZGVyVGVzdCkKIHsKLSAgICBpbnNwZWN0b3JQYWdlSUQgPSAwOwotCiAgICAgaWYgKCFtX3BhZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1faXNBdHRhY2hlZCA9IGZhbHNlOworICAgIGVhZ2Vy
bHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CiAKLSAgICBXZWJQYWdlUHJveHkqIGluc3BlY3RvclBh
Z2UgPSBwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKLSAgICBBU1NFUlQoaW5zcGVjdG9y
UGFnZSk7Ci0gICAgaWYgKCFpbnNwZWN0b3JQYWdlKQorICAgIEFTU0VSVChtX2luc3BlY3RvclBh
Z2UpOworICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
bnNwZWN0b3JQYWdlSUQgPSBpbnNwZWN0b3JQYWdlLT5wYWdlSUQoKTsKLSAgICBpbnNwZWN0b3JQ
YWdlUGFyYW1ldGVycyA9IGluc3BlY3RvclBhZ2UtPmNyZWF0aW9uUGFyYW1ldGVycygpOworICAg
IG1fdW5kZXJUZXN0ID0gdW5kZXJUZXN0OwogCi0gICAgV0tQYWdlUG9saWN5Q2xpZW50VjEgcG9s
aWN5Q2xpZW50ID0gewotICAgICAgICB7IDEsIHRoaXMgfSwKLSAgICAgICAgMCwgLyogZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwICovCi0gICAg
ICAgIDAsIC8qIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbiAqLwotICAgICAgICAwLCAv
KiBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwICovCi0gICAg
ICAgIDAsIC8qIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5ICovCi0gICAgICAgIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24sCi0gICAgICAgIDAsIC8qIGRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlICovCi0gICAgfTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRp
ZmllciwgbV9wYWdlLT5wYWdlSUQoKSwgbV91bmRlclRlc3QpLCBtX2luc3BlY3RvclBhZ2UtPnBh
Z2VJRCgpKTsKKworICAgIGlmICghbV91bmRlclRlc3QpIHsKKyAgICAgICAgbV9jYW5BdHRhY2gg
PSBjYW5BdHRhY2g7CisgICAgICAgIG1faXNBdHRhY2hlZCA9IHNob3VsZE9wZW5BdHRhY2hlZCgp
OworICAgICAgICBtX2F0dGFjaG1lbnRTaWRlID0gc3RhdGljX2Nhc3Q8QXR0YWNobWVudFNpZGU+
KGluc3BlY3RvclBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLmluc3BlY3RvckF0dGFjaG1lbnRT
aWRlKCkpOwogCi0gICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSShpbnNwZWN0b3JQ
YWdlKSwgJnBvbGljeUNsaWVudC5iYXNlKTsKKyAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChtX2lzQXR0YWNoZWQpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NU
b0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVSTCgpKTsKKyAgICAgICAgaWYgKG1faXNBdHRhY2hlZCkg
eworICAgICAgICAgICAgc3dpdGNoIChtX2F0dGFjaG1lbnRTaWRlKSB7CisgICAgICAgICAgICBj
YXNlIEF0dGFjaG1lbnRTaWRlQm90dG9tOgorICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZEJvdHRv
bSgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
IAotICAgIGluc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgaW5zcGVjdG9yVGVz
dFBhZ2VVUkwoKSkpOworICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZVJpZ2h0OgorICAg
ICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJOjpEZXRhY2hlZCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICB9CiAKLSAgICBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlID0gdHJ1ZTsKKyAgICBtX2luc3BlY3Rv
clBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgbV91bmRlclRlc3QgPyBpbnNwZWN0b3JUZXN0
UGFnZVVSTCgpIDogaW5zcGVjdG9yUGFnZVVSTCgpKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6Om9wZW4oKQogeworICAgIGlmIChtX3VuZGVyVGVzdCkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgbV9pc1Zpc2libGUgPSB0cnVlOwogCiAgICAgcGxhdGZvcm1PcGVuKCk7CkBAIC01MzMs
MjAgKzUwNSwyMyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuKCkKIAogdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6ZGlkQ2xvc2UoKQogewotICAgIGlmICghbV9jcmVhdGVkSW5zcGVjdG9y
UGFnZSkKKyAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
bV9pbnNwZWN0b3JQYWdlLT5jbG9zZSgpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdl
ID0gbnVsbHB0cjsKKwogICAgIG1faXNWaXNpYmxlID0gZmFsc2U7Ci0gICAgbV9pc0RlYnVnZ2lu
Z0phdmFTY3JpcHQgPSBmYWxzZTsKLSAgICBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdCA9IGZhbHNl
OwogICAgIG1faXNQcm9maWxpbmdQYWdlID0gZmFsc2U7Ci0gICAgbV9jcmVhdGVkSW5zcGVjdG9y
UGFnZSA9IGZhbHNlOwogICAgIG1fc2hvd01lc3NhZ2VTZW50ID0gZmFsc2U7CiAgICAgbV9pZ25v
cmVGaXJzdEJyaW5nVG9Gcm9udCA9IGZhbHNlOwogCiAgICAgaWYgKG1faXNBdHRhY2hlZCkKICAg
ICAgICAgcGxhdGZvcm1EZXRhY2goKTsKICAgICBtX2lzQXR0YWNoZWQgPSBmYWxzZTsKKyAgICBt
X2NhbkF0dGFjaCA9IGZhbHNlOworICAgIG1fdW5kZXJUZXN0ID0gZmFsc2U7CiAKICAgICBwbGF0
Zm9ybURpZENsb3NlKCk7CiB9CkBAIC01NjksNiArNTQ0LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6YnJpbmdUb0Zyb250KCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoQXZh
aWxhYmlsaXR5Q2hhbmdlZChib29sIGF2YWlsYWJsZSkKIHsKKyAgICBtX2NhbkF0dGFjaCA9IGF2
YWlsYWJsZTsKKwogICAgIHBsYXRmb3JtQXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChhdmFpbGFi
bGUpOwogfQogCkBAIC01ODcsMjggKzU2NCw2IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmFw
cGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiAgICAg
cGxhdGZvcm1BcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpOwogfQogCi1ib29sIFdlYkluc3BlY3Rv
clByb3h5OjpjYW5BdHRhY2goKQotewotICAgIC8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2FuQXR0YWNoV2luZG93LiBUaGVyZSBhcmUgdHdv
IGltcGxlbWVudGF0aW9ucwotICAgIC8vIHRvIG1ha2UgbGlmZSBlYXNpZXIgaW4gdGhlIG11bHRp
LXByb2Nlc3Mgd29ybGQgd2UgaGF2ZS4gV2ViSW5zcGVjdG9yUHJveHkgdXNlcyBjYW5BdHRhY2gg
dG8gZGVjaWRlIGlmCi0gICAgLy8gd2UgY2FuIGF0dGFjaCBvbiBvcGVuIChvbiB0aGUgVUkgcHJv
Y2VzcyBzaWRlKS4gQW5kIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNhbkF0dGFjaFdp
bmRvdyBpcwotICAgIC8vIHVzZWQgdG8gZGVjaWRlIGlmIHdlIGNhbiBhdHRhY2ggd2hlbiB0aGUg
YXR0YWNoIGJ1dHRvbiBpcyBwcmVzc2VkIChvbiB0aGUgV2ViUHJvY2VzcyBzaWRlKS4KLQotICAg
IC8vIElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCBhbGxvdyBhdHRhY2hpbmcgYWdhaW4gdG8g
YWxsb3cgc3dpdGNoaW5nIHNpZGVzLgotICAgIGlmIChtX2lzQXR0YWNoZWQpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgLy8gRG9uJ3QgYWxsb3cgYXR0YWNoaW5nIHRvIGFub3RoZXIgaW5z
cGVjdG9yIC0tIHR3byBpbnNwZWN0b3JzIGluIG9uZSB3aW5kb3cgaXMgdG9vIG11Y2ghCi0gICAg
aWYgKG1fbGV2ZWwgPiAxKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBEb24ndCBh
bGxvdyB0aGUgYXR0YWNoIGlmIHRoZSB3aW5kb3cgd291bGQgYmUgdG9vIHNtYWxsIHRvIGFjY29t
bW9kYXRlIHRoZSBtaW5pbXVtIGluc3BlY3RvciBoZWlnaHQuCi0gICAgdW5zaWduZWQgaW5zcGVj
dGVkUGFnZUhlaWdodCA9IHBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0KCk7Ci0gICAgdW5z
aWduZWQgaW5zcGVjdGVkUGFnZVdpZHRoID0gcGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dXaWR0aCgp
OwotICAgIHVuc2lnbmVkIG1heGltdW1BdHRhY2hlZEhlaWdodCA9IGluc3BlY3RlZFBhZ2VIZWln
aHQgKiAzIC8gNDsKLSAgICByZXR1cm4gbWluaW11bUF0dGFjaGVkSGVpZ2h0IDw9IG1heGltdW1B
dHRhY2hlZEhlaWdodCAmJiBtaW5pbXVtQXR0YWNoZWRXaWR0aCA8PSBpbnNwZWN0ZWRQYWdlV2lk
dGg7Ci19Ci0KIGJvb2wgV2ViSW5zcGVjdG9yUHJveHk6OnNob3VsZE9wZW5BdHRhY2hlZCgpCiB7
CiAgICAgcmV0dXJuIGluc3BlY3RvclBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLmluc3BlY3Rv
clN0YXJ0c0F0dGFjaGVkKCkgJiYgY2FuQXR0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDE3YTc0OTguLjA2NWQ3ZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzAsNiAr
MzAsNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
KyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAt
NTksMTAgKzYwLDEwIEBAIE9CSkNfQ0xBU1MgV0tXZWJJbnNwZWN0b3JXS1ZpZXc7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJDb250ZXh0OwogY2xhc3MgV2ViRnJhbWVQcm94eTsK
IGNsYXNzIFdlYlBhZ2VHcm91cDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKLXN0cnVjdCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOwogCiBlbnVtIEF0dGFjaG1lbnRTaWRlIHsKICAgICBBdHRhY2ht
ZW50U2lkZUJvdHRvbSwKQEAgLTgzLDcgKzg0LDcgQEAgcHVibGljOgogICAgIC8vIFB1YmxpYyBB
UElzCiAgICAgV2ViUGFnZVByb3h5KiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CiAK
LSAgICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGVkSW5zcGVjdG9y
UGFnZTsgfQorICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiAhIW1faW5zcGVj
dG9yUGFnZTsgfQogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Zpc2li
bGU7IH0KICAgICBib29sIGlzRnJvbnQoKTsKIApAQCAtMTIzLDE2ICsxMjQsMTEgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCk7CiAgICAgdm9pZCBz
ZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkgeyBwbGF0Zm9ybVNldFRvb2xiYXJIZWln
aHQoaGVpZ2h0KTsgfQogCi0gICAgYm9vbCBpc0RlYnVnZ2luZ0phdmFTY3JpcHQoKSBjb25zdCB7
IHJldHVybiBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdDsgfQotICAgIHZvaWQgdG9nZ2xlSmF2YVNj
cmlwdERlYnVnZ2luZygpOwotCi0gICAgYm9vbCBpc1Byb2ZpbGluZ0phdmFTY3JpcHQoKSBjb25z
dCB7IHJldHVybiBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdDsgfQotICAgIHZvaWQgdG9nZ2xlSmF2
YVNjcmlwdFByb2ZpbGluZygpOwotCiAgICAgYm9vbCBpc1Byb2ZpbGluZ1BhZ2UoKSBjb25zdCB7
IHJldHVybiBtX2lzUHJvZmlsaW5nUGFnZTsgfQogICAgIHZvaWQgdG9nZ2xlUGFnZVByb2ZpbGlu
ZygpOwogCiAgICAgc3RhdGljIGJvb2wgaXNJbnNwZWN0b3JQYWdlKFdlYlBhZ2VQcm94eSYpOwor
ICAgIHN0YXRpYyBXZWJDb250ZXh0JiBpbnNwZWN0b3JDb250ZXh0KCk7CiAKICAgICAvLyBQcm92
aWRlZCBieSBwbGF0Zm9ybSBXZWJJbnNwZWN0b3JQcm94eSBpbXBsZW1lbnRhdGlvbnMuCiAgICAg
U3RyaW5nIGluc3BlY3RvclBhZ2VVUkwoKSBjb25zdDsKQEAgLTE1MCw5ICsxNDYsMTAgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJv
eHkqKTsKIAorICAgIHZvaWQgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKKwogICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6
TWVzc2FnZURlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4mKSBv
dmVycmlkZTsKIAogICAgIFdlYlBhZ2VQcm94eSogcGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdl
KCk7CiAgICAgdm9pZCBwbGF0Zm9ybU9wZW4oKTsKQEAgLTE3Myw4ICsxNzAsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50KTsKIAogICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JQcm94eSBt
ZXNzYWdlcwotICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZSh1aW50NjRfdCYgaW5zcGVjdG9y
UGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7Ci0gICAgdm9pZCBjcmVhdGVJbnNw
ZWN0b3JQYWdlRm9yVGVzdCh1aW50NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJik7CisgICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNo
bWVudCwgYm9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXN0KTsKICAgICB2b2lkIGRpZENsb3Nl
KCk7CiAgICAgdm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2b2lkIGF0dGFjaEF2YWlsYWJpbGl0
eUNoYW5nZWQoYm9vbCk7CkBAIC0xODcsNyArMTgzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
bmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogI2VuZGlm
CiAKLSAgICBib29sIGNhbkF0dGFjaCgpOworICAgIGJvb2wgY2FuQXR0YWNoKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYW5BdHRhY2g7IH0KICAgICBib29sIHNob3VsZE9wZW5BdHRhY2hlZCgpOwogCiAg
ICAgdm9pZCBvcGVuKCk7CkBAIC0yMDQsMTkgKzIwMCwxNSBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBpbml0aWFsV2luZG93V2lkdGg7CiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGluaXRpYWxXaW5kb3dIZWlnaHQ7CiAKLSAgICAvLyBLZWVwIHRoaXMgaW4gc3luYyB3
aXRoIHRoZSB2YWx1ZSBpbiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLgotICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtQXR0YWNoZWRXaWR0aDsKLSAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgbWluaW11bUF0dGFjaGVkSGVpZ2h0OwotCiAgICAgV2ViUGFnZVByb3h5KiBtX3Bh
Z2U7CisgICAgV2ViUGFnZVByb3h5KiBtX2luc3BlY3RvclBhZ2U7CiAKKyAgICBib29sIG1fdW5k
ZXJUZXN0OwogICAgIGJvb2wgbV9pc1Zpc2libGU7CiAgICAgYm9vbCBtX2lzQXR0YWNoZWQ7Ci0g
ICAgYm9vbCBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdDsKLSAgICBib29sIG1faXNQcm9maWxpbmdK
YXZhU2NyaXB0OworICAgIGJvb2wgbV9jYW5BdHRhY2g7CiAgICAgYm9vbCBtX2lzUHJvZmlsaW5n
UGFnZTsKICAgICBib29sIG1fc2hvd01lc3NhZ2VTZW50OwotICAgIGJvb2wgbV9jcmVhdGVkSW5z
cGVjdG9yUGFnZTsKICAgICBib29sIG1faWdub3JlRmlyc3RCcmluZ1RvRnJvbnQ7CiAKICAgICAv
LyBUaGUgZGVidWdnZXIgc3RvcHMgYWxsIHRoZSBwYWdlcyBpbiB0aGUgc2FtZSBQYWdlR3JvdXAu
IEhhdmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU2Yzk0NGQuLmViN2ZhOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4K
QEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEwICsy
MywxMSBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3Rv
clByb3h5IHsKLSAgICBDcmVhdGVJbnNwZWN0b3JQYWdlKCkgLT4gKHVpbnQ2NF90IGluc3BlY3Rv
clBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIGluc3BlY3RvclBhZ2VQ
YXJhbWV0ZXJzKQotICAgIENyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KCkgLT4gKHVpbnQ2NF90
IGluc3BlY3RvclBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIGluc3Bl
Y3RvclBhZ2VQYXJhbWV0ZXJzKQorICAgIENyZWF0ZUluc3BlY3RvclBhZ2UoSVBDOjpBdHRhY2ht
ZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlc3Qp
CisKICAgICBEaWRDbG9zZSgpCiAgICAgQnJpbmdUb0Zyb250KCkKKwogICAgIEluc3BlY3RlZFVS
TENoYW5nZWQoU3RyaW5nIHVybFN0cmluZykKIAogICAgIFNhdmUoU3RyaW5nIGZpbGVuYW1lLCBT
dHJpbmcgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKQpAQCAt
MzUsNiArMzYsNyBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JQcm94eSB7CiAgICAgQXR0YWNo
Qm90dG9tKCkKICAgICBBdHRhY2hSaWdodCgpCiAgICAgRGV0YWNoKCkKKwogICAgIEF0dGFjaEF2
YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCBhdmFpbGFibGUpCiAKICAgICBTZXRBdHRhY2hlZFdpbmRv
d0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDkwNDlmOWIuLjk3MzJjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j
bHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
Ykluc3BlY3RvclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViTmF2aWdhdGlvbkRhdGFTdG9yZS5oIgog
I2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBh
Z2VHcm91cC5oIgpAQCAtMTE1LDYgKzExNiw4IEBAIFdlYlByb2Nlc3NQcm94eTo6fldlYlByb2Nl
c3NQcm94eSgpCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNz
TGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCiB7CiAgICAgbGF1bmNoT3B0
aW9ucy5wcm9jZXNzVHlwZSA9IFByb2Nlc3NMYXVuY2hlcjo6V2ViUHJvY2VzczsKKyAgICBpZiAo
Jm1fY29udGV4dC5nZXQoKSA9PSAmV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckNvbnRleHQo
KSkKKyAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoQVND
SUlMaXRlcmFsKCJpbnNwZWN0b3ItcHJvY2VzcyIpLCBBU0NJSUxpdGVyYWwoIjEiKSk7CiAgICAg
cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKGxhdW5jaE9wdGlvbnMpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCmlu
ZGV4IGVlYzM5Y2MuLjA5MTIxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgV2Vi
UGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdl
KCkKICAgICBpZiAoIW1faW5zcGVjdG9yV2luZG93KQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IFdLQ29udGV4dFJlZiB3a0NvbnRleHQgPSB0b0FQSSgmcGFnZSgpLT5wcm9jZXNzKCkuY29udGV4
dCgpKTsKKyAgICBXS0NvbnRleHRSZWYgd2tDb250ZXh0ID0gdG9BUEkoJmluc3BlY3RvckNvbnRl
eHQoKSk7CiAgICAgV0tQYWdlR3JvdXBSZWYgd2tQYWdlR3JvdXAgPSB0b0FQSShpbnNwZWN0b3JQ
YWdlR3JvdXAoKSk7CiAKICAgICBtX2luc3BlY3RvclZpZXcgPSBFV0tWaWV3Q3JlYXRlKHdrQ29u
dGV4dCwgd2tQYWdlR3JvdXAsIGVjb3JlX2V2YXNfZ2V0KG1faW5zcGVjdG9yV2luZG93KSwgLyog
c21hcnQgKi8gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dl
Ykluc3BlY3RvclByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2Vi
SW5zcGVjdG9yUHJveHlHdGsuY3BwCmluZGV4IDUwZTQ1YzQuLmIyMjE5MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3Bw
CkBAIC02Miw3ICs2Miw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiB7CiAgICAgQVNTRVJUKG1fcGFnZSk7CiAgICAgQVNT
RVJUKCFtX2luc3BlY3RvclZpZXcpOwotICAgIG1faW5zcGVjdG9yVmlldyA9IEdUS19XSURHRVQo
d2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoJnBhZ2UoKS0+cHJvY2VzcygpLmNvbnRleHQoKSwgbnVs
bHB0ciwgaW5zcGVjdG9yUGFnZUdyb3VwKCksIG51bGxwdHIsIG1fcGFnZSkpOworICAgIG1faW5z
cGVjdG9yVmlldyA9IEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoJmluc3BlY3Rv
ckNvbnRleHQoKSwgbnVsbHB0ciwgaW5zcGVjdG9yUGFnZUdyb3VwKCksIG51bGxwdHIsIG51bGxw
dHIpKTsKICAgICBnX29iamVjdF9hZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKG1faW5zcGVjdG9y
VmlldyksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbV9pbnNwZWN0b3JWaWV3KSk7CiAgICAg
cmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX2lu
c3BlY3RvclZpZXcpKTsKIH0KQEAgLTE4Miw4ICsxODIsMTEgQEAgdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1BdHRhY2goKQogICAgICAgICBtX2luc3BlY3RvcldpbmRvdyA9IDA7CiAg
ICAgfQogCi0gICAgLy8gU2V0IGEgZGVmYXVsdCBhdHRhY2hlZCBzaXplIGJhc2VkIG9uIEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuCisgICAgLy8gU2V0IGEgZGVmYXVsdCBzaXplcyBiYXNl
ZCBvbiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLgogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBkZWZhdWx0QXR0YWNoZWRTaXplID0gMzAwOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBtaW5pbXVtQXR0YWNoZWRXaWR0aCA9IDc1MDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
bWluaW11bUF0dGFjaGVkSGVpZ2h0ID0gMjUwOworCiAgICAgaWYgKG1fYXR0YWNobWVudFNpZGUg
PT0gQXR0YWNobWVudFNpZGVCb3R0b20pIHsKICAgICAgICAgdW5zaWduZWQgbWF4aW11bUF0dGFj
aGVkSGVpZ2h0ID0gcGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dIZWlnaHQoKSAqIDMgLyA0OwogICAg
ICAgICBwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHN0ZDo6bWF4KG1pbmltdW1BdHRh
Y2hlZEhlaWdodCwgc3RkOjptaW4oZGVmYXVsdEF0dGFjaGVkU2l6ZSwgbWF4aW11bUF0dGFjaGVk
SGVpZ2h0KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJ
bnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5z
cGVjdG9yUHJveHlNYWMubW0KaW5kZXggYzZjNjY4Yy4uOWNlY2Y0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw2
ICszOCw3IEBACiAjaW1wb3J0ICJXS1VSTENGLmgiCiAjaW1wb3J0ICJXS1ZpZXdQcml2YXRlLmgi
CiAjaW1wb3J0ICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgorI2ltcG9ydCAiV2ViSW5zcGVjdG9y
VUlNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUGFnZUdyb3VwLmgiCiAjaW1wb3J0ICJXZWJQYWdl
UHJveHkuaCIKICNpbXBvcnQgIldlYlByZWZlcmVuY2VzLmgiCkBAIC0xMTQsNyArMTE1LDcgQEAg
LSAoSUJBY3Rpb24pYXR0YWNoQm90dG9tOihpZClzZW5kZXIKIAogLSAodm9pZCljbG9zZQogewot
ICAgIF9pbnNwZWN0b3JQcm94eSA9IDA7CisgICAgX2luc3BlY3RvclByb3h5ID0gbnVsbHB0cjsK
IH0KIAogLSAodm9pZCl3aW5kb3dEaWRNb3ZlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlv
bgpAQCAtNDE4LDcgKzQxOSw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBs
YXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgICAgICAgICBpbml0aWFsUmVjdCA9IFtO
U1dpbmRvdyBjb250ZW50UmVjdEZvckZyYW1lUmVjdDp3aW5kb3dGcmFtZSBzdHlsZU1hc2s6d2lu
ZG93U3R5bGVNYXNrXTsKICAgICB9CiAKLSAgICBtX2luc3BlY3RvclZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJJbnNwZWN0b3JXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6aW5pdGlhbFJlY3QgY29u
dGV4dFJlZjp0b0FQSSgmcGFnZSgpLT5wcm9jZXNzKCkuY29udGV4dCgpKSBwYWdlR3JvdXBSZWY6
dG9BUEkoaW5zcGVjdG9yUGFnZUdyb3VwKCkpIHJlbGF0ZWRUb1BhZ2U6dG9BUEkobV9wYWdlKV0p
OworICAgIG1faW5zcGVjdG9yVmlldyA9IGFkb3B0TlMoW1tXS1dlYkluc3BlY3RvcldLVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTppbml0aWFsUmVjdCBjb250ZXh0UmVmOnRvQVBJKCZpbnNwZWN0
b3JDb250ZXh0KCkpIHBhZ2VHcm91cFJlZjp0b0FQSShpbnNwZWN0b3JQYWdlR3JvdXAoKSkgcmVs
YXRlZFRvUGFnZTpudWxscHRyXSk7CiAgICAgQVNTRVJUKG1faW5zcGVjdG9yVmlldyk7CiAKICNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDw9IDEwOTAKQEAgLTQ5OSwxMyArNTAw
LDEzIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtRGlkQ2xvc2UoKQogICAgIGlm
IChtX2luc3BlY3RvcldpbmRvdykgewogICAgICAgICBbbV9pbnNwZWN0b3JXaW5kb3cgc2V0RGVs
ZWdhdGU6bmlsXTsKICAgICAgICAgW21faW5zcGVjdG9yV2luZG93IG9yZGVyT3V0Om5pbF07Ci0g
ICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gMDsKKyAgICAgICAgbV9pbnNwZWN0b3JXaW5kb3cg
PSBuaWw7CiAgICAgfQogCi0gICAgbV9pbnNwZWN0b3JWaWV3ID0gMDsKKyAgICBtX2luc3BlY3Rv
clZpZXcgPSBuaWw7CiAKICAgICBbbV9pbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyIGNsb3NlXTsK
LSAgICBtX2luc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIgPSAwOworICAgIG1faW5zcGVjdG9yUHJv
eHlPYmpDQWRhcHRlciA9IG5pbDsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1IaWRlKCkKQEAgLTUxOCw3ICs1MTksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybUhpZGUoKQogICAgIGlmIChtX2luc3BlY3RvcldpbmRvdykgewogICAgICAgICBbbV9pbnNw
ZWN0b3JXaW5kb3cgc2V0RGVsZWdhdGU6bmlsXTsKICAgICAgICAgW21faW5zcGVjdG9yV2luZG93
IG9yZGVyT3V0Om5pbF07Ci0gICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gMDsKKyAgICAgICAg
bV9pbnNwZWN0b3JXaW5kb3cgPSBuaWw7CiAgICAgfQogfQogCkBAIC01ODksNyArNTkwLDcgQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkVVJMLCBjb25zdCBTdHJpbmcmIGMKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBbY29u
dGVudENvcHkgd3JpdGVUb1VSTDphY3R1YWxVUkwgYXRvbWljYWxseTpZRVMgZW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVMTF07CiAKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpEaWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1
dGVTdHJpbmddKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRTYXZlKFthY3R1YWxV
UkwgYWJzb2x1dGVTdHJpbmddKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAgICAgfTsK
IAogICAgIGlmICghZm9yY2VTYXZlRGlhbG9nKSB7CkBAIC02MjMsNyArNjI0LDcgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRV
UkwsIGNvbnN0IFN0cmluZyYKICAgICBbaGFuZGxlIHdyaXRlRGF0YTpbY29udGVudCBkYXRhVXNp
bmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgIFtoYW5kbGUgY2xvc2VGaWxl
XTsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6
RGlkQXBwZW5kKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVjdG9y
UGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp3aW5kb3dGcmFt
ZURpZENoYW5nZSgpCkBAIC03MDgsNyArNzA5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
cGxhdGZvcm1BdHRhY2goKQogICAgIGlmIChtX2luc3BlY3RvcldpbmRvdykgewogICAgICAgICBb
bV9pbnNwZWN0b3JXaW5kb3cgc2V0RGVsZWdhdGU6bmlsXTsKICAgICAgICAgW21faW5zcGVjdG9y
V2luZG93IG9yZGVyT3V0Om5pbF07Ci0gICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gMDsKKyAg
ICAgICAgbV9pbnNwZWN0b3JXaW5kb3cgPSBuaWw7CiAgICAgfQogCiAgICAgW21faW5zcGVjdG9y
VmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2N2MzNmYwLi5kMGE5MmY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00
OTUsMTAgKzQ5NSwxMCBAQAogCQkxQUZFNDM2NTE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0
ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRkU0
MzYzMThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLm1tICovOyB9OwogCQkxQUZFNDM2NjE4
QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRTQzNjQxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdh
dGUuaCAqLzsgfTsKIAkJMUFGRjQ5MDAxODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1
bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUZGNDhGRTE4MzNERTc4MDA5QUIxNUEgLyogV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcCAq
LzsgfTsKKwkJMUM4OTFENjUxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODkxRDYyMTlC
MTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgKi87IH07CisJCTFDODkxRDY2MTlC
MTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4OTFENjMxOUIxMjRGRjAwQkE3OUREIC8qIFdlYklu
c3BlY3RvclVJLmggKi87IH07CiAJCTFDOEFFNzYxMTk5MkY2M0EwMEFCRjZFQyAvKiBEb2NrQm90
dG9tTGVnYWN5LnBkZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUM4QUU3NUYxOTkyRjYyRjAwQUJGNkVDIC8qIERvY2tCb3R0b21MZWdhY3kucGRmICov
OyB9OwogCQkxQzhBRTc2MjE5OTJGNjNDMDBBQkY2RUMgLyogRG9ja1JpZ2h0TGVnYWN5LnBkZiBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4QUU3NjAx
OTkyRjYyRjAwQUJGNkVDIC8qIERvY2tSaWdodExlZ2FjeS5wZGYgKi87IH07Ci0JCTFDOEUyNUE4
MTI3MEUzQkIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjU2QjEyNzBERTM4
MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwICovOyB9OwotCQkxQzhF
MjVBOTEyNzBFM0JDMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyNTZBMTI3MERF
MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oICovOyB9OwogCQkxQzhF
MjgyMDEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjgxRTEyNzVEMTU0MDBCQzdCRDAgLyog
V2ViSW5zcGVjdG9yLmggKi87IH07CiAJCTFDOEUyODIxMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJ
bnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUM4RTI4MUYxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAgKi87IH07CiAJ
CTFDOEUyODM0MTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI4MzIxMjc1RDczODAw
QkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggKi87IH07CkBAIC01MTAsOCArNTEwLDEwIEBA
CiAJCTFDQThCOTM2MTI3Qzc3NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQThCOTM1MTI3
Qzc3NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSAqLzsgfTsKIAkJMUNBOEI5
NDUxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQThCOTQz
MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki87IH07CiAJCTFDQThCOTQ2MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
Q0E4Qjk0NDEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oICov
OyB9OwotCQkxQ0E4Qjk1NDEyN0M4OTE1MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yTWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTJEQUQxMjc4
QzVCMjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1hYy5tbSAqLzsgfTsKKwkJMUNBOEI5NTQxMjdD
ODkxNTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclVJTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdl
Ykluc3BlY3RvclVJTWFjLm1tICovOyB9OwogCQkxQ0I3NUM5NDE3MDFFODgwMDA5RjgwOUYgLyog
RG9ja1JpZ2h0LnBkZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUNCNzVDOTMxNzAxRTg4MDAwOUY4MDlGIC8qIERvY2tSaWdodC5wZGYgKi87IH07CisJ
CTFDQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0JC
RTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovOyB9OworCQkxQ0JCRTRBMTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNC
QkU0OUYxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCAqLzsgfTsK
IAkJMUNCQzk0NUUxNjUxNUVEMjAwRDY4QUFFIC8qIERvY2tCb3R0b20ucGRmIGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0JDOTQ1RDE2NTE1RUQyMDBE
NjhBQUUgLyogRG9ja0JvdHRvbS5wZGYgKi87IH07CiAJCTFGMzM1QkMwMTg1Qjg0RjAwMDFBMjAx
QSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGMzM1QkJGMTg1Qjg0RDgwMDFBMjAxQSAvKiBX
S1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxRjYwNEJBODE4ODlGQTc0MDBFRTAzOTUgLyogV0tS
ZW5kZXJpbmdQcm9ncmVzc0V2ZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUY2MDRCQTYxODg5RkE3NDAwRUUwMzk1IC8qIFdLUmVuZGVyaW5nUHJv
Z3Jlc3NFdmVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMjQ3NSwxMCArMjQ3NywxMSBAQAogCQkxQUZGNDhGRTE4MzNERTc4MDA5QUIxNUEg
LyogV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFCQjQxN0M5MTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dENoZWNrZXJD
b21wbGV0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM3N0MxOTUxMjg4
QTg3MjAwNkE3NDJGIC8qIFdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzg5MUQ2MjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9y
VUkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9y
VUkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzg5MUQ2MzE5QjEyNEZGMDBC
QTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViSW5zcGVjdG9yVUkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM4OTFE
NjQxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQzhBRTc1RjE5OTJGNjJGMDBBQkY2RUMgLyogRG9ja0JvdHRvbUxl
Z2FjeS5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBpbWFnZS5wZGY7IG5hbWUgPSBEb2NrQm90dG9tTGVnYWN5LnBkZjsgcGF0aCA9IFJlc291cmNl
cy9Eb2NrQm90dG9tTGVnYWN5LnBkZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4
QUU3NjAxOTkyRjYyRjAwQUJGNkVDIC8qIERvY2tSaWdodExlZ2FjeS5wZGYgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7IG5hbWUgPSBE
b2NrUmlnaHRMZWdhY3kucGRmOyBwYXRoID0gUmVzb3VyY2VzL0RvY2tSaWdodExlZ2FjeS5wZGY7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOEUyNTZBMTI3MERFMzgwMEJDN0JEMCAv
KiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQzhFMjU2QjEyNzBERTM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QzhFMjgxRTEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQzhFMjgxRjEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3Rvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEUyODMyMTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJ
bnNwZWN0b3JQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNw
ZWN0b3JQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ4OCwxMSArMjQ5
MSwxMyBAQAogCQkxQzhFMkExQzEyNzc4MzNGMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkluc3BlY3Rvci5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RTJBMzExMjc3ODUyNDAwQkM3QkQwIC8q
IFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQzhFMkEzMjEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVj
dG9yTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVj
dG9yTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4RTJEQUQxMjc4
QzVCMjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3Rvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclVJTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9y
VUlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQThCOTM1MTI3Qzc3NEUw
MDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQ0E4Qjk0MzEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9y
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQ0E4Qjk0NDEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9y
UHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNw
ZWN0b3JQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQjc1
QzkzMTcwMUU4ODAwMDlGODA5RiAvKiBEb2NrUmlnaHQucGRmICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBuYW1lID0gRG9ja1JpZ2h0
LnBkZjsgcGF0aCA9IFJlc291cmNlcy9Eb2NrUmlnaHQucGRmOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQ0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
SW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3JVSU1lc3NhZ2Vz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQkM5NDVEMTY1MTVFRDIwMEQ2OEFB
RSAvKiBEb2NrQm90dG9tLnBkZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGltYWdlLnBkZjsgbmFtZSA9IERvY2tCb3R0b20ucGRmOyBwYXRoID0gUmVz
b3VyY2VzL0RvY2tCb3R0b20ucGRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0M0
MTdDOTEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDaGVja2VyQ29tcGxldGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxRjAxODE2OTE4NThEQzE1MDBGOTI4ODQgLyogV0tXZWJQ
cm9jZXNzUGx1Z0luRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tX
ZWJQcm9jZXNzUGx1Z0luRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2
NjIsOCArNTY2Nyw2IEBACiAJCQkJQkMxQkUxREUxMkQ1NEE0MTAwMDRBMjI4IC8qIFdlYkdlb2xv
Y2F0aW9uQ2xpZW50LmggKi8sCiAJCQkJQkMxMTFBNTkxMTJGNEZCQjAwMzM3QkFCIC8qIFdlYklu
c3BlY3RvckNsaWVudC5jcHAgKi8sCiAJCQkJQkMwMzJENkQxMEY0Mzc4RDAwNThDMTVBIC8qIFdl
Ykluc3BlY3RvckNsaWVudC5oICovLAotCQkJCTFDOEUyNTZCMTI3MERFMzgwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAgKi8sCi0JCQkJMUM4RTI1NkExMjcwREUzODAw
QkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggKi8sCiAJCQkJMzEwOTk5NzEx
NDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgKi8sCiAJCQkJMzEw
OTk5NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICovLAogCQkJ
CTUxMjEyN0MxMTkwODIzOUEwMERBRjM1QyAvKiBXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcCAq
LywKQEAgLTU3MjMsNiArNTcyNiw5IEBACiAJCQkJMUM4RTI4MUYxMjc1RDE1NDAwQkM3QkQwIC8q
IFdlYkluc3BlY3Rvci5jcHAgKi8sCiAJCQkJMUM4RTI4MUUxMjc1RDE1NDAwQkM3QkQwIC8qIFdl
Ykluc3BlY3Rvci5oICovLAogCQkJCTFDOEUyQTFDMTI3NzgzM0YwMEJDN0JEMCAvKiBXZWJJbnNw
ZWN0b3IubWVzc2FnZXMuaW4gKi8sCisJCQkJMUM4OTFENjIxOUIxMjRGRjAwQkE3OUREIC8qIFdl
Ykluc3BlY3RvclVJLmNwcCAqLywKKwkJCQkxQzg5MUQ2MzE5QjEyNEZGMDBCQTc5REQgLyogV2Vi
SW5zcGVjdG9yVUkuaCAqLywKKwkJCQkxQzg5MUQ2NDE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5z
cGVjdG9yVUkubWVzc2FnZXMuaW4gKi8sCiAJCQkJQkM4NTdGODQxMkI4MkQwQjAwRURFQjJFIC8q
IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCAqLywKIAkJCQlCQzg1N0Y4MzEyQjgyRDBC
MDBFREVCMkUgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLywKIAkJCQlCQzk2M0Q2
QTExM0REMTkyMDA1NzRCRTIgLyogV2ViUGFnZS5jcHAgKi8sCkBAIC02NDcxLDcgKzY0NzcsNyBA
QAogCQkJCTUxOTJENTc1MTk2MUZEMDMwMENEMTlBQSAvKiBTZXJ2aWNlc092ZXJsYXlDb250cm9s
bGVyLm1tICovLAogCQkJCTFBQUYyNjM3MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5oICovLAogCQkJCTFBQUYyNjM2MTQ2ODdDMzkwMDRBMUU4QSAvKiBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSAqLywKLQkJCQkxQzhFMkRBRDEyNzhDNUIy
MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWFjLm1tICovLAorCQkJCTFDOEUyREFEMTI3OEM1QjIw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSAqLywKIAkJCQlCQzk2M0Q2RDExM0REMUE1
MDA1NzRCRTIgLyogV2ViUGFnZU1hYy5tbSAqLywKIAkJCQkyOUNENTVBODEyOEUyOTRGMDAxMzND
ODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCAqLywKIAkJCQkyOUNENTVB
OTEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0g
Ki8sCkBAIC02ODI3LDYgKzY4MzMsOCBAQAogCQkJCTFDOEUyQTMyMTI3Nzg1MjQwMEJDN0JEMCAv
KiBXZWJJbnNwZWN0b3JNZXNzYWdlcy5oICovLAogCQkJCTFDQThCOTQzMTI3Qzg4MkEwMDU3NkMy
QiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUNBOEI5
NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCAqLywKKwkJ
CQkxQ0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAorCQkJCTFDQkJFNDlGMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VzLmggKi8sCiAJCQkJMzNEM0EzQzQxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlh
Q2FjaGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkzM0QzQTNDNTEzMzk2MTc5
MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJNZXNzYWdlcy5oICovLAogCQkJCTMzRDNB
M0M2MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKQEAgLTc0MzgsNiArNzQ0Niw3IEBACiAJCQkJMkRBQ0U2NEUxOEFEQkZG
MDAwRTRDQTc2IC8qIF9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE1NzhCODMxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY2QTI1RkREMTJBREM2Q0MwMERDNDBDQyAvKiBXZWJEYXRhYmFzZU1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTFDODkxRDY2MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JV
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYyQTc2QjcxMkIxQjI1RjAwMDVGMUI2IC8qIFdlYkRh
dGFiYXNlTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNjJBNzY1RDEyQjFB
QkMzMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJENkFCNTQxMTkyQjFDNEEwMDNBOUZEMSAvKiBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3Iu
aCBpbiBIZWFkZXJzICovLApAQCAtNzQ5NCw3ICs3NTAzLDYgQEAKIAkJCQkxQzhFMjgyMDEyNzVE
MTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNDQzE2
NzE4OTA2QUNGMDAxRTZFRDggLyogV0tXZWJWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAz
MkQ4MjEwRjQzNzhEMDA1OEMxNUEgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKLQkJCQkxQzhFMjVBOTEyNzBFM0JDMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyQTM2MTI3Nzg1MjQwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4RTI4MzQxMjc1RDcz
ODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0E4
Qjk0NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCkBAIC03NzYyLDYgKzc3NzAsNyBAQAogCQkJCUY2MzQ0NDVEMTJBODg1RTkwMDA2
MTJEOCAvKiBXS1NlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFGMDhCODE5
MjY5RTZEMDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNDA3NjA0MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUNCQkU0QTExOUI2NkM1MzAwNkI3RDgx
IC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0I0RTRD
MThCQkUwNDQwMDBGQ0ZDOSAvKiBXS0NvbnRlbnRWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkz
N0E2NEU1NzE4RjM4RjQ2MDBFQjMwRjEgLyogX1dLRm9ybUlucHV0U2Vzc2lvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUY2MDRCQUExODg5RkJCODAwRUUwMzk1IC8qIFdLUmVuZGVyaW5nUHJvZ3Jl
c3NFdmVudHNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC04ODY1LDYgKzg4NzQsNyBAQAog
CQkJCTAwQjk2NjE5MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFFNUI3RkIxMUU3QUVEMjAwQkE2NzY3IC8qIE5ldHNjYXBlUGx1Z2luTWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0MzNjFENzIxOTI3RkEzNjAwMzZBNTlEIC8qIFdlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDODkxRDY1MTlCMTI0RkYw
MEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRBOUM1
NTEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUE0QTlDOUExMkI4MjFDRDAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxl
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBNTg4OTMxMUVFNzA0MDAwNjFCODgyIC8qIE5l
dHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODkwMyw2ICs4OTEzLDcg
QEAKIAkJCQkxQTJEODQzOTEyN0Y2NUQ1MDAxRUI5NjIgLyogTlBPYmplY3RNZXNzYWdlUmVjZWl2
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBRjA4QUQxOTI2OTM2
NzAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQTJEODJBNjEyN0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RQcm94eS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkxQ0JCRTRBMDE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDgyQTgxMjdGNEVBQjAw
MUVCOTYyIC8qIE5QUmVtb3RlT2JqZWN0TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjE2
MUIxMTFGMzc2NjQwMDhBRDBGNSAvKiBOUFJ1bnRpbWVPYmplY3RNYXAuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUEyMTYyQjAxMUYzODk3MTAwOEFEMEY1IC8qIE5QUnVudGltZVV0aWxpdGllcy5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTkxNjIsOCArOTE3Myw3IEBACiAJCQkJQkNDRjZBQkMxMkM5
MUVGOTAwOEY5QzM1IC8qIFdlYkltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDOEUyODIx
MTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkMxMTFBNjAxMTJGNEZCQjAwMzM3QkFCIC8qIFdlYkluc3BlY3RvckNsaWVudC5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQkxQzhFMjVBODEyNzBFM0JCMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUNBOEI5NTQxMjdDODkxNTAwNTc2
QzJCIC8qIFdlYkluc3BlY3Rvck1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFDQThCOTU0MTI3
Qzg5MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTFDOEUyQTM1MTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4RTI4MzUxMjc1RDczODAwQkM3QkQwIC8qIFdlYklu
c3BlY3RvclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQThCOTM2MTI3Qzc3NEUwMDU3
NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDUwMWQ0MWMuLjg1OTM1OGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTg0LDIwICs4NCwyMSBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVu
dDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKIAogV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JD
b250cm9sbGVyKiBjb250cm9sbGVyKQogewotICAgIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UgPSBj
b250cm9sbGVyLT5pc1VuZGVyVGVzdCgpID8gbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y3JlYXRlSW5z
cGVjdG9yUGFnZUZvclRlc3QoKSA6IG1fcGFnZS0+aW5zcGVjdG9yKCktPmNyZWF0ZUluc3BlY3Rv
clBhZ2UoKTsKLSAgICBBU1NFUlRfVU5VU0VEKGluc3BlY3RvclBhZ2UsIGluc3BlY3RvclBhZ2Up
OwotICAgIHJldHVybiB0aGlzOworICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmNyZWF0ZUluc3Bl
Y3RvclBhZ2UoY29udHJvbGxlci0+aXNVbmRlclRlc3QoKSk7CisKKyAgICByZXR1cm4gbV9wYWdl
LT5pbnNwZWN0b3IoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVj
dG9yRnJvbnRlbmQoKQogewogICAgIGlmIChtX3BhZ2UtPmluc3BlY3RvcigpKQotICAgICAgICBt
X3BhZ2UtPmluc3BlY3RvcigpLT5kaWRDbG9zZSgpOworICAgICAgICBtX3BhZ2UtPmluc3BlY3Rv
cigpLT5jbG9zZUZyb250ZW5kKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojpicmlu
Z0Zyb250ZW5kVG9Gcm9udCgpCiB7Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YnJpbmdUb0Zy
b250KCk7CisgICAgaWYgKG1fcGFnZS0+aW5zcGVjdG9yKCkpCisgICAgICAgIG1fcGFnZS0+aW5z
cGVjdG9yKCktPmJyaW5nVG9Gcm9udCgpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6
ZGlkUmVzaXplTWFpbkZyYW1lKEZyYW1lKikKQEAgLTE5NywzNCArMTk4LDYgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKQogfQog
I2VuZGlmCiAKLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIFdlYkluc3BlY3RvciogaW5zcGVjdG9yID0g
bV9wYWdlLT5pbnNwZWN0b3IoKTsKLSAgICBpZiAoIWluc3BlY3RvcikKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0gICAgaWYgKGluc3BlY3Rv
ci0+aGFzUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKSkgewotICAgICAgICBpbnNwZWN0b3ItPnNl
bmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChtZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotI2VuZGlmCi0KLSAgICBXZWJQYWdlKiBpbnNwZWN0b3JQYWdlID0gaW5zcGVjdG9y
LT5pbnNwZWN0b3JQYWdlKCk7Ci0gICAgaWYgKGluc3BlY3RvclBhZ2UpCi0gICAgICAgIHJldHVy
biBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKGluc3BlY3RvclBhZ2UtPmNvcmVQYWdl
KCksIG1lc3NhZ2UpOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFdlYkluc3BlY3Rv
ckNsaWVudDo6c3VwcG9ydHNGcmFtZUluc3RydW1lbnRhdGlvbigpCi17Ci0jaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQotICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgcmV0dXJuIGZh
bHNlOwotfQotCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cGFnZU92ZXJsYXlEZXN0cm95ZWQo
UGFnZU92ZXJsYXkqKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNzAzM2Jk
ZS4uNzk4Y2FjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC00NSwyMiArNDUsMjMg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgUmVwYWludEluZGlj
YXRvckxheWVyQ2xpZW50OwogCi1jbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2Vi
Q29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLCBwcml2YXRlIFBhZ2VPdmVybGF5OjpDbGllbnQgeworY2xhc3MgV2ViSW5zcGVjdG9y
Q2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHJpdmF0ZSBQYWdlT3Zl
cmxheTo6Q2xpZW50IHsKIGZyaWVuZCBjbGFzcyBSZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ7
CiBwdWJsaWM6CiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50KFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFs
IH5XZWJJbnNwZWN0b3JDbGllbnQoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgaW5z
cGVjdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAgLy8gV2ViQ29yZTo6SW5zcGVjdG9yQ2xp
ZW50CisgICAgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjbG9z
ZUluc3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGJyaW5nRnJv
bnRlbmRUb0Zyb250KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlc2l6ZU1haW5G
cmFtZShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOworICAgIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRSZXNpemVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlk
ZUhpZ2hsaWdodCgpIG92ZXJyaWRlOworICAgIHZvaWQgaGlnaGxpZ2h0KCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShJT1MpCiAg
ICAgdmlydHVhbCB2b2lkIHNob3dJbnNwZWN0b3JJbmRpY2F0aW9uKCkgb3ZlcnJpZGU7CkBAIC03
MiwxMCArNzMsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBvdmVycmlkZXNTaG93UGFp
bnRSZWN0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2hvd1BhaW50UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGcmFtZUluc3RydW1lbnRhdGlvbigp
OwotCiAgICAgLy8gUGFnZU92ZXJsYXk6OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBwYWdlT3Zl
cmxheURlc3Ryb3llZChQYWdlT3ZlcmxheSopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3
aWxsTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQ0M2RhZTEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgotCi0jaWYgRU5BQkxF
KElOU1BFQ1RPUikKLQotI2luY2x1ZGUgIldlYkluc3BlY3Rvci5oIgotI2luY2x1ZGUgIldlYlBh
Z2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNl
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlBhZ2UqIHBhZ2UsIFdlYlBhZ2UqIGlu
c3BlY3RvclBhZ2UpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZwYWdlLT5j
b3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGluc3BlY3RvclBhZ2UtPmNvcmVQYWdl
KCksIHN0ZDo6bWFrZV91bmlxdWU8U2V0dGluZ3M+KCkpCi0gICAgLCBtX3BhZ2UocGFnZSkKLXsK
LX0KLQotU3RyaW5nIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojpsb2NhbGl6ZWRTdHJpbmdz
VVJMKCkKLXsKLSAgICByZXR1cm4gbV9wYWdlLT5pbnNwZWN0b3IoKS0+bG9jYWxpemVkU3RyaW5n
c1VSTCgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpicmluZ1RvRnJv
bnQoKQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmJyaW5nVG9Gcm9udCgpOwotfQotCi12
b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjbG9zZVdpbmRvdygpCi17Ci0gICAgbV9w
YWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5k
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVk
KTsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5kaWRDbG9zZSgpOwotfQotCi1ib29sIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50OjpjYW5TYXZlKCkKLXsKLSAgICByZXR1cm4gbV9wYWdlLT5p
bnNwZWN0b3IoKS0+Y2FuU2F2ZSgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwg
Ym9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKQotewotICAgIG1fcGFnZS0+aW5z
cGVjdG9yKCktPnNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2
ZUFzKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkKLXsKLSAgICBtX3BhZ2Ut
Pmluc3BlY3RvcigpLT5hcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpOwotfQotCi12b2lkIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3coRG9ja1NpZGUgZG9ja1NpZGUpCi17
Ci0gICAgc3dpdGNoIChkb2NrU2lkZSkgewotICAgIGNhc2UgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OkRvY2tTaWRlOjpVbmRvY2tlZDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRl
OjpCb3R0b206Ci0gICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmF0dGFjaEJvdHRvbSgpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lk
ZTo6UmlnaHQ6Ci0gICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmF0dGFjaFJpZ2h0KCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDo6ZGV0YWNoV2luZG93KCkKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5kZXRhY2goKTsK
LX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0QXR0YWNoZWRXaW5kb3dI
ZWlnaHQodW5zaWduZWQgaGVpZ2h0KQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNldEF0
dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCi17Ci0gICAg
bV9wYWdlLT5pbnNwZWN0b3IoKS0+c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh3aWR0aCk7Ci19Ci0K
LXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldFRvb2xiYXJIZWlnaHQodW5zaWdu
ZWQgaGVpZ2h0KQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNldFRvb2xiYXJIZWlnaHQo
aGVpZ2h0KTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6aW5zcGVjdGVk
VVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKLXsKLSAgICBtX3BhZ2UtPmluc3Bl
Y3RvcigpLT5pbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggNTYxMjk3
YS4uNDc3NDM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3Rvci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDExNyArMjcsODIgQEAKICNpbmNsdWRlICJXZWJJbnNwZWN0
b3IuaCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKICNpbmNsdWRlICJXZWJGcmFtZS5oIgot
I2luY2x1ZGUgIldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViSW5z
cGVjdG9yTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2Uu
aCIKLSNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Eb2N1bWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkUmVxdWVzdC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JD
b250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yUGFnZUFnZW50Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9NYWluRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9s
bGVyLmg+Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oPgotI2luY2x1
ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMgY29uc3QgZmxvYXQgbWluaW11bUF0dGFjaGVk
SGVpZ2h0ID0gMjUwOworc3RhdGljIGNvbnN0IGZsb2F0IG1heGltdW1BdHRhY2hlZEhlaWdodFJh
dGlvID0gMC43NTsKK3N0YXRpYyBjb25zdCBmbG9hdCBtaW5pbXVtQXR0YWNoZWRXaWR0aCA9IDc1
MDsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViSW5zcGVjdG9yPiBXZWJJ
bnNwZWN0b3I6OmNyZWF0ZShXZWJQYWdlKiBwYWdlLCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCkKK1Bhc3NSZWZQdHI8V2ViSW5zcGVjdG9yPiBXZWJJbnNwZWN0b3I6
OmNyZWF0ZShXZWJQYWdlKiBwYWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViSW5z
cGVjdG9yKHBhZ2UsIGZyb250ZW5kQ2hhbm5lbCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViSW5zcGVjdG9yKHBhZ2UpKTsKIH0KIAotV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2Vi
UGFnZSogcGFnZSwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwpCitX
ZWJJbnNwZWN0b3I6OldlYkluc3BlY3RvcihXZWJQYWdlKiBwYWdlKQogICAgIDogbV9wYWdlKHBh
Z2UpCi0gICAgLCBtX2luc3BlY3RvclBhZ2UobnVsbHB0cikKLSAgICAsIG1fZnJvbnRlbmRDbGll
bnQobnVsbHB0cikKLSAgICAsIG1fZnJvbnRlbmRDaGFubmVsKGZyb250ZW5kQ2hhbm5lbCkKLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICAsIG1faGFzTG9jYWxpemVkU3RyaW5nc1VSTChmYWxzZSkK
LSNlbmRpZgotI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotICAgICwgbV9yZW1vdGVGcm9u
dGVuZENvbm5lY3RlZChmYWxzZSkKLSNlbmRpZgorICAgICwgbV9hdHRhY2hlZChmYWxzZSkKKyAg
ICAsIG1fcHJldmlvdXNDYW5BdHRhY2goZmFsc2UpCiB7CiB9CiAKIC8vIENhbGxlZCBmcm9tIFdl
Ykluc3BlY3RvckNsaWVudAotV2ViUGFnZSogV2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQ
YWdlKCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQYWdlKGJvb2wgdW5kZXJU
ZXN0KQogewogICAgIGlmICghbV9wYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IEFTU0VSVCghbV9pbnNwZWN0b3JQYWdlKTsKLSAgICBBU1NFUlQoIW1fZnJvbnRlbmRDbGllbnQp
OwotCi0gICAgdWludDY0X3QgaW5zcGVjdG9yUGFnZUlEID0gMDsKLSAgICBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JQcm94eTo6Q3JlYXRlSW5zcGVjdG9yUGFnZSgpLAotICAgICAgICAgICAgTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpDcmVhdGVJbnNwZWN0b3JQYWdlOjpSZXBseShpbnNwZWN0b3JQYWdl
SUQsIHBhcmFtZXRlcnMpLAotICAgICAgICAgICAgbV9wYWdlLT5wYWdlSUQoKSwgc3RkOjpjaHJv
bm86Om1pbGxpc2Vjb25kczo6bWF4KCkpKSB7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IH0KKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFpbnNwZWN0b3JQYWdlSUQpCi0gICAgICAg
IHJldHVybiBudWxscHRyOworI2lmIE9TKERBUldJTikKKyAgICBtYWNoX3BvcnRfdCBsaXN0ZW5p
bmdQb3J0OworICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BP
UlRfUklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOworCisgICAgSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmZXIobGlzdGVuaW5nUG9ydCk7CisgICAgSVBD
OjpBdHRhY2htZW50IGNvbm5lY3Rpb25DbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNH
X1RZUEVfTUFLRV9TRU5EKTsKKyNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQorICAgIElQ
Qzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpj
cmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKKyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIgY29ubmVjdGlvbklkZW50aWZlcihzb2NrZXRQYWlyLnNlcnZlcik7CisgICAgSVBDOjpBdHRh
Y2htZW50IGNvbm5lY3Rpb25DbGllbnRQb3J0KHNvY2tldFBhaXIuY2xpZW50KTsKKyNlbHNlCisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm47CisjZW5kaWYKIAotICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLmNyZWF0ZVdlYlBhZ2UoaW5zcGVjdG9yUGFnZUlELCBwYXJhbWV0ZXJzKTsK
LSAgICBtX2luc3BlY3RvclBhZ2UgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJQYWdlKGluc3Bl
Y3RvclBhZ2VJRCk7Ci0gICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgbV9mcm9udGVu
ZENvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oY29u
bmVjdGlvbklkZW50aWZlciwgdGhpcywgUnVuTG9vcDo6bWFpbigpKTsKKyAgICBtX2Zyb250ZW5k
Q29ubmVjdGlvbi0+b3BlbigpOwogCi0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fcGFnZSwgbV9pbnNwZWN0b3JQ
YWdlKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQuZ2V0KCk7Ci0gICAg
bV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7Ci0gICAgcmV0
dXJuIG1faW5zcGVjdG9yUGFnZTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6Q3JlYXRl
SW5zcGVjdG9yUGFnZShjb25uZWN0aW9uQ2xpZW50UG9ydCwgY2FuQXR0YWNoV2luZG93KCksIHVu
ZGVyVGVzdCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCi1XZWJQYWdlKiBXZWJJbnNwZWN0b3I6
OmNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZUZy
b250ZW5kKCkKIHsKLSAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBBU1NFUlQoIW1faW5zcGVjdG9yUGFnZSk7Ci0gICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2xp
ZW50KTsKLQotICAgIHVpbnQ2NF90IGluc3BlY3RvclBhZ2VJRCA9IDA7Ci0gICAgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KCksCi0gICAgICAgICAgICBN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0OjpS
ZXBseShpbnNwZWN0b3JQYWdlSUQsIHBhcmFtZXRlcnMpLAotICAgICAgICAgICAgbV9wYWdlLT5w
YWdlSUQoKSwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kczo6bWF4KCkpKSB7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGlmICghaW5zcGVjdG9yUGFnZUlEKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNyZWF0ZVdlYlBh
Z2UoaW5zcGVjdG9yUGFnZUlELCBwYXJhbWV0ZXJzKTsKLSAgICBtX2luc3BlY3RvclBhZ2UgPSBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJQYWdlKGluc3BlY3RvclBhZ2VJRCk7Ci0gICAgQVNTRVJU
KG1faW5zcGVjdG9yUGFnZSk7Ci0KLSAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9wYWdlLCBtX2luc3BlY3RvclBh
Z2UpOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBmcm9udGVuZENsaWVudC5nZXQoKTsKLSAgICBt
X2luc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNw
ZWN0b3JGcm9udGVuZENsaWVudChXVEY6Om1vdmUoZnJvbnRlbmRDbGllbnQpKTsKLSAgICByZXR1
cm4gbV9pbnNwZWN0b3JQYWdlOwotfQorICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEaWRD
bG9zZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIAotdm9pZCBXZWJJbnNwZWN0b3I6OmRlc3Ryb3lJ
bnNwZWN0b3JQYWdlKCkKLXsKLSAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRyOwotICAgIG1f
ZnJvbnRlbmRDbGllbnQgPSBudWxscHRyOwotICAgIG1fZnJvbnRlbmRDaGFubmVsID0gbnVsbHB0
cjsKLX0KKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworICAgIG1fZnJv
bnRlbmRDb25uZWN0aW9uID0gbnVsbHB0cjsKIAotLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQKLXZvaWQgV2ViSW5zcGVjdG9yOjpkaWRDbG9zZSgpCi17Ci0gICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAg
IGRlc3Ryb3lJbnNwZWN0b3JQYWdlKCk7CisgICAgbV9hdHRhY2hlZCA9IGZhbHNlOworICAgIG1f
cHJldmlvdXNDYW5BdHRhY2ggPSBmYWxzZTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OmJyaW5n
VG9Gcm9udCgpCkBAIC0xNDUsNTEgKzExMCw2IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpicmluZ1Rv
RnJvbnQoKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjppbnNwZWN0ZWRVUkxDaGFu
Z2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclBy
b3h5OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyksIG1fcGFnZS0+cGFnZUlEKCkpOwot
fQotCi12b2lkIFdlYkluc3BlY3Rvcjo6c2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykK
LXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2F2ZShmaWxlbmFtZSwgY29udGVudCwg
YmFzZTY0RW5jb2RlZCwgZm9yY2VTYXZlQXMpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9p
ZCBXZWJJbnNwZWN0b3I6OmFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnQpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkFwcGVuZChmaWxl
bmFtZSwgY29udGVudCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rv
cjo6YXR0YWNoQm90dG9tKCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNo
Qm90dG9tKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6YXR0
YWNoUmlnaHQoKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hSaWdodCgp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OmRldGFjaCgpCi17
Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRldGFjaCgpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2ln
bmVkIGhlaWdodCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRX
aW5kb3dIZWlnaHQoaGVpZ2h0KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5z
cGVjdG9yOjpzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQotewotICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKSwgbV9w
YWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzZXRUb29sYmFySGVpZ2h0
KHVuc2lnbmVkIGhlaWdodCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0VG9v
bGJhckhlaWdodChoZWlnaHQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQogLy8gQ2FsbGVkIGJ5
IFdlYkluc3BlY3RvciBtZXNzYWdlcwogdm9pZCBXZWJJbnNwZWN0b3I6OnNob3coKQogewpAQCAt
MjAxLDM0ICsxMjEsMTcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OmNsb3NlKCkKICAgICBtX3BhZ2Ut
PmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jbG9zZSgpOwogfQogCi12b2lkIFdl
Ykluc3BlY3Rvcjo6ZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICBBU1NFUlQobV9p
bnNwZWN0b3JQYWdlKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFt
ZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQobWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRB
UEkuc2F2ZWRVUkwoXCIiLCB1cmwsICJcIikiKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpk
aWRBcHBlbmQoY29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgQVNTRVJUKG1faW5zcGVjdG9yUGFn
ZSk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQo
KS5leGVjdXRlU2NyaXB0KG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmFwcGVuZGVk
VG9VUkwoXCIiLCB1cmwsICJcIikiKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjphdHRhY2hl
ZEJvdHRvbSgpCit2b2lkIFdlYkluc3BlY3Rvcjo6b3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nKQogewotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250
ZW5kQ2xpZW50LT5zZXRBdHRhY2hlZFdpbmRvdyhJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6RG9j
a1NpZGU6OkJvdHRvbSk7Ci19CisgICAgUGFnZSogaW5zcGVjdGVkUGFnZSA9IG1fcGFnZS0+Y29y
ZVBhZ2UoKTsKKyAgICBGcmFtZSYgaW5zcGVjdGVkTWFpbkZyYW1lID0gaW5zcGVjdGVkUGFnZS0+
bWFpbkZyYW1lKCk7CisgICAgRnJhbWVMb2FkUmVxdWVzdCByZXF1ZXN0KGluc3BlY3RlZE1haW5G
cmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QodXJsU3Ry
aW5nKSwgIl9ibGFuayIpOwogCi12b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNoZWRSaWdodCgpCi17
Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNl
dEF0dGFjaGVkV2luZG93KEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6UmlnaHQp
OwotfQorICAgIFBhZ2UqIG5ld1BhZ2UgPSBpbnNwZWN0ZWRQYWdlLT5jaHJvbWUoKS5jcmVhdGVX
aW5kb3coJmluc3BlY3RlZE1haW5GcmFtZSwgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMoKSwgTmF2
aWdhdGlvbkFjdGlvbihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBOYXZpZ2F0aW9uVHlwZUxp
bmtDbGlja2VkKSk7CisgICAgaWYgKCFuZXdQYWdlKQorICAgICAgICByZXR1cm47CiAKLXZvaWQg
V2ViSW5zcGVjdG9yOjpkZXRhY2hlZCgpCi17Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0g
ICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldEF0dGFjaGVkV2luZG93KEluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpEb2NrU2lkZTo6VW5kb2NrZWQpOworICAgIG5ld1BhZ2UtPm1haW5GcmFtZSgp
LmxvYWRlcigpLmxvYWQocmVxdWVzdCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpldmFsdWF0
ZVNjcmlwdEZvclRlc3QoY29uc3QgU3RyaW5nJiBzY3JpcHQpCkBAIC0yMzksMTA4ICsxNDIsOTQg
QEAgdm9pZCBXZWJJbnNwZWN0b3I6OmV2YWx1YXRlU2NyaXB0Rm9yVGVzdChjb25zdCBTdHJpbmcm
IHNjcmlwdCkKIHZvaWQgV2ViSW5zcGVjdG9yOjpzaG93Q29uc29sZSgpCiB7CiAgICAgbV9wYWdl
LT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zy
b250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zaG93Q29uc29sZSgpOwor
ICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6
U2hvd0NvbnNvbGUoKSwgMCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpzaG93UmVzb3VyY2Vz
KCkKIHsKICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93
KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQt
PnNob3dSZXNvdXJjZXMoKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OlNob3dSZXNvdXJjZXMoKSwgMCk7CiB9CiAKLXZvaWQgV2ViSW5z
cGVjdG9yOjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKK3ZvaWQg
V2ViSW5zcGVjdG9yOjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJZGVu
dGlmaWVyKQogewotICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndl
YkZyYW1lKGZyYW1lSUQpOworICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLndlYkZyYW1lKGZyYW1lSWRlbnRpZmllcik7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCku
c2hvdygpOwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xp
ZW50LT5zaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpKTsKLX0KIAot
dm9pZCBXZWJJbnNwZWN0b3I6OnN0YXJ0SmF2YVNjcmlwdERlYnVnZ2luZygpCi17Ci0gICAgbV9w
YWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmICht
X2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXREZWJ1Z2dpbmdF
bmFibGVkKHRydWUpOworICAgIFN0cmluZyBpbnNwZWN0b3JGcmFtZUlkZW50aWZpZXIgPSBtX3Bh
Z2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5wYWdlQWdlbnQoKS0+ZnJhbWVJ
ZChmcmFtZS0+Y29yZUZyYW1lKCkpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGluc3BlY3Rv
ckZyYW1lSWRlbnRpZmllciksIDApOwogfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6c3RvcEphdmFT
Y3JpcHREZWJ1Z2dpbmcoKQordm9pZCBXZWJJbnNwZWN0b3I6OnN0YXJ0UGFnZVByb2ZpbGluZygp
CiB7CiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygp
OwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5z
ZXREZWJ1Z2dpbmdFbmFibGVkKGZhbHNlKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OnNldEph
dmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wpCi17Ci0gICAgLy8gTm8gbG9uZ2VyIHN1cHBv
cnRlZC4KKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUk6OlN0YXJ0UGFnZVByb2ZpbGluZygpLCAwKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6
OnN0YXJ0SmF2YVNjcmlwdFByb2ZpbGluZygpCit2b2lkIFdlYkluc3BlY3Rvcjo6c3RvcFBhZ2VQ
cm9maWxpbmcoKQogewotICAgIC8vIE5vIGxvbmdlciBzdXBwb3J0ZWQuCisgICAgbV9wYWdlLT5j
b3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOworICAgIG1fZnJvbnRlbmRD
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U3RvcFBhZ2VQcm9maWxp
bmcoKSwgMCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpzdG9wSmF2YVNjcmlwdFByb2ZpbGlu
ZygpCitib29sIFdlYkluc3BlY3Rvcjo6Y2FuQXR0YWNoV2luZG93KCkKIHsKLSAgICAvLyBObyBs
b25nZXIgc3VwcG9ydGVkLgotfQorICAgIC8vIERvbid0IGFsbG93IGF0dGFjaGluZyB0byBhbm90
aGVyIGluc3BlY3RvciAtLSB0d28gaW5zcGVjdG9ycyBpbiBvbmUgd2luZG93IGlzIHRvbyBtdWNo
IQorICAgIGlmIChtX3BhZ2UtPmlzSW5zcGVjdG9yUGFnZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpzdGFydFBhZ2VQcm9maWxpbmcoKQotewotICAgIG1f
cGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAo
bV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0VGltZWxpbmVQ
cm9maWxpbmdFbmFibGVkKHRydWUpOwotfQorICAgIC8vIElmIHdlIGFyZSBhbHJlYWR5IGF0dGFj
aGVkLCBhbGxvdyBhdHRhY2hpbmcgYWdhaW4gdG8gYWxsb3cgc3dpdGNoaW5nIHNpZGVzLgorICAg
IGlmIChtX2F0dGFjaGVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotdm9pZCBXZWJJbnNwZWN0
b3I6OnN0b3BQYWdlUHJvZmlsaW5nKCkKLXsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAg
ICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChmYWxzZSk7
CisgICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGF0dGFjaCBpZiB0aGUgd2luZG93IHdvdWxkIGJlIHRv
byBzbWFsbCB0byBhY2NvbW1vZGF0ZSB0aGUgbWluaW11bSBpbnNwZWN0b3Igc2l6ZS4KKyAgICB1
bnNpZ25lZCBpbnNwZWN0ZWRQYWdlSGVpZ2h0ID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJh
bWUoKS52aWV3KCktPnZpc2libGVIZWlnaHQoKTsKKyAgICB1bnNpZ25lZCBpbnNwZWN0ZWRQYWdl
V2lkdGggPSBtX3BhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZVdp
ZHRoKCk7CisgICAgdW5zaWduZWQgbWF4aW11bUF0dGFjaGVkSGVpZ2h0ID0gaW5zcGVjdGVkUGFn
ZUhlaWdodCAqIG1heGltdW1BdHRhY2hlZEhlaWdodFJhdGlvOworICAgIHJldHVybiBtaW5pbXVt
QXR0YWNoZWRIZWlnaHQgPD0gbWF4aW11bUF0dGFjaGVkSGVpZ2h0ICYmIG1pbmltdW1BdHRhY2hl
ZFdpZHRoIDw9IGluc3BlY3RlZFBhZ2VXaWR0aDsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnVw
ZGF0ZURvY2tpbmdBdmFpbGFiaWxpdHkoKQogewotICAgIGlmICghbV9mcm9udGVuZENsaWVudCkK
KyAgICBpZiAobV9hdHRhY2hlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBjYW5BdHRh
Y2hXaW5kb3cgPSB0aGlzLT5jYW5BdHRhY2hXaW5kb3coKTsKKyAgICBpZiAobV9wcmV2aW91c0Nh
bkF0dGFjaCA9PSBjYW5BdHRhY2hXaW5kb3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wg
Y2FuQXR0YWNoV2luZG93ID0gbV9mcm9udGVuZENsaWVudC0+Y2FuQXR0YWNoV2luZG93KCk7Cisg
ICAgbV9wcmV2aW91c0NhbkF0dGFjaCA9IGNhbkF0dGFjaFdpbmRvdzsKKwogICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpBdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGNhbkF0dGFjaFdpbmRv
dyksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldERvY2tpbmdV
bmF2YWlsYWJsZSghY2FuQXR0YWNoV2luZG93KTsKIH0KIAotI2lmIEVOQUJMRShJTlNQRUNUT1Jf
U0VSVkVSKQotdm9pZCBXZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIFdlYkluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb0Jh
Y2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIEFTU0VSVChtX3JlbW90ZUZyb250
ZW5kQ29ubmVjdGVkKTsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2VuZE1lc3NhZ2VU
b1JlbW90ZUZyb250ZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Ut
PmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJv
bnRlbmQobWVzc2FnZSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpkaXNwYXRjaE1lc3NhZ2VG
cm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorYm9vbCBXZWJJbnNwZWN0
b3I6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAg
bV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0Y2hNZXNzYWdl
RnJvbUZyb250ZW5kKG1lc3NhZ2UpOworI2lmICFFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAg
ICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNl
bmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKSwgMCk7CisjZWxzZQorICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjpTZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQobWVzc2FnZSksIG1fcGFn
ZS0+cGFnZUlEKCkpOworI2VuZGlmCisgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SX1NFUlZFUikKIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZENvbm5l
Y3RlZCgpCiB7Ci0gICAgQVNTRVJUKCFtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKTsKLSAgICAv
LyBTd2l0Y2hpbmcgYmV0d2VlbiBpbi1wcm9jZXNzIGFuZCByZW1vdGUgaW5zcGVjdG9ycyBpc24n
dCBzdXBwb3J0ZWQgeWV0LgotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JQYWdlKTsKLSAgICAKLSAg
ICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRl
bmQobV9mcm9udGVuZENoYW5uZWwpOwotICAgIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQgPSB0
cnVlOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5l
Y3RGcm9udGVuZCh0aGlzKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5k
RGlzY29ubmVjdGVkKCkKIHsKLSAgICBBU1NFUlQobV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCk7
CiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVj
dEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9y
RGVzdHJveWVkKTsKLSAgICBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkID0gZmFsc2U7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3Rvci5oCmluZGV4IGM5M2JjYjMuLjNjMTliOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDEwNiArMzAsODAgQEAKIAogI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRpbmcu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50OwogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgV2ViSW5zcGVjdG9yIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yPiB7Citj
bGFzcyBXZWJJbnNwZWN0b3IgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpCdW5kbGVJbnNwZWN0b3I+LCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIHB1
YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gY3JlYXRlKFdlYlBhZ2UqLCBXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnNw
ZWN0b3I+IGNyZWF0ZShXZWJQYWdlKik7CiAKICAgICBXZWJQYWdlKiBwYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYWdlOyB9Ci0gICAgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1faW5zcGVjdG9yUGFnZTsgfQorCisgICAgdm9pZCB1cGRhdGVEb2NraW5nQXZhaWxhYmls
aXR5KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0
ZWQgV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcAotICAgIHZvaWQgZGlkUmVjZWl2ZVdl
Ykluc3BlY3Rvck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYp
OworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNz
YWdlRGVjb2RlciYpOworCisgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKKyAgICB2b2lk
IGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiopIHsgY2xvc2UoKTsgfQorICAgIHZvaWQgZGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6U3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSB7
IGNsb3NlKCk7IH0KIAogICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3IgbWVzc2FnZXMKKyAg
ICB2b2lkIGNvbm5lY3Rpb25Fc3RhYmxpc2hlZCgpOworCiAgICAgdm9pZCBzaG93KCk7CiAgICAg
dm9pZCBjbG9zZSgpOwogCi0gICAgdm9pZCBkaWRTYXZlKGNvbnN0IFN0cmluZyYgdXJsKTsKLSAg
ICB2b2lkIGRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCBvcGVuSW5OZXdU
YWIoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOworCisgICAgdm9pZCBjYW5BdHRhY2hXaW5kb3co
Ym9vbCYgcmVzdWx0KTsKKworICAgIHZvaWQgc2hvd0NvbnNvbGUoKTsKKyAgICB2b2lkIHNob3dS
ZXNvdXJjZXMoKTsKIAotICAgIHZvaWQgYXR0YWNoZWRCb3R0b20oKTsKLSAgICB2b2lkIGF0dGFj
aGVkUmlnaHQoKTsKLSAgICB2b2lkIGRldGFjaGVkKCk7CisgICAgdm9pZCBzaG93TWFpblJlc291
cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJZGVudGlmaWVyKTsKKworICAgIHZvaWQgc2V0QXR0
YWNoZWQoYm9vbCBhdHRhY2hlZCkgeyBtX2F0dGFjaGVkID0gYXR0YWNoZWQ7IH0KIAogICAgIHZv
aWQgZXZhbHVhdGVTY3JpcHRGb3JUZXN0KGNvbnN0IFN0cmluZyYgc2NyaXB0KTsKIAotICAgIHZv
aWQgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzdGFydFBh
Z2VQcm9maWxpbmcoKTsKICAgICB2b2lkIHN0b3BQYWdlUHJvZmlsaW5nKCk7CiAKKyAgICB2b2lk
IHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYpOworCiAjaWYgRU5BQkxFKElOU1BF
Q1RPUl9TRVJWRVIpCi0gICAgYm9vbCBoYXNSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQ7IH0KLSAgICB2b2lkIHNlbmRNZXNz
YWdlVG9SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQgZGlz
cGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAg
ICAgdm9pZCByZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpOwogICAgIHZvaWQgcmVtb3RlRnJvbnRl
bmREaXNjb25uZWN0ZWQoKTsKICNlbmRpZgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBX
ZWJJbnNwZWN0b3JDbGllbnQ7Ci0gICAgZnJpZW5kIGNsYXNzIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50OwogCi0gICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yKFdlYlBhZ2UqLCBXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKKyAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3IoV2Vi
UGFnZSopOworCisgICAgYm9vbCBjYW5BdHRhY2hXaW5kb3coKTsKIAogICAgIC8vIENhbGxlZCBm
cm9tIFdlYkluc3BlY3RvckNsaWVudAotICAgIFdlYlBhZ2UqIGNyZWF0ZUluc3BlY3RvclBhZ2Uo
KTsKLSAgICBXZWJQYWdlKiBjcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgpOwotICAgIHZvaWQg
ZGVzdHJveUluc3BlY3RvclBhZ2UoKTsKKyAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBhZ2UoYm9v
bCB1bmRlclRlc3QpOwogCi0gICAgLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQKLSAgICB2b2lkIGRpZENsb3NlKCk7CisgICAgdm9pZCBjbG9zZUZyb250ZW5kKCk7CiAg
ICAgdm9pZCBicmluZ1RvRnJvbnQoKTsKLSAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29u
c3QgU3RyaW5nJik7Ci0KLSAgICBib29sIGNhblNhdmUoKSBjb25zdDsKLSAgICB2b2lkIHNhdmUo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2
NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7Ci0KLSAgICB2b2lkIGF0dGFjaEJv
dHRvbSgpOwotICAgIHZvaWQgYXR0YWNoUmlnaHQoKTsKLSAgICB2b2lkIGRldGFjaCgpOwogCi0g
ICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCk7Ci0gICAgdm9pZCBzZXRB
dHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKTsKLSAgICB2b2lkIHNldFRvb2xiYXJIZWlnaHQo
dW5zaWduZWQpOwotCi0gICAgLy8gSW1wbGVtZW50ZWQgaW4gcGxhdGZvcm0gV2ViSW5zcGVjdG9y
IGZpbGUKLSAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0OwotCi0gICAgdm9p
ZCBzaG93Q29uc29sZSgpOwotCi0gICAgdm9pZCBzaG93UmVzb3VyY2VzKCk7Ci0KLSAgICB2b2lk
IHNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKLQotICAgIHZvaWQg
c3RhcnRKYXZhU2NyaXB0RGVidWdnaW5nKCk7Ci0gICAgdm9pZCBzdG9wSmF2YVNjcmlwdERlYnVn
Z2luZygpOwotCi0gICAgdm9pZCBzdGFydEphdmFTY3JpcHRQcm9maWxpbmcoKTsKLSAgICB2b2lk
IHN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCk7CisgICAgV2ViUGFnZSogbV9wYWdlOwogCi0gICAg
dm9pZCB1cGRhdGVEb2NraW5nQXZhaWxhYmlsaXR5KCk7CisgICAgUmVmUHRyPElQQzo6Q29ubmVj
dGlvbj4gbV9mcm9udGVuZENvbm5lY3Rpb247CiAKLSAgICBXZWJQYWdlKiBtX3BhZ2U7Ci0gICAg
V2ViUGFnZSogbV9pbnNwZWN0b3JQYWdlOwotICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
KiBtX2Zyb250ZW5kQ2xpZW50OwotICAgIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogbV9mcm9udGVuZENoYW5uZWw7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbXV0YWJsZSBT
dHJpbmcgbV9sb2NhbGl6ZWRTdHJpbmdzVVJMOwotICAgIG11dGFibGUgYm9vbCBtX2hhc0xvY2Fs
aXplZFN0cmluZ3NVUkw7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAg
ICBib29sIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQ7Ci0jZW5kaWYKKyAgICBib29sIG1fYXR0
YWNoZWQ7CisgICAgYm9vbCBtX3ByZXZpb3VzQ2FuQXR0YWNoOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgppbmRleCBjMjNiODZmLi5mYzA3M2NhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCwgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIyLDI2ICsyMiwyNSBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotbWVz
c2FnZXMgLT4gV2ViSW5zcGVjdG9yIExlZ2FjeVJlY2VpdmVyIHsKK21lc3NhZ2VzIC0+IFdlYklu
c3BlY3RvciB7CiAgICAgU2hvdygpCiAgICAgQ2xvc2UoKQotICAgIEF0dGFjaGVkQm90dG9tKCkK
LSAgICBBdHRhY2hlZFJpZ2h0KCkKLSAgICBEZXRhY2hlZCgpCi0gICAgRGlkU2F2ZShTdHJpbmcg
dXJsKQotICAgIERpZEFwcGVuZChTdHJpbmcgdXJsKQorCisgICAgU2V0QXR0YWNoZWQoYm9vbCBh
dHRhY2hlZCkKKwogICAgIFNob3dDb25zb2xlKCkKICAgICBTaG93UmVzb3VyY2VzKCkKLSAgICBT
aG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKLSAgICBTdGFydEphdmFT
Y3JpcHREZWJ1Z2dpbmcoKQotICAgIFN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCkKLSAgICBTdGFy
dEphdmFTY3JpcHRQcm9maWxpbmcoKQotICAgIFN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCkKKwor
ICAgIFNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlkZW50aWZpZXIpCisK
KyAgICBPcGVuSW5OZXdUYWIoU3RyaW5nIHVybCkKKwogICAgIFN0YXJ0UGFnZVByb2ZpbGluZygp
CiAgICAgU3RvcFBhZ2VQcm9maWxpbmcoKQogCisgICAgU2VuZE1lc3NhZ2VUb0JhY2tlbmQoU3Ry
aW5nIG1lc3NhZ2UpCisKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAgICBEaXNwYXRj
aE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoU3RyaW5nIG1lc3NhZ2UpCiAgICAgUmVtb3RlRnJv
bnRlbmRDb25uZWN0ZWQoKQogICAgIFJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JVSS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI5N2FkMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3JVSS5jcHAKQEAgLTAsMCArMSwyODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUkuaCIKKworI2lmIEVOQUJMRShJTlNQRUNU
T1IpCisKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYklu
c3BlY3RvclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdFZhbHVlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9DaHJvbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RPTVdyYXBwZXJX
b3JsZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU2NyaXB0R2xvYmFsT2JqZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRTdGF0
ZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1Bhc3NSZWZQdHI8V2ViSW5zcGVjdG9yVUk+IFdlYkluc3BlY3RvclVJOjpjcmVhdGUoV2ViUGFn
ZSogcGFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvclVJKHBhZ2Up
KTsKK30KKworV2ViSW5zcGVjdG9yVUk6OldlYkluc3BlY3RvclVJKFdlYlBhZ2UqIHBhZ2UpCisg
ICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIoMCkKKyAg
ICAsIG1fdW5kZXJUZXN0KGZhbHNlKQorICAgICwgbV9mcm9udGVuZExvYWRlZChmYWxzZSkKKyAg
ICAsIG1fZG9ja1NpZGUoRG9ja1NpZGU6OlVuZG9ja2VkKQorI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgICwgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMKGZhbHNlKQorI2VuZGlmCit7Cit9CisKK3Zv
aWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFibGlzaENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGVu
Y29kZWRDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZp
ZXIsIGJvb2wgdW5kZXJUZXN0KQoreworI2lmIE9TKERBUldJTikKKyAgICBJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVu
dGlmaWVyLnBvcnQoKSk7CisjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICBJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2RlZENvbm5l
Y3Rpb25JZGVudGlmaWVyLnJlbGVhc2VGaWxlRGVzY3JpcHRvcigpKTsKKyNlbHNlCisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm47CisjZW5kaWYKKworICAgIGlmIChJUEM6OkNvbm5l
Y3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gaW5zcGVjdGVkUGFnZUlk
ZW50aWZpZXI7CisgICAgbV91bmRlclRlc3QgPSB1bmRlclRlc3Q7CisKKyAgICBtX3BhZ2UtPmNv
cmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVu
dCh0aGlzKTsKKworICAgIG1fYmFja2VuZENvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNy
ZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsIHRoaXMsIFJ1bkxvb3A6
Om1haW4oKSk7CisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbi0+b3BlbigpOworfQorCit2b2lkIFdl
Ykluc3BlY3RvclVJOjp3aW5kb3dPYmplY3RDbGVhcmVkKCkKK3sKKyAgICBpZiAobV9mcm9udGVu
ZEhvc3QpCisgICAgICAgIG1fZnJvbnRlbmRIb3N0LT5kaXNjb25uZWN0Q2xpZW50KCk7CisKKyAg
ICBtX2Zyb250ZW5kSG9zdCA9IEluc3BlY3RvckZyb250ZW5kSG9zdDo6Y3JlYXRlKHRoaXMsIG1f
cGFnZS0+Y29yZVBhZ2UoKSk7CisgICAgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoZXhlY1N0YXRl
RnJvbVBhZ2UobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIG1fcGFnZS0+Y29yZVBhZ2UoKSksIEFT
Q0lJTGl0ZXJhbCgiSW5zcGVjdG9yRnJvbnRlbmRIb3N0IiksIG1fZnJvbnRlbmRIb3N0LmdldCgp
KTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRMb2FkZWQoKQoreworICAgIG1f
ZnJvbnRlbmRMb2FkZWQgPSB0cnVlOworCisgICAgZXZhbHVhdGVQZW5kaW5nRXhwcmVzc2lvbnMo
KTsKKyAgICBicmluZ1RvRnJvbnQoKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6bW92ZVdp
bmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpCit7CisgICAgRmxvYXRSZWN0IGZyYW1lUmVjdCA9IG1f
cGFnZS0+Y29yZVBhZ2UoKS0+Y2hyb21lKCkud2luZG93UmVjdCgpOworICAgIGZyYW1lUmVjdC5t
b3ZlKHgsIHkpOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+Y2hyb21lKCkuc2V0V2luZG93UmVj
dChmcmFtZVJlY3QpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpicmluZ1RvRnJvbnQoKQor
eworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9pbnNwZWN0
ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmNsb3NlV2luZG93
KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGlkQ2xvc2UoKSwgbV9pbnNwZWN0
ZWRQYWdlSWRlbnRpZmllcik7CisKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5pbnZhbGlkYXRl
KCk7CisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbiA9IG51bGxwdHI7CisKKyAgICBtX2luc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyID0gMDsKKyAgICBtX3VuZGVyVGVzdCA9IGZhbHNlOworfQorCit2b2lk
IFdlYkluc3BlY3RvclVJOjpyZXF1ZXN0U2V0RG9ja1NpZGUoRG9ja1NpZGUgc2lkZSkKK3sKKyAg
ICBzd2l0Y2ggKHNpZGUpIHsKKyAgICBjYXNlIERvY2tTaWRlOjpVbmRvY2tlZDoKKyAgICAgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRldGFjaCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlm
aWVyKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERvY2tTaWRlOjpSaWdodDoKKyAgICAg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaFJpZ2h0KCksIG1faW5zcGVjdGVkUGFn
ZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRG9ja1NpZGU6OkJvdHRv
bToKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaEJvdHRvbSgpLCBtX2lu
c3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lk
IFdlYkluc3BlY3RvclVJOjpzZXREb2NrU2lkZShEb2NrU2lkZSBzaWRlKQoreworICAgIGNvbnN0
IGNoYXIqIHNpZGVTdHJpbmc7CisKKyAgICBzd2l0Y2ggKHNpZGUpIHsKKyAgICBjYXNlIERvY2tT
aWRlOjpVbmRvY2tlZDoKKyAgICAgICAgc2lkZVN0cmluZyA9ICJ1bmRvY2tlZCI7CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6UmlnaHQ6CisgICAgICAgIHNpZGVTdHJpbmcg
PSAicmlnaHQiOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRG9ja1NpZGU6OkJvdHRvbToK
KyAgICAgICAgc2lkZVN0cmluZyA9ICJib3R0b20iOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBtX2RvY2tTaWRlID0gc2lkZTsKKworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJ
SUxpdGVyYWwoInNldERvY2tTaWRlIiksIEFTQ0lJTGl0ZXJhbChzaWRlU3RyaW5nKSk7Cit9CisK
K3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmNoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVk
IGhlaWdodCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5k
b3dIZWlnaHQoaGVpZ2h0KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
V2ViSW5zcGVjdG9yVUk6OmNoYW5nZUF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQgd2lkdGgp
Cit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0dGFjaGVkV2luZG93V2lkdGgo
d2lkdGgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JVSTo6c2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCBoZWlnaHQpCit7CisgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yUHJveHk6OlNldFRvb2xiYXJIZWlnaHQoaGVpZ2h0KSwgbV9pbnNwZWN0ZWRQYWdl
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6Om9wZW5Jbk5ld1RhYihjb25z
dCBTdHJpbmcmIHVybCkKK3sKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6Ok9wZW5Jbk5ld1RhYih1cmwpLCAwKTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JVSTo6c2F2ZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFdURjo6U3Ry
aW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCit7Cisg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2
NEVuY29kZWQsIGZvcmNlU2F2ZUFzKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmFwcGVuZChjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclBy
b3h5OjpBcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVy
KTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBT
dHJpbmcmIHVybFN0cmluZykKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6SW5zcGVj
dGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2hvd0NvbnNvbGUoKQoreworICAgIGV2YWx1YXRlQ29t
bWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNob3dDb25zb2xlIikpOworfQorCit2b2lkIFdlYklu
c3BlY3RvclVJOjpzaG93UmVzb3VyY2VzKCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQo
QVNDSUlMaXRlcmFsKCJzaG93UmVzb3VyY2VzIikpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJ
OjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUoU3RyaW5nIGZyYW1lSWRlbnRpZmllcikKK3sKKyAg
ICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzaG93TWFpblJlc291cmNlRm9y
RnJhbWUiKSwgZnJhbWVJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c3Rh
cnRQYWdlUHJvZmlsaW5nKCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRl
cmFsKCJzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQiKSwgdHJ1ZSk7Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yVUk6OnN0b3BQYWdlUHJvZmlsaW5nKCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRP
bkxvYWQoQVNDSUlMaXRlcmFsKCJzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQiKSwgZmFsc2Up
OworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpkaWRTYXZlKGNvbnN0IFN0cmluZyYgdXJsKQor
eworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNhdmVkVVJMIiksIHVy
bCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVy
bCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJhcHBlbmRlZFRv
VVJMIiksIHVybCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgZXZhbHVhdGVFeHByZXNzaW9uT25M
b2FkKG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoTWVzc2FnZUFzeW5j
KCIsIG1lc3NhZ2UsICIpIikpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzZW5kTWVzc2Fn
ZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9iYWNrZW5kQ29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZW5kTWVzc2FnZVRvQmFja2VuZCht
ZXNzYWdlKSwgMCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRlQ29tbWFuZE9u
TG9hZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQpCit7Cisg
ICAgaWYgKGFyZ3VtZW50LmlzTnVsbCgpKQorICAgICAgICBldmFsdWF0ZUV4cHJlc3Npb25Pbkxv
YWQobWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2goW1wiIiwgY29tbWFu
ZCwgIlwiXSkiKSk7CisgICAgZWxzZQorICAgICAgICBldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQo
bWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2goW1wiIiwgY29tbWFuZCwg
IlwiLCBcIiIsIGFyZ3VtZW50LCAiXCJdKSIpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6
ZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgYm9vbCBhcmd1bWVu
dCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29tbWFuZCwgQVNDSUlMaXRlcmFsKGFy
Z3VtZW50ID8gInRydWUiIDogImZhbHNlIikpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpl
dmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQoreworICAg
IGlmIChtX2Zyb250ZW5kTG9hZGVkKSB7CisgICAgICAgIEFTU0VSVChtX3F1ZXVlLmlzRW1wdHko
KSk7CisgICAgICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdChleHByZXNzaW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
cXVldWUuYXBwZW5kKGV4cHJlc3Npb24pOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpldmFs
dWF0ZVBlbmRpbmdFeHByZXNzaW9ucygpCit7CisgICAgQVNTRVJUKG1fZnJvbnRlbmRMb2FkZWQp
OworCisgICAgZm9yIChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24gOiBtX3F1ZXVlKQorICAgICAg
ICBtX3BhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQo
ZXhwcmVzc2lvbik7CisKKyAgICBtX3F1ZXVlLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYmRiZmNiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oCkBAIC0wLDAgKzEsMTM3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJbnNwZWN0b3JVSV9oCisjZGVmaW5lIFdlYklu
c3BlY3RvclVJX2gKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0
b3JGb3J3YXJkaW5nLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBXZWJJbnNwZWN0b3JVSSA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUluc3BlY3Rv
clVJPiwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
Ykluc3BlY3RvclVJPiBjcmVhdGUoV2ViUGFnZSopOworCisgICAgV2ViUGFnZSogcGFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorCisgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVk
IFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcAorICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOworCisgICAgLy8g
SVBDOjpDb25uZWN0aW9uOjpDbGllbnQKKyAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlv
biopIHsgY2xvc2VXaW5kb3coKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiosIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSB7IGNsb3NlV2luZG93KCk7IH0K
KworICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JVSSBtZXNzYWdlcworICAgIHZvaWQgZXN0
YWJsaXNoQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCk7CisKKyAgICB2
b2lkIHNob3dDb25zb2xlKCk7CisgICAgdm9pZCBzaG93UmVzb3VyY2VzKCk7CisKKyAgICB2b2lk
IHNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShTdHJpbmcgZnJhbWVJZGVudGlmaWVyKTsKKworICAg
IHZvaWQgc3RhcnRQYWdlUHJvZmlsaW5nKCk7CisgICAgdm9pZCBzdG9wUGFnZVByb2ZpbGluZygp
OworCisgICAgdm9pZCBhdHRhY2hlZEJvdHRvbSgpIHsgc2V0RG9ja1NpZGUoRG9ja1NpZGU6OkJv
dHRvbSk7IH0KKyAgICB2b2lkIGF0dGFjaGVkUmlnaHQoKSB7IHNldERvY2tTaWRlKERvY2tTaWRl
OjpSaWdodCk7IH0KKyAgICB2b2lkIGRldGFjaGVkKCkgeyBzZXREb2NrU2lkZShEb2NrU2lkZTo6
VW5kb2NrZWQpOyB9CisKKyAgICB2b2lkIHNldERvY2tTaWRlKERvY2tTaWRlKTsKKworICAgIHZv
aWQgZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCBkaWRBcHBlbmQoY29uc3Qg
U3RyaW5nJiB1cmwpOworCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3Ry
aW5nJik7CisKKyAgICAvLyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudAorICAgIHZv
aWQgd2luZG93T2JqZWN0Q2xlYXJlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZnJvbnRlbmRMb2Fk
ZWQoKSBvdmVycmlkZTsKKworICAgIHZvaWQgbW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkp
IG92ZXJyaWRlOworCisgICAgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBvdmVycmlkZTsK
KworICAgIHZvaWQgYnJpbmdUb0Zyb250KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjbG9zZVdpbmRv
dygpIG92ZXJyaWRlOworCisgICAgdm9pZCByZXF1ZXN0U2V0RG9ja1NpZGUoRG9ja1NpZGUpIG92
ZXJyaWRlOworICAgIHZvaWQgY2hhbmdlQXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpIG92
ZXJyaWRlOworICAgIHZvaWQgY2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCkgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIHNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQpIG92ZXJyaWRlOwor
CisgICAgdm9pZCBvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpIG92ZXJyaWRlOworCisg
ICAgYm9vbCBjYW5TYXZlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlKGNvbnN0IFdURjo6U3Ry
aW5nJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQs
IGJvb2wgZm9yY2VTYXZlQXMpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IFdURjo6
U3RyaW5nJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50KSBvdmVycmlkZTsKKworICAg
IHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKworICAg
IHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisKKyAg
ICBib29sIGlzVW5kZXJUZXN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV91bmRlclRlc3Q7IH0KKwor
cHJpdmF0ZToKKyAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JVSShXZWJQYWdlKik7CisKKyAgICB2
b2lkIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGNvbnN0IFN0
cmluZyYgYXJndW1lbnQgPSBTdHJpbmcoKSk7CisgICAgdm9pZCBldmFsdWF0ZUNvbW1hbmRPbkxv
YWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBjb25zdCBBU0NJSUxpdGVyYWwmIGFyZ3VtZW50KSB7
IGV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb21tYW5kLCBTdHJpbmcoYXJndW1lbnQpKTsgfQorICAg
IHZvaWQgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgYm9vbCBh
cmd1bWVudCk7CisgICAgdm9pZCBldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQoY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uKTsKKyAgICB2b2lkIGV2YWx1YXRlUGVuZGluZ0V4cHJlc3Npb25zKCk7CisK
KyAgICBXZWJQYWdlKiBtX3BhZ2U7CisKKyAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Jh
Y2tlbmRDb25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXI7
CisKKyAgICBib29sIG1fdW5kZXJUZXN0OworICAgIGJvb2wgbV9mcm9udGVuZExvYWRlZDsKKyAg
ICBEZXF1ZTxTdHJpbmc+IG1fcXVldWU7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRIb3N0PiBtX2Zyb250ZW5kSG9zdDsKKworICAgIERvY2tTaWRlIG1fZG9ja1NpZGU7
CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtdXRhYmxlIFN0cmluZyBtX2xvY2FsaXplZFN0
cmluZ3NVUkw7CisgICAgbXV0YWJsZSBib29sIG1faGFzTG9jYWxpemVkU3RyaW5nc1VSTDsKKyNl
bmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SKQorCisjZW5kaWYgLy8gV2ViSW5zcGVjdG9yVUlfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5p
bgpzaW1pbGFyaXR5IGluZGV4IDc3JQpjb3B5IGZyb20gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgpjb3B5IHRvIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgppbmRleCBjMjNi
ODZmLi4yM2ViNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMg
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjIsMjkgKzIyLDI1IEBACiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogCi1tZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3IgTGVnYWN5UmVjZWl2ZXIgewotICAg
IFNob3coKQotICAgIENsb3NlKCkKK21lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJIHsKKyAgICBF
c3RhYmxpc2hDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwg
dWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0KQorCiAgICAg
QXR0YWNoZWRCb3R0b20oKQogICAgIEF0dGFjaGVkUmlnaHQoKQogICAgIERldGFjaGVkKCkKLSAg
ICBEaWRTYXZlKFN0cmluZyB1cmwpCi0gICAgRGlkQXBwZW5kKFN0cmluZyB1cmwpCisKICAgICBT
aG93Q29uc29sZSgpCiAgICAgU2hvd1Jlc291cmNlcygpCi0gICAgU2hvd01haW5SZXNvdXJjZUZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgU3RhcnRKYXZhU2NyaXB0RGVidWdnaW5nKCkK
LSAgICBTdG9wSmF2YVNjcmlwdERlYnVnZ2luZygpCi0gICAgU3RhcnRKYXZhU2NyaXB0UHJvZmls
aW5nKCkKLSAgICBTdG9wSmF2YVNjcmlwdFByb2ZpbGluZygpCisKKyAgICBTaG93TWFpblJlc291
cmNlRm9yRnJhbWUoU3RyaW5nIGZyYW1lSWRlbnRpZmllcikKKwogICAgIFN0YXJ0UGFnZVByb2Zp
bGluZygpCiAgICAgU3RvcFBhZ2VQcm9maWxpbmcoKQogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUl9T
RVJWRVIpCi0gICAgRGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKFN0cmluZyBtZXNz
YWdlKQotICAgIFJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkKLSAgICBSZW1vdGVGcm9udGVuZERp
c2Nvbm5lY3RlZCgpCi0jZW5kaWYKKyAgICBEaWRTYXZlKFN0cmluZyB1cmwpCisgICAgRGlkQXBw
ZW5kKFN0cmluZyB1cmwpCisKKyAgICBTZW5kTWVzc2FnZVRvRnJvbnRlbmQoU3RyaW5nIG1lc3Nh
Z2UpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IGU2MmFjZmQuLmNjYzYzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTgwLDYgKzgwLDggQEAKICNpbmNsdWRl
ICJXZWJJbnNwZWN0b3IuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNs
dWRlICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgi
CisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYk5vdGlm
aWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgpAQCAtNDYwLDYgKzQ2Miw3
IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogI2VuZGlmCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
Ykluc3BlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOworICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5z
cGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CkBAIC01MjAsNiArNTIzLDcgQEAgV2Vi
UGFnZTo6fldlYlBhZ2UoKQogI2VuZGlmCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3Bl
Y3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CisgICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2VJRCk7CkBAIC0yODg2LDE4ICsyODkwLDI2IEBAIHZvaWQgV2ViUGFnZTo6ZGlkRmx1
c2hMYXllclRyZWVBdFRpbWUoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lc3RhbXApCiB9
CiAjZW5kaWYKIAotICAgIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiBXZWJJbnNwZWN0b3IqIFdl
YlBhZ2U6Omluc3BlY3RvcigpCiB7CiAgICAgaWYgKG1faXNDbG9zZWQpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1faW5zcGVjdG9yKQotICAg
ICAgICBtX2luc3BlY3RvciA9IFdlYkluc3BlY3Rvcjo6Y3JlYXRlKHRoaXMsIG1faW5zcGVjdG9y
Q2xpZW50KTsKKyAgICAgICAgbV9pbnNwZWN0b3IgPSBXZWJJbnNwZWN0b3I6OmNyZWF0ZSh0aGlz
KTsKICAgICByZXR1cm4gbV9pbnNwZWN0b3IuZ2V0KCk7CiB9CisKK1dlYkluc3BlY3RvclVJKiBX
ZWJQYWdlOjppbnNwZWN0b3JVSSgpCit7CisgICAgaWYgKG1faXNDbG9zZWQpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIGlmICghbV9pbnNwZWN0b3JVSSkKKyAgICAgICAgbV9pbnNwZWN0
b3JVSSA9IFdlYkluc3BlY3RvclVJOjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIG1faW5zcGVj
dG9yVUkuZ2V0KCk7Cit9CiAjZW5kaWYKLSAgICAKKwogI2lmIFBMQVRGT1JNKElPUykKIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIqIFdlYlBhZ2U6OnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKQog
ewpAQCAtMzQ3OSw3ICszNDkxLDEzIEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAg
IGlmIChXZWJJbnNwZWN0b3IqIGluc3BlY3RvciA9IHRoaXMtPmluc3BlY3RvcigpKQotICAgICAg
ICAgICAgaW5zcGVjdG9yLT5kaWRSZWNlaXZlV2ViSW5zcGVjdG9yTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKKyAgICAgICAgICAgIGluc3BlY3Rvci0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKFdlYkluc3BlY3RvclVJKiBpbnNw
ZWN0b3JVSSA9IHRoaXMtPmluc3BlY3RvclVJKCkpCisgICAgICAgICAgICBpbnNwZWN0b3JVSS0+
ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IGJhYmE1MDYuLmI3ZDQ0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTUzLDYgKzE1Myw3IEBAIGNsYXNzIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOwogY2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBXZWJJbnNwZWN0b3I7CiBjbGFzcyBX
ZWJJbnNwZWN0b3JDbGllbnQ7CitjbGFzcyBXZWJJbnNwZWN0b3JVSTsKIGNsYXNzIFdlYktleWJv
YXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTm90aWZpY2F0aW9uQ2xp
ZW50OwpAQCAtMjI2LDggKzIyNywxMCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogICAgIFdlYkluc3BlY3RvciogaW5zcGVjdG9yKCk7CisgICAgV2ViSW5zcGVjdG9yVUkqIGlu
c3BlY3RvclVJKCk7CisgICAgYm9vbCBpc0luc3BlY3RvclBhZ2UoKSB7IHJldHVybiAhIW1faW5z
cGVjdG9yVUk7IH0KICNlbmRpZgotICAgIAorCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIqIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKTsKICNlbmRpZgpA
QCAtMTE1OSw2ICsxMTYyLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAg
ICAgUmVmUHRyPFdlYkluc3BlY3Rvcj4gbV9pbnNwZWN0b3I7CisgICAgUmVmUHRyPFdlYkluc3Bl
Y3RvclVJPiBtX2luc3BlY3RvclVJOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFJl
ZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYklu
c3BlY3RvclVJRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwv
V2ViSW5zcGVjdG9yVUlFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjE4NTdjN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvZWZsL1dlYkluc3BlY3RvclVJRWZsLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCisKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQorCisjaW5jbHVkZSA8V2ViQ29yZS9FZmxJbnNwZWN0b3JVdGlsaXRpZXMuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2Jvb2wgV2ViSW5zcGVjdG9yVUk6OmNhblNhdmUoKQoreworICAgIHJldHVybiBmYWxzZTsKK30K
KworU3RyaW5nIFdlYkluc3BlY3RvclVJOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkKK3sKKyAgICBy
ZXR1cm4gImZpbGU6Ly8iICsgV2ViQ29yZTo6aW5zcGVjdG9yUmVzb3VyY2VQYXRoKCkgKyAiL2xv
Y2FsaXplZFN0cmluZ3MuanMiOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NDY3ODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcApAQCAt
MCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBN
b2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCisKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SKQorCisjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8Z2xp
Yi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworYm9vbCBXZWJJbnNwZWN0b3JVSTo6Y2FuU2F2ZSgpCit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitTdHJpbmcgV2ViSW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwoKQorewor
ICAgIHJldHVybiBTdHJpbmcoInJlc291cmNlOi8vL29yZy93ZWJraXRndGsvaW5zcGVjdG9yL0xv
Y2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyIpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3RvclVJTWFj
Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JV
SU1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmU3NmE2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJ
bnNwZWN0b3JVSU1hYy5tbQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JVSS5oIgorCisjaWYgRU5BQkxF
KElOU1BFQ1RPUikKKworI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJ
TktfU1RBR0VEX0ZSQU1FV09SSyhXZWJJbnNwZWN0b3JVSSwgUHJpdmF0ZUZyYW1ld29ya3MsIEEp
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29sIFdlYkluc3BlY3RvclVJOjpjYW5TYXZlKCkK
K3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworU3RyaW5nIFdlYkluc3BlY3RvclVJOjpsb2NhbGl6
ZWRTdHJpbmdzVVJMKCkKK3sKKyAgICBpZiAoIW1faGFzTG9jYWxpemVkU3RyaW5nc1VSTCkgewor
ICAgICAgICAvLyBDYWxsIHRoZSBzb2Z0IGxpbmsgZnJhbWV3b3JrIGZ1bmN0aW9uIHRvIGRsb3Bl
biBpdCwgdGhlbiBbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6XSB3aWxsIHdvcmsuCisg
ICAgICAgIFdlYkluc3BlY3RvclVJTGlicmFyeSgpOworCisgICAgICAgIE5TU3RyaW5nICpwYXRo
ID0gW1tOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJJbnNwZWN0
b3JVSSJdIHBhdGhGb3JSZXNvdXJjZTpAImxvY2FsaXplZFN0cmluZ3MiIG9mVHlwZTpAImpzIl07
CisgICAgICAgIGlmIChbcGF0aCBsZW5ndGhdKQorICAgICAgICAgICAgbV9sb2NhbGl6ZWRTdHJp
bmdzVVJMID0gW1tOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aF0gYWJzb2x1dGVTdHJpbmddOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2xvY2FsaXplZFN0cmluZ3NVUkwgPSBTdHJpbmco
KTsKKyAgICAgICAgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMID0gdHJ1ZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gbV9sb2NhbGl6ZWRTdHJpbmdzVVJMOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IDJjYmZlYWIuLjUyZWJm
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCkBAIC0yMDUsNyArMjA1LDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzCiB2
b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzTmFtZShjb25zdCBDaGlsZFByb2Nlc3NJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAjaWYgIVBMQVRGT1JNKElP
UykKLSAgICBOU1N0cmluZyAqYXBwbGljYXRpb25OYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6V0VCX1VJX1NUUklORygiJUAgV2ViIENvbnRlbnQiLCAiVmlzaWJsZSBuYW1lIG9mIHRo
ZSB3ZWIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1lLiIpLCAo
TlNTdHJpbmcgKilwYXJhbWV0ZXJzLnVpUHJvY2Vzc05hbWVdOworICAgIE5TU3RyaW5nICphcHBs
aWNhdGlvbk5hbWU7CisgICAgaWYgKHBhcmFtZXRlcnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEu
Z2V0KEFTQ0lJTGl0ZXJhbCgiaW5zcGVjdG9yLXByb2Nlc3MiKSkgPT0gIjEiKQorICAgICAgICBh
cHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5H
KCIlQCBXZWIgSW5zcGVjdG9yIiwgIlZpc2libGUgbmFtZSBvZiBXZWIgSW5zcGVjdG9yJ3Mgd2Vi
IHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4iKSwgKE5TU3Ry
aW5nICopcGFyYW1ldGVycy51aVByb2Nlc3NOYW1lXTsKKyAgICBlbHNlCisgICAgICAgIGFwcGxp
Y2F0aW9uTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9TVFJJTkcoIiVA
IFdlYiBDb250ZW50IiwgIlZpc2libGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRoZSBhcmd1
bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4iKSwgKE5TU3RyaW5nICopcGFyYW1ldGVycy51
aVByb2Nlc3NOYW1lXTsKICAgICBXS1NldFZpc2libGVBcHBsaWNhdGlvbk5hbWUoKENGU3RyaW5n
UmVmKWFwcGxpY2F0aW9uTmFtZSk7CiAjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238446</attachid>
            <date>2014-09-21 20:06:47 -0700</date>
            <delta_ts>2014-09-21 23:56:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135120-20140921200646.patch</filename>
            <type>text/plain</type>
            <size>157845</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODdmNGYxNzQ4ZjU4MGE3
YjhmODViNjU1ZDQ4OWJmZDkxNWQ0N2NlNy4uZDBiOWUyNzkyZjk2NmFhM2I3MTZkMTc4YjMwZGY0
YzY1YTI1ZjVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE0LTA5LTIxICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHRoZSBXZWIg
SW5zcGVjdG9yIHVzZSBhIHNlcGVyYXRlIHdlYiBwcm9jZXNzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxMjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFi
bGUuc3RyaW5nczogVXBkYXRlZC4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRT
dGF0ZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogcGFnZS9D
aHJvbWUuaDoKKyAgICAgICAgRXhwb3J0ZWQgYSBmZXcgZnVuY3Rpb25zIGFuZCBwcml2YXRlIGhl
YWRlcnMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckZy
b250ZW5kQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omhh
c0luc3BlY3RvckZyb250ZW5kQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OnNob3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
Lmg6CisgICAgICAgIE1ha2UgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgYSBwb2ludGVyIGluc3Rl
YWQgb2YgYSBzdGQ6OnVuaXF1ZV9wdHIuCisgICAgICAgIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRv
IGltcGxlbWVudCBJbnNwZWN0b3JGcm9udGVuZENsaWVudCBhcworICAgICAgICBwYXJ0IG9mIGFu
IGV4aXN0aW5nIG9iamVjdCB0aGF0IGlzIGV4dGVybmFsbHkgb3duZWQuCisKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9wZW5E
dW1teUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2xv
c2VEdW1teUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5o
OgorICAgICAgICBDaGFuZ2UgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teSBmcm9tIGJlaW5n
IG1vdmVkIHRvIG93bmVkLgorCiAyMDE0LTA5LTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgc3BlY3VsYXRpdmUgYnVpbGQgZml4LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggYjg5MGZkNzVkZmEwZjY1ZWE0ZWE2ODIzY2EyNjYzODMx
Y2NmZmE1YS4uODg1Zjc3YTAxMGNkNjI0NWM4MmExZDRkOTNjYzc0ODNmMTJiY2M4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTQtMDktMjEgIFRpbW90aHkg
SGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgdGhlIFdlYiBJbnNw
ZWN0b3IgdXNlIGEgc2VwZXJhdGUgd2ViIHByb2Nlc3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTEyMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2Nh
bGl6ZWRTdHJpbmdzLmpzOiBVcGRhdGVkLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNl
L01haW4uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IubG9hZGVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5jb250ZW50TG9hZGVkKToKKyAgICAgICAgTW92ZSBJbnNwZWN0b3JGcm9udGVuZEhv
c3QubG9hZGVkIHRvIGxhdGVyIGluIHRoZSBsb2FkLgorICAgICAgICBDYWxsaW5nIGl0IGVhcmx5
IGp1c3Qgc2hvd3MgdGhlIHdpbmRvdyBiZWZvcmUgd2UgaGF2ZQorICAgICAgICBhIHVzZXIgaW50
ZXJmYWNlIHRvIHNob3cuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvVGVzdC5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5sb2FkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmNv
bnRlbnRMb2FkZWQpOgorICAgICAgICBNYXRjaCB0aGUgY2hhbmdlcyBpbiBNYWluLmpzLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qczoK
KyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnNhdmVkVVJMKTogQ2hhbmdlIGNvbW1lbnQu
CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5hcHBlbmRlZFRvVVJMKTogQ2hhbmdlIGNv
bW1lbnQuCisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaCk6IEFkZCBhbiBh
c3NlcnQgYW5kIGVhcmx5CisgICAgICAgIHJldHVybiB0byBiZSBzYWZlIGZyb20gdW5rbm93biBj
b21tYW5kcy4KKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLmxvYWRDb21wbGV0ZWQpOiBE
ZWxldGUgX3BlbmRpbmdDb21tYW5kcywKKyAgICAgICAgbm8gbmVlZCB0byBrZWVwIGFuIGVtcHR5
IGFycmF5IGFyb3VuZCBhIG9uZSB0aW1lIHVzZS4KKwogMjAxNC0wOS0wNiAgVGltb3RoeSBIYXRj
aGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGEgPGNpcmNsZT4gaW5zdGVh
ZCBvZiBhIDxwYXRoPiBpbiBEb3dubG9hZEFycm93LnN2Zy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRleCA0
NzI3MmUyZmUzZDc4MWNiODYzN2M1Yzk3NjdhNDc1YjgyMGViZTkzLi41MWY5Mzk3NjhhYjMxYmEx
NzQ3MzJhMWE5NmI3MmU1NTRkNDNmOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTQtMDktMjEgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisg
ICAgICAgIE1ha2UgdGhlIFdlYiBJbnNwZWN0b3IgdXNlIGEgc2VwYXJhdGUgd2ViIHByb2Nlc3Mu
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTEy
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tOgorICAgICAgICAoV2ViSW5zcGVj
dG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICBSZW1vdmVkIG1fZnJvbnRl
bmRDbGllbnQgaW5pdGlhbGl6YXRpb24gc2luY2UgaXQgaXMKKyAgICAgICAgbm93IGEgc3RkOjp1
bmlxdWVfcHRyIHRoYXQgZGVmYXVsdHMgdG8gbnVsbHB0ci4KKwogMjAxNC0wOS0xNyAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjE3MzY5NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxZjg3ZTlhZjU2ZjM3ZTc5MmM3YzA2
NDA0ZDhhYzAxZTNhMTIyOTA2Li43YzMzMWE4OGJmNTBjNWJjNGIzOGZlMTVjZjUzNjEwNTE1MjZl
ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTQtMDktMjEgIFRpbW90
aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgdGhlIFdlYiBJ
bnNwZWN0b3IgdXNlIGEgc2VwYXJhdGUgd2ViIHByb2Nlc3MuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTEyMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpyZWxlYXNlRnJvbnRlbmQpOgorICAgICAgICBPd24g
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgaW5zdGVhZCBvZiBtb3ZpbmcgaXQuCisKIDIwMTQt
MDktMTkgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIE11bHRpdGhy
ZWFkZWQgV2ViR0wgaXMgYSBiYWQgaWRlYSAtIHJlbW92ZSBpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4
IDIxNTBmMjg1YWM5ZTFiZGU3YWI5ODIzZTZmM2ZmMzAzM2U3MDg4MWQuLjgxYTU1ZDFjODNiYWQ2
ZDZhOWUwMTJjNmI0MDg3Yzk3Y2M4MzEzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxNC0wOS0yMSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisK
KyAgICAgICAgTWFrZSB0aGUgV2ViIEluc3BlY3RvciB1c2UgYSBzZXBhcmF0ZSB3ZWIgcHJvY2Vz
cy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1
MTIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVj
dG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50Ojpm
cm9udGVuZENsaWVudCk6CisgICAgICAgIE93biBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCBp
bnN0ZWFkIG9mIG1vdmluZyBpdC4KKwogMjAxNC0wOS0wNiAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdA
Y3Mud2FzaGluZ3Rvbi5lZHU+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogY29udmVydCBEb2Nr
U2lkZSB0byBhbiBlbnVtIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2ZkZmVmMmM3NDYxMTI1MzA4ZmMw
NDhmN2RmMzcyY2YzNmRiNTA5Yi4uNDE2NDEyYzQ4ZmJiZmEwZGY4OGUyMjNjMjc5YWRkMjI1NWU1
MzhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MCBAQAorMjAxNC0wOS0yMSAgVGltb3RoeSBI
YXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSB0aGUgV2ViIEluc3Bl
Y3RvciB1c2UgYSBzZXBhcmF0ZSB3ZWIgcHJvY2Vzcy4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MTIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAg
ICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgQWRkZWQgbmV3IFdlYkluc3BlY3RvclVJIGZpbGVzIGFuZCBy
ZW1vdmVkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcC4KKworICAgICAgICAqIFNoYXJl
ZC9BUElPYmplY3QuaDogQWRkZWQgQnVuZGxlSW5zcGVjdG9yVUkuCisKKyAgICAgICAgKiBTaGFy
ZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvTGVnYWN5UHJvY2Vzcy9DaGlsZFByb2Nlc3NFbnRy
eVBvaW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NNYWluRGVsZWdhdGU6Omdl
dEV4dHJhSW5pdGlhbGl6YXRpb25EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvRW50cnlQb2ludFV0
aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbToKKyAgICAgICAg
KFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldEV4dHJhSW5pdGlhbGl6
YXRpb25EYXRhKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yICJpbnNwZWN0b3ItcHJvY2VzcyIg
ZGF0YSwgYSBib29sZWFuIHRoYXQgaXMgdXNlZCBieQorICAgICAgICBXZWJQcm9jZXNzOjppbml0
aWFsaXplUHJvY2Vzc05hbWUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0
b3IuY3BwOgorICAgICAgICAoV0tJbnNwZWN0b3JJc0RlYnVnZ2luZ0phdmFTY3JpcHQpOgorICAg
ICAgICAoV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKToKKyAgICAgICAgKFdL
SW5zcGVjdG9ySXNQcm9maWxpbmdKYXZhU2NyaXB0KToKKyAgICAgICAgKFdLSW5zcGVjdG9yVG9n
Z2xlSmF2YVNjcmlwdFByb2ZpbGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLSW5z
cGVjdG9yLmg6CisgICAgICAgIFN0dWIgb3V0IGZ1bmN0aW9ucyB3ZSBkb24ndCBzdXBwb3J0IGJ1
dCBuZWVkIHRvIGtlZXAgZm9yIG5pZ2h0bHkgY29tcGF0aWJpbGl0eS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclBhZ2VHcm91cHM6OmNyZWF0ZUluc3BlY3RvclBhZ2VHcm91cCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5OjpXZWJJbnNwZWN0b3JQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6OmNvbm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6c2hvd0NvbnNvbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6
c2hvd1Jlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzaG93
TWFpblJlc291cmNlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6YXR0YWNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmRldGFjaCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JDb250ZXh0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmRpc3BhdGNoTWVzc2FnZUZyb21S
ZW1vdGVGcm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjplYWdl
cmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
UHJveHk6Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZGlkQ2xv
c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoQXZhaWxhYmls
aXR5Q2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojppc0Nvbm5lY3RlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpjYW5BdHRhY2gpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
ZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2gpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW06CisgICAgICAgICgtW1dLV2ViSW5zcGVj
dG9yUHJveHlPYmpDQWRhcHRlciBjbG9zZV0pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1IaWRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybUFwcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybUF0dGFjaCk6CisgICAgICAgIENoYW5nZWQgaG93IHRoZSBJbnNwZWN0b3Ig
cGFnZSBpcyBjcmVhdGVkIGJ5IG1ha2luZyBpdCBpbiBhIG5ldyBXZWJDb250ZXh0IGZvcgorICAg
ICAgICB0aGUgSW5zcGVjdG9yLiBUaGlzIHJlbW92ZXMgdXMgZnJvbSB0aGUgbWFpbiBwcm9jZXNz
IHBvb2wgYW5kIGd1YXJhbnRlZXMgbm8gcHJvY2VzcworICAgICAgICBzaGFyaW5nIGZvciBvdXIg
dXNlciBpbnRlcmZhY2UuIEFsc28gc2VuZCBuZXcgV2ViSW5zcGVjdG9yVUkgbWVzc2FnZXMgdG8g
dGhlIEluc3BlY3RvcgorICAgICAgICBwYWdlIGFuZCBub3QgdGhlIGluc3BlY3RlZCBwYWdlIHdo
ZW4gYXBwcm9wcmlhdGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKTog
QWRkICJpbnNwZWN0b3ItcHJvY2VzcyIgdG8gZXh0cmFJbml0aWFsaXphdGlvbkRhdGEKKyAgICAg
ICAgaWYgdGhlIGNvbnRleHQgaXMgdGhlIEluc3BlY3RvciBjb250ZXh0LiBUaGlzIGlzIHVzZWQg
YnkgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3NOYW1lLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckNsaWVudDo6YnJpbmdGcm9udGVuZFRvRnJvbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Lmg6CisgICAgICAgIFJlbW92ZSB0aGUgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIGNsYXNzIGZy
b20gV2ViSW5zcGVjdG9yQ2xpZW50IGFuZCBjbGVhbiB1cCBhIGxpdHRsZS4KKyAgICAgICAgSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsIGltcGxlbWVudGF0aW9uIG1vdmVkIHRvIFdlYkluc3BlY3Rv
ci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQuY3BwOiBSZW1vdmVkLiBTdXBlcnNlZGVkIGJ5IFdlYkluc3BlY3RvclVJLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yOjpXZWJJbnNwZWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNy
ZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNsb3Nl
RnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6Om9wZW5Jbk5ld1RhYik6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6c2hvd0NvbnNvbGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNob3dSZXNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3I6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3Rvcjo6c3RhcnRQYWdlUHJvZmlsaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yOjpzdG9wUGFnZVByb2ZpbGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3Rvcjo6Y2FuQXR0YWNoV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjp1
cGRhdGVEb2NraW5nQXZhaWxhYmlsaXR5KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
OjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6
c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpy
ZW1vdGVGcm9udGVuZENvbm5lY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6
cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3IuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpkaWRDbG9z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzZXRBdHRhY2hlZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgU3RvcCB0YWtpbmcgYW4gb3B0aW9uYWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIGFuZCBi
ZSBpdCBkaXJlY3RseS4gQ3JlYXRlIGEgY29ubmVjdGlvbiB0aGF0IGNhbgorICAgICAgICBiZSBw
YXNzZWQgdG8gdGhlIG90aGVyIHdlYiBwcm9jZXNzIGZvciBXZWJJbnNwZWN0b3JVSSB0byB1c2Uu
IFN0b3AgcmVmZXJlbmNpbmcgSW5zcGVjdG9yJ3MgcGFnZQorICAgICAgICBkaXJlY3RseSwgc2lu
Y2UgaXQgaXMgaW4gYW5vdGhlciBwcm9jZXNzIG5vdy4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6Oldl
Ykluc3BlY3RvclVJKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmVzdGFibGlz
aENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6d2luZG93T2Jq
ZWN0Q2xlYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpmcm9udGVuZExv
YWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjptb3ZlV2luZG93QnkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6YnJpbmdUb0Zyb250KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yVUk6OnJlcXVlc3RTZXREb2NrU2lkZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclVJOjpzZXREb2NrU2lkZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clVJOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclVJOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yVUk6OnNldFRvb2xiYXJIZWlnaHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSTo6b3BlbkluTmV3VGFiKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
VUk6OnNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6YXBwZW5kKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6Omluc3BlY3RlZFVSTENoYW5nZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6c2hvd0NvbnNvbGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JVSTo6c2hvd1Jlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclVJOjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSTo6c3RhcnRQYWdlUHJvZmlsaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yVUk6OnN0b3BQYWdlUHJvZmlsaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yVUk6OmRpZFNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6
ZGlkQXBwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdl
VG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpzZW5kTWVzc2Fn
ZVRvQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpldmFsdWF0ZUNv
bW1hbmRPbkxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVF
eHByZXNzaW9uT25Mb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmV2YWx1
YXRlUGVuZGluZ0V4cHJlc3Npb25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yVUkuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpw
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmRpZENsb3NlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjphdHRhY2hlZEJvdHRvbSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjphdHRhY2hlZFJpZ2h0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yVUk6OmRldGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUk6OmV2YWx1YXRlQ29tbWFuZE9uTG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3RvclVJRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclVJOjpjYW5TYXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yVUk6OmNhblNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JV
STo6bG9jYWxpemVkU3RyaW5nc1VSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJJbnNwZWN0b3JVSU1hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclVJOjpjYW5TYXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmxvY2Fs
aXplZFN0cmluZ3NVUkwpOgorICAgICAgICBJbXBsZW1lbnQgdGhlIEluc3BlY3RvckZyb250ZW5k
Q2xpZW50IGFuZCBoYW5kbGUgYSBjb25uZWN0aW9uIHRvIHRoZSBpbnNwZWN0ZWQgcGFnZSdzIFdl
Ykluc3BlY3Rvci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6On5XZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zcGVjdG9yKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zcGVjdG9yVUkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIFNldHVwIGFzIGEgbGlzdGVu
ZXIgZm9yIFdlYkluc3BlY3RvclVJIG1lc3NhZ2VzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNJbnNwZWN0b3JQ
YWdlKTogSXQgaXMgYW4gSW5zcGVjdG9yIHBhZ2UgaWYgd2UgaGF2ZSBhIG1faW5zcGVjdG9yVUku
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3NOYW1lKToKKyAgICAgICAg
TmFtZSB0aGUgcHJvY2VzcyAiJUAgV2ViIEluc3BlY3RvciIgaWYgaXQgaXMgYW4gSW5zcGVjdG9y
IGNvbnRlbnQgcHJvY2Vzcy4gUHJvY2Vzc2VzIGluIHRoYXQKKyAgICAgICAgY29udGV4dCBhcmUg
bm90IHNoYXJlZCB3aXRoIG11bHRpcGxlIHBhZ2VzLgorCiAyMDE0LTA5LTE5ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFdlYkNvbnRlbnQgY3Jhc2ggaW4gV2Vi
S2l0OjpXZWJQYWdlOjpleHBhbmRlZFJhbmdlRnJvbUhhbmRsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzIGIvU291cmNlL1dlYkNv
cmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCmluZGV4IDE0MTE2N2VjMTZlNWVm
ZmE1MTVmN2U1ZjdjZDRiOWMzODk4ZWVmZjkuLjc3ZGQ3MDcxNDdjNWNmMmVjMmJkNTAxMDIyMzIw
NDVkOWFhYWJiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9j
YWxpemFibGUuc3RyaW5ncworKysgYi9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2Fs
aXphYmxlLnN0cmluZ3MKQEAgLTQ5LDYgKzQ5LDkgQEAKIC8qIFZpc2libGUgbmFtZSBvZiB0aGUg
d2ViIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4gKi8KICIl
QCBXZWIgQ29udGVudCIgPSAiJUAgV2ViIENvbnRlbnQiOwogCisvKiBWaXNpYmxlIG5hbWUgb2Yg
V2ViIEluc3BlY3RvcidzIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0
aW9uIG5hbWUuICovCisiJUAgV2ViIEluc3BlY3RvciIgPSAiJUAgV2ViIEluc3BlY3RvciI7CisK
IC8qIE5hbWUgb2YgYXBwbGljYXRpb24ncyBzaW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4g
S2V5Y2hhaW4gKi8KICIlQCBXZWJDcnlwdG8gTWFzdGVyIEtleSIgPSAiJUAgV2ViQ3J5cHRvIE1h
c3RlciBLZXkiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDg3NGU1MWU2Njc0NzZjYjRiMmYy
OGE4NjIwNDQ0ZTNmYTQwM2YyNjYuLjgxOWE1MGRhODA3YzQ0YmIwMDdkNjkyMGI4MDFmZDY4OGU4
MTdhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC03NzEsNiArNzcxLDcgQEAgX19aTjdXZWJD
b3JlMTdTUUxpdGVUcmFuc2FjdGlvbkQxRXYKIF9fWk43V2ViQ29yZTE3U3VicmVzb3VyY2VMb2Fk
ZXI2Y3JlYXRlRVBOU181RnJhbWVFUE5TXzE0Q2FjaGVkUmVzb3VyY2VFUktOU18xNVJlc291cmNl
UmVxdWVzdEVSS05TXzIxUmVzb3VyY2VMb2FkZXJPcHRpb25zRQogX19aTjdXZWJDb3JlMTdjYWNo
ZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJlRVBL
TlMyXzlDbGFzc0luZm9FCiBfX1pON1dlYkNvcmUxN2VuY29kZUZvckZpbGVOYW1lRVJLTjNXVEY2
U3RyaW5nRQorX19aTjdXZWJDb3JlMTdleGVjU3RhdGVGcm9tUGFnZUVSTlNfMTVET01XcmFwcGVy
V29ybGRFUE5TXzRQYWdlRQogX19aTjdXZWJDb3JlMTdsYW5ndWFnZURpZENoYW5nZUV2CiBfX1pO
N1dlYkNvcmUxN29wZW5UZW1wb3JhcnlGaWxlRVJLTjNXVEY2U3RyaW5nRVJpCiBfX1pON1dlYkNv
cmUxN3NSR0JDb2xvclNwYWNlUmVmRXYKQEAgLTc5NCw2ICs3OTUsNyBAQCBfX1pON1dlYkNvcmUx
OFBsYXRmb3JtUGFzdGVib2FyZDhhZGRUeXBlc0VSS04zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VM
bTBFTlMxXzE1QwogX19aTjdXZWJDb3JlMThQbGF0Zm9ybVBhc3RlYm9hcmQ4Z2V0VHlwZXNFUk4z
V1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pO
N1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDhzZXRUeXBlc0VSS04zV1RGNlZlY3RvcklOUzFf
NlN0cmluZ0VMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxOFBsYXRm
b3JtUGFzdGVib2FyZEMxRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMThTY3JpcHRHbG9i
YWxPYmplY3Qzc2V0RVBOM0pTQzlFeGVjU3RhdGVFUEtjUE5TXzIxSW5zcGVjdG9yRnJvbnRlbmRI
b3N0RQogX19aTjdXZWJDb3JlMThTdHlsZVNoZWV0Q29udGVudHMxMXBhcnNlU3RyaW5nRVJLTjNX
VEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMThTdHlsZVNoZWV0Q29udGVudHNDMUVQTlNfMTVTdHls
ZVJ1bGVJbXBvcnRFUktOM1dURjZTdHJpbmdFUktOU18xNkNTU1BhcnNlckNvbnRleHRFCiBfX1pO
N1dlYkNvcmUxOFN0eWxlU2hlZXRDb250ZW50c0QxRXYKQEAgLTE5MjYsNyArMTkyOCwxMCBAQCBf
X1pOSzdXZWJDb3JlNVJhbmdlOWVuZE9mZnNldEVSaQogX19aTks3V2ViQ29yZTVSYW5nZTlmaXJz
dE5vZGVFdgogX19aTks3V2ViQ29yZTVSYW5nZTl0ZXh0UXVhZHNFUk4zV1RGNlZlY3RvcklOU185
RmxvYXRRdWFkRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUViUE5TMF8yMFJhbmdlSW5GaXhl
ZFBvc2l0aW9uRQogX19aTks3V2ViQ29yZTVSYW5nZTl0ZXh0UmVjdHNFUk4zV1RGNlZlY3RvcklO
U183SW50UmVjdEVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFYlBOUzBfMjBSYW5nZUluRml4
ZWRQb3NpdGlvbkUKK19fWk5LN1dlYkNvcmU2Q2hyb21lMTB3aW5kb3dSZWN0RXYKIF9fWk5LN1dl
YkNvcmU2Q2hyb21lMTJjcmVhdGVXaW5kb3dFUE5TXzVGcmFtZUVSS05TXzE2RnJhbWVMb2FkUmVx
dWVzdEVSS05TXzE0V2luZG93RmVhdHVyZXNFUktOU18xNk5hdmlnYXRpb25BY3Rpb25FCitfX1pO
SzdXZWJDb3JlNkNocm9tZTEzc2V0V2luZG93UmVjdEVSS05TXzlGbG9hdFJlY3RFCitfX1pOSzdX
ZWJDb3JlNkNocm9tZTRzaG93RXYKIF9fWk5LN1dlYkNvcmU2RWRpdG9yMTJzZWxlY3RlZFRleHRF
dgogX19aTks3V2ViQ29yZTZFZGl0b3IxM2NhbkVkaXRSaWNobHlFdgogX19aTks3V2ViQ29yZTZF
ZGl0b3IxNmNvbXBvc2l0aW9uUmFuZ2VFdgpAQCAtMzEyMywxMyArMzEyOCwxOCBAQCBfX1pON1dl
YkNvcmU1Q29sb3JDMUVSS04zV1RGNlN0cmluZ0UKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogX19a
TjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTI3c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsRVJL
TjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTVJbnNwZWN0b3JDbGllbnQzMWRvRGlzcGF0Y2hN
ZXNzYWdlT25Gcm9udGVuZFBhZ2VFUE5TXzRQYWdlRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJD
b3JlMThJbnNwZWN0b3JQYWdlQWdlbnQ3ZnJhbWVJZEVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3Jl
MTlJbnNwZWN0b3JDb250cm9sbGVyMTVjb25uZWN0RnJvbnRlbmRFUE45SW5zcGVjdG9yMjRJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWxFCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIx
OGRpc2Nvbm5lY3RGcm9udGVuZEVOOUluc3BlY3RvcjI1SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNv
bkUKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4c2V0UHJvZmlsZXJFbmFibGVk
RWIKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI1ZXZhbHVhdGVGb3JUZXN0SW5G
cm9udGVuZEVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxl
cjI2c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFTlN0M19fMTEwdW5pcXVlX3B0cklOU18yM0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50RU5TMV8xNGRlZmF1bHRfZGVsZXRlSVMzX0VFRUUKK19fWk43
V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI2c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRF
UE5TXzIzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFCitfX1pON1dlYkNvcmUxOUluc3BlY3RvckNv
bnRyb2xsZXIyN2Rpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZEVSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjRzaG93RXYKIF9fWk43V2ViQ29yZTE5SW5z
cGVjdG9yQ29udHJvbGxlcjVjbG9zZUV2CitfX1pON1dlYkNvcmUyMUluc3BlY3RvckZyb250ZW5k
SG9zdDE2ZGlzY29ubmVjdENsaWVudEV2CitfX1pON1dlYkNvcmUyMUluc3BlY3RvckZyb250ZW5k
SG9zdEMxRVBOU18yM0luc3BlY3RvckZyb250ZW5kQ2xpZW50RVBOU180UGFnZUUKK19fWk43V2Vi
Q29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0RDFFdgogX19aTjdXZWJDb3JlMjJpbnN0cnVtZW50
YXRpb25Gb3JQYWdlRVBOU180UGFnZUUKIF9fWk43V2ViQ29yZTI0SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uMTdzX2Zyb250ZW5kQ291bnRlckUKIF9fWk43V2ViQ29yZTI0SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uMjZpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZUVQTlNfNFBhZ2VFCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODdk
MmJiYzVkOTA4NTBiZWU0ZTM3MTlkOTM3MDg4ODBhNDAyMTk4YS4uMGM2YTNlM2RiNjZjODFmYzBj
YWU0ODk3NGQ1NDc1MTJkMjk3OGMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTc2MSw3ICsxNzYxLDcgQEAKIAkJNEYxNTM0
RTAxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvclR5cGVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjE1MzRERjExQjUzMzAyMDAyMUZE
ODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjRGNUZGQjExQ0JEMkUxMDBBMTg2QkYgLyogSW5zcGVj
dG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0RjRGNUZGQTExQ0JEMkQyMDBBMTg2QkYgLyogSW5zcGVjdG9y
V2ViRnJvbnRlbmREaXNwYXRjaGVycy5jcHAgKi87IH07CiAJCTRGNkZERDY0MTM0MURFREQwMDFG
OEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRENjIxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3Rv
clBhZ2VBZ2VudC5jcHAgKi87IH07Ci0JCTRGNkZERDY1MTM0MURFREQwMDFGOEVFMyAvKiBJbnNw
ZWN0b3JQYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRGNkZERDYzMTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCAq
LzsgfTsKKwkJNEY2RkRENjUxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRENjMx
MzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRGNzA3QTk5MTFFRjY3OTQwMEFDREE2
OSAvKiBJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY3MDdBOTcxMUVGNjc5NDAwQUNEQTY5IC8q
IEluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5jcHAgKi87IH07CiAJCTRGNzA3QTlBMTFF
RjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNzA3QTk4MTFFRjY3OTQw
MEFDREE2OSAvKiBJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RkIzOTBBRDE1RUY2MUYzMDA3
QUQ1MUYgLyogR2VuZXJhdGVkSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEZCMzkwQUMxNUVGNjFGMzAwN0FENTFGIC8qIEdlbmVyYXRlZElt
YWdlLmNwcCAqLzsgfTsKQEAgLTIzMzAsNyArMjMzMCw3IEBACiAJCTc5RjJGNUExMTA5MTkzOUEw
MDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjJGNTlFMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3Np
dGlvbkV2ZW50LmNwcCAqLzsgfTsKIAkJNzlGMkY1QTIxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBv
c2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc5RjJGNTlGMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmggKi87IH07
CiAJCTdBMEU3NzBFMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EwRTc3MEIx
MEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgKi87IH07Ci0JCTdB
MEU3NzBGMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NzBDMTBDMDBBODgw
MEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCAqLzsgfTsKKwkJN0EwRTc3MEYxMEMw
MEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EwRTc3MEMxMEMwMEE4ODAwQTAyNzZFIC8q
IEluc3BlY3RvckZyb250ZW5kSG9zdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTdBMEU3NzFFMTBDMDBEQjEwMEEwMjc2RSAvKiBKU0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QTBFNzcxQzEwQzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhv
c3QuY3BwICovOyB9OwogCQk3QTBFNzcxRjEwQzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0b3JG
cm9udGVuZEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBMEU3NzFEMTBDMDBEQjEwMEEwMjc2RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5o
ICovOyB9OwogCQk3QTFEN0ZDQjE4Rjg1RjBGMDBDMzg1QUQgLyogbWVkaWFDb250cm9sc0xvY2Fs
aXplZFN0cmluZ3MuanMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBMUQ3RkM5MThGODVGMEYwMEMzODVBRCAvKiBtZWRpYUNvbnRyb2xzTG9jYWxpemVk
U3RyaW5ncy5qcyAqLzsgfTsKQEAgLTIzNzAsNyArMjM3MCw3IEBACiAJCTdBQjBCMUMxMTIxMUE2
MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUIwQjFCRjEyMTFBNjIyMDBBNzY5NDAgLyog
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oICovOyB9OwogCQk3QUNEODhEMzE0QzA4QkQ2MDA4NEVE
RDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FDRDg4RDExNEMwOEJENjAwODRFREQyIC8qIEluc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmNwcCAqLzsgfTsKIAkJN0FDRDg4RDQxNEMwOEJENjAwODRFREQy
IC8qIEluc3BlY3RvckluZGV4ZWREQkFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QUNEODhEMjE0QzA4QkQ2MDA4NEVERDIgLyogSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuaCAqLzsgfTsKLQkJN0FERTcyMjYxMENCQkI5QjAwNkIzQjNBIC8qIENv
bnRleHRNZW51UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBREU3MjI1MTBDQkJCOUIwMDZCM0IzQSAvKiBDb250ZXh0TWVudVByb3ZpZGVy
LmggKi87IH07CisJCTdBREU3MjI2MTBDQkJCOUIwMDZCM0IzQSAvKiBDb250ZXh0TWVudVByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QURF
NzIyNTEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBRjlCMjAyMThDRkIyREYw
MEM2NEJFRiAvKiBWVFRSZWdpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0FGOUIxRkMxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5jcHAg
Ki87IH07CiAJCTdBRjlCMjAzMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlCMUZEMThDRkIyREYw
MEM2NEJFRiAvKiBWVFRSZWdpb24uaCAqLzsgfTsKIAkJN0FGOUIyMDUxOENGQjJERjAwQzY0QkVG
IC8qIFZUVFJlZ2lvbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0FGOUIxRkYxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbkxpc3QuY3Bw
ICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xv
YmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmpl
Y3QuaAppbmRleCA4YWEwNTViZDZmOTdiYThjMjFiMDU4YzczYjA4NjE5ODU0ZmNjYTRjLi45MmJm
MjA2ZGY1MDk5YTY0YWZlMzFkNzU2MGY2OGZlNjk5N2QxZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaApAQCAtNDcsNyArNDcsNyBAQCBj
bGFzcyBTY3JpcHRHbG9iYWxPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIHNldChK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dE9iamVjdCYpOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgc3RhdGljIGJvb2wgc2V0KEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Kik7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgY2hhciogbmFtZSwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Kik7CiAjZW5kaWYKIAogICAgIHN0
YXRpYyBib29sIGdldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIERlcHJlY2F0
ZWQ6OlNjcmlwdE9iamVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRl
LmgKaW5kZXggOGE4MmNhYjA1ZDY1ODQ4ODRjOWFiYjI3MzNkMTRjNmZlMDJhYzg3Zi4uN2UyNmFj
N2E5YmExNTMzM2UyOTYyODg0YWUwZDZlYzkxYzYzMDJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBAIC01OCw3ICs1OCw3IEBAIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRl
Kik7CiBKU0M6OkV4ZWNTdGF0ZSogbWFpbldvcmxkRXhlY1N0YXRlKEZyYW1lKik7CiAKIEpTQzo6
RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tTm9kZShET01XcmFwcGVyV29ybGQmLCBOb2RlKik7Ci1K
U0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVBhZ2UoRE9NV3JhcHBlcldvcmxkJiwgUGFnZSop
OworV0VCQ09SRV9FWFBPUlQgSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21QYWdlKERPTVdy
YXBwZXJXb3JsZCYsIFBhZ2UqKTsKIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2Vy
R2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CmluZGV4IGM3Yzg3OTUyZDk2N2RkYmQwNGExN2RiMWVkYjA1MTYzMzViMTU3MDQuLjIwNDI1MTRi
OTZiNjY5NGY0ZjhlZTYyZmJiZGNlYmMzZGYzYTExZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTg2LDYgKzg2LDcgQEAgSW5z
cGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlJiBwYWdlLCBJbnNwZWN0
b3JDbGllbnQqIGluc3BlY3RvckMKICAgICAsIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKG51
bGxwdHIpCiAgICAgLCBtX3BhZ2UocGFnZSkKICAgICAsIG1faW5zcGVjdG9yQ2xpZW50KGluc3Bl
Y3RvckNsaWVudCkKKyAgICAsIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobnVsbHB0cikKICAg
ICAsIG1faXNVbmRlclRlc3QoZmFsc2UpCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAg
ICAgLCBtX2hhc1JlbW90ZUZyb250ZW5kKGZhbHNlKQpAQCAtMTg4LDkgKzE4OSw5IEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpCiAgICAgbV9pbnNw
ZWN0b3JDbGllbnQgPSBudWxscHRyOwogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNl
dEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVu
ZENsaWVudD4gaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpCit2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KEluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBp
bnNwZWN0b3JGcm9udGVuZENsaWVudCkKIHsKLSAgICBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50
ID0gV1RGOjptb3ZlKGluc3BlY3RvckZyb250ZW5kQ2xpZW50KTsKKyAgICBtX2luc3BlY3RvckZy
b250ZW5kQ2xpZW50ID0gaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiB9CiAKIGJvb2wgSW5zcGVj
dG9yQ29udHJvbGxlcjo6aGFzTG9jYWxGcm9udGVuZCgpIGNvbnN0CkBAIC0yMTMsNyArMjE0LDcg
QEAgYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0CiAK
IGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSBj
b25zdAogewotICAgIHJldHVybiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50LmdldCgpOworICAg
IHJldHVybiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50OwogfQogCiB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUsIERPTVdy
YXBwZXJXb3JsZCYgd29ybGQpCkBAIC0yODMsOCArMjg0LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpzaG93KCkKICAgICBpZiAobV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCiAgICAg
ICAgIG1faW5zcGVjdG9yQ2xpZW50LT5icmluZ0Zyb250ZW5kVG9Gcm9udCgpOwogICAgIGVsc2Ug
ewotICAgICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1f
aW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9yRnJvbnRlbmQodGhpcyk7Ci0gICAgICAgIGlm
IChmcm9udGVuZENoYW5uZWwpCisgICAgICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9yRnJvbnRl
bmQodGhpcykpCiAgICAgICAgICAgICBjb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVsKTsK
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaAppbmRleCBmZDU1OTI0YzAzNTI1NTM0OTczNzhkZmNjMzVjMTM0NjE1OWM1MmYyLi4zMGQz
Y2M3NGFkZTAzYTQxMTMyOThjZGY0OTEwNWU3ZGJlYTI0NTVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvdygpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2xvc2UoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250ZW5kQ2xpZW50Pik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChJbnNwZWN0
b3JGcm9udGVuZENsaWVudCopOwogICAgIGJvb2wgaGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQo
KSBjb25zdDsKICAgICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSosIERP
TVdyYXBwZXJXb3JsZCYpOwogCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVzdW1lKCk7CiAKICAgICBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5zcGVjdG9yQ2xpZW50OyB9Ci0gICAgSW5zcGVjdG9yUGFnZUFnZW50KiBw
YWdlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VBZ2VudDsgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdl
QWdlbnQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNhbkFjY2Vzc0luc3BlY3RlZFNjcmlwdFN0
YXRlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xNDYsMTAgKzE0NiwxMCBA
QCBwcml2YXRlOgogICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIG1fdGltZWxpbmVBZ2VudDsK
IAogICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JG
cm9udGVuZENsaWVudD4gbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudDsKICAgICBJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiAg
ICAgUGFnZSYgbV9wYWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7
CisgICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7
CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwogICAgIFZl
Y3RvcjxJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUsIDI+IG1faW5qZWN0ZWRTY3JpcHRJ
bnN0cnVtZW50YXRpb25Db29raWVzOwogICAgIGJvb2wgbV9pc1VuZGVyVGVzdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAppbmRleCA4ZThj
ZDg1MjQ0NTgzMDFiOTQzODVjNGFmOGIxOGVjYTFiNDc1Mzc0Li4xYTc0ZWRiMzk4Y2M5YjE2Yjc2
MGNmOGViM2MxZmFiNjlmMzU4M2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kSG9zdC5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JGcm9udGVuZEhvc3QoY2xpZW50LCBmcm9u
dGVuZFBhZ2UpKTsKICAgICB9CiAKLSAgICB+SW5zcGVjdG9yRnJvbnRlbmRIb3N0KCk7Ci0gICAg
dm9pZCBkaXNjb25uZWN0Q2xpZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgfkluc3BlY3RvckZy
b250ZW5kSG9zdCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzY29ubmVjdENsaWVudCgp
OwogCiAgICAgdm9pZCBsb2FkZWQoKTsKICAgICB2b2lkIHJlcXVlc3RTZXREb2NrU2lkZShjb25z
dCBTdHJpbmcmKTsKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ09OVEVY
VF9NRU5VUykKICAgICBmcmllbmQgY2xhc3MgRnJvbnRlbmRNZW51UHJvdmlkZXI7CiAjZW5kaWYK
LSAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqLCBQYWdl
KiBmcm9udGVuZFBhZ2UpOworICAgIFdFQkNPUkVfRVhQT1JUIEluc3BlY3RvckZyb250ZW5kSG9z
dChJbnNwZWN0b3JGcm9udGVuZENsaWVudCosIFBhZ2UqIGZyb250ZW5kUGFnZSk7CiAKICAgICBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9jbGllbnQ7CiAgICAgUGFnZSogbV9mcm9udGVuZFBh
Z2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5k
ZXggMTEwNjcwZWQwYjM3ODA0ZTk5MDRjNWYxOGIwZDA3ZDBlNDVhOWU1Ny4uMjVmZTFkNWE2MDNh
ZTEzMjA3ZTE0YjM0MzA4MWU2N2Q3YmUyZWFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtMTU1LDcgKzE1NSw3IEBAIHB1YmxpYzoKICAg
ICBGcmFtZSogbWFpbkZyYW1lKCk7CiAgICAgU3RyaW5nIGNyZWF0ZUlkZW50aWZpZXIoKTsKICAg
ICBGcmFtZSogZnJhbWVGb3JJZChjb25zdCBTdHJpbmcmIGZyYW1lSWQpOwotICAgIFN0cmluZyBm
cmFtZUlkKEZyYW1lKik7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZyYW1lSWQoRnJhbWUq
KTsKICAgICBib29sIGhhc0lkRm9yRnJhbWUoRnJhbWUqKSBjb25zdDsKICAgICBTdHJpbmcgbG9h
ZGVySWQoRG9jdW1lbnRMb2FkZXIqKTsKICAgICBGcmFtZSogZmluZEZyYW1lV2l0aFNlY3VyaXR5
T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luUmF3U3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmlu
ZGV4IGZjYTdmOTA4YjhlOTNkNDRiMDFlMTY4NmY1YzIyZDRhMTk0YWE0NDUuLjNlNGY1ZjBhZTcw
NjY3NzYwYjM2MjVjYjY2YzA5ODkyYjA2YmQ4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtMTAy
LDggKzEwMiw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChGcmFt
ZSosIGNvbnN0IEludFNpemUmKSBjb25zdDsKIAotICAgIHZvaWQgc2V0V2luZG93UmVjdChjb25z
dCBGbG9hdFJlY3QmKSBjb25zdDsKLSAgICBGbG9hdFJlY3Qgd2luZG93UmVjdCgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3Qgd2luZG93UmVjdCgpIGNvbnN0Owog
CiAgICAgRmxvYXRSZWN0IHBhZ2VSZWN0KCkgY29uc3Q7CiAKQEAgLTExNyw3ICsxMTcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBmb2N1c2VkRnJhbWVDaGFuZ2VkKEZyYW1lKikgY29uc3Q7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxv
YWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9u
JikgY29uc3Q7Ci0gICAgdm9pZCBzaG93KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzaG93KCkgY29uc3Q7CiAKICAgICBib29sIGNhblJ1bk1vZGFsKCkgY29uc3Q7CiAgICAgYm9v
bCBjYW5SdW5Nb2RhbE5vdygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CmluZGV4IDBhMDI2N2FjZDQ3NTQ3NWE3MDA4M2JiMWU4Yjg3NzVkOGU3ZWEyMWUuLjU5ZTcxYzQ1
ODhkOTRhYTJiNDM0MzBhY2I4YzQwYzAyOWQwZWNiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKQEAgLTE0NzEsMTIgKzE0NzEsMTAgQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+
IEludGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwp
CiAgICAgUGFnZSogZnJvbnRlbmRQYWdlID0gbV9mcm9udGVuZFdpbmRvdy0+ZG9jdW1lbnQoKS0+
cGFnZSgpOwogICAgIEFTU0VSVChmcm9udGVuZFBhZ2UpOwogCi0gICAgYXV0byBmcm9udGVuZENs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teT4oJnBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRQYWdlKTsKLQotICAgIGZyb250ZW5k
UGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdU
Rjo6bW92ZShmcm9udGVuZENsaWVudCkpOwotCi0gICAgbV9mcm9udGVuZENoYW5uZWwgPSBhZG9w
dFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRHVtbXkoZnJvbnRlbmRQYWdlKSk7Cisg
ICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnREdW1teT4oJnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRQYWdlKTsK
KyAgICBmcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9u
dGVuZENsaWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsKIAorICAgIG1fZnJvbnRlbmRDaGFu
bmVsID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teT4oZnJv
bnRlbmRQYWdlKTsKICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250
ZW5kKG1fZnJvbnRlbmRDaGFubmVsLmdldCgpKTsKIAogICAgIHJldHVybiBtX2Zyb250ZW5kV2lu
ZG93OwpAQCAtMTQ5MCwxMCArMTQ4OCwxMSBAQCB2b2lkIEludGVybmFsczo6Y2xvc2VEdW1teUlu
c3BlY3RvckZyb250ZW5kKCkKIAogICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNj
b25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJv
eWVkKTsKIAotICAgIG1fZnJvbnRlbmRDaGFubmVsLnJlbGVhc2UoKTsKKyAgICBtX2Zyb250ZW5k
Q2xpZW50ID0gbnVsbHB0cjsKKyAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7CiAKICAg
ICBtX2Zyb250ZW5kV2luZG93LT5jbG9zZShtX2Zyb250ZW5kV2luZG93LT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpOwotICAgIG1fZnJvbnRlbmRXaW5kb3cucmVsZWFzZSgpOworICAgIG1fZnJv
bnRlbmRXaW5kb3cuY2xlYXIoKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnNldEphdmFTY3JpcHRQ
cm9maWxpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAzZmY5YTdmYjk4YTQ0NTVhNDE0MzkyNjZhNjBmMDg0
NTc4OGFjOGQ5Li42Y2M3ZDI0ZjdjN2E3OGUxOGY5ZjRlMTY0NDYxOWNmZjUzY2E2YzQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgRG9jdW1l
bnRNYXJrZXI7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWxEdW1teTsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50RHVtbXk7
CiBjbGFzcyBJbnRlcm5hbFNldHRpbmdzOwogY2xhc3MgTWFsbG9jU3RhdGlzdGljczsKIGNsYXNz
IE1lbW9yeUluZm87CkBAIC0zNTAsNyArMzUxLDggQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudE1h
cmtlciogbWFya2VyQXQoTm9kZSosIGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgdW5zaWduZWQg
aW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFJlZlB0
cjxET01XaW5kb3c+IG1fZnJvbnRlbmRXaW5kb3c7Ci0gICAgT3duUHRyPEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbER1bW15PiBtX2Zyb250ZW5kQ2hhbm5lbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teT4gbV9mcm9udGVuZENsaWVudDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRHVtbXk+IG1fZnJvbnRlbmRDaGFu
bmVsOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9j
YWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCA2
NDhmNWUyYjQ1NzUwNWU5NWU2YWVhMjhkMDEyZGUwODJlOGI1YThjLi44ZmViMzQ4NmJjNmQ3MTFm
NWQ0NTQxMDIyMWZiOWEwODYyY2UxOTI5IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDE1
Ngp6Y21WO04wQXY2QndnYllZMUYqPmh2bHwzJTc/Yn1UNDNpenUzYlhNWGJQVGZ0RGxrbHd0Iz1s
YWI5V014b3khVzcKelUzWEJrVXdOYiF2dzR1SjNYPXpuOG5jXzVuZ2c/Q3BzRXFHUmtEbDxsVUtl
VmxXUHFNbGRaYzl2c2I9VTA8JXJRCno3ejJ8bCNUMWp6ITQ4dzMjMElrfiNoZVBXNXpzQ1E4RXBW
ejBCISh6MDNyWmcwM1pOODAzWk0mMEJyemEwQikwagpLQTEkKiMrQzJnMlE5RSh+CgpkZWx0YSAx
MjI1CnpjbWQ1Ki0lSGFgNmhIUXImfW9vTnppVDxfbmBgTT54fjslQkE3bSZmbDlFdiVlWnl+YXZv
Q0NHWjJQN0Axd2xfSwp6aHpCSjA7dlZ2JEQzQzQ8M2MtRnNfITlPMV53OCh0QzREei1fU25QV29f
bypkZUQxbURlRDBAaD9QcGNuKzFJb1gKemg0QF5uUHB5P3g1d1dLJnBXKUhLU3pkWDRTJWRANklA
PmRwcCVmKmx2fDsrZjJGKn1gOSNFUVdiPSpmTDg4aWF4CnpxWGY+fjswX208VzA3bSg8M01iUndA
TjF5RFI3aktsTyMpSjd9eW5YTmVWMX5fJERZdjR7PiVSY0hgM0U/TVdKPwp6VGQtTU5lUzs9WStE
KHdvekBNZ1o/NUFpOUYqb0h1V2lhfXtMMSUjZCZLeT8jUU5IZlVNY2glT2AqYGRVeWRgK0QKeiMx
I0NKQCh1WFF1cH5KK3Y0UDh9bWB6IVF2WEx6cl40UjU2OCpHSkcwbiExSmZydiRtaTFzVndCKTZM
MDlzQDBSCnpmV3NWcWF+NWZjYnRte2dST2RhU0k8N24mNmgtSGBLMzJmUDwoIVkzX2pOU2p1VU1Y
YzkyZFVUbSE4T2heYjg4bwp6TGZ2JWhySE1HdGI2bzZnUnlBSngre1QqTy1ScUwxKChmSEteKHdf
KyEpJW4jYkJuMXIjakthM29Hckk/JCZvRW0Kekx3MUxJNTJWUEotKmtFMWBrVGQ2R25ENTFpPlQ7
KndlQVZtTD9IIVhzYk8xbTUzQnF+UWFtK0xER1l6dUAlUEtvCnpPQSNHfD1Tbil4KFlLdyFNem9Z
JTBUUVlTUGwtKE9VTzNGI2ZhTEZ8PDZeNzJjfHRaM1Q2RikyU31UUylAWksrQApxKDg4Z3Aobjkj
JU1YZ0V0LUNiWVBedStFcjReUXZ3WTw7O1IrUEBCYSNGSE4qRXghUGNVPThkNQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwppbmRleCBlZDhl
MmEwMjM1MWMwMGU0YmEyOTk3NzAxYWVkMTkyZDQ1NTk2MGU0Li5mYTIzNGM3MGRiMmNlNjgzYTY1
OTdmNzA5NWVmYjZhNTZhZGJhYTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9CYXNlL01haW4uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCkBAIC00OSwxMCArNDksNyBAQCBXZWJJbnNwZWN0b3Iu
VHlwZUlkZW50aWZpZXJDb29raWVLZXkgPSAicmVwcmVzZW50ZWQtb2JqZWN0LXR5cGUiOwogCiBX
ZWJJbnNwZWN0b3IubG9hZGVkID0gZnVuY3Rpb24oKQogewotICAgIC8vIFRlbGwgdGhlIEluc3Bl
Y3RvckZyb250ZW5kSG9zdCB3ZSBsb2FkZWQgZmlyc3QgdG8gZXN0YWJsaXNoIGNvbW11bmljYXRp
b24gd2l0aCBJbnNwZWN0b3JCYWNrZW5kLgotICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5sb2Fk
ZWQoKTsKLQotICAgIC8vIEluaXRpYWxpemUgV2ViU29ja2V0IHRvIGNvbW11bmljYXRpb24KKyAg
ICAvLyBJbml0aWFsaXplIFdlYlNvY2tldCB0byBjb21tdW5pY2F0aW9uLgogICAgIHRoaXMuX2lu
aXRpYWxpemVXZWJTb2NrZXRJZk5lZWRlZCgpOwogCiAgICAgLy8gUmVnaXN0ZXIgb2JzZXJ2ZXJz
IGZvciBldmVudHMgZnJvbSB0aGUgSW5zcGVjdG9yQmFja2VuZC4KQEAgLTMyOCwxMiArMzI1LDEz
IEBAIFdlYkluc3BlY3Rvci5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogICAgIGlmICh0aGlz
Ll9kZXRhaWxzU2lkZWJhcldpZHRoU2V0dGluZy52YWx1ZSkKICAgICAgICAgdGhpcy5kZXRhaWxz
U2lkZWJhci53aWR0aCA9IHRoaXMuX2RldGFpbHNTaWRlYmFyV2lkdGhTZXR0aW5nLnZhbHVlOwog
Ci0gICAgLy8gVXBkYXRlIHRoZSBkb2NrZWQgc3RhdGUgYmFzZWQgb24gdGhlIHF1ZXJ5IHN0cmlu
ZyBwYXNzZWQgd2hlbiB0aGUgV2ViIEluc3BlY3RvciB3YXMgbG9hZGVkLgotICAgIHRoaXMudXBk
YXRlRG9ja2VkU3RhdGUocGFyc2VMb2NhdGlvblF1ZXJ5UGFyYW1ldGVycygpLmRvY2tTaWRlIHx8
ICJ1bmRvY2tlZCIpOwotCi0gICAgLy8gVGVsbCB0aGUgZnJvbnRlbmQgQVBJIHdlIGFyZSBsb2Fk
ZWQgc28gYW55IHBlbmRpbmcgZnJvbnRlbmQgY29tbWFuZHMgY2FuIGJlIGRpc3BhdGNoZWQuCisg
ICAgLy8gU2lnbmFsIHRoYXQgdGhlIGZyb250ZW5kIGlzIG5vdyByZWFkeSB0byByZWNlaXZlIG1l
c3NhZ2VzLgogICAgIEluc3BlY3RvckZyb250ZW5kQVBJLmxvYWRDb21wbGV0ZWQoKTsKIAorICAg
IC8vIFRlbGwgdGhlIEluc3BlY3RvckZyb250ZW5kSG9zdCB3ZSBsb2FkZWQsIHdoaWNoIGNhdXNl
cyB0aGUgd2luZG93IHRvIGRpc3BsYXkKKyAgICAvLyBhbmQgcGVuZGluZyBJbnNwZWN0b3JGcm9u
dGVuZEFQSSBjb21tYW5kcyB0byBiZSBzZW50LgorICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5s
b2FkZWQoKTsKKwogICAgIC8vIFNldCBjb2xsYXBzZWQgYWZ0ZXIgbG9hZGluZyB0aGUgcGVuZGlu
ZyBmcm9udGVuZCBjb21tYW5kcyBhcmUgZGlzcGF0Y2hlZCBzbyBvbmx5IHRoZSBmaW5hbAogICAg
IC8vIHNlbGVjdGVkIHNpZGViYXIgcGFuZWwgZ2V0cyBzaG93biBhbmQgaGFzIGEgc2F5IGluIHdo
YXQgY29udGVudCB2aWV3IGdldHMgc2hvd24uCiAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhci5j
b2xsYXBzZWQgPSB0aGlzLl9uYXZpZ2F0aW9uU2lkZWJhckNvbGxhcHNlZFNldHRpbmcudmFsdWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1Rl
c3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1Rlc3QuanMK
aW5kZXggNzQyMDc1YTdkMzcxZDY0NDUwNGQyMDJlOGZjYmFhOTFhMDc5ODM1ZC4uMzgwZWE2Nzc4
MDU5YmIyMmViOTg2OTgyYmU4MmU3YmIwM2JjZjhhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9UZXN0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVGVzdC5qcwpAQCAtNTUsMTUgKzU1LDE2IEBAIFdl
Ykluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiAKICAgICAvLyBQZXJmb3JtIG9uZS10aW1l
IHRhc2tzLgogICAgIFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5yZXF1ZXN0Q1NTTmFtZUNv
bXBsZXRpb25zKCk7Ci0KLSAgICAvLyBFc3RhYmxpc2ggY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBJ
bnNwZWN0b3JCYWNrZW5kLgotICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5sb2FkZWQoKTsKIH0K
IAogV2ViSW5zcGVjdG9yLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiB7CiAgICAgLy8gU2ln
bmFsIHRoYXQgdGhlIGZyb250ZW5kIGlzIG5vdyByZWFkeSB0byByZWNlaXZlIG1lc3NhZ2VzLgog
ICAgIEluc3BlY3RvckZyb250ZW5kQVBJLmxvYWRDb21wbGV0ZWQoKTsKKworICAgIC8vIFRlbGwg
dGhlIEluc3BlY3RvckZyb250ZW5kSG9zdCB3ZSBsb2FkZWQsIHdoaWNoIGNhdXNlcyB0aGUgd2lu
ZG93IHRvIGRpc3BsYXkKKyAgICAvLyBhbmQgcGVuZGluZyBJbnNwZWN0b3JGcm9udGVuZEFQSSBj
b21tYW5kcyB0byBiZSBzZW50LgorICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5sb2FkZWQoKTsK
IH0KIAogV2ViSW5zcGVjdG9yLlVJU3RyaW5nID0gZnVuY3Rpb24oc3RyaW5nKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9y
RnJvbnRlbmRBUEkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwppbmRleCAxMjI3MjExMjhkYWZiZWIzMTk0MWRi
MGNjMTg2MWJiMDc2YTE1ZDQ5Li5hNjQ3NjhiYWU3YTdmZGQ0YjJlNjk0NGU3ZDc0ZTU4ZTc2NWJm
N2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwpAQCAtMjUsMjgg
KzI1LDE2IEBACiAKIEluc3BlY3RvckZyb250ZW5kQVBJID0gewogICAgIF9sb2FkZWQ6IGZhbHNl
LAotCiAgICAgX3BlbmRpbmdDb21tYW5kczogW10sCiAKICAgICBzYXZlZFVSTDogZnVuY3Rpb24o
dXJsKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAg
Ly8gTm90IHVzZWQgeWV0LgogICAgIH0sCiAKICAgICBhcHBlbmRlZFRvVVJMOiBmdW5jdGlvbih1
cmwpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgotICAgIH0sCi0K
LSAgICBpc0RlYnVnZ2luZ0VuYWJsZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBOb3QgaW1wbGVtZW50ZWQuCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCi0g
ICAgc2V0RGVidWdnaW5nRW5hYmxlZDogZnVuY3Rpb24oZW5hYmxlZCkKLSAgICB7Ci0gICAgICAg
IC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgICAgIC8vIE5vdCB1c2VkIHlldC4KICAg
ICB9LAogCiAgICAgaXNUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQ6IGZ1bmN0aW9uKCkKQEAgLTEw
OCwxMSArOTYsNiBAQCBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICAgICAgV2ViSW5zcGVj
dG9yLnJlc291cmNlU2lkZWJhclBhbmVsLnNob3dTb3VyY2VDb2RlRm9yRnJhbWUoZnJhbWVJZGVu
dGlmaWVyLCB0cnVlKTsKICAgICB9LAogCi0gICAgc2V0RG9ja2luZ1VuYXZhaWxhYmxlOiBmdW5j
dGlvbih1bmF2YWlsYWJsZSkKLSAgICB7Ci0gICAgICAgIC8vIE5vdCB1c2VkLgotICAgIH0sCi0K
ICAgICBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZDogZnVuY3Rpb24oaWQpCiAgICAgewogICAgICAg
ICBXZWJJbnNwZWN0b3IuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaWQpOwpAQCAtMTQxLDYgKzEy
NCwxMCBAQCBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHZh
ciBtZXRob2ROYW1lID0gc2lnbmF0dXJlLnNoaWZ0KCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KEluc3BlY3RvckZyb250ZW5kQVBJW21ldGhvZE5hbWVdLCAiVW5leHBlY3RlZCBJbnNwZWN0b3JG
cm9udGVuZEFQSSBtZXRob2QgbmFtZTogIiArIEluc3BlY3RvckZyb250ZW5kQVBJW21ldGhvZE5h
bWVdKTsKKyAgICAgICAgaWYgKCFJbnNwZWN0b3JGcm9udGVuZEFQSVttZXRob2ROYW1lXSkKKyAg
ICAgICAgICAgIHJldHVybjsKKwogICAgICAgICByZXR1cm4gSW5zcGVjdG9yRnJvbnRlbmRBUElb
bWV0aG9kTmFtZV0uYXBwbHkoSW5zcGVjdG9yRnJvbnRlbmRBUEksIHNpZ25hdHVyZSk7CiAgICAg
fSwKIApAQCAtMTUxLDYgKzEzOCw2IEBAIEluc3BlY3RvckZyb250ZW5kQVBJID0gewogICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IEluc3BlY3RvckZyb250ZW5kQVBJLl9wZW5kaW5nQ29tbWFu
ZHMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRj
aChJbnNwZWN0b3JGcm9udGVuZEFQSS5fcGVuZGluZ0NvbW1hbmRzW2ldKTsKIAotICAgICAgICBJ
bnNwZWN0b3JGcm9udGVuZEFQSS5fcGVuZGluZ0NvbW1hbmRzID0gW107CisgICAgICAgIGRlbGV0
ZSBJbnNwZWN0b3JGcm9udGVuZEFQSS5fcGVuZGluZ0NvbW1hbmRzOwogICAgIH0KIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnRJT1MubW0KaW5kZXggZDMwZDhiOTEyMjU2M2ZjOTg5MWU1ZGNjYzBlZDk1NWU2MWFlMTk3
Yy4uOThkY2FlZDMxOTBkMTg5ZDcwMWNlMmY0MjgyMjI5YjdkMzBkZDhkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dElPUy5tbQpAQCAtNDYsNyArNDYsNiBAQCBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3Rv
ckNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiAgICAg
LCBtX2hpZ2hsaWdodGVyKGFkb3B0TlMoW1tXZWJOb2RlSGlnaGxpZ2h0ZXIgYWxsb2NdIGluaXRX
aXRoSW5zcGVjdGVkV2ViVmlldzp3ZWJWaWV3XSkpCiAgICAgLCBtX2Zyb250ZW5kUGFnZSgwKQot
ICAgICwgbV9mcm9udGVuZENsaWVudCgwKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDQ4NTY4MzY3
ZjQxNjUyYTNkNzdkYTRhODYwZDRkYzdmMzQ0MzlhZjcuLjg5ODc3ZWJlNGE1Y2RiMDYyNDU5Nzcx
Y2VhMTBhZWJmMzM3Zjg0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0
ZToKICAgICBXZWJWaWV3ICptX3dlYlZpZXc7CiAgICAgUmV0YWluUHRyPFdlYk5vZGVIaWdobGln
aHRlcj4gbV9oaWdobGlnaHRlcjsKICAgICBXZWJDb3JlOjpQYWdlKiBtX2Zyb250ZW5kUGFnZTsK
LSAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9mcm9udGVuZENsaWVudDsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1fZnJvbnRlbmRDbGll
bnQ7CiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCA2ZTE3ODlkN2NiYWE2NGU4ZWE0OWE0N2EwMGIy
YzZmYjE2MDZkNGNlLi44MzA4YjllNzNlMTcwMDQ0NGExN2Y5MGYwNDMxMTM0YmE4ZDYzNDY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tCkBAIC0xMzMsOCArMTMzLDcgQEAgQGVuZAogV2ViSW5zcGVjdG9yQ2xpZW50
OjpXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAqd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3
ZWJWaWV3KQogICAgICwgbV9oaWdobGlnaHRlcihhZG9wdE5TKFtbV2ViTm9kZUhpZ2hsaWdodGVy
IGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6d2ViVmlld10pKQotICAgICwgbV9mcm9u
dGVuZFBhZ2UoMCkKLSAgICAsIG1fZnJvbnRlbmRDbGllbnQoMCkKKyAgICAsIG1fZnJvbnRlbmRQ
YWdlKG51bGxwdHIpCiB7CiB9CiAKQEAgLTE1MCwxMSArMTQ5LDEzIEBAIEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5z
cGVjdG9yQ29uCiAgICAgW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgc2V0SW5zcGVjdG9yQ2xpZW50
OnRoaXNdOwogCiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKFt3aW5kb3dDb250cm9sbGVyLmdl
dCgpIHdlYlZpZXddKTsKLSAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV93ZWJWaWV3LCB3aW5kb3dDb250cm9sbGVy
LmdldCgpLCBpbnNwZWN0b3JDb250cm9sbGVyLCBtX2Zyb250ZW5kUGFnZSwgY3JlYXRlRnJvbnRl
bmRTZXR0aW5ncygpKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQuZ2V0
KCk7Ci0gICAgUmV0YWluUHRyPFdlYkluc3BlY3RvckZyb250ZW5kPiB3ZWJJbnNwZWN0b3JGcm9u
dGVuZCA9IGFkb3B0TlMoW1tXZWJJbnNwZWN0b3JGcm9udGVuZCBhbGxvY10gaW5pdFdpdGhGcm9u
dGVuZENsaWVudDpmcm9udGVuZENsaWVudC5nZXQoKV0pOworICAgIG1fZnJvbnRlbmRDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX3dlYlZpZXcs
IHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RvckNvbnRyb2xsZXIsIG1fZnJvbnRlbmRQ
YWdlLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOworCisgICAgUmV0YWluUHRyPFdlYkluc3Bl
Y3RvckZyb250ZW5kPiB3ZWJJbnNwZWN0b3JGcm9udGVuZCA9IGFkb3B0TlMoW1tXZWJJbnNwZWN0
b3JGcm9udGVuZCBhbGxvY10gaW5pdFdpdGhGcm9udGVuZENsaWVudDptX2Zyb250ZW5kQ2xpZW50
LmdldCgpXSk7CiAgICAgW1ttX3dlYlZpZXcgaW5zcGVjdG9yXSBzZXRGcm9udGVuZDp3ZWJJbnNw
ZWN0b3JGcm9udGVuZC5nZXQoKV07Ci0gICAgbV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChXVEY6Om1vdmUoZnJvbnRlbmRDbGll
bnQpKTsKKworICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQobV9mcm9udGVuZENsaWVudC5nZXQoKSk7CisKICAgICByZXR1
cm4gdGhpczsKIH0KIApAQCAtMTk5LDggKzIwMCw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50
OjpkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCkKIAogdm9pZCBXZWJJbnNwZWN0
b3JDbGllbnQ6OnJlbGVhc2VGcm9udGVuZCgpCiB7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IDA7
Ci0gICAgbV9mcm9udGVuZFBhZ2UgPSAwOworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBudWxscHRy
OworICAgIG1fZnJvbnRlbmRQYWdlID0gbnVsbHB0cjsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRl
eCAzZjM2ZGVmOGFiMDk5MzUwZmRkYTcyMWM0M2JhNmNlNDBjMzU3M2ZiLi43ZjIyYmM0YWJiYmY1
NGNmZDNkNWY3MGU3MzhlMjBmYzU1YTg4ZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE3MSw5ICsx
NzEsOCBAQCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNs
aWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKElucwogICAgICAgICByZXR1cm4gMDsKIAogICAg
IG1fZnJvbnRlbmRQYWdlID0gY29yZShmcm9udGVuZFdlYlZpZXcuZ2V0KCkpOwotICAgIGF1dG8g
ZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0hhbmRsZSwgZnJvbnRl
bmRId25kLCBmcm9udGVuZFdlYlZpZXcsIGZyb250ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0
ZUZyb250ZW5kU2V0dGluZ3MoKSk7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5kQ2xp
ZW50LmdldCgpOwotICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7CisgICAg
bV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0ZWRXZWJWaWV3SGFuZGxlLCBmcm9u
dGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhpcywgY3Jl
YXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1fZnJvbnRlbmRDbGllbnQuZ2V0
KCkpOwogICAgIG1fZnJvbnRlbmRIYW5kbGUgPSBmcm9udGVuZEh3bmQ7CiAgICAgcmV0dXJuIHRo
aXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5oCmluZGV4IGIzMWRkODliNDYyODZjMzBjMTQ0MmE4Y2VjZTE0NzgzZTA2
ZDAyNDguLjQ3ZmJlYTBhODA3NDFkNWNiOTcyOGU4MTdjYzQ5N2EyZTkyYmM5YTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVsZWFzZUZyb250ZW5k
KCk7CiAKLSAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogZnJvbnRlbmRDbGllbnQoKSB7
IHJldHVybiBtX2Zyb250ZW5kQ2xpZW50OyB9CisgICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQqIGZyb250ZW5kQ2xpZW50KCkgeyByZXR1cm4gbV9mcm9udGVuZENsaWVudC5nZXQoKTsgfQog
CiAgICAgdm9pZCB1cGRhdGVIaWdobGlnaHQoKTsKIApAQCAtODUsNyArODUsNyBAQCBwcml2YXRl
OgogCiAgICAgV2ViVmlldyogbV9pbnNwZWN0ZWRXZWJWaWV3OwogICAgIFdlYkNvcmU6OlBhZ2Uq
IG1fZnJvbnRlbmRQYWdlOwotICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2Zyb250
ZW5kQ2xpZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dD4gbV9mcm9udGVuZENsaWVudDsKICAgICBIV05EIG1faW5zcGVjdGVkV2ViVmlld0hhbmRsZTsK
ICAgICBIV05EIG1fZnJvbnRlbmRIYW5kbGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNGYz
OTIzZDQxYjNkM2M0ZTg5MTQ1NWU5ZjhjMGQ3MTgyNDZkZTZjMi4uNmJkYzU5ZGM1YTJlYjc1NDg5
N2ZkY2M5NjRiMDNiZGI0MmNkYTYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTUzMCw3ICs1
MzAsNiBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmNwcAotICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJOb3RpZmljYXRpb25DbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbHVnSW5DbGllbnQuY3BwCkBAIC01NTIsNiArNTUxLDcgQEAgc2V0KFdlYktpdDJfU09V
UkNFUwogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5jcHAKICAgICBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3Bw
CiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcAog
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAKQEAgLTY0NSw2ICs2NDUsNyBAQCBzZXQoV2ViS2l0Ml9N
RVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIu
bWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRy
b2xsZXIubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1l
c3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2Vz
LmluCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KICAgICBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkubWVzc2FnZXMuaW4KICkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGVhZWY1MTZmYjgzYmUxZjQ5M2M0OTQ2ZGE4ZTc0MDAx
ZTU4MGQ0MjQuLmNhMDZhMDY4OTJjNGQ3ZjNhNTMzMTgwMDNhOWM1MzE2ZDZiYjkwMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTIxLDYgKzEyMSw3IEBAIE1FU1NBR0VfUkVD
RUlWRVJTID0gXAogICAgIFdlYkljb25EYXRhYmFzZVByb3h5IFwKICAgICBXZWJJbnNwZWN0b3Ig
XAogICAgIFdlYkluc3BlY3RvclByb3h5IFwKKyAgICBXZWJJbnNwZWN0b3JVSSBcCiAgICAgV2Vi
TWVkaWFDYWNoZU1hbmFnZXIgXAogICAgIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkgXAogICAg
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAw
MWUzNGVhMGJmOWY4OGZiNmZlOTZhNDY5YTNlMjIzNjFmMGE4ZDFjLi5mMDdmYjYzOTExNWViMTQy
NjljZGMxNjcyYzA3OTRjMWJjZDBiMzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAt
MTk0LDcgKzE5NCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJv
Y2Vzcy9XZWJQYWdlL2F0ay9XZWJQYWdlQWNjZXNzaWJpbGl0eU9iamVjdEF0ay5jcHAKIAotICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9yRWZsLmNwcAorICAgIFdlYlByb2Nl
c3MvV2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9yVUlFZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL2VmbC9XZWJQYWdlRWZsLmNwcAogCiAgICAgV2ViUHJvY2Vzcy9lZmwvU2VjY29tcEZpbHRl
cnNXZWJQcm9jZXNzRWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1H
VEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2ODU2ODYx
Yzg5ZmVjZTIxYWI3Zjg5NjEwZjgyZTNlYTQ4MWNmMGNhLi5mZTYzYzFmNDVhM2IwZmM2YzJlYWRj
N2I5Njg0NDBkYzRmYmE4ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMzAyLDcg
KzMwMiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvUHJpbnRlckxpc3RHdGsuY3BwCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNw
ZWN0b3JHdGsuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0
ay5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCiAgICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSU9iamVjdC5oCmluZGV4IDZkZjQ5MTgzZDJiYzQ2MjY1Y2MwOWY3YjVkNTc0YTA3YjNj
MGM1OTIuLjkyMmU2ZGEwM2ZhNTFjZDFlZmNjYzdjNjdhMWZmMGI3NTMxNTFkMzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJT2JqZWN0LmgKQEAgLTE0Myw2ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IEJ1bmRsZUZyYW1lLAogICAgICAgICBCdW5kbGVIaXRUZXN0UmVzdWx0LAogICAgICAgICBCdW5k
bGVJbnNwZWN0b3IsCisgICAgICAgIEJ1bmRsZUluc3BlY3RvclVJLAogICAgICAgICBCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBCdW5kbGVOb2RlSGFuZGxlLAogICAgICAgICBCdW5k
bGVQYWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGls
aXRpZXMvbWFjL0xlZ2FjeVByb2Nlc3MvQ2hpbGRQcm9jZXNzRW50cnlQb2ludC5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9MZWdhY3lQcm9jZXNzL0No
aWxkUHJvY2Vzc0VudHJ5UG9pbnQubW0KaW5kZXggMTNmMzA2ZTAwZWRlYWZhZTEwNTIzMzMwZjMx
MTdmNjY0MWNmM2Q1Yi4uZDk1Y2VmZGNhNmUzZGFiNzFhMWFkZTZkZmE4OWM4NDA5NTQxNWMxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFj
L0xlZ2FjeVByb2Nlc3MvQ2hpbGRQcm9jZXNzRW50cnlQb2ludC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvTGVnYWN5UHJvY2Vzcy9DaGlsZFBy
b2Nlc3NFbnRyeVBvaW50Lm1tCkBAIC04OCw4ICs4OCwxMSBAQCBib29sIENoaWxkUHJvY2Vzc01h
aW5EZWxlZ2F0ZTo6Z2V0Q2xpZW50UHJvY2Vzc05hbWUoU3RyaW5nJiBjbGllbnRQcm9jZXNzTmFt
ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDaGlsZFByb2Nlc3NNYWluRGVsZWdhdGU6
OmdldEV4dHJhSW5pdGlhbGl6YXRpb25EYXRhKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JikKK2Jv
b2wgQ2hpbGRQcm9jZXNzTWFpbkRlbGVnYXRlOjpnZXRFeHRyYUluaXRpYWxpemF0aW9uRGF0YShI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEpCiB7CisgICAg
U3RyaW5nIGluc3BlY3RvclByb2Nlc3MgPSBtX2NvbW1hbmRMaW5lWyJpbnNwZWN0b3ItcHJvY2Vz
cyJdOworICAgIGlmICghaW5zcGVjdG9yUHJvY2Vzcy5pc0VtcHR5KCkpCisgICAgICAgIGV4dHJh
SW5pdGlhbGl6YXRpb25EYXRhLmFkZChBU0NJSUxpdGVyYWwoImluc3BlY3Rvci1wcm9jZXNzIiks
IGluc3BlY3RvclByb2Nlc3MpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9Y
UENTZXJ2aWNlRW50cnlQb2ludC5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50
VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCmluZGV4IDE2
OTdlZTliMjcyNmY2YWRjYTBjNjc5YmE4ZmM5ZTFjNjE4ZDM5NzIuLjM2NWVhOGQyYmRjYTNmYzFm
NDkyN2I5OWE3NGU4ZDQ2Y2I4MjFjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9Y
UENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCkBAIC05Miw4ICs5MiwxNCBAQCBib29s
IFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRDbGllbnRQcm9jZXNzTmFtZShTdHJp
bmcmIGNsaWVudFByb2Nlc3NOYQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFhQQ1NlcnZp
Y2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRFeHRyYUluaXRpYWxpemF0aW9uRGF0YShIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiYpCitib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpn
ZXRFeHRyYUluaXRpYWxpemF0aW9uRGF0YShIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZXh0cmFJ
bml0aWFsaXphdGlvbkRhdGEpCiB7CisgICAgeHBjX29iamVjdF90IGV4dHJhRGF0YUluaXRpYWxp
emF0aW9uRGF0YU9iamVjdCA9IHhwY19kaWN0aW9uYXJ5X2dldF92YWx1ZShtX2luaXRpYWxpemVy
TWVzc2FnZSwgImV4dHJhLWluaXRpYWxpemF0aW9uLWRhdGEiKTsKKworICAgIFN0cmluZyBpbnNw
ZWN0b3JQcm9jZXNzID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFs
aXphdGlvbkRhdGFPYmplY3QsICJpbnNwZWN0b3ItcHJvY2VzcyIpOworICAgIGlmICghaW5zcGVj
dG9yUHJvY2Vzcy5pc0VtcHR5KCkpCisgICAgICAgIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFk
ZChBU0NJSUxpdGVyYWwoImluc3BlY3Rvci1wcm9jZXNzIiksIGluc3BlY3RvclByb2Nlc3MpOwor
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tJbnNwZWN0b3IuY3BwCmluZGV4IDE2ZTg0NWIwNzRlNDNkZDUyZGE5OGZlZjcxZjk1Njlh
NjJmZjlmMGIuLjhjOTk3NWI0YzlmN2U4N2UxMGZiMGRlNTM4MDFkOTdkN2RjYTliN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcApAQCAtMTc0
LDQyICsxNzQsMzAgQEAgdm9pZCBXS0luc3BlY3RvckRldGFjaChXS0luc3BlY3RvclJlZiBpbnNw
ZWN0b3JSZWYpCiAjZW5kaWYKIH0KIAotYm9vbCBXS0luc3BlY3RvcklzRGVidWdnaW5nSmF2YVNj
cmlwdChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3JSZWYpCitib29sIFdLSW5zcGVjdG9ySXNEZWJ1
Z2dpbmdKYXZhU2NyaXB0KFdLSW5zcGVjdG9yUmVmKQogewotI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgcmV0dXJuIHRvSW1wbChpbnNwZWN0b3JSZWYpLT5pc0RlYnVnZ2luZ0phdmFTY3JpcHQo
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGluc3BlY3RvclJlZik7CisgICAgLy8gRklYTUU6
IFRoaXMgaXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggbmlnaHRseSBidWlsZHMg
YW5kIFNhZmFyaS4KKyAgICAvLyBSZW1vdmUgaXQgb25jZSBTYWZhcmkgbm8gbG9uZ2VyIGRlcGVu
ZHMgb24gaXQuCiAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAKLXZvaWQgV0tJbnNwZWN0
b3JUb2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikK
K3ZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKFdLSW5zcGVjdG9yUmVm
KQogewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgdG9JbXBsKGluc3BlY3RvclJlZiktPnRv
Z2dsZUphdmFTY3JpcHREZWJ1Z2dpbmcoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGluc3Bl
Y3RvclJlZik7Ci0jZW5kaWYKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBmb3IgYmFja3dhcmRzIGNv
bXBhdGliaWxpdHkgd2l0aCBuaWdodGx5IGJ1aWxkcyBhbmQgU2FmYXJpLgorICAgIC8vIFJlbW92
ZSBpdCBvbmNlIFNhZmFyaSBubyBsb25nZXIgZGVwZW5kcyBvbiBpdC4KIH0KIAotYm9vbCBXS0lu
c3BlY3RvcklzUHJvZmlsaW5nSmF2YVNjcmlwdChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3JSZWYp
Citib29sIFdLSW5zcGVjdG9ySXNQcm9maWxpbmdKYXZhU2NyaXB0KFdLSW5zcGVjdG9yUmVmKQog
ewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgcmV0dXJuIHRvSW1wbChpbnNwZWN0b3JSZWYp
LT5pc1Byb2ZpbGluZ0phdmFTY3JpcHQoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGluc3Bl
Y3RvclJlZik7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmls
aXR5IHdpdGggbmlnaHRseSBidWlsZHMgYW5kIFNhZmFyaS4KKyAgICAvLyBSZW1vdmUgaXQgb25j
ZSBTYWZhcmkgbm8gbG9uZ2VyIGRlcGVuZHMgb24gaXQuCiAgICAgcmV0dXJuIGZhbHNlOwotI2Vu
ZGlmCiB9CiAKLXZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKFdLSW5z
cGVjdG9yUmVmIGluc3BlY3RvclJlZikKK3ZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0
UHJvZmlsaW5nKFdLSW5zcGVjdG9yUmVmKQogewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAg
dG9JbXBsKGluc3BlY3RvclJlZiktPnRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmcoKTsKLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKGluc3BlY3RvclJlZik7Ci0jZW5kaWYKKyAgICAvLyBGSVhNRTog
VGhpcyBpcyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBuaWdodGx5IGJ1aWxkcyBh
bmQgU2FmYXJpLgorICAgIC8vIFJlbW92ZSBpdCBvbmNlIFNhZmFyaSBubyBsb25nZXIgZGVwZW5k
cyBvbiBpdC4KIH0KIAogYm9vbCBXS0luc3BlY3RvcklzUHJvZmlsaW5nUGFnZShXS0luc3BlY3Rv
clJlZiBpbnNwZWN0b3JSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0lu
c3BlY3Rvci5oCmluZGV4IGJhNzY0ODkzMjVmMTU0MTQ2N2E0ZDdlMTBjMGIyMGM3MTdkOTE5ODku
LjIwNjU3OGQ1NDNiMmIyNmQ1YTljYjZjM2UwODYxZDIzMjIwMDVhYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oCkBAIC01OCwxNSArNTgsMTcgQEAg
V0tfRVhQT1JUIGJvb2wgV0tJbnNwZWN0b3JJc0F0dGFjaGVkKFdLSW5zcGVjdG9yUmVmIGluc3Bl
Y3Rvcik7CiBXS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvckF0dGFjaChXS0luc3BlY3RvclJlZiBp
bnNwZWN0b3IpOwogV0tfRVhQT1JUIHZvaWQgV0tJbnNwZWN0b3JEZXRhY2goV0tJbnNwZWN0b3JS
ZWYgaW5zcGVjdG9yKTsKIAorV0tfRVhQT1JUIGJvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ1Bh
Z2UoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKK1dLX0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9y
VG9nZ2xlUGFnZVByb2ZpbGluZyhXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOworCisvLyBGSVhN
RTogVGhlc2UgYXJlIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIG5pZ2h0bHkgYnVp
bGRzIGFuZCBTYWZhcmkuCisvLyBSZW1vdmUgdGhlbSBvbmNlIFNhZmFyaSBubyBsb25nZXIgZGVw
ZW5kcyBvbiB0aGVtLgogV0tfRVhQT1JUIGJvb2wgV0tJbnNwZWN0b3JJc0RlYnVnZ2luZ0phdmFT
Y3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKIFdLX0VYUE9SVCB2b2lkIFdLSW5zcGVj
dG9yVG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZyhXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwog
CiBXS19FWFBPUlQgYm9vbCBXS0luc3BlY3RvcklzUHJvZmlsaW5nSmF2YVNjcmlwdChXS0luc3Bl
Y3RvclJlZiBpbnNwZWN0b3IpOwogV0tfRVhQT1JUIHZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZh
U2NyaXB0UHJvZmlsaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7CiAKLVdLX0VYUE9SVCBi
b29sIFdLSW5zcGVjdG9ySXNQcm9maWxpbmdQYWdlKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7
Ci1XS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvclRvZ2dsZVBhZ2VQcm9maWxpbmcoV0tJbnNwZWN0
b3JSZWYgaW5zcGVjdG9yKTsKLQogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IGJlMzc3
MDRjYmE4M2IyZDYzZGY2YjE4ZjQ5NDc5NDYyMWYyYWMwMjQuLjk5NGZiZDkwMDQxYTc1Mjc4YmU2
NDQzYjA2NDc1YzdlMWMwZmEyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Ykluc3BlY3RvclByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIFBvcnRpb25zIENv
cHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMwLDExICszMCwxMiBAQAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAKICNpbmNsdWRlICJBUElVUkxSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViQ29u
dGV4dC5oIgogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogI2luY2x1
ZGUgIldlYkZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgog
I2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCkBAIC01Nyw5ICs1OCw2IEBAIGNvbnN0IHVuc2ln
bmVkIFdlYkluc3BlY3RvclByb3h5OjptaW5pbXVtV2luZG93SGVpZ2h0ID0gNDAwOwogY29uc3Qg
dW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OmluaXRpYWxXaW5kb3dXaWR0aCA9IDEwMDA7CiBj
b25zdCB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5pdGlhbFdpbmRvd0hlaWdodCA9IDY1
MDsKIAotY29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6Om1pbmltdW1BdHRhY2hlZFdp
ZHRoID0gNzUwOwotY29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6Om1pbmltdW1BdHRh
Y2hlZEhlaWdodCA9IDI1MDsKLQogY2xhc3MgV2ViSW5zcGVjdG9yUGFnZUdyb3VwcyB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFdlYkluc3BlY3RvclBhZ2VHcm91cHMmIHNoYXJlZCgpCkBAIC0xMDUs
MTEgKzEwMywxMiBAQCBwcml2YXRlOgogICAgICAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBwYWdl
R3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShTdHJpbmc6OmZvcm1hdCgiX19XZWJJbnNwZWN0
b3JQYWdlR3JvdXBMZXZlbCV1X18iLCBsZXZlbCksIGZhbHNlLCBmYWxzZSk7CiAKICNpZm5kZWYg
TkRFQlVHCi0gICAgICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIElu
c3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMuCisgICAgICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8g
aW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2lu
ZyBzZXR0aW5ncy4KICAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnNldERldmVsb3Bl
ckV4dHJhc0VuYWJsZWQodHJ1ZSk7CiAgICAgICAgIHBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5z
ZXRMb2dzUGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xlRW5hYmxlZCh0cnVlKTsKICNlbmRpZgog
CisgICAgICAgIHBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9t
RmlsZVVSTHModHJ1ZSk7CiAgICAgICAgIHBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zZXRBcHBs
aWNhdGlvbkNocm9tZU1vZGVFbmFibGVkKHRydWUpOwogCiAgICAgICAgIHJldHVybiBwYWdlR3Jv
dXAucmVsZWFzZSgpOwpAQCAtMTI0LDEzICsxMjMsMTMgQEAgcHJpdmF0ZToKIAogV2ViSW5zcGVj
dG9yUHJveHk6OldlYkluc3BlY3RvclByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKICAgICA6IG1f
cGFnZShwYWdlKQorICAgICwgbV9pbnNwZWN0b3JQYWdlKG51bGxwdHIpCisgICAgLCBtX3VuZGVy
VGVzdChmYWxzZSkKICAgICAsIG1faXNWaXNpYmxlKGZhbHNlKQogICAgICwgbV9pc0F0dGFjaGVk
KGZhbHNlKQotICAgICwgbV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQoZmFsc2UpCi0gICAgLCBtX2lz
UHJvZmlsaW5nSmF2YVNjcmlwdChmYWxzZSkKKyAgICAsIG1fY2FuQXR0YWNoKGZhbHNlKQogICAg
ICwgbV9pc1Byb2ZpbGluZ1BhZ2UoZmFsc2UpCiAgICAgLCBtX3Nob3dNZXNzYWdlU2VudChmYWxz
ZSkKLSAgICAsIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UoZmFsc2UpCiAgICAgLCBtX2lnbm9yZUZp
cnN0QnJpbmdUb0Zyb250KGZhbHNlKQogICAgICwgbV9hdHRhY2htZW50U2lkZShBdHRhY2htZW50
U2lkZUJvdHRvbSkKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKQEAgLTE2NSw3
ICsxNjQsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjppbnZhbGlkYXRlKCkKIAogICAgIGRp
ZENsb3NlKCk7CiAKLSAgICBtX3BhZ2UgPSAwOworICAgIG1fcGFnZSA9IG51bGxwdHI7CiB9CiAK
IC8vIFB1YmxpYyBBUElzCkBAIC0xODgsNiArMTg3LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6Y29ubmVjdCgpCiAgICAgbV9zaG93TWVzc2FnZVNlbnQgPSB0cnVlOwogICAgIG1faWdub3Jl
Rmlyc3RCcmluZ1RvRnJvbnQgPSB0cnVlOwogCisgICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBh
Z2UoKTsKKwogICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
cjo6U2hvdygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIApAQCAtMjMyLDYgKzIzMyw4IEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25zb2xlKCkKICAgICBpZiAoIW1fcGFnZSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKKwogICAg
IG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd0NvbnNv
bGUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKQEAgLTI0MCw2ICsyNDMsOCBAQCB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpzaG93UmVzb3VyY2VzKCkKICAgICBpZiAoIW1fcGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKKwogICAgIG1f
cGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd1Jlc291cmNl
cygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIApAQCAtMjQ4LDYgKzI1Myw4IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBm
cmFtZSkKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgZWFnZXJseUNy
ZWF0ZUluc3BlY3RvclBhZ2UoKTsKKwogICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3Rvcjo6U2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlE
KCkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIApAQCAtMjc0LDEzICsyODEsMTUgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoKEF0dGFjaG1lbnRTaWRlIHNpZGUpCiAgICAgaWYgKG1f
aXNWaXNpYmxlKQogICAgICAgICBpbnNwZWN0b3JQYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS5z
ZXRJbnNwZWN0b3JTdGFydHNBdHRhY2hlZCh0cnVlKTsKIAorICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQodHJ1ZSksIG1fcGFnZS0+
cGFnZUlEKCkpOworCiAgICAgc3dpdGNoIChtX2F0dGFjaG1lbnRTaWRlKSB7CiAgICAgY2FzZSBB
dHRhY2htZW50U2lkZUJvdHRvbToKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpBdHRhY2hlZEJvdHRvbSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yVUk6OkF0dGFjaGVkQm90dG9tKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwog
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQXR0YWNobWVudFNpZGVSaWdodDoKLSAgICAgICAg
bV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpBdHRhY2hlZFJp
Z2h0KCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2lu
c3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0yOTcs
NyArMzA2LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGV0YWNoKCkKICAgICBpZiAobV9p
c1Zpc2libGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLnNl
dEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKGZhbHNlKTsKIAotICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGV0YWNoZWQoKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpT
ZXRBdHRhY2hlZChmYWxzZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEZXRhY2hlZCgpLCBt
X2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIHBsYXRmb3JtRGV0YWNoKCk7CiB9CkBA
IC0zMTQsMzQgKzMyNCw2IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNldEF0dGFjaGVkV2lu
ZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCiAgICAgcGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd1dp
ZHRoKHdpZHRoKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlSmF2YVNjcmlw
dERlYnVnZ2luZygpCi17Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmIChtX2lzRGVidWdnaW5nSmF2YVNjcmlwdCkKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wSmF2YVNjcmlwdERlYnVnZ2luZygpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRKYXZhU2NyaXB0RGVidWdnaW5nKCksIG1f
cGFnZS0+cGFnZUlEKCkpOwotCi0gICAgLy8gRklYTUU6IGhhdmUgdGhlIFdlYlByb2Nlc3Mgbm90
aWZ5IHVzIG9uIHN0YXRlIGNoYW5nZXMuCi0gICAgbV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQgPSAh
bV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQ7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnRv
Z2dsZUphdmFTY3JpcHRQcm9maWxpbmcoKQotewotICAgIGlmICghbV9wYWdlKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAobV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQpCi0gICAgICAgIG1fcGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RvcEphdmFTY3JpcHRQ
cm9maWxpbmcoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0gICAgZWxzZQotICAgICAgICBtX3BhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0SmF2YVNjcmlwdFBy
b2ZpbGluZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLQotICAgIC8vIEZJWE1FOiBoYXZlIHRoZSBX
ZWJQcm9jZXNzIG5vdGlmeSB1cyBvbiBzdGF0ZSBjaGFuZ2VzLgotICAgIG1faXNQcm9maWxpbmdK
YXZhU2NyaXB0ID0gIW1faXNQcm9maWxpbmdKYXZhU2NyaXB0OwotfQotCiB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5Ojp0b2dnbGVQYWdlUHJvZmlsaW5nKCkKIHsKICAgICBpZiAoIW1fcGFnZSkKQEAg
LTM2MSw2ICszNDMsMjQgQEAgYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6aXNJbnNwZWN0b3JQYWdl
KFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICByZXR1cm4gV2ViSW5zcGVjdG9yUGFnZUdyb3Vwczo6
c2hhcmVkKCkuaXNJbnNwZWN0b3JQYWdlR3JvdXAocGFnZS5wYWdlR3JvdXAoKSk7CiB9CiAKK1dl
YkNvbnRleHQmIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JDb250ZXh0KCkKK3sKKyAgICAv
LyBIYXZpbmcgb3VyIG93biBjb250ZXh0IHJlbW92ZXMgdXMgZnJvbSB0aGUgbWFpbiBjb250ZXh0
J3MgcHJvY2VzcyBwb29sIGFuZAorICAgIC8vIGd1YXJhbnRlZXMgbm8gcHJvY2VzcyBzaGFyaW5n
IGZvciBvdXIgdXNlciBpbnRlcmZhY2UuCisKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUZsYWc7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxSZWZQdHI8V2ViQ29udGV4dD4+
IGNvbnRleHQ7CisKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBX
ZWJDb250ZXh0Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgICAgICBXZWJDb250ZXh0
OjphcHBseVBsYXRmb3JtU3BlY2lmaWNDb25maWd1cmF0aW9uRGVmYXVsdHMoY29uZmlndXJhdGlv
bik7CisgICAgICAgIGNvbnRleHQuY29uc3RydWN0KFdlYkNvbnRleHQ6OmNyZWF0ZShjb25maWd1
cmF0aW9uKSk7CisgICAgICAgIGNvbnRleHQuZ2V0KCktPnNldFByb2Nlc3NNb2RlbChQcm9jZXNz
TW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3Nlcyk7CisgICAgfSk7CisKKyAgICByZXR1cm4g
KmNvbnRleHQuZ2V0KCk7Cit9CisKIHN0YXRpYyBib29sIGlzTWFpbk9yVGVzdEluc3BlY3RvclBh
Z2UoY29uc3QgV2ViSW5zcGVjdG9yUHJveHkqIHdlYkluc3BlY3RvclByb3h5LCBXS1VSTFJlcXVl
c3RSZWYgcmVxdWVzdFJlZikKIHsKICAgICBVUkwgcmVxdWVzdFVSTChVUkwoKSwgdG9JbXBsKHJl
cXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSk7CkBAIC00MjYsMjkgKzQyNiwyMCBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCiAK
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVu
ZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpEaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQo
bWVzc2FnZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIG1f
cGFnZS0+cGFnZUlEKCkpOwogfQogI2VuZGlmCiAKLS8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JQ
cm94eSBtZXNzYWdlcwotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFn
ZSh1aW50NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBp
bnNwZWN0b3JQYWdlUGFyYW1ldGVycykKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmVhZ2VybHlD
cmVhdGVJbnNwZWN0b3JQYWdlKCkKIHsKLSAgICBpbnNwZWN0b3JQYWdlSUQgPSAwOwotCi0gICAg
aWYgKCFtX3BhZ2UpCisgICAgaWYgKG1faW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9pc0F0dGFjaGVkID0gc2hvdWxkT3BlbkF0dGFjaGVkKCk7Ci0gICAgbV9hdHRhY2ht
ZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0dGFjaG1lbnRTaWRlPihpbnNwZWN0b3JQYWdlR3JvdXAo
KS0+cHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2htZW50U2lkZSgpKTsKLQotICAgIFdlYlBh
Z2VQcm94eSogaW5zcGVjdG9yUGFnZSA9IHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpOwot
ICAgIEFTU0VSVChpbnNwZWN0b3JQYWdlKTsKLSAgICBpZiAoIWluc3BlY3RvclBhZ2UpCisgICAg
bV9pbnNwZWN0b3JQYWdlID0gcGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisgICAgQVNT
RVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGluc3BlY3RvclBhZ2VJRCA9IGluc3BlY3RvclBhZ2UtPnBhZ2VJRCgp
OwotICAgIGluc3BlY3RvclBhZ2VQYXJhbWV0ZXJzID0gaW5zcGVjdG9yUGFnZS0+Y3JlYXRpb25Q
YXJhbWV0ZXJzKCk7Ci0KICAgICBXS1BhZ2VQb2xpY3lDbGllbnRWMSBwb2xpY3lDbGllbnQgPSB7
CiAgICAgICAgIHsgMSwgdGhpcyB9LAogICAgICAgICAwLCAvKiBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgKi8KQEAgLTQ1OSw3MyArNDUwLDU3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2UodWludDY0X3Qm
IGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyCiAgICAgICAgIDAsIC8qIGRlY2lkZVBvbGljeUZv
clJlc3BvbnNlICovCiAgICAgfTsKIAotICAgIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQodG9B
UEkoaW5zcGVjdG9yUGFnZSksICZwb2xpY3lDbGllbnQuYmFzZSk7Ci0KLSAgICBTdHJpbmdCdWls
ZGVyIHVybDsKLQotICAgIHVybC5hcHBlbmQoaW5zcGVjdG9yUGFnZVVSTCgpKTsKLQotICAgIHVy
bC5hcHBlbmRMaXRlcmFsKCI/ZG9ja1NpZGU9Iik7Ci0KLSAgICBpZiAobV9pc0F0dGFjaGVkKSB7
Ci0gICAgICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewotICAgICAgICBjYXNlIEF0dGFj
aG1lbnRTaWRlQm90dG9tOgotICAgICAgICAgICAgdXJsLmFwcGVuZExpdGVyYWwoImJvdHRvbSIp
OwotICAgICAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yOjpBdHRhY2hlZEJvdHRvbSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlUmlnaHQ6Ci0gICAgICAgICAgICB1cmwu
YXBwZW5kTGl0ZXJhbCgicmlnaHQiKTsKLSAgICAgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6QXR0YWNoZWRSaWdodCgpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAg
IHVybC5hcHBlbmRMaXRlcmFsKCJ1bmRvY2tlZCIpOworICAgIFdLUGFnZVNldFBhZ2VQb2xpY3lD
bGllbnQodG9BUEkobV9pbnNwZWN0b3JQYWdlKSwgJnBvbGljeUNsaWVudC5iYXNlKTsKIAotICAg
IG1fcGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFz
ZVVSTCgpKTsKLQotICAgIGluc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgdXJs
LnRvU3RyaW5nKCkpKTsKLQotICAgIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UgPSB0cnVlOworICAg
IG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQo
KSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nl
c3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVSTCgpKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QodWludDY0X3QmIGluc3BlY3RvclBhZ2VJ
RCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMpCisv
LyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yUHJveHkgbWVzc2FnZXMKK3ZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2UoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlc3QpCiB7Ci0gICAgaW5zcGVjdG9y
UGFnZUlEID0gMDsKLQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X2lzQXR0YWNoZWQgPSBmYWxzZTsKKyAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOwog
Ci0gICAgV2ViUGFnZVByb3h5KiBpbnNwZWN0b3JQYWdlID0gcGxhdGZvcm1DcmVhdGVJbnNwZWN0
b3JQYWdlKCk7Ci0gICAgQVNTRVJUKGluc3BlY3RvclBhZ2UpOwotICAgIGlmICghaW5zcGVjdG9y
UGFnZSkKKyAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKKyAgICBpZiAoIW1faW5zcGVjdG9y
UGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW5zcGVjdG9yUGFnZUlEID0gaW5zcGVjdG9y
UGFnZS0+cGFnZUlEKCk7Ci0gICAgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMgPSBpbnNwZWN0b3JQ
YWdlLT5jcmVhdGlvblBhcmFtZXRlcnMoKTsKKyAgICBtX3VuZGVyVGVzdCA9IHVuZGVyVGVzdDsK
IAotICAgIFdLUGFnZVBvbGljeUNsaWVudFYxIHBvbGljeUNsaWVudCA9IHsKLSAgICAgICAgeyAx
LCB0aGlzIH0sCi0gICAgICAgIDAsIC8qIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25f
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAqLwotICAgICAgICAwLCAvKiBkZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24gKi8KLSAgICAgICAgMCwgLyogZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Vf
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAqLwotICAgICAgICAwLCAvKiB1bmFibGVUb0ltcGxlbWVu
dFBvbGljeSAqLwotICAgICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uLAotICAg
ICAgICAwLCAvKiBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSAqLwotICAgIH07CisgICAgbV9pbnNw
ZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkVzdGFi
bGlzaENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsIG1fcGFnZS0+cGFnZUlEKCksIG1f
dW5kZXJUZXN0KSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAKLSAgICBXS1BhZ2VTZXRQ
YWdlUG9saWN5Q2xpZW50KHRvQVBJKGluc3BlY3RvclBhZ2UpLCAmcG9saWN5Q2xpZW50LmJhc2Up
OworICAgIGlmICghbV91bmRlclRlc3QpIHsKKyAgICAgICAgbV9jYW5BdHRhY2ggPSBjYW5BdHRh
Y2g7CisgICAgICAgIG1faXNBdHRhY2hlZCA9IHNob3VsZE9wZW5BdHRhY2hlZCgpOworICAgICAg
ICBtX2F0dGFjaG1lbnRTaWRlID0gc3RhdGljX2Nhc3Q8QXR0YWNobWVudFNpZGU+KGluc3BlY3Rv
clBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLmluc3BlY3RvckF0dGFjaG1lbnRTaWRlKCkpOwog
Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChpbnNwZWN0
b3JCYXNlVVJMKCkpOworICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKG1faXNBdHRhY2hlZCksIG1fcGFnZS0+cGFnZUlEKCkp
OwogCi0gICAgaW5zcGVjdG9yUGFnZS0+bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCBpbnNwZWN0b3JU
ZXN0UGFnZVVSTCgpKSk7CisgICAgICAgIGlmIChtX2lzQXR0YWNoZWQpIHsKKyAgICAgICAgICAg
IHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgeworICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50
U2lkZUJvdHRvbToKKyAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0
b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBtX2NyZWF0
ZWRJbnNwZWN0b3JQYWdlID0gdHJ1ZTsKKyAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVS
aWdodDoKKyAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdl
SUQoKSk7CisgICAgfQorCisgICAgbV9pbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJM
KCksIG1fdW5kZXJUZXN0ID8gaW5zcGVjdG9yVGVzdFBhZ2VVUkwoKSA6IGluc3BlY3RvclBhZ2VV
UkwoKSkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuKCkKIHsKKyAgICBpZiAo
bV91bmRlclRlc3QpCisgICAgICAgIHJldHVybjsKKwogICAgIG1faXNWaXNpYmxlID0gdHJ1ZTsK
IAogICAgIHBsYXRmb3JtT3BlbigpOwpAQCAtNTMzLDIwICs1MDgsMjMgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6b3BlbigpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRpZENsb3NlKCkK
IHsKLSAgICBpZiAoIW1fY3JlYXRlZEluc3BlY3RvclBhZ2UpCisgICAgaWYgKCFtX2luc3BlY3Rv
clBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1faW5zcGVjdG9yUGFnZS0+Y2xvc2UoKTsK
KyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZSA9IG51bGxwdHI7CisKICAgICBtX2lzVmlz
aWJsZSA9IGZhbHNlOwotICAgIG1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0ID0gZmFsc2U7Ci0gICAg
bV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQgPSBmYWxzZTsKICAgICBtX2lzUHJvZmlsaW5nUGFnZSA9
IGZhbHNlOwotICAgIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UgPSBmYWxzZTsKICAgICBtX3Nob3dN
ZXNzYWdlU2VudCA9IGZhbHNlOwogICAgIG1faWdub3JlRmlyc3RCcmluZ1RvRnJvbnQgPSBmYWxz
ZTsKIAogICAgIGlmIChtX2lzQXR0YWNoZWQpCiAgICAgICAgIHBsYXRmb3JtRGV0YWNoKCk7CiAg
ICAgbV9pc0F0dGFjaGVkID0gZmFsc2U7CisgICAgbV9jYW5BdHRhY2ggPSBmYWxzZTsKKyAgICBt
X3VuZGVyVGVzdCA9IGZhbHNlOwogCiAgICAgcGxhdGZvcm1EaWRDbG9zZSgpOwogfQpAQCAtNTY5
LDYgKzU0Nyw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmJyaW5nVG9Gcm9udCgpCiAKIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCBhdmFp
bGFibGUpCiB7CisgICAgbV9jYW5BdHRhY2ggPSBhdmFpbGFibGU7CisKICAgICBwbGF0Zm9ybUF0
dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoYXZhaWxhYmxlKTsKIH0KIApAQCAtNTg3LDI4ICs1Njcs
NiBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgIHBsYXRmb3JtQXBwZW5kKGZpbGVuYW1lLCBj
b250ZW50KTsKIH0KIAotYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6Y2FuQXR0YWNoKCkKLXsKLSAg
ICAvLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6
OmNhbkF0dGFjaFdpbmRvdy4gVGhlcmUgYXJlIHR3byBpbXBsZW1lbnRhdGlvbnMKLSAgICAvLyB0
byBtYWtlIGxpZmUgZWFzaWVyIGluIHRoZSBtdWx0aS1wcm9jZXNzIHdvcmxkIHdlIGhhdmUuIFdl
Ykluc3BlY3RvclByb3h5IHVzZXMgY2FuQXR0YWNoIHRvIGRlY2lkZSBpZgotICAgIC8vIHdlIGNh
biBhdHRhY2ggb24gb3BlbiAob24gdGhlIFVJIHByb2Nlc3Mgc2lkZSkuIEFuZCBJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpjYW5BdHRhY2hXaW5kb3cgaXMKLSAgICAvLyB1c2VkIHRvIGRl
Y2lkZSBpZiB3ZSBjYW4gYXR0YWNoIHdoZW4gdGhlIGF0dGFjaCBidXR0b24gaXMgcHJlc3NlZCAo
b24gdGhlIFdlYlByb2Nlc3Mgc2lkZSkuCi0KLSAgICAvLyBJZiB3ZSBhcmUgYWxyZWFkeSBhdHRh
Y2hlZCwgYWxsb3cgYXR0YWNoaW5nIGFnYWluIHRvIGFsbG93IHN3aXRjaGluZyBzaWRlcy4KLSAg
ICBpZiAobV9pc0F0dGFjaGVkKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIERvbid0
IGFsbG93IGF0dGFjaGluZyB0byBhbm90aGVyIGluc3BlY3RvciAtLSB0d28gaW5zcGVjdG9ycyBp
biBvbmUgd2luZG93IGlzIHRvbyBtdWNoIQotICAgIGlmIChtX2xldmVsID4gMSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGF0dGFjaCBpZiB0aGUgd2lu
ZG93IHdvdWxkIGJlIHRvbyBzbWFsbCB0byBhY2NvbW1vZGF0ZSB0aGUgbWluaW11bSBpbnNwZWN0
b3IgaGVpZ2h0LgotICAgIHVuc2lnbmVkIGluc3BlY3RlZFBhZ2VIZWlnaHQgPSBwbGF0Zm9ybUlu
c3BlY3RlZFdpbmRvd0hlaWdodCgpOwotICAgIHVuc2lnbmVkIGluc3BlY3RlZFBhZ2VXaWR0aCA9
IHBsYXRmb3JtSW5zcGVjdGVkV2luZG93V2lkdGgoKTsKLSAgICB1bnNpZ25lZCBtYXhpbXVtQXR0
YWNoZWRIZWlnaHQgPSBpbnNwZWN0ZWRQYWdlSGVpZ2h0ICogMyAvIDQ7Ci0gICAgcmV0dXJuIG1p
bmltdW1BdHRhY2hlZEhlaWdodCA8PSBtYXhpbXVtQXR0YWNoZWRIZWlnaHQgJiYgbWluaW11bUF0
dGFjaGVkV2lkdGggPD0gaW5zcGVjdGVkUGFnZVdpZHRoOwotfQotCiBib29sIFdlYkluc3BlY3Rv
clByb3h5OjpzaG91bGRPcGVuQXR0YWNoZWQoKQogewogICAgIHJldHVybiBpbnNwZWN0b3JQYWdl
R3JvdXAoKS0+cHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JTdGFydHNBdHRhY2hlZCgpICYmIGNhbkF0
dGFjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaApp
bmRleCAxN2E3NDk4MmU3NDljMTAxMTZhMTFlNTkwOThhY2Y0NGEyMDAyOTQzLi4wNjVkN2UxM2Nj
Yzg2YWEyZjRhMTQ2Y2M1NjlkMjk2OGI0ZDViZDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIFBvcnRp
b25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiQXR0YWNo
bWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTU5LDEwICs2MCwxMCBAQCBP
QkpDX0NMQVNTIFdLV2ViSW5zcGVjdG9yV0tWaWV3OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
Y2xhc3MgV2ViQ29udGV4dDsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlR3Jv
dXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7Ci1zdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czsKIAogZW51bSBBdHRhY2htZW50U2lkZSB7CiAgICAgQXR0YWNobWVudFNpZGVCb3R0b20sCkBA
IC04Myw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICAvLyBQdWJsaWMgQVBJcwogICAgIFdlYlBhZ2VQ
cm94eSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQogCi0gICAgYm9vbCBpc0Nvbm5l
Y3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRlZEluc3BlY3RvclBhZ2U7IH0KKyAgICBib29s
IGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvclBhZ2U7IH0KICAgICBi
b29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaXNpYmxlOyB9CiAgICAgYm9vbCBp
c0Zyb250KCk7CiAKQEAgLTEyMywxNiArMTI0LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF0
dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpOwogICAgIHZvaWQgc2V0VG9vbGJhckhlaWdodCh1
bnNpZ25lZCBoZWlnaHQpIHsgcGxhdGZvcm1TZXRUb29sYmFySGVpZ2h0KGhlaWdodCk7IH0KIAot
ICAgIGJvb2wgaXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9pc0RlYnVn
Z2luZ0phdmFTY3JpcHQ7IH0KLSAgICB2b2lkIHRvZ2dsZUphdmFTY3JpcHREZWJ1Z2dpbmcoKTsK
LQotICAgIGJvb2wgaXNQcm9maWxpbmdKYXZhU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9pc1By
b2ZpbGluZ0phdmFTY3JpcHQ7IH0KLSAgICB2b2lkIHRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmco
KTsKLQogICAgIGJvb2wgaXNQcm9maWxpbmdQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Byb2Zp
bGluZ1BhZ2U7IH0KICAgICB2b2lkIHRvZ2dsZVBhZ2VQcm9maWxpbmcoKTsKIAogICAgIHN0YXRp
YyBib29sIGlzSW5zcGVjdG9yUGFnZShXZWJQYWdlUHJveHkmKTsKKyAgICBzdGF0aWMgV2ViQ29u
dGV4dCYgaW5zcGVjdG9yQ29udGV4dCgpOwogCiAgICAgLy8gUHJvdmlkZWQgYnkgcGxhdGZvcm0g
V2ViSW5zcGVjdG9yUHJveHkgaW1wbGVtZW50YXRpb25zLgogICAgIFN0cmluZyBpbnNwZWN0b3JQ
YWdlVVJMKCkgY29uc3Q7CkBAIC0xNTAsOSArMTQ2LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yUHJveHkoV2ViUGFnZVByb3h5Kik7CiAKKyAgICB2b2lk
IGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24q
LCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICBX
ZWJQYWdlUHJveHkqIHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpOwogICAgIHZvaWQgcGxh
dGZvcm1PcGVuKCk7CkBAIC0xNzMsOCArMTcwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRm
b3JtQXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7
CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yUHJveHkgbWVzc2FnZXMKLSAgICB2b2lk
IGNyZWF0ZUluc3BlY3RvclBhZ2UodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYpOwotICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3Qo
dWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwor
ICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQsIGJvb2wgY2FuQXR0
YWNoLCBib29sIHVuZGVyVGVzdCk7CiAgICAgdm9pZCBkaWRDbG9zZSgpOwogICAgIHZvaWQgYnJp
bmdUb0Zyb250KCk7CiAgICAgdm9pZCBhdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wpOwpA
QCAtMTg3LDcgKzE4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvUmVtb3Rl
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICNlbmRpZgogCi0gICAgYm9vbCBjYW5B
dHRhY2goKTsKKyAgICBib29sIGNhbkF0dGFjaCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuQXR0YWNo
OyB9CiAgICAgYm9vbCBzaG91bGRPcGVuQXR0YWNoZWQoKTsKIAogICAgIHZvaWQgb3BlbigpOwpA
QCAtMjA0LDE5ICsyMDAsMTUgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
aW5pdGlhbFdpbmRvd1dpZHRoOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbml0aWFsV2lu
ZG93SGVpZ2h0OwogCi0gICAgLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0aGUgdmFsdWUgaW4g
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC4KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
bWluaW11bUF0dGFjaGVkV2lkdGg7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1B
dHRhY2hlZEhlaWdodDsKLQogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOworICAgIFdlYlBhZ2VQ
cm94eSogbV9pbnNwZWN0b3JQYWdlOwogCisgICAgYm9vbCBtX3VuZGVyVGVzdDsKICAgICBib29s
IG1faXNWaXNpYmxlOwogICAgIGJvb2wgbV9pc0F0dGFjaGVkOwotICAgIGJvb2wgbV9pc0RlYnVn
Z2luZ0phdmFTY3JpcHQ7Ci0gICAgYm9vbCBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdDsKKyAgICBi
b29sIG1fY2FuQXR0YWNoOwogICAgIGJvb2wgbV9pc1Byb2ZpbGluZ1BhZ2U7CiAgICAgYm9vbCBt
X3Nob3dNZXNzYWdlU2VudDsKLSAgICBib29sIG1fY3JlYXRlZEluc3BlY3RvclBhZ2U7CiAgICAg
Ym9vbCBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250OwogCiAgICAgLy8gVGhlIGRlYnVnZ2VyIHN0
b3BzIGFsbCB0aGUgcGFnZXMgaW4gdGhlIHNhbWUgUGFnZUdyb3VwLiBIYXZpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5p
bgppbmRleCBlNmM5NDRkOTQ2MzRiMjdhNDM0ODA3YzVjMzA3ODVjMGU1ODNiYTI3Li5lYjdmYTli
OTlkOGQ5MWQzNTY1ZjU4ZDFkZDVlYmE3YWI5ODM5NDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xLDQg
KzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMCArMjMsMTEgQEAK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JQcm94eSB7
Ci0gICAgQ3JlYXRlSW5zcGVjdG9yUGFnZSgpIC0+ICh1aW50NjRfdCBpbnNwZWN0b3JQYWdlSUQs
IFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBpbnNwZWN0b3JQYWdlUGFyYW1ldGVy
cykKLSAgICBDcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgpIC0+ICh1aW50NjRfdCBpbnNwZWN0
b3JQYWdlSUQsIFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBpbnNwZWN0b3JQYWdl
UGFyYW1ldGVycykKKyAgICBDcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBjb25u
ZWN0aW9uSWRlbnRpZmllciwgYm9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXN0KQorCiAgICAg
RGlkQ2xvc2UoKQogICAgIEJyaW5nVG9Gcm9udCgpCisKICAgICBJbnNwZWN0ZWRVUkxDaGFuZ2Vk
KFN0cmluZyB1cmxTdHJpbmcpCiAKICAgICBTYXZlKFN0cmluZyBmaWxlbmFtZSwgU3RyaW5nIGNv
bnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykKQEAgLTM1LDYgKzM2
LDcgQEAgbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yUHJveHkgewogICAgIEF0dGFjaEJvdHRvbSgp
CiAgICAgQXR0YWNoUmlnaHQoKQogICAgIERldGFjaCgpCisKICAgICBBdHRhY2hBdmFpbGFiaWxp
dHlDaGFuZ2VkKGJvb2wgYXZhaWxhYmxlKQogCiAgICAgU2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQo
dW5zaWduZWQgaGVpZ2h0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAppbmRleCA5MDQ5ZjliYmFkMDRjMzUzM2U0NjI5MzdjYTFlNDAzZDEwNTI0ODkzLi45
NzMyYzA1MDEyNWUxMzhjYmY3Y2U1MzBjNDkyNjBmOTQ3YTIwMzRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzksNiArMzksNyBAQAogI2lu
Y2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJX
ZWJJbnNwZWN0b3JQcm94eS5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25EYXRhU3RvcmUuaCIK
ICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQ
YWdlR3JvdXAuaCIKQEAgLTExNSw2ICsxMTYsOCBAQCBXZWJQcm9jZXNzUHJveHk6On5XZWJQcm9j
ZXNzUHJveHkoKQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vz
c0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25zKQogewogICAgIGxhdW5jaE9w
dGlvbnMucHJvY2Vzc1R5cGUgPSBQcm9jZXNzTGF1bmNoZXI6OldlYlByb2Nlc3M7CisgICAgaWYg
KCZtX2NvbnRleHQuZ2V0KCkgPT0gJldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JDb250ZXh0
KCkpCisgICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKEFT
Q0lJTGl0ZXJhbCgiaW5zcGVjdG9yLXByb2Nlc3MiKSwgQVNDSUlMaXRlcmFsKCIxIikpOwogICAg
IHBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyhsYXVuY2hPcHRpb25zKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApp
bmRleCBlZWMzOWNjZThlOTdjMTI4MDg4NDBiNWFmMTQyNGIyNjU3MTQ0ZTVjLi4wOTEyMTdhY2Uy
MTIzNzkyYWFlZjNlZDJmMzk5NTUwOTVmY2JlNzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApAQCAtMTA0LDcgKzEw
NCw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5z
cGVjdG9yUGFnZSgpCiAgICAgaWYgKCFtX2luc3BlY3RvcldpbmRvdykKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBXS0NvbnRleHRSZWYgd2tDb250ZXh0ID0gdG9BUEkoJnBhZ2UoKS0+cHJvY2Vz
cygpLmNvbnRleHQoKSk7CisgICAgV0tDb250ZXh0UmVmIHdrQ29udGV4dCA9IHRvQVBJKCZpbnNw
ZWN0b3JDb250ZXh0KCkpOwogICAgIFdLUGFnZUdyb3VwUmVmIHdrUGFnZUdyb3VwID0gdG9BUEko
aW5zcGVjdG9yUGFnZUdyb3VwKCkpOwogCiAgICAgbV9pbnNwZWN0b3JWaWV3ID0gRVdLVmlld0Ny
ZWF0ZSh3a0NvbnRleHQsIHdrUGFnZUdyb3VwLCBlY29yZV9ldmFzX2dldChtX2luc3BlY3Rvcldp
bmRvdyksIC8qIHNtYXJ0ICovIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRleCA1MGU0NWM0OWQzMzY5ZGNjNzg3
ZjA1NjQxNWRiYmM5NjM0ZGM2NDNkLi5iMjIxOTJlN2RiZDc4NTMxYzExM2JhMmYzOWRmZTkxNjhh
YmY5NThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3Bl
Y3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYklu
c3BlY3RvclByb3h5R3RrLmNwcApAQCAtNjIsNyArNjIsNyBAQCBXZWJQYWdlUHJveHkqIFdlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogewogICAgIEFTU0VS
VChtX3BhZ2UpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JWaWV3KTsKLSAgICBtX2luc3BlY3Rv
clZpZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKCZwYWdlKCktPnByb2Nl
c3MoKS5jb250ZXh0KCksIG51bGxwdHIsIGluc3BlY3RvclBhZ2VHcm91cCgpLCBudWxscHRyLCBt
X3BhZ2UpKTsKKyAgICBtX2luc3BlY3RvclZpZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdC
YXNlQ3JlYXRlKCZpbnNwZWN0b3JDb250ZXh0KCksIG51bGxwdHIsIGluc3BlY3RvclBhZ2VHcm91
cCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgZ19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcihH
X09CSkVDVChtX2luc3BlY3RvclZpZXcpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJm1faW5z
cGVjdG9yVmlldykpOwogICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lU
X1dFQl9WSUVXX0JBU0UobV9pbnNwZWN0b3JWaWV3KSk7CiB9CkBAIC0xODIsOCArMTgyLDExIEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKCkKICAgICAgICAgbV9pbnNw
ZWN0b3JXaW5kb3cgPSAwOwogICAgIH0KIAotICAgIC8vIFNldCBhIGRlZmF1bHQgYXR0YWNoZWQg
c2l6ZSBiYXNlZCBvbiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLgorICAgIC8vIFNldCBh
IGRlZmF1bHQgc2l6ZXMgYmFzZWQgb24gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC4KICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdEF0dGFjaGVkU2l6ZSA9IDMwMDsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bUF0dGFjaGVkV2lkdGggPSA3NTA7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1BdHRhY2hlZEhlaWdodCA9IDI1MDsKKwogICAgIGlm
IChtX2F0dGFjaG1lbnRTaWRlID09IEF0dGFjaG1lbnRTaWRlQm90dG9tKSB7CiAgICAgICAgIHVu
c2lnbmVkIG1heGltdW1BdHRhY2hlZEhlaWdodCA9IHBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVp
Z2h0KCkgKiAzIC8gNDsKICAgICAgICAgcGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodChz
dGQ6Om1heChtaW5pbXVtQXR0YWNoZWRIZWlnaHQsIHN0ZDo6bWluKGRlZmF1bHRBdHRhY2hlZFNp
emUsIG1heGltdW1BdHRhY2hlZEhlaWdodCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IGM2YzY2OGNiNWZmYzhj
NWI2ZWYwOTZlM2M5MjljYjI1NDVjMDlmOWQuLjljZWNmNDE1NWQyNDk5NDNiNTBmZDUyMzg4YmFi
MWM5MWYxZWZiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
SW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
ZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCAiV0tVUkxDRi5o
IgogI2ltcG9ydCAiV0tWaWV3UHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViSW5zcGVjdG9yTWVzc2Fn
ZXMuaCIKKyNpbXBvcnQgIldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlBh
Z2VHcm91cC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJl
bmNlcy5oIgpAQCAtMTE0LDcgKzExNSw3IEBAIC0gKElCQWN0aW9uKWF0dGFjaEJvdHRvbTooaWQp
c2VuZGVyCiAKIC0gKHZvaWQpY2xvc2UKIHsKLSAgICBfaW5zcGVjdG9yUHJveHkgPSAwOworICAg
IF9pbnNwZWN0b3JQcm94eSA9IG51bGxwdHI7CiB9CiAKIC0gKHZvaWQpd2luZG93RGlkTW92ZToo
TlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KQEAgLTQxOCw3ICs0MTksNyBAQCBXZWJQYWdl
UHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQog
ICAgICAgICAgICAgaW5pdGlhbFJlY3QgPSBbTlNXaW5kb3cgY29udGVudFJlY3RGb3JGcmFtZVJl
Y3Q6d2luZG93RnJhbWUgc3R5bGVNYXNrOndpbmRvd1N0eWxlTWFza107CiAgICAgfQogCi0gICAg
bV9pbnNwZWN0b3JWaWV3ID0gYWRvcHROUyhbW1dLV2ViSW5zcGVjdG9yV0tWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOmluaXRpYWxSZWN0IGNvbnRleHRSZWY6dG9BUEkoJnBhZ2UoKS0+cHJvY2Vz
cygpLmNvbnRleHQoKSkgcGFnZUdyb3VwUmVmOnRvQVBJKGluc3BlY3RvclBhZ2VHcm91cCgpKSBy
ZWxhdGVkVG9QYWdlOnRvQVBJKG1fcGFnZSldKTsKKyAgICBtX2luc3BlY3RvclZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJJbnNwZWN0b3JXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6aW5pdGlhbFJl
Y3QgY29udGV4dFJlZjp0b0FQSSgmaW5zcGVjdG9yQ29udGV4dCgpKSBwYWdlR3JvdXBSZWY6dG9B
UEkoaW5zcGVjdG9yUGFnZUdyb3VwKCkpIHJlbGF0ZWRUb1BhZ2U6bnVsbHB0cl0pOwogICAgIEFT
U0VSVChtX2luc3BlY3RvclZpZXcpOwogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA8PSAxMDkwCkBAIC00OTksMTMgKzUwMCwxMyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybURpZENsb3NlKCkKICAgICBpZiAobV9pbnNwZWN0b3JXaW5kb3cpIHsKICAgICAg
ICAgW21faW5zcGVjdG9yV2luZG93IHNldERlbGVnYXRlOm5pbF07CiAgICAgICAgIFttX2luc3Bl
Y3RvcldpbmRvdyBvcmRlck91dDpuaWxdOwotICAgICAgICBtX2luc3BlY3RvcldpbmRvdyA9IDA7
CisgICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gbmlsOwogICAgIH0KIAotICAgIG1faW5zcGVj
dG9yVmlldyA9IDA7CisgICAgbV9pbnNwZWN0b3JWaWV3ID0gbmlsOwogCiAgICAgW21faW5zcGVj
dG9yUHJveHlPYmpDQWRhcHRlciBjbG9zZV07Ci0gICAgbV9pbnNwZWN0b3JQcm94eU9iakNBZGFw
dGVyID0gMDsKKyAgICBtX2luc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIgPSBuaWw7CiB9CiAKIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSGlkZSgpCkBAIC01MTgsNyArNTE5LDcgQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1IaWRlKCkKICAgICBpZiAobV9pbnNwZWN0
b3JXaW5kb3cpIHsKICAgICAgICAgW21faW5zcGVjdG9yV2luZG93IHNldERlbGVnYXRlOm5pbF07
CiAgICAgICAgIFttX2luc3BlY3RvcldpbmRvdyBvcmRlck91dDpuaWxdOwotICAgICAgICBtX2lu
c3BlY3RvcldpbmRvdyA9IDA7CisgICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gbmlsOwogICAg
IH0KIH0KIApAQCAtNTg5LDcgKzU5MCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjCiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJM
IGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExd
OwogCi0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
cjo6RGlkU2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JVSTo6RGlkU2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVj
dG9yUGFnZS0+cGFnZUlEKCkpOwogICAgIH07CiAKICAgICBpZiAoIWZvcmNlU2F2ZURpYWxvZykg
ewpAQCAtNjIzLDcgKzYyNCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBw
ZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmCiAgICAgW2hhbmRs
ZSB3cml0ZURhdGE6W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddXTsKICAgICBbaGFuZGxlIGNsb3NlRmlsZV07CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRl
U3RyaW5nXSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBh
YnNvbHV0ZVN0cmluZ10pLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6d2luZG93RnJhbWVEaWRDaGFuZ2UoKQpAQCAtNzA4LDcgKzcwOSw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKCkKICAgICBpZiAobV9p
bnNwZWN0b3JXaW5kb3cpIHsKICAgICAgICAgW21faW5zcGVjdG9yV2luZG93IHNldERlbGVnYXRl
Om5pbF07CiAgICAgICAgIFttX2luc3BlY3RvcldpbmRvdyBvcmRlck91dDpuaWxdOwotICAgICAg
ICBtX2luc3BlY3RvcldpbmRvdyA9IDA7CisgICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gbmls
OwogICAgIH0KIAogICAgIFttX2luc3BlY3RvclZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNjdjMzZmMDgzOWQwOTNkN2YxZGUwMjA2MjJlYWYyYmVlNmJkNTEwNS4uZDBhOTJmOTZjMzdj
MWYwYjNmNDEwMjMwYzQwMGFhOGQwYjg5NjAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDk1LDEwICs0OTUsMTAgQEAKIAkJ
MUFGRTQzNjUxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUZFNDM2MzE4QjZDMDgxMDA5QzdBNDgg
LyogVUlEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJMUFGRTQzNjYxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJ
RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBRkU0MzY0MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLmggKi87IH07CiAJCTFBRkY0
OTAwMTgzM0RFNzgwMDlBQjE1QSAvKiBXS0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRjQ4RkUxODMzREU3ODAw
OUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAgKi87IH07CisJCTFDODkxRDY1MTlC
MTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzg5MUQ2MjE5QjEyNEZGMDBCQTc5REQgLyogV2Vi
SW5zcGVjdG9yVUkuY3BwICovOyB9OworCQkxQzg5MUQ2NjE5QjEyNEZGMDBCQTc5REQgLyogV2Vi
SW5zcGVjdG9yVUkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDODkxRDYzMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5oICovOyB9Owog
CQkxQzhBRTc2MTE5OTJGNjNBMDBBQkY2RUMgLyogRG9ja0JvdHRvbUxlZ2FjeS5wZGYgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEFFNzVGMTk5MkY2
MkYwMEFCRjZFQyAvKiBEb2NrQm90dG9tTGVnYWN5LnBkZiAqLzsgfTsKIAkJMUM4QUU3NjIxOTky
RjYzQzAwQUJGNkVDIC8qIERvY2tSaWdodExlZ2FjeS5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEFFNzYwMTk5MkY2MkYwMEFCRjZFQyAvKiBE
b2NrUmlnaHRMZWdhY3kucGRmICovOyB9OwotCQkxQzhFMjVBODEyNzBFM0JCMDBCQzdCRDAgLyog
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI1NkIxMjcwREUzODAwQkM3QkQwIC8qIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmNwcCAqLzsgfTsKLQkJMUM4RTI1QTkxMjcwRTNCQzAwQkM3QkQw
IC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjU2QTEyNzBERTM4MDBCQzdCRDAgLyogV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLzsgfTsKIAkJMUM4RTI4MjAxMjc1RDE1NDAwQkM3QkQw
IC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUM4RTI4MUUxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oICovOyB9
OwogCQkxQzhFMjgyMTEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyODFGMTI3NUQxNTQw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3BwICovOyB9OwogCQkxQzhFMjgzNDEyNzVENzM4MDBC
QzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyODMyMTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0
b3JQcm94eS5oICovOyB9OwpAQCAtNTEwLDggKzUxMCwxMCBAQAogCQkxQ0E4QjkzNjEyN0M3NzRF
MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0E4QjkzNTEyN0M3NzRFMDA1NzZDMkIgLyogV2Vi
SW5zcGVjdG9yUHJveHlNYWMubW0gKi87IH07CiAJCTFDQThCOTQ1MTI3Qzg4MkEwMDU3NkMyQiAv
KiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0E4Qjk0MzEyN0M4ODJBMDA1NzZDMkIgLyog
V2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkxQ0E4Qjk0NjEy
N0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBOEI5NDQxMjdDODgyQTAwNTc2
QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKLQkJMUNBOEI5NTQxMjdD
ODkxNTAwNTc2QzJCIC8qIFdlYkluc3BlY3Rvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJ
bnNwZWN0b3JNYWMubW0gKi87IH07CisJCTFDQThCOTU0MTI3Qzg5MTUwMDU3NkMyQiAvKiBXZWJJ
bnNwZWN0b3JVSU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSAq
LzsgfTsKIAkJMUNCNzVDOTQxNzAxRTg4MDAwOUY4MDlGIC8qIERvY2tSaWdodC5wZGYgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQjc1QzkzMTcwMUU4
ODAwMDlGODA5RiAvKiBEb2NrUmlnaHQucGRmICovOyB9OworCQkxQ0JCRTRBMDE5QjY2QzUzMDA2
QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgx
IC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJMUNCQkU0QTEx
OUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQkJFNDlGMTlCNjZDNTMwMDZCN0Q4
MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggKi87IH07CiAJCTFDQkM5NDVFMTY1MTVFRDIw
MEQ2OEFBRSAvKiBEb2NrQm90dG9tLnBkZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUNCQzk0NUQxNjUxNUVEMjAwRDY4QUFFIC8qIERvY2tCb3R0b20u
cGRmICovOyB9OwogCQkxRjMzNUJDMDE4NUI4NEYwMDAxQTIwMUEgLyogV0tXZWJQcm9jZXNzUGx1
Z0luTG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxRjMzNUJCRjE4NUI4NEQ4MDAxQTIwMUEgLyogV0tXZWJQcm9jZXNzUGx1Z0luTG9h
ZERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMUY2MDRCQTgxODg5RkE3NDAwRUUwMzk1IC8qIFdLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVu
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGNjA0
QkE2MTg4OUZBNzQwMEVFMDM5NSAvKiBXS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI0NzUsMTAgKzI0
NzcsMTEgQEAKIAkJMUFGRjQ4RkUxODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1bmN0
aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0RlcHJlY2F0
ZWRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQkI0MTdDOTEy
QzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNzdDMTk1MTI4OEE4NzIwMDZBNzQyRiAvKiBXZWJJ
bnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNw
ZWN0b3JQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM4
OTFENjIxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM4OTFENjMxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3Rv
clVJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclVJLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDODkxRDY0MTlCMTI0RkYwMEJBNzlERCAv
KiBXZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJ
bnNwZWN0b3JVSS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4
QUU3NUYxOTkyRjYyRjAwQUJGNkVDIC8qIERvY2tCb3R0b21MZWdhY3kucGRmICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBuYW1lID0g
RG9ja0JvdHRvbUxlZ2FjeS5wZGY7IHBhdGggPSBSZXNvdXJjZXMvRG9ja0JvdHRvbUxlZ2FjeS5w
ZGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEFFNzYwMTk5MkY2MkYwMEFCRjZF
QyAvKiBEb2NrUmlnaHRMZWdhY3kucGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBuYW1lID0gRG9ja1JpZ2h0TGVnYWN5LnBkZjsg
cGF0aCA9IFJlc291cmNlcy9Eb2NrUmlnaHRMZWdhY3kucGRmOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQzhFMjU2QTEyNzBERTM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4RTI1NkIx
MjcwREUzODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RTI4MUUxMjc1RDE1NDAwQkM3
QkQwIC8qIFdlYkluc3BlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJJbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RTI4MUYxMjc1
RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzhFMjgzMjEyNzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yUHJveHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0ODgsMTEgKzI0OTEsMTMgQEAKIAkJMUM4RTJBMUMx
Mjc3ODMzRjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJJbnNwZWN0b3IubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDOEUyQTMxMTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdl
UmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5z
cGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUM4RTJBMzIxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3Rvck1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJ
bnNwZWN0b3JNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJJbnNwZWN0b3JNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOEUyREFE
MTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJTWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQ0E4QjkzNTEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVj
dG9yUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJJbnNwZWN0b3JQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNB
OEI5NDMxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNB
OEI5NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0I3NUM5MzE3MDFFODgwMDA5RjgwOUYg
LyogRG9ja1JpZ2h0LnBkZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGltYWdlLnBkZjsgbmFtZSA9IERvY2tSaWdodC5wZGY7IHBhdGggPSBSZXNvdXJj
ZXMvRG9ja1JpZ2h0LnBkZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCQkU0OUUx
OUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJTWVzc2FnZVJl
Y2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCQkU0OUYxOUI2NkM1
MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQ0JDOTQ1RDE2NTE1RUQyMDBENjhBQUUgLyogRG9ja0JvdHRvbS5wZGYg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5w
ZGY7IG5hbWUgPSBEb2NrQm90dG9tLnBkZjsgcGF0aCA9IFJlc291cmNlcy9Eb2NrQm90dG9tLnBk
Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDNDE3QzkxMkMwMENDQTAwMkJFNjdC
IC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUYwMTgxNjkxODU4REMxNTAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1l
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NjYyLDggKzU2NjcsNiBAQAogCQkJ
CUJDMUJFMURFMTJENTRBNDEwMDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlvbkNsaWVudC5oICovLAog
CQkJCUJDMTExQTU5MTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJJbnNwZWN0b3JDbGllbnQuY3BwICov
LAogCQkJCUJDMDMyRDZEMTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCAq
LywKLQkJCQkxQzhFMjU2QjEyNzBERTM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQuY3BwICovLAotCQkJCTFDOEUyNTZBMTI3MERFMzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudC5oICovLAogCQkJCTMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBX
ZWJOb3RpZmljYXRpb25DbGllbnQuY3BwICovLAogCQkJCTMxMDk5OTY4MTQ2QzcxRjUwMDI5REVC
OSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLywKIAkJCQk1MTIxMjdDMTE5MDgyMzlBMDBE
QUYzNUMgLyogV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAgKi8sCkBAIC01NzIzLDYgKzU3MjYs
OSBAQAogCQkJCTFDOEUyODFGMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3BwICov
LAogCQkJCTFDOEUyODFFMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuaCAqLywKIAkJ
CQkxQzhFMkExQzEyNzc4MzNGMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluICov
LAorCQkJCTFDODkxRDYyMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgKi8s
CisJCQkJMUM4OTFENjMxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggKi8sCisJ
CQkJMUM4OTFENjQxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmlu
ICovLAogCQkJCUJDODU3Rjg0MTJCODJEMEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5jcHAgKi8sCiAJCQkJQkM4NTdGODMxMkI4MkQwQjAwRURFQjJFIC8qIFdlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyLmggKi8sCiAJCQkJQkM5NjNENkExMTNERDE5MjAwNTc0QkUyIC8q
IFdlYlBhZ2UuY3BwICovLApAQCAtNjQ3MSw3ICs2NDc3LDcgQEAKIAkJCQk1MTkyRDU3NTE5NjFG
RDAzMDBDRDE5QUEgLyogU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbSAqLywKIAkJCQkxQUFG
MjYzNzE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCAq
LywKIAkJCQkxQUFGMjYzNjE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEubW0gKi8sCi0JCQkJMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3Bl
Y3Rvck1hYy5tbSAqLywKKwkJCQkxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAgLyogV2ViSW5zcGVj
dG9yVUlNYWMubW0gKi8sCiAJCQkJQkM5NjNENkQxMTNERDFBNTAwNTc0QkUyIC8qIFdlYlBhZ2VN
YWMubW0gKi8sCiAJCQkJMjlDRDU1QTgxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RCYXNlLmggKi8sCiAJCQkJMjlDRDU1QTkxMjhFMjk0RjAwMTMzQzg1IC8q
IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tICovLApAQCAtNjgyNyw2ICs2ODMz
LDggQEAKIAkJCQkxQzhFMkEzMjEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2Fn
ZXMuaCAqLywKIAkJCQkxQ0E4Qjk0MzEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAv
KiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJMUNCQkU0OUUxOUI2NkM1MzAw
NkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQkxQ0JC
RTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oICovLAogCQkJ
CTMzRDNBM0M0MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8sCiAJCQkJMzNEM0EzQzUxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlh
Q2FjaGVNYW5hZ2VyTWVzc2FnZXMuaCAqLywKIAkJCQkzM0QzQTNDNjEzMzk2MTc5MDA3MDlCRTQg
LyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC03
NDM4LDYgKzc0NDYsNyBAQAogCQkJCTJEQUNFNjRFMThBREJGRjAwMEU0Q0E3NiAvKiBfV0tUaHVt
Ym5haWxWaWV3SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNTc4QjgzMTIwOUVDRUYw
MEEzN0M0QSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNkEyNUZERDEyQURDNkND
MDBEQzQwQ0MgLyogV2ViRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzg5
MUQ2NjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY2MkE3NkI3MTJCMUIyNUYwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYyQTc2NUQxMkIxQUJDMzAwMDVGMUI2IC8qIFdlYkRh
dGFiYXNlTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZBQjU0MTE5MkIxQzRB
MDAzQTlGRDEgLyogV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKQEAg
LTc0OTQsNyArNzUwMyw2IEBACiAJCQkJMUM4RTI4MjAxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYklu
c3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzQ0MxNjcxODkwNkFDRjAwMUU2RUQ4IC8q
IFdLV2ViVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJEODIxMEY0Mzc4RDAwNThDMTVB
IC8qIFdlYkluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUM4RTI1QTkxMjcw
RTNCQzAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQzhFMkEzNjEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyODM0MTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNw
ZWN0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBOEI5NDYxMjdDODgyQTAwNTc2QzJC
IC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzc2Miw2
ICs3NzcwLDcgQEAKIAkJCQlGNjM0NDQ1RDEyQTg4NUU5MDAwNjEyRDggLyogV0tTZWN1cml0eU9y
aWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjA4QjgxOTI2OUU2RDAwQjYzOTBDIC8qIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQw
NzYwNDEyNEZGMDI3MDA2OEYyMEEgLyogV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTFDQkJFNEExMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU0QzE4QkJFMDQ0MDAwRkNGQzkgLyog
V0tDb250ZW50Vmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdBNjRFNTcxOEYzOEY0NjAwRUIz
MEYxIC8qIF9XS0Zvcm1JbnB1dFNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFGNjA0QkFB
MTg4OUZCQjgwMEVFMDM5NSAvKiBXS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLApAQCAtODg2NSw2ICs4ODc0LDcgQEAKIAkJCQkwMEI5NjYxOTE4RTI1QUUx
MDBDRTFGODggLyogRmluZENsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBRTVCN0ZCMTFF
N0FFRDIwMEJBNjc2NyAvKiBOZXRzY2FwZVBsdWdpbk1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTdDMzYxRDcyMTkyN0ZBMzYwMDM2QTU5RCAvKiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkxQzg5MUQ2NTE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVj
dG9yVUkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDNTUxMkI4MTZDRjAwOEZFOTg0IC8q
IE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNEE5QzlBMTJC
ODIxQ0QwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTFBQTU4ODkzMTFFRTcwNDAwMDYxQjg4MiAvKiBOZXRzY2FwZVBsdWdpblN0cmVhbS5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTg5MDMsNiArODkxMyw3IEBACiAJCQkJMUEyRDg0MzkxMjdG
NjVENTAwMUVCOTYyIC8qIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBQUYwOEFEMTkyNjkzNjcwMEI2MzkwQyAvKiBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDgyQTYxMjdGNEVB
QjAwMUVCOTYyIC8qIE5QT2JqZWN0UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUNCQkU0
QTAxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBMkQ4MkE4MTI3RjRFQUIwMDFFQjk2MiAvKiBOUFJlbW90ZU9i
amVjdE1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTIxNjFCMTExRjM3NjY0MDA4QUQwRjUg
LyogTlBSdW50aW1lT2JqZWN0TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjE2MkIwMTFG
Mzg5NzEwMDhBRDBGNSAvKiBOUFJ1bnRpbWVVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC05MTYyLDggKzkxNzMsNyBAQAogCQkJCUJDQ0Y2QUJDMTJDOTFFRjkwMDhGOUMzNSAvKiBXZWJJ
bWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzhFMjgyMTEyNzVEMTU0MDBCQzdCRDAgLyog
V2ViSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTExQTYwMTEyRjRGQkIwMDMz
N0JBQiAvKiBXZWJJbnNwZWN0b3JDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUM4RTI1
QTgxMjcwRTNCQjAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTFDQThCOTU0MTI3Qzg5MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JN
YWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQ0E4Qjk1NDEyN0M4OTE1MDA1NzZDMkIgLyogV2Vi
SW5zcGVjdG9yVUlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzhFMkEzNTEyNzc4NTI0MDBC
QzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFDOEUyODM1MTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQ0E4QjkzNjEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9y
UHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApp
bmRleCA1MDFkNDFjZDkxNDc2YjYyNzY5NmYzOTg0NTk5YmU2MzgwN2ZmZjUyLi44NTkzNThiY2Nj
YjE4MjZiZTkzMmZkMWM1MjA0NmVmYzJjNzg3NjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC04NCwyMCArODQsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3Rv
ckRlc3Ryb3llZCgpCiAKIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogV2ViSW5z
cGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciog
Y29udHJvbGxlcikKIHsKLSAgICBXZWJQYWdlKiBpbnNwZWN0b3JQYWdlID0gY29udHJvbGxlci0+
aXNVbmRlclRlc3QoKSA/IG1fcGFnZS0+aW5zcGVjdG9yKCktPmNyZWF0ZUluc3BlY3RvclBhZ2VG
b3JUZXN0KCkgOiBtX3BhZ2UtPmluc3BlY3RvcigpLT5jcmVhdGVJbnNwZWN0b3JQYWdlKCk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChpbnNwZWN0b3JQYWdlLCBpbnNwZWN0b3JQYWdlKTsKLSAgICByZXR1
cm4gdGhpczsKKyAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5jcmVhdGVJbnNwZWN0b3JQYWdlKGNv
bnRyb2xsZXItPmlzVW5kZXJUZXN0KCkpOworCisgICAgcmV0dXJuIG1fcGFnZS0+aW5zcGVjdG9y
KCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUluc3BlY3RvckZyb250ZW5k
KCkKIHsKICAgICBpZiAobV9wYWdlLT5pbnNwZWN0b3IoKSkKLSAgICAgICAgbV9wYWdlLT5pbnNw
ZWN0b3IoKS0+ZGlkQ2xvc2UoKTsKKyAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y2xvc2VG
cm9udGVuZCgpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6YnJpbmdGcm9udGVuZFRv
RnJvbnQoKQogewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmJyaW5nVG9Gcm9udCgpOworICAg
IGlmIChtX3BhZ2UtPmluc3BlY3RvcigpKQorICAgICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5i
cmluZ1RvRnJvbnQoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFJlc2l6ZU1h
aW5GcmFtZShGcmFtZSopCkBAIC0xOTcsMzQgKzE5OCw2IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xp
ZW50OjpkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCkKIH0KICNlbmRpZgogCi1i
b29sIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKLXsKLSAgICBXZWJJbnNwZWN0b3IqIGluc3BlY3RvciA9IG1fcGFnZS0+aW5z
cGVjdG9yKCk7Ci0gICAgaWYgKCFpbnNwZWN0b3IpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
I2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotICAgIGlmIChpbnNwZWN0b3ItPmhhc1JlbW90
ZUZyb250ZW5kQ29ubmVjdGVkKCkpIHsKLSAgICAgICAgaW5zcGVjdG9yLT5zZW5kTWVzc2FnZVRv
UmVtb3RlRnJvbnRlbmQobWVzc2FnZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSNl
bmRpZgotCi0gICAgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSA9IGluc3BlY3Rvci0+aW5zcGVjdG9y
UGFnZSgpOwotICAgIGlmIChpbnNwZWN0b3JQYWdlKQotICAgICAgICByZXR1cm4gZG9EaXNwYXRj
aE1lc3NhZ2VPbkZyb250ZW5kUGFnZShpbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLCBtZXNzYWdl
KTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnN1
cHBvcnRzRnJhbWVJbnN0cnVtZW50YXRpb24oKQotewotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgotICAgIHJldHVybiBmYWxzZTsKLX0KLQog
dm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnBhZ2VPdmVybGF5RGVzdHJveWVkKFBhZ2VPdmVybGF5
KikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDcwMzNiZGVjYTA4MjYwNTZh
ODBjZDEwOWE0NGY4MmEzMDE5OWRlNmIuLjc5OGNhYzdhODNjMDY3YTIzM2E1OTkwYTlkNGY1ZmE0
MTQwYjNlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNDUsMjIgKzQ1LDIzIEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFJlcGFpbnRJbmRpY2F0
b3JMYXllckNsaWVudDsKIAotY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNv
cmU6Okluc3BlY3RvckNsaWVudCwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCwgcHJpdmF0ZSBQYWdlT3ZlcmxheTo6Q2xpZW50IHsKK2NsYXNzIFdlYkluc3BlY3RvckNs
aWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHByaXZhdGUgUGFnZU92ZXJs
YXk6OkNsaWVudCB7CiBmcmllbmQgY2xhc3MgUmVwYWludEluZGljYXRvckxheWVyQ2xpZW50Owog
cHVibGljOgogICAgIFdlYkluc3BlY3RvckNsaWVudChXZWJQYWdlKik7CiAgICAgdmlydHVhbCB+
V2ViSW5zcGVjdG9yQ2xpZW50KCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGluc3Bl
Y3RvckRlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIC8vIFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dAorICAgIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6
Okluc3BlY3RvckNvbnRyb2xsZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJ
bnNwZWN0b3JGcm9udGVuZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250
ZW5kVG9Gcm9udCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNpemVNYWluRnJh
bWUoV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkUmVzaXplTWFpbkZyYW1lKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhpZGVI
aWdobGlnaHQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGhpZ2hsaWdodCgpIG92ZXJyaWRlOworICAg
IHZvaWQgaGlkZUhpZ2hsaWdodCgpIG92ZXJyaWRlOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAg
IHZpcnR1YWwgdm9pZCBzaG93SW5zcGVjdG9ySW5kaWNhdGlvbigpIG92ZXJyaWRlOwpAQCAtNzIs
MTAgKzczLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgb3ZlcnJpZGVzU2hvd1BhaW50
UmVjdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNob3dQYWludFJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlOwotCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnJhbWVJbnN0cnVtZW50YXRpb24oKTsK
LQogICAgIC8vIFBhZ2VPdmVybGF5OjpDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgcGFnZU92ZXJs
YXlEZXN0cm95ZWQoUGFnZU92ZXJsYXkqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkNDNkYWUxMGIzZDBjNWI3N2MxNDc5ZjVmZjRiMjI4OGE0YjZiNDQwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCIKLQotI2lm
IEVOQUJMRShJTlNQRUNUT1IpCi0KLSNpbmNsdWRlICJXZWJJbnNwZWN0b3IuaCIKLSNpbmNsdWRl
ICJXZWJQYWdlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50QmFzZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJQYWdlKiBwYWdlLCBXZWJQ
YWdlKiBpbnNwZWN0b3JQYWdlKQotICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgm
cGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBpbnNwZWN0b3JQYWdlLT5j
b3JlUGFnZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFNldHRpbmdzPigpKQotICAgICwgbV9wYWdlKHBh
Z2UpCi17Ci19Ci0KLVN0cmluZyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6bG9jYWxpemVk
U3RyaW5nc1VSTCgpCi17Ci0gICAgcmV0dXJuIG1fcGFnZS0+aW5zcGVjdG9yKCktPmxvY2FsaXpl
ZFN0cmluZ3NVUkwoKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YnJp
bmdUb0Zyb250KCkKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5icmluZ1RvRnJvbnQoKTsK
LX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2xvc2VXaW5kb3coKQotewot
ICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RG
cm9udGVuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRl
c3Ryb3llZCk7Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+ZGlkQ2xvc2UoKTsKLX0KLQotYm9v
bCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2FuU2F2ZSgpCi17Ci0gICAgcmV0dXJuIG1f
cGFnZS0+aW5zcGVjdG9yKCktPmNhblNhdmUoKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDo6c2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykKLXsKLSAgICBtX3Bh
Z2UtPmluc3BlY3RvcigpLT5zYXZlKGZpbGVuYW1lLCBjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBm
b3JjZVNhdmVBcyk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVu
ZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCi17Ci0gICAg
bV9wYWdlLT5pbnNwZWN0b3IoKS0+YXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KTsKLX0KLQotdm9p
ZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNoV2luZG93KERvY2tTaWRlIGRvY2tT
aWRlKQotewotICAgIHN3aXRjaCAoZG9ja1NpZGUpIHsKLSAgICBjYXNlIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpEb2NrU2lkZTo6VW5kb2NrZWQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpE
b2NrU2lkZTo6Qm90dG9tOgotICAgICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5hdHRhY2hCb3R0
b20oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
RG9ja1NpZGU6OlJpZ2h0OgotICAgICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5hdHRhY2hSaWdo
dCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OmRldGFjaFdpbmRvdygpCi17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+ZGV0
YWNoKCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldEF0dGFjaGVk
V2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3Rvcigp
LT5zZXRBdHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQpOwotfQotCi12b2lkIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQot
ewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNldEF0dGFjaGVkV2luZG93V2lkdGgod2lkdGgp
OwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRUb29sYmFySGVpZ2h0
KHVuc2lnbmVkIGhlaWdodCkKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5zZXRUb29sYmFy
SGVpZ2h0KGhlaWdodCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Omlu
c3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCi17Ci0gICAgbV9wYWdl
LT5pbnNwZWN0b3IoKS0+aW5zcGVjdGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4
IDU2MTI5N2EzMDc1MGNkZWYwMzk3MGE3YTBmZGY5ZjY5ZTJhY2M4ZmYuLjQ3NzQzNDE5ODgzYzMw
ZWY1Y2E5MTdiMGM3ZWM5N2EzYmU2MDI2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywxMTcgKzI3LDgyIEBACiAjaW5j
bHVkZSAiV2ViSW5zcGVjdG9yLmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCiAjaW5jbHVk
ZSAiV2ViRnJhbWUuaCIKLSNpbmNsdWRlICJXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgor
I2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9y
UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9h
ZFJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvclBhZ2VBZ2VudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dEJhc2UuaD4KLSNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0
dXJlcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorc3RhdGljIGNvbnN0IGZsb2F0
IG1pbmltdW1BdHRhY2hlZEhlaWdodCA9IDI1MDsKK3N0YXRpYyBjb25zdCBmbG9hdCBtYXhpbXVt
QXR0YWNoZWRIZWlnaHRSYXRpbyA9IDAuNzU7CitzdGF0aWMgY29uc3QgZmxvYXQgbWluaW11bUF0
dGFjaGVkV2lkdGggPSA3NTA7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPFdl
Ykluc3BlY3Rvcj4gV2ViSW5zcGVjdG9yOjpjcmVhdGUoV2ViUGFnZSogcGFnZSwgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwpCitQYXNzUmVmUHRyPFdlYkluc3BlY3Rv
cj4gV2ViSW5zcGVjdG9yOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYkluc3BlY3RvcihwYWdlLCBmcm9udGVuZENoYW5uZWwpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvcihwYWdlKSk7CiB9CiAKLVdlYkluc3BlY3Rvcjo6
V2ViSW5zcGVjdG9yKFdlYlBhZ2UqIHBhZ2UsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsKQorV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2ViUGFnZSogcGFnZSkK
ICAgICA6IG1fcGFnZShwYWdlKQotICAgICwgbV9pbnNwZWN0b3JQYWdlKG51bGxwdHIpCi0gICAg
LCBtX2Zyb250ZW5kQ2xpZW50KG51bGxwdHIpCi0gICAgLCBtX2Zyb250ZW5kQ2hhbm5lbChmcm9u
dGVuZENoYW5uZWwpCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgLCBtX2hhc0xvY2FsaXplZFN0
cmluZ3NVUkwoZmFsc2UpCi0jZW5kaWYKLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAg
ICAsIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoZmFsc2UpCi0jZW5kaWYKKyAgICAsIG1fYXR0
YWNoZWQoZmFsc2UpCisgICAgLCBtX3ByZXZpb3VzQ2FuQXR0YWNoKGZhbHNlKQogewogfQogCiAv
LyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JDbGllbnQKLVdlYlBhZ2UqIFdlYkluc3BlY3Rvcjo6
Y3JlYXRlSW5zcGVjdG9yUGFnZSgpCit2b2lkIFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zcGVjdG9y
UGFnZShib29sIHVuZGVyVGVzdCkKIHsKICAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICBBU1NFUlQoIW1faW5zcGVjdG9yUGFnZSk7Ci0gICAgQVNTRVJUKCFt
X2Zyb250ZW5kQ2xpZW50KTsKLQotICAgIHVpbnQ2NF90IGluc3BlY3RvclBhZ2VJRCA9IDA7Ci0g
ICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0gICAgaWYgKCFXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2UoKSwKLSAgICAgICAg
ICAgIE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6Q3JlYXRlSW5zcGVjdG9yUGFnZTo6UmVw
bHkoaW5zcGVjdG9yUGFnZUlELCBwYXJhbWV0ZXJzKSwKLSAgICAgICAgICAgIG1fcGFnZS0+cGFn
ZUlEKCksIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM6Om1heCgpKSkgewotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICB9CisgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaW5zcGVjdG9y
UGFnZUlEKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNpZiBPUyhEQVJXSU4pCisgICAgbWFj
aF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKKyAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNr
X3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKKworICAg
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmVyKGxpc3Rlbmlu
Z1BvcnQpOworICAgIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uQ2xpZW50UG9ydChsaXN0ZW5p
bmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7CisjZWxpZiBVU0UoVU5JWF9ET01BSU5f
U09DS0VUUykKKyAgICBJUEM6OkNvbm5lY3Rpb246OlNvY2tldFBhaXIgc29ja2V0UGFpciA9IElQ
Qzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CisgICAgSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmZXIoc29ja2V0UGFpci5zZXJ2ZXIp
OworICAgIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uQ2xpZW50UG9ydChzb2NrZXRQYWlyLmNs
aWVudCk7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuOworI2VuZGlm
CiAKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jcmVhdGVXZWJQYWdlKGluc3BlY3RvclBhZ2VJ
RCwgcGFyYW1ldGVycyk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlID0gV2ViUHJvY2Vzczo6c2hhcmVk
KCkud2ViUGFnZShpbnNwZWN0b3JQYWdlSUQpOwotICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2Up
OworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2
ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmZXIsIHRoaXMsIFJ1bkxvb3A6Om1haW4oKSk7
CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPm9wZW4oKTsKIAotICAgIGF1dG8gZnJvbnRlbmRD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX3Bh
Z2UsIG1faW5zcGVjdG9yUGFnZSk7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5kQ2xp
ZW50LmdldCgpOwotICAgIG1faW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9udGVuZENs
aWVudCkpOwotICAgIHJldHVybiBtX2luc3BlY3RvclBhZ2U7CisgICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2UoY29ubmVjdGlvbkNsaWVudFBvcnQsIGNhbkF0
dGFjaFdpbmRvdygpLCB1bmRlclRlc3QpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAotV2ViUGFn
ZSogV2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgpCit2b2lkIFdlYklu
c3BlY3Rvcjo6Y2xvc2VGcm9udGVuZCgpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgQVNTRVJUKCFtX2luc3BlY3RvclBhZ2UpOwotICAgIEFTU0VS
VCghbV9mcm9udGVuZENsaWVudCk7Ci0KLSAgICB1aW50NjRfdCBpbnNwZWN0b3JQYWdlSUQgPSAw
OwotICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIGlmICgh
V2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpDcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgp
LAotICAgICAgICAgICAgTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpDcmVhdGVJbnNwZWN0
b3JQYWdlRm9yVGVzdDo6UmVwbHkoaW5zcGVjdG9yUGFnZUlELCBwYXJhbWV0ZXJzKSwKLSAgICAg
ICAgICAgIG1fcGFnZS0+cGFnZUlEKCksIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM6Om1heCgp
KSkgewotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoIWluc3BlY3Rv
clBhZ2VJRCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5jcmVhdGVXZWJQYWdlKGluc3BlY3RvclBhZ2VJRCwgcGFyYW1ldGVycyk7Ci0gICAgbV9p
bnNwZWN0b3JQYWdlID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViUGFnZShpbnNwZWN0b3JQYWdl
SUQpOwotICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOwotCi0gICAgYXV0byBmcm9udGVuZENs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fcGFn
ZSwgbV9pbnNwZWN0b3JQYWdlKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGll
bnQuZ2V0KCk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250
cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xp
ZW50KSk7Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9yUGFnZTsKLX0KKyAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JQcm94eTo6RGlkQ2xvc2UoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiAKLXZvaWQgV2ViSW5z
cGVjdG9yOjpkZXN0cm95SW5zcGVjdG9yUGFnZSgpCi17Ci0gICAgbV9pbnNwZWN0b3JQYWdlID0g
bnVsbHB0cjsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbnVsbHB0cjsKLSAgICBtX2Zyb250ZW5k
Q2hhbm5lbCA9IG51bGxwdHI7Ci19CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPmludmFsaWRh
dGUoKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbiA9IG51bGxwdHI7CiAKLS8vIENhbGxlZCBm
cm9tIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ci12b2lkIFdlYkluc3BlY3Rvcjo6ZGlkQ2xv
c2UoKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKLSAgICBkZXN0cm95SW5zcGVjdG9yUGFnZSgpOworICAgIG1fYXR0YWNoZWQg
PSBmYWxzZTsKKyAgICBtX3ByZXZpb3VzQ2FuQXR0YWNoID0gZmFsc2U7CiB9CiAKIHZvaWQgV2Vi
SW5zcGVjdG9yOjpicmluZ1RvRnJvbnQoKQpAQCAtMTQ1LDUxICsxMTAsNiBAQCB2b2lkIFdlYklu
c3BlY3Rvcjo6YnJpbmdUb0Zyb250KCkKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QnJp
bmdUb0Zyb250KCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6
aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKLXsKLSAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6SW5zcGVjdGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OnNhdmUoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJv
b2wgZm9yY2VTYXZlQXMpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUoZmls
ZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2ZUFzKSwgbV9wYWdlLT5wYWdl
SUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjphcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclBy
b3h5OjpBcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQot
dm9pZCBXZWJJbnNwZWN0b3I6OmF0dGFjaEJvdHRvbSgpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OkF0dGFjaEJvdHRvbSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBX
ZWJJbnNwZWN0b3I6OmF0dGFjaFJpZ2h0KCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6QXR0YWNoUmlnaHQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVj
dG9yOjpkZXRhY2goKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEZXRhY2goKSwg
bV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzZXRBdHRhY2hlZFdp
bmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6OlNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCksIG1fcGFnZS0+cGFnZUlEKCkpOwot
fQotCi12b2lkIFdlYkluc3BlY3Rvcjo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3
aWR0aCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5kb3dX
aWR0aCh3aWR0aCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6
c2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCBoZWlnaHQpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OlNldFRvb2xiYXJIZWlnaHQoaGVpZ2h0KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19
Ci0KIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3IgbWVzc2FnZXMKIHZvaWQgV2ViSW5zcGVjdG9y
OjpzaG93KCkKIHsKQEAgLTIwMSwzNCArMTIxLDE3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpjbG9z
ZSgpCiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY2xvc2Uo
KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OmRpZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwpCi17
Ci0gICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5jb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KG1ha2VTdHJpbmcoIklu
c3BlY3RvckZyb250ZW5kQVBJLnNhdmVkVVJMKFwiIiwgdXJsLCAiXCIpIikpOwotfQotCi12b2lk
IFdlYkluc3BlY3Rvcjo6ZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIEFTU0VS
VChtX2luc3BlY3RvclBhZ2UpOwotICAgIG1faW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKS0+bWFp
bkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChtYWtlU3RyaW5nKCJJbnNwZWN0b3JGcm9u
dGVuZEFQSS5hcHBlbmRlZFRvVVJMKFwiIiwgdXJsLCAiXCIpIikpOwotfQotCi12b2lkIFdlYklu
c3BlY3Rvcjo6YXR0YWNoZWRCb3R0b20oKQordm9pZCBXZWJJbnNwZWN0b3I6Om9wZW5Jbk5ld1Rh
Yihjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkK
LSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0QXR0YWNoZWRXaW5kb3coSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpCb3R0b20pOwotfQorICAgIFBhZ2UqIGluc3BlY3RlZFBh
Z2UgPSBtX3BhZ2UtPmNvcmVQYWdlKCk7CisgICAgRnJhbWUmIGluc3BlY3RlZE1haW5GcmFtZSA9
IGluc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpOworICAgIEZyYW1lTG9hZFJlcXVlc3QgcmVxdWVz
dChpbnNwZWN0ZWRNYWluRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3Vy
Y2VSZXF1ZXN0KHVybFN0cmluZyksICJfYmxhbmsiKTsKIAotdm9pZCBXZWJJbnNwZWN0b3I6OmF0
dGFjaGVkUmlnaHQoKQotewotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zy
b250ZW5kQ2xpZW50LT5zZXRBdHRhY2hlZFdpbmRvdyhJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
RG9ja1NpZGU6OlJpZ2h0KTsKLX0KKyAgICBQYWdlKiBuZXdQYWdlID0gaW5zcGVjdGVkUGFnZS0+
Y2hyb21lKCkuY3JlYXRlV2luZG93KCZpbnNwZWN0ZWRNYWluRnJhbWUsIHJlcXVlc3QsIFdpbmRv
d0ZlYXR1cmVzKCksIE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwg
TmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tlZCkpOworICAgIGlmICghbmV3UGFnZSkKKyAgICAgICAg
cmV0dXJuOwogCi12b2lkIFdlYkluc3BlY3Rvcjo6ZGV0YWNoZWQoKQotewotICAgIGlmIChtX2Zy
b250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRBdHRhY2hlZFdpbmRv
dyhJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU6OlVuZG9ja2VkKTsKKyAgICBuZXdQ
YWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5sb2FkKHJlcXVlc3QpOwogfQogCiB2b2lkIFdlYklu
c3BlY3Rvcjo6ZXZhbHVhdGVTY3JpcHRGb3JUZXN0KGNvbnN0IFN0cmluZyYgc2NyaXB0KQpAQCAt
MjM5LDEwOCArMTQyLDk0IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpldmFsdWF0ZVNjcmlwdEZvclRl
c3QoY29uc3QgU3RyaW5nJiBzY3JpcHQpCiB2b2lkIFdlYkluc3BlY3Rvcjo6c2hvd0NvbnNvbGUo
KQogewogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3co
KTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+
c2hvd0NvbnNvbGUoKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yVUk6OlNob3dDb25zb2xlKCksIDApOwogfQogCiB2b2lkIFdlYkluc3BlY3Rv
cjo6c2hvd1Jlc291cmNlcygpCiB7CiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBt
X2Zyb250ZW5kQ2xpZW50LT5zaG93UmVzb3VyY2VzKCk7CisgICAgbV9mcm9udGVuZENvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTaG93UmVzb3VyY2VzKCksIDApOwog
fQogCi12b2lkIFdlYkluc3BlY3Rvcjo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQpCit2b2lkIFdlYkluc3BlY3Rvcjo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSWRlbnRpZmllcikKIHsKLSAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBXZWJGcmFtZSogZnJhbWUgPSBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlkZW50aWZpZXIpOwogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAg
ICAgbV9mcm9udGVuZENsaWVudC0+c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGZyYW1lLT5jb3Jl
RnJhbWUoKSk7Ci19CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpzdGFydEphdmFTY3JpcHREZWJ1Z2dp
bmcoKQotewotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNo
b3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVu
dC0+c2V0RGVidWdnaW5nRW5hYmxlZCh0cnVlKTsKKyAgICBTdHJpbmcgaW5zcGVjdG9yRnJhbWVJ
ZGVudGlmaWVyID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkucGFn
ZUFnZW50KCktPmZyYW1lSWQoZnJhbWUtPmNvcmVGcmFtZSgpKTsKKyAgICBtX2Zyb250ZW5kQ29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNob3dNYWluUmVzb3VyY2VG
b3JGcmFtZShpbnNwZWN0b3JGcmFtZUlkZW50aWZpZXIpLCAwKTsKIH0KIAotdm9pZCBXZWJJbnNw
ZWN0b3I6OnN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpzdGFy
dFBhZ2VQcm9maWxpbmcoKQogewogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9m
cm9udGVuZENsaWVudC0+c2V0RGVidWdnaW5nRW5hYmxlZChmYWxzZSk7Ci19Ci0KLXZvaWQgV2Vi
SW5zcGVjdG9yOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChib29sKQotewotICAgIC8v
IE5vIGxvbmdlciBzdXBwb3J0ZWQuCisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclVJOjpTdGFydFBhZ2VQcm9maWxpbmcoKSwgMCk7CiB9CiAKLXZv
aWQgV2ViSW5zcGVjdG9yOjpzdGFydEphdmFTY3JpcHRQcm9maWxpbmcoKQordm9pZCBXZWJJbnNw
ZWN0b3I6OnN0b3BQYWdlUHJvZmlsaW5nKCkKIHsKLSAgICAvLyBObyBsb25nZXIgc3VwcG9ydGVk
LgorICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsK
KyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6
OlN0b3BQYWdlUHJvZmlsaW5nKCksIDApOwogfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6c3RvcEph
dmFTY3JpcHRQcm9maWxpbmcoKQorYm9vbCBXZWJJbnNwZWN0b3I6OmNhbkF0dGFjaFdpbmRvdygp
CiB7Ci0gICAgLy8gTm8gbG9uZ2VyIHN1cHBvcnRlZC4KLX0KKyAgICAvLyBEb24ndCBhbGxvdyBh
dHRhY2hpbmcgdG8gYW5vdGhlciBpbnNwZWN0b3IgLS0gdHdvIGluc3BlY3RvcnMgaW4gb25lIHdp
bmRvdyBpcyB0b28gbXVjaCEKKyAgICBpZiAobV9wYWdlLT5pc0luc3BlY3RvclBhZ2UoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi12b2lkIFdlYkluc3BlY3Rvcjo6c3RhcnRQYWdlUHJvZmls
aW5nKCkKLXsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5z
aG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGll
bnQtPnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCh0cnVlKTsKLX0KKyAgICAvLyBJZiB3ZSBh
cmUgYWxyZWFkeSBhdHRhY2hlZCwgYWxsb3cgYXR0YWNoaW5nIGFnYWluIHRvIGFsbG93IHN3aXRj
aGluZyBzaWRlcy4KKyAgICBpZiAobV9hdHRhY2hlZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAK
LXZvaWQgV2ViSW5zcGVjdG9yOjpzdG9wUGFnZVByb2ZpbGluZygpCi17Ci0gICAgbV9wYWdlLT5j
b3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zyb250
ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRUaW1lbGluZVByb2ZpbGlu
Z0VuYWJsZWQoZmFsc2UpOworICAgIC8vIERvbid0IGFsbG93IHRoZSBhdHRhY2ggaWYgdGhlIHdp
bmRvdyB3b3VsZCBiZSB0b28gc21hbGwgdG8gYWNjb21tb2RhdGUgdGhlIG1pbmltdW0gaW5zcGVj
dG9yIHNpemUuCisgICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZUhlaWdodCA9IG1fcGFnZS0+Y29y
ZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CisgICAgdW5zaWdu
ZWQgaW5zcGVjdGVkUGFnZVdpZHRoID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52
aWV3KCktPnZpc2libGVXaWR0aCgpOworICAgIHVuc2lnbmVkIG1heGltdW1BdHRhY2hlZEhlaWdo
dCA9IGluc3BlY3RlZFBhZ2VIZWlnaHQgKiBtYXhpbXVtQXR0YWNoZWRIZWlnaHRSYXRpbzsKKyAg
ICByZXR1cm4gbWluaW11bUF0dGFjaGVkSGVpZ2h0IDw9IG1heGltdW1BdHRhY2hlZEhlaWdodCAm
JiBtaW5pbXVtQXR0YWNoZWRXaWR0aCA8PSBpbnNwZWN0ZWRQYWdlV2lkdGg7CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yOjp1cGRhdGVEb2NraW5nQXZhaWxhYmlsaXR5KCkKIHsKLSAgICBpZiAoIW1f
ZnJvbnRlbmRDbGllbnQpCisgICAgaWYgKG1fYXR0YWNoZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGJvb2wgY2FuQXR0YWNoV2luZG93ID0gdGhpcy0+Y2FuQXR0YWNoV2luZG93KCk7CisgICAg
aWYgKG1fcHJldmlvdXNDYW5BdHRhY2ggPT0gY2FuQXR0YWNoV2luZG93KQogICAgICAgICByZXR1
cm47CiAKLSAgICBib29sIGNhbkF0dGFjaFdpbmRvdyA9IG1fZnJvbnRlbmRDbGllbnQtPmNhbkF0
dGFjaFdpbmRvdygpOworICAgIG1fcHJldmlvdXNDYW5BdHRhY2ggPSBjYW5BdHRhY2hXaW5kb3c7
CisKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdl
ZChjYW5BdHRhY2hXaW5kb3cpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICBtX2Zyb250ZW5kQ2xp
ZW50LT5zZXREb2NraW5nVW5hdmFpbGFibGUoIWNhbkF0dGFjaFdpbmRvdyk7CiB9CiAKLSNpZiBF
TkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLXZvaWQgV2ViSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRv
UmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBXZWJJbnNwZWN0b3I6
OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBBU1NF
UlQobV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCk7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6OlNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChtZXNzYWdlKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0
Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwogfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6
ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
K2Jvb2wgV2ViSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQogewotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlKTsKKyNpZiAhRU5BQkxFKElOU1BF
Q1RPUl9TRVJWRVIpCisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSksIDApOworI2Vsc2UK
KyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5k
KG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOwog
fQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCiB2b2lkIFdlYkluc3BlY3Rvcjo6cmVt
b3RlRnJvbnRlbmRDb25uZWN0ZWQoKQogewotICAgIEFTU0VSVCghbV9yZW1vdGVGcm9udGVuZENv
bm5lY3RlZCk7Ci0gICAgLy8gU3dpdGNoaW5nIGJldHdlZW4gaW4tcHJvY2VzcyBhbmQgcmVtb3Rl
IGluc3BlY3RvcnMgaXNuJ3Qgc3VwcG9ydGVkIHlldC4KLSAgICBBU1NFUlQoIW1faW5zcGVjdG9y
UGFnZSk7Ci0gICAgCi0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCkuY29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX3JlbW90ZUZyb250
ZW5kQ29ubmVjdGVkID0gdHJ1ZTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNv
bnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQodGhpcyk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9y
OjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCiB7Ci0gICAgQVNTRVJUKG1fcmVtb3RlRnJv
bnRlbmRDb25uZWN0ZWQpOwogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RS
ZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7Ci0gICAgbV9yZW1vdGVGcm9udGVuZENvbm5lY3Rl
ZCA9IGZhbHNlOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3IuaAppbmRleCBjOTNiY2IzZmNhZmUxMTU4MmQ2MDRmZGNhZDI3
MmM0ZjkyNThjMDE2Li4zYzE5YjllODViMmZhY2FlZDM1ZjNhNGQwZmViZWRmODBhNDM0MmIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMCwxMDYgKzMwLDgwIEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbnNwZWN0b3JGb3J3YXJkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1jbGFzcyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIGNsYXNzIFdlYlBhZ2U7CiAKLWNs
YXNzIFdlYkluc3BlY3RvciA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6OkJ1bmRsZUluc3BlY3Rvcj4geworY2xhc3MgV2ViSW5zcGVjdG9yIDogcHVibGljIEFQSTo6
T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yPiwgcHVibGljIElQ
Qzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnNwZWN0b3I+IGNy
ZWF0ZShXZWJQYWdlKiwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViSW5zcGVjdG9yPiBjcmVhdGUoV2ViUGFnZSopOwogCiAgICAg
V2ViUGFnZSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQotICAgIFdlYlBhZ2UqIGlu
c3BlY3RvclBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvclBhZ2U7IH0KKworICAgIHZv
aWQgdXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgpOworCisgICAgdmlydHVhbCBib29sIHNlbmRN
ZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlOwogCiAgICAg
Ly8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5j
cHAKLSAgICB2b2lkIGRpZFJlY2VpdmVXZWJJbnNwZWN0b3JNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biosIElQQzo6TWVzc2FnZURlY29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKTsKKworICAgIC8vIElQQzo6Q29u
bmVjdGlvbjo6Q2xpZW50CisgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24qKSB7IGNs
b3NlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24qLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgeyBjbG9zZSgpOyB9CiAKICAgICAvLyBDYWxsZWQgYnkg
V2ViSW5zcGVjdG9yIG1lc3NhZ2VzCisgICAgdm9pZCBjb25uZWN0aW9uRXN0YWJsaXNoZWQoKTsK
KwogICAgIHZvaWQgc2hvdygpOwogICAgIHZvaWQgY2xvc2UoKTsKIAotICAgIHZvaWQgZGlkU2F2
ZShjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgdm9pZCBkaWRBcHBlbmQoY29uc3QgU3RyaW5nJiB1
cmwpOworICAgIHZvaWQgb3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKKwor
ICAgIHZvaWQgY2FuQXR0YWNoV2luZG93KGJvb2wmIHJlc3VsdCk7CisKKyAgICB2b2lkIHNob3dD
b25zb2xlKCk7CisgICAgdm9pZCBzaG93UmVzb3VyY2VzKCk7CiAKLSAgICB2b2lkIGF0dGFjaGVk
Qm90dG9tKCk7Ci0gICAgdm9pZCBhdHRhY2hlZFJpZ2h0KCk7Ci0gICAgdm9pZCBkZXRhY2hlZCgp
OworICAgIHZvaWQgc2hvd01haW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSWRlbnRp
Zmllcik7CisKKyAgICB2b2lkIHNldEF0dGFjaGVkKGJvb2wgYXR0YWNoZWQpIHsgbV9hdHRhY2hl
ZCA9IGF0dGFjaGVkOyB9CiAKICAgICB2b2lkIGV2YWx1YXRlU2NyaXB0Rm9yVGVzdChjb25zdCBT
dHJpbmcmIHNjcmlwdCk7CiAKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVk
KGJvb2wpOwogICAgIHZvaWQgc3RhcnRQYWdlUHJvZmlsaW5nKCk7CiAgICAgdm9pZCBzdG9wUGFn
ZVByb2ZpbGluZygpOwogCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJp
bmcmKTsKKwogI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotICAgIGJvb2wgaGFzUmVtb3Rl
RnJvbnRlbmRDb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZUZyb250ZW5kQ29ubmVj
dGVkOyB9Ci0gICAgdm9pZCBzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKLSAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHZvaWQgcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQo
KTsKICAgICB2b2lkIHJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCk7CiAjZW5kaWYKIAogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50OwotICAgIGZyaWVuZCBj
bGFzcyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIAotICAgIGV4cGxpY2l0IFdlYkluc3Bl
Y3RvcihXZWJQYWdlKiwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAg
ZXhwbGljaXQgV2ViSW5zcGVjdG9yKFdlYlBhZ2UqKTsKKworICAgIGJvb2wgY2FuQXR0YWNoV2lu
ZG93KCk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JDbGllbnQKLSAgICBXZWJQ
YWdlKiBjcmVhdGVJbnNwZWN0b3JQYWdlKCk7Ci0gICAgV2ViUGFnZSogY3JlYXRlSW5zcGVjdG9y
UGFnZUZvclRlc3QoKTsKLSAgICB2b2lkIGRlc3Ryb3lJbnNwZWN0b3JQYWdlKCk7CisgICAgdm9p
ZCBjcmVhdGVJbnNwZWN0b3JQYWdlKGJvb2wgdW5kZXJUZXN0KTsKIAotICAgIC8vIENhbGxlZCBm
cm9tIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ci0gICAgdm9pZCBkaWRDbG9zZSgpOworICAg
IHZvaWQgY2xvc2VGcm9udGVuZCgpOwogICAgIHZvaWQgYnJpbmdUb0Zyb250KCk7Ci0gICAgdm9p
ZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpOwotCi0gICAgYm9vbCBjYW5TYXZl
KCkgY29uc3Q7Ci0gICAgdm9pZCBzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKTsKLSAg
ICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnQpOwotCi0gICAgdm9pZCBhdHRhY2hCb3R0b20oKTsKLSAgICB2b2lkIGF0dGFjaFJpZ2h0KCk7
Ci0gICAgdm9pZCBkZXRhY2goKTsKIAotICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQo
dW5zaWduZWQpOwotICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCk7Ci0g
ICAgdm9pZCBzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkKTsKLQotICAgIC8vIEltcGxlbWVudGVk
IGluIHBsYXRmb3JtIFdlYkluc3BlY3RvciBmaWxlCi0gICAgU3RyaW5nIGxvY2FsaXplZFN0cmlu
Z3NVUkwoKSBjb25zdDsKLQotICAgIHZvaWQgc2hvd0NvbnNvbGUoKTsKLQotICAgIHZvaWQgc2hv
d1Jlc291cmNlcygpOwotCi0gICAgdm9pZCBzaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCk7Ci0KLSAgICB2b2lkIHN0YXJ0SmF2YVNjcmlwdERlYnVnZ2luZygpOwotICAg
IHZvaWQgc3RvcEphdmFTY3JpcHREZWJ1Z2dpbmcoKTsKLQotICAgIHZvaWQgc3RhcnRKYXZhU2Ny
aXB0UHJvZmlsaW5nKCk7Ci0gICAgdm9pZCBzdG9wSmF2YVNjcmlwdFByb2ZpbGluZygpOworICAg
IFdlYlBhZ2UqIG1fcGFnZTsKIAotICAgIHZvaWQgdXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgp
OworICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fZnJvbnRlbmRDb25uZWN0aW9uOwogCi0g
ICAgV2ViUGFnZSogbV9wYWdlOwotICAgIFdlYlBhZ2UqIG1faW5zcGVjdG9yUGFnZTsKLSAgICBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9mcm9udGVuZENsaWVudDsKLSAgICBXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVsOwotI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIG11dGFibGUgU3RyaW5nIG1fbG9jYWxpemVkU3RyaW5nc1VSTDsKLSAg
ICBtdXRhYmxlIGJvb2wgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMOwotI2VuZGlmCi0jaWYgRU5B
QkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0gICAgYm9vbCBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVk
OwotI2VuZGlmCisgICAgYm9vbCBtX2F0dGFjaGVkOworICAgIGJvb2wgbV9wcmV2aW91c0NhbkF0
dGFjaDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KaW5k
ZXggYzIzYjg2ZjIxNDI1Y2I0NjJlNDkyODM5ZmY4MDE5NWUzODY3Zjc4Ny4uZmMwNzNjYWU4ZGRk
MzVmYWEzMjMzYjdkZTk1NTI5ZjdlMzk2NDI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCkBAIC0x
LDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMiwyNiArMjIsMjUg
QEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLW1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvciBM
ZWdhY3lSZWNlaXZlciB7CittZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3IgewogICAgIFNob3coKQog
ICAgIENsb3NlKCkKLSAgICBBdHRhY2hlZEJvdHRvbSgpCi0gICAgQXR0YWNoZWRSaWdodCgpCi0g
ICAgRGV0YWNoZWQoKQotICAgIERpZFNhdmUoU3RyaW5nIHVybCkKLSAgICBEaWRBcHBlbmQoU3Ry
aW5nIHVybCkKKworICAgIFNldEF0dGFjaGVkKGJvb2wgYXR0YWNoZWQpCisKICAgICBTaG93Q29u
c29sZSgpCiAgICAgU2hvd1Jlc291cmNlcygpCi0gICAgU2hvd01haW5SZXNvdXJjZUZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgU3RhcnRKYXZhU2NyaXB0RGVidWdnaW5nKCkKLSAgICBT
dG9wSmF2YVNjcmlwdERlYnVnZ2luZygpCi0gICAgU3RhcnRKYXZhU2NyaXB0UHJvZmlsaW5nKCkK
LSAgICBTdG9wSmF2YVNjcmlwdFByb2ZpbGluZygpCisKKyAgICBTaG93TWFpblJlc291cmNlRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJZGVudGlmaWVyKQorCisgICAgT3BlbkluTmV3VGFiKFN0cmlu
ZyB1cmwpCisKICAgICBTdGFydFBhZ2VQcm9maWxpbmcoKQogICAgIFN0b3BQYWdlUHJvZmlsaW5n
KCkKIAorICAgIFNlbmRNZXNzYWdlVG9CYWNrZW5kKFN0cmluZyBtZXNzYWdlKQorCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0gICAgRGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250
ZW5kKFN0cmluZyBtZXNzYWdlKQogICAgIFJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkKICAgICBS
ZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEy
OTdhZDNkNTgwMTUyZDA2MzA1MzljMDA2MTMzMGQ0NTFiY2Y2NjUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCkBA
IC0wLDAgKzEsMjg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYkluc3BlY3RvclVJLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVk
ZSAiV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eU1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvQ2hyb21lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29ybGQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01h
aW5GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEds
b2JhbE9iamVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0U3RhdGUuaD4KKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPFdl
Ykluc3BlY3RvclVJPiBXZWJJbnNwZWN0b3JVSTo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJJbnNwZWN0b3JVSShwYWdlKSk7Cit9CisKK1dlYklu
c3BlY3RvclVJOjpXZWJJbnNwZWN0b3JVSShXZWJQYWdlKiBwYWdlKQorICAgIDogbV9wYWdlKHBh
Z2UpCisgICAgLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKDApCisgICAgLCBtX3VuZGVyVGVz
dChmYWxzZSkKKyAgICAsIG1fZnJvbnRlbmRMb2FkZWQoZmFsc2UpCisgICAgLCBtX2RvY2tTaWRl
KERvY2tTaWRlOjpVbmRvY2tlZCkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAsIG1faGFzTG9j
YWxpemVkU3RyaW5nc1VSTChmYWxzZSkKKyNlbmRpZgoreworfQorCit2b2lkIFdlYkluc3BlY3Rv
clVJOjplc3RhYmxpc2hDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBlbmNvZGVkQ29ubmVjdGlv
bklkZW50aWZpZXIsIHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVy
VGVzdCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkp
OworI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisgICAgSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmll
ci5yZWxlYXNlRmlsZURlc2NyaXB0b3IoKSk7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuOworI2VuZGlmCisKKyAgICBpZiAoSVBDOjpDb25uZWN0aW9uOjppZGVudGlm
aWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyOworICAg
IG1fdW5kZXJUZXN0ID0gdW5kZXJUZXN0OworCisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQodGhpcyk7CisKKyAg
ICBtX2JhY2tlbmRDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25u
ZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCB0aGlzLCBSdW5Mb29wOjptYWluKCkpOworICAg
IG1fYmFja2VuZENvbm5lY3Rpb24tPm9wZW4oKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6
d2luZG93T2JqZWN0Q2xlYXJlZCgpCit7CisgICAgaWYgKG1fZnJvbnRlbmRIb3N0KQorICAgICAg
ICBtX2Zyb250ZW5kSG9zdC0+ZGlzY29ubmVjdENsaWVudCgpOworCisgICAgbV9mcm9udGVuZEhv
c3QgPSBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmNyZWF0ZSh0aGlzLCBtX3BhZ2UtPmNvcmVQYWdl
KCkpOworICAgIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KGV4ZWNTdGF0ZUZyb21QYWdlKG1haW5U
aHJlYWROb3JtYWxXb3JsZCgpLCBtX3BhZ2UtPmNvcmVQYWdlKCkpLCBBU0NJSUxpdGVyYWwoIklu
c3BlY3RvckZyb250ZW5kSG9zdCIpLCBtX2Zyb250ZW5kSG9zdC5nZXQoKSk7Cit9CisKK3ZvaWQg
V2ViSW5zcGVjdG9yVUk6OmZyb250ZW5kTG9hZGVkKCkKK3sKKyAgICBtX2Zyb250ZW5kTG9hZGVk
ID0gdHJ1ZTsKKworICAgIGV2YWx1YXRlUGVuZGluZ0V4cHJlc3Npb25zKCk7CisgICAgYnJpbmdU
b0Zyb250KCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6Om1vdmVXaW5kb3dCeShmbG9hdCB4
LCBmbG9hdCB5KQoreworICAgIEZsb2F0UmVjdCBmcmFtZVJlY3QgPSBtX3BhZ2UtPmNvcmVQYWdl
KCktPmNocm9tZSgpLndpbmRvd1JlY3QoKTsKKyAgICBmcmFtZVJlY3QubW92ZSh4LCB5KTsKKyAg
ICBtX3BhZ2UtPmNvcmVQYWdlKCktPmNocm9tZSgpLnNldFdpbmRvd1JlY3QoZnJhbWVSZWN0KTsK
K30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6YnJpbmdUb0Zyb250KCkKK3sKKyAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZp
ZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpjbG9zZVdpbmRvdygpCit7CisgICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZp
ZXIpOworCisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworICAgIG1fYmFj
a2VuZENvbm5lY3Rpb24gPSBudWxscHRyOworCisgICAgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmll
ciA9IDA7CisgICAgbV91bmRlclRlc3QgPSBmYWxzZTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JV
STo6cmVxdWVzdFNldERvY2tTaWRlKERvY2tTaWRlIHNpZGUpCit7CisgICAgc3dpdGNoIChzaWRl
KSB7CisgICAgY2FzZSBEb2NrU2lkZTo6VW5kb2NrZWQ6CisgICAgICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpEZXRhY2goKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6UmlnaHQ6CisgICAgICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjpBdHRhY2hSaWdodCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsK
KyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERvY2tTaWRlOjpCb3R0b206CisgICAgICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hCb3R0b20oKSwgbV9pbnNwZWN0ZWRQYWdlSWRl
bnRpZmllcik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBXZWJJbnNwZWN0b3JV
STo6c2V0RG9ja1NpZGUoRG9ja1NpZGUgc2lkZSkKK3sKKyAgICBjb25zdCBjaGFyKiBzaWRlU3Ry
aW5nOworCisgICAgc3dpdGNoIChzaWRlKSB7CisgICAgY2FzZSBEb2NrU2lkZTo6VW5kb2NrZWQ6
CisgICAgICAgIHNpZGVTdHJpbmcgPSAidW5kb2NrZWQiOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgRG9ja1NpZGU6OlJpZ2h0OgorICAgICAgICBzaWRlU3RyaW5nID0gInJpZ2h0IjsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERvY2tTaWRlOjpCb3R0b206CisgICAgICAgIHNpZGVT
dHJpbmcgPSAiYm90dG9tIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgbV9kb2NrU2lk
ZSA9IHNpZGU7CisKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzZXRE
b2NrU2lkZSIpLCBBU0NJSUxpdGVyYWwoc2lkZVN0cmluZykpOworfQorCit2b2lkIFdlYkluc3Bl
Y3RvclVJOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCit7Cisg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdo
dCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJ
OjpjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQoreworICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKSwgbV9pbnNw
ZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNldFRvb2xi
YXJIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpTZXRUb29sYmFySGVpZ2h0KGhlaWdodCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOwor
fQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwp
Cit7CisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpPcGVuSW5OZXdUYWIodXJsKSwgMCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNhdmUo
Y29uc3QgV1RGOjpTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudCwg
Ym9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKQoreworICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjpTYXZlKGZpbGVuYW1lLCBjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBmb3Jj
ZVNhdmVBcyksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3Bl
Y3RvclVJOjphcHBlbmQoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBXVEY6OlN0
cmluZyYgY29udGVudCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXBwZW5kKGZp
bGVuYW1lLCBjb250ZW50KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
V2ViSW5zcGVjdG9yVUk6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Okluc3BlY3RlZFVSTENoYW5nZWQo
dXJsU3RyaW5nKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5z
cGVjdG9yVUk6OnNob3dDb25zb2xlKCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVND
SUlMaXRlcmFsKCJzaG93Q29uc29sZSIpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2hv
d1Jlc291cmNlcygpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgi
c2hvd1Jlc291cmNlcyIpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2hvd01haW5SZXNv
dXJjZUZvckZyYW1lKFN0cmluZyBmcmFtZUlkZW50aWZpZXIpCit7CisgICAgZXZhbHVhdGVDb21t
YW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2hvd01haW5SZXNvdXJjZUZvckZyYW1lIiksIGZyYW1l
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnN0YXJ0UGFnZVByb2ZpbGlu
ZygpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2V0VGltZWxp
bmVQcm9maWxpbmdFbmFibGVkIiksIHRydWUpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpz
dG9wUGFnZVByb2ZpbGluZygpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0
ZXJhbCgic2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkIiksIGZhbHNlKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JVSTo6ZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBldmFsdWF0
ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzYXZlZFVSTCIpLCB1cmwpOworfQorCit2b2lk
IFdlYkluc3BlY3RvclVJOjpkaWRBcHBlbmQoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgZXZh
bHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgiYXBwZW5kZWRUb1VSTCIpLCB1cmwpOwor
fQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQoreworICAgIGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChtYWtlU3RyaW5n
KCJJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaE1lc3NhZ2VBc3luYygiLCBtZXNzYWdlLCAi
KSIpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIDApOwor
fQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3Ry
aW5nJiBjb21tYW5kLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50KQoreworICAgIGlmIChhcmd1bWVu
dC5pc051bGwoKSkKKyAgICAgICAgZXZhbHVhdGVFeHByZXNzaW9uT25Mb2FkKG1ha2VTdHJpbmco
Ikluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoKFtcIiIsIGNvbW1hbmQsICJcIl0pIikpOwor
ICAgIGVsc2UKKyAgICAgICAgZXZhbHVhdGVFeHByZXNzaW9uT25Mb2FkKG1ha2VTdHJpbmcoIklu
c3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoKFtcIiIsIGNvbW1hbmQsICJcIiwgXCIiLCBhcmd1
bWVudCwgIlwiXSkiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRlQ29tbWFu
ZE9uTG9hZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGJvb2wgYXJndW1lbnQpCit7CisgICAgZXZh
bHVhdGVDb21tYW5kT25Mb2FkKGNvbW1hbmQsIEFTQ0lJTGl0ZXJhbChhcmd1bWVudCA/ICJ0cnVl
IiA6ICJmYWxzZSIpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVFeHByZXNz
aW9uT25Mb2FkKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbikKK3sKKyAgICBpZiAobV9mcm9udGVu
ZExvYWRlZCkgeworICAgICAgICBBU1NFUlQobV9xdWV1ZS5pc0VtcHR5KCkpOworICAgICAgICBt
X3BhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhw
cmVzc2lvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3F1ZXVlLmFwcGVuZChl
eHByZXNzaW9uKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVQZW5kaW5nRXhw
cmVzc2lvbnMoKQoreworICAgIEFTU0VSVChtX2Zyb250ZW5kTG9hZGVkKTsKKworICAgIGZvciAo
Y29uc3QgU3RyaW5nJiBleHByZXNzaW9uIDogbV9xdWV1ZSkKKyAgICAgICAgbV9wYWdlLT5jb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOwor
CisgICAgbV9xdWV1ZS5jbGVhcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkYmZjYmUzOGRmNzJhNTg0
ZmQxMzA0ODFjZmZjMDVkMDhmYWE2M2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaApAQCAtMCwwICsxLDEzNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViSW5zcGVjdG9yVUlfaAorI2RlZmluZSBXZWJJbnNwZWN0
b3JVSV9oCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0Lmgi
CisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRm9y
d2FyZGluZy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kSG9zdC5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgV2ViSW5zcGVjdG9yVUkgOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVJbnNwZWN0b3JVST4s
IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgcHVibGljIFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnNw
ZWN0b3JVST4gY3JlYXRlKFdlYlBhZ2UqKTsKKworICAgIFdlYlBhZ2UqIHBhZ2UoKSBjb25zdCB7
IHJldHVybiBtX3BhZ2U7IH0KKworICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJJ
bnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKTsKKworICAgIC8vIElQQzo6
Q29ubmVjdGlvbjo6Q2xpZW50CisgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24qKSB7
IGNsb3NlV2luZG93KCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24qLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgeyBjbG9zZVdpbmRvdygpOyB9CisKKyAg
ICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yVUkgbWVzc2FnZXMKKyAgICB2b2lkIGVzdGFibGlz
aENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QpOworCisgICAgdm9pZCBz
aG93Q29uc29sZSgpOworICAgIHZvaWQgc2hvd1Jlc291cmNlcygpOworCisgICAgdm9pZCBzaG93
TWFpblJlc291cmNlRm9yRnJhbWUoU3RyaW5nIGZyYW1lSWRlbnRpZmllcik7CisKKyAgICB2b2lk
IHN0YXJ0UGFnZVByb2ZpbGluZygpOworICAgIHZvaWQgc3RvcFBhZ2VQcm9maWxpbmcoKTsKKwor
ICAgIHZvaWQgYXR0YWNoZWRCb3R0b20oKSB7IHNldERvY2tTaWRlKERvY2tTaWRlOjpCb3R0b20p
OyB9CisgICAgdm9pZCBhdHRhY2hlZFJpZ2h0KCkgeyBzZXREb2NrU2lkZShEb2NrU2lkZTo6Umln
aHQpOyB9CisgICAgdm9pZCBkZXRhY2hlZCgpIHsgc2V0RG9ja1NpZGUoRG9ja1NpZGU6OlVuZG9j
a2VkKTsgfQorCisgICAgdm9pZCBzZXREb2NrU2lkZShEb2NrU2lkZSk7CisKKyAgICB2b2lkIGRp
ZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQgZGlkQXBwZW5kKGNvbnN0IFN0cmlu
ZyYgdXJsKTsKKworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYp
OworCisgICAgLy8gV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQKKyAgICB2b2lkIHdp
bmRvd09iamVjdENsZWFyZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGZyb250ZW5kTG9hZGVkKCkg
b3ZlcnJpZGU7CisKKyAgICB2b2lkIG1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KSBvdmVy
cmlkZTsKKworICAgIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgb3ZlcnJpZGU7CisKKyAg
ICB2b2lkIGJyaW5nVG9Gcm9udCgpIG92ZXJyaWRlOworICAgIHZvaWQgY2xvc2VXaW5kb3coKSBv
dmVycmlkZTsKKworICAgIHZvaWQgcmVxdWVzdFNldERvY2tTaWRlKERvY2tTaWRlKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGNoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGNoYW5nZUF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpIG92ZXJyaWRl
OworCisgICAgdm9pZCBzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkKSBvdmVycmlkZTsKKworICAg
IHZvaWQgb3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKKworICAgIGJv
b2wgY2FuU2F2ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2F2ZShjb25zdCBXVEY6OlN0cmluZyYg
dXJsLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29s
IGZvcmNlU2F2ZUFzKSBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBXVEY6OlN0cmlu
ZyYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudCkgb3ZlcnJpZGU7CisKKyAgICB2b2lk
IGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisKKyAgICB2b2lk
IHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworCisgICAgYm9v
bCBpc1VuZGVyVGVzdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdW5kZXJUZXN0OyB9CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yVUkoV2ViUGFnZSopOworCisgICAgdm9pZCBl
dmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBjb25zdCBTdHJpbmcm
IGFyZ3VtZW50ID0gU3RyaW5nKCkpOworICAgIHZvaWQgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNv
bnN0IFN0cmluZyYgY29tbWFuZCwgY29uc3QgQVNDSUlMaXRlcmFsJiBhcmd1bWVudCkgeyBldmFs
dWF0ZUNvbW1hbmRPbkxvYWQoY29tbWFuZCwgU3RyaW5nKGFyZ3VtZW50KSk7IH0KKyAgICB2b2lk
IGV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGJvb2wgYXJndW1l
bnQpOworICAgIHZvaWQgZXZhbHVhdGVFeHByZXNzaW9uT25Mb2FkKGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbik7CisgICAgdm9pZCBldmFsdWF0ZVBlbmRpbmdFeHByZXNzaW9ucygpOworCisgICAg
V2ViUGFnZSogbV9wYWdlOworCisgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9iYWNrZW5k
Q29ubmVjdGlvbjsKKyAgICB1aW50NjRfdCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyOworCisg
ICAgYm9vbCBtX3VuZGVyVGVzdDsKKyAgICBib29sIG1fZnJvbnRlbmRMb2FkZWQ7CisgICAgRGVx
dWU8U3RyaW5nPiBtX3F1ZXVlOworCisgICAgUmVmUHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kSG9zdD4gbV9mcm9udGVuZEhvc3Q7CisKKyAgICBEb2NrU2lkZSBtX2RvY2tTaWRlOworCisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgbXV0YWJsZSBTdHJpbmcgbV9sb2NhbGl6ZWRTdHJpbmdz
VVJMOworICAgIG11dGFibGUgYm9vbCBtX2hhc0xvY2FsaXplZFN0cmluZ3NVUkw7CisjZW5kaWYK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
UikKKworI2VuZGlmIC8vIFdlYkluc3BlY3RvclVJX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yM2ViNWZkNThhNjdhOWYwZWJmMTFkZWM2NWI1NjQ4YjY4OTAxNDM5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3RvclVJLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsNDYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKK21lc3NhZ2VzIC0+
IFdlYkluc3BlY3RvclVJIHsKKyAgICBFc3RhYmxpc2hDb25uZWN0aW9uKElQQzo6QXR0YWNobWVu
dCBjb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIs
IGJvb2wgdW5kZXJUZXN0KQorCisgICAgQXR0YWNoZWRCb3R0b20oKQorICAgIEF0dGFjaGVkUmln
aHQoKQorICAgIERldGFjaGVkKCkKKworICAgIFNob3dDb25zb2xlKCkKKyAgICBTaG93UmVzb3Vy
Y2VzKCkKKworICAgIFNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShTdHJpbmcgZnJhbWVJZGVudGlm
aWVyKQorCisgICAgU3RhcnRQYWdlUHJvZmlsaW5nKCkKKyAgICBTdG9wUGFnZVByb2ZpbGluZygp
CisKKyAgICBEaWRTYXZlKFN0cmluZyB1cmwpCisgICAgRGlkQXBwZW5kKFN0cmluZyB1cmwpCisK
KyAgICBTZW5kTWVzc2FnZVRvRnJvbnRlbmQoU3RyaW5nIG1lc3NhZ2UpCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGU2
MmFjZmQ5YzQ2YTg1NTFjM2U4NDQ2MmVhMGExMmViZWMxMmJmODYuLmNjYzYzYjUzMTQ2NTM4ODk4
NTg5ZjNhMmJlODVmNjQ0OTc5NjlhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTgwLDYgKzgwLDggQEAKICNpbmNsdWRlICJXZWJJbnNw
ZWN0b3IuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJXZWJJ
bnNwZWN0b3JNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCisjaW5jbHVk
ZSAiV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbkNs
aWVudC5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgpAQCAtNDYwLDYgKzQ2Miw3IEBAIFdlYlBh
Z2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQogI2VuZGlmCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3Rv
cjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOworICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKICNlbmRpZgogI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CkBAIC01MjAsNiArNTIzLDcgQEAgV2ViUGFnZTo6fldl
YlBhZ2UoKQogI2VuZGlmCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJ
RCk7CkBAIC0yODg2LDE4ICsyODkwLDI2IEBAIHZvaWQgV2ViUGFnZTo6ZGlkRmx1c2hMYXllclRy
ZWVBdFRpbWUoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lc3RhbXApCiB9CiAjZW5kaWYK
IAotICAgIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiBXZWJJbnNwZWN0b3IqIFdlYlBhZ2U6Omlu
c3BlY3RvcigpCiB7CiAgICAgaWYgKG1faXNDbG9zZWQpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1faW5zcGVjdG9yKQotICAgICAgICBtX2lu
c3BlY3RvciA9IFdlYkluc3BlY3Rvcjo6Y3JlYXRlKHRoaXMsIG1faW5zcGVjdG9yQ2xpZW50KTsK
KyAgICAgICAgbV9pbnNwZWN0b3IgPSBXZWJJbnNwZWN0b3I6OmNyZWF0ZSh0aGlzKTsKICAgICBy
ZXR1cm4gbV9pbnNwZWN0b3IuZ2V0KCk7CiB9CisKK1dlYkluc3BlY3RvclVJKiBXZWJQYWdlOjpp
bnNwZWN0b3JVSSgpCit7CisgICAgaWYgKG1faXNDbG9zZWQpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGlmICghbV9pbnNwZWN0b3JVSSkKKyAgICAgICAgbV9pbnNwZWN0b3JVSSA9IFdl
Ykluc3BlY3RvclVJOjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIG1faW5zcGVjdG9yVUkuZ2V0
KCk7Cit9CiAjZW5kaWYKLSAgICAKKwogI2lmIFBMQVRGT1JNKElPUykKIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIqIFdlYlBhZ2U6OnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKQogewpAQCAtMzQ3
OSw3ICszNDkxLDEzIEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uKiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyCiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6
OldlYkluc3BlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIGlmIChXZWJJ
bnNwZWN0b3IqIGluc3BlY3RvciA9IHRoaXMtPmluc3BlY3RvcigpKQotICAgICAgICAgICAgaW5z
cGVjdG9yLT5kaWRSZWNlaXZlV2ViSW5zcGVjdG9yTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKKyAgICAgICAgICAgIGluc3BlY3Rvci0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKFdlYkluc3BlY3RvclVJKiBpbnNwZWN0b3JVSSA9
IHRoaXMtPmluc3BlY3RvclVJKCkpCisgICAgICAgICAgICBpbnNwZWN0b3JVSS0+ZGlkUmVjZWl2
ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IGJhYmE1MDZlYzIwZjQyMzU2MzM5YWVlYTYyYTg5NTc0Njg2NWJjODguLmI3ZDQ0OGM5NjgwMGFm
OWZkYmQ3YTQwMjRlYmU0ODM4MzYyNjMzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTUzLDYgKzE1Myw3IEBAIGNsYXNzIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOwogY2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBXZWJJbnNwZWN0b3I7CiBjbGFzcyBX
ZWJJbnNwZWN0b3JDbGllbnQ7CitjbGFzcyBXZWJJbnNwZWN0b3JVSTsKIGNsYXNzIFdlYktleWJv
YXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTm90aWZpY2F0aW9uQ2xp
ZW50OwpAQCAtMjI2LDggKzIyNywxMCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogICAgIFdlYkluc3BlY3RvciogaW5zcGVjdG9yKCk7CisgICAgV2ViSW5zcGVjdG9yVUkqIGlu
c3BlY3RvclVJKCk7CisgICAgYm9vbCBpc0luc3BlY3RvclBhZ2UoKSB7IHJldHVybiAhIW1faW5z
cGVjdG9yVUk7IH0KICNlbmRpZgotICAgIAorCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIqIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKTsKICNlbmRpZgpA
QCAtMTE1OSw2ICsxMTYyLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAg
ICAgUmVmUHRyPFdlYkluc3BlY3Rvcj4gbV9pbnNwZWN0b3I7CisgICAgUmVmUHRyPFdlYkluc3Bl
Y3RvclVJPiBtX2luc3BlY3RvclVJOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFJl
ZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiBtX3ZpZGVvRnVsbHNjcmVlbk1hbmFnZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYklu
c3BlY3RvclVJRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwv
V2ViSW5zcGVjdG9yVUlFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NTdjN2I2MTA1M2EyN2VmNDBiYjNk
NTgyNDU1MGM2ZjU1MDEzNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3RvclVJRWZsLmNwcApAQCAtMCwwICsxLDQ4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCisKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSA8V2ViQ29yZS9FZmxJbnNwZWN0b3JVdGls
aXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2Jvb2wgV2ViSW5zcGVjdG9yVUk6OmNhblNhdmUoKQoreworICAgIHJldHVybiBm
YWxzZTsKK30KKworU3RyaW5nIFdlYkluc3BlY3RvclVJOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkK
K3sKKyAgICByZXR1cm4gImZpbGU6Ly8iICsgV2ViQ29yZTo6aW5zcGVjdG9yUmVzb3VyY2VQYXRo
KCkgKyAiL2xvY2FsaXplZFN0cmluZ3MuanMiOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ2NDY3ODU1ZThlNzQ5ODJjMTIwNzNhNjNiNThkZTc4MjZiMGNlZDgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3Bl
Y3RvclVJR3RrLmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAo
YykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgi
CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBXZWJJbnNwZWN0b3JVSTo6Y2FuU2F2ZSgpCit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitTdHJpbmcgV2ViSW5zcGVjdG9yVUk6OmxvY2FsaXpl
ZFN0cmluZ3NVUkwoKQoreworICAgIHJldHVybiBTdHJpbmcoInJlc291cmNlOi8vL29yZy93ZWJr
aXRndGsvaW5zcGVjdG9yL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5q
cyIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQ
RUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYkluc3BlY3RvclVJTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJJbnNwZWN0b3JVSU1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYmU3NmE2NzE5ODg1MGNmNDRm
NDc2MzRjYWZlYTFlMDhjODUzMjE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5tbQpAQCAtMCwwICsxLDYx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJJ
bnNwZWN0b3JVSS5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2ltcG9ydCA8V2ViQ29y
ZS9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfU1RBR0VEX0ZSQU1FV09SSyhXZWJJbnNwZWN0
b3JVSSwgUHJpdmF0ZUZyYW1ld29ya3MsIEEpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29s
IFdlYkluc3BlY3RvclVJOjpjYW5TYXZlKCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworU3Ry
aW5nIFdlYkluc3BlY3RvclVJOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkKK3sKKyAgICBpZiAoIW1f
aGFzTG9jYWxpemVkU3RyaW5nc1VSTCkgeworICAgICAgICAvLyBDYWxsIHRoZSBzb2Z0IGxpbmsg
ZnJhbWV3b3JrIGZ1bmN0aW9uIHRvIGRsb3BlbiBpdCwgdGhlbiBbTlNCdW5kbGUgYnVuZGxlV2l0
aElkZW50aWZpZXI6XSB3aWxsIHdvcmsuCisgICAgICAgIFdlYkluc3BlY3RvclVJTGlicmFyeSgp
OworCisgICAgICAgIE5TU3RyaW5nICpwYXRoID0gW1tOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRp
ZmllcjpAImNvbS5hcHBsZS5XZWJJbnNwZWN0b3JVSSJdIHBhdGhGb3JSZXNvdXJjZTpAImxvY2Fs
aXplZFN0cmluZ3MiIG9mVHlwZTpAImpzIl07CisgICAgICAgIGlmIChbcGF0aCBsZW5ndGhdKQor
ICAgICAgICAgICAgbV9sb2NhbGl6ZWRTdHJpbmdzVVJMID0gW1tOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6cGF0aF0gYWJzb2x1dGVTdHJpbmddOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2xv
Y2FsaXplZFN0cmluZ3NVUkwgPSBTdHJpbmcoKTsKKyAgICAgICAgbV9oYXNMb2NhbGl6ZWRTdHJp
bmdzVVJMID0gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9sb2NhbGl6ZWRTdHJpbmdzVVJM
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tCmluZGV4IDJjYmZlYWI0YTU4NDQwZmU2ODRhZTZjYzk2MGI0YTMxYjdiZmRlOTcuLjUy
ZWJmYjBiOWUyNWU0NGY3ODRlNzlkYjA2YzZhMTAyY2U0YTcyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0yMDUsNyAr
MjA1LDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhj
b25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzCiB2b2lkIFdlYlByb2Nlc3M6OmluaXRp
YWxpemVQcm9jZXNzTmFtZShjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiB7CiAjaWYgIVBMQVRGT1JNKElPUykKLSAgICBOU1N0cmluZyAqYXBw
bGljYXRpb25OYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX1NUUklORygi
JUAgV2ViIENvbnRlbnQiLCAiVmlzaWJsZSBuYW1lIG9mIHRoZSB3ZWIgcHJvY2Vzcy4gVGhlIGFy
Z3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1lLiIpLCAoTlNTdHJpbmcgKilwYXJhbWV0ZXJz
LnVpUHJvY2Vzc05hbWVdOworICAgIE5TU3RyaW5nICphcHBsaWNhdGlvbk5hbWU7CisgICAgaWYg
KHBhcmFtZXRlcnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0KEFTQ0lJTGl0ZXJhbCgiaW5z
cGVjdG9yLXByb2Nlc3MiKSkgPT0gIjEiKQorICAgICAgICBhcHBsaWNhdGlvbk5hbWUgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCIlQCBXZWIgSW5zcGVjdG9yIiwg
IlZpc2libGUgbmFtZSBvZiBXZWIgSW5zcGVjdG9yJ3Mgd2ViIHByb2Nlc3MuIFRoZSBhcmd1bWVu
dCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4iKSwgKE5TU3RyaW5nICopcGFyYW1ldGVycy51aVBy
b2Nlc3NOYW1lXTsKKyAgICBlbHNlCisgICAgICAgIGFwcGxpY2F0aW9uTmFtZSA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9TVFJJTkcoIiVAIFdlYiBDb250ZW50IiwgIlZpc2li
bGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRp
b24gbmFtZS4iKSwgKE5TU3RyaW5nICopcGFyYW1ldGVycy51aVByb2Nlc3NOYW1lXTsKICAgICBX
S1NldFZpc2libGVBcHBsaWNhdGlvbk5hbWUoKENGU3RyaW5nUmVmKWFwcGxpY2F0aW9uTmFtZSk7
CiAjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238454</attachid>
            <date>2014-09-21 23:56:24 -0700</date>
            <delta_ts>2014-09-22 08:01:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135120-20140921235624.patch</filename>
            <type>text/plain</type>
            <size>157738</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZlZDE1Mjk4NGZmNGZm
N2JmZDJjYjI0YzYzNmE3MDY0ZjYxZTM3ZS4uNTMwNDUwY2JmYmU5ZmQ0YzQ0ZjQ2ZTAyNGQ2ZTE3
YzFhMzEwNDU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE0LTA5LTIxICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHRoZSBXZWIg
SW5zcGVjdG9yIHVzZSBhIHNlcGFyYXRlIHdlYiBwcm9jZXNzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxMjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFi
bGUuc3RyaW5nczogVXBkYXRlZC4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRT
dGF0ZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogcGFnZS9D
aHJvbWUuaDoKKyAgICAgICAgRXhwb3J0ZWQgYSBmZXcgZnVuY3Rpb25zIGFuZCBwcml2YXRlIGhl
YWRlcnMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckZy
b250ZW5kQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omhh
c0luc3BlY3RvckZyb250ZW5kQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OnNob3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
Lmg6CisgICAgICAgIE1ha2UgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgYSBwb2ludGVyIGluc3Rl
YWQgb2YgYSBzdGQ6OnVuaXF1ZV9wdHIuCisgICAgICAgIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRv
IGltcGxlbWVudCBJbnNwZWN0b3JGcm9udGVuZENsaWVudCBhcworICAgICAgICBwYXJ0IG9mIGFu
IGV4aXN0aW5nIG9iamVjdCB0aGF0IGlzIGV4dGVybmFsbHkgb3duZWQuCisKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9wZW5E
dW1teUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2xv
c2VEdW1teUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5o
OgorICAgICAgICBDaGFuZ2UgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teSBmcm9tIGJlaW5n
IG1vdmVkIHRvIG93bmVkLgorCiAyMDE0LTA5LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgR2VuZXJhdGUgRWxlbWVudCBjYXN0aW5nIGhlbHBlciBmdW5jdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDRhYTI5ODI4NTdkZWU2ZWJmN2MyNGI5YjA0
OWJhMmY2NGZkMmU2OTQuLmZmODYwYjZjMGFjMWIwNDBkNmZiM2QzOWE1NzA0M2IyMjU0ZGY1MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE0LTA5LTIxICBU
aW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHRoZSBX
ZWIgSW5zcGVjdG9yIHVzZSBhIHNlcGFyYXRlIHdlYiBwcm9jZXNzLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxMjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIExvY2FsaXphdGlvbnMvZW4ubHBy
b2ovbG9jYWxpemVkU3RyaW5ncy5qczogVXBkYXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvQmFzZS9NYWluLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuY29udGVudExvYWRlZCk6CisgICAgICAgIE1vdmUgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmxvYWRlZCB0byBsYXRlciBpbiB0aGUgbG9hZC4KKyAgICAgICAgQ2FsbGluZyBp
dCBlYXJseSBqdXN0IHNob3dzIHRoZSB3aW5kb3cgYmVmb3JlIHdlIGhhdmUKKyAgICAgICAgYSB1
c2VyIGludGVyZmFjZSB0byBzaG93LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1Rl
c3QuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IubG9hZGVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5jb250ZW50TG9hZGVkKToKKyAgICAgICAgTWF0Y2ggdGhlIGNoYW5nZXMgaW4gTWFpbi5q
cy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRB
UEkuanM6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTCk6IENoYW5nZSBj
b21tZW50LgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRUb1VSTCk6IENo
YW5nZSBjb21tZW50LgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2gpOiBB
ZGQgYW4gYXNzZXJ0IGFuZCBlYXJseQorICAgICAgICByZXR1cm4gdG8gYmUgc2FmZSBmcm9tIHVu
a25vd24gY29tbWFuZHMuCisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxl
dGVkKTogRGVsZXRlIF9wZW5kaW5nQ29tbWFuZHMsCisgICAgICAgIG5vIG5lZWQgdG8ga2VlcCBh
biBlbXB0eSBhcnJheSBhcm91bmQgYSBvbmUgdGltZSB1c2UuCisKIDIwMTQtMDktMDYgIFRpbW90
aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBhIDxjaXJjbGU+
IGluc3RlYWQgb2YgYSA8cGF0aD4gaW4gRG93bmxvYWRBcnJvdy5zdmcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cK
aW5kZXggNDcyNzJlMmZlM2Q3ODFjYjg2MzdjNWM5NzY3YTQ3NWI4MjBlYmU5My4uNTFmOTM5NzY4
YWIzMWJhMTc0NzMyYTFhOTZiNzJlNTU0ZDQzZjhjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDE0LTA5LTIxICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNv
bT4KKworICAgICAgICBNYWtlIHRoZSBXZWIgSW5zcGVjdG9yIHVzZSBhIHNlcGFyYXRlIHdlYiBw
cm9jZXNzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzUxMjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbToKKyAgICAgICAgKFdl
Ykluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgUmVtb3ZlZCBt
X2Zyb250ZW5kQ2xpZW50IGluaXRpYWxpemF0aW9uIHNpbmNlIGl0IGlzCisgICAgICAgIG5vdyBh
IHN0ZDo6dW5pcXVlX3B0ciB0aGF0IGRlZmF1bHRzIHRvIG51bGxwdHIuCisKIDIwMTQtMDktMTcg
IERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIxNzM2OTUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggM2U0MGQyYTYzNmQ0Mzg3
ZmNkODE0YTAzZGRjNGM5MTkxODk1ZGM4NS4uMjcxMmNhY2FjNDgyNWUzNGYwOGMzOTVmMjIxOTg3
NmYxN2E1NmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTA5LTIx
ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHRo
ZSBXZWIgSW5zcGVjdG9yIHVzZSBhIHNlcGFyYXRlIHdlYiBwcm9jZXNzLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxMjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xp
ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5k
KToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5kKToKKyAgICAg
ICAgT3duIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50IGluc3RlYWQgb2YgbW92aW5nIGl0Lgor
CiAyMDE0LTA5LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
R2VuZXJhdGUgRWxlbWVudCBjYXN0aW5nIGhlbHBlciBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpp
bmRleCA1MWY3YzIxYTQzNzkwZDVhNDBlYzA3NDgwOWNmN2JhMDI3MmFmOWI2Li43Nzc2YjcwNGQz
ZGUxY2Q3MjkxZTI1ZGFjZDgwMzhlOGI1NGRiNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTQtMDktMjEgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29t
PgorCisgICAgICAgIE1ha2UgdGhlIFdlYiBJbnNwZWN0b3IgdXNlIGEgc2VwYXJhdGUgd2ViIHBy
b2Nlc3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNTEyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYklu
c3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVu
dDo6ZnJvbnRlbmRDbGllbnQpOgorICAgICAgICBPd24gV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQgaW5zdGVhZCBvZiBtb3ZpbmcgaXQuCisKIDIwMTQtMDktMjEgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBHZW5lcmF0ZSBFbGVtZW50IGNhc3RpbmcgaGVscGVy
IGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDc4MWNiZDUyMzU5MjRkMzRlODMzZWY3N2UyNmQ5NTFk
ODEyYjE4YjguLjYxYzk3ZTA0NjUyZjI0NDY2NjFiOWU1ODQzNDQ1Y2RhMjcyYTIxZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxODAgQEAKKzIwMTQtMDktMjEgIFRpbW90aHkgSGF0Y2hlciAgPHRp
bW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgdGhlIFdlYiBJbnNwZWN0b3IgdXNlIGEg
c2VwYXJhdGUgd2ViIHByb2Nlc3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNTEyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgIEFkZGVkIG5ldyBXZWJJbnNwZWN0b3JVSSBmaWxlcyBhbmQgcmVtb3ZlZCBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0
Lmg6IEFkZGVkIEJ1bmRsZUluc3BlY3RvclVJLgorCisgICAgICAgICogU2hhcmVkL0VudHJ5UG9p
bnRVdGlsaXRpZXMvbWFjL0xlZ2FjeVByb2Nlc3MvQ2hpbGRQcm9jZXNzRW50cnlQb2ludC5tbToK
KyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzTWFpbkRlbGVnYXRlOjpnZXRFeHRyYUluaXRp
YWxpemF0aW9uRGF0YSk6CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFj
L1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW06CisgICAgICAgIChXZWJLaXQ6OlhQ
Q1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRFeHRyYUluaXRpYWxpemF0aW9uRGF0YSk6
CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciAiaW5zcGVjdG9yLXByb2Nlc3MiIGRhdGEsIGEgYm9v
bGVhbiB0aGF0IGlzIHVzZWQgYnkKKyAgICAgICAgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nl
c3NOYW1lLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcDoKKyAg
ICAgICAgKFdLSW5zcGVjdG9ySXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KToKKyAgICAgICAgKFdLSW5z
cGVjdG9yVG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZyk6CisgICAgICAgIChXS0luc3BlY3Rvcklz
UHJvZmlsaW5nSmF2YVNjcmlwdCk6CisgICAgICAgIChXS0luc3BlY3RvclRvZ2dsZUphdmFTY3Jp
cHRQcm9maWxpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oOgor
ICAgICAgICBTdHViIG91dCBmdW5jdGlvbnMgd2UgZG9uJ3Qgc3VwcG9ydCBidXQgbmVlZCB0byBr
ZWVwIGZvciBuaWdodGx5IGNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
SW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQYWdlR3Jv
dXBzOjpjcmVhdGVJbnNwZWN0b3JQYWdlR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JQcm94eTo6V2ViSW5zcGVjdG9yUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JQcm94eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5Ojpjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNob3dD
b25zb2xlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNob3dSZXNvdXJj
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6c2hvd01haW5SZXNvdXJj
ZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkZXRhY2gpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQ29udGV4dCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRl
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZWFnZXJseUNyZWF0ZUlu
c3BlY3RvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRl
SW5zcGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpvcGVu
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmRpZENsb3NlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aXNDb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JQcm94eTo6Y2FuQXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5z
cGVjdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJJbnNw
ZWN0b3JQcm94eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2Vi
SW5zcGVjdG9yUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dl
Ykluc3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAoLVtXS1dlYkluc3BlY3RvclByb3h5T2Jq
Q0FkYXB0ZXIgY2xvc2VdKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBs
YXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybURpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtSGlkZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybVNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1BcHBlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1BdHRhY2gpOgorICAgICAgICBDaGFuZ2VkIGhvdyB0aGUgSW5zcGVjdG9yIHBhZ2UgaXMgY3Jl
YXRlZCBieSBtYWtpbmcgaXQgaW4gYSBuZXcgV2ViQ29udGV4dCBmb3IKKyAgICAgICAgdGhlIElu
c3BlY3Rvci4gVGhpcyByZW1vdmVzIHVzIGZyb20gdGhlIG1haW4gcHJvY2VzcyBwb29sIGFuZCBn
dWFyYW50ZWVzIG5vIHByb2Nlc3MKKyAgICAgICAgc2hhcmluZyBmb3Igb3VyIHVzZXIgaW50ZXJm
YWNlLiBBbHNvIHNlbmQgbmV3IFdlYkluc3BlY3RvclVJIG1lc3NhZ2VzIHRvIHRoZSBJbnNwZWN0
b3IKKyAgICAgICAgcGFnZSBhbmQgbm90IHRoZSBpbnNwZWN0ZWQgcGFnZSB3aGVuIGFwcHJvcHJp
YXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6IEFkZCAiaW5zcGVj
dG9yLXByb2Nlc3MiIHRvIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhCisgICAgICAgIGlmIHRoZSBj
b250ZXh0IGlzIHRoZSBJbnNwZWN0b3IgY29udGV4dC4gVGhpcyBpcyB1c2VkIGJ5IFdlYlByb2Nl
c3M6OmluaXRpYWxpemVQcm9jZXNzTmFtZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OmJyaW5nRnJvbnRlbmRUb0Zyb250KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAg
ICBSZW1vdmUgdGhlIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBjbGFzcyBmcm9tIFdlYkluc3Bl
Y3RvckNsaWVudCBhbmQgY2xlYW4gdXAgYSBsaXR0bGUuCisgICAgICAgIEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCBpbXBsZW1lbnRhdGlvbiBtb3ZlZCB0byBXZWJJbnNwZWN0b3IuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
LmNwcDogUmVtb3ZlZC4gU3VwZXJzZWRlZCBieSBXZWJJbnNwZWN0b3JVSS4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6V2Vi
SW5zcGVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0
b3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpvcGVuSW5OZXdUYWIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNob3dDb25zb2xlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yOjpzaG93UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
OjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3I6OnN0YXJ0UGFnZVByb2ZpbGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6
c3RvcFBhZ2VQcm9maWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNhbkF0
dGFjaFdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6dXBkYXRlRG9ja2lu
Z0F2YWlsYWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6c2VuZE1lc3Nh
Z2VUb0JhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdl
VG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRl
bmRDb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250
ZW5kRGlzY29ubmVjdGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6ZGlkQ2xvc2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6c2V0QXR0YWNoZWQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW46CisgICAgICAgIFN0b3AgdGFr
aW5nIGFuIG9wdGlvbmFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBhbmQgaW5oZXJpdCBpdCBp
bnN0ZWFkLiBDcmVhdGUgYSBjb25uZWN0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIHBhc3NlZCB0
byB0aGUgb3RoZXIgd2ViIHByb2Nlc3MgZm9yIFdlYkluc3BlY3RvclVJIHRvIHVzZS4gU3RvcCBy
ZWZlcmVuY2luZyBJbnNwZWN0b3IncyBwYWdlCisgICAgICAgIGRpcmVjdGx5LCBzaW5jZSBpdCBp
cyBpbiBhbm90aGVyIHByb2Nlc3Mgbm93LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3RvclVJLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clVJOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6V2ViSW5zcGVj
dG9yVUkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjp3aW5kb3dPYmplY3RDbGVh
cmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmZyb250ZW5kTG9hZGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6Om1vdmVXaW5kb3dCeSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpicmluZ1RvRnJvbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSTo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JVSTo6cmVxdWVzdFNldERvY2tTaWRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUk6OnNldERvY2tTaWRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmNo
YW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
VUk6OmNoYW5nZUF0dGFjaGVkV2luZG93V2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JVSTo6c2V0VG9vbGJhckhlaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clVJOjpvcGVuSW5OZXdUYWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6c2F2
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjphcHBlbmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6aW5zcGVjdGVkVVJMQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclVJOjpzaG93Q29uc29sZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclVJOjpzaG93UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclVJOjpzdGFydFBhZ2VQcm9maWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JVSTo6c3RvcFBhZ2VQcm9maWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JVSTo6ZGlkU2F2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpkaWRBcHBl
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6c2VuZE1lc3NhZ2VUb0Zyb250
ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9CYWNr
ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRlQ29tbWFuZE9u
TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpldmFsdWF0ZUV4cHJlc3Np
b25PbkxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVQZW5k
aW5nRXhwcmVzc2lvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JVSS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OnBhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JVSTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmF0dGFjaGVkQm90dG9tKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yVUk6OmF0dGFjaGVkUmlnaHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSTo6ZGV0YWNoZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6
ZXZhbHVhdGVDb21tYW5kT25Mb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yVUkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9lZmwvV2ViSW5zcGVjdG9yVUlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yVUk6OmNhblNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JV
STo6bG9jYWxpemVkU3RyaW5nc1VSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JVSTo6Y2FuU2F2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpsb2Nh
bGl6ZWRTdHJpbmdzVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYklu
c3BlY3RvclVJTWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6
OmNhblNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3Ry
aW5nc1VSTCk6CisgICAgICAgIEltcGxlbWVudCB0aGUgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQg
YW5kIGhhbmRsZSBhIGNvbm5lY3Rpb24gdG8gdGhlIGluc3BlY3RlZCBwYWdlJ3MgV2ViSW5zcGVj
dG9yLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
fldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNwZWN0b3IpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjppbnNwZWN0b3JVSSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgU2V0dXAgYXMgYSBsaXN0ZW5lciBmb3Ig
V2ViSW5zcGVjdG9yVUkgbWVzc2FnZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc0luc3BlY3RvclBhZ2UpOiBJ
dCBpcyBhbiBJbnNwZWN0b3IgcGFnZSBpZiB3ZSBoYXZlIGEgbV9pbnNwZWN0b3JVSS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUpOgorICAgICAgICBOYW1lIHRo
ZSBwcm9jZXNzICIlQCBXZWIgSW5zcGVjdG9yIiBpZiBpdCBpcyBhbiBJbnNwZWN0b3IgY29udGVu
dCBwcm9jZXNzLiBQcm9jZXNzZXMgaW4gdGhhdAorICAgICAgICBjb250ZXh0IGFyZSBub3Qgc2hh
cmVkIHdpdGggbXVsdGlwbGUgcGFnZXMuCisKIDIwMTQtMDktMjEgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBHZW5lcmF0ZSBFbGVtZW50IGNhc3RpbmcgaGVscGVy
IGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2Nh
bGl6YWJsZS5zdHJpbmdzIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJs
ZS5zdHJpbmdzCmluZGV4IDE0MTE2N2VjMTZlNWVmZmE1MTVmN2U1ZjdjZDRiOWMzODk4ZWVmZjku
Ljc3ZGQ3MDcxNDdjNWNmMmVjMmJkNTAxMDIyMzIwNDVkOWFhYWJiNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKQEAgLTQ5LDYgKzQ5
LDkgQEAKIC8qIFZpc2libGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBp
cyB0aGUgYXBwbGljYXRpb24gbmFtZS4gKi8KICIlQCBXZWIgQ29udGVudCIgPSAiJUAgV2ViIENv
bnRlbnQiOwogCisvKiBWaXNpYmxlIG5hbWUgb2YgV2ViIEluc3BlY3RvcidzIHdlYiBwcm9jZXNz
LiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuICovCisiJUAgV2ViIEluc3Bl
Y3RvciIgPSAiJUAgV2ViIEluc3BlY3RvciI7CisKIC8qIE5hbWUgb2YgYXBwbGljYXRpb24ncyBz
aW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hhaW4gKi8KICIlQCBXZWJDcnlwdG8g
TWFzdGVyIEtleSIgPSAiJUAgV2ViQ3J5cHRvIE1hc3RlciBLZXkiOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCmluZGV4IGFmMGQ1YWI1OTEwZjhmMzFiOGQzMDA5Yzg1ODQyYThjYTc1M2Y3MzEuLmViNzA5
ZjI2ZTkzNzc4MmFiZDhmMjE1OWM5NzAyMTNjOWMxNDUwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CkBAIC03NzAsNiArNzcwLDcgQEAgX19aTjdXZWJDb3JlMTdTUUxpdGVUcmFuc2FjdGlvbkQxRXYK
IF9fWk43V2ViQ29yZTE3U3VicmVzb3VyY2VMb2FkZXI2Y3JlYXRlRVBOU181RnJhbWVFUE5TXzE0
Q2FjaGVkUmVzb3VyY2VFUktOU18xNVJlc291cmNlUmVxdWVzdEVSS05TXzIxUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zRQogX19aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUds
b2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDbGFzc0luZm9FCiBfX1pON1dlYkNv
cmUxN2VuY29kZUZvckZpbGVOYW1lRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTdleGVj
U3RhdGVGcm9tUGFnZUVSTlNfMTVET01XcmFwcGVyV29ybGRFUE5TXzRQYWdlRQogX19aTjdXZWJD
b3JlMTdsYW5ndWFnZURpZENoYW5nZUV2CiBfX1pON1dlYkNvcmUxN29wZW5UZW1wb3JhcnlGaWxl
RVJLTjNXVEY2U3RyaW5nRVJpCiBfX1pON1dlYkNvcmUxN3NSR0JDb2xvclNwYWNlUmVmRXYKQEAg
LTc5Myw2ICs3OTQsNyBAQCBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDhhZGRUeXBl
c0VSS04zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1QwogX19aTjdXZWJDb3JlMThQ
bGF0Zm9ybVBhc3RlYm9hcmQ4Z2V0VHlwZXNFUk4zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMbTBF
TlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2Fy
ZDhzZXRUeXBlc0VSS04zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1Q3Jhc2hPbk92
ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZEMxRVJLTjNXVEY2U3Ry
aW5nRQorX19aTjdXZWJDb3JlMThTY3JpcHRHbG9iYWxPYmplY3Qzc2V0RVBOM0pTQzlFeGVjU3Rh
dGVFUEtjUE5TXzIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0RQogX19aTjdXZWJDb3JlMThTdHlsZVNo
ZWV0Q29udGVudHMxMXBhcnNlU3RyaW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMThT
dHlsZVNoZWV0Q29udGVudHNDMUVQTlNfMTVTdHlsZVJ1bGVJbXBvcnRFUktOM1dURjZTdHJpbmdF
UktOU18xNkNTU1BhcnNlckNvbnRleHRFCiBfX1pON1dlYkNvcmUxOFN0eWxlU2hlZXRDb250ZW50
c0QxRXYKQEAgLTE5MjUsNyArMTkyNywxMCBAQCBfX1pOSzdXZWJDb3JlNVJhbmdlOWVuZE9mZnNl
dEVSaQogX19aTks3V2ViQ29yZTVSYW5nZTlmaXJzdE5vZGVFdgogX19aTks3V2ViQ29yZTVSYW5n
ZTl0ZXh0UXVhZHNFUk4zV1RGNlZlY3RvcklOU185RmxvYXRRdWFkRUxtMEVOUzFfMTVDcmFzaE9u
T3ZlcmZsb3dFRUViUE5TMF8yMFJhbmdlSW5GaXhlZFBvc2l0aW9uRQogX19aTks3V2ViQ29yZTVS
YW5nZTl0ZXh0UmVjdHNFUk4zV1RGNlZlY3RvcklOU183SW50UmVjdEVMbTBFTlMxXzE1Q3Jhc2hP
bk92ZXJmbG93RUVFYlBOUzBfMjBSYW5nZUluRml4ZWRQb3NpdGlvbkUKK19fWk5LN1dlYkNvcmU2
Q2hyb21lMTB3aW5kb3dSZWN0RXYKIF9fWk5LN1dlYkNvcmU2Q2hyb21lMTJjcmVhdGVXaW5kb3dF
UE5TXzVGcmFtZUVSS05TXzE2RnJhbWVMb2FkUmVxdWVzdEVSS05TXzE0V2luZG93RmVhdHVyZXNF
UktOU18xNk5hdmlnYXRpb25BY3Rpb25FCitfX1pOSzdXZWJDb3JlNkNocm9tZTEzc2V0V2luZG93
UmVjdEVSS05TXzlGbG9hdFJlY3RFCitfX1pOSzdXZWJDb3JlNkNocm9tZTRzaG93RXYKIF9fWk5L
N1dlYkNvcmU2RWRpdG9yMTJzZWxlY3RlZFRleHRFdgogX19aTks3V2ViQ29yZTZFZGl0b3IxM2Nh
bkVkaXRSaWNobHlFdgogX19aTks3V2ViQ29yZTZFZGl0b3IxNmNvbXBvc2l0aW9uUmFuZ2VFdgpA
QCAtMzEyMiwxMyArMzEyNywxOCBAQCBfX1pON1dlYkNvcmU1Q29sb3JDMUVSS04zV1RGNlN0cmlu
Z0UKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogX19aTjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTI3
c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3Jl
MTVJbnNwZWN0b3JDbGllbnQzMWRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2VFUE5TXzRQ
YWdlRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMThJbnNwZWN0b3JQYWdlQWdlbnQ3ZnJh
bWVJZEVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTVjb25u
ZWN0RnJvbnRlbmRFUE45SW5zcGVjdG9yMjRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxFCiBfX1pO
N1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOGRpc2Nvbm5lY3RGcm9udGVuZEVOOUluc3Bl
Y3RvcjI1SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbkUKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9y
Q29udHJvbGxlcjE4c2V0UHJvZmlsZXJFbmFibGVkRWIKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9y
Q29udHJvbGxlcjI1ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZEVSS04zV1RGNlN0cmluZ0UKLV9f
Wk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI2c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRFTlN0M19fMTEwdW5pcXVlX3B0cklOU18yM0luc3BlY3RvckZyb250ZW5kQ2xpZW50RU5TMV8x
NGRlZmF1bHRfZGVsZXRlSVMzX0VFRUUKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxl
cjI2c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFUE5TXzIzSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRFCitfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyN2Rpc3BhdGNoTWVzc2FnZUZy
b21Gcm9udGVuZEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJv
bGxlcjRzaG93RXYKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjVjbG9zZUV2Citf
X1pON1dlYkNvcmUyMUluc3BlY3RvckZyb250ZW5kSG9zdDE2ZGlzY29ubmVjdENsaWVudEV2Citf
X1pON1dlYkNvcmUyMUluc3BlY3RvckZyb250ZW5kSG9zdEMxRVBOU18yM0luc3BlY3RvckZyb250
ZW5kQ2xpZW50RVBOU180UGFnZUUKK19fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0
RDFFdgogX19aTjdXZWJDb3JlMjJpbnN0cnVtZW50YXRpb25Gb3JQYWdlRVBOU180UGFnZUUKIF9f
Wk43V2ViQ29yZTI0SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uMTdzX2Zyb250ZW5kQ291bnRlckUK
IF9fWk43V2ViQ29yZTI0SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uMjZpbnN0cnVtZW50aW5nQWdl
bnRzRm9yUGFnZUVQTlNfNFBhZ2VFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODdkMmJiYzVkOTA4NTBiZWU0ZTM3MTlkOTM3MDg4
ODBhNDAyMTk4YS4uMGM2YTNlM2RiNjZjODFmYzBjYWU0ODk3NGQ1NDc1MTJkMjk3OGMyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTc2MSw3ICsxNzYxLDcgQEAKIAkJNEYxNTM0RTAxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRp
bmdCZWhhdmlvclR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0RjE1MzRERjExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjRG
NUZGQjExQ0JEMkUxMDBBMTg2QkYgLyogSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjRGNUZG
QTExQ0JEMkQyMDBBMTg2QkYgLyogSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5jcHAg
Ki87IH07CiAJCTRGNkZERDY0MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRE
NjIxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5jcHAgKi87IH07Ci0JCTRG
NkZERDY1MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNkZERDYzMTM0MURFREQwMDFG
OEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCAqLzsgfTsKKwkJNEY2RkRENjUxMzQxREVERDAw
MUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRENjMxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3Rv
clBhZ2VBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTRGNzA3QTk5MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JXZWJCYWNrZW5kRGlz
cGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEY3MDdBOTcxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRj
aGVycy5jcHAgKi87IH07CiAJCTRGNzA3QTlBMTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JX
ZWJCYWNrZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRGNzA3QTk4MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JXZWJCYWNr
ZW5kRGlzcGF0Y2hlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0RkIzOTBBRDE1RUY2MUYzMDA3QUQ1MUYgLyogR2VuZXJhdGVkSW1hZ2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZCMzkwQUMx
NUVGNjFGMzAwN0FENTFGIC8qIEdlbmVyYXRlZEltYWdlLmNwcCAqLzsgfTsKQEAgLTIzMzAsNyAr
MjMzMCw3IEBACiAJCTc5RjJGNUExMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjJG
NTlFMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmNwcCAqLzsgfTsKIAkJNzlG
MkY1QTIxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjJGNTlGMTA5MTkzOUEwMDBEODdD
QiAvKiBDb21wb3NpdGlvbkV2ZW50LmggKi87IH07CiAJCTdBMEU3NzBFMTBDMDBBODgwMEEwMjc2
RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0EwRTc3MEIxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3Rv
ckZyb250ZW5kSG9zdC5jcHAgKi87IH07Ci0JCTdBMEU3NzBGMTBDMDBBODgwMEEwMjc2RSAvKiBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdBMEU3NzBDMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVu
ZEhvc3QuaCAqLzsgfTsKKwkJN0EwRTc3MEYxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZy
b250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0EwRTc3MEMxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBMEU3NzFF
MTBDMDBEQjEwMEEwMjc2RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzcxQzEwQzAwREIxMDBB
MDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwICovOyB9OwogCQk3QTBFNzcxRjEw
QzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NzFEMTBDMDBEQjEwMEEwMjc2
RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5oICovOyB9OwogCQk3QTFEN0ZDQjE4Rjg1RjBG
MDBDMzg1QUQgLyogbWVkaWFDb250cm9sc0xvY2FsaXplZFN0cmluZ3MuanMgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMUQ3RkM5MThGODVGMEYwMEMz
ODVBRCAvKiBtZWRpYUNvbnRyb2xzTG9jYWxpemVkU3RyaW5ncy5qcyAqLzsgfTsKQEAgLTIzNzAs
NyArMjM3MCw3IEBACiAJCTdBQjBCMUMxMTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JEYXRh
YmFzZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QUIwQjFCRjEyMTFBNjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oICov
OyB9OwogCQk3QUNEODhEMzE0QzA4QkQ2MDA4NEVERDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FD
RDg4RDExNEMwOEJENjAwODRFREQyIC8qIEluc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCAqLzsg
fTsKIAkJN0FDRDg4RDQxNEMwOEJENjAwODRFREQyIC8qIEluc3BlY3RvckluZGV4ZWREQkFnZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUNEODhE
MjE0QzA4QkQ2MDA4NEVERDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCAqLzsgfTsKLQkJ
N0FERTcyMjYxMENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBREU3MjI1MTBDQkJCOUIw
MDZCM0IzQSAvKiBDb250ZXh0TWVudVByb3ZpZGVyLmggKi87IH07CisJCTdBREU3MjI2MTBDQkJC
OUIwMDZCM0IzQSAvKiBDb250ZXh0TWVudVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QURFNzIyNTEwQ0JCQjlCMDA2QjNCM0EgLyogQ29u
dGV4dE1lbnVQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdBRjlCMjAyMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIxRkMxOENG
QjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5jcHAgKi87IH07CiAJCTdBRjlCMjAzMThDRkIyREYw
MEM2NEJFRiAvKiBWVFRSZWdpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdBRjlCMUZEMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uaCAqLzsg
fTsKIAkJN0FGOUIyMDUxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbkxpc3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIxRkYxOENGQjJE
RjAwQzY0QkVGIC8qIFZUVFJlZ2lvbkxpc3QuY3BwICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaAppbmRleCA4YWEwNTViZDZmOTdiYThj
MjFiMDU4YzczYjA4NjE5ODU0ZmNjYTRjLi45MmJmMjA2ZGY1MDk5YTY0YWZlMzFkNzU2MGY2OGZl
Njk5N2QxZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRH
bG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9i
YWxPYmplY3QuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBTY3JpcHRHbG9iYWxPYmplY3Qgewog
cHVibGljOgogICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIq
IG5hbWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi0gICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciog
bmFtZSwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0Kik7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBib29sIGdldChKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IGNoYXIqIG5hbWUsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKaW5kZXggOGE4MmNhYjA1ZDY1ODQ4ODRj
OWFiYjI3MzNkMTRjNmZlMDJhYzg3Zi4uN2UyNmFjN2E5YmExNTMzM2UyOTYyODg0YWUwZDZlYzkx
YzYzMDJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3Rh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBAIC01
OCw3ICs1OCw3IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkV4ZWNTdGF0ZSogbWFpbldv
cmxkRXhlY1N0YXRlKEZyYW1lKik7CiAKIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tTm9k
ZShET01XcmFwcGVyV29ybGQmLCBOb2RlKik7Ci1KU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJv
bVBhZ2UoRE9NV3JhcHBlcldvcmxkJiwgUGFnZSopOworV0VCQ09SRV9FWFBPUlQgSlNDOjpFeGVj
U3RhdGUqIGV4ZWNTdGF0ZUZyb21QYWdlKERPTVdyYXBwZXJXb3JsZCYsIFBhZ2UqKTsKIEpTQzo6
RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2Nv
cGUqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGM3Yzg3OTUyZDk2N2RkYmQwNGEx
N2RiMWVkYjA1MTYzMzViMTU3MDQuLjIwNDI1MTRiOTZiNjY5NGY0ZjhlZTYyZmJiZGNlYmMzZGYz
YTExZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKQEAgLTg2LDYgKzg2LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9y
Q29udHJvbGxlcihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICAs
IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKG51bGxwdHIpCiAgICAgLCBtX3BhZ2UocGFnZSkK
ICAgICAsIG1faW5zcGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKKyAgICAsIG1faW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQobnVsbHB0cikKICAgICAsIG1faXNVbmRlclRlc3QoZmFsc2UpCiAj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgLCBtX2hhc1JlbW90ZUZyb250ZW5kKGZh
bHNlKQpAQCAtMTg4LDkgKzE4OSw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVj
dGVkUGFnZURlc3Ryb3llZCgpCiAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBudWxscHRyOwogfQog
Ci12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gaW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KEluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBpbnNwZWN0b3JGcm9udGVuZENsaWVudCkKIHsK
LSAgICBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50ID0gV1RGOjptb3ZlKGluc3BlY3RvckZyb250
ZW5kQ2xpZW50KTsKKyAgICBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50ID0gaW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ7CiB9CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzTG9jYWxGcm9u
dGVuZCgpIGNvbnN0CkBAIC0yMTMsNyArMjE0LDcgQEAgYm9vbCBJbnNwZWN0b3JDb250cm9sbGVy
OjpoYXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6
aGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmdldCgpOworICAgIHJldHVybiBtX2luc3BlY3RvckZyb250ZW5k
Q2xpZW50OwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENsZWFyV2luZG93T2Jq
ZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCkBAIC0yODMs
OCArMjg0LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KCkKICAgICBpZiAobV9p
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCiAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5icmlu
Z0Zyb250ZW5kVG9Gcm9udCgpOwogICAgIGVsc2UgewotICAgICAgICBJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVj
dG9yRnJvbnRlbmQodGhpcyk7Ci0gICAgICAgIGlmIChmcm9udGVuZENoYW5uZWwpCisgICAgICAg
IGlmIChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVj
dG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9yRnJvbnRlbmQodGhpcykpCiAgICAgICAgICAgICBjb25u
ZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVsKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBmZDU1OTI0YzAzNTI1NTM0
OTczNzhkZmNjMzVjMTM0NjE1OWM1MmYyLi4zMGQzY2M3NGFkZTAzYTQxMTMyOThjZGY0OTEwNWU3
ZGJlYTI0NTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2hvdygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xvc2UoKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3RvckZyb250ZW5kQ2xpZW50Pik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJ
bnNwZWN0b3JGcm9udGVuZENsaWVudChJbnNwZWN0b3JGcm9udGVuZENsaWVudCopOwogICAgIGJv
b2wgaGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSBjb25zdDsKICAgICB2b2lkIGRpZENsZWFy
V2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSosIERPTVdyYXBwZXJXb3JsZCYpOwogCkBAIC0xMjEs
NyArMTIxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzdW1lKCk7CiAKICAgICBJbnNwZWN0b3JD
bGllbnQqIGluc3BlY3RvckNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yQ2xpZW50
OyB9Ci0gICAgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VBZ2VudDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIEluc3BlY3RvclBhZ2VBZ2VudCogcGFn
ZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlQWdlbnQ7IH0KIAogICAgIHZpcnR1YWwgYm9v
bCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIGNhbkFjY2Vzc0luc3BlY3RlZFNjcmlwdFN0YXRlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Qg
b3ZlcnJpZGU7CkBAIC0xNDYsMTAgKzE0NiwxMCBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIG1fdGltZWxpbmVBZ2VudDsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9pbnNwZWN0b3JG
cm9udGVuZENsaWVudDsKICAgICBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
bV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiAgICAgUGFnZSYgbV9wYWdlOwogICAgIEluc3Bl
Y3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7CisgICAgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQqIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwogICAgIFZlY3RvcjxJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUsIDI+IG1faW5qZWN0ZWRTY3JpcHRJbnN0cnVtZW50YXRpb25Db29raWVzOwogICAg
IGJvb2wgbV9pc1VuZGVyVGVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuaAppbmRleCA4ZThjZDg1MjQ0NTgzMDFiOTQzODVjNGFmOGIxOGVj
YTFiNDc1Mzc0Li4xYTc0ZWRiMzk4Y2M5YjE2Yjc2MGNmOGViM2MxZmFiNjlmMzU4M2I3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCkBA
IC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNw
ZWN0b3JGcm9udGVuZEhvc3QoY2xpZW50LCBmcm9udGVuZFBhZ2UpKTsKICAgICB9CiAKLSAgICB+
SW5zcGVjdG9yRnJvbnRlbmRIb3N0KCk7Ci0gICAgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgfkluc3BlY3RvckZyb250ZW5kSG9zdCgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGlzY29ubmVjdENsaWVudCgpOwogCiAgICAgdm9pZCBsb2FkZWQoKTsKICAg
ICB2b2lkIHJlcXVlc3RTZXREb2NrU2lkZShjb25zdCBTdHJpbmcmKTsKQEAgLTk1LDcgKzk1LDcg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBmcmllbmQgY2xhc3Mg
RnJvbnRlbmRNZW51UHJvdmlkZXI7CiAjZW5kaWYKLSAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Qo
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqLCBQYWdlKiBmcm9udGVuZFBhZ2UpOworICAgIFdFQkNP
UkVfRVhQT1JUIEluc3BlY3RvckZyb250ZW5kSG9zdChJbnNwZWN0b3JGcm9udGVuZENsaWVudCos
IFBhZ2UqIGZyb250ZW5kUGFnZSk7CiAKICAgICBJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9j
bGllbnQ7CiAgICAgUGFnZSogbV9mcm9udGVuZFBhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggMTEwNjcwZWQwYjM3ODA0ZTk5MDRjNWYx
OGIwZDA3ZDBlNDVhOWU1Ny4uMjVmZTFkNWE2MDNhZTEzMjA3ZTE0YjM0MzA4MWU2N2Q3YmUyZWFl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApA
QCAtMTU1LDcgKzE1NSw3IEBAIHB1YmxpYzoKICAgICBGcmFtZSogbWFpbkZyYW1lKCk7CiAgICAg
U3RyaW5nIGNyZWF0ZUlkZW50aWZpZXIoKTsKICAgICBGcmFtZSogZnJhbWVGb3JJZChjb25zdCBT
dHJpbmcmIGZyYW1lSWQpOwotICAgIFN0cmluZyBmcmFtZUlkKEZyYW1lKik7CisgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIGZyYW1lSWQoRnJhbWUqKTsKICAgICBib29sIGhhc0lkRm9yRnJhbWUo
RnJhbWUqKSBjb25zdDsKICAgICBTdHJpbmcgbG9hZGVySWQoRG9jdW1lbnRMb2FkZXIqKTsKICAg
ICBGcmFtZSogZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2lu
UmF3U3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IGZjYTdmOTA4YjhlOTNkNDRiMDFlMTY4
NmY1YzIyZDRhMTk0YWE0NDUuLjNlNGY1ZjBhZTcwNjY3NzYwYjM2MjVjYjY2YzA5ODkyYjA2YmQ4
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtMTAyLDggKzEwMiw4IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChGcmFtZSosIGNvbnN0IEludFNpemUmKSBjb25zdDsK
IAotICAgIHZvaWQgc2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKLSAgICBG
bG9hdFJlY3Qgd2luZG93UmVjdCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBG
bG9hdFJlY3Qgd2luZG93UmVjdCgpIGNvbnN0OwogCiAgICAgRmxvYXRSZWN0IHBhZ2VSZWN0KCkg
Y29uc3Q7CiAKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb2N1c2VkRnJh
bWVDaGFuZ2VkKEZyYW1lKikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQYWdlKiBjcmVh
dGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVh
dHVyZXMmLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikgY29uc3Q7Ci0gICAgdm9pZCBzaG93KCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93KCkgY29uc3Q7CiAKICAgICBib29s
IGNhblJ1bk1vZGFsKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5SdW5Nb2RhbE5vdygpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDBhMDI2N2FjZDQ3NTQ3NWE3MDA4
M2JiMWU4Yjg3NzVkOGU3ZWEyMWUuLjU5ZTcxYzQ1ODhkOTRhYTJiNDM0MzBhY2I4YzQwYzAyOWQw
ZWNiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE0NzEsMTIgKzE0
NzEsMTAgQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IEludGVybmFsczo6b3BlbkR1bW15SW5zcGVj
dG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgUGFnZSogZnJvbnRlbmRQYWdlID0g
bV9mcm9udGVuZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgpOwogICAgIEFTU0VSVChmcm9udGVu
ZFBhZ2UpOwogCi0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnREdW1teT4oJnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSwg
ZnJvbnRlbmRQYWdlKTsKLQotICAgIGZyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9udGVuZENsaWVudCkpOwot
Ci0gICAgbV9mcm9udGVuZENoYW5uZWwgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsRHVtbXkoZnJvbnRlbmRQYWdlKSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teT4oJnBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRQYWdlKTsKKyAgICBmcm9udGVuZFBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2Zyb250ZW5kQ2xpZW50
LmdldCgpKTsKIAorICAgIG1fZnJvbnRlbmRDaGFubmVsID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teT4oZnJvbnRlbmRQYWdlKTsKICAgICBwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmRDaGFubmVsLmdldCgp
KTsKIAogICAgIHJldHVybiBtX2Zyb250ZW5kV2luZG93OwpAQCAtMTQ5MCwxMCArMTQ4OCwxMSBA
QCB2b2lkIEludGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKCkKIAogICAgIHBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlz
Y29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKIAotICAgIG1fZnJvbnRlbmRDaGFu
bmVsLnJlbGVhc2UoKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbnVsbHB0cjsKKyAgICBtX2Zy
b250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7CiAKICAgICBtX2Zyb250ZW5kV2luZG93LT5jbG9zZSht
X2Zyb250ZW5kV2luZG93LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIG1fZnJvbnRl
bmRXaW5kb3cucmVsZWFzZSgpOworICAgIG1fZnJvbnRlbmRXaW5kb3cuY2xlYXIoKTsKIH0KIAog
dm9pZCBJbnRlcm5hbHM6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5hYmxl
ZCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAz
ZmY5YTdmYjk4YTQ0NTVhNDE0MzkyNjZhNjBmMDg0NTc4OGFjOGQ5Li42Y2M3ZDI0ZjdjN2E3OGUx
OGY5ZjRlMTY0NDYxOWNmZjUzY2E2YzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
QEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgRG9jdW1lbnRNYXJrZXI7CiBjbGFzcyBFbGVtZW50Owog
Y2xhc3MgRnJhbWU7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teTsKK2NsYXNz
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50RHVtbXk7CiBjbGFzcyBJbnRlcm5hbFNldHRpbmdzOwog
Y2xhc3MgTWFsbG9jU3RhdGlzdGljczsKIGNsYXNzIE1lbW9yeUluZm87CkBAIC0zNTAsNyArMzUx
LDggQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudE1hcmtlciogbWFya2VyQXQoTm9kZSosIGNvbnN0
IFN0cmluZyYgbWFya2VyVHlwZSwgdW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFJlZlB0cjxET01XaW5kb3c+IG1fZnJvbnRlbmRXaW5k
b3c7Ci0gICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbER1bW15PiBtX2Zyb250ZW5k
Q2hhbm5lbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1t
eT4gbV9mcm9udGVuZENsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsRHVtbXk+IG1fZnJvbnRlbmRDaGFubmVsOwogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6
ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHBy
b2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCAyMTkyMTIwNDA4ZTg5ZmM1OThlOGNlOTk5Y2M2
MWJhNTA3Y2M1ZmI0Li5hMmI0OTExZmJlYTg2NTQwM2NiMDE5ZWViNzVjZTM0MjBiZmIxYWI0IDEw
MDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDkzCnpjbVYtajBIWGlPdyokKGgxRio+aHZsfDR3
Nz9Wdk00M2xmbjNiUXtRYlBUZ21EbGtsd2AqIytUazlUYWR0JEN5dAp6diZXRkMzYlc2ZnY7KHVW
cHNFcUdxcTIrJnZ2MG5OMDwpWEo3ejJ9ZSNUMWhyIVZhQEAjaTl6Y1Uoam17ckB0en0KCmRlbHRh
IDEyNTMKemNtZDUrJnViRz01RlRBWXh7MjVqbjswb3xqVnUhREhmYWxqMlRfcDxtNzxGWWRlS0E3
a0dpbUspLS1EPHJCS3dQCnpVfHxyWVVpRHhSM0AjWCYzYXVCVmA3OFdXe043dERpQXxGcFdxR2By
SHtYMndYNkQ7JWVeQTtAckxtKFpJX1claQp6QnJmLXI7YzxVVWBFaW44amheQy1yU3BEJF5sZG1+
bFQ5VG1QPm5RcHo0KHd4UmpOPiNFTUMxWihrSHJZTyM4PUUKem5ZcjBuYV9BezJzKTdQVWNAV3lM
WUIodzNOend5Jm0kOCE2N3Q0KGk8SzlpV010OEJZYmUtLTFaJkQ3S0NoWGdFCnoxTzZQJUFsQXV3
cGJTUndlOHFjKTYqSnUzNUBxUU47OXNDZUQ3cEAtNG9sUWhmP1gzZllua3xeOGQ+eU1vPns7Twp6
eWJJNWY2PGdSZlQxMzh3SlBuYU4lX0RrRkFWb2B+V2tlaj1WaGJuLT1NIUE/JmkpdG81VGZ8Knle
cWFRUUpAJnoKenBiXzNlM0h4SCVlS0Z+bVVhcVM7MVNHcXdreHM+fmRIb2RfKzNZUyhgJEtQOSUy
Q244YEppMmk0Z2xKQ0FJK1BoCno0QXc8PCk9blJpRSR4RmItPXp9O2RCLUJJQVh4dWwyekJ+RWA8
cldEQkdGRG9XJHt7QCU1MUt1ZWUyVnpuaEooNQp6MkFgTVgmKGxOZjZAV1pRQWRyZzBASmJfKis3
LSh7SlpxNk9TM2F4eS1WN25IRGtLdyNPYlNZSHBCYWVjdkI7JDAKeldUVG5uPCpPPCRlK35RVFg2
YFVRQG5Za2gkYDZffChLVllhJUV7eCFlfGBxaDkoZXc+bmY4fTlHKGB9bWRJMHRpCnVSYDV2I0Ez
X2hicTxqNlh0IyhaeWh2d29ZeWdoOTJ2N0ltJVN8fDc7X1VFbEI7cm0tWkwhc1lXTmc5Pl8KCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4u
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKaW5k
ZXggZWQ4ZTJhMDIzNTFjMDBlNGJhMjk5NzcwMWFlZDE5MmQ0NTU5NjBlNC4uZmEyMzRjNzBkYjJj
ZTY4M2E2NTk3ZjcwOTVlZmI2YTU2YWRiYWE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtNDksMTAgKzQ5LDcgQEAgV2ViSW5z
cGVjdG9yLlR5cGVJZGVudGlmaWVyQ29va2llS2V5ID0gInJlcHJlc2VudGVkLW9iamVjdC10eXBl
IjsKIAogV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKIHsKLSAgICAvLyBUZWxsIHRo
ZSBJbnNwZWN0b3JGcm9udGVuZEhvc3Qgd2UgbG9hZGVkIGZpcnN0IHRvIGVzdGFibGlzaCBjb21t
dW5pY2F0aW9uIHdpdGggSW5zcGVjdG9yQmFja2VuZC4KLSAgICBJbnNwZWN0b3JGcm9udGVuZEhv
c3QubG9hZGVkKCk7Ci0KLSAgICAvLyBJbml0aWFsaXplIFdlYlNvY2tldCB0byBjb21tdW5pY2F0
aW9uCisgICAgLy8gSW5pdGlhbGl6ZSBXZWJTb2NrZXQgdG8gY29tbXVuaWNhdGlvbi4KICAgICB0
aGlzLl9pbml0aWFsaXplV2ViU29ja2V0SWZOZWVkZWQoKTsKIAogICAgIC8vIFJlZ2lzdGVyIG9i
c2VydmVycyBmb3IgZXZlbnRzIGZyb20gdGhlIEluc3BlY3RvckJhY2tlbmQuCkBAIC0zMjgsMTIg
KzMyNSwxMyBAQCBXZWJJbnNwZWN0b3IuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICBp
ZiAodGhpcy5fZGV0YWlsc1NpZGViYXJXaWR0aFNldHRpbmcudmFsdWUpCiAgICAgICAgIHRoaXMu
ZGV0YWlsc1NpZGViYXIud2lkdGggPSB0aGlzLl9kZXRhaWxzU2lkZWJhcldpZHRoU2V0dGluZy52
YWx1ZTsKIAotICAgIC8vIFVwZGF0ZSB0aGUgZG9ja2VkIHN0YXRlIGJhc2VkIG9uIHRoZSBxdWVy
eSBzdHJpbmcgcGFzc2VkIHdoZW4gdGhlIFdlYiBJbnNwZWN0b3Igd2FzIGxvYWRlZC4KLSAgICB0
aGlzLnVwZGF0ZURvY2tlZFN0YXRlKHBhcnNlTG9jYXRpb25RdWVyeVBhcmFtZXRlcnMoKS5kb2Nr
U2lkZSB8fCAidW5kb2NrZWQiKTsKLQotICAgIC8vIFRlbGwgdGhlIGZyb250ZW5kIEFQSSB3ZSBh
cmUgbG9hZGVkIHNvIGFueSBwZW5kaW5nIGZyb250ZW5kIGNvbW1hbmRzIGNhbiBiZSBkaXNwYXRj
aGVkLgorICAgIC8vIFNpZ25hbCB0aGF0IHRoZSBmcm9udGVuZCBpcyBub3cgcmVhZHkgdG8gcmVj
ZWl2ZSBtZXNzYWdlcy4KICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKCk7
CiAKKyAgICAvLyBUZWxsIHRoZSBJbnNwZWN0b3JGcm9udGVuZEhvc3Qgd2UgbG9hZGVkLCB3aGlj
aCBjYXVzZXMgdGhlIHdpbmRvdyB0byBkaXNwbGF5CisgICAgLy8gYW5kIHBlbmRpbmcgSW5zcGVj
dG9yRnJvbnRlbmRBUEkgY29tbWFuZHMgdG8gYmUgc2VudC4KKyAgICBJbnNwZWN0b3JGcm9udGVu
ZEhvc3QubG9hZGVkKCk7CisKICAgICAvLyBTZXQgY29sbGFwc2VkIGFmdGVyIGxvYWRpbmcgdGhl
IHBlbmRpbmcgZnJvbnRlbmQgY29tbWFuZHMgYXJlIGRpc3BhdGNoZWQgc28gb25seSB0aGUgZmlu
YWwKICAgICAvLyBzZWxlY3RlZCBzaWRlYmFyIHBhbmVsIGdldHMgc2hvd24gYW5kIGhhcyBhIHNh
eSBpbiB3aGF0IGNvbnRlbnQgdmlldyBnZXRzIHNob3duLgogICAgIHRoaXMubmF2aWdhdGlvblNp
ZGViYXIuY29sbGFwc2VkID0gdGhpcy5fbmF2aWdhdGlvblNpZGViYXJDb2xsYXBzZWRTZXR0aW5n
LnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
QmFzZS9UZXN0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9U
ZXN0LmpzCmluZGV4IDc0MjA3NWE3ZDM3MWQ2NDQ1MDRkMjAyZThmY2JhYTkxYTA3OTgzNWQuLjM4
MGVhNjc3ODA1OWJiMjJlYjk4Njk4MmJlODJlN2JiMDNiY2Y4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVGVzdC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1Rlc3QuanMKQEAgLTU1LDE1ICs1NSwx
NiBAQCBXZWJJbnNwZWN0b3IubG9hZGVkID0gZnVuY3Rpb24oKQogCiAgICAgLy8gUGVyZm9ybSBv
bmUtdGltZSB0YXNrcy4KICAgICBXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMucmVxdWVzdENT
U05hbWVDb21wbGV0aW9ucygpOwotCi0gICAgLy8gRXN0YWJsaXNoIGNvbW11bmljYXRpb24gd2l0
aCB0aGUgSW5zcGVjdG9yQmFja2VuZC4KLSAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZGVk
KCk7CiB9CiAKIFdlYkluc3BlY3Rvci5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogewogICAg
IC8vIFNpZ25hbCB0aGF0IHRoZSBmcm9udGVuZCBpcyBub3cgcmVhZHkgdG8gcmVjZWl2ZSBtZXNz
YWdlcy4KICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKCk7CisKKyAgICAv
LyBUZWxsIHRoZSBJbnNwZWN0b3JGcm9udGVuZEhvc3Qgd2UgbG9hZGVkLCB3aGljaCBjYXVzZXMg
dGhlIHdpbmRvdyB0byBkaXNwbGF5CisgICAgLy8gYW5kIHBlbmRpbmcgSW5zcGVjdG9yRnJvbnRl
bmRBUEkgY29tbWFuZHMgdG8gYmUgc2VudC4KKyAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9h
ZGVkKCk7CiB9CiAKIFdlYkluc3BlY3Rvci5VSVN0cmluZyA9IGZ1bmN0aW9uKHN0cmluZykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0lu
c3BlY3RvckZyb250ZW5kQVBJLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKaW5kZXggMTIyNzIxMTI4ZGFmYmVi
MzE5NDFkYjBjYzE4NjFiYjA3NmExNWQ0OS4uYTY0NzY4YmFlN2E3ZmRkNGIyZTY5NDRlN2Q3NGU1
OGU3NjViZjdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAg
LTI1LDI4ICsyNSwxNiBAQAogCiBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICBfbG9hZGVk
OiBmYWxzZSwKLQogICAgIF9wZW5kaW5nQ29tbWFuZHM6IFtdLAogCiAgICAgc2F2ZWRVUkw6IGZ1
bmN0aW9uKHVybCkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisg
ICAgICAgIC8vIE5vdCB1c2VkIHlldC4KICAgICB9LAogCiAgICAgYXBwZW5kZWRUb1VSTDogZnVu
Y3Rpb24odXJsKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KLSAg
ICB9LAotCi0gICAgaXNEZWJ1Z2dpbmdFbmFibGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fSwKLQotICAgIHNldERlYnVnZ2luZ0VuYWJsZWQ6IGZ1bmN0aW9uKGVuYWJsZWQpCi0gICAgewot
ICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorICAgICAgICAvLyBOb3QgdXNlZCB5
ZXQuCiAgICAgfSwKIAogICAgIGlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkOiBmdW5jdGlvbigp
CkBAIC0xMDgsMTEgKzk2LDYgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93U291cmNlQ29kZUZvckZyYW1lKGZy
YW1lSWRlbnRpZmllciwgdHJ1ZSk7CiAgICAgfSwKIAotICAgIHNldERvY2tpbmdVbmF2YWlsYWJs
ZTogZnVuY3Rpb24odW5hdmFpbGFibGUpCi0gICAgewotICAgICAgICAvLyBOb3QgdXNlZC4KLSAg
ICB9LAotCiAgICAgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQ6IGZ1bmN0aW9uKGlkKQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGlkKTsKQEAgLTE0
MSw2ICsxMjQsMTAgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgIH0KIAogICAg
ICAgICB2YXIgbWV0aG9kTmFtZSA9IHNpZ25hdHVyZS5zaGlmdCgpOworICAgICAgICBjb25zb2xl
LmFzc2VydChJbnNwZWN0b3JGcm9udGVuZEFQSVttZXRob2ROYW1lXSwgIlVuZXhwZWN0ZWQgSW5z
cGVjdG9yRnJvbnRlbmRBUEkgbWV0aG9kIG5hbWU6ICIgKyBJbnNwZWN0b3JGcm9udGVuZEFQSVtt
ZXRob2ROYW1lXSk7CisgICAgICAgIGlmICghSW5zcGVjdG9yRnJvbnRlbmRBUElbbWV0aG9kTmFt
ZV0pCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgcmV0dXJuIEluc3BlY3RvckZyb250
ZW5kQVBJW21ldGhvZE5hbWVdLmFwcGx5KEluc3BlY3RvckZyb250ZW5kQVBJLCBzaWduYXR1cmUp
OwogICAgIH0sCiAKQEAgLTE1MSw2ICsxMzgsNiBAQCBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsK
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBJbnNwZWN0b3JGcm9udGVuZEFQSS5fcGVuZGlu
Z0NvbW1hbmRzLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRBUEku
ZGlzcGF0Y2goSW5zcGVjdG9yRnJvbnRlbmRBUEkuX3BlbmRpbmdDb21tYW5kc1tpXSk7CiAKLSAg
ICAgICAgSW5zcGVjdG9yRnJvbnRlbmRBUEkuX3BlbmRpbmdDb21tYW5kcyA9IFtdOworICAgICAg
ICBkZWxldGUgSW5zcGVjdG9yRnJvbnRlbmRBUEkuX3BlbmRpbmdDb21tYW5kczsKICAgICB9CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50SU9TLm1tIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50SU9TLm1tCmluZGV4IGQzMGQ4YjkxMjI1NjNmYzk4OTFlNWRjY2MwZWQ5NTVl
NjFhZTE5N2MuLjk4ZGNhZWQzMTkwZDE4OWQ3MDFjZTJmNDI4MjIyOWI3ZDMwZGQ4ZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnRJT1MubW0KQEAgLTQ2LDcgKzQ2LDYgQEAgV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJ
bnNwZWN0b3JDbGllbnQoV2ViVmlldyAqd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3
KQogICAgICwgbV9oaWdobGlnaHRlcihhZG9wdE5TKFtbV2ViTm9kZUhpZ2hsaWdodGVyIGFsbG9j
XSBpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6d2ViVmlld10pKQogICAgICwgbV9mcm9udGVuZFBh
Z2UoMCkKLSAgICAsIG1fZnJvbnRlbmRDbGllbnQoMCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA0
ODU2ODM2N2Y0MTY1MmEzZDc3ZGE0YTg2MGQ0ZGM3ZjM0NDM5YWY3Li44OTg3N2ViZTRhNWNkYjA2
MjQ1OTc3MWNlYTEwYWViZjMzN2Y4NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMTAwLDcgKzEwMCw3IEBA
IHByaXZhdGU6CiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogICAgIFJldGFpblB0cjxXZWJOb2Rl
SGlnaGxpZ2h0ZXI+IG1faGlnaGxpZ2h0ZXI7CiAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVu
ZFBhZ2U7Ci0gICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1fZnJvbnRlbmRDbGllbnQ7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2Zyb250
ZW5kQ2xpZW50OwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggNmUxNzg5ZDdjYmFhNjRlOGVhNDlh
NDdhMDBiMmM2ZmIxNjA2ZDRjZS4uODMwOGI5ZTczZTE3MDA0NDRhMTdmOTBmMDQzMTEzNGJhOGQ2
MzQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbQpAQCAtMTMzLDggKzEzMyw3IEBAIEBlbmQKIFdlYkluc3BlY3Rv
ckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgOiBtX3dl
YlZpZXcod2ViVmlldykKICAgICAsIG1faGlnaGxpZ2h0ZXIoYWRvcHROUyhbW1dlYk5vZGVIaWdo
bGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3OndlYlZpZXddKSkKLSAgICAs
IG1fZnJvbnRlbmRQYWdlKDApCi0gICAgLCBtX2Zyb250ZW5kQ2xpZW50KDApCisgICAgLCBtX2Zy
b250ZW5kUGFnZShudWxscHRyKQogewogfQogCkBAIC0xNTAsMTEgKzE0OSwxMyBAQCBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250
ZW5kKEluc3BlY3RvckNvbgogICAgIFt3aW5kb3dDb250cm9sbGVyLmdldCgpIHNldEluc3BlY3Rv
ckNsaWVudDp0aGlzXTsKIAogICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShbd2luZG93Q29udHJv
bGxlci5nZXQoKSB3ZWJWaWV3XSk7Ci0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fd2ViVmlldywgd2luZG93Q29u
dHJvbGxlci5nZXQoKSwgaW5zcGVjdG9yQ29udHJvbGxlciwgbV9mcm9udGVuZFBhZ2UsIGNyZWF0
ZUZyb250ZW5kU2V0dGluZ3MoKSk7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5kQ2xp
ZW50LmdldCgpOwotICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZD4gd2ViSW5zcGVj
dG9yRnJvbnRlbmQgPSBhZG9wdE5TKFtbV2ViSW5zcGVjdG9yRnJvbnRlbmQgYWxsb2NdIGluaXRX
aXRoRnJvbnRlbmRDbGllbnQ6ZnJvbnRlbmRDbGllbnQuZ2V0KCldKTsKKyAgICBtX2Zyb250ZW5k
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV93
ZWJWaWV3LCB3aW5kb3dDb250cm9sbGVyLmdldCgpLCBpbnNwZWN0b3JDb250cm9sbGVyLCBtX2Zy
b250ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKKworICAgIFJldGFpblB0cjxX
ZWJJbnNwZWN0b3JGcm9udGVuZD4gd2ViSW5zcGVjdG9yRnJvbnRlbmQgPSBhZG9wdE5TKFtbV2Vi
SW5zcGVjdG9yRnJvbnRlbmQgYWxsb2NdIGluaXRXaXRoRnJvbnRlbmRDbGllbnQ6bV9mcm9udGVu
ZENsaWVudC5nZXQoKV0pOwogICAgIFtbbV93ZWJWaWV3IGluc3BlY3Rvcl0gc2V0RnJvbnRlbmQ6
d2ViSW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCldOwotICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV1RGOjptb3ZlKGZyb250
ZW5kQ2xpZW50KSk7CisKKyAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1fZnJvbnRlbmRDbGllbnQuZ2V0KCkpOworCiAg
ICAgcmV0dXJuIHRoaXM7CiB9CiAKQEAgLTE5OSw4ICsyMDAsOCBAQCB2b2lkIFdlYkluc3BlY3Rv
ckNsaWVudDo6ZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQpCiAKIHZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpyZWxlYXNlRnJvbnRlbmQoKQogewotICAgIG1fZnJvbnRlbmRDbGll
bnQgPSAwOwotICAgIG1fZnJvbnRlbmRQYWdlID0gMDsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0g
bnVsbHB0cjsKKyAgICBtX2Zyb250ZW5kUGFnZSA9IG51bGxwdHI7CiB9CiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5j
cHAKaW5kZXggM2YzNmRlZjhhYjA5OTM1MGZkZGE3MjFjNDNiYTZjZTQwYzM1NzNmYi4uN2YyMmJj
NGFiYmJmNTRjZmQzZDVmNzBlNzM4ZTIwZmM1NWE4OGZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0x
NzEsOSArMTcxLDggQEAgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBXZWJJbnNw
ZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnMKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoZnJvbnRlbmRXZWJWaWV3LmdldCgpKTsKLSAg
ICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3BlY3RlZFdlYlZpZXdIYW5kbGUs
IGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlz
LCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBmcm9u
dGVuZENsaWVudC5nZXQoKTsKLSAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9udGVuZENsaWVudCkp
OworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0hhbmRs
ZSwgZnJvbnRlbmRId25kLCBmcm9udGVuZFdlYlZpZXcsIGZyb250ZW5kV2ViVmlld0h3bmQsIHRo
aXMsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CisgICAgbV9mcm9udGVuZFBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2Zyb250ZW5kQ2xp
ZW50LmdldCgpKTsKICAgICBtX2Zyb250ZW5kSGFuZGxlID0gZnJvbnRlbmRId25kOwogICAgIHJl
dHVybiB0aGlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBiMzFkZDg5YjQ2Mjg2YzMwYzE0NDJhOGNlY2Ux
NDc4M2UwNmQwMjQ4Li40N2ZiZWEwYTgwNzQxZDVjYjk3MjhlODE3Y2M0OTdhMmU5MmJjOWE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbGVhc2VG
cm9udGVuZCgpOwogCi0gICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIGZyb250ZW5kQ2xp
ZW50KCkgeyByZXR1cm4gbV9mcm9udGVuZENsaWVudDsgfQorICAgIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50KiBmcm9udGVuZENsaWVudCgpIHsgcmV0dXJuIG1fZnJvbnRlbmRDbGllbnQuZ2V0
KCk7IH0KIAogICAgIHZvaWQgdXBkYXRlSGlnaGxpZ2h0KCk7CiAKQEAgLTg1LDcgKzg1LDcgQEAg
cHJpdmF0ZToKIAogICAgIFdlYlZpZXcqIG1faW5zcGVjdGVkV2ViVmlldzsKICAgICBXZWJDb3Jl
OjpQYWdlKiBtX2Zyb250ZW5kUGFnZTsKLSAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCog
bV9mcm9udGVuZENsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ+IG1fZnJvbnRlbmRDbGllbnQ7CiAgICAgSFdORCBtX2luc3BlY3RlZFdlYlZpZXdI
YW5kbGU7CiAgICAgSFdORCBtX2Zyb250ZW5kSGFuZGxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDRmMzkyM2Q0MWIzZDNjNGU4OTE0NTVlOWY4YzBkNzE4MjQ2ZGU2YzIuLjZiZGM1OWRjNWEy
ZWI3NTQ4OTdmZGNjOTY0YjAzYmRiNDJjZGE2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC01
MzAsNyArNTMwLDYgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKLSAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcApAQCAtNTUyLDYgKzU1MSw3IEBAIHNldChXZWJL
aXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIuY3Bw
CiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAogICAgIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJJbnNwZWN0b3IuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
clVJLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
ci5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKICAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwCkBAIC02NDUsNiArNjQ1LDcgQEAgc2V0KFdl
YktpdDJfTUVTU0FHRVNfSU5fRklMRVMKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNw
YXRjaGVyLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFi
bGVDb250cm9sbGVyLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3Rvci5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5t
ZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCiAg
ICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5Lm1lc3NhZ2VzLmluCiApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dl
YktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBlYWVmNTE2ZmI4M2JlMWY0OTNjNDk0NmRh
OGU3NDAwMWU1ODBkNDI0Li5jYTA2YTA2ODkyYzRkN2YzYTUzMzE4MDAzYTljNTMxNmQ2YmI5MDIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEyMSw2ICsxMjEsNyBAQCBNRVNT
QUdFX1JFQ0VJVkVSUyA9IFwKICAgICBXZWJJY29uRGF0YWJhc2VQcm94eSBcCiAgICAgV2ViSW5z
cGVjdG9yIFwKICAgICBXZWJJbnNwZWN0b3JQcm94eSBcCisgICAgV2ViSW5zcGVjdG9yVUkgXAog
ICAgIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyIFwKICAgICBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5
IFwKICAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UK
aW5kZXggMDFlMzRlYTBiZjlmODhmYjZmZTk2YTQ2OWEzZTIyMzYxZjBhOGQxYy4uZjA3ZmI2Mzkx
MTVlYjE0MjY5Y2RjMTY3MmMwNzk0YzFiY2QwYjM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21h
a2UKQEAgLTE5NCw3ICsxOTQsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9hdGsvV2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3RBdGsuY3Bw
CiAKLSAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3RvckVmbC5jcHAKKyAgICBX
ZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3RvclVJRWZsLmNwcAogICAgIFdlYlByb2Nl
c3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKIAogICAgIFdlYlByb2Nlc3MvZWZsL1NlY2Nv
bXBGaWx0ZXJzV2ViUHJvY2Vzc0VmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXgg
Njg1Njg2MWM4OWZlY2UyMWFiN2Y4OTYxMGY4MmUzZWE0ODFjZjBjYS4uZmU2M2MxZjQ1YTNiMGZj
NmMyZWFkYzdiOTY4NDQwZGM0ZmJhOGQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKQEAg
LTMwMiw3ICszMDIsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1ByaW50ZXJMaXN0R3RrLmNwcAotICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViSW5zcGVjdG9yR3RrLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVj
dG9yVUlHdGsuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcAog
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElPYmplY3QuaAppbmRleCA2ZGY0OTE4M2QyYmM0NjI2NWNjMDlmN2I1ZDU3
NGEwN2IzYzBjNTkyLi45MjJlNmRhMDNmYTUxY2QxZWZjY2M3YzY3YTFmZjBiNzUzMTUxZDM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCkBAIC0xNDMsNiArMTQzLDcgQEAgcHVibGljOgog
ICAgICAgICBCdW5kbGVGcmFtZSwKICAgICAgICAgQnVuZGxlSGl0VGVzdFJlc3VsdCwKICAgICAg
ICAgQnVuZGxlSW5zcGVjdG9yLAorICAgICAgICBCdW5kbGVJbnNwZWN0b3JVSSwKICAgICAgICAg
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgQnVuZGxlTm9kZUhhbmRsZSwKICAgICAg
ICAgQnVuZGxlUGFnZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL21hYy9MZWdhY3lQcm9jZXNzL0NoaWxkUHJvY2Vzc0VudHJ5UG9pbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvTGVnYWN5UHJv
Y2Vzcy9DaGlsZFByb2Nlc3NFbnRyeVBvaW50Lm1tCmluZGV4IDEzZjMwNmUwMGVkZWFmYWUxMDUy
MzMzMGYzMTE3ZjY2NDFjZjNkNWIuLmQ5NWNlZmRjYTZlM2RhYjcxYTFhZGU2ZGZhODljODQwOTU0
MTVjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0
aWVzL21hYy9MZWdhY3lQcm9jZXNzL0NoaWxkUHJvY2Vzc0VudHJ5UG9pbnQubW0KKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL0xlZ2FjeVByb2Nlc3Mv
Q2hpbGRQcm9jZXNzRW50cnlQb2ludC5tbQpAQCAtODgsOCArODgsMTEgQEAgYm9vbCBDaGlsZFBy
b2Nlc3NNYWluRGVsZWdhdGU6OmdldENsaWVudFByb2Nlc3NOYW1lKFN0cmluZyYgY2xpZW50UHJv
Y2Vzc05hbWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ2hpbGRQcm9jZXNzTWFpbkRl
bGVnYXRlOjpnZXRFeHRyYUluaXRpYWxpemF0aW9uRGF0YShIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiYpCitib29sIENoaWxkUHJvY2Vzc01haW5EZWxlZ2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlv
bkRhdGEoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhKQog
eworICAgIFN0cmluZyBpbnNwZWN0b3JQcm9jZXNzID0gbV9jb21tYW5kTGluZVsiaW5zcGVjdG9y
LXByb2Nlc3MiXTsKKyAgICBpZiAoIWluc3BlY3RvclByb2Nlc3MuaXNFbXB0eSgpKQorICAgICAg
ICBleHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoQVNDSUlMaXRlcmFsKCJpbnNwZWN0b3ItcHJv
Y2VzcyIpLCBpbnNwZWN0b3JQcm9jZXNzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1Nl
cnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50
cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQpp
bmRleCAxNjk3ZWU5YjI3MjZmNmFkY2EwYzY3OWJhOGZjOWUxYzYxOGQzOTcyLi4zNjVlYThkMmJk
Y2EzZmMxZjQ5MjdiOTlhNzRlOGQ0NmNiODIxYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50
cnlQb2ludC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGll
cy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQpAQCAtOTIsOCArOTIsMTQg
QEAgYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50UHJvY2Vzc05h
bWUoU3RyaW5nJiBjbGllbnRQcm9jZXNzTmEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBY
UENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlvbkRhdGEo
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKQorYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxl
Z2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlvbkRhdGEoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4m
IGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhKQogeworICAgIHhwY19vYmplY3RfdCBleHRyYURhdGFJ
bml0aWFsaXphdGlvbkRhdGFPYmplY3QgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUobV9pbml0
aWFsaXplck1lc3NhZ2UsICJleHRyYS1pbml0aWFsaXphdGlvbi1kYXRhIik7CisKKyAgICBTdHJp
bmcgaW5zcGVjdG9yUHJvY2VzcyA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRh
SW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiaW5zcGVjdG9yLXByb2Nlc3MiKTsKKyAgICBpZiAo
IWluc3BlY3RvclByb2Nlc3MuaXNFbXB0eSgpKQorICAgICAgICBleHRyYUluaXRpYWxpemF0aW9u
RGF0YS5hZGQoQVNDSUlMaXRlcmFsKCJpbnNwZWN0b3ItcHJvY2VzcyIpLCBpbnNwZWN0b3JQcm9j
ZXNzKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcAppbmRleCAxNmU4NDViMDc0ZTQzZGQ1MmRhOThmZWY3
MWY5NTY5YTYyZmY5ZjBiLi44Yzk5NzViNGM5ZjdlODdlMTBmYjBkZTUzODAxZDk3ZDdkY2E5Yjdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAK
QEAgLTE3NCw0MiArMTc0LDMwIEBAIHZvaWQgV0tJbnNwZWN0b3JEZXRhY2goV0tJbnNwZWN0b3JS
ZWYgaW5zcGVjdG9yUmVmKQogI2VuZGlmCiB9CiAKLWJvb2wgV0tJbnNwZWN0b3JJc0RlYnVnZ2lu
Z0phdmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQorYm9vbCBXS0luc3BlY3Rv
cklzRGVidWdnaW5nSmF2YVNjcmlwdChXS0luc3BlY3RvclJlZikKIHsKLSNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotICAgIHJldHVybiB0b0ltcGwoaW5zcGVjdG9yUmVmKS0+aXNEZWJ1Z2dpbmdKYXZh
U2NyaXB0KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0b3JSZWYpOworICAgIC8v
IEZJWE1FOiBUaGlzIGlzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIG5pZ2h0bHkg
YnVpbGRzIGFuZCBTYWZhcmkuCisgICAgLy8gUmVtb3ZlIGl0IG9uY2UgU2FmYXJpIG5vIGxvbmdl
ciBkZXBlbmRzIG9uIGl0LgogICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQogCi12b2lkIFdL
SW5zcGVjdG9yVG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZyhXS0luc3BlY3RvclJlZiBpbnNwZWN0
b3JSZWYpCit2b2lkIFdLSW5zcGVjdG9yVG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZyhXS0luc3Bl
Y3RvclJlZikKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHRvSW1wbChpbnNwZWN0b3JS
ZWYpLT50b2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShpbnNwZWN0b3JSZWYpOwotI2VuZGlmCisgICAgLy8gRklYTUU6IFRoaXMgaXMgZm9yIGJhY2t3
YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggbmlnaHRseSBidWlsZHMgYW5kIFNhZmFyaS4KKyAgICAv
LyBSZW1vdmUgaXQgb25jZSBTYWZhcmkgbm8gbG9uZ2VyIGRlcGVuZHMgb24gaXQuCiB9CiAKLWJv
b2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ0phdmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5zcGVj
dG9yUmVmKQorYm9vbCBXS0luc3BlY3RvcklzUHJvZmlsaW5nSmF2YVNjcmlwdChXS0luc3BlY3Rv
clJlZikKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHJldHVybiB0b0ltcGwoaW5zcGVj
dG9yUmVmKS0+aXNQcm9maWxpbmdKYXZhU2NyaXB0KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShpbnNwZWN0b3JSZWYpOworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGZvciBiYWNrd2FyZHMgY29t
cGF0aWJpbGl0eSB3aXRoIG5pZ2h0bHkgYnVpbGRzIGFuZCBTYWZhcmkuCisgICAgLy8gUmVtb3Zl
IGl0IG9uY2UgU2FmYXJpIG5vIGxvbmdlciBkZXBlbmRzIG9uIGl0LgogICAgIHJldHVybiBmYWxz
ZTsKLSNlbmRpZgogfQogCi12b2lkIFdLSW5zcGVjdG9yVG9nZ2xlSmF2YVNjcmlwdFByb2ZpbGlu
ZyhXS0luc3BlY3RvclJlZiBpbnNwZWN0b3JSZWYpCit2b2lkIFdLSW5zcGVjdG9yVG9nZ2xlSmF2
YVNjcmlwdFByb2ZpbGluZyhXS0luc3BlY3RvclJlZikKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9S
KQotICAgIHRvSW1wbChpbnNwZWN0b3JSZWYpLT50b2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKCk7
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0b3JSZWYpOwotI2VuZGlmCisgICAgLy8g
RklYTUU6IFRoaXMgaXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggbmlnaHRseSBi
dWlsZHMgYW5kIFNhZmFyaS4KKyAgICAvLyBSZW1vdmUgaXQgb25jZSBTYWZhcmkgbm8gbG9uZ2Vy
IGRlcGVuZHMgb24gaXQuCiB9CiAKIGJvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ1BhZ2UoV0tJ
bnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tJbnNwZWN0b3IuaAppbmRleCBiYTc2NDg5MzI1ZjE1NDE0NjdhNGQ3ZTEwYzBiMjBjNzE3
ZDkxOTg5Li4yMDY1NzhkNTQzYjJiMjZkNWE5Y2I2YzNlMDg2MWQyMzIyMDA1YWI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuaApAQCAtNTgsMTUgKzU4
LDE3IEBAIFdLX0VYUE9SVCBib29sIFdLSW5zcGVjdG9ySXNBdHRhY2hlZChXS0luc3BlY3RvclJl
ZiBpbnNwZWN0b3IpOwogV0tfRVhQT1JUIHZvaWQgV0tJbnNwZWN0b3JBdHRhY2goV0tJbnNwZWN0
b3JSZWYgaW5zcGVjdG9yKTsKIFdLX0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9yRGV0YWNoKFdLSW5z
cGVjdG9yUmVmIGluc3BlY3Rvcik7CiAKK1dLX0VYUE9SVCBib29sIFdLSW5zcGVjdG9ySXNQcm9m
aWxpbmdQYWdlKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7CitXS19FWFBPUlQgdm9pZCBXS0lu
c3BlY3RvclRvZ2dsZVBhZ2VQcm9maWxpbmcoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKKwor
Ly8gRklYTUU6IFRoZXNlIGFyZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBuaWdo
dGx5IGJ1aWxkcyBhbmQgU2FmYXJpLgorLy8gUmVtb3ZlIHRoZW0gb25jZSBTYWZhcmkgbm8gbG9u
Z2VyIGRlcGVuZHMgb24gdGhlbS4KIFdLX0VYUE9SVCBib29sIFdLSW5zcGVjdG9ySXNEZWJ1Z2dp
bmdKYXZhU2NyaXB0KFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7CiBXS19FWFBPUlQgdm9pZCBX
S0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHREZWJ1Z2dpbmcoV0tJbnNwZWN0b3JSZWYgaW5zcGVj
dG9yKTsKIAogV0tfRVhQT1JUIGJvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ0phdmFTY3JpcHQo
V0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKIFdLX0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9yVG9n
Z2xlSmF2YVNjcmlwdFByb2ZpbGluZyhXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwogCi1XS19F
WFBPUlQgYm9vbCBXS0luc3BlY3RvcklzUHJvZmlsaW5nUGFnZShXS0luc3BlY3RvclJlZiBpbnNw
ZWN0b3IpOwotV0tfRVhQT1JUIHZvaWQgV0tJbnNwZWN0b3JUb2dnbGVQYWdlUHJvZmlsaW5nKFdL
SW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7Ci0KICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRl
eCBiZTM3NzA0Y2JhODNiMmQ2M2RmNmIxOGY0OTQ3OTQ2MjFmMmFjMDI0Li45OTRmYmQ5MDA0MWE3
NTI3OGJlNjQ0M2IwNjQ3NWM3ZTFjMGZhMjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBQb3J0
aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMCwxMSArMzAsMTIgQEAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5oIgorI2luY2x1ZGUg
IldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAi
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgpAQCAtNTcsOSArNTgsNiBAQCBjb25z
dCB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6bWluaW11bVdpbmRvd0hlaWdodCA9IDQwMDsK
IGNvbnN0IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5Ojppbml0aWFsV2luZG93V2lkdGggPSAx
MDAwOwogY29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OmluaXRpYWxXaW5kb3dIZWln
aHQgPSA2NTA7CiAKLWNvbnN0IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5OjptaW5pbXVtQXR0
YWNoZWRXaWR0aCA9IDc1MDsKLWNvbnN0IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5OjptaW5p
bXVtQXR0YWNoZWRIZWlnaHQgPSAyNTA7Ci0KIGNsYXNzIFdlYkluc3BlY3RvclBhZ2VHcm91cHMg
ewogcHVibGljOgogICAgIHN0YXRpYyBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzJiBzaGFyZWQoKQpA
QCAtMTA1LDExICsxMDMsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPFdlYlBhZ2VHcm91
cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoU3RyaW5nOjpmb3JtYXQoIl9fV2Vi
SW5zcGVjdG9yUGFnZUdyb3VwTGV2ZWwldV9fIiwgbGV2ZWwpLCBmYWxzZSwgZmFsc2UpOwogCiAj
aWZuZGVmIE5ERUJVRwotICAgICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhl
IFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzLgorICAgICAgICAvLyBBbGxvdyBkZXZlbG9w
ZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQg
Y2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgICAgIHBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zZXRE
ZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwogICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVu
Y2VzKCkuc2V0TG9nc1BhZ2VNZXNzYWdlc1RvU3lzdGVtQ29uc29sZUVuYWJsZWQodHJ1ZSk7CiAj
ZW5kaWYKIAorICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0QWxsb3dGaWxlQWNj
ZXNzRnJvbUZpbGVVUkxzKHRydWUpOwogICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCku
c2V0QXBwbGljYXRpb25DaHJvbWVNb2RlRW5hYmxlZCh0cnVlKTsKIAogICAgICAgICByZXR1cm4g
cGFnZUdyb3VwLnJlbGVhc2UoKTsKQEAgLTEyNCwxMyArMTIzLDEzIEBAIHByaXZhdGU6CiAKIFdl
Ykluc3BlY3RvclByb3h5OjpXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiAg
ICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1faW5zcGVjdG9yUGFnZShudWxscHRyKQorICAgICwg
bV91bmRlclRlc3QoZmFsc2UpCiAgICAgLCBtX2lzVmlzaWJsZShmYWxzZSkKICAgICAsIG1faXNB
dHRhY2hlZChmYWxzZSkKLSAgICAsIG1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KGZhbHNlKQotICAg
ICwgbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQoZmFsc2UpCisgICAgLCBtX2NhbkF0dGFjaChmYWxz
ZSkKICAgICAsIG1faXNQcm9maWxpbmdQYWdlKGZhbHNlKQogICAgICwgbV9zaG93TWVzc2FnZVNl
bnQoZmFsc2UpCi0gICAgLCBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlKGZhbHNlKQogICAgICwgbV9p
Z25vcmVGaXJzdEJyaW5nVG9Gcm9udChmYWxzZSkKICAgICAsIG1fYXR0YWNobWVudFNpZGUoQXR0
YWNobWVudFNpZGVCb3R0b20pCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCkBA
IC0xNjUsNyArMTY0LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aW52YWxpZGF0ZSgpCiAK
ICAgICBkaWRDbG9zZSgpOwogCi0gICAgbV9wYWdlID0gMDsKKyAgICBtX3BhZ2UgPSBudWxscHRy
OwogfQogCiAvLyBQdWJsaWMgQVBJcwpAQCAtMTg4LDYgKzE4Nyw4IEBAIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OmNvbm5lY3QoKQogICAgIG1fc2hvd01lc3NhZ2VTZW50ID0gdHJ1ZTsKICAgICBt
X2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250ID0gdHJ1ZTsKIAorICAgIGVhZ2VybHlDcmVhdGVJbnNw
ZWN0b3JQYWdlKCk7CisKICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OlNob3coKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKQEAgLTIzMiw2ICsyMzMs
OCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93Q29uc29sZSgpCiAgICAgaWYgKCFtX3Bh
Z2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7
CisKICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNo
b3dDb25zb2xlKCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCkBAIC0yNDAsNiArMjQzLDggQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1Jlc291cmNlcygpCiAgICAgaWYgKCFtX3BhZ2Up
CiAgICAgICAgIHJldHVybjsKIAorICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisK
ICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dS
ZXNvdXJjZXMoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKQEAgLTI0OCw2ICsyNTMsOCBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUoV2ViRnJhbWVQ
cm94eSogZnJhbWUpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIGVh
Z2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisKICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShmcmFtZS0+
ZnJhbWVJRCgpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKQEAgLTI3NCwxMyArMjgxLDE1IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaChBdHRhY2htZW50U2lkZSBzaWRlKQogICAg
IGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAgaW5zcGVjdG9yUGFnZUdyb3VwKCktPnByZWZlcmVu
Y2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQodHJ1ZSk7CiAKKyAgICBtX3BhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKHRydWUpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKwogICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewogICAg
IGNhc2UgQXR0YWNobWVudFNpZGVCb3R0b206Ci0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6QXR0YWNoZWRCb3R0b20oKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZEJvdHRvbSgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJ
RCgpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlUmlnaHQ6Ci0g
ICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6QXR0
YWNoZWRSaWdodCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkUmlnaHQo
KSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApA
QCAtMjk3LDcgKzMwNiw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRldGFjaCgpCiAgICAg
aWYgKG1faXNWaXNpYmxlKQogICAgICAgICBpbnNwZWN0b3JQYWdlR3JvdXAoKS0+cHJlZmVyZW5j
ZXMoKS5zZXRJbnNwZWN0b3JTdGFydHNBdHRhY2hlZChmYWxzZSk7CiAKLSAgICBtX3BhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkRldGFjaGVkKCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3Rvcjo6U2V0QXR0YWNoZWQoZmFsc2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNo
ZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAKICAgICBwbGF0Zm9ybURldGFjaCgp
OwogfQpAQCAtMzE0LDM0ICszMjQsNiBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZXRBdHRh
Y2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQogICAgIHBsYXRmb3JtU2V0QXR0YWNoZWRX
aW5kb3dXaWR0aCh3aWR0aCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnRvZ2dsZUph
dmFTY3JpcHREZWJ1Z2dpbmcoKQotewotICAgIGlmICghbV9wYWdlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAobV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQpCi0gICAgICAgIG1fcGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RvcEphdmFTY3JpcHREZWJ1Z2dp
bmcoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0gICAgZWxzZQotICAgICAgICBtX3BhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0SmF2YVNjcmlwdERlYnVnZ2lu
ZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLQotICAgIC8vIEZJWE1FOiBoYXZlIHRoZSBXZWJQcm9j
ZXNzIG5vdGlmeSB1cyBvbiBzdGF0ZSBjaGFuZ2VzLgotICAgIG1faXNEZWJ1Z2dpbmdKYXZhU2Ny
aXB0ID0gIW1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0OwotfQotCi12b2lkIFdlYkluc3BlY3RvclBy
b3h5Ojp0b2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKCkKLXsKLSAgICBpZiAoIW1fcGFnZSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1faXNQcm9maWxpbmdKYXZhU2NyaXB0KQotICAgICAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0b3BKYXZh
U2NyaXB0UHJvZmlsaW5nKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAgIGVsc2UKLSAgICAgICAg
bV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdGFydEphdmFT
Y3JpcHRQcm9maWxpbmcoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0KLSAgICAvLyBGSVhNRTogaGF2
ZSB0aGUgV2ViUHJvY2VzcyBub3RpZnkgdXMgb24gc3RhdGUgY2hhbmdlcy4KLSAgICBtX2lzUHJv
ZmlsaW5nSmF2YVNjcmlwdCA9ICFtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdDsKLX0KLQogdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlUGFnZVByb2ZpbGluZygpCiB7CiAgICAgaWYgKCFtX3Bh
Z2UpCkBAIC0zNjEsNiArMzQzLDI0IEBAIGJvb2wgV2ViSW5zcGVjdG9yUHJveHk6OmlzSW5zcGVj
dG9yUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAgcmV0dXJuIFdlYkluc3BlY3RvclBhZ2VH
cm91cHM6OnNoYXJlZCgpLmlzSW5zcGVjdG9yUGFnZUdyb3VwKHBhZ2UucGFnZUdyb3VwKCkpOwog
fQogCitXZWJDb250ZXh0JiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQ29udGV4dCgpCit7
CisgICAgLy8gSGF2aW5nIG91ciBvd24gY29udGV4dCByZW1vdmVzIHVzIGZyb20gdGhlIG1haW4g
Y29udGV4dCdzIHByb2Nlc3MgcG9vbCBhbmQKKyAgICAvLyBndWFyYW50ZWVzIG5vIHByb2Nlc3Mg
c2hhcmluZyBmb3Igb3VyIHVzZXIgaW50ZXJmYWNlLgorCisgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VGbGFnOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPFdlYkNv
bnRleHQ+PiBjb250ZXh0OworCisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAg
ICAgICAgV2ViQ29udGV4dENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAgICAgICAgV2Vi
Q29udGV4dDo6YXBwbHlQbGF0Zm9ybVNwZWNpZmljQ29uZmlndXJhdGlvbkRlZmF1bHRzKGNvbmZp
Z3VyYXRpb24pOworICAgICAgICBjb250ZXh0LmNvbnN0cnVjdChXZWJDb250ZXh0OjpjcmVhdGUo
Y29uZmlndXJhdGlvbikpOworICAgICAgICBjb250ZXh0LmdldCgpLT5zZXRQcm9jZXNzTW9kZWwo
UHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMpOworICAgIH0pOworCisgICAg
cmV0dXJuICpjb250ZXh0LmdldCgpOworfQorCiBzdGF0aWMgYm9vbCBpc01haW5PclRlc3RJbnNw
ZWN0b3JQYWdlKGNvbnN0IFdlYkluc3BlY3RvclByb3h5KiB3ZWJJbnNwZWN0b3JQcm94eSwgV0tV
UkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCiB7CiAgICAgVVJMIHJlcXVlc3RVUkwoVVJMKCksIHRv
SW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOwpAQCAtNDI2LDI5ICs0
MjYsMjAgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0
ZWQoKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3Rl
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZy
b250ZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3Nh
Z2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KICNlbmRpZgogCi0vLyBDYWxsZWQgYnkgV2ViSW5z
cGVjdG9yUHJveHkgbWVzc2FnZXMKLXZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3Bl
Y3RvclBhZ2UodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMpCit2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpl
YWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpCiB7Ci0gICAgaW5zcGVjdG9yUGFnZUlEID0gMDsK
LQotICAgIGlmICghbV9wYWdlKQorICAgIGlmIChtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1faXNBdHRhY2hlZCA9IHNob3VsZE9wZW5BdHRhY2hlZCgpOwotICAgIG1f
YXR0YWNobWVudFNpZGUgPSBzdGF0aWNfY2FzdDxBdHRhY2htZW50U2lkZT4oaW5zcGVjdG9yUGFn
ZUdyb3VwKCktPnByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0YWNobWVudFNpZGUoKSk7Ci0KLSAg
ICBXZWJQYWdlUHJveHkqIGluc3BlY3RvclBhZ2UgPSBwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBh
Z2UoKTsKLSAgICBBU1NFUlQoaW5zcGVjdG9yUGFnZSk7Ci0gICAgaWYgKCFpbnNwZWN0b3JQYWdl
KQorICAgIG1faW5zcGVjdG9yUGFnZSA9IHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpOwor
ICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOworICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpbnNwZWN0b3JQYWdlSUQgPSBpbnNwZWN0b3JQYWdlLT5w
YWdlSUQoKTsKLSAgICBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycyA9IGluc3BlY3RvclBhZ2UtPmNy
ZWF0aW9uUGFyYW1ldGVycygpOwotCiAgICAgV0tQYWdlUG9saWN5Q2xpZW50VjEgcG9saWN5Q2xp
ZW50ID0gewogICAgICAgICB7IDEsIHRoaXMgfSwKICAgICAgICAgMCwgLyogZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwICovCkBAIC00NTksNzMg
KzQ1MCw1NyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKHVp
bnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcgogICAgICAgICAwLCAvKiBkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZSAqLwogICAgIH07CiAKLSAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xp
ZW50KHRvQVBJKGluc3BlY3RvclBhZ2UpLCAmcG9saWN5Q2xpZW50LmJhc2UpOwotCi0gICAgU3Ry
aW5nQnVpbGRlciB1cmw7Ci0KLSAgICB1cmwuYXBwZW5kKGluc3BlY3RvclBhZ2VVUkwoKSk7Ci0K
LSAgICB1cmwuYXBwZW5kTGl0ZXJhbCgiP2RvY2tTaWRlPSIpOwotCi0gICAgaWYgKG1faXNBdHRh
Y2hlZCkgewotICAgICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKLSAgICAgICAgY2Fz
ZSBBdHRhY2htZW50U2lkZUJvdHRvbToKLSAgICAgICAgICAgIHVybC5hcHBlbmRMaXRlcmFsKCJi
b3R0b20iKTsKLSAgICAgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3Rvcjo6QXR0YWNoZWRCb3R0b20oKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZVJpZ2h0OgotICAgICAgICAg
ICAgdXJsLmFwcGVuZExpdGVyYWwoInJpZ2h0Iik7Ci0gICAgICAgICAgICBtX3BhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVkUmlnaHQoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0gZWxzZQot
ICAgICAgICB1cmwuYXBwZW5kTGl0ZXJhbCgidW5kb2NrZWQiKTsKKyAgICBXS1BhZ2VTZXRQYWdl
UG9saWN5Q2xpZW50KHRvQVBJKG1faW5zcGVjdG9yUGFnZSksICZwb2xpY3lDbGllbnQuYmFzZSk7
CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGluc3Bl
Y3RvckJhc2VVUkwoKSk7Ci0KLSAgICBpbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJM
KCksIHVybC50b1N0cmluZygpKSk7Ci0KLSAgICBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlID0gdHJ1
ZTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+
cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVS
ZWFkQWNjZXNzVG9CYXNlVVJMKGluc3BlY3RvckJhc2VVUkwoKSk7CiB9CiAKLXZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KHVpbnQ2NF90JiBpbnNwZWN0
b3JQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIGluc3BlY3RvclBhZ2VQYXJhbWV0
ZXJzKQorLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2VzCit2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0
aW9uSWRlbnRpZmllciwgYm9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXN0KQogewotICAgIGlu
c3BlY3RvclBhZ2VJRCA9IDA7Ci0KICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9pc0F0dGFjaGVkID0gZmFsc2U7CisgICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBh
Z2UoKTsKIAotICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSA9IHBsYXRmb3JtQ3JlYXRl
SW5zcGVjdG9yUGFnZSgpOwotICAgIEFTU0VSVChpbnNwZWN0b3JQYWdlKTsKLSAgICBpZiAoIWlu
c3BlY3RvclBhZ2UpCisgICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgaWYgKCFtX2lu
c3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluc3BlY3RvclBhZ2VJRCA9IGlu
c3BlY3RvclBhZ2UtPnBhZ2VJRCgpOwotICAgIGluc3BlY3RvclBhZ2VQYXJhbWV0ZXJzID0gaW5z
cGVjdG9yUGFnZS0+Y3JlYXRpb25QYXJhbWV0ZXJzKCk7CisgICAgbV91bmRlclRlc3QgPSB1bmRl
clRlc3Q7CiAKLSAgICBXS1BhZ2VQb2xpY3lDbGllbnRWMSBwb2xpY3lDbGllbnQgPSB7Ci0gICAg
ICAgIHsgMSwgdGhpcyB9LAotICAgICAgICAwLCAvKiBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgKi8KLSAgICAgICAgMCwgLyogZGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uICovCi0gICAgICAgIDAsIC8qIGRlY2lkZVBvbGljeUZvclJl
c3BvbnNlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgKi8KLSAgICAgICAgMCwgLyogdW5hYmxlVG9J
bXBsZW1lbnRQb2xpY3kgKi8KLSAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
biwKLSAgICAgICAgMCwgLyogZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UgKi8KLSAgICB9OworICAg
IG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpFc3RhYmxpc2hDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3BhZ2UtPnBhZ2VJ
RCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogCi0gICAgV0tQ
YWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSShpbnNwZWN0b3JQYWdlKSwgJnBvbGljeUNsaWVu
dC5iYXNlKTsKKyAgICBpZiAoIW1fdW5kZXJUZXN0KSB7CisgICAgICAgIG1fY2FuQXR0YWNoID0g
Y2FuQXR0YWNoOworICAgICAgICBtX2lzQXR0YWNoZWQgPSBzaG91bGRPcGVuQXR0YWNoZWQoKTsK
KyAgICAgICAgbV9hdHRhY2htZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0dGFjaG1lbnRTaWRlPihp
bnNwZWN0b3JQYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2htZW50U2lk
ZSgpKTsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwo
aW5zcGVjdG9yQmFzZVVSTCgpKTsKKyAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChtX2lzQXR0YWNoZWQpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKIAotICAgIGluc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgaW5z
cGVjdG9yVGVzdFBhZ2VVUkwoKSkpOworICAgICAgICBpZiAobV9pc0F0dGFjaGVkKSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKKyAgICAgICAgICAgIGNhc2UgQXR0
YWNobWVudFNpZGVCb3R0b206CisgICAgICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90dG9tKCksIG1f
aW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
bV9jcmVhdGVkSW5zcGVjdG9yUGFnZSA9IHRydWU7CisgICAgICAgICAgICBjYXNlIEF0dGFjaG1l
bnRTaWRlUmlnaHQ6CisgICAgICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkUmlnaHQoKSwgbV9pbnNwZWN0
b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFjaGVkKCksIG1faW5zcGVjdG9yUGFn
ZS0+cGFnZUlEKCkpOworICAgIH0KKworICAgIG1faW5zcGVjdG9yUGFnZS0+bG9hZFJlcXVlc3Qo
VVJMKFVSTCgpLCBtX3VuZGVyVGVzdCA/IGluc3BlY3RvclRlc3RQYWdlVVJMKCkgOiBpbnNwZWN0
b3JQYWdlVVJMKCkpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbigpCiB7Cisg
ICAgaWYgKG1fdW5kZXJUZXN0KQorICAgICAgICByZXR1cm47CisKICAgICBtX2lzVmlzaWJsZSA9
IHRydWU7CiAKICAgICBwbGF0Zm9ybU9wZW4oKTsKQEAgLTUzMywyMCArNTA4LDIzIEBAIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6Om9wZW4oKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkaWRD
bG9zZSgpCiB7Ci0gICAgaWYgKCFtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlKQorICAgIGlmICghbV9p
bnNwZWN0b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKKyAgICBtX2luc3BlY3RvclBhZ2UtPmNs
b3NlKCk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRyOworCiAgICAg
bV9pc1Zpc2libGUgPSBmYWxzZTsKLSAgICBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdCA9IGZhbHNl
OwotICAgIG1faXNQcm9maWxpbmdKYXZhU2NyaXB0ID0gZmFsc2U7CiAgICAgbV9pc1Byb2ZpbGlu
Z1BhZ2UgPSBmYWxzZTsKLSAgICBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlID0gZmFsc2U7CiAgICAg
bV9zaG93TWVzc2FnZVNlbnQgPSBmYWxzZTsKICAgICBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250
ID0gZmFsc2U7CiAKICAgICBpZiAobV9pc0F0dGFjaGVkKQogICAgICAgICBwbGF0Zm9ybURldGFj
aCgpOwogICAgIG1faXNBdHRhY2hlZCA9IGZhbHNlOworICAgIG1fY2FuQXR0YWNoID0gZmFsc2U7
CisgICAgbV91bmRlclRlc3QgPSBmYWxzZTsKIAogICAgIHBsYXRmb3JtRGlkQ2xvc2UoKTsKIH0K
QEAgLTU2OSw2ICs1NDcsOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpicmluZ1RvRnJvbnQo
KQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJv
b2wgYXZhaWxhYmxlKQogeworICAgIG1fY2FuQXR0YWNoID0gYXZhaWxhYmxlOworCiAgICAgcGxh
dGZvcm1BdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGF2YWlsYWJsZSk7CiB9CiAKQEAgLTU4Nywy
OCArNTY3LDYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXBwZW5kKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkKICAgICBwbGF0Zm9ybUFwcGVuZChmaWxl
bmFtZSwgY29udGVudCk7CiB9CiAKLWJvb2wgV2ViSW5zcGVjdG9yUHJveHk6OmNhbkF0dGFjaCgp
Ci17Ci0gICAgLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsOjpjYW5BdHRhY2hXaW5kb3cuIFRoZXJlIGFyZSB0d28gaW1wbGVtZW50YXRpb25zCi0g
ICAgLy8gdG8gbWFrZSBsaWZlIGVhc2llciBpbiB0aGUgbXVsdGktcHJvY2VzcyB3b3JsZCB3ZSBo
YXZlLiBXZWJJbnNwZWN0b3JQcm94eSB1c2VzIGNhbkF0dGFjaCB0byBkZWNpZGUgaWYKLSAgICAv
LyB3ZSBjYW4gYXR0YWNoIG9uIG9wZW4gKG9uIHRoZSBVSSBwcm9jZXNzIHNpZGUpLiBBbmQgSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2FuQXR0YWNoV2luZG93IGlzCi0gICAgLy8gdXNl
ZCB0byBkZWNpZGUgaWYgd2UgY2FuIGF0dGFjaCB3aGVuIHRoZSBhdHRhY2ggYnV0dG9uIGlzIHBy
ZXNzZWQgKG9uIHRoZSBXZWJQcm9jZXNzIHNpZGUpLgotCi0gICAgLy8gSWYgd2UgYXJlIGFscmVh
ZHkgYXR0YWNoZWQsIGFsbG93IGF0dGFjaGluZyBhZ2FpbiB0byBhbGxvdyBzd2l0Y2hpbmcgc2lk
ZXMuCi0gICAgaWYgKG1faXNBdHRhY2hlZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAv
LyBEb24ndCBhbGxvdyBhdHRhY2hpbmcgdG8gYW5vdGhlciBpbnNwZWN0b3IgLS0gdHdvIGluc3Bl
Y3RvcnMgaW4gb25lIHdpbmRvdyBpcyB0b28gbXVjaCEKLSAgICBpZiAobV9sZXZlbCA+IDEpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIERvbid0IGFsbG93IHRoZSBhdHRhY2ggaWYg
dGhlIHdpbmRvdyB3b3VsZCBiZSB0b28gc21hbGwgdG8gYWNjb21tb2RhdGUgdGhlIG1pbmltdW0g
aW5zcGVjdG9yIGhlaWdodC4KLSAgICB1bnNpZ25lZCBpbnNwZWN0ZWRQYWdlSGVpZ2h0ID0gcGxh
dGZvcm1JbnNwZWN0ZWRXaW5kb3dIZWlnaHQoKTsKLSAgICB1bnNpZ25lZCBpbnNwZWN0ZWRQYWdl
V2lkdGggPSBwbGF0Zm9ybUluc3BlY3RlZFdpbmRvd1dpZHRoKCk7Ci0gICAgdW5zaWduZWQgbWF4
aW11bUF0dGFjaGVkSGVpZ2h0ID0gaW5zcGVjdGVkUGFnZUhlaWdodCAqIDMgLyA0OwotICAgIHJl
dHVybiBtaW5pbXVtQXR0YWNoZWRIZWlnaHQgPD0gbWF4aW11bUF0dGFjaGVkSGVpZ2h0ICYmIG1p
bmltdW1BdHRhY2hlZFdpZHRoIDw9IGluc3BlY3RlZFBhZ2VXaWR0aDsKLX0KLQogYm9vbCBXZWJJ
bnNwZWN0b3JQcm94eTo6c2hvdWxkT3BlbkF0dGFjaGVkKCkKIHsKICAgICByZXR1cm4gaW5zcGVj
dG9yUGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkuaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoKSAm
JiBjYW5BdHRhY2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5LmgKaW5kZXggMTdhNzQ5ODJlNzQ5YzEwMTE2YTExZTU5MDk4YWNmNDRhMjAwMjk0My4uMDY1
ZDdlMTNjY2M4NmFhMmY0YTE0NmNjNTY5ZDI5NjhiNGQ1YmQ2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMCw2ICszMCw3IEBACiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUg
IkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC01OSwxMCArNjAs
MTAgQEAgT0JKQ19DTEFTUyBXS1dlYkluc3BlY3RvcldLVmlldzsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKK2NsYXNzIFdlYkNvbnRleHQ7CiBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2Vi
UGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZVByb3h5Owotc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM7CiAKIGVudW0gQXR0YWNobWVudFNpZGUgewogICAgIEF0dGFjaG1lbnRTaWRlQm90
dG9tLApAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUHVibGljIEFQSXMKICAgICBX
ZWJQYWdlUHJveHkqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KIAotICAgIGJvb2wg
aXNDb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlOyB9Cisg
ICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbnNwZWN0b3JQYWdlOyB9
CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2lzVmlzaWJsZTsgfQogICAg
IGJvb2wgaXNGcm9udCgpOwogCkBAIC0xMjMsMTYgKzEyNCwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKTsKICAgICB2b2lkIHNldFRvb2xiYXJI
ZWlnaHQodW5zaWduZWQgaGVpZ2h0KSB7IHBsYXRmb3JtU2V0VG9vbGJhckhlaWdodChoZWlnaHQp
OyB9CiAKLSAgICBib29sIGlzRGVidWdnaW5nSmF2YVNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNEZWJ1Z2dpbmdKYXZhU2NyaXB0OyB9Ci0gICAgdm9pZCB0b2dnbGVKYXZhU2NyaXB0RGVidWdn
aW5nKCk7Ci0KLSAgICBib29sIGlzUHJvZmlsaW5nSmF2YVNjcmlwdCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNQcm9maWxpbmdKYXZhU2NyaXB0OyB9Ci0gICAgdm9pZCB0b2dnbGVKYXZhU2NyaXB0UHJv
ZmlsaW5nKCk7Ci0KICAgICBib29sIGlzUHJvZmlsaW5nUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNQcm9maWxpbmdQYWdlOyB9CiAgICAgdm9pZCB0b2dnbGVQYWdlUHJvZmlsaW5nKCk7CiAKICAg
ICBzdGF0aWMgYm9vbCBpc0luc3BlY3RvclBhZ2UoV2ViUGFnZVByb3h5Jik7CisgICAgc3RhdGlj
IFdlYkNvbnRleHQmIGluc3BlY3RvckNvbnRleHQoKTsKIAogICAgIC8vIFByb3ZpZGVkIGJ5IHBs
YXRmb3JtIFdlYkluc3BlY3RvclByb3h5IGltcGxlbWVudGF0aW9ucy4KICAgICBTdHJpbmcgaW5z
cGVjdG9yUGFnZVVSTCgpIGNvbnN0OwpAQCAtMTUwLDkgKzE0NiwxMCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvclByb3h5KFdlYlBhZ2VQcm94eSopOwogCisg
ICAgdm9pZCBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOworCiAgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpIG92ZXJyaWRlOwog
CiAgICAgV2ViUGFnZVByb3h5KiBwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKICAgICB2
b2lkIHBsYXRmb3JtT3BlbigpOwpAQCAtMTczLDggKzE3MCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnQpOwogCiAgICAgLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2VzCi0g
ICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JQYWdlKHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKLSAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBhZ2VG
b3JUZXN0KHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmKTsKKyAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBhZ2UoSVBDOjpBdHRhY2htZW50LCBib29s
IGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlc3QpOwogICAgIHZvaWQgZGlkQ2xvc2UoKTsKICAgICB2
b2lkIGJyaW5nVG9Gcm9udCgpOwogICAgIHZvaWQgYXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChi
b29sKTsKQEAgLTE4Nyw3ICsxODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZE1lc3NhZ2VU
b1JlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAjZW5kaWYKIAotICAgIGJv
b2wgY2FuQXR0YWNoKCk7CisgICAgYm9vbCBjYW5BdHRhY2goKSBjb25zdCB7IHJldHVybiBtX2Nh
bkF0dGFjaDsgfQogICAgIGJvb2wgc2hvdWxkT3BlbkF0dGFjaGVkKCk7CiAKICAgICB2b2lkIG9w
ZW4oKTsKQEAgLTIwNCwxOSArMjAwLDE1IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGluaXRpYWxXaW5kb3dXaWR0aDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5p
dGlhbFdpbmRvd0hlaWdodDsKIAotICAgIC8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggdGhlIHZh
bHVlIGluIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuCi0gICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG1pbmltdW1BdHRhY2hlZFdpZHRoOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBt
aW5pbXVtQXR0YWNoZWRIZWlnaHQ7Ci0KICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKKyAgICBX
ZWJQYWdlUHJveHkqIG1faW5zcGVjdG9yUGFnZTsKIAorICAgIGJvb2wgbV91bmRlclRlc3Q7CiAg
ICAgYm9vbCBtX2lzVmlzaWJsZTsKICAgICBib29sIG1faXNBdHRhY2hlZDsKLSAgICBib29sIG1f
aXNEZWJ1Z2dpbmdKYXZhU2NyaXB0OwotICAgIGJvb2wgbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQ7
CisgICAgYm9vbCBtX2NhbkF0dGFjaDsKICAgICBib29sIG1faXNQcm9maWxpbmdQYWdlOwogICAg
IGJvb2wgbV9zaG93TWVzc2FnZVNlbnQ7Ci0gICAgYm9vbCBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdl
OwogICAgIGJvb2wgbV9pZ25vcmVGaXJzdEJyaW5nVG9Gcm9udDsKIAogICAgIC8vIFRoZSBkZWJ1
Z2dlciBzdG9wcyBhbGwgdGhlIHBhZ2VzIGluIHRoZSBzYW1lIFBhZ2VHcm91cC4gSGF2aW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggZTZjOTQ0ZDk0NjM0YjI3YTQzNDgwN2M1YzMwNzg1YzBlNTgzYmEyNy4u
ZWI3ZmE5Yjk5ZDhkOTFkMzU2NWY1OGQxZGQ1ZWJhN2FiOTgzOTQ3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTAgKzIz
LDExIEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9y
UHJveHkgewotICAgIENyZWF0ZUluc3BlY3RvclBhZ2UoKSAtPiAodWludDY0X3QgaW5zcGVjdG9y
UGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgaW5zcGVjdG9yUGFnZVBh
cmFtZXRlcnMpCi0gICAgQ3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QoKSAtPiAodWludDY0X3Qg
aW5zcGVjdG9yUGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgaW5zcGVj
dG9yUGFnZVBhcmFtZXRlcnMpCisgICAgQ3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1l
bnQgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgY2FuQXR0YWNoLCBib29sIHVuZGVyVGVzdCkK
KwogICAgIERpZENsb3NlKCkKICAgICBCcmluZ1RvRnJvbnQoKQorCiAgICAgSW5zcGVjdGVkVVJM
Q2hhbmdlZChTdHJpbmcgdXJsU3RyaW5nKQogCiAgICAgU2F2ZShTdHJpbmcgZmlsZW5hbWUsIFN0
cmluZyBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCkBAIC0z
NSw2ICszNiw3IEBAIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclByb3h5IHsKICAgICBBdHRhY2hC
b3R0b20oKQogICAgIEF0dGFjaFJpZ2h0KCkKICAgICBEZXRhY2goKQorCiAgICAgQXR0YWNoQXZh
aWxhYmlsaXR5Q2hhbmdlZChib29sIGF2YWlsYWJsZSkKIAogICAgIFNldEF0dGFjaGVkV2luZG93
SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKaW5kZXggOTA0OWY5YmJhZDA0YzM1MzNlNDYyOTM3Y2ExZTQwM2QxMDUy
NDg5My4uOTczMmMwNTAxMjVlMTM4Y2JmN2NlNTMwYzQ5MjYwZjk0N2EyMDM0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTM5LDYgKzM5LDcg
QEAKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUg
IldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5j
bHVkZSAiV2ViSW5zcGVjdG9yUHJveHkuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uRGF0YVN0
b3JlLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZUdyb3VwLmgiCkBAIC0xMTUsNiArMTE2LDggQEAgV2ViUHJvY2Vzc1Byb3h5Ojp+
V2ViUHJvY2Vzc1Byb3h5KCkKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25z
KFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKIHsKICAgICBs
YXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID0gUHJvY2Vzc0xhdW5jaGVyOjpXZWJQcm9jZXNzOwor
ICAgIGlmICgmbV9jb250ZXh0LmdldCgpID09ICZXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9y
Q29udGV4dCgpKQorICAgICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRh
LmFkZChBU0NJSUxpdGVyYWwoImluc3BlY3Rvci1wcm9jZXNzIiksIEFTQ0lJTGl0ZXJhbCgiMSIp
KTsKICAgICBwbGF0Zm9ybUdldExhdW5jaE9wdGlvbnMobGF1bmNoT3B0aW9ucyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlF
ZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVm
bC5jcHAKaW5kZXggZWVjMzljY2U4ZTk3YzEyODA4ODQwYjVhZjE0MjRiMjY1NzE0NGU1Yy4uMDkx
MjE3YWNlMjEyMzc5MmFhZWYzZWQyZjM5OTU1MDk1ZmNiZTc5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKQEAgLTEw
NCw3ICsxMDQsNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNy
ZWF0ZUluc3BlY3RvclBhZ2UoKQogICAgIGlmICghbV9pbnNwZWN0b3JXaW5kb3cpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgV0tDb250ZXh0UmVmIHdrQ29udGV4dCA9IHRvQVBJKCZwYWdlKCkt
PnByb2Nlc3MoKS5jb250ZXh0KCkpOworICAgIFdLQ29udGV4dFJlZiB3a0NvbnRleHQgPSB0b0FQ
SSgmaW5zcGVjdG9yQ29udGV4dCgpKTsKICAgICBXS1BhZ2VHcm91cFJlZiB3a1BhZ2VHcm91cCA9
IHRvQVBJKGluc3BlY3RvclBhZ2VHcm91cCgpKTsKIAogICAgIG1faW5zcGVjdG9yVmlldyA9IEVX
S1ZpZXdDcmVhdGUod2tDb250ZXh0LCB3a1BhZ2VHcm91cCwgZWNvcmVfZXZhc19nZXQobV9pbnNw
ZWN0b3JXaW5kb3cpLCAvKiBzbWFydCAqLyAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5kZXggNTBlNDVjNDlkMzM2
OWRjYzc4N2YwNTY0MTVkYmJjOTYzNGRjNjQzZC4uYjIyMTkyZTdkYmQ3ODUzMWMxMTNiYTJmMzlk
ZmU5MTY4YWJmOTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgV2ViUGFnZVByb3h5
KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKIHsKICAg
ICBBU1NFUlQobV9wYWdlKTsKICAgICBBU1NFUlQoIW1faW5zcGVjdG9yVmlldyk7Ci0gICAgbV9p
bnNwZWN0b3JWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSgmcGFnZSgp
LT5wcm9jZXNzKCkuY29udGV4dCgpLCBudWxscHRyLCBpbnNwZWN0b3JQYWdlR3JvdXAoKSwgbnVs
bHB0ciwgbV9wYWdlKSk7CisgICAgbV9pbnNwZWN0b3JWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRX
ZWJWaWV3QmFzZUNyZWF0ZSgmaW5zcGVjdG9yQ29udGV4dCgpLCBudWxscHRyLCBpbnNwZWN0b3JQ
YWdlR3JvdXAoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIGdfb2JqZWN0X2FkZF93ZWFrX3Bv
aW50ZXIoR19PQkpFQ1QobV9pbnNwZWN0b3JWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+
KCZtX2luc3BlY3RvclZpZXcpKTsKICAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdl
KFdFQktJVF9XRUJfVklFV19CQVNFKG1faW5zcGVjdG9yVmlldykpOwogfQpAQCAtMTgyLDggKzE4
MiwxMSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaCgpCiAgICAgICAg
IG1faW5zcGVjdG9yV2luZG93ID0gMDsKICAgICB9CiAKLSAgICAvLyBTZXQgYSBkZWZhdWx0IGF0
dGFjaGVkIHNpemUgYmFzZWQgb24gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC4KKyAgICAv
LyBTZXQgYSBkZWZhdWx0IHNpemVzIGJhc2VkIG9uIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRlZmF1bHRBdHRhY2hlZFNpemUgPSAzMDA7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1BdHRhY2hlZFdpZHRoID0gNzUwOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtQXR0YWNoZWRIZWlnaHQgPSAyNTA7CisK
ICAgICBpZiAobV9hdHRhY2htZW50U2lkZSA9PSBBdHRhY2htZW50U2lkZUJvdHRvbSkgewogICAg
ICAgICB1bnNpZ25lZCBtYXhpbXVtQXR0YWNoZWRIZWlnaHQgPSBwbGF0Zm9ybUluc3BlY3RlZFdp
bmRvd0hlaWdodCgpICogMyAvIDQ7CiAgICAgICAgIHBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dI
ZWlnaHQoc3RkOjptYXgobWluaW11bUF0dGFjaGVkSGVpZ2h0LCBzdGQ6Om1pbihkZWZhdWx0QXR0
YWNoZWRTaXplLCBtYXhpbXVtQXR0YWNoZWRIZWlnaHQpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCBjNmM2Njhj
YjVmZmM4YzViNmVmMDk2ZTNjOTI5Y2IyNTQ1YzA5ZjlkLi45Y2VjZjQxNTVkMjQ5OTQzYjUwZmQ1
MjM4OGJhYjFjOTFmMWVmYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIldL
VVJMQ0YuaCIKICNpbXBvcnQgIldLVmlld1ByaXZhdGUuaCIKICNpbXBvcnQgIldlYkluc3BlY3Rv
ck1lc3NhZ2VzLmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgiCiAjaW1wb3J0
ICJXZWJQYWdlR3JvdXAuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2Vi
UHJlZmVyZW5jZXMuaCIKQEAgLTExNCw3ICsxMTUsNyBAQCAtIChJQkFjdGlvbilhdHRhY2hCb3R0
b206KGlkKXNlbmRlcgogCiAtICh2b2lkKWNsb3NlCiB7Ci0gICAgX2luc3BlY3RvclByb3h5ID0g
MDsKKyAgICBfaW5zcGVjdG9yUHJveHkgPSBudWxscHRyOwogfQogCiAtICh2b2lkKXdpbmRvd0Rp
ZE1vdmU6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCkBAIC00MTgsNyArNDE5LDcgQEAg
V2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQ
YWdlKCkKICAgICAgICAgICAgIGluaXRpYWxSZWN0ID0gW05TV2luZG93IGNvbnRlbnRSZWN0Rm9y
RnJhbWVSZWN0OndpbmRvd0ZyYW1lIHN0eWxlTWFzazp3aW5kb3dTdHlsZU1hc2tdOwogICAgIH0K
IAotICAgIG1faW5zcGVjdG9yVmlldyA9IGFkb3B0TlMoW1tXS1dlYkluc3BlY3RvcldLVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTppbml0aWFsUmVjdCBjb250ZXh0UmVmOnRvQVBJKCZwYWdlKCkt
PnByb2Nlc3MoKS5jb250ZXh0KCkpIHBhZ2VHcm91cFJlZjp0b0FQSShpbnNwZWN0b3JQYWdlR3Jv
dXAoKSkgcmVsYXRlZFRvUGFnZTp0b0FQSShtX3BhZ2UpXSk7CisgICAgbV9pbnNwZWN0b3JWaWV3
ID0gYWRvcHROUyhbW1dLV2ViSW5zcGVjdG9yV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmlu
aXRpYWxSZWN0IGNvbnRleHRSZWY6dG9BUEkoJmluc3BlY3RvckNvbnRleHQoKSkgcGFnZUdyb3Vw
UmVmOnRvQVBJKGluc3BlY3RvclBhZ2VHcm91cCgpKSByZWxhdGVkVG9QYWdlOm51bGxwdHJdKTsK
ICAgICBBU1NFUlQobV9pbnNwZWN0b3JWaWV3KTsKIAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPD0gMTA5MApAQCAtNDk5LDEzICs1MDAsMTMgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1EaWRDbG9zZSgpCiAgICAgaWYgKG1faW5zcGVjdG9yV2luZG93KSB7
CiAgICAgICAgIFttX2luc3BlY3RvcldpbmRvdyBzZXREZWxlZ2F0ZTpuaWxdOwogICAgICAgICBb
bV9pbnNwZWN0b3JXaW5kb3cgb3JkZXJPdXQ6bmlsXTsKLSAgICAgICAgbV9pbnNwZWN0b3JXaW5k
b3cgPSAwOworICAgICAgICBtX2luc3BlY3RvcldpbmRvdyA9IG5pbDsKICAgICB9CiAKLSAgICBt
X2luc3BlY3RvclZpZXcgPSAwOworICAgIG1faW5zcGVjdG9yVmlldyA9IG5pbDsKIAogICAgIFtt
X2luc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIgY2xvc2VdOwotICAgIG1faW5zcGVjdG9yUHJveHlP
YmpDQWRhcHRlciA9IDA7CisgICAgbV9pbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyID0gbmlsOwog
fQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUhpZGUoKQpAQCAtNTE4LDcgKzUx
OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSGlkZSgpCiAgICAgaWYgKG1f
aW5zcGVjdG9yV2luZG93KSB7CiAgICAgICAgIFttX2luc3BlY3RvcldpbmRvdyBzZXREZWxlZ2F0
ZTpuaWxdOwogICAgICAgICBbbV9pbnNwZWN0b3JXaW5kb3cgb3JkZXJPdXQ6bmlsXTsKLSAgICAg
ICAgbV9pbnNwZWN0b3JXaW5kb3cgPSAwOworICAgICAgICBtX2luc3BlY3RvcldpbmRvdyA9IG5p
bDsKICAgICB9CiB9CiAKQEAgLTU4OSw3ICs1OTAsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYg
YwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFtjb250ZW50Q29weSB3cml0ZVRvVVJMOmFj
dHVhbFVSTCBhdG9taWNhbGx5OllFUyBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJv
cjpOVUxMXTsKIAotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBt
X2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKICAgICB9OwogCiAgICAgaWYgKCFmb3JjZVNhdmVE
aWFsb2cpIHsKQEAgLTYyMyw3ICs2MjQsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJgogICAg
IFtoYW5kbGUgd3JpdGVEYXRhOltjb250ZW50IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXV07CiAgICAgW2hhbmRsZSBjbG9zZUZpbGVdOwogCi0gICAgbV9wYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBh
YnNvbHV0ZVN0cmluZ10pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGlkQXBwZW5kKFthY3R1
YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiB9CiAK
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OndpbmRvd0ZyYW1lRGlkQ2hhbmdlKCkKQEAgLTcwOCw3
ICs3MDksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaCgpCiAgICAg
aWYgKG1faW5zcGVjdG9yV2luZG93KSB7CiAgICAgICAgIFttX2luc3BlY3RvcldpbmRvdyBzZXRE
ZWxlZ2F0ZTpuaWxdOwogICAgICAgICBbbV9pbnNwZWN0b3JXaW5kb3cgb3JkZXJPdXQ6bmlsXTsK
LSAgICAgICAgbV9pbnNwZWN0b3JXaW5kb3cgPSAwOworICAgICAgICBtX2luc3BlY3RvcldpbmRv
dyA9IG5pbDsKICAgICB9CiAKICAgICBbbV9pbnNwZWN0b3JWaWV3IHJlbW92ZUZyb21TdXBlcnZp
ZXddOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDY3YzM2ZjA4MzlkMDkzZDdmMWRlMDIwNjIyZWFmMmJlZTZiZDUxMDUuLmQwYTky
Zjk2YzM3YzFmMGIzZjQxMDIzMGM0MDBhYThkMGI4OTYwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ5NSwxMCArNDk1LDEw
IEBACiAJCTFBRkU0MzY1MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRTQzNjMxOEI2QzA4MTAw
OUM3QTQ4IC8qIFVJRGVsZWdhdGUubW0gKi87IH07CiAJCTFBRkU0MzY2MThCNkMwODEwMDlDN0E0
OCAvKiBVSURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUZFNDM2NDE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5oICovOyB9Owog
CQkxQUZGNDkwMDE4MzNERTc4MDA5QUIxNUEgLyogV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRkY0OEZFMTgz
M0RFNzgwMDlBQjE1QSAvKiBXS0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwICovOyB9OworCQkxQzg5
MUQ2NTE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4OTFENjIxOUIxMjRGRjAwQkE3OURE
IC8qIFdlYkluc3BlY3RvclVJLmNwcCAqLzsgfTsKKwkJMUM4OTFENjYxOUIxMjRGRjAwQkE3OURE
IC8qIFdlYkluc3BlY3RvclVJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQzg5MUQ2MzE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCAq
LzsgfTsKIAkJMUM4QUU3NjExOTkyRjYzQTAwQUJGNkVDIC8qIERvY2tCb3R0b21MZWdhY3kucGRm
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhBRTc1
RjE5OTJGNjJGMDBBQkY2RUMgLyogRG9ja0JvdHRvbUxlZ2FjeS5wZGYgKi87IH07CiAJCTFDOEFF
NzYyMTk5MkY2M0MwMEFCRjZFQyAvKiBEb2NrUmlnaHRMZWdhY3kucGRmIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhBRTc2MDE5OTJGNjJGMDBBQkY2
RUMgLyogRG9ja1JpZ2h0TGVnYWN5LnBkZiAqLzsgfTsKLQkJMUM4RTI1QTgxMjcwRTNCQjAwQkM3
QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyNTZCMTI3MERFMzgwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAgKi87IH07Ci0JCTFDOEUyNUE5MTI3MEUzQkMw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI1NkExMjcwREUzODAwQkM3QkQwIC8q
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggKi87IH07CiAJCTFDOEUyODIwMTI3NUQxNTQw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDOEUyODFFMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3Iu
aCAqLzsgfTsKIAkJMUM4RTI4MjExMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjgxRjEy
NzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmNwcCAqLzsgfTsKIAkJMUM4RTI4MzQxMjc1
RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjgzMjEyNzVENzM4MDBCQzdCRDAgLyogV2Vi
SW5zcGVjdG9yUHJveHkuaCAqLzsgfTsKQEAgLTUxMCw4ICs1MTAsMTAgQEAKIAkJMUNBOEI5MzYx
MjdDNzc0RTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBOEI5MzUxMjdDNzc0RTAwNTc2QzJC
IC8qIFdlYkluc3BlY3RvclByb3h5TWFjLm1tICovOyB9OwogCQkxQ0E4Qjk0NTEyN0M4ODJBMDA1
NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBOEI5NDMxMjdDODgyQTAwNTc2
QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMUNB
OEI5NDYxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQThCOTQ0MTI3Qzg4
MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggKi87IH07Ci0JCTFDQThC
OTU0MTI3Qzg5MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yTWFjLm1tICovOyB9OworCQkxQ0E4Qjk1NDEyN0M4OTE1MDA1NzZDMkIg
LyogV2ViSW5zcGVjdG9yVUlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yVUlN
YWMubW0gKi87IH07CiAJCTFDQjc1Qzk0MTcwMUU4ODAwMDlGODA5RiAvKiBEb2NrUmlnaHQucGRm
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0I3NUM5
MzE3MDFFODgwMDA5RjgwOUYgLyogRG9ja1JpZ2h0LnBkZiAqLzsgfTsKKwkJMUNCQkU0QTAxOUI2
NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQkJFNDlFMTlCNjZDNTMw
MDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTFD
QkJFNEExMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0JCRTQ5RjE5QjY2QzUz
MDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oICovOyB9OwogCQkxQ0JDOTQ1RTE2
NTE1RUQyMDBENjhBQUUgLyogRG9ja0JvdHRvbS5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQkM5NDVEMTY1MTVFRDIwMEQ2OEFBRSAvKiBEb2Nr
Qm90dG9tLnBkZiAqLzsgfTsKIAkJMUYzMzVCQzAxODVCODRGMDAwMUEyMDFBIC8qIFdLV2ViUHJv
Y2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUYzMzVCQkYxODVCODREODAwMUEyMDFBIC8qIFdLV2ViUHJvY2Vzc1Bs
dWdJbkxvYWREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTFGNjA0QkE4MTg4OUZBNzQwMEVFMDM5NSAvKiBXS1JlbmRlcmluZ1Byb2dy
ZXNzRXZlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxRjYwNEJBNjE4ODlGQTc0MDBFRTAzOTUgLyogV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDc1
LDEwICsyNDc3LDExIEBACiAJCTFBRkY0OEZFMTgzM0RFNzgwMDlBQjE1QSAvKiBXS0RlcHJlY2F0
ZWRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tE
ZXByZWNhdGVkRnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUJC
NDE3QzkxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0Q2hlY2tlckNvbXBsZXRpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzc3QzE5NTEyODhBODcyMDA2QTc0MkYg
LyogV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDODkxRDYyMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JVSS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDODkxRDYzMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJ
bnNwZWN0b3JVSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0
b3JVSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzg5MUQ2NDE5QjEyNEZGMDBC
QTc5REQgLyogV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDOEFFNzVGMTk5MkY2MkYwMEFCRjZFQyAvKiBEb2NrQm90dG9tTGVnYWN5LnBkZiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBkZjsg
bmFtZSA9IERvY2tCb3R0b21MZWdhY3kucGRmOyBwYXRoID0gUmVzb3VyY2VzL0RvY2tCb3R0b21M
ZWdhY3kucGRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzhBRTc2MDE5OTJGNjJG
MDBBQkY2RUMgLyogRG9ja1JpZ2h0TGVnYWN5LnBkZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBkZjsgbmFtZSA9IERvY2tSaWdodExlZ2Fj
eS5wZGY7IHBhdGggPSBSZXNvdXJjZXMvRG9ja1JpZ2h0TGVnYWN5LnBkZjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUM4RTI1NkExMjcwREUzODAwQkM3QkQwIC8qIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFD
OEUyNTZCMTI3MERFMzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEUyODFFMTI3NUQx
NTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEUy
ODFGMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM4RTI4MzIxMjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDg4LDExICsyNDkxLDEzIEBACiAJCTFD
OEUyQTFDMTI3NzgzM0YwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQzhFMkEzMTEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9y
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDOEUyQTMyMTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3JNZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViSW5zcGVjdG9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yVUlNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JVSU1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBOEI5MzUxMjdDNzc0RTAwNTc2QzJCIC8qIFdl
Ykluc3BlY3RvclByb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViSW5zcGVjdG9yUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQThCOTQzMTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNw
ZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5TWVz
c2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCNzVDOTMxNzAxRTg4MDAw
OUY4MDlGIC8qIERvY2tSaWdodC5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7IG5hbWUgPSBEb2NrUmlnaHQucGRmOyBwYXRoID0g
UmVzb3VyY2VzL0RvY2tSaWdodC5wZGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
QkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JVSU1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQkJFNDlG
MTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCQzk0NUQxNjUxNUVEMjAwRDY4QUFFIC8qIERvY2tCb3R0
b20ucGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
aW1hZ2UucGRmOyBuYW1lID0gRG9ja0JvdHRvbS5wZGY7IHBhdGggPSBSZXNvdXJjZXMvRG9ja0Jv
dHRvbS5wZGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQzQxN0M5MTJDMDBDQ0Ew
MDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGV4dENoZWNrZXJDb21wbGV0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFGMDE4MTY5MTg1OERDMTUwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5G
cmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYlByb2Nlc3NQbHVn
SW5GcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTY2Miw4ICs1NjY3LDYg
QEAKIAkJCQlCQzFCRTFERTEyRDU0QTQxMDAwNEEyMjggLyogV2ViR2VvbG9jYXRpb25DbGllbnQu
aCAqLywKIAkJCQlCQzExMUE1OTExMkY0RkJCMDAzMzdCQUIgLyogV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcCAqLywKIAkJCQlCQzAzMkQ2RDEwRjQzNzhEMDA1OEMxNUEgLyogV2ViSW5zcGVjdG9yQ2xp
ZW50LmggKi8sCi0JCQkJMUM4RTI1NkIxMjcwREUzODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50LmNwcCAqLywKLQkJCQkxQzhFMjU2QTEyNzBERTM4MDBCQzdCRDAgLyogV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLywKIAkJCQkzMTA5OTk3MTE0NkM3NTlCMDAyOURF
QjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCAqLywKIAkJCQkzMTA5OTk2ODE0NkM3MUY1
MDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggKi8sCiAJCQkJNTEyMTI3QzExOTA4
MjM5QTAwREFGMzVDIC8qIFdlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwICovLApAQCAtNTcyMyw2
ICs1NzI2LDkgQEAKIAkJCQkxQzhFMjgxRjEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9y
LmNwcCAqLywKIAkJCQkxQzhFMjgxRTEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmgg
Ki8sCiAJCQkJMUM4RTJBMUMxMjc3ODMzRjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5tZXNzYWdl
cy5pbiAqLywKKwkJCQkxQzg5MUQ2MjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUku
Y3BwICovLAorCQkJCTFDODkxRDYzMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5o
ICovLAorCQkJCTFDODkxRDY0MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5tZXNz
YWdlcy5pbiAqLywKIAkJCQlCQzg1N0Y4NDEyQjgyRDBCMDBFREVCMkUgLyogV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuY3BwICovLAogCQkJCUJDODU3RjgzMTJCODJEMEIwMEVERUIyRSAvKiBX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oICovLAogCQkJCUJDOTYzRDZBMTEzREQxOTIwMDU3
NEJFMiAvKiBXZWJQYWdlLmNwcCAqLywKQEAgLTY0NzEsNyArNjQ3Nyw3IEBACiAJCQkJNTE5MkQ1
NzUxOTYxRkQwMzAwQ0QxOUFBIC8qIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0gKi8sCiAJ
CQkJMUFBRjI2MzcxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLmggKi8sCiAJCQkJMUFBRjI2MzYxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLm1tICovLAotCQkJCTFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JNYWMubW0gKi8sCisJCQkJMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdl
Ykluc3BlY3RvclVJTWFjLm1tICovLAogCQkJCUJDOTYzRDZEMTEzREQxQTUwMDU3NEJFMiAvKiBX
ZWJQYWdlTWFjLm1tICovLAogCQkJCTI5Q0Q1NUE4MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oICovLAogCQkJCTI5Q0Q1NUE5MTI4RTI5NEYwMDEz
M0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSAqLywKQEAgLTY4Mjcs
NiArNjgzMyw4IEBACiAJCQkJMUM4RTJBMzIxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rv
ck1lc3NhZ2VzLmggKi8sCiAJCQkJMUNBOEI5NDMxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3Bl
Y3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQ0E4Qjk0NDEyN0M4ODJBMDA1
NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oICovLAorCQkJCTFDQkJFNDlFMTlC
NjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJ
CQkJMUNCQkU0OUYxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCAq
LywKIAkJCQkzM0QzQTNDNDEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTMzRDNBM0M1MTMzOTYxNzkwMDcwOUJFNCAvKiBX
ZWJNZWRpYUNhY2hlTWFuYWdlck1lc3NhZ2VzLmggKi8sCiAJCQkJMzNEM0EzQzYxMzM5NjE3OTAw
NzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICov
LApAQCAtNzQzOCw2ICs3NDQ2LDcgQEAKIAkJCQkyREFDRTY0RTE4QURCRkYwMDBFNENBNzYgLyog
X1dLVGh1bWJuYWlsVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTU3OEI4MzEy
MDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjZBMjVGREQx
MkFEQzZDQzAwREM0MENDIC8qIFdlYkRhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMUM4OTFENjYxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGNjJBNzZCNzEyQjFCMjVGMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2Vy
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2MkE3NjVEMTJCMUFCQzMwMDA1RjFCNiAv
KiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2QUI1NDEx
OTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRvci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC03NDk0LDcgKzc1MDMsNiBAQAogCQkJCTFDOEUyODIwMTI3NUQxNTQwMEJDN0JEMCAv
KiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0NDMTY3MTg5MDZBQ0YwMDFF
NkVEOCAvKiBXS1dlYlZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDgyMTBGNDM3OEQw
MDU4QzE1QSAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTFDOEUy
NUE5MTI3MEUzQkMwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUM4RTJBMzYxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzhFMjgzNDEyNzVENzM4MDBCQzdCRDAgLyog
V2ViSW5zcGVjdG9yUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQThCOTQ2MTI3Qzg4MkEw
MDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAg
LTc3NjIsNiArNzc3MCw3IEBACiAJCQkJRjYzNDQ0NUQxMkE4ODVFOTAwMDYxMkQ4IC8qIFdLU2Vj
dXJpdHlPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUYwOEI4MTkyNjlFNkQwMEI2Mzkw
QyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM0MDc2MDQxMjRGRjAyNzAwNjhGMjBBIC8qIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkxQ0JCRTRBMTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVj
dG9yVUlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDQjRFNEMxOEJCRTA0NDAwMEZD
RkM5IC8qIFdLQ29udGVudFZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QTY0RTU3MThGMzhG
NDYwMEVCMzBGMSAvKiBfV0tGb3JtSW5wdXRTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
RjYwNEJBQTE4ODlGQkI4MDBFRTAzOTUgLyogV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0ludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTg4NjUsNiArODg3NCw3IEBACiAJCQkJMDBCOTY2MTkx
OEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUU1
QjdGQjExRTdBRUQyMDBCQTY3NjcgLyogTmV0c2NhcGVQbHVnaW5NYWMubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3QzM2MUQ3MjE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUM4OTFENjUxOUIxMjRGRjAwQkE3OUREIC8qIFdl
Ykluc3BlY3RvclVJLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNEE5QzU1MTJCODE2Q0YwMDhG
RTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRB
OUM5QTEyQjgyMUNEMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQkxQUE1ODg5MzExRUU3MDQwMDA2MUI4ODIgLyogTmV0c2NhcGVQbHVnaW5T
dHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04OTAzLDYgKzg5MTMsNyBAQAogCQkJCTFBMkQ4
NDM5MTI3RjY1RDUwMDFFQjk2MiAvKiBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUFGMDhBRDE5MjY5MzY3MDBCNjM5MEMgLyog
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ4MkE2
MTI3RjRFQUIwMDFFQjk2MiAvKiBOUE9iamVjdFByb3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTFDQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJEODJBODEyN0Y0RUFCMDAxRUI5NjIgLyogTlBS
ZW1vdGVPYmplY3RNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyMTYxQjExMUYzNzY2NDAw
OEFEMEY1IC8qIE5QUnVudGltZU9iamVjdE1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTIx
NjJCMDExRjM4OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtOTE2Miw4ICs5MTczLDcgQEAKIAkJCQlCQ0NGNkFCQzEyQzkxRUY5MDA4RjlDMzUg
LyogV2ViSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4RTI4MjExMjc1RDE1NDAwQkM3
QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzExMUE2MDExMkY0
RkJCMDAzMzdCQUIgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTFDOEUyNUE4MTI3MEUzQkIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQkxQ0E4Qjk1NDEyN0M4OTE1MDA1NzZDMkIgLyogV2ViSW5z
cGVjdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUNBOEI5NTQxMjdDODkxNTAwNTc2QzJC
IC8qIFdlYkluc3BlY3RvclVJTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4RTJBMzUxMjc3
ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQzhFMjgzNTEyNzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHku
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBOEI5MzYxMjdDNzc0RTAwNTc2QzJCIC8qIFdlYklu
c3BlY3RvclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5jcHAKaW5kZXggNTAxZDQxY2Q5MTQ3NmI2Mjc2OTZmMzk4NDU5OWJlNjM4MDdmZmY1Mi4uODU5
MzU4YmNjY2IxODI2YmU5MzJmZDFjNTIwNDZlZmMyYzc4NzY4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtODQsMjAgKzg0LDIxIEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojpp
bnNwZWN0b3JEZXN0cm95ZWQoKQogCiBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRy
b2xsZXIqIGNvbnRyb2xsZXIpCiB7Ci0gICAgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSA9IGNvbnRy
b2xsZXItPmlzVW5kZXJUZXN0KCkgPyBtX3BhZ2UtPmluc3BlY3RvcigpLT5jcmVhdGVJbnNwZWN0
b3JQYWdlRm9yVGVzdCgpIDogbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y3JlYXRlSW5zcGVjdG9yUGFn
ZSgpOwotICAgIEFTU0VSVF9VTlVTRUQoaW5zcGVjdG9yUGFnZSwgaW5zcGVjdG9yUGFnZSk7Ci0g
ICAgcmV0dXJuIHRoaXM7CisgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y3JlYXRlSW5zcGVjdG9y
UGFnZShjb250cm9sbGVyLT5pc1VuZGVyVGVzdCgpKTsKKworICAgIHJldHVybiBtX3BhZ2UtPmlu
c3BlY3RvcigpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJbnNwZWN0b3JG
cm9udGVuZCgpCiB7CiAgICAgaWYgKG1fcGFnZS0+aW5zcGVjdG9yKCkpCi0gICAgICAgIG1fcGFn
ZS0+aW5zcGVjdG9yKCktPmRpZENsb3NlKCk7CisgICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCkt
PmNsb3NlRnJvbnRlbmQoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmJyaW5nRnJv
bnRlbmRUb0Zyb250KCkKIHsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5icmluZ1RvRnJvbnQo
KTsKKyAgICBpZiAobV9wYWdlLT5pbnNwZWN0b3IoKSkKKyAgICAgICAgbV9wYWdlLT5pbnNwZWN0
b3IoKS0+YnJpbmdUb0Zyb250KCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRS
ZXNpemVNYWluRnJhbWUoRnJhbWUqKQpAQCAtMTk3LDM0ICsxOTgsNiBAQCB2b2lkIFdlYkluc3Bl
Y3RvckNsaWVudDo6ZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQpCiB9CiAjZW5k
aWYKIAotYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSBtX3Bh
Z2UtPmluc3BlY3RvcigpOwotICAgIGlmICghaW5zcGVjdG9yKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAgICBpZiAoaW5zcGVjdG9yLT5o
YXNSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpKSB7Ci0gICAgICAgIGluc3BlY3Rvci0+c2VuZE1l
c3NhZ2VUb1JlbW90ZUZyb250ZW5kKG1lc3NhZ2UpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0jZW5kaWYKLQotICAgIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UgPSBpbnNwZWN0b3ItPmlu
c3BlY3RvclBhZ2UoKTsKLSAgICBpZiAoaW5zcGVjdG9yUGFnZSkKLSAgICAgICAgcmV0dXJuIGRv
RGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2UoaW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKSwg
bWVzc2FnZSk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgV2ViSW5zcGVjdG9yQ2xp
ZW50OjpzdXBwb3J0c0ZyYW1lSW5zdHJ1bWVudGF0aW9uKCkKLXsKLSNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpCi0gICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpwYWdlT3ZlcmxheURlc3Ryb3llZChQYWdl
T3ZlcmxheSopCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA3MDMzYmRlY2Ew
ODI2MDU2YTgwY2QxMDlhNDRmODJhMzAxOTlkZTZiLi43OThjYWM3YTgzYzA2N2EyMzNhNTk5MGE5
ZDRmNWZhNDE0MGIzZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTQ1LDIyICs0
NSwyMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiBjbGFzcyBSZXBhaW50
SW5kaWNhdG9yTGF5ZXJDbGllbnQ7CiAKLWNsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwsIHByaXZhdGUgUGFnZU92ZXJsYXk6OkNsaWVudCB7CitjbGFzcyBXZWJJbnNw
ZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwcml2YXRlIFBh
Z2VPdmVybGF5OjpDbGllbnQgewogZnJpZW5kIGNsYXNzIFJlcGFpbnRJbmRpY2F0b3JMYXllckNs
aWVudDsKIHB1YmxpYzoKICAgICBXZWJJbnNwZWN0b3JDbGllbnQoV2ViUGFnZSopOwogICAgIHZp
cnR1YWwgfldlYkluc3BlY3RvckNsaWVudCgpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9p
ZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAgICAvLyBXZWJDb3JlOjpJbnNwZWN0
b3JDbGllbnQKKyAgICB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYnJp
bmdGcm9udGVuZFRvRnJvbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzaXpl
TWFpbkZyYW1lKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlciopIG92ZXJyaWRlOworICAgIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVu
ZCgpIG92ZXJyaWRlOworICAgIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJlc2l6ZU1haW5GcmFtZShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBoaWRlSGlnaGxpZ2h0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBoaWdobGlnaHQoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGhpZGVIaWdobGlnaHQoKSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKElP
UykKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0luc3BlY3RvckluZGljYXRpb24oKSBvdmVycmlkZTsK
QEAgLTcyLDEwICs3Myw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG92ZXJyaWRlc1No
b3dQYWludFJlY3RzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1
YWwgdm9pZCBzaG93UGFpbnRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZyYW1lSW5zdHJ1bWVudGF0
aW9uKCk7Ci0KICAgICAvLyBQYWdlT3ZlcmxheTo6Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHBh
Z2VPdmVybGF5RGVzdHJveWVkKFBhZ2VPdmVybGF5Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSopIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDQzZGFlMTBiM2QwYzViNzdjMTQ3OWY1ZmY0YjIyODhhNGI2YjQ0
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Lmgi
Ci0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotCi0jaW5jbHVkZSAiV2ViSW5zcGVjdG9yLmgiCi0j
aW5jbHVkZSAiV2ViUGFnZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxl
ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudEJhc2UuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViUGFnZSogcGFn
ZSwgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSkKLSAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwoJnBhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgaW5zcGVjdG9y
UGFnZS0+Y29yZVBhZ2UoKSwgc3RkOjptYWtlX3VuaXF1ZTxTZXR0aW5ncz4oKSkKLSAgICAsIG1f
cGFnZShwYWdlKQotewotfQotCi1TdHJpbmcgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Omxv
Y2FsaXplZFN0cmluZ3NVUkwoKQotewotICAgIHJldHVybiBtX3BhZ2UtPmluc3BlY3RvcigpLT5s
b2NhbGl6ZWRTdHJpbmdzVVJMKCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OmJyaW5nVG9Gcm9udCgpCi17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YnJpbmdUb0Zy
b250KCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93
KCkKLXsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNj
b25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNw
ZWN0b3JEZXN0cm95ZWQpOwotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmRpZENsb3NlKCk7Ci19
Ci0KLWJvb2wgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNhblNhdmUoKQotewotICAgIHJl
dHVybiBtX3BhZ2UtPmluc3BlY3RvcigpLT5jYW5TYXZlKCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCi17Ci0g
ICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+c2F2ZShmaWxlbmFtZSwgY29udGVudCwgYmFzZTY0RW5j
b2RlZCwgZm9yY2VTYXZlQXMpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
OjphcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KQot
ewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmFwcGVuZChmaWxlbmFtZSwgY29udGVudCk7Ci19
Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmF0dGFjaFdpbmRvdyhEb2NrU2lk
ZSBkb2NrU2lkZSkKLXsKLSAgICBzd2l0Y2ggKGRvY2tTaWRlKSB7Ci0gICAgY2FzZSBJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU6OlVuZG9ja2VkOgotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6RG9ja1NpZGU6OkJvdHRvbToKLSAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YXR0
YWNoQm90dG9tKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OkRvY2tTaWRlOjpSaWdodDoKLSAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YXR0
YWNoUmlnaHQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpkZXRhY2hXaW5kb3coKQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9y
KCktPmRldGFjaCgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRB
dHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCi17Ci0gICAgbV9wYWdlLT5pbnNw
ZWN0b3IoKS0+c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVpZ2h0KTsKLX0KLQotdm9pZCBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3
aWR0aCkKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5zZXRBdHRhY2hlZFdpbmRvd1dpZHRo
KHdpZHRoKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0VG9vbGJh
ckhlaWdodCh1bnNpZ25lZCBoZWlnaHQpCi17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+c2V0
VG9vbGJhckhlaWdodChoZWlnaHQpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50OjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQotewotICAg
IG1fcGFnZS0+aW5zcGVjdG9yKCktPmluc3BlY3RlZFVSTENoYW5nZWQodXJsU3RyaW5nKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNw
cAppbmRleCA1NjEyOTdhMzA3NTBjZGVmMDM5NzBhN2EwZmRmOWY2OWUyYWNjOGZmLi40Nzc0MzQx
OTg4M2MzMGVmNWNhOTE3YjBjN2VjOTdhM2JlNjAyNmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMTE3ICsyNyw4MiBA
QAogI2luY2x1ZGUgIldlYkluc3BlY3Rvci5oIgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKKwog
I2luY2x1ZGUgIldlYkZyYW1lLmgiCi0jaW5jbHVkZSAiV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYklu
c3BlY3RvclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgotI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DaHJv
bWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZUxvYWRSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JQYWdl
QWdlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRCYXNlLmg+Ci0jaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2lu
ZG93RmVhdHVyZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBjb25z
dCBmbG9hdCBtaW5pbXVtQXR0YWNoZWRIZWlnaHQgPSAyNTA7CitzdGF0aWMgY29uc3QgZmxvYXQg
bWF4aW11bUF0dGFjaGVkSGVpZ2h0UmF0aW8gPSAwLjc1Oworc3RhdGljIGNvbnN0IGZsb2F0IG1p
bmltdW1BdHRhY2hlZFdpZHRoID0gNzUwOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1Jl
ZlB0cjxXZWJJbnNwZWN0b3I+IFdlYkluc3BlY3Rvcjo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UsIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQorUGFzc1JlZlB0cjxXZWJJ
bnNwZWN0b3I+IFdlYkluc3BlY3Rvcjo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJJbnNwZWN0b3IocGFnZSwgZnJvbnRlbmRDaGFubmVsKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJJbnNwZWN0b3IocGFnZSkpOwogfQogCi1XZWJJbnNw
ZWN0b3I6OldlYkluc3BlY3RvcihXZWJQYWdlKiBwYWdlLCBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCkKK1dlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlBhZ2Uq
IHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKLSAgICAsIG1faW5zcGVjdG9yUGFnZShudWxscHRy
KQotICAgICwgbV9mcm9udGVuZENsaWVudChudWxscHRyKQotICAgICwgbV9mcm9udGVuZENoYW5u
ZWwoZnJvbnRlbmRDaGFubmVsKQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICwgbV9oYXNMb2Nh
bGl6ZWRTdHJpbmdzVVJMKGZhbHNlKQotI2VuZGlmCi0jaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJW
RVIpCi0gICAgLCBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKGZhbHNlKQotI2VuZGlmCisgICAg
LCBtX2F0dGFjaGVkKGZhbHNlKQorICAgICwgbV9wcmV2aW91c0NhbkF0dGFjaChmYWxzZSkKIHsK
IH0KIAogLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yQ2xpZW50Ci1XZWJQYWdlKiBXZWJJbnNw
ZWN0b3I6OmNyZWF0ZUluc3BlY3RvclBhZ2UoKQordm9pZCBXZWJJbnNwZWN0b3I6OmNyZWF0ZUlu
c3BlY3RvclBhZ2UoYm9vbCB1bmRlclRlc3QpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgQVNTRVJUKCFtX2luc3BlY3RvclBhZ2UpOwotICAgIEFT
U0VSVCghbV9mcm9udGVuZENsaWVudCk7Ci0KLSAgICB1aW50NjRfdCBpbnNwZWN0b3JQYWdlSUQg
PSAwOwotICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIGlm
ICghV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpDcmVhdGVJbnNwZWN0b3JQYWdlKCksCi0g
ICAgICAgICAgICBNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBh
Z2U6OlJlcGx5KGluc3BlY3RvclBhZ2VJRCwgcGFyYW1ldGVycyksCi0gICAgICAgICAgICBtX3Bh
Z2UtPnBhZ2VJRCgpLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzOjptYXgoKSkpIHsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWlu
c3BlY3RvclBhZ2VJRCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisjaWYgT1MoREFSV0lOKQor
ICAgIG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7CisgICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1h
Y2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7
CisKKyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZlcihs
aXN0ZW5pbmdQb3J0KTsKKyAgICBJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkNsaWVudFBvcnQo
bGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOworI2VsaWYgVVNFKFVOSVhf
RE9NQUlOX1NPQ0tFVFMpCisgICAgSVBDOjpDb25uZWN0aW9uOjpTb2NrZXRQYWlyIHNvY2tldFBh
aXIgPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOworICAgIElQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmVyKHNvY2tldFBhaXIu
c2VydmVyKTsKKyAgICBJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkNsaWVudFBvcnQoc29ja2V0
UGFpci5jbGllbnQpOworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybjsK
KyNlbmRpZgogCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY3JlYXRlV2ViUGFnZShpbnNwZWN0
b3JQYWdlSUQsIHBhcmFtZXRlcnMpOwotICAgIG1faW5zcGVjdG9yUGFnZSA9IFdlYlByb2Nlc3M6
OnNoYXJlZCgpLndlYlBhZ2UoaW5zcGVjdG9yUGFnZUlEKTsKLSAgICBBU1NFUlQobV9pbnNwZWN0
b3JQYWdlKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3Jl
YXRlU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmVyLCB0aGlzLCBSdW5Mb29wOjpt
YWluKCkpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5vcGVuKCk7CiAKLSAgICBhdXRvIGZy
b250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dD4obV9wYWdlLCBtX2luc3BlY3RvclBhZ2UpOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBmcm9u
dGVuZENsaWVudC5nZXQoKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCktPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChXVEY6Om1vdmUoZnJv
bnRlbmRDbGllbnQpKTsKLSAgICByZXR1cm4gbV9pbnNwZWN0b3JQYWdlOworICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpDcmVhdGVJbnNwZWN0b3JQYWdlKGNvbm5lY3Rpb25DbGllbnRQb3J0
LCBjYW5BdHRhY2hXaW5kb3coKSwgdW5kZXJUZXN0KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAK
LVdlYlBhZ2UqIFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QoKQordm9p
ZCBXZWJJbnNwZWN0b3I6OmNsb3NlRnJvbnRlbmQoKQogewotICAgIGlmICghbV9wYWdlKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JQYWdlKTsKLSAg
ICBBU1NFUlQoIW1fZnJvbnRlbmRDbGllbnQpOwotCi0gICAgdWludDY0X3QgaW5zcGVjdG9yUGFn
ZUlEID0gMDsKLSAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6Q3JlYXRlSW5zcGVjdG9yUGFnZUZv
clRlc3QoKSwKLSAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6Q3JlYXRl
SW5zcGVjdG9yUGFnZUZvclRlc3Q6OlJlcGx5KGluc3BlY3RvclBhZ2VJRCwgcGFyYW1ldGVycyks
Ci0gICAgICAgICAgICBtX3BhZ2UtPnBhZ2VJRCgpLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRz
OjptYXgoKSkpIHsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgaWYgKCFp
bnNwZWN0b3JQYWdlSUQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkuY3JlYXRlV2ViUGFnZShpbnNwZWN0b3JQYWdlSUQsIHBhcmFtZXRlcnMpOwot
ICAgIG1faW5zcGVjdG9yUGFnZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYlBhZ2UoaW5zcGVj
dG9yUGFnZUlEKTsKLSAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKLQotICAgIGF1dG8gZnJv
bnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
PihtX3BhZ2UsIG1faW5zcGVjdG9yUGFnZSk7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IGZyb250
ZW5kQ2xpZW50LmdldCgpOwotICAgIG1faW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9u
dGVuZENsaWVudCkpOwotICAgIHJldHVybiBtX2luc3BlY3RvclBhZ2U7Ci19CisgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCksIG1fcGFnZS0+cGFnZUlEKCkpOwogCi12b2lk
IFdlYkluc3BlY3Rvcjo6ZGVzdHJveUluc3BlY3RvclBhZ2UoKQotewotICAgIG1faW5zcGVjdG9y
UGFnZSA9IG51bGxwdHI7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IG51bGxwdHI7Ci0gICAgbV9m
cm9udGVuZENoYW5uZWwgPSBudWxscHRyOwotfQorICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5p
bnZhbGlkYXRlKCk7CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24gPSBudWxscHRyOwogCi0vLyBD
YWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudAotdm9pZCBXZWJJbnNwZWN0b3I6
OmRpZENsb3NlKCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGlkQ2xvc2UoKSwg
bV9wYWdlLT5wYWdlSUQoKSk7Ci0gICAgZGVzdHJveUluc3BlY3RvclBhZ2UoKTsKKyAgICBtX2F0
dGFjaGVkID0gZmFsc2U7CisgICAgbV9wcmV2aW91c0NhbkF0dGFjaCA9IGZhbHNlOwogfQogCiB2
b2lkIFdlYkluc3BlY3Rvcjo6YnJpbmdUb0Zyb250KCkKQEAgLTE0NSw1MSArMTEwLDYgQEAgdm9p
ZCBXZWJJbnNwZWN0b3I6OmJyaW5nVG9Gcm9udCgpCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6OkJyaW5nVG9Gcm9udCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBXZWJJbnNw
ZWN0b3I6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCi17Ci0g
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Okluc3BlY3RlZFVSTENoYW5nZWQodXJsU3RyaW5n
KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzYXZlKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNv
ZGVkLCBib29sIGZvcmNlU2F2ZUFzKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpT
YXZlKGZpbGVuYW1lLCBjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBmb3JjZVNhdmVBcyksIG1fcGFn
ZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6YXBwZW5kKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkKLXsKLSAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JQcm94eTo6QXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KSwgbV9wYWdlLT5wYWdlSUQoKSk7
Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjphdHRhY2hCb3R0b20oKQotewotICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpBdHRhY2hCb3R0b20oKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0K
LXZvaWQgV2ViSW5zcGVjdG9yOjphdHRhY2hSaWdodCgpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OkF0dGFjaFJpZ2h0KCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdl
Ykluc3BlY3Rvcjo6ZGV0YWNoKCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGV0
YWNoKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6c2V0QXR0
YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQotewotICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OnNldEF0dGFjaGVkV2luZG93V2lkdGgodW5z
aWduZWQgd2lkdGgpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0dGFjaGVk
V2luZG93V2lkdGgod2lkdGgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNw
ZWN0b3I6OnNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQotewotICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpTZXRUb29sYmFySGVpZ2h0KGhlaWdodCksIG1fcGFnZS0+cGFnZUlE
KCkpOwotfQotCiAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yIG1lc3NhZ2VzCiB2b2lkIFdlYklu
c3BlY3Rvcjo6c2hvdygpCiB7CkBAIC0yMDEsMzQgKzEyMSwxNyBAQCB2b2lkIFdlYkluc3BlY3Rv
cjo6Y2xvc2UoKQogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LmNsb3NlKCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpkaWRTYXZlKGNvbnN0IFN0cmluZyYg
dXJsKQotewotICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOwotICAgIG1faW5zcGVjdG9yUGFn
ZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChtYWtlU3Ry
aW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChcIiIsIHVybCwgIlwiKSIpKTsKLX0K
LQotdm9pZCBXZWJJbnNwZWN0b3I6OmRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAg
ICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQYWdl
KCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQobWFrZVN0cmluZygiSW5zcGVj
dG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRUb1VSTChcIiIsIHVybCwgIlwiKSIpKTsKLX0KLQotdm9p
ZCBXZWJJbnNwZWN0b3I6OmF0dGFjaGVkQm90dG9tKCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpvcGVu
SW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgaWYgKG1fZnJvbnRlbmRD
bGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldEF0dGFjaGVkV2luZG93KEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6Qm90dG9tKTsKLX0KKyAgICBQYWdlKiBpbnNw
ZWN0ZWRQYWdlID0gbV9wYWdlLT5jb3JlUGFnZSgpOworICAgIEZyYW1lJiBpbnNwZWN0ZWRNYWlu
RnJhbWUgPSBpbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKTsKKyAgICBGcmFtZUxvYWRSZXF1ZXN0
IHJlcXVlc3QoaW5zcGVjdGVkTWFpbkZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCks
IFJlc291cmNlUmVxdWVzdCh1cmxTdHJpbmcpLCAiX2JsYW5rIik7CiAKLXZvaWQgV2ViSW5zcGVj
dG9yOjphdHRhY2hlZFJpZ2h0KCkKLXsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAg
ICAgbV9mcm9udGVuZENsaWVudC0+c2V0QXR0YWNoZWRXaW5kb3coSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OkRvY2tTaWRlOjpSaWdodCk7Ci19CisgICAgUGFnZSogbmV3UGFnZSA9IGluc3BlY3Rl
ZFBhZ2UtPmNocm9tZSgpLmNyZWF0ZVdpbmRvdygmaW5zcGVjdGVkTWFpbkZyYW1lLCByZXF1ZXN0
LCBXaW5kb3dGZWF0dXJlcygpLCBOYXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCksIE5hdmlnYXRpb25UeXBlTGlua0NsaWNrZWQpKTsKKyAgICBpZiAoIW5ld1BhZ2UpCisg
ICAgICAgIHJldHVybjsKIAotdm9pZCBXZWJJbnNwZWN0b3I6OmRldGFjaGVkKCkKLXsKLSAgICBp
ZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0QXR0YWNo
ZWRXaW5kb3coSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpVbmRvY2tlZCk7Cisg
ICAgbmV3UGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkubG9hZChyZXF1ZXN0KTsKIH0KIAogdm9p
ZCBXZWJJbnNwZWN0b3I6OmV2YWx1YXRlU2NyaXB0Rm9yVGVzdChjb25zdCBTdHJpbmcmIHNjcmlw
dCkKQEAgLTIzOSwxMDggKzE0Miw5NCBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6ZXZhbHVhdGVTY3Jp
cHRGb3JUZXN0KGNvbnN0IFN0cmluZyYgc2NyaXB0KQogdm9pZCBXZWJJbnNwZWN0b3I6OnNob3dD
b25zb2xlKCkKIHsKICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIo
KS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRD
bGllbnQtPnNob3dDb25zb2xlKCk7CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclVJOjpTaG93Q29uc29sZSgpLCAwKTsKIH0KIAogdm9pZCBXZWJJ
bnNwZWN0b3I6OnNob3dSZXNvdXJjZXMoKQogewogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAg
ICAgICAgbV9mcm9udGVuZENsaWVudC0+c2hvd1Jlc291cmNlcygpOworICAgIG1fZnJvbnRlbmRD
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2hvd1Jlc291cmNlcygp
LCAwKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlEKQordm9pZCBXZWJJbnNwZWN0b3I6OnNob3dNYWluUmVzb3VyY2VGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlkZW50aWZpZXIpCiB7Ci0gICAgV2ViRnJhbWUqIGZyYW1lID0g
V2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJRCk7CisgICAgV2ViRnJhbWUqIGZy
YW1lID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJZGVudGlmaWVyKTsKICAg
ICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3BhZ2UtPmNvcmVQYWdlKCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQp
Ci0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShmcmFt
ZS0+Y29yZUZyYW1lKCkpOwotfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6c3RhcnRKYXZhU2NyaXB0
RGVidWdnaW5nKCkKLXsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRl
bmRDbGllbnQtPnNldERlYnVnZ2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgU3RyaW5nIGluc3BlY3Rv
ckZyYW1lSWRlbnRpZmllciA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLnBhZ2VBZ2VudCgpLT5mcmFtZUlkKGZyYW1lLT5jb3JlRnJhbWUoKSk7CisgICAgbV9mcm9u
dGVuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTaG93TWFpblJl
c291cmNlRm9yRnJhbWUoaW5zcGVjdG9yRnJhbWVJZGVudGlmaWVyKSwgMCk7CiB9CiAKLXZvaWQg
V2ViSW5zcGVjdG9yOjpzdG9wSmF2YVNjcmlwdERlYnVnZ2luZygpCit2b2lkIFdlYkluc3BlY3Rv
cjo6c3RhcnRQYWdlUHJvZmlsaW5nKCkKIHsKICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAg
ICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldERlYnVnZ2luZ0VuYWJsZWQoZmFsc2UpOwotfQotCi12
b2lkIFdlYkluc3BlY3Rvcjo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCkKLXsK
LSAgICAvLyBObyBsb25nZXIgc3VwcG9ydGVkLgorICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U3RhcnRQYWdlUHJvZmlsaW5nKCksIDApOwog
fQogCi12b2lkIFdlYkluc3BlY3Rvcjo6c3RhcnRKYXZhU2NyaXB0UHJvZmlsaW5nKCkKK3ZvaWQg
V2ViSW5zcGVjdG9yOjpzdG9wUGFnZVByb2ZpbGluZygpCiB7Ci0gICAgLy8gTm8gbG9uZ2VyIHN1
cHBvcnRlZC4KKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5z
aG93KCk7CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJOjpTdG9wUGFnZVByb2ZpbGluZygpLCAwKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6
OnN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCkKK2Jvb2wgV2ViSW5zcGVjdG9yOjpjYW5BdHRhY2hX
aW5kb3coKQogewotICAgIC8vIE5vIGxvbmdlciBzdXBwb3J0ZWQuCi19CisgICAgLy8gRG9uJ3Qg
YWxsb3cgYXR0YWNoaW5nIHRvIGFub3RoZXIgaW5zcGVjdG9yIC0tIHR3byBpbnNwZWN0b3JzIGlu
IG9uZSB3aW5kb3cgaXMgdG9vIG11Y2ghCisgICAgaWYgKG1fcGFnZS0+aXNJbnNwZWN0b3JQYWdl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotdm9pZCBXZWJJbnNwZWN0b3I6OnN0YXJ0UGFn
ZVByb2ZpbGluZygpCi17Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250
ZW5kQ2xpZW50LT5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQodHJ1ZSk7Ci19CisgICAgLy8g
SWYgd2UgYXJlIGFscmVhZHkgYXR0YWNoZWQsIGFsbG93IGF0dGFjaGluZyBhZ2FpbiB0byBhbGxv
dyBzd2l0Y2hpbmcgc2lkZXMuCisgICAgaWYgKG1fYXR0YWNoZWQpCisgICAgICAgIHJldHVybiB0
cnVlOwogCi12b2lkIFdlYkluc3BlY3Rvcjo6c3RvcFBhZ2VQcm9maWxpbmcoKQotewotICAgIG1f
cGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAo
bV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0VGltZWxpbmVQ
cm9maWxpbmdFbmFibGVkKGZhbHNlKTsKKyAgICAvLyBEb24ndCBhbGxvdyB0aGUgYXR0YWNoIGlm
IHRoZSB3aW5kb3cgd291bGQgYmUgdG9vIHNtYWxsIHRvIGFjY29tbW9kYXRlIHRoZSBtaW5pbXVt
IGluc3BlY3RvciBzaXplLgorICAgIHVuc2lnbmVkIGluc3BlY3RlZFBhZ2VIZWlnaHQgPSBtX3Bh
Z2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZUhlaWdodCgpOworICAg
IHVuc2lnbmVkIGluc3BlY3RlZFBhZ2VXaWR0aCA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZy
YW1lKCkudmlldygpLT52aXNpYmxlV2lkdGgoKTsKKyAgICB1bnNpZ25lZCBtYXhpbXVtQXR0YWNo
ZWRIZWlnaHQgPSBpbnNwZWN0ZWRQYWdlSGVpZ2h0ICogbWF4aW11bUF0dGFjaGVkSGVpZ2h0UmF0
aW87CisgICAgcmV0dXJuIG1pbmltdW1BdHRhY2hlZEhlaWdodCA8PSBtYXhpbXVtQXR0YWNoZWRI
ZWlnaHQgJiYgbWluaW11bUF0dGFjaGVkV2lkdGggPD0gaW5zcGVjdGVkUGFnZVdpZHRoOwogfQog
CiB2b2lkIFdlYkluc3BlY3Rvcjo6dXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgpCiB7Ci0gICAg
aWYgKCFtX2Zyb250ZW5kQ2xpZW50KQorICAgIGlmIChtX2F0dGFjaGVkKQorICAgICAgICByZXR1
cm47CisKKyAgICBib29sIGNhbkF0dGFjaFdpbmRvdyA9IHRoaXMtPmNhbkF0dGFjaFdpbmRvdygp
OworICAgIGlmIChtX3ByZXZpb3VzQ2FuQXR0YWNoID09IGNhbkF0dGFjaFdpbmRvdykKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYm9vbCBjYW5BdHRhY2hXaW5kb3cgPSBtX2Zyb250ZW5kQ2xpZW50
LT5jYW5BdHRhY2hXaW5kb3coKTsKKyAgICBtX3ByZXZpb3VzQ2FuQXR0YWNoID0gY2FuQXR0YWNo
V2luZG93OworCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaEF2YWlsYWJpbGl0
eUNoYW5nZWQoY2FuQXR0YWNoV2luZG93KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0gICAgbV9mcm9u
dGVuZENsaWVudC0+c2V0RG9ja2luZ1VuYXZhaWxhYmxlKCFjYW5BdHRhY2hXaW5kb3cpOwogfQog
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi12b2lkIFdlYkluc3BlY3Rvcjo6c2VuZE1l
c3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgV2ViSW5z
cGVjdG9yOjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0g
ICAgQVNTRVJUKG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOwotICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpTZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQobWVzc2FnZSksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlKTsKIH0KIAotdm9pZCBXZWJJbnNw
ZWN0b3I6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCitib29sIFdlYkluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKIHsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKS5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CisjaWYgIUVOQUJM
RShJTlNQRUNUT1JfU0VSVkVSKQorICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6U2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpLCAwKTsK
KyNlbHNlCisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNlbmRNZXNzYWdlVG9SZW1vdGVG
cm9udGVuZChtZXNzYWdlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisjZW5kaWYKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQogdm9pZCBXZWJJbnNwZWN0
b3I6OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkKIHsKLSAgICBBU1NFUlQoIW1fcmVtb3RlRnJv
bnRlbmRDb25uZWN0ZWQpOwotICAgIC8vIFN3aXRjaGluZyBiZXR3ZWVuIGluLXByb2Nlc3MgYW5k
IHJlbW90ZSBpbnNwZWN0b3JzIGlzbid0IHN1cHBvcnRlZCB5ZXQuCi0gICAgQVNTRVJUKCFtX2lu
c3BlY3RvclBhZ2UpOwotICAgIAotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZChtX2Zyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9yZW1v
dGVGcm9udGVuZENvbm5lY3RlZCA9IHRydWU7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKHRoaXMpOwogfQogCiB2b2lkIFdlYklu
c3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKQogewotICAgIEFTU0VSVChtX3Jl
bW90ZUZyb250ZW5kQ29ubmVjdGVkKTsKICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNj
b25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwotICAgIG1fcmVtb3RlRnJvbnRlbmRD
b25uZWN0ZWQgPSBmYWxzZTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKaW5kZXggYzkzYmNiM2ZjYWZlMTE1ODJkNjA0
ZmRjYWQyNzJjNGY5MjU4YzAxNi4uM2MxOWI5ZTg1YjJmYWNhZWQzNWYzYTRkMGZlYmVkZjgwYTQz
NDJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzAsMTA2ICszMCw4MCBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRm9yd2FyZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiBjbGFzcyBXZWJQYWdl
OwogCi1jbGFzcyBXZWJJbnNwZWN0b3IgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2Jq
ZWN0OjpUeXBlOjpCdW5kbGVJbnNwZWN0b3I+IHsKK2NsYXNzIFdlYkluc3BlY3RvciA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUluc3BlY3Rvcj4sIHB1
YmxpYyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW5zcGVj
dG9yPiBjcmVhdGUoV2ViUGFnZSosIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCop
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gY3JlYXRlKFdlYlBhZ2UqKTsK
IAogICAgIFdlYlBhZ2UqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KLSAgICBXZWJQ
YWdlKiBpbnNwZWN0b3JQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JQYWdlOyB9CisK
KyAgICB2b2lkIHVwZGF0ZURvY2tpbmdBdmFpbGFiaWxpdHkoKTsKKworICAgIHZpcnR1YWwgYm9v
bCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBvdmVycmlkZTsK
IAogICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJJbnNwZWN0b3JNZXNzYWdlUmVj
ZWl2ZXIuY3BwCi0gICAgdm9pZCBkaWRSZWNlaXZlV2ViSW5zcGVjdG9yTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisKKyAgICAvLyBJ
UEM6OkNvbm5lY3Rpb246OkNsaWVudAorICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9u
KikgeyBjbG9zZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uKiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIHsgY2xvc2UoKTsgfQogCiAgICAgLy8gQ2Fs
bGVkIGJ5IFdlYkluc3BlY3RvciBtZXNzYWdlcworICAgIHZvaWQgY29ubmVjdGlvbkVzdGFibGlz
aGVkKCk7CisKICAgICB2b2lkIHNob3coKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKLSAgICB2b2lk
IGRpZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwpOwotICAgIHZvaWQgZGlkQXBwZW5kKGNvbnN0IFN0
cmluZyYgdXJsKTsKKyAgICB2b2lkIG9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybFN0cmlu
Zyk7CisKKyAgICB2b2lkIGNhbkF0dGFjaFdpbmRvdyhib29sJiByZXN1bHQpOworCisgICAgdm9p
ZCBzaG93Q29uc29sZSgpOworICAgIHZvaWQgc2hvd1Jlc291cmNlcygpOwogCi0gICAgdm9pZCBh
dHRhY2hlZEJvdHRvbSgpOwotICAgIHZvaWQgYXR0YWNoZWRSaWdodCgpOwotICAgIHZvaWQgZGV0
YWNoZWQoKTsKKyAgICB2b2lkIHNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlkZW50aWZpZXIpOworCisgICAgdm9pZCBzZXRBdHRhY2hlZChib29sIGF0dGFjaGVkKSB7IG1f
YXR0YWNoZWQgPSBhdHRhY2hlZDsgfQogCiAgICAgdm9pZCBldmFsdWF0ZVNjcmlwdEZvclRlc3Qo
Y29uc3QgU3RyaW5nJiBzY3JpcHQpOwogCi0gICAgdm9pZCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5n
RW5hYmxlZChib29sKTsKICAgICB2b2lkIHN0YXJ0UGFnZVByb2ZpbGluZygpOwogICAgIHZvaWQg
c3RvcFBhZ2VQcm9maWxpbmcoKTsKIAorICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29u
c3QgU3RyaW5nJik7CisKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAgICBib29sIGhh
c1JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGVGcm9udGVu
ZENvbm5lY3RlZDsgfQotICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2b2lkIHJlbW90ZUZyb250ZW5kQ29u
bmVjdGVkKCk7CiAgICAgdm9pZCByZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpOwogI2VuZGlm
CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsKLSAgICBm
cmllbmQgY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiAKLSAgICBleHBsaWNpdCBX
ZWJJbnNwZWN0b3IoV2ViUGFnZSosIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCop
OworICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvcihXZWJQYWdlKik7CisKKyAgICBib29sIGNhbkF0
dGFjaFdpbmRvdygpOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yQ2xpZW50Ci0g
ICAgV2ViUGFnZSogY3JlYXRlSW5zcGVjdG9yUGFnZSgpOwotICAgIFdlYlBhZ2UqIGNyZWF0ZUlu
c3BlY3RvclBhZ2VGb3JUZXN0KCk7Ci0gICAgdm9pZCBkZXN0cm95SW5zcGVjdG9yUGFnZSgpOwor
ICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZShib29sIHVuZGVyVGVzdCk7CiAKLSAgICAvLyBD
YWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudAotICAgIHZvaWQgZGlkQ2xvc2Uo
KTsKKyAgICB2b2lkIGNsb3NlRnJvbnRlbmQoKTsKICAgICB2b2lkIGJyaW5nVG9Gcm9udCgpOwot
ICAgIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKTsKLQotICAgIGJvb2wg
Y2FuU2F2ZSgpIGNvbnN0OwotICAgIHZvaWQgc2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVB
cyk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50KTsKLQotICAgIHZvaWQgYXR0YWNoQm90dG9tKCk7Ci0gICAgdm9pZCBhdHRhY2hS
aWdodCgpOwotICAgIHZvaWQgZGV0YWNoKCk7CiAKLSAgICB2b2lkIHNldEF0dGFjaGVkV2luZG93
SGVpZ2h0KHVuc2lnbmVkKTsKLSAgICB2b2lkIHNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWdu
ZWQpOwotICAgIHZvaWQgc2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCk7Ci0KLSAgICAvLyBJbXBs
ZW1lbnRlZCBpbiBwbGF0Zm9ybSBXZWJJbnNwZWN0b3IgZmlsZQotICAgIFN0cmluZyBsb2NhbGl6
ZWRTdHJpbmdzVVJMKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNob3dDb25zb2xlKCk7Ci0KLSAgICB2
b2lkIHNob3dSZXNvdXJjZXMoKTsKLQotICAgIHZvaWQgc2hvd01haW5SZXNvdXJjZUZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQpOwotCi0gICAgdm9pZCBzdGFydEphdmFTY3JpcHREZWJ1Z2dpbmco
KTsKLSAgICB2b2lkIHN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCk7Ci0KLSAgICB2b2lkIHN0YXJ0
SmF2YVNjcmlwdFByb2ZpbGluZygpOwotICAgIHZvaWQgc3RvcEphdmFTY3JpcHRQcm9maWxpbmco
KTsKKyAgICBXZWJQYWdlKiBtX3BhZ2U7CiAKLSAgICB2b2lkIHVwZGF0ZURvY2tpbmdBdmFpbGFi
aWxpdHkoKTsKKyAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Zyb250ZW5kQ29ubmVjdGlv
bjsKIAotICAgIFdlYlBhZ2UqIG1fcGFnZTsKLSAgICBXZWJQYWdlKiBtX2luc3BlY3RvclBhZ2U7
Ci0gICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1fZnJvbnRlbmRDbGllbnQ7Ci0gICAg
V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2Zyb250ZW5kQ2hhbm5lbDsKLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBtdXRhYmxlIFN0cmluZyBtX2xvY2FsaXplZFN0cmluZ3NV
Ukw7Ci0gICAgbXV0YWJsZSBib29sIG1faGFzTG9jYWxpemVkU3RyaW5nc1VSTDsKLSNlbmRpZgot
I2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotICAgIGJvb2wgbV9yZW1vdGVGcm9udGVuZENv
bm5lY3RlZDsKLSNlbmRpZgorICAgIGJvb2wgbV9hdHRhY2hlZDsKKyAgICBib29sIG1fcHJldmlv
dXNDYW5BdHRhY2g7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2Vz
LmluCmluZGV4IGMyM2I4NmYyMTQyNWNiNDYyZTQ5MjgzOWZmODAxOTVlMzg2N2Y3ODcuLmZjMDcz
Y2FlOGRkZDM1ZmFhMzIzM2I3ZGU5NTUyOWY3ZTM5NjQyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5p
bgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjIsMjYg
KzIyLDI1IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi1tZXNzYWdlcyAtPiBXZWJJbnNw
ZWN0b3IgTGVnYWN5UmVjZWl2ZXIgeworbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yIHsKICAgICBT
aG93KCkKICAgICBDbG9zZSgpCi0gICAgQXR0YWNoZWRCb3R0b20oKQotICAgIEF0dGFjaGVkUmln
aHQoKQotICAgIERldGFjaGVkKCkKLSAgICBEaWRTYXZlKFN0cmluZyB1cmwpCi0gICAgRGlkQXBw
ZW5kKFN0cmluZyB1cmwpCisKKyAgICBTZXRBdHRhY2hlZChib29sIGF0dGFjaGVkKQorCiAgICAg
U2hvd0NvbnNvbGUoKQogICAgIFNob3dSZXNvdXJjZXMoKQotICAgIFNob3dNYWluUmVzb3VyY2VG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQotICAgIFN0YXJ0SmF2YVNjcmlwdERlYnVnZ2luZygp
Ci0gICAgU3RvcEphdmFTY3JpcHREZWJ1Z2dpbmcoKQotICAgIFN0YXJ0SmF2YVNjcmlwdFByb2Zp
bGluZygpCi0gICAgU3RvcEphdmFTY3JpcHRQcm9maWxpbmcoKQorCisgICAgU2hvd01haW5SZXNv
dXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSWRlbnRpZmllcikKKworICAgIE9wZW5Jbk5ld1Rh
YihTdHJpbmcgdXJsKQorCiAgICAgU3RhcnRQYWdlUHJvZmlsaW5nKCkKICAgICBTdG9wUGFnZVBy
b2ZpbGluZygpCiAKKyAgICBTZW5kTWVzc2FnZVRvQmFja2VuZChTdHJpbmcgbWVzc2FnZSkKKwog
I2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotICAgIERpc3BhdGNoTWVzc2FnZUZyb21SZW1v
dGVGcm9udGVuZChTdHJpbmcgbWVzc2FnZSkKICAgICBSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgp
CiAgICAgUmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMjk3YWQzZDU4MDE1MmQwNjMwNTM5YzAwNjEzMzBkNDUxYmNmNjY1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJ
LmNwcApAQCAtMCwwICsxLDI4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSS5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKwor
I2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9y
UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0Nocm9tZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE9NV3JhcHBlcldvcmxkLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9NYWluRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
Y3JpcHRHbG9iYWxPYmplY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFN0YXRlLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1Jl
ZlB0cjxXZWJJbnNwZWN0b3JVST4gV2ViSW5zcGVjdG9yVUk6OmNyZWF0ZShXZWJQYWdlKiBwYWdl
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViSW5zcGVjdG9yVUkocGFnZSkpOworfQor
CitXZWJJbnNwZWN0b3JVSTo6V2ViSW5zcGVjdG9yVUkoV2ViUGFnZSogcGFnZSkKKyAgICA6IG1f
cGFnZShwYWdlKQorICAgICwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcigwKQorICAgICwgbV91
bmRlclRlc3QoZmFsc2UpCisgICAgLCBtX2Zyb250ZW5kTG9hZGVkKGZhbHNlKQorICAgICwgbV9k
b2NrU2lkZShEb2NrU2lkZTo6VW5kb2NrZWQpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLCBt
X2hhc0xvY2FsaXplZFN0cmluZ3NVUkwoZmFsc2UpCisjZW5kaWYKK3sKK30KKwordm9pZCBXZWJJ
bnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgZW5jb2RlZENv
bm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9v
bCB1bmRlclRlc3QpCit7CisjaWYgT1MoREFSV0lOKQorICAgIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIu
cG9ydCgpKTsKKyNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQorICAgIElQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklk
ZW50aWZpZXIucmVsZWFzZUZpbGVEZXNjcmlwdG9yKCkpOworI2Vsc2UKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybjsKKyNlbmRpZgorCisgICAgaWYgKElQQzo6Q29ubmVjdGlvbjo6
aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsK
KworICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgPSBpbnNwZWN0ZWRQYWdlSWRlbnRpZmll
cjsKKyAgICBtX3VuZGVyVGVzdCA9IHVuZGVyVGVzdDsKKworICAgIG1fcGFnZS0+Y29yZVBhZ2Uo
KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHRoaXMp
OworCisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xp
ZW50Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgdGhpcywgUnVuTG9vcDo6bWFpbigp
KTsKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5vcGVuKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yVUk6OndpbmRvd09iamVjdENsZWFyZWQoKQoreworICAgIGlmIChtX2Zyb250ZW5kSG9zdCkK
KyAgICAgICAgbV9mcm9udGVuZEhvc3QtPmRpc2Nvbm5lY3RDbGllbnQoKTsKKworICAgIG1fZnJv
bnRlbmRIb3N0ID0gSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpjcmVhdGUodGhpcywgbV9wYWdlLT5j
b3JlUGFnZSgpKTsKKyAgICBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChleGVjU3RhdGVGcm9tUGFn
ZShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgbV9wYWdlLT5jb3JlUGFnZSgpKSwgQVNDSUlMaXRl
cmFsKCJJbnNwZWN0b3JGcm9udGVuZEhvc3QiKSwgbV9mcm9udGVuZEhvc3QuZ2V0KCkpOworfQor
Cit2b2lkIFdlYkluc3BlY3RvclVJOjpmcm9udGVuZExvYWRlZCgpCit7CisgICAgbV9mcm9udGVu
ZExvYWRlZCA9IHRydWU7CisKKyAgICBldmFsdWF0ZVBlbmRpbmdFeHByZXNzaW9ucygpOworICAg
IGJyaW5nVG9Gcm9udCgpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjptb3ZlV2luZG93Qnko
ZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICBGbG9hdFJlY3QgZnJhbWVSZWN0ID0gbV9wYWdlLT5j
b3JlUGFnZSgpLT5jaHJvbWUoKS53aW5kb3dSZWN0KCk7CisgICAgZnJhbWVSZWN0Lm1vdmUoeCwg
eSk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5jaHJvbWUoKS5zZXRXaW5kb3dSZWN0KGZyYW1l
UmVjdCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmJyaW5nVG9Gcm9udCgpCit7CisgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9udCgpLCBtX2luc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2xvc2VXaW5kb3coKQorewor
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpLCBtX2luc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyKTsKKworICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKKyAg
ICBtX2JhY2tlbmRDb25uZWN0aW9uID0gbnVsbHB0cjsKKworICAgIG1faW5zcGVjdGVkUGFnZUlk
ZW50aWZpZXIgPSAwOworICAgIG1fdW5kZXJUZXN0ID0gZmFsc2U7Cit9CisKK3ZvaWQgV2ViSW5z
cGVjdG9yVUk6OnJlcXVlc3RTZXREb2NrU2lkZShEb2NrU2lkZSBzaWRlKQoreworICAgIHN3aXRj
aCAoc2lkZSkgeworICAgIGNhc2UgRG9ja1NpZGU6OlVuZG9ja2VkOgorICAgICAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6RGV0YWNoKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgRG9ja1NpZGU6OlJpZ2h0OgorICAgICAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoUmlnaHQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRp
Zmllcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6Qm90dG9tOgorICAg
ICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQm90dG9tKCksIG1faW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgV2ViSW5z
cGVjdG9yVUk6OnNldERvY2tTaWRlKERvY2tTaWRlIHNpZGUpCit7CisgICAgY29uc3QgY2hhciog
c2lkZVN0cmluZzsKKworICAgIHN3aXRjaCAoc2lkZSkgeworICAgIGNhc2UgRG9ja1NpZGU6OlVu
ZG9ja2VkOgorICAgICAgICBzaWRlU3RyaW5nID0gInVuZG9ja2VkIjsKKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIERvY2tTaWRlOjpSaWdodDoKKyAgICAgICAgc2lkZVN0cmluZyA9ICJyaWdo
dCI7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6Qm90dG9tOgorICAgICAg
ICBzaWRlU3RyaW5nID0gImJvdHRvbSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIG1f
ZG9ja1NpZGUgPSBzaWRlOworCisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJh
bCgic2V0RG9ja1NpZGUiKSwgQVNDSUlMaXRlcmFsKHNpZGVTdHJpbmcpKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JVSTo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0
KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd0hlaWdo
dChoZWlnaHQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JVSTo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKK3sKKyAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh3aWR0aCks
IG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpz
ZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JQcm94eTo6U2V0VG9vbGJhckhlaWdodChoZWlnaHQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlm
aWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6b3BlbkluTmV3VGFiKGNvbnN0IFN0cmlu
ZyYgdXJsKQoreworICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6T3BlbkluTmV3VGFiKHVybCksIDApOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJ
OjpzYXZlKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGNv
bnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykKK3sKKyAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6U2F2ZShmaWxlbmFtZSwgY29udGVudCwgYmFzZTY0RW5jb2Rl
ZCwgZm9yY2VTYXZlQXMpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JVSTo6YXBwZW5kKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIGNvbnRlbnQpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkFw
cGVuZChmaWxlbmFtZSwgY29udGVudCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQor
Cit2b2lkIFdlYkluc3BlY3RvclVJOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpJbnNwZWN0ZWRVUkxD
aGFuZ2VkKHVybFN0cmluZyksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lk
IFdlYkluc3BlY3RvclVJOjpzaG93Q29uc29sZSgpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25M
b2FkKEFTQ0lJTGl0ZXJhbCgic2hvd0NvbnNvbGUiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9y
VUk6OnNob3dSZXNvdXJjZXMoKQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxp
dGVyYWwoInNob3dSZXNvdXJjZXMiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNob3dN
YWluUmVzb3VyY2VGb3JGcmFtZShTdHJpbmcgZnJhbWVJZGVudGlmaWVyKQoreworICAgIGV2YWx1
YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSIp
LCBmcmFtZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzdGFydFBhZ2VQ
cm9maWxpbmcoKQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNl
dFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCIpLCB0cnVlKTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JVSTo6c3RvcFBhZ2VQcm9maWxpbmcoKQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChB
U0NJSUxpdGVyYWwoInNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCIpLCBmYWxzZSk7Cit9CisK
K3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmRpZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAg
ZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2F2ZWRVUkwiKSwgdXJsKTsKK30K
Kwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKQorewor
ICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoImFwcGVuZGVkVG9VUkwiKSwg
dXJsKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQobWFr
ZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2hNZXNzYWdlQXN5bmMoIiwgbWVz
c2FnZSwgIikiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9CYWNr
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2Up
LCAwKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNv
bnN0IFN0cmluZyYgY29tbWFuZCwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCkKK3sKKyAgICBpZiAo
YXJndW1lbnQuaXNOdWxsKCkpCisgICAgICAgIGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChtYWtl
U3RyaW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaChbXCIiLCBjb21tYW5kLCAiXCJd
KSIpKTsKKyAgICBlbHNlCisgICAgICAgIGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChtYWtlU3Ry
aW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaChbXCIiLCBjb21tYW5kLCAiXCIsIFwi
IiwgYXJndW1lbnQsICJcIl0pIikpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpldmFsdWF0
ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBib29sIGFyZ3VtZW50KQorewor
ICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb21tYW5kLCBBU0NJSUxpdGVyYWwoYXJndW1lbnQg
PyAidHJ1ZSIgOiAiZmFsc2UiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRl
RXhwcmVzc2lvbk9uTG9hZChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pCit7CisgICAgaWYgKG1f
ZnJvbnRlbmRMb2FkZWQpIHsKKyAgICAgICAgQVNTRVJUKG1fcXVldWUuaXNFbXB0eSgpKTsKKyAg
ICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2Ny
aXB0KGV4cHJlc3Npb24pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9xdWV1ZS5h
cHBlbmQoZXhwcmVzc2lvbik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRlUGVu
ZGluZ0V4cHJlc3Npb25zKCkKK3sKKyAgICBBU1NFUlQobV9mcm9udGVuZExvYWRlZCk7CisKKyAg
ICBmb3IgKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiA6IG1fcXVldWUpCisgICAgICAgIG1fcGFn
ZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChleHByZXNz
aW9uKTsKKworICAgIG1fcXVldWUuY2xlYXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZGJmY2JlMzhk
ZjcyYTU4NGZkMTMwNDgxY2ZmYzA1ZDA4ZmFhNjNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKQEAgLTAsMCArMSwx
MzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkluc3BlY3RvclVJX2gKKyNkZWZpbmUgV2Vi
SW5zcGVjdG9yVUlfaAorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0luc3Bl
Y3RvckZvcndhcmRpbmcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYkluc3BlY3RvclVJ
IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVj
dG9yVUk+LCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZENsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViSW5zcGVjdG9yVUk+IGNyZWF0ZShXZWJQYWdlKik7CisKKyAgICBXZWJQYWdlKiBwYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CisKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0
ZWQgV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisKKyAgICAv
LyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAorICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0
aW9uKikgeyBjbG9zZVdpbmRvdygpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIHsgY2xvc2VXaW5kb3coKTsg
fQorCisgICAgLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclVJIG1lc3NhZ2VzCisgICAgdm9pZCBl
c3RhYmxpc2hDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwg
dWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0KTsKKworICAg
IHZvaWQgc2hvd0NvbnNvbGUoKTsKKyAgICB2b2lkIHNob3dSZXNvdXJjZXMoKTsKKworICAgIHZv
aWQgc2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFN0cmluZyBmcmFtZUlkZW50aWZpZXIpOworCisg
ICAgdm9pZCBzdGFydFBhZ2VQcm9maWxpbmcoKTsKKyAgICB2b2lkIHN0b3BQYWdlUHJvZmlsaW5n
KCk7CisKKyAgICB2b2lkIGF0dGFjaGVkQm90dG9tKCkgeyBzZXREb2NrU2lkZShEb2NrU2lkZTo6
Qm90dG9tKTsgfQorICAgIHZvaWQgYXR0YWNoZWRSaWdodCgpIHsgc2V0RG9ja1NpZGUoRG9ja1Np
ZGU6OlJpZ2h0KTsgfQorICAgIHZvaWQgZGV0YWNoZWQoKSB7IHNldERvY2tTaWRlKERvY2tTaWRl
OjpVbmRvY2tlZCk7IH0KKworICAgIHZvaWQgc2V0RG9ja1NpZGUoRG9ja1NpZGUpOworCisgICAg
dm9pZCBkaWRTYXZlKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIGRpZEFwcGVuZChjb25z
dCBTdHJpbmcmIHVybCk7CisKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBT
dHJpbmcmKTsKKworICAgIC8vIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50CisgICAg
dm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmcm9udGVuZExv
YWRlZCgpIG92ZXJyaWRlOworCisgICAgdm9pZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQg
eSkgb3ZlcnJpZGU7CisKKyAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIG92ZXJyaWRl
OworCisgICAgdm9pZCBicmluZ1RvRnJvbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlV2lu
ZG93KCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHJlcXVlc3RTZXREb2NrU2lkZShEb2NrU2lkZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKSBv
dmVycmlkZTsKKworICAgIHZvaWQgc2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7
CisKKyAgICB2b2lkIG9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkgb3ZlcnJpZGU7CisK
KyAgICBib29sIGNhblNhdmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmUoY29uc3QgV1RGOjpT
dHJpbmcmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2Rl
ZCwgYm9vbCBmb3JjZVNhdmVBcykgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgV1RG
OjpTdHJpbmcmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQpIG92ZXJyaWRlOworCisg
ICAgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworCisg
ICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKwor
ICAgIGJvb2wgaXNVbmRlclRlc3QoKSBvdmVycmlkZSB7IHJldHVybiBtX3VuZGVyVGVzdDsgfQor
Citwcml2YXRlOgorICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvclVJKFdlYlBhZ2UqKTsKKworICAg
IHZvaWQgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgY29uc3Qg
U3RyaW5nJiBhcmd1bWVudCA9IFN0cmluZygpKTsKKyAgICB2b2lkIGV2YWx1YXRlQ29tbWFuZE9u
TG9hZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGNvbnN0IEFTQ0lJTGl0ZXJhbCYgYXJndW1lbnQp
IHsgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbW1hbmQsIFN0cmluZyhhcmd1bWVudCkpOyB9Cisg
ICAgdm9pZCBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBib29s
IGFyZ3VtZW50KTsKKyAgICB2b2lkIGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24pOworICAgIHZvaWQgZXZhbHVhdGVQZW5kaW5nRXhwcmVzc2lvbnMoKTsK
KworICAgIFdlYlBhZ2UqIG1fcGFnZTsKKworICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1f
YmFja2VuZENvbm5lY3Rpb247CisgICAgdWludDY0X3QgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmll
cjsKKworICAgIGJvb2wgbV91bmRlclRlc3Q7CisgICAgYm9vbCBtX2Zyb250ZW5kTG9hZGVkOwor
ICAgIERlcXVlPFN0cmluZz4gbV9xdWV1ZTsKKworICAgIFJlZlB0cjxXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZEhvc3Q+IG1fZnJvbnRlbmRIb3N0OworCisgICAgRG9ja1NpZGUgbV9kb2NrU2lk
ZTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG11dGFibGUgU3RyaW5nIG1fbG9jYWxpemVk
U3RyaW5nc1VSTDsKKyAgICBtdXRhYmxlIGJvb2wgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMOwor
I2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJ
TlNQRUNUT1IpCisKKyNlbmRpZiAvLyBXZWJJbnNwZWN0b3JVSV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2Fn
ZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjNlYjVmZDU4YTY3YTlmMGViZjExZGVjNjViNTY0OGI2ODkwMTQz
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDQ2IEBACisjIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisj
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCittZXNz
YWdlcyAtPiBXZWJJbnNwZWN0b3JVSSB7CisgICAgRXN0YWJsaXNoQ29ubmVjdGlvbihJUEM6OkF0
dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVu
dGlmaWVyLCBib29sIHVuZGVyVGVzdCkKKworICAgIEF0dGFjaGVkQm90dG9tKCkKKyAgICBBdHRh
Y2hlZFJpZ2h0KCkKKyAgICBEZXRhY2hlZCgpCisKKyAgICBTaG93Q29uc29sZSgpCisgICAgU2hv
d1Jlc291cmNlcygpCisKKyAgICBTaG93TWFpblJlc291cmNlRm9yRnJhbWUoU3RyaW5nIGZyYW1l
SWRlbnRpZmllcikKKworICAgIFN0YXJ0UGFnZVByb2ZpbGluZygpCisgICAgU3RvcFBhZ2VQcm9m
aWxpbmcoKQorCisgICAgRGlkU2F2ZShTdHJpbmcgdXJsKQorICAgIERpZEFwcGVuZChTdHJpbmcg
dXJsKQorCisgICAgU2VuZE1lc3NhZ2VUb0Zyb250ZW5kKFN0cmluZyBtZXNzYWdlKQorfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCBlNjJhY2ZkOWM0NmE4NTUxYzNlODQ0NjJlYTBhMTJlYmVjMTJiZjg2Li5jY2M2M2I1MzE0
NjUzODg5ODU4OWYzYTJiZTg1ZjY0NDk3OTY5YTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC04MCw2ICs4MCw4IEBACiAjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSS5oIgor
I2luY2x1ZGUgIldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJOb3RpZmlj
YXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIgog
I2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAgLTQ2MCw2ICs0NjIsNyBA
QCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKICNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKKyAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOwpAQCAtNTIwLDYgKzUyMyw3IEBAIFdlYlBh
Z2U6On5XZWJQYWdlKCkKICNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOworICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlSUQpOwpAQCAtMjg4NiwxOCArMjg5MCwyNiBAQCB2b2lkIFdlYlBhZ2U6OmRpZEZsdXNo
TGF5ZXJUcmVlQXRUaW1lKHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgdGltZXN0YW1wKQogfQog
I2VuZGlmCiAKLSAgICAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogV2ViSW5zcGVjdG9yKiBXZWJQ
YWdlOjppbnNwZWN0b3IoKQogewogICAgIGlmIChtX2lzQ2xvc2VkKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFtX2luc3BlY3RvcikKLSAgICAg
ICAgbV9pbnNwZWN0b3IgPSBXZWJJbnNwZWN0b3I6OmNyZWF0ZSh0aGlzLCBtX2luc3BlY3RvckNs
aWVudCk7CisgICAgICAgIG1faW5zcGVjdG9yID0gV2ViSW5zcGVjdG9yOjpjcmVhdGUodGhpcyk7
CiAgICAgcmV0dXJuIG1faW5zcGVjdG9yLmdldCgpOwogfQorCitXZWJJbnNwZWN0b3JVSSogV2Vi
UGFnZTo6aW5zcGVjdG9yVUkoKQoreworICAgIGlmIChtX2lzQ2xvc2VkKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBpZiAoIW1faW5zcGVjdG9yVUkpCisgICAgICAgIG1faW5zcGVjdG9y
VUkgPSBXZWJJbnNwZWN0b3JVSTo6Y3JlYXRlKHRoaXMpOworICAgIHJldHVybiBtX2luc3BlY3Rv
clVJLmdldCgpOworfQogI2VuZGlmCi0gICAgCisKICNpZiBQTEFURk9STShJT1MpCiBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyKiBXZWJQYWdlOjp2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkKIHsK
QEAgLTM0NzksNyArMzQ5MSwxMyBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgSVBDOjpNZXNzYWdlRGVjb2RlcgogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBp
ZiAoV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSB0aGlzLT5pbnNwZWN0b3IoKSkKLSAgICAgICAg
ICAgIGluc3BlY3Rvci0+ZGlkUmVjZWl2ZVdlYkluc3BlY3Rvck1lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7CisgICAgICAgICAgICBpbnNwZWN0b3ItPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3JVSSogaW5zcGVj
dG9yVUkgPSB0aGlzLT5pbnNwZWN0b3JVSSgpKQorICAgICAgICAgICAgaW5zcGVjdG9yVUktPmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAppbmRleCBiYWJhNTA2ZWMyMGY0MjM1NjMzOWFlZWE2MmE4OTU3NDY4NjViYzg4Li5iN2Q0NDhj
OTY4MDBhZjlmZGJkN2E0MDI0ZWJlNDgzODM2MjYzMzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1Myw2ICsxNTMsNyBAQCBjbGFzcyBXZWJG
dWxsU2NyZWVuTWFuYWdlcjsKIGNsYXNzIFdlYkltYWdlOwogY2xhc3MgV2ViSW5zcGVjdG9yOwog
Y2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50OworY2xhc3MgV2ViSW5zcGVjdG9yVUk7CiBjbGFzcyBX
ZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk5vdGlmaWNh
dGlvbkNsaWVudDsKQEAgLTIyNiw4ICsyMjcsMTAgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKICAgICBXZWJJbnNwZWN0b3IqIGluc3BlY3RvcigpOworICAgIFdlYkluc3BlY3Rv
clVJKiBpbnNwZWN0b3JVSSgpOworICAgIGJvb2wgaXNJbnNwZWN0b3JQYWdlKCkgeyByZXR1cm4g
ISFtX2luc3BlY3RvclVJOyB9CiAjZW5kaWYKLSAgICAKKwogI2lmIFBMQVRGT1JNKElPUykKICAg
ICBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKiB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCk7CiAj
ZW5kaWYKQEAgLTExNTksNiArMTE2Miw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogICAgIFJlZlB0cjxXZWJJbnNwZWN0b3I+IG1faW5zcGVjdG9yOworICAgIFJlZlB0cjxX
ZWJJbnNwZWN0b3JVST4gbV9pbnNwZWN0b3JVSTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4gbV92aWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2Vm
bC9XZWJJbnNwZWN0b3JVSUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZWZsL1dlYkluc3BlY3RvclVJRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODU3YzdiNjEwNTNhMjdl
ZjQwYmIzZDU4MjQ1NTBjNmY1NTAxMzUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JVSUVmbC5jcHAKQEAgLTAsMCAr
MSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSS5o
IgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgPFdlYkNvcmUvRWZsSW5zcGVj
dG9yVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitib29sIFdlYkluc3BlY3RvclVJOjpjYW5TYXZlKCkKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5n
c1VSTCgpCit7CisgICAgcmV0dXJuICJmaWxlOi8vIiArIFdlYkNvcmU6Omluc3BlY3RvclJlc291
cmNlUGF0aCgpICsgIi9sb2NhbGl6ZWRTdHJpbmdzLmpzIjsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40NjQ2Nzg1NWU4ZTc0OTgyYzEyMDczYTYzYjU4ZGU3ODI2YjBjZWQ4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJJbnNwZWN0b3JVSUd0ay5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5
cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0
b3JVSS5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgV2ViSW5zcGVjdG9yVUk6OmNhblNh
dmUoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIFdlYkluc3BlY3RvclVJOjps
b2NhbGl6ZWRTdHJpbmdzVVJMKCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKCJyZXNvdXJjZTovLy9v
cmcvd2Via2l0Z3RrL2luc3BlY3Rvci9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanMiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yVUlNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJlNzZhNjcxOTg4
NTBjZjQ0ZjQ3NjM0Y2FmZWExZTA4Yzg1MzIxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yVUlNYWMubW0KQEAgLTAs
MCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiV2ViSW5zcGVjdG9yVUkuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNpbXBvcnQg
PFdlYkNvcmUvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX1NUQUdFRF9GUkFNRVdPUksoV2Vi
SW5zcGVjdG9yVUksIFByaXZhdGVGcmFtZXdvcmtzLCBBKQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworYm9vbCBXZWJJbnNwZWN0b3JVSTo6Y2FuU2F2ZSgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK1N0cmluZyBXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCit7CisgICAg
aWYgKCFtX2hhc0xvY2FsaXplZFN0cmluZ3NVUkwpIHsKKyAgICAgICAgLy8gQ2FsbCB0aGUgc29m
dCBsaW5rIGZyYW1ld29yayBmdW5jdGlvbiB0byBkbG9wZW4gaXQsIHRoZW4gW05TQnVuZGxlIGJ1
bmRsZVdpdGhJZGVudGlmaWVyOl0gd2lsbCB3b3JrLgorICAgICAgICBXZWJJbnNwZWN0b3JVSUxp
YnJhcnkoKTsKKworICAgICAgICBOU1N0cmluZyAqcGF0aCA9IFtbTlNCdW5kbGUgYnVuZGxlV2l0
aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViSW5zcGVjdG9yVUkiXSBwYXRoRm9yUmVzb3VyY2U6
QCJsb2NhbGl6ZWRTdHJpbmdzIiBvZlR5cGU6QCJqcyJdOworICAgICAgICBpZiAoW3BhdGggbGVu
Z3RoXSkKKyAgICAgICAgICAgIG1fbG9jYWxpemVkU3RyaW5nc1VSTCA9IFtbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOnBhdGhdIGFic29sdXRlU3RyaW5nXTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9sb2NhbGl6ZWRTdHJpbmdzVVJMID0gU3RyaW5nKCk7CisgICAgICAgIG1faGFzTG9jYWxp
emVkU3RyaW5nc1VSTCA9IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIG1fbG9jYWxpemVkU3Ry
aW5nc1VSTDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQppbmRleCAyY2JmZWFiNGE1ODQ0MGZlNjg0YWU2Y2M5NjBiNGEzMWI3YmZk
ZTk3Li41MmViZmIwYjllMjVlNDRmNzg0ZTc5ZGIwNmM2YTEwMmNlNGE3MjI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAt
MjA1LDcgKzIwNSwxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlBy
b2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycwogdm9pZCBXZWJQcm9jZXNz
Ojppbml0aWFsaXplUHJvY2Vzc05hbWUoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogI2lmICFQTEFURk9STShJT1MpCi0gICAgTlNTdHJp
bmcgKmFwcGxpY2F0aW9uTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9T
VFJJTkcoIiVAIFdlYiBDb250ZW50IiwgIlZpc2libGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3Mu
IFRoZSBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4iKSwgKE5TU3RyaW5nICopcGFy
YW1ldGVycy51aVByb2Nlc3NOYW1lXTsKKyAgICBOU1N0cmluZyAqYXBwbGljYXRpb25OYW1lOwor
ICAgIGlmIChwYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmdldChBU0NJSUxpdGVy
YWwoImluc3BlY3Rvci1wcm9jZXNzIikpID09ICIxIikKKyAgICAgICAgYXBwbGljYXRpb25OYW1l
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX1NUUklORygiJUAgV2ViIEluc3Bl
Y3RvciIsICJWaXNpYmxlIG5hbWUgb2YgV2ViIEluc3BlY3RvcidzIHdlYiBwcm9jZXNzLiBUaGUg
YXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuIiksIChOU1N0cmluZyAqKXBhcmFtZXRl
cnMudWlQcm9jZXNzTmFtZV07CisgICAgZWxzZQorICAgICAgICBhcHBsaWNhdGlvbk5hbWUgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCIlQCBXZWIgQ29udGVudCIs
ICJWaXNpYmxlIG5hbWUgb2YgdGhlIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFw
cGxpY2F0aW9uIG5hbWUuIiksIChOU1N0cmluZyAqKXBhcmFtZXRlcnMudWlQcm9jZXNzTmFtZV07
CiAgICAgV0tTZXRWaXNpYmxlQXBwbGljYXRpb25OYW1lKChDRlN0cmluZ1JlZilhcHBsaWNhdGlv
bk5hbWUpOwogI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238483</attachid>
            <date>2014-09-22 08:01:54 -0700</date>
            <delta_ts>2014-09-22 15:14:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135120-20140922080151.patch</filename>
            <type>text/plain</type>
            <size>158270</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZlZDE1Mjk4NGZmNGZm
N2JmZDJjYjI0YzYzNmE3MDY0ZjYxZTM3ZS4uNTMwNDUwY2JmYmU5ZmQ0YzQ0ZjQ2ZTAyNGQ2ZTE3
YzFhMzEwNDU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE0LTA5LTIxICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHRoZSBXZWIg
SW5zcGVjdG9yIHVzZSBhIHNlcGFyYXRlIHdlYiBwcm9jZXNzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxMjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFi
bGUuc3RyaW5nczogVXBkYXRlZC4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRT
dGF0ZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogcGFnZS9D
aHJvbWUuaDoKKyAgICAgICAgRXhwb3J0ZWQgYSBmZXcgZnVuY3Rpb25zIGFuZCBwcml2YXRlIGhl
YWRlcnMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckZy
b250ZW5kQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omhh
c0luc3BlY3RvckZyb250ZW5kQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OnNob3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
Lmg6CisgICAgICAgIE1ha2UgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgYSBwb2ludGVyIGluc3Rl
YWQgb2YgYSBzdGQ6OnVuaXF1ZV9wdHIuCisgICAgICAgIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRv
IGltcGxlbWVudCBJbnNwZWN0b3JGcm9udGVuZENsaWVudCBhcworICAgICAgICBwYXJ0IG9mIGFu
IGV4aXN0aW5nIG9iamVjdCB0aGF0IGlzIGV4dGVybmFsbHkgb3duZWQuCisKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9wZW5E
dW1teUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2xv
c2VEdW1teUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5o
OgorICAgICAgICBDaGFuZ2UgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teSBmcm9tIGJlaW5n
IG1vdmVkIHRvIG93bmVkLgorCiAyMDE0LTA5LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgR2VuZXJhdGUgRWxlbWVudCBjYXN0aW5nIGhlbHBlciBmdW5jdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDRhYTI5ODI4NTdkZWU2ZWJmN2MyNGI5YjA0
OWJhMmY2NGZkMmU2OTQuLmZmODYwYjZjMGFjMWIwNDBkNmZiM2QzOWE1NzA0M2IyMjU0ZGY1MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE0LTA5LTIxICBU
aW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHRoZSBX
ZWIgSW5zcGVjdG9yIHVzZSBhIHNlcGFyYXRlIHdlYiBwcm9jZXNzLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxMjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIExvY2FsaXphdGlvbnMvZW4ubHBy
b2ovbG9jYWxpemVkU3RyaW5ncy5qczogVXBkYXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvQmFzZS9NYWluLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuY29udGVudExvYWRlZCk6CisgICAgICAgIE1vdmUgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmxvYWRlZCB0byBsYXRlciBpbiB0aGUgbG9hZC4KKyAgICAgICAgQ2FsbGluZyBp
dCBlYXJseSBqdXN0IHNob3dzIHRoZSB3aW5kb3cgYmVmb3JlIHdlIGhhdmUKKyAgICAgICAgYSB1
c2VyIGludGVyZmFjZSB0byBzaG93LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1Rl
c3QuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IubG9hZGVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5jb250ZW50TG9hZGVkKToKKyAgICAgICAgTWF0Y2ggdGhlIGNoYW5nZXMgaW4gTWFpbi5q
cy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRB
UEkuanM6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTCk6IENoYW5nZSBj
b21tZW50LgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRUb1VSTCk6IENo
YW5nZSBjb21tZW50LgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2gpOiBB
ZGQgYW4gYXNzZXJ0IGFuZCBlYXJseQorICAgICAgICByZXR1cm4gdG8gYmUgc2FmZSBmcm9tIHVu
a25vd24gY29tbWFuZHMuCisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxl
dGVkKTogRGVsZXRlIF9wZW5kaW5nQ29tbWFuZHMsCisgICAgICAgIG5vIG5lZWQgdG8ga2VlcCBh
biBlbXB0eSBhcnJheSBhcm91bmQgYSBvbmUgdGltZSB1c2UuCisKIDIwMTQtMDktMDYgIFRpbW90
aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBhIDxjaXJjbGU+
IGluc3RlYWQgb2YgYSA8cGF0aD4gaW4gRG93bmxvYWRBcnJvdy5zdmcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cK
aW5kZXggNDcyNzJlMmZlM2Q3ODFjYjg2MzdjNWM5NzY3YTQ3NWI4MjBlYmU5My4uNTFmOTM5NzY4
YWIzMWJhMTc0NzMyYTFhOTZiNzJlNTU0ZDQzZjhjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDE0LTA5LTIxICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNv
bT4KKworICAgICAgICBNYWtlIHRoZSBXZWIgSW5zcGVjdG9yIHVzZSBhIHNlcGFyYXRlIHdlYiBw
cm9jZXNzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzUxMjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbToKKyAgICAgICAgKFdl
Ykluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgUmVtb3ZlZCBt
X2Zyb250ZW5kQ2xpZW50IGluaXRpYWxpemF0aW9uIHNpbmNlIGl0IGlzCisgICAgICAgIG5vdyBh
IHN0ZDo6dW5pcXVlX3B0ciB0aGF0IGRlZmF1bHRzIHRvIG51bGxwdHIuCisKIDIwMTQtMDktMTcg
IERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIxNzM2OTUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggM2U0MGQyYTYzNmQ0Mzg3
ZmNkODE0YTAzZGRjNGM5MTkxODk1ZGM4NS4uMjcxMmNhY2FjNDgyNWUzNGYwOGMzOTVmMjIxOTg3
NmYxN2E1NmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTA5LTIx
ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHRo
ZSBXZWIgSW5zcGVjdG9yIHVzZSBhIHNlcGFyYXRlIHdlYiBwcm9jZXNzLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxMjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xp
ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5k
KToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5kKToKKyAgICAg
ICAgT3duIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50IGluc3RlYWQgb2YgbW92aW5nIGl0Lgor
CiAyMDE0LTA5LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
R2VuZXJhdGUgRWxlbWVudCBjYXN0aW5nIGhlbHBlciBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpp
bmRleCA1MWY3YzIxYTQzNzkwZDVhNDBlYzA3NDgwOWNmN2JhMDI3MmFmOWI2Li43Nzc2YjcwNGQz
ZGUxY2Q3MjkxZTI1ZGFjZDgwMzhlOGI1NGRiNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTQtMDktMjEgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29t
PgorCisgICAgICAgIE1ha2UgdGhlIFdlYiBJbnNwZWN0b3IgdXNlIGEgc2VwYXJhdGUgd2ViIHBy
b2Nlc3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNTEyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYklu
c3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVu
dDo6ZnJvbnRlbmRDbGllbnQpOgorICAgICAgICBPd24gV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQgaW5zdGVhZCBvZiBtb3ZpbmcgaXQuCisKIDIwMTQtMDktMjEgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBHZW5lcmF0ZSBFbGVtZW50IGNhc3RpbmcgaGVscGVy
IGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDc4MWNiZDUyMzU5MjRkMzRlODMzZWY3N2UyNmQ5NTFk
ODEyYjE4YjguLjYxYzk3ZTA0NjUyZjI0NDY2NjFiOWU1ODQzNDQ1Y2RhMjcyYTIxZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxODAgQEAKKzIwMTQtMDktMjEgIFRpbW90aHkgSGF0Y2hlciAgPHRp
bW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgdGhlIFdlYiBJbnNwZWN0b3IgdXNlIGEg
c2VwYXJhdGUgd2ViIHByb2Nlc3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNTEyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgIEFkZGVkIG5ldyBXZWJJbnNwZWN0b3JVSSBmaWxlcyBhbmQgcmVtb3ZlZCBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0
Lmg6IEFkZGVkIEJ1bmRsZUluc3BlY3RvclVJLgorCisgICAgICAgICogU2hhcmVkL0VudHJ5UG9p
bnRVdGlsaXRpZXMvbWFjL0xlZ2FjeVByb2Nlc3MvQ2hpbGRQcm9jZXNzRW50cnlQb2ludC5tbToK
KyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzTWFpbkRlbGVnYXRlOjpnZXRFeHRyYUluaXRp
YWxpemF0aW9uRGF0YSk6CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFj
L1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW06CisgICAgICAgIChXZWJLaXQ6OlhQ
Q1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRFeHRyYUluaXRpYWxpemF0aW9uRGF0YSk6
CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciAiaW5zcGVjdG9yLXByb2Nlc3MiIGRhdGEsIGEgYm9v
bGVhbiB0aGF0IGlzIHVzZWQgYnkKKyAgICAgICAgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nl
c3NOYW1lLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcDoKKyAg
ICAgICAgKFdLSW5zcGVjdG9ySXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KToKKyAgICAgICAgKFdLSW5z
cGVjdG9yVG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZyk6CisgICAgICAgIChXS0luc3BlY3Rvcklz
UHJvZmlsaW5nSmF2YVNjcmlwdCk6CisgICAgICAgIChXS0luc3BlY3RvclRvZ2dsZUphdmFTY3Jp
cHRQcm9maWxpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oOgor
ICAgICAgICBTdHViIG91dCBmdW5jdGlvbnMgd2UgZG9uJ3Qgc3VwcG9ydCBidXQgbmVlZCB0byBr
ZWVwIGZvciBuaWdodGx5IGNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
SW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQYWdlR3Jv
dXBzOjpjcmVhdGVJbnNwZWN0b3JQYWdlR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JQcm94eTo6V2ViSW5zcGVjdG9yUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JQcm94eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5Ojpjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNob3dD
b25zb2xlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNob3dSZXNvdXJj
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6c2hvd01haW5SZXNvdXJj
ZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkZXRhY2gpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQ29udGV4dCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRl
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZWFnZXJseUNyZWF0ZUlu
c3BlY3RvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRl
SW5zcGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpvcGVu
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmRpZENsb3NlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aXNDb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JQcm94eTo6Y2FuQXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5z
cGVjdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJJbnNw
ZWN0b3JQcm94eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2Vi
SW5zcGVjdG9yUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dl
Ykluc3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAoLVtXS1dlYkluc3BlY3RvclByb3h5T2Jq
Q0FkYXB0ZXIgY2xvc2VdKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBs
YXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybURpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtSGlkZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybVNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1BcHBlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1BdHRhY2gpOgorICAgICAgICBDaGFuZ2VkIGhvdyB0aGUgSW5zcGVjdG9yIHBhZ2UgaXMgY3Jl
YXRlZCBieSBtYWtpbmcgaXQgaW4gYSBuZXcgV2ViQ29udGV4dCBmb3IKKyAgICAgICAgdGhlIElu
c3BlY3Rvci4gVGhpcyByZW1vdmVzIHVzIGZyb20gdGhlIG1haW4gcHJvY2VzcyBwb29sIGFuZCBn
dWFyYW50ZWVzIG5vIHByb2Nlc3MKKyAgICAgICAgc2hhcmluZyBmb3Igb3VyIHVzZXIgaW50ZXJm
YWNlLiBBbHNvIHNlbmQgbmV3IFdlYkluc3BlY3RvclVJIG1lc3NhZ2VzIHRvIHRoZSBJbnNwZWN0
b3IKKyAgICAgICAgcGFnZSBhbmQgbm90IHRoZSBpbnNwZWN0ZWQgcGFnZSB3aGVuIGFwcHJvcHJp
YXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6IEFkZCAiaW5zcGVj
dG9yLXByb2Nlc3MiIHRvIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhCisgICAgICAgIGlmIHRoZSBj
b250ZXh0IGlzIHRoZSBJbnNwZWN0b3IgY29udGV4dC4gVGhpcyBpcyB1c2VkIGJ5IFdlYlByb2Nl
c3M6OmluaXRpYWxpemVQcm9jZXNzTmFtZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OmJyaW5nRnJvbnRlbmRUb0Zyb250KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAg
ICBSZW1vdmUgdGhlIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBjbGFzcyBmcm9tIFdlYkluc3Bl
Y3RvckNsaWVudCBhbmQgY2xlYW4gdXAgYSBsaXR0bGUuCisgICAgICAgIEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCBpbXBsZW1lbnRhdGlvbiBtb3ZlZCB0byBXZWJJbnNwZWN0b3IuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
LmNwcDogUmVtb3ZlZC4gU3VwZXJzZWRlZCBieSBXZWJJbnNwZWN0b3JVSS4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6V2Vi
SW5zcGVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0
b3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpvcGVuSW5OZXdUYWIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNob3dDb25zb2xlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yOjpzaG93UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
OjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3I6OnN0YXJ0UGFnZVByb2ZpbGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6
c3RvcFBhZ2VQcm9maWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNhbkF0
dGFjaFdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6dXBkYXRlRG9ja2lu
Z0F2YWlsYWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6c2VuZE1lc3Nh
Z2VUb0JhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdl
VG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRl
bmRDb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250
ZW5kRGlzY29ubmVjdGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6ZGlkQ2xvc2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6c2V0QXR0YWNoZWQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW46CisgICAgICAgIFN0b3AgdGFr
aW5nIGFuIG9wdGlvbmFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBhbmQgaW5oZXJpdCBpdCBp
bnN0ZWFkLiBDcmVhdGUgYSBjb25uZWN0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIHBhc3NlZCB0
byB0aGUgb3RoZXIgd2ViIHByb2Nlc3MgZm9yIFdlYkluc3BlY3RvclVJIHRvIHVzZS4gU3RvcCBy
ZWZlcmVuY2luZyBJbnNwZWN0b3IncyBwYWdlCisgICAgICAgIGRpcmVjdGx5LCBzaW5jZSBpdCBp
cyBpbiBhbm90aGVyIHByb2Nlc3Mgbm93LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3RvclVJLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clVJOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6V2ViSW5zcGVj
dG9yVUkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjp3aW5kb3dPYmplY3RDbGVh
cmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmZyb250ZW5kTG9hZGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6Om1vdmVXaW5kb3dCeSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpicmluZ1RvRnJvbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSTo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JVSTo6cmVxdWVzdFNldERvY2tTaWRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUk6OnNldERvY2tTaWRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmNo
YW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
VUk6OmNoYW5nZUF0dGFjaGVkV2luZG93V2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JVSTo6c2V0VG9vbGJhckhlaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clVJOjpvcGVuSW5OZXdUYWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6c2F2
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjphcHBlbmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6aW5zcGVjdGVkVVJMQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclVJOjpzaG93Q29uc29sZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclVJOjpzaG93UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclVJOjpzdGFydFBhZ2VQcm9maWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JVSTo6c3RvcFBhZ2VQcm9maWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JVSTo6ZGlkU2F2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpkaWRBcHBl
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6c2VuZE1lc3NhZ2VUb0Zyb250
ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9CYWNr
ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRlQ29tbWFuZE9u
TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpldmFsdWF0ZUV4cHJlc3Np
b25PbkxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVQZW5k
aW5nRXhwcmVzc2lvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JVSS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OnBhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JVSTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmF0dGFjaGVkQm90dG9tKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yVUk6OmF0dGFjaGVkUmlnaHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSTo6ZGV0YWNoZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6
ZXZhbHVhdGVDb21tYW5kT25Mb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yVUkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9lZmwvV2ViSW5zcGVjdG9yVUlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yVUk6OmNhblNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JV
STo6bG9jYWxpemVkU3RyaW5nc1VSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JVSTo6Y2FuU2F2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpsb2Nh
bGl6ZWRTdHJpbmdzVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYklu
c3BlY3RvclVJTWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6
OmNhblNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3Ry
aW5nc1VSTCk6CisgICAgICAgIEltcGxlbWVudCB0aGUgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQg
YW5kIGhhbmRsZSBhIGNvbm5lY3Rpb24gdG8gdGhlIGluc3BlY3RlZCBwYWdlJ3MgV2ViSW5zcGVj
dG9yLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
fldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNwZWN0b3IpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjppbnNwZWN0b3JVSSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgU2V0dXAgYXMgYSBsaXN0ZW5lciBmb3Ig
V2ViSW5zcGVjdG9yVUkgbWVzc2FnZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc0luc3BlY3RvclBhZ2UpOiBJ
dCBpcyBhbiBJbnNwZWN0b3IgcGFnZSBpZiB3ZSBoYXZlIGEgbV9pbnNwZWN0b3JVSS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUpOgorICAgICAgICBOYW1lIHRo
ZSBwcm9jZXNzICIlQCBXZWIgSW5zcGVjdG9yIiBpZiBpdCBpcyBhbiBJbnNwZWN0b3IgY29udGVu
dCBwcm9jZXNzLiBQcm9jZXNzZXMgaW4gdGhhdAorICAgICAgICBjb250ZXh0IGFyZSBub3Qgc2hh
cmVkIHdpdGggbXVsdGlwbGUgcGFnZXMuCisKIDIwMTQtMDktMjEgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBHZW5lcmF0ZSBFbGVtZW50IGNhc3RpbmcgaGVscGVy
IGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2Nh
bGl6YWJsZS5zdHJpbmdzIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJs
ZS5zdHJpbmdzCmluZGV4IDE0MTE2N2VjMTZlNWVmZmE1MTVmN2U1ZjdjZDRiOWMzODk4ZWVmZjku
Ljc3ZGQ3MDcxNDdjNWNmMmVjMmJkNTAxMDIyMzIwNDVkOWFhYWJiNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKQEAgLTQ5LDYgKzQ5
LDkgQEAKIC8qIFZpc2libGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBp
cyB0aGUgYXBwbGljYXRpb24gbmFtZS4gKi8KICIlQCBXZWIgQ29udGVudCIgPSAiJUAgV2ViIENv
bnRlbnQiOwogCisvKiBWaXNpYmxlIG5hbWUgb2YgV2ViIEluc3BlY3RvcidzIHdlYiBwcm9jZXNz
LiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuICovCisiJUAgV2ViIEluc3Bl
Y3RvciIgPSAiJUAgV2ViIEluc3BlY3RvciI7CisKIC8qIE5hbWUgb2YgYXBwbGljYXRpb24ncyBz
aW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hhaW4gKi8KICIlQCBXZWJDcnlwdG8g
TWFzdGVyIEtleSIgPSAiJUAgV2ViQ3J5cHRvIE1hc3RlciBLZXkiOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCmluZGV4IGFmMGQ1YWI1OTEwZjhmMzFiOGQzMDA5Yzg1ODQyYThjYTc1M2Y3MzEuLmViNzA5
ZjI2ZTkzNzc4MmFiZDhmMjE1OWM5NzAyMTNjOWMxNDUwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CkBAIC03NzAsNiArNzcwLDcgQEAgX19aTjdXZWJDb3JlMTdTUUxpdGVUcmFuc2FjdGlvbkQxRXYK
IF9fWk43V2ViQ29yZTE3U3VicmVzb3VyY2VMb2FkZXI2Y3JlYXRlRVBOU181RnJhbWVFUE5TXzE0
Q2FjaGVkUmVzb3VyY2VFUktOU18xNVJlc291cmNlUmVxdWVzdEVSS05TXzIxUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zRQogX19aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUds
b2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDbGFzc0luZm9FCiBfX1pON1dlYkNv
cmUxN2VuY29kZUZvckZpbGVOYW1lRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTdleGVj
U3RhdGVGcm9tUGFnZUVSTlNfMTVET01XcmFwcGVyV29ybGRFUE5TXzRQYWdlRQogX19aTjdXZWJD
b3JlMTdsYW5ndWFnZURpZENoYW5nZUV2CiBfX1pON1dlYkNvcmUxN29wZW5UZW1wb3JhcnlGaWxl
RVJLTjNXVEY2U3RyaW5nRVJpCiBfX1pON1dlYkNvcmUxN3NSR0JDb2xvclNwYWNlUmVmRXYKQEAg
LTc5Myw2ICs3OTQsNyBAQCBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDhhZGRUeXBl
c0VSS04zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1QwogX19aTjdXZWJDb3JlMThQ
bGF0Zm9ybVBhc3RlYm9hcmQ4Z2V0VHlwZXNFUk4zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMbTBF
TlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2Fy
ZDhzZXRUeXBlc0VSS04zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1Q3Jhc2hPbk92
ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZEMxRVJLTjNXVEY2U3Ry
aW5nRQorX19aTjdXZWJDb3JlMThTY3JpcHRHbG9iYWxPYmplY3Qzc2V0RVBOM0pTQzlFeGVjU3Rh
dGVFUEtjUE5TXzIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0RQogX19aTjdXZWJDb3JlMThTdHlsZVNo
ZWV0Q29udGVudHMxMXBhcnNlU3RyaW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMThT
dHlsZVNoZWV0Q29udGVudHNDMUVQTlNfMTVTdHlsZVJ1bGVJbXBvcnRFUktOM1dURjZTdHJpbmdF
UktOU18xNkNTU1BhcnNlckNvbnRleHRFCiBfX1pON1dlYkNvcmUxOFN0eWxlU2hlZXRDb250ZW50
c0QxRXYKQEAgLTE5MjUsNyArMTkyNywxMCBAQCBfX1pOSzdXZWJDb3JlNVJhbmdlOWVuZE9mZnNl
dEVSaQogX19aTks3V2ViQ29yZTVSYW5nZTlmaXJzdE5vZGVFdgogX19aTks3V2ViQ29yZTVSYW5n
ZTl0ZXh0UXVhZHNFUk4zV1RGNlZlY3RvcklOU185RmxvYXRRdWFkRUxtMEVOUzFfMTVDcmFzaE9u
T3ZlcmZsb3dFRUViUE5TMF8yMFJhbmdlSW5GaXhlZFBvc2l0aW9uRQogX19aTks3V2ViQ29yZTVS
YW5nZTl0ZXh0UmVjdHNFUk4zV1RGNlZlY3RvcklOU183SW50UmVjdEVMbTBFTlMxXzE1Q3Jhc2hP
bk92ZXJmbG93RUVFYlBOUzBfMjBSYW5nZUluRml4ZWRQb3NpdGlvbkUKK19fWk5LN1dlYkNvcmU2
Q2hyb21lMTB3aW5kb3dSZWN0RXYKIF9fWk5LN1dlYkNvcmU2Q2hyb21lMTJjcmVhdGVXaW5kb3dF
UE5TXzVGcmFtZUVSS05TXzE2RnJhbWVMb2FkUmVxdWVzdEVSS05TXzE0V2luZG93RmVhdHVyZXNF
UktOU18xNk5hdmlnYXRpb25BY3Rpb25FCitfX1pOSzdXZWJDb3JlNkNocm9tZTEzc2V0V2luZG93
UmVjdEVSS05TXzlGbG9hdFJlY3RFCitfX1pOSzdXZWJDb3JlNkNocm9tZTRzaG93RXYKIF9fWk5L
N1dlYkNvcmU2RWRpdG9yMTJzZWxlY3RlZFRleHRFdgogX19aTks3V2ViQ29yZTZFZGl0b3IxM2Nh
bkVkaXRSaWNobHlFdgogX19aTks3V2ViQ29yZTZFZGl0b3IxNmNvbXBvc2l0aW9uUmFuZ2VFdgpA
QCAtMzEyMiwxMyArMzEyNywxOCBAQCBfX1pON1dlYkNvcmU1Q29sb3JDMUVSS04zV1RGNlN0cmlu
Z0UKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogX19aTjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTI3
c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3Jl
MTVJbnNwZWN0b3JDbGllbnQzMWRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2VFUE5TXzRQ
YWdlRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMThJbnNwZWN0b3JQYWdlQWdlbnQ3ZnJh
bWVJZEVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTVjb25u
ZWN0RnJvbnRlbmRFUE45SW5zcGVjdG9yMjRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxFCiBfX1pO
N1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOGRpc2Nvbm5lY3RGcm9udGVuZEVOOUluc3Bl
Y3RvcjI1SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbkUKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9y
Q29udHJvbGxlcjE4c2V0UHJvZmlsZXJFbmFibGVkRWIKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9y
Q29udHJvbGxlcjI1ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZEVSS04zV1RGNlN0cmluZ0UKLV9f
Wk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI2c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRFTlN0M19fMTEwdW5pcXVlX3B0cklOU18yM0luc3BlY3RvckZyb250ZW5kQ2xpZW50RU5TMV8x
NGRlZmF1bHRfZGVsZXRlSVMzX0VFRUUKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxl
cjI2c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFUE5TXzIzSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRFCitfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyN2Rpc3BhdGNoTWVzc2FnZUZy
b21Gcm9udGVuZEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJv
bGxlcjRzaG93RXYKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjVjbG9zZUV2Citf
X1pON1dlYkNvcmUyMUluc3BlY3RvckZyb250ZW5kSG9zdDE2ZGlzY29ubmVjdENsaWVudEV2Citf
X1pON1dlYkNvcmUyMUluc3BlY3RvckZyb250ZW5kSG9zdEMxRVBOU18yM0luc3BlY3RvckZyb250
ZW5kQ2xpZW50RVBOU180UGFnZUUKK19fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0
RDFFdgogX19aTjdXZWJDb3JlMjJpbnN0cnVtZW50YXRpb25Gb3JQYWdlRVBOU180UGFnZUUKIF9f
Wk43V2ViQ29yZTI0SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uMTdzX2Zyb250ZW5kQ291bnRlckUK
IF9fWk43V2ViQ29yZTI0SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uMjZpbnN0cnVtZW50aW5nQWdl
bnRzRm9yUGFnZUVQTlNfNFBhZ2VFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODdkMmJiYzVkOTA4NTBiZWU0ZTM3MTlkOTM3MDg4
ODBhNDAyMTk4YS4uMGM2YTNlM2RiNjZjODFmYzBjYWU0ODk3NGQ1NDc1MTJkMjk3OGMyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTc2MSw3ICsxNzYxLDcgQEAKIAkJNEYxNTM0RTAxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRp
bmdCZWhhdmlvclR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0RjE1MzRERjExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjRG
NUZGQjExQ0JEMkUxMDBBMTg2QkYgLyogSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjRGNUZG
QTExQ0JEMkQyMDBBMTg2QkYgLyogSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5jcHAg
Ki87IH07CiAJCTRGNkZERDY0MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRE
NjIxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5jcHAgKi87IH07Ci0JCTRG
NkZERDY1MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNkZERDYzMTM0MURFREQwMDFG
OEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCAqLzsgfTsKKwkJNEY2RkRENjUxMzQxREVERDAw
MUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRENjMxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3Rv
clBhZ2VBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTRGNzA3QTk5MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JXZWJCYWNrZW5kRGlz
cGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEY3MDdBOTcxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRj
aGVycy5jcHAgKi87IH07CiAJCTRGNzA3QTlBMTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JX
ZWJCYWNrZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRGNzA3QTk4MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JXZWJCYWNr
ZW5kRGlzcGF0Y2hlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0RkIzOTBBRDE1RUY2MUYzMDA3QUQ1MUYgLyogR2VuZXJhdGVkSW1hZ2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZCMzkwQUMx
NUVGNjFGMzAwN0FENTFGIC8qIEdlbmVyYXRlZEltYWdlLmNwcCAqLzsgfTsKQEAgLTIzMzAsNyAr
MjMzMCw3IEBACiAJCTc5RjJGNUExMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjJG
NTlFMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmNwcCAqLzsgfTsKIAkJNzlG
MkY1QTIxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjJGNTlGMTA5MTkzOUEwMDBEODdD
QiAvKiBDb21wb3NpdGlvbkV2ZW50LmggKi87IH07CiAJCTdBMEU3NzBFMTBDMDBBODgwMEEwMjc2
RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0EwRTc3MEIxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3Rv
ckZyb250ZW5kSG9zdC5jcHAgKi87IH07Ci0JCTdBMEU3NzBGMTBDMDBBODgwMEEwMjc2RSAvKiBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdBMEU3NzBDMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVu
ZEhvc3QuaCAqLzsgfTsKKwkJN0EwRTc3MEYxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZy
b250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0EwRTc3MEMxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBMEU3NzFF
MTBDMDBEQjEwMEEwMjc2RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzcxQzEwQzAwREIxMDBB
MDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwICovOyB9OwogCQk3QTBFNzcxRjEw
QzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NzFEMTBDMDBEQjEwMEEwMjc2
RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5oICovOyB9OwogCQk3QTFEN0ZDQjE4Rjg1RjBG
MDBDMzg1QUQgLyogbWVkaWFDb250cm9sc0xvY2FsaXplZFN0cmluZ3MuanMgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMUQ3RkM5MThGODVGMEYwMEMz
ODVBRCAvKiBtZWRpYUNvbnRyb2xzTG9jYWxpemVkU3RyaW5ncy5qcyAqLzsgfTsKQEAgLTIzNzAs
NyArMjM3MCw3IEBACiAJCTdBQjBCMUMxMTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JEYXRh
YmFzZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QUIwQjFCRjEyMTFBNjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oICov
OyB9OwogCQk3QUNEODhEMzE0QzA4QkQ2MDA4NEVERDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FD
RDg4RDExNEMwOEJENjAwODRFREQyIC8qIEluc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCAqLzsg
fTsKIAkJN0FDRDg4RDQxNEMwOEJENjAwODRFREQyIC8qIEluc3BlY3RvckluZGV4ZWREQkFnZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUNEODhE
MjE0QzA4QkQ2MDA4NEVERDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCAqLzsgfTsKLQkJ
N0FERTcyMjYxMENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBREU3MjI1MTBDQkJCOUIw
MDZCM0IzQSAvKiBDb250ZXh0TWVudVByb3ZpZGVyLmggKi87IH07CisJCTdBREU3MjI2MTBDQkJC
OUIwMDZCM0IzQSAvKiBDb250ZXh0TWVudVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QURFNzIyNTEwQ0JCQjlCMDA2QjNCM0EgLyogQ29u
dGV4dE1lbnVQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdBRjlCMjAyMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIxRkMxOENG
QjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5jcHAgKi87IH07CiAJCTdBRjlCMjAzMThDRkIyREYw
MEM2NEJFRiAvKiBWVFRSZWdpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdBRjlCMUZEMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uaCAqLzsg
fTsKIAkJN0FGOUIyMDUxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbkxpc3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIxRkYxOENGQjJE
RjAwQzY0QkVGIC8qIFZUVFJlZ2lvbkxpc3QuY3BwICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaAppbmRleCA4YWEwNTViZDZmOTdiYThj
MjFiMDU4YzczYjA4NjE5ODU0ZmNjYTRjLi45MmJmMjA2ZGY1MDk5YTY0YWZlMzFkNzU2MGY2OGZl
Njk5N2QxZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRH
bG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9i
YWxPYmplY3QuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBTY3JpcHRHbG9iYWxPYmplY3Qgewog
cHVibGljOgogICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIq
IG5hbWUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi0gICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciog
bmFtZSwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0Kik7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBib29sIGdldChKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IGNoYXIqIG5hbWUsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKaW5kZXggOGE4MmNhYjA1ZDY1ODQ4ODRj
OWFiYjI3MzNkMTRjNmZlMDJhYzg3Zi4uN2UyNmFjN2E5YmExNTMzM2UyOTYyODg0YWUwZDZlYzkx
YzYzMDJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3Rh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBAIC01
OCw3ICs1OCw3IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRGcm9tRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkV4ZWNTdGF0ZSogbWFpbldv
cmxkRXhlY1N0YXRlKEZyYW1lKik7CiAKIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tTm9k
ZShET01XcmFwcGVyV29ybGQmLCBOb2RlKik7Ci1KU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJv
bVBhZ2UoRE9NV3JhcHBlcldvcmxkJiwgUGFnZSopOworV0VCQ09SRV9FWFBPUlQgSlNDOjpFeGVj
U3RhdGUqIGV4ZWNTdGF0ZUZyb21QYWdlKERPTVdyYXBwZXJXb3JsZCYsIFBhZ2UqKTsKIEpTQzo6
RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2Nv
cGUqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGM3Yzg3OTUyZDk2N2RkYmQwNGEx
N2RiMWVkYjA1MTYzMzViMTU3MDQuLjIwNDI1MTRiOTZiNjY5NGY0ZjhlZTYyZmJiZGNlYmMzZGYz
YTExZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKQEAgLTg2LDYgKzg2LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9y
Q29udHJvbGxlcihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICAs
IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKG51bGxwdHIpCiAgICAgLCBtX3BhZ2UocGFnZSkK
ICAgICAsIG1faW5zcGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKKyAgICAsIG1faW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQobnVsbHB0cikKICAgICAsIG1faXNVbmRlclRlc3QoZmFsc2UpCiAj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgLCBtX2hhc1JlbW90ZUZyb250ZW5kKGZh
bHNlKQpAQCAtMTg4LDkgKzE4OSw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVj
dGVkUGFnZURlc3Ryb3llZCgpCiAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBudWxscHRyOwogfQog
Ci12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gaW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KEluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBpbnNwZWN0b3JGcm9udGVuZENsaWVudCkKIHsK
LSAgICBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50ID0gV1RGOjptb3ZlKGluc3BlY3RvckZyb250
ZW5kQ2xpZW50KTsKKyAgICBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50ID0gaW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ7CiB9CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzTG9jYWxGcm9u
dGVuZCgpIGNvbnN0CkBAIC0yMTMsNyArMjE0LDcgQEAgYm9vbCBJbnNwZWN0b3JDb250cm9sbGVy
OjpoYXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6
aGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmdldCgpOworICAgIHJldHVybiBtX2luc3BlY3RvckZyb250ZW5k
Q2xpZW50OwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENsZWFyV2luZG93T2Jq
ZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCkBAIC0yODMs
OCArMjg0LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KCkKICAgICBpZiAobV9p
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCiAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5icmlu
Z0Zyb250ZW5kVG9Gcm9udCgpOwogICAgIGVsc2UgewotICAgICAgICBJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVj
dG9yRnJvbnRlbmQodGhpcyk7Ci0gICAgICAgIGlmIChmcm9udGVuZENoYW5uZWwpCisgICAgICAg
IGlmIChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVj
dG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9yRnJvbnRlbmQodGhpcykpCiAgICAgICAgICAgICBjb25u
ZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVsKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBmZDU1OTI0YzAzNTI1NTM0
OTczNzhkZmNjMzVjMTM0NjE1OWM1MmYyLi4zMGQzY2M3NGFkZTAzYTQxMTMyOThjZGY0OTEwNWU3
ZGJlYTI0NTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2hvdygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xvc2UoKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3RvckZyb250ZW5kQ2xpZW50Pik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJ
bnNwZWN0b3JGcm9udGVuZENsaWVudChJbnNwZWN0b3JGcm9udGVuZENsaWVudCopOwogICAgIGJv
b2wgaGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSBjb25zdDsKICAgICB2b2lkIGRpZENsZWFy
V2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSosIERPTVdyYXBwZXJXb3JsZCYpOwogCkBAIC0xMjEs
NyArMTIxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzdW1lKCk7CiAKICAgICBJbnNwZWN0b3JD
bGllbnQqIGluc3BlY3RvckNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yQ2xpZW50
OyB9Ci0gICAgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VBZ2VudDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIEluc3BlY3RvclBhZ2VBZ2VudCogcGFn
ZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlQWdlbnQ7IH0KIAogICAgIHZpcnR1YWwgYm9v
bCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIGNhbkFjY2Vzc0luc3BlY3RlZFNjcmlwdFN0YXRlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Qg
b3ZlcnJpZGU7CkBAIC0xNDYsMTAgKzE0NiwxMCBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIG1fdGltZWxpbmVBZ2VudDsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9pbnNwZWN0b3JG
cm9udGVuZENsaWVudDsKICAgICBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
bV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiAgICAgUGFnZSYgbV9wYWdlOwogICAgIEluc3Bl
Y3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7CisgICAgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQqIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwogICAgIFZlY3RvcjxJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUsIDI+IG1faW5qZWN0ZWRTY3JpcHRJbnN0cnVtZW50YXRpb25Db29raWVzOwogICAg
IGJvb2wgbV9pc1VuZGVyVGVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuaAppbmRleCA4ZThjZDg1MjQ0NTgzMDFiOTQzODVjNGFmOGIxOGVj
YTFiNDc1Mzc0Li4xYTc0ZWRiMzk4Y2M5YjE2Yjc2MGNmOGViM2MxZmFiNjlmMzU4M2I3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCkBA
IC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNw
ZWN0b3JGcm9udGVuZEhvc3QoY2xpZW50LCBmcm9udGVuZFBhZ2UpKTsKICAgICB9CiAKLSAgICB+
SW5zcGVjdG9yRnJvbnRlbmRIb3N0KCk7Ci0gICAgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgfkluc3BlY3RvckZyb250ZW5kSG9zdCgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGlzY29ubmVjdENsaWVudCgpOwogCiAgICAgdm9pZCBsb2FkZWQoKTsKICAg
ICB2b2lkIHJlcXVlc3RTZXREb2NrU2lkZShjb25zdCBTdHJpbmcmKTsKQEAgLTk1LDcgKzk1LDcg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBmcmllbmQgY2xhc3Mg
RnJvbnRlbmRNZW51UHJvdmlkZXI7CiAjZW5kaWYKLSAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Qo
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqLCBQYWdlKiBmcm9udGVuZFBhZ2UpOworICAgIFdFQkNP
UkVfRVhQT1JUIEluc3BlY3RvckZyb250ZW5kSG9zdChJbnNwZWN0b3JGcm9udGVuZENsaWVudCos
IFBhZ2UqIGZyb250ZW5kUGFnZSk7CiAKICAgICBJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9j
bGllbnQ7CiAgICAgUGFnZSogbV9mcm9udGVuZFBhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggMTEwNjcwZWQwYjM3ODA0ZTk5MDRjNWYx
OGIwZDA3ZDBlNDVhOWU1Ny4uMjVmZTFkNWE2MDNhZTEzMjA3ZTE0YjM0MzA4MWU2N2Q3YmUyZWFl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApA
QCAtMTU1LDcgKzE1NSw3IEBAIHB1YmxpYzoKICAgICBGcmFtZSogbWFpbkZyYW1lKCk7CiAgICAg
U3RyaW5nIGNyZWF0ZUlkZW50aWZpZXIoKTsKICAgICBGcmFtZSogZnJhbWVGb3JJZChjb25zdCBT
dHJpbmcmIGZyYW1lSWQpOwotICAgIFN0cmluZyBmcmFtZUlkKEZyYW1lKik7CisgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIGZyYW1lSWQoRnJhbWUqKTsKICAgICBib29sIGhhc0lkRm9yRnJhbWUo
RnJhbWUqKSBjb25zdDsKICAgICBTdHJpbmcgbG9hZGVySWQoRG9jdW1lbnRMb2FkZXIqKTsKICAg
ICBGcmFtZSogZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2lu
UmF3U3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IGZjYTdmOTA4YjhlOTNkNDRiMDFlMTY4
NmY1YzIyZDRhMTk0YWE0NDUuLjNlNGY1ZjBhZTcwNjY3NzYwYjM2MjVjYjY2YzA5ODkyYjA2YmQ4
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtMTAyLDggKzEwMiw4IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChGcmFtZSosIGNvbnN0IEludFNpemUmKSBjb25zdDsK
IAotICAgIHZvaWQgc2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKLSAgICBG
bG9hdFJlY3Qgd2luZG93UmVjdCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBG
bG9hdFJlY3Qgd2luZG93UmVjdCgpIGNvbnN0OwogCiAgICAgRmxvYXRSZWN0IHBhZ2VSZWN0KCkg
Y29uc3Q7CiAKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb2N1c2VkRnJh
bWVDaGFuZ2VkKEZyYW1lKikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQYWdlKiBjcmVh
dGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVh
dHVyZXMmLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikgY29uc3Q7Ci0gICAgdm9pZCBzaG93KCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93KCkgY29uc3Q7CiAKICAgICBib29s
IGNhblJ1bk1vZGFsKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5SdW5Nb2RhbE5vdygpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDBhMDI2N2FjZDQ3NTQ3NWE3MDA4
M2JiMWU4Yjg3NzVkOGU3ZWEyMWUuLjU5ZTcxYzQ1ODhkOTRhYTJiNDM0MzBhY2I4YzQwYzAyOWQw
ZWNiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE0NzEsMTIgKzE0
NzEsMTAgQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IEludGVybmFsczo6b3BlbkR1bW15SW5zcGVj
dG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgUGFnZSogZnJvbnRlbmRQYWdlID0g
bV9mcm9udGVuZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgpOwogICAgIEFTU0VSVChmcm9udGVu
ZFBhZ2UpOwogCi0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnREdW1teT4oJnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSwg
ZnJvbnRlbmRQYWdlKTsKLQotICAgIGZyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9udGVuZENsaWVudCkpOwot
Ci0gICAgbV9mcm9udGVuZENoYW5uZWwgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsRHVtbXkoZnJvbnRlbmRQYWdlKSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teT4oJnBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRQYWdlKTsKKyAgICBmcm9udGVuZFBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2Zyb250ZW5kQ2xpZW50
LmdldCgpKTsKIAorICAgIG1fZnJvbnRlbmRDaGFubmVsID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teT4oZnJvbnRlbmRQYWdlKTsKICAgICBwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmRDaGFubmVsLmdldCgp
KTsKIAogICAgIHJldHVybiBtX2Zyb250ZW5kV2luZG93OwpAQCAtMTQ5MCwxMCArMTQ4OCwxMSBA
QCB2b2lkIEludGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKCkKIAogICAgIHBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlz
Y29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKIAotICAgIG1fZnJvbnRlbmRDaGFu
bmVsLnJlbGVhc2UoKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbnVsbHB0cjsKKyAgICBtX2Zy
b250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7CiAKICAgICBtX2Zyb250ZW5kV2luZG93LT5jbG9zZSht
X2Zyb250ZW5kV2luZG93LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIG1fZnJvbnRl
bmRXaW5kb3cucmVsZWFzZSgpOworICAgIG1fZnJvbnRlbmRXaW5kb3cuY2xlYXIoKTsKIH0KIAog
dm9pZCBJbnRlcm5hbHM6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5hYmxl
ZCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAz
ZmY5YTdmYjk4YTQ0NTVhNDE0MzkyNjZhNjBmMDg0NTc4OGFjOGQ5Li42Y2M3ZDI0ZjdjN2E3OGUx
OGY5ZjRlMTY0NDYxOWNmZjUzY2E2YzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
QEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgRG9jdW1lbnRNYXJrZXI7CiBjbGFzcyBFbGVtZW50Owog
Y2xhc3MgRnJhbWU7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teTsKK2NsYXNz
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50RHVtbXk7CiBjbGFzcyBJbnRlcm5hbFNldHRpbmdzOwog
Y2xhc3MgTWFsbG9jU3RhdGlzdGljczsKIGNsYXNzIE1lbW9yeUluZm87CkBAIC0zNTAsNyArMzUx
LDggQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudE1hcmtlciogbWFya2VyQXQoTm9kZSosIGNvbnN0
IFN0cmluZyYgbWFya2VyVHlwZSwgdW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFJlZlB0cjxET01XaW5kb3c+IG1fZnJvbnRlbmRXaW5k
b3c7Ci0gICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbER1bW15PiBtX2Zyb250ZW5k
Q2hhbm5lbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1t
eT4gbV9mcm9udGVuZENsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsRHVtbXk+IG1fZnJvbnRlbmRDaGFubmVsOwogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6
ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHBy
b2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCAyMTkyMTIwNDA4ZTg5ZmM1OThlOGNlOTk5Y2M2
MWJhNTA3Y2M1ZmI0Li5hMmI0OTExZmJlYTg2NTQwM2NiMDE5ZWViNzVjZTM0MjBiZmIxYWI0IDEw
MDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDkzCnpjbVYtajBIWGlPdyokKGgxRio+aHZsfDR3
Nz9Wdk00M2xmbjNiUXtRYlBUZ21EbGtsd2AqIytUazlUYWR0JEN5dAp6diZXRkMzYlc2ZnY7KHVW
cHNFcUdxcTIrJnZ2MG5OMDwpWEo3ejJ9ZSNUMWhyIVZhQEAjaTl6Y1Uoam17ckB0en0KCmRlbHRh
IDEyNTMKemNtZDUrJnViRz01RlRBWXh7MjVqbjswb3xqVnUhREhmYWxqMlRfcDxtNzxGWWRlS0E3
a0dpbUspLS1EPHJCS3dQCnpVfHxyWVVpRHhSM0AjWCYzYXVCVmA3OFdXe043dERpQXxGcFdxR2By
SHtYMndYNkQ7JWVeQTtAckxtKFpJX1claQp6QnJmLXI7YzxVVWBFaW44amheQy1yU3BEJF5sZG1+
bFQ5VG1QPm5RcHo0KHd4UmpOPiNFTUMxWihrSHJZTyM4PUUKem5ZcjBuYV9BezJzKTdQVWNAV3lM
WUIodzNOend5Jm0kOCE2N3Q0KGk8SzlpV010OEJZYmUtLTFaJkQ3S0NoWGdFCnoxTzZQJUFsQXV3
cGJTUndlOHFjKTYqSnUzNUBxUU47OXNDZUQ3cEAtNG9sUWhmP1gzZllua3xeOGQ+eU1vPns7Twp6
eWJJNWY2PGdSZlQxMzh3SlBuYU4lX0RrRkFWb2B+V2tlaj1WaGJuLT1NIUE/JmkpdG81VGZ8Knle
cWFRUUpAJnoKenBiXzNlM0h4SCVlS0Z+bVVhcVM7MVNHcXdreHM+fmRIb2RfKzNZUyhgJEtQOSUy
Q244YEppMmk0Z2xKQ0FJK1BoCno0QXc8PCk9blJpRSR4RmItPXp9O2RCLUJJQVh4dWwyekJ+RWA8
cldEQkdGRG9XJHt7QCU1MUt1ZWUyVnpuaEooNQp6MkFgTVgmKGxOZjZAV1pRQWRyZzBASmJfKis3
LSh7SlpxNk9TM2F4eS1WN25IRGtLdyNPYlNZSHBCYWVjdkI7JDAKeldUVG5uPCpPPCRlK35RVFg2
YFVRQG5Za2gkYDZffChLVllhJUV7eCFlfGBxaDkoZXc+bmY4fTlHKGB9bWRJMHRpCnVSYDV2I0Ez
X2hicTxqNlh0IyhaeWh2d29ZeWdoOTJ2N0ltJVN8fDc7X1VFbEI7cm0tWkwhc1lXTmc5Pl8KCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4u
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKaW5k
ZXggZWQ4ZTJhMDIzNTFjMDBlNGJhMjk5NzcwMWFlZDE5MmQ0NTU5NjBlNC4uZmEyMzRjNzBkYjJj
ZTY4M2E2NTk3ZjcwOTVlZmI2YTU2YWRiYWE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtNDksMTAgKzQ5LDcgQEAgV2ViSW5z
cGVjdG9yLlR5cGVJZGVudGlmaWVyQ29va2llS2V5ID0gInJlcHJlc2VudGVkLW9iamVjdC10eXBl
IjsKIAogV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKIHsKLSAgICAvLyBUZWxsIHRo
ZSBJbnNwZWN0b3JGcm9udGVuZEhvc3Qgd2UgbG9hZGVkIGZpcnN0IHRvIGVzdGFibGlzaCBjb21t
dW5pY2F0aW9uIHdpdGggSW5zcGVjdG9yQmFja2VuZC4KLSAgICBJbnNwZWN0b3JGcm9udGVuZEhv
c3QubG9hZGVkKCk7Ci0KLSAgICAvLyBJbml0aWFsaXplIFdlYlNvY2tldCB0byBjb21tdW5pY2F0
aW9uCisgICAgLy8gSW5pdGlhbGl6ZSBXZWJTb2NrZXQgdG8gY29tbXVuaWNhdGlvbi4KICAgICB0
aGlzLl9pbml0aWFsaXplV2ViU29ja2V0SWZOZWVkZWQoKTsKIAogICAgIC8vIFJlZ2lzdGVyIG9i
c2VydmVycyBmb3IgZXZlbnRzIGZyb20gdGhlIEluc3BlY3RvckJhY2tlbmQuCkBAIC0zMjgsMTIg
KzMyNSwxMyBAQCBXZWJJbnNwZWN0b3IuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICBp
ZiAodGhpcy5fZGV0YWlsc1NpZGViYXJXaWR0aFNldHRpbmcudmFsdWUpCiAgICAgICAgIHRoaXMu
ZGV0YWlsc1NpZGViYXIud2lkdGggPSB0aGlzLl9kZXRhaWxzU2lkZWJhcldpZHRoU2V0dGluZy52
YWx1ZTsKIAotICAgIC8vIFVwZGF0ZSB0aGUgZG9ja2VkIHN0YXRlIGJhc2VkIG9uIHRoZSBxdWVy
eSBzdHJpbmcgcGFzc2VkIHdoZW4gdGhlIFdlYiBJbnNwZWN0b3Igd2FzIGxvYWRlZC4KLSAgICB0
aGlzLnVwZGF0ZURvY2tlZFN0YXRlKHBhcnNlTG9jYXRpb25RdWVyeVBhcmFtZXRlcnMoKS5kb2Nr
U2lkZSB8fCAidW5kb2NrZWQiKTsKLQotICAgIC8vIFRlbGwgdGhlIGZyb250ZW5kIEFQSSB3ZSBh
cmUgbG9hZGVkIHNvIGFueSBwZW5kaW5nIGZyb250ZW5kIGNvbW1hbmRzIGNhbiBiZSBkaXNwYXRj
aGVkLgorICAgIC8vIFNpZ25hbCB0aGF0IHRoZSBmcm9udGVuZCBpcyBub3cgcmVhZHkgdG8gcmVj
ZWl2ZSBtZXNzYWdlcy4KICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKCk7
CiAKKyAgICAvLyBUZWxsIHRoZSBJbnNwZWN0b3JGcm9udGVuZEhvc3Qgd2UgbG9hZGVkLCB3aGlj
aCBjYXVzZXMgdGhlIHdpbmRvdyB0byBkaXNwbGF5CisgICAgLy8gYW5kIHBlbmRpbmcgSW5zcGVj
dG9yRnJvbnRlbmRBUEkgY29tbWFuZHMgdG8gYmUgc2VudC4KKyAgICBJbnNwZWN0b3JGcm9udGVu
ZEhvc3QubG9hZGVkKCk7CisKICAgICAvLyBTZXQgY29sbGFwc2VkIGFmdGVyIGxvYWRpbmcgdGhl
IHBlbmRpbmcgZnJvbnRlbmQgY29tbWFuZHMgYXJlIGRpc3BhdGNoZWQgc28gb25seSB0aGUgZmlu
YWwKICAgICAvLyBzZWxlY3RlZCBzaWRlYmFyIHBhbmVsIGdldHMgc2hvd24gYW5kIGhhcyBhIHNh
eSBpbiB3aGF0IGNvbnRlbnQgdmlldyBnZXRzIHNob3duLgogICAgIHRoaXMubmF2aWdhdGlvblNp
ZGViYXIuY29sbGFwc2VkID0gdGhpcy5fbmF2aWdhdGlvblNpZGViYXJDb2xsYXBzZWRTZXR0aW5n
LnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
QmFzZS9UZXN0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9U
ZXN0LmpzCmluZGV4IDc0MjA3NWE3ZDM3MWQ2NDQ1MDRkMjAyZThmY2JhYTkxYTA3OTgzNWQuLjM4
MGVhNjc3ODA1OWJiMjJlYjk4Njk4MmJlODJlN2JiMDNiY2Y4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVGVzdC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1Rlc3QuanMKQEAgLTU1LDE1ICs1NSwx
NiBAQCBXZWJJbnNwZWN0b3IubG9hZGVkID0gZnVuY3Rpb24oKQogCiAgICAgLy8gUGVyZm9ybSBv
bmUtdGltZSB0YXNrcy4KICAgICBXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMucmVxdWVzdENT
U05hbWVDb21wbGV0aW9ucygpOwotCi0gICAgLy8gRXN0YWJsaXNoIGNvbW11bmljYXRpb24gd2l0
aCB0aGUgSW5zcGVjdG9yQmFja2VuZC4KLSAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZGVk
KCk7CiB9CiAKIFdlYkluc3BlY3Rvci5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogewogICAg
IC8vIFNpZ25hbCB0aGF0IHRoZSBmcm9udGVuZCBpcyBub3cgcmVhZHkgdG8gcmVjZWl2ZSBtZXNz
YWdlcy4KICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKCk7CisKKyAgICAv
LyBUZWxsIHRoZSBJbnNwZWN0b3JGcm9udGVuZEhvc3Qgd2UgbG9hZGVkLCB3aGljaCBjYXVzZXMg
dGhlIHdpbmRvdyB0byBkaXNwbGF5CisgICAgLy8gYW5kIHBlbmRpbmcgSW5zcGVjdG9yRnJvbnRl
bmRBUEkgY29tbWFuZHMgdG8gYmUgc2VudC4KKyAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9h
ZGVkKCk7CiB9CiAKIFdlYkluc3BlY3Rvci5VSVN0cmluZyA9IGZ1bmN0aW9uKHN0cmluZykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0lu
c3BlY3RvckZyb250ZW5kQVBJLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKaW5kZXggMTIyNzIxMTI4ZGFmYmVi
MzE5NDFkYjBjYzE4NjFiYjA3NmExNWQ0OS4uYTY0NzY4YmFlN2E3ZmRkNGIyZTY5NDRlN2Q3NGU1
OGU3NjViZjdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAg
LTI1LDI4ICsyNSwxNiBAQAogCiBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICBfbG9hZGVk
OiBmYWxzZSwKLQogICAgIF9wZW5kaW5nQ29tbWFuZHM6IFtdLAogCiAgICAgc2F2ZWRVUkw6IGZ1
bmN0aW9uKHVybCkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisg
ICAgICAgIC8vIE5vdCB1c2VkIHlldC4KICAgICB9LAogCiAgICAgYXBwZW5kZWRUb1VSTDogZnVu
Y3Rpb24odXJsKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KLSAg
ICB9LAotCi0gICAgaXNEZWJ1Z2dpbmdFbmFibGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fSwKLQotICAgIHNldERlYnVnZ2luZ0VuYWJsZWQ6IGZ1bmN0aW9uKGVuYWJsZWQpCi0gICAgewot
ICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorICAgICAgICAvLyBOb3QgdXNlZCB5
ZXQuCiAgICAgfSwKIAogICAgIGlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkOiBmdW5jdGlvbigp
CkBAIC0xMDgsMTEgKzk2LDYgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93U291cmNlQ29kZUZvckZyYW1lKGZy
YW1lSWRlbnRpZmllciwgdHJ1ZSk7CiAgICAgfSwKIAotICAgIHNldERvY2tpbmdVbmF2YWlsYWJs
ZTogZnVuY3Rpb24odW5hdmFpbGFibGUpCi0gICAgewotICAgICAgICAvLyBOb3QgdXNlZC4KLSAg
ICB9LAotCiAgICAgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQ6IGZ1bmN0aW9uKGlkKQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGlkKTsKQEAgLTE0
MSw2ICsxMjQsMTAgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgIH0KIAogICAg
ICAgICB2YXIgbWV0aG9kTmFtZSA9IHNpZ25hdHVyZS5zaGlmdCgpOworICAgICAgICBjb25zb2xl
LmFzc2VydChJbnNwZWN0b3JGcm9udGVuZEFQSVttZXRob2ROYW1lXSwgIlVuZXhwZWN0ZWQgSW5z
cGVjdG9yRnJvbnRlbmRBUEkgbWV0aG9kIG5hbWU6ICIgKyBJbnNwZWN0b3JGcm9udGVuZEFQSVtt
ZXRob2ROYW1lXSk7CisgICAgICAgIGlmICghSW5zcGVjdG9yRnJvbnRlbmRBUElbbWV0aG9kTmFt
ZV0pCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgcmV0dXJuIEluc3BlY3RvckZyb250
ZW5kQVBJW21ldGhvZE5hbWVdLmFwcGx5KEluc3BlY3RvckZyb250ZW5kQVBJLCBzaWduYXR1cmUp
OwogICAgIH0sCiAKQEAgLTE1MSw2ICsxMzgsNiBAQCBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsK
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBJbnNwZWN0b3JGcm9udGVuZEFQSS5fcGVuZGlu
Z0NvbW1hbmRzLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRBUEku
ZGlzcGF0Y2goSW5zcGVjdG9yRnJvbnRlbmRBUEkuX3BlbmRpbmdDb21tYW5kc1tpXSk7CiAKLSAg
ICAgICAgSW5zcGVjdG9yRnJvbnRlbmRBUEkuX3BlbmRpbmdDb21tYW5kcyA9IFtdOworICAgICAg
ICBkZWxldGUgSW5zcGVjdG9yRnJvbnRlbmRBUEkuX3BlbmRpbmdDb21tYW5kczsKICAgICB9CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50SU9TLm1tIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50SU9TLm1tCmluZGV4IGQzMGQ4YjkxMjI1NjNmYzk4OTFlNWRjY2MwZWQ5NTVl
NjFhZTE5N2MuLjk4ZGNhZWQzMTkwZDE4OWQ3MDFjZTJmNDI4MjIyOWI3ZDMwZGQ4ZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnRJT1MubW0KQEAgLTQ2LDcgKzQ2LDYgQEAgV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJ
bnNwZWN0b3JDbGllbnQoV2ViVmlldyAqd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3
KQogICAgICwgbV9oaWdobGlnaHRlcihhZG9wdE5TKFtbV2ViTm9kZUhpZ2hsaWdodGVyIGFsbG9j
XSBpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6d2ViVmlld10pKQogICAgICwgbV9mcm9udGVuZFBh
Z2UoMCkKLSAgICAsIG1fZnJvbnRlbmRDbGllbnQoMCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA0
ODU2ODM2N2Y0MTY1MmEzZDc3ZGE0YTg2MGQ0ZGM3ZjM0NDM5YWY3Li44OTg3N2ViZTRhNWNkYjA2
MjQ1OTc3MWNlYTEwYWViZjMzN2Y4NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMTAwLDcgKzEwMCw3IEBA
IHByaXZhdGU6CiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogICAgIFJldGFpblB0cjxXZWJOb2Rl
SGlnaGxpZ2h0ZXI+IG1faGlnaGxpZ2h0ZXI7CiAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVu
ZFBhZ2U7Ci0gICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1fZnJvbnRlbmRDbGllbnQ7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2Zyb250
ZW5kQ2xpZW50OwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggNmUxNzg5ZDdjYmFhNjRlOGVhNDlh
NDdhMDBiMmM2ZmIxNjA2ZDRjZS4uODMwOGI5ZTczZTE3MDA0NDRhMTdmOTBmMDQzMTEzNGJhOGQ2
MzQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbQpAQCAtMTMzLDggKzEzMyw3IEBAIEBlbmQKIFdlYkluc3BlY3Rv
ckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgOiBtX3dl
YlZpZXcod2ViVmlldykKICAgICAsIG1faGlnaGxpZ2h0ZXIoYWRvcHROUyhbW1dlYk5vZGVIaWdo
bGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3OndlYlZpZXddKSkKLSAgICAs
IG1fZnJvbnRlbmRQYWdlKDApCi0gICAgLCBtX2Zyb250ZW5kQ2xpZW50KDApCisgICAgLCBtX2Zy
b250ZW5kUGFnZShudWxscHRyKQogewogfQogCkBAIC0xNTAsMTEgKzE0OSwxMyBAQCBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250
ZW5kKEluc3BlY3RvckNvbgogICAgIFt3aW5kb3dDb250cm9sbGVyLmdldCgpIHNldEluc3BlY3Rv
ckNsaWVudDp0aGlzXTsKIAogICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShbd2luZG93Q29udHJv
bGxlci5nZXQoKSB3ZWJWaWV3XSk7Ci0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fd2ViVmlldywgd2luZG93Q29u
dHJvbGxlci5nZXQoKSwgaW5zcGVjdG9yQ29udHJvbGxlciwgbV9mcm9udGVuZFBhZ2UsIGNyZWF0
ZUZyb250ZW5kU2V0dGluZ3MoKSk7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5kQ2xp
ZW50LmdldCgpOwotICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZD4gd2ViSW5zcGVj
dG9yRnJvbnRlbmQgPSBhZG9wdE5TKFtbV2ViSW5zcGVjdG9yRnJvbnRlbmQgYWxsb2NdIGluaXRX
aXRoRnJvbnRlbmRDbGllbnQ6ZnJvbnRlbmRDbGllbnQuZ2V0KCldKTsKKyAgICBtX2Zyb250ZW5k
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV93
ZWJWaWV3LCB3aW5kb3dDb250cm9sbGVyLmdldCgpLCBpbnNwZWN0b3JDb250cm9sbGVyLCBtX2Zy
b250ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKKworICAgIFJldGFpblB0cjxX
ZWJJbnNwZWN0b3JGcm9udGVuZD4gd2ViSW5zcGVjdG9yRnJvbnRlbmQgPSBhZG9wdE5TKFtbV2Vi
SW5zcGVjdG9yRnJvbnRlbmQgYWxsb2NdIGluaXRXaXRoRnJvbnRlbmRDbGllbnQ6bV9mcm9udGVu
ZENsaWVudC5nZXQoKV0pOwogICAgIFtbbV93ZWJWaWV3IGluc3BlY3Rvcl0gc2V0RnJvbnRlbmQ6
d2ViSW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCldOwotICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV1RGOjptb3ZlKGZyb250
ZW5kQ2xpZW50KSk7CisKKyAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1fZnJvbnRlbmRDbGllbnQuZ2V0KCkpOworCiAg
ICAgcmV0dXJuIHRoaXM7CiB9CiAKQEAgLTE5OSw4ICsyMDAsOCBAQCB2b2lkIFdlYkluc3BlY3Rv
ckNsaWVudDo6ZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQpCiAKIHZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpyZWxlYXNlRnJvbnRlbmQoKQogewotICAgIG1fZnJvbnRlbmRDbGll
bnQgPSAwOwotICAgIG1fZnJvbnRlbmRQYWdlID0gMDsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0g
bnVsbHB0cjsKKyAgICBtX2Zyb250ZW5kUGFnZSA9IG51bGxwdHI7CiB9CiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5j
cHAKaW5kZXggM2YzNmRlZjhhYjA5OTM1MGZkZGE3MjFjNDNiYTZjZTQwYzM1NzNmYi4uOTBlZGRl
NTY2NWU2YjY3ZmQxNWQxZWRlMGI5NDhiNGEyNGZlODFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC02
OCw3ICs2OCw2IEBAIHN0YXRpYyBjb25zdCBJbnRSZWN0JiBkZWZhdWx0V2luZG93UmVjdCgpCiBX
ZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQog
ICAgIDogbV9pbnNwZWN0ZWRXZWJWaWV3KHdlYlZpZXcpCiAgICAgLCBtX2Zyb250ZW5kUGFnZSgw
KQotICAgICwgbV9mcm9udGVuZENsaWVudCgwKQogewogICAgIEFTU0VSVChtX2luc3BlY3RlZFdl
YlZpZXcpOwogICAgIG1faW5zcGVjdGVkV2ViVmlldy0+dmlld1dpbmRvdygmbV9pbnNwZWN0ZWRX
ZWJWaWV3SGFuZGxlKTsKQEAgLTE3MSw5ICsxNzAsOCBAQCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKElu
cwogICAgICAgICByZXR1cm4gMDsKIAogICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShmcm9udGVu
ZFdlYlZpZXcuZ2V0KCkpOwotICAgIGF1dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5z
cGVjdGVkV2ViVmlld0hhbmRsZSwgZnJvbnRlbmRId25kLCBmcm9udGVuZFdlYlZpZXcsIGZyb250
ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7Ci0gICAgbV9m
cm9udGVuZENsaWVudCA9IGZyb250ZW5kQ2xpZW50LmdldCgpOwotICAgIG1fZnJvbnRlbmRQYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV1RGOjpt
b3ZlKGZyb250ZW5kQ2xpZW50KSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgbV9p
bnNwZWN0ZWRXZWJWaWV3SGFuZGxlLCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJv
bnRlbmRXZWJWaWV3SHduZCwgdGhpcywgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKKyAgICBt
X2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5k
Q2xpZW50KG1fZnJvbnRlbmRDbGllbnQuZ2V0KCkpOwogICAgIG1fZnJvbnRlbmRIYW5kbGUgPSBm
cm9udGVuZEh3bmQ7CiAgICAgcmV0dXJuIHRoaXM7CiB9CkBAIC0yMTksNyArMjE3LDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnVwZGF0ZUhpZ2hsaWdodCgpCiAKIHZvaWQgV2ViSW5zcGVj
dG9yQ2xpZW50OjpyZWxlYXNlRnJvbnRlbmQoKQogewotICAgIG1fZnJvbnRlbmRDbGllbnQgPSAw
OworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBudWxscHRyOwogICAgIG1fZnJvbnRlbmRQYWdlID0g
MDsKICAgICBtX2Zyb250ZW5kSGFuZGxlID0gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggYjMxZGQ4OWI0
NjI4NmMzMGMxNDQyYThjZWNlMTQ3ODNlMDZkMDI0OC4uNDdmYmVhMGE4MDc0MWQ1Y2I5NzI4ZTgx
N2NjNDk3YTJlOTJiYzlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCByZWxlYXNlRnJvbnRlbmQoKTsKIAotICAgIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50KiBmcm9udGVuZENsaWVudCgpIHsgcmV0dXJuIG1fZnJvbnRlbmRDbGllbnQ7IH0KKyAg
ICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogZnJvbnRlbmRDbGllbnQoKSB7IHJldHVybiBt
X2Zyb250ZW5kQ2xpZW50LmdldCgpOyB9CiAKICAgICB2b2lkIHVwZGF0ZUhpZ2hsaWdodCgpOwog
CkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJWaWV3KiBtX2luc3BlY3RlZFdl
YlZpZXc7CiAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7Ci0gICAgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQqIG1fZnJvbnRlbmRDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2Zyb250ZW5kQ2xpZW50OwogICAgIEhXTkQg
bV9pbnNwZWN0ZWRXZWJWaWV3SGFuZGxlOwogICAgIEhXTkQgbV9mcm9udGVuZEhhbmRsZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dAppbmRleCA0ZjM5MjNkNDFiM2QzYzRlODkxNDU1ZTlmOGMwZDcxODI0
NmRlNmMyLi42YmRjNTlkYzVhMmViNzU0ODk3ZmRjYzk2NGIwM2JkYjQyY2RhNjNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
TWFrZUxpc3RzLnR4dApAQCAtNTMwLDcgKzUzMCw2IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAg
ICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAogICAg
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCiAgICAg
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCi0gICAgV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKICAg
ICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAKICAg
ICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKICAg
ICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5jcHAKQEAgLTU1Miw2
ICs1NTEsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkRvY3VtZW50TG9hZGVyLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
ICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorICAgIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcApAQCAtNjQ1
LDYgKzY0NSw3IEBAIHNldChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vz
cy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3MvV2Vi
UGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94
eS5tZXNzYWdlcy5pbgogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJj
ZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZWFlZjUx
NmZiODNiZTFmNDkzYzQ5NDZkYThlNzQwMDFlNTgwZDQyNC4uY2EwNmEwNjg5MmM0ZDdmM2E1MzMx
ODAwM2E5YzUzMTZkNmJiOTAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0x
MjEsNiArMTIxLDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgV2ViSWNvbkRhdGFiYXNl
UHJveHkgXAogICAgIFdlYkluc3BlY3RvciBcCiAgICAgV2ViSW5zcGVjdG9yUHJveHkgXAorICAg
IFdlYkluc3BlY3RvclVJIFwKICAgICBXZWJNZWRpYUNhY2hlTWFuYWdlciBcCiAgICAgV2ViTWVk
aWFDYWNoZU1hbmFnZXJQcm94eSBcCiAgICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlciBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDAxZTM0ZWEwYmY5Zjg4ZmI2ZmU5NmE0NjlhM2UyMjM2
MWYwYThkMWMuLmYwN2ZiNjM5MTE1ZWIxNDI2OWNkYzE2NzJjMDc5NGMxYmNkMGIzNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xOTQsNyArMTk0LDcgQEAgbGlzdChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvYXRrL1dlYlBhZ2VBY2Nlc3Np
YmlsaXR5T2JqZWN0QXRrLmNwcAogCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNw
ZWN0b3JFZmwuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JVSUVm
bC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCiAKICAgICBX
ZWJQcm9jZXNzL2VmbC9TZWNjb21wRmlsdGVyc1dlYlByb2Nlc3NFZmwuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlCmluZGV4IDY4NTY4NjFjODlmZWNlMjFhYjdmODk2MTBmODJlM2VhNDgxY2Yw
Y2EuLmZlNjNjMWY0NWEzYjBmYzZjMmVhZGM3Yjk2ODQ0MGRjNGZiYThkMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC0zMDIsNyArMzAyLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3Bw
CiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9QcmludGVyTGlzdEd0ay5jcHAKLSAgICBXZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3Rvckd0ay5jcHAKKyAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvV2ViUGFnZUd0ay5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3Bl
cmF0aW9uR3RrLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggNmRmNDkxODNk
MmJjNDYyNjVjYzA5ZjdiNWQ1NzRhMDdiM2MwYzU5Mi4uOTIyZTZkYTAzZmE1MWNkMWVmY2NjN2M2
N2ExZmYwYjc1MzE1MWQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaApAQCAtMTQzLDYg
KzE0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgQnVuZGxlRnJhbWUsCiAgICAgICAgIEJ1bmRsZUhp
dFRlc3RSZXN1bHQsCiAgICAgICAgIEJ1bmRsZUluc3BlY3RvciwKKyAgICAgICAgQnVuZGxlSW5z
cGVjdG9yVUksCiAgICAgICAgIEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIEJ1bmRs
ZU5vZGVIYW5kbGUsCiAgICAgICAgIEJ1bmRsZVBhZ2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvTGVnYWN5UHJvY2Vzcy9DaGlsZFBy
b2Nlc3NFbnRyeVBvaW50Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGls
aXRpZXMvbWFjL0xlZ2FjeVByb2Nlc3MvQ2hpbGRQcm9jZXNzRW50cnlQb2ludC5tbQppbmRleCAx
M2YzMDZlMDBlZGVhZmFlMTA1MjMzMzBmMzExN2Y2NjQxY2YzZDViLi5kOTVjZWZkY2E2ZTNkYWI3
MWExYWRlNmRmYTg5Yzg0MDk1NDE1YzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvTGVnYWN5UHJvY2Vzcy9DaGlsZFByb2Nlc3NFbnRy
eVBvaW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVz
L21hYy9MZWdhY3lQcm9jZXNzL0NoaWxkUHJvY2Vzc0VudHJ5UG9pbnQubW0KQEAgLTg4LDggKzg4
LDExIEBAIGJvb2wgQ2hpbGRQcm9jZXNzTWFpbkRlbGVnYXRlOjpnZXRDbGllbnRQcm9jZXNzTmFt
ZShTdHJpbmcmIGNsaWVudFByb2Nlc3NOYW1lKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IENoaWxkUHJvY2Vzc01haW5EZWxlZ2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlvbkRhdGEoSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4mKQorYm9vbCBDaGlsZFByb2Nlc3NNYWluRGVsZWdhdGU6Omdl
dEV4dHJhSW5pdGlhbGl6YXRpb25EYXRhKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBleHRyYUlu
aXRpYWxpemF0aW9uRGF0YSkKIHsKKyAgICBTdHJpbmcgaW5zcGVjdG9yUHJvY2VzcyA9IG1fY29t
bWFuZExpbmVbImluc3BlY3Rvci1wcm9jZXNzIl07CisgICAgaWYgKCFpbnNwZWN0b3JQcm9jZXNz
LmlzRW1wdHkoKSkKKyAgICAgICAgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKEFTQ0lJTGl0
ZXJhbCgiaW5zcGVjdG9yLXByb2Nlc3MiKSwgaW5zcGVjdG9yUHJvY2Vzcyk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50
VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZUVudHJ5UG9pbnQubW0KaW5kZXggMTY5N2VlOWIyNzI2ZjZhZGNhMGM2NzliYThmYzllMWM2
MThkMzk3Mi4uMzY1ZWE4ZDJiZGNhM2ZjMWY0OTI3Yjk5YTc0ZThkNDZjYjgyMWM0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1Nl
cnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQu
bW0KQEAgLTkyLDggKzkyLDE0IEBAIGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6
OmdldENsaWVudFByb2Nlc3NOYW1lKFN0cmluZyYgY2xpZW50UHJvY2Vzc05hCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldEV4dHJh
SW5pdGlhbGl6YXRpb25EYXRhKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JikKK2Jvb2wgWFBDU2Vy
dmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldEV4dHJhSW5pdGlhbGl6YXRpb25EYXRhKEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+JiBleHRyYUluaXRpYWxpemF0aW9uRGF0YSkKIHsKKyAgICB4cGNf
b2JqZWN0X3QgZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0ID0geHBjX2RpY3Rpb25h
cnlfZ2V0X3ZhbHVlKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAiZXh0cmEtaW5pdGlhbGl6YXRpb24t
ZGF0YSIpOworCisgICAgU3RyaW5nIGluc3BlY3RvclByb2Nlc3MgPSB4cGNfZGljdGlvbmFyeV9n
ZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCwgImluc3BlY3Rvci1w
cm9jZXNzIik7CisgICAgaWYgKCFpbnNwZWN0b3JQcm9jZXNzLmlzRW1wdHkoKSkKKyAgICAgICAg
ZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKEFTQ0lJTGl0ZXJhbCgiaW5zcGVjdG9yLXByb2Nl
c3MiKSwgaW5zcGVjdG9yUHJvY2Vzcyk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAKaW5kZXggMTZlODQ1
YjA3NGU0M2RkNTJkYTk4ZmVmNzFmOTU2OWE2MmZmOWYwYi4uOGM5OTc1YjRjOWY3ZTg3ZTEwZmIw
ZGU1MzgwMWQ5N2Q3ZGNhOWI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tJbnNwZWN0b3IuY3BwCkBAIC0xNzQsNDIgKzE3NCwzMCBAQCB2b2lkIFdLSW5zcGVjdG9y
RGV0YWNoKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKICNlbmRpZgogfQogCi1ib29sIFdL
SW5zcGVjdG9ySXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJl
ZikKK2Jvb2wgV0tJbnNwZWN0b3JJc0RlYnVnZ2luZ0phdmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYp
CiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICByZXR1cm4gdG9JbXBsKGluc3BlY3RvclJl
ZiktPmlzRGVidWdnaW5nSmF2YVNjcmlwdCgpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oaW5z
cGVjdG9yUmVmKTsKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBmb3IgYmFja3dhcmRzIGNvbXBhdGli
aWxpdHkgd2l0aCBuaWdodGx5IGJ1aWxkcyBhbmQgU2FmYXJpLgorICAgIC8vIFJlbW92ZSBpdCBv
bmNlIFNhZmFyaSBubyBsb25nZXIgZGVwZW5kcyBvbiBpdC4KICAgICByZXR1cm4gZmFsc2U7Ci0j
ZW5kaWYKIH0KIAotdm9pZCBXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHREZWJ1Z2dpbmcoV0tJ
bnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQordm9pZCBXS0luc3BlY3RvclRvZ2dsZUphdmFTY3Jp
cHREZWJ1Z2dpbmcoV0tJbnNwZWN0b3JSZWYpCiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAg
ICB0b0ltcGwoaW5zcGVjdG9yUmVmKS0+dG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZygpOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oaW5zcGVjdG9yUmVmKTsKLSNlbmRpZgorICAgIC8vIEZJWE1F
OiBUaGlzIGlzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIG5pZ2h0bHkgYnVpbGRz
IGFuZCBTYWZhcmkuCisgICAgLy8gUmVtb3ZlIGl0IG9uY2UgU2FmYXJpIG5vIGxvbmdlciBkZXBl
bmRzIG9uIGl0LgogfQogCi1ib29sIFdLSW5zcGVjdG9ySXNQcm9maWxpbmdKYXZhU2NyaXB0KFdL
SW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKK2Jvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ0ph
dmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYpCiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBy
ZXR1cm4gdG9JbXBsKGluc3BlY3RvclJlZiktPmlzUHJvZmlsaW5nSmF2YVNjcmlwdCgpOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oaW5zcGVjdG9yUmVmKTsKKyAgICAvLyBGSVhNRTogVGhpcyBp
cyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBuaWdodGx5IGJ1aWxkcyBhbmQgU2Fm
YXJpLgorICAgIC8vIFJlbW92ZSBpdCBvbmNlIFNhZmFyaSBubyBsb25nZXIgZGVwZW5kcyBvbiBp
dC4KICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKIH0KIAotdm9pZCBXS0luc3BlY3RvclRvZ2ds
ZUphdmFTY3JpcHRQcm9maWxpbmcoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQordm9pZCBX
S0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmcoV0tJbnNwZWN0b3JSZWYpCiB7Ci0j
aWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICB0b0ltcGwoaW5zcGVjdG9yUmVmKS0+dG9nZ2xlSmF2
YVNjcmlwdFByb2ZpbGluZygpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oaW5zcGVjdG9yUmVm
KTsKLSNlbmRpZgorICAgIC8vIEZJWE1FOiBUaGlzIGlzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJp
bGl0eSB3aXRoIG5pZ2h0bHkgYnVpbGRzIGFuZCBTYWZhcmkuCisgICAgLy8gUmVtb3ZlIGl0IG9u
Y2UgU2FmYXJpIG5vIGxvbmdlciBkZXBlbmRzIG9uIGl0LgogfQogCiBib29sIFdLSW5zcGVjdG9y
SXNQcm9maWxpbmdQYWdlKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmgKaW5kZXggYmE3NjQ4OTMyNWYxNTQx
NDY3YTRkN2UxMGMwYjIwYzcxN2Q5MTk4OS4uMjA2NTc4ZDU0M2IyYjI2ZDVhOWNiNmMzZTA4NjFk
MjMyMjAwNWFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
SW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVj
dG9yLmgKQEAgLTU4LDE1ICs1OCwxNyBAQCBXS19FWFBPUlQgYm9vbCBXS0luc3BlY3RvcklzQXR0
YWNoZWQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKIFdLX0VYUE9SVCB2b2lkIFdLSW5zcGVj
dG9yQXR0YWNoKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7CiBXS19FWFBPUlQgdm9pZCBXS0lu
c3BlY3RvckRldGFjaChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwogCitXS19FWFBPUlQgYm9v
bCBXS0luc3BlY3RvcklzUHJvZmlsaW5nUGFnZShXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwor
V0tfRVhQT1JUIHZvaWQgV0tJbnNwZWN0b3JUb2dnbGVQYWdlUHJvZmlsaW5nKFdLSW5zcGVjdG9y
UmVmIGluc3BlY3Rvcik7CisKKy8vIEZJWE1FOiBUaGVzZSBhcmUgZm9yIGJhY2t3YXJkcyBjb21w
YXRpYmlsaXR5IHdpdGggbmlnaHRseSBidWlsZHMgYW5kIFNhZmFyaS4KKy8vIFJlbW92ZSB0aGVt
IG9uY2UgU2FmYXJpIG5vIGxvbmdlciBkZXBlbmRzIG9uIHRoZW0uCiBXS19FWFBPUlQgYm9vbCBX
S0luc3BlY3RvcklzRGVidWdnaW5nSmF2YVNjcmlwdChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3Ip
OwogV0tfRVhQT1JUIHZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKFdL
SW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7CiAKIFdLX0VYUE9SVCBib29sIFdLSW5zcGVjdG9ySXNQ
cm9maWxpbmdKYXZhU2NyaXB0KFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7CiBXS19FWFBPUlQg
dm9pZCBXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmcoV0tJbnNwZWN0b3JSZWYg
aW5zcGVjdG9yKTsKIAotV0tfRVhQT1JUIGJvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ1BhZ2Uo
V0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKLVdLX0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9yVG9n
Z2xlUGFnZVByb2ZpbGluZyhXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwotCiAjaWZkZWYgX19j
cGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNw
ZWN0b3JQcm94eS5jcHAKaW5kZXggYmUzNzcwNGNiYTgzYjJkNjNkZjZiMThmNDk0Nzk0NjIxZjJh
YzAyNC4uOTk0ZmJkOTAwNDFhNzUyNzhiZTY0NDNiMDY0NzVjN2UxYzBmYTI1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmls
aXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzAs
MTEgKzMwLDEyIEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogI2luY2x1ZGUgIkFQSVVSTFJl
cXVlc3QuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgogI2luY2x1ZGUg
IldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNz
YWdlcy5oIgotI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRl
ICJXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKQEAg
LTU3LDkgKzU4LDYgQEAgY29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6Om1pbmltdW1X
aW5kb3dIZWlnaHQgPSA0MDA7CiBjb25zdCB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5p
dGlhbFdpbmRvd1dpZHRoID0gMTAwMDsKIGNvbnN0IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5
Ojppbml0aWFsV2luZG93SGVpZ2h0ID0gNjUwOwogCi1jb25zdCB1bnNpZ25lZCBXZWJJbnNwZWN0
b3JQcm94eTo6bWluaW11bUF0dGFjaGVkV2lkdGggPSA3NTA7Ci1jb25zdCB1bnNpZ25lZCBXZWJJ
bnNwZWN0b3JQcm94eTo6bWluaW11bUF0dGFjaGVkSGVpZ2h0ID0gMjUwOwotCiBjbGFzcyBXZWJJ
bnNwZWN0b3JQYWdlR3JvdXBzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViSW5zcGVjdG9yUGFn
ZUdyb3VwcyYgc2hhcmVkKCkKQEAgLTEwNSwxMSArMTAzLDEyIEBAIHByaXZhdGU6CiAgICAgICAg
IFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKFN0
cmluZzo6Zm9ybWF0KCJfX1dlYkluc3BlY3RvclBhZ2VHcm91cExldmVsJXVfXyIsIGxldmVsKSwg
ZmFsc2UsIGZhbHNlKTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLy8gQWxsb3cgZGV2ZWxv
cGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcy4KKyAgICAg
ICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRl
YnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgogICAgICAgICBwYWdlR3JvdXAt
PnByZWZlcmVuY2VzKCkuc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKICAgICAgICAg
cGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnNldExvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNv
bGVFbmFibGVkKHRydWUpOwogI2VuZGlmCiAKKyAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJlbmNl
cygpLnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyh0cnVlKTsKICAgICAgICAgcGFnZUdy
b3VwLT5wcmVmZXJlbmNlcygpLnNldEFwcGxpY2F0aW9uQ2hyb21lTW9kZUVuYWJsZWQodHJ1ZSk7
CiAKICAgICAgICAgcmV0dXJuIHBhZ2VHcm91cC5yZWxlYXNlKCk7CkBAIC0xMjQsMTMgKzEyMywx
MyBAQCBwcml2YXRlOgogCiBXZWJJbnNwZWN0b3JQcm94eTo6V2ViSW5zcGVjdG9yUHJveHkoV2Vi
UGFnZVByb3h5KiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX2luc3BlY3RvclBh
Z2UobnVsbHB0cikKKyAgICAsIG1fdW5kZXJUZXN0KGZhbHNlKQogICAgICwgbV9pc1Zpc2libGUo
ZmFsc2UpCiAgICAgLCBtX2lzQXR0YWNoZWQoZmFsc2UpCi0gICAgLCBtX2lzRGVidWdnaW5nSmF2
YVNjcmlwdChmYWxzZSkKLSAgICAsIG1faXNQcm9maWxpbmdKYXZhU2NyaXB0KGZhbHNlKQorICAg
ICwgbV9jYW5BdHRhY2goZmFsc2UpCiAgICAgLCBtX2lzUHJvZmlsaW5nUGFnZShmYWxzZSkKICAg
ICAsIG1fc2hvd01lc3NhZ2VTZW50KGZhbHNlKQotICAgICwgbV9jcmVhdGVkSW5zcGVjdG9yUGFn
ZShmYWxzZSkKICAgICAsIG1faWdub3JlRmlyc3RCcmluZ1RvRnJvbnQoZmFsc2UpCiAgICAgLCBt
X2F0dGFjaG1lbnRTaWRlKEF0dGFjaG1lbnRTaWRlQm90dG9tKQogI2lmIFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oRUZMKQpAQCAtMTY1LDcgKzE2NCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OmludmFsaWRhdGUoKQogCiAgICAgZGlkQ2xvc2UoKTsKIAotICAgIG1fcGFnZSA9IDA7Cisg
ICAgbV9wYWdlID0gbnVsbHB0cjsKIH0KIAogLy8gUHVibGljIEFQSXMKQEAgLTE4OCw2ICsxODcs
OCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpjb25uZWN0KCkKICAgICBtX3Nob3dNZXNzYWdl
U2VudCA9IHRydWU7CiAgICAgbV9pZ25vcmVGaXJzdEJyaW5nVG9Gcm9udCA9IHRydWU7CiAKKyAg
ICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOworCiAgICAgbV9wYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93KCksIG1fcGFnZS0+cGFnZUlEKCkpOwog
fQogCkBAIC0yMzIsNiArMjMzLDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd0NvbnNv
bGUoKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKKyAgICBlYWdlcmx5Q3Jl
YXRlSW5zcGVjdG9yUGFnZSgpOworCiAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpTaG93Q29uc29sZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIApA
QCAtMjQwLDYgKzI0Myw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dSZXNvdXJjZXMo
KQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKKyAgICBlYWdlcmx5Q3JlYXRl
SW5zcGVjdG9yUGFnZSgpOworCiAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjpTaG93UmVzb3VyY2VzKCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCkBA
IC0yNDgsNiArMjUzLDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd01haW5SZXNvdXJj
ZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lKQogICAgIGlmICghbV9wYWdlKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOworCiAgICAgbV9w
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93TWFpblJlc291
cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCkBA
IC0yNzQsMTMgKzI4MSwxNSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2goQXR0YWNo
bWVudFNpZGUgc2lkZSkKICAgICBpZiAobV9pc1Zpc2libGUpCiAgICAgICAgIGluc3BlY3RvclBh
Z2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKHRydWUp
OwogCisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpT
ZXRBdHRhY2hlZCh0cnVlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisKICAgICBzd2l0Y2ggKG1fYXR0
YWNobWVudFNpZGUpIHsKICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlQm90dG9tOgotICAgICAgICBt
X3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVkQm90
dG9tKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9p
bnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBBdHRh
Y2htZW50U2lkZVJpZ2h0OgotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVkUmlnaHQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
ICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clVJOjpBdHRhY2hlZFJpZ2h0KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAKQEAgLTI5Nyw3ICszMDYsOCBAQCB2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjpkZXRhY2goKQogICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAgaW5zcGVjdG9yUGFn
ZUdyb3VwKCktPnByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoZmFsc2Up
OwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpE
ZXRhY2hlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKGZhbHNlKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yVUk6OkRldGFjaGVkKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogCiAg
ICAgcGxhdGZvcm1EZXRhY2goKTsKIH0KQEAgLTMxNCwzNCArMzI0LDYgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKICAgICBw
bGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgod2lkdGgpOwogfQogCi12b2lkIFdlYkluc3Bl
Y3RvclByb3h5Ojp0b2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKCkKLXsKLSAgICBpZiAoIW1fcGFn
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KQot
ICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0
b3BKYXZhU2NyaXB0RGVidWdnaW5nKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAgIGVsc2UKLSAg
ICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdGFy
dEphdmFTY3JpcHREZWJ1Z2dpbmcoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0KLSAgICAvLyBGSVhN
RTogaGF2ZSB0aGUgV2ViUHJvY2VzcyBub3RpZnkgdXMgb24gc3RhdGUgY2hhbmdlcy4KLSAgICBt
X2lzRGVidWdnaW5nSmF2YVNjcmlwdCA9ICFtX2lzRGVidWdnaW5nSmF2YVNjcmlwdDsKLX0KLQot
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlSmF2YVNjcmlwdFByb2ZpbGluZygpCi17Ci0g
ICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2lzUHJvZmlsaW5n
SmF2YVNjcmlwdCkKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yOjpTdG9wSmF2YVNjcmlwdFByb2ZpbGluZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
LSAgICBlbHNlCi0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6U3RhcnRKYXZhU2NyaXB0UHJvZmlsaW5nKCksIG1fcGFnZS0+cGFnZUlEKCkpOwot
Ci0gICAgLy8gRklYTUU6IGhhdmUgdGhlIFdlYlByb2Nlc3Mgbm90aWZ5IHVzIG9uIHN0YXRlIGNo
YW5nZXMuCi0gICAgbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQgPSAhbV9pc1Byb2ZpbGluZ0phdmFT
Y3JpcHQ7Ci19Ci0KIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnRvZ2dsZVBhZ2VQcm9maWxpbmco
KQogewogICAgIGlmICghbV9wYWdlKQpAQCAtMzYxLDYgKzM0MywyNCBAQCBib29sIFdlYkluc3Bl
Y3RvclByb3h5Ojppc0luc3BlY3RvclBhZ2UoV2ViUGFnZVByb3h5JiBwYWdlKQogICAgIHJldHVy
biBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjpzaGFyZWQoKS5pc0luc3BlY3RvclBhZ2VHcm91cChw
YWdlLnBhZ2VHcm91cCgpKTsKIH0KIAorV2ViQ29udGV4dCYgV2ViSW5zcGVjdG9yUHJveHk6Omlu
c3BlY3RvckNvbnRleHQoKQoreworICAgIC8vIEhhdmluZyBvdXIgb3duIGNvbnRleHQgcmVtb3Zl
cyB1cyBmcm9tIHRoZSBtYWluIGNvbnRleHQncyBwcm9jZXNzIHBvb2wgYW5kCisgICAgLy8gZ3Vh
cmFudGVlcyBubyBwcm9jZXNzIHNoYXJpbmcgZm9yIG91ciB1c2VyIGludGVyZmFjZS4KKworICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVz
dHJveWVkPFJlZlB0cjxXZWJDb250ZXh0Pj4gY29udGV4dDsKKworICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFdlYkNvbnRleHRDb25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpb247CisgICAgICAgIFdlYkNvbnRleHQ6OmFwcGx5UGxhdGZvcm1TcGVjaWZpY0NvbmZpZ3Vy
YXRpb25EZWZhdWx0cyhjb25maWd1cmF0aW9uKTsKKyAgICAgICAgY29udGV4dC5jb25zdHJ1Y3Qo
V2ViQ29udGV4dDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICAgICAgY29udGV4dC5nZXQo
KS0+c2V0UHJvY2Vzc01vZGVsKFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2Vz
KTsKKyAgICB9KTsKKworICAgIHJldHVybiAqY29udGV4dC5nZXQoKTsKK30KKwogc3RhdGljIGJv
b2wgaXNNYWluT3JUZXN0SW5zcGVjdG9yUGFnZShjb25zdCBXZWJJbnNwZWN0b3JQcm94eSogd2Vi
SW5zcGVjdG9yUHJveHksIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQogewogICAgIFVSTCBy
ZXF1ZXN0VVJMKFVSTCgpLCB0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpLnVy
bCgpKTsKQEAgLTQyNiwyOSArNDI2LDIwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnJlbW90
ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGlzcGF0
Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkRpc3BhdGNo
TWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChtZXNzYWdlKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZW5kTWVz
c2FnZVRvQmFja2VuZChtZXNzYWdlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAjZW5kaWYKIAot
Ly8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2VzCi12b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIGluc3BlY3RvclBhZ2VQYXJhbWV0ZXJzKQordm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6ZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogewotICAgIGlu
c3BlY3RvclBhZ2VJRCA9IDA7Ci0KLSAgICBpZiAoIW1fcGFnZSkKKyAgICBpZiAobV9pbnNwZWN0
b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2lzQXR0YWNoZWQgPSBzaG91bGRPcGVu
QXR0YWNoZWQoKTsKLSAgICBtX2F0dGFjaG1lbnRTaWRlID0gc3RhdGljX2Nhc3Q8QXR0YWNobWVu
dFNpZGU+KGluc3BlY3RvclBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLmluc3BlY3RvckF0dGFj
aG1lbnRTaWRlKCkpOwotCi0gICAgV2ViUGFnZVByb3h5KiBpbnNwZWN0b3JQYWdlID0gcGxhdGZv
cm1DcmVhdGVJbnNwZWN0b3JQYWdlKCk7Ci0gICAgQVNTRVJUKGluc3BlY3RvclBhZ2UpOwotICAg
IGlmICghaW5zcGVjdG9yUGFnZSkKKyAgICBtX2luc3BlY3RvclBhZ2UgPSBwbGF0Zm9ybUNyZWF0
ZUluc3BlY3RvclBhZ2UoKTsKKyAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKKyAgICBpZiAo
IW1faW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW5zcGVjdG9yUGFnZUlE
ID0gaW5zcGVjdG9yUGFnZS0+cGFnZUlEKCk7Ci0gICAgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMg
PSBpbnNwZWN0b3JQYWdlLT5jcmVhdGlvblBhcmFtZXRlcnMoKTsKLQogICAgIFdLUGFnZVBvbGlj
eUNsaWVudFYxIHBvbGljeUNsaWVudCA9IHsKICAgICAgICAgeyAxLCB0aGlzIH0sCiAgICAgICAg
IDAsIC8qIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVzZVdp
dGhWMCAqLwpAQCAtNDU5LDczICs0NTAsNTcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3Jl
YXRlSW5zcGVjdG9yUGFnZSh1aW50NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQYWdlQ3IKICAg
ICAgICAgMCwgLyogZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UgKi8KICAgICB9OwogCi0gICAgV0tQ
YWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSShpbnNwZWN0b3JQYWdlKSwgJnBvbGljeUNsaWVu
dC5iYXNlKTsKLQotICAgIFN0cmluZ0J1aWxkZXIgdXJsOwotCi0gICAgdXJsLmFwcGVuZChpbnNw
ZWN0b3JQYWdlVVJMKCkpOwotCi0gICAgdXJsLmFwcGVuZExpdGVyYWwoIj9kb2NrU2lkZT0iKTsK
LQotICAgIGlmIChtX2lzQXR0YWNoZWQpIHsKLSAgICAgICAgc3dpdGNoIChtX2F0dGFjaG1lbnRT
aWRlKSB7Ci0gICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVCb3R0b206Ci0gICAgICAgICAgICB1
cmwuYXBwZW5kTGl0ZXJhbCgiYm90dG9tIik7Ci0gICAgICAgICAgICBtX3BhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVkQm90dG9tKCksIG1fcGFnZS0+
cGFnZUlEKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQXR0YWNobWVudFNp
ZGVSaWdodDoKLSAgICAgICAgICAgIHVybC5hcHBlbmRMaXRlcmFsKCJyaWdodCIpOwotICAgICAg
ICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpBdHRh
Y2hlZFJpZ2h0KCksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgdXJsLmFwcGVuZExpdGVyYWwoInVuZG9ja2VkIik7
CisgICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSShtX2luc3BlY3RvclBhZ2UpLCAm
cG9saWN5Q2xpZW50LmJhc2UpOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFj
Y2Vzc1RvQmFzZVVSTChpbnNwZWN0b3JCYXNlVVJMKCkpOwotCi0gICAgaW5zcGVjdG9yUGFnZS0+
bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCB1cmwudG9TdHJpbmcoKSkpOwotCi0gICAgbV9jcmVhdGVk
SW5zcGVjdG9yUGFnZSA9IHRydWU7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JQYWdl
LT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChpbnNwZWN0b3JCYXNlVVJMKCkp
OwogfQogCi12b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVz
dCh1aW50NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBp
bnNwZWN0b3JQYWdlUGFyYW1ldGVycykKKy8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JQcm94eSBt
ZXNzYWdlcwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6
OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgY2FuQXR0YWNoLCBib29sIHVu
ZGVyVGVzdCkKIHsKLSAgICBpbnNwZWN0b3JQYWdlSUQgPSAwOwotCiAgICAgaWYgKCFtX3BhZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1faXNBdHRhY2hlZCA9IGZhbHNlOworICAgIGVhZ2Vy
bHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CiAKLSAgICBXZWJQYWdlUHJveHkqIGluc3BlY3RvclBh
Z2UgPSBwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKLSAgICBBU1NFUlQoaW5zcGVjdG9y
UGFnZSk7Ci0gICAgaWYgKCFpbnNwZWN0b3JQYWdlKQorICAgIEFTU0VSVChtX2luc3BlY3RvclBh
Z2UpOworICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
bnNwZWN0b3JQYWdlSUQgPSBpbnNwZWN0b3JQYWdlLT5wYWdlSUQoKTsKLSAgICBpbnNwZWN0b3JQ
YWdlUGFyYW1ldGVycyA9IGluc3BlY3RvclBhZ2UtPmNyZWF0aW9uUGFyYW1ldGVycygpOworICAg
IG1fdW5kZXJUZXN0ID0gdW5kZXJUZXN0OwogCi0gICAgV0tQYWdlUG9saWN5Q2xpZW50VjEgcG9s
aWN5Q2xpZW50ID0gewotICAgICAgICB7IDEsIHRoaXMgfSwKLSAgICAgICAgMCwgLyogZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwICovCi0gICAg
ICAgIDAsIC8qIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbiAqLwotICAgICAgICAwLCAv
KiBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwICovCi0gICAg
ICAgIDAsIC8qIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5ICovCi0gICAgICAgIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24sCi0gICAgICAgIDAsIC8qIGRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlICovCi0gICAgfTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRp
ZmllciwgbV9wYWdlLT5wYWdlSUQoKSwgbV91bmRlclRlc3QpLCBtX2luc3BlY3RvclBhZ2UtPnBh
Z2VJRCgpKTsKIAotICAgIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQodG9BUEkoaW5zcGVjdG9y
UGFnZSksICZwb2xpY3lDbGllbnQuYmFzZSk7CisgICAgaWYgKCFtX3VuZGVyVGVzdCkgeworICAg
ICAgICBtX2NhbkF0dGFjaCA9IGNhbkF0dGFjaDsKKyAgICAgICAgbV9pc0F0dGFjaGVkID0gc2hv
dWxkT3BlbkF0dGFjaGVkKCk7CisgICAgICAgIG1fYXR0YWNobWVudFNpZGUgPSBzdGF0aWNfY2Fz
dDxBdHRhY2htZW50U2lkZT4oaW5zcGVjdG9yUGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkuaW5z
cGVjdG9yQXR0YWNobWVudFNpZGUoKSk7CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hc3N1bWVS
ZWFkQWNjZXNzVG9CYXNlVVJMKGluc3BlY3RvckJhc2VVUkwoKSk7CisgICAgICAgIG1fcGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQobV9pc0F0
dGFjaGVkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiAKLSAgICBpbnNwZWN0b3JQYWdlLT5sb2FkUmVx
dWVzdChVUkwoVVJMKCksIGluc3BlY3RvclRlc3RQYWdlVVJMKCkpKTsKKyAgICAgICAgaWYgKG1f
aXNBdHRhY2hlZCkgeworICAgICAgICAgICAgc3dpdGNoIChtX2F0dGFjaG1lbnRTaWRlKSB7Cisg
ICAgICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlQm90dG9tOgorICAgICAgICAgICAgICAgIG1f
aW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpB
dHRhY2hlZEJvdHRvbSgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKIAotICAgIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UgPSB0cnVlOworICAgICAg
ICAgICAgY2FzZSBBdHRhY2htZW50U2lkZVJpZ2h0OgorICAgICAgICAgICAgICAgIG1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hl
ZFJpZ2h0KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEZXRhY2hl
ZCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICB9CisKKyAgICBtX2luc3BlY3Rv
clBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgbV91bmRlclRlc3QgPyBpbnNwZWN0b3JUZXN0
UGFnZVVSTCgpIDogaW5zcGVjdG9yUGFnZVVSTCgpKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6Om9wZW4oKQogeworICAgIGlmIChtX3VuZGVyVGVzdCkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgbV9pc1Zpc2libGUgPSB0cnVlOwogCiAgICAgcGxhdGZvcm1PcGVuKCk7CkBAIC01MzMs
MjAgKzUwOCwyMyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuKCkKIAogdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6ZGlkQ2xvc2UoKQogewotICAgIGlmICghbV9jcmVhdGVkSW5zcGVjdG9y
UGFnZSkKKyAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
bV9pbnNwZWN0b3JQYWdlLT5jbG9zZSgpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdl
ID0gbnVsbHB0cjsKKwogICAgIG1faXNWaXNpYmxlID0gZmFsc2U7Ci0gICAgbV9pc0RlYnVnZ2lu
Z0phdmFTY3JpcHQgPSBmYWxzZTsKLSAgICBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdCA9IGZhbHNl
OwogICAgIG1faXNQcm9maWxpbmdQYWdlID0gZmFsc2U7Ci0gICAgbV9jcmVhdGVkSW5zcGVjdG9y
UGFnZSA9IGZhbHNlOwogICAgIG1fc2hvd01lc3NhZ2VTZW50ID0gZmFsc2U7CiAgICAgbV9pZ25v
cmVGaXJzdEJyaW5nVG9Gcm9udCA9IGZhbHNlOwogCiAgICAgaWYgKG1faXNBdHRhY2hlZCkKICAg
ICAgICAgcGxhdGZvcm1EZXRhY2goKTsKICAgICBtX2lzQXR0YWNoZWQgPSBmYWxzZTsKKyAgICBt
X2NhbkF0dGFjaCA9IGZhbHNlOworICAgIG1fdW5kZXJUZXN0ID0gZmFsc2U7CiAKICAgICBwbGF0
Zm9ybURpZENsb3NlKCk7CiB9CkBAIC01NjksNiArNTQ3LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6YnJpbmdUb0Zyb250KCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoQXZh
aWxhYmlsaXR5Q2hhbmdlZChib29sIGF2YWlsYWJsZSkKIHsKKyAgICBtX2NhbkF0dGFjaCA9IGF2
YWlsYWJsZTsKKwogICAgIHBsYXRmb3JtQXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChhdmFpbGFi
bGUpOwogfQogCkBAIC01ODcsMjggKzU2Nyw2IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmFw
cGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiAgICAg
cGxhdGZvcm1BcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpOwogfQogCi1ib29sIFdlYkluc3BlY3Rv
clByb3h5OjpjYW5BdHRhY2goKQotewotICAgIC8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2FuQXR0YWNoV2luZG93LiBUaGVyZSBhcmUgdHdv
IGltcGxlbWVudGF0aW9ucwotICAgIC8vIHRvIG1ha2UgbGlmZSBlYXNpZXIgaW4gdGhlIG11bHRp
LXByb2Nlc3Mgd29ybGQgd2UgaGF2ZS4gV2ViSW5zcGVjdG9yUHJveHkgdXNlcyBjYW5BdHRhY2gg
dG8gZGVjaWRlIGlmCi0gICAgLy8gd2UgY2FuIGF0dGFjaCBvbiBvcGVuIChvbiB0aGUgVUkgcHJv
Y2VzcyBzaWRlKS4gQW5kIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNhbkF0dGFjaFdp
bmRvdyBpcwotICAgIC8vIHVzZWQgdG8gZGVjaWRlIGlmIHdlIGNhbiBhdHRhY2ggd2hlbiB0aGUg
YXR0YWNoIGJ1dHRvbiBpcyBwcmVzc2VkIChvbiB0aGUgV2ViUHJvY2VzcyBzaWRlKS4KLQotICAg
IC8vIElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCBhbGxvdyBhdHRhY2hpbmcgYWdhaW4gdG8g
YWxsb3cgc3dpdGNoaW5nIHNpZGVzLgotICAgIGlmIChtX2lzQXR0YWNoZWQpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgLy8gRG9uJ3QgYWxsb3cgYXR0YWNoaW5nIHRvIGFub3RoZXIgaW5z
cGVjdG9yIC0tIHR3byBpbnNwZWN0b3JzIGluIG9uZSB3aW5kb3cgaXMgdG9vIG11Y2ghCi0gICAg
aWYgKG1fbGV2ZWwgPiAxKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBEb24ndCBh
bGxvdyB0aGUgYXR0YWNoIGlmIHRoZSB3aW5kb3cgd291bGQgYmUgdG9vIHNtYWxsIHRvIGFjY29t
bW9kYXRlIHRoZSBtaW5pbXVtIGluc3BlY3RvciBoZWlnaHQuCi0gICAgdW5zaWduZWQgaW5zcGVj
dGVkUGFnZUhlaWdodCA9IHBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0KCk7Ci0gICAgdW5z
aWduZWQgaW5zcGVjdGVkUGFnZVdpZHRoID0gcGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dXaWR0aCgp
OwotICAgIHVuc2lnbmVkIG1heGltdW1BdHRhY2hlZEhlaWdodCA9IGluc3BlY3RlZFBhZ2VIZWln
aHQgKiAzIC8gNDsKLSAgICByZXR1cm4gbWluaW11bUF0dGFjaGVkSGVpZ2h0IDw9IG1heGltdW1B
dHRhY2hlZEhlaWdodCAmJiBtaW5pbXVtQXR0YWNoZWRXaWR0aCA8PSBpbnNwZWN0ZWRQYWdlV2lk
dGg7Ci19Ci0KIGJvb2wgV2ViSW5zcGVjdG9yUHJveHk6OnNob3VsZE9wZW5BdHRhY2hlZCgpCiB7
CiAgICAgcmV0dXJuIGluc3BlY3RvclBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLmluc3BlY3Rv
clN0YXJ0c0F0dGFjaGVkKCkgJiYgY2FuQXR0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDE3YTc0OTgyZTc0OWMxMDExNmExMWU1OTA5
OGFjZjQ0YTIwMDI5NDMuLjA2NWQ3ZTEzY2NjODZhYTJmNGExNDZjYzU2OWQyOTY4YjRkNWJkNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xh
IE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApA
QCAtMzAsNiArMzAsNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJBUElP
YmplY3QuaCIKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgpAQCAtNTksMTAgKzYwLDEwIEBAIE9CSkNfQ0xBU1MgV0tXZWJJbnNwZWN0b3JXS1ZpZXc7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJDb250ZXh0OwogY2xhc3MgV2ViRnJh
bWVQcm94eTsKIGNsYXNzIFdlYlBhZ2VHcm91cDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKLXN0cnVj
dCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBlbnVtIEF0dGFjaG1lbnRTaWRlIHsKICAg
ICBBdHRhY2htZW50U2lkZUJvdHRvbSwKQEAgLTgzLDcgKzg0LDcgQEAgcHVibGljOgogICAgIC8v
IFB1YmxpYyBBUElzCiAgICAgV2ViUGFnZVByb3h5KiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlOyB9CiAKLSAgICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGVk
SW5zcGVjdG9yUGFnZTsgfQorICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiAh
IW1faW5zcGVjdG9yUGFnZTsgfQogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9pc1Zpc2libGU7IH0KICAgICBib29sIGlzRnJvbnQoKTsKIApAQCAtMTIzLDE2ICsxMjQsMTEg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCk7CiAg
ICAgdm9pZCBzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkgeyBwbGF0Zm9ybVNldFRv
b2xiYXJIZWlnaHQoaGVpZ2h0KTsgfQogCi0gICAgYm9vbCBpc0RlYnVnZ2luZ0phdmFTY3JpcHQo
KSBjb25zdCB7IHJldHVybiBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdDsgfQotICAgIHZvaWQgdG9n
Z2xlSmF2YVNjcmlwdERlYnVnZ2luZygpOwotCi0gICAgYm9vbCBpc1Byb2ZpbGluZ0phdmFTY3Jp
cHQoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdDsgfQotICAgIHZvaWQg
dG9nZ2xlSmF2YVNjcmlwdFByb2ZpbGluZygpOwotCiAgICAgYm9vbCBpc1Byb2ZpbGluZ1BhZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2lzUHJvZmlsaW5nUGFnZTsgfQogICAgIHZvaWQgdG9nZ2xlUGFn
ZVByb2ZpbGluZygpOwogCiAgICAgc3RhdGljIGJvb2wgaXNJbnNwZWN0b3JQYWdlKFdlYlBhZ2VQ
cm94eSYpOworICAgIHN0YXRpYyBXZWJDb250ZXh0JiBpbnNwZWN0b3JDb250ZXh0KCk7CiAKICAg
ICAvLyBQcm92aWRlZCBieSBwbGF0Zm9ybSBXZWJJbnNwZWN0b3JQcm94eSBpbXBsZW1lbnRhdGlv
bnMuCiAgICAgU3RyaW5nIGluc3BlY3RvclBhZ2VVUkwoKSBjb25zdDsKQEAgLTE1MCw5ICsxNDYs
MTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JQcm94eShX
ZWJQYWdlUHJveHkqKTsKIAorICAgIHZvaWQgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsK
KwogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biosIElQQzo6TWVzc2FnZURlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5j
b2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIFdlYlBhZ2VQcm94eSogcGxhdGZvcm1DcmVhdGVJbnNw
ZWN0b3JQYWdlKCk7CiAgICAgdm9pZCBwbGF0Zm9ybU9wZW4oKTsKQEAgLTE3Myw4ICsxNzAsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKIAogICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0
b3JQcm94eSBtZXNzYWdlcwotICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZSh1aW50NjRfdCYg
aW5zcGVjdG9yUGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7Ci0gICAgdm9pZCBj
cmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCh1aW50NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CisgICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JQYWdlKElQ
Qzo6QXR0YWNobWVudCwgYm9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXN0KTsKICAgICB2b2lk
IGRpZENsb3NlKCk7CiAgICAgdm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2b2lkIGF0dGFjaEF2
YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCk7CkBAIC0xODcsNyArMTgzLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
OwogI2VuZGlmCiAKLSAgICBib29sIGNhbkF0dGFjaCgpOworICAgIGJvb2wgY2FuQXR0YWNoKCkg
Y29uc3QgeyByZXR1cm4gbV9jYW5BdHRhY2g7IH0KICAgICBib29sIHNob3VsZE9wZW5BdHRhY2hl
ZCgpOwogCiAgICAgdm9pZCBvcGVuKCk7CkBAIC0yMDQsMTkgKzIwMCwxNSBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbml0aWFsV2luZG93V2lkdGg7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGluaXRpYWxXaW5kb3dIZWlnaHQ7CiAKLSAgICAvLyBLZWVwIHRoaXMg
aW4gc3luYyB3aXRoIHRoZSB2YWx1ZSBpbiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLgot
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtQXR0YWNoZWRXaWR0aDsKLSAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgbWluaW11bUF0dGFjaGVkSGVpZ2h0OwotCiAgICAgV2ViUGFnZVBy
b3h5KiBtX3BhZ2U7CisgICAgV2ViUGFnZVByb3h5KiBtX2luc3BlY3RvclBhZ2U7CiAKKyAgICBi
b29sIG1fdW5kZXJUZXN0OwogICAgIGJvb2wgbV9pc1Zpc2libGU7CiAgICAgYm9vbCBtX2lzQXR0
YWNoZWQ7Ci0gICAgYm9vbCBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdDsKLSAgICBib29sIG1faXNQ
cm9maWxpbmdKYXZhU2NyaXB0OworICAgIGJvb2wgbV9jYW5BdHRhY2g7CiAgICAgYm9vbCBtX2lz
UHJvZmlsaW5nUGFnZTsKICAgICBib29sIG1fc2hvd01lc3NhZ2VTZW50OwotICAgIGJvb2wgbV9j
cmVhdGVkSW5zcGVjdG9yUGFnZTsKICAgICBib29sIG1faWdub3JlRmlyc3RCcmluZ1RvRnJvbnQ7
CiAKICAgICAvLyBUaGUgZGVidWdnZXIgc3RvcHMgYWxsIHRoZSBwYWdlcyBpbiB0aGUgc2FtZSBQ
YWdlR3JvdXAuIEhhdmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Ykluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Ykluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU2Yzk0NGQ5NDYzNGIyN2E0MzQ4MDdj
NWMzMDc4NWMwZTU4M2JhMjcuLmViN2ZhOWI5OWQ4ZDkxZDM1NjVmNThkMWRkNWViYTdhYjk4Mzk0
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCwgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzLDEwICsyMywxMSBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKIG1lc3Nh
Z2VzIC0+IFdlYkluc3BlY3RvclByb3h5IHsKLSAgICBDcmVhdGVJbnNwZWN0b3JQYWdlKCkgLT4g
KHVpbnQ2NF90IGluc3BlY3RvclBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzIGluc3BlY3RvclBhZ2VQYXJhbWV0ZXJzKQotICAgIENyZWF0ZUluc3BlY3RvclBhZ2VGb3JU
ZXN0KCkgLT4gKHVpbnQ2NF90IGluc3BlY3RvclBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzIGluc3BlY3RvclBhZ2VQYXJhbWV0ZXJzKQorICAgIENyZWF0ZUluc3BlY3Rv
clBhZ2UoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIGNhbkF0dGFj
aCwgYm9vbCB1bmRlclRlc3QpCisKICAgICBEaWRDbG9zZSgpCiAgICAgQnJpbmdUb0Zyb250KCkK
KwogICAgIEluc3BlY3RlZFVSTENoYW5nZWQoU3RyaW5nIHVybFN0cmluZykKIAogICAgIFNhdmUo
U3RyaW5nIGZpbGVuYW1lLCBTdHJpbmcgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29s
IGZvcmNlU2F2ZUFzKQpAQCAtMzUsNiArMzYsNyBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JQ
cm94eSB7CiAgICAgQXR0YWNoQm90dG9tKCkKICAgICBBdHRhY2hSaWdodCgpCiAgICAgRGV0YWNo
KCkKKwogICAgIEF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCBhdmFpbGFibGUpCiAKICAg
ICBTZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDkwNDlmOWJiYWQwNGMzNTMz
ZTQ2MjkzN2NhMWU0MDNkMTA1MjQ4OTMuLjk3MzJjMDUwMTI1ZTEzOGNiZjdjZTUzMGM0OTI2MGY5
NDdhMjAzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAi
V2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViTmF2aWdhdGlvbkRhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgpAQCAtMTE1LDYgKzExNiw4IEBA
IFdlYlByb2Nlc3NQcm94eTo6fldlYlByb2Nlc3NQcm94eSgpCiB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5j
aE9wdGlvbnMpCiB7CiAgICAgbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9IFByb2Nlc3NMYXVu
Y2hlcjo6V2ViUHJvY2VzczsKKyAgICBpZiAoJm1fY29udGV4dC5nZXQoKSA9PSAmV2ViSW5zcGVj
dG9yUHJveHk6Omluc3BlY3RvckNvbnRleHQoKSkKKyAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRy
YUluaXRpYWxpemF0aW9uRGF0YS5hZGQoQVNDSUlMaXRlcmFsKCJpbnNwZWN0b3ItcHJvY2VzcyIp
LCBBU0NJSUxpdGVyYWwoIjEiKSk7CiAgICAgcGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKGxhdW5j
aE9wdGlvbnMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYkluc3BlY3RvclByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCmluZGV4IGVlYzM5Y2NlOGU5N2MxMjgwODg0MGI1YWYx
NDI0YjI2NTcxNDRlNWMuLjA5MTIxN2FjZTIxMjM3OTJhYWVmM2VkMmYzOTk1NTA5NWZjYmU3OTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJv
eHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9y
UHJveHlFZmwuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKICAgICBpZiAoIW1faW5zcGVj
dG9yV2luZG93KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFdLQ29udGV4dFJlZiB3a0NvbnRl
eHQgPSB0b0FQSSgmcGFnZSgpLT5wcm9jZXNzKCkuY29udGV4dCgpKTsKKyAgICBXS0NvbnRleHRS
ZWYgd2tDb250ZXh0ID0gdG9BUEkoJmluc3BlY3RvckNvbnRleHQoKSk7CiAgICAgV0tQYWdlR3Jv
dXBSZWYgd2tQYWdlR3JvdXAgPSB0b0FQSShpbnNwZWN0b3JQYWdlR3JvdXAoKSk7CiAKICAgICBt
X2luc3BlY3RvclZpZXcgPSBFV0tWaWV3Q3JlYXRlKHdrQ29udGV4dCwgd2tQYWdlR3JvdXAsIGVj
b3JlX2V2YXNfZ2V0KG1faW5zcGVjdG9yV2luZG93KSwgLyogc21hcnQgKi8gMCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3Bw
CmluZGV4IDUwZTQ1YzQ5ZDMzNjlkY2M3ODdmMDU2NDE1ZGJiYzk2MzRkYzY0M2QuLmIyMjE5MmU3
ZGJkNzg1MzFjMTEzYmEyZjM5ZGZlOTE2OGFiZjk1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCkBAIC02Miw3ICs2
Miw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5z
cGVjdG9yUGFnZSgpCiB7CiAgICAgQVNTRVJUKG1fcGFnZSk7CiAgICAgQVNTRVJUKCFtX2luc3Bl
Y3RvclZpZXcpOwotICAgIG1faW5zcGVjdG9yVmlldyA9IEdUS19XSURHRVQod2Via2l0V2ViVmll
d0Jhc2VDcmVhdGUoJnBhZ2UoKS0+cHJvY2VzcygpLmNvbnRleHQoKSwgbnVsbHB0ciwgaW5zcGVj
dG9yUGFnZUdyb3VwKCksIG51bGxwdHIsIG1fcGFnZSkpOworICAgIG1faW5zcGVjdG9yVmlldyA9
IEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoJmluc3BlY3RvckNvbnRleHQoKSwg
bnVsbHB0ciwgaW5zcGVjdG9yUGFnZUdyb3VwKCksIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICBn
X29iamVjdF9hZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKG1faW5zcGVjdG9yVmlldyksIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbV9pbnNwZWN0b3JWaWV3KSk7CiAgICAgcmV0dXJuIHdlYmtp
dFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX2luc3BlY3RvclZpZXcp
KTsKIH0KQEAgLTE4Miw4ICsxODIsMTEgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1BdHRhY2goKQogICAgICAgICBtX2luc3BlY3RvcldpbmRvdyA9IDA7CiAgICAgfQogCi0gICAg
Ly8gU2V0IGEgZGVmYXVsdCBhdHRhY2hlZCBzaXplIGJhc2VkIG9uIEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwuCisgICAgLy8gU2V0IGEgZGVmYXVsdCBzaXplcyBiYXNlZCBvbiBJbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0
QXR0YWNoZWRTaXplID0gMzAwOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtQXR0
YWNoZWRXaWR0aCA9IDc1MDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bUF0dGFj
aGVkSGVpZ2h0ID0gMjUwOworCiAgICAgaWYgKG1fYXR0YWNobWVudFNpZGUgPT0gQXR0YWNobWVu
dFNpZGVCb3R0b20pIHsKICAgICAgICAgdW5zaWduZWQgbWF4aW11bUF0dGFjaGVkSGVpZ2h0ID0g
cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dIZWlnaHQoKSAqIDMgLyA0OwogICAgICAgICBwbGF0Zm9y
bVNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHN0ZDo6bWF4KG1pbmltdW1BdHRhY2hlZEhlaWdodCwg
c3RkOjptaW4oZGVmYXVsdEF0dGFjaGVkU2l6ZSwgbWF4aW11bUF0dGFjaGVkSGVpZ2h0KSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94
eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlN
YWMubW0KaW5kZXggYzZjNjY4Y2I1ZmZjOGM1YjZlZjA5NmUzYzkyOWNiMjU0NWMwOWY5ZC4uOWNl
Y2Y0MTU1ZDI0OTk0M2I1MGZkNTIzODhiYWIxYzkxZjFlZmI0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw2ICsz
OCw3IEBACiAjaW1wb3J0ICJXS1VSTENGLmgiCiAjaW1wb3J0ICJXS1ZpZXdQcml2YXRlLmgiCiAj
aW1wb3J0ICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgorI2ltcG9ydCAiV2ViSW5zcGVjdG9yVUlN
ZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUGFnZUdyb3VwLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJv
eHkuaCIKICNpbXBvcnQgIldlYlByZWZlcmVuY2VzLmgiCkBAIC0xMTQsNyArMTE1LDcgQEAgLSAo
SUJBY3Rpb24pYXR0YWNoQm90dG9tOihpZClzZW5kZXIKIAogLSAodm9pZCljbG9zZQogewotICAg
IF9pbnNwZWN0b3JQcm94eSA9IDA7CisgICAgX2luc3BlY3RvclByb3h5ID0gbnVsbHB0cjsKIH0K
IAogLSAodm9pZCl3aW5kb3dEaWRNb3ZlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgpA
QCAtNDE4LDcgKzQxOSw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgICAgICAgICBpbml0aWFsUmVjdCA9IFtOU1dp
bmRvdyBjb250ZW50UmVjdEZvckZyYW1lUmVjdDp3aW5kb3dGcmFtZSBzdHlsZU1hc2s6d2luZG93
U3R5bGVNYXNrXTsKICAgICB9CiAKLSAgICBtX2luc3BlY3RvclZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJJbnNwZWN0b3JXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6aW5pdGlhbFJlY3QgY29udGV4
dFJlZjp0b0FQSSgmcGFnZSgpLT5wcm9jZXNzKCkuY29udGV4dCgpKSBwYWdlR3JvdXBSZWY6dG9B
UEkoaW5zcGVjdG9yUGFnZUdyb3VwKCkpIHJlbGF0ZWRUb1BhZ2U6dG9BUEkobV9wYWdlKV0pOwor
ICAgIG1faW5zcGVjdG9yVmlldyA9IGFkb3B0TlMoW1tXS1dlYkluc3BlY3RvcldLVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTppbml0aWFsUmVjdCBjb250ZXh0UmVmOnRvQVBJKCZpbnNwZWN0b3JD
b250ZXh0KCkpIHBhZ2VHcm91cFJlZjp0b0FQSShpbnNwZWN0b3JQYWdlR3JvdXAoKSkgcmVsYXRl
ZFRvUGFnZTpudWxscHRyXSk7CiAgICAgQVNTRVJUKG1faW5zcGVjdG9yVmlldyk7CiAKICNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDw9IDEwOTAKQEAgLTQ5OSwxMyArNTAwLDEz
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtRGlkQ2xvc2UoKQogICAgIGlmICht
X2luc3BlY3RvcldpbmRvdykgewogICAgICAgICBbbV9pbnNwZWN0b3JXaW5kb3cgc2V0RGVsZWdh
dGU6bmlsXTsKICAgICAgICAgW21faW5zcGVjdG9yV2luZG93IG9yZGVyT3V0Om5pbF07Ci0gICAg
ICAgIG1faW5zcGVjdG9yV2luZG93ID0gMDsKKyAgICAgICAgbV9pbnNwZWN0b3JXaW5kb3cgPSBu
aWw7CiAgICAgfQogCi0gICAgbV9pbnNwZWN0b3JWaWV3ID0gMDsKKyAgICBtX2luc3BlY3RvclZp
ZXcgPSBuaWw7CiAKICAgICBbbV9pbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyIGNsb3NlXTsKLSAg
ICBtX2luc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIgPSAwOworICAgIG1faW5zcGVjdG9yUHJveHlP
YmpDQWRhcHRlciA9IG5pbDsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1I
aWRlKCkKQEAgLTUxOCw3ICs1MTksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bUhpZGUoKQogICAgIGlmIChtX2luc3BlY3RvcldpbmRvdykgewogICAgICAgICBbbV9pbnNwZWN0
b3JXaW5kb3cgc2V0RGVsZWdhdGU6bmlsXTsKICAgICAgICAgW21faW5zcGVjdG9yV2luZG93IG9y
ZGVyT3V0Om5pbF07Ci0gICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gMDsKKyAgICAgICAgbV9p
bnNwZWN0b3JXaW5kb3cgPSBuaWw7CiAgICAgfQogfQogCkBAIC01ODksNyArNTkwLDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
VVJMLCBjb25zdCBTdHJpbmcmIGMKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBbY29udGVu
dENvcHkgd3JpdGVUb1VSTDphY3R1YWxVUkwgYXRvbWljYWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVMTF07CiAKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpEaWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1dGVT
dHJpbmddKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRTYXZlKFthY3R1YWxVUkwg
YWJzb2x1dGVTdHJpbmddKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAgICAgfTsKIAog
ICAgIGlmICghZm9yY2VTYXZlRGlhbG9nKSB7CkBAIC02MjMsNyArNjI0LDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkws
IGNvbnN0IFN0cmluZyYKICAgICBbaGFuZGxlIHdyaXRlRGF0YTpbY29udGVudCBkYXRhVXNpbmdF
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsK
IAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGlk
QXBwZW5kKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVjdG9yUGFn
ZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp3aW5kb3dGcmFtZURp
ZENoYW5nZSgpCkBAIC03MDgsNyArNzA5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1BdHRhY2goKQogICAgIGlmIChtX2luc3BlY3RvcldpbmRvdykgewogICAgICAgICBbbV9p
bnNwZWN0b3JXaW5kb3cgc2V0RGVsZWdhdGU6bmlsXTsKICAgICAgICAgW21faW5zcGVjdG9yV2lu
ZG93IG9yZGVyT3V0Om5pbF07Ci0gICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gMDsKKyAgICAg
ICAgbV9pbnNwZWN0b3JXaW5kb3cgPSBuaWw7CiAgICAgfQogCiAgICAgW21faW5zcGVjdG9yVmll
dyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2N2MzNmYwODM5ZDA5M2Q3ZjFkZTAyMDYyMmVh
ZjJiZWU2YmQ1MTA1Li5kMGE5MmY5NmMzN2MxZjBiM2Y0MTAyMzBjNDAwYWE4ZDBiODk2MDMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC00OTUsMTAgKzQ5NSwxMCBAQAogCQkxQUZFNDM2NTE4QjZDMDgxMDA5QzdBNDggLyogVUlE
ZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBRkU0MzYzMThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLm1tICovOyB9OwogCQkxQUZF
NDM2NjE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRTQzNjQxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJ
RGVsZWdhdGUuaCAqLzsgfTsKIAkJMUFGRjQ5MDAxODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVj
YXRlZEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUZGNDhGRTE4MzNERTc4MDA5QUIxNUEgLyogV0tEZXByZWNhdGVkRnVuY3Rpb25z
LmNwcCAqLzsgfTsKKwkJMUM4OTFENjUxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJ
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODkx
RDYyMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgKi87IH07CisJCTFDODkx
RDY2MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4OTFENjMxOUIxMjRGRjAwQkE3OUREIC8q
IFdlYkluc3BlY3RvclVJLmggKi87IH07CiAJCTFDOEFFNzYxMTk5MkY2M0EwMEFCRjZFQyAvKiBE
b2NrQm90dG9tTGVnYWN5LnBkZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUM4QUU3NUYxOTkyRjYyRjAwQUJGNkVDIC8qIERvY2tCb3R0b21MZWdhY3ku
cGRmICovOyB9OwogCQkxQzhBRTc2MjE5OTJGNjNDMDBBQkY2RUMgLyogRG9ja1JpZ2h0TGVnYWN5
LnBkZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4
QUU3NjAxOTkyRjYyRjAwQUJGNkVDIC8qIERvY2tSaWdodExlZ2FjeS5wZGYgKi87IH07Ci0JCTFD
OEUyNUE4MTI3MEUzQkIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjU2QjEy
NzBERTM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwICovOyB9Owot
CQkxQzhFMjVBOTEyNzBFM0JDMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyNTZB
MTI3MERFMzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oICovOyB9Owog
CQkxQzhFMjgyMDEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjgxRTEyNzVEMTU0MDBCQzdC
RDAgLyogV2ViSW5zcGVjdG9yLmggKi87IH07CiAJCTFDOEUyODIxMTI3NUQxNTQwMEJDN0JEMCAv
KiBXZWJJbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUM4RTI4MUYxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAgKi87
IH07CiAJCTFDOEUyODM0MTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI4MzIxMjc1
RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggKi87IH07CkBAIC01MTAsOCArNTEw
LDEwIEBACiAJCTFDQThCOTM2MTI3Qzc3NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQThC
OTM1MTI3Qzc3NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSAqLzsgfTsKIAkJ
MUNBOEI5NDUxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
QThCOTQzMTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CiAJCTFDQThCOTQ2MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQ
cm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQ0E4Qjk0NDEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdl
cy5oICovOyB9OwotCQkxQ0E4Qjk1NDEyN0M4OTE1MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTJE
QUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1hYy5tbSAqLzsgfTsKKwkJMUNBOEI5
NTQxMjdDODkxNTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclVJTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQw
IC8qIFdlYkluc3BlY3RvclVJTWFjLm1tICovOyB9OwogCQkxQ0I3NUM5NDE3MDFFODgwMDA5Rjgw
OUYgLyogRG9ja1JpZ2h0LnBkZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUNCNzVDOTMxNzAxRTg4MDAwOUY4MDlGIC8qIERvY2tSaWdodC5wZGYgKi87
IH07CisJCTFDQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQ0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OworCQkxQ0JCRTRBMTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9y
VUlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUNCQkU0OUYxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCAq
LzsgfTsKIAkJMUNCQzk0NUUxNjUxNUVEMjAwRDY4QUFFIC8qIERvY2tCb3R0b20ucGRmIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0JDOTQ1RDE2NTE1
RUQyMDBENjhBQUUgLyogRG9ja0JvdHRvbS5wZGYgKi87IH07CiAJCTFGMzM1QkMwMTg1Qjg0RjAw
MDFBMjAxQSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGMzM1QkJGMTg1Qjg0RDgwMDFBMjAx
QSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxRjYwNEJBODE4ODlGQTc0MDBFRTAzOTUg
LyogV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUY2MDRCQTYxODg5RkE3NDAwRUUwMzk1IC8qIFdLUmVuZGVy
aW5nUHJvZ3Jlc3NFdmVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMjQ3NSwxMCArMjQ3NywxMSBAQAogCQkxQUZGNDhGRTE4MzNERTc4MDA5
QUIxNUEgLyogV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFCQjQxN0M5MTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNv
bXBsZXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dENo
ZWNrZXJDb21wbGV0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM3N0Mx
OTUxMjg4QTg3MjAwNkE3NDJGIC8qIFdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzg5MUQ2MjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5z
cGVjdG9yVUkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5z
cGVjdG9yVUkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzg5MUQ2MzE5QjEy
NEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViSW5zcGVjdG9yVUkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM4OTFENjQxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQzhBRTc1RjE5OTJGNjJGMDBBQkY2RUMgLyogRG9ja0Jv
dHRvbUxlZ2FjeS5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBpbWFnZS5wZGY7IG5hbWUgPSBEb2NrQm90dG9tTGVnYWN5LnBkZjsgcGF0aCA9IFJl
c291cmNlcy9Eb2NrQm90dG9tTGVnYWN5LnBkZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUM4QUU3NjAxOTkyRjYyRjAwQUJGNkVDIC8qIERvY2tSaWdodExlZ2FjeS5wZGYgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7IG5h
bWUgPSBEb2NrUmlnaHRMZWdhY3kucGRmOyBwYXRoID0gUmVzb3VyY2VzL0RvY2tSaWdodExlZ2Fj
eS5wZGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOEUyNTZBMTI3MERFMzgwMEJD
N0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkxQzhFMjU2QjEyNzBERTM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzhFMjgxRTEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQzhFMjgxRjEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3Rvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEUyODMyMTI3NUQ3MzgwMEJDN0JEMCAv
KiBXZWJJbnNwZWN0b3JQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJJbnNwZWN0b3JQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ4OCwx
MSArMjQ5MSwxMyBAQAogCQkxQzhFMkExQzEyNzc4MzNGMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9y
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkluc3BlY3Rvci5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RTJBMzExMjc3ODUyNDAwQkM3
QkQwIC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzhFMkEzMjEyNzc4NTI0MDBCQzdCRDAgLyogV2Vi
SW5zcGVjdG9yTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
SW5zcGVjdG9yTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4RTJE
QUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3Rvck1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rv
clVJTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5z
cGVjdG9yVUlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQThCOTM1MTI3
Qzc3NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5TWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0E4Qjk0MzEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5z
cGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0E4Qjk0NDEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5z
cGVjdG9yUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDQjc1QzkzMTcwMUU4ODAwMDlGODA5RiAvKiBEb2NrUmlnaHQucGRmICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBuYW1lID0gRG9j
a1JpZ2h0LnBkZjsgcGF0aCA9IFJlc291cmNlcy9Eb2NrUmlnaHQucGRmOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQ0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9y
VUlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3JVSU1l
c3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQkM5NDVEMTY1MTVFRDIw
MEQ2OEFBRSAvKiBEb2NrQm90dG9tLnBkZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBkZjsgbmFtZSA9IERvY2tCb3R0b20ucGRmOyBwYXRo
ID0gUmVzb3VyY2VzL0RvY2tCb3R0b20ucGRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQ0M0MTdDOTEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDaGVja2VyQ29tcGxldGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRjAxODE2OTE4NThEQzE1MDBGOTI4ODQgLyog
V0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTU2NjIsOCArNTY2Nyw2IEBACiAJCQkJQkMxQkUxREUxMkQ1NEE0MTAwMDRBMjI4IC8qIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50LmggKi8sCiAJCQkJQkMxMTFBNTkxMTJGNEZCQjAwMzM3QkFCIC8q
IFdlYkluc3BlY3RvckNsaWVudC5jcHAgKi8sCiAJCQkJQkMwMzJENkQxMEY0Mzc4RDAwNThDMTVB
IC8qIFdlYkluc3BlY3RvckNsaWVudC5oICovLAotCQkJCTFDOEUyNTZCMTI3MERFMzgwMEJDN0JE
MCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAgKi8sCi0JCQkJMUM4RTI1NkExMjcw
REUzODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggKi8sCiAJCQkJMzEw
OTk5NzExNDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgKi8sCiAJ
CQkJMzEwOTk5NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICov
LAogCQkJCTUxMjEyN0MxMTkwODIzOUEwMERBRjM1QyAvKiBXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVz
LmNwcCAqLywKQEAgLTU3MjMsNiArNTcyNiw5IEBACiAJCQkJMUM4RTI4MUYxMjc1RDE1NDAwQkM3
QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAgKi8sCiAJCQkJMUM4RTI4MUUxMjc1RDE1NDAwQkM3QkQw
IC8qIFdlYkluc3BlY3Rvci5oICovLAogCQkJCTFDOEUyQTFDMTI3NzgzM0YwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4gKi8sCisJCQkJMUM4OTFENjIxOUIxMjRGRjAwQkE3OURE
IC8qIFdlYkluc3BlY3RvclVJLmNwcCAqLywKKwkJCQkxQzg5MUQ2MzE5QjEyNEZGMDBCQTc5REQg
LyogV2ViSW5zcGVjdG9yVUkuaCAqLywKKwkJCQkxQzg5MUQ2NDE5QjEyNEZGMDBCQTc5REQgLyog
V2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4gKi8sCiAJCQkJQkM4NTdGODQxMkI4MkQwQjAwRURF
QjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCAqLywKIAkJCQlCQzg1N0Y4MzEy
QjgyRDBCMDBFREVCMkUgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLywKIAkJCQlC
Qzk2M0Q2QTExM0REMTkyMDA1NzRCRTIgLyogV2ViUGFnZS5jcHAgKi8sCkBAIC02NDcxLDcgKzY0
NzcsNyBAQAogCQkJCTUxOTJENTc1MTk2MUZEMDMwMENEMTlBQSAvKiBTZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyLm1tICovLAogCQkJCTFBQUYyNjM3MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5oICovLAogCQkJCTFBQUYyNjM2MTQ2ODdDMzkwMDRBMUU4
QSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSAqLywKLQkJCQkxQzhFMkRBRDEy
NzhDNUIyMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWFjLm1tICovLAorCQkJCTFDOEUyREFEMTI3
OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSAqLywKIAkJCQlCQzk2M0Q2RDEx
M0REMUE1MDA1NzRCRTIgLyogV2ViUGFnZU1hYy5tbSAqLywKIAkJCQkyOUNENTVBODEyOEUyOTRG
MDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCAqLywKIAkJCQky
OUNENTVBOTEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJh
c2UubW0gKi8sCkBAIC02ODI3LDYgKzY4MzMsOCBAQAogCQkJCTFDOEUyQTMyMTI3Nzg1MjQwMEJD
N0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlcy5oICovLAogCQkJCTFDQThCOTQzMTI3Qzg4MkEw
MDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJ
MUNBOEI5NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCAq
LywKKwkJCQkxQ0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovLAorCQkJCTFDQkJFNDlGMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNw
ZWN0b3JVSU1lc3NhZ2VzLmggKi8sCiAJCQkJMzNEM0EzQzQxMzM5NjE3OTAwNzA5QkU0IC8qIFdl
Yk1lZGlhQ2FjaGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkzM0QzQTNDNTEz
Mzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJNZXNzYWdlcy5oICovLAogCQkJ
CTMzRDNBM0M2MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTc0MzgsNiArNzQ0Niw3IEBACiAJCQkJMkRBQ0U2NEUx
OEFEQkZGMDAwRTRDQTc2IC8qIF9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE1NzhCODMxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUY2QTI1RkREMTJBREM2Q0MwMERDNDBDQyAvKiBXZWJEYXRhYmFzZU1hbmFnZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTFDODkxRDY2MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNw
ZWN0b3JVSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYyQTc2QjcxMkIxQjI1RjAwMDVGMUI2IC8q
IFdlYkRhdGFiYXNlTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNjJBNzY1
RDEyQjFBQkMzMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJENkFCNTQxMTkyQjFDNEEwMDNBOUZEMSAvKiBXS1BERlBhZ2VOdW1iZXJJbmRp
Y2F0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtNzQ5NCw3ICs3NTAzLDYgQEAKIAkJCQkxQzhFMjgy
MDEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTNDQzE2NzE4OTA2QUNGMDAxRTZFRDggLyogV0tXZWJWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzAzMkQ4MjEwRjQzNzhEMDA1OEMxNUEgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKLQkJCQkxQzhFMjVBOTEyNzBFM0JDMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyQTM2MTI3Nzg1MjQwMEJDN0JE
MCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4RTI4MzQx
Mjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCkBAIC03NzYyLDYgKzc3NzAsNyBAQAogCQkJCUY2MzQ0NDVEMTJBODg1
RTkwMDA2MTJEOCAvKiBXS1NlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFG
MDhCODE5MjY5RTZEMDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjA0MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUNCQkU0QTExOUI2NkM1MzAw
NkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
Q0I0RTRDMThCQkUwNDQwMDBGQ0ZDOSAvKiBXS0NvbnRlbnRWaWV3LmggaW4gSGVhZGVycyAqLywK
IAkJCQkzN0E2NEU1NzE4RjM4RjQ2MDBFQjMwRjEgLyogX1dLRm9ybUlucHV0U2Vzc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUY2MDRCQUExODg5RkJCODAwRUUwMzk1IC8qIFdLUmVuZGVyaW5n
UHJvZ3Jlc3NFdmVudHNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC04ODY1LDYgKzg4NzQs
NyBAQAogCQkJCTAwQjk2NjE5MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUFFNUI3RkIxMUU3QUVEMjAwQkE2NzY3IC8qIE5ldHNjYXBlUGx1Z2lu
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MzNjFENzIxOTI3RkEzNjAwMzZBNTlEIC8qIFdl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDODkxRDY1MTlC
MTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QTRBOUM1NTEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUE0QTlDOUExMkI4MjFDRDAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2lu
TW9kdWxlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBNTg4OTMxMUVFNzA0MDAwNjFCODgy
IC8qIE5ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODkwMyw2ICs4
OTEzLDcgQEAKIAkJCQkxQTJEODQzOTEyN0Y2NUQ1MDAxRUI5NjIgLyogTlBPYmplY3RNZXNzYWdl
UmVjZWl2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBRjA4QUQx
OTI2OTM2NzAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTJEODJBNjEyN0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RQcm94eS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkxQ0JCRTRBMDE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVj
dG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDgyQTgxMjdG
NEVBQjAwMUVCOTYyIC8qIE5QUmVtb3RlT2JqZWN0TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBMjE2MUIxMTFGMzc2NjQwMDhBRDBGNSAvKiBOUFJ1bnRpbWVPYmplY3RNYXAuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUEyMTYyQjAxMUYzODk3MTAwOEFEMEY1IC8qIE5QUnVudGltZVV0aWxp
dGllcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkxNjIsOCArOTE3Myw3IEBACiAJCQkJQkNDRjZB
QkMxMkM5MUVGOTAwOEY5QzM1IC8qIFdlYkltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFD
OEUyODIxMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkMxMTFBNjAxMTJGNEZCQjAwMzM3QkFCIC8qIFdlYkluc3BlY3RvckNsaWVudC5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQkxQzhFMjVBODEyNzBFM0JCMDBCQzdCRDAgLyogV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUNBOEI5NTQxMjdDODkx
NTAwNTc2QzJCIC8qIFdlYkluc3BlY3Rvck1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFDQThC
OTU0MTI3Qzg5MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTFDOEUyQTM1MTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4RTI4MzUxMjc1RDczODAwQkM3QkQwIC8q
IFdlYkluc3BlY3RvclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQThCOTM2MTI3Qzc3
NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDUwMWQ0MWNkOTE0NzZiNjI3Njk2ZjM5ODQ1
OTliZTYzODA3ZmZmNTIuLjg1OTM1OGJjY2NiMTgyNmJlOTMyZmQxYzUyMDQ2ZWZjMmM3ODc2OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0LDIwICs4NCwyMSBAQCB2b2lkIFdl
Ykluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKIAogV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9u
dGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyKQogewotICAgIFdlYlBhZ2UqIGlu
c3BlY3RvclBhZ2UgPSBjb250cm9sbGVyLT5pc1VuZGVyVGVzdCgpID8gbV9wYWdlLT5pbnNwZWN0
b3IoKS0+Y3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QoKSA6IG1fcGFnZS0+aW5zcGVjdG9yKCkt
PmNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKLSAgICBBU1NFUlRfVU5VU0VEKGluc3BlY3RvclBhZ2Us
IGluc3BlY3RvclBhZ2UpOwotICAgIHJldHVybiB0aGlzOworICAgIG1fcGFnZS0+aW5zcGVjdG9y
KCktPmNyZWF0ZUluc3BlY3RvclBhZ2UoY29udHJvbGxlci0+aXNVbmRlclRlc3QoKSk7CisKKyAg
ICByZXR1cm4gbV9wYWdlLT5pbnNwZWN0b3IoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGll
bnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQogewogICAgIGlmIChtX3BhZ2UtPmluc3BlY3Rv
cigpKQotICAgICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5kaWRDbG9zZSgpOworICAgICAgICBt
X3BhZ2UtPmluc3BlY3RvcigpLT5jbG9zZUZyb250ZW5kKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVj
dG9yQ2xpZW50OjpicmluZ0Zyb250ZW5kVG9Gcm9udCgpCiB7Ci0gICAgbV9wYWdlLT5pbnNwZWN0
b3IoKS0+YnJpbmdUb0Zyb250KCk7CisgICAgaWYgKG1fcGFnZS0+aW5zcGVjdG9yKCkpCisgICAg
ICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmJyaW5nVG9Gcm9udCgpOwogfQogCiB2b2lkIFdlYklu
c3BlY3RvckNsaWVudDo6ZGlkUmVzaXplTWFpbkZyYW1lKEZyYW1lKikKQEAgLTE5NywzNCArMTk4
LDYgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9v
bCBlbmFibGVkKQogfQogI2VuZGlmCiAKLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVz
c2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIFdlYkluc3BlY3Rv
ciogaW5zcGVjdG9yID0gbV9wYWdlLT5pbnNwZWN0b3IoKTsKLSAgICBpZiAoIWluc3BlY3RvcikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0g
ICAgaWYgKGluc3BlY3Rvci0+aGFzUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKSkgewotICAgICAg
ICBpbnNwZWN0b3ItPnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChtZXNzYWdlKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBXZWJQYWdlKiBpbnNwZWN0b3JQ
YWdlID0gaW5zcGVjdG9yLT5pbnNwZWN0b3JQYWdlKCk7Ci0gICAgaWYgKGluc3BlY3RvclBhZ2Up
Ci0gICAgICAgIHJldHVybiBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKGluc3BlY3Rv
clBhZ2UtPmNvcmVQYWdlKCksIG1lc3NhZ2UpOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1i
b29sIFdlYkluc3BlY3RvckNsaWVudDo6c3VwcG9ydHNGcmFtZUluc3RydW1lbnRhdGlvbigpCi17
Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIHJldHVybiB0cnVlOwotI2VuZGlm
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cGFnZU92
ZXJsYXlEZXN0cm95ZWQoUGFnZU92ZXJsYXkqKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmgKaW5kZXggNzAzM2JkZWNhMDgyNjA1NmE4MGNkMTA5YTQ0ZjgyYTMwMTk5ZGU2Yi4uNzk4Y2Fj
N2E4M2MwNjdhMjMzYTU5OTBhOWQ0ZjVmYTQxNDBiM2U4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oCkBAIC00NSwyMiArNDUsMjMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQ
YWdlOwogY2xhc3MgUmVwYWludEluZGljYXRvckxheWVyQ2xpZW50OwogCi1jbGFzcyBXZWJJbnNw
ZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgV2Vi
Q29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLCBwcml2YXRlIFBhZ2VPdmVybGF5OjpDbGll
bnQgeworY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudCwgcHJpdmF0ZSBQYWdlT3ZlcmxheTo6Q2xpZW50IHsKIGZyaWVuZCBjbGFzcyBSZXBh
aW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ7CiBwdWJsaWM6CiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50
KFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFsIH5XZWJJbnNwZWN0b3JDbGllbnQoKTsKIAogcHJpdmF0
ZToKLSAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAg
Ly8gV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50CisgICAgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQo
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVu
SW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJlc2l6ZU1haW5GcmFtZShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwor
ICAgIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250
ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGNs
b3NlSW5zcGVjdG9yRnJvbnRlbmQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGJyaW5nRnJvbnRlbmRU
b0Zyb250KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZXNpemVNYWluRnJhbWUoV2ViQ29yZTo6
RnJhbWUqKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpIG92ZXJyaWRlOworICAgIHZvaWQg
aGlnaGxpZ2h0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgb3ZlcnJpZGU7
CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCB2b2lkIHNob3dJbnNwZWN0b3JJbmRp
Y2F0aW9uKCkgb3ZlcnJpZGU7CkBAIC03MiwxMCArNzMsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgYm9vbCBvdmVycmlkZXNTaG93UGFpbnRSZWN0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BhaW50UmVjdChjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJv
bnRlbmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNGcmFtZUluc3RydW1lbnRhdGlvbigpOwotCiAgICAgLy8gUGFnZU92ZXJsYXk6OkNsaWVudAog
ICAgIHZpcnR1YWwgdm9pZCBwYWdlT3ZlcmxheURlc3Ryb3llZChQYWdlT3ZlcmxheSopIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdl
YlBhZ2UqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0M2RhZTEwYjNkMGM1Yjc3YzE0
NzlmNWZmNGIyMjg4YTRiNmI0NDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudC5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLQotI2luY2x1ZGUg
IldlYkluc3BlY3Rvci5oIgotI2luY2x1ZGUgIldlYlBhZ2UuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L0luc3BlY3RvckNvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNs
dWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50KFdlYlBhZ2UqIHBhZ2UsIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UpCi0gICAgOiBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZwYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250
cm9sbGVyKCksIGluc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCksIHN0ZDo6bWFrZV91bmlxdWU8U2V0
dGluZ3M+KCkpCi0gICAgLCBtX3BhZ2UocGFnZSkKLXsKLX0KLQotU3RyaW5nIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50Ojpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkKLXsKLSAgICByZXR1cm4gbV9w
YWdlLT5pbnNwZWN0b3IoKS0+bG9jYWxpemVkU3RyaW5nc1VSTCgpOwotfQotCi12b2lkIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50OjpicmluZ1RvRnJvbnQoKQotewotICAgIG1fcGFnZS0+aW5z
cGVjdG9yKCktPmJyaW5nVG9Gcm9udCgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjpjbG9zZVdpbmRvdygpCi17Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlz
Y29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKLSAgICBtX3BhZ2UtPmluc3BlY3Rv
cigpLT5kaWRDbG9zZSgpOwotfQotCi1ib29sIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojpj
YW5TYXZlKCkKLXsKLSAgICByZXR1cm4gbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y2FuU2F2ZSgpOwot
fQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29s
IGZvcmNlU2F2ZUFzKQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNhdmUoZmlsZW5hbWUs
IGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2ZUFzKTsKLX0KLQotdm9pZCBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgY29udGVudCkKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5hcHBlbmQoZmls
ZW5hbWUsIGNvbnRlbnQpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojph
dHRhY2hXaW5kb3coRG9ja1NpZGUgZG9ja1NpZGUpCi17Ci0gICAgc3dpdGNoIChkb2NrU2lkZSkg
ewotICAgIGNhc2UgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpVbmRvY2tlZDoK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpCb3R0b206Ci0gICAgICAgIG1fcGFn
ZS0+aW5zcGVjdG9yKCktPmF0dGFjaEJvdHRvbSgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6UmlnaHQ6Ci0gICAgICAgIG1fcGFn
ZS0+aW5zcGVjdG9yKCktPmF0dGFjaFJpZ2h0KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0K
LQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGV0YWNoV2luZG93KCkKLXsKLSAg
ICBtX3BhZ2UtPmluc3BlY3RvcigpLT5kZXRhY2goKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQot
ewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdo
dCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldEF0dGFjaGVkV2lu
ZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCi17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+c2V0
QXR0YWNoZWRXaW5kb3dXaWR0aCh3aWR0aCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQotewotICAgIG1fcGFn
ZS0+aW5zcGVjdG9yKCktPnNldFRvb2xiYXJIZWlnaHQoaGVpZ2h0KTsKLX0KLQotdm9pZCBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcm
IHVybFN0cmluZykKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5pbnNwZWN0ZWRVUkxDaGFu
Z2VkKHVybFN0cmluZyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggNTYxMjk3YTMwNzUwY2RlZjAzOTcwYTdhMGZkZjlm
NjllMmFjYzhmZi4uNDc3NDM0MTk4ODNjMzBlZjVjYTkxN2IwYzdlYzk3YTNiZTYwMjZlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI3LDExNyArMjcsODIgQEAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3IuaCIKIAogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCisKICNpbmNsdWRlICJXZWJGcmFtZS5oIgotI2luY2x1ZGUgIldlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2Vi
SW5zcGVjdG9yVUlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKLSNpbmNsdWRlICJX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkUmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvSW5zcGVjdG9yUGFnZUFnZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+Ci0jaW5jbHVk
ZSA8aW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oPgotI2luY2x1ZGUgPGJpbmRpbmdzL1Nj
cmlwdFZhbHVlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCitzdGF0aWMgY29uc3QgZmxvYXQgbWluaW11bUF0dGFjaGVkSGVpZ2h0ID0gMjUwOwor
c3RhdGljIGNvbnN0IGZsb2F0IG1heGltdW1BdHRhY2hlZEhlaWdodFJhdGlvID0gMC43NTsKK3N0
YXRpYyBjb25zdCBmbG9hdCBtaW5pbXVtQXR0YWNoZWRXaWR0aCA9IDc1MDsKKwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViSW5zcGVjdG9yPiBXZWJJbnNwZWN0b3I6OmNyZWF0
ZShXZWJQYWdlKiBwYWdlLCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5l
bCkKK1Bhc3NSZWZQdHI8V2ViSW5zcGVjdG9yPiBXZWJJbnNwZWN0b3I6OmNyZWF0ZShXZWJQYWdl
KiBwYWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViSW5zcGVjdG9yKHBhZ2UsIGZy
b250ZW5kQ2hhbm5lbCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViSW5zcGVjdG9yKHBh
Z2UpKTsKIH0KIAotV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2ViUGFnZSogcGFnZSwgSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwpCitXZWJJbnNwZWN0b3I6Oldl
Ykluc3BlY3RvcihXZWJQYWdlKiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2UpCi0gICAgLCBtX2lu
c3BlY3RvclBhZ2UobnVsbHB0cikKLSAgICAsIG1fZnJvbnRlbmRDbGllbnQobnVsbHB0cikKLSAg
ICAsIG1fZnJvbnRlbmRDaGFubmVsKGZyb250ZW5kQ2hhbm5lbCkKLSNpZiBQTEFURk9STShDT0NP
QSkKLSAgICAsIG1faGFzTG9jYWxpemVkU3RyaW5nc1VSTChmYWxzZSkKLSNlbmRpZgotI2lmIEVO
QUJMRShJTlNQRUNUT1JfU0VSVkVSKQotICAgICwgbV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZChm
YWxzZSkKLSNlbmRpZgorICAgICwgbV9hdHRhY2hlZChmYWxzZSkKKyAgICAsIG1fcHJldmlvdXND
YW5BdHRhY2goZmFsc2UpCiB7CiB9CiAKIC8vIENhbGxlZCBmcm9tIFdlYkluc3BlY3RvckNsaWVu
dAotV2ViUGFnZSogV2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQYWdlKCkKK3ZvaWQgV2Vi
SW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQYWdlKGJvb2wgdW5kZXJUZXN0KQogewogICAgIGlm
ICghbV9wYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEFTU0VSVCghbV9pbnNw
ZWN0b3JQYWdlKTsKLSAgICBBU1NFUlQoIW1fZnJvbnRlbmRDbGllbnQpOwotCi0gICAgdWludDY0
X3QgaW5zcGVjdG9yUGFnZUlEID0gMDsKLSAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBh
cmFtZXRlcnM7Ci0KLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6Q3JlYXRl
SW5zcGVjdG9yUGFnZSgpLAotICAgICAgICAgICAgTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpDcmVhdGVJbnNwZWN0b3JQYWdlOjpSZXBseShpbnNwZWN0b3JQYWdlSUQsIHBhcmFtZXRlcnMp
LAotICAgICAgICAgICAgbV9wYWdlLT5wYWdlSUQoKSwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25k
czo6bWF4KCkpKSB7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KKyAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKCFpbnNwZWN0b3JQYWdlSUQpCi0gICAgICAgIHJldHVybiBudWxscHRy
OworI2lmIE9TKERBUldJTikKKyAgICBtYWNoX3BvcnRfdCBsaXN0ZW5pbmdQb3J0OworICAgIG1h
Y2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlW
RSwgJmxpc3RlbmluZ1BvcnQpOworCisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNv
bm5lY3Rpb25JZGVudGlmZXIobGlzdGVuaW5nUG9ydCk7CisgICAgSVBDOjpBdHRhY2htZW50IGNv
bm5lY3Rpb25DbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5E
KTsKKyNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQorICAgIElQQzo6Q29ubmVjdGlvbjo6
U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNv
bm5lY3Rpb24oKTsKKyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklk
ZW50aWZlcihzb2NrZXRQYWlyLnNlcnZlcik7CisgICAgSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rp
b25DbGllbnRQb3J0KHNvY2tldFBhaXIuY2xpZW50KTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm47CisjZW5kaWYKIAotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNy
ZWF0ZVdlYlBhZ2UoaW5zcGVjdG9yUGFnZUlELCBwYXJhbWV0ZXJzKTsKLSAgICBtX2luc3BlY3Rv
clBhZ2UgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJQYWdlKGluc3BlY3RvclBhZ2VJRCk7Ci0g
ICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24gPSBJ
UEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZl
ciwgdGhpcywgUnVuTG9vcDo6bWFpbigpKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+b3Bl
bigpOwogCi0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fcGFnZSwgbV9pbnNwZWN0b3JQYWdlKTsKLSAgICBtX2Zy
b250ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQuZ2V0KCk7Ci0gICAgbV9pbnNwZWN0b3JQYWdl
LT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQoV1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9y
UGFnZTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6Q3JlYXRlSW5zcGVjdG9yUGFnZShj
b25uZWN0aW9uQ2xpZW50UG9ydCwgY2FuQXR0YWNoV2luZG93KCksIHVuZGVyVGVzdCksIG1fcGFn
ZS0+cGFnZUlEKCkpOwogfQogCi1XZWJQYWdlKiBXZWJJbnNwZWN0b3I6OmNyZWF0ZUluc3BlY3Rv
clBhZ2VGb3JUZXN0KCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kKCkKIHsKLSAg
ICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBBU1NFUlQoIW1f
aW5zcGVjdG9yUGFnZSk7Ci0gICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2xpZW50KTsKLQotICAgIHVp
bnQ2NF90IGluc3BlY3RvclBhZ2VJRCA9IDA7Ci0gICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzOwotCi0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNy
ZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KCksCi0gICAgICAgICAgICBNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0OjpSZXBseShpbnNwZWN0b3JQ
YWdlSUQsIHBhcmFtZXRlcnMpLAotICAgICAgICAgICAgbV9wYWdlLT5wYWdlSUQoKSwgc3RkOjpj
aHJvbm86Om1pbGxpc2Vjb25kczo6bWF4KCkpKSB7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KLQotICAgIGlmICghaW5zcGVjdG9yUGFnZUlEKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNyZWF0ZVdlYlBhZ2UoaW5zcGVjdG9yUGFn
ZUlELCBwYXJhbWV0ZXJzKTsKLSAgICBtX2luc3BlY3RvclBhZ2UgPSBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS53ZWJQYWdlKGluc3BlY3RvclBhZ2VJRCk7Ci0gICAgQVNTRVJUKG1faW5zcGVjdG9yUGFn
ZSk7Ci0KLSAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudD4obV9wYWdlLCBtX2luc3BlY3RvclBhZ2UpOwotICAgIG1fZnJv
bnRlbmRDbGllbnQgPSBmcm9udGVuZENsaWVudC5nZXQoKTsKLSAgICBtX2luc3BlY3RvclBhZ2Ut
PmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENs
aWVudChXVEY6Om1vdmUoZnJvbnRlbmRDbGllbnQpKTsKLSAgICByZXR1cm4gbV9pbnNwZWN0b3JQ
YWdlOwotfQorICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKIAotdm9pZCBXZWJJbnNwZWN0b3I6OmRlc3Ryb3lJbnNwZWN0b3JQYWdlKCkK
LXsKLSAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRyOwotICAgIG1fZnJvbnRlbmRDbGllbnQg
PSBudWxscHRyOwotICAgIG1fZnJvbnRlbmRDaGFubmVsID0gbnVsbHB0cjsKLX0KKyAgICBtX2Zy
b250ZW5kQ29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9u
ID0gbnVsbHB0cjsKIAotLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQK
LXZvaWQgV2ViSW5zcGVjdG9yOjpkaWRDbG9zZSgpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
UHJveHk6OkRpZENsb3NlKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAgIGRlc3Ryb3lJbnNwZWN0
b3JQYWdlKCk7CisgICAgbV9hdHRhY2hlZCA9IGZhbHNlOworICAgIG1fcHJldmlvdXNDYW5BdHRh
Y2ggPSBmYWxzZTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OmJyaW5nVG9Gcm9udCgpCkBAIC0x
NDUsNTEgKzExMCw2IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpicmluZ1RvRnJvbnQoKQogICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpJbnNwZWN0ZWRV
UkxDaGFuZ2VkKHVybFN0cmluZyksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYklu
c3BlY3Rvcjo6c2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykKLXsKLSAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6U2F2ZShmaWxlbmFtZSwgY29udGVudCwgYmFzZTY0RW5jb2RlZCwg
Zm9yY2VTYXZlQXMpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6
OmFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCi17
Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkFwcGVuZChmaWxlbmFtZSwgY29udGVudCks
IG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNoQm90dG9t
KCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQm90dG9tKCksIG1fcGFn
ZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNoUmlnaHQoKQotewot
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hSaWdodCgpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OmRldGFjaCgpCi17Ci0gICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yUHJveHk6OkRldGFjaCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBX
ZWJJbnNwZWN0b3I6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKLXsK
LSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVp
Z2h0KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzZXRBdHRh
Y2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKSwgbV9wYWdlLT5wYWdlSUQoKSk7
Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkIGhlaWdo
dCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0VG9vbGJhckhlaWdodChoZWln
aHQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQogLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvciBt
ZXNzYWdlcwogdm9pZCBXZWJJbnNwZWN0b3I6OnNob3coKQogewpAQCAtMjAxLDM0ICsxMjEsMTcg
QEAgdm9pZCBXZWJJbnNwZWN0b3I6OmNsb3NlKCkKICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5jbG9zZSgpOwogfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6ZGlk
U2F2ZShjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsK
LSAgICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4
ZWN1dGVTY3JpcHQobWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2F2ZWRVUkwoXCIi
LCB1cmwsICJcIikiKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpkaWRBcHBlbmQoY29uc3Qg
U3RyaW5nJiB1cmwpCi17Ci0gICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7Ci0gICAgbV9pbnNw
ZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0
KG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmFwcGVuZGVkVG9VUkwoXCIiLCB1cmws
ICJcIikiKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjphdHRhY2hlZEJvdHRvbSgpCit2b2lk
IFdlYkluc3BlY3Rvcjo6b3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewot
ICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRB
dHRhY2hlZFdpbmRvdyhJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU6OkJvdHRvbSk7
Ci19CisgICAgUGFnZSogaW5zcGVjdGVkUGFnZSA9IG1fcGFnZS0+Y29yZVBhZ2UoKTsKKyAgICBG
cmFtZSYgaW5zcGVjdGVkTWFpbkZyYW1lID0gaW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCk7Cisg
ICAgRnJhbWVMb2FkUmVxdWVzdCByZXF1ZXN0KGluc3BlY3RlZE1haW5GcmFtZS5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QodXJsU3RyaW5nKSwgIl9ibGFuayIp
OwogCi12b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNoZWRSaWdodCgpCi17Ci0gICAgaWYgKG1fZnJv
bnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldEF0dGFjaGVkV2luZG93
KEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6UmlnaHQpOwotfQorICAgIFBhZ2Uq
IG5ld1BhZ2UgPSBpbnNwZWN0ZWRQYWdlLT5jaHJvbWUoKS5jcmVhdGVXaW5kb3coJmluc3BlY3Rl
ZE1haW5GcmFtZSwgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMoKSwgTmF2aWdhdGlvbkFjdGlvbihy
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBOYXZpZ2F0aW9uVHlwZUxpbmtDbGlja2VkKSk7Cisg
ICAgaWYgKCFuZXdQYWdlKQorICAgICAgICByZXR1cm47CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpk
ZXRhY2hlZCgpCi17Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRl
bmRDbGllbnQtPnNldEF0dGFjaGVkV2luZG93KEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2Nr
U2lkZTo6VW5kb2NrZWQpOworICAgIG5ld1BhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmxvYWQo
cmVxdWVzdCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpldmFsdWF0ZVNjcmlwdEZvclRlc3Qo
Y29uc3QgU3RyaW5nJiBzY3JpcHQpCkBAIC0yMzksMTA4ICsxNDIsOTQgQEAgdm9pZCBXZWJJbnNw
ZWN0b3I6OmV2YWx1YXRlU2NyaXB0Rm9yVGVzdChjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHZvaWQg
V2ViSW5zcGVjdG9yOjpzaG93Q29uc29sZSgpCiB7CiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5p
bnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQot
ICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zaG93Q29uc29sZSgpOworICAgIG1fZnJvbnRlbmRD
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2hvd0NvbnNvbGUoKSwg
MCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpzaG93UmVzb3VyY2VzKCkKIHsKICAgICBtX3Bh
Z2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1f
ZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNob3dSZXNvdXJjZXMo
KTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUk6OlNob3dSZXNvdXJjZXMoKSwgMCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpzaG93TWFp
blJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpz
aG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJZGVudGlmaWVyKQogewotICAg
IFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQp
OworICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZy
YW1lSWRlbnRpZmllcik7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlm
IChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zaG93TWFpblJl
c291cmNlRm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpKTsKLX0KIAotdm9pZCBXZWJJbnNwZWN0
b3I6OnN0YXJ0SmF2YVNjcmlwdERlYnVnZ2luZygpCi17Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgp
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50
KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXREZWJ1Z2dpbmdFbmFibGVkKHRydWUpOwor
ICAgIFN0cmluZyBpbnNwZWN0b3JGcmFtZUlkZW50aWZpZXIgPSBtX3BhZ2UtPmNvcmVQYWdlKCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5wYWdlQWdlbnQoKS0+ZnJhbWVJZChmcmFtZS0+Y29yZUZy
YW1lKCkpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JVSTo6U2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGluc3BlY3RvckZyYW1lSWRlbnRpZmll
ciksIDApOwogfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6c3RvcEphdmFTY3JpcHREZWJ1Z2dpbmco
KQordm9pZCBXZWJJbnNwZWN0b3I6OnN0YXJ0UGFnZVByb2ZpbGluZygpCiB7CiAgICAgbV9wYWdl
LT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zy
b250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXREZWJ1Z2dpbmdFbmFi
bGVkKGZhbHNlKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OnNldEphdmFTY3JpcHRQcm9maWxp
bmdFbmFibGVkKGJvb2wpCi17Ci0gICAgLy8gTm8gbG9uZ2VyIHN1cHBvcnRlZC4KKyAgICBtX2Zy
b250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlN0YXJ0UGFn
ZVByb2ZpbGluZygpLCAwKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OnN0YXJ0SmF2YVNjcmlw
dFByb2ZpbGluZygpCit2b2lkIFdlYkluc3BlY3Rvcjo6c3RvcFBhZ2VQcm9maWxpbmcoKQogewot
ICAgIC8vIE5vIGxvbmdlciBzdXBwb3J0ZWQuCisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U3RvcFBhZ2VQcm9maWxpbmcoKSwgMCk7CiB9CiAK
LXZvaWQgV2ViSW5zcGVjdG9yOjpzdG9wSmF2YVNjcmlwdFByb2ZpbGluZygpCitib29sIFdlYklu
c3BlY3Rvcjo6Y2FuQXR0YWNoV2luZG93KCkKIHsKLSAgICAvLyBObyBsb25nZXIgc3VwcG9ydGVk
LgotfQorICAgIC8vIERvbid0IGFsbG93IGF0dGFjaGluZyB0byBhbm90aGVyIGluc3BlY3RvciAt
LSB0d28gaW5zcGVjdG9ycyBpbiBvbmUgd2luZG93IGlzIHRvbyBtdWNoIQorICAgIGlmIChtX3Bh
Z2UtPmlzSW5zcGVjdG9yUGFnZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLXZvaWQgV2Vi
SW5zcGVjdG9yOjpzdGFydFBhZ2VQcm9maWxpbmcoKQotewotICAgIG1fcGFnZS0+Y29yZVBhZ2Uo
KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVu
dCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVk
KHRydWUpOwotfQorICAgIC8vIElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCBhbGxvdyBhdHRh
Y2hpbmcgYWdhaW4gdG8gYWxsb3cgc3dpdGNoaW5nIHNpZGVzLgorICAgIGlmIChtX2F0dGFjaGVk
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotdm9pZCBXZWJJbnNwZWN0b3I6OnN0b3BQYWdlUHJv
ZmlsaW5nKCkKLXsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIo
KS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRD
bGllbnQtPnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChmYWxzZSk7CisgICAgLy8gRG9uJ3Qg
YWxsb3cgdGhlIGF0dGFjaCBpZiB0aGUgd2luZG93IHdvdWxkIGJlIHRvbyBzbWFsbCB0byBhY2Nv
bW1vZGF0ZSB0aGUgbWluaW11bSBpbnNwZWN0b3Igc2l6ZS4KKyAgICB1bnNpZ25lZCBpbnNwZWN0
ZWRQYWdlSGVpZ2h0ID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPnZp
c2libGVIZWlnaHQoKTsKKyAgICB1bnNpZ25lZCBpbnNwZWN0ZWRQYWdlV2lkdGggPSBtX3BhZ2Ut
PmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZVdpZHRoKCk7CisgICAgdW5z
aWduZWQgbWF4aW11bUF0dGFjaGVkSGVpZ2h0ID0gaW5zcGVjdGVkUGFnZUhlaWdodCAqIG1heGlt
dW1BdHRhY2hlZEhlaWdodFJhdGlvOworICAgIHJldHVybiBtaW5pbXVtQXR0YWNoZWRIZWlnaHQg
PD0gbWF4aW11bUF0dGFjaGVkSGVpZ2h0ICYmIG1pbmltdW1BdHRhY2hlZFdpZHRoIDw9IGluc3Bl
Y3RlZFBhZ2VXaWR0aDsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnVwZGF0ZURvY2tpbmdBdmFp
bGFiaWxpdHkoKQogewotICAgIGlmICghbV9mcm9udGVuZENsaWVudCkKKyAgICBpZiAobV9hdHRh
Y2hlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBjYW5BdHRhY2hXaW5kb3cgPSB0aGlz
LT5jYW5BdHRhY2hXaW5kb3coKTsKKyAgICBpZiAobV9wcmV2aW91c0NhbkF0dGFjaCA9PSBjYW5B
dHRhY2hXaW5kb3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgY2FuQXR0YWNoV2luZG93
ID0gbV9mcm9udGVuZENsaWVudC0+Y2FuQXR0YWNoV2luZG93KCk7CisgICAgbV9wcmV2aW91c0Nh
bkF0dGFjaCA9IGNhbkF0dGFjaFdpbmRvdzsKKwogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpBdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGNhbkF0dGFjaFdpbmRvdyksIG1fcGFnZS0+cGFn
ZUlEKCkpOwotICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldERvY2tpbmdVbmF2YWlsYWJsZSghY2Fu
QXR0YWNoV2luZG93KTsKIH0KIAotI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotdm9pZCBX
ZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCit2b2lkIFdlYkluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewotICAgIEFTU0VSVChtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKTsK
LSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5k
KG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7
CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorYm9vbCBXZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdl
VG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9wYWdlLT5jb3JlUGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1l
c3NhZ2UpOworI2lmICFFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICBtX2Zyb250ZW5kQ29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChtZXNzYWdlKSwgMCk7CisjZWxzZQorICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpT
ZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQobWVzc2FnZSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
I2VuZGlmCisgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZF
UikKIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpCiB7Ci0gICAg
QVNTRVJUKCFtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKTsKLSAgICAvLyBTd2l0Y2hpbmcgYmV0
d2VlbiBpbi1wcm9jZXNzIGFuZCByZW1vdGUgaW5zcGVjdG9ycyBpc24ndCBzdXBwb3J0ZWQgeWV0
LgotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JQYWdlKTsKLSAgICAKLSAgICBtX3BhZ2UtPmNvcmVQ
YWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENo
YW5uZWwpOwotICAgIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQgPSB0cnVlOworICAgIG1fcGFn
ZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZCh0aGlz
KTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkK
IHsKLSAgICBBU1NFUlQobV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCk7CiAgICAgbV9wYWdlLT5j
b3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKLSAg
ICBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkID0gZmFsc2U7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCmluZGV4IGM5
M2JjYjNmY2FmZTExNTgyZDYwNGZkY2FkMjcyYzRmOTI1OGMwMTYuLjNjMTliOWU4NWIyZmFjYWVk
MzVmM2E0ZDBmZWJlZGY4MGE0MzQyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDEwNiArMzAsODAgQEAKIAogI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRpbmcuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50OwogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgV2ViSW5zcGVjdG9yIDogcHVibGljIEFQSTo6
T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yPiB7CitjbGFzcyBX
ZWJJbnNwZWN0b3IgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpC
dW5kbGVJbnNwZWN0b3I+LCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIHB1YmxpYyBX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gY3JlYXRlKFdlYlBhZ2UqLCBXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnNwZWN0b3I+
IGNyZWF0ZShXZWJQYWdlKik7CiAKICAgICBXZWJQYWdlKiBwYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlOyB9Ci0gICAgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5zcGVjdG9yUGFnZTsgfQorCisgICAgdm9pZCB1cGRhdGVEb2NraW5nQXZhaWxhYmlsaXR5KCk7
CisKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2Vi
SW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcAotICAgIHZvaWQgZGlkUmVjZWl2ZVdlYkluc3Bl
Y3Rvck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOworICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVj
b2RlciYpOworCisgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKKyAgICB2b2lkIGRpZENs
b3NlKElQQzo6Q29ubmVjdGlvbiopIHsgY2xvc2UoKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSB7IGNsb3Nl
KCk7IH0KIAogICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3IgbWVzc2FnZXMKKyAgICB2b2lk
IGNvbm5lY3Rpb25Fc3RhYmxpc2hlZCgpOworCiAgICAgdm9pZCBzaG93KCk7CiAgICAgdm9pZCBj
bG9zZSgpOwogCi0gICAgdm9pZCBkaWRTYXZlKGNvbnN0IFN0cmluZyYgdXJsKTsKLSAgICB2b2lk
IGRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCBvcGVuSW5OZXdUYWIoY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpOworCisgICAgdm9pZCBjYW5BdHRhY2hXaW5kb3coYm9vbCYg
cmVzdWx0KTsKKworICAgIHZvaWQgc2hvd0NvbnNvbGUoKTsKKyAgICB2b2lkIHNob3dSZXNvdXJj
ZXMoKTsKIAotICAgIHZvaWQgYXR0YWNoZWRCb3R0b20oKTsKLSAgICB2b2lkIGF0dGFjaGVkUmln
aHQoKTsKLSAgICB2b2lkIGRldGFjaGVkKCk7CisgICAgdm9pZCBzaG93TWFpblJlc291cmNlRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJZGVudGlmaWVyKTsKKworICAgIHZvaWQgc2V0QXR0YWNoZWQo
Ym9vbCBhdHRhY2hlZCkgeyBtX2F0dGFjaGVkID0gYXR0YWNoZWQ7IH0KIAogICAgIHZvaWQgZXZh
bHVhdGVTY3JpcHRGb3JUZXN0KGNvbnN0IFN0cmluZyYgc2NyaXB0KTsKIAotICAgIHZvaWQgc2V0
SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzdGFydFBhZ2VQcm9m
aWxpbmcoKTsKICAgICB2b2lkIHN0b3BQYWdlUHJvZmlsaW5nKCk7CiAKKyAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYpOworCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9T
RVJWRVIpCi0gICAgYm9vbCBoYXNSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQ7IH0KLSAgICB2b2lkIHNlbmRNZXNzYWdlVG9S
ZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQgZGlzcGF0Y2hN
ZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgdm9p
ZCByZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpOwogICAgIHZvaWQgcmVtb3RlRnJvbnRlbmREaXNj
b25uZWN0ZWQoKTsKICNlbmRpZgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJJbnNw
ZWN0b3JDbGllbnQ7Ci0gICAgZnJpZW5kIGNsYXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
OwogCi0gICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yKFdlYlBhZ2UqLCBXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqKTsKKyAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3IoV2ViUGFnZSop
OworCisgICAgYm9vbCBjYW5BdHRhY2hXaW5kb3coKTsKIAogICAgIC8vIENhbGxlZCBmcm9tIFdl
Ykluc3BlY3RvckNsaWVudAotICAgIFdlYlBhZ2UqIGNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKLSAg
ICBXZWJQYWdlKiBjcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgpOwotICAgIHZvaWQgZGVzdHJv
eUluc3BlY3RvclBhZ2UoKTsKKyAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBhZ2UoYm9vbCB1bmRl
clRlc3QpOwogCi0gICAgLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQK
LSAgICB2b2lkIGRpZENsb3NlKCk7CisgICAgdm9pZCBjbG9zZUZyb250ZW5kKCk7CiAgICAgdm9p
ZCBicmluZ1RvRnJvbnQoKTsKLSAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3Ry
aW5nJik7Ci0KLSAgICBib29sIGNhblNhdmUoKSBjb25zdDsKLSAgICB2b2lkIHNhdmUoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29k
ZWQsIGJvb2wgZm9yY2VTYXZlQXMpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7Ci0KLSAgICB2b2lkIGF0dGFjaEJvdHRvbSgp
OwotICAgIHZvaWQgYXR0YWNoUmlnaHQoKTsKLSAgICB2b2lkIGRldGFjaCgpOwogCi0gICAgdm9p
ZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCk7Ci0gICAgdm9pZCBzZXRBdHRhY2hl
ZFdpbmRvd1dpZHRoKHVuc2lnbmVkKTsKLSAgICB2b2lkIHNldFRvb2xiYXJIZWlnaHQodW5zaWdu
ZWQpOwotCi0gICAgLy8gSW1wbGVtZW50ZWQgaW4gcGxhdGZvcm0gV2ViSW5zcGVjdG9yIGZpbGUK
LSAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0OwotCi0gICAgdm9pZCBzaG93
Q29uc29sZSgpOwotCi0gICAgdm9pZCBzaG93UmVzb3VyY2VzKCk7Ci0KLSAgICB2b2lkIHNob3dN
YWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKLQotICAgIHZvaWQgc3RhcnRK
YXZhU2NyaXB0RGVidWdnaW5nKCk7Ci0gICAgdm9pZCBzdG9wSmF2YVNjcmlwdERlYnVnZ2luZygp
OwotCi0gICAgdm9pZCBzdGFydEphdmFTY3JpcHRQcm9maWxpbmcoKTsKLSAgICB2b2lkIHN0b3BK
YXZhU2NyaXB0UHJvZmlsaW5nKCk7CisgICAgV2ViUGFnZSogbV9wYWdlOwogCi0gICAgdm9pZCB1
cGRhdGVEb2NraW5nQXZhaWxhYmlsaXR5KCk7CisgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4g
bV9mcm9udGVuZENvbm5lY3Rpb247CiAKLSAgICBXZWJQYWdlKiBtX3BhZ2U7Ci0gICAgV2ViUGFn
ZSogbV9pbnNwZWN0b3JQYWdlOwotICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2Zy
b250ZW5kQ2xpZW50OwotICAgIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9m
cm9udGVuZENoYW5uZWw7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbXV0YWJsZSBTdHJpbmcg
bV9sb2NhbGl6ZWRTdHJpbmdzVVJMOwotICAgIG11dGFibGUgYm9vbCBtX2hhc0xvY2FsaXplZFN0
cmluZ3NVUkw7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAgICBib29s
IG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQ7Ci0jZW5kaWYKKyAgICBib29sIG1fYXR0YWNoZWQ7
CisgICAgYm9vbCBtX3ByZXZpb3VzQ2FuQXR0YWNoOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5z
cGVjdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5tZXNzYWdlcy5pbgppbmRleCBjMjNiODZmMjE0MjVjYjQ2MmU0OTI4MzlmZjgw
MTk1ZTM4NjdmNzg3Li5mYzA3M2NhZThkZGQzNWZhYTMyMzNiN2RlOTU1MjlmN2UzOTY0MjgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3IubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCwg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIyLDI2ICsyMiwyNSBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAot
bWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yIExlZ2FjeVJlY2VpdmVyIHsKK21lc3NhZ2VzIC0+IFdl
Ykluc3BlY3RvciB7CiAgICAgU2hvdygpCiAgICAgQ2xvc2UoKQotICAgIEF0dGFjaGVkQm90dG9t
KCkKLSAgICBBdHRhY2hlZFJpZ2h0KCkKLSAgICBEZXRhY2hlZCgpCi0gICAgRGlkU2F2ZShTdHJp
bmcgdXJsKQotICAgIERpZEFwcGVuZChTdHJpbmcgdXJsKQorCisgICAgU2V0QXR0YWNoZWQoYm9v
bCBhdHRhY2hlZCkKKwogICAgIFNob3dDb25zb2xlKCkKICAgICBTaG93UmVzb3VyY2VzKCkKLSAg
ICBTaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKLSAgICBTdGFydEph
dmFTY3JpcHREZWJ1Z2dpbmcoKQotICAgIFN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCkKLSAgICBT
dGFydEphdmFTY3JpcHRQcm9maWxpbmcoKQotICAgIFN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCkK
KworICAgIFNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlkZW50aWZpZXIp
CisKKyAgICBPcGVuSW5OZXdUYWIoU3RyaW5nIHVybCkKKwogICAgIFN0YXJ0UGFnZVByb2ZpbGlu
ZygpCiAgICAgU3RvcFBhZ2VQcm9maWxpbmcoKQogCisgICAgU2VuZE1lc3NhZ2VUb0JhY2tlbmQo
U3RyaW5nIG1lc3NhZ2UpCisKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAgICBEaXNw
YXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoU3RyaW5nIG1lc3NhZ2UpCiAgICAgUmVtb3Rl
RnJvbnRlbmRDb25uZWN0ZWQoKQogICAgIFJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3JVSS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI5N2FkM2Q1ODAxNTJkMDYzMDUzOWMwMDYxMzMwZDQ1
MWJjZjY2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTAsMCArMSwyODUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUkuaCIKKworI2lmIEVO
QUJMRShJTlNQRUNUT1IpCisKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIldlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgi
CisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Njcmlw
dFZhbHVlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0RPTVdyYXBwZXJXb3JsZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxl
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0R2xvYmFsT2JqZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TY3JpcHRTdGF0ZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8V2ViSW5zcGVjdG9yVUk+IFdlYkluc3BlY3RvclVJOjpj
cmVhdGUoV2ViUGFnZSogcGFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3Bl
Y3RvclVJKHBhZ2UpKTsKK30KKworV2ViSW5zcGVjdG9yVUk6OldlYkluc3BlY3RvclVJKFdlYlBh
Z2UqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1faW5zcGVjdGVkUGFnZUlkZW50
aWZpZXIoMCkKKyAgICAsIG1fdW5kZXJUZXN0KGZhbHNlKQorICAgICwgbV9mcm9udGVuZExvYWRl
ZChmYWxzZSkKKyAgICAsIG1fZG9ja1NpZGUoRG9ja1NpZGU6OlVuZG9ja2VkKQorI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgICwgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMKGZhbHNlKQorI2VuZGlm
Cit7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFibGlzaENvbm5lY3Rpb24oSVBDOjpB
dHRhY2htZW50IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgaW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0KQoreworI2lmIE9TKERBUldJTikKKyAgICBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2RlZENv
bm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7CisjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VU
UykKKyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIo
ZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnJlbGVhc2VGaWxlRGVzY3JpcHRvcigpKTsKKyNl
bHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm47CisjZW5kaWYKKworICAgIGlm
IChJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gaW5z
cGVjdGVkUGFnZUlkZW50aWZpZXI7CisgICAgbV91bmRlclRlc3QgPSB1bmRlclRlc3Q7CisKKyAg
ICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JG
cm9udGVuZENsaWVudCh0aGlzKTsKKworICAgIG1fYmFja2VuZENvbm5lY3Rpb24gPSBJUEM6OkNv
bm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsIHRo
aXMsIFJ1bkxvb3A6Om1haW4oKSk7CisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbi0+b3BlbigpOwor
fQorCit2b2lkIFdlYkluc3BlY3RvclVJOjp3aW5kb3dPYmplY3RDbGVhcmVkKCkKK3sKKyAgICBp
ZiAobV9mcm9udGVuZEhvc3QpCisgICAgICAgIG1fZnJvbnRlbmRIb3N0LT5kaXNjb25uZWN0Q2xp
ZW50KCk7CisKKyAgICBtX2Zyb250ZW5kSG9zdCA9IEluc3BlY3RvckZyb250ZW5kSG9zdDo6Y3Jl
YXRlKHRoaXMsIG1fcGFnZS0+Y29yZVBhZ2UoKSk7CisgICAgU2NyaXB0R2xvYmFsT2JqZWN0Ojpz
ZXQoZXhlY1N0YXRlRnJvbVBhZ2UobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIG1fcGFnZS0+Y29y
ZVBhZ2UoKSksIEFTQ0lJTGl0ZXJhbCgiSW5zcGVjdG9yRnJvbnRlbmRIb3N0IiksIG1fZnJvbnRl
bmRIb3N0LmdldCgpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRMb2FkZWQo
KQoreworICAgIG1fZnJvbnRlbmRMb2FkZWQgPSB0cnVlOworCisgICAgZXZhbHVhdGVQZW5kaW5n
RXhwcmVzc2lvbnMoKTsKKyAgICBicmluZ1RvRnJvbnQoKTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JVSTo6bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpCit7CisgICAgRmxvYXRSZWN0IGZy
YW1lUmVjdCA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+Y2hyb21lKCkud2luZG93UmVjdCgpOworICAg
IGZyYW1lUmVjdC5tb3ZlKHgsIHkpOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+Y2hyb21lKCku
c2V0V2luZG93UmVjdChmcmFtZVJlY3QpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpicmlu
Z1RvRnJvbnQoKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQo
KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6
OmNsb3NlV2luZG93KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGlkQ2xvc2Uo
KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9u
LT5pbnZhbGlkYXRlKCk7CisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbiA9IG51bGxwdHI7CisKKyAg
ICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gMDsKKyAgICBtX3VuZGVyVGVzdCA9IGZhbHNl
OworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpyZXF1ZXN0U2V0RG9ja1NpZGUoRG9ja1NpZGUg
c2lkZSkKK3sKKyAgICBzd2l0Y2ggKHNpZGUpIHsKKyAgICBjYXNlIERvY2tTaWRlOjpVbmRvY2tl
ZDoKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRldGFjaCgpLCBtX2luc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERvY2tTaWRlOjpS
aWdodDoKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaFJpZ2h0KCksIG1f
aW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRG9j
a1NpZGU6OkJvdHRvbToKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaEJv
dHRvbSgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzZXREb2NrU2lkZShEb2NrU2lkZSBzaWRlKQor
eworICAgIGNvbnN0IGNoYXIqIHNpZGVTdHJpbmc7CisKKyAgICBzd2l0Y2ggKHNpZGUpIHsKKyAg
ICBjYXNlIERvY2tTaWRlOjpVbmRvY2tlZDoKKyAgICAgICAgc2lkZVN0cmluZyA9ICJ1bmRvY2tl
ZCI7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6UmlnaHQ6CisgICAgICAg
IHNpZGVTdHJpbmcgPSAicmlnaHQiOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRG9ja1Np
ZGU6OkJvdHRvbToKKyAgICAgICAgc2lkZVN0cmluZyA9ICJib3R0b20iOworICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBtX2RvY2tTaWRlID0gc2lkZTsKKworICAgIGV2YWx1YXRlQ29tbWFu
ZE9uTG9hZChBU0NJSUxpdGVyYWwoInNldERvY2tTaWRlIiksIEFTQ0lJTGl0ZXJhbChzaWRlU3Ry
aW5nKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmNoYW5nZUF0dGFjaGVkV2luZG93SGVp
Z2h0KHVuc2lnbmVkIGhlaWdodCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0
QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVpZ2h0KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmNoYW5nZUF0dGFjaGVkV2luZG93V2lkdGgodW5z
aWduZWQgd2lkdGgpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0dGFjaGVk
V2luZG93V2lkdGgod2lkdGgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JVSTo6c2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCBoZWlnaHQpCit7Cisg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldFRvb2xiYXJIZWlnaHQoaGVpZ2h0KSwgbV9p
bnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6Om9wZW5J
bk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6Ok9wZW5Jbk5ld1RhYih1cmwpLCAwKTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3JVSTo6c2F2ZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFdURjo6U3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VT
YXZlQXMpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNv
bnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2ZUFzKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmFwcGVuZChjb25zdCBXVEY6OlN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50KQoreworICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpBcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpLCBtX2luc3BlY3RlZFBh
Z2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6aW5zcGVjdGVkVVJMQ2hh
bmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6SW5zcGVjdGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcpLCBtX2luc3BlY3RlZFBhZ2VJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2hvd0NvbnNvbGUoKQoreworICAg
IGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNob3dDb25zb2xlIikpOworfQor
Cit2b2lkIFdlYkluc3BlY3RvclVJOjpzaG93UmVzb3VyY2VzKCkKK3sKKyAgICBldmFsdWF0ZUNv
bW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzaG93UmVzb3VyY2VzIikpOworfQorCit2b2lkIFdl
Ykluc3BlY3RvclVJOjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUoU3RyaW5nIGZyYW1lSWRlbnRp
ZmllcikKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzaG93TWFp
blJlc291cmNlRm9yRnJhbWUiKSwgZnJhbWVJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JVSTo6c3RhcnRQYWdlUHJvZmlsaW5nKCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxv
YWQoQVNDSUlMaXRlcmFsKCJzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQiKSwgdHJ1ZSk7Cit9
CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnN0b3BQYWdlUHJvZmlsaW5nKCkKK3sKKyAgICBldmFs
dWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJs
ZWQiKSwgZmFsc2UpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpkaWRTYXZlKGNvbnN0IFN0
cmluZyYgdXJsKQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNh
dmVkVVJMIiksIHVybCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmRpZEFwcGVuZChjb25z
dCBTdHJpbmcmIHVybCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFs
KCJhcHBlbmRlZFRvVVJMIiksIHVybCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNlbmRN
ZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgZXZhbHVhdGVF
eHByZXNzaW9uT25Mb2FkKG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNo
TWVzc2FnZUFzeW5jKCIsIG1lc3NhZ2UsICIpIikpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJ
OjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9i
YWNrZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZW5kTWVzc2Fn
ZVRvQmFja2VuZChtZXNzYWdlKSwgMCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmV2YWx1
YXRlQ29tbWFuZE9uTG9hZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGNvbnN0IFN0cmluZyYgYXJn
dW1lbnQpCit7CisgICAgaWYgKGFyZ3VtZW50LmlzTnVsbCgpKQorICAgICAgICBldmFsdWF0ZUV4
cHJlc3Npb25PbkxvYWQobWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2go
W1wiIiwgY29tbWFuZCwgIlwiXSkiKSk7CisgICAgZWxzZQorICAgICAgICBldmFsdWF0ZUV4cHJl
c3Npb25PbkxvYWQobWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2goW1wi
IiwgY29tbWFuZCwgIlwiLCBcIiIsIGFyZ3VtZW50LCAiXCJdKSIpKTsKK30KKwordm9pZCBXZWJJ
bnNwZWN0b3JVSTo6ZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0IFN0cmluZyYgY29tbWFuZCwg
Ym9vbCBhcmd1bWVudCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29tbWFuZCwgQVND
SUlMaXRlcmFsKGFyZ3VtZW50ID8gInRydWUiIDogImZhbHNlIikpOworfQorCit2b2lkIFdlYklu
c3BlY3RvclVJOjpldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uKQoreworICAgIGlmIChtX2Zyb250ZW5kTG9hZGVkKSB7CisgICAgICAgIEFTU0VSVChtX3F1
ZXVlLmlzRW1wdHkoKSk7CisgICAgICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCku
c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChleHByZXNzaW9uKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1fcXVldWUuYXBwZW5kKGV4cHJlc3Npb24pOworfQorCit2b2lkIFdlYkluc3Bl
Y3RvclVJOjpldmFsdWF0ZVBlbmRpbmdFeHByZXNzaW9ucygpCit7CisgICAgQVNTRVJUKG1fZnJv
bnRlbmRMb2FkZWQpOworCisgICAgZm9yIChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24gOiBtX3F1
ZXVlKQorICAgICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4
ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbik7CisKKyAgICBtX3F1ZXVlLmNsZWFyKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmRiZmNiZTM4ZGY3MmE1ODRmZDEzMDQ4MWNmZmMwNWQwOGZhYTYzZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JVSS5oCkBAIC0wLDAgKzEsMTM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJbnNwZWN0
b3JVSV9oCisjZGVmaW5lIFdlYkluc3BlY3RvclVJX2gKKworI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGb3J3YXJkaW5nLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9J
bnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitj
bGFzcyBXZWJJbnNwZWN0b3JVSSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6
OlR5cGU6OkJ1bmRsZUluc3BlY3RvclVJPiwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50
LCBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkluc3BlY3RvclVJPiBjcmVhdGUoV2ViUGFnZSopOworCisg
ICAgV2ViUGFnZSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorCisgICAgLy8gSW1w
bGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcAor
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdl
RGVjb2RlciYpOworCisgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKKyAgICB2b2lkIGRp
ZENsb3NlKElQQzo6Q29ubmVjdGlvbiopIHsgY2xvc2VXaW5kb3coKTsgfQorICAgIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1l
KSB7IGNsb3NlV2luZG93KCk7IH0KKworICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JVSSBt
ZXNzYWdlcworICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgY29u
bmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29s
IHVuZGVyVGVzdCk7CisKKyAgICB2b2lkIHNob3dDb25zb2xlKCk7CisgICAgdm9pZCBzaG93UmVz
b3VyY2VzKCk7CisKKyAgICB2b2lkIHNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShTdHJpbmcgZnJh
bWVJZGVudGlmaWVyKTsKKworICAgIHZvaWQgc3RhcnRQYWdlUHJvZmlsaW5nKCk7CisgICAgdm9p
ZCBzdG9wUGFnZVByb2ZpbGluZygpOworCisgICAgdm9pZCBhdHRhY2hlZEJvdHRvbSgpIHsgc2V0
RG9ja1NpZGUoRG9ja1NpZGU6OkJvdHRvbSk7IH0KKyAgICB2b2lkIGF0dGFjaGVkUmlnaHQoKSB7
IHNldERvY2tTaWRlKERvY2tTaWRlOjpSaWdodCk7IH0KKyAgICB2b2lkIGRldGFjaGVkKCkgeyBz
ZXREb2NrU2lkZShEb2NrU2lkZTo6VW5kb2NrZWQpOyB9CisKKyAgICB2b2lkIHNldERvY2tTaWRl
KERvY2tTaWRlKTsKKworICAgIHZvaWQgZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVybCk7CisgICAg
dm9pZCBkaWRBcHBlbmQoY29uc3QgU3RyaW5nJiB1cmwpOworCisgICAgdm9pZCBzZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJik7CisKKyAgICAvLyBXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENsaWVudAorICAgIHZvaWQgd2luZG93T2JqZWN0Q2xlYXJlZCgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZnJvbnRlbmRMb2FkZWQoKSBvdmVycmlkZTsKKworICAgIHZvaWQgbW92ZVdpbmRv
d0J5KGZsb2F0IHgsIGZsb2F0IHkpIG92ZXJyaWRlOworCisgICAgU3RyaW5nIGxvY2FsaXplZFN0
cmluZ3NVUkwoKSBvdmVycmlkZTsKKworICAgIHZvaWQgYnJpbmdUb0Zyb250KCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBjbG9zZVdpbmRvdygpIG92ZXJyaWRlOworCisgICAgdm9pZCByZXF1ZXN0U2V0
RG9ja1NpZGUoRG9ja1NpZGUpIG92ZXJyaWRlOworICAgIHZvaWQgY2hhbmdlQXR0YWNoZWRXaW5k
b3dIZWlnaHQodW5zaWduZWQpIG92ZXJyaWRlOworICAgIHZvaWQgY2hhbmdlQXR0YWNoZWRXaW5k
b3dXaWR0aCh1bnNpZ25lZCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldFRvb2xiYXJIZWlnaHQo
dW5zaWduZWQpIG92ZXJyaWRlOworCisgICAgdm9pZCBvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5n
JiB1cmwpIG92ZXJyaWRlOworCisgICAgYm9vbCBjYW5TYXZlKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzYXZlKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50
LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpIG92ZXJyaWRlOworICAgIHZv
aWQgYXBwZW5kKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250
ZW50KSBvdmVycmlkZTsKKworICAgIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CisKKyAgICBib29sIGlzVW5kZXJUZXN0KCkgb3ZlcnJpZGUgeyByZXR1
cm4gbV91bmRlclRlc3Q7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JV
SShXZWJQYWdlKik7CisKKyAgICB2b2lkIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb25zdCBTdHJp
bmcmIGNvbW1hbmQsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQgPSBTdHJpbmcoKSk7CisgICAgdm9p
ZCBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBjb25zdCBBU0NJ
SUxpdGVyYWwmIGFyZ3VtZW50KSB7IGV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb21tYW5kLCBTdHJp
bmcoYXJndW1lbnQpKTsgfQorICAgIHZvaWQgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0IFN0
cmluZyYgY29tbWFuZCwgYm9vbCBhcmd1bWVudCk7CisgICAgdm9pZCBldmFsdWF0ZUV4cHJlc3Np
b25PbkxvYWQoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKTsKKyAgICB2b2lkIGV2YWx1YXRlUGVu
ZGluZ0V4cHJlc3Npb25zKCk7CisKKyAgICBXZWJQYWdlKiBtX3BhZ2U7CisKKyAgICBSZWZQdHI8
SVBDOjpDb25uZWN0aW9uPiBtX2JhY2tlbmRDb25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1faW5z
cGVjdGVkUGFnZUlkZW50aWZpZXI7CisKKyAgICBib29sIG1fdW5kZXJUZXN0OworICAgIGJvb2wg
bV9mcm9udGVuZExvYWRlZDsKKyAgICBEZXF1ZTxTdHJpbmc+IG1fcXVldWU7CisKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0PiBtX2Zyb250ZW5kSG9zdDsKKworICAg
IERvY2tTaWRlIG1fZG9ja1NpZGU7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtdXRhYmxl
IFN0cmluZyBtX2xvY2FsaXplZFN0cmluZ3NVUkw7CisgICAgbXV0YWJsZSBib29sIG1faGFzTG9j
YWxpemVkU3RyaW5nc1VSTDsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorCisjZW5kaWYgLy8gV2ViSW5zcGVjdG9yVUlf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3RvclVJLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3RvclVJLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzZWI1ZmQ1OGE2N2E5ZjBlYmYx
MWRlYzY1YjU2NDhiNjg5MDE0MzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSw0
NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisj
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxF
KElOU1BFQ1RPUikKKworbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yVUkgeworICAgIEVzdGFibGlz
aENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QpCisKKyAgICBBdHRhY2hl
ZEJvdHRvbSgpCisgICAgQXR0YWNoZWRSaWdodCgpCisgICAgRGV0YWNoZWQoKQorCisgICAgU2hv
d0NvbnNvbGUoKQorICAgIFNob3dSZXNvdXJjZXMoKQorCisgICAgU2hvd01haW5SZXNvdXJjZUZv
ckZyYW1lKFN0cmluZyBmcmFtZUlkZW50aWZpZXIpCisKKyAgICBTdGFydFBhZ2VQcm9maWxpbmco
KQorICAgIFN0b3BQYWdlUHJvZmlsaW5nKCkKKworICAgIERpZFNhdmUoU3RyaW5nIHVybCkKKyAg
ICBEaWRBcHBlbmQoU3RyaW5nIHVybCkKKworICAgIFNlbmRNZXNzYWdlVG9Gcm9udGVuZChTdHJp
bmcgbWVzc2FnZSkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZTYyYWNmZDljNDZhODU1MWMzZTg0NDYyZWEwYTEyZWJl
YzEyYmY4Ni4uY2NjNjNiNTMxNDY1Mzg4OTg1ODlmM2EyYmU4NWY2NDQ5Nzk2OWE5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtODAsNiAr
ODAsOCBAQAogI2luY2x1ZGUgIldlYkluc3BlY3Rvci5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rv
ckNsaWVudC5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yVUkuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgi
CkBAIC00NjAsNiArNDYyLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNv
bnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAjZW5kaWYKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZUlELCAqdGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJ
RCwgKnRoaXMpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVl
bk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKQEAgLTUy
MCw2ICs1MjMsNyBAQCBXZWJQYWdlOjp+V2ViUGFnZSgpCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsK
KyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKQEAgLTI4ODYsMTggKzI4OTAsMjYgQEAgdm9p
ZCBXZWJQYWdlOjpkaWRGbHVzaExheWVyVHJlZUF0VGltZShzdGQ6OmNocm9ubzo6bWlsbGlzZWNv
bmRzIHRpbWVzdGFtcCkKIH0KICNlbmRpZgogCi0gICAgCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
IFdlYkluc3BlY3RvciogV2ViUGFnZTo6aW5zcGVjdG9yKCkKIHsKICAgICBpZiAobV9pc0Nsb3Nl
ZCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICgh
bV9pbnNwZWN0b3IpCi0gICAgICAgIG1faW5zcGVjdG9yID0gV2ViSW5zcGVjdG9yOjpjcmVhdGUo
dGhpcywgbV9pbnNwZWN0b3JDbGllbnQpOworICAgICAgICBtX2luc3BlY3RvciA9IFdlYkluc3Bl
Y3Rvcjo6Y3JlYXRlKHRoaXMpOwogICAgIHJldHVybiBtX2luc3BlY3Rvci5nZXQoKTsKIH0KKwor
V2ViSW5zcGVjdG9yVUkqIFdlYlBhZ2U6Omluc3BlY3RvclVJKCkKK3sKKyAgICBpZiAobV9pc0Ns
b3NlZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFtX2luc3BlY3RvclVJKQor
ICAgICAgICBtX2luc3BlY3RvclVJID0gV2ViSW5zcGVjdG9yVUk6OmNyZWF0ZSh0aGlzKTsKKyAg
ICByZXR1cm4gbV9pbnNwZWN0b3JVSS5nZXQoKTsKK30KICNlbmRpZgotICAgIAorCiAjaWYgUExB
VEZPUk0oSU9TKQogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciogV2ViUGFnZTo6dmlkZW9GdWxs
c2NyZWVuTWFuYWdlcigpCiB7CkBAIC0zNDc5LDcgKzM0OTEsMTMgQEAgdm9pZCBXZWJQYWdlOjpk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIElQQzo6TWVzc2Fn
ZURlY29kZXIKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3RvciogaW5zcGVjdG9yID0gdGhpcy0+aW5z
cGVjdG9yKCkpCi0gICAgICAgICAgICBpbnNwZWN0b3ItPmRpZFJlY2VpdmVXZWJJbnNwZWN0b3JN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICAgICAgaW5zcGVjdG9yLT5kaWRS
ZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6
V2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpZiAoV2Vi
SW5zcGVjdG9yVUkqIGluc3BlY3RvclVJID0gdGhpcy0+aW5zcGVjdG9yVUkoKSkKKyAgICAgICAg
ICAgIGluc3BlY3RvclVJLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYmFiYTUwNmVjMjBmNDIzNTYzMzlhZWVhNjJhODk1
NzQ2ODY1YmM4OC4uYjdkNDQ4Yzk2ODAwYWY5ZmRiZDdhNDAyNGViZTQ4MzgzNjI2MzMzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNTMsNiAr
MTUzLDcgQEAgY2xhc3MgV2ViRnVsbFNjcmVlbk1hbmFnZXI7CiBjbGFzcyBXZWJJbWFnZTsKIGNs
YXNzIFdlYkluc3BlY3RvcjsKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsKK2NsYXNzIFdlYklu
c3BlY3RvclVJOwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7
CiBjbGFzcyBXZWJOb3RpZmljYXRpb25DbGllbnQ7CkBAIC0yMjYsOCArMjI3LDEwIEBAIHB1Ymxp
YzoKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3Io
KTsKKyAgICBXZWJJbnNwZWN0b3JVSSogaW5zcGVjdG9yVUkoKTsKKyAgICBib29sIGlzSW5zcGVj
dG9yUGFnZSgpIHsgcmV0dXJuICEhbV9pbnNwZWN0b3JVSTsgfQogI2VuZGlmCi0gICAgCisKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciogdmlkZW9GdWxs
c2NyZWVuTWFuYWdlcigpOwogI2VuZGlmCkBAIC0xMTU5LDYgKzExNjIsNyBAQCBwcml2YXRlOgog
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBSZWZQdHI8V2ViSW5zcGVjdG9yPiBtX2luc3Bl
Y3RvcjsKKyAgICBSZWZQdHI8V2ViSW5zcGVjdG9yVUk+IG1faW5zcGVjdG9yVUk7CiAjZW5kaWYK
ICNpZiBQTEFURk9STShJT1MpCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+
IG1fdmlkZW9GdWxsc2NyZWVuTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9yVUlFZmwuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JVSUVmbC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTg1N2M3YjYxMDUzYTI3ZWY0MGJiM2Q1ODI0NTUwYzZmNTUwMTM1MAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9y
VUlFZmwuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ft
c3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViSW5zcGVjdG9yVUkuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNpbmNsdWRl
IDxXZWJDb3JlL0VmbEluc3BlY3RvclV0aWxpdGllcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBXZWJJbnNwZWN0b3JVSTo6
Y2FuU2F2ZSgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitTdHJpbmcgV2ViSW5zcGVjdG9y
VUk6OmxvY2FsaXplZFN0cmluZ3NVUkwoKQoreworICAgIHJldHVybiAiZmlsZTovLyIgKyBXZWJD
b3JlOjppbnNwZWN0b3JSZXNvdXJjZVBhdGgoKSArICIvbG9jYWxpemVkU3RyaW5ncy5qcyI7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5z
cGVjdG9yVUlHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJJbnNwZWN0b3JVSUd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY0Njc4NTVlOGU3NDk4MmMxMjA3M2E2
M2I1OGRlNzgyNmIwY2VkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3BwCkBAIC0wLDAgKzEsNTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViSW5zcGVjdG9yVUkuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29sIFdl
Ykluc3BlY3RvclVJOjpjYW5TYXZlKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmlu
ZyBXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCit7CisgICAgcmV0dXJuIFN0
cmluZygicmVzb3VyY2U6Ly8vb3JnL3dlYmtpdGd0ay9pbnNwZWN0b3IvTG9jYWxpemF0aW9ucy9l
bi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yVUlNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3RvclVJTWFjLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJiZTc2YTY3MTk4ODUwY2Y0NGY0NzYzNGNhZmVhMWUwOGM4NTMyMTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3Bl
Y3RvclVJTWFjLm1tCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIldlYkluc3BlY3RvclVJLmgiCisKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SKQorCisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19T
VEFHRURfRlJBTUVXT1JLKFdlYkluc3BlY3RvclVJLCBQcml2YXRlRnJhbWV3b3JrcywgQSkKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgV2ViSW5zcGVjdG9yVUk6OmNhblNhdmUoKQorewor
ICAgIHJldHVybiB0cnVlOworfQorCitTdHJpbmcgV2ViSW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0
cmluZ3NVUkwoKQoreworICAgIGlmICghbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMKSB7CisgICAg
ICAgIC8vIENhbGwgdGhlIHNvZnQgbGluayBmcmFtZXdvcmsgZnVuY3Rpb24gdG8gZGxvcGVuIGl0
LCB0aGVuIFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpdIHdpbGwgd29yay4KKyAgICAg
ICAgV2ViSW5zcGVjdG9yVUlMaWJyYXJ5KCk7CisKKyAgICAgICAgTlNTdHJpbmcgKnBhdGggPSBb
W05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYkluc3BlY3RvclVJ
Il0gcGF0aEZvclJlc291cmNlOkAibG9jYWxpemVkU3RyaW5ncyIgb2ZUeXBlOkAianMiXTsKKyAg
ICAgICAgaWYgKFtwYXRoIGxlbmd0aF0pCisgICAgICAgICAgICBtX2xvY2FsaXplZFN0cmluZ3NV
UkwgPSBbW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRoXSBhYnNvbHV0ZVN0cmluZ107CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fbG9jYWxpemVkU3RyaW5nc1VSTCA9IFN0cmluZygpOwor
ICAgICAgICBtX2hhc0xvY2FsaXplZFN0cmluZ3NVUkwgPSB0cnVlOworICAgIH0KKworICAgIHJl
dHVybiBtX2xvY2FsaXplZFN0cmluZ3NVUkw7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggMmNiZmVhYjRhNTg0NDBmZTY4
NGFlNmNjOTYwYjRhMzFiN2JmZGU5Ny4uNTJlYmZiMGI5ZTI1ZTQ0Zjc4NGU3OWRiMDZjNmExMDJj
ZTRhNzIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KQEAgLTIwNSw3ICsyMDUsMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0
Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMKIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3NOYW1lKGNvbnN0IENoaWxkUHJv
Y2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICNpZiAhUExBVEZP
Uk0oSU9TKQotICAgIE5TU3RyaW5nICphcHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCIlQCBXZWIgQ29udGVudCIsICJWaXNpYmxlIG5hbWUg
b2YgdGhlIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUu
IiksIChOU1N0cmluZyAqKXBhcmFtZXRlcnMudWlQcm9jZXNzTmFtZV07CisgICAgTlNTdHJpbmcg
KmFwcGxpY2F0aW9uTmFtZTsKKyAgICBpZiAocGFyYW1ldGVycy5leHRyYUluaXRpYWxpemF0aW9u
RGF0YS5nZXQoQVNDSUlMaXRlcmFsKCJpbnNwZWN0b3ItcHJvY2VzcyIpKSA9PSAiMSIpCisgICAg
ICAgIGFwcGxpY2F0aW9uTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9T
VFJJTkcoIiVAIFdlYiBJbnNwZWN0b3IiLCAiVmlzaWJsZSBuYW1lIG9mIFdlYiBJbnNwZWN0b3In
cyB3ZWIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1lLiIpLCAo
TlNTdHJpbmcgKilwYXJhbWV0ZXJzLnVpUHJvY2Vzc05hbWVdOworICAgIGVsc2UKKyAgICAgICAg
YXBwbGljYXRpb25OYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX1NUUklO
RygiJUAgV2ViIENvbnRlbnQiLCAiVmlzaWJsZSBuYW1lIG9mIHRoZSB3ZWIgcHJvY2Vzcy4gVGhl
IGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1lLiIpLCAoTlNTdHJpbmcgKilwYXJhbWV0
ZXJzLnVpUHJvY2Vzc05hbWVdOwogICAgIFdLU2V0VmlzaWJsZUFwcGxpY2F0aW9uTmFtZSgoQ0ZT
dHJpbmdSZWYpYXBwbGljYXRpb25OYW1lKTsKICNlbmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238499</attachid>
            <date>2014-09-22 15:14:21 -0700</date>
            <delta_ts>2014-09-22 16:27:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135120-20140922151420.patch</filename>
            <type>text/plain</type>
            <size>160203</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzgwNThkMDcyNGJlYmM4
ZDU1NDZmOGUwMTcxZmMzNjZjMTZlNTkwMC4uNDNhYzY5NDIxZWEzMzVjMTU3YmM1Njc2ZTYwMWMw
MGM3YzFiZmUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE0LTA5LTIxICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHRoZSBXZWIg
SW5zcGVjdG9yIHVzZSBhIHNlcGFyYXRlIHdlYiBwcm9jZXNzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxMjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFi
bGUuc3RyaW5nczogVXBkYXRlZC4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRT
dGF0ZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogcGFnZS9D
aHJvbWUuaDoKKyAgICAgICAgRXhwb3J0ZWQgYSBmZXcgZnVuY3Rpb25zIGFuZCBwcml2YXRlIGhl
YWRlcnMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckZy
b250ZW5kQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omhh
c0luc3BlY3RvckZyb250ZW5kQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OnNob3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
Lmg6CisgICAgICAgIE1ha2UgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgYSBwb2ludGVyIGluc3Rl
YWQgb2YgYSBzdGQ6OnVuaXF1ZV9wdHIuCisgICAgICAgIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRv
IGltcGxlbWVudCBJbnNwZWN0b3JGcm9udGVuZENsaWVudCBhcworICAgICAgICBwYXJ0IG9mIGFu
IGV4aXN0aW5nIG9iamVjdCB0aGF0IGlzIGV4dGVybmFsbHkgb3duZWQuCisKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9wZW5E
dW1teUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2xv
c2VEdW1teUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5o
OgorICAgICAgICBDaGFuZ2UgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teSBmcm9tIGJlaW5n
IG1vdmVkIHRvIG93bmVkLgorCiAyMDE0LTA5LTIyICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxl
LmNvbT4KIAogICAgICAgICBCYWQgY2FzdCBpbiBpc1ZhbGlkQ29sdW1uU3Bhbm5lci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nCmluZGV4IDI5ZTEzOGRjYjg2NzljZWY0N2FhZDI0Mzg2MTczYmZlOTg0
MjEyYjkuLmY5ZDc1OWIyZGI4YWMyMjIxNWI3NTQ0NGM0NmE5NmUyNGQ4YzYzMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE0LTA5LTIxICBUaW1vdGh5IEhh
dGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHRoZSBXZWIgSW5zcGVj
dG9yIHVzZSBhIHNlcGFyYXRlIHdlYiBwcm9jZXNzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxMjAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIExvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxp
emVkU3RyaW5ncy5qczogVXBkYXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9N
YWluLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuY29udGVudExvYWRlZCk6CisgICAgICAgIE1vdmUgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmxvYWRlZCB0byBsYXRlciBpbiB0aGUgbG9hZC4KKyAgICAgICAgQ2FsbGluZyBpdCBlYXJseSBq
dXN0IHNob3dzIHRoZSB3aW5kb3cgYmVmb3JlIHdlIGhhdmUKKyAgICAgICAgYSB1c2VyIGludGVy
ZmFjZSB0byBzaG93LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1Rlc3QuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IubG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5jb250
ZW50TG9hZGVkKToKKyAgICAgICAgTWF0Y2ggdGhlIGNoYW5nZXMgaW4gTWFpbi5qcy4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanM6Cisg
ICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTCk6IENoYW5nZSBjb21tZW50Lgor
ICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRUb1VSTCk6IENoYW5nZSBjb21t
ZW50LgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2gpOiBBZGQgYW4gYXNz
ZXJ0IGFuZCBlYXJseQorICAgICAgICByZXR1cm4gdG8gYmUgc2FmZSBmcm9tIHVua25vd24gY29t
bWFuZHMuCisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKTogRGVs
ZXRlIF9wZW5kaW5nQ29tbWFuZHMsCisgICAgICAgIG5vIG5lZWQgdG8ga2VlcCBhbiBlbXB0eSBh
cnJheSBhcm91bmQgYSBvbmUgdGltZSB1c2UuCisKIDIwMTQtMDktMDYgIFRpbW90aHkgSGF0Y2hl
ciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBhIDxjaXJjbGU+IGluc3RlYWQg
b2YgYSA8cGF0aD4gaW4gRG93bmxvYWRBcnJvdy5zdmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggNDcy
NzJlMmZlM2Q3ODFjYjg2MzdjNWM5NzY3YTQ3NWI4MjBlYmU5My4uNTFmOTM5NzY4YWIzMWJhMTc0
NzMyYTFhOTZiNzJlNTU0ZDQzZjhjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDE0LTA5LTIxICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAg
ICAgICBNYWtlIHRoZSBXZWIgSW5zcGVjdG9yIHVzZSBhIHNlcGFyYXRlIHdlYiBwcm9jZXNzLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxMjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgUmVtb3ZlZCBtX2Zyb250ZW5k
Q2xpZW50IGluaXRpYWxpemF0aW9uIHNpbmNlIGl0IGlzCisgICAgICAgIG5vdyBhIHN0ZDo6dW5p
cXVlX3B0ciB0aGF0IGRlZmF1bHRzIHRvIG51bGxwdHIuCisKIDIwMTQtMDktMTcgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxNzM2OTUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggM2U0MGQyYTYzNmQ0Mzg3ZmNkODE0YTAz
ZGRjNGM5MTkxODk1ZGM4NS4uMjcxMmNhY2FjNDgyNWUzNGYwOGMzOTVmMjIxOTg3NmYxN2E1NmQ3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTA5LTIxICBUaW1vdGh5
IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHRoZSBXZWIgSW5z
cGVjdG9yIHVzZSBhIHNlcGFyYXRlIHdlYiBwcm9jZXNzLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxMjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KToKKyAg
ICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAg
ICAgKFdlYkluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5kKToKKyAgICAgICAgT3duIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50IGluc3RlYWQgb2YgbW92aW5nIGl0LgorCiAyMDE0LTA5
LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgR2VuZXJhdGUg
RWxlbWVudCBjYXN0aW5nIGhlbHBlciBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA1MWY3
YzIxYTQzNzkwZDVhNDBlYzA3NDgwOWNmN2JhMDI3MmFmOWI2Li43Nzc2YjcwNGQzZGUxY2Q3Mjkx
ZTI1ZGFjZDgwMzhlOGI1NGRiNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTQtMDktMjEgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAg
ICAgIE1ha2UgdGhlIFdlYiBJbnNwZWN0b3IgdXNlIGEgc2VwYXJhdGUgd2ViIHByb2Nlc3MuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTEyMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNs
aWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6ZnJvbnRl
bmRDbGllbnQpOgorICAgICAgICBPd24gV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgaW5zdGVh
ZCBvZiBtb3ZpbmcgaXQuCisKIDIwMTQtMDktMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBHZW5lcmF0ZSBFbGVtZW50IGNhc3RpbmcgaGVscGVyIGZ1bmN0aW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDc4MWNiZDUyMzU5MjRkMzRlODMzZWY3N2UyNmQ5NTFkODEyYjE4Yjgu
LjYxYzk3ZTA0NjUyZjI0NDY2NjFiOWU1ODQzNDQ1Y2RhMjcyYTIxZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxODAgQEAKKzIwMTQtMDktMjEgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBw
bGUuY29tPgorCisgICAgICAgIE1ha2UgdGhlIFdlYiBJbnNwZWN0b3IgdXNlIGEgc2VwYXJhdGUg
d2ViIHByb2Nlc3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNTEyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToK
KyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFr
ZToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
IEFkZGVkIG5ldyBXZWJJbnNwZWN0b3JVSSBmaWxlcyBhbmQgcmVtb3ZlZCBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudC5jcHAuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6IEFkZGVk
IEJ1bmRsZUluc3BlY3RvclVJLgorCisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRp
ZXMvbWFjL0xlZ2FjeVByb2Nlc3MvQ2hpbGRQcm9jZXNzRW50cnlQb2ludC5tbToKKyAgICAgICAg
KFdlYktpdDo6Q2hpbGRQcm9jZXNzTWFpbkRlbGVnYXRlOjpnZXRFeHRyYUluaXRpYWxpemF0aW9u
RGF0YSk6CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZp
Y2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VJ
bml0aWFsaXplckRlbGVnYXRlOjpnZXRFeHRyYUluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciAiaW5zcGVjdG9yLXByb2Nlc3MiIGRhdGEsIGEgYm9vbGVhbiB0aGF0
IGlzIHVzZWQgYnkKKyAgICAgICAgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3NOYW1lLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFdL
SW5zcGVjdG9ySXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KToKKyAgICAgICAgKFdLSW5zcGVjdG9yVG9n
Z2xlSmF2YVNjcmlwdERlYnVnZ2luZyk6CisgICAgICAgIChXS0luc3BlY3RvcklzUHJvZmlsaW5n
SmF2YVNjcmlwdCk6CisgICAgICAgIChXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxp
bmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oOgorICAgICAgICBT
dHViIG91dCBmdW5jdGlvbnMgd2UgZG9uJ3Qgc3VwcG9ydCBidXQgbmVlZCB0byBrZWVwIGZvciBu
aWdodGx5IGNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjpjcmVh
dGVJbnNwZWN0b3JQYWdlR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6V2ViSW5zcGVjdG9yUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpjb25u
ZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25zb2xlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNob3dSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkZXRhY2gpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZWFnZXJseUNyZWF0ZUluc3BlY3RvclBh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9y
UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpvcGVuKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JQcm94eTo6aXNDb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6Y2FuQXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94
eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNy
ZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9y
UHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1DcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtQXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkluc3BlY3Rv
clByb3h5TWFjLm1tOgorICAgICAgICAoLVtXS1dlYkluc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIg
Y2xvc2VdKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3Jl
YXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybURpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBs
YXRmb3JtSGlkZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bVNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBl
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2gp
OgorICAgICAgICBDaGFuZ2VkIGhvdyB0aGUgSW5zcGVjdG9yIHBhZ2UgaXMgY3JlYXRlZCBieSBt
YWtpbmcgaXQgaW4gYSBuZXcgV2ViQ29udGV4dCBmb3IKKyAgICAgICAgdGhlIEluc3BlY3Rvci4g
VGhpcyByZW1vdmVzIHVzIGZyb20gdGhlIG1haW4gcHJvY2VzcyBwb29sIGFuZCBndWFyYW50ZWVz
IG5vIHByb2Nlc3MKKyAgICAgICAgc2hhcmluZyBmb3Igb3VyIHVzZXIgaW50ZXJmYWNlLiBBbHNv
IHNlbmQgbmV3IFdlYkluc3BlY3RvclVJIG1lc3NhZ2VzIHRvIHRoZSBJbnNwZWN0b3IKKyAgICAg
ICAgcGFnZSBhbmQgbm90IHRoZSBpbnNwZWN0ZWQgcGFnZSB3aGVuIGFwcHJvcHJpYXRlLgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6IEFkZCAiaW5zcGVjdG9yLXByb2Nl
c3MiIHRvIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhCisgICAgICAgIGlmIHRoZSBjb250ZXh0IGlz
IHRoZSBJbnNwZWN0b3IgY29udGV4dC4gVGhpcyBpcyB1c2VkIGJ5IFdlYlByb2Nlc3M6OmluaXRp
YWxpemVQcm9jZXNzTmFtZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yQ2xp
ZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JDbGllbnQ6OmJyaW5nRnJvbnRlbmRUb0Zyb250KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICBSZW1vdmUg
dGhlIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBjbGFzcyBmcm9tIFdlYkluc3BlY3RvckNsaWVu
dCBhbmQgY2xlYW4gdXAgYSBsaXR0bGUuCisgICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCBpbXBsZW1lbnRhdGlvbiBtb3ZlZCB0byBXZWJJbnNwZWN0b3IuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcDogUmVt
b3ZlZC4gU3VwZXJzZWRlZCBieSBXZWJJbnNwZWN0b3JVSS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9y
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yOjpvcGVuSW5OZXdUYWIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3I6OnNob3dDb25zb2xlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
OjpzaG93UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzaG93TWFp
blJlc291cmNlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnN0YXJ0
UGFnZVByb2ZpbGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6c3RvcFBhZ2VQ
cm9maWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNhbkF0dGFjaFdpbmRv
dyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6dXBkYXRlRG9ja2luZ0F2YWlsYWJp
bGl0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb0JhY2tl
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9Gcm9udGVu
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmRDb25uZWN0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kRGlzY29u
bmVjdGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3I6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3Rvcjo6c2V0QXR0YWNoZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW46CisgICAgICAgIFN0b3AgdGFraW5nIGFuIG9w
dGlvbmFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBhbmQgaW5oZXJpdCBpdCBpbnN0ZWFkLiBD
cmVhdGUgYSBjb25uZWN0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIHBhc3NlZCB0byB0aGUgb3Ro
ZXIgd2ViIHByb2Nlc3MgZm9yIFdlYkluc3BlY3RvclVJIHRvIHVzZS4gU3RvcCByZWZlcmVuY2lu
ZyBJbnNwZWN0b3IncyBwYWdlCisgICAgICAgIGRpcmVjdGx5LCBzaW5jZSBpdCBpcyBpbiBhbm90
aGVyIHByb2Nlc3Mgbm93LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3RvclVJLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6V2ViSW5zcGVjdG9yVUkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjp3aW5kb3dPYmplY3RDbGVhcmVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmZyb250ZW5kTG9hZGVkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6Om1vdmVXaW5kb3dCeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclVJOjpicmluZ1RvRnJvbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JVSTo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6
cmVxdWVzdFNldERvY2tTaWRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OnNl
dERvY2tTaWRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmNoYW5nZUF0dGFj
aGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmNoYW5n
ZUF0dGFjaGVkV2luZG93V2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6
c2V0VG9vbGJhckhlaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpvcGVu
SW5OZXdUYWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6c2F2ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjphcHBlbmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JVSTo6aW5zcGVjdGVkVVJMQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclVJOjpzaG93Q29uc29sZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clVJOjpzaG93UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OnNo
b3dNYWluUmVzb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJ
OjpzdGFydFBhZ2VQcm9maWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6
c3RvcFBhZ2VQcm9maWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZGlk
U2F2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpkaWRBcHBlbmQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRlQ29tbWFuZE9uTG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVQZW5kaW5nRXhwcmVz
c2lvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OnBhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yVUk6OmF0dGFjaGVkQm90dG9tKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yVUk6OmF0dGFjaGVkUmlnaHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JV
STo6ZGV0YWNoZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVD
b21tYW5kT25Mb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
VUkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9lZmwv
V2ViSW5zcGVjdG9yVUlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUk6OmNhblNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6bG9jYWxp
emVkU3RyaW5nc1VSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNw
ZWN0b3JVSUd0ay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6
Y2FuU2F2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpsb2NhbGl6ZWRTdHJp
bmdzVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3RvclVJ
TWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmNhblNhdmUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCk6
CisgICAgICAgIEltcGxlbWVudCB0aGUgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgYW5kIGhhbmRs
ZSBhIGNvbm5lY3Rpb24gdG8gdGhlIGluc3BlY3RlZCBwYWdlJ3MgV2ViSW5zcGVjdG9yLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6fldlYlBhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNwZWN0b3IpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjppbnNwZWN0b3JVSSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJl
Y2VpdmVNZXNzYWdlKToKKyAgICAgICAgU2V0dXAgYXMgYSBsaXN0ZW5lciBmb3IgV2ViSW5zcGVj
dG9yVUkgbWVzc2FnZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc0luc3BlY3RvclBhZ2UpOiBJdCBpcyBhbiBJ
bnNwZWN0b3IgcGFnZSBpZiB3ZSBoYXZlIGEgbV9pbnNwZWN0b3JVSS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUpOgorICAgICAgICBOYW1lIHRoZSBwcm9jZXNz
ICIlQCBXZWIgSW5zcGVjdG9yIiBpZiBpdCBpcyBhbiBJbnNwZWN0b3IgY29udGVudCBwcm9jZXNz
LiBQcm9jZXNzZXMgaW4gdGhhdAorICAgICAgICBjb250ZXh0IGFyZSBub3Qgc2hhcmVkIHdpdGgg
bXVsdGlwbGUgcGFnZXMuCisKIDIwMTQtMDktMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBHZW5lcmF0ZSBFbGVtZW50IGNhc3RpbmcgaGVscGVyIGZ1bmN0aW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5z
dHJpbmdzIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdz
CmluZGV4IDE0MTE2N2VjMTZlNWVmZmE1MTVmN2U1ZjdjZDRiOWMzODk4ZWVmZjkuLjc3ZGQ3MDcx
NDdjNWNmMmVjMmJkNTAxMDIyMzIwNDVkOWFhYWJiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKQEAgLTQ5LDYgKzQ5LDkgQEAKIC8q
IFZpc2libGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUgYXBw
bGljYXRpb24gbmFtZS4gKi8KICIlQCBXZWIgQ29udGVudCIgPSAiJUAgV2ViIENvbnRlbnQiOwog
CisvKiBWaXNpYmxlIG5hbWUgb2YgV2ViIEluc3BlY3RvcidzIHdlYiBwcm9jZXNzLiBUaGUgYXJn
dW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuICovCisiJUAgV2ViIEluc3BlY3RvciIgPSAi
JUAgV2ViIEluc3BlY3RvciI7CisKIC8qIE5hbWUgb2YgYXBwbGljYXRpb24ncyBzaW5nbGUgV2Vi
Q3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hhaW4gKi8KICIlQCBXZWJDcnlwdG8gTWFzdGVyIEtl
eSIgPSAiJUAgV2ViQ3J5cHRvIE1hc3RlciBLZXkiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4
IGFmMGQ1YWI1OTEwZjhmMzFiOGQzMDA5Yzg1ODQyYThjYTc1M2Y3MzEuLmViNzA5ZjI2ZTkzNzc4
MmFiZDhmMjE1OWM5NzAyMTNjOWMxNDUwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC03NzAs
NiArNzcwLDcgQEAgX19aTjdXZWJDb3JlMTdTUUxpdGVUcmFuc2FjdGlvbkQxRXYKIF9fWk43V2Vi
Q29yZTE3U3VicmVzb3VyY2VMb2FkZXI2Y3JlYXRlRVBOU181RnJhbWVFUE5TXzE0Q2FjaGVkUmVz
b3VyY2VFUktOU18xNVJlc291cmNlUmVxdWVzdEVSS05TXzIxUmVzb3VyY2VMb2FkZXJPcHRpb25z
RQogX19aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVj
dEVQTjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDbGFzc0luZm9FCiBfX1pON1dlYkNvcmUxN2VuY29k
ZUZvckZpbGVOYW1lRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTdleGVjU3RhdGVGcm9t
UGFnZUVSTlNfMTVET01XcmFwcGVyV29ybGRFUE5TXzRQYWdlRQogX19aTjdXZWJDb3JlMTdsYW5n
dWFnZURpZENoYW5nZUV2CiBfX1pON1dlYkNvcmUxN29wZW5UZW1wb3JhcnlGaWxlRVJLTjNXVEY2
U3RyaW5nRVJpCiBfX1pON1dlYkNvcmUxN3NSR0JDb2xvclNwYWNlUmVmRXYKQEAgLTc5Myw2ICs3
OTQsNyBAQCBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDhhZGRUeXBlc0VSS04zV1RG
NlZlY3RvcklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1QwogX19aTjdXZWJDb3JlMThQbGF0Zm9ybVBh
c3RlYm9hcmQ4Z2V0VHlwZXNFUk4zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1Q3Jh
c2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDhzZXRUeXBl
c0VSS04zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVF
CiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZEMxRVJLTjNXVEY2U3RyaW5nRQorX19a
TjdXZWJDb3JlMThTY3JpcHRHbG9iYWxPYmplY3Qzc2V0RVBOM0pTQzlFeGVjU3RhdGVFUEtjUE5T
XzIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0RQogX19aTjdXZWJDb3JlMThTdHlsZVNoZWV0Q29udGVu
dHMxMXBhcnNlU3RyaW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMThTdHlsZVNoZWV0
Q29udGVudHNDMUVQTlNfMTVTdHlsZVJ1bGVJbXBvcnRFUktOM1dURjZTdHJpbmdFUktOU18xNkNT
U1BhcnNlckNvbnRleHRFCiBfX1pON1dlYkNvcmUxOFN0eWxlU2hlZXRDb250ZW50c0QxRXYKQEAg
LTE5MjUsNyArMTkyNywxMCBAQCBfX1pOSzdXZWJDb3JlNVJhbmdlOWVuZE9mZnNldEVSaQogX19a
Tks3V2ViQ29yZTVSYW5nZTlmaXJzdE5vZGVFdgogX19aTks3V2ViQ29yZTVSYW5nZTl0ZXh0UXVh
ZHNFUk4zV1RGNlZlY3RvcklOU185RmxvYXRRdWFkRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dF
RUViUE5TMF8yMFJhbmdlSW5GaXhlZFBvc2l0aW9uRQogX19aTks3V2ViQ29yZTVSYW5nZTl0ZXh0
UmVjdHNFUk4zV1RGNlZlY3RvcklOU183SW50UmVjdEVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93
RUVFYlBOUzBfMjBSYW5nZUluRml4ZWRQb3NpdGlvbkUKK19fWk5LN1dlYkNvcmU2Q2hyb21lMTB3
aW5kb3dSZWN0RXYKIF9fWk5LN1dlYkNvcmU2Q2hyb21lMTJjcmVhdGVXaW5kb3dFUE5TXzVGcmFt
ZUVSS05TXzE2RnJhbWVMb2FkUmVxdWVzdEVSS05TXzE0V2luZG93RmVhdHVyZXNFUktOU18xNk5h
dmlnYXRpb25BY3Rpb25FCitfX1pOSzdXZWJDb3JlNkNocm9tZTEzc2V0V2luZG93UmVjdEVSS05T
XzlGbG9hdFJlY3RFCitfX1pOSzdXZWJDb3JlNkNocm9tZTRzaG93RXYKIF9fWk5LN1dlYkNvcmU2
RWRpdG9yMTJzZWxlY3RlZFRleHRFdgogX19aTks3V2ViQ29yZTZFZGl0b3IxM2NhbkVkaXRSaWNo
bHlFdgogX19aTks3V2ViQ29yZTZFZGl0b3IxNmNvbXBvc2l0aW9uUmFuZ2VFdgpAQCAtMzEyMiwx
MyArMzEyNywxOCBAQCBfX1pON1dlYkNvcmU1Q29sb3JDMUVSS04zV1RGNlN0cmluZ0UKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogX19aTjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTI3c2hvdWxkVHJl
YXRVUkxTY2hlbWVBc0xvY2FsRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTVJbnNwZWN0
b3JDbGllbnQzMWRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2VFUE5TXzRQYWdlRVJLTjNX
VEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMThJbnNwZWN0b3JQYWdlQWdlbnQ3ZnJhbWVJZEVQTlNf
NUZyYW1lRQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTVjb25uZWN0RnJvbnRl
bmRFUE45SW5zcGVjdG9yMjRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxFCiBfX1pON1dlYkNvcmUx
OUluc3BlY3RvckNvbnRyb2xsZXIxOGRpc2Nvbm5lY3RGcm9udGVuZEVOOUluc3BlY3RvcjI1SW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbkUKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxl
cjE4c2V0UHJvZmlsZXJFbmFibGVkRWIKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxl
cjI1ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZEVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29y
ZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI2c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFTlN0M19f
MTEwdW5pcXVlX3B0cklOU18yM0luc3BlY3RvckZyb250ZW5kQ2xpZW50RU5TMV8xNGRlZmF1bHRf
ZGVsZXRlSVMzX0VFRUUKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI2c2V0SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRFUE5TXzIzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFCitfX1pO
N1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyN2Rpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVu
ZEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjRzaG93
RXYKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjVjbG9zZUV2CitfX1pON1dlYkNv
cmUyMUluc3BlY3RvckZyb250ZW5kSG9zdDE2ZGlzY29ubmVjdENsaWVudEV2CitfX1pON1dlYkNv
cmUyMUluc3BlY3RvckZyb250ZW5kSG9zdEMxRVBOU18yM0luc3BlY3RvckZyb250ZW5kQ2xpZW50
RVBOU180UGFnZUUKK19fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0RDFFdgogX19a
TjdXZWJDb3JlMjJpbnN0cnVtZW50YXRpb25Gb3JQYWdlRVBOU180UGFnZUUKIF9fWk43V2ViQ29y
ZTI0SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uMTdzX2Zyb250ZW5kQ291bnRlckUKIF9fWk43V2Vi
Q29yZTI0SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uMjZpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFn
ZUVQTlNfNFBhZ2VFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggODdkMmJiYzVkOTA4NTBiZWU0ZTM3MTlkOTM3MDg4ODBhNDAyMTk4
YS4uMGM2YTNlM2RiNjZjODFmYzBjYWU0ODk3NGQ1NDc1MTJkMjk3OGMyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTc2MSw3
ICsxNzYxLDcgQEAKIAkJNEYxNTM0RTAxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlv
clR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
RjE1MzRERjExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjRGNUZGQjExQ0JE
MkUxMDBBMTg2QkYgLyogSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjRGNUZGQTExQ0JEMkQy
MDBBMTg2QkYgLyogSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5jcHAgKi87IH07CiAJ
CTRGNkZERDY0MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRENjIxMzQxREVE
RDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5jcHAgKi87IH07Ci0JCTRGNkZERDY1MTM0
MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNkZERDYzMTM0MURFREQwMDFGOEVFMyAvKiBJ
bnNwZWN0b3JQYWdlQWdlbnQuaCAqLzsgfTsKKwkJNEY2RkRENjUxMzQxREVERDAwMUY4RUUzIC8q
IEluc3BlY3RvclBhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEY2RkRENjMxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2Vu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRG
NzA3QTk5MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY3MDdB
OTcxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5jcHAg
Ki87IH07CiAJCTRGNzA3QTlBMTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JXZWJCYWNrZW5k
RGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRGNzA3QTk4MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0
Y2hlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0RkIzOTBBRDE1RUY2MUYzMDA3QUQ1MUYgLyogR2VuZXJhdGVkSW1hZ2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZCMzkwQUMxNUVGNjFGMzAw
N0FENTFGIC8qIEdlbmVyYXRlZEltYWdlLmNwcCAqLzsgfTsKQEAgLTIzMzAsNyArMjMzMCw3IEBA
CiAJCTc5RjJGNUExMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjJGNTlFMTA5MTkz
OUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmNwcCAqLzsgfTsKIAkJNzlGMkY1QTIxMDkx
OTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjJGNTlGMTA5MTkzOUEwMDBEODdDQiAvKiBDb21w
b3NpdGlvbkV2ZW50LmggKi87IH07CiAJCTdBMEU3NzBFMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNw
ZWN0b3JGcm9udGVuZEhvc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0EwRTc3MEIxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5k
SG9zdC5jcHAgKi87IH07Ci0JCTdBMEU3NzBGMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JG
cm9udGVuZEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBMEU3NzBDMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCAq
LzsgfTsKKwkJN0EwRTc3MEYxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9z
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EwRTc3
MEMxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBMEU3NzFFMTBDMDBEQjEw
MEEwMjc2RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzcxQzEwQzAwREIxMDBBMDI3NkUgLyog
SlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwICovOyB9OwogCQk3QTBFNzcxRjEwQzAwREIxMDBB
MDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NzFEMTBDMDBEQjEwMEEwMjc2RSAvKiBKU0lu
c3BlY3RvckZyb250ZW5kSG9zdC5oICovOyB9OwogCQk3QTFEN0ZDQjE4Rjg1RjBGMDBDMzg1QUQg
LyogbWVkaWFDb250cm9sc0xvY2FsaXplZFN0cmluZ3MuanMgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMUQ3RkM5MThGODVGMEYwMEMzODVBRCAvKiBt
ZWRpYUNvbnRyb2xzTG9jYWxpemVkU3RyaW5ncy5qcyAqLzsgfTsKQEAgLTIzNzAsNyArMjM3MCw3
IEBACiAJCTdBQjBCMUMxMTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUIwQjFC
RjEyMTFBNjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oICovOyB9OwogCQk3
QUNEODhEMzE0QzA4QkQ2MDA4NEVERDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FDRDg4RDExNEMw
OEJENjAwODRFREQyIC8qIEluc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCAqLzsgfTsKIAkJN0FD
RDg4RDQxNEMwOEJENjAwODRFREQyIC8qIEluc3BlY3RvckluZGV4ZWREQkFnZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUNEODhEMjE0QzA4QkQ2
MDA4NEVERDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCAqLzsgfTsKLQkJN0FERTcyMjYx
MENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBREU3MjI1MTBDQkJCOUIwMDZCM0IzQSAv
KiBDb250ZXh0TWVudVByb3ZpZGVyLmggKi87IH07CisJCTdBREU3MjI2MTBDQkJCOUIwMDZCM0Iz
QSAvKiBDb250ZXh0TWVudVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QURFNzIyNTEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQ
cm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdBRjlCMjAyMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIxRkMxOENGQjJERjAwQzY0
QkVGIC8qIFZUVFJlZ2lvbi5jcHAgKi87IH07CiAJCTdBRjlCMjAzMThDRkIyREYwMEM2NEJFRiAv
KiBWVFRSZWdpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBRjlCMUZEMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uaCAqLzsgfTsKIAkJN0FG
OUIyMDUxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIxRkYxOENGQjJERjAwQzY0QkVG
IC8qIFZUVFJlZ2lvbkxpc3QuY3BwICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaAppbmRleCA4YWEwNTViZDZmOTdiYThjMjFiMDU4Yzcz
YjA4NjE5ODU0ZmNjYTRjLi45MmJmMjA2ZGY1MDk5YTY0YWZlMzFkNzU2MGY2OGZlNjk5N2QxZGYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3Qu
aApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBTY3JpcHRHbG9iYWxPYmplY3QgewogcHVibGljOgog
ICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0g
ICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc2V0
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
Kik7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBib29sIGdldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IGNoYXIqIG5hbWUsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKaW5kZXggOGE4MmNhYjA1ZDY1ODQ4ODRjOWFiYjI3MzNk
MTRjNmZlMDJhYzg3Zi4uN2UyNmFjN2E5YmExNTMzM2UyOTYyODg0YWUwZDZlYzkxYzYzMDJiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBAIC01OCw3ICs1OCw3
IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhl
Y1N0YXRlKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkV4ZWNTdGF0ZSogbWFpbldvcmxkRXhlY1N0
YXRlKEZyYW1lKik7CiAKIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tTm9kZShET01XcmFw
cGVyV29ybGQmLCBOb2RlKik7Ci1KU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVBhZ2UoRE9N
V3JhcHBlcldvcmxkJiwgUGFnZSopOworV0VCQ09SRV9FWFBPUlQgSlNDOjpFeGVjU3RhdGUqIGV4
ZWNTdGF0ZUZyb21QYWdlKERPTVdyYXBwZXJXb3JsZCYsIFBhZ2UqKTsKIEpTQzo6RXhlY1N0YXRl
KiBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGM3Yzg3OTUyZDk2N2RkYmQwNGExN2RiMWVkYjA1
MTYzMzViMTU3MDQuLjIwNDI1MTRiOTZiNjY5NGY0ZjhlZTYyZmJiZGNlYmMzZGYzYTExZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
QEAgLTg2LDYgKzg2LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxl
cihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICAsIG1faW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKG51bGxwdHIpCiAgICAgLCBtX3BhZ2UocGFnZSkKICAgICAsIG1f
aW5zcGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKKyAgICAsIG1faW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQobnVsbHB0cikKICAgICAsIG1faXNVbmRlclRlc3QoZmFsc2UpCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCiAgICAgLCBtX2hhc1JlbW90ZUZyb250ZW5kKGZhbHNlKQpAQCAt
MTg4LDkgKzE4OSw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURl
c3Ryb3llZCgpCiAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBudWxscHRyOwogfQogCi12b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpCit2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50KiBpbnNwZWN0b3JGcm9udGVuZENsaWVudCkKIHsKLSAgICBtX2lu
c3BlY3RvckZyb250ZW5kQ2xpZW50ID0gV1RGOjptb3ZlKGluc3BlY3RvckZyb250ZW5kQ2xpZW50
KTsKKyAgICBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50ID0gaW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ7CiB9CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzTG9jYWxGcm9udGVuZCgpIGNv
bnN0CkBAIC0yMTMsNyArMjE0LDcgQEAgYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNSZW1v
dGVGcm9udGVuZCgpIGNvbnN0CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2luc3BlY3RvckZyb250
ZW5kQ2xpZW50LmdldCgpOworICAgIHJldHVybiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50Owog
fQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3Js
ZChGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCkBAIC0yODMsOCArMjg0LDcg
QEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KCkKICAgICBpZiAobV9pbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwpCiAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5icmluZ0Zyb250ZW5k
VG9Gcm9udCgpOwogICAgIGVsc2UgewotICAgICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9yRnJvbnRl
bmQodGhpcyk7Ci0gICAgICAgIGlmIChmcm9udGVuZENoYW5uZWwpCisgICAgICAgIGlmIChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50
LT5vcGVuSW5zcGVjdG9yRnJvbnRlbmQodGhpcykpCiAgICAgICAgICAgICBjb25uZWN0RnJvbnRl
bmQoZnJvbnRlbmRDaGFubmVsKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBmZDU1OTI0YzAzNTI1NTM0OTczNzhkZmNj
MzVjMTM0NjE1OWM1MmYyLi4zMGQzY2M3NGFkZTAzYTQxMTMyOThjZGY0OTEwNWU3ZGJlYTI0NTVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgK
QEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvdygp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xvc2UoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50Pik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbnNwZWN0b3JG
cm9udGVuZENsaWVudChJbnNwZWN0b3JGcm9udGVuZENsaWVudCopOwogICAgIGJvb2wgaGFzSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQoKSBjb25zdDsKICAgICB2b2lkIGRpZENsZWFyV2luZG93T2Jq
ZWN0SW5Xb3JsZChGcmFtZSosIERPTVdyYXBwZXJXb3JsZCYpOwogCkBAIC0xMjEsNyArMTIxLDcg
QEAgcHVibGljOgogICAgIHZvaWQgcmVzdW1lKCk7CiAKICAgICBJbnNwZWN0b3JDbGllbnQqIGlu
c3BlY3RvckNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yQ2xpZW50OyB9Ci0gICAg
SW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VBZ2Vu
dDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlQWdlbnQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBkZXZlbG9w
ZXJFeHRyYXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNhbkFj
Y2Vzc0luc3BlY3RlZFNjcmlwdFN0YXRlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Qgb3ZlcnJpZGU7
CkBAIC0xNDYsMTAgKzE0NiwxMCBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIG1fdGltZWxpbmVBZ2VudDsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyPiBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9pbnNwZWN0b3JGcm9udGVuZENs
aWVudDsKICAgICBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWw7CiAgICAgUGFnZSYgbV9wYWdlOwogICAgIEluc3BlY3RvckNsaWVu
dCogbV9pbnNwZWN0b3JDbGllbnQ7CisgICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1faW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ7CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5IG1fYWdlbnRzOwogICAgIFZlY3RvcjxJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUs
IDI+IG1faW5qZWN0ZWRTY3JpcHRJbnN0cnVtZW50YXRpb25Db29raWVzOwogICAgIGJvb2wgbV9p
c1VuZGVyVGVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaAppbmRleCA4ZThjZDg1MjQ0NTgzMDFiOTQzODVjNGFmOGIxOGVjYTFiNDc1Mzc0
Li4xYTc0ZWRiMzk4Y2M5YjE2Yjc2MGNmOGViM2MxZmFiNjlmMzU4M2I3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCkBAIC01MCw4ICs1
MCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JGcm9u
dGVuZEhvc3QoY2xpZW50LCBmcm9udGVuZFBhZ2UpKTsKICAgICB9CiAKLSAgICB+SW5zcGVjdG9y
RnJvbnRlbmRIb3N0KCk7Ci0gICAgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgfkluc3BlY3RvckZyb250ZW5kSG9zdCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGlzY29ubmVjdENsaWVudCgpOwogCiAgICAgdm9pZCBsb2FkZWQoKTsKICAgICB2b2lkIHJl
cXVlc3RTZXREb2NrU2lkZShjb25zdCBTdHJpbmcmKTsKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBmcmllbmQgY2xhc3MgRnJvbnRlbmRN
ZW51UHJvdmlkZXI7CiAjZW5kaWYKLSAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QoSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQqLCBQYWdlKiBmcm9udGVuZFBhZ2UpOworICAgIFdFQkNPUkVfRVhQT1JU
IEluc3BlY3RvckZyb250ZW5kSG9zdChJbnNwZWN0b3JGcm9udGVuZENsaWVudCosIFBhZ2UqIGZy
b250ZW5kUGFnZSk7CiAKICAgICBJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9jbGllbnQ7CiAg
ICAgUGFnZSogbV9mcm9udGVuZFBhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmgKaW5kZXggMTEwNjcwZWQwYjM3ODA0ZTk5MDRjNWYxOGIwZDA3ZDBl
NDVhOWU1Ny4uMjVmZTFkNWE2MDNhZTEzMjA3ZTE0YjM0MzA4MWU2N2Q3YmUyZWFlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtMTU1LDcg
KzE1NSw3IEBAIHB1YmxpYzoKICAgICBGcmFtZSogbWFpbkZyYW1lKCk7CiAgICAgU3RyaW5nIGNy
ZWF0ZUlkZW50aWZpZXIoKTsKICAgICBGcmFtZSogZnJhbWVGb3JJZChjb25zdCBTdHJpbmcmIGZy
YW1lSWQpOwotICAgIFN0cmluZyBmcmFtZUlkKEZyYW1lKik7CisgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIGZyYW1lSWQoRnJhbWUqKTsKICAgICBib29sIGhhc0lkRm9yRnJhbWUoRnJhbWUqKSBj
b25zdDsKICAgICBTdHJpbmcgbG9hZGVySWQoRG9jdW1lbnRMb2FkZXIqKTsKICAgICBGcmFtZSog
ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luUmF3U3RyaW5n
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IGZjYTdmOTA4YjhlOTNkNDRiMDFlMTY4NmY1YzIyZDRh
MTk0YWE0NDUuLjNlNGY1ZjBhZTcwNjY3NzYwYjM2MjVjYjY2YzA5ODkyYjA2YmQ4N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuaApAQCAtMTAyLDggKzEwMiw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29u
dGVudHNTaXplQ2hhbmdlZChGcmFtZSosIGNvbnN0IEludFNpemUmKSBjb25zdDsKIAotICAgIHZv
aWQgc2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKLSAgICBGbG9hdFJlY3Qg
d2luZG93UmVjdCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2luZG93UmVj
dChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3Qg
d2luZG93UmVjdCgpIGNvbnN0OwogCiAgICAgRmxvYXRSZWN0IHBhZ2VSZWN0KCkgY29uc3Q7CiAK
QEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb2N1c2VkRnJhbWVDaGFuZ2Vk
KEZyYW1lKikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQYWdlKiBjcmVhdGVXaW5kb3co
RnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmLCBj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uJikgY29uc3Q7Ci0gICAgdm9pZCBzaG93KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93KCkgY29uc3Q7CiAKICAgICBib29sIGNhblJ1bk1v
ZGFsKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5SdW5Nb2RhbE5vdygpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDBhMDI2N2FjZDQ3NTQ3NWE3MDA4M2JiMWU4Yjg3
NzVkOGU3ZWEyMWUuLjU5ZTcxYzQ1ODhkOTRhYTJiNDM0MzBhY2I4YzQwYzAyOWQwZWNiNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE0NzEsMTIgKzE0NzEsMTAgQEAg
UGFzc1JlZlB0cjxET01XaW5kb3c+IEludGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRl
bmQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgUGFnZSogZnJvbnRlbmRQYWdlID0gbV9mcm9udGVu
ZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgpOwogICAgIEFTU0VSVChmcm9udGVuZFBhZ2UpOwog
Ci0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnREdW1teT4oJnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRQ
YWdlKTsKLQotICAgIGZyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9udGVuZENsaWVudCkpOwotCi0gICAgbV9m
cm9udGVuZENoYW5uZWwgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRHVt
bXkoZnJvbnRlbmRQYWdlKSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teT4oJnBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKSwgZnJvbnRlbmRQYWdlKTsKKyAgICBmcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsK
IAorICAgIG1fZnJvbnRlbmRDaGFubmVsID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWxEdW1teT4oZnJvbnRlbmRQYWdlKTsKICAgICBwYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmRDaGFubmVsLmdldCgpKTsKIAogICAg
IHJldHVybiBtX2Zyb250ZW5kV2luZG93OwpAQCAtMTQ5MCwxMCArMTQ4OCwxMSBAQCB2b2lkIElu
dGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKCkKIAogICAgIHBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJl
YXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKIAotICAgIG1fZnJvbnRlbmRDaGFubmVsLnJlbGVh
c2UoKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbnVsbHB0cjsKKyAgICBtX2Zyb250ZW5kQ2hh
bm5lbCA9IG51bGxwdHI7CiAKICAgICBtX2Zyb250ZW5kV2luZG93LT5jbG9zZShtX2Zyb250ZW5k
V2luZG93LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIG1fZnJvbnRlbmRXaW5kb3cu
cmVsZWFzZSgpOworICAgIG1fZnJvbnRlbmRXaW5kb3cuY2xlYXIoKTsKIH0KIAogdm9pZCBJbnRl
cm5hbHM6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0
aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAzZmY5YTdmYjk4
YTQ0NTVhNDE0MzkyNjZhNjBmMDg0NTc4OGFjOGQ5Li42Y2M3ZDI0ZjdjN2E3OGUxOGY5ZjRlMTY0
NDYxOWNmZjUzY2E2YzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTUwLDYg
KzUwLDcgQEAgY2xhc3MgRG9jdW1lbnRNYXJrZXI7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJh
bWU7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teTsKK2NsYXNzIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50RHVtbXk7CiBjbGFzcyBJbnRlcm5hbFNldHRpbmdzOwogY2xhc3MgTWFs
bG9jU3RhdGlzdGljczsKIGNsYXNzIE1lbW9yeUluZm87CkBAIC0zNTAsNyArMzUxLDggQEAgcHJp
dmF0ZToKICAgICBEb2N1bWVudE1hcmtlciogbWFya2VyQXQoTm9kZSosIGNvbnN0IFN0cmluZyYg
bWFya2VyVHlwZSwgdW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIFJlZlB0cjxET01XaW5kb3c+IG1fZnJvbnRlbmRXaW5kb3c7Ci0gICAg
T3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbER1bW15PiBtX2Zyb250ZW5kQ2hhbm5lbDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teT4gbV9mcm9u
dGVuZENsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
RHVtbXk+IG1fZnJvbnRlbmRDaGFubmVsOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdz
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxp
emVkU3RyaW5ncy5qcwppbmRleCAyMTkyMTIwNDA4ZTg5ZmM1OThlOGNlOTk5Y2M2MWJhNTA3Y2M1
ZmI0Li5hMmI0OTExZmJlYTg2NTQwM2NiMDE5ZWViNzVjZTM0MjBiZmIxYWI0IDEwMDY0NApHSVQg
YmluYXJ5IHBhdGNoCmRlbHRhIDkzCnpjbVYtajBIWGlPdyokKGgxRio+aHZsfDR3Nz9Wdk00M2xm
bjNiUXtRYlBUZ21EbGtsd2AqIytUazlUYWR0JEN5dAp6diZXRkMzYlc2ZnY7KHVWcHNFcUdxcTIr
JnZ2MG5OMDwpWEo3ejJ9ZSNUMWhyIVZhQEAjaTl6Y1Uoam17ckB0en0KCmRlbHRhIDEyNTMKemNt
ZDUrJnViRz01RlRBWXh7MjVqbjswb3xqVnUhREhmYWxqMlRfcDxtNzxGWWRlS0E3a0dpbUspLS1E
PHJCS3dQCnpVfHxyWVVpRHhSM0AjWCYzYXVCVmA3OFdXe043dERpQXxGcFdxR2BySHtYMndYNkQ7
JWVeQTtAckxtKFpJX1claQp6QnJmLXI7YzxVVWBFaW44amheQy1yU3BEJF5sZG1+bFQ5VG1QPm5R
cHo0KHd4UmpOPiNFTUMxWihrSHJZTyM4PUUKem5ZcjBuYV9BezJzKTdQVWNAV3lMWUIodzNOend5
Jm0kOCE2N3Q0KGk8SzlpV010OEJZYmUtLTFaJkQ3S0NoWGdFCnoxTzZQJUFsQXV3cGJTUndlOHFj
KTYqSnUzNUBxUU47OXNDZUQ3cEAtNG9sUWhmP1gzZllua3xeOGQ+eU1vPns7Twp6eWJJNWY2PGdS
ZlQxMzh3SlBuYU4lX0RrRkFWb2B+V2tlaj1WaGJuLT1NIUE/JmkpdG81VGZ8KnlecWFRUUpAJnoK
enBiXzNlM0h4SCVlS0Z+bVVhcVM7MVNHcXdreHM+fmRIb2RfKzNZUyhgJEtQOSUyQ244YEppMmk0
Z2xKQ0FJK1BoCno0QXc8PCk9blJpRSR4RmItPXp9O2RCLUJJQVh4dWwyekJ+RWA8cldEQkdGRG9X
JHt7QCU1MUt1ZWUyVnpuaEooNQp6MkFgTVgmKGxOZjZAV1pRQWRyZzBASmJfKis3LSh7SlpxNk9T
M2F4eS1WN25IRGtLdyNPYlNZSHBCYWVjdkI7JDAKeldUVG5uPCpPPCRlK35RVFg2YFVRQG5Za2gk
YDZffChLVllhJUV7eCFlfGBxaDkoZXc+bmY4fTlHKGB9bWRJMHRpCnVSYDV2I0EzX2hicTxqNlh0
IyhaeWh2d29ZeWdoOTJ2N0ltJVN8fDc7X1VFbEI7cm0tWkwhc1lXTmc5Pl8KCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKaW5kZXggZWQ4ZTJh
MDIzNTFjMDBlNGJhMjk5NzcwMWFlZDE5MmQ0NTU5NjBlNC4uZmEyMzRjNzBkYjJjZTY4M2E2NTk3
ZjcwOTVlZmI2YTU2YWRiYWE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtNDksMTAgKzQ5LDcgQEAgV2ViSW5zcGVjdG9yLlR5
cGVJZGVudGlmaWVyQ29va2llS2V5ID0gInJlcHJlc2VudGVkLW9iamVjdC10eXBlIjsKIAogV2Vi
SW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKIHsKLSAgICAvLyBUZWxsIHRoZSBJbnNwZWN0
b3JGcm9udGVuZEhvc3Qgd2UgbG9hZGVkIGZpcnN0IHRvIGVzdGFibGlzaCBjb21tdW5pY2F0aW9u
IHdpdGggSW5zcGVjdG9yQmFja2VuZC4KLSAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZGVk
KCk7Ci0KLSAgICAvLyBJbml0aWFsaXplIFdlYlNvY2tldCB0byBjb21tdW5pY2F0aW9uCisgICAg
Ly8gSW5pdGlhbGl6ZSBXZWJTb2NrZXQgdG8gY29tbXVuaWNhdGlvbi4KICAgICB0aGlzLl9pbml0
aWFsaXplV2ViU29ja2V0SWZOZWVkZWQoKTsKIAogICAgIC8vIFJlZ2lzdGVyIG9ic2VydmVycyBm
b3IgZXZlbnRzIGZyb20gdGhlIEluc3BlY3RvckJhY2tlbmQuCkBAIC0zMjgsMTIgKzMyNSwxMyBA
QCBXZWJJbnNwZWN0b3IuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICBpZiAodGhpcy5f
ZGV0YWlsc1NpZGViYXJXaWR0aFNldHRpbmcudmFsdWUpCiAgICAgICAgIHRoaXMuZGV0YWlsc1Np
ZGViYXIud2lkdGggPSB0aGlzLl9kZXRhaWxzU2lkZWJhcldpZHRoU2V0dGluZy52YWx1ZTsKIAot
ICAgIC8vIFVwZGF0ZSB0aGUgZG9ja2VkIHN0YXRlIGJhc2VkIG9uIHRoZSBxdWVyeSBzdHJpbmcg
cGFzc2VkIHdoZW4gdGhlIFdlYiBJbnNwZWN0b3Igd2FzIGxvYWRlZC4KLSAgICB0aGlzLnVwZGF0
ZURvY2tlZFN0YXRlKHBhcnNlTG9jYXRpb25RdWVyeVBhcmFtZXRlcnMoKS5kb2NrU2lkZSB8fCAi
dW5kb2NrZWQiKTsKLQotICAgIC8vIFRlbGwgdGhlIGZyb250ZW5kIEFQSSB3ZSBhcmUgbG9hZGVk
IHNvIGFueSBwZW5kaW5nIGZyb250ZW5kIGNvbW1hbmRzIGNhbiBiZSBkaXNwYXRjaGVkLgorICAg
IC8vIFNpZ25hbCB0aGF0IHRoZSBmcm9udGVuZCBpcyBub3cgcmVhZHkgdG8gcmVjZWl2ZSBtZXNz
YWdlcy4KICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKCk7CiAKKyAgICAv
LyBUZWxsIHRoZSBJbnNwZWN0b3JGcm9udGVuZEhvc3Qgd2UgbG9hZGVkLCB3aGljaCBjYXVzZXMg
dGhlIHdpbmRvdyB0byBkaXNwbGF5CisgICAgLy8gYW5kIHBlbmRpbmcgSW5zcGVjdG9yRnJvbnRl
bmRBUEkgY29tbWFuZHMgdG8gYmUgc2VudC4KKyAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9h
ZGVkKCk7CisKICAgICAvLyBTZXQgY29sbGFwc2VkIGFmdGVyIGxvYWRpbmcgdGhlIHBlbmRpbmcg
ZnJvbnRlbmQgY29tbWFuZHMgYXJlIGRpc3BhdGNoZWQgc28gb25seSB0aGUgZmluYWwKICAgICAv
LyBzZWxlY3RlZCBzaWRlYmFyIHBhbmVsIGdldHMgc2hvd24gYW5kIGhhcyBhIHNheSBpbiB3aGF0
IGNvbnRlbnQgdmlldyBnZXRzIHNob3duLgogICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXIuY29s
bGFwc2VkID0gdGhpcy5fbmF2aWdhdGlvblNpZGViYXJDb2xsYXBzZWRTZXR0aW5nLnZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9UZXN0
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9UZXN0LmpzCmlu
ZGV4IDc0MjA3NWE3ZDM3MWQ2NDQ1MDRkMjAyZThmY2JhYTkxYTA3OTgzNWQuLjM4MGVhNjc3ODA1
OWJiMjJlYjk4Njk4MmJlODJlN2JiMDNiY2Y4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVGVzdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1Rlc3QuanMKQEAgLTU1LDE1ICs1NSwxNiBAQCBXZWJJ
bnNwZWN0b3IubG9hZGVkID0gZnVuY3Rpb24oKQogCiAgICAgLy8gUGVyZm9ybSBvbmUtdGltZSB0
YXNrcy4KICAgICBXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMucmVxdWVzdENTU05hbWVDb21w
bGV0aW9ucygpOwotCi0gICAgLy8gRXN0YWJsaXNoIGNvbW11bmljYXRpb24gd2l0aCB0aGUgSW5z
cGVjdG9yQmFja2VuZC4KLSAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZGVkKCk7CiB9CiAK
IFdlYkluc3BlY3Rvci5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogewogICAgIC8vIFNpZ25h
bCB0aGF0IHRoZSBmcm9udGVuZCBpcyBub3cgcmVhZHkgdG8gcmVjZWl2ZSBtZXNzYWdlcy4KICAg
ICBJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKCk7CisKKyAgICAvLyBUZWxsIHRo
ZSBJbnNwZWN0b3JGcm9udGVuZEhvc3Qgd2UgbG9hZGVkLCB3aGljaCBjYXVzZXMgdGhlIHdpbmRv
dyB0byBkaXNwbGF5CisgICAgLy8gYW5kIHBlbmRpbmcgSW5zcGVjdG9yRnJvbnRlbmRBUEkgY29t
bWFuZHMgdG8gYmUgc2VudC4KKyAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZGVkKCk7CiB9
CiAKIFdlYkluc3BlY3Rvci5VSVN0cmluZyA9IGZ1bmN0aW9uKHN0cmluZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZy
b250ZW5kQVBJLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKaW5kZXggMTIyNzIxMTI4ZGFmYmViMzE5NDFkYjBj
YzE4NjFiYjA3NmExNWQ0OS4uYTY0NzY4YmFlN2E3ZmRkNGIyZTY5NDRlN2Q3NGU1OGU3NjViZjdk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAgLTI1LDI4ICsy
NSwxNiBAQAogCiBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICBfbG9hZGVkOiBmYWxzZSwK
LQogICAgIF9wZW5kaW5nQ29tbWFuZHM6IFtdLAogCiAgICAgc2F2ZWRVUkw6IGZ1bmN0aW9uKHVy
bCkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgICAgIC8v
IE5vdCB1c2VkIHlldC4KICAgICB9LAogCiAgICAgYXBwZW5kZWRUb1VSTDogZnVuY3Rpb24odXJs
KQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KLSAgICB9LAotCi0g
ICAgaXNEZWJ1Z2dpbmdFbmFibGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICAvLyBGSVhN
RTogTm90IGltcGxlbWVudGVkLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKLQotICAg
IHNldERlYnVnZ2luZ0VuYWJsZWQ6IGZ1bmN0aW9uKGVuYWJsZWQpCi0gICAgewotICAgICAgICAv
LyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorICAgICAgICAvLyBOb3QgdXNlZCB5ZXQuCiAgICAg
fSwKIAogICAgIGlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkOiBmdW5jdGlvbigpCkBAIC0xMDgs
MTEgKzk2LDYgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93U291cmNlQ29kZUZvckZyYW1lKGZyYW1lSWRlbnRp
ZmllciwgdHJ1ZSk7CiAgICAgfSwKIAotICAgIHNldERvY2tpbmdVbmF2YWlsYWJsZTogZnVuY3Rp
b24odW5hdmFpbGFibGUpCi0gICAgewotICAgICAgICAvLyBOb3QgdXNlZC4KLSAgICB9LAotCiAg
ICAgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQ6IGZ1bmN0aW9uKGlkKQogICAgIHsKICAgICAgICAg
V2ViSW5zcGVjdG9yLmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGlkKTsKQEAgLTE0MSw2ICsxMjQs
MTAgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIg
bWV0aG9kTmFtZSA9IHNpZ25hdHVyZS5zaGlmdCgpOworICAgICAgICBjb25zb2xlLmFzc2VydChJ
bnNwZWN0b3JGcm9udGVuZEFQSVttZXRob2ROYW1lXSwgIlVuZXhwZWN0ZWQgSW5zcGVjdG9yRnJv
bnRlbmRBUEkgbWV0aG9kIG5hbWU6ICIgKyBJbnNwZWN0b3JGcm9udGVuZEFQSVttZXRob2ROYW1l
XSk7CisgICAgICAgIGlmICghSW5zcGVjdG9yRnJvbnRlbmRBUElbbWV0aG9kTmFtZV0pCisgICAg
ICAgICAgICByZXR1cm47CisKICAgICAgICAgcmV0dXJuIEluc3BlY3RvckZyb250ZW5kQVBJW21l
dGhvZE5hbWVdLmFwcGx5KEluc3BlY3RvckZyb250ZW5kQVBJLCBzaWduYXR1cmUpOwogICAgIH0s
CiAKQEAgLTE1MSw2ICsxMzgsNiBAQCBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBJbnNwZWN0b3JGcm9udGVuZEFQSS5fcGVuZGluZ0NvbW1hbmRz
Lmxlbmd0aDsgKytpKQogICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2go
SW5zcGVjdG9yRnJvbnRlbmRBUEkuX3BlbmRpbmdDb21tYW5kc1tpXSk7CiAKLSAgICAgICAgSW5z
cGVjdG9yRnJvbnRlbmRBUEkuX3BlbmRpbmdDb21tYW5kcyA9IFtdOworICAgICAgICBkZWxldGUg
SW5zcGVjdG9yRnJvbnRlbmRBUEkuX3BlbmRpbmdDb21tYW5kczsKICAgICB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3Iv
V2ViS2l0RXhwb3J0cy5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktp
dEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgppbmRleCBmYmU4Mzk0YmU0OGI3
ZmYwYmNjMjFmNmZkYWIxMDEzYmNmOTExZDIyLi42ZTZmNWEwZTExZmQwYWFiNTBiMWU5ZjQzMGEx
ODgwZjY5NGQ1ZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dl
YktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRl
Zi5pbgpAQCAtMjI3LDcgKzIyNyw2IEBAIEVYUE9SVFMKICAgICAgICAgc3ltYm9sV2l0aFBvaW50
ZXIoP29wZW5Jbk5ld1RhYkBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVB
RVhBQlZTdHJpbmdAV1RGQEBAWiwgP29wZW5Jbk5ld1RhYkBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsQFdlYkNvcmVAQFVFQUFYQUVCVlN0cmluZ0BXVEZAQEBaKQogICAgICAgICBzeW1ib2xX
aXRoUG9pbnRlcig/cmVxdWVzdFNldERvY2tTaWRlQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWxAV2ViQ29yZUBAVUFFWFc0RG9ja1NpZGVASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRAMkBAWiwg
P3JlcXVlc3RTZXREb2NrU2lkZUBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVA
QFVFQUFYVzREb2NrU2lkZUBJbnNwZWN0b3JGcm9udGVuZENsaWVudEAyQEBaKQogICAgICAgICBz
eW1ib2xXaXRoUG9pbnRlcig/c2VuZE1lc3NhZ2VUb0JhY2tlbmRASW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbEBXZWJDb3JlQEBVQUVYQUJWU3RyaW5nQFdURkBAQFosID9zZW5kTWVzc2FnZVRv
QmFja2VuZEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVFQUFYQUVCVlN0
cmluZ0BXVEZAQEBaKQotICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/c2V0SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYVj8kdW5pcXVlX3B0
ckBWSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRAV2ViQ29yZUBAVT8kZGVmYXVsdF9kZWxldGVAVklu
c3BlY3RvckZyb250ZW5kQ2xpZW50QFdlYkNvcmVAQEBzdGRAQEBzdGRAQEBaLCA/c2V0SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRRUFBWFY/JHVu
aXF1ZV9wdHJAVkluc3BlY3RvckZyb250ZW5kQ2xpZW50QFdlYkNvcmVAQFU/JGRlZmF1bHRfZGVs
ZXRlQFZJbnNwZWN0b3JGcm9udGVuZENsaWVudEBXZWJDb3JlQEBAc3RkQEBAc3RkQEBAWikKICAg
ICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3NldFByb3BlcnR5QFNldHRpbmdzQEluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFWEFCVlN0cmluZ0BXVEZAQDBAWiwgP3NldFBy
b3BlcnR5QFNldHRpbmdzQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUVB
QVhBRUJWU3RyaW5nQFdURkBAMEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/d2luZG93
T2JqZWN0Q2xlYXJlZEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRVhY
WiwgP3dpbmRvd09iamVjdENsZWFyZWRASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJD
b3JlQEBVRUFBWFhaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50QFdlYkNvcmVAQFlBP0FWU3RyaW5nQFdURkBAQUJWMjNAMEBaLCA/cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50QFdlYkNvcmVAQFlBP0FWU3RyaW5nQFdURkBAQUVCVjIzQDBAWikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudElPUy5tbQppbmRleCBkMzBkOGI5MTIyNTYzZmM5ODkxZTVkY2NjMGVkOTU1ZTYxYWUx
OTdjLi45OGRjYWVkMzE5MGQxODlkNzAxY2UyZjQyODIyMjliN2QzMGRkOGRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50SU9TLm1tCkBAIC00Niw3ICs0Niw2IEBAIFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVj
dG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICAg
ICAsIG1faGlnaGxpZ2h0ZXIoYWRvcHROUyhbW1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5p
dFdpdGhJbnNwZWN0ZWRXZWJWaWV3OndlYlZpZXddKSkKICAgICAsIG1fZnJvbnRlbmRQYWdlKDAp
Ci0gICAgLCBtX2Zyb250ZW5kQ2xpZW50KDApCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNDg1Njgz
NjdmNDE2NTJhM2Q3N2RhNGE4NjBkNGRjN2YzNDQzOWFmNy4uODk4NzdlYmU0YTVjZGIwNjI0NTk3
NzFjZWExMGFlYmYzMzdmODRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2
YXRlOgogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKICAgICBSZXRhaW5QdHI8V2ViTm9kZUhpZ2hs
aWdodGVyPiBtX2hpZ2hsaWdodGVyOwogICAgIFdlYkNvcmU6OlBhZ2UqIG1fZnJvbnRlbmRQYWdl
OwotICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2Zyb250ZW5kQ2xpZW50OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9mcm9udGVuZENs
aWVudDsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDZlMTc4OWQ3Y2JhYTY0ZThlYTQ5YTQ3YTAw
YjJjNmZiMTYwNmQ0Y2UuLjgzMDhiOWU3M2UxNzAwNDQ0YTE3ZjkwZjA0MzExMzRiYThkNjM0NjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0KQEAgLTEzMyw4ICsxMzMsNyBAQCBAZW5kCiBXZWJJbnNwZWN0b3JDbGll
bnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3
KHdlYlZpZXcpCiAgICAgLCBtX2hpZ2hsaWdodGVyKGFkb3B0TlMoW1tXZWJOb2RlSGlnaGxpZ2h0
ZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzp3ZWJWaWV3XSkpCi0gICAgLCBtX2Zy
b250ZW5kUGFnZSgwKQotICAgICwgbV9mcm9udGVuZENsaWVudCgwKQorICAgICwgbV9mcm9udGVu
ZFBhZ2UobnVsbHB0cikKIHsKIH0KIApAQCAtMTUwLDExICsxNDksMTMgQEAgSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJ
bnNwZWN0b3JDb24KICAgICBbd2luZG93Q29udHJvbGxlci5nZXQoKSBzZXRJbnNwZWN0b3JDbGll
bnQ6dGhpc107CiAKICAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIu
Z2V0KCkgd2ViVmlld10pOwotICAgIGF1dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX3dlYlZpZXcsIHdpbmRvd0NvbnRyb2xs
ZXIuZ2V0KCksIGluc3BlY3RvckNvbnRyb2xsZXIsIG1fZnJvbnRlbmRQYWdlLCBjcmVhdGVGcm9u
dGVuZFNldHRpbmdzKCkpOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBmcm9udGVuZENsaWVudC5n
ZXQoKTsKLSAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yRnJvbnRlbmQ+IHdlYkluc3BlY3RvckZy
b250ZW5kID0gYWRvcHROUyhbW1dlYkluc3BlY3RvckZyb250ZW5kIGFsbG9jXSBpbml0V2l0aEZy
b250ZW5kQ2xpZW50OmZyb250ZW5kQ2xpZW50LmdldCgpXSk7CisgICAgbV9mcm9udGVuZENsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fd2ViVmll
dywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdG9yQ29udHJvbGxlciwgbV9mcm9udGVu
ZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CisKKyAgICBSZXRhaW5QdHI8V2ViSW5z
cGVjdG9yRnJvbnRlbmQ+IHdlYkluc3BlY3RvckZyb250ZW5kID0gYWRvcHROUyhbW1dlYkluc3Bl
Y3RvckZyb250ZW5kIGFsbG9jXSBpbml0V2l0aEZyb250ZW5kQ2xpZW50Om1fZnJvbnRlbmRDbGll
bnQuZ2V0KCldKTsKICAgICBbW21fd2ViVmlldyBpbnNwZWN0b3JdIHNldEZyb250ZW5kOndlYklu
c3BlY3RvckZyb250ZW5kLmdldCgpXTsKLSAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9udGVuZENs
aWVudCkpOworCisgICAgbV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJ
bnNwZWN0b3JGcm9udGVuZENsaWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsKKwogICAgIHJl
dHVybiB0aGlzOwogfQogCkBAIC0xOTksOCArMjAwLDggQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGll
bnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKQogCiB2b2lkIFdlYkluc3Bl
Y3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5kKCkKIHsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0g
MDsKLSAgICBtX2Zyb250ZW5kUGFnZSA9IDA7CisgICAgbV9mcm9udGVuZENsaWVudCA9IG51bGxw
dHI7CisgICAgbV9mcm9udGVuZFBhZ2UgPSBudWxscHRyOwogfQogCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmlu
ZGV4IDNmMzZkZWY4YWIwOTkzNTBmZGRhNzIxYzQzYmE2Y2U0MGMzNTczZmIuLjkwZWRkZTU2NjVl
NmI2N2ZkMTVkMWVkZTBiOTQ4YjRhMjRmZTgxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtNjgsNyAr
NjgsNiBAQCBzdGF0aWMgY29uc3QgSW50UmVjdCYgZGVmYXVsdFdpbmRvd1JlY3QoKQogV2ViSW5z
cGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyogd2ViVmlldykKICAgICA6
IG1faW5zcGVjdGVkV2ViVmlldyh3ZWJWaWV3KQogICAgICwgbV9mcm9udGVuZFBhZ2UoMCkKLSAg
ICAsIG1fZnJvbnRlbmRDbGllbnQoMCkKIHsKICAgICBBU1NFUlQobV9pbnNwZWN0ZWRXZWJWaWV3
KTsKICAgICBtX2luc3BlY3RlZFdlYlZpZXctPnZpZXdXaW5kb3coJm1faW5zcGVjdGVkV2ViVmll
d0hhbmRsZSk7CkBAIC0xNzEsOSArMTcwLDggQEAgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnMKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoZnJvbnRlbmRXZWJW
aWV3LmdldCgpKTsKLSAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3BlY3Rl
ZFdlYlZpZXdIYW5kbGUsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdl
YlZpZXdId25kLCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwotICAgIG1fZnJvbnRl
bmRDbGllbnQgPSBmcm9udGVuZENsaWVudC5nZXQoKTsKLSAgICBtX2Zyb250ZW5kUGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdURjo6bW92ZShm
cm9udGVuZENsaWVudCkpOworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVj
dGVkV2ViVmlld0hhbmRsZSwgZnJvbnRlbmRId25kLCBmcm9udGVuZFdlYlZpZXcsIGZyb250ZW5k
V2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CisgICAgbV9mcm9u
dGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVu
dChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsKICAgICBtX2Zyb250ZW5kSGFuZGxlID0gZnJvbnRl
bmRId25kOwogICAgIHJldHVybiB0aGlzOwogfQpAQCAtMjE5LDcgKzIxNyw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50Ojp1cGRhdGVIaWdobGlnaHQoKQogCiB2b2lkIFdlYkluc3BlY3RvckNs
aWVudDo6cmVsZWFzZUZyb250ZW5kKCkKIHsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gMDsKKyAg
ICBtX2Zyb250ZW5kQ2xpZW50ID0gbnVsbHB0cjsKICAgICBtX2Zyb250ZW5kUGFnZSA9IDA7CiAg
ICAgbV9mcm9udGVuZEhhbmRsZSA9IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IGIzMWRkODliNDYyODZj
MzBjMTQ0MmE4Y2VjZTE0NzgzZTA2ZDAyNDguLjQ3ZmJlYTBhODA3NDFkNWNiOTcyOGU4MTdjYzQ5
N2EyZTkyYmM5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcmVsZWFzZUZyb250ZW5kKCk7CiAKLSAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dCogZnJvbnRlbmRDbGllbnQoKSB7IHJldHVybiBtX2Zyb250ZW5kQ2xpZW50OyB9CisgICAgV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIGZyb250ZW5kQ2xpZW50KCkgeyByZXR1cm4gbV9mcm9u
dGVuZENsaWVudC5nZXQoKTsgfQogCiAgICAgdm9pZCB1cGRhdGVIaWdobGlnaHQoKTsKIApAQCAt
ODUsNyArODUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViVmlldyogbV9pbnNwZWN0ZWRXZWJWaWV3
OwogICAgIFdlYkNvcmU6OlBhZ2UqIG1fZnJvbnRlbmRQYWdlOwotICAgIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50KiBtX2Zyb250ZW5kQ2xpZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9mcm9udGVuZENsaWVudDsKICAgICBIV05EIG1faW5z
cGVjdGVkV2ViVmlld0hhbmRsZTsKICAgICBIV05EIG1fZnJvbnRlbmRIYW5kbGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQKaW5kZXggNGYzOTIzZDQxYjNkM2M0ZTg5MTQ1NWU5ZjhjMGQ3MTgyNDZkZTZj
Mi4uNmJkYzU5ZGM1YTJlYjc1NDg5N2ZkY2M5NjRiMDNiZGI0MmNkYTYzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VM
aXN0cy50eHQKQEAgLTUzMCw3ICs1MzAsNiBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKICAgICBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAogICAgIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAotICAgIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwCiAgICAgV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuY3BwCiAgICAgV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCiAgICAgV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuY3BwCkBAIC01NTIsNiArNTUx
LDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1
bWVudExvYWRlci5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCiAgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yVUkuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAog
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAKQEAgLTY0NSw2ICs2
NDUsNyBAQCBzZXQoV2ViS2l0Ml9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvV2Vi
UGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3RvclVJLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkubWVz
c2FnZXMuaW4KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGVhZWY1MTZmYjgz
YmUxZjQ5M2M0OTQ2ZGE4ZTc0MDAxZTU4MGQ0MjQuLmNhMDZhMDY4OTJjNGQ3ZjNhNTMzMTgwMDNh
OWM1MzE2ZDZiYjkwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTIxLDYg
KzEyMSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFdlYkljb25EYXRhYmFzZVByb3h5
IFwKICAgICBXZWJJbnNwZWN0b3IgXAogICAgIFdlYkluc3BlY3RvclByb3h5IFwKKyAgICBXZWJJ
bnNwZWN0b3JVSSBcCiAgICAgV2ViTWVkaWFDYWNoZU1hbmFnZXIgXAogICAgIFdlYk1lZGlhQ2Fj
aGVNYW5hZ2VyUHJveHkgXAogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZQppbmRleCAwMWUzNGVhMGJmOWY4OGZiNmZlOTZhNDY5YTNlMjIzNjFmMGE4
ZDFjLi5mMDdmYjYzOTExNWViMTQyNjljZGMxNjcyYzA3OTRjMWJjZDBiMzUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTk0LDcgKzE5NCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJf
U09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2F0ay9XZWJQYWdlQWNjZXNzaWJpbGl0
eU9iamVjdEF0ay5jcHAKIAotICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9y
RWZsLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9yVUlFZmwuY3Bw
CiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcAogCiAgICAgV2ViUHJv
Y2Vzcy9lZmwvU2VjY29tcEZpbHRlcnNXZWJQcm9jZXNzRWZsLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZQppbmRleCA2ODU2ODYxYzg5ZmVjZTIxYWI3Zjg5NjEwZjgyZTNlYTQ4MWNmMGNhLi5m
ZTYzYzFmNDVhM2IwZmM2YzJlYWRjN2I5Njg0NDBkYzRmYmE4ZDEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUdUSy5jbWFrZQpAQCAtMzAyLDcgKzMwMiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNF
UwogCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUHJpbnRlckxpc3RHdGsuY3BwCi0gICAgV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JHdGsuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dl
YlBhZ2VHdGsuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlv
bkd0ay5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCmluZGV4IDZkZjQ5MTgzZDJiYzQ2
MjY1Y2MwOWY3YjVkNTc0YTA3YjNjMGM1OTIuLjkyMmU2ZGEwM2ZhNTFjZDFlZmNjYzdjNjdhMWZm
MGI3NTMxNTFkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKQEAgLTE0Myw2ICsxNDMs
NyBAQCBwdWJsaWM6CiAgICAgICAgIEJ1bmRsZUZyYW1lLAogICAgICAgICBCdW5kbGVIaXRUZXN0
UmVzdWx0LAogICAgICAgICBCdW5kbGVJbnNwZWN0b3IsCisgICAgICAgIEJ1bmRsZUluc3BlY3Rv
clVJLAogICAgICAgICBCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBCdW5kbGVOb2Rl
SGFuZGxlLAogICAgICAgICBCdW5kbGVQYWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL0xlZ2FjeVByb2Nlc3MvQ2hpbGRQcm9jZXNz
RW50cnlQb2ludC5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVz
L21hYy9MZWdhY3lQcm9jZXNzL0NoaWxkUHJvY2Vzc0VudHJ5UG9pbnQubW0KaW5kZXggMTNmMzA2
ZTAwZWRlYWZhZTEwNTIzMzMwZjMxMTdmNjY0MWNmM2Q1Yi4uZDk1Y2VmZGNhNmUzZGFiNzFhMWFk
ZTZkZmE4OWM4NDA5NTQxNWMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Vu
dHJ5UG9pbnRVdGlsaXRpZXMvbWFjL0xlZ2FjeVByb2Nlc3MvQ2hpbGRQcm9jZXNzRW50cnlQb2lu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMv
TGVnYWN5UHJvY2Vzcy9DaGlsZFByb2Nlc3NFbnRyeVBvaW50Lm1tCkBAIC04OCw4ICs4OCwxMSBA
QCBib29sIENoaWxkUHJvY2Vzc01haW5EZWxlZ2F0ZTo6Z2V0Q2xpZW50UHJvY2Vzc05hbWUoU3Ry
aW5nJiBjbGllbnRQcm9jZXNzTmFtZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDaGls
ZFByb2Nlc3NNYWluRGVsZWdhdGU6OmdldEV4dHJhSW5pdGlhbGl6YXRpb25EYXRhKEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+JikKK2Jvb2wgQ2hpbGRQcm9jZXNzTWFpbkRlbGVnYXRlOjpnZXRFeHRy
YUluaXRpYWxpemF0aW9uRGF0YShIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZXh0cmFJbml0aWFs
aXphdGlvbkRhdGEpCiB7CisgICAgU3RyaW5nIGluc3BlY3RvclByb2Nlc3MgPSBtX2NvbW1hbmRM
aW5lWyJpbnNwZWN0b3ItcHJvY2VzcyJdOworICAgIGlmICghaW5zcGVjdG9yUHJvY2Vzcy5pc0Vt
cHR5KCkpCisgICAgICAgIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZChBU0NJSUxpdGVyYWwo
Imluc3BlY3Rvci1wcm9jZXNzIiksIGluc3BlY3RvclByb2Nlc3MpOwogICAgIHJldHVybiB0cnVl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxp
dGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbSBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VF
bnRyeVBvaW50Lm1tCmluZGV4IDE2OTdlZTliMjcyNmY2YWRjYTBjNjc5YmE4ZmM5ZTFjNjE4ZDM5
NzIuLjM2NWVhOGQyYmRjYTNmYzFmNDkyN2I5OWE3NGU4ZDQ2Y2I4MjFjNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNl
L1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRy
eVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCkBA
IC05Miw4ICs5MiwxNCBAQCBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRD
bGllbnRQcm9jZXNzTmFtZShTdHJpbmcmIGNsaWVudFByb2Nlc3NOYQogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRFeHRyYUluaXRp
YWxpemF0aW9uRGF0YShIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpCitib29sIFhQQ1NlcnZpY2VJ
bml0aWFsaXplckRlbGVnYXRlOjpnZXRFeHRyYUluaXRpYWxpemF0aW9uRGF0YShIYXNoTWFwPFN0
cmluZywgU3RyaW5nPiYgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEpCiB7CisgICAgeHBjX29iamVj
dF90IGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCA9IHhwY19kaWN0aW9uYXJ5X2dl
dF92YWx1ZShtX2luaXRpYWxpemVyTWVzc2FnZSwgImV4dHJhLWluaXRpYWxpemF0aW9uLWRhdGEi
KTsKKworICAgIFN0cmluZyBpbnNwZWN0b3JQcm9jZXNzID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0
cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QsICJpbnNwZWN0b3ItcHJvY2Vz
cyIpOworICAgIGlmICghaW5zcGVjdG9yUHJvY2Vzcy5pc0VtcHR5KCkpCisgICAgICAgIGV4dHJh
SW5pdGlhbGl6YXRpb25EYXRhLmFkZChBU0NJSUxpdGVyYWwoImluc3BlY3Rvci1wcm9jZXNzIiks
IGluc3BlY3RvclByb2Nlc3MpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwCmluZGV4IDE2ZTg0NWIwNzRl
NDNkZDUyZGE5OGZlZjcxZjk1NjlhNjJmZjlmMGIuLjhjOTk3NWI0YzlmN2U4N2UxMGZiMGRlNTM4
MDFkOTdkN2RjYTliN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0luc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
SW5zcGVjdG9yLmNwcApAQCAtMTc0LDQyICsxNzQsMzAgQEAgdm9pZCBXS0luc3BlY3RvckRldGFj
aChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3JSZWYpCiAjZW5kaWYKIH0KIAotYm9vbCBXS0luc3Bl
Y3RvcklzRGVidWdnaW5nSmF2YVNjcmlwdChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3JSZWYpCiti
b29sIFdLSW5zcGVjdG9ySXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KFdLSW5zcGVjdG9yUmVmKQogewot
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgcmV0dXJuIHRvSW1wbChpbnNwZWN0b3JSZWYpLT5p
c0RlYnVnZ2luZ0phdmFTY3JpcHQoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGluc3BlY3Rv
clJlZik7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5
IHdpdGggbmlnaHRseSBidWlsZHMgYW5kIFNhZmFyaS4KKyAgICAvLyBSZW1vdmUgaXQgb25jZSBT
YWZhcmkgbm8gbG9uZ2VyIGRlcGVuZHMgb24gaXQuCiAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlm
CiB9CiAKLXZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKFdLSW5zcGVj
dG9yUmVmIGluc3BlY3RvclJlZikKK3ZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0RGVi
dWdnaW5nKFdLSW5zcGVjdG9yUmVmKQogewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgdG9J
bXBsKGluc3BlY3RvclJlZiktPnRvZ2dsZUphdmFTY3JpcHREZWJ1Z2dpbmcoKTsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKGluc3BlY3RvclJlZik7Ci0jZW5kaWYKKyAgICAvLyBGSVhNRTogVGhp
cyBpcyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBuaWdodGx5IGJ1aWxkcyBhbmQg
U2FmYXJpLgorICAgIC8vIFJlbW92ZSBpdCBvbmNlIFNhZmFyaSBubyBsb25nZXIgZGVwZW5kcyBv
biBpdC4KIH0KIAotYm9vbCBXS0luc3BlY3RvcklzUHJvZmlsaW5nSmF2YVNjcmlwdChXS0luc3Bl
Y3RvclJlZiBpbnNwZWN0b3JSZWYpCitib29sIFdLSW5zcGVjdG9ySXNQcm9maWxpbmdKYXZhU2Ny
aXB0KFdLSW5zcGVjdG9yUmVmKQogewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgcmV0dXJu
IHRvSW1wbChpbnNwZWN0b3JSZWYpLT5pc1Byb2ZpbGluZ0phdmFTY3JpcHQoKTsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKGluc3BlY3RvclJlZik7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgZm9y
IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggbmlnaHRseSBidWlsZHMgYW5kIFNhZmFyaS4K
KyAgICAvLyBSZW1vdmUgaXQgb25jZSBTYWZhcmkgbm8gbG9uZ2VyIGRlcGVuZHMgb24gaXQuCiAg
ICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAKLXZvaWQgV0tJbnNwZWN0b3JUb2dnbGVKYXZh
U2NyaXB0UHJvZmlsaW5nKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKK3ZvaWQgV0tJbnNw
ZWN0b3JUb2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKFdLSW5zcGVjdG9yUmVmKQogewotI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0gICAgdG9JbXBsKGluc3BlY3RvclJlZiktPnRvZ2dsZUphdmFTY3Jp
cHRQcm9maWxpbmcoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGluc3BlY3RvclJlZik7Ci0j
ZW5kaWYKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkg
d2l0aCBuaWdodGx5IGJ1aWxkcyBhbmQgU2FmYXJpLgorICAgIC8vIFJlbW92ZSBpdCBvbmNlIFNh
ZmFyaSBubyBsb25nZXIgZGVwZW5kcyBvbiBpdC4KIH0KIAogYm9vbCBXS0luc3BlY3RvcklzUHJv
ZmlsaW5nUGFnZShXS0luc3BlY3RvclJlZiBpbnNwZWN0b3JSZWYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oCmluZGV4IGJhNzY0ODkzMjVmMTU0MTQ2N2E0
ZDdlMTBjMGIyMGM3MTdkOTE5ODkuLjIwNjU3OGQ1NDNiMmIyNmQ1YTljYjZjM2UwODYxZDIzMjIw
MDVhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3Bl
Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5o
CkBAIC01OCwxNSArNTgsMTcgQEAgV0tfRVhQT1JUIGJvb2wgV0tJbnNwZWN0b3JJc0F0dGFjaGVk
KFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7CiBXS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvckF0
dGFjaChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwogV0tfRVhQT1JUIHZvaWQgV0tJbnNwZWN0
b3JEZXRhY2goV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKIAorV0tfRVhQT1JUIGJvb2wgV0tJ
bnNwZWN0b3JJc1Byb2ZpbGluZ1BhZ2UoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKK1dLX0VY
UE9SVCB2b2lkIFdLSW5zcGVjdG9yVG9nZ2xlUGFnZVByb2ZpbGluZyhXS0luc3BlY3RvclJlZiBp
bnNwZWN0b3IpOworCisvLyBGSVhNRTogVGhlc2UgYXJlIGZvciBiYWNrd2FyZHMgY29tcGF0aWJp
bGl0eSB3aXRoIG5pZ2h0bHkgYnVpbGRzIGFuZCBTYWZhcmkuCisvLyBSZW1vdmUgdGhlbSBvbmNl
IFNhZmFyaSBubyBsb25nZXIgZGVwZW5kcyBvbiB0aGVtLgogV0tfRVhQT1JUIGJvb2wgV0tJbnNw
ZWN0b3JJc0RlYnVnZ2luZ0phdmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKIFdL
X0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9yVG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZyhXS0luc3Bl
Y3RvclJlZiBpbnNwZWN0b3IpOwogCiBXS19FWFBPUlQgYm9vbCBXS0luc3BlY3RvcklzUHJvZmls
aW5nSmF2YVNjcmlwdChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwogV0tfRVhQT1JUIHZvaWQg
V0tJbnNwZWN0b3JUb2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKFdLSW5zcGVjdG9yUmVmIGluc3Bl
Y3Rvcik7CiAKLVdLX0VYUE9SVCBib29sIFdLSW5zcGVjdG9ySXNQcm9maWxpbmdQYWdlKFdLSW5z
cGVjdG9yUmVmIGluc3BlY3Rvcik7Ci1XS19FWFBPUlQgdm9pZCBXS0luc3BlY3RvclRvZ2dsZVBh
Z2VQcm9maWxpbmcoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKLQogI2lmZGVmIF9fY3BsdXNw
bHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuY3BwCmluZGV4IGJlMzc3MDRjYmE4M2IyZDYzZGY2YjE4ZjQ5NDc5NDYyMWYyYWMwMjQu
Ljk5NGZiZDkwMDQxYTc1Mjc4YmU2NDQzYjA2NDc1YzdlMWMwZmEyNWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMwLDExICsz
MCwxMiBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJBUElVUkxSZXF1ZXN0
LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlz
dGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJXZWJJ
bnNwZWN0b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5TWVzc2FnZXMu
aCIKLSNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiV2Vi
SW5zcGVjdG9yVUlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCkBAIC01Nyw5
ICs1OCw2IEBAIGNvbnN0IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5OjptaW5pbXVtV2luZG93
SGVpZ2h0ID0gNDAwOwogY29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OmluaXRpYWxX
aW5kb3dXaWR0aCA9IDEwMDA7CiBjb25zdCB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5p
dGlhbFdpbmRvd0hlaWdodCA9IDY1MDsKIAotY29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJv
eHk6Om1pbmltdW1BdHRhY2hlZFdpZHRoID0gNzUwOwotY29uc3QgdW5zaWduZWQgV2ViSW5zcGVj
dG9yUHJveHk6Om1pbmltdW1BdHRhY2hlZEhlaWdodCA9IDI1MDsKLQogY2xhc3MgV2ViSW5zcGVj
dG9yUGFnZUdyb3VwcyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYkluc3BlY3RvclBhZ2VHcm91
cHMmIHNoYXJlZCgpCkBAIC0xMDUsMTEgKzEwMywxMiBAQCBwcml2YXRlOgogICAgICAgICBSZWZQ
dHI8V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShTdHJpbmc6
OmZvcm1hdCgiX19XZWJJbnNwZWN0b3JQYWdlR3JvdXBMZXZlbCV1X18iLCBsZXZlbCksIGZhbHNl
LCBmYWxzZSk7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIC8vIEFsbG93IGRldmVsb3BlcnMg
dG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMuCisgICAgICAgIC8v
IEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBi
dWlsZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICAgICAgcGFnZUdyb3VwLT5wcmVm
ZXJlbmNlcygpLnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CiAgICAgICAgIHBhZ2VH
cm91cC0+cHJlZmVyZW5jZXMoKS5zZXRMb2dzUGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xlRW5h
YmxlZCh0cnVlKTsKICNlbmRpZgogCisgICAgICAgIHBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5z
ZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHModHJ1ZSk7CiAgICAgICAgIHBhZ2VHcm91cC0+
cHJlZmVyZW5jZXMoKS5zZXRBcHBsaWNhdGlvbkNocm9tZU1vZGVFbmFibGVkKHRydWUpOwogCiAg
ICAgICAgIHJldHVybiBwYWdlR3JvdXAucmVsZWFzZSgpOwpAQCAtMTI0LDEzICsxMjMsMTMgQEAg
cHJpdmF0ZToKIAogV2ViSW5zcGVjdG9yUHJveHk6OldlYkluc3BlY3RvclByb3h5KFdlYlBhZ2VQ
cm94eSogcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQorICAgICwgbV9pbnNwZWN0b3JQYWdlKG51
bGxwdHIpCisgICAgLCBtX3VuZGVyVGVzdChmYWxzZSkKICAgICAsIG1faXNWaXNpYmxlKGZhbHNl
KQogICAgICwgbV9pc0F0dGFjaGVkKGZhbHNlKQotICAgICwgbV9pc0RlYnVnZ2luZ0phdmFTY3Jp
cHQoZmFsc2UpCi0gICAgLCBtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdChmYWxzZSkKKyAgICAsIG1f
Y2FuQXR0YWNoKGZhbHNlKQogICAgICwgbV9pc1Byb2ZpbGluZ1BhZ2UoZmFsc2UpCiAgICAgLCBt
X3Nob3dNZXNzYWdlU2VudChmYWxzZSkKLSAgICAsIG1fY3JlYXRlZEluc3BlY3RvclBhZ2UoZmFs
c2UpCiAgICAgLCBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250KGZhbHNlKQogICAgICwgbV9hdHRh
Y2htZW50U2lkZShBdHRhY2htZW50U2lkZUJvdHRvbSkKICNpZiBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKEVGTCkKQEAgLTE2NSw3ICsxNjQsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpp
bnZhbGlkYXRlKCkKIAogICAgIGRpZENsb3NlKCk7CiAKLSAgICBtX3BhZ2UgPSAwOworICAgIG1f
cGFnZSA9IG51bGxwdHI7CiB9CiAKIC8vIFB1YmxpYyBBUElzCkBAIC0xODgsNiArMTg3LDggQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdCgpCiAgICAgbV9zaG93TWVzc2FnZVNlbnQg
PSB0cnVlOwogICAgIG1faWdub3JlRmlyc3RCcmluZ1RvRnJvbnQgPSB0cnVlOwogCisgICAgZWFn
ZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKKwogICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvdygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIApA
QCAtMjMyLDYgKzIzMyw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25zb2xlKCkK
ICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgZWFnZXJseUNyZWF0ZUlu
c3BlY3RvclBhZ2UoKTsKKwogICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3Rvcjo6U2hvd0NvbnNvbGUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKQEAgLTI0
MCw2ICsyNDMsOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93UmVzb3VyY2VzKCkKICAg
ICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgZWFnZXJseUNyZWF0ZUluc3Bl
Y3RvclBhZ2UoKTsKKwogICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6U2hvd1Jlc291cmNlcygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIApAQCAtMjQ4
LDYgKzI1Myw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dNYWluUmVzb3VyY2VGb3JG
cmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSkKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0
dXJuOwogCisgICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKKwogICAgIG1fcGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd01haW5SZXNvdXJjZUZv
ckZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIApAQCAtMjc0
LDEzICsyODEsMTUgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoKEF0dGFjaG1lbnRT
aWRlIHNpZGUpCiAgICAgaWYgKG1faXNWaXNpYmxlKQogICAgICAgICBpbnNwZWN0b3JQYWdlR3Jv
dXAoKS0+cHJlZmVyZW5jZXMoKS5zZXRJbnNwZWN0b3JTdGFydHNBdHRhY2hlZCh0cnVlKTsKIAor
ICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0
YWNoZWQodHJ1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworCiAgICAgc3dpdGNoIChtX2F0dGFjaG1l
bnRTaWRlKSB7CiAgICAgY2FzZSBBdHRhY2htZW50U2lkZUJvdHRvbToKLSAgICAgICAgbV9wYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpBdHRhY2hlZEJvdHRvbSgp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90dG9tKCksIG1faW5zcGVj
dG9yUGFnZS0+cGFnZUlEKCkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQXR0YWNobWVu
dFNpZGVSaWdodDoKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yOjpBdHRhY2hlZFJpZ2h0KCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBt
X2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6
QXR0YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCkBAIC0yOTcsNyArMzA2LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
ZGV0YWNoKCkKICAgICBpZiAobV9pc1Zpc2libGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VHcm91
cCgpLT5wcmVmZXJlbmNlcygpLnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKGZhbHNlKTsKIAot
ICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGV0YWNo
ZWQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChmYWxzZSksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJOjpEZXRhY2hlZCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIHBs
YXRmb3JtRGV0YWNoKCk7CiB9CkBAIC0zMTQsMzQgKzMyNCw2IEBAIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCiAgICAgcGxhdGZv
cm1TZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6dG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZygpCi17Ci0gICAgaWYgKCFtX3BhZ2UpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2lzRGVidWdnaW5nSmF2YVNjcmlwdCkKLSAgICAg
ICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wSmF2
YVNjcmlwdERlYnVnZ2luZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICBlbHNlCi0gICAgICAg
IG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRKYXZh
U2NyaXB0RGVidWdnaW5nKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotCi0gICAgLy8gRklYTUU6IGhh
dmUgdGhlIFdlYlByb2Nlc3Mgbm90aWZ5IHVzIG9uIHN0YXRlIGNoYW5nZXMuCi0gICAgbV9pc0Rl
YnVnZ2luZ0phdmFTY3JpcHQgPSAhbV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQ7Ci19Ci0KLXZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OnRvZ2dsZUphdmFTY3JpcHRQcm9maWxpbmcoKQotewotICAgIGlm
ICghbV9wYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9pc1Byb2ZpbGluZ0phdmFT
Y3JpcHQpCi0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3Rvcjo6U3RvcEphdmFTY3JpcHRQcm9maWxpbmcoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0gICAg
ZWxzZQotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3I6OlN0YXJ0SmF2YVNjcmlwdFByb2ZpbGluZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLQotICAg
IC8vIEZJWE1FOiBoYXZlIHRoZSBXZWJQcm9jZXNzIG5vdGlmeSB1cyBvbiBzdGF0ZSBjaGFuZ2Vz
LgotICAgIG1faXNQcm9maWxpbmdKYXZhU2NyaXB0ID0gIW1faXNQcm9maWxpbmdKYXZhU2NyaXB0
OwotfQotCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVQYWdlUHJvZmlsaW5nKCkKIHsK
ICAgICBpZiAoIW1fcGFnZSkKQEAgLTM2MSw2ICszNDMsMjQgQEAgYm9vbCBXZWJJbnNwZWN0b3JQ
cm94eTo6aXNJbnNwZWN0b3JQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yUGFnZUdyb3Vwczo6c2hhcmVkKCkuaXNJbnNwZWN0b3JQYWdlR3JvdXAocGFnZS5w
YWdlR3JvdXAoKSk7CiB9CiAKK1dlYkNvbnRleHQmIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0
b3JDb250ZXh0KCkKK3sKKyAgICAvLyBIYXZpbmcgb3VyIG93biBjb250ZXh0IHJlbW92ZXMgdXMg
ZnJvbSB0aGUgbWFpbiBjb250ZXh0J3MgcHJvY2VzcyBwb29sIGFuZAorICAgIC8vIGd1YXJhbnRl
ZXMgbm8gcHJvY2VzcyBzaGFyaW5nIGZvciBvdXIgdXNlciBpbnRlcmZhY2UuCisKKyAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxSZWZQdHI8V2ViQ29udGV4dD4+IGNvbnRleHQ7CisKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10geworICAgICAgICBXZWJDb250ZXh0Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9u
OworICAgICAgICBXZWJDb250ZXh0OjphcHBseVBsYXRmb3JtU3BlY2lmaWNDb25maWd1cmF0aW9u
RGVmYXVsdHMoY29uZmlndXJhdGlvbik7CisgICAgICAgIGNvbnRleHQuY29uc3RydWN0KFdlYkNv
bnRleHQ6OmNyZWF0ZShjb25maWd1cmF0aW9uKSk7CisgICAgICAgIGNvbnRleHQuZ2V0KCktPnNl
dFByb2Nlc3NNb2RlbChQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3Nlcyk7Cisg
ICAgfSk7CisKKyAgICByZXR1cm4gKmNvbnRleHQuZ2V0KCk7Cit9CisKIHN0YXRpYyBib29sIGlz
TWFpbk9yVGVzdEluc3BlY3RvclBhZ2UoY29uc3QgV2ViSW5zcGVjdG9yUHJveHkqIHdlYkluc3Bl
Y3RvclByb3h5LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKIHsKICAgICBVUkwgcmVxdWVz
dFVSTChVUkwoKSwgdG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSk7
CkBAIC00MjYsMjkgKzQyNiwyMCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9u
dGVuZERpc2Nvbm5lY3RlZCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRpc3BhdGNoTWVz
c2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9w
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpEaXNwYXRjaE1lc3Nh
Z2VGcm9tUmVtb3RlRnJvbnRlbmQobWVzc2FnZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2VuZE1lc3NhZ2VU
b0JhY2tlbmQobWVzc2FnZSksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogI2VuZGlmCiAKLS8vIENh
bGxlZCBieSBXZWJJbnNwZWN0b3JQcm94eSBtZXNzYWdlcwotdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZSh1aW50NjRfdCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJiBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycykKK3ZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OmVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCkKIHsKLSAgICBpbnNwZWN0
b3JQYWdlSUQgPSAwOwotCi0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKG1faW5zcGVjdG9yUGFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pc0F0dGFjaGVkID0gc2hvdWxkT3BlbkF0dGFj
aGVkKCk7Ci0gICAgbV9hdHRhY2htZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0dGFjaG1lbnRTaWRl
PihpbnNwZWN0b3JQYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2htZW50
U2lkZSgpKTsKLQotICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSA9IHBsYXRmb3JtQ3Jl
YXRlSW5zcGVjdG9yUGFnZSgpOwotICAgIEFTU0VSVChpbnNwZWN0b3JQYWdlKTsKLSAgICBpZiAo
IWluc3BlY3RvclBhZ2UpCisgICAgbV9pbnNwZWN0b3JQYWdlID0gcGxhdGZvcm1DcmVhdGVJbnNw
ZWN0b3JQYWdlKCk7CisgICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgaWYgKCFtX2lu
c3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluc3BlY3RvclBhZ2VJRCA9IGlu
c3BlY3RvclBhZ2UtPnBhZ2VJRCgpOwotICAgIGluc3BlY3RvclBhZ2VQYXJhbWV0ZXJzID0gaW5z
cGVjdG9yUGFnZS0+Y3JlYXRpb25QYXJhbWV0ZXJzKCk7Ci0KICAgICBXS1BhZ2VQb2xpY3lDbGll
bnRWMSBwb2xpY3lDbGllbnQgPSB7CiAgICAgICAgIHsgMSwgdGhpcyB9LAogICAgICAgICAwLCAv
KiBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAg
Ki8KQEAgLTQ1OSw3MyArNDUwLDU3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUlu
c3BlY3RvclBhZ2UodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyCiAgICAgICAg
IDAsIC8qIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlICovCiAgICAgfTsKIAotICAgIFdLUGFnZVNl
dFBhZ2VQb2xpY3lDbGllbnQodG9BUEkoaW5zcGVjdG9yUGFnZSksICZwb2xpY3lDbGllbnQuYmFz
ZSk7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIHVybDsKLQotICAgIHVybC5hcHBlbmQoaW5zcGVjdG9y
UGFnZVVSTCgpKTsKLQotICAgIHVybC5hcHBlbmRMaXRlcmFsKCI/ZG9ja1NpZGU9Iik7Ci0KLSAg
ICBpZiAobV9pc0F0dGFjaGVkKSB7Ci0gICAgICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkg
ewotICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlQm90dG9tOgotICAgICAgICAgICAgdXJsLmFw
cGVuZExpdGVyYWwoImJvdHRvbSIpOwotICAgICAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpBdHRhY2hlZEJvdHRvbSgpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlUmln
aHQ6Ci0gICAgICAgICAgICB1cmwuYXBwZW5kTGl0ZXJhbCgicmlnaHQiKTsKLSAgICAgICAgICAg
IG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6QXR0YWNoZWRS
aWdodCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfSBlbHNlCi0gICAgICAgIHVybC5hcHBlbmRMaXRlcmFsKCJ1bmRvY2tlZCIpOworICAg
IFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQodG9BUEkobV9pbnNwZWN0b3JQYWdlKSwgJnBvbGlj
eUNsaWVudC5iYXNlKTsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NU
b0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVSTCgpKTsKLQotICAgIGluc3BlY3RvclBhZ2UtPmxvYWRS
ZXF1ZXN0KFVSTChVUkwoKSwgdXJsLnRvU3RyaW5nKCkpKTsKLQotICAgIG1fY3JlYXRlZEluc3Bl
Y3RvclBhZ2UgPSB0cnVlOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJv
Y2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVSTCgpKTsKIH0K
IAotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QodWlu
dDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgaW5zcGVj
dG9yUGFnZVBhcmFtZXRlcnMpCisvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yUHJveHkgbWVzc2Fn
ZXMKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2UoSVBDOjpBdHRh
Y2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRl
c3QpCiB7Ci0gICAgaW5zcGVjdG9yUGFnZUlEID0gMDsKLQogICAgIGlmICghbV9wYWdlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2lzQXR0YWNoZWQgPSBmYWxzZTsKKyAgICBlYWdlcmx5Q3Jl
YXRlSW5zcGVjdG9yUGFnZSgpOwogCi0gICAgV2ViUGFnZVByb3h5KiBpbnNwZWN0b3JQYWdlID0g
cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCk7Ci0gICAgQVNTRVJUKGluc3BlY3RvclBhZ2Up
OwotICAgIGlmICghaW5zcGVjdG9yUGFnZSkKKyAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsK
KyAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW5zcGVj
dG9yUGFnZUlEID0gaW5zcGVjdG9yUGFnZS0+cGFnZUlEKCk7Ci0gICAgaW5zcGVjdG9yUGFnZVBh
cmFtZXRlcnMgPSBpbnNwZWN0b3JQYWdlLT5jcmVhdGlvblBhcmFtZXRlcnMoKTsKKyAgICBtX3Vu
ZGVyVGVzdCA9IHVuZGVyVGVzdDsKIAotICAgIFdLUGFnZVBvbGljeUNsaWVudFYxIHBvbGljeUNs
aWVudCA9IHsKLSAgICAgICAgeyAxLCB0aGlzIH0sCi0gICAgICAgIDAsIC8qIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAqLwotICAgICAgICAw
LCAvKiBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24gKi8KLSAgICAgICAgMCwgLyogZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAqLwotICAgICAgICAw
LCAvKiB1bmFibGVUb0ltcGxlbWVudFBvbGljeSAqLwotICAgICAgICBkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uLAotICAgICAgICAwLCAvKiBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSAq
LwotICAgIH07CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yVUk6OkVzdGFibGlzaENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIs
IG1fcGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0KSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQo
KSk7CiAKLSAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KHRvQVBJKGluc3BlY3RvclBhZ2Up
LCAmcG9saWN5Q2xpZW50LmJhc2UpOworICAgIGlmICghbV91bmRlclRlc3QpIHsKKyAgICAgICAg
bV9jYW5BdHRhY2ggPSBjYW5BdHRhY2g7CisgICAgICAgIG1faXNBdHRhY2hlZCA9IHNob3VsZE9w
ZW5BdHRhY2hlZCgpOworICAgICAgICBtX2F0dGFjaG1lbnRTaWRlID0gc3RhdGljX2Nhc3Q8QXR0
YWNobWVudFNpZGU+KGluc3BlY3RvclBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLmluc3BlY3Rv
ckF0dGFjaG1lbnRTaWRlKCkpOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFj
Y2Vzc1RvQmFzZVVSTChpbnNwZWN0b3JCYXNlVVJMKCkpOworICAgICAgICBtX3BhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKG1faXNBdHRhY2hl
ZCksIG1fcGFnZS0+cGFnZUlEKCkpOwogCi0gICAgaW5zcGVjdG9yUGFnZS0+bG9hZFJlcXVlc3Qo
VVJMKFVSTCgpLCBpbnNwZWN0b3JUZXN0UGFnZVVSTCgpKSk7CisgICAgICAgIGlmIChtX2lzQXR0
YWNoZWQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgeworICAgICAg
ICAgICAgY2FzZSBBdHRhY2htZW50U2lkZUJvdHRvbToKKyAgICAgICAgICAgICAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNo
ZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlID0gdHJ1ZTsKKyAgICAgICAgICAg
IGNhc2UgQXR0YWNobWVudFNpZGVSaWdodDoKKyAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdo
dCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwg
bV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgfQorCisgICAgbV9pbnNwZWN0b3JQYWdl
LT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIG1fdW5kZXJUZXN0ID8gaW5zcGVjdG9yVGVzdFBhZ2VV
UkwoKSA6IGluc3BlY3RvclBhZ2VVUkwoKSkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpvcGVuKCkKIHsKKyAgICBpZiAobV91bmRlclRlc3QpCisgICAgICAgIHJldHVybjsKKwogICAg
IG1faXNWaXNpYmxlID0gdHJ1ZTsKIAogICAgIHBsYXRmb3JtT3BlbigpOwpAQCAtNTMzLDIwICs1
MDgsMjMgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbigpCiAKIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OmRpZENsb3NlKCkKIHsKLSAgICBpZiAoIW1fY3JlYXRlZEluc3BlY3RvclBhZ2Up
CisgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1faW5z
cGVjdG9yUGFnZS0+Y2xvc2UoKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZSA9IG51
bGxwdHI7CisKICAgICBtX2lzVmlzaWJsZSA9IGZhbHNlOwotICAgIG1faXNEZWJ1Z2dpbmdKYXZh
U2NyaXB0ID0gZmFsc2U7Ci0gICAgbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQgPSBmYWxzZTsKICAg
ICBtX2lzUHJvZmlsaW5nUGFnZSA9IGZhbHNlOwotICAgIG1fY3JlYXRlZEluc3BlY3RvclBhZ2Ug
PSBmYWxzZTsKICAgICBtX3Nob3dNZXNzYWdlU2VudCA9IGZhbHNlOwogICAgIG1faWdub3JlRmly
c3RCcmluZ1RvRnJvbnQgPSBmYWxzZTsKIAogICAgIGlmIChtX2lzQXR0YWNoZWQpCiAgICAgICAg
IHBsYXRmb3JtRGV0YWNoKCk7CiAgICAgbV9pc0F0dGFjaGVkID0gZmFsc2U7CisgICAgbV9jYW5B
dHRhY2ggPSBmYWxzZTsKKyAgICBtX3VuZGVyVGVzdCA9IGZhbHNlOwogCiAgICAgcGxhdGZvcm1E
aWRDbG9zZSgpOwogfQpAQCAtNTY5LDYgKzU0Nyw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OmJyaW5nVG9Gcm9udCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEF2YWlsYWJp
bGl0eUNoYW5nZWQoYm9vbCBhdmFpbGFibGUpCiB7CisgICAgbV9jYW5BdHRhY2ggPSBhdmFpbGFi
bGU7CisKICAgICBwbGF0Zm9ybUF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoYXZhaWxhYmxlKTsK
IH0KIApAQCAtNTg3LDI4ICs1NjcsNiBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphcHBlbmQo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgIHBsYXRm
b3JtQXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KTsKIH0KIAotYm9vbCBXZWJJbnNwZWN0b3JQcm94
eTo6Y2FuQXR0YWNoKCkKLXsKLSAgICAvLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWw6OmNhbkF0dGFjaFdpbmRvdy4gVGhlcmUgYXJlIHR3byBpbXBs
ZW1lbnRhdGlvbnMKLSAgICAvLyB0byBtYWtlIGxpZmUgZWFzaWVyIGluIHRoZSBtdWx0aS1wcm9j
ZXNzIHdvcmxkIHdlIGhhdmUuIFdlYkluc3BlY3RvclByb3h5IHVzZXMgY2FuQXR0YWNoIHRvIGRl
Y2lkZSBpZgotICAgIC8vIHdlIGNhbiBhdHRhY2ggb24gb3BlbiAob24gdGhlIFVJIHByb2Nlc3Mg
c2lkZSkuIEFuZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjYW5BdHRhY2hXaW5kb3cg
aXMKLSAgICAvLyB1c2VkIHRvIGRlY2lkZSBpZiB3ZSBjYW4gYXR0YWNoIHdoZW4gdGhlIGF0dGFj
aCBidXR0b24gaXMgcHJlc3NlZCAob24gdGhlIFdlYlByb2Nlc3Mgc2lkZSkuCi0KLSAgICAvLyBJ
ZiB3ZSBhcmUgYWxyZWFkeSBhdHRhY2hlZCwgYWxsb3cgYXR0YWNoaW5nIGFnYWluIHRvIGFsbG93
IHN3aXRjaGluZyBzaWRlcy4KLSAgICBpZiAobV9pc0F0dGFjaGVkKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIC8vIERvbid0IGFsbG93IGF0dGFjaGluZyB0byBhbm90aGVyIGluc3BlY3Rv
ciAtLSB0d28gaW5zcGVjdG9ycyBpbiBvbmUgd2luZG93IGlzIHRvbyBtdWNoIQotICAgIGlmICht
X2xldmVsID4gMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRG9uJ3QgYWxsb3cg
dGhlIGF0dGFjaCBpZiB0aGUgd2luZG93IHdvdWxkIGJlIHRvbyBzbWFsbCB0byBhY2NvbW1vZGF0
ZSB0aGUgbWluaW11bSBpbnNwZWN0b3IgaGVpZ2h0LgotICAgIHVuc2lnbmVkIGluc3BlY3RlZFBh
Z2VIZWlnaHQgPSBwbGF0Zm9ybUluc3BlY3RlZFdpbmRvd0hlaWdodCgpOwotICAgIHVuc2lnbmVk
IGluc3BlY3RlZFBhZ2VXaWR0aCA9IHBsYXRmb3JtSW5zcGVjdGVkV2luZG93V2lkdGgoKTsKLSAg
ICB1bnNpZ25lZCBtYXhpbXVtQXR0YWNoZWRIZWlnaHQgPSBpbnNwZWN0ZWRQYWdlSGVpZ2h0ICog
MyAvIDQ7Ci0gICAgcmV0dXJuIG1pbmltdW1BdHRhY2hlZEhlaWdodCA8PSBtYXhpbXVtQXR0YWNo
ZWRIZWlnaHQgJiYgbWluaW11bUF0dGFjaGVkV2lkdGggPD0gaW5zcGVjdGVkUGFnZVdpZHRoOwot
fQotCiBib29sIFdlYkluc3BlY3RvclByb3h5OjpzaG91bGRPcGVuQXR0YWNoZWQoKQogewogICAg
IHJldHVybiBpbnNwZWN0b3JQYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JTdGFy
dHNBdHRhY2hlZCgpICYmIGNhbkF0dGFjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCAxN2E3NDk4MmU3NDljMTAxMTZhMTFlNTkwOThhY2Y0
NGEyMDAyOTQzLi4wNjVkN2UxM2NjYzg2YWEyZjRhMTQ2Y2M1NjlkMjk2OGI0ZDViZDZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2Jp
bGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMw
LDYgKzMwLDcgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
QEAgLTU5LDEwICs2MCwxMCBAQCBPQkpDX0NMQVNTIFdLV2ViSW5zcGVjdG9yV0tWaWV3OwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViQ29udGV4dDsKIGNsYXNzIFdlYkZyYW1lUHJv
eHk7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7Ci1zdHJ1Y3QgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIAogZW51bSBBdHRhY2htZW50U2lkZSB7CiAgICAgQXR0
YWNobWVudFNpZGVCb3R0b20sCkBAIC04Myw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICAvLyBQdWJs
aWMgQVBJcwogICAgIFdlYlBhZ2VQcm94eSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsg
fQogCi0gICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRlZEluc3Bl
Y3RvclBhZ2U7IH0KKyAgICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX2lu
c3BlY3RvclBhZ2U7IH0KICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNW
aXNpYmxlOyB9CiAgICAgYm9vbCBpc0Zyb250KCk7CiAKQEAgLTEyMywxNiArMTI0LDExIEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpOwogICAgIHZv
aWQgc2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCBoZWlnaHQpIHsgcGxhdGZvcm1TZXRUb29sYmFy
SGVpZ2h0KGhlaWdodCk7IH0KIAotICAgIGJvb2wgaXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KCkgY29u
c3QgeyByZXR1cm4gbV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQ7IH0KLSAgICB2b2lkIHRvZ2dsZUph
dmFTY3JpcHREZWJ1Z2dpbmcoKTsKLQotICAgIGJvb2wgaXNQcm9maWxpbmdKYXZhU2NyaXB0KCkg
Y29uc3QgeyByZXR1cm4gbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQ7IH0KLSAgICB2b2lkIHRvZ2ds
ZUphdmFTY3JpcHRQcm9maWxpbmcoKTsKLQogICAgIGJvb2wgaXNQcm9maWxpbmdQYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9pc1Byb2ZpbGluZ1BhZ2U7IH0KICAgICB2b2lkIHRvZ2dsZVBhZ2VQcm9m
aWxpbmcoKTsKIAogICAgIHN0YXRpYyBib29sIGlzSW5zcGVjdG9yUGFnZShXZWJQYWdlUHJveHkm
KTsKKyAgICBzdGF0aWMgV2ViQ29udGV4dCYgaW5zcGVjdG9yQ29udGV4dCgpOwogCiAgICAgLy8g
UHJvdmlkZWQgYnkgcGxhdGZvcm0gV2ViSW5zcGVjdG9yUHJveHkgaW1wbGVtZW50YXRpb25zLgog
ICAgIFN0cmluZyBpbnNwZWN0b3JQYWdlVVJMKCkgY29uc3Q7CkBAIC0xNTAsOSArMTQ2LDEwIEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yUHJveHkoV2ViUGFn
ZVByb3h5Kik7CiAKKyAgICB2b2lkIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisKICAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJ
UEM6Ok1lc3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+
Jikgb3ZlcnJpZGU7CiAKICAgICBXZWJQYWdlUHJveHkqIHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9y
UGFnZSgpOwogICAgIHZvaWQgcGxhdGZvcm1PcGVuKCk7CkBAIC0xNzMsOCArMTcwLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgY29udGVudCk7CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yUHJv
eHkgbWVzc2FnZXMKLSAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBhZ2UodWludDY0X3QmIGluc3Bl
Y3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwotICAgIHZvaWQgY3JlYXRl
SW5zcGVjdG9yUGFnZUZvclRlc3QodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYpOworICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0
dGFjaG1lbnQsIGJvb2wgY2FuQXR0YWNoLCBib29sIHVuZGVyVGVzdCk7CiAgICAgdm9pZCBkaWRD
bG9zZSgpOwogICAgIHZvaWQgYnJpbmdUb0Zyb250KCk7CiAgICAgdm9pZCBhdHRhY2hBdmFpbGFi
aWxpdHlDaGFuZ2VkKGJvb2wpOwpAQCAtMTg3LDcgKzE4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICNl
bmRpZgogCi0gICAgYm9vbCBjYW5BdHRhY2goKTsKKyAgICBib29sIGNhbkF0dGFjaCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FuQXR0YWNoOyB9CiAgICAgYm9vbCBzaG91bGRPcGVuQXR0YWNoZWQoKTsK
IAogICAgIHZvaWQgb3BlbigpOwpAQCAtMjA0LDE5ICsyMDAsMTUgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgaW5pdGlhbFdpbmRvd1dpZHRoOwogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBpbml0aWFsV2luZG93SGVpZ2h0OwogCi0gICAgLy8gS2VlcCB0aGlzIGluIHN5
bmMgd2l0aCB0aGUgdmFsdWUgaW4gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC4KLSAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bUF0dGFjaGVkV2lkdGg7Ci0gICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG1pbmltdW1BdHRhY2hlZEhlaWdodDsKLQogICAgIFdlYlBhZ2VQcm94eSog
bV9wYWdlOworICAgIFdlYlBhZ2VQcm94eSogbV9pbnNwZWN0b3JQYWdlOwogCisgICAgYm9vbCBt
X3VuZGVyVGVzdDsKICAgICBib29sIG1faXNWaXNpYmxlOwogICAgIGJvb2wgbV9pc0F0dGFjaGVk
OwotICAgIGJvb2wgbV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQ7Ci0gICAgYm9vbCBtX2lzUHJvZmls
aW5nSmF2YVNjcmlwdDsKKyAgICBib29sIG1fY2FuQXR0YWNoOwogICAgIGJvb2wgbV9pc1Byb2Zp
bGluZ1BhZ2U7CiAgICAgYm9vbCBtX3Nob3dNZXNzYWdlU2VudDsKLSAgICBib29sIG1fY3JlYXRl
ZEluc3BlY3RvclBhZ2U7CiAgICAgYm9vbCBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250OwogCiAg
ICAgLy8gVGhlIGRlYnVnZ2VyIHN0b3BzIGFsbCB0aGUgcGFnZXMgaW4gdGhlIHNhbWUgUGFnZUdy
b3VwLiBIYXZpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNw
ZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNw
ZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlNmM5NDRkOTQ2MzRiMjdhNDM0ODA3YzVjMzA3
ODVjMGU1ODNiYTI3Li5lYjdmYTliOTlkOGQ5MWQzNTY1ZjU4ZDFkZDVlYmE3YWI5ODM5NDdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMywxMCArMjMsMTEgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiBtZXNzYWdlcyAt
PiBXZWJJbnNwZWN0b3JQcm94eSB7Ci0gICAgQ3JlYXRlSW5zcGVjdG9yUGFnZSgpIC0+ICh1aW50
NjRfdCBpbnNwZWN0b3JQYWdlSUQsIFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBp
bnNwZWN0b3JQYWdlUGFyYW1ldGVycykKLSAgICBDcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdCgp
IC0+ICh1aW50NjRfdCBpbnNwZWN0b3JQYWdlSUQsIFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycykKKyAgICBDcmVhdGVJbnNwZWN0b3JQYWdl
KElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBjYW5BdHRhY2gsIGJv
b2wgdW5kZXJUZXN0KQorCiAgICAgRGlkQ2xvc2UoKQogICAgIEJyaW5nVG9Gcm9udCgpCisKICAg
ICBJbnNwZWN0ZWRVUkxDaGFuZ2VkKFN0cmluZyB1cmxTdHJpbmcpCiAKICAgICBTYXZlKFN0cmlu
ZyBmaWxlbmFtZSwgU3RyaW5nIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3Jj
ZVNhdmVBcykKQEAgLTM1LDYgKzM2LDcgQEAgbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yUHJveHkg
ewogICAgIEF0dGFjaEJvdHRvbSgpCiAgICAgQXR0YWNoUmlnaHQoKQogICAgIERldGFjaCgpCisK
ICAgICBBdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wgYXZhaWxhYmxlKQogCiAgICAgU2V0
QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA5MDQ5ZjliYmFkMDRjMzUzM2U0NjI5
MzdjYTFlNDAzZDEwNTI0ODkzLi45NzMyYzA1MDEyNWUxMzhjYmY3Y2U1MzBjNDkyNjBmOTQ3YTIw
MzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApA
QCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUgIldlYkNv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eS5oIgogI2luY2x1ZGUgIldlYk5h
dmlnYXRpb25EYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKQEAgLTExNSw2ICsxMTYsOCBAQCBXZWJQ
cm9jZXNzUHJveHk6On5XZWJQcm9jZXNzUHJveHkoKQogdm9pZCBXZWJQcm9jZXNzUHJveHk6Omdl
dExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRp
b25zKQogewogICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPSBQcm9jZXNzTGF1bmNoZXI6
OldlYlByb2Nlc3M7CisgICAgaWYgKCZtX2NvbnRleHQuZ2V0KCkgPT0gJldlYkluc3BlY3RvclBy
b3h5OjppbnNwZWN0b3JDb250ZXh0KCkpCisgICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0
aWFsaXphdGlvbkRhdGEuYWRkKEFTQ0lJTGl0ZXJhbCgiaW5zcGVjdG9yLXByb2Nlc3MiKSwgQVND
SUlMaXRlcmFsKCIxIikpOwogICAgIHBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyhsYXVuY2hPcHRp
b25zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJ
bnNwZWN0b3JQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYklu
c3BlY3RvclByb3h5RWZsLmNwcAppbmRleCBlZWMzOWNjZThlOTdjMTI4MDg4NDBiNWFmMTQyNGIy
NjU3MTQ0ZTVjLi4wOTEyMTdhY2UyMTIzNzkyYWFlZjNlZDJmMzk5NTUwOTVmY2JlNzkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5
RWZsLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgaWYgKCFtX2luc3BlY3Rvcldp
bmRvdykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBXS0NvbnRleHRSZWYgd2tDb250ZXh0ID0g
dG9BUEkoJnBhZ2UoKS0+cHJvY2VzcygpLmNvbnRleHQoKSk7CisgICAgV0tDb250ZXh0UmVmIHdr
Q29udGV4dCA9IHRvQVBJKCZpbnNwZWN0b3JDb250ZXh0KCkpOwogICAgIFdLUGFnZUdyb3VwUmVm
IHdrUGFnZUdyb3VwID0gdG9BUEkoaW5zcGVjdG9yUGFnZUdyb3VwKCkpOwogCiAgICAgbV9pbnNw
ZWN0b3JWaWV3ID0gRVdLVmlld0NyZWF0ZSh3a0NvbnRleHQsIHdrUGFnZUdyb3VwLCBlY29yZV9l
dmFzX2dldChtX2luc3BlY3RvcldpbmRvdyksIC8qIHNtYXJ0ICovIDApOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRl
eCA1MGU0NWM0OWQzMzY5ZGNjNzg3ZjA1NjQxNWRiYmM5NjM0ZGM2NDNkLi5iMjIxOTJlN2RiZDc4
NTMxYzExM2JhMmYzOWRmZTkxNjhhYmY5NThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtNjIsNyArNjIsNyBA
QCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3Rv
clBhZ2UoKQogewogICAgIEFTU0VSVChtX3BhZ2UpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JW
aWV3KTsKLSAgICBtX2luc3BlY3RvclZpZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNl
Q3JlYXRlKCZwYWdlKCktPnByb2Nlc3MoKS5jb250ZXh0KCksIG51bGxwdHIsIGluc3BlY3RvclBh
Z2VHcm91cCgpLCBudWxscHRyLCBtX3BhZ2UpKTsKKyAgICBtX2luc3BlY3RvclZpZXcgPSBHVEtf
V0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKCZpbnNwZWN0b3JDb250ZXh0KCksIG51bGxw
dHIsIGluc3BlY3RvclBhZ2VHcm91cCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgZ19vYmpl
Y3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVDVChtX2luc3BlY3RvclZpZXcpLCByZWludGVycHJl
dF9jYXN0PHZvaWQqKj4oJm1faW5zcGVjdG9yVmlldykpOwogICAgIHJldHVybiB3ZWJraXRXZWJW
aWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV9pbnNwZWN0b3JWaWV3KSk7CiB9
CkBAIC0xODIsOCArMTgyLDExIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0
YWNoKCkKICAgICAgICAgbV9pbnNwZWN0b3JXaW5kb3cgPSAwOwogICAgIH0KIAotICAgIC8vIFNl
dCBhIGRlZmF1bHQgYXR0YWNoZWQgc2l6ZSBiYXNlZCBvbiBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLgorICAgIC8vIFNldCBhIGRlZmF1bHQgc2l6ZXMgYmFzZWQgb24gSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdEF0dGFj
aGVkU2l6ZSA9IDMwMDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bUF0dGFjaGVk
V2lkdGggPSA3NTA7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1BdHRhY2hlZEhl
aWdodCA9IDI1MDsKKwogICAgIGlmIChtX2F0dGFjaG1lbnRTaWRlID09IEF0dGFjaG1lbnRTaWRl
Qm90dG9tKSB7CiAgICAgICAgIHVuc2lnbmVkIG1heGltdW1BdHRhY2hlZEhlaWdodCA9IHBsYXRm
b3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0KCkgKiAzIC8gNDsKICAgICAgICAgcGxhdGZvcm1TZXRB
dHRhY2hlZFdpbmRvd0hlaWdodChzdGQ6Om1heChtaW5pbXVtQXR0YWNoZWRIZWlnaHQsIHN0ZDo6
bWluKGRlZmF1bHRBdHRhY2hlZFNpemUsIG1heGltdW1BdHRhY2hlZEhlaWdodCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1t
CmluZGV4IGM2YzY2OGNiNWZmYzhjNWI2ZWYwOTZlM2M5MjljYjI1NDVjMDlmOWQuLjljZWNmNDE1
NWQyNDk5NDNiNTBmZDUyMzg4YmFiMWM5MWYxZWZiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNiArMzgsNyBA
QAogI2ltcG9ydCAiV0tVUkxDRi5oIgogI2ltcG9ydCAiV0tWaWV3UHJpdmF0ZS5oIgogI2ltcG9y
dCAiV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCIKKyNpbXBvcnQgIldlYkluc3BlY3RvclVJTWVzc2Fn
ZXMuaCIKICNpbXBvcnQgIldlYlBhZ2VHcm91cC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5Lmgi
CiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlcy5oIgpAQCAtMTE0LDcgKzExNSw3IEBAIC0gKElCQWN0
aW9uKWF0dGFjaEJvdHRvbTooaWQpc2VuZGVyCiAKIC0gKHZvaWQpY2xvc2UKIHsKLSAgICBfaW5z
cGVjdG9yUHJveHkgPSAwOworICAgIF9pbnNwZWN0b3JQcm94eSA9IG51bGxwdHI7CiB9CiAKIC0g
KHZvaWQpd2luZG93RGlkTW92ZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KQEAgLTQx
OCw3ICs0MTksNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNy
ZWF0ZUluc3BlY3RvclBhZ2UoKQogICAgICAgICAgICAgaW5pdGlhbFJlY3QgPSBbTlNXaW5kb3cg
Y29udGVudFJlY3RGb3JGcmFtZVJlY3Q6d2luZG93RnJhbWUgc3R5bGVNYXNrOndpbmRvd1N0eWxl
TWFza107CiAgICAgfQogCi0gICAgbV9pbnNwZWN0b3JWaWV3ID0gYWRvcHROUyhbW1dLV2ViSW5z
cGVjdG9yV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmluaXRpYWxSZWN0IGNvbnRleHRSZWY6
dG9BUEkoJnBhZ2UoKS0+cHJvY2VzcygpLmNvbnRleHQoKSkgcGFnZUdyb3VwUmVmOnRvQVBJKGlu
c3BlY3RvclBhZ2VHcm91cCgpKSByZWxhdGVkVG9QYWdlOnRvQVBJKG1fcGFnZSldKTsKKyAgICBt
X2luc3BlY3RvclZpZXcgPSBhZG9wdE5TKFtbV0tXZWJJbnNwZWN0b3JXS1ZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6aW5pdGlhbFJlY3QgY29udGV4dFJlZjp0b0FQSSgmaW5zcGVjdG9yQ29udGV4
dCgpKSBwYWdlR3JvdXBSZWY6dG9BUEkoaW5zcGVjdG9yUGFnZUdyb3VwKCkpIHJlbGF0ZWRUb1Bh
Z2U6bnVsbHB0cl0pOwogICAgIEFTU0VSVChtX2luc3BlY3RvclZpZXcpOwogCiAjaWYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSAxMDkwCkBAIC00OTksMTMgKzUwMCwxMyBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybURpZENsb3NlKCkKICAgICBpZiAobV9pbnNw
ZWN0b3JXaW5kb3cpIHsKICAgICAgICAgW21faW5zcGVjdG9yV2luZG93IHNldERlbGVnYXRlOm5p
bF07CiAgICAgICAgIFttX2luc3BlY3RvcldpbmRvdyBvcmRlck91dDpuaWxdOwotICAgICAgICBt
X2luc3BlY3RvcldpbmRvdyA9IDA7CisgICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gbmlsOwog
ICAgIH0KIAotICAgIG1faW5zcGVjdG9yVmlldyA9IDA7CisgICAgbV9pbnNwZWN0b3JWaWV3ID0g
bmlsOwogCiAgICAgW21faW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlciBjbG9zZV07Ci0gICAgbV9p
bnNwZWN0b3JQcm94eU9iakNBZGFwdGVyID0gMDsKKyAgICBtX2luc3BlY3RvclByb3h5T2JqQ0Fk
YXB0ZXIgPSBuaWw7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSGlkZSgp
CkBAIC01MTgsNyArNTE5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1IaWRl
KCkKICAgICBpZiAobV9pbnNwZWN0b3JXaW5kb3cpIHsKICAgICAgICAgW21faW5zcGVjdG9yV2lu
ZG93IHNldERlbGVnYXRlOm5pbF07CiAgICAgICAgIFttX2luc3BlY3RvcldpbmRvdyBvcmRlck91
dDpuaWxdOwotICAgICAgICBtX2luc3BlY3RvcldpbmRvdyA9IDA7CisgICAgICAgIG1faW5zcGVj
dG9yV2luZG93ID0gbmlsOwogICAgIH0KIH0KIApAQCAtNTg5LDcgKzU5MCw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwg
Y29uc3QgU3RyaW5nJiBjCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5
IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nIGVycm9yOk5VTExdOwogCi0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGlkU2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5n
XSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShbYWN0dWFsVVJMIGFic29s
dXRlU3RyaW5nXSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogICAgIH07CiAKICAgICBp
ZiAoIWZvcmNlU2F2ZURpYWxvZykgewpAQCAtNjIzLDcgKzYyNCw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25z
dCBTdHJpbmcmCiAgICAgW2hhbmRsZSB3cml0ZURhdGE6W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICBbaGFuZGxlIGNsb3NlRmlsZV07CiAKLSAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkRpZEFwcGVu
ZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
aW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpE
aWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX2luc3BlY3RvclBhZ2UtPnBh
Z2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6d2luZG93RnJhbWVEaWRDaGFu
Z2UoKQpAQCAtNzA4LDcgKzcwOSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
QXR0YWNoKCkKICAgICBpZiAobV9pbnNwZWN0b3JXaW5kb3cpIHsKICAgICAgICAgW21faW5zcGVj
dG9yV2luZG93IHNldERlbGVnYXRlOm5pbF07CiAgICAgICAgIFttX2luc3BlY3RvcldpbmRvdyBv
cmRlck91dDpuaWxdOwotICAgICAgICBtX2luc3BlY3RvcldpbmRvdyA9IDA7CisgICAgICAgIG1f
aW5zcGVjdG9yV2luZG93ID0gbmlsOwogICAgIH0KIAogICAgIFttX2luc3BlY3RvclZpZXcgcmVt
b3ZlRnJvbVN1cGVydmlld107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjdjMzZmMDgzOWQwOTNkN2YxZGUwMjA2MjJlYWYyYmVl
NmJkNTEwNS4uZDBhOTJmOTZjMzdjMWYwYjNmNDEwMjMwYzQwMGFhOGQwYjg5NjAzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NDk1LDEwICs0OTUsMTAgQEAKIAkJMUFGRTQzNjUxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdh
dGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUZF
NDM2MzE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJMUFGRTQzNjYx
OEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRkU0MzY0MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVn
YXRlLmggKi87IH07CiAJCTFBRkY0OTAwMTgzM0RFNzgwMDlBQjE1QSAvKiBXS0RlcHJlY2F0ZWRG
dW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUFGRjQ4RkUxODMzREU3ODAwOUFCMTVBIC8qIFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAg
Ki87IH07CisJCTFDODkxRDY1MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzg5MUQ2MjE5
QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwICovOyB9OworCQkxQzg5MUQ2NjE5
QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODkxRDYzMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJ
bnNwZWN0b3JVSS5oICovOyB9OwogCQkxQzhBRTc2MTE5OTJGNjNBMDBBQkY2RUMgLyogRG9ja0Jv
dHRvbUxlZ2FjeS5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDOEFFNzVGMTk5MkY2MkYwMEFCRjZFQyAvKiBEb2NrQm90dG9tTGVnYWN5LnBkZiAq
LzsgfTsKIAkJMUM4QUU3NjIxOTkyRjYzQzAwQUJGNkVDIC8qIERvY2tSaWdodExlZ2FjeS5wZGYg
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEFFNzYw
MTk5MkY2MkYwMEFCRjZFQyAvKiBEb2NrUmlnaHRMZWdhY3kucGRmICovOyB9OwotCQkxQzhFMjVB
ODEyNzBFM0JCMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI1NkIxMjcwREUz
ODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCAqLzsgfTsKLQkJMUM4
RTI1QTkxMjcwRTNCQzAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjU2QTEyNzBE
RTM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLzsgfTsKIAkJMUM4
RTI4MjAxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI4MUUxMjc1RDE1NDAwQkM3QkQwIC8q
IFdlYkluc3BlY3Rvci5oICovOyB9OwogCQkxQzhFMjgyMTEyNzVEMTU0MDBCQzdCRDAgLyogV2Vi
SW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDOEUyODFGMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3BwICovOyB9Owog
CQkxQzhFMjgzNDEyNzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyODMyMTI3NUQ3Mzgw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oICovOyB9OwpAQCAtNTEwLDggKzUxMCwxMCBA
QAogCQkxQ0E4QjkzNjEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0E4QjkzNTEy
N0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gKi87IH07CiAJCTFDQThC
OTQ1MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0E4Qjk0
MzEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovOyB9OwogCQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUNBOEI5NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCAq
LzsgfTsKLQkJMUNBOEI5NTQxMjdDODkxNTAwNTc2QzJCIC8qIFdlYkluc3BlY3Rvck1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyREFEMTI3
OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNYWMubW0gKi87IH07CisJCTFDQThCOTU0MTI3
Qzg5MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JVSU1hYy5tbSAqLzsgfTsKIAkJMUNCNzVDOTQxNzAxRTg4MDAwOUY4MDlGIC8q
IERvY2tSaWdodC5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDQjc1QzkzMTcwMUU4ODAwMDlGODA5RiAvKiBEb2NrUmlnaHQucGRmICovOyB9Owor
CQkxQ0JCRTRBMDE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNC
QkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLzsgfTsKKwkJMUNCQkU0QTExOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
QkJFNDlGMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggKi87IH07
CiAJCTFDQkM5NDVFMTY1MTVFRDIwMEQ2OEFBRSAvKiBEb2NrQm90dG9tLnBkZiBpbiBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCQzk0NUQxNjUxNUVEMjAw
RDY4QUFFIC8qIERvY2tCb3R0b20ucGRmICovOyB9OwogCQkxRjMzNUJDMDE4NUI4NEYwMDAxQTIw
MUEgLyogV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjMzNUJCRjE4NUI4NEQ4MDAxQTIwMUEgLyog
V0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUY2MDRCQTgxODg5RkE3NDAwRUUwMzk1IC8qIFdL
UmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFGNjA0QkE2MTg4OUZBNzQwMEVFMDM5NSAvKiBXS1JlbmRlcmluZ1By
b2dyZXNzRXZlbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTI0NzUsMTAgKzI0NzcsMTEgQEAKIAkJMUFGRjQ4RkUxODMzREU3ODAwOUFCMTVB
IC8qIFdLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXS0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQkI0MTdDOTEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXJDb21wbGV0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRDaGVja2Vy
Q29tcGxldGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNzdDMTk1MTI4
OEE4NzIwMDZBNzQyRiAvKiBXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM4OTFENjIxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3Rv
clVJLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3Rv
clVJLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM4OTFENjMxOUIxMjRGRjAw
QkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkluc3BlY3RvclVJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDODkx
RDY0MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUM4QUU3NUYxOTkyRjYyRjAwQUJGNkVDIC8qIERvY2tCb3R0b21M
ZWdhY3kucGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gaW1hZ2UucGRmOyBuYW1lID0gRG9ja0JvdHRvbUxlZ2FjeS5wZGY7IHBhdGggPSBSZXNvdXJj
ZXMvRG9ja0JvdHRvbUxlZ2FjeS5wZGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
OEFFNzYwMTk5MkY2MkYwMEFCRjZFQyAvKiBEb2NrUmlnaHRMZWdhY3kucGRmICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBuYW1lID0g
RG9ja1JpZ2h0TGVnYWN5LnBkZjsgcGF0aCA9IFJlc291cmNlcy9Eb2NrUmlnaHRMZWdhY3kucGRm
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzhFMjU2QTEyNzBERTM4MDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMUM4RTI1NkIxMjcwREUzODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUM4RTI4MUUxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUM4RTI4MUYxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzhFMjgzMjEyNzVENzM4MDBCQzdCRDAgLyogV2Vi
SW5zcGVjdG9yUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5z
cGVjdG9yUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0ODgsMTEgKzI0
OTEsMTMgQEAKIAkJMUM4RTJBMUMxMjc3ODMzRjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3IubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEUyQTMxMTI3Nzg1MjQwMEJDN0JEMCAv
KiBXZWJJbnNwZWN0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4RTJBMzIxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3Bl
Y3Rvck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3Bl
Y3Rvck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOEUyREFEMTI3
OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JVSU1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3Rv
clVJTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0E4QjkzNTEyN0M3NzRF
MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUNBOEI5NDMxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3Rv
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUNBOEI5NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3Rv
clByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5z
cGVjdG9yUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0I3
NUM5MzE3MDFFODgwMDA5RjgwOUYgLyogRG9ja1JpZ2h0LnBkZiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBkZjsgbmFtZSA9IERvY2tSaWdo
dC5wZGY7IHBhdGggPSBSZXNvdXJjZXMvRG9ja1JpZ2h0LnBkZjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
Ykluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUNCQkU0OUYxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlNZXNzYWdl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0JDOTQ1RDE2NTE1RUQyMDBENjhB
QUUgLyogRG9ja0JvdHRvbS5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7IG5hbWUgPSBEb2NrQm90dG9tLnBkZjsgcGF0aCA9IFJl
c291cmNlcy9Eb2NrQm90dG9tLnBkZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUND
NDE3QzkxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYwMTgxNjkxODU4REMxNTAwRjkyODg0IC8qIFdLV2Vi
UHJvY2Vzc1BsdWdJbkZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
V2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01
NjYyLDggKzU2NjcsNiBAQAogCQkJCUJDMUJFMURFMTJENTRBNDEwMDA0QTIyOCAvKiBXZWJHZW9s
b2NhdGlvbkNsaWVudC5oICovLAogCQkJCUJDMTExQTU5MTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJJ
bnNwZWN0b3JDbGllbnQuY3BwICovLAogCQkJCUJDMDMyRDZEMTBGNDM3OEQwMDU4QzE1QSAvKiBX
ZWJJbnNwZWN0b3JDbGllbnQuaCAqLywKLQkJCQkxQzhFMjU2QjEyNzBERTM4MDBCQzdCRDAgLyog
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwICovLAotCQkJCTFDOEUyNTZBMTI3MERFMzgw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oICovLAogCQkJCTMxMDk5OTcx
MTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwICovLAogCQkJCTMx
MDk5OTY4MTQ2QzcxRjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLywKIAkJ
CQk1MTIxMjdDMTE5MDgyMzlBMDBEQUYzNUMgLyogV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAg
Ki8sCkBAIC01NzIzLDYgKzU3MjYsOSBAQAogCQkJCTFDOEUyODFGMTI3NUQxNTQwMEJDN0JEMCAv
KiBXZWJJbnNwZWN0b3IuY3BwICovLAogCQkJCTFDOEUyODFFMTI3NUQxNTQwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3IuaCAqLywKIAkJCQkxQzhFMkExQzEyNzc4MzNGMDBCQzdCRDAgLyogV2ViSW5z
cGVjdG9yLm1lc3NhZ2VzLmluICovLAorCQkJCTFDODkxRDYyMTlCMTI0RkYwMEJBNzlERCAvKiBX
ZWJJbnNwZWN0b3JVSS5jcHAgKi8sCisJCQkJMUM4OTFENjMxOUIxMjRGRjAwQkE3OUREIC8qIFdl
Ykluc3BlY3RvclVJLmggKi8sCisJCQkJMUM4OTFENjQxOUIxMjRGRjAwQkE3OUREIC8qIFdlYklu
c3BlY3RvclVJLm1lc3NhZ2VzLmluICovLAogCQkJCUJDODU3Rjg0MTJCODJEMEIwMEVERUIyRSAv
KiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgKi8sCiAJCQkJQkM4NTdGODMxMkI4MkQw
QjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi8sCiAJCQkJQkM5NjNE
NkExMTNERDE5MjAwNTc0QkUyIC8qIFdlYlBhZ2UuY3BwICovLApAQCAtNjQ3MSw3ICs2NDc3LDcg
QEAKIAkJCQk1MTkyRDU3NTE5NjFGRDAzMDBDRDE5QUEgLyogU2VydmljZXNPdmVybGF5Q29udHJv
bGxlci5tbSAqLywKIAkJCQkxQUFGMjYzNzE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEuaCAqLywKIAkJCQkxQUFGMjYzNjE0Njg3QzM5MDA0QTFFOEEgLyog
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gKi8sCi0JCQkJMUM4RTJEQUQxMjc4QzVC
MjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1hYy5tbSAqLywKKwkJCQkxQzhFMkRBRDEyNzhDNUIy
MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yVUlNYWMubW0gKi8sCiAJCQkJQkM5NjNENkQxMTNERDFB
NTAwNTc0QkUyIC8qIFdlYlBhZ2VNYWMubW0gKi8sCiAJCQkJMjlDRDU1QTgxMjhFMjk0RjAwMTMz
Qzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggKi8sCiAJCQkJMjlDRDU1
QTkxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1t
ICovLApAQCAtNjgyNyw2ICs2ODMzLDggQEAKIAkJCQkxQzhFMkEzMjEyNzc4NTI0MDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCAqLywKIAkJCQkxQ0E4Qjk0MzEyN0M4ODJBMDA1NzZD
MkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFDQThC
OTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggKi8sCisJ
CQkJMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLywKKwkJCQkxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9y
VUlNZXNzYWdlcy5oICovLAogCQkJCTMzRDNBM0M0MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRp
YUNhY2hlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMzNEM0EzQzUxMzM5NjE3
OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyTWVzc2FnZXMuaCAqLywKIAkJCQkzM0Qz
QTNDNjEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8sCkBAIC03NDM4LDYgKzc0NDYsNyBAQAogCQkJCTJEQUNFNjRFMThBREJG
RjAwMEU0Q0E3NiAvKiBfV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxNTc4QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGNkEyNUZERDEyQURDNkNDMDBEQzQwQ0MgLyogV2ViRGF0YWJhc2VNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKKwkJCQkxQzg5MUQ2NjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9y
VUkuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2MkE3NkI3MTJCMUIyNUYwMDA1RjFCNiAvKiBXZWJE
YXRhYmFzZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYyQTc2NUQxMkIx
QUJDMzAwMDVGMUI2IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDZBQjU0MTE5MkIxQzRBMDAzQTlGRDEgLyogV0tQREZQYWdlTnVtYmVySW5kaWNhdG9y
LmggaW4gSGVhZGVycyAqLywKQEAgLTc0OTQsNyArNzUwMyw2IEBACiAJCQkJMUM4RTI4MjAxMjc1
RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzQ0Mx
NjcxODkwNkFDRjAwMUU2RUQ4IC8qIFdLV2ViVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMw
MzJEODIxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMUM4RTI1QTkxMjcwRTNCQzAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzhFMkEzNjEyNzc4NTI0MDBCQzdCRDAgLyog
V2ViSW5zcGVjdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyODM0MTI3NUQ3
MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNB
OEI5NDYxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLApAQCAtNzc2Miw2ICs3NzcwLDcgQEAKIAkJCQlGNjM0NDQ1RDEyQTg4NUU5MDAw
NjEyRDggLyogV0tTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjA4Qjgx
OTI2OUU2RDAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzQwNzYwNDEyNEZGMDI3MDA2OEYyMEEgLyogV0tTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTFDQkJFNEExMTlCNjZDNTMwMDZCN0Q4
MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU0
QzE4QkJFMDQ0MDAwRkNGQzkgLyogV0tDb250ZW50Vmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzdBNjRFNTcxOEYzOEY0NjAwRUIzMEYxIC8qIF9XS0Zvcm1JbnB1dFNlc3Npb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFGNjA0QkFBMTg4OUZCQjgwMEVFMDM5NSAvKiBXS1JlbmRlcmluZ1Byb2dy
ZXNzRXZlbnRzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtODg2NSw2ICs4ODc0LDcgQEAK
IAkJCQkwMEI5NjYxOTE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBRTVCN0ZCMTFFN0FFRDIwMEJBNjc2NyAvKiBOZXRzY2FwZVBsdWdpbk1hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTdDMzYxRDcyMTkyN0ZBMzYwMDM2QTU5RCAvKiBXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQzg5MUQ2NTE5QjEyNEZG
MDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlD
NTUxMkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBNEE5QzlBMTJCODIxQ0QwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVs
ZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQTU4ODkzMTFFRTcwNDAwMDYxQjg4MiAvKiBO
ZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg5MDMsNiArODkxMyw3
IEBACiAJCQkJMUEyRDg0MzkxMjdGNjVENTAwMUVCOTYyIC8qIE5QT2JqZWN0TWVzc2FnZVJlY2Vp
dmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQUYwOEFEMTkyNjkz
NjcwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUEyRDgyQTYxMjdGNEVBQjAwMUVCOTYyIC8qIE5QT2JqZWN0UHJveHkuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMUNCQkU0QTAxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJ
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ4MkE4MTI3RjRFQUIw
MDFFQjk2MiAvKiBOUFJlbW90ZU9iamVjdE1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTIx
NjFCMTExRjM3NjY0MDA4QUQwRjUgLyogTlBSdW50aW1lT2JqZWN0TWFwLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBMjE2MkIwMTFGMzg5NzEwMDhBRDBGNSAvKiBOUFJ1bnRpbWVVdGlsaXRpZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MTYyLDggKzkxNzMsNyBAQAogCQkJCUJDQ0Y2QUJDMTJD
OTFFRjkwMDhGOUMzNSAvKiBXZWJJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzhFMjgy
MTEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDMTExQTYwMTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJJbnNwZWN0b3JDbGllbnQuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJMUM4RTI1QTgxMjcwRTNCQjAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFDQThCOTU0MTI3Qzg5MTUwMDU3
NkMyQiAvKiBXZWJJbnNwZWN0b3JNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQ0E4Qjk1NDEy
N0M4OTE1MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yVUlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkxQzhFMkEzNTEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDOEUyODM1MTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJ
bnNwZWN0b3JQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQ0E4QjkzNjEyN0M3NzRFMDA1
NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA1MDFkNDFjZDkxNDc2YjYyNzY5NmYzOTg0NTk5YmU2
MzgwN2ZmZjUyLi44NTkzNThiY2NjYjE4MjZiZTkzMmZkMWM1MjA0NmVmYzJjNzg3NjhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NCwyMCArODQsMjEgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCiAKIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQo
SW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlcikKIHsKLSAgICBXZWJQYWdlKiBpbnNwZWN0
b3JQYWdlID0gY29udHJvbGxlci0+aXNVbmRlclRlc3QoKSA/IG1fcGFnZS0+aW5zcGVjdG9yKCkt
PmNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KCkgOiBtX3BhZ2UtPmluc3BlY3RvcigpLT5jcmVh
dGVJbnNwZWN0b3JQYWdlKCk7Ci0gICAgQVNTRVJUX1VOVVNFRChpbnNwZWN0b3JQYWdlLCBpbnNw
ZWN0b3JQYWdlKTsKLSAgICByZXR1cm4gdGhpczsKKyAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5j
cmVhdGVJbnNwZWN0b3JQYWdlKGNvbnRyb2xsZXItPmlzVW5kZXJUZXN0KCkpOworCisgICAgcmV0
dXJuIG1fcGFnZS0+aW5zcGVjdG9yKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojpj
bG9zZUluc3BlY3RvckZyb250ZW5kKCkKIHsKICAgICBpZiAobV9wYWdlLT5pbnNwZWN0b3IoKSkK
LSAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+ZGlkQ2xvc2UoKTsKKyAgICAgICAgbV9wYWdl
LT5pbnNwZWN0b3IoKS0+Y2xvc2VGcm9udGVuZCgpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNs
aWVudDo6YnJpbmdGcm9udGVuZFRvRnJvbnQoKQogewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCkt
PmJyaW5nVG9Gcm9udCgpOworICAgIGlmIChtX3BhZ2UtPmluc3BlY3RvcigpKQorICAgICAgICBt
X3BhZ2UtPmluc3BlY3RvcigpLT5icmluZ1RvRnJvbnQoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0
b3JDbGllbnQ6OmRpZFJlc2l6ZU1haW5GcmFtZShGcmFtZSopCkBAIC0xOTcsMzQgKzE5OCw2IEBA
IHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5h
YmxlZCkKIH0KICNlbmRpZgogCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VU
b0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBXZWJJbnNwZWN0b3IqIGlu
c3BlY3RvciA9IG1fcGFnZS0+aW5zcGVjdG9yKCk7Ci0gICAgaWYgKCFpbnNwZWN0b3IpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotICAgIGlm
IChpbnNwZWN0b3ItPmhhc1JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkpIHsKLSAgICAgICAgaW5z
cGVjdG9yLT5zZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQobWVzc2FnZSk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSNlbmRpZgotCi0gICAgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSA9
IGluc3BlY3Rvci0+aW5zcGVjdG9yUGFnZSgpOwotICAgIGlmIChpbnNwZWN0b3JQYWdlKQotICAg
ICAgICByZXR1cm4gZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZShpbnNwZWN0b3JQYWdl
LT5jb3JlUGFnZSgpLCBtZXNzYWdlKTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBX
ZWJJbnNwZWN0b3JDbGllbnQ6OnN1cHBvcnRzRnJhbWVJbnN0cnVtZW50YXRpb24oKQotewotI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgotICAg
IHJldHVybiBmYWxzZTsKLX0KLQogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnBhZ2VPdmVybGF5
RGVzdHJveWVkKFBhZ2VPdmVybGF5KikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmlu
ZGV4IDcwMzNiZGVjYTA4MjYwNTZhODBjZDEwOWE0NGY4MmEzMDE5OWRlNmIuLjc5OGNhYzdhODNj
MDY3YTIzM2E1OTkwYTlkNGY1ZmE0MTQwYjNlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
aApAQCAtNDUsMjIgKzQ1LDIzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsK
IGNsYXNzIFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudDsKIAotY2xhc3MgV2ViSW5zcGVjdG9y
Q2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVibGljIFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCwgcHJpdmF0ZSBQYWdlT3ZlcmxheTo6Q2xpZW50IHsK
K2NsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGll
bnQsIHByaXZhdGUgUGFnZU92ZXJsYXk6OkNsaWVudCB7CiBmcmllbmQgY2xhc3MgUmVwYWludElu
ZGljYXRvckxheWVyQ2xpZW50OwogcHVibGljOgogICAgIFdlYkluc3BlY3RvckNsaWVudChXZWJQ
YWdlKik7CiAgICAgdmlydHVhbCB+V2ViSW5zcGVjdG9yQ2xpZW50KCk7CiAKIHByaXZhdGU6Ci0g
ICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIC8vIFdl
YkNvcmU6Okluc3BlY3RvckNsaWVudAorICAgIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3Bl
Y3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZXNpemVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICBX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbG9zZUlu
c3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9u
dCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVzaXplTWFpbkZyYW1lKFdlYkNvcmU6OkZyYW1l
Kikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGhpZ2hs
aWdodCgpIG92ZXJyaWRlOworICAgIHZvaWQgaGlkZUhpZ2hsaWdodCgpIG92ZXJyaWRlOwogCiAj
aWYgUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgdm9pZCBzaG93SW5zcGVjdG9ySW5kaWNhdGlv
bigpIG92ZXJyaWRlOwpAQCAtNzIsMTAgKzczLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJv
b2wgb3ZlcnJpZGVzU2hvd1BhaW50UmVjdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHNob3dQYWludFJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnJh
bWVJbnN0cnVtZW50YXRpb24oKTsKLQogICAgIC8vIFBhZ2VPdmVybGF5OjpDbGllbnQKICAgICB2
aXJ0dWFsIHZvaWQgcGFnZU92ZXJsYXlEZXN0cm95ZWQoUGFnZU92ZXJsYXkqKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdl
Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDNkYWUxMGIzZDBjNWI3N2MxNDc5ZjVm
ZjRiMjI4OGE0YjZiNDQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQuaCIKLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0KLSNpbmNsdWRlICJXZWJJ
bnNwZWN0b3IuaCIKLSNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9JbnNw
ZWN0b3JDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+Ci0jaW5jbHVkZSA8
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLVdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dChXZWJQYWdlKiBwYWdlLCBXZWJQYWdlKiBpbnNwZWN0b3JQYWdlKQotICAgIDogSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbCgmcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLCBpbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFNldHRpbmdz
PigpKQotICAgICwgbV9wYWdlKHBhZ2UpCi17Ci19Ci0KLVN0cmluZyBXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCi17Ci0gICAgcmV0dXJuIG1fcGFnZS0+
aW5zcGVjdG9yKCktPmxvY2FsaXplZFN0cmluZ3NVUkwoKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6YnJpbmdUb0Zyb250KCkKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3Rv
cigpLT5icmluZ1RvRnJvbnQoKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDo6Y2xvc2VXaW5kb3coKQotewotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+
ZGlkQ2xvc2UoKTsKLX0KLQotYm9vbCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6Y2FuU2F2
ZSgpCi17Ci0gICAgcmV0dXJuIG1fcGFnZS0+aW5zcGVjdG9yKCktPmNhblNhdmUoKTsKLX0KLQot
dm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2F2ZShjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3Jj
ZVNhdmVBcykKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5zYXZlKGZpbGVuYW1lLCBjb250
ZW50LCBiYXNlNjRFbmNvZGVkLCBmb3JjZVNhdmVBcyk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6OmFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnQpCi17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YXBwZW5kKGZpbGVuYW1l
LCBjb250ZW50KTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNo
V2luZG93KERvY2tTaWRlIGRvY2tTaWRlKQotewotICAgIHN3aXRjaCAoZG9ja1NpZGUpIHsKLSAg
ICBjYXNlIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6VW5kb2NrZWQ6Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6Qm90dG9tOgotICAgICAgICBtX3BhZ2UtPmlu
c3BlY3RvcigpLT5hdHRhY2hCb3R0b20oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU6OlJpZ2h0OgotICAgICAgICBtX3BhZ2UtPmlu
c3BlY3RvcigpLT5hdHRhY2hSaWdodCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZv
aWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRldGFjaFdpbmRvdygpCi17Ci0gICAgbV9w
YWdlLT5pbnNwZWN0b3IoKS0+ZGV0YWNoKCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKLXsKLSAg
ICBtX3BhZ2UtPmluc3BlY3RvcigpLT5zZXRBdHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQpOwot
fQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd1dp
ZHRoKHVuc2lnbmVkIHdpZHRoKQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPnNldEF0dGFj
aGVkV2luZG93V2lkdGgod2lkdGgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50OjpzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKLXsKLSAgICBtX3BhZ2UtPmlu
c3BlY3RvcigpLT5zZXRUb29sYmFySGVpZ2h0KGhlaWdodCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpCi17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+aW5zcGVjdGVkVVJMQ2hhbmdlZCh1
cmxTdHJpbmcpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJM
RShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3IuY3BwCmluZGV4IDU2MTI5N2EzMDc1MGNkZWYwMzk3MGE3YTBmZGY5ZjY5ZTJh
Y2M4ZmYuLjQ3NzQzNDE5ODgzYzMwZWY1Y2E5MTdiMGM3ZWM5N2EzYmU2MDI2ZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
NywxMTcgKzI3LDgyIEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yLmgiCiAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQorCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKLSNpbmNsdWRlICJXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudC5oIgorI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkluc3Bl
Y3RvclVJTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSAiV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0Nocm9tZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lTG9hZFJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
Vmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0luc3BlY3RvclBhZ2VBZ2VudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgotI2luY2x1ZGUgPGlu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaD4KLSNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRW
YWx1ZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAorc3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1BdHRhY2hlZEhlaWdodCA9IDI1MDsKK3N0YXRp
YyBjb25zdCBmbG9hdCBtYXhpbXVtQXR0YWNoZWRIZWlnaHRSYXRpbyA9IDAuNzU7CitzdGF0aWMg
Y29uc3QgZmxvYXQgbWluaW11bUF0dGFjaGVkV2lkdGggPSA3NTA7CisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1QYXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gV2ViSW5zcGVjdG9yOjpjcmVhdGUoV2Vi
UGFnZSogcGFnZSwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwpCitQ
YXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gV2ViSW5zcGVjdG9yOjpjcmVhdGUoV2ViUGFnZSogcGFn
ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvcihwYWdlLCBmcm9udGVu
ZENoYW5uZWwpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvcihwYWdlKSk7
CiB9CiAKLVdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlBhZ2UqIHBhZ2UsIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQorV2ViSW5zcGVjdG9yOjpXZWJJbnNw
ZWN0b3IoV2ViUGFnZSogcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQotICAgICwgbV9pbnNwZWN0
b3JQYWdlKG51bGxwdHIpCi0gICAgLCBtX2Zyb250ZW5kQ2xpZW50KG51bGxwdHIpCi0gICAgLCBt
X2Zyb250ZW5kQ2hhbm5lbChmcm9udGVuZENoYW5uZWwpCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgLCBtX2hhc0xvY2FsaXplZFN0cmluZ3NVUkwoZmFsc2UpCi0jZW5kaWYKLSNpZiBFTkFCTEUo
SU5TUEVDVE9SX1NFUlZFUikKLSAgICAsIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoZmFsc2Up
Ci0jZW5kaWYKKyAgICAsIG1fYXR0YWNoZWQoZmFsc2UpCisgICAgLCBtX3ByZXZpb3VzQ2FuQXR0
YWNoKGZhbHNlKQogewogfQogCiAvLyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JDbGllbnQKLVdl
YlBhZ2UqIFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zcGVjdG9yUGFnZSgpCit2b2lkIFdlYkluc3Bl
Y3Rvcjo6Y3JlYXRlSW5zcGVjdG9yUGFnZShib29sIHVuZGVyVGVzdCkKIHsKICAgICBpZiAoIW1f
cGFnZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBBU1NFUlQoIW1faW5zcGVjdG9y
UGFnZSk7Ci0gICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2xpZW50KTsKLQotICAgIHVpbnQ2NF90IGlu
c3BlY3RvclBhZ2VJRCA9IDA7Ci0gICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0
ZXJzOwotCi0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3Bl
Y3RvclBhZ2UoKSwKLSAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6Q3Jl
YXRlSW5zcGVjdG9yUGFnZTo6UmVwbHkoaW5zcGVjdG9yUGFnZUlELCBwYXJhbWV0ZXJzKSwKLSAg
ICAgICAgICAgIG1fcGFnZS0+cGFnZUlEKCksIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM6Om1h
eCgpKSkgewotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgICAgIHJldHVybjsK
IAotICAgIGlmICghaW5zcGVjdG9yUGFnZUlEKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNp
ZiBPUyhEQVJXSU4pCisgICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKKyAgICBtYWNoX3Bv
cnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZs
aXN0ZW5pbmdQb3J0KTsKKworICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmVyKGxpc3RlbmluZ1BvcnQpOworICAgIElQQzo6QXR0YWNobWVudCBjb25uZWN0
aW9uQ2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7Cisj
ZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICBJUEM6OkNvbm5lY3Rpb246OlNvY2tl
dFBhaXIgc29ja2V0UGFpciA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0
aW9uKCk7CisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlm
ZXIoc29ja2V0UGFpci5zZXJ2ZXIpOworICAgIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uQ2xp
ZW50UG9ydChzb2NrZXRQYWlyLmNsaWVudCk7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuOworI2VuZGlmCiAKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jcmVhdGVX
ZWJQYWdlKGluc3BlY3RvclBhZ2VJRCwgcGFyYW1ldGVycyk7Ci0gICAgbV9pbnNwZWN0b3JQYWdl
ID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViUGFnZShpbnNwZWN0b3JQYWdlSUQpOwotICAgIEFT
U0VSVChtX2luc3BlY3RvclBhZ2UpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uID0gSVBDOjpD
b25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmZXIsIHRo
aXMsIFJ1bkxvb3A6Om1haW4oKSk7CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPm9wZW4oKTsK
IAotICAgIGF1dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50PihtX3BhZ2UsIG1faW5zcGVjdG9yUGFnZSk7Ci0gICAgbV9mcm9udGVu
ZENsaWVudCA9IGZyb250ZW5kQ2xpZW50LmdldCgpOwotICAgIG1faW5zcGVjdG9yUGFnZS0+Y29y
ZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50
KFdURjo6bW92ZShmcm9udGVuZENsaWVudCkpOwotICAgIHJldHVybiBtX2luc3BlY3RvclBhZ2U7
CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBhZ2UoY29ubmVj
dGlvbkNsaWVudFBvcnQsIGNhbkF0dGFjaFdpbmRvdygpLCB1bmRlclRlc3QpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKIH0KIAotV2ViUGFnZSogV2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQYWdl
Rm9yVGVzdCgpCit2b2lkIFdlYkluc3BlY3Rvcjo6Y2xvc2VGcm9udGVuZCgpCiB7Ci0gICAgaWYg
KCFtX3BhZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgQVNTRVJUKCFtX2luc3Bl
Y3RvclBhZ2UpOwotICAgIEFTU0VSVCghbV9mcm9udGVuZENsaWVudCk7Ci0KLSAgICB1aW50NjRf
dCBpbnNwZWN0b3JQYWdlSUQgPSAwOwotICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFy
YW1ldGVyczsKLQotICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpDcmVhdGVJ
bnNwZWN0b3JQYWdlRm9yVGVzdCgpLAotICAgICAgICAgICAgTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjpDcmVhdGVJbnNwZWN0b3JQYWdlRm9yVGVzdDo6UmVwbHkoaW5zcGVjdG9yUGFnZUlE
LCBwYXJhbWV0ZXJzKSwKLSAgICAgICAgICAgIG1fcGFnZS0+cGFnZUlEKCksIHN0ZDo6Y2hyb25v
OjptaWxsaXNlY29uZHM6Om1heCgpKSkgewotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
Ci0KLSAgICBpZiAoIWluc3BlY3RvclBhZ2VJRCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jcmVhdGVXZWJQYWdlKGluc3BlY3RvclBhZ2VJRCwg
cGFyYW1ldGVycyk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlID0gV2ViUHJvY2Vzczo6c2hhcmVkKCku
d2ViUGFnZShpbnNwZWN0b3JQYWdlSUQpOwotICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOwot
Ci0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ+KG1fcGFnZSwgbV9pbnNwZWN0b3JQYWdlKTsKLSAgICBtX2Zyb250ZW5k
Q2xpZW50ID0gZnJvbnRlbmRDbGllbnQuZ2V0KCk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5jb3Jl
UGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQo
V1RGOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9yUGFnZTsK
LX0KKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGlkQ2xvc2UoKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpkZXN0cm95SW5zcGVjdG9yUGFnZSgpCi17Ci0g
ICAgbV9pbnNwZWN0b3JQYWdlID0gbnVsbHB0cjsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbnVs
bHB0cjsKLSAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7Ci19CisgICAgbV9mcm9udGVu
ZENvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbiA9IG51
bGxwdHI7CiAKLS8vIENhbGxlZCBmcm9tIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ci12b2lk
IFdlYkluc3BlY3Rvcjo6ZGlkQ2xvc2UoKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpEaWRDbG9zZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLSAgICBkZXN0cm95SW5zcGVjdG9yUGFn
ZSgpOworICAgIG1fYXR0YWNoZWQgPSBmYWxzZTsKKyAgICBtX3ByZXZpb3VzQ2FuQXR0YWNoID0g
ZmFsc2U7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpicmluZ1RvRnJvbnQoKQpAQCAtMTQ1LDUx
ICsxMTAsNiBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6YnJpbmdUb0Zyb250KCkKICAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250KCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQog
Ci12b2lkIFdlYkluc3BlY3Rvcjo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVy
bFN0cmluZykKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6SW5zcGVjdGVkVVJMQ2hh
bmdlZCh1cmxTdHJpbmcpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0
b3I6OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBi
b29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCi17Ci0gICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNl
U2F2ZUFzKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjphcHBl
bmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KQotewotICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OmF0dGFjaEJvdHRvbSgpCi17
Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaEJvdHRvbSgpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OmF0dGFjaFJpZ2h0KCkKLXsKLSAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoUmlnaHQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7
Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpkZXRhY2goKQotewotICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpEZXRhY2goKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5z
cGVjdG9yOjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCi17Ci0gICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCks
IG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6c2V0QXR0YWNoZWRX
aW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6U2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh3aWR0aCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQot
Ci12b2lkIFdlYkluc3BlY3Rvcjo6c2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCBoZWlnaHQpCi17
Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldFRvb2xiYXJIZWlnaHQoaGVpZ2h0KSwg
bV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3IgbWVzc2Fn
ZXMKIHZvaWQgV2ViSW5zcGVjdG9yOjpzaG93KCkKIHsKQEAgLTIwMSwzNCArMTIxLDE3IEBAIHZv
aWQgV2ViSW5zcGVjdG9yOjpjbG9zZSgpCiAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkuY2xvc2UoKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OmRpZFNhdmUo
Y29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7Ci0gICAg
bV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRl
U2NyaXB0KG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLnNhdmVkVVJMKFwiIiwgdXJs
LCAiXCIpIikpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6ZGlkQXBwZW5kKGNvbnN0IFN0cmlu
ZyYgdXJsKQotewotICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOwotICAgIG1faW5zcGVjdG9y
UGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChtYWtl
U3RyaW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5hcHBlbmRlZFRvVVJMKFwiIiwgdXJsLCAiXCIp
IikpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6YXR0YWNoZWRCb3R0b20oKQordm9pZCBXZWJJ
bnNwZWN0b3I6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBp
ZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0QXR0YWNo
ZWRXaW5kb3coSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpCb3R0b20pOwotfQor
ICAgIFBhZ2UqIGluc3BlY3RlZFBhZ2UgPSBtX3BhZ2UtPmNvcmVQYWdlKCk7CisgICAgRnJhbWUm
IGluc3BlY3RlZE1haW5GcmFtZSA9IGluc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpOworICAgIEZy
YW1lTG9hZFJlcXVlc3QgcmVxdWVzdChpbnNwZWN0ZWRNYWluRnJhbWUuZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KHVybFN0cmluZyksICJfYmxhbmsiKTsKIAot
dm9pZCBXZWJJbnNwZWN0b3I6OmF0dGFjaGVkUmlnaHQoKQotewotICAgIGlmIChtX2Zyb250ZW5k
Q2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRBdHRhY2hlZFdpbmRvdyhJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU6OlJpZ2h0KTsKLX0KKyAgICBQYWdlKiBuZXdQ
YWdlID0gaW5zcGVjdGVkUGFnZS0+Y2hyb21lKCkuY3JlYXRlV2luZG93KCZpbnNwZWN0ZWRNYWlu
RnJhbWUsIHJlcXVlc3QsIFdpbmRvd0ZlYXR1cmVzKCksIE5hdmlnYXRpb25BY3Rpb24ocmVxdWVz
dC5yZXNvdXJjZVJlcXVlc3QoKSwgTmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tlZCkpOworICAgIGlm
ICghbmV3UGFnZSkKKyAgICAgICAgcmV0dXJuOwogCi12b2lkIFdlYkluc3BlY3Rvcjo6ZGV0YWNo
ZWQoKQotewotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xp
ZW50LT5zZXRBdHRhY2hlZFdpbmRvdyhJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU6
OlVuZG9ja2VkKTsKKyAgICBuZXdQYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5sb2FkKHJlcXVl
c3QpOwogfQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6ZXZhbHVhdGVTY3JpcHRGb3JUZXN0KGNvbnN0
IFN0cmluZyYgc2NyaXB0KQpAQCAtMjM5LDEwOCArMTQyLDk0IEBAIHZvaWQgV2ViSW5zcGVjdG9y
OjpldmFsdWF0ZVNjcmlwdEZvclRlc3QoY29uc3QgU3RyaW5nJiBzY3JpcHQpCiB2b2lkIFdlYklu
c3BlY3Rvcjo6c2hvd0NvbnNvbGUoKQogewogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAg
ICAgbV9mcm9udGVuZENsaWVudC0+c2hvd0NvbnNvbGUoKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNob3dDb25zb2xlKCksIDApOwog
fQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6c2hvd1Jlc291cmNlcygpCiB7CiAgICAgbV9wYWdlLT5j
b3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zyb250
ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zaG93UmVzb3VyY2VzKCk7Cisg
ICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpT
aG93UmVzb3VyY2VzKCksIDApOwogfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6c2hvd01haW5SZXNv
dXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCit2b2lkIFdlYkluc3BlY3Rvcjo6c2hvd01h
aW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSWRlbnRpZmllcikKIHsKLSAgICBXZWJG
cmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKTsKKyAg
ICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlk
ZW50aWZpZXIpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFn
ZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9m
cm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2hvd01haW5SZXNvdXJj
ZUZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSk7Ci19CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpz
dGFydEphdmFTY3JpcHREZWJ1Z2dpbmcoKQotewotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAg
ICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0RGVidWdnaW5nRW5hYmxlZCh0cnVlKTsKKyAgICBT
dHJpbmcgaW5zcGVjdG9yRnJhbWVJZGVudGlmaWVyID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkucGFnZUFnZW50KCktPmZyYW1lSWQoZnJhbWUtPmNvcmVGcmFtZSgp
KTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUk6OlNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShpbnNwZWN0b3JGcmFtZUlkZW50aWZpZXIpLCAw
KTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OnN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCkKK3Zv
aWQgV2ViSW5zcGVjdG9yOjpzdGFydFBhZ2VQcm9maWxpbmcoKQogewogICAgIG1fcGFnZS0+Y29y
ZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVu
ZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0RGVidWdnaW5nRW5hYmxlZChm
YWxzZSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5h
YmxlZChib29sKQotewotICAgIC8vIE5vIGxvbmdlciBzdXBwb3J0ZWQuCisgICAgbV9mcm9udGVu
ZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTdGFydFBhZ2VQcm9m
aWxpbmcoKSwgMCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpzdGFydEphdmFTY3JpcHRQcm9m
aWxpbmcoKQordm9pZCBXZWJJbnNwZWN0b3I6OnN0b3BQYWdlUHJvZmlsaW5nKCkKIHsKLSAgICAv
LyBObyBsb25nZXIgc3VwcG9ydGVkLgorICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLnNob3coKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUk6OlN0b3BQYWdlUHJvZmlsaW5nKCksIDApOwogfQogCi12b2lk
IFdlYkluc3BlY3Rvcjo6c3RvcEphdmFTY3JpcHRQcm9maWxpbmcoKQorYm9vbCBXZWJJbnNwZWN0
b3I6OmNhbkF0dGFjaFdpbmRvdygpCiB7Ci0gICAgLy8gTm8gbG9uZ2VyIHN1cHBvcnRlZC4KLX0K
KyAgICAvLyBEb24ndCBhbGxvdyBhdHRhY2hpbmcgdG8gYW5vdGhlciBpbnNwZWN0b3IgLS0gdHdv
IGluc3BlY3RvcnMgaW4gb25lIHdpbmRvdyBpcyB0b28gbXVjaCEKKyAgICBpZiAobV9wYWdlLT5p
c0luc3BlY3RvclBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi12b2lkIFdlYkluc3Bl
Y3Rvcjo6c3RhcnRQYWdlUHJvZmlsaW5nKCkKLXsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0g
ICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCh0cnVl
KTsKLX0KKyAgICAvLyBJZiB3ZSBhcmUgYWxyZWFkeSBhdHRhY2hlZCwgYWxsb3cgYXR0YWNoaW5n
IGFnYWluIHRvIGFsbG93IHN3aXRjaGluZyBzaWRlcy4KKyAgICBpZiAobV9hdHRhY2hlZCkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpzdG9wUGFnZVByb2ZpbGlu
ZygpCi17Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hv
dygpOwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250ZW5kQ2xpZW50
LT5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoZmFsc2UpOworICAgIC8vIERvbid0IGFsbG93
IHRoZSBhdHRhY2ggaWYgdGhlIHdpbmRvdyB3b3VsZCBiZSB0b28gc21hbGwgdG8gYWNjb21tb2Rh
dGUgdGhlIG1pbmltdW0gaW5zcGVjdG9yIHNpemUuCisgICAgdW5zaWduZWQgaW5zcGVjdGVkUGFn
ZUhlaWdodCA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxl
SGVpZ2h0KCk7CisgICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZVdpZHRoID0gbV9wYWdlLT5jb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPnZpc2libGVXaWR0aCgpOworICAgIHVuc2lnbmVk
IG1heGltdW1BdHRhY2hlZEhlaWdodCA9IGluc3BlY3RlZFBhZ2VIZWlnaHQgKiBtYXhpbXVtQXR0
YWNoZWRIZWlnaHRSYXRpbzsKKyAgICByZXR1cm4gbWluaW11bUF0dGFjaGVkSGVpZ2h0IDw9IG1h
eGltdW1BdHRhY2hlZEhlaWdodCAmJiBtaW5pbXVtQXR0YWNoZWRXaWR0aCA8PSBpbnNwZWN0ZWRQ
YWdlV2lkdGg7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjp1cGRhdGVEb2NraW5nQXZhaWxhYmls
aXR5KCkKIHsKLSAgICBpZiAoIW1fZnJvbnRlbmRDbGllbnQpCisgICAgaWYgKG1fYXR0YWNoZWQp
CisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgY2FuQXR0YWNoV2luZG93ID0gdGhpcy0+Y2Fu
QXR0YWNoV2luZG93KCk7CisgICAgaWYgKG1fcHJldmlvdXNDYW5BdHRhY2ggPT0gY2FuQXR0YWNo
V2luZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIGNhbkF0dGFjaFdpbmRvdyA9IG1f
ZnJvbnRlbmRDbGllbnQtPmNhbkF0dGFjaFdpbmRvdygpOworICAgIG1fcHJldmlvdXNDYW5BdHRh
Y2ggPSBjYW5BdHRhY2hXaW5kb3c7CisKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0
YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChjYW5BdHRhY2hXaW5kb3cpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXREb2NraW5nVW5hdmFpbGFibGUoIWNhbkF0dGFj
aFdpbmRvdyk7CiB9CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLXZvaWQgV2ViSW5z
cGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQordm9pZCBXZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKIHsKLSAgICBBU1NFUlQobV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCk7Ci0gICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChtZXNz
YWdlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkuZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwogfQog
Ci12b2lkIFdlYkluc3BlY3Rvcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK2Jvb2wgV2ViSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdl
KTsKKyNpZiAhRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCisgICAgbV9mcm9udGVuZENvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQo
bWVzc2FnZSksIDApOworI2Vsc2UKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2VuZE1l
c3NhZ2VUb1JlbW90ZUZyb250ZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyNlbmRp
ZgorICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCiB2
b2lkIFdlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKQogewotICAgIEFTU0VS
VCghbV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCk7Ci0gICAgLy8gU3dpdGNoaW5nIGJldHdlZW4g
aW4tcHJvY2VzcyBhbmQgcmVtb3RlIGluc3BlY3RvcnMgaXNuJ3Qgc3VwcG9ydGVkIHlldC4KLSAg
ICBBU1NFUlQoIW1faW5zcGVjdG9yUGFnZSk7Ci0gICAgCi0gICAgbV9wYWdlLT5jb3JlUGFnZSgp
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmRDaGFubmVs
KTsKLSAgICBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkID0gdHJ1ZTsKKyAgICBtX3BhZ2UtPmNv
cmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQodGhpcyk7CiB9
CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCiB7Ci0g
ICAgQVNTRVJUKG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOwogICAgIG1fcGFnZS0+Y29yZVBh
Z2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6
Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7Ci0gICAgbV9y
ZW1vdGVGcm9udGVuZENvbm5lY3RlZCA9IGZhbHNlOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAppbmRleCBjOTNiY2Iz
ZmNhZmUxMTU4MmQ2MDRmZGNhZDI3MmM0ZjkyNThjMDE2Li4zYzE5YjllODViMmZhY2FlZDM1ZjNh
NGQwZmViZWRmODBhNDM0MmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkluc3BlY3Rvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCwxMDYgKzMwLDgwIEBACiAKICNpbmNsdWRlICJBUElP
YmplY3QuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGb3J3YXJkaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDsK
IGNsYXNzIFdlYlBhZ2U7CiAKLWNsYXNzIFdlYkluc3BlY3RvciA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUluc3BlY3Rvcj4geworY2xhc3MgV2ViSW5z
cGVjdG9yIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxl
SW5zcGVjdG9yPiwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBwdWJsaWMgV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJJbnNwZWN0b3I+IGNyZWF0ZShXZWJQYWdlKiwgV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW5zcGVjdG9yPiBjcmVh
dGUoV2ViUGFnZSopOwogCiAgICAgV2ViUGFnZSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFn
ZTsgfQotICAgIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2luc3Bl
Y3RvclBhZ2U7IH0KKworICAgIHZvaWQgdXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgpOworCisg
ICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpIG92ZXJyaWRlOwogCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkluc3Bl
Y3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAKLSAgICB2b2lkIGRpZFJlY2VpdmVXZWJJbnNwZWN0b3JN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXIm
KTsKKworICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CisgICAgdm9pZCBkaWRDbG9zZShJ
UEM6OkNvbm5lY3Rpb24qKSB7IGNsb3NlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgeyBjbG9zZSgpOyB9
CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yIG1lc3NhZ2VzCisgICAgdm9pZCBjb25u
ZWN0aW9uRXN0YWJsaXNoZWQoKTsKKwogICAgIHZvaWQgc2hvdygpOwogICAgIHZvaWQgY2xvc2Uo
KTsKIAotICAgIHZvaWQgZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgdm9pZCBkaWRB
cHBlbmQoY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQgb3BlbkluTmV3VGFiKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nKTsKKworICAgIHZvaWQgY2FuQXR0YWNoV2luZG93KGJvb2wmIHJlc3Vs
dCk7CisKKyAgICB2b2lkIHNob3dDb25zb2xlKCk7CisgICAgdm9pZCBzaG93UmVzb3VyY2VzKCk7
CiAKLSAgICB2b2lkIGF0dGFjaGVkQm90dG9tKCk7Ci0gICAgdm9pZCBhdHRhY2hlZFJpZ2h0KCk7
Ci0gICAgdm9pZCBkZXRhY2hlZCgpOworICAgIHZvaWQgc2hvd01haW5SZXNvdXJjZUZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSWRlbnRpZmllcik7CisKKyAgICB2b2lkIHNldEF0dGFjaGVkKGJvb2wg
YXR0YWNoZWQpIHsgbV9hdHRhY2hlZCA9IGF0dGFjaGVkOyB9CiAKICAgICB2b2lkIGV2YWx1YXRl
U2NyaXB0Rm9yVGVzdChjb25zdCBTdHJpbmcmIHNjcmlwdCk7CiAKLSAgICB2b2lkIHNldEphdmFT
Y3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc3RhcnRQYWdlUHJvZmlsaW5n
KCk7CiAgICAgdm9pZCBzdG9wUGFnZVByb2ZpbGluZygpOwogCisgICAgdm9pZCBzZW5kTWVzc2Fn
ZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKTsKKwogI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVS
KQotICAgIGJvb2wgaGFzUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiBt
X3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkOyB9Ci0gICAgdm9pZCBzZW5kTWVzc2FnZVRvUmVtb3Rl
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICB2b2lkIGRpc3BhdGNoTWVzc2Fn
ZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHZvaWQgcmVt
b3RlRnJvbnRlbmRDb25uZWN0ZWQoKTsKICAgICB2b2lkIHJlbW90ZUZyb250ZW5kRGlzY29ubmVj
dGVkKCk7CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViSW5zcGVjdG9y
Q2xpZW50OwotICAgIGZyaWVuZCBjbGFzcyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIAot
ICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvcihXZWJQYWdlKiwgV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKik7CisgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yKFdlYlBhZ2UqKTsKKwor
ICAgIGJvb2wgY2FuQXR0YWNoV2luZG93KCk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBXZWJJbnNw
ZWN0b3JDbGllbnQKLSAgICBXZWJQYWdlKiBjcmVhdGVJbnNwZWN0b3JQYWdlKCk7Ci0gICAgV2Vi
UGFnZSogY3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QoKTsKLSAgICB2b2lkIGRlc3Ryb3lJbnNw
ZWN0b3JQYWdlKCk7CisgICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JQYWdlKGJvb2wgdW5kZXJUZXN0
KTsKIAotICAgIC8vIENhbGxlZCBmcm9tIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ci0gICAg
dm9pZCBkaWRDbG9zZSgpOworICAgIHZvaWQgY2xvc2VGcm9udGVuZCgpOwogICAgIHZvaWQgYnJp
bmdUb0Zyb250KCk7Ci0gICAgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYp
OwotCi0gICAgYm9vbCBjYW5TYXZlKCkgY29uc3Q7Ci0gICAgdm9pZCBzYXZlKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBi
b29sIGZvcmNlU2F2ZUFzKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwotCi0gICAgdm9pZCBhdHRhY2hCb3R0b20oKTsKLSAg
ICB2b2lkIGF0dGFjaFJpZ2h0KCk7Ci0gICAgdm9pZCBkZXRhY2goKTsKIAotICAgIHZvaWQgc2V0
QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpOwotICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5k
b3dXaWR0aCh1bnNpZ25lZCk7Ci0gICAgdm9pZCBzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkKTsK
LQotICAgIC8vIEltcGxlbWVudGVkIGluIHBsYXRmb3JtIFdlYkluc3BlY3RvciBmaWxlCi0gICAg
U3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdDsKLQotICAgIHZvaWQgc2hvd0NvbnNv
bGUoKTsKLQotICAgIHZvaWQgc2hvd1Jlc291cmNlcygpOwotCi0gICAgdm9pZCBzaG93TWFpblJl
c291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCk7Ci0KLSAgICB2b2lkIHN0YXJ0SmF2YVNj
cmlwdERlYnVnZ2luZygpOwotICAgIHZvaWQgc3RvcEphdmFTY3JpcHREZWJ1Z2dpbmcoKTsKLQot
ICAgIHZvaWQgc3RhcnRKYXZhU2NyaXB0UHJvZmlsaW5nKCk7Ci0gICAgdm9pZCBzdG9wSmF2YVNj
cmlwdFByb2ZpbGluZygpOworICAgIFdlYlBhZ2UqIG1fcGFnZTsKIAotICAgIHZvaWQgdXBkYXRl
RG9ja2luZ0F2YWlsYWJpbGl0eSgpOworICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fZnJv
bnRlbmRDb25uZWN0aW9uOwogCi0gICAgV2ViUGFnZSogbV9wYWdlOwotICAgIFdlYlBhZ2UqIG1f
aW5zcGVjdG9yUGFnZTsKLSAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9mcm9udGVu
ZENsaWVudDsKLSAgICBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRl
bmRDaGFubmVsOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG11dGFibGUgU3RyaW5nIG1fbG9j
YWxpemVkU3RyaW5nc1VSTDsKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNMb2NhbGl6ZWRTdHJpbmdz
VVJMOwotI2VuZGlmCi0jaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0gICAgYm9vbCBtX3Jl
bW90ZUZyb250ZW5kQ29ubmVjdGVkOwotI2VuZGlmCisgICAgYm9vbCBtX2F0dGFjaGVkOworICAg
IGJvb2wgbV9wcmV2aW91c0NhbkF0dGFjaDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
ci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IubWVzc2FnZXMuaW4KaW5kZXggYzIzYjg2ZjIxNDI1Y2I0NjJlNDkyODM5ZmY4MDE5NWUz
ODY3Zjc4Ny4uZmMwNzNjYWU4ZGRkMzVmYWEzMjMzYjdkZTk1NTI5ZjdlMzk2NDI4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yLm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yMiwyNiArMjIsMjUgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLW1lc3Nh
Z2VzIC0+IFdlYkluc3BlY3RvciBMZWdhY3lSZWNlaXZlciB7CittZXNzYWdlcyAtPiBXZWJJbnNw
ZWN0b3IgewogICAgIFNob3coKQogICAgIENsb3NlKCkKLSAgICBBdHRhY2hlZEJvdHRvbSgpCi0g
ICAgQXR0YWNoZWRSaWdodCgpCi0gICAgRGV0YWNoZWQoKQotICAgIERpZFNhdmUoU3RyaW5nIHVy
bCkKLSAgICBEaWRBcHBlbmQoU3RyaW5nIHVybCkKKworICAgIFNldEF0dGFjaGVkKGJvb2wgYXR0
YWNoZWQpCisKICAgICBTaG93Q29uc29sZSgpCiAgICAgU2hvd1Jlc291cmNlcygpCi0gICAgU2hv
d01haW5SZXNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgU3RhcnRKYXZhU2Ny
aXB0RGVidWdnaW5nKCkKLSAgICBTdG9wSmF2YVNjcmlwdERlYnVnZ2luZygpCi0gICAgU3RhcnRK
YXZhU2NyaXB0UHJvZmlsaW5nKCkKLSAgICBTdG9wSmF2YVNjcmlwdFByb2ZpbGluZygpCisKKyAg
ICBTaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJZGVudGlmaWVyKQorCisg
ICAgT3BlbkluTmV3VGFiKFN0cmluZyB1cmwpCisKICAgICBTdGFydFBhZ2VQcm9maWxpbmcoKQog
ICAgIFN0b3BQYWdlUHJvZmlsaW5nKCkKIAorICAgIFNlbmRNZXNzYWdlVG9CYWNrZW5kKFN0cmlu
ZyBtZXNzYWdlKQorCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0gICAgRGlzcGF0Y2hN
ZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKFN0cmluZyBtZXNzYWdlKQogICAgIFJlbW90ZUZyb250
ZW5kQ29ubmVjdGVkKCkKICAgICBSZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JVSS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
VUkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmEyOTdhZDNkNTgwMTUyZDA2MzA1MzljMDA2MTMzMGQ0NTFiY2Y2
NjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yVUkuY3BwCkBAIC0wLDAgKzEsMjg1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCisKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQorCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRWYWx1
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ET01X
cmFwcGVyV29ybGQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NjcmlwdEdsb2JhbE9iamVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Ny
aXB0U3RhdGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitQYXNzUmVmUHRyPFdlYkluc3BlY3RvclVJPiBXZWJJbnNwZWN0b3JVSTo6Y3JlYXRl
KFdlYlBhZ2UqIHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJJbnNwZWN0b3JV
SShwYWdlKSk7Cit9CisKK1dlYkluc3BlY3RvclVJOjpXZWJJbnNwZWN0b3JVSShXZWJQYWdlKiBw
YWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVy
KDApCisgICAgLCBtX3VuZGVyVGVzdChmYWxzZSkKKyAgICAsIG1fZnJvbnRlbmRMb2FkZWQoZmFs
c2UpCisgICAgLCBtX2RvY2tTaWRlKERvY2tTaWRlOjpVbmRvY2tlZCkKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICAsIG1faGFzTG9jYWxpemVkU3RyaW5nc1VSTChmYWxzZSkKKyNlbmRpZgorewor
fQorCit2b2lkIFdlYkluc3BlY3RvclVJOjplc3RhYmxpc2hDb25uZWN0aW9uKElQQzo6QXR0YWNo
bWVudCBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0
aW9uSWRlbnRpZmllci5wb3J0KCkpOworI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisg
ICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29k
ZWRDb25uZWN0aW9uSWRlbnRpZmllci5yZWxlYXNlRmlsZURlc2NyaXB0b3IoKSk7CisjZWxzZQor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuOworI2VuZGlmCisKKyAgICBpZiAoSVBD
OjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9IGluc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyOworICAgIG1fdW5kZXJUZXN0ID0gdW5kZXJUZXN0OworCisgICAgbV9w
YWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQodGhpcyk7CisKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0
aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCB0aGlzLCBS
dW5Mb29wOjptYWluKCkpOworICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPm9wZW4oKTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3JVSTo6d2luZG93T2JqZWN0Q2xlYXJlZCgpCit7CisgICAgaWYgKG1f
ZnJvbnRlbmRIb3N0KQorICAgICAgICBtX2Zyb250ZW5kSG9zdC0+ZGlzY29ubmVjdENsaWVudCgp
OworCisgICAgbV9mcm9udGVuZEhvc3QgPSBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmNyZWF0ZSh0
aGlzLCBtX3BhZ2UtPmNvcmVQYWdlKCkpOworICAgIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KGV4
ZWNTdGF0ZUZyb21QYWdlKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBtX3BhZ2UtPmNvcmVQYWdl
KCkpLCBBU0NJSUxpdGVyYWwoIkluc3BlY3RvckZyb250ZW5kSG9zdCIpLCBtX2Zyb250ZW5kSG9z
dC5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmZyb250ZW5kTG9hZGVkKCkKK3sK
KyAgICBtX2Zyb250ZW5kTG9hZGVkID0gdHJ1ZTsKKworICAgIGV2YWx1YXRlUGVuZGluZ0V4cHJl
c3Npb25zKCk7CisgICAgYnJpbmdUb0Zyb250KCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6
Om1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KQoreworICAgIEZsb2F0UmVjdCBmcmFtZVJl
Y3QgPSBtX3BhZ2UtPmNvcmVQYWdlKCktPmNocm9tZSgpLndpbmRvd1JlY3QoKTsKKyAgICBmcmFt
ZVJlY3QubW92ZSh4LCB5KTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmNocm9tZSgpLnNldFdp
bmRvd1JlY3QoZnJhbWVSZWN0KTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6YnJpbmdUb0Zy
b250KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250KCksIG1f
aW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpjbG9z
ZVdpbmRvdygpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCksIG1f
aW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworCisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbi0+aW52
YWxpZGF0ZSgpOworICAgIG1fYmFja2VuZENvbm5lY3Rpb24gPSBudWxscHRyOworCisgICAgbV9p
bnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9IDA7CisgICAgbV91bmRlclRlc3QgPSBmYWxzZTsKK30K
Kwordm9pZCBXZWJJbnNwZWN0b3JVSTo6cmVxdWVzdFNldERvY2tTaWRlKERvY2tTaWRlIHNpZGUp
Cit7CisgICAgc3dpdGNoIChzaWRlKSB7CisgICAgY2FzZSBEb2NrU2lkZTo6VW5kb2NrZWQ6Cisg
ICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEZXRhY2goKSwgbV9pbnNwZWN0ZWRQYWdl
SWRlbnRpZmllcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6UmlnaHQ6
CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hSaWdodCgpLCBtX2luc3Bl
Y3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERvY2tTaWRl
OjpCb3R0b206CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hCb3R0b20o
KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30K
Kwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2V0RG9ja1NpZGUoRG9ja1NpZGUgc2lkZSkKK3sKKyAg
ICBjb25zdCBjaGFyKiBzaWRlU3RyaW5nOworCisgICAgc3dpdGNoIChzaWRlKSB7CisgICAgY2Fz
ZSBEb2NrU2lkZTo6VW5kb2NrZWQ6CisgICAgICAgIHNpZGVTdHJpbmcgPSAidW5kb2NrZWQiOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgRG9ja1NpZGU6OlJpZ2h0OgorICAgICAgICBzaWRl
U3RyaW5nID0gInJpZ2h0IjsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERvY2tTaWRlOjpC
b3R0b206CisgICAgICAgIHNpZGVTdHJpbmcgPSAiYm90dG9tIjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgbV9kb2NrU2lkZSA9IHNpZGU7CisKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxv
YWQoQVNDSUlMaXRlcmFsKCJzZXREb2NrU2lkZSIpLCBBU0NJSUxpdGVyYWwoc2lkZVN0cmluZykp
OworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCh1
bnNpZ25lZCBoZWlnaHQpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0dGFj
aGVkV2luZG93SGVpZ2h0KGhlaWdodCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQor
Cit2b2lkIFdlYkluc3BlY3RvclVJOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVk
IHdpZHRoKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRv
d1dpZHRoKHdpZHRoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yVUk6OnNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQoreworICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRUb29sYmFySGVpZ2h0KGhlaWdodCksIG1faW5zcGVj
dGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpvcGVuSW5OZXdU
YWIoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpPcGVuSW5OZXdUYWIodXJsKSwgMCk7Cit9CisKK3ZvaWQg
V2ViSW5zcGVjdG9yVUk6OnNhdmUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBX
VEY6OlN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFz
KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTYXZlKGZpbGVuYW1lLCBjb250ZW50
LCBiYXNlNjRFbmNvZGVkLCBmb3JjZVNhdmVBcyksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIp
OworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjphcHBlbmQoY29uc3QgV1RGOjpTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudCkKK3sKKyAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JQcm94eTo6QXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KSwgbV9pbnNwZWN0ZWRQYWdlSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6Omluc3BlY3RlZFVSTENoYW5nZWQo
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6
Okluc3BlY3RlZFVSTENoYW5nZWQodXJsU3RyaW5nKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNob3dDb25zb2xlKCkKK3sKKyAgICBldmFs
dWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzaG93Q29uc29sZSIpKTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JVSTo6c2hvd1Jlc291cmNlcygpCit7CisgICAgZXZhbHVhdGVDb21tYW5k
T25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2hvd1Jlc291cmNlcyIpKTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JVSTo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFN0cmluZyBmcmFtZUlkZW50aWZpZXIp
Cit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2hvd01haW5SZXNv
dXJjZUZvckZyYW1lIiksIGZyYW1lSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9y
VUk6OnN0YXJ0UGFnZVByb2ZpbGluZygpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFT
Q0lJTGl0ZXJhbCgic2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkIiksIHRydWUpOworfQorCit2
b2lkIFdlYkluc3BlY3RvclVJOjpzdG9wUGFnZVByb2ZpbGluZygpCit7CisgICAgZXZhbHVhdGVD
b21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkIiks
IGZhbHNlKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZGlkU2F2ZShjb25zdCBTdHJpbmcm
IHVybCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzYXZlZFVS
TCIpLCB1cmwpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpkaWRBcHBlbmQoY29uc3QgU3Ry
aW5nJiB1cmwpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgiYXBw
ZW5kZWRUb1VSTCIpLCB1cmwpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGV2YWx1YXRlRXhwcmVz
c2lvbk9uTG9hZChtYWtlU3RyaW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaE1lc3Nh
Z2VBc3luYygiLCBtZXNzYWdlLCAiKSIpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2Vu
ZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIG1fYmFja2Vu
ZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2VuZE1lc3NhZ2VUb0Jh
Y2tlbmQobWVzc2FnZSksIDApOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpldmFsdWF0ZUNv
bW1hbmRPbkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50
KQoreworICAgIGlmIChhcmd1bWVudC5pc051bGwoKSkKKyAgICAgICAgZXZhbHVhdGVFeHByZXNz
aW9uT25Mb2FkKG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoKFtcIiIs
IGNvbW1hbmQsICJcIl0pIikpOworICAgIGVsc2UKKyAgICAgICAgZXZhbHVhdGVFeHByZXNzaW9u
T25Mb2FkKG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoKFtcIiIsIGNv
bW1hbmQsICJcIiwgXCIiLCBhcmd1bWVudCwgIlwiXSkiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yVUk6OmV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGJvb2wg
YXJndW1lbnQpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbW1hbmQsIEFTQ0lJTGl0
ZXJhbChhcmd1bWVudCA/ICJ0cnVlIiA6ICJmYWxzZSIpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JVSTo6ZXZhbHVhdGVFeHByZXNzaW9uT25Mb2FkKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbikK
K3sKKyAgICBpZiAobV9mcm9udGVuZExvYWRlZCkgeworICAgICAgICBBU1NFUlQobV9xdWV1ZS5p
c0VtcHR5KCkpOworICAgICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlw
dCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX3F1ZXVlLmFwcGVuZChleHByZXNzaW9uKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JV
STo6ZXZhbHVhdGVQZW5kaW5nRXhwcmVzc2lvbnMoKQoreworICAgIEFTU0VSVChtX2Zyb250ZW5k
TG9hZGVkKTsKKworICAgIGZvciAoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uIDogbV9xdWV1ZSkK
KyAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRl
U2NyaXB0KGV4cHJlc3Npb24pOworCisgICAgbV9xdWV1ZS5jbGVhcigpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJkYmZjYmUzOGRmNzJhNTg0ZmQxMzA0ODFjZmZjMDVkMDhmYWE2M2YKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUku
aApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSW5zcGVjdG9yVUlf
aAorI2RlZmluZSBXZWJJbnNwZWN0b3JVSV9oCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvSW5zcGVjdG9yRm9yd2FyZGluZy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5k
SG9zdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xhc3Mg
V2ViSW5zcGVjdG9yVUkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpCdW5kbGVJbnNwZWN0b3JVST4sIHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgcHVi
bGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJJbnNwZWN0b3JVST4gY3JlYXRlKFdlYlBhZ2UqKTsKKworICAgIFdl
YlBhZ2UqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KKworICAgIC8vIEltcGxlbWVu
dGVkIGluIGdlbmVyYXRlZCBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAKKyAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29k
ZXImKTsKKworICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CisgICAgdm9pZCBkaWRDbG9z
ZShJUEM6OkNvbm5lY3Rpb24qKSB7IGNsb3NlV2luZG93KCk7IH0KKyAgICB2b2lkIGRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgeyBj
bG9zZVdpbmRvdygpOyB9CisKKyAgICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yVUkgbWVzc2Fn
ZXMKKyAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRl
clRlc3QpOworCisgICAgdm9pZCBzaG93Q29uc29sZSgpOworICAgIHZvaWQgc2hvd1Jlc291cmNl
cygpOworCisgICAgdm9pZCBzaG93TWFpblJlc291cmNlRm9yRnJhbWUoU3RyaW5nIGZyYW1lSWRl
bnRpZmllcik7CisKKyAgICB2b2lkIHN0YXJ0UGFnZVByb2ZpbGluZygpOworICAgIHZvaWQgc3Rv
cFBhZ2VQcm9maWxpbmcoKTsKKworICAgIHZvaWQgYXR0YWNoZWRCb3R0b20oKSB7IHNldERvY2tT
aWRlKERvY2tTaWRlOjpCb3R0b20pOyB9CisgICAgdm9pZCBhdHRhY2hlZFJpZ2h0KCkgeyBzZXRE
b2NrU2lkZShEb2NrU2lkZTo6UmlnaHQpOyB9CisgICAgdm9pZCBkZXRhY2hlZCgpIHsgc2V0RG9j
a1NpZGUoRG9ja1NpZGU6OlVuZG9ja2VkKTsgfQorCisgICAgdm9pZCBzZXREb2NrU2lkZShEb2Nr
U2lkZSk7CisKKyAgICB2b2lkIGRpZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQg
ZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKTsKKworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbnN0IFN0cmluZyYpOworCisgICAgLy8gV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQKKyAgICB2b2lkIHdpbmRvd09iamVjdENsZWFyZWQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGZyb250ZW5kTG9hZGVkKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIG1vdmVXaW5kb3dCeShm
bG9hdCB4LCBmbG9hdCB5KSBvdmVycmlkZTsKKworICAgIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmdz
VVJMKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGJyaW5nVG9Gcm9udCgpIG92ZXJyaWRlOworICAg
IHZvaWQgY2xvc2VXaW5kb3coKSBvdmVycmlkZTsKKworICAgIHZvaWQgcmVxdWVzdFNldERvY2tT
aWRlKERvY2tTaWRlKSBvdmVycmlkZTsKKyAgICB2b2lkIGNoYW5nZUF0dGFjaGVkV2luZG93SGVp
Z2h0KHVuc2lnbmVkKSBvdmVycmlkZTsKKyAgICB2b2lkIGNoYW5nZUF0dGFjaGVkV2luZG93V2lk
dGgodW5zaWduZWQpIG92ZXJyaWRlOworCisgICAgdm9pZCBzZXRUb29sYmFySGVpZ2h0KHVuc2ln
bmVkKSBvdmVycmlkZTsKKworICAgIHZvaWQgb3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJs
KSBvdmVycmlkZTsKKworICAgIGJvb2wgY2FuU2F2ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2F2
ZShjb25zdCBXVEY6OlN0cmluZyYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudCwgYm9v
bCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKSBvdmVycmlkZTsKKyAgICB2b2lkIGFw
cGVuZChjb25zdCBXVEY6OlN0cmluZyYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudCkg
b3ZlcnJpZGU7CisKKyAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CisKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOworCisgICAgYm9vbCBpc1VuZGVyVGVzdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
dW5kZXJUZXN0OyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yVUkoV2Vi
UGFnZSopOworCisgICAgdm9pZCBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3RyaW5nJiBj
b21tYW5kLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50ID0gU3RyaW5nKCkpOworICAgIHZvaWQgZXZh
bHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgY29uc3QgQVNDSUlMaXRl
cmFsJiBhcmd1bWVudCkgeyBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29tbWFuZCwgU3RyaW5nKGFy
Z3VtZW50KSk7IH0KKyAgICB2b2lkIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb25zdCBTdHJpbmcm
IGNvbW1hbmQsIGJvb2wgYXJndW1lbnQpOworICAgIHZvaWQgZXZhbHVhdGVFeHByZXNzaW9uT25M
b2FkKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbik7CisgICAgdm9pZCBldmFsdWF0ZVBlbmRpbmdF
eHByZXNzaW9ucygpOworCisgICAgV2ViUGFnZSogbV9wYWdlOworCisgICAgUmVmUHRyPElQQzo6
Q29ubmVjdGlvbj4gbV9iYWNrZW5kQ29ubmVjdGlvbjsKKyAgICB1aW50NjRfdCBtX2luc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyOworCisgICAgYm9vbCBtX3VuZGVyVGVzdDsKKyAgICBib29sIG1fZnJv
bnRlbmRMb2FkZWQ7CisgICAgRGVxdWU8U3RyaW5nPiBtX3F1ZXVlOworCisgICAgUmVmUHRyPFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdD4gbV9mcm9udGVuZEhvc3Q7CisKKyAgICBEb2Nr
U2lkZSBtX2RvY2tTaWRlOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbXV0YWJsZSBTdHJp
bmcgbV9sb2NhbGl6ZWRTdHJpbmdzVVJMOworICAgIG11dGFibGUgYm9vbCBtX2hhc0xvY2FsaXpl
ZFN0cmluZ3NVUkw7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKworI2VuZGlmIC8vIFdlYkluc3BlY3RvclVJX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JV
SS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3JVSS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2ViNWZkNThhNjdhOWYwZWJmMTFkZWM2
NWI1NjQ4YjY4OTAxNDM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsNDYgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCisKK21lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJIHsKKyAgICBFc3RhYmxpc2hDb25u
ZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgaW5z
cGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0KQorCisgICAgQXR0YWNoZWRCb3R0
b20oKQorICAgIEF0dGFjaGVkUmlnaHQoKQorICAgIERldGFjaGVkKCkKKworICAgIFNob3dDb25z
b2xlKCkKKyAgICBTaG93UmVzb3VyY2VzKCkKKworICAgIFNob3dNYWluUmVzb3VyY2VGb3JGcmFt
ZShTdHJpbmcgZnJhbWVJZGVudGlmaWVyKQorCisgICAgU3RhcnRQYWdlUHJvZmlsaW5nKCkKKyAg
ICBTdG9wUGFnZVByb2ZpbGluZygpCisKKyAgICBEaWRTYXZlKFN0cmluZyB1cmwpCisgICAgRGlk
QXBwZW5kKFN0cmluZyB1cmwpCisKKyAgICBTZW5kTWVzc2FnZVRvRnJvbnRlbmQoU3RyaW5nIG1l
c3NhZ2UpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IGU2MmFjZmQ5YzQ2YTg1NTFjM2U4NDQ2MmVhMGExMmViZWMxMmJm
ODYuLmNjYzYzYjUzMTQ2NTM4ODk4NTg5ZjNhMmJlODVmNjQ0OTc5NjlhOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTgwLDYgKzgwLDgg
QEAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3IuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JDbGll
bnQuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYklu
c3BlY3RvclVJLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYk5vdGlmaWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgpAQCAt
NDYwLDYgKzQ2Miw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogI2VuZGlmCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwg
KnRoaXMpOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0
aGlzKTsKICNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5h
Z2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CkBAIC01MjAsNiAr
NTIzLDcgQEAgV2ViUGFnZTo6fldlYlBhZ2UoKQogI2VuZGlmCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYkluc3BlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CisgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CkBAIC0yODg2LDE4ICsyODkwLDI2IEBAIHZvaWQgV2Vi
UGFnZTo6ZGlkRmx1c2hMYXllclRyZWVBdFRpbWUoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0
aW1lc3RhbXApCiB9CiAjZW5kaWYKIAotICAgIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiBXZWJJ
bnNwZWN0b3IqIFdlYlBhZ2U6Omluc3BlY3RvcigpCiB7CiAgICAgaWYgKG1faXNDbG9zZWQpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1faW5z
cGVjdG9yKQotICAgICAgICBtX2luc3BlY3RvciA9IFdlYkluc3BlY3Rvcjo6Y3JlYXRlKHRoaXMs
IG1faW5zcGVjdG9yQ2xpZW50KTsKKyAgICAgICAgbV9pbnNwZWN0b3IgPSBXZWJJbnNwZWN0b3I6
OmNyZWF0ZSh0aGlzKTsKICAgICByZXR1cm4gbV9pbnNwZWN0b3IuZ2V0KCk7CiB9CisKK1dlYklu
c3BlY3RvclVJKiBXZWJQYWdlOjppbnNwZWN0b3JVSSgpCit7CisgICAgaWYgKG1faXNDbG9zZWQp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghbV9pbnNwZWN0b3JVSSkKKyAgICAg
ICAgbV9pbnNwZWN0b3JVSSA9IFdlYkluc3BlY3RvclVJOjpjcmVhdGUodGhpcyk7CisgICAgcmV0
dXJuIG1faW5zcGVjdG9yVUkuZ2V0KCk7Cit9CiAjZW5kaWYKLSAgICAKKwogI2lmIFBMQVRGT1JN
KElPUykKIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIqIFdlYlBhZ2U6OnZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIoKQogewpAQCAtMzQ3OSw3ICszNDkxLDEzIEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VEZWNv
ZGVyCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
KSB7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IqIGluc3BlY3RvciA9IHRoaXMtPmluc3BlY3Rv
cigpKQotICAgICAgICAgICAgaW5zcGVjdG9yLT5kaWRSZWNlaXZlV2ViSW5zcGVjdG9yTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgICAgIGluc3BlY3Rvci0+ZGlkUmVjZWl2
ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgaWYgKFdlYkluc3Bl
Y3RvclVJKiBpbnNwZWN0b3JVSSA9IHRoaXMtPmluc3BlY3RvclVJKCkpCisgICAgICAgICAgICBp
bnNwZWN0b3JVSS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IGJhYmE1MDZlYzIwZjQyMzU2MzM5YWVlYTYyYTg5NTc0Njg2
NWJjODguLmI3ZDQ0OGM5NjgwMGFmOWZkYmQ3YTQwMjRlYmU0ODM4MzYyNjMzM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTUzLDYgKzE1Myw3
IEBAIGNsYXNzIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOwogY2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBX
ZWJJbnNwZWN0b3I7CiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7CitjbGFzcyBXZWJJbnNwZWN0
b3JVSTsKIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xh
c3MgV2ViTm90aWZpY2F0aW9uQ2xpZW50OwpAQCAtMjI2LDggKzIyNywxMCBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFdlYkluc3BlY3RvciogaW5zcGVjdG9yKCk7Cisg
ICAgV2ViSW5zcGVjdG9yVUkqIGluc3BlY3RvclVJKCk7CisgICAgYm9vbCBpc0luc3BlY3RvclBh
Z2UoKSB7IHJldHVybiAhIW1faW5zcGVjdG9yVUk7IH0KICNlbmRpZgotICAgIAorCiAjaWYgUExB
VEZPUk0oSU9TKQogICAgIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIqIHZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIoKTsKICNlbmRpZgpAQCAtMTE1OSw2ICsxMTYyLDcgQEAgcHJpdmF0ZToKIAogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAgICAgUmVmUHRyPFdlYkluc3BlY3Rvcj4gbV9pbnNwZWN0b3I7
CisgICAgUmVmUHRyPFdlYkluc3BlY3RvclVJPiBtX2luc3BlY3RvclVJOwogI2VuZGlmCiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiBtX3Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3RvclVJRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViSW5zcGVjdG9yVUlFZmwuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
NTdjN2I2MTA1M2EyN2VmNDBiYjNkNTgyNDU1MGM2ZjU1MDEzNTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3RvclVJRWZs
LmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
Ykluc3BlY3RvclVJLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSA8V2Vi
Q29yZS9FZmxJbnNwZWN0b3JVdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgV2ViSW5zcGVjdG9yVUk6OmNhblNh
dmUoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIFdlYkluc3BlY3RvclVJOjps
b2NhbGl6ZWRTdHJpbmdzVVJMKCkKK3sKKyAgICByZXR1cm4gImZpbGU6Ly8iICsgV2ViQ29yZTo6
aW5zcGVjdG9yUmVzb3VyY2VQYXRoKCkgKyAiL2xvY2FsaXplZFN0cmluZ3MuanMiOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3Rv
clVJR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5z
cGVjdG9yVUlHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2NDY3ODU1ZThlNzQ5ODJjMTIwNzNhNjNiNThk
ZTc4MjZiMGNlZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNwcApAQCAtMCwwICsxLDUwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYkluc3BlY3RvclVJLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBXZWJJbnNw
ZWN0b3JVSTo6Y2FuU2F2ZSgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitTdHJpbmcgV2Vi
SW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwoKQoreworICAgIHJldHVybiBTdHJpbmco
InJlc291cmNlOi8vL29yZy93ZWJraXRndGsvaW5zcGVjdG9yL0xvY2FsaXphdGlvbnMvZW4ubHBy
b2ovbG9jYWxpemVkU3RyaW5ncy5qcyIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3RvclVJTWFjLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYmU3NmE2NzE5ODg1MGNmNDRmNDc2MzRjYWZlYTFlMDhjODUzMjE3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJJbnNwZWN0b3JV
SU1hYy5tbQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JVSS5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RP
UikKKworI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfU1RBR0VE
X0ZSQU1FV09SSyhXZWJJbnNwZWN0b3JVSSwgUHJpdmF0ZUZyYW1ld29ya3MsIEEpCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitib29sIFdlYkluc3BlY3RvclVJOjpjYW5TYXZlKCkKK3sKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworU3RyaW5nIFdlYkluc3BlY3RvclVJOjpsb2NhbGl6ZWRTdHJpbmdz
VVJMKCkKK3sKKyAgICBpZiAoIW1faGFzTG9jYWxpemVkU3RyaW5nc1VSTCkgeworICAgICAgICAv
LyBDYWxsIHRoZSBzb2Z0IGxpbmsgZnJhbWV3b3JrIGZ1bmN0aW9uIHRvIGRsb3BlbiBpdCwgdGhl
biBbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6XSB3aWxsIHdvcmsuCisgICAgICAgIFdl
Ykluc3BlY3RvclVJTGlicmFyeSgpOworCisgICAgICAgIE5TU3RyaW5nICpwYXRoID0gW1tOU0J1
bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJJbnNwZWN0b3JVSSJdIHBh
dGhGb3JSZXNvdXJjZTpAImxvY2FsaXplZFN0cmluZ3MiIG9mVHlwZTpAImpzIl07CisgICAgICAg
IGlmIChbcGF0aCBsZW5ndGhdKQorICAgICAgICAgICAgbV9sb2NhbGl6ZWRTdHJpbmdzVVJMID0g
W1tOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aF0gYWJzb2x1dGVTdHJpbmddOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtX2xvY2FsaXplZFN0cmluZ3NVUkwgPSBTdHJpbmcoKTsKKyAgICAg
ICAgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMID0gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4g
bV9sb2NhbGl6ZWRTdHJpbmdzVVJMOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IDJjYmZlYWI0YTU4NDQwZmU2ODRhZTZj
Yzk2MGI0YTMxYjdiZmRlOTcuLjUyZWJmYjBiOWUyNWU0NGY3ODRlNzlkYjA2YzZhMTAyY2U0YTcy
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCkBAIC0yMDUsNyArMjA1LDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzCiB2
b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzTmFtZShjb25zdCBDaGlsZFByb2Nlc3NJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAjaWYgIVBMQVRGT1JNKElP
UykKLSAgICBOU1N0cmluZyAqYXBwbGljYXRpb25OYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6V0VCX1VJX1NUUklORygiJUAgV2ViIENvbnRlbnQiLCAiVmlzaWJsZSBuYW1lIG9mIHRo
ZSB3ZWIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1lLiIpLCAo
TlNTdHJpbmcgKilwYXJhbWV0ZXJzLnVpUHJvY2Vzc05hbWVdOworICAgIE5TU3RyaW5nICphcHBs
aWNhdGlvbk5hbWU7CisgICAgaWYgKHBhcmFtZXRlcnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEu
Z2V0KEFTQ0lJTGl0ZXJhbCgiaW5zcGVjdG9yLXByb2Nlc3MiKSkgPT0gIjEiKQorICAgICAgICBh
cHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5H
KCIlQCBXZWIgSW5zcGVjdG9yIiwgIlZpc2libGUgbmFtZSBvZiBXZWIgSW5zcGVjdG9yJ3Mgd2Vi
IHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4iKSwgKE5TU3Ry
aW5nICopcGFyYW1ldGVycy51aVByb2Nlc3NOYW1lXTsKKyAgICBlbHNlCisgICAgICAgIGFwcGxp
Y2F0aW9uTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9TVFJJTkcoIiVA
IFdlYiBDb250ZW50IiwgIlZpc2libGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRoZSBhcmd1
bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4iKSwgKE5TU3RyaW5nICopcGFyYW1ldGVycy51
aVByb2Nlc3NOYW1lXTsKICAgICBXS1NldFZpc2libGVBcHBsaWNhdGlvbk5hbWUoKENGU3RyaW5n
UmVmKWFwcGxpY2F0aW9uTmFtZSk7CiAjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238503</attachid>
            <date>2014-09-22 16:27:32 -0700</date>
            <delta_ts>2014-09-24 09:59:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135120-20140922162729.patch</filename>
            <type>text/plain</type>
            <size>160417</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzgwNThkMDcyNGJlYmM4
ZDU1NDZmOGUwMTcxZmMzNjZjMTZlNTkwMC4uNDNhYzY5NDIxZWEzMzVjMTU3YmM1Njc2ZTYwMWMw
MGM3YzFiZmUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE0LTA5LTIxICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHRoZSBXZWIg
SW5zcGVjdG9yIHVzZSBhIHNlcGFyYXRlIHdlYiBwcm9jZXNzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxMjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFi
bGUuc3RyaW5nczogVXBkYXRlZC4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRT
dGF0ZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogcGFnZS9D
aHJvbWUuaDoKKyAgICAgICAgRXhwb3J0ZWQgYSBmZXcgZnVuY3Rpb25zIGFuZCBwcml2YXRlIGhl
YWRlcnMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckZy
b250ZW5kQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omhh
c0luc3BlY3RvckZyb250ZW5kQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OnNob3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
Lmg6CisgICAgICAgIE1ha2UgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgYSBwb2ludGVyIGluc3Rl
YWQgb2YgYSBzdGQ6OnVuaXF1ZV9wdHIuCisgICAgICAgIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRv
IGltcGxlbWVudCBJbnNwZWN0b3JGcm9udGVuZENsaWVudCBhcworICAgICAgICBwYXJ0IG9mIGFu
IGV4aXN0aW5nIG9iamVjdCB0aGF0IGlzIGV4dGVybmFsbHkgb3duZWQuCisKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9wZW5E
dW1teUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2xv
c2VEdW1teUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5o
OgorICAgICAgICBDaGFuZ2UgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teSBmcm9tIGJlaW5n
IG1vdmVkIHRvIG93bmVkLgorCiAyMDE0LTA5LTIyICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxl
LmNvbT4KIAogICAgICAgICBCYWQgY2FzdCBpbiBpc1ZhbGlkQ29sdW1uU3Bhbm5lci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nCmluZGV4IDI5ZTEzOGRjYjg2NzljZWY0N2FhZDI0Mzg2MTczYmZlOTg0
MjEyYjkuLmY5ZDc1OWIyZGI4YWMyMjIxNWI3NTQ0NGM0NmE5NmUyNGQ4YzYzMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE0LTA5LTIxICBUaW1vdGh5IEhh
dGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHRoZSBXZWIgSW5zcGVj
dG9yIHVzZSBhIHNlcGFyYXRlIHdlYiBwcm9jZXNzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxMjAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIExvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxp
emVkU3RyaW5ncy5qczogVXBkYXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9N
YWluLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuY29udGVudExvYWRlZCk6CisgICAgICAgIE1vdmUgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmxvYWRlZCB0byBsYXRlciBpbiB0aGUgbG9hZC4KKyAgICAgICAgQ2FsbGluZyBpdCBlYXJseSBq
dXN0IHNob3dzIHRoZSB3aW5kb3cgYmVmb3JlIHdlIGhhdmUKKyAgICAgICAgYSB1c2VyIGludGVy
ZmFjZSB0byBzaG93LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1Rlc3QuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IubG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5jb250
ZW50TG9hZGVkKToKKyAgICAgICAgTWF0Y2ggdGhlIGNoYW5nZXMgaW4gTWFpbi5qcy4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanM6Cisg
ICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTCk6IENoYW5nZSBjb21tZW50Lgor
ICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRUb1VSTCk6IENoYW5nZSBjb21t
ZW50LgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2gpOiBBZGQgYW4gYXNz
ZXJ0IGFuZCBlYXJseQorICAgICAgICByZXR1cm4gdG8gYmUgc2FmZSBmcm9tIHVua25vd24gY29t
bWFuZHMuCisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKTogRGVs
ZXRlIF9wZW5kaW5nQ29tbWFuZHMsCisgICAgICAgIG5vIG5lZWQgdG8ga2VlcCBhbiBlbXB0eSBh
cnJheSBhcm91bmQgYSBvbmUgdGltZSB1c2UuCisKIDIwMTQtMDktMDYgIFRpbW90aHkgSGF0Y2hl
ciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBhIDxjaXJjbGU+IGluc3RlYWQg
b2YgYSA8cGF0aD4gaW4gRG93bmxvYWRBcnJvdy5zdmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggNDcy
NzJlMmZlM2Q3ODFjYjg2MzdjNWM5NzY3YTQ3NWI4MjBlYmU5My4uNTFmOTM5NzY4YWIzMWJhMTc0
NzMyYTFhOTZiNzJlNTU0ZDQzZjhjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDE0LTA5LTIxICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAg
ICAgICBNYWtlIHRoZSBXZWIgSW5zcGVjdG9yIHVzZSBhIHNlcGFyYXRlIHdlYiBwcm9jZXNzLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxMjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgUmVtb3ZlZCBtX2Zyb250ZW5k
Q2xpZW50IGluaXRpYWxpemF0aW9uIHNpbmNlIGl0IGlzCisgICAgICAgIG5vdyBhIHN0ZDo6dW5p
cXVlX3B0ciB0aGF0IGRlZmF1bHRzIHRvIG51bGxwdHIuCisKIDIwMTQtMDktMTcgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxNzM2OTUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggM2U0MGQyYTYzNmQ0Mzg3ZmNkODE0YTAz
ZGRjNGM5MTkxODk1ZGM4NS4uMjcxMmNhY2FjNDgyNWUzNGYwOGMzOTVmMjIxOTg3NmYxN2E1NmQ3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTA5LTIxICBUaW1vdGh5
IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHRoZSBXZWIgSW5z
cGVjdG9yIHVzZSBhIHNlcGFyYXRlIHdlYiBwcm9jZXNzLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxMjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KToKKyAg
ICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAg
ICAgKFdlYkluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5kKToKKyAgICAgICAgT3duIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50IGluc3RlYWQgb2YgbW92aW5nIGl0LgorCiAyMDE0LTA5
LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgR2VuZXJhdGUg
RWxlbWVudCBjYXN0aW5nIGhlbHBlciBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA1MWY3
YzIxYTQzNzkwZDVhNDBlYzA3NDgwOWNmN2JhMDI3MmFmOWI2Li43Nzc2YjcwNGQzZGUxY2Q3Mjkx
ZTI1ZGFjZDgwMzhlOGI1NGRiNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTQtMDktMjEgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAg
ICAgIE1ha2UgdGhlIFdlYiBJbnNwZWN0b3IgdXNlIGEgc2VwYXJhdGUgd2ViIHByb2Nlc3MuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTEyMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNs
aWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6ZnJvbnRl
bmRDbGllbnQpOgorICAgICAgICBPd24gV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgaW5zdGVh
ZCBvZiBtb3ZpbmcgaXQuCisKIDIwMTQtMDktMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBHZW5lcmF0ZSBFbGVtZW50IGNhc3RpbmcgaGVscGVyIGZ1bmN0aW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDc4MWNiZDUyMzU5MjRkMzRlODMzZWY3N2UyNmQ5NTFkODEyYjE4Yjgu
LjYxYzk3ZTA0NjUyZjI0NDY2NjFiOWU1ODQzNDQ1Y2RhMjcyYTIxZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxODAgQEAKKzIwMTQtMDktMjEgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBw
bGUuY29tPgorCisgICAgICAgIE1ha2UgdGhlIFdlYiBJbnNwZWN0b3IgdXNlIGEgc2VwYXJhdGUg
d2ViIHByb2Nlc3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNTEyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToK
KyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFr
ZToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
IEFkZGVkIG5ldyBXZWJJbnNwZWN0b3JVSSBmaWxlcyBhbmQgcmVtb3ZlZCBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudC5jcHAuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6IEFkZGVk
IEJ1bmRsZUluc3BlY3RvclVJLgorCisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRp
ZXMvbWFjL0xlZ2FjeVByb2Nlc3MvQ2hpbGRQcm9jZXNzRW50cnlQb2ludC5tbToKKyAgICAgICAg
KFdlYktpdDo6Q2hpbGRQcm9jZXNzTWFpbkRlbGVnYXRlOjpnZXRFeHRyYUluaXRpYWxpemF0aW9u
RGF0YSk6CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZp
Y2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VJ
bml0aWFsaXplckRlbGVnYXRlOjpnZXRFeHRyYUluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciAiaW5zcGVjdG9yLXByb2Nlc3MiIGRhdGEsIGEgYm9vbGVhbiB0aGF0
IGlzIHVzZWQgYnkKKyAgICAgICAgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3NOYW1lLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFdL
SW5zcGVjdG9ySXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KToKKyAgICAgICAgKFdLSW5zcGVjdG9yVG9n
Z2xlSmF2YVNjcmlwdERlYnVnZ2luZyk6CisgICAgICAgIChXS0luc3BlY3RvcklzUHJvZmlsaW5n
SmF2YVNjcmlwdCk6CisgICAgICAgIChXS0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHRQcm9maWxp
bmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5oOgorICAgICAgICBT
dHViIG91dCBmdW5jdGlvbnMgd2UgZG9uJ3Qgc3VwcG9ydCBidXQgbmVlZCB0byBrZWVwIGZvciBu
aWdodGx5IGNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjpjcmVh
dGVJbnNwZWN0b3JQYWdlR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6V2ViSW5zcGVjdG9yUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpjb25u
ZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25zb2xlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNob3dSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkZXRhY2gpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZWFnZXJseUNyZWF0ZUluc3BlY3RvclBh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9y
UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpvcGVuKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JQcm94eTo6aXNDb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6Y2FuQXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94
eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNy
ZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9y
UHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1DcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtQXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkluc3BlY3Rv
clByb3h5TWFjLm1tOgorICAgICAgICAoLVtXS1dlYkluc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIg
Y2xvc2VdKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3Jl
YXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybURpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBs
YXRmb3JtSGlkZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bVNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBl
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2gp
OgorICAgICAgICBDaGFuZ2VkIGhvdyB0aGUgSW5zcGVjdG9yIHBhZ2UgaXMgY3JlYXRlZCBieSBt
YWtpbmcgaXQgaW4gYSBuZXcgV2ViQ29udGV4dCBmb3IKKyAgICAgICAgdGhlIEluc3BlY3Rvci4g
VGhpcyByZW1vdmVzIHVzIGZyb20gdGhlIG1haW4gcHJvY2VzcyBwb29sIGFuZCBndWFyYW50ZWVz
IG5vIHByb2Nlc3MKKyAgICAgICAgc2hhcmluZyBmb3Igb3VyIHVzZXIgaW50ZXJmYWNlLiBBbHNv
IHNlbmQgbmV3IFdlYkluc3BlY3RvclVJIG1lc3NhZ2VzIHRvIHRoZSBJbnNwZWN0b3IKKyAgICAg
ICAgcGFnZSBhbmQgbm90IHRoZSBpbnNwZWN0ZWQgcGFnZSB3aGVuIGFwcHJvcHJpYXRlLgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6IEFkZCAiaW5zcGVjdG9yLXByb2Nl
c3MiIHRvIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhCisgICAgICAgIGlmIHRoZSBjb250ZXh0IGlz
IHRoZSBJbnNwZWN0b3IgY29udGV4dC4gVGhpcyBpcyB1c2VkIGJ5IFdlYlByb2Nlc3M6OmluaXRp
YWxpemVQcm9jZXNzTmFtZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yQ2xp
ZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JDbGllbnQ6OmJyaW5nRnJvbnRlbmRUb0Zyb250KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICBSZW1vdmUg
dGhlIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBjbGFzcyBmcm9tIFdlYkluc3BlY3RvckNsaWVu
dCBhbmQgY2xlYW4gdXAgYSBsaXR0bGUuCisgICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCBpbXBsZW1lbnRhdGlvbiBtb3ZlZCB0byBXZWJJbnNwZWN0b3IuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcDogUmVt
b3ZlZC4gU3VwZXJzZWRlZCBieSBXZWJJbnNwZWN0b3JVSS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9y
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yOjpvcGVuSW5OZXdUYWIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3I6OnNob3dDb25zb2xlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
OjpzaG93UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzaG93TWFp
blJlc291cmNlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnN0YXJ0
UGFnZVByb2ZpbGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6c3RvcFBhZ2VQ
cm9maWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNhbkF0dGFjaFdpbmRv
dyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6dXBkYXRlRG9ja2luZ0F2YWlsYWJp
bGl0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb0JhY2tl
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9Gcm9udGVu
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmRDb25uZWN0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kRGlzY29u
bmVjdGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3I6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3Rvcjo6c2V0QXR0YWNoZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW46CisgICAgICAgIFN0b3AgdGFraW5nIGFuIG9w
dGlvbmFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBhbmQgaW5oZXJpdCBpdCBpbnN0ZWFkLiBD
cmVhdGUgYSBjb25uZWN0aW9uIHRoYXQKKyAgICAgICAgY2FuIGJlIHBhc3NlZCB0byB0aGUgb3Ro
ZXIgd2ViIHByb2Nlc3MgZm9yIFdlYkluc3BlY3RvclVJIHRvIHVzZS4gU3RvcCByZWZlcmVuY2lu
ZyBJbnNwZWN0b3IncyBwYWdlCisgICAgICAgIGRpcmVjdGx5LCBzaW5jZSBpdCBpcyBpbiBhbm90
aGVyIHByb2Nlc3Mgbm93LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3RvclVJLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6V2ViSW5zcGVjdG9yVUkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjp3aW5kb3dPYmplY3RDbGVhcmVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmZyb250ZW5kTG9hZGVkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6Om1vdmVXaW5kb3dCeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclVJOjpicmluZ1RvRnJvbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JVSTo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6
cmVxdWVzdFNldERvY2tTaWRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OnNl
dERvY2tTaWRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmNoYW5nZUF0dGFj
aGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmNoYW5n
ZUF0dGFjaGVkV2luZG93V2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6
c2V0VG9vbGJhckhlaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpvcGVu
SW5OZXdUYWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6c2F2ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjphcHBlbmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JVSTo6aW5zcGVjdGVkVVJMQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclVJOjpzaG93Q29uc29sZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clVJOjpzaG93UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OnNo
b3dNYWluUmVzb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJ
OjpzdGFydFBhZ2VQcm9maWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6
c3RvcFBhZ2VQcm9maWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZGlk
U2F2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpkaWRBcHBlbmQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRlQ29tbWFuZE9uTG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVQZW5kaW5nRXhwcmVz
c2lvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OnBhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yVUk6OmF0dGFjaGVkQm90dG9tKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yVUk6OmF0dGFjaGVkUmlnaHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JV
STo6ZGV0YWNoZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVD
b21tYW5kT25Mb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
VUkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9lZmwv
V2ViSW5zcGVjdG9yVUlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUk6OmNhblNhdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6bG9jYWxp
emVkU3RyaW5nc1VSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNw
ZWN0b3JVSUd0ay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6
Y2FuU2F2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpsb2NhbGl6ZWRTdHJp
bmdzVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYkluc3BlY3RvclVJ
TWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmNhblNhdmUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCk6
CisgICAgICAgIEltcGxlbWVudCB0aGUgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgYW5kIGhhbmRs
ZSBhIGNvbm5lY3Rpb24gdG8gdGhlIGluc3BlY3RlZCBwYWdlJ3MgV2ViSW5zcGVjdG9yLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6fldlYlBhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNwZWN0b3IpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjppbnNwZWN0b3JVSSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJl
Y2VpdmVNZXNzYWdlKToKKyAgICAgICAgU2V0dXAgYXMgYSBsaXN0ZW5lciBmb3IgV2ViSW5zcGVj
dG9yVUkgbWVzc2FnZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc0luc3BlY3RvclBhZ2UpOiBJdCBpcyBhbiBJ
bnNwZWN0b3IgcGFnZSBpZiB3ZSBoYXZlIGEgbV9pbnNwZWN0b3JVSS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUpOgorICAgICAgICBOYW1lIHRoZSBwcm9jZXNz
ICIlQCBXZWIgSW5zcGVjdG9yIiBpZiBpdCBpcyBhbiBJbnNwZWN0b3IgY29udGVudCBwcm9jZXNz
LiBQcm9jZXNzZXMgaW4gdGhhdAorICAgICAgICBjb250ZXh0IGFyZSBub3Qgc2hhcmVkIHdpdGgg
bXVsdGlwbGUgcGFnZXMuCisKIDIwMTQtMDktMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBHZW5lcmF0ZSBFbGVtZW50IGNhc3RpbmcgaGVscGVyIGZ1bmN0aW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5z
dHJpbmdzIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdz
CmluZGV4IDE0MTE2N2VjMTZlNWVmZmE1MTVmN2U1ZjdjZDRiOWMzODk4ZWVmZjkuLjc3ZGQ3MDcx
NDdjNWNmMmVjMmJkNTAxMDIyMzIwNDVkOWFhYWJiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKQEAgLTQ5LDYgKzQ5LDkgQEAKIC8q
IFZpc2libGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUgYXBw
bGljYXRpb24gbmFtZS4gKi8KICIlQCBXZWIgQ29udGVudCIgPSAiJUAgV2ViIENvbnRlbnQiOwog
CisvKiBWaXNpYmxlIG5hbWUgb2YgV2ViIEluc3BlY3RvcidzIHdlYiBwcm9jZXNzLiBUaGUgYXJn
dW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuICovCisiJUAgV2ViIEluc3BlY3RvciIgPSAi
JUAgV2ViIEluc3BlY3RvciI7CisKIC8qIE5hbWUgb2YgYXBwbGljYXRpb24ncyBzaW5nbGUgV2Vi
Q3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hhaW4gKi8KICIlQCBXZWJDcnlwdG8gTWFzdGVyIEtl
eSIgPSAiJUAgV2ViQ3J5cHRvIE1hc3RlciBLZXkiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4
IGFmMGQ1YWI1OTEwZjhmMzFiOGQzMDA5Yzg1ODQyYThjYTc1M2Y3MzEuLmViNzA5ZjI2ZTkzNzc4
MmFiZDhmMjE1OWM5NzAyMTNjOWMxNDUwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC03NzAs
NiArNzcwLDcgQEAgX19aTjdXZWJDb3JlMTdTUUxpdGVUcmFuc2FjdGlvbkQxRXYKIF9fWk43V2Vi
Q29yZTE3U3VicmVzb3VyY2VMb2FkZXI2Y3JlYXRlRVBOU181RnJhbWVFUE5TXzE0Q2FjaGVkUmVz
b3VyY2VFUktOU18xNVJlc291cmNlUmVxdWVzdEVSS05TXzIxUmVzb3VyY2VMb2FkZXJPcHRpb25z
RQogX19aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVj
dEVQTjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDbGFzc0luZm9FCiBfX1pON1dlYkNvcmUxN2VuY29k
ZUZvckZpbGVOYW1lRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTdleGVjU3RhdGVGcm9t
UGFnZUVSTlNfMTVET01XcmFwcGVyV29ybGRFUE5TXzRQYWdlRQogX19aTjdXZWJDb3JlMTdsYW5n
dWFnZURpZENoYW5nZUV2CiBfX1pON1dlYkNvcmUxN29wZW5UZW1wb3JhcnlGaWxlRVJLTjNXVEY2
U3RyaW5nRVJpCiBfX1pON1dlYkNvcmUxN3NSR0JDb2xvclNwYWNlUmVmRXYKQEAgLTc5Myw2ICs3
OTQsNyBAQCBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDhhZGRUeXBlc0VSS04zV1RG
NlZlY3RvcklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1QwogX19aTjdXZWJDb3JlMThQbGF0Zm9ybVBh
c3RlYm9hcmQ4Z2V0VHlwZXNFUk4zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1Q3Jh
c2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDhzZXRUeXBl
c0VSS04zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVF
CiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZEMxRVJLTjNXVEY2U3RyaW5nRQorX19a
TjdXZWJDb3JlMThTY3JpcHRHbG9iYWxPYmplY3Qzc2V0RVBOM0pTQzlFeGVjU3RhdGVFUEtjUE5T
XzIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0RQogX19aTjdXZWJDb3JlMThTdHlsZVNoZWV0Q29udGVu
dHMxMXBhcnNlU3RyaW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMThTdHlsZVNoZWV0
Q29udGVudHNDMUVQTlNfMTVTdHlsZVJ1bGVJbXBvcnRFUktOM1dURjZTdHJpbmdFUktOU18xNkNT
U1BhcnNlckNvbnRleHRFCiBfX1pON1dlYkNvcmUxOFN0eWxlU2hlZXRDb250ZW50c0QxRXYKQEAg
LTE5MjUsNyArMTkyNywxMCBAQCBfX1pOSzdXZWJDb3JlNVJhbmdlOWVuZE9mZnNldEVSaQogX19a
Tks3V2ViQ29yZTVSYW5nZTlmaXJzdE5vZGVFdgogX19aTks3V2ViQ29yZTVSYW5nZTl0ZXh0UXVh
ZHNFUk4zV1RGNlZlY3RvcklOU185RmxvYXRRdWFkRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dF
RUViUE5TMF8yMFJhbmdlSW5GaXhlZFBvc2l0aW9uRQogX19aTks3V2ViQ29yZTVSYW5nZTl0ZXh0
UmVjdHNFUk4zV1RGNlZlY3RvcklOU183SW50UmVjdEVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93
RUVFYlBOUzBfMjBSYW5nZUluRml4ZWRQb3NpdGlvbkUKK19fWk5LN1dlYkNvcmU2Q2hyb21lMTB3
aW5kb3dSZWN0RXYKIF9fWk5LN1dlYkNvcmU2Q2hyb21lMTJjcmVhdGVXaW5kb3dFUE5TXzVGcmFt
ZUVSS05TXzE2RnJhbWVMb2FkUmVxdWVzdEVSS05TXzE0V2luZG93RmVhdHVyZXNFUktOU18xNk5h
dmlnYXRpb25BY3Rpb25FCitfX1pOSzdXZWJDb3JlNkNocm9tZTEzc2V0V2luZG93UmVjdEVSS05T
XzlGbG9hdFJlY3RFCitfX1pOSzdXZWJDb3JlNkNocm9tZTRzaG93RXYKIF9fWk5LN1dlYkNvcmU2
RWRpdG9yMTJzZWxlY3RlZFRleHRFdgogX19aTks3V2ViQ29yZTZFZGl0b3IxM2NhbkVkaXRSaWNo
bHlFdgogX19aTks3V2ViQ29yZTZFZGl0b3IxNmNvbXBvc2l0aW9uUmFuZ2VFdgpAQCAtMzEyMiwx
MyArMzEyNywxOCBAQCBfX1pON1dlYkNvcmU1Q29sb3JDMUVSS04zV1RGNlN0cmluZ0UKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogX19aTjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTI3c2hvdWxkVHJl
YXRVUkxTY2hlbWVBc0xvY2FsRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTVJbnNwZWN0
b3JDbGllbnQzMWRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2VFUE5TXzRQYWdlRVJLTjNX
VEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMThJbnNwZWN0b3JQYWdlQWdlbnQ3ZnJhbWVJZEVQTlNf
NUZyYW1lRQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTVjb25uZWN0RnJvbnRl
bmRFUE45SW5zcGVjdG9yMjRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxFCiBfX1pON1dlYkNvcmUx
OUluc3BlY3RvckNvbnRyb2xsZXIxOGRpc2Nvbm5lY3RGcm9udGVuZEVOOUluc3BlY3RvcjI1SW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbkUKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxl
cjE4c2V0UHJvZmlsZXJFbmFibGVkRWIKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxl
cjI1ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZEVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29y
ZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI2c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFTlN0M19f
MTEwdW5pcXVlX3B0cklOU18yM0luc3BlY3RvckZyb250ZW5kQ2xpZW50RU5TMV8xNGRlZmF1bHRf
ZGVsZXRlSVMzX0VFRUUKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI2c2V0SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRFUE5TXzIzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFCitfX1pO
N1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyN2Rpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVu
ZEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjRzaG93
RXYKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjVjbG9zZUV2CitfX1pON1dlYkNv
cmUyMUluc3BlY3RvckZyb250ZW5kSG9zdDE2ZGlzY29ubmVjdENsaWVudEV2CitfX1pON1dlYkNv
cmUyMUluc3BlY3RvckZyb250ZW5kSG9zdEMxRVBOU18yM0luc3BlY3RvckZyb250ZW5kQ2xpZW50
RVBOU180UGFnZUUKK19fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0RDFFdgogX19a
TjdXZWJDb3JlMjJpbnN0cnVtZW50YXRpb25Gb3JQYWdlRVBOU180UGFnZUUKIF9fWk43V2ViQ29y
ZTI0SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uMTdzX2Zyb250ZW5kQ291bnRlckUKIF9fWk43V2Vi
Q29yZTI0SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uMjZpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFn
ZUVQTlNfNFBhZ2VFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggODdkMmJiYzVkOTA4NTBiZWU0ZTM3MTlkOTM3MDg4ODBhNDAyMTk4
YS4uMGM2YTNlM2RiNjZjODFmYzBjYWU0ODk3NGQ1NDc1MTJkMjk3OGMyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTc2MSw3
ICsxNzYxLDcgQEAKIAkJNEYxNTM0RTAxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlv
clR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
RjE1MzRERjExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjRGNUZGQjExQ0JE
MkUxMDBBMTg2QkYgLyogSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjRGNUZGQTExQ0JEMkQy
MDBBMTg2QkYgLyogSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5jcHAgKi87IH07CiAJ
CTRGNkZERDY0MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRENjIxMzQxREVE
RDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5jcHAgKi87IH07Ci0JCTRGNkZERDY1MTM0
MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNkZERDYzMTM0MURFREQwMDFGOEVFMyAvKiBJ
bnNwZWN0b3JQYWdlQWdlbnQuaCAqLzsgfTsKKwkJNEY2RkRENjUxMzQxREVERDAwMUY4RUUzIC8q
IEluc3BlY3RvclBhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEY2RkRENjMxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2Vu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRG
NzA3QTk5MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY3MDdB
OTcxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5jcHAg
Ki87IH07CiAJCTRGNzA3QTlBMTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JXZWJCYWNrZW5k
RGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRGNzA3QTk4MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0
Y2hlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0RkIzOTBBRDE1RUY2MUYzMDA3QUQ1MUYgLyogR2VuZXJhdGVkSW1hZ2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZCMzkwQUMxNUVGNjFGMzAw
N0FENTFGIC8qIEdlbmVyYXRlZEltYWdlLmNwcCAqLzsgfTsKQEAgLTIzMzAsNyArMjMzMCw3IEBA
CiAJCTc5RjJGNUExMTA5MTkzOUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjJGNTlFMTA5MTkz
OUEwMDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmNwcCAqLzsgfTsKIAkJNzlGMkY1QTIxMDkx
OTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjJGNTlGMTA5MTkzOUEwMDBEODdDQiAvKiBDb21w
b3NpdGlvbkV2ZW50LmggKi87IH07CiAJCTdBMEU3NzBFMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNw
ZWN0b3JGcm9udGVuZEhvc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0EwRTc3MEIxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5k
SG9zdC5jcHAgKi87IH07Ci0JCTdBMEU3NzBGMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JG
cm9udGVuZEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBMEU3NzBDMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCAq
LzsgfTsKKwkJN0EwRTc3MEYxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9z
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EwRTc3
MEMxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBMEU3NzFFMTBDMDBEQjEw
MEEwMjc2RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTBFNzcxQzEwQzAwREIxMDBBMDI3NkUgLyog
SlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwICovOyB9OwogCQk3QTBFNzcxRjEwQzAwREIxMDBB
MDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMEU3NzFEMTBDMDBEQjEwMEEwMjc2RSAvKiBKU0lu
c3BlY3RvckZyb250ZW5kSG9zdC5oICovOyB9OwogCQk3QTFEN0ZDQjE4Rjg1RjBGMDBDMzg1QUQg
LyogbWVkaWFDb250cm9sc0xvY2FsaXplZFN0cmluZ3MuanMgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMUQ3RkM5MThGODVGMEYwMEMzODVBRCAvKiBt
ZWRpYUNvbnRyb2xzTG9jYWxpemVkU3RyaW5ncy5qcyAqLzsgfTsKQEAgLTIzNzAsNyArMjM3MCw3
IEBACiAJCTdBQjBCMUMxMTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUIwQjFC
RjEyMTFBNjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oICovOyB9OwogCQk3
QUNEODhEMzE0QzA4QkQ2MDA4NEVERDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FDRDg4RDExNEMw
OEJENjAwODRFREQyIC8qIEluc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCAqLzsgfTsKIAkJN0FD
RDg4RDQxNEMwOEJENjAwODRFREQyIC8qIEluc3BlY3RvckluZGV4ZWREQkFnZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUNEODhEMjE0QzA4QkQ2
MDA4NEVERDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCAqLzsgfTsKLQkJN0FERTcyMjYx
MENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBREU3MjI1MTBDQkJCOUIwMDZCM0IzQSAv
KiBDb250ZXh0TWVudVByb3ZpZGVyLmggKi87IH07CisJCTdBREU3MjI2MTBDQkJCOUIwMDZCM0Iz
QSAvKiBDb250ZXh0TWVudVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QURFNzIyNTEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQ
cm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdBRjlCMjAyMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIxRkMxOENGQjJERjAwQzY0
QkVGIC8qIFZUVFJlZ2lvbi5jcHAgKi87IH07CiAJCTdBRjlCMjAzMThDRkIyREYwMEM2NEJFRiAv
KiBWVFRSZWdpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBRjlCMUZEMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uaCAqLzsgfTsKIAkJN0FG
OUIyMDUxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIxRkYxOENGQjJERjAwQzY0QkVG
IC8qIFZUVFJlZ2lvbkxpc3QuY3BwICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0R2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRHbG9iYWxPYmplY3QuaAppbmRleCA4YWEwNTViZDZmOTdiYThjMjFiMDU4Yzcz
YjA4NjE5ODU0ZmNjYTRjLi45MmJmMjA2ZGY1MDk5YTY0YWZlMzFkNzU2MGY2OGZlNjk5N2QxZGYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxPYmplY3Qu
aApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBTY3JpcHRHbG9iYWxPYmplY3QgewogcHVibGljOgog
ICAgIHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG5hbWUsIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0g
ICAgc3RhdGljIGJvb2wgc2V0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc2V0
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgY2hhciogbmFtZSwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
Kik7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBib29sIGdldChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IGNoYXIqIG5hbWUsIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKaW5kZXggOGE4MmNhYjA1ZDY1ODQ4ODRjOWFiYjI3MzNk
MTRjNmZlMDJhYzg3Zi4uN2UyNmFjN2E5YmExNTMzM2UyOTYyODg0YWUwZDZlYzkxYzYzMDJiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBAIC01OCw3ICs1OCw3
IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhl
Y1N0YXRlKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkV4ZWNTdGF0ZSogbWFpbldvcmxkRXhlY1N0
YXRlKEZyYW1lKik7CiAKIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tTm9kZShET01XcmFw
cGVyV29ybGQmLCBOb2RlKik7Ci1KU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVBhZ2UoRE9N
V3JhcHBlcldvcmxkJiwgUGFnZSopOworV0VCQ09SRV9FWFBPUlQgSlNDOjpFeGVjU3RhdGUqIGV4
ZWNTdGF0ZUZyb21QYWdlKERPTVdyYXBwZXJXb3JsZCYsIFBhZ2UqKTsKIEpTQzo6RXhlY1N0YXRl
KiBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGM3Yzg3OTUyZDk2N2RkYmQwNGExN2RiMWVkYjA1
MTYzMzViMTU3MDQuLjIwNDI1MTRiOTZiNjY5NGY0ZjhlZTYyZmJiZGNlYmMzZGYzYTExZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
QEAgLTg2LDYgKzg2LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxl
cihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICAsIG1faW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKG51bGxwdHIpCiAgICAgLCBtX3BhZ2UocGFnZSkKICAgICAsIG1f
aW5zcGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKKyAgICAsIG1faW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQobnVsbHB0cikKICAgICAsIG1faXNVbmRlclRlc3QoZmFsc2UpCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCiAgICAgLCBtX2hhc1JlbW90ZUZyb250ZW5kKGZhbHNlKQpAQCAt
MTg4LDkgKzE4OSw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURl
c3Ryb3llZCgpCiAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBudWxscHRyOwogfQogCi12b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpCit2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50KiBpbnNwZWN0b3JGcm9udGVuZENsaWVudCkKIHsKLSAgICBtX2lu
c3BlY3RvckZyb250ZW5kQ2xpZW50ID0gV1RGOjptb3ZlKGluc3BlY3RvckZyb250ZW5kQ2xpZW50
KTsKKyAgICBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50ID0gaW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ7CiB9CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzTG9jYWxGcm9udGVuZCgpIGNv
bnN0CkBAIC0yMTMsNyArMjE0LDcgQEAgYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNSZW1v
dGVGcm9udGVuZCgpIGNvbnN0CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2luc3BlY3RvckZyb250
ZW5kQ2xpZW50LmdldCgpOworICAgIHJldHVybiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50Owog
fQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3Js
ZChGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCkBAIC0yODMsOCArMjg0LDcg
QEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KCkKICAgICBpZiAobV9pbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwpCiAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5icmluZ0Zyb250ZW5k
VG9Gcm9udCgpOwogICAgIGVsc2UgewotICAgICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9yRnJvbnRl
bmQodGhpcyk7Ci0gICAgICAgIGlmIChmcm9udGVuZENoYW5uZWwpCisgICAgICAgIGlmIChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50
LT5vcGVuSW5zcGVjdG9yRnJvbnRlbmQodGhpcykpCiAgICAgICAgICAgICBjb25uZWN0RnJvbnRl
bmQoZnJvbnRlbmRDaGFubmVsKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBmZDU1OTI0YzAzNTI1NTM0OTczNzhkZmNj
MzVjMTM0NjE1OWM1MmYyLi4zMGQzY2M3NGFkZTAzYTQxMTMyOThjZGY0OTEwNWU3ZGJlYTI0NTVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgK
QEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvdygp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xvc2UoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50Pik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbnNwZWN0b3JG
cm9udGVuZENsaWVudChJbnNwZWN0b3JGcm9udGVuZENsaWVudCopOwogICAgIGJvb2wgaGFzSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQoKSBjb25zdDsKICAgICB2b2lkIGRpZENsZWFyV2luZG93T2Jq
ZWN0SW5Xb3JsZChGcmFtZSosIERPTVdyYXBwZXJXb3JsZCYpOwogCkBAIC0xMjEsNyArMTIxLDcg
QEAgcHVibGljOgogICAgIHZvaWQgcmVzdW1lKCk7CiAKICAgICBJbnNwZWN0b3JDbGllbnQqIGlu
c3BlY3RvckNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yQ2xpZW50OyB9Ci0gICAg
SW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VBZ2Vu
dDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlQWdlbnQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBkZXZlbG9w
ZXJFeHRyYXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNhbkFj
Y2Vzc0luc3BlY3RlZFNjcmlwdFN0YXRlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Qgb3ZlcnJpZGU7
CkBAIC0xNDYsMTAgKzE0NiwxMCBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIG1fdGltZWxpbmVBZ2VudDsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyPiBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9pbnNwZWN0b3JGcm9udGVuZENs
aWVudDsKICAgICBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWw7CiAgICAgUGFnZSYgbV9wYWdlOwogICAgIEluc3BlY3RvckNsaWVu
dCogbV9pbnNwZWN0b3JDbGllbnQ7CisgICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1faW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ7CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5IG1fYWdlbnRzOwogICAgIFZlY3RvcjxJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUs
IDI+IG1faW5qZWN0ZWRTY3JpcHRJbnN0cnVtZW50YXRpb25Db29raWVzOwogICAgIGJvb2wgbV9p
c1VuZGVyVGVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaAppbmRleCA4ZThjZDg1MjQ0NTgzMDFiOTQzODVjNGFmOGIxOGVjYTFiNDc1Mzc0
Li4xYTc0ZWRiMzk4Y2M5YjE2Yjc2MGNmOGViM2MxZmFiNjlmMzU4M2I3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCkBAIC01MCw4ICs1
MCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JGcm9u
dGVuZEhvc3QoY2xpZW50LCBmcm9udGVuZFBhZ2UpKTsKICAgICB9CiAKLSAgICB+SW5zcGVjdG9y
RnJvbnRlbmRIb3N0KCk7Ci0gICAgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgfkluc3BlY3RvckZyb250ZW5kSG9zdCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGlzY29ubmVjdENsaWVudCgpOwogCiAgICAgdm9pZCBsb2FkZWQoKTsKICAgICB2b2lkIHJl
cXVlc3RTZXREb2NrU2lkZShjb25zdCBTdHJpbmcmKTsKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBmcmllbmQgY2xhc3MgRnJvbnRlbmRN
ZW51UHJvdmlkZXI7CiAjZW5kaWYKLSAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QoSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQqLCBQYWdlKiBmcm9udGVuZFBhZ2UpOworICAgIFdFQkNPUkVfRVhQT1JU
IEluc3BlY3RvckZyb250ZW5kSG9zdChJbnNwZWN0b3JGcm9udGVuZENsaWVudCosIFBhZ2UqIGZy
b250ZW5kUGFnZSk7CiAKICAgICBJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9jbGllbnQ7CiAg
ICAgUGFnZSogbV9mcm9udGVuZFBhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmgKaW5kZXggMTEwNjcwZWQwYjM3ODA0ZTk5MDRjNWYxOGIwZDA3ZDBl
NDVhOWU1Ny4uMjVmZTFkNWE2MDNhZTEzMjA3ZTE0YjM0MzA4MWU2N2Q3YmUyZWFlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtMTU1LDcg
KzE1NSw3IEBAIHB1YmxpYzoKICAgICBGcmFtZSogbWFpbkZyYW1lKCk7CiAgICAgU3RyaW5nIGNy
ZWF0ZUlkZW50aWZpZXIoKTsKICAgICBGcmFtZSogZnJhbWVGb3JJZChjb25zdCBTdHJpbmcmIGZy
YW1lSWQpOwotICAgIFN0cmluZyBmcmFtZUlkKEZyYW1lKik7CisgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIGZyYW1lSWQoRnJhbWUqKTsKICAgICBib29sIGhhc0lkRm9yRnJhbWUoRnJhbWUqKSBj
b25zdDsKICAgICBTdHJpbmcgbG9hZGVySWQoRG9jdW1lbnRMb2FkZXIqKTsKICAgICBGcmFtZSog
ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luUmF3U3RyaW5n
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IGZjYTdmOTA4YjhlOTNkNDRiMDFlMTY4NmY1YzIyZDRh
MTk0YWE0NDUuLjNlNGY1ZjBhZTcwNjY3NzYwYjM2MjVjYjY2YzA5ODkyYjA2YmQ4N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuaApAQCAtMTAyLDggKzEwMiw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29u
dGVudHNTaXplQ2hhbmdlZChGcmFtZSosIGNvbnN0IEludFNpemUmKSBjb25zdDsKIAotICAgIHZv
aWQgc2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKLSAgICBGbG9hdFJlY3Qg
d2luZG93UmVjdCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2luZG93UmVj
dChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3Qg
d2luZG93UmVjdCgpIGNvbnN0OwogCiAgICAgRmxvYXRSZWN0IHBhZ2VSZWN0KCkgY29uc3Q7CiAK
QEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb2N1c2VkRnJhbWVDaGFuZ2Vk
KEZyYW1lKikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQYWdlKiBjcmVhdGVXaW5kb3co
RnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmLCBj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uJikgY29uc3Q7Ci0gICAgdm9pZCBzaG93KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93KCkgY29uc3Q7CiAKICAgICBib29sIGNhblJ1bk1v
ZGFsKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5SdW5Nb2RhbE5vdygpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDBhMDI2N2FjZDQ3NTQ3NWE3MDA4M2JiMWU4Yjg3
NzVkOGU3ZWEyMWUuLjU5ZTcxYzQ1ODhkOTRhYTJiNDM0MzBhY2I4YzQwYzAyOWQwZWNiNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE0NzEsMTIgKzE0NzEsMTAgQEAg
UGFzc1JlZlB0cjxET01XaW5kb3c+IEludGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRl
bmQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgUGFnZSogZnJvbnRlbmRQYWdlID0gbV9mcm9udGVu
ZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgpOwogICAgIEFTU0VSVChmcm9udGVuZFBhZ2UpOwog
Ci0gICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnREdW1teT4oJnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRQ
YWdlKTsKLQotICAgIGZyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9udGVuZENsaWVudCkpOwotCi0gICAgbV9m
cm9udGVuZENoYW5uZWwgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRHVt
bXkoZnJvbnRlbmRQYWdlKSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teT4oJnBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKSwgZnJvbnRlbmRQYWdlKTsKKyAgICBmcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsK
IAorICAgIG1fZnJvbnRlbmRDaGFubmVsID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWxEdW1teT4oZnJvbnRlbmRQYWdlKTsKICAgICBwYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmRDaGFubmVsLmdldCgpKTsKIAogICAg
IHJldHVybiBtX2Zyb250ZW5kV2luZG93OwpAQCAtMTQ5MCwxMCArMTQ4OCwxMSBAQCB2b2lkIElu
dGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKCkKIAogICAgIHBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJl
YXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKIAotICAgIG1fZnJvbnRlbmRDaGFubmVsLnJlbGVh
c2UoKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbnVsbHB0cjsKKyAgICBtX2Zyb250ZW5kQ2hh
bm5lbCA9IG51bGxwdHI7CiAKICAgICBtX2Zyb250ZW5kV2luZG93LT5jbG9zZShtX2Zyb250ZW5k
V2luZG93LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIG1fZnJvbnRlbmRXaW5kb3cu
cmVsZWFzZSgpOworICAgIG1fZnJvbnRlbmRXaW5kb3cuY2xlYXIoKTsKIH0KIAogdm9pZCBJbnRl
cm5hbHM6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0
aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAzZmY5YTdmYjk4
YTQ0NTVhNDE0MzkyNjZhNjBmMDg0NTc4OGFjOGQ5Li42Y2M3ZDI0ZjdjN2E3OGUxOGY5ZjRlMTY0
NDYxOWNmZjUzY2E2YzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTUwLDYg
KzUwLDcgQEAgY2xhc3MgRG9jdW1lbnRNYXJrZXI7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJh
bWU7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teTsKK2NsYXNzIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50RHVtbXk7CiBjbGFzcyBJbnRlcm5hbFNldHRpbmdzOwogY2xhc3MgTWFs
bG9jU3RhdGlzdGljczsKIGNsYXNzIE1lbW9yeUluZm87CkBAIC0zNTAsNyArMzUxLDggQEAgcHJp
dmF0ZToKICAgICBEb2N1bWVudE1hcmtlciogbWFya2VyQXQoTm9kZSosIGNvbnN0IFN0cmluZyYg
bWFya2VyVHlwZSwgdW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIFJlZlB0cjxET01XaW5kb3c+IG1fZnJvbnRlbmRXaW5kb3c7Ci0gICAg
T3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbER1bW15PiBtX2Zyb250ZW5kQ2hhbm5lbDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teT4gbV9mcm9u
dGVuZENsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
RHVtbXk+IG1fZnJvbnRlbmRDaGFubmVsOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdz
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxp
emVkU3RyaW5ncy5qcwppbmRleCAyMTkyMTIwNDA4ZTg5ZmM1OThlOGNlOTk5Y2M2MWJhNTA3Y2M1
ZmI0Li5hMmI0OTExZmJlYTg2NTQwM2NiMDE5ZWViNzVjZTM0MjBiZmIxYWI0IDEwMDY0NApHSVQg
YmluYXJ5IHBhdGNoCmRlbHRhIDkzCnpjbVYtajBIWGlPdyokKGgxRio+aHZsfDR3Nz9Wdk00M2xm
bjNiUXtRYlBUZ21EbGtsd2AqIytUazlUYWR0JEN5dAp6diZXRkMzYlc2ZnY7KHVWcHNFcUdxcTIr
JnZ2MG5OMDwpWEo3ejJ9ZSNUMWhyIVZhQEAjaTl6Y1Uoam17ckB0en0KCmRlbHRhIDEyNTMKemNt
ZDUrJnViRz01RlRBWXh7MjVqbjswb3xqVnUhREhmYWxqMlRfcDxtNzxGWWRlS0E3a0dpbUspLS1E
PHJCS3dQCnpVfHxyWVVpRHhSM0AjWCYzYXVCVmA3OFdXe043dERpQXxGcFdxR2BySHtYMndYNkQ7
JWVeQTtAckxtKFpJX1claQp6QnJmLXI7YzxVVWBFaW44amheQy1yU3BEJF5sZG1+bFQ5VG1QPm5R
cHo0KHd4UmpOPiNFTUMxWihrSHJZTyM4PUUKem5ZcjBuYV9BezJzKTdQVWNAV3lMWUIodzNOend5
Jm0kOCE2N3Q0KGk8SzlpV010OEJZYmUtLTFaJkQ3S0NoWGdFCnoxTzZQJUFsQXV3cGJTUndlOHFj
KTYqSnUzNUBxUU47OXNDZUQ3cEAtNG9sUWhmP1gzZllua3xeOGQ+eU1vPns7Twp6eWJJNWY2PGdS
ZlQxMzh3SlBuYU4lX0RrRkFWb2B+V2tlaj1WaGJuLT1NIUE/JmkpdG81VGZ8KnlecWFRUUpAJnoK
enBiXzNlM0h4SCVlS0Z+bVVhcVM7MVNHcXdreHM+fmRIb2RfKzNZUyhgJEtQOSUyQ244YEppMmk0
Z2xKQ0FJK1BoCno0QXc8PCk9blJpRSR4RmItPXp9O2RCLUJJQVh4dWwyekJ+RWA8cldEQkdGRG9X
JHt7QCU1MUt1ZWUyVnpuaEooNQp6MkFgTVgmKGxOZjZAV1pRQWRyZzBASmJfKis3LSh7SlpxNk9T
M2F4eS1WN25IRGtLdyNPYlNZSHBCYWVjdkI7JDAKeldUVG5uPCpPPCRlK35RVFg2YFVRQG5Za2gk
YDZffChLVllhJUV7eCFlfGBxaDkoZXc+bmY4fTlHKGB9bWRJMHRpCnVSYDV2I0EzX2hicTxqNlh0
IyhaeWh2d29ZeWdoOTJ2N0ltJVN8fDc7X1VFbEI7cm0tWkwhc1lXTmc5Pl8KCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKaW5kZXggZWQ4ZTJh
MDIzNTFjMDBlNGJhMjk5NzcwMWFlZDE5MmQ0NTU5NjBlNC4uZmEyMzRjNzBkYjJjZTY4M2E2NTk3
ZjcwOTVlZmI2YTU2YWRiYWE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtNDksMTAgKzQ5LDcgQEAgV2ViSW5zcGVjdG9yLlR5
cGVJZGVudGlmaWVyQ29va2llS2V5ID0gInJlcHJlc2VudGVkLW9iamVjdC10eXBlIjsKIAogV2Vi
SW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKIHsKLSAgICAvLyBUZWxsIHRoZSBJbnNwZWN0
b3JGcm9udGVuZEhvc3Qgd2UgbG9hZGVkIGZpcnN0IHRvIGVzdGFibGlzaCBjb21tdW5pY2F0aW9u
IHdpdGggSW5zcGVjdG9yQmFja2VuZC4KLSAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZGVk
KCk7Ci0KLSAgICAvLyBJbml0aWFsaXplIFdlYlNvY2tldCB0byBjb21tdW5pY2F0aW9uCisgICAg
Ly8gSW5pdGlhbGl6ZSBXZWJTb2NrZXQgdG8gY29tbXVuaWNhdGlvbi4KICAgICB0aGlzLl9pbml0
aWFsaXplV2ViU29ja2V0SWZOZWVkZWQoKTsKIAogICAgIC8vIFJlZ2lzdGVyIG9ic2VydmVycyBm
b3IgZXZlbnRzIGZyb20gdGhlIEluc3BlY3RvckJhY2tlbmQuCkBAIC0zMjgsMTIgKzMyNSwxMyBA
QCBXZWJJbnNwZWN0b3IuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICBpZiAodGhpcy5f
ZGV0YWlsc1NpZGViYXJXaWR0aFNldHRpbmcudmFsdWUpCiAgICAgICAgIHRoaXMuZGV0YWlsc1Np
ZGViYXIud2lkdGggPSB0aGlzLl9kZXRhaWxzU2lkZWJhcldpZHRoU2V0dGluZy52YWx1ZTsKIAot
ICAgIC8vIFVwZGF0ZSB0aGUgZG9ja2VkIHN0YXRlIGJhc2VkIG9uIHRoZSBxdWVyeSBzdHJpbmcg
cGFzc2VkIHdoZW4gdGhlIFdlYiBJbnNwZWN0b3Igd2FzIGxvYWRlZC4KLSAgICB0aGlzLnVwZGF0
ZURvY2tlZFN0YXRlKHBhcnNlTG9jYXRpb25RdWVyeVBhcmFtZXRlcnMoKS5kb2NrU2lkZSB8fCAi
dW5kb2NrZWQiKTsKLQotICAgIC8vIFRlbGwgdGhlIGZyb250ZW5kIEFQSSB3ZSBhcmUgbG9hZGVk
IHNvIGFueSBwZW5kaW5nIGZyb250ZW5kIGNvbW1hbmRzIGNhbiBiZSBkaXNwYXRjaGVkLgorICAg
IC8vIFNpZ25hbCB0aGF0IHRoZSBmcm9udGVuZCBpcyBub3cgcmVhZHkgdG8gcmVjZWl2ZSBtZXNz
YWdlcy4KICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKCk7CiAKKyAgICAv
LyBUZWxsIHRoZSBJbnNwZWN0b3JGcm9udGVuZEhvc3Qgd2UgbG9hZGVkLCB3aGljaCBjYXVzZXMg
dGhlIHdpbmRvdyB0byBkaXNwbGF5CisgICAgLy8gYW5kIHBlbmRpbmcgSW5zcGVjdG9yRnJvbnRl
bmRBUEkgY29tbWFuZHMgdG8gYmUgc2VudC4KKyAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9h
ZGVkKCk7CisKICAgICAvLyBTZXQgY29sbGFwc2VkIGFmdGVyIGxvYWRpbmcgdGhlIHBlbmRpbmcg
ZnJvbnRlbmQgY29tbWFuZHMgYXJlIGRpc3BhdGNoZWQgc28gb25seSB0aGUgZmluYWwKICAgICAv
LyBzZWxlY3RlZCBzaWRlYmFyIHBhbmVsIGdldHMgc2hvd24gYW5kIGhhcyBhIHNheSBpbiB3aGF0
IGNvbnRlbnQgdmlldyBnZXRzIHNob3duLgogICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXIuY29s
bGFwc2VkID0gdGhpcy5fbmF2aWdhdGlvblNpZGViYXJDb2xsYXBzZWRTZXR0aW5nLnZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9UZXN0
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9UZXN0LmpzCmlu
ZGV4IDc0MjA3NWE3ZDM3MWQ2NDQ1MDRkMjAyZThmY2JhYTkxYTA3OTgzNWQuLjM4MGVhNjc3ODA1
OWJiMjJlYjk4Njk4MmJlODJlN2JiMDNiY2Y4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVGVzdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1Rlc3QuanMKQEAgLTU1LDE1ICs1NSwxNiBAQCBXZWJJ
bnNwZWN0b3IubG9hZGVkID0gZnVuY3Rpb24oKQogCiAgICAgLy8gUGVyZm9ybSBvbmUtdGltZSB0
YXNrcy4KICAgICBXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMucmVxdWVzdENTU05hbWVDb21w
bGV0aW9ucygpOwotCi0gICAgLy8gRXN0YWJsaXNoIGNvbW11bmljYXRpb24gd2l0aCB0aGUgSW5z
cGVjdG9yQmFja2VuZC4KLSAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZGVkKCk7CiB9CiAK
IFdlYkluc3BlY3Rvci5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogewogICAgIC8vIFNpZ25h
bCB0aGF0IHRoZSBmcm9udGVuZCBpcyBub3cgcmVhZHkgdG8gcmVjZWl2ZSBtZXNzYWdlcy4KICAg
ICBJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKCk7CisKKyAgICAvLyBUZWxsIHRo
ZSBJbnNwZWN0b3JGcm9udGVuZEhvc3Qgd2UgbG9hZGVkLCB3aGljaCBjYXVzZXMgdGhlIHdpbmRv
dyB0byBkaXNwbGF5CisgICAgLy8gYW5kIHBlbmRpbmcgSW5zcGVjdG9yRnJvbnRlbmRBUEkgY29t
bWFuZHMgdG8gYmUgc2VudC4KKyAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZGVkKCk7CiB9
CiAKIFdlYkluc3BlY3Rvci5VSVN0cmluZyA9IGZ1bmN0aW9uKHN0cmluZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZy
b250ZW5kQVBJLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKaW5kZXggMTIyNzIxMTI4ZGFmYmViMzE5NDFkYjBj
YzE4NjFiYjA3NmExNWQ0OS4uYTY0NzY4YmFlN2E3ZmRkNGIyZTY5NDRlN2Q3NGU1OGU3NjViZjdk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAgLTI1LDI4ICsy
NSwxNiBAQAogCiBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICBfbG9hZGVkOiBmYWxzZSwK
LQogICAgIF9wZW5kaW5nQ29tbWFuZHM6IFtdLAogCiAgICAgc2F2ZWRVUkw6IGZ1bmN0aW9uKHVy
bCkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgICAgIC8v
IE5vdCB1c2VkIHlldC4KICAgICB9LAogCiAgICAgYXBwZW5kZWRUb1VSTDogZnVuY3Rpb24odXJs
KQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KLSAgICB9LAotCi0g
ICAgaXNEZWJ1Z2dpbmdFbmFibGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICAvLyBGSVhN
RTogTm90IGltcGxlbWVudGVkLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKLQotICAg
IHNldERlYnVnZ2luZ0VuYWJsZWQ6IGZ1bmN0aW9uKGVuYWJsZWQpCi0gICAgewotICAgICAgICAv
LyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorICAgICAgICAvLyBOb3QgdXNlZCB5ZXQuCiAgICAg
fSwKIAogICAgIGlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkOiBmdW5jdGlvbigpCkBAIC0xMDgs
MTEgKzk2LDYgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93U291cmNlQ29kZUZvckZyYW1lKGZyYW1lSWRlbnRp
ZmllciwgdHJ1ZSk7CiAgICAgfSwKIAotICAgIHNldERvY2tpbmdVbmF2YWlsYWJsZTogZnVuY3Rp
b24odW5hdmFpbGFibGUpCi0gICAgewotICAgICAgICAvLyBOb3QgdXNlZC4KLSAgICB9LAotCiAg
ICAgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQ6IGZ1bmN0aW9uKGlkKQogICAgIHsKICAgICAgICAg
V2ViSW5zcGVjdG9yLmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGlkKTsKQEAgLTE0MSw2ICsxMjQs
MTAgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIg
bWV0aG9kTmFtZSA9IHNpZ25hdHVyZS5zaGlmdCgpOworICAgICAgICBjb25zb2xlLmFzc2VydChJ
bnNwZWN0b3JGcm9udGVuZEFQSVttZXRob2ROYW1lXSwgIlVuZXhwZWN0ZWQgSW5zcGVjdG9yRnJv
bnRlbmRBUEkgbWV0aG9kIG5hbWU6ICIgKyBJbnNwZWN0b3JGcm9udGVuZEFQSVttZXRob2ROYW1l
XSk7CisgICAgICAgIGlmICghSW5zcGVjdG9yRnJvbnRlbmRBUElbbWV0aG9kTmFtZV0pCisgICAg
ICAgICAgICByZXR1cm47CisKICAgICAgICAgcmV0dXJuIEluc3BlY3RvckZyb250ZW5kQVBJW21l
dGhvZE5hbWVdLmFwcGx5KEluc3BlY3RvckZyb250ZW5kQVBJLCBzaWduYXR1cmUpOwogICAgIH0s
CiAKQEAgLTE1MSw2ICsxMzgsNiBAQCBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBJbnNwZWN0b3JGcm9udGVuZEFQSS5fcGVuZGluZ0NvbW1hbmRz
Lmxlbmd0aDsgKytpKQogICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2go
SW5zcGVjdG9yRnJvbnRlbmRBUEkuX3BlbmRpbmdDb21tYW5kc1tpXSk7CiAKLSAgICAgICAgSW5z
cGVjdG9yRnJvbnRlbmRBUEkuX3BlbmRpbmdDb21tYW5kcyA9IFtdOworICAgICAgICBkZWxldGUg
SW5zcGVjdG9yRnJvbnRlbmRBUEkuX3BlbmRpbmdDb21tYW5kczsKICAgICB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3Iv
V2ViS2l0RXhwb3J0cy5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktp
dEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgppbmRleCBmYmU4Mzk0YmU0OGI3
ZmYwYmNjMjFmNmZkYWIxMDEzYmNmOTExZDIyLi5mMWE2MzRiZTE4MTIxNjI2OGFjZDhiZDU1MGU3
N2M2NzQ0ZTI3ZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dl
YktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRl
Zi5pbgpAQCAtMjI3LDcgKzIyNyw3IEBAIEVYUE9SVFMKICAgICAgICAgc3ltYm9sV2l0aFBvaW50
ZXIoP29wZW5Jbk5ld1RhYkBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVB
RVhBQlZTdHJpbmdAV1RGQEBAWiwgP29wZW5Jbk5ld1RhYkBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsQFdlYkNvcmVAQFVFQUFYQUVCVlN0cmluZ0BXVEZAQEBaKQogICAgICAgICBzeW1ib2xX
aXRoUG9pbnRlcig/cmVxdWVzdFNldERvY2tTaWRlQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWxAV2ViQ29yZUBAVUFFWFc0RG9ja1NpZGVASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRAMkBAWiwg
P3JlcXVlc3RTZXREb2NrU2lkZUBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVA
QFVFQUFYVzREb2NrU2lkZUBJbnNwZWN0b3JGcm9udGVuZENsaWVudEAyQEBaKQogICAgICAgICBz
eW1ib2xXaXRoUG9pbnRlcig/c2VuZE1lc3NhZ2VUb0JhY2tlbmRASW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbEBXZWJDb3JlQEBVQUVYQUJWU3RyaW5nQFdURkBAQFosID9zZW5kTWVzc2FnZVRv
QmFja2VuZEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVFQUFYQUVCVlN0
cmluZ0BXVEZAQEBaKQotICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/c2V0SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYVj8kdW5pcXVlX3B0
ckBWSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRAV2ViQ29yZUBAVT8kZGVmYXVsdF9kZWxldGVAVklu
c3BlY3RvckZyb250ZW5kQ2xpZW50QFdlYkNvcmVAQEBzdGRAQEBzdGRAQEBaLCA/c2V0SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRRUFBWFY/JHVu
aXF1ZV9wdHJAVkluc3BlY3RvckZyb250ZW5kQ2xpZW50QFdlYkNvcmVAQFU/JGRlZmF1bHRfZGVs
ZXRlQFZJbnNwZWN0b3JGcm9udGVuZENsaWVudEBXZWJDb3JlQEBAc3RkQEBAc3RkQEBAWikKKyAg
ICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3NldEluc3BlY3RvckZyb250ZW5kQ2xpZW50QEluc3Bl
Y3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFBBVkluc3BlY3RvckZyb250ZW5kQ2xpZW50QDJA
QFosID9zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNv
cmVAQFFFQUFYVkluc3BlY3RvckZyb250ZW5kQ2xpZW50QDJAQFopCiAgICAgICAgIHN5bWJvbFdp
dGhQb2ludGVyKD9zZXRQcm9wZXJ0eUBTZXR0aW5nc0BJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsQFdlYkNvcmVAQFVBRVhBQlZTdHJpbmdAV1RGQEAwQFosID9zZXRQcm9wZXJ0eUBTZXR0aW5n
c0BJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVFQUFYQUVCVlN0cmluZ0BX
VEZAQDBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3dpbmRvd09iamVjdENsZWFyZWRA
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVQUVYWFosID93aW5kb3dPYmpl
Y3RDbGVhcmVkQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUVBQVhYWikK
ICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3BhdGhCeUFwcGVuZGluZ0NvbXBvbmVudEBXZWJD
b3JlQEBZQT9BVlN0cmluZ0BXVEZAQEFCVjIzQDBAWiwgP3BhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dEBXZWJDb3JlQEBZQT9BVlN0cmluZ0BXVEZAQEFFQlYyM0AwQFopCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0K
aW5kZXggZDMwZDhiOTEyMjU2M2ZjOTg5MWU1ZGNjYzBlZDk1NWU2MWFlMTk3Yy4uOThkY2FlZDMx
OTBkMTg5ZDcwMWNlMmY0MjgyMjI5YjdkMzBkZDhkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbQpAQCAt
NDYsNyArNDYsNiBAQCBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJW
aWV3ICp3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiAgICAgLCBtX2hpZ2hsaWdo
dGVyKGFkb3B0TlMoW1tXZWJOb2RlSGlnaGxpZ2h0ZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVk
V2ViVmlldzp3ZWJWaWV3XSkpCiAgICAgLCBtX2Zyb250ZW5kUGFnZSgwKQotICAgICwgbV9mcm9u
dGVuZENsaWVudCgwKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDQ4NTY4MzY3ZjQxNjUyYTNkNzdk
YTRhODYwZDRkYzdmMzQ0MzlhZjcuLjg5ODc3ZWJlNGE1Y2RiMDYyNDU5NzcxY2VhMTBhZWJmMzM3
Zjg0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBXZWJW
aWV3ICptX3dlYlZpZXc7CiAgICAgUmV0YWluUHRyPFdlYk5vZGVIaWdobGlnaHRlcj4gbV9oaWdo
bGlnaHRlcjsKICAgICBXZWJDb3JlOjpQYWdlKiBtX2Zyb250ZW5kUGFnZTsKLSAgICBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudCogbV9mcm9udGVuZENsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1fZnJvbnRlbmRDbGllbnQ7CiB9OwogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5tbQppbmRleCA2ZTE3ODlkN2NiYWE2NGU4ZWE0OWE0N2EwMGIyYzZmYjE2MDZkNGNl
Li44MzA4YjllNzNlMTcwMDQ0NGExN2Y5MGYwNDMxMTM0YmE4ZDYzNDY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1t
CkBAIC0xMzMsOCArMTMzLDcgQEAgQGVuZAogV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0
b3JDbGllbnQoV2ViVmlldyAqd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogICAg
ICwgbV9oaWdobGlnaHRlcihhZG9wdE5TKFtbV2ViTm9kZUhpZ2hsaWdodGVyIGFsbG9jXSBpbml0
V2l0aEluc3BlY3RlZFdlYlZpZXc6d2ViVmlld10pKQotICAgICwgbV9mcm9udGVuZFBhZ2UoMCkK
LSAgICAsIG1fZnJvbnRlbmRDbGllbnQoMCkKKyAgICAsIG1fZnJvbnRlbmRQYWdlKG51bGxwdHIp
CiB7CiB9CiAKQEAgLTE1MCwxMSArMTQ5LDEzIEBAIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
V2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29uCiAg
ICAgW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgc2V0SW5zcGVjdG9yQ2xpZW50OnRoaXNdOwogCiAg
ICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKFt3aW5kb3dDb250cm9sbGVyLmdldCgpIHdlYlZpZXdd
KTsKLSAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudD4obV93ZWJWaWV3LCB3aW5kb3dDb250cm9sbGVyLmdldCgpLCBpbnNw
ZWN0b3JDb250cm9sbGVyLCBtX2Zyb250ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygp
KTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQuZ2V0KCk7Ci0gICAgUmV0
YWluUHRyPFdlYkluc3BlY3RvckZyb250ZW5kPiB3ZWJJbnNwZWN0b3JGcm9udGVuZCA9IGFkb3B0
TlMoW1tXZWJJbnNwZWN0b3JGcm9udGVuZCBhbGxvY10gaW5pdFdpdGhGcm9udGVuZENsaWVudDpm
cm9udGVuZENsaWVudC5nZXQoKV0pOworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX3dlYlZpZXcsIHdpbmRvd0NvbnRy
b2xsZXIuZ2V0KCksIGluc3BlY3RvckNvbnRyb2xsZXIsIG1fZnJvbnRlbmRQYWdlLCBjcmVhdGVG
cm9udGVuZFNldHRpbmdzKCkpOworCisgICAgUmV0YWluUHRyPFdlYkluc3BlY3RvckZyb250ZW5k
PiB3ZWJJbnNwZWN0b3JGcm9udGVuZCA9IGFkb3B0TlMoW1tXZWJJbnNwZWN0b3JGcm9udGVuZCBh
bGxvY10gaW5pdFdpdGhGcm9udGVuZENsaWVudDptX2Zyb250ZW5kQ2xpZW50LmdldCgpXSk7CiAg
ICAgW1ttX3dlYlZpZXcgaW5zcGVjdG9yXSBzZXRGcm9udGVuZDp3ZWJJbnNwZWN0b3JGcm9udGVu
ZC5nZXQoKV07Ci0gICAgbV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJ
bnNwZWN0b3JGcm9udGVuZENsaWVudChXVEY6Om1vdmUoZnJvbnRlbmRDbGllbnQpKTsKKworICAg
IG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQobV9mcm9udGVuZENsaWVudC5nZXQoKSk7CisKICAgICByZXR1cm4gdGhpczsKIH0K
IApAQCAtMTk5LDggKzIwMCw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRTZXRTZWFy
Y2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCkKIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnJl
bGVhc2VGcm9udGVuZCgpCiB7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IDA7Ci0gICAgbV9mcm9u
dGVuZFBhZ2UgPSAwOworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBudWxscHRyOworICAgIG1fZnJv
bnRlbmRQYWdlID0gbnVsbHB0cjsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCAzZjM2ZGVmOGFi
MDk5MzUwZmRkYTcyMWM0M2JhNmNlNDBjMzU3M2ZiLi45MGVkZGU1NjY1ZTZiNjdmZDE1ZDFlZGUw
Yjk0OGI0YTI0ZmU4MWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTY4LDcgKzY4LDYgQEAgc3RhdGlj
IGNvbnN0IEludFJlY3QmIGRlZmF1bHRXaW5kb3dSZWN0KCkKIFdlYkluc3BlY3RvckNsaWVudDo6
V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX2luc3BlY3RlZFdl
YlZpZXcod2ViVmlldykKICAgICAsIG1fZnJvbnRlbmRQYWdlKDApCi0gICAgLCBtX2Zyb250ZW5k
Q2xpZW50KDApCiB7CiAgICAgQVNTRVJUKG1faW5zcGVjdGVkV2ViVmlldyk7CiAgICAgbV9pbnNw
ZWN0ZWRXZWJWaWV3LT52aWV3V2luZG93KCZtX2luc3BlY3RlZFdlYlZpZXdIYW5kbGUpOwpAQCAt
MTcxLDkgKzE3MCw4IEBAIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogV2ViSW5z
cGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zCiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKGZyb250ZW5kV2ViVmlldy5nZXQoKSk7Ci0g
ICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0ZWRXZWJWaWV3SGFuZGxl
LCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhp
cywgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJv
bnRlbmRDbGllbnQuZ2V0KCk7Ci0gICAgbV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChXVEY6Om1vdmUoZnJvbnRlbmRDbGllbnQp
KTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3BlY3RlZFdlYlZpZXdIYW5k
bGUsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0
aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOworICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV9mcm9udGVuZENs
aWVudC5nZXQoKSk7CiAgICAgbV9mcm9udGVuZEhhbmRsZSA9IGZyb250ZW5kSHduZDsKICAgICBy
ZXR1cm4gdGhpczsKIH0KQEAgLTIxOSw3ICsyMTcsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVu
dDo6dXBkYXRlSGlnaGxpZ2h0KCkKIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnJlbGVhc2VG
cm9udGVuZCgpCiB7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IDA7CisgICAgbV9mcm9udGVuZENs
aWVudCA9IG51bGxwdHI7CiAgICAgbV9mcm9udGVuZFBhZ2UgPSAwOwogICAgIG1fZnJvbnRlbmRI
YW5kbGUgPSAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBiMzFkZDg5YjQ2Mjg2YzMwYzE0NDJhOGNlY2Ux
NDc4M2UwNmQwMjQ4Li40N2ZiZWEwYTgwNzQxZDVjYjk3MjhlODE3Y2M0OTdhMmU5MmJjOWE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbGVhc2VG
cm9udGVuZCgpOwogCi0gICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIGZyb250ZW5kQ2xp
ZW50KCkgeyByZXR1cm4gbV9mcm9udGVuZENsaWVudDsgfQorICAgIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50KiBmcm9udGVuZENsaWVudCgpIHsgcmV0dXJuIG1fZnJvbnRlbmRDbGllbnQuZ2V0
KCk7IH0KIAogICAgIHZvaWQgdXBkYXRlSGlnaGxpZ2h0KCk7CiAKQEAgLTg1LDcgKzg1LDcgQEAg
cHJpdmF0ZToKIAogICAgIFdlYlZpZXcqIG1faW5zcGVjdGVkV2ViVmlldzsKICAgICBXZWJDb3Jl
OjpQYWdlKiBtX2Zyb250ZW5kUGFnZTsKLSAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCog
bV9mcm9udGVuZENsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ+IG1fZnJvbnRlbmRDbGllbnQ7CiAgICAgSFdORCBtX2luc3BlY3RlZFdlYlZpZXdI
YW5kbGU7CiAgICAgSFdORCBtX2Zyb250ZW5kSGFuZGxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDRmMzkyM2Q0MWIzZDNjNGU4OTE0NTVlOWY4YzBkNzE4MjQ2ZGU2YzIuLjZiZGM1OWRjNWEy
ZWI3NTQ4OTdmZGNjOTY0YjAzYmRiNDJjZGE2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC01
MzAsNyArNTMwLDYgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKLSAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcApAQCAtNTUyLDYgKzU1MSw3IEBAIHNldChXZWJL
aXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIuY3Bw
CiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAogICAgIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJJbnNwZWN0b3IuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
clVJLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
ci5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKICAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwCkBAIC02NDUsNiArNjQ1LDcgQEAgc2V0KFdl
YktpdDJfTUVTU0FHRVNfSU5fRklMRVMKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNw
YXRjaGVyLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFi
bGVDb250cm9sbGVyLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3Rvci5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5t
ZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCiAg
ICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5Lm1lc3NhZ2VzLmluCiApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dl
YktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBlYWVmNTE2ZmI4M2JlMWY0OTNjNDk0NmRh
OGU3NDAwMWU1ODBkNDI0Li5jYTA2YTA2ODkyYzRkN2YzYTUzMzE4MDAzYTljNTMxNmQ2YmI5MDIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEyMSw2ICsxMjEsNyBAQCBNRVNT
QUdFX1JFQ0VJVkVSUyA9IFwKICAgICBXZWJJY29uRGF0YWJhc2VQcm94eSBcCiAgICAgV2ViSW5z
cGVjdG9yIFwKICAgICBXZWJJbnNwZWN0b3JQcm94eSBcCisgICAgV2ViSW5zcGVjdG9yVUkgXAog
ICAgIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyIFwKICAgICBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5
IFwKICAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UK
aW5kZXggMDFlMzRlYTBiZjlmODhmYjZmZTk2YTQ2OWEzZTIyMzYxZjBhOGQxYy4uZjA3ZmI2Mzkx
MTVlYjE0MjY5Y2RjMTY3MmMwNzk0YzFiY2QwYjM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21h
a2UKQEAgLTE5NCw3ICsxOTQsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9hdGsvV2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3RBdGsuY3Bw
CiAKLSAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3RvckVmbC5jcHAKKyAgICBX
ZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYkluc3BlY3RvclVJRWZsLmNwcAogICAgIFdlYlByb2Nl
c3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKIAogICAgIFdlYlByb2Nlc3MvZWZsL1NlY2Nv
bXBGaWx0ZXJzV2ViUHJvY2Vzc0VmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXgg
Njg1Njg2MWM4OWZlY2UyMWFiN2Y4OTYxMGY4MmUzZWE0ODFjZjBjYS4uZmU2M2MxZjQ1YTNiMGZj
NmMyZWFkYzdiOTY4NDQwZGM0ZmJhOGQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKQEAg
LTMwMiw3ICszMDIsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1ByaW50ZXJMaXN0R3RrLmNwcAotICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViSW5zcGVjdG9yR3RrLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVj
dG9yVUlHdGsuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcAog
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElPYmplY3QuaAppbmRleCA2ZGY0OTE4M2QyYmM0NjI2NWNjMDlmN2I1ZDU3
NGEwN2IzYzBjNTkyLi45MjJlNmRhMDNmYTUxY2QxZWZjY2M3YzY3YTFmZjBiNzUzMTUxZDM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCkBAIC0xNDMsNiArMTQzLDcgQEAgcHVibGljOgog
ICAgICAgICBCdW5kbGVGcmFtZSwKICAgICAgICAgQnVuZGxlSGl0VGVzdFJlc3VsdCwKICAgICAg
ICAgQnVuZGxlSW5zcGVjdG9yLAorICAgICAgICBCdW5kbGVJbnNwZWN0b3JVSSwKICAgICAgICAg
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgQnVuZGxlTm9kZUhhbmRsZSwKICAgICAg
ICAgQnVuZGxlUGFnZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL21hYy9MZWdhY3lQcm9jZXNzL0NoaWxkUHJvY2Vzc0VudHJ5UG9pbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvTGVnYWN5UHJv
Y2Vzcy9DaGlsZFByb2Nlc3NFbnRyeVBvaW50Lm1tCmluZGV4IDEzZjMwNmUwMGVkZWFmYWUxMDUy
MzMzMGYzMTE3ZjY2NDFjZjNkNWIuLmQ5NWNlZmRjYTZlM2RhYjcxYTFhZGU2ZGZhODljODQwOTU0
MTVjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0
aWVzL21hYy9MZWdhY3lQcm9jZXNzL0NoaWxkUHJvY2Vzc0VudHJ5UG9pbnQubW0KKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL0xlZ2FjeVByb2Nlc3Mv
Q2hpbGRQcm9jZXNzRW50cnlQb2ludC5tbQpAQCAtODgsOCArODgsMTEgQEAgYm9vbCBDaGlsZFBy
b2Nlc3NNYWluRGVsZWdhdGU6OmdldENsaWVudFByb2Nlc3NOYW1lKFN0cmluZyYgY2xpZW50UHJv
Y2Vzc05hbWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ2hpbGRQcm9jZXNzTWFpbkRl
bGVnYXRlOjpnZXRFeHRyYUluaXRpYWxpemF0aW9uRGF0YShIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiYpCitib29sIENoaWxkUHJvY2Vzc01haW5EZWxlZ2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlv
bkRhdGEoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhKQog
eworICAgIFN0cmluZyBpbnNwZWN0b3JQcm9jZXNzID0gbV9jb21tYW5kTGluZVsiaW5zcGVjdG9y
LXByb2Nlc3MiXTsKKyAgICBpZiAoIWluc3BlY3RvclByb2Nlc3MuaXNFbXB0eSgpKQorICAgICAg
ICBleHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoQVNDSUlMaXRlcmFsKCJpbnNwZWN0b3ItcHJv
Y2VzcyIpLCBpbnNwZWN0b3JQcm9jZXNzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1Nl
cnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50
cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQpp
bmRleCAxNjk3ZWU5YjI3MjZmNmFkY2EwYzY3OWJhOGZjOWUxYzYxOGQzOTcyLi4zNjVlYThkMmJk
Y2EzZmMxZjQ5MjdiOTlhNzRlOGQ0NmNiODIxYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50
cnlQb2ludC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGll
cy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQpAQCAtOTIsOCArOTIsMTQg
QEAgYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50UHJvY2Vzc05h
bWUoU3RyaW5nJiBjbGllbnRQcm9jZXNzTmEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBY
UENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlvbkRhdGEo
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKQorYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxl
Z2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlvbkRhdGEoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4m
IGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhKQogeworICAgIHhwY19vYmplY3RfdCBleHRyYURhdGFJ
bml0aWFsaXphdGlvbkRhdGFPYmplY3QgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUobV9pbml0
aWFsaXplck1lc3NhZ2UsICJleHRyYS1pbml0aWFsaXphdGlvbi1kYXRhIik7CisKKyAgICBTdHJp
bmcgaW5zcGVjdG9yUHJvY2VzcyA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRh
SW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiaW5zcGVjdG9yLXByb2Nlc3MiKTsKKyAgICBpZiAo
IWluc3BlY3RvclByb2Nlc3MuaXNFbXB0eSgpKQorICAgICAgICBleHRyYUluaXRpYWxpemF0aW9u
RGF0YS5hZGQoQVNDSUlMaXRlcmFsKCJpbnNwZWN0b3ItcHJvY2VzcyIpLCBpbnNwZWN0b3JQcm9j
ZXNzKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcAppbmRleCAxNmU4NDViMDc0ZTQzZGQ1MmRhOThmZWY3
MWY5NTY5YTYyZmY5ZjBiLi44Yzk5NzViNGM5ZjdlODdlMTBmYjBkZTUzODAxZDk3ZDdkY2E5Yjdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAK
QEAgLTE3NCw0MiArMTc0LDMwIEBAIHZvaWQgV0tJbnNwZWN0b3JEZXRhY2goV0tJbnNwZWN0b3JS
ZWYgaW5zcGVjdG9yUmVmKQogI2VuZGlmCiB9CiAKLWJvb2wgV0tJbnNwZWN0b3JJc0RlYnVnZ2lu
Z0phdmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQorYm9vbCBXS0luc3BlY3Rv
cklzRGVidWdnaW5nSmF2YVNjcmlwdChXS0luc3BlY3RvclJlZikKIHsKLSNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotICAgIHJldHVybiB0b0ltcGwoaW5zcGVjdG9yUmVmKS0+aXNEZWJ1Z2dpbmdKYXZh
U2NyaXB0KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0b3JSZWYpOworICAgIC8v
IEZJWE1FOiBUaGlzIGlzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIG5pZ2h0bHkg
YnVpbGRzIGFuZCBTYWZhcmkuCisgICAgLy8gUmVtb3ZlIGl0IG9uY2UgU2FmYXJpIG5vIGxvbmdl
ciBkZXBlbmRzIG9uIGl0LgogICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQogCi12b2lkIFdL
SW5zcGVjdG9yVG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZyhXS0luc3BlY3RvclJlZiBpbnNwZWN0
b3JSZWYpCit2b2lkIFdLSW5zcGVjdG9yVG9nZ2xlSmF2YVNjcmlwdERlYnVnZ2luZyhXS0luc3Bl
Y3RvclJlZikKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHRvSW1wbChpbnNwZWN0b3JS
ZWYpLT50b2dnbGVKYXZhU2NyaXB0RGVidWdnaW5nKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShpbnNwZWN0b3JSZWYpOwotI2VuZGlmCisgICAgLy8gRklYTUU6IFRoaXMgaXMgZm9yIGJhY2t3
YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggbmlnaHRseSBidWlsZHMgYW5kIFNhZmFyaS4KKyAgICAv
LyBSZW1vdmUgaXQgb25jZSBTYWZhcmkgbm8gbG9uZ2VyIGRlcGVuZHMgb24gaXQuCiB9CiAKLWJv
b2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ0phdmFTY3JpcHQoV0tJbnNwZWN0b3JSZWYgaW5zcGVj
dG9yUmVmKQorYm9vbCBXS0luc3BlY3RvcklzUHJvZmlsaW5nSmF2YVNjcmlwdChXS0luc3BlY3Rv
clJlZikKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHJldHVybiB0b0ltcGwoaW5zcGVj
dG9yUmVmKS0+aXNQcm9maWxpbmdKYXZhU2NyaXB0KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShpbnNwZWN0b3JSZWYpOworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGZvciBiYWNrd2FyZHMgY29t
cGF0aWJpbGl0eSB3aXRoIG5pZ2h0bHkgYnVpbGRzIGFuZCBTYWZhcmkuCisgICAgLy8gUmVtb3Zl
IGl0IG9uY2UgU2FmYXJpIG5vIGxvbmdlciBkZXBlbmRzIG9uIGl0LgogICAgIHJldHVybiBmYWxz
ZTsKLSNlbmRpZgogfQogCi12b2lkIFdLSW5zcGVjdG9yVG9nZ2xlSmF2YVNjcmlwdFByb2ZpbGlu
ZyhXS0luc3BlY3RvclJlZiBpbnNwZWN0b3JSZWYpCit2b2lkIFdLSW5zcGVjdG9yVG9nZ2xlSmF2
YVNjcmlwdFByb2ZpbGluZyhXS0luc3BlY3RvclJlZikKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9S
KQotICAgIHRvSW1wbChpbnNwZWN0b3JSZWYpLT50b2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKCk7
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbnNwZWN0b3JSZWYpOwotI2VuZGlmCisgICAgLy8g
RklYTUU6IFRoaXMgaXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggbmlnaHRseSBi
dWlsZHMgYW5kIFNhZmFyaS4KKyAgICAvLyBSZW1vdmUgaXQgb25jZSBTYWZhcmkgbm8gbG9uZ2Vy
IGRlcGVuZHMgb24gaXQuCiB9CiAKIGJvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ1BhZ2UoV0tJ
bnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tJbnNwZWN0b3IuaAppbmRleCBiYTc2NDg5MzI1ZjE1NDE0NjdhNGQ3ZTEwYzBiMjBjNzE3
ZDkxOTg5Li4yMDY1NzhkNTQzYjJiMjZkNWE5Y2I2YzNlMDg2MWQyMzIyMDA1YWI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuaApAQCAtNTgsMTUgKzU4
LDE3IEBAIFdLX0VYUE9SVCBib29sIFdLSW5zcGVjdG9ySXNBdHRhY2hlZChXS0luc3BlY3RvclJl
ZiBpbnNwZWN0b3IpOwogV0tfRVhQT1JUIHZvaWQgV0tJbnNwZWN0b3JBdHRhY2goV0tJbnNwZWN0
b3JSZWYgaW5zcGVjdG9yKTsKIFdLX0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9yRGV0YWNoKFdLSW5z
cGVjdG9yUmVmIGluc3BlY3Rvcik7CiAKK1dLX0VYUE9SVCBib29sIFdLSW5zcGVjdG9ySXNQcm9m
aWxpbmdQYWdlKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7CitXS19FWFBPUlQgdm9pZCBXS0lu
c3BlY3RvclRvZ2dsZVBhZ2VQcm9maWxpbmcoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKKwor
Ly8gRklYTUU6IFRoZXNlIGFyZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBuaWdo
dGx5IGJ1aWxkcyBhbmQgU2FmYXJpLgorLy8gUmVtb3ZlIHRoZW0gb25jZSBTYWZhcmkgbm8gbG9u
Z2VyIGRlcGVuZHMgb24gdGhlbS4KIFdLX0VYUE9SVCBib29sIFdLSW5zcGVjdG9ySXNEZWJ1Z2dp
bmdKYXZhU2NyaXB0KFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7CiBXS19FWFBPUlQgdm9pZCBX
S0luc3BlY3RvclRvZ2dsZUphdmFTY3JpcHREZWJ1Z2dpbmcoV0tJbnNwZWN0b3JSZWYgaW5zcGVj
dG9yKTsKIAogV0tfRVhQT1JUIGJvb2wgV0tJbnNwZWN0b3JJc1Byb2ZpbGluZ0phdmFTY3JpcHQo
V0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yKTsKIFdLX0VYUE9SVCB2b2lkIFdLSW5zcGVjdG9yVG9n
Z2xlSmF2YVNjcmlwdFByb2ZpbGluZyhXS0luc3BlY3RvclJlZiBpbnNwZWN0b3IpOwogCi1XS19F
WFBPUlQgYm9vbCBXS0luc3BlY3RvcklzUHJvZmlsaW5nUGFnZShXS0luc3BlY3RvclJlZiBpbnNw
ZWN0b3IpOwotV0tfRVhQT1JUIHZvaWQgV0tJbnNwZWN0b3JUb2dnbGVQYWdlUHJvZmlsaW5nKFdL
SW5zcGVjdG9yUmVmIGluc3BlY3Rvcik7Ci0KICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRl
eCBiZTM3NzA0Y2JhODNiMmQ2M2RmNmIxOGY0OTQ3OTQ2MjFmMmFjMDI0Li45OTRmYmQ5MDA0MWE3
NTI3OGJlNjQ0M2IwNjQ3NWM3ZTFjMGZhMjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBQb3J0
aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMCwxMSArMzAsMTIgQEAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5oIgorI2luY2x1ZGUg
IldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAi
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgpAQCAtNTcsOSArNTgsNiBAQCBjb25z
dCB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6bWluaW11bVdpbmRvd0hlaWdodCA9IDQwMDsK
IGNvbnN0IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5Ojppbml0aWFsV2luZG93V2lkdGggPSAx
MDAwOwogY29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OmluaXRpYWxXaW5kb3dIZWln
aHQgPSA2NTA7CiAKLWNvbnN0IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5OjptaW5pbXVtQXR0
YWNoZWRXaWR0aCA9IDc1MDsKLWNvbnN0IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5OjptaW5p
bXVtQXR0YWNoZWRIZWlnaHQgPSAyNTA7Ci0KIGNsYXNzIFdlYkluc3BlY3RvclBhZ2VHcm91cHMg
ewogcHVibGljOgogICAgIHN0YXRpYyBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzJiBzaGFyZWQoKQpA
QCAtMTA1LDExICsxMDMsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPFdlYlBhZ2VHcm91
cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoU3RyaW5nOjpmb3JtYXQoIl9fV2Vi
SW5zcGVjdG9yUGFnZUdyb3VwTGV2ZWwldV9fIiwgbGV2ZWwpLCBmYWxzZSwgZmFsc2UpOwogCiAj
aWZuZGVmIE5ERUJVRwotICAgICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhl
IFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzLgorICAgICAgICAvLyBBbGxvdyBkZXZlbG9w
ZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQg
Y2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgICAgIHBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zZXRE
ZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwogICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVu
Y2VzKCkuc2V0TG9nc1BhZ2VNZXNzYWdlc1RvU3lzdGVtQ29uc29sZUVuYWJsZWQodHJ1ZSk7CiAj
ZW5kaWYKIAorICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0QWxsb3dGaWxlQWNj
ZXNzRnJvbUZpbGVVUkxzKHRydWUpOwogICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCku
c2V0QXBwbGljYXRpb25DaHJvbWVNb2RlRW5hYmxlZCh0cnVlKTsKIAogICAgICAgICByZXR1cm4g
cGFnZUdyb3VwLnJlbGVhc2UoKTsKQEAgLTEyNCwxMyArMTIzLDEzIEBAIHByaXZhdGU6CiAKIFdl
Ykluc3BlY3RvclByb3h5OjpXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiAg
ICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1faW5zcGVjdG9yUGFnZShudWxscHRyKQorICAgICwg
bV91bmRlclRlc3QoZmFsc2UpCiAgICAgLCBtX2lzVmlzaWJsZShmYWxzZSkKICAgICAsIG1faXNB
dHRhY2hlZChmYWxzZSkKLSAgICAsIG1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KGZhbHNlKQotICAg
ICwgbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQoZmFsc2UpCisgICAgLCBtX2NhbkF0dGFjaChmYWxz
ZSkKICAgICAsIG1faXNQcm9maWxpbmdQYWdlKGZhbHNlKQogICAgICwgbV9zaG93TWVzc2FnZVNl
bnQoZmFsc2UpCi0gICAgLCBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlKGZhbHNlKQogICAgICwgbV9p
Z25vcmVGaXJzdEJyaW5nVG9Gcm9udChmYWxzZSkKICAgICAsIG1fYXR0YWNobWVudFNpZGUoQXR0
YWNobWVudFNpZGVCb3R0b20pCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCkBA
IC0xNjUsNyArMTY0LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aW52YWxpZGF0ZSgpCiAK
ICAgICBkaWRDbG9zZSgpOwogCi0gICAgbV9wYWdlID0gMDsKKyAgICBtX3BhZ2UgPSBudWxscHRy
OwogfQogCiAvLyBQdWJsaWMgQVBJcwpAQCAtMTg4LDYgKzE4Nyw4IEBAIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OmNvbm5lY3QoKQogICAgIG1fc2hvd01lc3NhZ2VTZW50ID0gdHJ1ZTsKICAgICBt
X2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250ID0gdHJ1ZTsKIAorICAgIGVhZ2VybHlDcmVhdGVJbnNw
ZWN0b3JQYWdlKCk7CisKICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OlNob3coKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKQEAgLTIzMiw2ICsyMzMs
OCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93Q29uc29sZSgpCiAgICAgaWYgKCFtX3Bh
Z2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7
CisKICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNo
b3dDb25zb2xlKCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCkBAIC0yNDAsNiArMjQzLDggQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1Jlc291cmNlcygpCiAgICAgaWYgKCFtX3BhZ2Up
CiAgICAgICAgIHJldHVybjsKIAorICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisK
ICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dS
ZXNvdXJjZXMoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKQEAgLTI0OCw2ICsyNTMsOCBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUoV2ViRnJhbWVQ
cm94eSogZnJhbWUpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIGVh
Z2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisKICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShmcmFtZS0+
ZnJhbWVJRCgpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKQEAgLTI3NCwxMyArMjgxLDE1IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaChBdHRhY2htZW50U2lkZSBzaWRlKQogICAg
IGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAgaW5zcGVjdG9yUGFnZUdyb3VwKCktPnByZWZlcmVu
Y2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQodHJ1ZSk7CiAKKyAgICBtX3BhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKHRydWUpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKwogICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewogICAg
IGNhc2UgQXR0YWNobWVudFNpZGVCb3R0b206Ci0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6QXR0YWNoZWRCb3R0b20oKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZEJvdHRvbSgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJ
RCgpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlUmlnaHQ6Ci0g
ICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6QXR0
YWNoZWRSaWdodCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkUmlnaHQo
KSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApA
QCAtMjk3LDcgKzMwNiw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRldGFjaCgpCiAgICAg
aWYgKG1faXNWaXNpYmxlKQogICAgICAgICBpbnNwZWN0b3JQYWdlR3JvdXAoKS0+cHJlZmVyZW5j
ZXMoKS5zZXRJbnNwZWN0b3JTdGFydHNBdHRhY2hlZChmYWxzZSk7CiAKLSAgICBtX3BhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkRldGFjaGVkKCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3Rvcjo6U2V0QXR0YWNoZWQoZmFsc2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNo
ZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAKICAgICBwbGF0Zm9ybURldGFjaCgp
OwogfQpAQCAtMzE0LDM0ICszMjQsNiBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZXRBdHRh
Y2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQogICAgIHBsYXRmb3JtU2V0QXR0YWNoZWRX
aW5kb3dXaWR0aCh3aWR0aCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnRvZ2dsZUph
dmFTY3JpcHREZWJ1Z2dpbmcoKQotewotICAgIGlmICghbV9wYWdlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAobV9pc0RlYnVnZ2luZ0phdmFTY3JpcHQpCi0gICAgICAgIG1fcGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RvcEphdmFTY3JpcHREZWJ1Z2dp
bmcoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0gICAgZWxzZQotICAgICAgICBtX3BhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0SmF2YVNjcmlwdERlYnVnZ2lu
ZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLQotICAgIC8vIEZJWE1FOiBoYXZlIHRoZSBXZWJQcm9j
ZXNzIG5vdGlmeSB1cyBvbiBzdGF0ZSBjaGFuZ2VzLgotICAgIG1faXNEZWJ1Z2dpbmdKYXZhU2Ny
aXB0ID0gIW1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0OwotfQotCi12b2lkIFdlYkluc3BlY3RvclBy
b3h5Ojp0b2dnbGVKYXZhU2NyaXB0UHJvZmlsaW5nKCkKLXsKLSAgICBpZiAoIW1fcGFnZSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1faXNQcm9maWxpbmdKYXZhU2NyaXB0KQotICAgICAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0b3BKYXZh
U2NyaXB0UHJvZmlsaW5nKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotICAgIGVsc2UKLSAgICAgICAg
bV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdGFydEphdmFT
Y3JpcHRQcm9maWxpbmcoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0KLSAgICAvLyBGSVhNRTogaGF2
ZSB0aGUgV2ViUHJvY2VzcyBub3RpZnkgdXMgb24gc3RhdGUgY2hhbmdlcy4KLSAgICBtX2lzUHJv
ZmlsaW5nSmF2YVNjcmlwdCA9ICFtX2lzUHJvZmlsaW5nSmF2YVNjcmlwdDsKLX0KLQogdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlUGFnZVByb2ZpbGluZygpCiB7CiAgICAgaWYgKCFtX3Bh
Z2UpCkBAIC0zNjEsNiArMzQzLDI0IEBAIGJvb2wgV2ViSW5zcGVjdG9yUHJveHk6OmlzSW5zcGVj
dG9yUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAgcmV0dXJuIFdlYkluc3BlY3RvclBhZ2VH
cm91cHM6OnNoYXJlZCgpLmlzSW5zcGVjdG9yUGFnZUdyb3VwKHBhZ2UucGFnZUdyb3VwKCkpOwog
fQogCitXZWJDb250ZXh0JiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQ29udGV4dCgpCit7
CisgICAgLy8gSGF2aW5nIG91ciBvd24gY29udGV4dCByZW1vdmVzIHVzIGZyb20gdGhlIG1haW4g
Y29udGV4dCdzIHByb2Nlc3MgcG9vbCBhbmQKKyAgICAvLyBndWFyYW50ZWVzIG5vIHByb2Nlc3Mg
c2hhcmluZyBmb3Igb3VyIHVzZXIgaW50ZXJmYWNlLgorCisgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VGbGFnOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPFdlYkNv
bnRleHQ+PiBjb250ZXh0OworCisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAg
ICAgICAgV2ViQ29udGV4dENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAgICAgICAgV2Vi
Q29udGV4dDo6YXBwbHlQbGF0Zm9ybVNwZWNpZmljQ29uZmlndXJhdGlvbkRlZmF1bHRzKGNvbmZp
Z3VyYXRpb24pOworICAgICAgICBjb250ZXh0LmNvbnN0cnVjdChXZWJDb250ZXh0OjpjcmVhdGUo
Y29uZmlndXJhdGlvbikpOworICAgICAgICBjb250ZXh0LmdldCgpLT5zZXRQcm9jZXNzTW9kZWwo
UHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMpOworICAgIH0pOworCisgICAg
cmV0dXJuICpjb250ZXh0LmdldCgpOworfQorCiBzdGF0aWMgYm9vbCBpc01haW5PclRlc3RJbnNw
ZWN0b3JQYWdlKGNvbnN0IFdlYkluc3BlY3RvclByb3h5KiB3ZWJJbnNwZWN0b3JQcm94eSwgV0tV
UkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCiB7CiAgICAgVVJMIHJlcXVlc3RVUkwoVVJMKCksIHRv
SW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOwpAQCAtNDI2LDI5ICs0
MjYsMjAgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0
ZWQoKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3Rl
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZy
b250ZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3Nh
Z2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KICNlbmRpZgogCi0vLyBDYWxsZWQgYnkgV2ViSW5z
cGVjdG9yUHJveHkgbWVzc2FnZXMKLXZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3Bl
Y3RvclBhZ2UodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYgaW5zcGVjdG9yUGFnZVBhcmFtZXRlcnMpCit2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpl
YWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpCiB7Ci0gICAgaW5zcGVjdG9yUGFnZUlEID0gMDsK
LQotICAgIGlmICghbV9wYWdlKQorICAgIGlmIChtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1faXNBdHRhY2hlZCA9IHNob3VsZE9wZW5BdHRhY2hlZCgpOwotICAgIG1f
YXR0YWNobWVudFNpZGUgPSBzdGF0aWNfY2FzdDxBdHRhY2htZW50U2lkZT4oaW5zcGVjdG9yUGFn
ZUdyb3VwKCktPnByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0YWNobWVudFNpZGUoKSk7Ci0KLSAg
ICBXZWJQYWdlUHJveHkqIGluc3BlY3RvclBhZ2UgPSBwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBh
Z2UoKTsKLSAgICBBU1NFUlQoaW5zcGVjdG9yUGFnZSk7Ci0gICAgaWYgKCFpbnNwZWN0b3JQYWdl
KQorICAgIG1faW5zcGVjdG9yUGFnZSA9IHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpOwor
ICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOworICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpbnNwZWN0b3JQYWdlSUQgPSBpbnNwZWN0b3JQYWdlLT5w
YWdlSUQoKTsKLSAgICBpbnNwZWN0b3JQYWdlUGFyYW1ldGVycyA9IGluc3BlY3RvclBhZ2UtPmNy
ZWF0aW9uUGFyYW1ldGVycygpOwotCiAgICAgV0tQYWdlUG9saWN5Q2xpZW50VjEgcG9saWN5Q2xp
ZW50ID0gewogICAgICAgICB7IDEsIHRoaXMgfSwKICAgICAgICAgMCwgLyogZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwICovCkBAIC00NTksNzMg
KzQ1MCw1NyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKHVp
bnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcgogICAgICAgICAwLCAvKiBkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZSAqLwogICAgIH07CiAKLSAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xp
ZW50KHRvQVBJKGluc3BlY3RvclBhZ2UpLCAmcG9saWN5Q2xpZW50LmJhc2UpOwotCi0gICAgU3Ry
aW5nQnVpbGRlciB1cmw7Ci0KLSAgICB1cmwuYXBwZW5kKGluc3BlY3RvclBhZ2VVUkwoKSk7Ci0K
LSAgICB1cmwuYXBwZW5kTGl0ZXJhbCgiP2RvY2tTaWRlPSIpOwotCi0gICAgaWYgKG1faXNBdHRh
Y2hlZCkgewotICAgICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKLSAgICAgICAgY2Fz
ZSBBdHRhY2htZW50U2lkZUJvdHRvbToKLSAgICAgICAgICAgIHVybC5hcHBlbmRMaXRlcmFsKCJi
b3R0b20iKTsKLSAgICAgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3Rvcjo6QXR0YWNoZWRCb3R0b20oKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZVJpZ2h0OgotICAgICAgICAg
ICAgdXJsLmFwcGVuZExpdGVyYWwoInJpZ2h0Iik7Ci0gICAgICAgICAgICBtX3BhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVkUmlnaHQoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0gZWxzZQot
ICAgICAgICB1cmwuYXBwZW5kTGl0ZXJhbCgidW5kb2NrZWQiKTsKKyAgICBXS1BhZ2VTZXRQYWdl
UG9saWN5Q2xpZW50KHRvQVBJKG1faW5zcGVjdG9yUGFnZSksICZwb2xpY3lDbGllbnQuYmFzZSk7
CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGluc3Bl
Y3RvckJhc2VVUkwoKSk7Ci0KLSAgICBpbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJM
KCksIHVybC50b1N0cmluZygpKSk7Ci0KLSAgICBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlID0gdHJ1
ZTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+
cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVS
ZWFkQWNjZXNzVG9CYXNlVVJMKGluc3BlY3RvckJhc2VVUkwoKSk7CiB9CiAKLXZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2VGb3JUZXN0KHVpbnQ2NF90JiBpbnNwZWN0
b3JQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIGluc3BlY3RvclBhZ2VQYXJhbWV0
ZXJzKQorLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2VzCit2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0
aW9uSWRlbnRpZmllciwgYm9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXN0KQogewotICAgIGlu
c3BlY3RvclBhZ2VJRCA9IDA7Ci0KICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9pc0F0dGFjaGVkID0gZmFsc2U7CisgICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBh
Z2UoKTsKIAotICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSA9IHBsYXRmb3JtQ3JlYXRl
SW5zcGVjdG9yUGFnZSgpOwotICAgIEFTU0VSVChpbnNwZWN0b3JQYWdlKTsKLSAgICBpZiAoIWlu
c3BlY3RvclBhZ2UpCisgICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgaWYgKCFtX2lu
c3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGluc3BlY3RvclBhZ2VJRCA9IGlu
c3BlY3RvclBhZ2UtPnBhZ2VJRCgpOwotICAgIGluc3BlY3RvclBhZ2VQYXJhbWV0ZXJzID0gaW5z
cGVjdG9yUGFnZS0+Y3JlYXRpb25QYXJhbWV0ZXJzKCk7CisgICAgbV91bmRlclRlc3QgPSB1bmRl
clRlc3Q7CiAKLSAgICBXS1BhZ2VQb2xpY3lDbGllbnRWMSBwb2xpY3lDbGllbnQgPSB7Ci0gICAg
ICAgIHsgMSwgdGhpcyB9LAotICAgICAgICAwLCAvKiBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgKi8KLSAgICAgICAgMCwgLyogZGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uICovCi0gICAgICAgIDAsIC8qIGRlY2lkZVBvbGljeUZvclJl
c3BvbnNlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgKi8KLSAgICAgICAgMCwgLyogdW5hYmxlVG9J
bXBsZW1lbnRQb2xpY3kgKi8KLSAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
biwKLSAgICAgICAgMCwgLyogZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UgKi8KLSAgICB9OworICAg
IG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpFc3RhYmxpc2hDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3BhZ2UtPnBhZ2VJ
RCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogCi0gICAgV0tQ
YWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSShpbnNwZWN0b3JQYWdlKSwgJnBvbGljeUNsaWVu
dC5iYXNlKTsKKyAgICBpZiAoIW1fdW5kZXJUZXN0KSB7CisgICAgICAgIG1fY2FuQXR0YWNoID0g
Y2FuQXR0YWNoOworICAgICAgICBtX2lzQXR0YWNoZWQgPSBzaG91bGRPcGVuQXR0YWNoZWQoKTsK
KyAgICAgICAgbV9hdHRhY2htZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0dGFjaG1lbnRTaWRlPihp
bnNwZWN0b3JQYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2htZW50U2lk
ZSgpKTsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwo
aW5zcGVjdG9yQmFzZVVSTCgpKTsKKyAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChtX2lzQXR0YWNoZWQpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKIAotICAgIGluc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgaW5z
cGVjdG9yVGVzdFBhZ2VVUkwoKSkpOworICAgICAgICBpZiAobV9pc0F0dGFjaGVkKSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKKyAgICAgICAgICAgIGNhc2UgQXR0
YWNobWVudFNpZGVCb3R0b206CisgICAgICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90dG9tKCksIG1f
aW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
bV9jcmVhdGVkSW5zcGVjdG9yUGFnZSA9IHRydWU7CisgICAgICAgICAgICBjYXNlIEF0dGFjaG1l
bnRTaWRlUmlnaHQ6CisgICAgICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkUmlnaHQoKSwgbV9pbnNwZWN0
b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFjaGVkKCksIG1faW5zcGVjdG9yUGFn
ZS0+cGFnZUlEKCkpOworICAgIH0KKworICAgIG1faW5zcGVjdG9yUGFnZS0+bG9hZFJlcXVlc3Qo
VVJMKFVSTCgpLCBtX3VuZGVyVGVzdCA/IGluc3BlY3RvclRlc3RQYWdlVVJMKCkgOiBpbnNwZWN0
b3JQYWdlVVJMKCkpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbigpCiB7Cisg
ICAgaWYgKG1fdW5kZXJUZXN0KQorICAgICAgICByZXR1cm47CisKICAgICBtX2lzVmlzaWJsZSA9
IHRydWU7CiAKICAgICBwbGF0Zm9ybU9wZW4oKTsKQEAgLTUzMywyMCArNTA4LDIzIEBAIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6Om9wZW4oKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkaWRD
bG9zZSgpCiB7Ci0gICAgaWYgKCFtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlKQorICAgIGlmICghbV9p
bnNwZWN0b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKKyAgICBtX2luc3BlY3RvclBhZ2UtPmNs
b3NlKCk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRyOworCiAgICAg
bV9pc1Zpc2libGUgPSBmYWxzZTsKLSAgICBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdCA9IGZhbHNl
OwotICAgIG1faXNQcm9maWxpbmdKYXZhU2NyaXB0ID0gZmFsc2U7CiAgICAgbV9pc1Byb2ZpbGlu
Z1BhZ2UgPSBmYWxzZTsKLSAgICBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlID0gZmFsc2U7CiAgICAg
bV9zaG93TWVzc2FnZVNlbnQgPSBmYWxzZTsKICAgICBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250
ID0gZmFsc2U7CiAKICAgICBpZiAobV9pc0F0dGFjaGVkKQogICAgICAgICBwbGF0Zm9ybURldGFj
aCgpOwogICAgIG1faXNBdHRhY2hlZCA9IGZhbHNlOworICAgIG1fY2FuQXR0YWNoID0gZmFsc2U7
CisgICAgbV91bmRlclRlc3QgPSBmYWxzZTsKIAogICAgIHBsYXRmb3JtRGlkQ2xvc2UoKTsKIH0K
QEAgLTU2OSw2ICs1NDcsOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpicmluZ1RvRnJvbnQo
KQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJv
b2wgYXZhaWxhYmxlKQogeworICAgIG1fY2FuQXR0YWNoID0gYXZhaWxhYmxlOworCiAgICAgcGxh
dGZvcm1BdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGF2YWlsYWJsZSk7CiB9CiAKQEAgLTU4Nywy
OCArNTY3LDYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXBwZW5kKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkKICAgICBwbGF0Zm9ybUFwcGVuZChmaWxl
bmFtZSwgY29udGVudCk7CiB9CiAKLWJvb2wgV2ViSW5zcGVjdG9yUHJveHk6OmNhbkF0dGFjaCgp
Ci17Ci0gICAgLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsOjpjYW5BdHRhY2hXaW5kb3cuIFRoZXJlIGFyZSB0d28gaW1wbGVtZW50YXRpb25zCi0g
ICAgLy8gdG8gbWFrZSBsaWZlIGVhc2llciBpbiB0aGUgbXVsdGktcHJvY2VzcyB3b3JsZCB3ZSBo
YXZlLiBXZWJJbnNwZWN0b3JQcm94eSB1c2VzIGNhbkF0dGFjaCB0byBkZWNpZGUgaWYKLSAgICAv
LyB3ZSBjYW4gYXR0YWNoIG9uIG9wZW4gKG9uIHRoZSBVSSBwcm9jZXNzIHNpZGUpLiBBbmQgSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2FuQXR0YWNoV2luZG93IGlzCi0gICAgLy8gdXNl
ZCB0byBkZWNpZGUgaWYgd2UgY2FuIGF0dGFjaCB3aGVuIHRoZSBhdHRhY2ggYnV0dG9uIGlzIHBy
ZXNzZWQgKG9uIHRoZSBXZWJQcm9jZXNzIHNpZGUpLgotCi0gICAgLy8gSWYgd2UgYXJlIGFscmVh
ZHkgYXR0YWNoZWQsIGFsbG93IGF0dGFjaGluZyBhZ2FpbiB0byBhbGxvdyBzd2l0Y2hpbmcgc2lk
ZXMuCi0gICAgaWYgKG1faXNBdHRhY2hlZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAv
LyBEb24ndCBhbGxvdyBhdHRhY2hpbmcgdG8gYW5vdGhlciBpbnNwZWN0b3IgLS0gdHdvIGluc3Bl
Y3RvcnMgaW4gb25lIHdpbmRvdyBpcyB0b28gbXVjaCEKLSAgICBpZiAobV9sZXZlbCA+IDEpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIERvbid0IGFsbG93IHRoZSBhdHRhY2ggaWYg
dGhlIHdpbmRvdyB3b3VsZCBiZSB0b28gc21hbGwgdG8gYWNjb21tb2RhdGUgdGhlIG1pbmltdW0g
aW5zcGVjdG9yIGhlaWdodC4KLSAgICB1bnNpZ25lZCBpbnNwZWN0ZWRQYWdlSGVpZ2h0ID0gcGxh
dGZvcm1JbnNwZWN0ZWRXaW5kb3dIZWlnaHQoKTsKLSAgICB1bnNpZ25lZCBpbnNwZWN0ZWRQYWdl
V2lkdGggPSBwbGF0Zm9ybUluc3BlY3RlZFdpbmRvd1dpZHRoKCk7Ci0gICAgdW5zaWduZWQgbWF4
aW11bUF0dGFjaGVkSGVpZ2h0ID0gaW5zcGVjdGVkUGFnZUhlaWdodCAqIDMgLyA0OwotICAgIHJl
dHVybiBtaW5pbXVtQXR0YWNoZWRIZWlnaHQgPD0gbWF4aW11bUF0dGFjaGVkSGVpZ2h0ICYmIG1p
bmltdW1BdHRhY2hlZFdpZHRoIDw9IGluc3BlY3RlZFBhZ2VXaWR0aDsKLX0KLQogYm9vbCBXZWJJ
bnNwZWN0b3JQcm94eTo6c2hvdWxkT3BlbkF0dGFjaGVkKCkKIHsKICAgICByZXR1cm4gaW5zcGVj
dG9yUGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkuaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoKSAm
JiBjYW5BdHRhY2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5LmgKaW5kZXggMTdhNzQ5ODJlNzQ5YzEwMTE2YTExZTU5MDk4YWNmNDRhMjAwMjk0My4uMDY1
ZDdlMTNjY2M4NmFhMmY0YTE0NmNjNTY5ZDI5NjhiNGQ1YmQ2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMCw2ICszMCw3IEBACiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUg
IkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC01OSwxMCArNjAs
MTAgQEAgT0JKQ19DTEFTUyBXS1dlYkluc3BlY3RvcldLVmlldzsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKK2NsYXNzIFdlYkNvbnRleHQ7CiBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2Vi
UGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZVByb3h5Owotc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM7CiAKIGVudW0gQXR0YWNobWVudFNpZGUgewogICAgIEF0dGFjaG1lbnRTaWRlQm90
dG9tLApAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUHVibGljIEFQSXMKICAgICBX
ZWJQYWdlUHJveHkqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KIAotICAgIGJvb2wg
aXNDb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdlOyB9Cisg
ICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbnNwZWN0b3JQYWdlOyB9
CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2lzVmlzaWJsZTsgfQogICAg
IGJvb2wgaXNGcm9udCgpOwogCkBAIC0xMjMsMTYgKzEyNCwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKTsKICAgICB2b2lkIHNldFRvb2xiYXJI
ZWlnaHQodW5zaWduZWQgaGVpZ2h0KSB7IHBsYXRmb3JtU2V0VG9vbGJhckhlaWdodChoZWlnaHQp
OyB9CiAKLSAgICBib29sIGlzRGVidWdnaW5nSmF2YVNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNEZWJ1Z2dpbmdKYXZhU2NyaXB0OyB9Ci0gICAgdm9pZCB0b2dnbGVKYXZhU2NyaXB0RGVidWdn
aW5nKCk7Ci0KLSAgICBib29sIGlzUHJvZmlsaW5nSmF2YVNjcmlwdCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNQcm9maWxpbmdKYXZhU2NyaXB0OyB9Ci0gICAgdm9pZCB0b2dnbGVKYXZhU2NyaXB0UHJv
ZmlsaW5nKCk7Ci0KICAgICBib29sIGlzUHJvZmlsaW5nUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNQcm9maWxpbmdQYWdlOyB9CiAgICAgdm9pZCB0b2dnbGVQYWdlUHJvZmlsaW5nKCk7CiAKICAg
ICBzdGF0aWMgYm9vbCBpc0luc3BlY3RvclBhZ2UoV2ViUGFnZVByb3h5Jik7CisgICAgc3RhdGlj
IFdlYkNvbnRleHQmIGluc3BlY3RvckNvbnRleHQoKTsKIAogICAgIC8vIFByb3ZpZGVkIGJ5IHBs
YXRmb3JtIFdlYkluc3BlY3RvclByb3h5IGltcGxlbWVudGF0aW9ucy4KICAgICBTdHJpbmcgaW5z
cGVjdG9yUGFnZVVSTCgpIGNvbnN0OwpAQCAtMTUwLDkgKzE0NiwxMCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvclByb3h5KFdlYlBhZ2VQcm94eSopOwogCisg
ICAgdm9pZCBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOworCiAgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpIG92ZXJyaWRlOwog
CiAgICAgV2ViUGFnZVByb3h5KiBwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKICAgICB2
b2lkIHBsYXRmb3JtT3BlbigpOwpAQCAtMTczLDggKzE3MCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnQpOwogCiAgICAgLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2VzCi0g
ICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JQYWdlKHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKLSAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBhZ2VG
b3JUZXN0KHVpbnQ2NF90JiBpbnNwZWN0b3JQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmKTsKKyAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBhZ2UoSVBDOjpBdHRhY2htZW50LCBib29s
IGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlc3QpOwogICAgIHZvaWQgZGlkQ2xvc2UoKTsKICAgICB2
b2lkIGJyaW5nVG9Gcm9udCgpOwogICAgIHZvaWQgYXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChi
b29sKTsKQEAgLTE4Nyw3ICsxODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZE1lc3NhZ2VU
b1JlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAjZW5kaWYKIAotICAgIGJv
b2wgY2FuQXR0YWNoKCk7CisgICAgYm9vbCBjYW5BdHRhY2goKSBjb25zdCB7IHJldHVybiBtX2Nh
bkF0dGFjaDsgfQogICAgIGJvb2wgc2hvdWxkT3BlbkF0dGFjaGVkKCk7CiAKICAgICB2b2lkIG9w
ZW4oKTsKQEAgLTIwNCwxOSArMjAwLDE1IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGluaXRpYWxXaW5kb3dXaWR0aDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5p
dGlhbFdpbmRvd0hlaWdodDsKIAotICAgIC8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggdGhlIHZh
bHVlIGluIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuCi0gICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG1pbmltdW1BdHRhY2hlZFdpZHRoOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBt
aW5pbXVtQXR0YWNoZWRIZWlnaHQ7Ci0KICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKKyAgICBX
ZWJQYWdlUHJveHkqIG1faW5zcGVjdG9yUGFnZTsKIAorICAgIGJvb2wgbV91bmRlclRlc3Q7CiAg
ICAgYm9vbCBtX2lzVmlzaWJsZTsKICAgICBib29sIG1faXNBdHRhY2hlZDsKLSAgICBib29sIG1f
aXNEZWJ1Z2dpbmdKYXZhU2NyaXB0OwotICAgIGJvb2wgbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQ7
CisgICAgYm9vbCBtX2NhbkF0dGFjaDsKICAgICBib29sIG1faXNQcm9maWxpbmdQYWdlOwogICAg
IGJvb2wgbV9zaG93TWVzc2FnZVNlbnQ7Ci0gICAgYm9vbCBtX2NyZWF0ZWRJbnNwZWN0b3JQYWdl
OwogICAgIGJvb2wgbV9pZ25vcmVGaXJzdEJyaW5nVG9Gcm9udDsKIAogICAgIC8vIFRoZSBkZWJ1
Z2dlciBzdG9wcyBhbGwgdGhlIHBhZ2VzIGluIHRoZSBzYW1lIFBhZ2VHcm91cC4gSGF2aW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggZTZjOTQ0ZDk0NjM0YjI3YTQzNDgwN2M1YzMwNzg1YzBlNTgzYmEyNy4u
ZWI3ZmE5Yjk5ZDhkOTFkMzU2NWY1OGQxZGQ1ZWJhN2FiOTgzOTQ3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTAgKzIz
LDExIEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9y
UHJveHkgewotICAgIENyZWF0ZUluc3BlY3RvclBhZ2UoKSAtPiAodWludDY0X3QgaW5zcGVjdG9y
UGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgaW5zcGVjdG9yUGFnZVBh
cmFtZXRlcnMpCi0gICAgQ3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QoKSAtPiAodWludDY0X3Qg
aW5zcGVjdG9yUGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgaW5zcGVj
dG9yUGFnZVBhcmFtZXRlcnMpCisgICAgQ3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1l
bnQgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgY2FuQXR0YWNoLCBib29sIHVuZGVyVGVzdCkK
KwogICAgIERpZENsb3NlKCkKICAgICBCcmluZ1RvRnJvbnQoKQorCiAgICAgSW5zcGVjdGVkVVJM
Q2hhbmdlZChTdHJpbmcgdXJsU3RyaW5nKQogCiAgICAgU2F2ZShTdHJpbmcgZmlsZW5hbWUsIFN0
cmluZyBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCkBAIC0z
NSw2ICszNiw3IEBAIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclByb3h5IHsKICAgICBBdHRhY2hC
b3R0b20oKQogICAgIEF0dGFjaFJpZ2h0KCkKICAgICBEZXRhY2goKQorCiAgICAgQXR0YWNoQXZh
aWxhYmlsaXR5Q2hhbmdlZChib29sIGF2YWlsYWJsZSkKIAogICAgIFNldEF0dGFjaGVkV2luZG93
SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKaW5kZXggOTA0OWY5YmJhZDA0YzM1MzNlNDYyOTM3Y2ExZTQwM2QxMDUy
NDg5My4uOTczMmMwNTAxMjVlMTM4Y2JmN2NlNTMwYzQ5MjYwZjk0N2EyMDM0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTM5LDYgKzM5LDcg
QEAKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUg
IldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5j
bHVkZSAiV2ViSW5zcGVjdG9yUHJveHkuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uRGF0YVN0
b3JlLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZUdyb3VwLmgiCkBAIC0xMTUsNiArMTE2LDggQEAgV2ViUHJvY2Vzc1Byb3h5Ojp+
V2ViUHJvY2Vzc1Byb3h5KCkKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25z
KFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKIHsKICAgICBs
YXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID0gUHJvY2Vzc0xhdW5jaGVyOjpXZWJQcm9jZXNzOwor
ICAgIGlmICgmbV9jb250ZXh0LmdldCgpID09ICZXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9y
Q29udGV4dCgpKQorICAgICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRh
LmFkZChBU0NJSUxpdGVyYWwoImluc3BlY3Rvci1wcm9jZXNzIiksIEFTQ0lJTGl0ZXJhbCgiMSIp
KTsKICAgICBwbGF0Zm9ybUdldExhdW5jaE9wdGlvbnMobGF1bmNoT3B0aW9ucyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlF
ZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVm
bC5jcHAKaW5kZXggZWVjMzljY2U4ZTk3YzEyODA4ODQwYjVhZjE0MjRiMjY1NzE0NGU1Yy4uMDkx
MjE3YWNlMjEyMzc5MmFhZWYzZWQyZjM5OTU1MDk1ZmNiZTc5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKQEAgLTEw
NCw3ICsxMDQsNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNy
ZWF0ZUluc3BlY3RvclBhZ2UoKQogICAgIGlmICghbV9pbnNwZWN0b3JXaW5kb3cpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgV0tDb250ZXh0UmVmIHdrQ29udGV4dCA9IHRvQVBJKCZwYWdlKCkt
PnByb2Nlc3MoKS5jb250ZXh0KCkpOworICAgIFdLQ29udGV4dFJlZiB3a0NvbnRleHQgPSB0b0FQ
SSgmaW5zcGVjdG9yQ29udGV4dCgpKTsKICAgICBXS1BhZ2VHcm91cFJlZiB3a1BhZ2VHcm91cCA9
IHRvQVBJKGluc3BlY3RvclBhZ2VHcm91cCgpKTsKIAogICAgIG1faW5zcGVjdG9yVmlldyA9IEVX
S1ZpZXdDcmVhdGUod2tDb250ZXh0LCB3a1BhZ2VHcm91cCwgZWNvcmVfZXZhc19nZXQobV9pbnNw
ZWN0b3JXaW5kb3cpLCAvKiBzbWFydCAqLyAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5kZXggNTBlNDVjNDlkMzM2
OWRjYzc4N2YwNTY0MTVkYmJjOTYzNGRjNjQzZC4uYjIyMTkyZTdkYmQ3ODUzMWMxMTNiYTJmMzlk
ZmU5MTY4YWJmOTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgV2ViUGFnZVByb3h5
KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKIHsKICAg
ICBBU1NFUlQobV9wYWdlKTsKICAgICBBU1NFUlQoIW1faW5zcGVjdG9yVmlldyk7Ci0gICAgbV9p
bnNwZWN0b3JWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSgmcGFnZSgp
LT5wcm9jZXNzKCkuY29udGV4dCgpLCBudWxscHRyLCBpbnNwZWN0b3JQYWdlR3JvdXAoKSwgbnVs
bHB0ciwgbV9wYWdlKSk7CisgICAgbV9pbnNwZWN0b3JWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRX
ZWJWaWV3QmFzZUNyZWF0ZSgmaW5zcGVjdG9yQ29udGV4dCgpLCBudWxscHRyLCBpbnNwZWN0b3JQ
YWdlR3JvdXAoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIGdfb2JqZWN0X2FkZF93ZWFrX3Bv
aW50ZXIoR19PQkpFQ1QobV9pbnNwZWN0b3JWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+
KCZtX2luc3BlY3RvclZpZXcpKTsKICAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdl
KFdFQktJVF9XRUJfVklFV19CQVNFKG1faW5zcGVjdG9yVmlldykpOwogfQpAQCAtMTgyLDggKzE4
MiwxMSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaCgpCiAgICAgICAg
IG1faW5zcGVjdG9yV2luZG93ID0gMDsKICAgICB9CiAKLSAgICAvLyBTZXQgYSBkZWZhdWx0IGF0
dGFjaGVkIHNpemUgYmFzZWQgb24gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC4KKyAgICAv
LyBTZXQgYSBkZWZhdWx0IHNpemVzIGJhc2VkIG9uIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRlZmF1bHRBdHRhY2hlZFNpemUgPSAzMDA7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1BdHRhY2hlZFdpZHRoID0gNzUwOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtQXR0YWNoZWRIZWlnaHQgPSAyNTA7CisK
ICAgICBpZiAobV9hdHRhY2htZW50U2lkZSA9PSBBdHRhY2htZW50U2lkZUJvdHRvbSkgewogICAg
ICAgICB1bnNpZ25lZCBtYXhpbXVtQXR0YWNoZWRIZWlnaHQgPSBwbGF0Zm9ybUluc3BlY3RlZFdp
bmRvd0hlaWdodCgpICogMyAvIDQ7CiAgICAgICAgIHBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dI
ZWlnaHQoc3RkOjptYXgobWluaW11bUF0dGFjaGVkSGVpZ2h0LCBzdGQ6Om1pbihkZWZhdWx0QXR0
YWNoZWRTaXplLCBtYXhpbXVtQXR0YWNoZWRIZWlnaHQpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCBjNmM2Njhj
YjVmZmM4YzViNmVmMDk2ZTNjOTI5Y2IyNTQ1YzA5ZjlkLi45Y2VjZjQxNTVkMjQ5OTQzYjUwZmQ1
MjM4OGJhYjFjOTFmMWVmYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIldL
VVJMQ0YuaCIKICNpbXBvcnQgIldLVmlld1ByaXZhdGUuaCIKICNpbXBvcnQgIldlYkluc3BlY3Rv
ck1lc3NhZ2VzLmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgiCiAjaW1wb3J0
ICJXZWJQYWdlR3JvdXAuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2Vi
UHJlZmVyZW5jZXMuaCIKQEAgLTExNCw3ICsxMTUsNyBAQCAtIChJQkFjdGlvbilhdHRhY2hCb3R0
b206KGlkKXNlbmRlcgogCiAtICh2b2lkKWNsb3NlCiB7Ci0gICAgX2luc3BlY3RvclByb3h5ID0g
MDsKKyAgICBfaW5zcGVjdG9yUHJveHkgPSBudWxscHRyOwogfQogCiAtICh2b2lkKXdpbmRvd0Rp
ZE1vdmU6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCkBAIC00MTgsNyArNDE5LDcgQEAg
V2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQ
YWdlKCkKICAgICAgICAgICAgIGluaXRpYWxSZWN0ID0gW05TV2luZG93IGNvbnRlbnRSZWN0Rm9y
RnJhbWVSZWN0OndpbmRvd0ZyYW1lIHN0eWxlTWFzazp3aW5kb3dTdHlsZU1hc2tdOwogICAgIH0K
IAotICAgIG1faW5zcGVjdG9yVmlldyA9IGFkb3B0TlMoW1tXS1dlYkluc3BlY3RvcldLVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTppbml0aWFsUmVjdCBjb250ZXh0UmVmOnRvQVBJKCZwYWdlKCkt
PnByb2Nlc3MoKS5jb250ZXh0KCkpIHBhZ2VHcm91cFJlZjp0b0FQSShpbnNwZWN0b3JQYWdlR3Jv
dXAoKSkgcmVsYXRlZFRvUGFnZTp0b0FQSShtX3BhZ2UpXSk7CisgICAgbV9pbnNwZWN0b3JWaWV3
ID0gYWRvcHROUyhbW1dLV2ViSW5zcGVjdG9yV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmlu
aXRpYWxSZWN0IGNvbnRleHRSZWY6dG9BUEkoJmluc3BlY3RvckNvbnRleHQoKSkgcGFnZUdyb3Vw
UmVmOnRvQVBJKGluc3BlY3RvclBhZ2VHcm91cCgpKSByZWxhdGVkVG9QYWdlOm51bGxwdHJdKTsK
ICAgICBBU1NFUlQobV9pbnNwZWN0b3JWaWV3KTsKIAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPD0gMTA5MApAQCAtNDk5LDEzICs1MDAsMTMgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1EaWRDbG9zZSgpCiAgICAgaWYgKG1faW5zcGVjdG9yV2luZG93KSB7
CiAgICAgICAgIFttX2luc3BlY3RvcldpbmRvdyBzZXREZWxlZ2F0ZTpuaWxdOwogICAgICAgICBb
bV9pbnNwZWN0b3JXaW5kb3cgb3JkZXJPdXQ6bmlsXTsKLSAgICAgICAgbV9pbnNwZWN0b3JXaW5k
b3cgPSAwOworICAgICAgICBtX2luc3BlY3RvcldpbmRvdyA9IG5pbDsKICAgICB9CiAKLSAgICBt
X2luc3BlY3RvclZpZXcgPSAwOworICAgIG1faW5zcGVjdG9yVmlldyA9IG5pbDsKIAogICAgIFtt
X2luc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIgY2xvc2VdOwotICAgIG1faW5zcGVjdG9yUHJveHlP
YmpDQWRhcHRlciA9IDA7CisgICAgbV9pbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyID0gbmlsOwog
fQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUhpZGUoKQpAQCAtNTE4LDcgKzUx
OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSGlkZSgpCiAgICAgaWYgKG1f
aW5zcGVjdG9yV2luZG93KSB7CiAgICAgICAgIFttX2luc3BlY3RvcldpbmRvdyBzZXREZWxlZ2F0
ZTpuaWxdOwogICAgICAgICBbbV9pbnNwZWN0b3JXaW5kb3cgb3JkZXJPdXQ6bmlsXTsKLSAgICAg
ICAgbV9pbnNwZWN0b3JXaW5kb3cgPSAwOworICAgICAgICBtX2luc3BlY3RvcldpbmRvdyA9IG5p
bDsKICAgICB9CiB9CiAKQEAgLTU4OSw3ICs1OTAsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYg
YwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFtjb250ZW50Q29weSB3cml0ZVRvVVJMOmFj
dHVhbFVSTCBhdG9taWNhbGx5OllFUyBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJv
cjpOVUxMXTsKIAotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBt
X2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKICAgICB9OwogCiAgICAgaWYgKCFmb3JjZVNhdmVE
aWFsb2cpIHsKQEAgLTYyMyw3ICs2MjQsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJgogICAg
IFtoYW5kbGUgd3JpdGVEYXRhOltjb250ZW50IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXV07CiAgICAgW2hhbmRsZSBjbG9zZUZpbGVdOwogCi0gICAgbV9wYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBh
YnNvbHV0ZVN0cmluZ10pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGlkQXBwZW5kKFthY3R1
YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiB9CiAK
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OndpbmRvd0ZyYW1lRGlkQ2hhbmdlKCkKQEAgLTcwOCw3
ICs3MDksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaCgpCiAgICAg
aWYgKG1faW5zcGVjdG9yV2luZG93KSB7CiAgICAgICAgIFttX2luc3BlY3RvcldpbmRvdyBzZXRE
ZWxlZ2F0ZTpuaWxdOwogICAgICAgICBbbV9pbnNwZWN0b3JXaW5kb3cgb3JkZXJPdXQ6bmlsXTsK
LSAgICAgICAgbV9pbnNwZWN0b3JXaW5kb3cgPSAwOworICAgICAgICBtX2luc3BlY3RvcldpbmRv
dyA9IG5pbDsKICAgICB9CiAKICAgICBbbV9pbnNwZWN0b3JWaWV3IHJlbW92ZUZyb21TdXBlcnZp
ZXddOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDY3YzM2ZjA4MzlkMDkzZDdmMWRlMDIwNjIyZWFmMmJlZTZiZDUxMDUuLmQwYTky
Zjk2YzM3YzFmMGIzZjQxMDIzMGM0MDBhYThkMGI4OTYwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ5NSwxMCArNDk1LDEw
IEBACiAJCTFBRkU0MzY1MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGRTQzNjMxOEI2QzA4MTAw
OUM3QTQ4IC8qIFVJRGVsZWdhdGUubW0gKi87IH07CiAJCTFBRkU0MzY2MThCNkMwODEwMDlDN0E0
OCAvKiBVSURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUZFNDM2NDE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5oICovOyB9Owog
CQkxQUZGNDkwMDE4MzNERTc4MDA5QUIxNUEgLyogV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRkY0OEZFMTgz
M0RFNzgwMDlBQjE1QSAvKiBXS0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwICovOyB9OworCQkxQzg5
MUQ2NTE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4OTFENjIxOUIxMjRGRjAwQkE3OURE
IC8qIFdlYkluc3BlY3RvclVJLmNwcCAqLzsgfTsKKwkJMUM4OTFENjYxOUIxMjRGRjAwQkE3OURE
IC8qIFdlYkluc3BlY3RvclVJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQzg5MUQ2MzE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCAq
LzsgfTsKIAkJMUM4QUU3NjExOTkyRjYzQTAwQUJGNkVDIC8qIERvY2tCb3R0b21MZWdhY3kucGRm
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhBRTc1
RjE5OTJGNjJGMDBBQkY2RUMgLyogRG9ja0JvdHRvbUxlZ2FjeS5wZGYgKi87IH07CiAJCTFDOEFF
NzYyMTk5MkY2M0MwMEFCRjZFQyAvKiBEb2NrUmlnaHRMZWdhY3kucGRmIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhBRTc2MDE5OTJGNjJGMDBBQkY2
RUMgLyogRG9ja1JpZ2h0TGVnYWN5LnBkZiAqLzsgfTsKLQkJMUM4RTI1QTgxMjcwRTNCQjAwQkM3
QkQwIC8qIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyNTZCMTI3MERFMzgwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAgKi87IH07Ci0JCTFDOEUyNUE5MTI3MEUzQkMw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTI1NkExMjcwREUzODAwQkM3QkQwIC8q
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggKi87IH07CiAJCTFDOEUyODIwMTI3NUQxNTQw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDOEUyODFFMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3Iu
aCAqLzsgfTsKIAkJMUM4RTI4MjExMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjgxRjEy
NzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmNwcCAqLzsgfTsKIAkJMUM4RTI4MzQxMjc1
RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMjgzMjEyNzVENzM4MDBCQzdCRDAgLyogV2Vi
SW5zcGVjdG9yUHJveHkuaCAqLzsgfTsKQEAgLTUxMCw4ICs1MTAsMTAgQEAKIAkJMUNBOEI5MzYx
MjdDNzc0RTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBOEI5MzUxMjdDNzc0RTAwNTc2QzJC
IC8qIFdlYkluc3BlY3RvclByb3h5TWFjLm1tICovOyB9OwogCQkxQ0E4Qjk0NTEyN0M4ODJBMDA1
NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBOEI5NDMxMjdDODgyQTAwNTc2
QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMUNB
OEI5NDYxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQThCOTQ0MTI3Qzg4
MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggKi87IH07Ci0JCTFDQThC
OTU0MTI3Qzg5MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yTWFjLm1tICovOyB9OworCQkxQ0E4Qjk1NDEyN0M4OTE1MDA1NzZDMkIg
LyogV2ViSW5zcGVjdG9yVUlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yVUlN
YWMubW0gKi87IH07CiAJCTFDQjc1Qzk0MTcwMUU4ODAwMDlGODA5RiAvKiBEb2NrUmlnaHQucGRm
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0I3NUM5
MzE3MDFFODgwMDA5RjgwOUYgLyogRG9ja1JpZ2h0LnBkZiAqLzsgfTsKKwkJMUNCQkU0QTAxOUI2
NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQkJFNDlFMTlCNjZDNTMw
MDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTFD
QkJFNEExMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0JCRTQ5RjE5QjY2QzUz
MDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oICovOyB9OwogCQkxQ0JDOTQ1RTE2
NTE1RUQyMDBENjhBQUUgLyogRG9ja0JvdHRvbS5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQkM5NDVEMTY1MTVFRDIwMEQ2OEFBRSAvKiBEb2Nr
Qm90dG9tLnBkZiAqLzsgfTsKIAkJMUYzMzVCQzAxODVCODRGMDAwMUEyMDFBIC8qIFdLV2ViUHJv
Y2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUYzMzVCQkYxODVCODREODAwMUEyMDFBIC8qIFdLV2ViUHJvY2Vzc1Bs
dWdJbkxvYWREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTFGNjA0QkE4MTg4OUZBNzQwMEVFMDM5NSAvKiBXS1JlbmRlcmluZ1Byb2dy
ZXNzRXZlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxRjYwNEJBNjE4ODlGQTc0MDBFRTAzOTUgLyogV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDc1
LDEwICsyNDc3LDExIEBACiAJCTFBRkY0OEZFMTgzM0RFNzgwMDlBQjE1QSAvKiBXS0RlcHJlY2F0
ZWRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tE
ZXByZWNhdGVkRnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUJC
NDE3QzkxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0Q2hlY2tlckNvbXBsZXRpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzc3QzE5NTEyODhBODcyMDA2QTc0MkYg
LyogV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDODkxRDYyMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JVSS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDODkxRDYzMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJ
bnNwZWN0b3JVSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0
b3JVSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzg5MUQ2NDE5QjEyNEZGMDBC
QTc5REQgLyogV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDOEFFNzVGMTk5MkY2MkYwMEFCRjZFQyAvKiBEb2NrQm90dG9tTGVnYWN5LnBkZiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBkZjsg
bmFtZSA9IERvY2tCb3R0b21MZWdhY3kucGRmOyBwYXRoID0gUmVzb3VyY2VzL0RvY2tCb3R0b21M
ZWdhY3kucGRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzhBRTc2MDE5OTJGNjJG
MDBBQkY2RUMgLyogRG9ja1JpZ2h0TGVnYWN5LnBkZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBkZjsgbmFtZSA9IERvY2tSaWdodExlZ2Fj
eS5wZGY7IHBhdGggPSBSZXNvdXJjZXMvRG9ja1JpZ2h0TGVnYWN5LnBkZjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUM4RTI1NkExMjcwREUzODAwQkM3QkQwIC8qIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFD
OEUyNTZCMTI3MERFMzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEUyODFFMTI3NUQx
NTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOEUy
ODFGMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM4RTI4MzIxMjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDg4LDExICsyNDkxLDEzIEBACiAJCTFD
OEUyQTFDMTI3NzgzM0YwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQzhFMkEzMTEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9y
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDOEUyQTMyMTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3JNZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViSW5zcGVjdG9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yVUlNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JVSU1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBOEI5MzUxMjdDNzc0RTAwNTc2QzJCIC8qIFdl
Ykluc3BlY3RvclByb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViSW5zcGVjdG9yUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQThCOTQzMTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNw
ZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5TWVz
c2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCNzVDOTMxNzAxRTg4MDAw
OUY4MDlGIC8qIERvY2tSaWdodC5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7IG5hbWUgPSBEb2NrUmlnaHQucGRmOyBwYXRoID0g
UmVzb3VyY2VzL0RvY2tSaWdodC5wZGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
QkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JVSU1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQkJFNDlG
MTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCQzk0NUQxNjUxNUVEMjAwRDY4QUFFIC8qIERvY2tCb3R0
b20ucGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
aW1hZ2UucGRmOyBuYW1lID0gRG9ja0JvdHRvbS5wZGY7IHBhdGggPSBSZXNvdXJjZXMvRG9ja0Jv
dHRvbS5wZGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQzQxN0M5MTJDMDBDQ0Ew
MDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGV4dENoZWNrZXJDb21wbGV0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFGMDE4MTY5MTg1OERDMTUwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5G
cmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYlByb2Nlc3NQbHVn
SW5GcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTY2Miw4ICs1NjY3LDYg
QEAKIAkJCQlCQzFCRTFERTEyRDU0QTQxMDAwNEEyMjggLyogV2ViR2VvbG9jYXRpb25DbGllbnQu
aCAqLywKIAkJCQlCQzExMUE1OTExMkY0RkJCMDAzMzdCQUIgLyogV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcCAqLywKIAkJCQlCQzAzMkQ2RDEwRjQzNzhEMDA1OEMxNUEgLyogV2ViSW5zcGVjdG9yQ2xp
ZW50LmggKi8sCi0JCQkJMUM4RTI1NkIxMjcwREUzODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50LmNwcCAqLywKLQkJCQkxQzhFMjU2QTEyNzBERTM4MDBCQzdCRDAgLyogV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLywKIAkJCQkzMTA5OTk3MTE0NkM3NTlCMDAyOURF
QjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCAqLywKIAkJCQkzMTA5OTk2ODE0NkM3MUY1
MDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggKi8sCiAJCQkJNTEyMTI3QzExOTA4
MjM5QTAwREFGMzVDIC8qIFdlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwICovLApAQCAtNTcyMyw2
ICs1NzI2LDkgQEAKIAkJCQkxQzhFMjgxRjEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9y
LmNwcCAqLywKIAkJCQkxQzhFMjgxRTEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmgg
Ki8sCiAJCQkJMUM4RTJBMUMxMjc3ODMzRjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5tZXNzYWdl
cy5pbiAqLywKKwkJCQkxQzg5MUQ2MjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUku
Y3BwICovLAorCQkJCTFDODkxRDYzMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5o
ICovLAorCQkJCTFDODkxRDY0MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5tZXNz
YWdlcy5pbiAqLywKIAkJCQlCQzg1N0Y4NDEyQjgyRDBCMDBFREVCMkUgLyogV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuY3BwICovLAogCQkJCUJDODU3RjgzMTJCODJEMEIwMEVERUIyRSAvKiBX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oICovLAogCQkJCUJDOTYzRDZBMTEzREQxOTIwMDU3
NEJFMiAvKiBXZWJQYWdlLmNwcCAqLywKQEAgLTY0NzEsNyArNjQ3Nyw3IEBACiAJCQkJNTE5MkQ1
NzUxOTYxRkQwMzAwQ0QxOUFBIC8qIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0gKi8sCiAJ
CQkJMUFBRjI2MzcxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLmggKi8sCiAJCQkJMUFBRjI2MzYxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLm1tICovLAotCQkJCTFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JNYWMubW0gKi8sCisJCQkJMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdl
Ykluc3BlY3RvclVJTWFjLm1tICovLAogCQkJCUJDOTYzRDZEMTEzREQxQTUwMDU3NEJFMiAvKiBX
ZWJQYWdlTWFjLm1tICovLAogCQkJCTI5Q0Q1NUE4MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oICovLAogCQkJCTI5Q0Q1NUE5MTI4RTI5NEYwMDEz
M0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSAqLywKQEAgLTY4Mjcs
NiArNjgzMyw4IEBACiAJCQkJMUM4RTJBMzIxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rv
ck1lc3NhZ2VzLmggKi8sCiAJCQkJMUNBOEI5NDMxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3Bl
Y3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQ0E4Qjk0NDEyN0M4ODJBMDA1
NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oICovLAorCQkJCTFDQkJFNDlFMTlC
NjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJ
CQkJMUNCQkU0OUYxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCAq
LywKIAkJCQkzM0QzQTNDNDEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTMzRDNBM0M1MTMzOTYxNzkwMDcwOUJFNCAvKiBX
ZWJNZWRpYUNhY2hlTWFuYWdlck1lc3NhZ2VzLmggKi8sCiAJCQkJMzNEM0EzQzYxMzM5NjE3OTAw
NzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICov
LApAQCAtNzQzOCw2ICs3NDQ2LDcgQEAKIAkJCQkyREFDRTY0RTE4QURCRkYwMDBFNENBNzYgLyog
X1dLVGh1bWJuYWlsVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTU3OEI4MzEy
MDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjZBMjVGREQx
MkFEQzZDQzAwREM0MENDIC8qIFdlYkRhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMUM4OTFENjYxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGNjJBNzZCNzEyQjFCMjVGMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2Vy
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2MkE3NjVEMTJCMUFCQzMwMDA1RjFCNiAv
KiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2QUI1NDEx
OTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRvci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC03NDk0LDcgKzc1MDMsNiBAQAogCQkJCTFDOEUyODIwMTI3NUQxNTQwMEJDN0JEMCAv
KiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0NDMTY3MTg5MDZBQ0YwMDFF
NkVEOCAvKiBXS1dlYlZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDgyMTBGNDM3OEQw
MDU4QzE1QSAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTFDOEUy
NUE5MTI3MEUzQkMwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUM4RTJBMzYxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzhFMjgzNDEyNzVENzM4MDBCQzdCRDAgLyog
V2ViSW5zcGVjdG9yUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQThCOTQ2MTI3Qzg4MkEw
MDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAg
LTc3NjIsNiArNzc3MCw3IEBACiAJCQkJRjYzNDQ0NUQxMkE4ODVFOTAwMDYxMkQ4IC8qIFdLU2Vj
dXJpdHlPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUYwOEI4MTkyNjlFNkQwMEI2Mzkw
QyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM0MDc2MDQxMjRGRjAyNzAwNjhGMjBBIC8qIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkxQ0JCRTRBMTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVj
dG9yVUlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDQjRFNEMxOEJCRTA0NDAwMEZD
RkM5IC8qIFdLQ29udGVudFZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QTY0RTU3MThGMzhG
NDYwMEVCMzBGMSAvKiBfV0tGb3JtSW5wdXRTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
RjYwNEJBQTE4ODlGQkI4MDBFRTAzOTUgLyogV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0ludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTg4NjUsNiArODg3NCw3IEBACiAJCQkJMDBCOTY2MTkx
OEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUU1
QjdGQjExRTdBRUQyMDBCQTY3NjcgLyogTmV0c2NhcGVQbHVnaW5NYWMubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3QzM2MUQ3MjE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUM4OTFENjUxOUIxMjRGRjAwQkE3OUREIC8qIFdl
Ykluc3BlY3RvclVJLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNEE5QzU1MTJCODE2Q0YwMDhG
RTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRB
OUM5QTEyQjgyMUNEMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQkxQUE1ODg5MzExRUU3MDQwMDA2MUI4ODIgLyogTmV0c2NhcGVQbHVnaW5T
dHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04OTAzLDYgKzg5MTMsNyBAQAogCQkJCTFBMkQ4
NDM5MTI3RjY1RDUwMDFFQjk2MiAvKiBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUFGMDhBRDE5MjY5MzY3MDBCNjM5MEMgLyog
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ4MkE2
MTI3RjRFQUIwMDFFQjk2MiAvKiBOUE9iamVjdFByb3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTFDQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJEODJBODEyN0Y0RUFCMDAxRUI5NjIgLyogTlBS
ZW1vdGVPYmplY3RNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyMTYxQjExMUYzNzY2NDAw
OEFEMEY1IC8qIE5QUnVudGltZU9iamVjdE1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTIx
NjJCMDExRjM4OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtOTE2Miw4ICs5MTczLDcgQEAKIAkJCQlCQ0NGNkFCQzEyQzkxRUY5MDA4RjlDMzUg
LyogV2ViSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4RTI4MjExMjc1RDE1NDAwQkM3
QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzExMUE2MDExMkY0
RkJCMDAzMzdCQUIgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTFDOEUyNUE4MTI3MEUzQkIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQkxQ0E4Qjk1NDEyN0M4OTE1MDA1NzZDMkIgLyogV2ViSW5z
cGVjdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUNBOEI5NTQxMjdDODkxNTAwNTc2QzJC
IC8qIFdlYkluc3BlY3RvclVJTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4RTJBMzUxMjc3
ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQzhFMjgzNTEyNzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHku
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBOEI5MzYxMjdDNzc0RTAwNTc2QzJCIC8qIFdlYklu
c3BlY3RvclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5jcHAKaW5kZXggNTAxZDQxY2Q5MTQ3NmI2Mjc2OTZmMzk4NDU5OWJlNjM4MDdmZmY1Mi4uODU5
MzU4YmNjY2IxODI2YmU5MzJmZDFjNTIwNDZlZmMyYzc4NzY4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtODQsMjAgKzg0LDIxIEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojpp
bnNwZWN0b3JEZXN0cm95ZWQoKQogCiBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRy
b2xsZXIqIGNvbnRyb2xsZXIpCiB7Ci0gICAgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSA9IGNvbnRy
b2xsZXItPmlzVW5kZXJUZXN0KCkgPyBtX3BhZ2UtPmluc3BlY3RvcigpLT5jcmVhdGVJbnNwZWN0
b3JQYWdlRm9yVGVzdCgpIDogbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y3JlYXRlSW5zcGVjdG9yUGFn
ZSgpOwotICAgIEFTU0VSVF9VTlVTRUQoaW5zcGVjdG9yUGFnZSwgaW5zcGVjdG9yUGFnZSk7Ci0g
ICAgcmV0dXJuIHRoaXM7CisgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y3JlYXRlSW5zcGVjdG9y
UGFnZShjb250cm9sbGVyLT5pc1VuZGVyVGVzdCgpKTsKKworICAgIHJldHVybiBtX3BhZ2UtPmlu
c3BlY3RvcigpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJbnNwZWN0b3JG
cm9udGVuZCgpCiB7CiAgICAgaWYgKG1fcGFnZS0+aW5zcGVjdG9yKCkpCi0gICAgICAgIG1fcGFn
ZS0+aW5zcGVjdG9yKCktPmRpZENsb3NlKCk7CisgICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCkt
PmNsb3NlRnJvbnRlbmQoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmJyaW5nRnJv
bnRlbmRUb0Zyb250KCkKIHsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5icmluZ1RvRnJvbnQo
KTsKKyAgICBpZiAobV9wYWdlLT5pbnNwZWN0b3IoKSkKKyAgICAgICAgbV9wYWdlLT5pbnNwZWN0
b3IoKS0+YnJpbmdUb0Zyb250KCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRS
ZXNpemVNYWluRnJhbWUoRnJhbWUqKQpAQCAtMTk3LDM0ICsxOTgsNiBAQCB2b2lkIFdlYkluc3Bl
Y3RvckNsaWVudDo6ZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQpCiB9CiAjZW5k
aWYKIAotYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSBtX3Bh
Z2UtPmluc3BlY3RvcigpOwotICAgIGlmICghaW5zcGVjdG9yKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAgICBpZiAoaW5zcGVjdG9yLT5o
YXNSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpKSB7Ci0gICAgICAgIGluc3BlY3Rvci0+c2VuZE1l
c3NhZ2VUb1JlbW90ZUZyb250ZW5kKG1lc3NhZ2UpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0jZW5kaWYKLQotICAgIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UgPSBpbnNwZWN0b3ItPmlu
c3BlY3RvclBhZ2UoKTsKLSAgICBpZiAoaW5zcGVjdG9yUGFnZSkKLSAgICAgICAgcmV0dXJuIGRv
RGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2UoaW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKSwg
bWVzc2FnZSk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgV2ViSW5zcGVjdG9yQ2xp
ZW50OjpzdXBwb3J0c0ZyYW1lSW5zdHJ1bWVudGF0aW9uKCkKLXsKLSNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpCi0gICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpwYWdlT3ZlcmxheURlc3Ryb3llZChQYWdl
T3ZlcmxheSopCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA3MDMzYmRlY2Ew
ODI2MDU2YTgwY2QxMDlhNDRmODJhMzAxOTlkZTZiLi43OThjYWM3YTgzYzA2N2EyMzNhNTk5MGE5
ZDRmNWZhNDE0MGIzZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTQ1LDIyICs0
NSwyMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiBjbGFzcyBSZXBhaW50
SW5kaWNhdG9yTGF5ZXJDbGllbnQ7CiAKLWNsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwsIHByaXZhdGUgUGFnZU92ZXJsYXk6OkNsaWVudCB7CitjbGFzcyBXZWJJbnNw
ZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwcml2YXRlIFBh
Z2VPdmVybGF5OjpDbGllbnQgewogZnJpZW5kIGNsYXNzIFJlcGFpbnRJbmRpY2F0b3JMYXllckNs
aWVudDsKIHB1YmxpYzoKICAgICBXZWJJbnNwZWN0b3JDbGllbnQoV2ViUGFnZSopOwogICAgIHZp
cnR1YWwgfldlYkluc3BlY3RvckNsaWVudCgpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9p
ZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAgICAvLyBXZWJDb3JlOjpJbnNwZWN0
b3JDbGllbnQKKyAgICB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYnJp
bmdGcm9udGVuZFRvRnJvbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzaXpl
TWFpbkZyYW1lKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlciopIG92ZXJyaWRlOworICAgIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVu
ZCgpIG92ZXJyaWRlOworICAgIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJlc2l6ZU1haW5GcmFtZShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBoaWRlSGlnaGxpZ2h0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBoaWdobGlnaHQoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGhpZGVIaWdobGlnaHQoKSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKElP
UykKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0luc3BlY3RvckluZGljYXRpb24oKSBvdmVycmlkZTsK
QEAgLTcyLDEwICs3Myw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG92ZXJyaWRlc1No
b3dQYWludFJlY3RzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1
YWwgdm9pZCBzaG93UGFpbnRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZyYW1lSW5zdHJ1bWVudGF0
aW9uKCk7Ci0KICAgICAvLyBQYWdlT3ZlcmxheTo6Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHBh
Z2VPdmVybGF5RGVzdHJveWVkKFBhZ2VPdmVybGF5Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSopIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDQzZGFlMTBiM2QwYzViNzdjMTQ3OWY1ZmY0YjIyODhhNGI2YjQ0
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Lmgi
Ci0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotCi0jaW5jbHVkZSAiV2ViSW5zcGVjdG9yLmgiCi0j
aW5jbHVkZSAiV2ViUGFnZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxl
ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudEJhc2UuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViUGFnZSogcGFn
ZSwgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSkKLSAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwoJnBhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgaW5zcGVjdG9y
UGFnZS0+Y29yZVBhZ2UoKSwgc3RkOjptYWtlX3VuaXF1ZTxTZXR0aW5ncz4oKSkKLSAgICAsIG1f
cGFnZShwYWdlKQotewotfQotCi1TdHJpbmcgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Omxv
Y2FsaXplZFN0cmluZ3NVUkwoKQotewotICAgIHJldHVybiBtX3BhZ2UtPmluc3BlY3RvcigpLT5s
b2NhbGl6ZWRTdHJpbmdzVVJMKCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OmJyaW5nVG9Gcm9udCgpCi17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YnJpbmdUb0Zy
b250KCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93
KCkKLXsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNj
b25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNw
ZWN0b3JEZXN0cm95ZWQpOwotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmRpZENsb3NlKCk7Ci19
Ci0KLWJvb2wgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNhblNhdmUoKQotewotICAgIHJl
dHVybiBtX3BhZ2UtPmluc3BlY3RvcigpLT5jYW5TYXZlKCk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCi17Ci0g
ICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+c2F2ZShmaWxlbmFtZSwgY29udGVudCwgYmFzZTY0RW5j
b2RlZCwgZm9yY2VTYXZlQXMpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
OjphcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KQot
ewotICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmFwcGVuZChmaWxlbmFtZSwgY29udGVudCk7Ci19
Ci0KLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmF0dGFjaFdpbmRvdyhEb2NrU2lk
ZSBkb2NrU2lkZSkKLXsKLSAgICBzd2l0Y2ggKGRvY2tTaWRlKSB7Ci0gICAgY2FzZSBJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU6OlVuZG9ja2VkOgotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6RG9ja1NpZGU6OkJvdHRvbToKLSAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YXR0
YWNoQm90dG9tKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OkRvY2tTaWRlOjpSaWdodDoKLSAgICAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+YXR0
YWNoUmlnaHQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpkZXRhY2hXaW5kb3coKQotewotICAgIG1fcGFnZS0+aW5zcGVjdG9y
KCktPmRldGFjaCgpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRB
dHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCi17Ci0gICAgbV9wYWdlLT5pbnNw
ZWN0b3IoKS0+c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVpZ2h0KTsKLX0KLQotdm9pZCBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3
aWR0aCkKLXsKLSAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5zZXRBdHRhY2hlZFdpbmRvd1dpZHRo
KHdpZHRoKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0VG9vbGJh
ckhlaWdodCh1bnNpZ25lZCBoZWlnaHQpCi17Ci0gICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+c2V0
VG9vbGJhckhlaWdodChoZWlnaHQpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50OjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQotewotICAg
IG1fcGFnZS0+aW5zcGVjdG9yKCktPmluc3BlY3RlZFVSTENoYW5nZWQodXJsU3RyaW5nKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNw
cAppbmRleCA1NjEyOTdhMzA3NTBjZGVmMDM5NzBhN2EwZmRmOWY2OWUyYWNjOGZmLi40Nzc0MzQx
OTg4M2MzMGVmNWNhOTE3YjBjN2VjOTdhM2JlNjAyNmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMTE3ICsyNyw4MiBA
QAogI2luY2x1ZGUgIldlYkluc3BlY3Rvci5oIgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKKwog
I2luY2x1ZGUgIldlYkZyYW1lLmgiCi0jaW5jbHVkZSAiV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYklu
c3BlY3RvclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgotI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DaHJv
bWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZUxvYWRSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JQYWdl
QWdlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRCYXNlLmg+Ci0jaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2lu
ZG93RmVhdHVyZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBjb25z
dCBmbG9hdCBtaW5pbXVtQXR0YWNoZWRIZWlnaHQgPSAyNTA7CitzdGF0aWMgY29uc3QgZmxvYXQg
bWF4aW11bUF0dGFjaGVkSGVpZ2h0UmF0aW8gPSAwLjc1Oworc3RhdGljIGNvbnN0IGZsb2F0IG1p
bmltdW1BdHRhY2hlZFdpZHRoID0gNzUwOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1Jl
ZlB0cjxXZWJJbnNwZWN0b3I+IFdlYkluc3BlY3Rvcjo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UsIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQorUGFzc1JlZlB0cjxXZWJJ
bnNwZWN0b3I+IFdlYkluc3BlY3Rvcjo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJJbnNwZWN0b3IocGFnZSwgZnJvbnRlbmRDaGFubmVsKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJJbnNwZWN0b3IocGFnZSkpOwogfQogCi1XZWJJbnNw
ZWN0b3I6OldlYkluc3BlY3RvcihXZWJQYWdlKiBwYWdlLCBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCkKK1dlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlBhZ2Uq
IHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKLSAgICAsIG1faW5zcGVjdG9yUGFnZShudWxscHRy
KQotICAgICwgbV9mcm9udGVuZENsaWVudChudWxscHRyKQotICAgICwgbV9mcm9udGVuZENoYW5u
ZWwoZnJvbnRlbmRDaGFubmVsKQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICwgbV9oYXNMb2Nh
bGl6ZWRTdHJpbmdzVVJMKGZhbHNlKQotI2VuZGlmCi0jaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJW
RVIpCi0gICAgLCBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKGZhbHNlKQotI2VuZGlmCisgICAg
LCBtX2F0dGFjaGVkKGZhbHNlKQorICAgICwgbV9wcmV2aW91c0NhbkF0dGFjaChmYWxzZSkKIHsK
IH0KIAogLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yQ2xpZW50Ci1XZWJQYWdlKiBXZWJJbnNw
ZWN0b3I6OmNyZWF0ZUluc3BlY3RvclBhZ2UoKQordm9pZCBXZWJJbnNwZWN0b3I6OmNyZWF0ZUlu
c3BlY3RvclBhZ2UoYm9vbCB1bmRlclRlc3QpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgQVNTRVJUKCFtX2luc3BlY3RvclBhZ2UpOwotICAgIEFT
U0VSVCghbV9mcm9udGVuZENsaWVudCk7Ci0KLSAgICB1aW50NjRfdCBpbnNwZWN0b3JQYWdlSUQg
PSAwOwotICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIGlm
ICghV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpDcmVhdGVJbnNwZWN0b3JQYWdlKCksCi0g
ICAgICAgICAgICBNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZUluc3BlY3RvclBh
Z2U6OlJlcGx5KGluc3BlY3RvclBhZ2VJRCwgcGFyYW1ldGVycyksCi0gICAgICAgICAgICBtX3Bh
Z2UtPnBhZ2VJRCgpLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzOjptYXgoKSkpIHsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWlu
c3BlY3RvclBhZ2VJRCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisjaWYgT1MoREFSV0lOKQor
ICAgIG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7CisgICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1h
Y2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7
CisKKyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZlcihs
aXN0ZW5pbmdQb3J0KTsKKyAgICBJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkNsaWVudFBvcnQo
bGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOworI2VsaWYgVVNFKFVOSVhf
RE9NQUlOX1NPQ0tFVFMpCisgICAgSVBDOjpDb25uZWN0aW9uOjpTb2NrZXRQYWlyIHNvY2tldFBh
aXIgPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOworICAgIElQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmVyKHNvY2tldFBhaXIu
c2VydmVyKTsKKyAgICBJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkNsaWVudFBvcnQoc29ja2V0
UGFpci5jbGllbnQpOworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybjsK
KyNlbmRpZgogCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY3JlYXRlV2ViUGFnZShpbnNwZWN0
b3JQYWdlSUQsIHBhcmFtZXRlcnMpOwotICAgIG1faW5zcGVjdG9yUGFnZSA9IFdlYlByb2Nlc3M6
OnNoYXJlZCgpLndlYlBhZ2UoaW5zcGVjdG9yUGFnZUlEKTsKLSAgICBBU1NFUlQobV9pbnNwZWN0
b3JQYWdlKTsKKyAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3Jl
YXRlU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmVyLCB0aGlzLCBSdW5Mb29wOjpt
YWluKCkpOworICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5vcGVuKCk7CiAKLSAgICBhdXRvIGZy
b250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dD4obV9wYWdlLCBtX2luc3BlY3RvclBhZ2UpOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBmcm9u
dGVuZENsaWVudC5nZXQoKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCktPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChXVEY6Om1vdmUoZnJv
bnRlbmRDbGllbnQpKTsKLSAgICByZXR1cm4gbV9pbnNwZWN0b3JQYWdlOworICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpDcmVhdGVJbnNwZWN0b3JQYWdlKGNvbm5lY3Rpb25DbGllbnRQb3J0
LCBjYW5BdHRhY2hXaW5kb3coKSwgdW5kZXJUZXN0KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAK
LVdlYlBhZ2UqIFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zcGVjdG9yUGFnZUZvclRlc3QoKQordm9p
ZCBXZWJJbnNwZWN0b3I6OmNsb3NlRnJvbnRlbmQoKQogewotICAgIGlmICghbV9wYWdlKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JQYWdlKTsKLSAg
ICBBU1NFUlQoIW1fZnJvbnRlbmRDbGllbnQpOwotCi0gICAgdWludDY0X3QgaW5zcGVjdG9yUGFn
ZUlEID0gMDsKLSAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6Q3JlYXRlSW5zcGVjdG9yUGFnZUZv
clRlc3QoKSwKLSAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6Q3JlYXRl
SW5zcGVjdG9yUGFnZUZvclRlc3Q6OlJlcGx5KGluc3BlY3RvclBhZ2VJRCwgcGFyYW1ldGVycyks
Ci0gICAgICAgICAgICBtX3BhZ2UtPnBhZ2VJRCgpLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRz
OjptYXgoKSkpIHsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgaWYgKCFp
bnNwZWN0b3JQYWdlSUQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkuY3JlYXRlV2ViUGFnZShpbnNwZWN0b3JQYWdlSUQsIHBhcmFtZXRlcnMpOwot
ICAgIG1faW5zcGVjdG9yUGFnZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYlBhZ2UoaW5zcGVj
dG9yUGFnZUlEKTsKLSAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKLQotICAgIGF1dG8gZnJv
bnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
PihtX3BhZ2UsIG1faW5zcGVjdG9yUGFnZSk7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IGZyb250
ZW5kQ2xpZW50LmdldCgpOwotICAgIG1faW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdURjo6bW92ZShmcm9u
dGVuZENsaWVudCkpOwotICAgIHJldHVybiBtX2luc3BlY3RvclBhZ2U7Ci19CisgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCksIG1fcGFnZS0+cGFnZUlEKCkpOwogCi12b2lk
IFdlYkluc3BlY3Rvcjo6ZGVzdHJveUluc3BlY3RvclBhZ2UoKQotewotICAgIG1faW5zcGVjdG9y
UGFnZSA9IG51bGxwdHI7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IG51bGxwdHI7Ci0gICAgbV9m
cm9udGVuZENoYW5uZWwgPSBudWxscHRyOwotfQorICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5p
bnZhbGlkYXRlKCk7CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24gPSBudWxscHRyOwogCi0vLyBD
YWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudAotdm9pZCBXZWJJbnNwZWN0b3I6
OmRpZENsb3NlKCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGlkQ2xvc2UoKSwg
bV9wYWdlLT5wYWdlSUQoKSk7Ci0gICAgZGVzdHJveUluc3BlY3RvclBhZ2UoKTsKKyAgICBtX2F0
dGFjaGVkID0gZmFsc2U7CisgICAgbV9wcmV2aW91c0NhbkF0dGFjaCA9IGZhbHNlOwogfQogCiB2
b2lkIFdlYkluc3BlY3Rvcjo6YnJpbmdUb0Zyb250KCkKQEAgLTE0NSw1MSArMTEwLDYgQEAgdm9p
ZCBXZWJJbnNwZWN0b3I6OmJyaW5nVG9Gcm9udCgpCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6OkJyaW5nVG9Gcm9udCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBXZWJJbnNw
ZWN0b3I6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCi17Ci0g
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Okluc3BlY3RlZFVSTENoYW5nZWQodXJsU3RyaW5n
KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjpzYXZlKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNv
ZGVkLCBib29sIGZvcmNlU2F2ZUFzKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpT
YXZlKGZpbGVuYW1lLCBjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBmb3JjZVNhdmVBcyksIG1fcGFn
ZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6YXBwZW5kKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkKLXsKLSAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JQcm94eTo6QXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KSwgbV9wYWdlLT5wYWdlSUQoKSk7
Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yOjphdHRhY2hCb3R0b20oKQotewotICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpBdHRhY2hCb3R0b20oKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0K
LXZvaWQgV2ViSW5zcGVjdG9yOjphdHRhY2hSaWdodCgpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OkF0dGFjaFJpZ2h0KCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdl
Ykluc3BlY3Rvcjo6ZGV0YWNoKCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGV0
YWNoKCksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkluc3BlY3Rvcjo6c2V0QXR0
YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQotewotICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6OnNldEF0dGFjaGVkV2luZG93V2lkdGgodW5z
aWduZWQgd2lkdGgpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0dGFjaGVk
V2luZG93V2lkdGgod2lkdGgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJJbnNw
ZWN0b3I6OnNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQotewotICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpTZXRUb29sYmFySGVpZ2h0KGhlaWdodCksIG1fcGFnZS0+cGFnZUlE
KCkpOwotfQotCiAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yIG1lc3NhZ2VzCiB2b2lkIFdlYklu
c3BlY3Rvcjo6c2hvdygpCiB7CkBAIC0yMDEsMzQgKzEyMSwxNyBAQCB2b2lkIFdlYkluc3BlY3Rv
cjo6Y2xvc2UoKQogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LmNsb3NlKCk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yOjpkaWRTYXZlKGNvbnN0IFN0cmluZyYg
dXJsKQotewotICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOwotICAgIG1faW5zcGVjdG9yUGFn
ZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChtYWtlU3Ry
aW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5zYXZlZFVSTChcIiIsIHVybCwgIlwiKSIpKTsKLX0K
LQotdm9pZCBXZWJJbnNwZWN0b3I6OmRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAg
ICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQYWdl
KCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQobWFrZVN0cmluZygiSW5zcGVj
dG9yRnJvbnRlbmRBUEkuYXBwZW5kZWRUb1VSTChcIiIsIHVybCwgIlwiKSIpKTsKLX0KLQotdm9p
ZCBXZWJJbnNwZWN0b3I6OmF0dGFjaGVkQm90dG9tKCkKK3ZvaWQgV2ViSW5zcGVjdG9yOjpvcGVu
SW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgaWYgKG1fZnJvbnRlbmRD
bGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldEF0dGFjaGVkV2luZG93KEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6Qm90dG9tKTsKLX0KKyAgICBQYWdlKiBpbnNw
ZWN0ZWRQYWdlID0gbV9wYWdlLT5jb3JlUGFnZSgpOworICAgIEZyYW1lJiBpbnNwZWN0ZWRNYWlu
RnJhbWUgPSBpbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKTsKKyAgICBGcmFtZUxvYWRSZXF1ZXN0
IHJlcXVlc3QoaW5zcGVjdGVkTWFpbkZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCks
IFJlc291cmNlUmVxdWVzdCh1cmxTdHJpbmcpLCAiX2JsYW5rIik7CiAKLXZvaWQgV2ViSW5zcGVj
dG9yOjphdHRhY2hlZFJpZ2h0KCkKLXsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAg
ICAgbV9mcm9udGVuZENsaWVudC0+c2V0QXR0YWNoZWRXaW5kb3coSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OkRvY2tTaWRlOjpSaWdodCk7Ci19CisgICAgUGFnZSogbmV3UGFnZSA9IGluc3BlY3Rl
ZFBhZ2UtPmNocm9tZSgpLmNyZWF0ZVdpbmRvdygmaW5zcGVjdGVkTWFpbkZyYW1lLCByZXF1ZXN0
LCBXaW5kb3dGZWF0dXJlcygpLCBOYXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCksIE5hdmlnYXRpb25UeXBlTGlua0NsaWNrZWQpKTsKKyAgICBpZiAoIW5ld1BhZ2UpCisg
ICAgICAgIHJldHVybjsKIAotdm9pZCBXZWJJbnNwZWN0b3I6OmRldGFjaGVkKCkKLXsKLSAgICBp
ZiAobV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0QXR0YWNo
ZWRXaW5kb3coSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpVbmRvY2tlZCk7Cisg
ICAgbmV3UGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkubG9hZChyZXF1ZXN0KTsKIH0KIAogdm9p
ZCBXZWJJbnNwZWN0b3I6OmV2YWx1YXRlU2NyaXB0Rm9yVGVzdChjb25zdCBTdHJpbmcmIHNjcmlw
dCkKQEAgLTIzOSwxMDggKzE0Miw5NCBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6ZXZhbHVhdGVTY3Jp
cHRGb3JUZXN0KGNvbnN0IFN0cmluZyYgc2NyaXB0KQogdm9pZCBXZWJJbnNwZWN0b3I6OnNob3dD
b25zb2xlKCkKIHsKICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIo
KS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRlbmRD
bGllbnQtPnNob3dDb25zb2xlKCk7CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclVJOjpTaG93Q29uc29sZSgpLCAwKTsKIH0KIAogdm9pZCBXZWJJ
bnNwZWN0b3I6OnNob3dSZXNvdXJjZXMoKQogewogICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAobV9mcm9udGVuZENsaWVudCkKLSAg
ICAgICAgbV9mcm9udGVuZENsaWVudC0+c2hvd1Jlc291cmNlcygpOworICAgIG1fZnJvbnRlbmRD
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2hvd1Jlc291cmNlcygp
LCAwKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlEKQordm9pZCBXZWJJbnNwZWN0b3I6OnNob3dNYWluUmVzb3VyY2VGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlkZW50aWZpZXIpCiB7Ci0gICAgV2ViRnJhbWUqIGZyYW1lID0g
V2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJRCk7CisgICAgV2ViRnJhbWUqIGZy
YW1lID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJZGVudGlmaWVyKTsKICAg
ICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3BhZ2UtPmNvcmVQYWdlKCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQp
Ci0gICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShmcmFt
ZS0+Y29yZUZyYW1lKCkpOwotfQogCi12b2lkIFdlYkluc3BlY3Rvcjo6c3RhcnRKYXZhU2NyaXB0
RGVidWdnaW5nKCkKLXsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAgICAgIG1fZnJvbnRl
bmRDbGllbnQtPnNldERlYnVnZ2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgU3RyaW5nIGluc3BlY3Rv
ckZyYW1lSWRlbnRpZmllciA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLnBhZ2VBZ2VudCgpLT5mcmFtZUlkKGZyYW1lLT5jb3JlRnJhbWUoKSk7CisgICAgbV9mcm9u
dGVuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTaG93TWFpblJl
c291cmNlRm9yRnJhbWUoaW5zcGVjdG9yRnJhbWVJZGVudGlmaWVyKSwgMCk7CiB9CiAKLXZvaWQg
V2ViSW5zcGVjdG9yOjpzdG9wSmF2YVNjcmlwdERlYnVnZ2luZygpCit2b2lkIFdlYkluc3BlY3Rv
cjo6c3RhcnRQYWdlUHJvZmlsaW5nKCkKIHsKICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5zaG93KCk7Ci0gICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCi0gICAg
ICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldERlYnVnZ2luZ0VuYWJsZWQoZmFsc2UpOwotfQotCi12
b2lkIFdlYkluc3BlY3Rvcjo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCkKLXsK
LSAgICAvLyBObyBsb25nZXIgc3VwcG9ydGVkLgorICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U3RhcnRQYWdlUHJvZmlsaW5nKCksIDApOwog
fQogCi12b2lkIFdlYkluc3BlY3Rvcjo6c3RhcnRKYXZhU2NyaXB0UHJvZmlsaW5nKCkKK3ZvaWQg
V2ViSW5zcGVjdG9yOjpzdG9wUGFnZVByb2ZpbGluZygpCiB7Ci0gICAgLy8gTm8gbG9uZ2VyIHN1
cHBvcnRlZC4KKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5z
aG93KCk7CisgICAgbV9mcm9udGVuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJOjpTdG9wUGFnZVByb2ZpbGluZygpLCAwKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3I6
OnN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCkKK2Jvb2wgV2ViSW5zcGVjdG9yOjpjYW5BdHRhY2hX
aW5kb3coKQogewotICAgIC8vIE5vIGxvbmdlciBzdXBwb3J0ZWQuCi19CisgICAgLy8gRG9uJ3Qg
YWxsb3cgYXR0YWNoaW5nIHRvIGFub3RoZXIgaW5zcGVjdG9yIC0tIHR3byBpbnNwZWN0b3JzIGlu
IG9uZSB3aW5kb3cgaXMgdG9vIG11Y2ghCisgICAgaWYgKG1fcGFnZS0+aXNJbnNwZWN0b3JQYWdl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotdm9pZCBXZWJJbnNwZWN0b3I6OnN0YXJ0UGFn
ZVByb2ZpbGluZygpCi17Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkuc2hvdygpOwotICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQotICAgICAgICBtX2Zyb250
ZW5kQ2xpZW50LT5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQodHJ1ZSk7Ci19CisgICAgLy8g
SWYgd2UgYXJlIGFscmVhZHkgYXR0YWNoZWQsIGFsbG93IGF0dGFjaGluZyBhZ2FpbiB0byBhbGxv
dyBzd2l0Y2hpbmcgc2lkZXMuCisgICAgaWYgKG1fYXR0YWNoZWQpCisgICAgICAgIHJldHVybiB0
cnVlOwogCi12b2lkIFdlYkluc3BlY3Rvcjo6c3RvcFBhZ2VQcm9maWxpbmcoKQotewotICAgIG1f
cGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKLSAgICBpZiAo
bV9mcm9udGVuZENsaWVudCkKLSAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0VGltZWxpbmVQ
cm9maWxpbmdFbmFibGVkKGZhbHNlKTsKKyAgICAvLyBEb24ndCBhbGxvdyB0aGUgYXR0YWNoIGlm
IHRoZSB3aW5kb3cgd291bGQgYmUgdG9vIHNtYWxsIHRvIGFjY29tbW9kYXRlIHRoZSBtaW5pbXVt
IGluc3BlY3RvciBzaXplLgorICAgIHVuc2lnbmVkIGluc3BlY3RlZFBhZ2VIZWlnaHQgPSBtX3Bh
Z2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZUhlaWdodCgpOworICAg
IHVuc2lnbmVkIGluc3BlY3RlZFBhZ2VXaWR0aCA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZy
YW1lKCkudmlldygpLT52aXNpYmxlV2lkdGgoKTsKKyAgICB1bnNpZ25lZCBtYXhpbXVtQXR0YWNo
ZWRIZWlnaHQgPSBpbnNwZWN0ZWRQYWdlSGVpZ2h0ICogbWF4aW11bUF0dGFjaGVkSGVpZ2h0UmF0
aW87CisgICAgcmV0dXJuIG1pbmltdW1BdHRhY2hlZEhlaWdodCA8PSBtYXhpbXVtQXR0YWNoZWRI
ZWlnaHQgJiYgbWluaW11bUF0dGFjaGVkV2lkdGggPD0gaW5zcGVjdGVkUGFnZVdpZHRoOwogfQog
CiB2b2lkIFdlYkluc3BlY3Rvcjo6dXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgpCiB7Ci0gICAg
aWYgKCFtX2Zyb250ZW5kQ2xpZW50KQorICAgIGlmIChtX2F0dGFjaGVkKQorICAgICAgICByZXR1
cm47CisKKyAgICBib29sIGNhbkF0dGFjaFdpbmRvdyA9IHRoaXMtPmNhbkF0dGFjaFdpbmRvdygp
OworICAgIGlmIChtX3ByZXZpb3VzQ2FuQXR0YWNoID09IGNhbkF0dGFjaFdpbmRvdykKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYm9vbCBjYW5BdHRhY2hXaW5kb3cgPSBtX2Zyb250ZW5kQ2xpZW50
LT5jYW5BdHRhY2hXaW5kb3coKTsKKyAgICBtX3ByZXZpb3VzQ2FuQXR0YWNoID0gY2FuQXR0YWNo
V2luZG93OworCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaEF2YWlsYWJpbGl0
eUNoYW5nZWQoY2FuQXR0YWNoV2luZG93KSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0gICAgbV9mcm9u
dGVuZENsaWVudC0+c2V0RG9ja2luZ1VuYXZhaWxhYmxlKCFjYW5BdHRhY2hXaW5kb3cpOwogfQog
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi12b2lkIFdlYkluc3BlY3Rvcjo6c2VuZE1l
c3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgV2ViSW5z
cGVjdG9yOjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0g
ICAgQVNTRVJUKG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOwotICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpTZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQobWVzc2FnZSksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlKTsKIH0KIAotdm9pZCBXZWJJbnNw
ZWN0b3I6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCitib29sIFdlYkluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKIHsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKS5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CisjaWYgIUVOQUJM
RShJTlNQRUNUT1JfU0VSVkVSKQorICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6U2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpLCAwKTsK
KyNlbHNlCisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNlbmRNZXNzYWdlVG9SZW1vdGVG
cm9udGVuZChtZXNzYWdlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisjZW5kaWYKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQogdm9pZCBXZWJJbnNwZWN0
b3I6OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkKIHsKLSAgICBBU1NFUlQoIW1fcmVtb3RlRnJv
bnRlbmRDb25uZWN0ZWQpOwotICAgIC8vIFN3aXRjaGluZyBiZXR3ZWVuIGluLXByb2Nlc3MgYW5k
IHJlbW90ZSBpbnNwZWN0b3JzIGlzbid0IHN1cHBvcnRlZCB5ZXQuCi0gICAgQVNTRVJUKCFtX2lu
c3BlY3RvclBhZ2UpOwotICAgIAotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZChtX2Zyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9yZW1v
dGVGcm9udGVuZENvbm5lY3RlZCA9IHRydWU7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKHRoaXMpOwogfQogCiB2b2lkIFdlYklu
c3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKQogewotICAgIEFTU0VSVChtX3Jl
bW90ZUZyb250ZW5kQ29ubmVjdGVkKTsKICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNj
b25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwotICAgIG1fcmVtb3RlRnJvbnRlbmRD
b25uZWN0ZWQgPSBmYWxzZTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKaW5kZXggYzkzYmNiM2ZjYWZlMTE1ODJkNjA0
ZmRjYWQyNzJjNGY5MjU4YzAxNi4uM2MxOWI5ZTg1YjJmYWNhZWQzNWYzYTRkMGZlYmVkZjgwYTQz
NDJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzAsMTA2ICszMCw4MCBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRm9yd2FyZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiBjbGFzcyBXZWJQYWdl
OwogCi1jbGFzcyBXZWJJbnNwZWN0b3IgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2Jq
ZWN0OjpUeXBlOjpCdW5kbGVJbnNwZWN0b3I+IHsKK2NsYXNzIFdlYkluc3BlY3RvciA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUluc3BlY3Rvcj4sIHB1
YmxpYyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW5zcGVj
dG9yPiBjcmVhdGUoV2ViUGFnZSosIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCop
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkluc3BlY3Rvcj4gY3JlYXRlKFdlYlBhZ2UqKTsK
IAogICAgIFdlYlBhZ2UqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KLSAgICBXZWJQ
YWdlKiBpbnNwZWN0b3JQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JQYWdlOyB9CisK
KyAgICB2b2lkIHVwZGF0ZURvY2tpbmdBdmFpbGFiaWxpdHkoKTsKKworICAgIHZpcnR1YWwgYm9v
bCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBvdmVycmlkZTsK
IAogICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJJbnNwZWN0b3JNZXNzYWdlUmVj
ZWl2ZXIuY3BwCi0gICAgdm9pZCBkaWRSZWNlaXZlV2ViSW5zcGVjdG9yTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisKKyAgICAvLyBJ
UEM6OkNvbm5lY3Rpb246OkNsaWVudAorICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9u
KikgeyBjbG9zZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uKiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIHsgY2xvc2UoKTsgfQogCiAgICAgLy8gQ2Fs
bGVkIGJ5IFdlYkluc3BlY3RvciBtZXNzYWdlcworICAgIHZvaWQgY29ubmVjdGlvbkVzdGFibGlz
aGVkKCk7CisKICAgICB2b2lkIHNob3coKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKLSAgICB2b2lk
IGRpZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwpOwotICAgIHZvaWQgZGlkQXBwZW5kKGNvbnN0IFN0
cmluZyYgdXJsKTsKKyAgICB2b2lkIG9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybFN0cmlu
Zyk7CisKKyAgICB2b2lkIGNhbkF0dGFjaFdpbmRvdyhib29sJiByZXN1bHQpOworCisgICAgdm9p
ZCBzaG93Q29uc29sZSgpOworICAgIHZvaWQgc2hvd1Jlc291cmNlcygpOwogCi0gICAgdm9pZCBh
dHRhY2hlZEJvdHRvbSgpOwotICAgIHZvaWQgYXR0YWNoZWRSaWdodCgpOwotICAgIHZvaWQgZGV0
YWNoZWQoKTsKKyAgICB2b2lkIHNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlkZW50aWZpZXIpOworCisgICAgdm9pZCBzZXRBdHRhY2hlZChib29sIGF0dGFjaGVkKSB7IG1f
YXR0YWNoZWQgPSBhdHRhY2hlZDsgfQogCiAgICAgdm9pZCBldmFsdWF0ZVNjcmlwdEZvclRlc3Qo
Y29uc3QgU3RyaW5nJiBzY3JpcHQpOwogCi0gICAgdm9pZCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5n
RW5hYmxlZChib29sKTsKICAgICB2b2lkIHN0YXJ0UGFnZVByb2ZpbGluZygpOwogICAgIHZvaWQg
c3RvcFBhZ2VQcm9maWxpbmcoKTsKIAorICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29u
c3QgU3RyaW5nJik7CisKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAgICBib29sIGhh
c1JlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGVGcm9udGVu
ZENvbm5lY3RlZDsgfQotICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2b2lkIHJlbW90ZUZyb250ZW5kQ29u
bmVjdGVkKCk7CiAgICAgdm9pZCByZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpOwogI2VuZGlm
CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsKLSAgICBm
cmllbmQgY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiAKLSAgICBleHBsaWNpdCBX
ZWJJbnNwZWN0b3IoV2ViUGFnZSosIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCop
OworICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvcihXZWJQYWdlKik7CisKKyAgICBib29sIGNhbkF0
dGFjaFdpbmRvdygpOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yQ2xpZW50Ci0g
ICAgV2ViUGFnZSogY3JlYXRlSW5zcGVjdG9yUGFnZSgpOwotICAgIFdlYlBhZ2UqIGNyZWF0ZUlu
c3BlY3RvclBhZ2VGb3JUZXN0KCk7Ci0gICAgdm9pZCBkZXN0cm95SW5zcGVjdG9yUGFnZSgpOwor
ICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZShib29sIHVuZGVyVGVzdCk7CiAKLSAgICAvLyBD
YWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudAotICAgIHZvaWQgZGlkQ2xvc2Uo
KTsKKyAgICB2b2lkIGNsb3NlRnJvbnRlbmQoKTsKICAgICB2b2lkIGJyaW5nVG9Gcm9udCgpOwot
ICAgIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKTsKLQotICAgIGJvb2wg
Y2FuU2F2ZSgpIGNvbnN0OwotICAgIHZvaWQgc2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVB
cyk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50KTsKLQotICAgIHZvaWQgYXR0YWNoQm90dG9tKCk7Ci0gICAgdm9pZCBhdHRhY2hS
aWdodCgpOwotICAgIHZvaWQgZGV0YWNoKCk7CiAKLSAgICB2b2lkIHNldEF0dGFjaGVkV2luZG93
SGVpZ2h0KHVuc2lnbmVkKTsKLSAgICB2b2lkIHNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWdu
ZWQpOwotICAgIHZvaWQgc2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCk7Ci0KLSAgICAvLyBJbXBs
ZW1lbnRlZCBpbiBwbGF0Zm9ybSBXZWJJbnNwZWN0b3IgZmlsZQotICAgIFN0cmluZyBsb2NhbGl6
ZWRTdHJpbmdzVVJMKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNob3dDb25zb2xlKCk7Ci0KLSAgICB2
b2lkIHNob3dSZXNvdXJjZXMoKTsKLQotICAgIHZvaWQgc2hvd01haW5SZXNvdXJjZUZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQpOwotCi0gICAgdm9pZCBzdGFydEphdmFTY3JpcHREZWJ1Z2dpbmco
KTsKLSAgICB2b2lkIHN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCk7Ci0KLSAgICB2b2lkIHN0YXJ0
SmF2YVNjcmlwdFByb2ZpbGluZygpOwotICAgIHZvaWQgc3RvcEphdmFTY3JpcHRQcm9maWxpbmco
KTsKKyAgICBXZWJQYWdlKiBtX3BhZ2U7CiAKLSAgICB2b2lkIHVwZGF0ZURvY2tpbmdBdmFpbGFi
aWxpdHkoKTsKKyAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Zyb250ZW5kQ29ubmVjdGlv
bjsKIAotICAgIFdlYlBhZ2UqIG1fcGFnZTsKLSAgICBXZWJQYWdlKiBtX2luc3BlY3RvclBhZ2U7
Ci0gICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1fZnJvbnRlbmRDbGllbnQ7Ci0gICAg
V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2Zyb250ZW5kQ2hhbm5lbDsKLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBtdXRhYmxlIFN0cmluZyBtX2xvY2FsaXplZFN0cmluZ3NV
Ukw7Ci0gICAgbXV0YWJsZSBib29sIG1faGFzTG9jYWxpemVkU3RyaW5nc1VSTDsKLSNlbmRpZgot
I2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotICAgIGJvb2wgbV9yZW1vdGVGcm9udGVuZENv
bm5lY3RlZDsKLSNlbmRpZgorICAgIGJvb2wgbV9hdHRhY2hlZDsKKyAgICBib29sIG1fcHJldmlv
dXNDYW5BdHRhY2g7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2Vz
LmluCmluZGV4IGMyM2I4NmYyMTQyNWNiNDYyZTQ5MjgzOWZmODAxOTVlMzg2N2Y3ODcuLmZjMDcz
Y2FlOGRkZDM1ZmFhMzIzM2I3ZGU5NTUyOWY3ZTM5NjQyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5p
bgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjIsMjYg
KzIyLDI1IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi1tZXNzYWdlcyAtPiBXZWJJbnNw
ZWN0b3IgTGVnYWN5UmVjZWl2ZXIgeworbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yIHsKICAgICBT
aG93KCkKICAgICBDbG9zZSgpCi0gICAgQXR0YWNoZWRCb3R0b20oKQotICAgIEF0dGFjaGVkUmln
aHQoKQotICAgIERldGFjaGVkKCkKLSAgICBEaWRTYXZlKFN0cmluZyB1cmwpCi0gICAgRGlkQXBw
ZW5kKFN0cmluZyB1cmwpCisKKyAgICBTZXRBdHRhY2hlZChib29sIGF0dGFjaGVkKQorCiAgICAg
U2hvd0NvbnNvbGUoKQogICAgIFNob3dSZXNvdXJjZXMoKQotICAgIFNob3dNYWluUmVzb3VyY2VG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQotICAgIFN0YXJ0SmF2YVNjcmlwdERlYnVnZ2luZygp
Ci0gICAgU3RvcEphdmFTY3JpcHREZWJ1Z2dpbmcoKQotICAgIFN0YXJ0SmF2YVNjcmlwdFByb2Zp
bGluZygpCi0gICAgU3RvcEphdmFTY3JpcHRQcm9maWxpbmcoKQorCisgICAgU2hvd01haW5SZXNv
dXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSWRlbnRpZmllcikKKworICAgIE9wZW5Jbk5ld1Rh
YihTdHJpbmcgdXJsKQorCiAgICAgU3RhcnRQYWdlUHJvZmlsaW5nKCkKICAgICBTdG9wUGFnZVBy
b2ZpbGluZygpCiAKKyAgICBTZW5kTWVzc2FnZVRvQmFja2VuZChTdHJpbmcgbWVzc2FnZSkKKwog
I2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotICAgIERpc3BhdGNoTWVzc2FnZUZyb21SZW1v
dGVGcm9udGVuZChTdHJpbmcgbWVzc2FnZSkKICAgICBSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgp
CiAgICAgUmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMjk3YWQzZDU4MDE1MmQwNjMwNTM5YzAwNjEzMzBkNDUxYmNmNjY1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJ
LmNwcApAQCAtMCwwICsxLDI4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSS5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKwor
I2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9y
UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0Nocm9tZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE9NV3JhcHBlcldvcmxkLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9NYWluRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
Y3JpcHRHbG9iYWxPYmplY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFN0YXRlLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1Jl
ZlB0cjxXZWJJbnNwZWN0b3JVST4gV2ViSW5zcGVjdG9yVUk6OmNyZWF0ZShXZWJQYWdlKiBwYWdl
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViSW5zcGVjdG9yVUkocGFnZSkpOworfQor
CitXZWJJbnNwZWN0b3JVSTo6V2ViSW5zcGVjdG9yVUkoV2ViUGFnZSogcGFnZSkKKyAgICA6IG1f
cGFnZShwYWdlKQorICAgICwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcigwKQorICAgICwgbV91
bmRlclRlc3QoZmFsc2UpCisgICAgLCBtX2Zyb250ZW5kTG9hZGVkKGZhbHNlKQorICAgICwgbV9k
b2NrU2lkZShEb2NrU2lkZTo6VW5kb2NrZWQpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLCBt
X2hhc0xvY2FsaXplZFN0cmluZ3NVUkwoZmFsc2UpCisjZW5kaWYKK3sKK30KKwordm9pZCBXZWJJ
bnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgZW5jb2RlZENv
bm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9v
bCB1bmRlclRlc3QpCit7CisjaWYgT1MoREFSV0lOKQorICAgIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIu
cG9ydCgpKTsKKyNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQorICAgIElQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklk
ZW50aWZpZXIucmVsZWFzZUZpbGVEZXNjcmlwdG9yKCkpOworI2Vsc2UKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybjsKKyNlbmRpZgorCisgICAgaWYgKElQQzo6Q29ubmVjdGlvbjo6
aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsK
KworICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgPSBpbnNwZWN0ZWRQYWdlSWRlbnRpZmll
cjsKKyAgICBtX3VuZGVyVGVzdCA9IHVuZGVyVGVzdDsKKworICAgIG1fcGFnZS0+Y29yZVBhZ2Uo
KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHRoaXMp
OworCisgICAgbV9iYWNrZW5kQ29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xp
ZW50Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgdGhpcywgUnVuTG9vcDo6bWFpbigp
KTsKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5vcGVuKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yVUk6OndpbmRvd09iamVjdENsZWFyZWQoKQoreworICAgIGlmIChtX2Zyb250ZW5kSG9zdCkK
KyAgICAgICAgbV9mcm9udGVuZEhvc3QtPmRpc2Nvbm5lY3RDbGllbnQoKTsKKworICAgIG1fZnJv
bnRlbmRIb3N0ID0gSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpjcmVhdGUodGhpcywgbV9wYWdlLT5j
b3JlUGFnZSgpKTsKKyAgICBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChleGVjU3RhdGVGcm9tUGFn
ZShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgbV9wYWdlLT5jb3JlUGFnZSgpKSwgQVNDSUlMaXRl
cmFsKCJJbnNwZWN0b3JGcm9udGVuZEhvc3QiKSwgbV9mcm9udGVuZEhvc3QuZ2V0KCkpOworfQor
Cit2b2lkIFdlYkluc3BlY3RvclVJOjpmcm9udGVuZExvYWRlZCgpCit7CisgICAgbV9mcm9udGVu
ZExvYWRlZCA9IHRydWU7CisKKyAgICBldmFsdWF0ZVBlbmRpbmdFeHByZXNzaW9ucygpOworICAg
IGJyaW5nVG9Gcm9udCgpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjptb3ZlV2luZG93Qnko
ZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICBGbG9hdFJlY3QgZnJhbWVSZWN0ID0gbV9wYWdlLT5j
b3JlUGFnZSgpLT5jaHJvbWUoKS53aW5kb3dSZWN0KCk7CisgICAgZnJhbWVSZWN0Lm1vdmUoeCwg
eSk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5jaHJvbWUoKS5zZXRXaW5kb3dSZWN0KGZyYW1l
UmVjdCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmJyaW5nVG9Gcm9udCgpCit7CisgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9udCgpLCBtX2luc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2xvc2VXaW5kb3coKQorewor
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpLCBtX2luc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyKTsKKworICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKKyAg
ICBtX2JhY2tlbmRDb25uZWN0aW9uID0gbnVsbHB0cjsKKworICAgIG1faW5zcGVjdGVkUGFnZUlk
ZW50aWZpZXIgPSAwOworICAgIG1fdW5kZXJUZXN0ID0gZmFsc2U7Cit9CisKK3ZvaWQgV2ViSW5z
cGVjdG9yVUk6OnJlcXVlc3RTZXREb2NrU2lkZShEb2NrU2lkZSBzaWRlKQoreworICAgIHN3aXRj
aCAoc2lkZSkgeworICAgIGNhc2UgRG9ja1NpZGU6OlVuZG9ja2VkOgorICAgICAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6RGV0YWNoKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgRG9ja1NpZGU6OlJpZ2h0OgorICAgICAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoUmlnaHQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRp
Zmllcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6Qm90dG9tOgorICAg
ICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQm90dG9tKCksIG1faW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgV2ViSW5z
cGVjdG9yVUk6OnNldERvY2tTaWRlKERvY2tTaWRlIHNpZGUpCit7CisgICAgY29uc3QgY2hhciog
c2lkZVN0cmluZzsKKworICAgIHN3aXRjaCAoc2lkZSkgeworICAgIGNhc2UgRG9ja1NpZGU6OlVu
ZG9ja2VkOgorICAgICAgICBzaWRlU3RyaW5nID0gInVuZG9ja2VkIjsKKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIERvY2tTaWRlOjpSaWdodDoKKyAgICAgICAgc2lkZVN0cmluZyA9ICJyaWdo
dCI7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6Qm90dG9tOgorICAgICAg
ICBzaWRlU3RyaW5nID0gImJvdHRvbSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIG1f
ZG9ja1NpZGUgPSBzaWRlOworCisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJh
bCgic2V0RG9ja1NpZGUiKSwgQVNDSUlMaXRlcmFsKHNpZGVTdHJpbmcpKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JVSTo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0
KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd0hlaWdo
dChoZWlnaHQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JVSTo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKK3sKKyAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh3aWR0aCks
IG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpz
ZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JQcm94eTo6U2V0VG9vbGJhckhlaWdodChoZWlnaHQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlm
aWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6b3BlbkluTmV3VGFiKGNvbnN0IFN0cmlu
ZyYgdXJsKQoreworICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6T3BlbkluTmV3VGFiKHVybCksIDApOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJ
OjpzYXZlKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGNv
bnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykKK3sKKyAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6U2F2ZShmaWxlbmFtZSwgY29udGVudCwgYmFzZTY0RW5jb2Rl
ZCwgZm9yY2VTYXZlQXMpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JVSTo6YXBwZW5kKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIGNvbnRlbnQpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkFw
cGVuZChmaWxlbmFtZSwgY29udGVudCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQor
Cit2b2lkIFdlYkluc3BlY3RvclVJOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpJbnNwZWN0ZWRVUkxD
aGFuZ2VkKHVybFN0cmluZyksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lk
IFdlYkluc3BlY3RvclVJOjpzaG93Q29uc29sZSgpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25M
b2FkKEFTQ0lJTGl0ZXJhbCgic2hvd0NvbnNvbGUiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9y
VUk6OnNob3dSZXNvdXJjZXMoKQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxp
dGVyYWwoInNob3dSZXNvdXJjZXMiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNob3dN
YWluUmVzb3VyY2VGb3JGcmFtZShTdHJpbmcgZnJhbWVJZGVudGlmaWVyKQoreworICAgIGV2YWx1
YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSIp
LCBmcmFtZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpzdGFydFBhZ2VQ
cm9maWxpbmcoKQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNl
dFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCIpLCB0cnVlKTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JVSTo6c3RvcFBhZ2VQcm9maWxpbmcoKQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChB
U0NJSUxpdGVyYWwoInNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCIpLCBmYWxzZSk7Cit9CisK
K3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmRpZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAg
ZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2F2ZWRVUkwiKSwgdXJsKTsKK30K
Kwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKQorewor
ICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoImFwcGVuZGVkVG9VUkwiKSwg
dXJsKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQobWFr
ZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2hNZXNzYWdlQXN5bmMoIiwgbWVz
c2FnZSwgIikiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9CYWNr
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2Up
LCAwKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNv
bnN0IFN0cmluZyYgY29tbWFuZCwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCkKK3sKKyAgICBpZiAo
YXJndW1lbnQuaXNOdWxsKCkpCisgICAgICAgIGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChtYWtl
U3RyaW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaChbXCIiLCBjb21tYW5kLCAiXCJd
KSIpKTsKKyAgICBlbHNlCisgICAgICAgIGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChtYWtlU3Ry
aW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaChbXCIiLCBjb21tYW5kLCAiXCIsIFwi
IiwgYXJndW1lbnQsICJcIl0pIikpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJOjpldmFsdWF0
ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBib29sIGFyZ3VtZW50KQorewor
ICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb21tYW5kLCBBU0NJSUxpdGVyYWwoYXJndW1lbnQg
PyAidHJ1ZSIgOiAiZmFsc2UiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRl
RXhwcmVzc2lvbk9uTG9hZChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pCit7CisgICAgaWYgKG1f
ZnJvbnRlbmRMb2FkZWQpIHsKKyAgICAgICAgQVNTRVJUKG1fcXVldWUuaXNFbXB0eSgpKTsKKyAg
ICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2Ny
aXB0KGV4cHJlc3Npb24pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9xdWV1ZS5h
cHBlbmQoZXhwcmVzc2lvbik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmV2YWx1YXRlUGVu
ZGluZ0V4cHJlc3Npb25zKCkKK3sKKyAgICBBU1NFUlQobV9mcm9udGVuZExvYWRlZCk7CisKKyAg
ICBmb3IgKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiA6IG1fcXVldWUpCisgICAgICAgIG1fcGFn
ZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChleHByZXNz
aW9uKTsKKworICAgIG1fcXVldWUuY2xlYXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZGJmY2JlMzhk
ZjcyYTU4NGZkMTMwNDgxY2ZmYzA1ZDA4ZmFhNjNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKQEAgLTAsMCArMSwx
MzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkluc3BlY3RvclVJX2gKKyNkZWZpbmUgV2Vi
SW5zcGVjdG9yVUlfaAorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0luc3Bl
Y3RvckZvcndhcmRpbmcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYkluc3BlY3RvclVJ
IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVj
dG9yVUk+LCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZENsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViSW5zcGVjdG9yVUk+IGNyZWF0ZShXZWJQYWdlKik7CisKKyAgICBXZWJQYWdlKiBwYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CisKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0
ZWQgV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisKKyAgICAv
LyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAorICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0
aW9uKikgeyBjbG9zZVdpbmRvdygpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIHsgY2xvc2VXaW5kb3coKTsg
fQorCisgICAgLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclVJIG1lc3NhZ2VzCisgICAgdm9pZCBl
c3RhYmxpc2hDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwg
dWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0KTsKKworICAg
IHZvaWQgc2hvd0NvbnNvbGUoKTsKKyAgICB2b2lkIHNob3dSZXNvdXJjZXMoKTsKKworICAgIHZv
aWQgc2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFN0cmluZyBmcmFtZUlkZW50aWZpZXIpOworCisg
ICAgdm9pZCBzdGFydFBhZ2VQcm9maWxpbmcoKTsKKyAgICB2b2lkIHN0b3BQYWdlUHJvZmlsaW5n
KCk7CisKKyAgICB2b2lkIGF0dGFjaGVkQm90dG9tKCkgeyBzZXREb2NrU2lkZShEb2NrU2lkZTo6
Qm90dG9tKTsgfQorICAgIHZvaWQgYXR0YWNoZWRSaWdodCgpIHsgc2V0RG9ja1NpZGUoRG9ja1Np
ZGU6OlJpZ2h0KTsgfQorICAgIHZvaWQgZGV0YWNoZWQoKSB7IHNldERvY2tTaWRlKERvY2tTaWRl
OjpVbmRvY2tlZCk7IH0KKworICAgIHZvaWQgc2V0RG9ja1NpZGUoRG9ja1NpZGUpOworCisgICAg
dm9pZCBkaWRTYXZlKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIGRpZEFwcGVuZChjb25z
dCBTdHJpbmcmIHVybCk7CisKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBT
dHJpbmcmKTsKKworICAgIC8vIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50CisgICAg
dm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmcm9udGVuZExv
YWRlZCgpIG92ZXJyaWRlOworCisgICAgdm9pZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQg
eSkgb3ZlcnJpZGU7CisKKyAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIG92ZXJyaWRl
OworCisgICAgdm9pZCBicmluZ1RvRnJvbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlV2lu
ZG93KCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHJlcXVlc3RTZXREb2NrU2lkZShEb2NrU2lkZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKSBv
dmVycmlkZTsKKworICAgIHZvaWQgc2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7
CisKKyAgICB2b2lkIG9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkgb3ZlcnJpZGU7CisK
KyAgICBib29sIGNhblNhdmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmUoY29uc3QgV1RGOjpT
dHJpbmcmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2Rl
ZCwgYm9vbCBmb3JjZVNhdmVBcykgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgV1RG
OjpTdHJpbmcmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQpIG92ZXJyaWRlOworCisg
ICAgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworCisg
ICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKwor
ICAgIGJvb2wgaXNVbmRlclRlc3QoKSBvdmVycmlkZSB7IHJldHVybiBtX3VuZGVyVGVzdDsgfQor
Citwcml2YXRlOgorICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvclVJKFdlYlBhZ2UqKTsKKworICAg
IHZvaWQgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgY29uc3Qg
U3RyaW5nJiBhcmd1bWVudCA9IFN0cmluZygpKTsKKyAgICB2b2lkIGV2YWx1YXRlQ29tbWFuZE9u
TG9hZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGNvbnN0IEFTQ0lJTGl0ZXJhbCYgYXJndW1lbnQp
IHsgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbW1hbmQsIFN0cmluZyhhcmd1bWVudCkpOyB9Cisg
ICAgdm9pZCBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBib29s
IGFyZ3VtZW50KTsKKyAgICB2b2lkIGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24pOworICAgIHZvaWQgZXZhbHVhdGVQZW5kaW5nRXhwcmVzc2lvbnMoKTsK
KworICAgIFdlYlBhZ2UqIG1fcGFnZTsKKworICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1f
YmFja2VuZENvbm5lY3Rpb247CisgICAgdWludDY0X3QgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmll
cjsKKworICAgIGJvb2wgbV91bmRlclRlc3Q7CisgICAgYm9vbCBtX2Zyb250ZW5kTG9hZGVkOwor
ICAgIERlcXVlPFN0cmluZz4gbV9xdWV1ZTsKKworICAgIFJlZlB0cjxXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZEhvc3Q+IG1fZnJvbnRlbmRIb3N0OworCisgICAgRG9ja1NpZGUgbV9kb2NrU2lk
ZTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG11dGFibGUgU3RyaW5nIG1fbG9jYWxpemVk
U3RyaW5nc1VSTDsKKyAgICBtdXRhYmxlIGJvb2wgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMOwor
I2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJ
TlNQRUNUT1IpCisKKyNlbmRpZiAvLyBXZWJJbnNwZWN0b3JVSV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2Fn
ZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjNlYjVmZDU4YTY3YTlmMGViZjExZGVjNjViNTY0OGI2ODkwMTQz
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDQ2IEBACisjIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisj
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCittZXNz
YWdlcyAtPiBXZWJJbnNwZWN0b3JVSSB7CisgICAgRXN0YWJsaXNoQ29ubmVjdGlvbihJUEM6OkF0
dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVu
dGlmaWVyLCBib29sIHVuZGVyVGVzdCkKKworICAgIEF0dGFjaGVkQm90dG9tKCkKKyAgICBBdHRh
Y2hlZFJpZ2h0KCkKKyAgICBEZXRhY2hlZCgpCisKKyAgICBTaG93Q29uc29sZSgpCisgICAgU2hv
d1Jlc291cmNlcygpCisKKyAgICBTaG93TWFpblJlc291cmNlRm9yRnJhbWUoU3RyaW5nIGZyYW1l
SWRlbnRpZmllcikKKworICAgIFN0YXJ0UGFnZVByb2ZpbGluZygpCisgICAgU3RvcFBhZ2VQcm9m
aWxpbmcoKQorCisgICAgRGlkU2F2ZShTdHJpbmcgdXJsKQorICAgIERpZEFwcGVuZChTdHJpbmcg
dXJsKQorCisgICAgU2VuZE1lc3NhZ2VUb0Zyb250ZW5kKFN0cmluZyBtZXNzYWdlKQorfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCBlNjJhY2ZkOWM0NmE4NTUxYzNlODQ0NjJlYTBhMTJlYmVjMTJiZjg2Li5jY2M2M2I1MzE0
NjUzODg5ODU4OWYzYTJiZTg1ZjY0NDk3OTY5YTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC04MCw2ICs4MCw4IEBACiAjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSS5oIgor
I2luY2x1ZGUgIldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJOb3RpZmlj
YXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIgog
I2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAgLTQ2MCw2ICs0NjIsNyBA
QCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKICNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKKyAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOwpAQCAtNTIwLDYgKzUyMyw3IEBAIFdlYlBh
Z2U6On5XZWJQYWdlKCkKICNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOworICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlSUQpOwpAQCAtMjg4NiwxOCArMjg5MCwyNiBAQCB2b2lkIFdlYlBhZ2U6OmRpZEZsdXNo
TGF5ZXJUcmVlQXRUaW1lKHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgdGltZXN0YW1wKQogfQog
I2VuZGlmCiAKLSAgICAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogV2ViSW5zcGVjdG9yKiBXZWJQ
YWdlOjppbnNwZWN0b3IoKQogewogICAgIGlmIChtX2lzQ2xvc2VkKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFtX2luc3BlY3RvcikKLSAgICAg
ICAgbV9pbnNwZWN0b3IgPSBXZWJJbnNwZWN0b3I6OmNyZWF0ZSh0aGlzLCBtX2luc3BlY3RvckNs
aWVudCk7CisgICAgICAgIG1faW5zcGVjdG9yID0gV2ViSW5zcGVjdG9yOjpjcmVhdGUodGhpcyk7
CiAgICAgcmV0dXJuIG1faW5zcGVjdG9yLmdldCgpOwogfQorCitXZWJJbnNwZWN0b3JVSSogV2Vi
UGFnZTo6aW5zcGVjdG9yVUkoKQoreworICAgIGlmIChtX2lzQ2xvc2VkKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBpZiAoIW1faW5zcGVjdG9yVUkpCisgICAgICAgIG1faW5zcGVjdG9y
VUkgPSBXZWJJbnNwZWN0b3JVSTo6Y3JlYXRlKHRoaXMpOworICAgIHJldHVybiBtX2luc3BlY3Rv
clVJLmdldCgpOworfQogI2VuZGlmCi0gICAgCisKICNpZiBQTEFURk9STShJT1MpCiBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyKiBXZWJQYWdlOjp2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkKIHsK
QEAgLTM0NzksNyArMzQ5MSwxMyBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgSVBDOjpNZXNzYWdlRGVjb2RlcgogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBp
ZiAoV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSB0aGlzLT5pbnNwZWN0b3IoKSkKLSAgICAgICAg
ICAgIGluc3BlY3Rvci0+ZGlkUmVjZWl2ZVdlYkluc3BlY3Rvck1lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7CisgICAgICAgICAgICBpbnNwZWN0b3ItPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3JVSSogaW5zcGVj
dG9yVUkgPSB0aGlzLT5pbnNwZWN0b3JVSSgpKQorICAgICAgICAgICAgaW5zcGVjdG9yVUktPmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAppbmRleCBiYWJhNTA2ZWMyMGY0MjM1NjMzOWFlZWE2MmE4OTU3NDY4NjViYzg4Li5iN2Q0NDhj
OTY4MDBhZjlmZGJkN2E0MDI0ZWJlNDgzODM2MjYzMzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1Myw2ICsxNTMsNyBAQCBjbGFzcyBXZWJG
dWxsU2NyZWVuTWFuYWdlcjsKIGNsYXNzIFdlYkltYWdlOwogY2xhc3MgV2ViSW5zcGVjdG9yOwog
Y2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50OworY2xhc3MgV2ViSW5zcGVjdG9yVUk7CiBjbGFzcyBX
ZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk5vdGlmaWNh
dGlvbkNsaWVudDsKQEAgLTIyNiw4ICsyMjcsMTAgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKICAgICBXZWJJbnNwZWN0b3IqIGluc3BlY3RvcigpOworICAgIFdlYkluc3BlY3Rv
clVJKiBpbnNwZWN0b3JVSSgpOworICAgIGJvb2wgaXNJbnNwZWN0b3JQYWdlKCkgeyByZXR1cm4g
ISFtX2luc3BlY3RvclVJOyB9CiAjZW5kaWYKLSAgICAKKwogI2lmIFBMQVRGT1JNKElPUykKICAg
ICBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKiB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCk7CiAj
ZW5kaWYKQEAgLTExNTksNiArMTE2Miw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogICAgIFJlZlB0cjxXZWJJbnNwZWN0b3I+IG1faW5zcGVjdG9yOworICAgIFJlZlB0cjxX
ZWJJbnNwZWN0b3JVST4gbV9pbnNwZWN0b3JVSTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4gbV92aWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2Vm
bC9XZWJJbnNwZWN0b3JVSUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZWZsL1dlYkluc3BlY3RvclVJRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODU3YzdiNjEwNTNhMjdl
ZjQwYmIzZDU4MjQ1NTBjNmY1NTAxMzUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJJbnNwZWN0b3JVSUVmbC5jcHAKQEAgLTAsMCAr
MSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSS5o
IgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgPFdlYkNvcmUvRWZsSW5zcGVj
dG9yVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitib29sIFdlYkluc3BlY3RvclVJOjpjYW5TYXZlKCkKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5n
c1VSTCgpCit7CisgICAgcmV0dXJuICJmaWxlOi8vIiArIFdlYkNvcmU6Omluc3BlY3RvclJlc291
cmNlUGF0aCgpICsgIi9sb2NhbGl6ZWRTdHJpbmdzLmpzIjsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3RvclVJR3RrLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40NjQ2Nzg1NWU4ZTc0OTgyYzEyMDczYTYzYjU4ZGU3ODI2YjBjZWQ4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJJbnNwZWN0b3JVSUd0ay5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5
cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0
b3JVSS5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgV2ViSW5zcGVjdG9yVUk6OmNhblNh
dmUoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIFdlYkluc3BlY3RvclVJOjps
b2NhbGl6ZWRTdHJpbmdzVVJMKCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKCJyZXNvdXJjZTovLy9v
cmcvd2Via2l0Z3RrL2luc3BlY3Rvci9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanMiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJJbnNwZWN0b3JVSU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yVUlNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJlNzZhNjcxOTg4
NTBjZjQ0ZjQ3NjM0Y2FmZWExZTA4Yzg1MzIxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViSW5zcGVjdG9yVUlNYWMubW0KQEAgLTAs
MCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiV2ViSW5zcGVjdG9yVUkuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNpbXBvcnQg
PFdlYkNvcmUvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX1NUQUdFRF9GUkFNRVdPUksoV2Vi
SW5zcGVjdG9yVUksIFByaXZhdGVGcmFtZXdvcmtzLCBBKQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworYm9vbCBXZWJJbnNwZWN0b3JVSTo6Y2FuU2F2ZSgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK1N0cmluZyBXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCit7CisgICAg
aWYgKCFtX2hhc0xvY2FsaXplZFN0cmluZ3NVUkwpIHsKKyAgICAgICAgLy8gQ2FsbCB0aGUgc29m
dCBsaW5rIGZyYW1ld29yayBmdW5jdGlvbiB0byBkbG9wZW4gaXQsIHRoZW4gW05TQnVuZGxlIGJ1
bmRsZVdpdGhJZGVudGlmaWVyOl0gd2lsbCB3b3JrLgorICAgICAgICBXZWJJbnNwZWN0b3JVSUxp
YnJhcnkoKTsKKworICAgICAgICBOU1N0cmluZyAqcGF0aCA9IFtbTlNCdW5kbGUgYnVuZGxlV2l0
aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViSW5zcGVjdG9yVUkiXSBwYXRoRm9yUmVzb3VyY2U6
QCJsb2NhbGl6ZWRTdHJpbmdzIiBvZlR5cGU6QCJqcyJdOworICAgICAgICBpZiAoW3BhdGggbGVu
Z3RoXSkKKyAgICAgICAgICAgIG1fbG9jYWxpemVkU3RyaW5nc1VSTCA9IFtbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOnBhdGhdIGFic29sdXRlU3RyaW5nXTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9sb2NhbGl6ZWRTdHJpbmdzVVJMID0gU3RyaW5nKCk7CisgICAgICAgIG1faGFzTG9jYWxp
emVkU3RyaW5nc1VSTCA9IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIG1fbG9jYWxpemVkU3Ry
aW5nc1VSTDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQppbmRleCAyY2JmZWFiNGE1ODQ0MGZlNjg0YWU2Y2M5NjBiNGEzMWI3YmZk
ZTk3Li41MmViZmIwYjllMjVlNDRmNzg0ZTc5ZGIwNmM2YTEwMmNlNGE3MjI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAt
MjA1LDcgKzIwNSwxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlBy
b2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycwogdm9pZCBXZWJQcm9jZXNz
Ojppbml0aWFsaXplUHJvY2Vzc05hbWUoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogI2lmICFQTEFURk9STShJT1MpCi0gICAgTlNTdHJp
bmcgKmFwcGxpY2F0aW9uTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9T
VFJJTkcoIiVAIFdlYiBDb250ZW50IiwgIlZpc2libGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3Mu
IFRoZSBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4iKSwgKE5TU3RyaW5nICopcGFy
YW1ldGVycy51aVByb2Nlc3NOYW1lXTsKKyAgICBOU1N0cmluZyAqYXBwbGljYXRpb25OYW1lOwor
ICAgIGlmIChwYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmdldChBU0NJSUxpdGVy
YWwoImluc3BlY3Rvci1wcm9jZXNzIikpID09ICIxIikKKyAgICAgICAgYXBwbGljYXRpb25OYW1l
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX1NUUklORygiJUAgV2ViIEluc3Bl
Y3RvciIsICJWaXNpYmxlIG5hbWUgb2YgV2ViIEluc3BlY3RvcidzIHdlYiBwcm9jZXNzLiBUaGUg
YXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuIiksIChOU1N0cmluZyAqKXBhcmFtZXRl
cnMudWlQcm9jZXNzTmFtZV07CisgICAgZWxzZQorICAgICAgICBhcHBsaWNhdGlvbk5hbWUgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCIlQCBXZWIgQ29udGVudCIs
ICJWaXNpYmxlIG5hbWUgb2YgdGhlIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFw
cGxpY2F0aW9uIG5hbWUuIiksIChOU1N0cmluZyAqKXBhcmFtZXRlcnMudWlQcm9jZXNzTmFtZV07
CiAgICAgV0tTZXRWaXNpYmxlQXBwbGljYXRpb25OYW1lKChDRlN0cmluZ1JlZilhcHBsaWNhdGlv
bk5hbWUpOwogI2VuZGlmCiB9Cg==
</data>
<flag name="review"
          id="263241"
          type_id="1"
          status="+"
          setter="andersca"
    />
    <flag name="commit-queue"
          id="263242"
          type_id="3"
          status="-"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>