<?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>108396</bug_id>
          
          <creation_ts>2013-01-30 15:54:36 -0800</creation_ts>
          <short_desc>WebKit2: provide new bundle APIs to allow bundle clients to be notified of pasteboard access.</short_desc>
          <delta_ts>2013-01-31 13:16:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrica Casucci">enrica</reporter>
          <assigned_to name="Enrica Casucci">enrica</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>mifenton</cc>
    
    <cc>peter+ews</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>sam</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>820731</commentid>
    <comment_count>0</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2013-01-30 15:54:36 -0800</bug_when>
    <thetext>We need to add a mechanism for WebKit2 clients to be notified when the WebProcess is getting ready to add content to the pasteboard and potentially provide new pasteboard formats to add together with the standard WebKit supported types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820733</commentid>
    <comment_count>1</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2013-01-30 15:54:50 -0800</bug_when>
    <thetext>&lt;rdar://problem/12920461&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820780</commentid>
    <comment_count>2</comment_count>
      <attachid>185616</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2013-01-30 16:27:35 -0800</bug_when>
    <thetext>Created attachment 185616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820792</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 16:36:02 -0800</bug_when>
    <thetext>Attachment 185616 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/editing/Editor.cpp&apos;, u&apos;Source/WebCore/editing/Editor.h&apos;, u&apos;Source/WebCore/loader/EmptyClients.h&apos;, u&apos;Source/WebCore/page/EditorClient.h&apos;, u&apos;Source/WebCore/platform/mac/PasteboardMac.mm&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebEditorClient.h&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Shared/API/c/WKBase.h&apos;, u&apos;Source/WebKit2/Shared/API/c/WKSharedAPICast.h&apos;, u&apos;Source/WebKit2/Shared/API/c/mac/WKWebArchive.cpp&apos;, u&apos;Source/WebKit2/Shared/API/c/mac/WKWebArchive.h&apos;, u&apos;Source/WebKit2/Shared/API/c/mac/WKWebArchiveResource.cpp&apos;, u&apos;Source/WebKit2/Shared/API/c/mac/WKWebArchiveResource.h&apos;, u&apos;Source/WebKit2/Shared/APIClientTraits.cpp&apos;, u&apos;Source/WebKit2/Shared/APIClientTraits.h&apos;, u&apos;Source/WebKit2/Shared/APIObject.h&apos;, u&apos;Source/WebKit2/Shared/WebArchive.cpp&apos;, u&apos;Source/WebKit2/Shared/WebArchive.h&apos;, u&apos;Source/WebKit2/Shared/WebArchiveResource.cpp&apos;, u&apos;Source/WebKit2/Shared/WebArchiveResource.h&apos;, u&apos;Source/WebKit2/WebKit2.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.h&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/PasteboardNotifications.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/PasteboardNotifications_Bundle.cpp&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/execCopy.html&apos;]&quot; exit_code: 1
Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h:322:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 35 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>820815</commentid>
    <comment_count>4</comment_count>
      <attachid>185616</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-30 16:51:31 -0800</bug_when>
    <thetext>Comment on attachment 185616
Patch

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

I have a number of comments which seem straightforward to address, r=me.

&gt; Source/WebCore/ChangeLog:15
&gt; +        (WebCore::Editor::cut): Added calls to didWriteSelectionToPasteboard and
&gt; +        willWriteSelectionToPasteboard.

I don&apos;t think that there is a call to didWriteSelectionToPasteboard() in the final version of the patch.

&gt; Source/WebCore/page/EditorClient.h:95
&gt; +    virtual void willWriteSelectionToPasteboard(PassRefPtr&lt;Range&gt;) = 0;
&gt;      virtual void didWriteSelectionToPasteboard() = 0;
&gt; +    virtual void getClientPasteboardDataForRange(PassRefPtr&lt;Range&gt;, Vector&lt;String&gt;&amp; pasteboardTypes, Vector&lt;RefPtr&lt;SharedBuffer&gt; &gt;&amp; pasteboardData) = 0;

I don&apos;t see why passing Range ownership from WebCore to WebKit is desirable here. Semantically, this looks like it should be taking a plain pointer.

&gt; Source/WebKit2/Shared/WebArchive.cpp:68
&gt; +    Vector&lt;PassRefPtr&lt;ArchiveResource&gt; &gt; coreArchiveResources;

I&apos;m surprised that Vector&lt;PassRefPtr&gt; works. I don&apos;t understand what it means to have such a vector though - can you use a regular Vector&lt;RefPtr&gt;?

&gt; Source/WebKit2/Shared/WebArchive.cpp:75
&gt; +    Vector&lt;PassRefPtr&lt;LegacyWebArchive&gt; &gt; coreSubframeLegacyWebArchives;

Ditto.

&gt; Source/WebKit2/Shared/WebArchiveResource.cpp:95
&gt; +WebCore::ArchiveResource* WebArchiveResource::coreArchiveResource()

This file has &quot;using namespace WebCore&quot;, so it should not need WebCore prefixes.

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:131
&gt; +void InjectedBundlePageEditorClient::willWriteToPasteboard(WebPage* page, WebCore::Range* range)

This file has using namespace WebCore, so it should not need WebCore prefixes.

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:139
&gt; +void InjectedBundlePageEditorClient::getPasteboardDataForRange(WebPage* page, WebCore::Range* range, Vector&lt;String&gt;&amp; pasteboardTypes, Vector&lt;RefPtr&lt;WebCore::SharedBuffer&gt; &gt;&amp; pasteboardData)

Ditto.

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:168
&gt; +                RefPtr&lt;WebCore::SharedBuffer&gt; buffer = WebCore::SharedBuffer::create(item-&gt;bytes(), item-&gt;size());

Ditto.

&gt; Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:320
&gt; +void WebEditorClient::willWriteSelectionToPasteboard(PassRefPtr&lt;WebCore::Range&gt;)
&gt; +{
&gt; +}
&gt; +
&gt; +void WebEditorClient::getClientPasteboardDataForRange(PassRefPtr&lt;WebCore::Range&gt;, Vector&lt;String&gt;&amp; pasteboardTypes, Vector&lt;RefPtr&lt;WebCore::SharedBuffer&gt; &gt;&amp; pasteboardData)
&gt; +{
&gt; +}

I would appreciate a comment here, explaining the status of implementation.

Actually, I suspect that this is breaking other platforms. Can the functions just have an empty default implementation in WebCore?

&gt; Tools/TestWebKitAPI/Tests/WebKit2/PasteboardNotifications_Bundle.cpp:74
&gt; +
&gt; +    

Two empty lines here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820823</commentid>
    <comment_count>5</comment_count>
      <attachid>185616</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-30 16:58:19 -0800</bug_when>
    <thetext>Comment on attachment 185616
Patch

Attachment 185616 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16218791</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820836</commentid>
    <comment_count>6</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2013-01-30 17:06:32 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 185616 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185616&amp;action=review
&gt; 
&gt; I have a number of comments which seem straightforward to address, r=me.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:15
&gt; &gt; +        (WebCore::Editor::cut): Added calls to didWriteSelectionToPasteboard and
&gt; &gt; +        willWriteSelectionToPasteboard.
&gt; 
&gt; I don&apos;t think that there is a call to didWriteSelectionToPasteboard() in the final version of the patch.
Will fix it.
&gt; 
&gt; &gt; Source/WebCore/page/EditorClient.h:95
&gt; &gt; +    virtual void willWriteSelectionToPasteboard(PassRefPtr&lt;Range&gt;) = 0;
&gt; &gt;      virtual void didWriteSelectionToPasteboard() = 0;
&gt; &gt; +    virtual void getClientPasteboardDataForRange(PassRefPtr&lt;Range&gt;, Vector&lt;String&gt;&amp; pasteboardTypes, Vector&lt;RefPtr&lt;SharedBuffer&gt; &gt;&amp; pasteboardData) = 0;
&gt; 
&gt; I don&apos;t see why passing Range ownership from WebCore to WebKit is desirable here. Semantically, this looks like it should be taking a plain pointer.
You&apos;re correct. I&apos;ll change it to Range*.
&gt; 
&gt; &gt; Source/WebKit2/Shared/WebArchive.cpp:68
&gt; &gt; +    Vector&lt;PassRefPtr&lt;ArchiveResource&gt; &gt; coreArchiveResources;
&gt; 
&gt; I&apos;m surprised that Vector&lt;PassRefPtr&gt; works. I don&apos;t understand what it means to have such a vector though - can you use a regular Vector&lt;RefPtr&gt;?
&gt; 
&gt; &gt; Source/WebKit2/Shared/WebArchive.cpp:75
&gt; &gt; +    Vector&lt;PassRefPtr&lt;LegacyWebArchive&gt; &gt; coreSubframeLegacyWebArchives;
&gt; 
&gt; Ditto.

I&apos;ll let Sam comment on these.


&gt; I would appreciate a comment here, explaining the status of implementation.
Sure.

&gt; 
&gt; Actually, I suspect that this is breaking other platforms. Can the functions just have an empty default implementation in WebCore?
I don&apos;t believe it is possible. I&apos;ll fix the EditorClient implementations for the other platforms.

&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2/PasteboardNotifications_Bundle.cpp:74
&gt; &gt; +
&gt; &gt; +    
&gt; 
&gt; Two empty lines here.

ok.
Thanks for the review.
I will make sure the patch builds on all platforms before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820841</commentid>
    <comment_count>7</comment_count>
      <attachid>185616</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-30 17:10:43 -0800</bug_when>
    <thetext>Comment on attachment 185616
Patch

Attachment 185616 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16202982</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820849</commentid>
    <comment_count>8</comment_count>
      <attachid>185616</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 17:22:25 -0800</bug_when>
    <thetext>Comment on attachment 185616
Patch

Attachment 185616 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16252029</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820887</commentid>
    <comment_count>9</comment_count>
      <attachid>185616</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-01-30 17:55:59 -0800</bug_when>
    <thetext>Comment on attachment 185616
Patch

Attachment 185616 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/16249051</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820980</commentid>
    <comment_count>10</comment_count>
      <attachid>185616</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-30 19:21:03 -0800</bug_when>
    <thetext>Comment on attachment 185616
Patch

Attachment 185616 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16218874</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821030</commentid>
    <comment_count>11</comment_count>
      <attachid>185616</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-30 20:35:00 -0800</bug_when>
    <thetext>Comment on attachment 185616
Patch

Attachment 185616 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16251134</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821056</commentid>
    <comment_count>12</comment_count>
      <attachid>185616</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-30 21:20:39 -0800</bug_when>
    <thetext>Comment on attachment 185616
Patch

Attachment 185616 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16249165</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821121</commentid>
    <comment_count>13</comment_count>
      <attachid>185616</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-30 23:19:20 -0800</bug_when>
    <thetext>Comment on attachment 185616
Patch

Attachment 185616 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16280002</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821243</commentid>
    <comment_count>14</comment_count>
      <attachid>185616</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 01:27:47 -0800</bug_when>
    <thetext>Comment on attachment 185616
Patch

Attachment 185616 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16270078</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821736</commentid>
    <comment_count>15</comment_count>
      <attachid>185825</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2013-01-31 11:18:44 -0800</bug_when>
    <thetext>Created attachment 185825
Patch to test other platform builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821741</commentid>
    <comment_count>16</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-01-31 11:21:45 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 185616 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185616&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/WebArchive.cpp:68
&gt; &gt; +    Vector&lt;PassRefPtr&lt;ArchiveResource&gt; &gt; coreArchiveResources;
&gt; 
&gt; I&apos;m surprised that Vector&lt;PassRefPtr&gt; works. I don&apos;t understand what it means to have such a vector though - can you use a regular Vector&lt;RefPtr&gt;?
&gt; 
&gt; &gt; Source/WebKit2/Shared/WebArchive.cpp:75
&gt; &gt; +    Vector&lt;PassRefPtr&lt;LegacyWebArchive&gt; &gt; coreSubframeLegacyWebArchives;
&gt; 
&gt; Ditto.
&gt; 


This weirdness is necessary due to the very weird API of LegacyWebArchive, which takes a Vector&lt;PassRefPtr&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821742</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 11:22:13 -0800</bug_when>
    <thetext>Attachment 185825 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/editing/Editor.cpp&apos;, u&apos;Source/WebCore/editing/Editor.h&apos;, u&apos;Source/WebCore/loader/EmptyClients.h&apos;, u&apos;Source/WebCore/page/EditorClient.h&apos;, u&apos;Source/WebCore/platform/mac/PasteboardMac.mm&apos;, u&apos;Source/WebKit/blackberry/ChangeLog&apos;, u&apos;Source/WebKit/blackberry/WebCoreSupport/EditorClientBlackBerry.cpp&apos;, u&apos;Source/WebKit/blackberry/WebCoreSupport/EditorClientBlackBerry.h&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Source/WebKit/chromium/src/EditorClientImpl.cpp&apos;, u&apos;Source/WebKit/chromium/src/EditorClientImpl.h&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/WebKit/efl/WebCoreSupport/EditorClientEfl.cpp&apos;, u&apos;Source/WebKit/efl/WebCoreSupport/EditorClientEfl.h&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp&apos;, u&apos;Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.h&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebEditorClient.h&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm&apos;, u&apos;Source/WebKit/qt/ChangeLog&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/EditorClientQt.cpp&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/EditorClientQt.h&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebCoreSupport/WebEditorClient.cpp&apos;, u&apos;Source/WebKit/win/WebCoreSupport/WebEditorClient.h&apos;, u&apos;Source/WebKit/wince/ChangeLog&apos;, u&apos;Source/WebKit/wince/WebCoreSupport/EditorClientWinCE.cpp&apos;, u&apos;Source/WebKit/wince/WebCoreSupport/EditorClientWinCE.h&apos;, u&apos;Source/WebKit/wx/ChangeLog&apos;, u&apos;Source/WebKit/wx/WebKitSupport/EditorClientWx.cpp&apos;, u&apos;Source/WebKit/wx/WebKitSupport/EditorClientWx.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Shared/API/c/WKBase.h&apos;, u&apos;Source/WebKit2/Shared/API/c/WKSharedAPICast.h&apos;, u&apos;Source/WebKit2/Shared/API/c/mac/WKWebArchive.cpp&apos;, u&apos;Source/WebKit2/Shared/API/c/mac/WKWebArchive.h&apos;, u&apos;Source/WebKit2/Shared/API/c/mac/WKWebArchiveResource.cpp&apos;, u&apos;Source/WebKit2/Shared/API/c/mac/WKWebArchiveResource.h&apos;, u&apos;Source/WebKit2/Shared/APIClientTraits.cpp&apos;, u&apos;Source/WebKit2/Shared/APIClientTraits.h&apos;, u&apos;Source/WebKit2/Shared/APIObject.h&apos;, u&apos;Source/WebKit2/Shared/WebArchive.cpp&apos;, u&apos;Source/WebKit2/Shared/WebArchive.h&apos;, u&apos;Source/WebKit2/Shared/WebArchiveResource.cpp&apos;, u&apos;Source/WebKit2/Shared/WebArchiveResource.h&apos;, u&apos;Source/WebKit2/WebKit2.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.h&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/PasteboardNotifications.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/PasteboardNotifications_Bundle.cpp&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/execCopy.html&apos;]&quot; exit_code: 1
Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h:320:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 59 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>821752</commentid>
    <comment_count>18</comment_count>
      <attachid>185825</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-31 11:28:22 -0800</bug_when>
    <thetext>Comment on attachment 185825
Patch to test other platform builds

Attachment 185825 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16270310</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821758</commentid>
    <comment_count>19</comment_count>
      <attachid>185825</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-31 11:36:12 -0800</bug_when>
    <thetext>Comment on attachment 185825
Patch to test other platform builds

Attachment 185825 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16251483</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821768</commentid>
    <comment_count>20</comment_count>
      <attachid>185829</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2013-01-31 11:42:27 -0800</bug_when>
    <thetext>Created attachment 185829
one more try at making something that builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821775</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 11:45:58 -0800</bug_when>
    <thetext>Attachment 185829 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/editing/Editor.cpp&apos;, u&apos;Source/WebCore/editing/Editor.h&apos;, u&apos;Source/WebCore/loader/EmptyClients.h&apos;, u&apos;Source/WebCore/page/EditorClient.h&apos;, u&apos;Source/WebCore/platform/mac/PasteboardMac.mm&apos;, u&apos;Source/WebKit/blackberry/ChangeLog&apos;, u&apos;Source/WebKit/blackberry/WebCoreSupport/EditorClientBlackBerry.cpp&apos;, u&apos;Source/WebKit/blackberry/WebCoreSupport/EditorClientBlackBerry.h&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Source/WebKit/chromium/src/EditorClientImpl.cpp&apos;, u&apos;Source/WebKit/chromium/src/EditorClientImpl.h&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/WebKit/efl/WebCoreSupport/EditorClientEfl.cpp&apos;, u&apos;Source/WebKit/efl/WebCoreSupport/EditorClientEfl.h&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp&apos;, u&apos;Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.h&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebEditorClient.h&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm&apos;, u&apos;Source/WebKit/qt/ChangeLog&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/EditorClientQt.cpp&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/EditorClientQt.h&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebCoreSupport/WebEditorClient.cpp&apos;, u&apos;Source/WebKit/win/WebCoreSupport/WebEditorClient.h&apos;, u&apos;Source/WebKit/wince/ChangeLog&apos;, u&apos;Source/WebKit/wince/WebCoreSupport/EditorClientWinCE.cpp&apos;, u&apos;Source/WebKit/wince/WebCoreSupport/EditorClientWinCE.h&apos;, u&apos;Source/WebKit/wx/ChangeLog&apos;, u&apos;Source/WebKit/wx/WebKitSupport/EditorClientWx.cpp&apos;, u&apos;Source/WebKit/wx/WebKitSupport/EditorClientWx.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Shared/API/c/WKBase.h&apos;, u&apos;Source/WebKit2/Shared/API/c/WKSharedAPICast.h&apos;, u&apos;Source/WebKit2/Shared/API/c/mac/WKWebArchive.cpp&apos;, u&apos;Source/WebKit2/Shared/API/c/mac/WKWebArchive.h&apos;, u&apos;Source/WebKit2/Shared/API/c/mac/WKWebArchiveResource.cpp&apos;, u&apos;Source/WebKit2/Shared/API/c/mac/WKWebArchiveResource.h&apos;, u&apos;Source/WebKit2/Shared/APIClientTraits.cpp&apos;, u&apos;Source/WebKit2/Shared/APIClientTraits.h&apos;, u&apos;Source/WebKit2/Shared/APIObject.h&apos;, u&apos;Source/WebKit2/Shared/WebArchive.cpp&apos;, u&apos;Source/WebKit2/Shared/WebArchive.h&apos;, u&apos;Source/WebKit2/Shared/WebArchiveResource.cpp&apos;, u&apos;Source/WebKit2/Shared/WebArchiveResource.h&apos;, u&apos;Source/WebKit2/WebKit2.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.h&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/PasteboardNotifications.mm&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/PasteboardNotifications_Bundle.cpp&apos;, u&apos;Tools/TestWebKitAPI/Tests/WebKit2/execCopy.html&apos;]&quot; exit_code: 1
Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h:320:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 59 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>821796</commentid>
    <comment_count>22</comment_count>
      <attachid>185825</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 12:02:52 -0800</bug_when>
    <thetext>Comment on attachment 185825
Patch to test other platform builds

Attachment 185825 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16252544</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821805</commentid>
    <comment_count>23</comment_count>
      <attachid>185829</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-31 12:06:04 -0800</bug_when>
    <thetext>Comment on attachment 185829
one more try at making something that builds

Attachment 185829 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16280336</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821812</commentid>
    <comment_count>24</comment_count>
      <attachid>185825</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-01-31 12:11:17 -0800</bug_when>
    <thetext>Comment on attachment 185825
Patch to test other platform builds

Attachment 185825 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/16267318</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821840</commentid>
    <comment_count>25</comment_count>
      <attachid>185825</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-31 12:33:44 -0800</bug_when>
    <thetext>Comment on attachment 185825
Patch to test other platform builds

Attachment 185825 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16268369</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821882</commentid>
    <comment_count>26</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2013-01-31 13:16:54 -0800</bug_when>
    <thetext>Committed revision 141473.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185616</attachid>
            <date>2013-01-30 16:27:35 -0800</date>
            <delta_ts>2013-01-31 01:27:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>pasteboardnotifications.txt</filename>
            <type>text/plain</type>
            <size>77066</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTMzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAxLTMwICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MjogcHJvdmlkZSBu
ZXcgYnVuZGxlIEFQSXMgdG8gYWxsb3cgYnVuZGxlIGNsaWVudHMgdG8gYmUgbm90aWZpZWQgb2Yg
cGFzdGVib2FyZCBhY2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDgzOTYuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjkyMDQ2MT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHN1cHBv
cnQgaW4gV2ViQ29yZSB0byBuZXcgRWRpdG9yQ2xpZW50IG1ldGhvZHMgdG8gc3VwcG9ydCB0aGUg
bW9kaWZpZWQKKyAgICAgICAgY2xpZW50IGJ1bmRsZSBBUEkgaW4gV2ViS2l0Mi4KKworICAgICAg
ICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6Y3V0KTogQWRkZWQgY2FsbHMgdG8gZGlkV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQgYW5kCisgICAgICAgIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29weSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOiBBZGRlZC4KKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMu
aDogQWRkZWQgZW1wdHkgY2xpZW50IGltcGxlbWVudGF0aW9uCisgICAgICAgIGZvciB0aGUgbmV3
IG1ldGhvZHMuCisgICAgICAgIChXZWJDb3JlOjpFbXB0eUVkaXRvckNsaWVudDo6d2lsbFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RWRpdG9yQ2xp
ZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBwYWdlL0Vk
aXRvckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyk6IEFk
ZGVkIGNhbGwgdG8gZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZS4KKwogMjAxMy0wMS0z
MCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29udGVudEZpbHRl
ciBzaG91bGQgYmUgYSByZWYtY291bnRlZCBjbGFzcwpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4J
KHJldmlzaW9uIDE0MTAxOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODcsNiArMTg3LDcgQEAgX19aTjdXZWJDb3JlMTJQcmludENvbnRleHRE
MUV2CiBfX1pON1dlYkNvcmUxMlJlbmRlck9iamVjdDE5c2Nyb2xsUmVjdFRvVmlzaWJsZUVSS05T
XzEwTGF5b3V0UmVjdEVSS05TXzE1U2Nyb2xsQWxpZ25tZW50RVM2XwogX19aTjdXZWJDb3JlMTJT
aGFyZWRCdWZmZXIxMHdyYXBDRkRhdGFFUEs4X19DRkRhdGEKIF9fWk43V2ViQ29yZTEyU2hhcmVk
QnVmZmVyMTB3cmFwTlNEYXRhRVA2TlNEYXRhCitfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjEy
Y3JlYXRlQ0ZEYXRhRXYKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyMTJjcmVhdGVOU0RhdGFF
dgogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXIyNGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZUVS
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyNmFwcGVuZEVQS2NqCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAxNDEwMTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4Miw2ICs5
ODIsNyBAQCB2b2lkIEVkaXRvcjo6Y3V0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBS
ZWZQdHI8UmFuZ2U+IHNlbGVjdGlvbiA9IHNlbGVjdGVkUmFuZ2UoKTsKKyAgICB3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoc2VsZWN0aW9uKTsKICAgICBpZiAoc2hvdWxkRGVsZXRlUmFu
Z2Uoc2VsZWN0aW9uLmdldCgpKSkgewogICAgICAgICB1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZl
Y3RlZEJ5RWRpdGluZyh0cnVlKTsKICAgICAgICAgaWYgKGVuY2xvc2luZ1RleHRGb3JtQ29udHJv
bChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQoKSkpIHsKQEAgLTEwMDMsNiArMTAwNCw3IEBA
IHZvaWQgRWRpdG9yOjpjb3B5KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIHdpbGxX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChzZWxlY3RlZFJhbmdlKCkpOwogICAgIGlmIChlbmNs
b3NpbmdUZXh0Rm9ybUNvbnRyb2wobV9mcmFtZS0+c2VsZWN0aW9uKCktPnN0YXJ0KCkpKSB7CiAg
ICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPndyaXRlUGxhaW5UZXh0KHNl
bGVjdGVkVGV4dCgpLAogICAgICAgICAgICAgY2FuU21hcnRDb3B5T3JEZWxldGUoKSA/IFBhc3Rl
Ym9hcmQ6OkNhblNtYXJ0UmVwbGFjZSA6IFBhc3RlYm9hcmQ6OkNhbm5vdFNtYXJ0UmVwbGFjZSk7
CkBAIC0xMjc1LDYgKzEyNzcsMTIgQEAgdm9pZCBFZGl0b3I6OmRpZEVuZEVkaXRpbmcoKQogICAg
ICAgICBjbGllbnQoKS0+ZGlkRW5kRWRpdGluZygpOwogfQogCit2b2lkIEVkaXRvcjo6d2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlKQoreworICAg
IGlmIChjbGllbnQoKSkKKyAgICAgICAgY2xpZW50KCktPndpbGxXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChyYW5nZSk7Cit9CisKIHZvaWQgRWRpdG9yOjpkaWRXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZCgpCiB7CiAgICAgaWYgKGNsaWVudCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCShyZXZpc2lvbiAxNDEwMTkpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzMsNiArMjczLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBk
aWRCZWdpbkVkaXRpbmcoKTsKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKTsKKyAgICB2b2lkIHdp
bGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChQYXNzUmVmUHRyPFJhbmdlPik7CiAgICAgdm9p
ZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpOwogICAgIAogICAgIHZvaWQgc2hvd0Zv
bnRQYW5lbCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNp
b24gMTQxMDE5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NDEsNyArNDQxLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRv
Q2hhbmdlZFNlbGVjdGlvbihGcmFtZSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0
aW5nKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZChQYXNzUmVmUHRyPFJhbmdlPikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9h
cmREYXRhRm9yUmFuZ2UoUGFzc1JlZlB0cjxSYW5nZT4sIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9y
PFJlZlB0cjxTaGFyZWRCdWZmZXI+ID4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0U2Vs
ZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPikgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDE0MTAxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAgY2xh
c3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3MgTm9kZTsKIGNsYXNz
IFJhbmdlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3BlbGxDaGVja2VyOwogY2xhc3Mg
U3R5bGVQcm9wZXJ0eVNldDsKIGNsYXNzIFRleHRDaGVja2VyQ2xpZW50OwpAQCAtODksNyArOTAs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihGcmFtZSop
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3NSZWZQdHI8UmFuZ2U+KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFBhc3NS
ZWZQdHI8UmFuZ2U+LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gPiYgcGFzdGVib2FyZERhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCkgPSAwOwogICAgIAogICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+KSA9IDA7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQkocmV2
aXNpb24gMTQxMDE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4MiwxMCArMTgyLDE5IEBAIHZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcygKICAgICBpZiAoY29udmVydGVyKQogICAgICAgICBh
dHRyaWJ1dGVkU3RyaW5nID0gW2NvbnZlcnRlci5nZXQoKSBhdHRyaWJ1dGVkU3RyaW5nXTsKICAg
ICAKLSAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiB0eXBlcyA9ICFwYXN0ZWJvYXJkVHlwZXMuaXNF
bXB0eSgpID8gcGFzdGVib2FyZFR5cGVzIDogc2VsZWN0aW9uUGFzdGVib2FyZFR5cGVzKGNhblNt
YXJ0Q29weU9yRGVsZXRlLCBbYXR0cmlidXRlZFN0cmluZyBjb250YWluc0F0dGFjaG1lbnRzXSk7
CisgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMgPSAhcGFzdGVib2FyZFR5cGVzLmlzRW1wdHkoKSA/
IHBhc3RlYm9hcmRUeXBlcyA6IHNlbGVjdGlvblBhc3RlYm9hcmRUeXBlcyhjYW5TbWFydENvcHlP
ckRlbGV0ZSwgW2F0dHJpYnV0ZWRTdHJpbmcgY29udGFpbnNBdHRhY2htZW50c10pOworCisgICAg
VmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7CisgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+ID4gY2xpZW50RGF0YTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5nZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5nZSgp
LCBjbGllbnRUeXBlcywgY2xpZW50RGF0YSk7CisgICAgdHlwZXMuYXBwZW5kKGNsaWVudFR5cGVz
KTsKKwogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0
VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2xp
ZW50KCktPmRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpOwotICAgIAorCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbGllbnRUeXBlcy5zaXplKCk7ICsraSkKKyAgICAgICAg
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JU
eXBlKGNsaWVudERhdGFbaV0sIGNsaWVudFR5cGVzW2ldLCBtX3Bhc3RlYm9hcmROYW1lKTsKKwog
ICAgIC8vIFB1dCBIVE1MIG9uIHRoZSBwYXN0ZWJvYXJkLgogICAgIGlmICh0eXBlcy5jb250YWlu
cyhXZWJBcmNoaXZlUGJvYXJkVHlwZSkpCiAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShnZXREYXRhU2VsZWN0aW9uKGZy
YW1lLCBXZWJBcmNoaXZlUGJvYXJkVHlwZSksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTMzNCkKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDEzLTAx
LTMwICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0
MjogcHJvdmlkZSBuZXcgYnVuZGxlIEFQSXMgdG8gYWxsb3cgYnVuZGxlIGNsaWVudHMgdG8gYmUg
bm90aWZpZWQgb2YgcGFzdGVib2FyZCBhY2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgzOTYuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MjkyMDQ2MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGFkZHMgbmV3IGJ1bmRsZSBjbGllbnQgQVBJIHRvIHJlY2VpdmUgbm90aWZp
Y2F0aW9ucworICAgICAgICByZWxhdGl2ZSB0aGUgcGFzdGVib2FyZCBhY3Rpdml0eS4gVGhlcmUg
YXJlIDIgbmV3IEFQSSBhZGRlZCB0bworICAgICAgICBJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVu
dCwgdG8gcmVjZWl2ZSBub3RpZmljYXRpb24gYmVmb3JlIGFuZAorICAgICAgICBhZnRlciB0aGUg
cGFzdGVib2FyZCBjb250ZW50IGlzIGFkZGVkIGFuZCBvbmUgQVBJIHRvIHByb3ZpZGUKKyAgICAg
ICAgYWRkaXRpb25hbCBjb250ZW50IHRvIGFkZCB0byB0aGUgcGFzdGVib2FyZC4KKyAgICAgICAg
SW4gb3JkZXIgdG8gY3JlYXRlIGNvbnRlbnQgdG8gYWRkIHRvIHRoZSBwYXN0ZWJvYXJkLCBXS1dl
YkFyY2hpdmVSZWYKKyAgICAgICAgYW5kIFdLV2ViQXJjaGl2ZVJlc291cmNlc1JlZiBoYXZlIGJl
ZW4gYWRkZWQgdG8gdGhlIHNldCBvZiBBUEkgbGV2ZWwKKyAgICAgICAgb2JqZWN0LgorICAgICAg
ICBUaGlzIHdvcmsgaXMgYSBqb2ludCBlZmZvcnQgd2l0aCBTYW0gV2VpbmlnIHdobyBjb250cmli
dXRlZCB0aGUKKyAgICAgICAgc3VwcG9ydCBmb3IgV0tXZWJBcmNoaXZlUmVmLCBXS1dlYkFyY2hp
dmVSZXNvdXJjZXNSZWYgYW5kIHJlbGF0ZWQKKyAgICAgICAgZmlsZXMuIFNhbSBpcyB0aGUgYXV0
aG9yIG9mIHRoZSBmaXJzdCBjaHVuayBvZiBjaGFuZ2VzIGxpc3RlZCBiZWxvdy4KKyAgICAgICAg
CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAqIFNoYXJlZC9BUEkv
Yy9XS1NoYXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJj
aGl2ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV0tXZWJBcmNoaXZlR2V0VHlwZUlEKToKKyAgICAg
ICAgKFdLV2ViQXJjaGl2ZUNyZWF0ZSk6CisgICAgICAgIChXS1dlYkFyY2hpdmVDcmVhdGVXaXRo
RGF0YSk6CisgICAgICAgIChXS1dlYkFyY2hpdmVDcmVhdGVGcm9tUmFuZ2UpOgorICAgICAgICAo
V0tXZWJBcmNoaXZlQ29weU1haW5SZXNvdXJjZSk6CisgICAgICAgIChXS1dlYkFyY2hpdmVDb3B5
U3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdLV2ViQXJjaGl2ZUNvcHlTdWJmcmFtZUFyY2hpdmVz
KToKKyAgICAgICAgKFdLV2ViQXJjaGl2ZUNvcHlEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L2MvbWFjL1dLV2ViQXJjaGl2ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvbWFj
L1dLV2ViQXJjaGl2ZVJlc291cmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXS1dlYkFyY2hpdmVS
ZXNvdXJjZUdldFR5cGVJRCk6CisgICAgICAgIChXS1dlYkFyY2hpdmVSZXNvdXJjZUNyZWF0ZSk6
CisgICAgICAgIChXS1dlYkFyY2hpdmVSZXNvdXJjZUNvcHlEYXRhKToKKyAgICAgICAgKFdLV2Vi
QXJjaGl2ZVJlc291cmNlQ29weVVSTCk6CisgICAgICAgIChXS1dlYkFyY2hpdmVSZXNvdXJjZUNv
cHlNSU1FVHlwZSk6CisgICAgICAgIChXS1dlYkFyY2hpdmVSZXNvdXJjZUNvcHlUZXh0RW5jb2Rp
bmcpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlUmVzb3VyY2UuaDog
QWRkZWQuCisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9X
ZWJBcmNoaXZlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFyY2hpdmU6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFyY2hpdmU6OldlYkFyY2hpdmUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBcmNoaXZlOjp+V2ViQXJjaGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFy
Y2hpdmU6Om1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFyY2hpdmU6OnN1YnJl
c291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkFyY2hpdmU6OnN1YmZyYW1lQXJjaGl2ZXMp
OgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlQ0ZEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QXJjaGl2ZTo6ZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFyY2hpdmU6OmNvcmVMZWdhY3lX
ZWJBcmNoaXZlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQXJjaGl2ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViQXJjaGl2ZTo6dHlwZSk6CisgICAgICAgICogU2hhcmVkL1dlYkFyY2hp
dmVSZXNvdXJjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBcmNoaXZlUmVzb3Vy
Y2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJj
aGl2ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJjaGl2ZVJlc291cmNlOjp+V2Vi
QXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZUNGRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkFyY2hpdmVSZXNvdXJjZTo6VVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJjaGl2ZVJl
c291cmNlOjpNSU1FVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFyY2hpdmVSZXNvdXJjZTo6
dGV4dEVuY29kaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJjaGl2ZVJlc291cmNlOjpjb3Jl
QXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQXJjaGl2ZVJlc291cmNlLmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBcmNoaXZlUmVzb3VyY2U6OnR5cGUpOgorICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgCisgICAg
ICAgICogU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHA6IEFkZGVkIHZlcnNpb25pbmcgdG8gSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LgorICAgICAgICAqIFNoYXJlZC9BUElDbGllbnRU
cmFpdHMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudDo6ZGlkV3JpdGVUb1Bhc3RlYm9hcmQpOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpkaWRXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50
OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorCiAyMDEzLTAxLTMwICBIdWFuZyBE
b25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIENvb3JkaW5hdGVk
IEdyYXBoaWNzOiBMYXllclRyZWVSZW5kZXJlciBtYW5hZ2VzIHRoZSBzdXJmYWNlIG9mIFVwZGF0
ZUF0bGFzLgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAJ
KHJldmlzaW9uIDE0MTAxOSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFp
dHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3NywxMSBAQCBjb25zdCBzaXplX3QgQVBJ
Q2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnCiAgICAgc2l6ZW9mKFdLQnVuZGxlUGFnZUZvcm1DbGll
bnQpCiB9OwogCitjb25zdCBzaXplX3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUVkaXRv
ckNsaWVudD46OmludGVyZmFjZVNpemVzQnlWZXJzaW9uW10gPSB7CisgICAgb2Zmc2V0b2YoV0tC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQpLAorICAgIHNpemVv
ZihXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnQpCit9OworCiBjb25zdCBzaXplX3QgQVBJQ2xpZW50
VHJhaXRzPFdLQnVuZGxlUGFnZVVJQ2xpZW50Pjo6aW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bXSA9
IHsKICAgICBvZmZzZXRvZihXS0J1bmRsZVBhZ2VVSUNsaWVudCwgZGlkUmVhY2hBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGEpLAogICAgIHNpemVvZihXS0J1bmRsZVBhZ2VVSUNsaWVudCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmgJKHJldmlzaW9uIDE0MTAx
OSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuaAkod29ya2luZyBj
b3B5KQpAQCAtNzUsNiArNzUsMTAgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQVBJQ2xpZW50VHJhaXRz
PFdLQnVuZAogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25b
Ml07CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50PiB7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbnRlcmZhY2VTaXplc0J5
VmVyc2lvblsyXTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFQSUNsaWVudFRyYWl0czxXS0Nv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudD4gewogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW50
ZXJmYWNlU2l6ZXNCeVZlcnNpb25bMl07CiB9OwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmpl
Y3QuaAkocmV2aXNpb24gMTQxMDE5KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgVHlw
ZVVSTFJlcXVlc3QsCiAgICAgICAgIFR5cGVVUkxSZXNwb25zZSwKICAgICAgICAgVHlwZVVzZXJD
b250ZW50VVJMUGF0dGVybiwKKyAgICAgICAgVHlwZVdlYkFyY2hpdmUsCisgICAgICAgIFR5cGVX
ZWJBcmNoaXZlUmVzb3VyY2UsCiAKICAgICAgICAgLy8gQmFzZSBudW1lcmljIHR5cGVzCiAgICAg
ICAgIFR5cGVCb29sZWFuLApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkFyY2hpdmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZlLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZlLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViQXJjaGl2ZS5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW5j
bHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJXZWJBcmNoaXZlUmVzb3VyY2UuaCIK
KyNpbmNsdWRlICJXZWJEYXRhLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZl
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8V2ViQXJjaGl2ZT4gV2ViQXJj
aGl2ZTo6Y3JlYXRlKFdlYkFyY2hpdmVSZXNvdXJjZSogbWFpblJlc291cmNlLCBJbW11dGFibGVB
cnJheSogc3VicmVzb3VyY2VzLCBJbW11dGFibGVBcnJheSogc3ViZnJhbWVBcmNoaXZlcykKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkFyY2hpdmUobWFpblJlc291cmNlLCBzdWJyZXNv
dXJjZXMsIHN1YmZyYW1lQXJjaGl2ZXMpKTsKK30KKworUGFzc1JlZlB0cjxXZWJBcmNoaXZlPiBX
ZWJBcmNoaXZlOjpjcmVhdGUoV2ViRGF0YSogZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYkFyY2hpdmUoZGF0YSkpOworfQorCitQYXNzUmVmUHRyPFdlYkFyY2hpdmU+IFdlYkFy
Y2hpdmU6OmNyZWF0ZShQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGxlZ2FjeVdlYkFyY2hp
dmUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJBcmNoaXZlKGxlZ2FjeVdlYkFyY2hp
dmUpKTsKK30KKworUGFzc1JlZlB0cjxXZWJBcmNoaXZlPiBXZWJBcmNoaXZlOjpjcmVhdGUoUmFu
Z2UqIHJhbmdlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQXJjaGl2ZShMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUocmFuZ2UpKSk7Cit9CisKK1dlYkFyY2hpdmU6OldlYkFyY2hpdmUo
V2ViQXJjaGl2ZVJlc291cmNlKiBtYWluUmVzb3VyY2UsIEltbXV0YWJsZUFycmF5KiBzdWJyZXNv
dXJjZXMsIEltbXV0YWJsZUFycmF5KiBzdWJmcmFtZUFyY2hpdmVzKQorICAgIDogbV9jYWNoZWRN
YWluUmVzb3VyY2UobWFpblJlc291cmNlKQorICAgICwgbV9jYWNoZWRTdWJyZXNvdXJjZXMoc3Vi
cmVzb3VyY2VzKQorICAgICwgbV9jYWNoZWRTdWJmcmFtZUFyY2hpdmVzKHN1YmZyYW1lQXJjaGl2
ZXMpCit7CisgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY29yZU1haW5SZXNvdXJjZSA9IG1f
Y2FjaGVkTWFpblJlc291cmNlLT5jb3JlQXJjaGl2ZVJlc291cmNlKCk7CisKKyAgICBWZWN0b3I8
UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+ID4gY29yZUFyY2hpdmVSZXNvdXJjZXM7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NhY2hlZFN1YnJlc291cmNlcy0+c2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgUmVmUHRyPFdlYkFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBtX2NhY2hl
ZFN1YnJlc291cmNlcy0+YXQ8V2ViQXJjaGl2ZVJlc291cmNlPihpKTsKKyAgICAgICAgQVNTRVJU
KHJlc291cmNlKTsKKyAgICAgICAgY29yZUFyY2hpdmVSZXNvdXJjZXMuYXBwZW5kKHJlc291cmNl
LT5jb3JlQXJjaGl2ZVJlc291cmNlKCkpOworICAgIH0KKworICAgIFZlY3RvcjxQYXNzUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+ID4gY29yZVN1YmZyYW1lTGVnYWN5V2ViQXJjaGl2ZXM7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NhY2hlZFN1YmZyYW1lQXJjaGl2ZXMtPnNpemUoKTsg
KytpKSB7CisgICAgICAgIFJlZlB0cjxXZWJBcmNoaXZlPiBzdWJmcmFtZVdlYkFyY2hpdmUgPSBt
X2NhY2hlZFN1YmZyYW1lQXJjaGl2ZXMtPmF0PFdlYkFyY2hpdmU+KGkpOworICAgICAgICBBU1NF
UlQoc3ViZnJhbWVXZWJBcmNoaXZlKTsKKyAgICAgICAgY29yZVN1YmZyYW1lTGVnYWN5V2ViQXJj
aGl2ZXMuYXBwZW5kKHN1YmZyYW1lV2ViQXJjaGl2ZS0+Y29yZUxlZ2FjeVdlYkFyY2hpdmUoKSk7
CisgICAgfQorCisgICAgbV9sZWdhY3lXZWJBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGNvcmVNYWluUmVzb3VyY2UucmVsZWFzZSgpLCBjb3JlQXJjaGl2ZVJlc291cmNlcywgY29y
ZVN1YmZyYW1lTGVnYWN5V2ViQXJjaGl2ZXMpOworfQorCitXZWJBcmNoaXZlOjpXZWJBcmNoaXZl
KFdlYkRhdGEqIGRhdGEpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS0+Ynl0ZXMoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBtX2xl
Z2FjeVdlYkFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoYnVmZmVyLmdldCgpKTsK
K30KKworV2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZShQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+
IGxlZ2FjeVdlYkFyY2hpdmUpCisgICAgOiBtX2xlZ2FjeVdlYkFyY2hpdmUobGVnYWN5V2ViQXJj
aGl2ZSkKK3sKK30KKworV2ViQXJjaGl2ZTo6fldlYkFyY2hpdmUoKQoreworfQorCitXZWJBcmNo
aXZlUmVzb3VyY2UqIFdlYkFyY2hpdmU6Om1haW5SZXNvdXJjZSgpCit7CisgICAgaWYgKCFtX2Nh
Y2hlZE1haW5SZXNvdXJjZSkKKyAgICAgICAgbV9jYWNoZWRNYWluUmVzb3VyY2UgPSBXZWJBcmNo
aXZlUmVzb3VyY2U6OmNyZWF0ZShtX2xlZ2FjeVdlYkFyY2hpdmUtPm1haW5SZXNvdXJjZSgpKTsK
KyAgICByZXR1cm4gbV9jYWNoZWRNYWluUmVzb3VyY2UuZ2V0KCk7Cit9CisKK0ltbXV0YWJsZUFy
cmF5KiBXZWJBcmNoaXZlOjpzdWJyZXNvdXJjZXMoKQoreworICAgIGlmICghbV9jYWNoZWRTdWJy
ZXNvdXJjZXMpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+ID4gc3VicmVzb3Vy
Y2VzOworICAgICAgICBzdWJyZXNvdXJjZXMucmVzZXJ2ZUNhcGFjaXR5KG1fbGVnYWN5V2ViQXJj
aGl2ZS0+c3VicmVzb3VyY2VzKCkuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fbGVnYWN5V2ViQXJjaGl2ZS0+c3VicmVzb3VyY2VzKCkuc2l6ZSgpOyArK2kpCisg
ICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKFdlYkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRl
KG1fbGVnYWN5V2ViQXJjaGl2ZS0+c3VicmVzb3VyY2VzKClbaV0uZ2V0KCkpKTsKKworICAgICAg
ICBtX2NhY2hlZFN1YnJlc291cmNlcyA9IEltbXV0YWJsZUFycmF5OjphZG9wdChzdWJyZXNvdXJj
ZXMpOworICAgIH0KKworICAgIHJldHVybiBtX2NhY2hlZFN1YnJlc291cmNlcy5nZXQoKTsKK30K
KworSW1tdXRhYmxlQXJyYXkqIFdlYkFyY2hpdmU6OnN1YmZyYW1lQXJjaGl2ZXMoKQoreworICAg
IGlmICghbV9jYWNoZWRTdWJmcmFtZUFyY2hpdmVzKSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8
QVBJT2JqZWN0PiA+IHN1YmZyYW1lV2ViQXJjaGl2ZXM7CisgICAgICAgIHN1YmZyYW1lV2ViQXJj
aGl2ZXMucmVzZXJ2ZUNhcGFjaXR5KG1fbGVnYWN5V2ViQXJjaGl2ZS0+c3ViZnJhbWVBcmNoaXZl
cygpLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlZ2FjeVdl
YkFyY2hpdmUtPnN1YmZyYW1lQXJjaGl2ZXMoKS5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHN1
YmZyYW1lV2ViQXJjaGl2ZXMuYXBwZW5kKFdlYkFyY2hpdmU6OmNyZWF0ZShzdGF0aWNfY2FzdDxM
ZWdhY3lXZWJBcmNoaXZlKj4obV9sZWdhY3lXZWJBcmNoaXZlLT5zdWJmcmFtZUFyY2hpdmVzKClb
aV0uZ2V0KCkpKSk7CisKKyAgICAgICAgbV9jYWNoZWRTdWJmcmFtZUFyY2hpdmVzID0gSW1tdXRh
YmxlQXJyYXk6OmFkb3B0KHN1YmZyYW1lV2ViQXJjaGl2ZXMpOworICAgIH0KKworICAgIHJldHVy
biBtX2NhY2hlZFN1YmZyYW1lQXJjaGl2ZXMuZ2V0KCk7Cit9CisKK3N0YXRpYyB2b2lkIHJlbGVh
c2VDRkRhdGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgLy8gQmFs
YW5jZWQgYnkgQ0ZSZXRhaW4gaW4gV2ViQXJjaGl2ZTo6ZGF0YSgpLgorICAgIENGUmVsZWFzZShk
YXRhKTsKK30KKworUGFzc1JlZlB0cjxXZWJEYXRhPiBXZWJBcmNoaXZlOjpkYXRhKCkKK3sKKyAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByYXdEYXRhUmVwcmVzZW50YXRpb24gPSBtX2xlZ2FjeVdl
YkFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpOworCisgICAgLy8gQmFsYW5jZWQgYnkg
Q0ZSZWxlYXNlIGluIHJlbGVhc2VDRkRhdGEuCisgICAgQ0ZSZXRhaW4ocmF3RGF0YVJlcHJlc2Vu
dGF0aW9uLmdldCgpKTsKKworICAgIHJldHVybiBXZWJEYXRhOjpjcmVhdGVXaXRob3V0Q29weWlu
ZyhDRkRhdGFHZXRCeXRlUHRyKHJhd0RhdGFSZXByZXNlbnRhdGlvbi5nZXQoKSksIENGRGF0YUdl
dExlbmd0aChyYXdEYXRhUmVwcmVzZW50YXRpb24uZ2V0KCkpLCByZWxlYXNlQ0ZEYXRhLCByYXdE
YXRhUmVwcmVzZW50YXRpb24uZ2V0KCkpOworfQorCitXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZl
KiBXZWJBcmNoaXZlOjpjb3JlTGVnYWN5V2ViQXJjaGl2ZSgpCit7CisgICAgcmV0dXJuIG1fbGVn
YWN5V2ViQXJjaGl2ZS5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQXJjaGl2
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZlLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQXJjaGl2ZS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBcmNoaXZlX2gK
KyNkZWZpbmUgV2ViQXJjaGl2ZV9oCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbmNsdWRlICJB
UElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTGVnYWN5V2ViQXJjaGl2ZTsK
K2NsYXNzIFJhbmdlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSW1tdXRhYmxl
QXJyYXk7CitjbGFzcyBXZWJBcmNoaXZlUmVzb3VyY2U7CitjbGFzcyBXZWJEYXRhOworCitjbGFz
cyBXZWJBcmNoaXZlIDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNv
bnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVXZWJBcmNoaXZlOworICAgIHZpcnR1YWwgfldlYkFyY2hp
dmUoKTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkFyY2hpdmU+IGNyZWF0ZShXZWJBcmNo
aXZlUmVzb3VyY2UqIG1haW5SZXNvdXJjZSwgSW1tdXRhYmxlQXJyYXkqIHN1YnJlc291cmNlcywg
SW1tdXRhYmxlQXJyYXkqIHN1YmZyYW1lQXJjaGl2ZXMpOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYkFyY2hpdmU+IGNyZWF0ZShXZWJEYXRhKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
QXJjaGl2ZT4gY3JlYXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZT4pOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkFyY2hpdmU+IGNyZWF0ZShXZWJDb3JlOjpSYW5nZSop
OworCisgICAgV2ViQXJjaGl2ZVJlc291cmNlKiBtYWluUmVzb3VyY2UoKTsKKyAgICBJbW11dGFi
bGVBcnJheSogc3VicmVzb3VyY2VzKCk7CisgICAgSW1tdXRhYmxlQXJyYXkqIHN1YmZyYW1lQXJj
aGl2ZXMoKTsKKworICAgIFBhc3NSZWZQdHI8V2ViRGF0YT4gZGF0YSgpOworCisgICAgV2ViQ29y
ZTo6TGVnYWN5V2ViQXJjaGl2ZSogY29yZUxlZ2FjeVdlYkFyY2hpdmUoKTsKKworcHJpdmF0ZToK
KyAgICBXZWJBcmNoaXZlKFdlYkFyY2hpdmVSZXNvdXJjZSogbWFpblJlc291cmNlLCBJbW11dGFi
bGVBcnJheSogc3VicmVzb3VyY2VzLCBJbW11dGFibGVBcnJheSogc3ViZnJhbWVBcmNoaXZlcyk7
CisgICAgV2ViQXJjaGl2ZShXZWJEYXRhKik7CisgICAgV2ViQXJjaGl2ZShQYXNzUmVmUHRyPFdl
YkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU+KTsKKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisgICAgUmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVdlYkFy
Y2hpdmU+IG1fbGVnYWN5V2ViQXJjaGl2ZTsKKyAgICBSZWZQdHI8V2ViQXJjaGl2ZVJlc291cmNl
PiBtX2NhY2hlZE1haW5SZXNvdXJjZTsKKyAgICBSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IG1fY2Fj
aGVkU3VicmVzb3VyY2VzOworICAgIFJlZlB0cjxJbW11dGFibGVBcnJheT4gbV9jYWNoZWRTdWJm
cmFtZUFyY2hpdmVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQ
TEFURk9STShNQUMpCisKKyNlbmRpZiAvLyBXZWJBcmNoaXZlX2gKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJBcmNoaXZlUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZlUmVzb3VyY2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkFyY2hpdmVSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYkFyY2hpdmVSZXNvdXJjZS5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW5jbHVk
ZSAiV2ViRGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8
V2ViQXJjaGl2ZVJlc291cmNlPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShXZWJEYXRhKiBk
YXRhLCBjb25zdCBTdHJpbmcmIFVSTCwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmcpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJBcmNoaXZl
UmVzb3VyY2UoZGF0YSwgVVJMLCBNSU1FVHlwZSwgdGV4dEVuY29kaW5nKSk7Cit9CisKK1Bhc3NS
ZWZQdHI8V2ViQXJjaGl2ZVJlc291cmNlPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShQYXNz
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gYXJjaGl2ZVJlc291cmNlKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViQXJjaGl2ZVJlc291cmNlKGFyY2hpdmVSZXNvdXJjZSkpOworfQorCitX
ZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFyY2hpdmVSZXNvdXJjZShXZWJEYXRhKiBkYXRhLCBjb25z
dCBTdHJpbmcmIFVSTCwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmcpCisgICAgOiBtX2FyY2hpdmVSZXNvdXJjZShBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLT5ieXRlcygpLCBkYXRhLT5zaXplKCkpLCBLVVJM
KFdlYkNvcmU6OktVUkwoKSwgVVJMKSwgTUlNRVR5cGUsIHRleHRFbmNvZGluZywgU3RyaW5nKCkp
KQoreworfQorCitXZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFyY2hpdmVSZXNvdXJjZShQYXNzUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gYXJjaGl2ZVJlc291cmNlKQorICAgIDogbV9hcmNoaXZlUmVz
b3VyY2UoYXJjaGl2ZVJlc291cmNlKQoreworfQorCitXZWJBcmNoaXZlUmVzb3VyY2U6On5XZWJB
cmNoaXZlUmVzb3VyY2UoKQoreworfQorCitzdGF0aWMgdm9pZCByZWxlYXNlQ0ZEYXRhKHVuc2ln
bmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQoreworICAgIC8vIEJhbGFuY2VkIGJ5IENGUmV0
YWluIGluIFdlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSgpLgorICAgIENGUmVsZWFzZShkYXRhKTsK
K30KKworUGFzc1JlZlB0cjxXZWJEYXRhPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEoKQorewor
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGFkb3B0Q0YobV9hcmNoaXZlUmVzb3Vy
Y2UtPmRhdGEoKS0+Y3JlYXRlQ0ZEYXRhKCkpOworCisgICAgLy8gQmFsYW5jZWQgYnkgQ0ZSZWxl
YXNlIGluIHJlbGVhc2VDRkRhdGEuCisgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKKworICAg
IHJldHVybiBXZWJEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhDRkRhdGFHZXRCeXRlUHRyKGNm
RGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpLCByZWxlYXNlQ0ZEYXRh
LCBjZkRhdGEuZ2V0KCkpOworfQorCitTdHJpbmcgV2ViQXJjaGl2ZVJlc291cmNlOjpVUkwoKQor
eworICAgIHJldHVybiBtX2FyY2hpdmVSZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCk7Cit9CisKK1N0
cmluZyBXZWJBcmNoaXZlUmVzb3VyY2U6Ok1JTUVUeXBlKCkKK3sKKyAgICByZXR1cm4gbV9hcmNo
aXZlUmVzb3VyY2UtPm1pbWVUeXBlKCk7Cit9CisKK1N0cmluZyBXZWJBcmNoaXZlUmVzb3VyY2U6
OnRleHRFbmNvZGluZygpCit7CisgICAgcmV0dXJuIG1fYXJjaGl2ZVJlc291cmNlLT50ZXh0RW5j
b2RpbmcoKTsKK30KKworV2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlKiBXZWJBcmNoaXZlUmVzb3Vy
Y2U6OmNvcmVBcmNoaXZlUmVzb3VyY2UoKQoreworICAgIHJldHVybiBtX2FyY2hpdmVSZXNvdXJj
ZS5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9S
TShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQXJjaGl2ZVJlc291cmNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkFyY2hpdmVSZXNvdXJjZS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkFyY2hpdmVSZXNvdXJj
ZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJBcmNoaXZlUmVzb3VyY2VfaAorI2RlZmluZSBXZWJBcmNoaXZlUmVzb3VyY2VfaAorCisjaWYg
UExBVEZPUk0oTUFDKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQXJjaGl2ZVJlc291cmNlOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGF0YTsKK2NsYXNzIFdlYlN0cmluZzsK
K2NsYXNzIFdlYlVSTDsKKworY2xhc3MgV2ViQXJjaGl2ZVJlc291cmNlIDogcHVibGljIEFQSU9i
amVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVXZWJB
cmNoaXZlUmVzb3VyY2U7CisgICAgdmlydHVhbCB+V2ViQXJjaGl2ZVJlc291cmNlKCk7CisKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShXZWJEYXRhKiwg
Y29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJBcmNoaXZlUmVzb3VyY2U+
IGNyZWF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZT4pOworCisgICAgUGFz
c1JlZlB0cjxXZWJEYXRhPiBkYXRhKCk7CisgICAgU3RyaW5nIFVSTCgpOworICAgIFN0cmluZyBN
SU1FVHlwZSgpOworICAgIFN0cmluZyB0ZXh0RW5jb2RpbmcoKTsKKworICAgIFdlYkNvcmU6OkFy
Y2hpdmVSZXNvdXJjZSogY29yZUFyY2hpdmVSZXNvdXJjZSgpOworCitwcml2YXRlOgorICAgIFdl
YkFyY2hpdmVSZXNvdXJjZShXZWJEYXRhKiwgY29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0IFN0cmlu
ZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKTsKKyAgICBXZWJBcmNoaXZl
UmVzb3VyY2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U+KTsKKworICAgIHZp
cnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisgICAgUmVmUHRy
PFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZT4gbV9hcmNoaXZlUmVzb3VyY2U7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKworI2VuZGlmIC8v
IFdlYkFyY2hpdmVSZXNvdXJjZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
V0tCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFz
ZS5oCShyZXZpc2lvbiAxNDEwMTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tC
YXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDggQEAgdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tVUkwqIFdLVVJMUgogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tVUkxS
ZXF1ZXN0KiBXS1VSTFJlcXVlc3RSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1VS
TFJlc3BvbnNlKiBXS1VSTFJlc3BvbnNlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
V0tVc2VyQ29udGVudFVSTFBhdHRlcm4qIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuUmVmOwordHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tXZWJBcmNoaXZlKiBXS1dlYkFyY2hpdmVSZWY7Cit0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYkFyY2hpdmVSZXNvdXJjZSogV0tXZWJBcmNo
aXZlUmVzb3VyY2VSZWY7CiAKIGVudW0gV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIHsKICAg
ICBrV0tJbmplY3RJbkFsbEZyYW1lcywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS1NoYXJlZEFQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJKHJldmlzaW9uIDE0MTAxOSkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjIs
NiArNjIsOCBAQCBjbGFzcyBJbW11dGFibGVBcnJheTsKIGNsYXNzIEltbXV0YWJsZURpY3Rpb25h
cnk7CiBjbGFzcyBNdXRhYmxlQXJyYXk7CiBjbGFzcyBNdXRhYmxlRGljdGlvbmFyeTsKK2NsYXNz
IFdlYkFyY2hpdmU7CitjbGFzcyBXZWJBcmNoaXZlUmVzb3VyY2U7CiBjbGFzcyBXZWJDZXJ0aWZp
Y2F0ZUluZm87CiBjbGFzcyBXZWJDb25uZWN0aW9uOwogY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVt
OwpAQCAtMTEwLDYgKzExMiwxMSBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tVUkxSZXF1ZXN0UmVm
LCBXZWJVCiBXS19BRERfQVBJX01BUFBJTkcoV0tVUkxSZXNwb25zZVJlZiwgV2ViVVJMUmVzcG9u
c2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyQ29udGVudFVSTFBhdHRlcm5SZWYsIFdlYlVz
ZXJDb250ZW50VVJMUGF0dGVybikKIAorI2lmIFBMQVRGT1JNKE1BQykKK1dLX0FERF9BUElfTUFQ
UElORyhXS1dlYkFyY2hpdmVSZWYsIFdlYkFyY2hpdmUpCitXS19BRERfQVBJX01BUFBJTkcoV0tX
ZWJBcmNoaXZlUmVzb3VyY2VSZWYsIFdlYkFyY2hpdmVSZXNvdXJjZSkKKyNlbmRpZgorCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBJbXBsVHlwZSwgdHlwZW5hbWUgQVBJVHlwZSA9IHR5cGVuYW1lIEltcGxU
eXBlSW5mbzxJbXBsVHlwZSo+OjpBUElUeXBlPgogY2xhc3MgUHJveHlpbmdSZWZQdHIgewogcHVi
bGljOgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFyY2hpdmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tXZWJB
cmNoaXZlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9t
YWMvV0tXZWJBcmNoaXZlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1dlYkFyY2hpdmUuaCIKKwor
I2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZS5oIgorI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLU2hh
cmVkQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYkFyY2hpdmUuaCIKKyNpbmNsdWRlICJXZWJBcmNo
aXZlUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJXZWJEYXRhLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CisKK1dLVHlwZUlEIFdLV2ViQXJjaGl2ZUdldFR5cGVJRCgpCit7CisgICAgcmV0dXJu
IHRvQVBJKFdlYkFyY2hpdmU6OkFQSVR5cGUpOworfQorCitXS1dlYkFyY2hpdmVSZWYgV0tXZWJB
cmNoaXZlQ3JlYXRlKFdLV2ViQXJjaGl2ZVJlc291cmNlUmVmIG1haW5SZXNvdXJjZVJlZiwgV0tB
cnJheVJlZiBzdWJyZXNvdXJjZXNSZWYsIFdLQXJyYXlSZWYgc3ViZnJhbWVBcmNoaXZlc1JlZikK
K3sKKyAgICBSZWZQdHI8V2ViQXJjaGl2ZT4gd2ViQXJjaGl2ZSA9IFdlYkFyY2hpdmU6OmNyZWF0
ZSh0b0ltcGwobWFpblJlc291cmNlUmVmKSwgdG9JbXBsKHN1YnJlc291cmNlc1JlZiksIHRvSW1w
bChzdWJmcmFtZUFyY2hpdmVzUmVmKSk7CisgICAgcmV0dXJuIHRvQVBJKHdlYkFyY2hpdmUucmVs
ZWFzZSgpLmxlYWtSZWYoKSk7Cit9CisKK1dLV2ViQXJjaGl2ZVJlZiBXS1dlYkFyY2hpdmVDcmVh
dGVXaXRoRGF0YShXS0RhdGFSZWYgZGF0YVJlZikKK3sKKyAgICBSZWZQdHI8V2ViQXJjaGl2ZT4g
d2ViQXJjaGl2ZSA9IFdlYkFyY2hpdmU6OmNyZWF0ZSh0b0ltcGwoZGF0YVJlZikpOworICAgIHJl
dHVybiB0b0FQSSh3ZWJBcmNoaXZlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworfQorCitXS1dlYkFy
Y2hpdmVSZWYgV0tXZWJBcmNoaXZlQ3JlYXRlRnJvbVJhbmdlKFdLQnVuZGxlUmFuZ2VIYW5kbGVS
ZWYgcmFuZ2VIYW5kbGVSZWYpCit7CisgICAgUmVmUHRyPFdlYkFyY2hpdmU+IHdlYkFyY2hpdmUg
PSBXZWJBcmNoaXZlOjpjcmVhdGUodG9JbXBsKHJhbmdlSGFuZGxlUmVmKS0+Y29yZVJhbmdlKCkp
OworICAgIHJldHVybiB0b0FQSSh3ZWJBcmNoaXZlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworfQor
CitXS1dlYkFyY2hpdmVSZXNvdXJjZVJlZiBXS1dlYkFyY2hpdmVDb3B5TWFpblJlc291cmNlKFdL
V2ViQXJjaGl2ZVJlZiB3ZWJBcmNoaXZlUmVmKQoreworICAgIFJlZlB0cjxXZWJBcmNoaXZlUmVz
b3VyY2U+IG1haW5SZXNvdXJjZSA9IHRvSW1wbCh3ZWJBcmNoaXZlUmVmKS0+bWFpblJlc291cmNl
KCk7CisgICAgcmV0dXJuIHRvQVBJKG1haW5SZXNvdXJjZS5yZWxlYXNlKCkubGVha1JlZigpKTsK
K30KKworV0tBcnJheVJlZiBXS1dlYkFyY2hpdmVDb3B5U3VicmVzb3VyY2VzKFdLV2ViQXJjaGl2
ZVJlZiB3ZWJBcmNoaXZlUmVmKQoreworICAgIFJlZlB0cjxJbW11dGFibGVBcnJheT4gc3VicmVz
b3VyY2VzID0gdG9JbXBsKHdlYkFyY2hpdmVSZWYpLT5zdWJyZXNvdXJjZXMoKTsKKyAgICByZXR1
cm4gdG9BUEkoc3VicmVzb3VyY2VzLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworfQorCitXS0FycmF5
UmVmIFdLV2ViQXJjaGl2ZUNvcHlTdWJmcmFtZUFyY2hpdmVzKFdLV2ViQXJjaGl2ZVJlZiB3ZWJB
cmNoaXZlUmVmKQoreworICAgIFJlZlB0cjxJbW11dGFibGVBcnJheT4gc3ViZnJhbWVBcmNoaXZl
cyA9IHRvSW1wbCh3ZWJBcmNoaXZlUmVmKS0+c3ViZnJhbWVBcmNoaXZlcygpOworICAgIHJldHVy
biB0b0FQSShzdWJmcmFtZUFyY2hpdmVzLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworfQorCitXS0Rh
dGFSZWYgV0tXZWJBcmNoaXZlQ29weURhdGEoV0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYp
Cit7CisgICAgUmVmUHRyPFdlYkRhdGE+IGRhdGEgPSB0b0ltcGwod2ViQXJjaGl2ZVJlZiktPmRh
dGEoKTsKKyAgICByZXR1cm4gdG9BUEkoZGF0YS5yZWxlYXNlKCkubGVha1JlZigpKTsKK30KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFyY2hpdmUuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNo
aXZlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdLV2ViQXJjaGl2ZV9oCisjZGVmaW5lIFdLV2ViQXJjaGl2ZV9oCisKKyNpbmNsdWRlIDxXZWJL
aXQyL1dLQmFzZS5oPgorCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLV2ViQXJjaGl2
ZUdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tXZWJBcmNoaXZlUmVmIFdLV2ViQXJjaGl2ZUNy
ZWF0ZShXS1dlYkFyY2hpdmVSZXNvdXJjZVJlZiBtYWluUmVzb3VyY2UsIFdLQXJyYXlSZWYgc3Vi
cmVzb3VyY2VzLCBXS0FycmF5UmVmIHN1YmZyYW1lQXJjaGl2ZXMpOworV0tfRVhQT1JUIFdLV2Vi
QXJjaGl2ZVJlZiBXS1dlYkFyY2hpdmVDcmVhdGVXaXRoRGF0YShXS0RhdGFSZWYgZGF0YSk7CitX
S19FWFBPUlQgV0tXZWJBcmNoaXZlUmVmIFdLV2ViQXJjaGl2ZUNyZWF0ZUZyb21SYW5nZShXS0J1
bmRsZVJhbmdlSGFuZGxlUmVmIHJhbmdlKTsKKworV0tfRVhQT1JUIFdLV2ViQXJjaGl2ZVJlc291
cmNlUmVmIFdLV2ViQXJjaGl2ZUNvcHlNYWluUmVzb3VyY2UoV0tXZWJBcmNoaXZlUmVmIHdlYkFy
Y2hpdmUpOworV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tXZWJBcmNoaXZlQ29weVN1YnJlc291cmNl
cyhXS1dlYkFyY2hpdmVSZWYgd2ViQXJjaGl2ZSk7CitXS19FWFBPUlQgV0tBcnJheVJlZiBXS1dl
YkFyY2hpdmVDb3B5U3ViZnJhbWVBcmNoaXZlcyhXS1dlYkFyY2hpdmVSZWYgd2ViQXJjaGl2ZSk7
CitXS19FWFBPUlQgV0tEYXRhUmVmIFdLV2ViQXJjaGl2ZUNvcHlEYXRhKFdLV2ViQXJjaGl2ZVJl
ZiB3ZWJBcmNoaXZlKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlm
IC8vIFdLV2ViQXJjaGl2ZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFj
L1dLV2ViQXJjaGl2ZVJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZVJlc291cmNlLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlUmVzb3VyY2UuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldLV2ViQXJjaGl2ZVJlc291cmNlLmgiCisKKyNpbmNsdWRlICJX
S1NoYXJlZEFQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJBcmNoaXZlUmVzb3VyY2UuaCIKKyNpbmNs
dWRlICJXZWJEYXRhLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdL
V2ViQXJjaGl2ZVJlc291cmNlR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoV2ViQXJj
aGl2ZVJlc291cmNlOjpBUElUeXBlKTsKK30KKworV0tXZWJBcmNoaXZlUmVzb3VyY2VSZWYgV0tX
ZWJBcmNoaXZlUmVzb3VyY2VDcmVhdGUoV0tEYXRhUmVmIGRhdGFSZWYsIFdLVVJMUmVmIFVSTFJl
ZiwgV0tTdHJpbmdSZWYgTUlNRVR5cGVSZWYsIFdLU3RyaW5nUmVmIHRleHRFbmNvZGluZ1JlZikK
K3sKKyAgICBSZWZQdHI8V2ViQXJjaGl2ZVJlc291cmNlPiB3ZWJBcmNoaXZlUmVzb3VyY2UgPSBX
ZWJBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh0b0ltcGwoZGF0YVJlZiksIHRvV1RGU3RyaW5nKFVS
TFJlZiksIHRvV1RGU3RyaW5nKE1JTUVUeXBlUmVmKSwgdG9XVEZTdHJpbmcodGV4dEVuY29kaW5n
UmVmKSk7CisgICAgcmV0dXJuIHRvQVBJKHdlYkFyY2hpdmVSZXNvdXJjZS5yZWxlYXNlKCkubGVh
a1JlZigpKTsKK30KKworV0tEYXRhUmVmIFdLV2ViQXJjaGl2ZVJlc291cmNlQ29weURhdGEoV0tX
ZWJBcmNoaXZlUmVzb3VyY2VSZWYgd2ViQXJjaGl2ZVJlc291cmNlUmVmKQoreworICAgIFJlZlB0
cjxXZWJEYXRhPiBkYXRhID0gdG9JbXBsKHdlYkFyY2hpdmVSZXNvdXJjZVJlZiktPmRhdGEoKTsK
KyAgICByZXR1cm4gdG9BUEkoZGF0YS5yZWxlYXNlKCkubGVha1JlZigpKTsKK30KKworV0tVUkxS
ZWYgV0tXZWJBcmNoaXZlUmVzb3VyY2VDb3B5VVJMKFdLV2ViQXJjaGl2ZVJlc291cmNlUmVmIHdl
YkFyY2hpdmVSZXNvdXJjZVJlZikKK3sKKyAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBs
KHdlYkFyY2hpdmVSZXNvdXJjZVJlZiktPlVSTCgpKTsKK30KKworV0tTdHJpbmdSZWYgV0tXZWJB
cmNoaXZlUmVzb3VyY2VDb3B5TUlNRVR5cGUoV0tXZWJBcmNoaXZlUmVzb3VyY2VSZWYgd2ViQXJj
aGl2ZVJlc291cmNlUmVmKQoreworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwod2ViQXJj
aGl2ZVJlc291cmNlUmVmKS0+TUlNRVR5cGUoKSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLV2ViQXJj
aGl2ZVJlc291cmNlQ29weVRleHRFbmNvZGluZyhXS1dlYkFyY2hpdmVSZXNvdXJjZVJlZiB3ZWJB
cmNoaXZlUmVzb3VyY2VSZWYpCit7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbCh3ZWJB
cmNoaXZlUmVzb3VyY2VSZWYpLT50ZXh0RW5jb2RpbmcoKSk7Cit9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZVJlc291cmNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFyY2hpdmVSZXNvdXJjZS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFy
Y2hpdmVSZXNvdXJjZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXS1dlYkFyY2hpdmVSZXNvdXJjZV9oCisjZGVmaW5lIFdLV2ViQXJjaGl2ZVJl
c291cmNlX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpbmNsdWRlIDxzdGRk
ZWYuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19F
WFBPUlQgV0tUeXBlSUQgV0tXZWJBcmNoaXZlUmVzb3VyY2VHZXRUeXBlSUQoKTsKKworV0tfRVhQ
T1JUIFdLV2ViQXJjaGl2ZVJlc291cmNlUmVmIFdLV2ViQXJjaGl2ZVJlc291cmNlQ3JlYXRlKFdL
RGF0YVJlZiBkYXRhLCBXS1VSTFJlZiBVUkwsIFdLU3RyaW5nUmVmIE1JTUVUeXBlLCBXS1N0cmlu
Z1JlZiB0ZXh0RW5jb2RpbmcpOworCitXS19FWFBPUlQgV0tEYXRhUmVmIFdLV2ViQXJjaGl2ZVJl
c291cmNlQ29weURhdGEoV0tXZWJBcmNoaXZlUmVzb3VyY2VSZWYgd2ViQXJjaGl2ZVJlc291cmNl
KTsKK1dLX0VYUE9SVCBXS1VSTFJlZiBXS1dlYkFyY2hpdmVSZXNvdXJjZUNvcHlVUkwoV0tXZWJB
cmNoaXZlUmVzb3VyY2VSZWYgd2ViQXJjaGl2ZVJlc291cmNlKTsKK1dLX0VYUE9SVCBXS1N0cmlu
Z1JlZiBXS1dlYkFyY2hpdmVSZXNvdXJjZUNvcHlNSU1FVHlwZShXS1dlYkFyY2hpdmVSZXNvdXJj
ZVJlZiB3ZWJBcmNoaXZlUmVzb3VyY2UpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLV2ViQXJj
aGl2ZVJlc291cmNlQ29weVRleHRFbmNvZGluZyhXS1dlYkFyY2hpdmVSZXNvdXJjZVJlZiB3ZWJB
cmNoaXZlUmVzb3VyY2UpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5k
aWYgLy8gV0tXZWJBcmNoaXZlUmVzb3VyY2VfaApJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQxMDE5KQorKysg
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDIwLDYgKzEwMjAsMTQgQEAKIAkJQzU3NEEzNzcxMkU2MDk5RDAwMkRGRTk4
IC8qIFdlYkRyYWdDbGllbnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNTU0RkZBMjEyRTRFOEVBMDAyRjIyQzAgLyogV2ViRHJhZ0NsaWVudE1h
Yy5tbSAqLzsgfTsKIAkJQzU3NEE1ODExMkU2NjY4MTAwMkRGRTk4IC8qIFBhc3RlYm9hcmRUeXBl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU3NEE1
N0YxMkU2NjY4MTAwMkRGRTk4IC8qIFBhc3RlYm9hcmRUeXBlcy5oICovOyB9OwogCQlDNTc0QTU4
MjEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU3NEE1ODAxMkU2NjY4MTAwMkRGRTk4IC8q
IFBhc3RlYm9hcmRUeXBlcy5tbSAqLzsgfTsKKwkJQzVFMUFGRTgxNkIyMEI2NzAwNkNDMUYyIC8q
IFdLV2ViQXJjaGl2ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzMyOURBNTE2QUNFNUE5MDAzMTZERTIgLyogV0tXZWJBcmNoaXZlLmNwcCAqLzsg
fTsKKwkJQzVFMUFGRTkxNkIyMEI3NTAwNkNDMUYyIC8qIFdLV2ViQXJjaGl2ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzMjlEQTYxNkFDRTVBOTAw
MzE2REUyIC8qIFdLV2ViQXJjaGl2ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUM1RTFBRkVBMTZCMjBCN0IwMDZDQzFGMiAvKiBXS1dlYkFyY2hp
dmVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzMyOURBOTE2QUNFNUJGMDAzMTZERTIgLyogV0tXZWJBcmNoaXZlUmVzb3VyY2UuY3Bw
ICovOyB9OworCQlDNUUxQUZFQjE2QjIwQjdFMDA2Q0MxRjIgLyogV0tXZWJBcmNoaXZlUmVzb3Vy
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzI5
REFBMTZBQ0U1QzAwMDMxNkRFMiAvKiBXS1dlYkFyY2hpdmVSZXNvdXJjZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUM1RTFBRkVDMTZCMjEwMTIw
MDZDQzFGMiAvKiBXZWJBcmNoaXZlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMzI5RDk5MTZBQ0NFOTkwMDMxNkRFMiAvKiBXZWJBcmNoaXZlLmNw
cCAqLzsgfTsKKwkJQzVFMUFGRUQxNkIyMTAxNzAwNkNDMUYyIC8qIFdlYkFyY2hpdmUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzI5RDlBMTZBQ0NF
OTkwMDMxNkRFMiAvKiBXZWJBcmNoaXZlLmggKi87IH07CisJCUM1RTFBRkVFMTZCMjEwMjUwMDZD
QzFGMiAvKiBXZWJBcmNoaXZlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzMjlEOUUxNkFDRDQ3ODAwMzE2REUyIC8qIFdlYkFyY2hp
dmVSZXNvdXJjZS5jcHAgKi87IH07CisJCUM1RTFBRkVGMTZCMjEwMjkwMDZDQzFGMiAvKiBXZWJB
cmNoaXZlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMzI5RDlGMTZBQ0Q0NzgwMDMxNkRFMiAvKiBXZWJBcmNoaXZlUmVzb3VyY2UuaCAq
LzsgfTsKIAkJQ0Q1QzY2QTAxMzRCOUQzODAwNEZFMkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1
bGxTY3JlZW5DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0Q1QzY2OUUxMzRCOUQzNjAwNEZFMkE4IC8qIEluamVjdGVkQnVuZGxlUGFnZUZ1
bGxTY3JlZW5DbGllbnQuY3BwICovOyB9OwogCQlDRDVDNjZBMTEzNEI5RDM4MDA0RkUyQTggLyog
SW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1QzY2OUYxMzRCOUQzNzAwNEZFMkE4IC8qIElu
amVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCAqLzsgfTsKIAkJQ0Q2N0QzMEUxNUMw
OEY5QTAwODQzQURGIC8qIEluamVjdGVkQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENjdE
MzA4MTVDMDdCRTAwMDg0M0FERiAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudC5jcHAgKi87IH07CkBAIC0yMDE2LDYgKzIwMjQsMTQgQEAKIAkJQkMzMDY2QkQxMjVB
NDQyMTAwRTcxMjc4IC8qIFdlYlByb2Nlc3NNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJQcm9jZXNzTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMzMDY4MjIxMjVBNkI5NDAwRTcxMjc4IC8qIFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMwNjgy
MzEyNUE2Qjk0MDBFNzEyNzggLyogV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMzMjlEOTkxNkFDQ0U5
OTAwMzE2REUyIC8qIFdlYkFyY2hpdmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViQXJjaGl2ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
MzI5RDlBMTZBQ0NFOTkwMDMxNkRFMiAvKiBXZWJBcmNoaXZlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkFyY2hpdmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkMzMjlEOUUxNkFDRDQ3ODAwMzE2REUyIC8qIFdlYkFyY2hpdmVSZXNvdXJjZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBcmNoaXZlUmVzb3VyY2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzMyOUQ5RjE2QUNENDc4MDAzMTZERTIg
LyogV2ViQXJjaGl2ZVJlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkFyY2hpdmVSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzMy
OURBNTE2QUNFNUE5MDAzMTZERTIgLyogV0tXZWJBcmNoaXZlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLV2ViQXJjaGl2ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDMzI5REE2MTZBQ0U1QTkwMDMxNkRFMiAvKiBXS1dlYkFyY2hpdmUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJBcmNoaXZlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMzI5REE5MTZBQ0U1QkYwMDMxNkRFMiAvKiBXS1dlYkFy
Y2hpdmVSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
S1dlYkFyY2hpdmVSZXNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
MzI5REFBMTZBQ0U1QzAwMDMxNkRFMiAvKiBXS1dlYkFyY2hpdmVSZXNvdXJjZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYkFyY2hpdmVSZXNvdXJjZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMzREQ2NzEyMzg0NjQ2MDAzNjBGM0YgLyogV2ViTnVt
YmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk51bWJlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMzRTBDRjEyNDA4RTg2MDAzNjBGM0YgLyogSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDMzNFMEQwMTI0MDhFODYwMDM2MEYzRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjk2Myw2ICsy
OTc5LDEwIEBACiAJCQkJQkNCMEIwREYxMjMwNUFCMTAwQjEzNDFFIC8qIFVzZXJNZXNzYWdlQ29k
ZXJzLmggKi8sCiAJCQkJMUEwRjI5QzkxMjBCMzcxNjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rVGFi
bGUuY3BwICovLAogCQkJCTFBMEYyOUNBMTIwQjM3MTYwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1Rh
YmxlLmggKi8sCisJCQkJQkMzMjlEOTkxNkFDQ0U5OTAwMzE2REUyIC8qIFdlYkFyY2hpdmUuY3Bw
ICovLAorCQkJCUJDMzI5RDlBMTZBQ0NFOTkwMDMxNkRFMiAvKiBXZWJBcmNoaXZlLmggKi8sCisJ
CQkJQkMzMjlEOUUxNkFDRDQ3ODAwMzE2REUyIC8qIFdlYkFyY2hpdmVSZXNvdXJjZS5jcHAgKi8s
CisJCQkJQkMzMjlEOUYxNkFDRDQ3ODAwMzE2REUyIC8qIFdlYkFyY2hpdmVSZXNvdXJjZS5oICov
LAogCQkJCTUxOEQyQ0FCMTJENTE1M0IwMDNCQjkzQiAvKiBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
LmNwcCAqLywKIAkJCQk1MThEMkNBQzEyRDUxNTNCMDAzQkI5M0IgLyogV2ViQmFja0ZvcndhcmRM
aXN0SXRlbS5oICovLAogCQkJCUJDRjUwNzI2MTI0MzI5QUEwMDU5NTVBRSAvKiBXZWJDZXJ0aWZp
Y2F0ZUluZm8uaCAqLywKQEAgLTQxMjUsNiArNDE0NSwxMCBAQAogCQkJCUJDNDA3NjI0MTI0RkYw
NDAwMDY4RjIwQSAvKiBXS1VSTFJlcXVlc3ROUy5tbSAqLywKIAkJCQlCQzQwNzYyNTEyNEZGMDQw
MDA2OEYyMEEgLyogV0tVUkxSZXNwb25zZU5TLmggKi8sCiAJCQkJQkM0MDc2MjYxMjRGRjA0MDAw
NjhGMjBBIC8qIFdLVVJMUmVzcG9uc2VOUy5tbSAqLywKKwkJCQlCQzMyOURBNTE2QUNFNUE5MDAz
MTZERTIgLyogV0tXZWJBcmNoaXZlLmNwcCAqLywKKwkJCQlCQzMyOURBNjE2QUNFNUE5MDAzMTZE
RTIgLyogV0tXZWJBcmNoaXZlLmggKi8sCisJCQkJQkMzMjlEQTkxNkFDRTVCRjAwMzE2REUyIC8q
IFdLV2ViQXJjaGl2ZVJlc291cmNlLmNwcCAqLywKKwkJCQlCQzMyOURBQTE2QUNFNUMwMDAzMTZE
RTIgLyogV0tXZWJBcmNoaXZlUmVzb3VyY2UuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTUyOTgsNiArNTMyMiwxMCBAQAogCQkJCTUx
ODE1QkEwMTZBNjIyMjEwMDU0NTAxRiAvKiBTeW5jTmV0d29ya1Jlc291cmNlTG9hZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTlCNEZGNTE2QTlFQTk3MDA2Njg3NEQgLyogU2NoZWR1bGFibGVM
b2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRTU1MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBT
YW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQlDNUUx
QUZFOTE2QjIwQjc1MDA2Q0MxRjIgLyogV0tXZWJBcmNoaXZlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlDNUUxQUZFQjE2QjIwQjdFMDA2Q0MxRjIgLyogV0tXZWJBcmNoaXZlUmVzb3VyY2UuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUM1RTFBRkVEMTZCMjEwMTcwMDZDQzFGMiAvKiBXZWJBcmNoaXZlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDNUUxQUZFRjE2QjIxMDI5MDA2Q0MxRjIgLyogV2ViQXJjaGl2
ZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFDNERFNzE2QjFDQkY2MDA5NDI1RTMg
LyogV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFEMzMw
NkYxNkIxRDk5MTAwNEY2MEU3IC8qIFN0b3JhZ2VBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxOEU4RUY5MTZCMjA5MUMwMEU5MTQyOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCBp
biBIZWFkZXJzICovLApAQCAtNjQwNCw2ICs2NDMyLDEwIEBACiAJCQkJNTE4MTVCOUYxNkE2MjIy
MTAwNTQ1MDFGIC8qIFN5bmNOZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTE5QjRGRjQxNkE5RUE5NzAwNjY4NzREIC8qIFNjaGVkdWxhYmxlTG9hZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUUxRTU1MkM0MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5p
dGlhbGlhdGlvblBhcmFtZXRlcnNNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlDNUUxQUZFODE2
QjIwQjY3MDA2Q0MxRjIgLyogV0tXZWJBcmNoaXZlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM1
RTFBRkVBMTZCMjBCN0IwMDZDQzFGMiAvKiBXS1dlYkFyY2hpdmVSZXNvdXJjZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlDNUUxQUZFQzE2QjIxMDEyMDA2Q0MxRjIgLyogV2ViQXJjaGl2ZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDNUUxQUZFRTE2QjIxMDI1MDA2Q0MxRjIgLyogV2ViQXJjaGl2
ZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQUM0REU2MTZCMUNCRjYwMDk0MjVF
MyAvKiBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
RDMzMDZFMTZCMUQ5OTEwMDRGNjBFNyAvKiBTdG9yYWdlQXJlYVByb3h5LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxOEU4RUY4MTZCMjA5MUMwMEU5MTQyOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFn
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCShyZXZpc2lvbiAxNDEwMTkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEwICsyNiwxMyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIgogCisj
aW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGUuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAi
V0tTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTI1LDQgKzEyOCw1NCBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6ZGlkCiAgICAgICAgIG1fY2xp
ZW50LmRpZENoYW5nZVNlbGVjdGlvbih0b0FQSShwYWdlKSwgdG9BUEkobm90aWZpY2F0aW9uTmFt
ZSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudDo6d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UqIHBhZ2UsIFdlYkNvcmU6
OlJhbmdlKiByYW5nZSkKK3sKKyAgICBpZiAobV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJk
KSB7CisgICAgICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiByYW5nZUhhbmRs
ZSA9IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKHJhbmdlKTsKKyAgICAg
ICAgbV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKHRvQVBJKHBhZ2UpLCB0b0FQSShyYW5n
ZUhhbmRsZS5nZXQoKSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIH0KK30KKwordm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
V2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6UmFuZ2UqIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYgcGFz
dGVib2FyZERhdGEpCit7CisgICAgaWYgKG1fY2xpZW50LmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UpIHsKKyAgICAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHJhbmdlSGFu
ZGxlID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUocmFuZ2UpOworICAg
ICAgICBXS0FycmF5UmVmIHR5cGVzID0gMDsKKyAgICAgICAgV0tBcnJheVJlZiBkYXRhID0gMDsK
KyAgICAgICAgbV9jbGllbnQuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSh0b0FQSShwYWdlKSwg
dG9BUEkocmFuZ2VIYW5kbGUuZ2V0KCkpLCAmdHlwZXMsICZkYXRhLCBtX2NsaWVudC5jbGllbnRJ
bmZvKTsKKyAgICAgICAgUmVmUHRyPEltbXV0YWJsZUFycmF5PiB0eXBlc0FycmF5ID0gYWRvcHRS
ZWYodG9JbXBsKHR5cGVzKSk7CisgICAgICAgIFJlZlB0cjxJbW11dGFibGVBcnJheT4gZGF0YUFy
cmF5ID0gYWRvcHRSZWYodG9JbXBsKGRhdGEpKTsKKworICAgICAgICBwYXN0ZWJvYXJkVHlwZXMu
Y2xlYXIoKTsKKyAgICAgICAgcGFzdGVib2FyZERhdGEuY2xlYXIoKTsKKworICAgICAgICBpZiAo
IXR5cGVzQXJyYXkgfHwgIWRhdGFBcnJheSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBBU1NFUlQodHlwZXNBcnJheS0+c2l6ZSgpID09IGRhdGFBcnJheS0+c2l6ZSgpKTsKKworICAg
ICAgICBzaXplX3Qgc2l6ZSA9IHR5cGVzQXJyYXktPnNpemUoKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIFdlYlN0cmluZyogdHlwZSA9
IHR5cGVzQXJyYXktPmF0PFdlYlN0cmluZz4oaSk7CisgICAgICAgICAgICBpZiAodHlwZSkKKyAg
ICAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHNpemUgPSBkYXRhQXJyYXktPnNpemUoKTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIFdlYkRhdGEqIGl0
ZW0gPSBkYXRhQXJyYXktPmF0PFdlYkRhdGE+KGkpOworICAgICAgICAgICAgaWYgKGl0ZW0pIHsK
KyAgICAgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChidWZmZXIpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudDo6ZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSogcGFnZSkKK3sKKyAgICBp
ZiAobV9jbGllbnQuZGlkV3JpdGVUb1Bhc3RlYm9hcmQpCisgICAgICAgIG1fY2xpZW50LmRpZFdy
aXRlVG9QYXN0ZWJvYXJkKHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDE0MTAxOSkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBUElDbGllbnQu
aCIKICNpbmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvcklu
c2VydEFjdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9UZXh0QWZmaW5pdHkuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBA
IC0zNiw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDU1NTdHlsZURl
Y2xhcmF0aW9uOwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgUmFuZ2U7CisgICAgY2xhc3Mg
U2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU2LDYgKzU4LDkgQEAg
cHVibGljOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZyhXZWJQYWdlKiwgU3RyaW5nSW1wbCogbm90
aWZpY2F0aW9uTmFtZSk7CiAgICAgdm9pZCBkaWRDaGFuZ2UoV2ViUGFnZSosIFN0cmluZ0ltcGwq
IG5vdGlmaWNhdGlvbk5hbWUpOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBhZ2Uq
LCBTdHJpbmdJbXBsKiBub3RpZmljYXRpb25OYW1lKTsKKyAgICB2b2lkIHdpbGxXcml0ZVRvUGFz
dGVib2FyZChXZWJQYWdlKiwgV2ViQ29yZTo6UmFuZ2UqKTsKKyAgICB2b2lkIGdldFBhc3RlYm9h
cmREYXRhRm9yUmFuZ2UoV2ViUGFnZSosIFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4m
IHBhc3RlYm9hcmREYXRhKTsKKyAgICB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2Uq
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5oCShyZXZpc2lvbiAxNDEwMTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQs
NiArMjk0LDkgQEAgdHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdlU2hvdWxkRGVsZXRlUgogdHlw
ZWRlZiBib29sICgqV0tCdW5kbGVQYWdlU2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSkoV0tCdW5k
bGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgZnJvbVJhbmdlLCBXS0J1bmRs
ZVJhbmdlSGFuZGxlUmVmIHRvUmFuZ2UsIFdLQWZmaW5pdHlUeXBlIGFmZmluaXR5LCBib29sIHN0
aWxsU2VsZWN0aW5nLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgYm9vbCAoKldL
QnVuZGxlUGFnZVNob3VsZEFwcGx5U3R5bGUpKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRs
ZUNTU1N0eWxlRGVjbGFyYXRpb25SZWYgc3R5bGUsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFu
Z2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdl
RWRpdGluZ05vdGlmaWNhdGlvbikoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG5v
dGlmaWNhdGlvbk5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgq
V0tCdW5kbGVQYWdlV2lsbFdyaXRlVG9QYXN0ZWJvYXJkKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tCdW5kbGVSYW5nZUhhbmRsZVJlZiByYW5nZSwgIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwor
dHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlR2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkoV0tC
dW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2UsIFdLQXJyYXlS
ZWYqIHBhc3RlYm9hcmRUeXBlcywgV0tBcnJheVJlZiogcGFzdGVib2FyZERhdGEsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkV3JpdGVUb1Bh
c3RlYm9hcmQpKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
IAogc3RydWN0IFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudCB7CiAgICAgaW50ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJz
aW9uOwpAQCAtMzA5LDEwICszMTIsMTQgQEAgc3RydWN0IFdLQnVuZGxlUGFnZUVkaXRvckNsaWVu
dCB7CiAgICAgV0tCdW5kbGVQYWdlRWRpdGluZ05vdGlmaWNhdGlvbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaWRFbmRFZGl0aW5nOwogICAgIFdLQnVuZGxlUGFnZUVkaXRp
bmdOb3RpZmljYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ2hh
bmdlOwogICAgIFdLQnVuZGxlUGFnZUVkaXRpbmdOb3RpZmljYXRpb24gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlkQ2hhbmdlU2VsZWN0aW9uOworICAgIC8vIFZlcnNpb24g
MS4KKyAgICBXS0J1bmRsZVBhZ2VXaWxsV3JpdGVUb1Bhc3RlYm9hcmQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdpbGxXcml0ZVRvUGFzdGVib2FyZDsKKyAgICBXS0J1bmRsZVBh
Z2VHZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2U7CisgICAgV0tCdW5kbGVQYWdlRGlkV3JpdGVUb1Bh
c3RlYm9hcmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRXcml0ZVRvUGFz
dGVib2FyZDsKIH07CiB0eXBlZGVmIHN0cnVjdCBXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnQgV0tC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50OwogCi1lbnVtIHsga1dLQnVuZGxlUGFnZUVkaXRvckNsaWVu
dEN1cnJlbnRWZXJzaW9uID0gMCB9OworZW51bSB7IGtXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRD
dXJyZW50VmVyc2lvbiA9IDEgfTsKIAogLy8gRm9ybSBjbGllbnQKIHR5cGVkZWYgdm9pZCAoKldL
QnVuZGxlUGFnZVRleHRGaWVsZERpZEJlZ2luRWRpdGluZ0NhbGxiYWNrKShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGh0bWxJbnB1dEVsZW1lbnRIYW5kbGUsIFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcAkocmV2aXNpb24gMTQxMDE5KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjAsNyArMjIwLDE3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaWRFbmRFZGl0
aW5nKCkKIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQoKS5kaWRXcml0ZVRvUGFzdGVib2FyZChtX3BhZ2UpOworfQorCit2b2lk
IFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6UmFuZ2U+IHJhbmdlKQoreworICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQobV9wYWdlLCByYW5nZS5nZXQoKSk7
Cit9CisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYgcGFz
dGVib2FyZERhdGEpCit7CisgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgp
LmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UobV9wYWdlLCByYW5nZS5nZXQoKSwgcGFzdGVib2Fy
ZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaWRT
ZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CShyZXZpc2lvbiAxNDEwMTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw5IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKFdlYkNv
cmU6OkZyYW1lKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShQYXNzUmVmUHRyPFdlYkNvcmU6OlJh
bmdlPiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+ID4mIHBhc3RlYm9hcmREYXRhKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCkgT1ZFUlJJREU7CiAg
ICAgCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpVbmRvU3RlcD4pIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTQx
MzM0KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTMtMDEtMzAgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNv
bT4KKworICAgICAgICBXZWJLaXQyOiBwcm92aWRlIG5ldyBidW5kbGUgQVBJcyB0byBhbGxvdyBi
dW5kbGUgY2xpZW50cyB0byBiZSBub3RpZmllZCBvZiBwYXN0ZWJvYXJkIGFjY2Vzcy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODM5Ni4KKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzEyOTIwNDYxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgV2ViS2l0
IG9mIHRoZSBuZXcgRWRpdG9yQ2xpZW50IG1ldGhvZHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UpOgorCiAyMDEzLTAxLTI5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5y
ZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTQwOTgzLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDE0MTAxOSkKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3
ICs2Nyw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpSYW5nZT4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+LCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gPiYgcGFzdGVib2FyZERhdGEpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRT
ZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwg
TlNTdHJpbmcqIHVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICopIE9WRVJSSURFOwpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bQkocmV2aXNpb24gMTQxMDE5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsNiArMzExLDE0IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpkaWRXcml0ZVNlbGVjdGlvblQKICAgICBbW21fd2ViVmlldyBf
ZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyBkaWRXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZDpbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXV07CiB9CiAK
K3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFz
c1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4pCit7Cit9CisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gPiYgcGFzdGVib2FyZERhdGEpCit7Cit9CisKIHZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpkaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKQogewogICAgIFtbbV93
ZWJWaWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IGRpZFNl
dFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZDpbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJv
YXJkXV07CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNDEzMzQpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNiBAQAorMjAxMy0wMS0zMCAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBw
bGUuY29tPgorCisgICAgICAgIFdlYktpdDI6IHByb3ZpZGUgbmV3IGJ1bmRsZSBBUElzIHRvIGFs
bG93IGJ1bmRsZSBjbGllbnRzIHRvIGJlIG5vdGlmaWVkIG9mIHBhc3RlYm9hcmQgYWNjZXNzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4Mzk2Lgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI5MjA0NjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGRpbmcgbmV3IFdlYktpdDIgdGVz
dCB3aXRoIHJlbGV2YW50IGJ1bmRsZSwgdG8gdGVzdCB0aGUgbmV3IEFQSXMuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFzdGVib2FyZE5vdGlmaWNh
dGlvbnMubW06IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkUmVjZWl2ZU1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0SW5qZWN0
ZWRCdW5kbGVDbGllbnQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Q
YXN0ZWJvYXJkTm90aWZpY2F0aW9uc19CdW5kbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFBhc3Rl
Ym9hcmROb3RpZmljYXRpb25zVGVzdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp3aWxsV3Jp
dGVUb1Bhc3RlYm9hcmQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRXcml0ZVRvUGFzdGVib2Fy
ZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQYXN0ZWJvYXJkTm90aWZpY2F0aW9uc1Rlc3Q6
OlBhc3RlYm9hcmROb3RpZmljYXRpb25zVGVzdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQ
YXN0ZWJvYXJkTm90aWZpY2F0aW9uc1Rlc3Q6OmRpZENyZWF0ZVBhZ2UpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9leGVjQ29weS5odG1sOiBBZGRlZC4KKwogMjAxMy0w
MS0zMCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1
bV0gRW5hYmxlIHRleHRhcmVhIHJlc2l6ZSBjb3JuZXIgZm9yIHRlc3RzCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQxMDE5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTE4Myw2ICsxODMsOSBAQAogCQlDNTFBRkI5OTE2OUY0OUZGMDA5Q0NGNjYgLyogRmluZE1hdGNo
ZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTFB
RkI5ODE2OUY0OUZGMDA5Q0NGNjYgLyogRmluZE1hdGNoZXMubW0gKi87IH07CiAJCUM1NDBGNzc2
MTUyRTREQTAwMEE0MEM4QyAvKiBTaW1wbGlmeU1hcmt1cC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDBGNzc1MTUyRTREQTAwMEE0MEM4QyAvKiBT
aW1wbGlmeU1hcmt1cC5tbSAqLzsgfTsKIAkJQzU0MEY3ODQxNTJFNUE5QTAwQTQwQzhDIC8qIHZl
cmJvc2VNYXJrdXAuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNTQwRjc4MzE1MkU1QTc4MDBBNDBDOEMgLyogdmVyYm9zZU1hcmt1cC5o
dG1sICovOyB9OworCQlDNTQyMzdGMDE2Qjg5NTU4MDBFNjM4RkMgLyogUGFzdGVib2FyZE5vdGlm
aWNhdGlvbnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDNTQyMzdFRTE2Qjg5NTU4MDBFNjM4RkMgLyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnMubW0g
Ki87IH07CisJCUM1NDIzN0YxMTZCODk1N0QwMEU2MzhGQyAvKiBQYXN0ZWJvYXJkTm90aWZpY2F0
aW9uc19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzU0MjM3RUQxNkI4OTU1ODAwRTYzOEZDIC8qIFBhc3RlYm9hcmROb3RpZmljYXRpb25z
X0J1bmRsZS5jcHAgKi87IH07CisJCUM1RTFBRkZFMTZCMjIxRjEwMDZDQzFGMiAvKiBleGVjQ29w
eS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM1RTFBRkZEMTZCMjIxNzkwMDZDQzFGMiAvKiBleGVjQ29weS5odG1sICovOyB9OwogCQlD
RDU0OTdCNDE1ODU3RjBDMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTQ5N0IzMTU4NTdGMEMwMEI1QkMzMCAv
KiBNZWRpYVRpbWUuY3BwICovOyB9OwogCQlFMTIyMERBMDE1NUIyNTQ4MDAxM0UyRkMgLyogTWVt
b3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTIyMEQ5RjE1NUIyNTQ4MDAxM0Uy
RkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi87
IH07CiAJCUUxMjIwRENBMTU1QjI4QUEwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRo
aW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjIwREM5MTU1QjI4N0QwMDEzRTJGQyAvKiBNZW1v
cnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovOyB9OwpAQCAt
MjI2LDYgKzIyOSw3IEBACiAJCQlkc3RQYXRoID0gVGVzdFdlYktpdEFQSS5yZXNvdXJjZXM7CiAJ
CQlkc3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZpbGVzID0gKAorCQkJCUM1RTFBRkZFMTZCMjIx
RjEwMDZDQzFGMiAvKiBleGVjQ29weS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTFB
OUU1MkM5MTNFNjVFRjQwMDY5MTdGNSAvKiAxOC1jaGFyYWN0ZXJzLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJMzc5MDI4QjkxNEZBQzI0QzAwN0U2QjQzIC8qIGFjY2VwdHNGaXJzdE1v
dXNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQjU1RjExQkUxNTE5MUEwNjAwOTE1
OTE2IC8qIEFoZW0udHRmIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtNDU2LDYgKzQ2MCw5IEBA
CiAJCUM1MUFGQjk4MTY5RjQ5RkYwMDlDQ0Y2NiAvKiBGaW5kTWF0Y2hlcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbmRNYXRjaGVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDNTQwRjc3NTE1MkU0REEwMDBBNDBDOEMgLyogU2ltcGxpZnlN
YXJrdXAubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaW1wbGlm
eU1hcmt1cC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MEY3ODMxNTJFNUE3
ODAwQTQwQzhDIC8qIHZlcmJvc2VNYXJrdXAuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9IHZlcmJvc2VNYXJrdXAuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzU0
MjM3RUQxNkI4OTU1ODAwRTYzOEZDIC8qIFBhc3RlYm9hcmROb3RpZmljYXRpb25zX0J1bmRsZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXN0ZWJvYXJkTm90aWZp
Y2F0aW9uc19CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNTQyMzdF
RTE2Qjg5NTU4MDBFNjM4RkMgLyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXN0ZWJvYXJkTm90aWZpY2F0aW9ucy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzVFMUFGRkQxNkIyMjE3OTAwNkNDMUYy
IC8qIGV4ZWNDb3B5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBleGVjQ29weS5o
dG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDU0OTdCMzE1ODU3RjBDMDBCNUJD
MzAgLyogTWVkaWFUaW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IE1lZGlhVGltZS5jcHA7IHBhdGggPSBXVEYvTWVkaWFUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTEyMjBEOUYxNTVCMjU0ODAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlz
YWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVs
ZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMjIwREM5MTU1QjI4N0Qw
MDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGlu
UmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTY1NSw2ICs2NjIsOCBAQAogCQkJCUE1MUI2NTA4MTZBREY5QjEwMDdBQTVEOSAvKiBQYWdlVmlz
aWJpbGl0eVN0YXRlLmNwcCAqLywKIAkJCQk1MkU1Q0U0NTE0RDIxRTlEMDAzQjJCRDggLyogUGFy
ZW50RnJhbWUuY3BwICovLAogCQkJCTUyRTVDRTQ4MTREMjFFQUIwMDNCMkJEOCAvKiBQYXJlbnRG
cmFtZV9CdW5kbGUuY3BwICovLAorCQkJCUM1NDIzN0VFMTZCODk1NTgwMEU2MzhGQyAvKiBQYXN0
ZWJvYXJkTm90aWZpY2F0aW9ucy5tbSAqLywKKwkJCQlDNTQyMzdFRDE2Qjg5NTU4MDBFNjM4RkMg
LyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnNfQnVuZGxlLmNwcCAqLywKIAkJCQkzMzNCOUNFMTEy
NzdGMjMxMDBGRUZDRTMgLyogUHJldmVudEVtcHR5VXNlckFnZW50LmNwcCAqLywKIAkJCQlGNkZE
REREMjE0MjQxQUQ0MDA0RjE3MjkgLyogUHJpdmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0b3J5
Q2FsbGJhY2suY3BwICovLAogCQkJCUMwQkQ2NjlDMTMxRDNDRjcwMEUxOEYyQSAvKiBSZXNwb25z
aXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5LmNwcCAqLywKQEAgLTcxNiw2ICs3MjUsNyBAQAog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJQzA0NUY5NDYxMzg1QzJGODAwQzBGM0NEIC8qIDE4LWNoYXJh
Y3RlcnMuaHRtbCAqLywKIAkJCQk3NkUxODJERTE1NDc1QTgzMDBGMUZBREQgLyogYXV0by1zdWJt
aXR0aW5nLWZvcm0uaHRtbCAqLywKKwkJCQlDNUUxQUZGRDE2QjIyMTc5MDA2Q0MxRjIgLyogZXhl
Y0NvcHkuaHRtbCAqLywKIAkJCQlCQzJEMDA0QTEyQTlGRUIzMDBFNzMyQTMgLyogZmlsZS13aXRo
LWFuY2hvci5odG1sICovLAogCQkJCTFBMDJDODRCMTI1RDRBNUUwMEUzRjRCRCAvKiBmaW5kLmh0
bWwgKi8sCiAJCQkJQkNCRDM3MkUxMjVBQkJFNjAwRDJDMjlGIC8qIGljb24ucG5nICovLApAQCAt
MTA3NCw2ICsxMDg0LDcgQEAKIAkJCQlCQzkwOTk1RTEyNTY3QkMxMDAwODM3NTYgLyogV0tTdHJp
bmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5MDk5OTQxMjU2QUNGMTAwMDgzNzU2IC8qIFdL
U3RyaW5nSlNTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjY1QUY1NTAxNUQxRTQ4QTAw
QjBDQjRBIC8qIFdURlN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDNTQyMzdGMDE2Qjg5
NTU4MDBFNjM4RkMgLyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnMubW0gaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTExMDksNiArMTEyMCw3IEBACiAJCQkJNTIwQkNGNEMxNDFFQjA5RTAwOTM3RUE4IC8qIFdl
YkFyY2hpdmVfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2RTE4MkREMTU0NzU2OTEw
MEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzkwMUUzMzE0OTJBRjM5MDA3NEE2NjcgLyogV0tDb25uZWN0aW9uX0J1bmRsZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDNTQyMzdGMTE2Qjg5NTdEMDBFNjM4RkMgLyogUGFzdGVib2Fy
ZE5vdGlmaWNhdGlvbnNfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1Bhc3RlYm9hcmROb3RpZmljYXRpb25zLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYXN0ZWJvYXJkTm90
aWZpY2F0aW9ucy5tbQkocmV2aXNpb24gMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9QYXN0ZWJvYXJkTm90aWZpY2F0aW9ucy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUg
IlRlc3QuaCIKKworI2luY2x1ZGUgPFdlYktpdDIvV0tTdHJpbmcuaD4KKworbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgeworCitzdGF0aWMgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOworCitzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29u
dGV4dCwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIlBhc3RlYm9hcmROb3RpZmljYXRpb25UZXN0RG9uZU1lc3NhZ2VO
YW1lIikKKyAgICAgICAgJiYgV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdGF0aWNfY2Fz
dDxXS1N0cmluZ1JlZj4obWVzc2FnZUJvZHkpLCAiZGlkV3JpdGVUb1Bhc3RlYm9hcmQiKSkgewor
ICAgICAgICBOU0RhdGEqIGRhdGEgPSBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0g
ZGF0YUZvclR5cGU6QCJBbm90aGVyQXJjaGl2ZVBhc3RlYm9hcmRUeXBlIl07CisgICAgICAgIEVY
UEVDVF9ORShkYXRhLCAoTlNEYXRhKiluaWwpOworICAgICAgICBmaW5pc2hlZCA9IHRydWU7Cisg
ICAgfQorfQorCitzdGF0aWMgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChXS0NvbnRleHRS
ZWYgY29udGV4dCkKK3sKKyAgICBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCBpbmplY3Rl
ZEJ1bmRsZUNsaWVudDsKKyAgICBtZW1zZXQoJmluamVjdGVkQnVuZGxlQ2xpZW50LCAwLCBzaXpl
b2YoaW5qZWN0ZWRCdW5kbGVDbGllbnQpKTsKKyAgICBpbmplY3RlZEJ1bmRsZUNsaWVudC52ZXJz
aW9uID0gMDsKKyAgICBpbmplY3RlZEJ1bmRsZUNsaWVudC5jbGllbnRJbmZvID0gMDsKKyAgICBp
bmplY3RlZEJ1bmRsZUNsaWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSA9
IGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOworICAgIFdLQ29udGV4dFNldElu
amVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQsICZpbmplY3RlZEJ1bmRsZUNsaWVudCk7Cit9CisK
K1RFU1QoV2ViS2l0MiwgUGFzdGVib2FyZE5vdGlmaWNhdGlvbnMpCit7CisgICAgW1tOU1Bhc3Rl
Ym9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIGNsZWFyQ29udGVudHNdOworICAgIAorICAgIFdLUmV0
YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4
dEZvckluamVjdGVkQnVuZGxlVGVzdCgiUGFzdGVib2FyZE5vdGlmaWNhdGlvbnNUZXN0IikpOwor
ICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCkpOworCisgICAgUGxhdGZv
cm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1By
ZWZlcmVuY2VzUmVmPiBwcmVmZXJlbmNlcyhBZG9wdFdLLCBXS1ByZWZlcmVuY2VzQ3JlYXRlKCkp
OworICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKHByZWZl
cmVuY2VzLmdldCgpLCB0cnVlKTsKKworICAgIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCA9IFdL
UGFnZUdldFBhZ2VHcm91cCh3ZWJWaWV3LnBhZ2UoKSk7CisgICAgV0tQYWdlR3JvdXBTZXRQcmVm
ZXJlbmNlcyhwYWdlR3JvdXAsIHByZWZlcmVuY2VzLmdldCgpKTsKKworICAgIFdLUGFnZUxvYWRV
Ukwod2ViVmlldy5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoImV4
ZWNDb3B5IiwgImh0bWwiKSkuZ2V0KCkpOworICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvUGFzdGVib2FyZE5vdGlmaWNhdGlvbnNfQnVuZGxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFzdGVib2FyZE5vdGlm
aWNhdGlvbnNfQnVuZGxlLmNwcAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9QYXN0ZWJvYXJkTm90aWZpY2F0aW9uc19CdW5kbGUuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVGVzdC5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1VdGls
aXRpZXMuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQXJyYXkuaD4KKyNpbmNsdWRlIDxXZWJLaXQy
L1dLQnVuZGxlUGFnZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVCYWNrRm9yd2FyZExp
c3RJdGVtLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1dlYkFyY2hpdmUuaD4KKworbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworCitjbGFzcyBQYXN0ZWJvYXJkTm90aWZpY2F0aW9uc1Rlc3QgOiBw
dWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK3B1YmxpYzoKKyAgICBQYXN0ZWJvYXJkTm90aWZp
Y2F0aW9uc1Rlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpOworCisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZik7Cit9Owor
CitzdGF0aWMgSW5qZWN0ZWRCdW5kbGVUZXN0OjpSZWdpc3RlcjxQYXN0ZWJvYXJkTm90aWZpY2F0
aW9uc1Rlc3Q+IHJlZ2lzdHJhcigiUGFzdGVib2FyZE5vdGlmaWNhdGlvbnNUZXN0Iik7CisKK3N0
YXRpYyB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tC
dW5kbGVSYW5nZUhhbmRsZVJlZiByYW5nZSwgIGNvbnN0IHZvaWQqKQoreworICAgIGlmICghcmFu
Z2UpCisgICAgICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVy
OjpzaGFyZWQoKS5idW5kbGUoKSwgVXRpbDo6dG9XSygiUGFzdGVib2FyZE5vdGlmaWNhdGlvblRl
c3REb25lTWVzc2FnZU5hbWUiKS5nZXQoKSwgVXRpbDo6dG9XSygid2lsbFdyaXRldG9QYXN0ZWJv
YXJkRmFpbCIpLmdldCgpKTsKK30KKworc3RhdGljIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2UsIFdLQXJy
YXlSZWYqIHBhc3RlYm9hcmRUeXBlcywgV0tBcnJheVJlZiogcGFzdGVib2FyZERhdGEsIGNvbnN0
IHZvaWQqKQoreworICAgIFdLVHlwZVJlZiB0eXBlTmFtZSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJBbm90aGVyQXJjaGl2ZVBhc3RlYm9hcmRUeXBlIik7CisgICAgKnBhc3RlYm9h
cmRUeXBlcyA9IFdLQXJyYXlDcmVhdGVBZG9wdGluZ1ZhbHVlcygmdHlwZU5hbWUsIDEpOworICAg
IFdLVHlwZVJlZiB0eXBlRGF0YSA9IFdLV2ViQXJjaGl2ZUNvcHlEYXRhKFdLV2ViQXJjaGl2ZUNy
ZWF0ZUZyb21SYW5nZShyYW5nZSkpOworICAgICpwYXN0ZWJvYXJkRGF0YSA9IFdLQXJyYXlDcmVh
dGVBZG9wdGluZ1ZhbHVlcygmdHlwZURhdGEsIDEpOworfQorCitzdGF0aWMgdm9pZCBkaWRXcml0
ZVRvUGFzdGVib2FyZChXS0J1bmRsZVBhZ2VSZWYsIGNvbnN0IHZvaWQqKQoreworICAgIFdLQnVu
ZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpzaGFyZWQoKS5idW5kbGUo
KSwgVXRpbDo6dG9XSygiUGFzdGVib2FyZE5vdGlmaWNhdGlvblRlc3REb25lTWVzc2FnZU5hbWUi
KS5nZXQoKSwgVXRpbDo6dG9XSygiZGlkV3JpdGVUb1Bhc3RlYm9hcmQiKS5nZXQoKSk7Cit9CisK
K1Bhc3RlYm9hcmROb3RpZmljYXRpb25zVGVzdDo6UGFzdGVib2FyZE5vdGlmaWNhdGlvbnNUZXN0
KGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQorICAgIDogSW5qZWN0ZWRCdW5kbGVUZXN0
KGlkZW50aWZpZXIpCit7Cit9CisKK3ZvaWQgUGFzdGVib2FyZE5vdGlmaWNhdGlvbnNUZXN0Ojpk
aWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCit7
ICAgIAorICAgIFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudCBwYWdlRWRpdG9yQ2xpZW50OworCisg
ICAgCisgICAgbWVtc2V0KCZwYWdlRWRpdG9yQ2xpZW50LCAwLCBzaXplb2YocGFnZUVkaXRvckNs
aWVudCkpOworICAgIAorICAgIHBhZ2VFZGl0b3JDbGllbnQudmVyc2lvbiA9IDE7CisgICAgcGFn
ZUVkaXRvckNsaWVudC5jbGllbnRJbmZvID0gdGhpczsKKyAgICBwYWdlRWRpdG9yQ2xpZW50Lndp
bGxXcml0ZVRvUGFzdGVib2FyZCA9IHdpbGxXcml0ZVRvUGFzdGVib2FyZDsKKyAgICBwYWdlRWRp
dG9yQ2xpZW50LmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UgPSBnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlOworICAgIHBhZ2VFZGl0b3JDbGllbnQuZGlkV3JpdGVUb1Bhc3RlYm9hcmQgPSBkaWRX
cml0ZVRvUGFzdGVib2FyZDsKKyAgICAKKyAgICBXS0J1bmRsZVBhZ2VTZXRFZGl0b3JDbGllbnQo
cGFnZSwgJnBhZ2VFZGl0b3JDbGllbnQpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvZXhlY0NvcHkuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvZXhlY0Nv
cHkuaHRtbAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9leGVjQ29weS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBmdW5jdGlvbiBkb0NvcHko
KSB7CisgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgic2VsZWN0QWxsIiwgdHJ1ZSk7CisgICAg
ICBkb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpOworICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9uTG9hZD0iZG9Db3B5KCkiPgorICAgIDxkaXY+SGVsbG8gd29ybGQuPC9kaXY+Cisg
ICAgPGRpdj48Yj5IZWxsbzwvYj48aT4gd29ybGQ8L2k+PC9kaXY+CisgICAgPGRpdiBzdHlsZT0i
Ym9yZGVyOiBzb2xpZCByZWQgMXB4Ij5IZWxsbyB3b3JsZDwvZGl2PgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>
<flag name="review"
          id="204738"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="204748"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185825</attachid>
            <date>2013-01-31 11:18:44 -0800</date>
            <delta_ts>2013-01-31 12:33:44 -0800</delta_ts>
            <desc>Patch to test other platform builds</desc>
            <filename>pasteboardnotifications.txt</filename>
            <type>text/plain</type>
            <size>97109</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEzLTAxLTMwICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MjogcHJvdmlkZSBu
ZXcgYnVuZGxlIEFQSXMgdG8gYWxsb3cgYnVuZGxlIGNsaWVudHMgdG8gYmUgbm90aWZpZWQgb2Yg
cGFzdGVib2FyZCBhY2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDgzOTYuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjkyMDQ2MT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIEFkZHMg
c3VwcG9ydCBpbiBXZWJDb3JlIHRvIG5ldyBFZGl0b3JDbGllbnQgbWV0aG9kcyB0byBzdXBwb3J0
IHRoZSBtb2RpZmllZAorICAgICAgICBjbGllbnQgYnVuZGxlIEFQSSBpbiBXZWJLaXQyLgorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjdXQpOiBBZGRlZCBjYWxsIHRvIHdpbGxXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZC4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29weSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQpOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuaDogQWRkZWQgZW1wdHkgY2xpZW50IGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGZvciB0aGUgbmV3IG1ldGhvZHMuCisgICAgICAgIChXZWJDb3JlOjpFbXB0eUVkaXRv
ckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNv
cmU6OkVtcHR5RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToK
KyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxl
Y3Rpb25Gb3JUeXBlcyk6IEFkZGVkIGNhbGwgdG8gZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JS
YW5nZS4KKwogMjAxMy0wMS0zMCAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEluZGV4ZWREQjogSURCS2V5UmFuZ2U6OmlzT25seUtleSgpIGRvZXMgcG9pbnRl
ciBlcXVhbGl0eSBjb21wYXJpc29uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24g
MTQxMzM5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTE4Nyw2ICsxODcsNyBAQCBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dEQxRXYKIF9fWk43
V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTlzY3JvbGxSZWN0VG9WaXNpYmxlRVJLTlNfMTBMYXlvdXRS
ZWN0RVJLTlNfMTVTY3JvbGxBbGlnbm1lbnRFUzZfCiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZl
cjEwd3JhcENGRGF0YUVQSzhfX0NGRGF0YQogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXIxMHdy
YXBOU0RhdGFFUDZOU0RhdGEKK19fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyMTJjcmVhdGVDRkRh
dGFFdgogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXIxMmNyZWF0ZU5TRGF0YUV2CiBfX1pON1dl
YkNvcmUxMlNoYXJlZEJ1ZmZlcjI0Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlRVJLTjNXVEY2U3Ry
aW5nRQogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXI2YXBwZW5kRVBLY2oKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgyLDYgKzk4Miw3IEBAIHZv
aWQgRWRpdG9yOjpjdXQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJlZlB0cjxSYW5n
ZT4gc2VsZWN0aW9uID0gc2VsZWN0ZWRSYW5nZSgpOworICAgIHdpbGxXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZChzZWxlY3Rpb24pOwogICAgIGlmIChzaG91bGREZWxldGVSYW5nZShzZWxlY3Rp
b24uZ2V0KCkpKSB7CiAgICAgICAgIHVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVjdGVkQnlFZGl0
aW5nKHRydWUpOwogICAgICAgICBpZiAoZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKG1fZnJhbWUt
PnNlbGVjdGlvbigpLT5zdGFydCgpKSkgewpAQCAtMTAwMyw2ICsxMDA0LDcgQEAgdm9pZCBFZGl0
b3I6OmNvcHkoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgd2lsbFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKHNlbGVjdGVkUmFuZ2UoKSk7CiAgICAgaWYgKGVuY2xvc2luZ1RleHRG
b3JtQ29udHJvbChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQoKSkpIHsKICAgICAgICAgUGFz
dGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVQbGFpblRleHQoc2VsZWN0ZWRUZXh0
KCksCiAgICAgICAgICAgICBjYW5TbWFydENvcHlPckRlbGV0ZSgpID8gUGFzdGVib2FyZDo6Q2Fu
U21hcnRSZXBsYWNlIDogUGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsKQEAgLTEyNzUs
NiArMTI3NywxMiBAQCB2b2lkIEVkaXRvcjo6ZGlkRW5kRWRpdGluZygpCiAgICAgICAgIGNsaWVu
dCgpLT5kaWRFbmRFZGl0aW5nKCk7CiB9CiAKK3ZvaWQgRWRpdG9yOjp3aWxsV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2UpCit7CisgICAgaWYgKGNsaWVu
dCgpKQorICAgICAgICBjbGllbnQoKS0+d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKHJh
bmdlKTsKK30KKwogdm9pZCBFZGl0b3I6OmRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkK
IHsKICAgICBpZiAoY2xpZW50KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHJldmlz
aW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3Myw2ICsyNzMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZEJlZ2luRWRp
dGluZygpOwogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpOworICAgIHZvaWQgd2lsbFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3NSZWZQdHI8UmFuZ2U+KTsKICAgICB2b2lkIGRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCk7CiAgICAgCiAgICAgdm9pZCBzaG93Rm9udFBhbmVsKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiAxNDEzMzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0MSw3ICs0NDEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0No
YW5nZWRDb250ZW50cygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2Vs
ZWN0aW9uKEZyYW1lKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFJhbmdlKikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoUmFuZ2Uq
LCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiA+JikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpIHsgfQog
CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4p
IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCShyZXZpc2lvbiAx
NDEzMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw2ICs1Miw3IEBAIGNsYXNzIEhUTUxFbGVtZW50OwogY2xhc3MgS2V5Ym9hcmRF
dmVudDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5nZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFNwZWxsQ2hlY2tlcjsKIGNsYXNzIFN0eWxlUHJvcGVydHlTZXQ7CiBjbGFzcyBUZXh0Q2hl
Y2tlckNsaWVudDsKQEAgLTg5LDcgKzkwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRU
b0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVk
aXRpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZChSYW5nZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoUmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gPiYgcGFzdGVib2FyZERhdGEpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCkgPSAwOwogICAgIAogICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+KSA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQko
cmV2aXNpb24gMTQxMzM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4MiwxMCArMTgyLDE5IEBAIHZvaWQgUGFzdGVi
b2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcygKICAgICBpZiAoY29udmVydGVyKQogICAgICAg
ICBhdHRyaWJ1dGVkU3RyaW5nID0gW2NvbnZlcnRlci5nZXQoKSBhdHRyaWJ1dGVkU3RyaW5nXTsK
ICAgICAKLSAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiB0eXBlcyA9ICFwYXN0ZWJvYXJkVHlwZXMu
aXNFbXB0eSgpID8gcGFzdGVib2FyZFR5cGVzIDogc2VsZWN0aW9uUGFzdGVib2FyZFR5cGVzKGNh
blNtYXJ0Q29weU9yRGVsZXRlLCBbYXR0cmlidXRlZFN0cmluZyBjb250YWluc0F0dGFjaG1lbnRz
XSk7CisgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMgPSAhcGFzdGVib2FyZFR5cGVzLmlzRW1wdHko
KSA/IHBhc3RlYm9hcmRUeXBlcyA6IHNlbGVjdGlvblBhc3RlYm9hcmRUeXBlcyhjYW5TbWFydENv
cHlPckRlbGV0ZSwgW2F0dHJpYnV0ZWRTdHJpbmcgY29udGFpbnNBdHRhY2htZW50c10pOworCisg
ICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7CisgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRC
dWZmZXI+ID4gY2xpZW50RGF0YTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5nZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5n
ZSgpLCBjbGllbnRUeXBlcywgY2xpZW50RGF0YSk7CisgICAgdHlwZXMuYXBwZW5kKGNsaWVudFR5
cGVzKTsKKwogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
c2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgIGZyYW1lLT5lZGl0b3IoKS0+
Y2xpZW50KCktPmRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpOwotICAgIAorCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbGllbnRUeXBlcy5zaXplKCk7ICsraSkKKyAgICAg
ICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJG
b3JUeXBlKGNsaWVudERhdGFbaV0sIGNsaWVudFR5cGVzW2ldLCBtX3Bhc3RlYm9hcmROYW1lKTsK
KwogICAgIC8vIFB1dCBIVE1MIG9uIHRoZSBwYXN0ZWJvYXJkLgogICAgIGlmICh0eXBlcy5jb250
YWlucyhXZWJBcmNoaXZlUGJvYXJkVHlwZSkpCiAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShnZXREYXRhU2VsZWN0aW9u
KGZyYW1lLCBXZWJBcmNoaXZlUGJvYXJkVHlwZSksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bh
c3RlYm9hcmROYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDEz
LTAxLTMwICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgV2Vi
S2l0MjogcHJvdmlkZSBuZXcgYnVuZGxlIEFQSXMgdG8gYWxsb3cgYnVuZGxlIGNsaWVudHMgdG8g
YmUgbm90aWZpZWQgb2YgcGFzdGVib2FyZCBhY2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgzOTYuCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMjkyMDQ2MT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292Lgor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBuZXcgYnVuZGxlIGNsaWVudCBBUEkgdG8gcmVjZWl2
ZSBub3RpZmljYXRpb25zCisgICAgICAgIHJlbGF0aXZlIHRoZSBwYXN0ZWJvYXJkIGFjdGl2aXR5
LiBUaGVyZSBhcmUgMiBuZXcgQVBJIGFkZGVkIHRvCisgICAgICAgIEluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50LCB0byByZWNlaXZlIG5vdGlmaWNhdGlvbiBiZWZvcmUgYW5kCisgICAgICAgIGFm
dGVyIHRoZSBwYXN0ZWJvYXJkIGNvbnRlbnQgaXMgYWRkZWQgYW5kIG9uZSBBUEkgdG8gcHJvdmlk
ZQorICAgICAgICBhZGRpdGlvbmFsIGNvbnRlbnQgdG8gYWRkIHRvIHRoZSBwYXN0ZWJvYXJkLgor
ICAgICAgICBJbiBvcmRlciB0byBjcmVhdGUgY29udGVudCB0byBhZGQgdG8gdGhlIHBhc3RlYm9h
cmQsIFdLV2ViQXJjaGl2ZVJlZgorICAgICAgICBhbmQgV0tXZWJBcmNoaXZlUmVzb3VyY2VzUmVm
IGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgc2V0IG9mIEFQSSBsZXZlbAorICAgICAgICBvYmplY3Qu
CisgICAgICAgIFRoaXMgd29yayBpcyBhIGpvaW50IGVmZm9ydCB3aXRoIFNhbSBXZWluaWcgd2hv
IGNvbnRyaWJ1dGVkIHRoZQorICAgICAgICBzdXBwb3J0IGZvciBXS1dlYkFyY2hpdmVSZWYsIFdL
V2ViQXJjaGl2ZVJlc291cmNlc1JlZiBhbmQgcmVsYXRlZAorICAgICAgICBmaWxlcy4gU2FtIGlz
IHRoZSBhdXRob3Igb2YgdGhlIGZpcnN0IGNodW5rIG9mIGNoYW5nZXMgbGlzdGVkIGJlbG93Lgor
ICAgICAgICAKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hh
cmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9tYWMv
V0tXZWJBcmNoaXZlLmNwcDogQWRkZWQuCisgICAgICAgIChXS1dlYkFyY2hpdmVHZXRUeXBlSUQp
OgorICAgICAgICAoV0tXZWJBcmNoaXZlQ3JlYXRlKToKKyAgICAgICAgKFdLV2ViQXJjaGl2ZUNy
ZWF0ZVdpdGhEYXRhKToKKyAgICAgICAgKFdLV2ViQXJjaGl2ZUNyZWF0ZUZyb21SYW5nZSk6Cisg
ICAgICAgIChXS1dlYkFyY2hpdmVDb3B5TWFpblJlc291cmNlKToKKyAgICAgICAgKFdLV2ViQXJj
aGl2ZUNvcHlTdWJyZXNvdXJjZXMpOgorICAgICAgICAoV0tXZWJBcmNoaXZlQ29weVN1YmZyYW1l
QXJjaGl2ZXMpOgorICAgICAgICAoV0tXZWJBcmNoaXZlQ29weURhdGEpOgorICAgICAgICAqIFNo
YXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9B
UEkvYy9tYWMvV0tXZWJBcmNoaXZlUmVzb3VyY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLV2Vi
QXJjaGl2ZVJlc291cmNlR2V0VHlwZUlEKToKKyAgICAgICAgKFdLV2ViQXJjaGl2ZVJlc291cmNl
Q3JlYXRlKToKKyAgICAgICAgKFdLV2ViQXJjaGl2ZVJlc291cmNlQ29weURhdGEpOgorICAgICAg
ICAoV0tXZWJBcmNoaXZlUmVzb3VyY2VDb3B5VVJMKToKKyAgICAgICAgKFdLV2ViQXJjaGl2ZVJl
c291cmNlQ29weU1JTUVUeXBlKToKKyAgICAgICAgKFdLV2ViQXJjaGl2ZVJlc291cmNlQ29weVRl
eHRFbmNvZGluZyk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFyY2hpdmVSZXNv
dXJjZS5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6CisgICAgICAgICog
U2hhcmVkL1dlYkFyY2hpdmUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXJjaGl2
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkFyY2hpdmU6On5XZWJBcmNoaXZlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXJjaGl2ZTo6bWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJjaGl2
ZTo6c3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJjaGl2ZTo6c3ViZnJhbWVB
cmNoaXZlcyk6CisgICAgICAgIChXZWJLaXQ6OnJlbGVhc2VDRkRhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBcmNoaXZlOjpkYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJjaGl2ZTo6Y29y
ZUxlZ2FjeVdlYkFyY2hpdmUpOgorICAgICAgICAqIFNoYXJlZC9XZWJBcmNoaXZlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJBcmNoaXZlOjp0eXBlKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViQXJjaGl2ZVJlc291cmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFyY2hp
dmVSZXNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJjaGl2ZVJlc291cmNl
OjpXZWJBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJBcmNoaXZlUmVzb3Vy
Y2U6On5XZWJBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlQ0ZEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXJjaGl2ZVJlc291cmNlOjpVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJB
cmNoaXZlUmVzb3VyY2U6Ok1JTUVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJjaGl2ZVJl
c291cmNlOjp0ZXh0RW5jb2RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJBcmNoaXZlUmVzb3Vy
Y2U6OmNvcmVBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAqIFNoYXJlZC9XZWJBcmNoaXZlUmVz
b3VyY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFyY2hpdmVSZXNvdXJjZTo6dHlw
ZSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAKKyAgICAgICAgKiBTaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcDogQWRkZWQgdmVyc2lvbmlu
ZyB0byBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuCisgICAgICAgICogU2hhcmVkL0FQ
SUNsaWVudFRyYWl0cy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRvUGFzdGVib2FyZCk6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBh
c3RlYm9hcmREYXRhRm9yUmFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpkaWRXcml0ZVRvUGFzdGVib2FyZCk6IEFkZGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRpZFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50Ojp3
aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0
b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisKIDIwMTMtMDEtMzAg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzEyNjk1ODI3PiBQUFQ6IE1ha2UgbG9hZGluZyBmaWxlIFVSTHMgd29yayB3aXRoIGEg
c2FuZGJveGVkIE5ldHdvcmtQcm9jZXNzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
Q2xpZW50VHJhaXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
Q2xpZW50VHJhaXRzLmNwcAkocmV2aXNpb24gMTQxMzM5KQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSUNsaWVudFRyYWl0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDExIEBA
IGNvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWcKICAgICBzaXplb2YoV0tC
dW5kbGVQYWdlRm9ybUNsaWVudCkKIH07CiAKK2NvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8
V0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Pjo6aW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bXSA9IHsK
KyAgICBvZmZzZXRvZihXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnQsIHdpbGxXcml0ZVRvUGFzdGVi
b2FyZCksCisgICAgc2l6ZW9mKFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudCkKK307CisKIGNvbnN0
IHNpemVfdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlVUlDbGllbnQ+OjppbnRlcmZhY2VT
aXplc0J5VmVyc2lvbltdID0gewogICAgIG9mZnNldG9mKFdLQnVuZGxlUGFnZVVJQ2xpZW50LCBk
aWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSksCiAgICAgc2l6ZW9mKFdLQnVuZGxl
UGFnZVVJQ2xpZW50KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMu
aAkocmV2aXNpb24gMTQxMzM5KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRy
YWl0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSwxMCBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBBUElDbGllbnRUcmFpdHM8V0tCdW5kCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbnRlcmZh
Y2VTaXplc0J5VmVyc2lvblsyXTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFQSUNsaWVudFRy
YWl0czxXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnQ+IHsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IGludGVyZmFjZVNpemVzQnlWZXJzaW9uWzJdOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQVBJ
Q2xpZW50VHJhaXRzPFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50PiB7CiAgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBpbnRlcmZhY2VTaXplc0J5VmVyc2lvblsyXTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSU9iamVjdC5oCShyZXZpc2lvbiAxNDEzMzkpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDggQEAgcHVi
bGljOgogICAgICAgICBUeXBlVVJMUmVxdWVzdCwKICAgICAgICAgVHlwZVVSTFJlc3BvbnNlLAog
ICAgICAgICBUeXBlVXNlckNvbnRlbnRVUkxQYXR0ZXJuLAorICAgICAgICBUeXBlV2ViQXJjaGl2
ZSwKKyAgICAgICAgVHlwZVdlYkFyY2hpdmVSZXNvdXJjZSwKIAogICAgICAgICAvLyBCYXNlIG51
bWVyaWMgdHlwZXMKICAgICAgICAgVHlwZUJvb2xlYW4sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQXJjaGl2ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkFyY2hpdmUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkFyY2hpdmUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBcmNoaXZlLmgiCisKKyNpZiBQTEFU
Rk9STShNQUMpCisKKyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIldlYkFy
Y2hpdmVSZXNvdXJjZS5oIgorI2luY2x1ZGUgIldlYkRhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0xlZ2FjeVdlYkFyY2hpdmUuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxX
ZWJBcmNoaXZlPiBXZWJBcmNoaXZlOjpjcmVhdGUoV2ViQXJjaGl2ZVJlc291cmNlKiBtYWluUmVz
b3VyY2UsIEltbXV0YWJsZUFycmF5KiBzdWJyZXNvdXJjZXMsIEltbXV0YWJsZUFycmF5KiBzdWJm
cmFtZUFyY2hpdmVzKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQXJjaGl2ZShtYWlu
UmVzb3VyY2UsIHN1YnJlc291cmNlcywgc3ViZnJhbWVBcmNoaXZlcykpOworfQorCitQYXNzUmVm
UHRyPFdlYkFyY2hpdmU+IFdlYkFyY2hpdmU6OmNyZWF0ZShXZWJEYXRhKiBkYXRhKQoreworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViQXJjaGl2ZShkYXRhKSk7Cit9CisKK1Bhc3NSZWZQdHI8
V2ViQXJjaGl2ZT4gV2ViQXJjaGl2ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4gbGVnYWN5V2ViQXJjaGl2ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkFyY2hp
dmUobGVnYWN5V2ViQXJjaGl2ZSkpOworfQorCitQYXNzUmVmUHRyPFdlYkFyY2hpdmU+IFdlYkFy
Y2hpdmU6OmNyZWF0ZShSYW5nZSogcmFuZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJBcmNoaXZlKExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShyYW5nZSkpKTsKK30KKworV2ViQXJj
aGl2ZTo6V2ViQXJjaGl2ZShXZWJBcmNoaXZlUmVzb3VyY2UqIG1haW5SZXNvdXJjZSwgSW1tdXRh
YmxlQXJyYXkqIHN1YnJlc291cmNlcywgSW1tdXRhYmxlQXJyYXkqIHN1YmZyYW1lQXJjaGl2ZXMp
CisgICAgOiBtX2NhY2hlZE1haW5SZXNvdXJjZShtYWluUmVzb3VyY2UpCisgICAgLCBtX2NhY2hl
ZFN1YnJlc291cmNlcyhzdWJyZXNvdXJjZXMpCisgICAgLCBtX2NhY2hlZFN1YmZyYW1lQXJjaGl2
ZXMoc3ViZnJhbWVBcmNoaXZlcykKK3sKKyAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjb3Jl
TWFpblJlc291cmNlID0gbV9jYWNoZWRNYWluUmVzb3VyY2UtPmNvcmVBcmNoaXZlUmVzb3VyY2Uo
KTsKKworICAgIFZlY3RvcjxQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gPiBjb3JlQXJjaGl2
ZVJlc291cmNlczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2FjaGVkU3VicmVzb3Vy
Y2VzLT5zaXplKCk7ICsraSkgeworICAgICAgICBSZWZQdHI8V2ViQXJjaGl2ZVJlc291cmNlPiBy
ZXNvdXJjZSA9IG1fY2FjaGVkU3VicmVzb3VyY2VzLT5hdDxXZWJBcmNoaXZlUmVzb3VyY2U+KGkp
OworICAgICAgICBBU1NFUlQocmVzb3VyY2UpOworICAgICAgICBjb3JlQXJjaGl2ZVJlc291cmNl
cy5hcHBlbmQocmVzb3VyY2UtPmNvcmVBcmNoaXZlUmVzb3VyY2UoKSk7CisgICAgfQorCisgICAg
VmVjdG9yPFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gPiBjb3JlU3ViZnJhbWVMZWdhY3lX
ZWJBcmNoaXZlczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2FjaGVkU3ViZnJhbWVB
cmNoaXZlcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPFdlYkFyY2hpdmU+IHN1YmZy
YW1lV2ViQXJjaGl2ZSA9IG1fY2FjaGVkU3ViZnJhbWVBcmNoaXZlcy0+YXQ8V2ViQXJjaGl2ZT4o
aSk7CisgICAgICAgIEFTU0VSVChzdWJmcmFtZVdlYkFyY2hpdmUpOworICAgICAgICBjb3JlU3Vi
ZnJhbWVMZWdhY3lXZWJBcmNoaXZlcy5hcHBlbmQoc3ViZnJhbWVXZWJBcmNoaXZlLT5jb3JlTGVn
YWN5V2ViQXJjaGl2ZSgpKTsKKyAgICB9CisKKyAgICBtX2xlZ2FjeVdlYkFyY2hpdmUgPSBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoY29yZU1haW5SZXNvdXJjZS5yZWxlYXNlKCksIGNvcmVBcmNo
aXZlUmVzb3VyY2VzLCBjb3JlU3ViZnJhbWVMZWdhY3lXZWJBcmNoaXZlcyk7Cit9CisKK1dlYkFy
Y2hpdmU6OldlYkFyY2hpdmUoV2ViRGF0YSogZGF0YSkKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLT5ieXRlcygpLCBkYXRhLT5z
aXplKCkpOworICAgIG1fbGVnYWN5V2ViQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZShidWZmZXIuZ2V0KCkpOworfQorCitXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKFBhc3NSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gbGVnYWN5V2ViQXJjaGl2ZSkKKyAgICA6IG1fbGVnYWN5V2ViQXJj
aGl2ZShsZWdhY3lXZWJBcmNoaXZlKQoreworfQorCitXZWJBcmNoaXZlOjp+V2ViQXJjaGl2ZSgp
Cit7Cit9CisKK1dlYkFyY2hpdmVSZXNvdXJjZSogV2ViQXJjaGl2ZTo6bWFpblJlc291cmNlKCkK
K3sKKyAgICBpZiAoIW1fY2FjaGVkTWFpblJlc291cmNlKQorICAgICAgICBtX2NhY2hlZE1haW5S
ZXNvdXJjZSA9IFdlYkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKG1fbGVnYWN5V2ViQXJjaGl2ZS0+
bWFpblJlc291cmNlKCkpOworICAgIHJldHVybiBtX2NhY2hlZE1haW5SZXNvdXJjZS5nZXQoKTsK
K30KKworSW1tdXRhYmxlQXJyYXkqIFdlYkFyY2hpdmU6OnN1YnJlc291cmNlcygpCit7CisgICAg
aWYgKCFtX2NhY2hlZFN1YnJlc291cmNlcykgeworICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSU9i
amVjdD4gPiBzdWJyZXNvdXJjZXM7CisgICAgICAgIHN1YnJlc291cmNlcy5yZXNlcnZlQ2FwYWNp
dHkobV9sZWdhY3lXZWJBcmNoaXZlLT5zdWJyZXNvdXJjZXMoKS5zaXplKCkpOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZWdhY3lXZWJBcmNoaXZlLT5zdWJyZXNvdXJjZXMo
KS5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHN1YnJlc291cmNlcy5hcHBlbmQoV2ViQXJjaGl2
ZVJlc291cmNlOjpjcmVhdGUobV9sZWdhY3lXZWJBcmNoaXZlLT5zdWJyZXNvdXJjZXMoKVtpXS5n
ZXQoKSkpOworCisgICAgICAgIG1fY2FjaGVkU3VicmVzb3VyY2VzID0gSW1tdXRhYmxlQXJyYXk6
OmFkb3B0KHN1YnJlc291cmNlcyk7CisgICAgfQorCisgICAgcmV0dXJuIG1fY2FjaGVkU3VicmVz
b3VyY2VzLmdldCgpOworfQorCitJbW11dGFibGVBcnJheSogV2ViQXJjaGl2ZTo6c3ViZnJhbWVB
cmNoaXZlcygpCit7CisgICAgaWYgKCFtX2NhY2hlZFN1YmZyYW1lQXJjaGl2ZXMpIHsKKyAgICAg
ICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+ID4gc3ViZnJhbWVXZWJBcmNoaXZlczsKKyAgICAg
ICAgc3ViZnJhbWVXZWJBcmNoaXZlcy5yZXNlcnZlQ2FwYWNpdHkobV9sZWdhY3lXZWJBcmNoaXZl
LT5zdWJmcmFtZUFyY2hpdmVzKCkuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fbGVnYWN5V2ViQXJjaGl2ZS0+c3ViZnJhbWVBcmNoaXZlcygpLnNpemUoKTsgKytp
KQorICAgICAgICAgICAgc3ViZnJhbWVXZWJBcmNoaXZlcy5hcHBlbmQoV2ViQXJjaGl2ZTo6Y3Jl
YXRlKHN0YXRpY19jYXN0PExlZ2FjeVdlYkFyY2hpdmUqPihtX2xlZ2FjeVdlYkFyY2hpdmUtPnN1
YmZyYW1lQXJjaGl2ZXMoKVtpXS5nZXQoKSkpKTsKKworICAgICAgICBtX2NhY2hlZFN1YmZyYW1l
QXJjaGl2ZXMgPSBJbW11dGFibGVBcnJheTo6YWRvcHQoc3ViZnJhbWVXZWJBcmNoaXZlcyk7Cisg
ICAgfQorCisgICAgcmV0dXJuIG1fY2FjaGVkU3ViZnJhbWVBcmNoaXZlcy5nZXQoKTsKK30KKwor
c3RhdGljIHZvaWQgcmVsZWFzZUNGRGF0YSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0
YSkKK3sKKyAgICAvLyBCYWxhbmNlZCBieSBDRlJldGFpbiBpbiBXZWJBcmNoaXZlOjpkYXRhKCku
CisgICAgQ0ZSZWxlYXNlKGRhdGEpOworfQorCitQYXNzUmVmUHRyPFdlYkRhdGE+IFdlYkFyY2hp
dmU6OmRhdGEoKQoreworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJhd0RhdGFSZXByZXNlbnRh
dGlvbiA9IG1fbGVnYWN5V2ViQXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCk7CisKKyAg
ICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZUNGRGF0YS4KKyAgICBDRlJldGFp
bihyYXdEYXRhUmVwcmVzZW50YXRpb24uZ2V0KCkpOworCisgICAgcmV0dXJuIFdlYkRhdGE6OmNy
ZWF0ZVdpdGhvdXRDb3B5aW5nKENGRGF0YUdldEJ5dGVQdHIocmF3RGF0YVJlcHJlc2VudGF0aW9u
LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKHJhd0RhdGFSZXByZXNlbnRhdGlvbi5nZXQoKSksIHJl
bGVhc2VDRkRhdGEsIHJhd0RhdGFSZXByZXNlbnRhdGlvbi5nZXQoKSk7Cit9CisKK0xlZ2FjeVdl
YkFyY2hpdmUqIFdlYkFyY2hpdmU6OmNvcmVMZWdhY3lXZWJBcmNoaXZlKCkKK3sKKyAgICByZXR1
cm4gbV9sZWdhY3lXZWJBcmNoaXZlLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJBcmNoaXZlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkFyY2hp
dmUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZlLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkFy
Y2hpdmVfaAorI2RlZmluZSBXZWJBcmNoaXZlX2gKKworI2lmIFBMQVRGT1JNKE1BQykKKworI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBMZWdhY3lXZWJB
cmNoaXZlOworY2xhc3MgUmFuZ2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJ
bW11dGFibGVBcnJheTsKK2NsYXNzIFdlYkFyY2hpdmVSZXNvdXJjZTsKK2NsYXNzIFdlYkRhdGE7
CisKK2NsYXNzIFdlYkFyY2hpdmUgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZVdlYkFyY2hpdmU7CisgICAgdmlydHVhbCB+
V2ViQXJjaGl2ZSgpOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQXJjaGl2ZT4gY3JlYXRl
KFdlYkFyY2hpdmVSZXNvdXJjZSogbWFpblJlc291cmNlLCBJbW11dGFibGVBcnJheSogc3VicmVz
b3VyY2VzLCBJbW11dGFibGVBcnJheSogc3ViZnJhbWVBcmNoaXZlcyk7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViQXJjaGl2ZT4gY3JlYXRlKFdlYkRhdGEqKTsKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJBcmNoaXZlPiBjcmVhdGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpMZWdhY3lXZWJBcmNo
aXZlPik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQXJjaGl2ZT4gY3JlYXRlKFdlYkNvcmU6
OlJhbmdlKik7CisKKyAgICBXZWJBcmNoaXZlUmVzb3VyY2UqIG1haW5SZXNvdXJjZSgpOworICAg
IEltbXV0YWJsZUFycmF5KiBzdWJyZXNvdXJjZXMoKTsKKyAgICBJbW11dGFibGVBcnJheSogc3Vi
ZnJhbWVBcmNoaXZlcygpOworCisgICAgUGFzc1JlZlB0cjxXZWJEYXRhPiBkYXRhKCk7CisKKyAg
ICBXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlKiBjb3JlTGVnYWN5V2ViQXJjaGl2ZSgpOworCitw
cml2YXRlOgorICAgIFdlYkFyY2hpdmUoV2ViQXJjaGl2ZVJlc291cmNlKiBtYWluUmVzb3VyY2Us
IEltbXV0YWJsZUFycmF5KiBzdWJyZXNvdXJjZXMsIEltbXV0YWJsZUFycmF5KiBzdWJmcmFtZUFy
Y2hpdmVzKTsKKyAgICBXZWJBcmNoaXZlKFdlYkRhdGEqKTsKKyAgICBXZWJBcmNoaXZlKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZT4pOworCisgICAgdmlydHVhbCBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6TGVn
YWN5V2ViQXJjaGl2ZT4gbV9sZWdhY3lXZWJBcmNoaXZlOworICAgIFJlZlB0cjxXZWJBcmNoaXZl
UmVzb3VyY2U+IG1fY2FjaGVkTWFpblJlc291cmNlOworICAgIFJlZlB0cjxJbW11dGFibGVBcnJh
eT4gbV9jYWNoZWRTdWJyZXNvdXJjZXM7CisgICAgUmVmUHRyPEltbXV0YWJsZUFycmF5PiBtX2Nh
Y2hlZFN1YmZyYW1lQXJjaGl2ZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKKworI2VuZGlmIC8vIFdlYkFyY2hpdmVfaApJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkFyY2hpdmVSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkFyY2hpdmVSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQXJjaGl2ZVJlc291cmNlLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViQXJjaGl2ZVJlc291cmNlLmgiCisKKyNpZiBQTEFURk9STShNQUMpCisK
KyNpbmNsdWRlICJXZWJEYXRhLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BcmNoaXZlUmVzb3VyY2Uu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFz
c1JlZlB0cjxXZWJBcmNoaXZlUmVzb3VyY2U+IFdlYkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFdl
YkRhdGEqIGRhdGEsIGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YkFyY2hpdmVSZXNvdXJjZShkYXRhLCBVUkwsIE1JTUVUeXBlLCB0ZXh0RW5jb2RpbmcpKTsKK30K
KworUGFzc1JlZlB0cjxXZWJBcmNoaXZlUmVzb3VyY2U+IFdlYkFyY2hpdmVSZXNvdXJjZTo6Y3Jl
YXRlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBhcmNoaXZlUmVzb3VyY2UpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJBcmNoaXZlUmVzb3VyY2UoYXJjaGl2ZVJlc291cmNlKSk7
Cit9CisKK1dlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKFdlYkRhdGEqIGRh
dGEsIGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZykKKyAgICA6IG1fYXJjaGl2ZVJlc291cmNlKEFyY2hpdmVSZXNvdXJj
ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEtPmJ5dGVzKCksIGRhdGEtPnNpemUo
KSksIEtVUkwoS1VSTCgpLCBVUkwpLCBNSU1FVHlwZSwgdGV4dEVuY29kaW5nLCBTdHJpbmcoKSkp
Cit7Cit9CisKK1dlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKFBhc3NSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBhcmNoaXZlUmVzb3VyY2UpCisgICAgOiBtX2FyY2hpdmVSZXNv
dXJjZShhcmNoaXZlUmVzb3VyY2UpCit7Cit9CisKK1dlYkFyY2hpdmVSZXNvdXJjZTo6fldlYkFy
Y2hpdmVSZXNvdXJjZSgpCit7Cit9CisKK3N0YXRpYyB2b2lkIHJlbGVhc2VDRkRhdGEodW5zaWdu
ZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgLy8gQmFsYW5jZWQgYnkgQ0ZSZXRh
aW4gaW4gV2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKCkuCisgICAgQ0ZSZWxlYXNlKGRhdGEpOwor
fQorCitQYXNzUmVmUHRyPFdlYkRhdGE+IFdlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSgpCit7Cisg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gYWRvcHRDRihtX2FyY2hpdmVSZXNvdXJj
ZS0+ZGF0YSgpLT5jcmVhdGVDRkRhdGEoKSk7CisKKyAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVh
c2UgaW4gcmVsZWFzZUNGRGF0YS4KKyAgICBDRlJldGFpbihjZkRhdGEuZ2V0KCkpOworCisgICAg
cmV0dXJuIFdlYkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKENGRGF0YUdldEJ5dGVQdHIoY2ZE
YXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSksIHJlbGVhc2VDRkRhdGEs
IGNmRGF0YS5nZXQoKSk7Cit9CisKK1N0cmluZyBXZWJBcmNoaXZlUmVzb3VyY2U6OlVSTCgpCit7
CisgICAgcmV0dXJuIG1fYXJjaGl2ZVJlc291cmNlLT51cmwoKS5zdHJpbmcoKTsKK30KKworU3Ry
aW5nIFdlYkFyY2hpdmVSZXNvdXJjZTo6TUlNRVR5cGUoKQoreworICAgIHJldHVybiBtX2FyY2hp
dmVSZXNvdXJjZS0+bWltZVR5cGUoKTsKK30KKworU3RyaW5nIFdlYkFyY2hpdmVSZXNvdXJjZTo6
dGV4dEVuY29kaW5nKCkKK3sKKyAgICByZXR1cm4gbV9hcmNoaXZlUmVzb3VyY2UtPnRleHRFbmNv
ZGluZygpOworfQorCitBcmNoaXZlUmVzb3VyY2UqIFdlYkFyY2hpdmVSZXNvdXJjZTo6Y29yZUFy
Y2hpdmVSZXNvdXJjZSgpCit7CisgICAgcmV0dXJuIG1fYXJjaGl2ZVJlc291cmNlLmdldCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZlUmVzb3VyY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQXJjaGl2ZVJlc291cmNlLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQXJjaGl2ZVJlc291cmNlLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkFyY2hpdmVS
ZXNvdXJjZV9oCisjZGVmaW5lIFdlYkFyY2hpdmVSZXNvdXJjZV9oCisKKyNpZiBQTEFURk9STShN
QUMpCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBBcmNoaXZlUmVzb3VyY2U7Cit9CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJEYXRhOworY2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2Vi
VVJMOworCitjbGFzcyBXZWJBcmNoaXZlUmVzb3VyY2UgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZVdlYkFyY2hpdmVSZXNv
dXJjZTsKKyAgICB2aXJ0dWFsIH5XZWJBcmNoaXZlUmVzb3VyY2UoKTsKKworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYkFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFdlYkRhdGEqLCBjb25zdCBTdHJp
bmcmIFVSTCwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rp
bmcpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFBh
c3NSZWZQdHI8V2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlPik7CisKKyAgICBQYXNzUmVmUHRyPFdl
YkRhdGE+IGRhdGEoKTsKKyAgICBTdHJpbmcgVVJMKCk7CisgICAgU3RyaW5nIE1JTUVUeXBlKCk7
CisgICAgU3RyaW5nIHRleHRFbmNvZGluZygpOworCisgICAgV2ViQ29yZTo6QXJjaGl2ZVJlc291
cmNlKiBjb3JlQXJjaGl2ZVJlc291cmNlKCk7CisKK3ByaXZhdGU6CisgICAgV2ViQXJjaGl2ZVJl
c291cmNlKFdlYkRhdGEqLCBjb25zdCBTdHJpbmcmIFVSTCwgY29uc3QgU3RyaW5nJiBNSU1FVHlw
ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcpOworICAgIFdlYkFyY2hpdmVSZXNvdXJjZShQ
YXNzUmVmUHRyPFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZT4pOworCisgICAgdmlydHVhbCBUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6
QXJjaGl2ZVJlc291cmNlPiBtX2FyY2hpdmVSZXNvdXJjZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCisjZW5kaWYgLy8gV2ViQXJjaGl2
ZVJlc291cmNlX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHJldmlz
aW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNzgsNiArNzgsOCBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVX
S1VSTCogV0tVUkxSCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1VSTFJlcXVlc3QqIFdL
VVJMUmVxdWVzdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVVJMUmVzcG9uc2Uq
IFdLVVJMUmVzcG9uc2VSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1VzZXJDb250
ZW50VVJMUGF0dGVybiogV0tVc2VyQ29udGVudFVSTFBhdHRlcm5SZWY7Cit0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS1dlYkFyY2hpdmUqIFdLV2ViQXJjaGl2ZVJlZjsKK3R5cGVkZWYgY29u
c3Qgc3RydWN0IE9wYXF1ZVdLV2ViQXJjaGl2ZVJlc291cmNlKiBXS1dlYkFyY2hpdmVSZXNvdXJj
ZVJlZjsKIAogZW51bSBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgewogICAgIGtXS0luamVj
dEluQWxsRnJhbWVzLApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVk
QVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1No
YXJlZEFQSUNhc3QuaAkocmV2aXNpb24gMTQxMzM5KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw4IEBA
IGNsYXNzIEltbXV0YWJsZUFycmF5OwogY2xhc3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKIGNsYXNz
IE11dGFibGVBcnJheTsKIGNsYXNzIE11dGFibGVEaWN0aW9uYXJ5OworY2xhc3MgV2ViQXJjaGl2
ZTsKK2NsYXNzIFdlYkFyY2hpdmVSZXNvdXJjZTsKIGNsYXNzIFdlYkNlcnRpZmljYXRlSW5mbzsK
IGNsYXNzIFdlYkNvbm5lY3Rpb247CiBjbGFzcyBXZWJDb250ZXh0TWVudUl0ZW07CkBAIC0xMTAs
NiArMTEyLDExIEBAIFdLX0FERF9BUElfTUFQUElORyhXS1VSTFJlcXVlc3RSZWYsIFdlYlUKIFdL
X0FERF9BUElfTUFQUElORyhXS1VSTFJlc3BvbnNlUmVmLCBXZWJVUkxSZXNwb25zZSkKIFdLX0FE
RF9BUElfTUFQUElORyhXS1VzZXJDb250ZW50VVJMUGF0dGVyblJlZiwgV2ViVXNlckNvbnRlbnRV
UkxQYXR0ZXJuKQogCisjaWYgUExBVEZPUk0oTUFDKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vi
QXJjaGl2ZVJlZiwgV2ViQXJjaGl2ZSkKK1dLX0FERF9BUElfTUFQUElORyhXS1dlYkFyY2hpdmVS
ZXNvdXJjZVJlZiwgV2ViQXJjaGl2ZVJlc291cmNlKQorI2VuZGlmCisKIHRlbXBsYXRlPHR5cGVu
YW1lIEltcGxUeXBlLCB0eXBlbmFtZSBBUElUeXBlID0gdHlwZW5hbWUgSW1wbFR5cGVJbmZvPElt
cGxUeXBlKj46OkFQSVR5cGU+CiBjbGFzcyBQcm94eWluZ1JlZlB0ciB7CiBwdWJsaWM6CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFyY2hpdmUuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFy
Y2hpdmUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLV2ViQXJjaGl2ZS5oIgorCisjaW5jbHVkZSAi
SW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgi
CisjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0
LmgiCisjaW5jbHVkZSAiV2ViQXJjaGl2ZS5oIgorI2luY2x1ZGUgIldlYkFyY2hpdmVSZXNvdXJj
ZS5oIgorI2luY2x1ZGUgIldlYkRhdGEuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwor
V0tUeXBlSUQgV0tXZWJBcmNoaXZlR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoV2Vi
QXJjaGl2ZTo6QVBJVHlwZSk7Cit9CisKK1dLV2ViQXJjaGl2ZVJlZiBXS1dlYkFyY2hpdmVDcmVh
dGUoV0tXZWJBcmNoaXZlUmVzb3VyY2VSZWYgbWFpblJlc291cmNlUmVmLCBXS0FycmF5UmVmIHN1
YnJlc291cmNlc1JlZiwgV0tBcnJheVJlZiBzdWJmcmFtZUFyY2hpdmVzUmVmKQoreworICAgIFJl
ZlB0cjxXZWJBcmNoaXZlPiB3ZWJBcmNoaXZlID0gV2ViQXJjaGl2ZTo6Y3JlYXRlKHRvSW1wbCht
YWluUmVzb3VyY2VSZWYpLCB0b0ltcGwoc3VicmVzb3VyY2VzUmVmKSwgdG9JbXBsKHN1YmZyYW1l
QXJjaGl2ZXNSZWYpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViQXJjaGl2ZS5yZWxlYXNlKCkubGVh
a1JlZigpKTsKK30KKworV0tXZWJBcmNoaXZlUmVmIFdLV2ViQXJjaGl2ZUNyZWF0ZVdpdGhEYXRh
KFdLRGF0YVJlZiBkYXRhUmVmKQoreworICAgIFJlZlB0cjxXZWJBcmNoaXZlPiB3ZWJBcmNoaXZl
ID0gV2ViQXJjaGl2ZTo6Y3JlYXRlKHRvSW1wbChkYXRhUmVmKSk7CisgICAgcmV0dXJuIHRvQVBJ
KHdlYkFyY2hpdmUucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cit9CisKK1dLV2ViQXJjaGl2ZVJlZiBX
S1dlYkFyY2hpdmVDcmVhdGVGcm9tUmFuZ2UoV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiByYW5nZUhh
bmRsZVJlZikKK3sKKyAgICBSZWZQdHI8V2ViQXJjaGl2ZT4gd2ViQXJjaGl2ZSA9IFdlYkFyY2hp
dmU6OmNyZWF0ZSh0b0ltcGwocmFuZ2VIYW5kbGVSZWYpLT5jb3JlUmFuZ2UoKSk7CisgICAgcmV0
dXJuIHRvQVBJKHdlYkFyY2hpdmUucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cit9CisKK1dLV2ViQXJj
aGl2ZVJlc291cmNlUmVmIFdLV2ViQXJjaGl2ZUNvcHlNYWluUmVzb3VyY2UoV0tXZWJBcmNoaXZl
UmVmIHdlYkFyY2hpdmVSZWYpCit7CisgICAgUmVmUHRyPFdlYkFyY2hpdmVSZXNvdXJjZT4gbWFp
blJlc291cmNlID0gdG9JbXBsKHdlYkFyY2hpdmVSZWYpLT5tYWluUmVzb3VyY2UoKTsKKyAgICBy
ZXR1cm4gdG9BUEkobWFpblJlc291cmNlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworfQorCitXS0Fy
cmF5UmVmIFdLV2ViQXJjaGl2ZUNvcHlTdWJyZXNvdXJjZXMoV0tXZWJBcmNoaXZlUmVmIHdlYkFy
Y2hpdmVSZWYpCit7CisgICAgUmVmUHRyPEltbXV0YWJsZUFycmF5PiBzdWJyZXNvdXJjZXMgPSB0
b0ltcGwod2ViQXJjaGl2ZVJlZiktPnN1YnJlc291cmNlcygpOworICAgIHJldHVybiB0b0FQSShz
dWJyZXNvdXJjZXMucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cit9CisKK1dLQXJyYXlSZWYgV0tXZWJB
cmNoaXZlQ29weVN1YmZyYW1lQXJjaGl2ZXMoV0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYp
Cit7CisgICAgUmVmUHRyPEltbXV0YWJsZUFycmF5PiBzdWJmcmFtZUFyY2hpdmVzID0gdG9JbXBs
KHdlYkFyY2hpdmVSZWYpLT5zdWJmcmFtZUFyY2hpdmVzKCk7CisgICAgcmV0dXJuIHRvQVBJKHN1
YmZyYW1lQXJjaGl2ZXMucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cit9CisKK1dLRGF0YVJlZiBXS1dl
YkFyY2hpdmVDb3B5RGF0YShXS1dlYkFyY2hpdmVSZWYgd2ViQXJjaGl2ZVJlZikKK3sKKyAgICBS
ZWZQdHI8V2ViRGF0YT4gZGF0YSA9IHRvSW1wbCh3ZWJBcmNoaXZlUmVmKS0+ZGF0YSgpOworICAg
IHJldHVybiB0b0FQSShkYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworfQpJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFyY2hpdmUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFyY2hpdmUuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tXZWJBcmNo
aXZlX2gKKyNkZWZpbmUgV0tXZWJBcmNoaXZlX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNl
Lmg+CisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4g
IkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tXZWJBcmNoaXZlR2V0VHlwZUlE
KCk7CisKK1dLX0VYUE9SVCBXS1dlYkFyY2hpdmVSZWYgV0tXZWJBcmNoaXZlQ3JlYXRlKFdLV2Vi
QXJjaGl2ZVJlc291cmNlUmVmIG1haW5SZXNvdXJjZSwgV0tBcnJheVJlZiBzdWJyZXNvdXJjZXMs
IFdLQXJyYXlSZWYgc3ViZnJhbWVBcmNoaXZlcyk7CitXS19FWFBPUlQgV0tXZWJBcmNoaXZlUmVm
IFdLV2ViQXJjaGl2ZUNyZWF0ZVdpdGhEYXRhKFdLRGF0YVJlZiBkYXRhKTsKK1dLX0VYUE9SVCBX
S1dlYkFyY2hpdmVSZWYgV0tXZWJBcmNoaXZlQ3JlYXRlRnJvbVJhbmdlKFdLQnVuZGxlUmFuZ2VI
YW5kbGVSZWYgcmFuZ2UpOworCitXS19FWFBPUlQgV0tXZWJBcmNoaXZlUmVzb3VyY2VSZWYgV0tX
ZWJBcmNoaXZlQ29weU1haW5SZXNvdXJjZShXS1dlYkFyY2hpdmVSZWYgd2ViQXJjaGl2ZSk7CitX
S19FWFBPUlQgV0tBcnJheVJlZiBXS1dlYkFyY2hpdmVDb3B5U3VicmVzb3VyY2VzKFdLV2ViQXJj
aGl2ZVJlZiB3ZWJBcmNoaXZlKTsKK1dLX0VYUE9SVCBXS0FycmF5UmVmIFdLV2ViQXJjaGl2ZUNv
cHlTdWJmcmFtZUFyY2hpdmVzKFdLV2ViQXJjaGl2ZVJlZiB3ZWJBcmNoaXZlKTsKK1dLX0VYUE9S
VCBXS0RhdGFSZWYgV0tXZWJBcmNoaXZlQ29weURhdGEoV0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hp
dmUpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gV0tXZWJB
cmNoaXZlX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNo
aXZlUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9tYWMvV0tXZWJBcmNoaXZlUmVzb3VyY2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFyY2hpdmVSZXNvdXJjZS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV0tXZWJBcmNoaXZlUmVzb3VyY2UuaCIKKworI2luY2x1ZGUgIldLU2hhcmVkQVBJ
Q2FzdC5oIgorI2luY2x1ZGUgIldlYkFyY2hpdmVSZXNvdXJjZS5oIgorI2luY2x1ZGUgIldlYkRh
dGEuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tXZWJBcmNoaXZl
UmVzb3VyY2VHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShXZWJBcmNoaXZlUmVzb3Vy
Y2U6OkFQSVR5cGUpOworfQorCitXS1dlYkFyY2hpdmVSZXNvdXJjZVJlZiBXS1dlYkFyY2hpdmVS
ZXNvdXJjZUNyZWF0ZShXS0RhdGFSZWYgZGF0YVJlZiwgV0tVUkxSZWYgVVJMUmVmLCBXS1N0cmlu
Z1JlZiBNSU1FVHlwZVJlZiwgV0tTdHJpbmdSZWYgdGV4dEVuY29kaW5nUmVmKQoreworICAgIFJl
ZlB0cjxXZWJBcmNoaXZlUmVzb3VyY2U+IHdlYkFyY2hpdmVSZXNvdXJjZSA9IFdlYkFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKHRvSW1wbChkYXRhUmVmKSwgdG9XVEZTdHJpbmcoVVJMUmVmKSwgdG9X
VEZTdHJpbmcoTUlNRVR5cGVSZWYpLCB0b1dURlN0cmluZyh0ZXh0RW5jb2RpbmdSZWYpKTsKKyAg
ICByZXR1cm4gdG9BUEkod2ViQXJjaGl2ZVJlc291cmNlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwor
fQorCitXS0RhdGFSZWYgV0tXZWJBcmNoaXZlUmVzb3VyY2VDb3B5RGF0YShXS1dlYkFyY2hpdmVS
ZXNvdXJjZVJlZiB3ZWJBcmNoaXZlUmVzb3VyY2VSZWYpCit7CisgICAgUmVmUHRyPFdlYkRhdGE+
IGRhdGEgPSB0b0ltcGwod2ViQXJjaGl2ZVJlc291cmNlUmVmKS0+ZGF0YSgpOworICAgIHJldHVy
biB0b0FQSShkYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworfQorCitXS1VSTFJlZiBXS1dlYkFy
Y2hpdmVSZXNvdXJjZUNvcHlVUkwoV0tXZWJBcmNoaXZlUmVzb3VyY2VSZWYgd2ViQXJjaGl2ZVJl
c291cmNlUmVmKQoreworICAgIHJldHVybiB0b0NvcGllZFVSTEFQSSh0b0ltcGwod2ViQXJjaGl2
ZVJlc291cmNlUmVmKS0+VVJMKCkpOworfQorCitXS1N0cmluZ1JlZiBXS1dlYkFyY2hpdmVSZXNv
dXJjZUNvcHlNSU1FVHlwZShXS1dlYkFyY2hpdmVSZXNvdXJjZVJlZiB3ZWJBcmNoaXZlUmVzb3Vy
Y2VSZWYpCit7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbCh3ZWJBcmNoaXZlUmVzb3Vy
Y2VSZWYpLT5NSU1FVHlwZSgpKTsKK30KKworV0tTdHJpbmdSZWYgV0tXZWJBcmNoaXZlUmVzb3Vy
Y2VDb3B5VGV4dEVuY29kaW5nKFdLV2ViQXJjaGl2ZVJlc291cmNlUmVmIHdlYkFyY2hpdmVSZXNv
dXJjZVJlZikKK3sKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHdlYkFyY2hpdmVSZXNv
dXJjZVJlZiktPnRleHRFbmNvZGluZygpKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZVJlc291cmNlLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZVJlc291
cmNlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdLV2ViQXJjaGl2ZVJlc291cmNlX2gKKyNkZWZpbmUgV0tXZWJBcmNoaXZlUmVzb3VyY2VfaAor
CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorCisj
aWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5
cGVJRCBXS1dlYkFyY2hpdmVSZXNvdXJjZUdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tXZWJB
cmNoaXZlUmVzb3VyY2VSZWYgV0tXZWJBcmNoaXZlUmVzb3VyY2VDcmVhdGUoV0tEYXRhUmVmIGRh
dGEsIFdLVVJMUmVmIFVSTCwgV0tTdHJpbmdSZWYgTUlNRVR5cGUsIFdLU3RyaW5nUmVmIHRleHRF
bmNvZGluZyk7CisKK1dLX0VYUE9SVCBXS0RhdGFSZWYgV0tXZWJBcmNoaXZlUmVzb3VyY2VDb3B5
RGF0YShXS1dlYkFyY2hpdmVSZXNvdXJjZVJlZiB3ZWJBcmNoaXZlUmVzb3VyY2UpOworV0tfRVhQ
T1JUIFdLVVJMUmVmIFdLV2ViQXJjaGl2ZVJlc291cmNlQ29weVVSTChXS1dlYkFyY2hpdmVSZXNv
dXJjZVJlZiB3ZWJBcmNoaXZlUmVzb3VyY2UpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLV2Vi
QXJjaGl2ZVJlc291cmNlQ29weU1JTUVUeXBlKFdLV2ViQXJjaGl2ZVJlc291cmNlUmVmIHdlYkFy
Y2hpdmVSZXNvdXJjZSk7CitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tXZWJBcmNoaXZlUmVzb3Vy
Y2VDb3B5VGV4dEVuY29kaW5nKFdLV2ViQXJjaGl2ZVJlc291cmNlUmVmIHdlYkFyY2hpdmVSZXNv
dXJjZSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBXS1dl
YkFyY2hpdmVSZXNvdXJjZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDEzMzkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTEwMjUsNiArMTAyNSwxNCBAQAogCQlDNTc0QTM3NzEyRTYwOTlEMDAyREZFOTggLyogV2ViRHJh
Z0NsaWVudE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM1NTRGRkEyMTJFNEU4RUEwMDJGMjJDMCAvKiBXZWJEcmFnQ2xpZW50TWFjLm1tICovOyB9
OwogCQlDNTc0QTU4MTEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTc0QTU3RjEyRTY2Njgx
MDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLmggKi87IH07CiAJCUM1NzRBNTgyMTJFNjY2ODEw
MDJERkU5OCAvKiBQYXN0ZWJvYXJkVHlwZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDNTc0QTU4MDEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2Fy
ZFR5cGVzLm1tICovOyB9OworCQlDNUUxQUZFODE2QjIwQjY3MDA2Q0MxRjIgLyogV0tXZWJBcmNo
aXZlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MzI5REE1MTZBQ0U1QTkwMDMxNkRFMiAvKiBXS1dlYkFyY2hpdmUuY3BwICovOyB9OworCQlDNUUx
QUZFOTE2QjIwQjc1MDA2Q0MxRjIgLyogV0tXZWJBcmNoaXZlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMyOURBNjE2QUNFNUE5MDAzMTZERTIgLyog
V0tXZWJBcmNoaXZlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQzVFMUFGRUExNkIyMEI3QjAwNkNDMUYyIC8qIFdLV2ViQXJjaGl2ZVJlc291cmNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzI5
REE5MTZBQ0U1QkYwMDMxNkRFMiAvKiBXS1dlYkFyY2hpdmVSZXNvdXJjZS5jcHAgKi87IH07CisJ
CUM1RTFBRkVCMTZCMjBCN0UwMDZDQzFGMiAvKiBXS1dlYkFyY2hpdmVSZXNvdXJjZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzMjlEQUExNkFDRTVD
MDAwMzE2REUyIC8qIFdLV2ViQXJjaGl2ZVJlc291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzVFMUFGRUMxNkIyMTAxMjAwNkNDMUYyIC8q
IFdlYkFyY2hpdmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMzMjlEOTkxNkFDQ0U5OTAwMzE2REUyIC8qIFdlYkFyY2hpdmUuY3BwICovOyB9Owor
CQlDNUUxQUZFRDE2QjIxMDE3MDA2Q0MxRjIgLyogV2ViQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzMjlEOUExNkFDQ0U5OTAwMzE2REUy
IC8qIFdlYkFyY2hpdmUuaCAqLzsgfTsKKwkJQzVFMUFGRUUxNkIyMTAyNTAwNkNDMUYyIC8qIFdl
YkFyY2hpdmVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzMyOUQ5RTE2QUNENDc4MDAzMTZERTIgLyogV2ViQXJjaGl2ZVJlc291cmNl
LmNwcCAqLzsgfTsKKwkJQzVFMUFGRUYxNkIyMTAyOTAwNkNDMUYyIC8qIFdlYkFyY2hpdmVSZXNv
dXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMz
MjlEOUYxNkFDRDQ3ODAwMzE2REUyIC8qIFdlYkFyY2hpdmVSZXNvdXJjZS5oICovOyB9OwogCQlD
RDVDNjZBMDEzNEI5RDM4MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNs
aWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDVDNjY5RTEzNEI5RDM2MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNs
aWVudC5jcHAgKi87IH07CiAJCUNENUM2NkExMTM0QjlEMzgwMDRGRTJBOCAvKiBJbmplY3RlZEJ1
bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDVDNjY5RjEzNEI5RDM3MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5k
bGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oICovOyB9OwogCQlDRDY3RDMwRTE1QzA4RjlBMDA4NDNB
REYgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q2N0QzMDgxNUMwN0JF
MDAwODQzQURGIC8qIEluamVjdGVkQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmNw
cCAqLzsgfTsKQEAgLTIwMjUsNiArMjAzMywxNCBAQAogCQlCQzMwNjZCRDEyNUE0NDIxMDBFNzEy
NzggLyogV2ViUHJvY2Vzc01lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlByb2Nlc3NNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzMwNjgyMjEyNUE2Qjk0MDBFNzEyNzggLyogV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzA2ODIzMTI1QTZCOTQw
MEU3MTI3OCAvKiBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzMyOUQ5OTE2QUNDRTk5MDAzMTZERTIg
LyogV2ViQXJjaGl2ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJBcmNoaXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMzMjlEOUExNkFD
Q0U5OTAwMzE2REUyIC8qIFdlYkFyY2hpdmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViQXJjaGl2ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzMyOUQ5
RTE2QUNENDc4MDAzMTZERTIgLyogV2ViQXJjaGl2ZVJlc291cmNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkFyY2hpdmVSZXNvdXJjZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMzI5RDlGMTZBQ0Q0NzgwMDMxNkRFMiAvKiBXZWJBcmNo
aXZlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXJjaGl2
ZVJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMzI5REE1MTZBQ0U1
QTkwMDMxNkRFMiAvKiBXS1dlYkFyY2hpdmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0tXZWJBcmNoaXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkMzMjlEQTYxNkFDRTVBOTAwMzE2REUyIC8qIFdLV2ViQXJjaGl2ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYkFyY2hpdmUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkMzMjlEQTkxNkFDRTVCRjAwMzE2REUyIC8qIFdLV2ViQXJjaGl2ZVJlc291
cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLV2ViQXJjaGl2
ZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMzMjlEQUExNkFD
RTVDMDAwMzE2REUyIC8qIFdLV2ViQXJjaGl2ZVJlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLV2ViQXJjaGl2ZVJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDMzNERDY3MTIzODQ2NDYwMDM2MEYzRiAvKiBXZWJOdW1iZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTnVtYmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDMzNFMENGMTI0MDhFODYwMDM2MEYzRiAvKiBJbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzM0Uw
RDAxMjQwOEU4NjAwMzYwRjNGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTg1LDYgKzMwMDEsMTAgQEAK
IAkJCQlCQ0IwQjBERjEyMzA1QUIxMDBCMTM0MUUgLyogVXNlck1lc3NhZ2VDb2RlcnMuaCAqLywK
IAkJCQkxQTBGMjlDOTEyMEIzNzE2MDA1M0QxQjkgLyogVmlzaXRlZExpbmtUYWJsZS5jcHAgKi8s
CiAJCQkJMUEwRjI5Q0ExMjBCMzcxNjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rVGFibGUuaCAqLywK
KwkJCQlCQzMyOUQ5OTE2QUNDRTk5MDAzMTZERTIgLyogV2ViQXJjaGl2ZS5jcHAgKi8sCisJCQkJ
QkMzMjlEOUExNkFDQ0U5OTAwMzE2REUyIC8qIFdlYkFyY2hpdmUuaCAqLywKKwkJCQlCQzMyOUQ5
RTE2QUNENDc4MDAzMTZERTIgLyogV2ViQXJjaGl2ZVJlc291cmNlLmNwcCAqLywKKwkJCQlCQzMy
OUQ5RjE2QUNENDc4MDAzMTZERTIgLyogV2ViQXJjaGl2ZVJlc291cmNlLmggKi8sCiAJCQkJNTE4
RDJDQUIxMkQ1MTUzQjAwM0JCOTNCIC8qIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwICovLAog
CQkJCTUxOEQyQ0FDMTJENTE1M0IwMDNCQjkzQiAvKiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgg
Ki8sCiAJCQkJQkNGNTA3MjYxMjQzMjlBQTAwNTk1NUFFIC8qIFdlYkNlcnRpZmljYXRlSW5mby5o
ICovLApAQCAtNDE1MCw2ICs0MTcwLDEwIEBACiAJCQkJQkM0MDc2MjQxMjRGRjA0MDAwNjhGMjBB
IC8qIFdLVVJMUmVxdWVzdE5TLm1tICovLAogCQkJCUJDNDA3NjI1MTI0RkYwNDAwMDY4RjIwQSAv
KiBXS1VSTFJlc3BvbnNlTlMuaCAqLywKIAkJCQlCQzQwNzYyNjEyNEZGMDQwMDA2OEYyMEEgLyog
V0tVUkxSZXNwb25zZU5TLm1tICovLAorCQkJCUJDMzI5REE1MTZBQ0U1QTkwMDMxNkRFMiAvKiBX
S1dlYkFyY2hpdmUuY3BwICovLAorCQkJCUJDMzI5REE2MTZBQ0U1QTkwMDMxNkRFMiAvKiBXS1dl
YkFyY2hpdmUuaCAqLywKKwkJCQlCQzMyOURBOTE2QUNFNUJGMDAzMTZERTIgLyogV0tXZWJBcmNo
aXZlUmVzb3VyY2UuY3BwICovLAorCQkJCUJDMzI5REFBMTZBQ0U1QzAwMDMxNkRFMiAvKiBXS1dl
YkFyY2hpdmVSZXNvdXJjZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtNTMyNyw2ICs1MzUxLDEwIEBACiAJCQkJNTE4MTVCQTAxNkE2
MjIyMTAwNTQ1MDFGIC8qIFN5bmNOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxOUI0RkY1MTZBOUVBOTcwMDY2ODc0RCAvKiBTY2hlZHVsYWJsZUxvYWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTFFNTUyQzUxNkFFMDY1RjAwNEVENjUzIC8qIFNhbmRib3hJbml0
aWFsaXphdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUM1RTFBRkU5MTZCMjBC
NzUwMDZDQzFGMiAvKiBXS1dlYkFyY2hpdmUuaCBpbiBIZWFkZXJzICovLAorCQkJCUM1RTFBRkVC
MTZCMjBCN0UwMDZDQzFGMiAvKiBXS1dlYkFyY2hpdmVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQzVFMUFGRUQxNkIyMTAxNzAwNkNDMUYyIC8qIFdlYkFyY2hpdmUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUM1RTFBRkVGMTZCMjEwMjkwMDZDQzFGMiAvKiBXZWJBcmNoaXZlUmVzb3VyY2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUM0REU3MTZCMUNCRjYwMDk0MjVFMyAvKiBXZWJLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQzMzA2RjE2QjFEOTkx
MDA0RjYwRTcgLyogU3RvcmFnZUFyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4RThF
RjkxNkIyMDkxQzAwRTkxNDI5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC02NDM3LDYgKzY0NjUsMTAgQEAKIAkJCQk1MTgxNUI5RjE2QTYyMjIxMDA1NDUwMUYg
LyogU3luY05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTlC
NEZGNDE2QTlFQTk3MDA2Njg3NEQgLyogU2NoZWR1bGFibGVMb2FkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTFFNTUyQzQxNkFFMDY1RjAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFsaWF0aW9u
UGFyYW1ldGVyc01hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUM1RTFBRkU4MTZCMjBCNjcwMDZD
QzFGMiAvKiBXS1dlYkFyY2hpdmUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzVFMUFGRUExNkIy
MEI3QjAwNkNDMUYyIC8qIFdLV2ViQXJjaGl2ZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUM1RTFBRkVDMTZCMjEwMTIwMDZDQzFGMiAvKiBXZWJBcmNoaXZlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUM1RTFBRkVFMTZCMjEwMjUwMDZDQzFGMiAvKiBXZWJBcmNoaXZlUmVzb3VyY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBQzRERTYxNkIxQ0JGNjAwOTQyNUUzIC8qIFdlYktl
eVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFEMzMwNkUxNkIx
RDk5MTAwNEY2MEU3IC8qIFN0b3JhZ2VBcmVhUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTE4RThFRjgxNkIyMDkxQzAwRTkxNDI5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5jcHAJKHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgiCiAKKyNpbmNsdWRlICJJ
bW11dGFibGVBcnJheS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oIgog
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCIKICNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJXS1N0cmluZy5o
IgorI2luY2x1ZGUgIldlYkRhdGEuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMjUsNCArMTI4LDU0IEBAIHZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpkaWQKICAgICAgICAgbV9jbGllbnQuZGlkQ2hh
bmdlU2VsZWN0aW9uKHRvQVBJKHBhZ2UpLCB0b0FQSShub3RpZmljYXRpb25OYW1lKSwgbV9jbGll
bnQuY2xpZW50SW5mbyk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSogcGFnZSwgUmFuZ2UqIHJhbmdlKQorewor
ICAgIGlmIChtX2NsaWVudC53aWxsV3JpdGVUb1Bhc3RlYm9hcmQpIHsKKyAgICAgICAgUmVmUHRy
PEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUocmFuZ2UpOworICAgICAgICBtX2NsaWVudC53aWxsV3Jp
dGVUb1Bhc3RlYm9hcmQodG9BUEkocGFnZSksIHRvQVBJKHJhbmdlSGFuZGxlLmdldCgpKSwgbV9j
bGllbnQuY2xpZW50SW5mbyk7CisgICAgfQorfQorCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlKiBwYWdlLCBSYW5n
ZSogcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPiA+JiBwYXN0ZWJvYXJkRGF0YSkKK3sKKyAgICBpZiAobV9jbGllbnQuZ2V0
UGFzdGVib2FyZERhdGFGb3JSYW5nZSkgeworICAgICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZT4gcmFuZ2VIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRP
ckNyZWF0ZShyYW5nZSk7CisgICAgICAgIFdLQXJyYXlSZWYgdHlwZXMgPSAwOworICAgICAgICBX
S0FycmF5UmVmIGRhdGEgPSAwOworICAgICAgICBtX2NsaWVudC5nZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKHRvQVBJKHBhZ2UpLCB0b0FQSShyYW5nZUhhbmRsZS5nZXQoKSksICZ0eXBlcywgJmRh
dGEsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgICAgICBSZWZQdHI8SW1tdXRhYmxlQXJyYXk+
IHR5cGVzQXJyYXkgPSBhZG9wdFJlZih0b0ltcGwodHlwZXMpKTsKKyAgICAgICAgUmVmUHRyPElt
bXV0YWJsZUFycmF5PiBkYXRhQXJyYXkgPSBhZG9wdFJlZih0b0ltcGwoZGF0YSkpOworCisgICAg
ICAgIHBhc3RlYm9hcmRUeXBlcy5jbGVhcigpOworICAgICAgICBwYXN0ZWJvYXJkRGF0YS5jbGVh
cigpOworCisgICAgICAgIGlmICghdHlwZXNBcnJheSB8fCAhZGF0YUFycmF5KQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIEFTU0VSVCh0eXBlc0FycmF5LT5zaXplKCkgPT0gZGF0YUFy
cmF5LT5zaXplKCkpOworCisgICAgICAgIHNpemVfdCBzaXplID0gdHlwZXNBcnJheS0+c2l6ZSgp
OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAg
ICAgV2ViU3RyaW5nKiB0eXBlID0gdHlwZXNBcnJheS0+YXQ8V2ViU3RyaW5nPihpKTsKKyAgICAg
ICAgICAgIGlmICh0eXBlKQorICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQo
dHlwZS0+c3RyaW5nKCkpOworICAgICAgICB9CisKKyAgICAgICAgc2l6ZSA9IGRhdGFBcnJheS0+
c2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAg
ICAgICAgICAgV2ViRGF0YSogaXRlbSA9IGRhdGFBcnJheS0+YXQ8V2ViRGF0YT4oaSk7CisgICAg
ICAgICAgICBpZiAoaXRlbSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUo
KSk7CisgICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKGJ1ZmZlcik7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50OjpkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlKiBwYWdlKQoreworICAg
IGlmIChtX2NsaWVudC5kaWRXcml0ZVRvUGFzdGVib2FyZCkKKyAgICAgICAgbV9jbGllbnQuZGlk
V3JpdGVUb1Bhc3RlYm9hcmQodG9BUEkocGFnZSksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMTQxMzM5KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFQSUNsaWVu
dC5oIgogI2luY2x1ZGUgIldLQnVuZGxlUGFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9y
SW5zZXJ0QWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RleHRBZmZpbml0eS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAK
QEAgLTM2LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENTU1N0eWxl
RGVjbGFyYXRpb247CiAgICAgY2xhc3MgTm9kZTsKICAgICBjbGFzcyBSYW5nZTsKKyAgICBjbGFz
cyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTYsNiArNTgsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKFdlYlBhZ2UqLCBTdHJpbmdJbXBsKiBu
b3RpZmljYXRpb25OYW1lKTsKICAgICB2b2lkIGRpZENoYW5nZShXZWJQYWdlKiwgU3RyaW5nSW1w
bCogbm90aWZpY2F0aW9uTmFtZSk7CiAgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViUGFn
ZSosIFN0cmluZ0ltcGwqIG5vdGlmaWNhdGlvbk5hbWUpOworICAgIHZvaWQgd2lsbFdyaXRlVG9Q
YXN0ZWJvYXJkKFdlYlBhZ2UqLCBXZWJDb3JlOjpSYW5nZSopOworICAgIHZvaWQgZ2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShXZWJQYWdlKiwgV2ViQ29yZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
PiYgcGFzdGVib2FyZERhdGEpOworICAgIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFn
ZSopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmgJKHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
NCw2ICsyOTQsOSBAQCB0eXBlZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VTaG91bGREZWxldGVSCiB0
eXBlZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VTaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKShXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiBmcm9tUmFuZ2UsIFdLQnVu
ZGxlUmFuZ2VIYW5kbGVSZWYgdG9SYW5nZSwgV0tBZmZpbml0eVR5cGUgYWZmaW5pdHksIGJvb2wg
c3RpbGxTZWxlY3RpbmcsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiBib29sICgq
V0tCdW5kbGVQYWdlU2hvdWxkQXBwbHlTdHlsZSkoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlQ1NTU3R5bGVEZWNsYXJhdGlvblJlZiBzdHlsZSwgV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiBy
YW5nZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBh
Z2VFZGl0aW5nTm90aWZpY2F0aW9uKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYg
bm90aWZpY2F0aW9uTmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQg
KCpXS0J1bmRsZVBhZ2VXaWxsV3JpdGVUb1Bhc3RlYm9hcmQpKFdLQnVuZGxlUGFnZVJlZiBwYWdl
LCBXS0J1bmRsZVJhbmdlSGFuZGxlUmVmIHJhbmdlLCAgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VHZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiByYW5nZSwgV0tBcnJh
eVJlZiogcGFzdGVib2FyZFR5cGVzLCBXS0FycmF5UmVmKiBwYXN0ZWJvYXJkRGF0YSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRXcml0ZVRv
UGFzdGVib2FyZCkoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OwogCiBzdHJ1Y3QgV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50IHsKICAgICBpbnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZl
cnNpb247CkBAIC0zMDksMTAgKzMxMiwxNCBAQCBzdHJ1Y3QgV0tCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50IHsKICAgICBXS0J1bmRsZVBhZ2VFZGl0aW5nTm90aWZpY2F0aW9uICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpZEVuZEVkaXRpbmc7CiAgICAgV0tCdW5kbGVQYWdlRWRp
dGluZ05vdGlmaWNhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRD
aGFuZ2U7CiAgICAgV0tCdW5kbGVQYWdlRWRpdGluZ05vdGlmaWNhdGlvbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkaWRDaGFuZ2VTZWxlY3Rpb247CisgICAgLy8gVmVyc2lv
biAxLgorICAgIFdLQnVuZGxlUGFnZVdpbGxXcml0ZVRvUGFzdGVib2FyZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkOworICAgIFdLQnVuZGxl
UGFnZUdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRXcml0ZVRv
UGFzdGVib2FyZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFdyaXRlVG9Q
YXN0ZWJvYXJkOwogfTsKIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudCBX
S0J1bmRsZVBhZ2VFZGl0b3JDbGllbnQ7CiAKLWVudW0geyBrV0tCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50Q3VycmVudFZlcnNpb24gPSAwIH07CitlbnVtIHsga1dLQnVuZGxlUGFnZUVkaXRvckNsaWVu
dEN1cnJlbnRWZXJzaW9uID0gMSB9OwogCiAvLyBGb3JtIGNsaWVudAogdHlwZWRlZiB2b2lkICgq
V0tCdW5kbGVQYWdlVGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nQ2FsbGJhY2spKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgaHRtbElucHV0RWxlbWVudEhhbmRsZSwg
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCShyZXZpc2lvbiAxNDEzMzkpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIyMCw3ICsyMjAsMTcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZEVuZEVk
aXRpbmcoKQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9wYWdlLT5pbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudCgpLmRpZFdyaXRlVG9QYXN0ZWJvYXJkKG1fcGFnZSk7Cit9CisKK3Zv
aWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2UpCit7CisgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRs
ZUVkaXRvckNsaWVudCgpLndpbGxXcml0ZVRvUGFzdGVib2FyZChtX3BhZ2UsIHJhbmdlLmdldCgp
KTsKK30KKwordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JiBw
YXN0ZWJvYXJkRGF0YSkKK3sKKyAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50
KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShtX3BhZ2UsIHJhbmdlLmdldCgpLCBwYXN0ZWJv
YXJkVHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRp
ZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgJKHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDkg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oV2Vi
Q29yZTo6RnJhbWUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoUGFzc1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFBhc3NSZWZQdHI8V2ViQ29yZTo6
UmFuZ2U+LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYgcGFzdGVib2FyZERhdGEpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKSBPVkVSUklERTsK
ICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFdlYkNv
cmU6OlVuZG9TdGVwPikgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE0MTQ0NykKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMy0wMS0zMSAgRW5yaWNhIENh
c3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdDI6IHByb3ZpZGUgbmV3
IGJ1bmRsZSBBUElzIHRvIGFsbG93IGJ1bmRsZSBjbGllbnRzIHRvIGJlIG5vdGlmaWVkIG9mIHBh
c3RlYm9hcmQgYWNjZXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA4Mzk2LgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI5MjA0NjE+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICBBZGRzIHN0
dWIgaW1wbGVtZW50YXRpb24gZm9yIFdlYktpdCBvZiB0aGUgbmV3IEVkaXRvckNsaWVudCBtZXRo
b2RzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50Qmxh
Y2tCZXJyeTo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5oOgorCiAyMDEzLTAxLTMwICBFZCBC
YWtlciAgPGVkYmFrZXJAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gU2NyZWVuc2hv
dCBpcyBjbGlwcGVkIHdoZW4gY29udGVudCBpcyBzbWFsbGVyIHRoYW4gdGhlIGRlc2ludGF0aW9u
IHNpemUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRCbGFja0JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAJKHJldmlzaW9u
IDE0MTMzOSkKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDYgKzI1MywxNiBA
QCB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmRpZFdyaXRlU2VsCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAordm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp3aWxsV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JiBwYXN0ZWJvYXJk
RGF0YSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIEVkaXRvckNsaWVudEJs
YWNrQmVycnk6OmRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuaAkocmV2
aXNpb24gMTQxMzM5KQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEJsYWNrQmVycnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksOSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJh
bWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvU2VsZWN0aW9uQXBwZWFyYW5jZUNoYW5n
ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCk7CisgICAgdmlydHVhbCB2b2lk
IHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChXZWJDb3JlOjpSYW5nZSopOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpOworICAgIHZpcnR1YWwg
dm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJhbmdlKiwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+ID4mIHBhc3RlYm9hcmREYXRhKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0U2Vs
ZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVW5k
b1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4pOwogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclJl
ZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNDE0NDcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAxLTMxICBFbnJpY2EgQ2Fz
dWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MjogcHJvdmlkZSBuZXcg
YnVuZGxlIEFQSXMgdG8gYWxsb3cgYnVuZGxlIGNsaWVudHMgdG8gYmUgbm90aWZpZWQgb2YgcGFz
dGVib2FyZCBhY2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDgzOTYuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjkyMDQ2MT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIEFkZHMgc3R1
YiBpbXBsZW1lbnRhdGlvbiBmb3IgV2ViS2l0IG9mIHRoZSBuZXcgRWRpdG9yQ2xpZW50IG1ldGhv
ZHMuCisKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkVkaXRvckNsaWVudEltcGw6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCk6Cisg
ICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OmdldENsaWVudFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpOgorICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmg6CisKIDIwMTMtMDEt
MzEgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgW2No
cm9taXVtXSBNZWRpYVN0cmVhbSBBUEk6IFJlbmFtZSBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3Ig
YW5kIFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50IHRvIFdlYk1lZGlhU3RyZWFtIGFuZCBXZWJNZWRp
YVN0cmVhbVRyYWNrCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGll
bnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0
b3JDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMTQxMzM5KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OSw2ICsy
ODksMTQgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpkaWRXcml0ZVNlbGVjdGlvbgogewogfQog
Cit2b2lkIEVkaXRvckNsaWVudEltcGw6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChX
ZWJDb3JlOjpSYW5nZSopCit7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JiBw
YXN0ZWJvYXJkRGF0YSkKK3sKK30KKwogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpkaWRTZXRTZWxl
Y3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKQogewogfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaAkocmV2aXNpb24gMTQxMzM5KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03NSw3ICs3NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hh
bmdlZENvbnRlbnRzKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rp
b24oV2ViQ29yZTo6RnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpOwor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6
UmFuZ2UqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJD
b3JlOjpSYW5nZSosIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JiBwYXN0ZWJvYXJkRGF0YSk7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpOwogICAgIHZpcnR1YWwg
dm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9T
dGVwPik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDE0NDcpCisrKyBTb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAx
My0wMS0zMSAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgorCisgICAgICAgIFdl
YktpdDI6IHByb3ZpZGUgbmV3IGJ1bmRsZSBBUElzIHRvIGFsbG93IGJ1bmRsZSBjbGllbnRzIHRv
IGJlIG5vdGlmaWVkIG9mIHBhc3RlYm9hcmQgYWNjZXNzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4Mzk2LgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMTI5MjA0NjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4K
KworICAgICAgICBBZGRzIHN0dWIgaW1wbGVtZW50YXRpb24gZm9yIFdlYktpdCBvZiB0aGUgbmV3
IEVkaXRvckNsaWVudCBtZXRob2RzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6d2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVu
dEVmbDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6CisKIDIwMTMtMDEtMzEgIENocmlzdG9waGUgRHVt
ZXogIDxkY2hyaXNAZ21haWwuY29tPgogCiAgICAgICAgIFtFRkxdIERpc2FibGUgV2ViIEludGVu
dHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVm
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gMTQxMzM5KQorKysgU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcy
LDYgKzE3MiwxNCBAQCB2b2lkIEVkaXRvckNsaWVudEVmbDo6ZGlkV3JpdGVTZWxlY3Rpb25UCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBFZGl0b3JDbGllbnRFZmw6OndpbGxXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZChXZWJDb3JlOjpSYW5nZSopCit7Cit9CisKK3ZvaWQgRWRp
dG9yQ2xpZW50RWZsOjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJh
bmdlKiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+ID4mIHBhc3RlYm9hcmREYXRhKQoreworfQorCiB2b2lkIEVkaXRv
ckNsaWVudEVmbDo6ZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50RWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgJKHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDgsNyArMTA4LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9D
aGFuZ2VkQ29udGVudHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVj
dGlvbihGcmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCk7CisgICAgdmly
dHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChXZWJDb3JlOjpSYW5nZSop
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpOworICAg
IHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJh
bmdlKiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+ID4mIHBhc3RlYm9hcmREYXRhKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8VW5kb1N0ZXA+KTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE0MTQ0NykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAxLTMxICBFbnJpY2EgQ2Fz
dWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MjogcHJvdmlkZSBuZXcg
YnVuZGxlIEFQSXMgdG8gYWxsb3cgYnVuZGxlIGNsaWVudHMgdG8gYmUgbm90aWZpZWQgb2YgcGFz
dGVib2FyZCBhY2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDgzOTYuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjkyMDQ2MT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIEFkZHMgc3R1
YiBpbXBsZW1lbnRhdGlvbiBmb3IgV2ViS2l0IG9mIHRoZSBuZXcgRWRpdG9yQ2xpZW50IG1ldGhv
ZHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZCk6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERh
dGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmg6
CisKIDIwMTMtMDEtMzAgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+
CiAKICAgICAgICAgW1RleE1hcF0gUmVtb3ZlIEdyYXBoaWNzTGF5ZXIgaW4gVGV4dHVyZU1hcHBl
ckxheWVyLgpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAxNDEzMzkpCisrKyBTb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yODEsNiArMjgxLDE0IEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpkaWRXcml0ZVNlbGVjdGlvblRv
UGEKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIEVkaXRvckNsaWVudDo6d2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlJhbmdlKikKK3sKK30KKwordm9pZCBF
ZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViQ29yZTo6UmFu
Z2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gPiYgcGFzdGVib2FyZERhdGEpCit7Cit9CisKIHZvaWQgRWRpdG9y
Q2xpZW50OjpkaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRHdGsuaAkocmV2aXNpb24gMTQxMzM5KQorKysgU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTk4LDcgKzk4LDkgQEAgY2xhc3MgRWRpdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkVkaQog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKFdlYkNvcmU6OkZyYW1lKik7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6
OlJhbmdlKiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mIHBhc3RlYm9hcmREYXRhKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpOwogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlclVuZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRv
U3RlcD4pOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTQxMzM5KQorKysgU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTMtMDEtMzAgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWJLaXQyOiBwcm92aWRlIG5ldyBidW5kbGUgQVBJcyB0byBhbGxvdyBidW5kbGUgY2xpZW50cyB0
byBiZSBub3RpZmllZCBvZiBwYXN0ZWJvYXJkIGFjY2Vzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODM5Ni4KKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzEyOTIwNDYxPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3Yu
CisKKyAgICAgICAgQWRkcyBzdHViIGltcGxlbWVudGF0aW9uIGZvciBXZWJLaXQgb2YgdGhlIG5l
dyBFZGl0b3JDbGllbnQgbWV0aG9kcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFG
b3JSYW5nZSk6CisKIDIwMTMtMDEtMjkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDA5ODMuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAkocmV2aXNpb24gMTQxMzM5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDkgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRWRpdGluZygpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChXZWJDb3JlOjpSYW5nZSopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdl
KFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mIHBhc3RlYm9hcmREYXRhKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCkg
T1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIE5TU3RyaW5nKiB1c2VyVmlzaWJsZVN0cmluZyhOU1VS
TCAqKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzExLDYgKzMxMSwxNiBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlkV3JpdGVTZWxl
Y3Rpb25UCiAgICAgW1ttX3dlYlZpZXcgX2VkaXRpbmdEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmll
dzptX3dlYlZpZXcgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQ6W05TUGFzdGVib2FyZCBn
ZW5lcmFsUGFzdGVib2FyZF1dOwogfQogCit2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlJhbmdlKikKK3sKKyAgICAvLyBOb3QgaW1w
bGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCit9CisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+ID4mIHBhc3RlYm9hcmREYXRhKQoreworICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJL
aXQsIG9ubHkgV2ViS2l0Mi4KK30KKwogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZFNldFNlbGVj
dGlvblR5cGVzRm9yUGFzdGVib2FyZCgpCiB7CiAgICAgW1ttX3dlYlZpZXcgX2VkaXRpbmdEZWxl
Z2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQ
YXN0ZWJvYXJkOltOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdXTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNDE0NDcpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAxLTMxICBFbnJpY2EgQ2FzdWNj
aSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MjogcHJvdmlkZSBuZXcgYnVu
ZGxlIEFQSXMgdG8gYWxsb3cgYnVuZGxlIGNsaWVudHMgdG8gYmUgbm90aWZpZWQgb2YgcGFzdGVi
b2FyZCBhY2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDgzOTYuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjkyMDQ2MT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIEFkZHMgc3R1YiBp
bXBsZW1lbnRhdGlvbiBmb3IgV2ViS2l0IG9mIHRoZSBuZXcgRWRpdG9yQ2xpZW50IG1ldGhvZHMu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5o
OgorCiAyMDEzLTAxLTMwICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGln
aWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4IG1pbmltYWwgYnVpbGQgYWZ0ZXIgcjE0MTI1OS4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50UXQuY3BwCShyZXZpc2lvbiAxNDEzMzkpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMzLDYgKzIzMywx
NCBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpkaWRXcml0ZVNlbGVjdGlvblRvCiB7CiB9CiAKK3Zv
aWQgRWRpdG9yQ2xpZW50UXQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChXZWJDb3Jl
OjpSYW5nZSopCit7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50UXQ6OmdldENsaWVudFBhc3RlYm9h
cmREYXRhRm9yUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYgcGFzdGVib2Fy
ZERhdGEpCit7Cit9CisKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmRpZFNldFNlbGVjdGlvblR5cGVz
Rm9yUGFzdGVib2FyZCgpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCShyZXZpc2lvbiAxNDEzMzkpCisrKyBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTczLDcgKzczLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFu
Z2VkQ29udGVudHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlv
bihGcmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCk7CisgICAgdmlydHVh
bCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChXZWJDb3JlOjpSYW5nZSopOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpOworICAgIHZp
cnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJhbmdl
KiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+ID4mIHBhc3RlYm9hcmREYXRhKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
U2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4pOwpJbmRleDogU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTQxNDQ3KQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDEtMzEgIEVucmljYSBDYXN1Y2Np
ICA8ZW5yaWNhQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQyOiBwcm92aWRlIG5ldyBidW5k
bGUgQVBJcyB0byBhbGxvdyBidW5kbGUgY2xpZW50cyB0byBiZSBub3RpZmllZCBvZiBwYXN0ZWJv
YXJkIGFjY2Vzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwODM5Ni4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyOTIwNDYxPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgQWRkcyBzdHViIGlt
cGxlbWVudGF0aW9uIGZvciBXZWJLaXQgb2YgdGhlIG5ldyBFZGl0b3JDbGllbnQgbWV0aG9kcy4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCk6CisgICAg
ICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorCiAyMDEzLTAxLTI5
ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hy
b21pdW1dIENhbm5vdCBjb3B5IHRleHQgd2hlbiBzZWxlY3RpbmcgcmVhZG9ubHkgKG9yIGRpc2Fi
bGVkKSBpbnB1dCBlbGVtZW50cwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCShyZXZpc2lvbiAxNDEzMzkpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjcsNiArMjI3LDE2IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaWRX
cml0ZVNlbGVjdGlvblQKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkVkaXRv
ckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlJhbmdlKikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0
Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiA+JiBwYXN0ZWJvYXJkRGF0YSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lk
IFdlYkVkaXRvckNsaWVudDo6ZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCkKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDE0MTMzOSkKKysrIFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw3ICs1NSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRC
ZWdpbkVkaXRpbmcoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpOworICAgIHZp
cnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2Uq
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3JlOjpS
YW5nZSosIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiA+JiBwYXN0ZWJvYXJkRGF0YSk7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpOwogCiAgICAgdmlydHVhbCB2b2lk
IHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE0MTQ0NykKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDEtMzEgIEVucmljYSBDYXN1Y2NpICA8ZW5y
aWNhQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQyOiBwcm92aWRlIG5ldyBidW5kbGUgQVBJ
cyB0byBhbGxvdyBidW5kbGUgY2xpZW50cyB0byBiZSBub3RpZmllZCBvZiBwYXN0ZWJvYXJkIGFj
Y2Vzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
ODM5Ni4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyOTIwNDYxPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgQWRkcyBzdHViIGltcGxlbWVu
dGF0aW9uIGZvciBXZWJLaXQgb2YgdGhlIG5ldyBFZGl0b3JDbGllbnQgbWV0aG9kcy4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RWRpdG9yQ2xpZW50V2luQ0U6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCk6
CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudFdpbkNFOjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5D
RS5oOgorCiAyMDEzLTAxLTI0ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgV2luQ0UgYnVpbGQgZml4IGFmdGVyIHIxMzkwNzguCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNF
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFdpbkNFLmNwcAkocmV2aXNpb24gMTQxMzM5KQorKysgU291cmNlL1dlYktpdC93
aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzOSw2ICsxMzksMTYgQEAgdm9pZCBFZGl0b3JDbGllbnRXaW5DRTo6ZGlkV3JpdGVTZWxl
Y3RpbwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgRWRpdG9yQ2xpZW50V2luQ0U6
OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChXZWJDb3JlOjpSYW5nZSopCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRXaW5DRTo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JiBw
YXN0ZWJvYXJkRGF0YSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIEVkaXRv
ckNsaWVudFdpbkNFOjpkaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudFdpbkNFLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oCShyZXZpc2lvbiAxNDEzMzkpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRv
Q2hhbmdlZFNlbGVjdGlvbihXZWJDb3JlOjpGcmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRF
bmRFZGl0aW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZChXZWJDb3JlOjpSYW5nZSopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCgpOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mIHBhc3RlYm9hcmREYXRh
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6VW5kb1N0ZXA+KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDE0NDcpCisr
KyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4
IEBACisyMDEzLTAxLTMxICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViS2l0MjogcHJvdmlkZSBuZXcgYnVuZGxlIEFQSXMgdG8gYWxsb3cgYnVuZGxlIGNs
aWVudHMgdG8gYmUgbm90aWZpZWQgb2YgcGFzdGVib2FyZCBhY2Nlc3MuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgzOTYuCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xMjkyMDQ2MT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1
cnlha292LgorCisgICAgICAgIEFkZHMgc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgV2ViS2l0IG9m
IHRoZSBuZXcgRWRpdG9yQ2xpZW50IG1ldGhvZHMuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0
L0VkaXRvckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFd4Ojp3
aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50V3g6OmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdl
YktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaDoKKwogMjAxMy0wMS0yNCAgTWFyayBIYWhuZW5i
ZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIE9iamVjdGl2ZS1DIEFQSTog
UmVuYW1lIEpTVmFsdWUuaC9BUElKU1ZhbHVlLmggdG8gSlNDSlNWYWx1ZS5oL0pTVmFsdWUuaApJ
bmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50
V3guY3BwCShyZXZpc2lvbiAxNDEzMzkpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvRWRpdG9yQ2xpZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzMsNiArMjczLDE2IEBA
IHZvaWQgRWRpdG9yQ2xpZW50V3g6OmRpZFdyaXRlU2VsZWN0aW9uVG8KICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCit2b2lkIEVkaXRvckNsaWVudFd4Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgRWRpdG9yQ2xpZW50V3g6OmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2Vi
Q29yZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYgcGFzdGVib2FyZERhdGEpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBFZGl0b3JDbGllbnRXeDo6ZGlkU2V0U2VsZWN0aW9u
VHlwZXNGb3JQYXN0ZWJvYXJkKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291
cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmgJKHJldmlz
aW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGll
bnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCk7CiAgICAgdmlydHVhbCB2b2lkIHJl
c3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5k
RWRpdGluZygpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoV2ViQ29yZTo6UmFuZ2UqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFG
b3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JiBwYXN0ZWJvYXJkRGF0YSk7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpOwog
CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4p
OwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTQxMzM5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjYgQEAKKzIwMTMtMDEtMzAgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNv
bT4KKworICAgICAgICBXZWJLaXQyOiBwcm92aWRlIG5ldyBidW5kbGUgQVBJcyB0byBhbGxvdyBi
dW5kbGUgY2xpZW50cyB0byBiZSBub3RpZmllZCBvZiBwYXN0ZWJvYXJkIGFjY2Vzcy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODM5Ni4KKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzEyOTIwNDYxPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhl
eSBQcm9za3VyeWFrb3YuCisgICAgICAgIAorICAgICAgICBBZGRpbmcgbmV3IFdlYktpdDIgdGVz
dCB3aXRoIHJlbGV2YW50IGJ1bmRsZSwgdG8gdGVzdCB0aGUgbmV3IEFQSXMuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFzdGVib2FyZE5vdGlmaWNh
dGlvbnMubW06IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkUmVjZWl2ZU1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0SW5qZWN0
ZWRCdW5kbGVDbGllbnQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Q
YXN0ZWJvYXJkTm90aWZpY2F0aW9uc19CdW5kbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFBhc3Rl
Ym9hcmROb3RpZmljYXRpb25zVGVzdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp3aWxsV3Jp
dGVUb1Bhc3RlYm9hcmQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRXcml0ZVRvUGFzdGVib2Fy
ZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQYXN0ZWJvYXJkTm90aWZpY2F0aW9uc1Rlc3Q6
OlBhc3RlYm9hcmROb3RpZmljYXRpb25zVGVzdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQ
YXN0ZWJvYXJkTm90aWZpY2F0aW9uc1Rlc3Q6OmRpZENyZWF0ZVBhZ2UpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9leGVjQ29weS5odG1sOiBBZGRlZC4KKwogMjAxMy0w
MS0zMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0MTIwNS4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxNDEzMzkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTgzLDYg
KzE4Myw5IEBACiAJCUM1MUFGQjk5MTY5RjQ5RkYwMDlDQ0Y2NiAvKiBGaW5kTWF0Y2hlcy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MUFGQjk4MTY5
RjQ5RkYwMDlDQ0Y2NiAvKiBGaW5kTWF0Y2hlcy5tbSAqLzsgfTsKIAkJQzU0MEY3NzYxNTJFNERB
MDAwQTQwQzhDIC8qIFNpbXBsaWZ5TWFya3VwLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzU0MEY3NzUxNTJFNERBMDAwQTQwQzhDIC8qIFNpbXBsaWZ5
TWFya3VwLm1tICovOyB9OwogCQlDNTQwRjc4NDE1MkU1QTlBMDBBNDBDOEMgLyogdmVyYm9zZU1h
cmt1cC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM1NDBGNzgzMTUyRTVBNzgwMEE0MEM4QyAvKiB2ZXJib3NlTWFya3VwLmh0bWwgKi87
IH07CisJCUM1NDIzN0YwMTZCODk1NTgwMEU2MzhGQyAvKiBQYXN0ZWJvYXJkTm90aWZpY2F0aW9u
cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDIz
N0VFMTZCODk1NTgwMEU2MzhGQyAvKiBQYXN0ZWJvYXJkTm90aWZpY2F0aW9ucy5tbSAqLzsgfTsK
KwkJQzU0MjM3RjExNkI4OTU3RDAwRTYzOEZDIC8qIFBhc3RlYm9hcmROb3RpZmljYXRpb25zX0J1
bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
NTQyMzdFRDE2Qjg5NTU4MDBFNjM4RkMgLyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnNfQnVuZGxl
LmNwcCAqLzsgfTsKKwkJQzVFMUFGRkUxNkIyMjFGMTAwNkNDMUYyIC8qIGV4ZWNDb3B5Lmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzVF
MUFGRkQxNkIyMjE3OTAwNkNDMUYyIC8qIGV4ZWNDb3B5Lmh0bWwgKi87IH07CiAJCUNENTQ5N0I0
MTU4NTdGMEMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDk3QjMxNTg1N0YwQzAwQjVCQzMwIC8qIE1lZGlh
VGltZS5jcHAgKi87IH07CiAJCUUxMjIwREEwMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlDYWNo
ZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjIwRDlGMTU1QjI1NDgwMDEzRTJGQyAvKiBN
ZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJ
RTEyMjBEQ0ExNTVCMjhBQTAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291
cmNlTG9hZERlbGVnYXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTEyMjBEQzkxNTVCMjg3RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hl
RGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi87IH07CkBAIC0yMjYsNiAr
MjI5LDcgQEAKIAkJCWRzdFBhdGggPSBUZXN0V2ViS2l0QVBJLnJlc291cmNlczsKIAkJCWRzdFN1
YmZvbGRlclNwZWMgPSA3OwogCQkJZmlsZXMgPSAoCisJCQkJQzVFMUFGRkUxNkIyMjFGMTAwNkND
MUYyIC8qIGV4ZWNDb3B5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMUE5RTUyQzkx
M0U2NUVGNDAwNjkxN0Y1IC8qIDE4LWNoYXJhY3RlcnMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQkzNzkwMjhCOTE0RkFDMjRDMDA3RTZCNDMgLyogYWNjZXB0c0ZpcnN0TW91c2UuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlCNTVGMTFCRTE1MTkxQTA2MDA5MTU5MTYgLyog
QWhlbS50dGYgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC00NTYsNiArNDYwLDkgQEAKIAkJQzUx
QUZCOTgxNjlGNDlGRjAwOUNDRjY2IC8qIEZpbmRNYXRjaGVzLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmluZE1hdGNoZXMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUM1NDBGNzc1MTUyRTREQTAwMEE0MEM4QyAvKiBTaW1wbGlmeU1hcmt1cC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNpbXBsaWZ5TWFya3Vw
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTQwRjc4MzE1MkU1QTc4MDBBNDBD
OEMgLyogdmVyYm9zZU1hcmt1cC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gdmVy
Ym9zZU1hcmt1cC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNTQyMzdFRDE2
Qjg5NTU4MDBFNjM4RkMgLyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnNfQnVuZGxlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhc3RlYm9hcmROb3RpZmljYXRpb25z
X0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM1NDIzN0VFMTZCODk1
NTgwMEU2MzhGQyAvKiBQYXN0ZWJvYXJkTm90aWZpY2F0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3RlYm9hcmROb3RpZmljYXRpb25zLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNUUxQUZGRDE2QjIyMTc5MDA2Q0MxRjIgLyogZXhl
Y0NvcHkuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IGV4ZWNDb3B5Lmh0bWw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTQ5N0IzMTU4NTdGMEMwMEI1QkMzMCAvKiBN
ZWRpYVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFU
aW1lLmNwcDsgcGF0aCA9IFdURi9NZWRpYVRpbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMTIyMEQ5RjE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0
aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyMjBEQzkxNTVCMjg3RDAwMTNFMkZD
IC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjU1LDYg
KzY2Miw4IEBACiAJCQkJQTUxQjY1MDgxNkFERjlCMTAwN0FBNUQ5IC8qIFBhZ2VWaXNpYmlsaXR5
U3RhdGUuY3BwICovLAogCQkJCTUyRTVDRTQ1MTREMjFFOUQwMDNCMkJEOCAvKiBQYXJlbnRGcmFt
ZS5jcHAgKi8sCiAJCQkJNTJFNUNFNDgxNEQyMUVBQjAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lX0J1
bmRsZS5jcHAgKi8sCisJCQkJQzU0MjM3RUUxNkI4OTU1ODAwRTYzOEZDIC8qIFBhc3RlYm9hcmRO
b3RpZmljYXRpb25zLm1tICovLAorCQkJCUM1NDIzN0VEMTZCODk1NTgwMEU2MzhGQyAvKiBQYXN0
ZWJvYXJkTm90aWZpY2F0aW9uc19CdW5kbGUuY3BwICovLAogCQkJCTMzM0I5Q0UxMTI3N0YyMzEw
MEZFRkNFMyAvKiBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwICovLAogCQkJCUY2RkREREQyMTQy
NDFBRDQwMDRGMTcyOSAvKiBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFj
ay5jcHAgKi8sCiAJCQkJQzBCRDY2OUMxMzFEM0NGNzAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNz
VGltZXJEb2VzbnRGaXJlRWFybHkuY3BwICovLApAQCAtNzE2LDYgKzcyNSw3IEBACiAJCQljaGls
ZHJlbiA9ICgKIAkJCQlDMDQ1Rjk0NjEzODVDMkY4MDBDMEYzQ0QgLyogMTgtY2hhcmFjdGVycy5o
dG1sICovLAogCQkJCTc2RTE4MkRFMTU0NzVBODMwMEYxRkFERCAvKiBhdXRvLXN1Ym1pdHRpbmct
Zm9ybS5odG1sICovLAorCQkJCUM1RTFBRkZEMTZCMjIxNzkwMDZDQzFGMiAvKiBleGVjQ29weS5o
dG1sICovLAogCQkJCUJDMkQwMDRBMTJBOUZFQjMwMEU3MzJBMyAvKiBmaWxlLXdpdGgtYW5jaG9y
Lmh0bWwgKi8sCiAJCQkJMUEwMkM4NEIxMjVENEE1RTAwRTNGNEJEIC8qIGZpbmQuaHRtbCAqLywK
IAkJCQlCQ0JEMzcyRTEyNUFCQkU2MDBEMkMyOUYgLyogaWNvbi5wbmcgKi8sCkBAIC0xMDc0LDYg
KzEwODQsNyBAQAogCQkJCUJDOTA5OTVFMTI1NjdCQzEwMDA4Mzc1NiAvKiBXS1N0cmluZy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzkwOTk5NDEyNTZBQ0YxMDAwODM3NTYgLyogV0tTdHJpbmdK
U1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjVBRjU1MDE1RDFFNDhBMDBCMENCNEEg
LyogV1RGU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM1NDIzN0YwMTZCODk1NTgwMEU2
MzhGQyAvKiBQYXN0ZWJvYXJkTm90aWZpY2F0aW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTEw
OSw2ICsxMTIwLDcgQEAKIAkJCQk1MjBCQ0Y0QzE0MUVCMDlFMDA5MzdFQTggLyogV2ViQXJjaGl2
ZV9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzZFMTgyREQxNTQ3NTY5MTAwRjFGQURE
IC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
OTAxRTMzMTQ5MkFGMzkwMDc0QTY2NyAvKiBXS0Nvbm5lY3Rpb25fQnVuZGxlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUM1NDIzN0YxMTZCODk1N0QwMEU2MzhGQyAvKiBQYXN0ZWJvYXJkTm90aWZp
Y2F0aW9uc19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvUGFzdGVib2FyZE5vdGlmaWNhdGlvbnMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1Bhc3RlYm9hcmROb3RpZmljYXRp
b25zLm1tCShyZXZpc2lvbiAwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L1Bhc3RlYm9hcmROb3RpZmljYXRpb25zLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSAiVGVzdC5o
IgorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS1N0cmluZy5oPgorCituYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CisKK3N0YXRpYyBib29sIGZpbmlzaGVkID0gZmFsc2U7CisKK3N0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBX
S1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQoreworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiUGFzdGVib2FyZE5vdGlmaWNhdGlvblRlc3REb25lTWVzc2FnZU5hbWUiKQor
ICAgICAgICAmJiBXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN0YXRpY19jYXN0PFdLU3Ry
aW5nUmVmPihtZXNzYWdlQm9keSksICJkaWRXcml0ZVRvUGFzdGVib2FyZCIpKSB7CisgICAgICAg
IE5TRGF0YSogZGF0YSA9IFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBkYXRhRm9y
VHlwZTpAIkFub3RoZXJBcmNoaXZlUGFzdGVib2FyZFR5cGUiXTsKKyAgICAgICAgRVhQRUNUX05F
KGRhdGEsIChOU0RhdGEqKW5pbCk7CisgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9Cit9
CisKK3N0YXRpYyB2b2lkIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dFJlZiBjb250
ZXh0KQoreworICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IGluamVjdGVkQnVuZGxl
Q2xpZW50OworICAgIG1lbXNldCgmaW5qZWN0ZWRCdW5kbGVDbGllbnQsIDAsIHNpemVvZihpbmpl
Y3RlZEJ1bmRsZUNsaWVudCkpOworICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LnZlcnNpb24gPSAw
OworICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LmNsaWVudEluZm8gPSAwOworICAgIGluamVjdGVk
QnVuZGxlQ2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVj
ZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGU7CisgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRC
dW5kbGVDbGllbnQoY29udGV4dCwgJmluamVjdGVkQnVuZGxlQ2xpZW50KTsKK30KKworVEVTVChX
ZWJLaXQyLCBQYXN0ZWJvYXJkTm90aWZpY2F0aW9ucykKK3sKKyAgICBbW05TUGFzdGVib2FyZCBn
ZW5lcmFsUGFzdGVib2FyZF0gY2xlYXJDb250ZW50c107CisgICAgCisgICAgV0tSZXRhaW5QdHI8
V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5q
ZWN0ZWRCdW5kbGVUZXN0KCJQYXN0ZWJvYXJkTm90aWZpY2F0aW9uc1Rlc3QiKSk7CisgICAgc2V0
SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSk7CisKKyAgICBQbGF0Zm9ybVdlYlZp
ZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLUHJlZmVyZW5j
ZXNSZWY+IHByZWZlcmVuY2VzKEFkb3B0V0ssIFdLUHJlZmVyZW5jZXNDcmVhdGUoKSk7CisgICAg
V0tQcmVmZXJlbmNlc1NldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQocHJlZmVyZW5jZXMu
Z2V0KCksIHRydWUpOworCisgICAgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwID0gV0tQYWdlR2V0
UGFnZUdyb3VwKHdlYlZpZXcucGFnZSgpKTsKKyAgICBXS1BhZ2VHcm91cFNldFByZWZlcmVuY2Vz
KHBhZ2VHcm91cCwgcHJlZmVyZW5jZXMuZ2V0KCkpOworCisgICAgV0tQYWdlTG9hZFVSTCh3ZWJW
aWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgiZXhlY0NvcHki
LCAiaHRtbCIpKS5nZXQoKSk7CisgICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9QYXN0ZWJvYXJkTm90aWZpY2F0aW9uc19CdW5kbGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYXN0ZWJvYXJkTm90aWZpY2F0aW9u
c19CdW5kbGUuY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL1Bhc3RlYm9hcmROb3RpZmljYXRpb25zX0J1bmRsZS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVUZXN0LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgorI2luY2x1ZGUgPFdlYktpdDIvV0tBcnJheS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5k
bGVQYWdlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0u
aD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLV2ViQXJjaGl2ZS5oPgorCituYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CisKK2NsYXNzIFBhc3RlYm9hcmROb3RpZmljYXRpb25zVGVzdCA6IHB1YmxpYyBJ
bmplY3RlZEJ1bmRsZVRlc3QgeworcHVibGljOgorICAgIFBhc3RlYm9hcmROb3RpZmljYXRpb25z
VGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllcik7CisKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmKTsKK307CisKK3N0YXRp
YyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPFBhc3RlYm9hcmROb3RpZmljYXRpb25zVGVz
dD4gcmVnaXN0cmFyKCJQYXN0ZWJvYXJkTm90aWZpY2F0aW9uc1Rlc3QiKTsKKworc3RhdGljIHZv
aWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVJh
bmdlSGFuZGxlUmVmIHJhbmdlLCAgY29uc3Qgdm9pZCopCit7CisgICAgaWYgKCFyYW5nZSkKKyAg
ICAgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnNoYXJl
ZCgpLmJ1bmRsZSgpLCBVdGlsOjp0b1dLKCJQYXN0ZWJvYXJkTm90aWZpY2F0aW9uVGVzdERvbmVN
ZXNzYWdlTmFtZSIpLmdldCgpLCBVdGlsOjp0b1dLKCJ3aWxsV3JpdGV0b1Bhc3RlYm9hcmRGYWls
IikuZ2V0KCkpOworfQorCitzdGF0aWMgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdL
QnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiByYW5nZSwgV0tBcnJheVJlZiog
cGFzdGVib2FyZFR5cGVzLCBXS0FycmF5UmVmKiBwYXN0ZWJvYXJkRGF0YSwgY29uc3Qgdm9pZCop
Cit7CisgICAgV0tUeXBlUmVmIHR5cGVOYW1lID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkFub3RoZXJBcmNoaXZlUGFzdGVib2FyZFR5cGUiKTsKKyAgICAqcGFzdGVib2FyZFR5cGVz
ID0gV0tBcnJheUNyZWF0ZUFkb3B0aW5nVmFsdWVzKCZ0eXBlTmFtZSwgMSk7CisgICAgV0tUeXBl
UmVmIHR5cGVEYXRhID0gV0tXZWJBcmNoaXZlQ29weURhdGEoV0tXZWJBcmNoaXZlQ3JlYXRlRnJv
bVJhbmdlKHJhbmdlKSk7CisgICAgKnBhc3RlYm9hcmREYXRhID0gV0tBcnJheUNyZWF0ZUFkb3B0
aW5nVmFsdWVzKCZ0eXBlRGF0YSwgMSk7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFdyaXRlVG9QYXN0
ZWJvYXJkKFdLQnVuZGxlUGFnZVJlZiwgY29uc3Qgdm9pZCopCit7CisgICAgV0tCdW5kbGVQb3N0
TWVzc2FnZShJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnNoYXJlZCgpLmJ1bmRsZSgpLCBVdGls
Ojp0b1dLKCJQYXN0ZWJvYXJkTm90aWZpY2F0aW9uVGVzdERvbmVNZXNzYWdlTmFtZSIpLmdldCgp
LCBVdGlsOjp0b1dLKCJkaWRXcml0ZVRvUGFzdGVib2FyZCIpLmdldCgpKTsKK30KKworUGFzdGVi
b2FyZE5vdGlmaWNhdGlvbnNUZXN0OjpQYXN0ZWJvYXJkTm90aWZpY2F0aW9uc1Rlc3QoY29uc3Qg
c3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpCisgICAgOiBJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRp
ZmllcikKK3sKK30KKwordm9pZCBQYXN0ZWJvYXJkTm90aWZpY2F0aW9uc1Rlc3Q6OmRpZENyZWF0
ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKK3sgICAgCisg
ICAgV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50IHBhZ2VFZGl0b3JDbGllbnQ7CisKKyAgICBtZW1z
ZXQoJnBhZ2VFZGl0b3JDbGllbnQsIDAsIHNpemVvZihwYWdlRWRpdG9yQ2xpZW50KSk7CisKKyAg
ICBwYWdlRWRpdG9yQ2xpZW50LnZlcnNpb24gPSAxOworICAgIHBhZ2VFZGl0b3JDbGllbnQuY2xp
ZW50SW5mbyA9IHRoaXM7CisgICAgcGFnZUVkaXRvckNsaWVudC53aWxsV3JpdGVUb1Bhc3RlYm9h
cmQgPSB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQ7CisgICAgcGFnZUVkaXRvckNsaWVudC5nZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlID0gZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZTsKKyAgICBwYWdl
RWRpdG9yQ2xpZW50LmRpZFdyaXRlVG9QYXN0ZWJvYXJkID0gZGlkV3JpdGVUb1Bhc3RlYm9hcmQ7
CisKKyAgICBXS0J1bmRsZVBhZ2VTZXRFZGl0b3JDbGllbnQocGFnZSwgJnBhZ2VFZGl0b3JDbGll
bnQpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvZXhlY0NvcHkuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvZXhlY0NvcHkuaHRtbAkocmV2aXNpb24gMCkK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9leGVjQ29weS5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPgorICBmdW5jdGlvbiBkb0NvcHkoKSB7CisgICAgICBkb2N1bWVudC5l
eGVjQ29tbWFuZCgic2VsZWN0QWxsIiwgdHJ1ZSk7CisgICAgICBkb2N1bWVudC5leGVjQ29tbWFu
ZCgiY29weSIpOworICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9uTG9hZD0iZG9Db3B5
KCkiPgorICAgIDxkaXY+SGVsbG8gd29ybGQuPC9kaXY+CisgICAgPGRpdj48Yj5IZWxsbzwvYj48
aT4gd29ybGQ8L2k+PC9kaXY+CisgICAgPGRpdiBzdHlsZT0iYm9yZGVyOiBzb2xpZCByZWQgMXB4
Ij5IZWxsbyB3b3JsZDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="205050"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185829</attachid>
            <date>2013-01-31 11:42:27 -0800</date>
            <delta_ts>2013-01-31 12:06:03 -0800</delta_ts>
            <desc>one more try at making something that builds</desc>
            <filename>pasteboardnotifications.txt</filename>
            <type>text/plain</type>
            <size>96993</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEzLTAxLTMwICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MjogcHJvdmlkZSBu
ZXcgYnVuZGxlIEFQSXMgdG8gYWxsb3cgYnVuZGxlIGNsaWVudHMgdG8gYmUgbm90aWZpZWQgb2Yg
cGFzdGVib2FyZCBhY2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDgzOTYuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjkyMDQ2MT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIEFkZHMg
c3VwcG9ydCBpbiBXZWJDb3JlIHRvIG5ldyBFZGl0b3JDbGllbnQgbWV0aG9kcyB0byBzdXBwb3J0
IHRoZSBtb2RpZmllZAorICAgICAgICBjbGllbnQgYnVuZGxlIEFQSSBpbiBXZWJLaXQyLgorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjdXQpOiBBZGRlZCBjYWxsIHRvIHdpbGxXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZC4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29weSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQpOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuaDogQWRkZWQgZW1wdHkgY2xpZW50IGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGZvciB0aGUgbmV3IG1ldGhvZHMuCisgICAgICAgIChXZWJDb3JlOjpFbXB0eUVkaXRv
ckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNv
cmU6OkVtcHR5RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToK
KyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxl
Y3Rpb25Gb3JUeXBlcyk6IEFkZGVkIGNhbGwgdG8gZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JS
YW5nZS4KKwogMjAxMy0wMS0zMCAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEluZGV4ZWREQjogSURCS2V5UmFuZ2U6OmlzT25seUtleSgpIGRvZXMgcG9pbnRl
ciBlcXVhbGl0eSBjb21wYXJpc29uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24g
MTQxMzM5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTE4Nyw2ICsxODcsNyBAQCBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dEQxRXYKIF9fWk43
V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTlzY3JvbGxSZWN0VG9WaXNpYmxlRVJLTlNfMTBMYXlvdXRS
ZWN0RVJLTlNfMTVTY3JvbGxBbGlnbm1lbnRFUzZfCiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZl
cjEwd3JhcENGRGF0YUVQSzhfX0NGRGF0YQogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXIxMHdy
YXBOU0RhdGFFUDZOU0RhdGEKK19fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyMTJjcmVhdGVDRkRh
dGFFdgogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXIxMmNyZWF0ZU5TRGF0YUV2CiBfX1pON1dl
YkNvcmUxMlNoYXJlZEJ1ZmZlcjI0Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlRVJLTjNXVEY2U3Ry
aW5nRQogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXI2YXBwZW5kRVBLY2oKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgyLDYgKzk4Miw3IEBAIHZv
aWQgRWRpdG9yOjpjdXQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJlZlB0cjxSYW5n
ZT4gc2VsZWN0aW9uID0gc2VsZWN0ZWRSYW5nZSgpOworICAgIHdpbGxXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZChzZWxlY3Rpb24pOwogICAgIGlmIChzaG91bGREZWxldGVSYW5nZShzZWxlY3Rp
b24uZ2V0KCkpKSB7CiAgICAgICAgIHVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVjdGVkQnlFZGl0
aW5nKHRydWUpOwogICAgICAgICBpZiAoZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKG1fZnJhbWUt
PnNlbGVjdGlvbigpLT5zdGFydCgpKSkgewpAQCAtMTAwMyw2ICsxMDA0LDcgQEAgdm9pZCBFZGl0
b3I6OmNvcHkoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgd2lsbFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKHNlbGVjdGVkUmFuZ2UoKSk7CiAgICAgaWYgKGVuY2xvc2luZ1RleHRG
b3JtQ29udHJvbChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQoKSkpIHsKICAgICAgICAgUGFz
dGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVQbGFpblRleHQoc2VsZWN0ZWRUZXh0
KCksCiAgICAgICAgICAgICBjYW5TbWFydENvcHlPckRlbGV0ZSgpID8gUGFzdGVib2FyZDo6Q2Fu
U21hcnRSZXBsYWNlIDogUGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsKQEAgLTEyNzUs
NiArMTI3NywxMiBAQCB2b2lkIEVkaXRvcjo6ZGlkRW5kRWRpdGluZygpCiAgICAgICAgIGNsaWVu
dCgpLT5kaWRFbmRFZGl0aW5nKCk7CiB9CiAKK3ZvaWQgRWRpdG9yOjp3aWxsV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2UpCit7CisgICAgaWYgKGNsaWVu
dCgpKQorICAgICAgICBjbGllbnQoKS0+d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKHJh
bmdlLmdldCgpKTsKK30KKwogdm9pZCBFZGl0b3I6OmRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKCkKIHsKICAgICBpZiAoY2xpZW50KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJ
KHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3Myw2ICsyNzMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZEJl
Z2luRWRpdGluZygpOwogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpOworICAgIHZvaWQgd2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3NSZWZQdHI8UmFuZ2U+KTsKICAgICB2b2lkIGRp
ZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCk7CiAgICAgCiAgICAgdm9pZCBzaG93Rm9udFBh
bmVsKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiAx
NDEzMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0MSw3ICs0NDEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3Bv
bmRUb0NoYW5nZWRDb250ZW50cygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFu
Z2VkU2VsZWN0aW9uKEZyYW1lKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmco
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFJh
bmdlKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiA+Jikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgp
IHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRv
U3RlcD4pIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCShyZXZp
c2lvbiAxNDEzMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIGNsYXNzIEhUTUxFbGVtZW50OwogY2xhc3MgS2V5
Ym9hcmRFdmVudDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5nZTsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFNwZWxsQ2hlY2tlcjsKIGNsYXNzIFN0eWxlUHJvcGVydHlTZXQ7CiBjbGFzcyBU
ZXh0Q2hlY2tlckNsaWVudDsKQEAgLTg5LDcgKzkwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJl
c3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEVuZEVkaXRpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZChSYW5nZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9h
cmREYXRhRm9yUmFuZ2UoUmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gPiYgcGFzdGVib2FyZERhdGEpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCkgPSAwOwogICAg
IAogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+
KSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbQkocmV2aXNpb24gMTQxMzM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4MiwxMCArMTgyLDE5IEBAIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcygKICAgICBpZiAoY29udmVydGVyKQog
ICAgICAgICBhdHRyaWJ1dGVkU3RyaW5nID0gW2NvbnZlcnRlci5nZXQoKSBhdHRyaWJ1dGVkU3Ry
aW5nXTsKICAgICAKLSAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiB0eXBlcyA9ICFwYXN0ZWJvYXJk
VHlwZXMuaXNFbXB0eSgpID8gcGFzdGVib2FyZFR5cGVzIDogc2VsZWN0aW9uUGFzdGVib2FyZFR5
cGVzKGNhblNtYXJ0Q29weU9yRGVsZXRlLCBbYXR0cmlidXRlZFN0cmluZyBjb250YWluc0F0dGFj
aG1lbnRzXSk7CisgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMgPSAhcGFzdGVib2FyZFR5cGVzLmlz
RW1wdHkoKSA/IHBhc3RlYm9hcmRUeXBlcyA6IHNlbGVjdGlvblBhc3RlYm9hcmRUeXBlcyhjYW5T
bWFydENvcHlPckRlbGV0ZSwgW2F0dHJpYnV0ZWRTdHJpbmcgY29udGFpbnNBdHRhY2htZW50c10p
OworCisgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7CisgICAgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+ID4gY2xpZW50RGF0YTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgp
LT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0
ZWRSYW5nZSgpLmdldCgpLCBjbGllbnRUeXBlcywgY2xpZW50RGF0YSk7CisgICAgdHlwZXMuYXBw
ZW5kKGNsaWVudFR5cGVzKTsKKwogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgIGZyYW1l
LT5lZGl0b3IoKS0+Y2xpZW50KCktPmRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgp
OwotICAgIAorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbGllbnRUeXBlcy5zaXplKCk7
ICsraSkKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5zZXRCdWZmZXJGb3JUeXBlKGNsaWVudERhdGFbaV0sIGNsaWVudFR5cGVzW2ldLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKKwogICAgIC8vIFB1dCBIVE1MIG9uIHRoZSBwYXN0ZWJvYXJkLgogICAgIGlm
ICh0eXBlcy5jb250YWlucyhXZWJBcmNoaXZlUGJvYXJkVHlwZSkpCiAgICAgICAgIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShnZXRE
YXRhU2VsZWN0aW9uKGZyYW1lLCBXZWJBcmNoaXZlUGJvYXJkVHlwZSksIFdlYkFyY2hpdmVQYm9h
cmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTMz
OSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDg0IEBACisyMDEzLTAxLTMwICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViS2l0MjogcHJvdmlkZSBuZXcgYnVuZGxlIEFQSXMgdG8gYWxsb3cgYnVuZGxl
IGNsaWVudHMgdG8gYmUgbm90aWZpZWQgb2YgcGFzdGVib2FyZCBhY2Nlc3MuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgzOTYuCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xMjkyMDQ2MT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJv
c2t1cnlha292LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBuZXcgYnVuZGxlIGNsaWVudCBB
UEkgdG8gcmVjZWl2ZSBub3RpZmljYXRpb25zCisgICAgICAgIHJlbGF0aXZlIHRoZSBwYXN0ZWJv
YXJkIGFjdGl2aXR5LiBUaGVyZSBhcmUgMiBuZXcgQVBJIGFkZGVkIHRvCisgICAgICAgIEluamVj
dGVkQnVuZGxlRWRpdG9yQ2xpZW50LCB0byByZWNlaXZlIG5vdGlmaWNhdGlvbiBiZWZvcmUgYW5k
CisgICAgICAgIGFmdGVyIHRoZSBwYXN0ZWJvYXJkIGNvbnRlbnQgaXMgYWRkZWQgYW5kIG9uZSBB
UEkgdG8gcHJvdmlkZQorICAgICAgICBhZGRpdGlvbmFsIGNvbnRlbnQgdG8gYWRkIHRvIHRoZSBw
YXN0ZWJvYXJkLgorICAgICAgICBJbiBvcmRlciB0byBjcmVhdGUgY29udGVudCB0byBhZGQgdG8g
dGhlIHBhc3RlYm9hcmQsIFdLV2ViQXJjaGl2ZVJlZgorICAgICAgICBhbmQgV0tXZWJBcmNoaXZl
UmVzb3VyY2VzUmVmIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgc2V0IG9mIEFQSSBsZXZlbAorICAg
ICAgICBvYmplY3QuCisgICAgICAgIFRoaXMgd29yayBpcyBhIGpvaW50IGVmZm9ydCB3aXRoIFNh
bSBXZWluaWcgd2hvIGNvbnRyaWJ1dGVkIHRoZQorICAgICAgICBzdXBwb3J0IGZvciBXS1dlYkFy
Y2hpdmVSZWYsIFdLV2ViQXJjaGl2ZVJlc291cmNlc1JlZiBhbmQgcmVsYXRlZAorICAgICAgICBm
aWxlcy4gU2FtIGlzIHRoZSBhdXRob3Igb2YgdGhlIGZpcnN0IGNodW5rIG9mIGNoYW5nZXMgbGlz
dGVkIGJlbG93LgorICAgICAgICAKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oOgorICAgICAgICAqIFNoYXJl
ZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlLmNwcDogQWRkZWQuCisgICAgICAgIChXS1dlYkFyY2hp
dmVHZXRUeXBlSUQpOgorICAgICAgICAoV0tXZWJBcmNoaXZlQ3JlYXRlKToKKyAgICAgICAgKFdL
V2ViQXJjaGl2ZUNyZWF0ZVdpdGhEYXRhKToKKyAgICAgICAgKFdLV2ViQXJjaGl2ZUNyZWF0ZUZy
b21SYW5nZSk6CisgICAgICAgIChXS1dlYkFyY2hpdmVDb3B5TWFpblJlc291cmNlKToKKyAgICAg
ICAgKFdLV2ViQXJjaGl2ZUNvcHlTdWJyZXNvdXJjZXMpOgorICAgICAgICAoV0tXZWJBcmNoaXZl
Q29weVN1YmZyYW1lQXJjaGl2ZXMpOgorICAgICAgICAoV0tXZWJBcmNoaXZlQ29weURhdGEpOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlLmg6IEFkZGVkLgorICAgICAg
ICAqIFNoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlUmVzb3VyY2UuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdLV2ViQXJjaGl2ZVJlc291cmNlR2V0VHlwZUlEKToKKyAgICAgICAgKFdLV2ViQXJj
aGl2ZVJlc291cmNlQ3JlYXRlKToKKyAgICAgICAgKFdLV2ViQXJjaGl2ZVJlc291cmNlQ29weURh
dGEpOgorICAgICAgICAoV0tXZWJBcmNoaXZlUmVzb3VyY2VDb3B5VVJMKToKKyAgICAgICAgKFdL
V2ViQXJjaGl2ZVJlc291cmNlQ29weU1JTUVUeXBlKToKKyAgICAgICAgKFdLV2ViQXJjaGl2ZVJl
c291cmNlQ29weVRleHRFbmNvZGluZyk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL21hYy9XS1dl
YkFyY2hpdmVSZXNvdXJjZS5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6
CisgICAgICAgICogU2hhcmVkL1dlYkFyY2hpdmUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJjaGl2ZTo6V2Vi
QXJjaGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFyY2hpdmU6On5XZWJBcmNoaXZlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXJjaGl2ZTo6bWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXJjaGl2ZTo6c3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJjaGl2
ZTo6c3ViZnJhbWVBcmNoaXZlcyk6CisgICAgICAgIChXZWJLaXQ6OnJlbGVhc2VDRkRhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBcmNoaXZlOjpkYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QXJjaGl2ZTo6Y29yZUxlZ2FjeVdlYkFyY2hpdmUpOgorICAgICAgICAqIFNoYXJlZC9XZWJBcmNo
aXZlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBcmNoaXZlOjp0eXBlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQXJjaGl2ZVJlc291cmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJj
aGl2ZVJlc291cmNlOjpXZWJBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJB
cmNoaXZlUmVzb3VyY2U6On5XZWJBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0Ojpy
ZWxlYXNlQ0ZEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRh
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJjaGl2ZVJlc291cmNlOjpVUkwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBcmNoaXZlUmVzb3VyY2U6Ok1JTUVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQXJjaGl2ZVJlc291cmNlOjp0ZXh0RW5jb2RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJB
cmNoaXZlUmVzb3VyY2U6OmNvcmVBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAqIFNoYXJlZC9X
ZWJBcmNoaXZlUmVzb3VyY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFyY2hpdmVS
ZXNvdXJjZTo6dHlwZSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAKKyAgICAgICAgKiBTaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcDogQWRk
ZWQgdmVyc2lvbmluZyB0byBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuCisgICAgICAg
ICogU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRvUGFzdGVi
b2FyZCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpkaWRXcml0ZVRvUGFzdGVib2FyZCk6
IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6
OmRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRp
dG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisK
IDIwMTMtMDEtMzAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzEyNjk1ODI3PiBQUFQ6IE1ha2UgbG9hZGluZyBmaWxlIFVSTHMg
d29yayB3aXRoIGEgc2FuZGJveGVkIE5ldHdvcmtQcm9jZXNzCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcAkocmV2aXNpb24gMTQxMzM5KQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3
LDYgKzc3LDExIEBAIGNvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWcKICAg
ICBzaXplb2YoV0tCdW5kbGVQYWdlRm9ybUNsaWVudCkKIH07CiAKK2NvbnN0IHNpemVfdCBBUElD
bGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Pjo6aW50ZXJmYWNlU2l6ZXNCeVZl
cnNpb25bXSA9IHsKKyAgICBvZmZzZXRvZihXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnQsIHdpbGxX
cml0ZVRvUGFzdGVib2FyZCksCisgICAgc2l6ZW9mKFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudCkK
K307CisKIGNvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlVUlDbGllbnQ+
OjppbnRlcmZhY2VTaXplc0J5VmVyc2lvbltdID0gewogICAgIG9mZnNldG9mKFdLQnVuZGxlUGFn
ZVVJQ2xpZW50LCBkaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSksCiAgICAgc2l6
ZW9mKFdLQnVuZGxlUGFnZVVJQ2xpZW50KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SUNsaWVudFRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElD
bGllbnRUcmFpdHMuaAkocmV2aXNpb24gMTQxMzM5KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSUNsaWVudFRyYWl0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSwxMCBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kCiAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBpbnRlcmZhY2VTaXplc0J5VmVyc2lvblsyXTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0
IEFQSUNsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnQ+IHsKKyAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGludGVyZmFjZVNpemVzQnlWZXJzaW9uWzJdOworfTsKKwogdGVtcGxhdGU8
PiBzdHJ1Y3QgQVBJQ2xpZW50VHJhaXRzPFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50PiB7
CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbnRlcmZhY2VTaXplc0J5VmVyc2lvblsyXTsKIH07
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCShyZXZpc2lvbiAxNDEzMzkpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYg
KzU3LDggQEAgcHVibGljOgogICAgICAgICBUeXBlVVJMUmVxdWVzdCwKICAgICAgICAgVHlwZVVS
TFJlc3BvbnNlLAogICAgICAgICBUeXBlVXNlckNvbnRlbnRVUkxQYXR0ZXJuLAorICAgICAgICBU
eXBlV2ViQXJjaGl2ZSwKKyAgICAgICAgVHlwZVdlYkFyY2hpdmVSZXNvdXJjZSwKIAogICAgICAg
ICAvLyBCYXNlIG51bWVyaWMgdHlwZXMKICAgICAgICAgVHlwZUJvb2xlYW4sCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQXJjaGl2ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkFyY2hpdmUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkFyY2hpdmUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBcmNoaXZlLmgi
CisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2lu
Y2x1ZGUgIldlYkFyY2hpdmVSZXNvdXJjZS5oIgorI2luY2x1ZGUgIldlYkRhdGEuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
UGFzc1JlZlB0cjxXZWJBcmNoaXZlPiBXZWJBcmNoaXZlOjpjcmVhdGUoV2ViQXJjaGl2ZVJlc291
cmNlKiBtYWluUmVzb3VyY2UsIEltbXV0YWJsZUFycmF5KiBzdWJyZXNvdXJjZXMsIEltbXV0YWJs
ZUFycmF5KiBzdWJmcmFtZUFyY2hpdmVzKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
QXJjaGl2ZShtYWluUmVzb3VyY2UsIHN1YnJlc291cmNlcywgc3ViZnJhbWVBcmNoaXZlcykpOwor
fQorCitQYXNzUmVmUHRyPFdlYkFyY2hpdmU+IFdlYkFyY2hpdmU6OmNyZWF0ZShXZWJEYXRhKiBk
YXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQXJjaGl2ZShkYXRhKSk7Cit9CisK
K1Bhc3NSZWZQdHI8V2ViQXJjaGl2ZT4gV2ViQXJjaGl2ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gbGVnYWN5V2ViQXJjaGl2ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYkFyY2hpdmUobGVnYWN5V2ViQXJjaGl2ZSkpOworfQorCitQYXNzUmVmUHRyPFdlYkFy
Y2hpdmU+IFdlYkFyY2hpdmU6OmNyZWF0ZShSYW5nZSogcmFuZ2UpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJBcmNoaXZlKExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShyYW5nZSkpKTsK
K30KKworV2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZShXZWJBcmNoaXZlUmVzb3VyY2UqIG1haW5SZXNv
dXJjZSwgSW1tdXRhYmxlQXJyYXkqIHN1YnJlc291cmNlcywgSW1tdXRhYmxlQXJyYXkqIHN1YmZy
YW1lQXJjaGl2ZXMpCisgICAgOiBtX2NhY2hlZE1haW5SZXNvdXJjZShtYWluUmVzb3VyY2UpCisg
ICAgLCBtX2NhY2hlZFN1YnJlc291cmNlcyhzdWJyZXNvdXJjZXMpCisgICAgLCBtX2NhY2hlZFN1
YmZyYW1lQXJjaGl2ZXMoc3ViZnJhbWVBcmNoaXZlcykKK3sKKyAgICBSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiBjb3JlTWFpblJlc291cmNlID0gbV9jYWNoZWRNYWluUmVzb3VyY2UtPmNvcmVBcmNo
aXZlUmVzb3VyY2UoKTsKKworICAgIFZlY3RvcjxQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
PiBjb3JlQXJjaGl2ZVJlc291cmNlczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2Fj
aGVkU3VicmVzb3VyY2VzLT5zaXplKCk7ICsraSkgeworICAgICAgICBSZWZQdHI8V2ViQXJjaGl2
ZVJlc291cmNlPiByZXNvdXJjZSA9IG1fY2FjaGVkU3VicmVzb3VyY2VzLT5hdDxXZWJBcmNoaXZl
UmVzb3VyY2U+KGkpOworICAgICAgICBBU1NFUlQocmVzb3VyY2UpOworICAgICAgICBjb3JlQXJj
aGl2ZVJlc291cmNlcy5hcHBlbmQocmVzb3VyY2UtPmNvcmVBcmNoaXZlUmVzb3VyY2UoKSk7Cisg
ICAgfQorCisgICAgVmVjdG9yPFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gPiBjb3JlU3Vi
ZnJhbWVMZWdhY3lXZWJBcmNoaXZlczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2Fj
aGVkU3ViZnJhbWVBcmNoaXZlcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPFdlYkFy
Y2hpdmU+IHN1YmZyYW1lV2ViQXJjaGl2ZSA9IG1fY2FjaGVkU3ViZnJhbWVBcmNoaXZlcy0+YXQ8
V2ViQXJjaGl2ZT4oaSk7CisgICAgICAgIEFTU0VSVChzdWJmcmFtZVdlYkFyY2hpdmUpOworICAg
ICAgICBjb3JlU3ViZnJhbWVMZWdhY3lXZWJBcmNoaXZlcy5hcHBlbmQoc3ViZnJhbWVXZWJBcmNo
aXZlLT5jb3JlTGVnYWN5V2ViQXJjaGl2ZSgpKTsKKyAgICB9CisKKyAgICBtX2xlZ2FjeVdlYkFy
Y2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29yZU1haW5SZXNvdXJjZS5yZWxlYXNl
KCksIGNvcmVBcmNoaXZlUmVzb3VyY2VzLCBjb3JlU3ViZnJhbWVMZWdhY3lXZWJBcmNoaXZlcyk7
Cit9CisKK1dlYkFyY2hpdmU6OldlYkFyY2hpdmUoV2ViRGF0YSogZGF0YSkKK3sKKyAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLT5ieXRl
cygpLCBkYXRhLT5zaXplKCkpOworICAgIG1fbGVnYWN5V2ViQXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZShidWZmZXIuZ2V0KCkpOworfQorCitXZWJBcmNoaXZlOjpXZWJBcmNoaXZl
KFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gbGVnYWN5V2ViQXJjaGl2ZSkKKyAgICA6IG1f
bGVnYWN5V2ViQXJjaGl2ZShsZWdhY3lXZWJBcmNoaXZlKQoreworfQorCitXZWJBcmNoaXZlOjp+
V2ViQXJjaGl2ZSgpCit7Cit9CisKK1dlYkFyY2hpdmVSZXNvdXJjZSogV2ViQXJjaGl2ZTo6bWFp
blJlc291cmNlKCkKK3sKKyAgICBpZiAoIW1fY2FjaGVkTWFpblJlc291cmNlKQorICAgICAgICBt
X2NhY2hlZE1haW5SZXNvdXJjZSA9IFdlYkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKG1fbGVnYWN5
V2ViQXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOworICAgIHJldHVybiBtX2NhY2hlZE1haW5SZXNv
dXJjZS5nZXQoKTsKK30KKworSW1tdXRhYmxlQXJyYXkqIFdlYkFyY2hpdmU6OnN1YnJlc291cmNl
cygpCit7CisgICAgaWYgKCFtX2NhY2hlZFN1YnJlc291cmNlcykgeworICAgICAgICBWZWN0b3I8
UmVmUHRyPEFQSU9iamVjdD4gPiBzdWJyZXNvdXJjZXM7CisgICAgICAgIHN1YnJlc291cmNlcy5y
ZXNlcnZlQ2FwYWNpdHkobV9sZWdhY3lXZWJBcmNoaXZlLT5zdWJyZXNvdXJjZXMoKS5zaXplKCkp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZWdhY3lXZWJBcmNoaXZlLT5z
dWJyZXNvdXJjZXMoKS5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHN1YnJlc291cmNlcy5hcHBl
bmQoV2ViQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUobV9sZWdhY3lXZWJBcmNoaXZlLT5zdWJyZXNv
dXJjZXMoKVtpXS5nZXQoKSkpOworCisgICAgICAgIG1fY2FjaGVkU3VicmVzb3VyY2VzID0gSW1t
dXRhYmxlQXJyYXk6OmFkb3B0KHN1YnJlc291cmNlcyk7CisgICAgfQorCisgICAgcmV0dXJuIG1f
Y2FjaGVkU3VicmVzb3VyY2VzLmdldCgpOworfQorCitJbW11dGFibGVBcnJheSogV2ViQXJjaGl2
ZTo6c3ViZnJhbWVBcmNoaXZlcygpCit7CisgICAgaWYgKCFtX2NhY2hlZFN1YmZyYW1lQXJjaGl2
ZXMpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+ID4gc3ViZnJhbWVXZWJBcmNo
aXZlczsKKyAgICAgICAgc3ViZnJhbWVXZWJBcmNoaXZlcy5yZXNlcnZlQ2FwYWNpdHkobV9sZWdh
Y3lXZWJBcmNoaXZlLT5zdWJmcmFtZUFyY2hpdmVzKCkuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVnYWN5V2ViQXJjaGl2ZS0+c3ViZnJhbWVBcmNoaXZlcygp
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgc3ViZnJhbWVXZWJBcmNoaXZlcy5hcHBlbmQoV2Vi
QXJjaGl2ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PExlZ2FjeVdlYkFyY2hpdmUqPihtX2xlZ2FjeVdl
YkFyY2hpdmUtPnN1YmZyYW1lQXJjaGl2ZXMoKVtpXS5nZXQoKSkpKTsKKworICAgICAgICBtX2Nh
Y2hlZFN1YmZyYW1lQXJjaGl2ZXMgPSBJbW11dGFibGVBcnJheTo6YWRvcHQoc3ViZnJhbWVXZWJB
cmNoaXZlcyk7CisgICAgfQorCisgICAgcmV0dXJuIG1fY2FjaGVkU3ViZnJhbWVBcmNoaXZlcy5n
ZXQoKTsKK30KKworc3RhdGljIHZvaWQgcmVsZWFzZUNGRGF0YSh1bnNpZ25lZCBjaGFyKiwgY29u
c3Qgdm9pZCogZGF0YSkKK3sKKyAgICAvLyBCYWxhbmNlZCBieSBDRlJldGFpbiBpbiBXZWJBcmNo
aXZlOjpkYXRhKCkuCisgICAgQ0ZSZWxlYXNlKGRhdGEpOworfQorCitQYXNzUmVmUHRyPFdlYkRh
dGE+IFdlYkFyY2hpdmU6OmRhdGEoKQoreworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJhd0Rh
dGFSZXByZXNlbnRhdGlvbiA9IG1fbGVnYWN5V2ViQXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0
aW9uKCk7CisKKyAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZUNGRGF0YS4K
KyAgICBDRlJldGFpbihyYXdEYXRhUmVwcmVzZW50YXRpb24uZ2V0KCkpOworCisgICAgcmV0dXJu
IFdlYkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKENGRGF0YUdldEJ5dGVQdHIocmF3RGF0YVJl
cHJlc2VudGF0aW9uLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKHJhd0RhdGFSZXByZXNlbnRhdGlv
bi5nZXQoKSksIHJlbGVhc2VDRkRhdGEsIHJhd0RhdGFSZXByZXNlbnRhdGlvbi5nZXQoKSk7Cit9
CisKK0xlZ2FjeVdlYkFyY2hpdmUqIFdlYkFyY2hpdmU6OmNvcmVMZWdhY3lXZWJBcmNoaXZlKCkK
K3sKKyAgICByZXR1cm4gbV9sZWdhY3lXZWJBcmNoaXZlLmdldCgpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJBcmNoaXZlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkFyY2hpdmUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJBcmNoaXZlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYkFyY2hpdmVfaAorI2RlZmluZSBXZWJBcmNoaXZlX2gKKworI2lmIFBMQVRGT1JN
KE1BQykKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBMZWdhY3lXZWJBcmNoaXZlOworY2xhc3MgUmFuZ2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBJbW11dGFibGVBcnJheTsKK2NsYXNzIFdlYkFyY2hpdmVSZXNvdXJjZTsKK2Ns
YXNzIFdlYkRhdGE7CisKK2NsYXNzIFdlYkFyY2hpdmUgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZVdlYkFyY2hpdmU7Cisg
ICAgdmlydHVhbCB+V2ViQXJjaGl2ZSgpOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQXJj
aGl2ZT4gY3JlYXRlKFdlYkFyY2hpdmVSZXNvdXJjZSogbWFpblJlc291cmNlLCBJbW11dGFibGVB
cnJheSogc3VicmVzb3VyY2VzLCBJbW11dGFibGVBcnJheSogc3ViZnJhbWVBcmNoaXZlcyk7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQXJjaGl2ZT4gY3JlYXRlKFdlYkRhdGEqKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJBcmNoaXZlPiBjcmVhdGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpM
ZWdhY3lXZWJBcmNoaXZlPik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQXJjaGl2ZT4gY3Jl
YXRlKFdlYkNvcmU6OlJhbmdlKik7CisKKyAgICBXZWJBcmNoaXZlUmVzb3VyY2UqIG1haW5SZXNv
dXJjZSgpOworICAgIEltbXV0YWJsZUFycmF5KiBzdWJyZXNvdXJjZXMoKTsKKyAgICBJbW11dGFi
bGVBcnJheSogc3ViZnJhbWVBcmNoaXZlcygpOworCisgICAgUGFzc1JlZlB0cjxXZWJEYXRhPiBk
YXRhKCk7CisKKyAgICBXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlKiBjb3JlTGVnYWN5V2ViQXJj
aGl2ZSgpOworCitwcml2YXRlOgorICAgIFdlYkFyY2hpdmUoV2ViQXJjaGl2ZVJlc291cmNlKiBt
YWluUmVzb3VyY2UsIEltbXV0YWJsZUFycmF5KiBzdWJyZXNvdXJjZXMsIEltbXV0YWJsZUFycmF5
KiBzdWJmcmFtZUFyY2hpdmVzKTsKKyAgICBXZWJBcmNoaXZlKFdlYkRhdGEqKTsKKyAgICBXZWJB
cmNoaXZlKFBhc3NSZWZQdHI8V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZT4pOworCisgICAgdmly
dHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBSZWZQdHI8
V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZT4gbV9sZWdhY3lXZWJBcmNoaXZlOworICAgIFJlZlB0
cjxXZWJBcmNoaXZlUmVzb3VyY2U+IG1fY2FjaGVkTWFpblJlc291cmNlOworICAgIFJlZlB0cjxJ
bW11dGFibGVBcnJheT4gbV9jYWNoZWRTdWJyZXNvdXJjZXM7CisgICAgUmVmUHRyPEltbXV0YWJs
ZUFycmF5PiBtX2NhY2hlZFN1YmZyYW1lQXJjaGl2ZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKworI2VuZGlmIC8vIFdlYkFyY2hpdmVf
aApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkFyY2hpdmVSZXNvdXJjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkFyY2hpdmVSZXNvdXJjZS5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQXJjaGl2ZVJlc291cmNl
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXJjaGl2ZVJlc291cmNlLmgiCisKKyNpZiBQTEFU
Rk9STShNQUMpCisKKyNpbmNsdWRlICJXZWJEYXRhLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BcmNo
aXZlUmVzb3VyY2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworUGFzc1JlZlB0cjxXZWJBcmNoaXZlUmVzb3VyY2U+IFdlYkFyY2hpdmVSZXNvdXJj
ZTo6Y3JlYXRlKFdlYkRhdGEqIGRhdGEsIGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZykKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYkFyY2hpdmVSZXNvdXJjZShkYXRhLCBVUkwsIE1JTUVUeXBlLCB0ZXh0RW5j
b2RpbmcpKTsKK30KKworUGFzc1JlZlB0cjxXZWJBcmNoaXZlUmVzb3VyY2U+IFdlYkFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBhcmNoaXZlUmVzb3Vy
Y2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJBcmNoaXZlUmVzb3VyY2UoYXJjaGl2
ZVJlc291cmNlKSk7Cit9CisKK1dlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNl
KFdlYkRhdGEqIGRhdGEsIGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBl
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZykKKyAgICA6IG1fYXJjaGl2ZVJlc291cmNlKEFy
Y2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEtPmJ5dGVzKCks
IGRhdGEtPnNpemUoKSksIEtVUkwoS1VSTCgpLCBVUkwpLCBNSU1FVHlwZSwgdGV4dEVuY29kaW5n
LCBTdHJpbmcoKSkpCit7Cit9CisKK1dlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291
cmNlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBhcmNoaXZlUmVzb3VyY2UpCisgICAgOiBt
X2FyY2hpdmVSZXNvdXJjZShhcmNoaXZlUmVzb3VyY2UpCit7Cit9CisKK1dlYkFyY2hpdmVSZXNv
dXJjZTo6fldlYkFyY2hpdmVSZXNvdXJjZSgpCit7Cit9CisKK3N0YXRpYyB2b2lkIHJlbGVhc2VD
RkRhdGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgLy8gQmFsYW5j
ZWQgYnkgQ0ZSZXRhaW4gaW4gV2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKCkuCisgICAgQ0ZSZWxl
YXNlKGRhdGEpOworfQorCitQYXNzUmVmUHRyPFdlYkRhdGE+IFdlYkFyY2hpdmVSZXNvdXJjZTo6
ZGF0YSgpCit7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gYWRvcHRDRihtX2Fy
Y2hpdmVSZXNvdXJjZS0+ZGF0YSgpLT5jcmVhdGVDRkRhdGEoKSk7CisKKyAgICAvLyBCYWxhbmNl
ZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZUNGRGF0YS4KKyAgICBDRlJldGFpbihjZkRhdGEuZ2V0
KCkpOworCisgICAgcmV0dXJuIFdlYkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKENGRGF0YUdl
dEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSksIHJl
bGVhc2VDRkRhdGEsIGNmRGF0YS5nZXQoKSk7Cit9CisKK1N0cmluZyBXZWJBcmNoaXZlUmVzb3Vy
Y2U6OlVSTCgpCit7CisgICAgcmV0dXJuIG1fYXJjaGl2ZVJlc291cmNlLT51cmwoKS5zdHJpbmco
KTsKK30KKworU3RyaW5nIFdlYkFyY2hpdmVSZXNvdXJjZTo6TUlNRVR5cGUoKQoreworICAgIHJl
dHVybiBtX2FyY2hpdmVSZXNvdXJjZS0+bWltZVR5cGUoKTsKK30KKworU3RyaW5nIFdlYkFyY2hp
dmVSZXNvdXJjZTo6dGV4dEVuY29kaW5nKCkKK3sKKyAgICByZXR1cm4gbV9hcmNoaXZlUmVzb3Vy
Y2UtPnRleHRFbmNvZGluZygpOworfQorCitBcmNoaXZlUmVzb3VyY2UqIFdlYkFyY2hpdmVSZXNv
dXJjZTo6Y29yZUFyY2hpdmVSZXNvdXJjZSgpCit7CisgICAgcmV0dXJuIG1fYXJjaGl2ZVJlc291
cmNlLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRG
T1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZlUmVzb3VyY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQXJjaGl2ZVJlc291cmNl
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQXJjaGl2ZVJlc291
cmNlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYkFyY2hpdmVSZXNvdXJjZV9oCisjZGVmaW5lIFdlYkFyY2hpdmVSZXNvdXJjZV9oCisKKyNp
ZiBQTEFURk9STShNQUMpCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBBcmNoaXZlUmVzb3VyY2U7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJEYXRhOworY2xhc3MgV2ViU3RyaW5n
OworY2xhc3MgV2ViVVJMOworCitjbGFzcyBXZWJBcmNoaXZlUmVzb3VyY2UgOiBwdWJsaWMgQVBJ
T2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZVdl
YkFyY2hpdmVSZXNvdXJjZTsKKyAgICB2aXJ0dWFsIH5XZWJBcmNoaXZlUmVzb3VyY2UoKTsKKwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFdlYkRhdGEq
LCBjb25zdCBTdHJpbmcmIFVSTCwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5n
JiB0ZXh0RW5jb2RpbmcpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkFyY2hpdmVSZXNvdXJj
ZT4gY3JlYXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlPik7CisKKyAgICBQ
YXNzUmVmUHRyPFdlYkRhdGE+IGRhdGEoKTsKKyAgICBTdHJpbmcgVVJMKCk7CisgICAgU3RyaW5n
IE1JTUVUeXBlKCk7CisgICAgU3RyaW5nIHRleHRFbmNvZGluZygpOworCisgICAgV2ViQ29yZTo6
QXJjaGl2ZVJlc291cmNlKiBjb3JlQXJjaGl2ZVJlc291cmNlKCk7CisKK3ByaXZhdGU6CisgICAg
V2ViQXJjaGl2ZVJlc291cmNlKFdlYkRhdGEqLCBjb25zdCBTdHJpbmcmIFVSTCwgY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcpOworICAgIFdlYkFyY2hp
dmVSZXNvdXJjZShQYXNzUmVmUHRyPFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZT4pOworCisgICAg
dmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlPiBtX2FyY2hpdmVSZXNvdXJjZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCisjZW5kaWYg
Ly8gV2ViQXJjaGl2ZVJlc291cmNlX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tC
YXNlLmgJKHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsOCBAQCB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS1VSTCogV0tVUkxSCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1VS
TFJlcXVlc3QqIFdLVVJMUmVxdWVzdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdL
VVJMUmVzcG9uc2UqIFdLVVJMUmVzcG9uc2VSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS1VzZXJDb250ZW50VVJMUGF0dGVybiogV0tVc2VyQ29udGVudFVSTFBhdHRlcm5SZWY7Cit0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYkFyY2hpdmUqIFdLV2ViQXJjaGl2ZVJlZjsK
K3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLV2ViQXJjaGl2ZVJlc291cmNlKiBXS1dlYkFy
Y2hpdmVSZXNvdXJjZVJlZjsKIAogZW51bSBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgewog
ICAgIGtXS0luamVjdEluQWxsRnJhbWVzLApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLU2hhcmVkQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkocmV2aXNpb24gMTQxMzM5KQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Miw2ICs2Miw4IEBAIGNsYXNzIEltbXV0YWJsZUFycmF5OwogY2xhc3MgSW1tdXRhYmxlRGljdGlv
bmFyeTsKIGNsYXNzIE11dGFibGVBcnJheTsKIGNsYXNzIE11dGFibGVEaWN0aW9uYXJ5OworY2xh
c3MgV2ViQXJjaGl2ZTsKK2NsYXNzIFdlYkFyY2hpdmVSZXNvdXJjZTsKIGNsYXNzIFdlYkNlcnRp
ZmljYXRlSW5mbzsKIGNsYXNzIFdlYkNvbm5lY3Rpb247CiBjbGFzcyBXZWJDb250ZXh0TWVudUl0
ZW07CkBAIC0xMTAsNiArMTEyLDExIEBAIFdLX0FERF9BUElfTUFQUElORyhXS1VSTFJlcXVlc3RS
ZWYsIFdlYlUKIFdLX0FERF9BUElfTUFQUElORyhXS1VSTFJlc3BvbnNlUmVmLCBXZWJVUkxSZXNw
b25zZSkKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJDb250ZW50VVJMUGF0dGVyblJlZiwgV2Vi
VXNlckNvbnRlbnRVUkxQYXR0ZXJuKQogCisjaWYgUExBVEZPUk0oTUFDKQorV0tfQUREX0FQSV9N
QVBQSU5HKFdLV2ViQXJjaGl2ZVJlZiwgV2ViQXJjaGl2ZSkKK1dLX0FERF9BUElfTUFQUElORyhX
S1dlYkFyY2hpdmVSZXNvdXJjZVJlZiwgV2ViQXJjaGl2ZVJlc291cmNlKQorI2VuZGlmCisKIHRl
bXBsYXRlPHR5cGVuYW1lIEltcGxUeXBlLCB0eXBlbmFtZSBBUElUeXBlID0gdHlwZW5hbWUgSW1w
bFR5cGVJbmZvPEltcGxUeXBlKj46OkFQSVR5cGU+CiBjbGFzcyBQcm94eWluZ1JlZlB0ciB7CiBw
dWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1dl
YkFyY2hpdmUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L21hYy9XS1dlYkFyY2hpdmUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLV2ViQXJjaGl2ZS5oIgor
CisjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlLmgiCisjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tT
aGFyZWRBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViQXJjaGl2ZS5oIgorI2luY2x1ZGUgIldlYkFy
Y2hpdmVSZXNvdXJjZS5oIgorI2luY2x1ZGUgIldlYkRhdGEuaCIKKwordXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKKworV0tUeXBlSUQgV0tXZWJBcmNoaXZlR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1
cm4gdG9BUEkoV2ViQXJjaGl2ZTo6QVBJVHlwZSk7Cit9CisKK1dLV2ViQXJjaGl2ZVJlZiBXS1dl
YkFyY2hpdmVDcmVhdGUoV0tXZWJBcmNoaXZlUmVzb3VyY2VSZWYgbWFpblJlc291cmNlUmVmLCBX
S0FycmF5UmVmIHN1YnJlc291cmNlc1JlZiwgV0tBcnJheVJlZiBzdWJmcmFtZUFyY2hpdmVzUmVm
KQoreworICAgIFJlZlB0cjxXZWJBcmNoaXZlPiB3ZWJBcmNoaXZlID0gV2ViQXJjaGl2ZTo6Y3Jl
YXRlKHRvSW1wbChtYWluUmVzb3VyY2VSZWYpLCB0b0ltcGwoc3VicmVzb3VyY2VzUmVmKSwgdG9J
bXBsKHN1YmZyYW1lQXJjaGl2ZXNSZWYpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViQXJjaGl2ZS5y
ZWxlYXNlKCkubGVha1JlZigpKTsKK30KKworV0tXZWJBcmNoaXZlUmVmIFdLV2ViQXJjaGl2ZUNy
ZWF0ZVdpdGhEYXRhKFdLRGF0YVJlZiBkYXRhUmVmKQoreworICAgIFJlZlB0cjxXZWJBcmNoaXZl
PiB3ZWJBcmNoaXZlID0gV2ViQXJjaGl2ZTo6Y3JlYXRlKHRvSW1wbChkYXRhUmVmKSk7CisgICAg
cmV0dXJuIHRvQVBJKHdlYkFyY2hpdmUucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cit9CisKK1dLV2Vi
QXJjaGl2ZVJlZiBXS1dlYkFyY2hpdmVDcmVhdGVGcm9tUmFuZ2UoV0tCdW5kbGVSYW5nZUhhbmRs
ZVJlZiByYW5nZUhhbmRsZVJlZikKK3sKKyAgICBSZWZQdHI8V2ViQXJjaGl2ZT4gd2ViQXJjaGl2
ZSA9IFdlYkFyY2hpdmU6OmNyZWF0ZSh0b0ltcGwocmFuZ2VIYW5kbGVSZWYpLT5jb3JlUmFuZ2Uo
KSk7CisgICAgcmV0dXJuIHRvQVBJKHdlYkFyY2hpdmUucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cit9
CisKK1dLV2ViQXJjaGl2ZVJlc291cmNlUmVmIFdLV2ViQXJjaGl2ZUNvcHlNYWluUmVzb3VyY2Uo
V0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYpCit7CisgICAgUmVmUHRyPFdlYkFyY2hpdmVS
ZXNvdXJjZT4gbWFpblJlc291cmNlID0gdG9JbXBsKHdlYkFyY2hpdmVSZWYpLT5tYWluUmVzb3Vy
Y2UoKTsKKyAgICByZXR1cm4gdG9BUEkobWFpblJlc291cmNlLnJlbGVhc2UoKS5sZWFrUmVmKCkp
OworfQorCitXS0FycmF5UmVmIFdLV2ViQXJjaGl2ZUNvcHlTdWJyZXNvdXJjZXMoV0tXZWJBcmNo
aXZlUmVmIHdlYkFyY2hpdmVSZWYpCit7CisgICAgUmVmUHRyPEltbXV0YWJsZUFycmF5PiBzdWJy
ZXNvdXJjZXMgPSB0b0ltcGwod2ViQXJjaGl2ZVJlZiktPnN1YnJlc291cmNlcygpOworICAgIHJl
dHVybiB0b0FQSShzdWJyZXNvdXJjZXMucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cit9CisKK1dLQXJy
YXlSZWYgV0tXZWJBcmNoaXZlQ29weVN1YmZyYW1lQXJjaGl2ZXMoV0tXZWJBcmNoaXZlUmVmIHdl
YkFyY2hpdmVSZWYpCit7CisgICAgUmVmUHRyPEltbXV0YWJsZUFycmF5PiBzdWJmcmFtZUFyY2hp
dmVzID0gdG9JbXBsKHdlYkFyY2hpdmVSZWYpLT5zdWJmcmFtZUFyY2hpdmVzKCk7CisgICAgcmV0
dXJuIHRvQVBJKHN1YmZyYW1lQXJjaGl2ZXMucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cit9CisKK1dL
RGF0YVJlZiBXS1dlYkFyY2hpdmVDb3B5RGF0YShXS1dlYkFyY2hpdmVSZWYgd2ViQXJjaGl2ZVJl
ZikKK3sKKyAgICBSZWZQdHI8V2ViRGF0YT4gZGF0YSA9IHRvSW1wbCh3ZWJBcmNoaXZlUmVmKS0+
ZGF0YSgpOworICAgIHJldHVybiB0b0FQSShkYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworfQpJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFyY2hpdmUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFy
Y2hpdmUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV0tXZWJBcmNoaXZlX2gKKyNkZWZpbmUgV0tXZWJBcmNoaXZlX2gKKworI2luY2x1ZGUgPFdl
YktpdDIvV0tCYXNlLmg+CisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworI2lmZGVmIF9fY3BsdXNw
bHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tXZWJBcmNo
aXZlR2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCBXS1dlYkFyY2hpdmVSZWYgV0tXZWJBcmNoaXZl
Q3JlYXRlKFdLV2ViQXJjaGl2ZVJlc291cmNlUmVmIG1haW5SZXNvdXJjZSwgV0tBcnJheVJlZiBz
dWJyZXNvdXJjZXMsIFdLQXJyYXlSZWYgc3ViZnJhbWVBcmNoaXZlcyk7CitXS19FWFBPUlQgV0tX
ZWJBcmNoaXZlUmVmIFdLV2ViQXJjaGl2ZUNyZWF0ZVdpdGhEYXRhKFdLRGF0YVJlZiBkYXRhKTsK
K1dLX0VYUE9SVCBXS1dlYkFyY2hpdmVSZWYgV0tXZWJBcmNoaXZlQ3JlYXRlRnJvbVJhbmdlKFdL
QnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2UpOworCitXS19FWFBPUlQgV0tXZWJBcmNoaXZlUmVz
b3VyY2VSZWYgV0tXZWJBcmNoaXZlQ29weU1haW5SZXNvdXJjZShXS1dlYkFyY2hpdmVSZWYgd2Vi
QXJjaGl2ZSk7CitXS19FWFBPUlQgV0tBcnJheVJlZiBXS1dlYkFyY2hpdmVDb3B5U3VicmVzb3Vy
Y2VzKFdLV2ViQXJjaGl2ZVJlZiB3ZWJBcmNoaXZlKTsKK1dLX0VYUE9SVCBXS0FycmF5UmVmIFdL
V2ViQXJjaGl2ZUNvcHlTdWJmcmFtZUFyY2hpdmVzKFdLV2ViQXJjaGl2ZVJlZiB3ZWJBcmNoaXZl
KTsKK1dLX0VYUE9SVCBXS0RhdGFSZWYgV0tXZWJBcmNoaXZlQ29weURhdGEoV0tXZWJBcmNoaXZl
UmVmIHdlYkFyY2hpdmUpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5k
aWYgLy8gV0tXZWJBcmNoaXZlX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9t
YWMvV0tXZWJBcmNoaXZlUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlUmVzb3VyY2UuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFyY2hpdmVSZXNvdXJjZS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV0tXZWJBcmNoaXZlUmVzb3VyY2UuaCIKKworI2luY2x1ZGUg
IldLU2hhcmVkQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYkFyY2hpdmVSZXNvdXJjZS5oIgorI2lu
Y2x1ZGUgIldlYkRhdGEuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQg
V0tXZWJBcmNoaXZlUmVzb3VyY2VHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShXZWJB
cmNoaXZlUmVzb3VyY2U6OkFQSVR5cGUpOworfQorCitXS1dlYkFyY2hpdmVSZXNvdXJjZVJlZiBX
S1dlYkFyY2hpdmVSZXNvdXJjZUNyZWF0ZShXS0RhdGFSZWYgZGF0YVJlZiwgV0tVUkxSZWYgVVJM
UmVmLCBXS1N0cmluZ1JlZiBNSU1FVHlwZVJlZiwgV0tTdHJpbmdSZWYgdGV4dEVuY29kaW5nUmVm
KQoreworICAgIFJlZlB0cjxXZWJBcmNoaXZlUmVzb3VyY2U+IHdlYkFyY2hpdmVSZXNvdXJjZSA9
IFdlYkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKHRvSW1wbChkYXRhUmVmKSwgdG9XVEZTdHJpbmco
VVJMUmVmKSwgdG9XVEZTdHJpbmcoTUlNRVR5cGVSZWYpLCB0b1dURlN0cmluZyh0ZXh0RW5jb2Rp
bmdSZWYpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViQXJjaGl2ZVJlc291cmNlLnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOworfQorCitXS0RhdGFSZWYgV0tXZWJBcmNoaXZlUmVzb3VyY2VDb3B5RGF0YShX
S1dlYkFyY2hpdmVSZXNvdXJjZVJlZiB3ZWJBcmNoaXZlUmVzb3VyY2VSZWYpCit7CisgICAgUmVm
UHRyPFdlYkRhdGE+IGRhdGEgPSB0b0ltcGwod2ViQXJjaGl2ZVJlc291cmNlUmVmKS0+ZGF0YSgp
OworICAgIHJldHVybiB0b0FQSShkYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworfQorCitXS1VS
TFJlZiBXS1dlYkFyY2hpdmVSZXNvdXJjZUNvcHlVUkwoV0tXZWJBcmNoaXZlUmVzb3VyY2VSZWYg
d2ViQXJjaGl2ZVJlc291cmNlUmVmKQoreworICAgIHJldHVybiB0b0NvcGllZFVSTEFQSSh0b0lt
cGwod2ViQXJjaGl2ZVJlc291cmNlUmVmKS0+VVJMKCkpOworfQorCitXS1N0cmluZ1JlZiBXS1dl
YkFyY2hpdmVSZXNvdXJjZUNvcHlNSU1FVHlwZShXS1dlYkFyY2hpdmVSZXNvdXJjZVJlZiB3ZWJB
cmNoaXZlUmVzb3VyY2VSZWYpCit7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbCh3ZWJB
cmNoaXZlUmVzb3VyY2VSZWYpLT5NSU1FVHlwZSgpKTsKK30KKworV0tTdHJpbmdSZWYgV0tXZWJB
cmNoaXZlUmVzb3VyY2VDb3B5VGV4dEVuY29kaW5nKFdLV2ViQXJjaGl2ZVJlc291cmNlUmVmIHdl
YkFyY2hpdmVSZXNvdXJjZVJlZikKK3sKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHdl
YkFyY2hpdmVSZXNvdXJjZVJlZiktPnRleHRFbmNvZGluZygpKTsKK30KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlUmVzb3VyY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZVJlc291cmNl
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLV2Vi
QXJjaGl2ZVJlc291cmNlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdLV2ViQXJjaGl2ZVJlc291cmNlX2gKKyNkZWZpbmUgV0tXZWJBcmNoaXZl
UmVzb3VyY2VfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2luY2x1ZGUgPHN0
ZGRlZi5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dL
X0VYUE9SVCBXS1R5cGVJRCBXS1dlYkFyY2hpdmVSZXNvdXJjZUdldFR5cGVJRCgpOworCitXS19F
WFBPUlQgV0tXZWJBcmNoaXZlUmVzb3VyY2VSZWYgV0tXZWJBcmNoaXZlUmVzb3VyY2VDcmVhdGUo
V0tEYXRhUmVmIGRhdGEsIFdLVVJMUmVmIFVSTCwgV0tTdHJpbmdSZWYgTUlNRVR5cGUsIFdLU3Ry
aW5nUmVmIHRleHRFbmNvZGluZyk7CisKK1dLX0VYUE9SVCBXS0RhdGFSZWYgV0tXZWJBcmNoaXZl
UmVzb3VyY2VDb3B5RGF0YShXS1dlYkFyY2hpdmVSZXNvdXJjZVJlZiB3ZWJBcmNoaXZlUmVzb3Vy
Y2UpOworV0tfRVhQT1JUIFdLVVJMUmVmIFdLV2ViQXJjaGl2ZVJlc291cmNlQ29weVVSTChXS1dl
YkFyY2hpdmVSZXNvdXJjZVJlZiB3ZWJBcmNoaXZlUmVzb3VyY2UpOworV0tfRVhQT1JUIFdLU3Ry
aW5nUmVmIFdLV2ViQXJjaGl2ZVJlc291cmNlQ29weU1JTUVUeXBlKFdLV2ViQXJjaGl2ZVJlc291
cmNlUmVmIHdlYkFyY2hpdmVSZXNvdXJjZSk7CitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tXZWJB
cmNoaXZlUmVzb3VyY2VDb3B5VGV4dEVuY29kaW5nKFdLV2ViQXJjaGl2ZVJlc291cmNlUmVmIHdl
YkFyY2hpdmVSZXNvdXJjZSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNl
bmRpZiAvLyBXS1dlYkFyY2hpdmVSZXNvdXJjZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDEzMzkpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTEwMjUsNiArMTAyNSwxNCBAQAogCQlDNTc0QTM3NzEyRTYwOTlEMDAyREZF
OTggLyogV2ViRHJhZ0NsaWVudE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM1NTRGRkEyMTJFNEU4RUEwMDJGMjJDMCAvKiBXZWJEcmFnQ2xpZW50
TWFjLm1tICovOyB9OwogCQlDNTc0QTU4MTEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5
cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTc0
QTU3RjEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLmggKi87IH07CiAJCUM1NzRB
NTgyMTJFNjY2ODEwMDJERkU5OCAvKiBQYXN0ZWJvYXJkVHlwZXMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTc0QTU4MDEyRTY2NjgxMDAyREZFOTgg
LyogUGFzdGVib2FyZFR5cGVzLm1tICovOyB9OworCQlDNUUxQUZFODE2QjIwQjY3MDA2Q0MxRjIg
LyogV0tXZWJBcmNoaXZlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDMzI5REE1MTZBQ0U1QTkwMDMxNkRFMiAvKiBXS1dlYkFyY2hpdmUuY3BwICov
OyB9OworCQlDNUUxQUZFOTE2QjIwQjc1MDA2Q0MxRjIgLyogV0tXZWJBcmNoaXZlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMyOURBNjE2QUNFNUE5
MDAzMTZERTIgLyogV0tXZWJBcmNoaXZlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzVFMUFGRUExNkIyMEI3QjAwNkNDMUYyIC8qIFdLV2ViQXJj
aGl2ZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMzI5REE5MTZBQ0U1QkYwMDMxNkRFMiAvKiBXS1dlYkFyY2hpdmVSZXNvdXJjZS5j
cHAgKi87IH07CisJCUM1RTFBRkVCMTZCMjBCN0UwMDZDQzFGMiAvKiBXS1dlYkFyY2hpdmVSZXNv
dXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMz
MjlEQUExNkFDRTVDMDAwMzE2REUyIC8qIFdLV2ViQXJjaGl2ZVJlc291cmNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzVFMUFGRUMxNkIyMTAx
MjAwNkNDMUYyIC8qIFdlYkFyY2hpdmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMzMjlEOTkxNkFDQ0U5OTAwMzE2REUyIC8qIFdlYkFyY2hpdmUu
Y3BwICovOyB9OworCQlDNUUxQUZFRDE2QjIxMDE3MDA2Q0MxRjIgLyogV2ViQXJjaGl2ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzMjlEOUExNkFD
Q0U5OTAwMzE2REUyIC8qIFdlYkFyY2hpdmUuaCAqLzsgfTsKKwkJQzVFMUFGRUUxNkIyMTAyNTAw
NkNDMUYyIC8qIFdlYkFyY2hpdmVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMyOUQ5RTE2QUNENDc4MDAzMTZERTIgLyogV2ViQXJj
aGl2ZVJlc291cmNlLmNwcCAqLzsgfTsKKwkJQzVFMUFGRUYxNkIyMTAyOTAwNkNDMUYyIC8qIFdl
YkFyY2hpdmVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMzMjlEOUYxNkFDRDQ3ODAwMzE2REUyIC8qIFdlYkFyY2hpdmVSZXNvdXJjZS5o
ICovOyB9OwogCQlDRDVDNjZBMDEzNEI5RDM4MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdl
RnVsbFNjcmVlbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDVDNjY5RTEzNEI5RDM2MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdl
RnVsbFNjcmVlbkNsaWVudC5jcHAgKi87IH07CiAJCUNENUM2NkExMTM0QjlEMzgwMDRGRTJBOCAv
KiBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDVDNjY5RjEzNEI5RDM3MDA0RkUyQTggLyog
SW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oICovOyB9OwogCQlDRDY3RDMwRTE1
QzA4RjlBMDA4NDNBREYgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q2
N0QzMDgxNUMwN0JFMDAwODQzQURGIC8qIEluamVjdGVkQnVuZGxlUGFnZURpYWdub3N0aWNMb2dn
aW5nQ2xpZW50LmNwcCAqLzsgfTsKQEAgLTIwMjUsNiArMjAzMywxNCBAQAogCQlCQzMwNjZCRDEy
NUE0NDIxMDBFNzEyNzggLyogV2ViUHJvY2Vzc01lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlByb2Nlc3NNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzMwNjgyMjEyNUE2Qjk0MDBFNzEyNzggLyogV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzA2
ODIzMTI1QTZCOTQwMEU3MTI3OCAvKiBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzMyOUQ5OTE2QUND
RTk5MDAzMTZERTIgLyogV2ViQXJjaGl2ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJBcmNoaXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkMzMjlEOUExNkFDQ0U5OTAwMzE2REUyIC8qIFdlYkFyY2hpdmUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViQXJjaGl2ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlCQzMyOUQ5RTE2QUNENDc4MDAzMTZERTIgLyogV2ViQXJjaGl2ZVJlc291cmNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkFyY2hpdmVSZXNvdXJjZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMzI5RDlGMTZBQ0Q0NzgwMDMxNkRF
MiAvKiBXZWJBcmNoaXZlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQXJjaGl2ZVJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
MzI5REE1MTZBQ0U1QTkwMDMxNkRFMiAvKiBXS1dlYkFyY2hpdmUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tXZWJBcmNoaXZlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkMzMjlEQTYxNkFDRTVBOTAwMzE2REUyIC8qIFdLV2ViQXJjaGl2ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYkFyY2hpdmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMzMjlEQTkxNkFDRTVCRjAwMzE2REUyIC8qIFdLV2Vi
QXJjaGl2ZVJlc291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdLV2ViQXJjaGl2ZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkMzMjlEQUExNkFDRTVDMDAwMzE2REUyIC8qIFdLV2ViQXJjaGl2ZVJlc291cmNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViQXJjaGl2ZVJlc291cmNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzNERDY3MTIzODQ2NDYwMDM2MEYzRiAvKiBXZWJO
dW1iZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTnVtYmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzNFMENGMTI0MDhFODYwMDM2MEYzRiAvKiBJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMzM0UwRDAxMjQwOEU4NjAwMzYwRjNGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTg1LDYg
KzMwMDEsMTAgQEAKIAkJCQlCQ0IwQjBERjEyMzA1QUIxMDBCMTM0MUUgLyogVXNlck1lc3NhZ2VD
b2RlcnMuaCAqLywKIAkJCQkxQTBGMjlDOTEyMEIzNzE2MDA1M0QxQjkgLyogVmlzaXRlZExpbmtU
YWJsZS5jcHAgKi8sCiAJCQkJMUEwRjI5Q0ExMjBCMzcxNjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5r
VGFibGUuaCAqLywKKwkJCQlCQzMyOUQ5OTE2QUNDRTk5MDAzMTZERTIgLyogV2ViQXJjaGl2ZS5j
cHAgKi8sCisJCQkJQkMzMjlEOUExNkFDQ0U5OTAwMzE2REUyIC8qIFdlYkFyY2hpdmUuaCAqLywK
KwkJCQlCQzMyOUQ5RTE2QUNENDc4MDAzMTZERTIgLyogV2ViQXJjaGl2ZVJlc291cmNlLmNwcCAq
LywKKwkJCQlCQzMyOUQ5RjE2QUNENDc4MDAzMTZERTIgLyogV2ViQXJjaGl2ZVJlc291cmNlLmgg
Ki8sCiAJCQkJNTE4RDJDQUIxMkQ1MTUzQjAwM0JCOTNCIC8qIFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uY3BwICovLAogCQkJCTUxOEQyQ0FDMTJENTE1M0IwMDNCQjkzQiAvKiBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtLmggKi8sCiAJCQkJQkNGNTA3MjYxMjQzMjlBQTAwNTk1NUFFIC8qIFdlYkNlcnRp
ZmljYXRlSW5mby5oICovLApAQCAtNDE1MCw2ICs0MTcwLDEwIEBACiAJCQkJQkM0MDc2MjQxMjRG
RjA0MDAwNjhGMjBBIC8qIFdLVVJMUmVxdWVzdE5TLm1tICovLAogCQkJCUJDNDA3NjI1MTI0RkYw
NDAwMDY4RjIwQSAvKiBXS1VSTFJlc3BvbnNlTlMuaCAqLywKIAkJCQlCQzQwNzYyNjEyNEZGMDQw
MDA2OEYyMEEgLyogV0tVUkxSZXNwb25zZU5TLm1tICovLAorCQkJCUJDMzI5REE1MTZBQ0U1QTkw
MDMxNkRFMiAvKiBXS1dlYkFyY2hpdmUuY3BwICovLAorCQkJCUJDMzI5REE2MTZBQ0U1QTkwMDMx
NkRFMiAvKiBXS1dlYkFyY2hpdmUuaCAqLywKKwkJCQlCQzMyOURBOTE2QUNFNUJGMDAzMTZERTIg
LyogV0tXZWJBcmNoaXZlUmVzb3VyY2UuY3BwICovLAorCQkJCUJDMzI5REFBMTZBQ0U1QzAwMDMx
NkRFMiAvKiBXS1dlYkFyY2hpdmVSZXNvdXJjZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTMyNyw2ICs1MzUxLDEwIEBACiAJCQkJ
NTE4MTVCQTAxNkE2MjIyMTAwNTQ1MDFGIC8qIFN5bmNOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxOUI0RkY1MTZBOUVBOTcwMDY2ODc0RCAvKiBTY2hlZHVsYWJs
ZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFNTUyQzUxNkFFMDY1RjAwNEVENjUzIC8q
IFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUM1
RTFBRkU5MTZCMjBCNzUwMDZDQzFGMiAvKiBXS1dlYkFyY2hpdmUuaCBpbiBIZWFkZXJzICovLAor
CQkJCUM1RTFBRkVCMTZCMjBCN0UwMDZDQzFGMiAvKiBXS1dlYkFyY2hpdmVSZXNvdXJjZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQzVFMUFGRUQxNkIyMTAxNzAwNkNDMUYyIC8qIFdlYkFyY2hpdmUu
aCBpbiBIZWFkZXJzICovLAorCQkJCUM1RTFBRkVGMTZCMjEwMjkwMDZDQzFGMiAvKiBXZWJBcmNo
aXZlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUM0REU3MTZCMUNCRjYwMDk0MjVF
MyAvKiBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQz
MzA2RjE2QjFEOTkxMDA0RjYwRTcgLyogU3RvcmFnZUFyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTE4RThFRjkxNkIyMDkxQzAwRTkxNDI5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC02NDM3LDYgKzY0NjUsMTAgQEAKIAkJCQk1MTgxNUI5RjE2QTYy
MjIxMDA1NDUwMUYgLyogU3luY05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MTlCNEZGNDE2QTlFQTk3MDA2Njg3NEQgLyogU2NoZWR1bGFibGVMb2FkZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFNTUyQzQxNkFFMDY1RjAwNEVENjUzIC8qIFNhbmRib3hJ
bml0aWFsaWF0aW9uUGFyYW1ldGVyc01hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUM1RTFBRkU4
MTZCMjBCNjcwMDZDQzFGMiAvKiBXS1dlYkFyY2hpdmUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QzVFMUFGRUExNkIyMEI3QjAwNkNDMUYyIC8qIFdLV2ViQXJjaGl2ZVJlc291cmNlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUM1RTFBRkVDMTZCMjEwMTIwMDZDQzFGMiAvKiBXZWJBcmNoaXZlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUM1RTFBRkVFMTZCMjEwMjUwMDZDQzFGMiAvKiBXZWJBcmNo
aXZlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBQzRERTYxNkIxQ0JGNjAwOTQy
NUUzIC8qIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFEMzMwNkUxNkIxRDk5MTAwNEY2MEU3IC8qIFN0b3JhZ2VBcmVhUHJveHkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE4RThFRjgxNkIyMDkxQzAwRTkxNDI5IC8qIEF1dGhlbnRpY2F0aW9uTWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAJKHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDEzIEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgiCiAK
KyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCIKICNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRl
ICJXS1N0cmluZy5oIgorI2luY2x1ZGUgIldlYkRhdGEuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMjUsNCArMTI4LDU0
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpkaWQKICAgICAgICAgbV9j
bGllbnQuZGlkQ2hhbmdlU2VsZWN0aW9uKHRvQVBJKHBhZ2UpLCB0b0FQSShub3RpZmljYXRpb25O
YW1lKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSogcGFnZSwgUmFuZ2Uq
IHJhbmdlKQoreworICAgIGlmIChtX2NsaWVudC53aWxsV3JpdGVUb1Bhc3RlYm9hcmQpIHsKKyAg
ICAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHJhbmdlSGFuZGxlID0gSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUocmFuZ2UpOworICAgICAgICBtX2Ns
aWVudC53aWxsV3JpdGVUb1Bhc3RlYm9hcmQodG9BUEkocGFnZSksIHRvQVBJKHJhbmdlSGFuZGxl
LmdldCgpKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgfQorfQorCit2b2lkIEluamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdl
KiBwYWdlLCBSYW5nZSogcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiA+JiBwYXN0ZWJvYXJkRGF0YSkKK3sKKyAgICBpZiAo
bV9jbGllbnQuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkgeworICAgICAgICBSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gcmFuZ2VIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlOjpnZXRPckNyZWF0ZShyYW5nZSk7CisgICAgICAgIFdLQXJyYXlSZWYgdHlwZXMgPSAw
OworICAgICAgICBXS0FycmF5UmVmIGRhdGEgPSAwOworICAgICAgICBtX2NsaWVudC5nZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKHRvQVBJKHBhZ2UpLCB0b0FQSShyYW5nZUhhbmRsZS5nZXQoKSks
ICZ0eXBlcywgJmRhdGEsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgICAgICBSZWZQdHI8SW1t
dXRhYmxlQXJyYXk+IHR5cGVzQXJyYXkgPSBhZG9wdFJlZih0b0ltcGwodHlwZXMpKTsKKyAgICAg
ICAgUmVmUHRyPEltbXV0YWJsZUFycmF5PiBkYXRhQXJyYXkgPSBhZG9wdFJlZih0b0ltcGwoZGF0
YSkpOworCisgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5jbGVhcigpOworICAgICAgICBwYXN0ZWJv
YXJkRGF0YS5jbGVhcigpOworCisgICAgICAgIGlmICghdHlwZXNBcnJheSB8fCAhZGF0YUFycmF5
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEFTU0VSVCh0eXBlc0FycmF5LT5zaXpl
KCkgPT0gZGF0YUFycmF5LT5zaXplKCkpOworCisgICAgICAgIHNpemVfdCBzaXplID0gdHlwZXNB
cnJheS0+c2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkg
eworICAgICAgICAgICAgV2ViU3RyaW5nKiB0eXBlID0gdHlwZXNBcnJheS0+YXQ8V2ViU3RyaW5n
PihpKTsKKyAgICAgICAgICAgIGlmICh0eXBlKQorICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRU
eXBlcy5hcHBlbmQodHlwZS0+c3RyaW5nKCkpOworICAgICAgICB9CisKKyAgICAgICAgc2l6ZSA9
IGRhdGFBcnJheS0+c2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkgeworICAgICAgICAgICAgV2ViRGF0YSogaXRlbSA9IGRhdGFBcnJheS0+YXQ8V2ViRGF0
YT4oaSk7CisgICAgICAgICAgICBpZiAoaXRlbSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCks
IGl0ZW0tPnNpemUoKSk7CisgICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKGJ1
ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlKiBw
YWdlKQoreworICAgIGlmIChtX2NsaWVudC5kaWRXcml0ZVRvUGFzdGVib2FyZCkKKyAgICAgICAg
bV9jbGllbnQuZGlkV3JpdGVUb1Bhc3RlYm9hcmQodG9BUEkocGFnZSksIG1fY2xpZW50LmNsaWVu
dEluZm8pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMTQxMzM5KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1
ZGUgIkFQSUNsaWVudC5oIgogI2luY2x1ZGUgIldLQnVuZGxlUGFnZS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRWRpdG9ySW5zZXJ0QWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRBZmZpbml0eS5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAKQEAgLTM2LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIENTU1N0eWxlRGVjbGFyYXRpb247CiAgICAgY2xhc3MgTm9kZTsKICAgICBjbGFzcyBSYW5n
ZTsKKyAgICBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTYsNiArNTgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKFdlYlBhZ2UqLCBT
dHJpbmdJbXBsKiBub3RpZmljYXRpb25OYW1lKTsKICAgICB2b2lkIGRpZENoYW5nZShXZWJQYWdl
KiwgU3RyaW5nSW1wbCogbm90aWZpY2F0aW9uTmFtZSk7CiAgICAgdm9pZCBkaWRDaGFuZ2VTZWxl
Y3Rpb24oV2ViUGFnZSosIFN0cmluZ0ltcGwqIG5vdGlmaWNhdGlvbk5hbWUpOworICAgIHZvaWQg
d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UqLCBXZWJDb3JlOjpSYW5nZSopOworICAgIHZv
aWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlKiwgV2ViQ29yZTo6UmFuZ2UqLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gPiYgcGFzdGVib2FyZERhdGEpOworICAgIHZvaWQgZGlkV3JpdGVUb1Bhc3Rl
Ym9hcmQoV2ViUGFnZSopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmgJKHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5NCw2ICsyOTQsOSBAQCB0eXBlZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VTaG91
bGREZWxldGVSCiB0eXBlZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VTaG91bGRDaGFuZ2VTZWxlY3Rl
ZFJhbmdlKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiBmcm9t
UmFuZ2UsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgdG9SYW5nZSwgV0tBZmZpbml0eVR5cGUgYWZm
aW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlw
ZWRlZiBib29sICgqV0tCdW5kbGVQYWdlU2hvdWxkQXBwbHlTdHlsZSkoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIFdLQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvblJlZiBzdHlsZSwgV0tCdW5kbGVSYW5n
ZUhhbmRsZVJlZiByYW5nZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQg
KCpXS0J1bmRsZVBhZ2VFZGl0aW5nTm90aWZpY2F0aW9uKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uTmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0
eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VXaWxsV3JpdGVUb1Bhc3RlYm9hcmQpKFdLQnVuZGxl
UGFnZVJlZiBwYWdlLCBXS0J1bmRsZVJhbmdlSGFuZGxlUmVmIHJhbmdlLCAgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VHZXRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiBy
YW5nZSwgV0tBcnJheVJlZiogcGFzdGVib2FyZFR5cGVzLCBXS0FycmF5UmVmKiBwYXN0ZWJvYXJk
RGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBh
Z2VEaWRXcml0ZVRvUGFzdGVib2FyZCkoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOwogCiBzdHJ1Y3QgV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50IHsKICAgICBp
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZlcnNpb247CkBAIC0zMDksMTAgKzMxMiwxNCBAQCBzdHJ1Y3QgV0tCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50IHsKICAgICBXS0J1bmRsZVBhZ2VFZGl0aW5nTm90aWZpY2F0aW9uICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEVuZEVkaXRpbmc7CiAgICAgV0tC
dW5kbGVQYWdlRWRpdGluZ05vdGlmaWNhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWRDaGFuZ2U7CiAgICAgV0tCdW5kbGVQYWdlRWRpdGluZ05vdGlmaWNhdGlvbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRDaGFuZ2VTZWxlY3Rpb247Cisg
ICAgLy8gVmVyc2lvbiAxLgorICAgIFdLQnVuZGxlUGFnZVdpbGxXcml0ZVRvUGFzdGVib2FyZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkOwor
ICAgIFdLQnVuZGxlUGFnZUdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZTsKKyAgICBXS0J1bmRsZVBh
Z2VEaWRXcml0ZVRvUGFzdGVib2FyZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZFdyaXRlVG9QYXN0ZWJvYXJkOwogfTsKIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZUVk
aXRvckNsaWVudCBXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnQ7CiAKLWVudW0geyBrV0tCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50Q3VycmVudFZlcnNpb24gPSAwIH07CitlbnVtIHsga1dLQnVuZGxlUGFn
ZUVkaXRvckNsaWVudEN1cnJlbnRWZXJzaW9uID0gMSB9OwogCiAvLyBGb3JtIGNsaWVudAogdHlw
ZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlVGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nQ2FsbGJhY2sp
KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgaHRtbElucHV0RWxl
bWVudEhhbmRsZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
byk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCShyZXZpc2lvbiAxNDEzMzkpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMCw3ICsyMjAsMTcgQEAgdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmRpZEVuZEVkaXRpbmcoKQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlkV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9wYWdl
LT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLmRpZFdyaXRlVG9QYXN0ZWJvYXJkKG1fcGFn
ZSk7Cit9CisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoUmFuZ2UqIHJhbmdlKQoreworICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQobV9wYWdlLCByYW5nZSk7Cit9CisKK3ZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFJhbmdlKiBy
YW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+ID4mIHBhc3RlYm9hcmREYXRhKQoreworICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKG1fcGFnZSwgcmFuZ2Us
IHBhc3RlYm9hcmRUeXBlcywgcGFzdGVib2FyZERhdGEpOwogfQogCiB2b2lkIFdlYkVkaXRvckNs
aWVudDo6ZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAkocmV2aXNpb24gMTQxMzM5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjcs
NyArNjcsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29u
dGVudHMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVj
dGlvbihXZWJDb3JlOjpGcmFtZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRF
ZGl0aW5nKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZChXZWJDb3JlOjpSYW5nZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+ID4mIHBhc3RlYm9hcmREYXRhKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
U2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCkgT1ZFUlJJREU7CiAgICAgCiAgICAgdmly
dHVhbCB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4p
IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NDE0NDcpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDEtMzEgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNh
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQyOiBwcm92aWRlIG5ldyBidW5kbGUgQVBJcyB0
byBhbGxvdyBidW5kbGUgY2xpZW50cyB0byBiZSBub3RpZmllZCBvZiBwYXN0ZWJvYXJkIGFjY2Vz
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODM5
Ni4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyOTIwNDYxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgQWRkcyBzdHViIGltcGxlbWVudGF0
aW9uIGZvciBXZWJLaXQgb2YgdGhlIG5ldyBFZGl0b3JDbGllbnQgbWV0aG9kcy4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmdldENs
aWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEJsYWNrQmVycnkuaDoKKwogMjAxMy0wMS0zMCAgRWQgQmFrZXIgIDxlZGJha2Vy
QHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFNjcmVlbnNob3QgaXMgY2xpcHBlZCB3
aGVuIGNvbnRlbnQgaXMgc21hbGxlciB0aGFuIHRoZSBkZXNpbnRhdGlvbiBzaXplCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxNDEzMzkpCisrKyBT
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw2ICsyNTMsMTYgQEAgdm9pZCBFZGl0b3JD
bGllbnRCbGFja0JlcnJ5OjpkaWRXcml0ZVNlbAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
K3ZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKFdlYkNvcmU6OlJhbmdlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
V2ViQ29yZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYgcGFzdGVib2FyZERhdGEpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpkaWRT
ZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50QmxhY2tCZXJyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmgJKHJldmlzaW9uIDE0MTMzOSkK
KysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRC
bGFja0JlcnJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKEZyYW1lKik7CiAgICAgdmly
dHVhbCB2b2lkIHJlc3BvbmRUb1NlbGVjdGlvbkFwcGVhcmFuY2VDaGFuZ2UoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50
UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JiBw
YXN0ZWJvYXJkRGF0YSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNldFNlbGVjdGlvblR5cGVzRm9y
UGFzdGVib2FyZCgpOwogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQ
dHI8VW5kb1N0ZXA+KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChQYXNzUmVm
UHRyPFVuZG9TdGVwPik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24g
MTQxNDQ3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMy0wMS0zMSAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FA
YXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdDI6IHByb3ZpZGUgbmV3IGJ1bmRsZSBBUElzIHRv
IGFsbG93IGJ1bmRsZSBjbGllbnRzIHRvIGJlIG5vdGlmaWVkIG9mIHBhc3RlYm9hcmQgYWNjZXNz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4Mzk2
LgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI5MjA0NjE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICBBZGRzIHN0dWIgaW1wbGVtZW50YXRp
b24gZm9yIFdlYktpdCBvZiB0aGUgbmV3IEVkaXRvckNsaWVudCBtZXRob2RzLgorCisgICAgICAg
ICogc3JjL0VkaXRvckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGll
bnRJbXBsOjp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0
OjpFZGl0b3JDbGllbnRJbXBsOjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAg
ICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5oOgorCiAyMDEzLTAxLTMxICBUb21teSBXaWRl
bmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWVkaWFT
dHJlYW0gQVBJOiBSZW5hbWUgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yIGFuZCBXZWJNZWRpYVN0
cmVhbUNvbXBvbmVudCB0byBXZWJNZWRpYVN0cmVhbSBhbmQgV2ViTWVkaWFTdHJlYW1UcmFjawpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5j
cHAJKHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRv
ckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODksNiArMjg5LDE0IEBAIHZvaWQg
RWRpdG9yQ2xpZW50SW1wbDo6ZGlkV3JpdGVTZWxlY3Rpb24KIHsKIH0KIAordm9pZCBFZGl0b3JD
bGllbnRJbXBsOjp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2Uq
KQoreworfQorCit2b2lkIEVkaXRvckNsaWVudEltcGw6OmdldENsaWVudFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYgcGFzdGVib2FyZERhdGEp
Cit7Cit9CisKIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6ZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQ
YXN0ZWJvYXJkKCkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRv
ckNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9F
ZGl0b3JDbGllbnRJbXBsLmgJKHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygp
OwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKFdlYkNvcmU6OkZy
YW1lKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlJhbmdlKik7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCk7CisgICAgdmlydHVh
bCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gPiYgcGFzdGVib2FyZERhdGEpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRT
ZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJV
bmRvU3RlcChQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPik7CiAgICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4pOwpJbmRleDog
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gMTQxNDQ3KQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDEtMzEgIEVucmlj
YSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQyOiBwcm92aWRl
IG5ldyBidW5kbGUgQVBJcyB0byBhbGxvdyBidW5kbGUgY2xpZW50cyB0byBiZSBub3RpZmllZCBv
ZiBwYXN0ZWJvYXJkIGFjY2Vzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwODM5Ni4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyOTIwNDYxPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgQWRk
cyBzdHViIGltcGxlbWVudGF0aW9uIGZvciBXZWJLaXQgb2YgdGhlIG5ldyBFZGl0b3JDbGllbnQg
bWV0aG9kcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OndpbGxXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OmdldENsaWVu
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEVmbC5oOgorCiAyMDEzLTAxLTMxICBDaHJpc3RvcGhlIER1bWV6ICA8ZGNocmlzQGdt
YWlsLmNvbT4KIAogICAgICAgICBbRUZMXSBEaXNhYmxlIFdlYiBJbnRlbnRzCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5j
cHAJKHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw2ICsxNzIsMTQgQEAg
dm9pZCBFZGl0b3JDbGllbnRFZmw6OmRpZFdyaXRlU2VsZWN0aW9uVAogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKK3ZvaWQgRWRpdG9yQ2xpZW50RWZsOjp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKQoreworfQorCit2b2lkIEVkaXRvckNsaWVudEVmbDo6
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiA+JiBwYXN0ZWJvYXJkRGF0YSkKK3sKK30KKwogdm9pZCBFZGl0b3JDbGllbnRFZmw6OmRp
ZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVm
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEVmbC5oCShyZXZpc2lvbiAxNDEzMzkpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEw
OCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRz
KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpOworICAgIHZpcnR1YWwgdm9pZCB3aWxs
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiA+JiBwYXN0ZWJvYXJkRGF0YSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNldFNlbGVjdGlv
blR5cGVzRm9yUGFzdGVib2FyZCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVW5kb1N0
ZXAoV1RGOjpQYXNzUmVmUHRyPFVuZG9TdGVwPik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNDE0NDcpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMy0wMS0zMSAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FA
YXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdDI6IHByb3ZpZGUgbmV3IGJ1bmRsZSBBUElzIHRv
IGFsbG93IGJ1bmRsZSBjbGllbnRzIHRvIGJlIG5vdGlmaWVkIG9mIHBhc3RlYm9hcmQgYWNjZXNz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4Mzk2
LgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI5MjA0NjE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICBBZGRzIHN0dWIgaW1wbGVtZW50YXRp
b24gZm9yIFdlYktpdCBvZiB0aGUgbmV3IEVkaXRvckNsaWVudCBtZXRob2RzLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAo
V2ViS2l0OjpFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oOgorCiAyMDEzLTAxLTMw
ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFtU
ZXhNYXBdIFJlbW92ZSBHcmFwaGljc0xheWVyIGluIFRleHR1cmVNYXBwZXJMYXllci4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
R3RrLmNwcAkocmV2aXNpb24gMTQxMzM5KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDYgKzI4MSwx
NCBAQCB2b2lkIEVkaXRvckNsaWVudDo6ZGlkV3JpdGVTZWxlY3Rpb25Ub1BhCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAordm9pZCBFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZChXZWJDb3JlOjpSYW5nZSopCit7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50Ojpn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+ID4mIHBhc3RlYm9hcmREYXRhKQoreworfQorCiB2b2lkIEVkaXRvckNsaWVudDo6ZGlkU2V0
U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJ
bmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50R3RrLmgJKHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw5IEBA
IGNsYXNzIEVkaXRvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpFZGkKICAgICAgICAgdmlydHVh
bCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihXZWJDb3JlOjpGcmFtZSopOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpOworICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlJhbmdlKik7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiA+JiBwYXN0ZWJvYXJkRGF0YSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRT
ZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAxLTMwICBFbnJp
Y2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MjogcHJvdmlk
ZSBuZXcgYnVuZGxlIEFQSXMgdG8gYWxsb3cgYnVuZGxlIGNsaWVudHMgdG8gYmUgbm90aWZpZWQg
b2YgcGFzdGVib2FyZCBhY2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDgzOTYuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjkyMDQ2MT4K
KworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIEFk
ZHMgc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgV2ViS2l0IG9mIHRoZSBuZXcgRWRpdG9yQ2xpZW50
IG1ldGhvZHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChX
ZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCk6CisgICAgICAg
IChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorCiAy
MDEzLTAxLTI5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQwOTgzLgpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHJldmlz
aW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw5IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRW5kRWRpdGluZygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3JlOjpSYW5n
ZSosIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiA+JiBwYXN0ZWJvYXJkRGF0YSkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpIE9WRVJSSURFOwogCiAg
ICAgdmlydHVhbCBOU1N0cmluZyogdXNlclZpc2libGVTdHJpbmcoTlNVUkwgKikgT1ZFUlJJREU7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lm1tCShyZXZpc2lvbiAxNDEzMzkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxMSw2ICsz
MTEsMTYgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZFdyaXRlU2VsZWN0aW9uVAogICAgIFtb
bV93ZWJWaWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IGRp
ZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkOltOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9h
cmRdXTsKIH0KIAordm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChXZWJDb3JlOjpSYW5nZSopCit7CisgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktp
dCwgb25seSBXZWJLaXQyLgorfQorCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFz
dGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JiBwYXN0
ZWJvYXJkRGF0YSkKK3sKKyAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktp
dDIuCit9CisKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBh
c3RlYm9hcmQoKQogewogICAgIFtbbV93ZWJWaWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXJd
IHdlYlZpZXc6bV93ZWJWaWV3IGRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZDpbTlNQ
YXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNp
b24gMTQxNDQ3KQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOCBAQAorMjAxMy0wMS0zMSAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBw
bGUuY29tPgorCisgICAgICAgIFdlYktpdDI6IHByb3ZpZGUgbmV3IGJ1bmRsZSBBUElzIHRvIGFs
bG93IGJ1bmRsZSBjbGllbnRzIHRvIGJlIG5vdGlmaWVkIG9mIHBhc3RlYm9hcmQgYWNjZXNzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4Mzk2Lgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI5MjA0NjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICBBZGRzIHN0dWIgaW1wbGVtZW50YXRpb24g
Zm9yIFdlYktpdCBvZiB0aGUgbmV3IEVkaXRvckNsaWVudCBtZXRob2RzLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yQ2xpZW50UXQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKwogMjAxMy0wMS0z
MCAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAg
ICAgICBbUXRdIEZpeCBtaW5pbWFsIGJ1aWxkIGFmdGVyIHIxNDEyNTkuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkocmV2
aXNpb24gMTQxMzM5KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw2ICsyMzMsMTQgQEAgdm9pZCBFZGl0
b3JDbGllbnRRdDo6ZGlkV3JpdGVTZWxlY3Rpb25UbwogewogfQogCit2b2lkIEVkaXRvckNsaWVu
dFF0Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUmFuZ2UqKQoreworfQorCit2b2lk
IEVkaXRvckNsaWVudFF0OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFJhbmdlKiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+ID4mIHBhc3RlYm9hcmREYXRhKQoreworfQorCiB2b2lkIEVkaXRvckNsaWVudFF0OjpkaWRT
ZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKQogewogfQpJbmRleDogU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAkocmV2aXNpb24gMTQx
MzM5KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRU
b0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGlu
ZygpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUmFu
Z2UqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShSYW5nZSos
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiA+JiBwYXN0ZWJvYXJkRGF0YSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNl
dFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+KTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE0MTQ0NykKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAxLTMxICBFbnJpY2EgQ2FzdWNjaSAg
PGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MjogcHJvdmlkZSBuZXcgYnVuZGxl
IEFQSXMgdG8gYWxsb3cgYnVuZGxlIGNsaWVudHMgdG8gYmUgbm90aWZpZWQgb2YgcGFzdGVib2Fy
ZCBhY2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDgzOTYuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjkyMDQ2MT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIEFkZHMgc3R1YiBpbXBs
ZW1lbnRhdGlvbiBmb3IgV2ViS2l0IG9mIHRoZSBuZXcgRWRpdG9yQ2xpZW50IG1ldGhvZHMuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAg
ICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKwogMjAxMy0wMS0yOSAg
U2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9t
aXVtXSBDYW5ub3QgY29weSB0ZXh0IHdoZW4gc2VsZWN0aW5nIHJlYWRvbmx5IChvciBkaXNhYmxl
ZCkgaW5wdXQgZWxlbWVudHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAkocmV2aXNpb24gMTQxMzM5KQorKysgU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjI3LDYgKzIyNywxNiBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlkV3Jp
dGVTZWxlY3Rpb25UCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJFZGl0b3JD
bGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChXZWJDb3JlOjpSYW5nZSopCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENs
aWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
PiYgcGFzdGVib2FyZERhdGEpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OmRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCShyZXZpc2lvbiAxNDEzMzkpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNTUsNyArNTUsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmVn
aW5FZGl0aW5nKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlJhbmdlKik7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCk7CisgICAg
dmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViQ29yZTo6UmFu
Z2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gPiYgcGFzdGVib2FyZERhdGEpOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBy
ZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNDE0NDcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAxLTMxICBFbnJpY2EgQ2FzdWNjaSAgPGVucmlj
YUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MjogcHJvdmlkZSBuZXcgYnVuZGxlIEFQSXMg
dG8gYWxsb3cgYnVuZGxlIGNsaWVudHMgdG8gYmUgbm90aWZpZWQgb2YgcGFzdGVib2FyZCBhY2Nl
c3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgz
OTYuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjkyMDQ2MT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIEFkZHMgc3R1YiBpbXBsZW1lbnRh
dGlvbiBmb3IgV2ViS2l0IG9mIHRoZSBuZXcgRWRpdG9yQ2xpZW50IG1ldGhvZHMuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkVkaXRvckNsaWVudFdpbkNFOjp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgor
ICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRXaW5DRTo6Z2V0Q2xpZW50UGFzdGVib2FyZERh
dGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0Uu
aDoKKwogMjAxMy0wMS0yNCAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkIFdpbkNFIGJ1aWxkIGZpeCBhZnRlciByMTM5MDc4LgpJbmRl
eDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRXaW5DRS5jcHAJKHJldmlzaW9uIDE0MTMzOSkKKysrIFNvdXJjZS9XZWJLaXQvd2lu
Y2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzksNiArMTM5LDE2IEBAIHZvaWQgRWRpdG9yQ2xpZW50V2luQ0U6OmRpZFdyaXRlU2VsZWN0
aW8KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIEVkaXRvckNsaWVudFdpbkNFOjp3
aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50V2luQ0U6OmdldENsaWVudFBh
c3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYgcGFz
dGVib2FyZERhdGEpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBFZGl0b3JD
bGllbnRXaW5DRTo6ZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRXaW5DRS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2Uv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAkocmV2aXNpb24gMTQxMzM5KQorKysg
U291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0No
YW5nZWRTZWxlY3Rpb24oV2ViQ29yZTo6RnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5k
RWRpdGluZygpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoV2ViQ29yZTo6UmFuZ2UqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFG
b3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JiBwYXN0ZWJvYXJkRGF0YSk7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpOwog
CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OlVuZG9TdGVwPik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gMTQxNDQ3KQorKysg
U291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBA
QAorMjAxMy0wMS0zMSAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYktpdDI6IHByb3ZpZGUgbmV3IGJ1bmRsZSBBUElzIHRvIGFsbG93IGJ1bmRsZSBjbGll
bnRzIHRvIGJlIG5vdGlmaWVkIG9mIHBhc3RlYm9hcmQgYWNjZXNzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4Mzk2LgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTI5MjA0NjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5
YWtvdi4KKworICAgICAgICBBZGRzIHN0dWIgaW1wbGVtZW50YXRpb24gZm9yIFdlYktpdCBvZiB0
aGUgbmV3IEVkaXRvckNsaWVudCBtZXRob2RzLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9F
ZGl0b3JDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6d2ls
bFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNs
aWVudFd4OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0VkaXRvckNsaWVudFd4Lmg6CisKIDIwMTMtMDEtMjQgIE1hcmsgSGFobmVuYmVy
ZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBPYmplY3RpdmUtQyBBUEk6IFJl
bmFtZSBKU1ZhbHVlLmgvQVBJSlNWYWx1ZS5oIHRvIEpTQ0pTVmFsdWUuaC9KU1ZhbHVlLmgKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4
LmNwcAkocmV2aXNpb24gMTQxMzM5KQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0
L0VkaXRvckNsaWVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjczLDYgKzI3MywxNiBAQCB2
b2lkIEVkaXRvckNsaWVudFd4OjpkaWRXcml0ZVNlbGVjdGlvblRvCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAordm9pZCBFZGl0b3JDbGllbnRXeDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKFdlYkNvcmU6OlJhbmdlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIEVkaXRvckNsaWVudFd4OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNv
cmU6OlJhbmdlKiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mIHBhc3RlYm9hcmREYXRhKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKIHZvaWQgRWRpdG9yQ2xpZW50V3g6OmRpZFNldFNlbGVjdGlvblR5
cGVzRm9yUGFzdGVib2FyZCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCShyZXZpc2lv
biAxNDEzMzkpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50
V3guaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpOwogICAgIHZpcnR1YWwgdm9pZCByZXNw
b25kVG9DaGFuZ2VkU2VsZWN0aW9uKEZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVk
aXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KFdlYkNvcmU6OlJhbmdlKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKCk7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UoV2ViQ29yZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYgcGFzdGVib2FyZERhdGEpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+KTsK
SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE0MTMzOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI2IEBACisyMDEzLTAxLTMwICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViS2l0MjogcHJvdmlkZSBuZXcgYnVuZGxlIEFQSXMgdG8gYWxsb3cgYnVu
ZGxlIGNsaWVudHMgdG8gYmUgbm90aWZpZWQgb2YgcGFzdGVib2FyZCBhY2Nlc3MuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgzOTYuCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8xMjkyMDQ2MT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkg
UHJvc2t1cnlha292LgorICAgICAgICAKKyAgICAgICAgQWRkaW5nIG5ldyBXZWJLaXQyIHRlc3Qg
d2l0aCByZWxldmFudCBidW5kbGUsIHRvIHRlc3QgdGhlIG5ldyBBUElzLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1Bhc3RlYm9hcmROb3RpZmljYXRp
b25zLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZFJlY2VpdmVNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldEluamVjdGVk
QnVuZGxlQ2xpZW50KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFz
dGVib2FyZE5vdGlmaWNhdGlvbnNfQnVuZGxlLmNwcDogQWRkZWQuCisgICAgICAgIChQYXN0ZWJv
YXJkTm90aWZpY2F0aW9uc1Rlc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6d2lsbFdyaXRl
VG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkV3JpdGVUb1Bhc3RlYm9hcmQp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGFzdGVib2FyZE5vdGlmaWNhdGlvbnNUZXN0OjpQ
YXN0ZWJvYXJkTm90aWZpY2F0aW9uc1Rlc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGFz
dGVib2FyZE5vdGlmaWNhdGlvbnNUZXN0OjpkaWRDcmVhdGVQYWdlKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvZXhlY0NvcHkuaHRtbDogQWRkZWQuCisKIDIwMTMtMDEt
MzAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDEyMDUuCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTQxMzM5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw2ICsx
ODMsOSBAQAogCQlDNTFBRkI5OTE2OUY0OUZGMDA5Q0NGNjYgLyogRmluZE1hdGNoZXMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTFBRkI5ODE2OUY0
OUZGMDA5Q0NGNjYgLyogRmluZE1hdGNoZXMubW0gKi87IH07CiAJCUM1NDBGNzc2MTUyRTREQTAw
MEE0MEM4QyAvKiBTaW1wbGlmeU1hcmt1cC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDBGNzc1MTUyRTREQTAwMEE0MEM4QyAvKiBTaW1wbGlmeU1h
cmt1cC5tbSAqLzsgfTsKIAkJQzU0MEY3ODQxNTJFNUE5QTAwQTQwQzhDIC8qIHZlcmJvc2VNYXJr
dXAuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDNTQwRjc4MzE1MkU1QTc4MDBBNDBDOEMgLyogdmVyYm9zZU1hcmt1cC5odG1sICovOyB9
OworCQlDNTQyMzdGMDE2Qjg5NTU4MDBFNjM4RkMgLyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTQyMzdF
RTE2Qjg5NTU4MDBFNjM4RkMgLyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnMubW0gKi87IH07CisJ
CUM1NDIzN0YxMTZCODk1N0QwMEU2MzhGQyAvKiBQYXN0ZWJvYXJkTm90aWZpY2F0aW9uc19CdW5k
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU0
MjM3RUQxNkI4OTU1ODAwRTYzOEZDIC8qIFBhc3RlYm9hcmROb3RpZmljYXRpb25zX0J1bmRsZS5j
cHAgKi87IH07CisJCUM1RTFBRkZFMTZCMjIxRjEwMDZDQzFGMiAvKiBleGVjQ29weS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1RTFB
RkZEMTZCMjIxNzkwMDZDQzFGMiAvKiBleGVjQ29weS5odG1sICovOyB9OwogCQlDRDU0OTdCNDE1
ODU3RjBDMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTQ5N0IzMTU4NTdGMEMwMEI1QkMzMCAvKiBNZWRpYVRp
bWUuY3BwICovOyB9OwogCQlFMTIyMERBMDE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVE
aXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTIyMEQ5RjE1NUIyNTQ4MDAxM0UyRkMgLyogTWVt
b3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi87IH07CiAJCUUx
MjIwRENBMTU1QjI4QUEwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxMjIwREM5MTU1QjI4N0QwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURp
c2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovOyB9OwpAQCAtMjI2LDYgKzIy
OSw3IEBACiAJCQlkc3RQYXRoID0gVGVzdFdlYktpdEFQSS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJm
b2xkZXJTcGVjID0gNzsKIAkJCWZpbGVzID0gKAorCQkJCUM1RTFBRkZFMTZCMjIxRjEwMDZDQzFG
MiAvKiBleGVjQ29weS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTFBOUU1MkM5MTNF
NjVFRjQwMDY5MTdGNSAvKiAxOC1jaGFyYWN0ZXJzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJMzc5MDI4QjkxNEZBQzI0QzAwN0U2QjQzIC8qIGFjY2VwdHNGaXJzdE1vdXNlLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQjU1RjExQkUxNTE5MUEwNjAwOTE1OTE2IC8qIEFo
ZW0udHRmIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtNDU2LDYgKzQ2MCw5IEBACiAJCUM1MUFG
Qjk4MTY5RjQ5RkYwMDlDQ0Y2NiAvKiBGaW5kTWF0Y2hlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbmRNYXRjaGVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDNTQwRjc3NTE1MkU0REEwMDBBNDBDOEMgLyogU2ltcGxpZnlNYXJrdXAubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaW1wbGlmeU1hcmt1cC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MEY3ODMxNTJFNUE3ODAwQTQwQzhD
IC8qIHZlcmJvc2VNYXJrdXAuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IHZlcmJv
c2VNYXJrdXAuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzU0MjM3RUQxNkI4
OTU1ODAwRTYzOEZDIC8qIFBhc3RlYm9hcmROb3RpZmljYXRpb25zX0J1bmRsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXN0ZWJvYXJkTm90aWZpY2F0aW9uc19C
dW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNTQyMzdFRTE2Qjg5NTU4
MDBFNjM4RkMgLyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXN0ZWJvYXJkTm90aWZpY2F0aW9ucy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzVFMUFGRkQxNkIyMjE3OTAwNkNDMUYyIC8qIGV4ZWND
b3B5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBleGVjQ29weS5odG1sOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDU0OTdCMzE1ODU3RjBDMDBCNUJDMzAgLyogTWVk
aWFUaW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1lZGlhVGlt
ZS5jcHA7IHBhdGggPSBXVEYvTWVkaWFUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTEyMjBEOUYxNTVCMjU0ODAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhp
blJlc291cmNlTG9hZERlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMjIwREM5MTU1QjI4N0QwMDEzRTJGQyAv
KiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VM
b2FkRGVsZWdhdGUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1NSw2ICs2
NjIsOCBAQAogCQkJCUE1MUI2NTA4MTZBREY5QjEwMDdBQTVEOSAvKiBQYWdlVmlzaWJpbGl0eVN0
YXRlLmNwcCAqLywKIAkJCQk1MkU1Q0U0NTE0RDIxRTlEMDAzQjJCRDggLyogUGFyZW50RnJhbWUu
Y3BwICovLAogCQkJCTUyRTVDRTQ4MTREMjFFQUIwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZV9CdW5k
bGUuY3BwICovLAorCQkJCUM1NDIzN0VFMTZCODk1NTgwMEU2MzhGQyAvKiBQYXN0ZWJvYXJkTm90
aWZpY2F0aW9ucy5tbSAqLywKKwkJCQlDNTQyMzdFRDE2Qjg5NTU4MDBFNjM4RkMgLyogUGFzdGVi
b2FyZE5vdGlmaWNhdGlvbnNfQnVuZGxlLmNwcCAqLywKIAkJCQkzMzNCOUNFMTEyNzdGMjMxMDBG
RUZDRTMgLyogUHJldmVudEVtcHR5VXNlckFnZW50LmNwcCAqLywKIAkJCQlGNkZEREREMjE0MjQx
QUQ0MDA0RjE3MjkgLyogUHJpdmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2su
Y3BwICovLAogCQkJCUMwQkQ2NjlDMTMxRDNDRjcwMEUxOEYyQSAvKiBSZXNwb25zaXZlbmVzc1Rp
bWVyRG9lc250RmlyZUVhcmx5LmNwcCAqLywKQEAgLTcxNiw2ICs3MjUsNyBAQAogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJQzA0NUY5NDYxMzg1QzJGODAwQzBGM0NEIC8qIDE4LWNoYXJhY3RlcnMuaHRt
bCAqLywKIAkJCQk3NkUxODJERTE1NDc1QTgzMDBGMUZBREQgLyogYXV0by1zdWJtaXR0aW5nLWZv
cm0uaHRtbCAqLywKKwkJCQlDNUUxQUZGRDE2QjIyMTc5MDA2Q0MxRjIgLyogZXhlY0NvcHkuaHRt
bCAqLywKIAkJCQlCQzJEMDA0QTEyQTlGRUIzMDBFNzMyQTMgLyogZmlsZS13aXRoLWFuY2hvci5o
dG1sICovLAogCQkJCTFBMDJDODRCMTI1RDRBNUUwMEUzRjRCRCAvKiBmaW5kLmh0bWwgKi8sCiAJ
CQkJQkNCRDM3MkUxMjVBQkJFNjAwRDJDMjlGIC8qIGljb24ucG5nICovLApAQCAtMTA3NCw2ICsx
MDg0LDcgQEAKIAkJCQlCQzkwOTk1RTEyNTY3QkMxMDAwODM3NTYgLyogV0tTdHJpbmcuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM5MDk5OTQxMjU2QUNGMTAwMDgzNzU2IC8qIFdLU3RyaW5nSlNT
dHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjY1QUY1NTAxNUQxRTQ4QTAwQjBDQjRBIC8q
IFdURlN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDNTQyMzdGMDE2Qjg5NTU4MDBFNjM4
RkMgLyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTExMDks
NiArMTEyMCw3IEBACiAJCQkJNTIwQkNGNEMxNDFFQjA5RTAwOTM3RUE4IC8qIFdlYkFyY2hpdmVf
QnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2RTE4MkREMTU0NzU2OTEwMEYxRkFERCAv
KiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzkw
MUUzMzE0OTJBRjM5MDA3NEE2NjcgLyogV0tDb25uZWN0aW9uX0J1bmRsZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlDNTQyMzdGMTE2Qjg5NTdEMDBFNjM4RkMgLyogUGFzdGVib2FyZE5vdGlmaWNh
dGlvbnNfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL1Bhc3RlYm9hcmROb3RpZmljYXRpb25zLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYXN0ZWJvYXJkTm90aWZpY2F0aW9u
cy5tbQkocmV2aXNpb24gMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Q
YXN0ZWJvYXJkTm90aWZpY2F0aW9ucy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlRlc3QuaCIK
KworI2luY2x1ZGUgPFdlYktpdDIvV0tTdHJpbmcuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgeworCitzdGF0aWMgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOworCitzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tT
dHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK3sKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIlBhc3RlYm9hcmROb3RpZmljYXRpb25UZXN0RG9uZU1lc3NhZ2VOYW1lIikKKyAg
ICAgICAgJiYgV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdGF0aWNfY2FzdDxXS1N0cmlu
Z1JlZj4obWVzc2FnZUJvZHkpLCAiZGlkV3JpdGVUb1Bhc3RlYm9hcmQiKSkgeworICAgICAgICBO
U0RhdGEqIGRhdGEgPSBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gZGF0YUZvclR5
cGU6QCJBbm90aGVyQXJjaGl2ZVBhc3RlYm9hcmRUeXBlIl07CisgICAgICAgIEVYUEVDVF9ORShk
YXRhLCAoTlNEYXRhKiluaWwpOworICAgICAgICBmaW5pc2hlZCA9IHRydWU7CisgICAgfQorfQor
CitzdGF0aWMgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4
dCkKK3sKKyAgICBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCBpbmplY3RlZEJ1bmRsZUNs
aWVudDsKKyAgICBtZW1zZXQoJmluamVjdGVkQnVuZGxlQ2xpZW50LCAwLCBzaXplb2YoaW5qZWN0
ZWRCdW5kbGVDbGllbnQpKTsKKyAgICBpbmplY3RlZEJ1bmRsZUNsaWVudC52ZXJzaW9uID0gMDsK
KyAgICBpbmplY3RlZEJ1bmRsZUNsaWVudC5jbGllbnRJbmZvID0gMDsKKyAgICBpbmplY3RlZEJ1
bmRsZUNsaWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSA9IGRpZFJlY2Vp
dmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOworICAgIFdLQ29udGV4dFNldEluamVjdGVkQnVu
ZGxlQ2xpZW50KGNvbnRleHQsICZpbmplY3RlZEJ1bmRsZUNsaWVudCk7Cit9CisKK1RFU1QoV2Vi
S2l0MiwgUGFzdGVib2FyZE5vdGlmaWNhdGlvbnMpCit7CisgICAgW1tOU1Bhc3RlYm9hcmQgZ2Vu
ZXJhbFBhc3RlYm9hcmRdIGNsZWFyQ29udGVudHNdOworICAgIAorICAgIFdLUmV0YWluUHRyPFdL
Q29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVj
dGVkQnVuZGxlVGVzdCgiUGFzdGVib2FyZE5vdGlmaWNhdGlvbnNUZXN0IikpOworICAgIHNldElu
amVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCkpOworCisgICAgUGxhdGZvcm1XZWJWaWV3
IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1ByZWZlcmVuY2Vz
UmVmPiBwcmVmZXJlbmNlcyhBZG9wdFdLLCBXS1ByZWZlcmVuY2VzQ3JlYXRlKCkpOworICAgIFdL
UHJlZmVyZW5jZXNTZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKHByZWZlcmVuY2VzLmdl
dCgpLCB0cnVlKTsKKworICAgIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCA9IFdLUGFnZUdldFBh
Z2VHcm91cCh3ZWJWaWV3LnBhZ2UoKSk7CisgICAgV0tQYWdlR3JvdXBTZXRQcmVmZXJlbmNlcyhw
YWdlR3JvdXAsIHByZWZlcmVuY2VzLmdldCgpKTsKKworICAgIFdLUGFnZUxvYWRVUkwod2ViVmll
dy5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoImV4ZWNDb3B5Iiwg
Imh0bWwiKSkuZ2V0KCkpOworICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOworfQorCit9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvUGFzdGVib2FyZE5vdGlmaWNhdGlvbnNfQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFzdGVib2FyZE5vdGlmaWNhdGlvbnNf
QnVuZGxlLmNwcAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9QYXN0ZWJvYXJkTm90aWZpY2F0aW9uc19CdW5kbGUuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkluamVjdGVkQnVuZGxlVGVzdC5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
KyNpbmNsdWRlIDxXZWJLaXQyL1dLQXJyYXkuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxl
UGFnZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmg+
CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1dlYkFyY2hpdmUuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgeworCitjbGFzcyBQYXN0ZWJvYXJkTm90aWZpY2F0aW9uc1Rlc3QgOiBwdWJsaWMgSW5q
ZWN0ZWRCdW5kbGVUZXN0IHsKK3B1YmxpYzoKKyAgICBQYXN0ZWJvYXJkTm90aWZpY2F0aW9uc1Rl
c3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpOworCisgICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZik7Cit9OworCitzdGF0aWMg
SW5qZWN0ZWRCdW5kbGVUZXN0OjpSZWdpc3RlcjxQYXN0ZWJvYXJkTm90aWZpY2F0aW9uc1Rlc3Q+
IHJlZ2lzdHJhcigiUGFzdGVib2FyZE5vdGlmaWNhdGlvbnNUZXN0Iik7CisKK3N0YXRpYyB2b2lk
IHdpbGxXcml0ZVRvUGFzdGVib2FyZChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVSYW5n
ZUhhbmRsZVJlZiByYW5nZSwgIGNvbnN0IHZvaWQqKQoreworICAgIGlmICghcmFuZ2UpCisgICAg
ICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpzaGFyZWQo
KS5idW5kbGUoKSwgVXRpbDo6dG9XSygiUGFzdGVib2FyZE5vdGlmaWNhdGlvblRlc3REb25lTWVz
c2FnZU5hbWUiKS5nZXQoKSwgVXRpbDo6dG9XSygid2lsbFdyaXRldG9QYXN0ZWJvYXJkRmFpbCIp
LmdldCgpKTsKK30KKworc3RhdGljIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXS0J1
bmRsZVBhZ2VSZWYsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2UsIFdLQXJyYXlSZWYqIHBh
c3RlYm9hcmRUeXBlcywgV0tBcnJheVJlZiogcGFzdGVib2FyZERhdGEsIGNvbnN0IHZvaWQqKQor
eworICAgIFdLVHlwZVJlZiB0eXBlTmFtZSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJBbm90aGVyQXJjaGl2ZVBhc3RlYm9hcmRUeXBlIik7CisgICAgKnBhc3RlYm9hcmRUeXBlcyA9
IFdLQXJyYXlDcmVhdGVBZG9wdGluZ1ZhbHVlcygmdHlwZU5hbWUsIDEpOworICAgIFdLVHlwZVJl
ZiB0eXBlRGF0YSA9IFdLV2ViQXJjaGl2ZUNvcHlEYXRhKFdLV2ViQXJjaGl2ZUNyZWF0ZUZyb21S
YW5nZShyYW5nZSkpOworICAgICpwYXN0ZWJvYXJkRGF0YSA9IFdLQXJyYXlDcmVhdGVBZG9wdGlu
Z1ZhbHVlcygmdHlwZURhdGEsIDEpOworfQorCitzdGF0aWMgdm9pZCBkaWRXcml0ZVRvUGFzdGVi
b2FyZChXS0J1bmRsZVBhZ2VSZWYsIGNvbnN0IHZvaWQqKQoreworICAgIFdLQnVuZGxlUG9zdE1l
c3NhZ2UoSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpzaGFyZWQoKS5idW5kbGUoKSwgVXRpbDo6
dG9XSygiUGFzdGVib2FyZE5vdGlmaWNhdGlvblRlc3REb25lTWVzc2FnZU5hbWUiKS5nZXQoKSwg
VXRpbDo6dG9XSygiZGlkV3JpdGVUb1Bhc3RlYm9hcmQiKS5nZXQoKSk7Cit9CisKK1Bhc3RlYm9h
cmROb3RpZmljYXRpb25zVGVzdDo6UGFzdGVib2FyZE5vdGlmaWNhdGlvbnNUZXN0KGNvbnN0IHN0
ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQorICAgIDogSW5qZWN0ZWRCdW5kbGVUZXN0KGlkZW50aWZp
ZXIpCit7Cit9CisKK3ZvaWQgUGFzdGVib2FyZE5vdGlmaWNhdGlvbnNUZXN0OjpkaWRDcmVhdGVQ
YWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCit7ICAgIAorICAg
IFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudCBwYWdlRWRpdG9yQ2xpZW50OworCisgICAgbWVtc2V0
KCZwYWdlRWRpdG9yQ2xpZW50LCAwLCBzaXplb2YocGFnZUVkaXRvckNsaWVudCkpOworCisgICAg
cGFnZUVkaXRvckNsaWVudC52ZXJzaW9uID0gMTsKKyAgICBwYWdlRWRpdG9yQ2xpZW50LmNsaWVu
dEluZm8gPSB0aGlzOworICAgIHBhZ2VFZGl0b3JDbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJk
ID0gd2lsbFdyaXRlVG9QYXN0ZWJvYXJkOworICAgIHBhZ2VFZGl0b3JDbGllbnQuZ2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZSA9IGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2U7CisgICAgcGFnZUVk
aXRvckNsaWVudC5kaWRXcml0ZVRvUGFzdGVib2FyZCA9IGRpZFdyaXRlVG9QYXN0ZWJvYXJkOwor
CisgICAgV0tCdW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KHBhZ2UsICZwYWdlRWRpdG9yQ2xpZW50
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL2V4ZWNDb3B5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2V4ZWNDb3B5Lmh0bWwJKHJldmlzaW9uIDApCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvZXhlY0NvcHkuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKyAgZnVuY3Rpb24gZG9Db3B5KCkgeworICAgICAgZG9jdW1lbnQuZXhl
Y0NvbW1hbmQoInNlbGVjdEFsbCIsIHRydWUpOworICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQo
ImNvcHkiKTsKKyAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbkxvYWQ9ImRvQ29weSgp
Ij4KKyAgICA8ZGl2PkhlbGxvIHdvcmxkLjwvZGl2PgorICAgIDxkaXY+PGI+SGVsbG88L2I+PGk+
IHdvcmxkPC9pPjwvZGl2PgorICAgIDxkaXYgc3R5bGU9ImJvcmRlcjogc29saWQgcmVkIDFweCI+
SGVsbG8gd29ybGQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="205059"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>