<?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>72121</bug_id>
          
          <creation_ts>2011-11-11 05:53:00 -0800</creation_ts>
          <short_desc>[Qt][WK2] Set up plugin process on Unix</short_desc>
          <delta_ts>2012-04-02 09:52:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</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>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>82901</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Balazs Kelemen">kbalazs</reporter>
          <assigned_to name="Balazs Kelemen">kbalazs</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>hausmann</cc>
    
    <cc>jesus</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>500713</commentid>
    <comment_count>0</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-11-11 05:53:00 -0800</bug_when>
    <thetext>We already have the basic infrastructure, so let&apos;s make it alive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500736</commentid>
    <comment_count>1</comment_count>
      <attachid>114692</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-11-11 06:45:10 -0800</bug_when>
    <thetext>Created attachment 114692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500762</commentid>
    <comment_count>2</comment_count>
      <attachid>114692</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-11 07:32:49 -0800</bug_when>
    <thetext>Comment on attachment 114692
Patch

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

r=me, but please remove the MeeGoTouch bit before landing :)

&gt; Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:52
&gt; +#if USE(MEEGOTOUCH)
&gt; +    new MComponentData(argc, argv);

MeegoTouch? No thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500766</commentid>
    <comment_count>3</comment_count>
      <attachid>114692</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-11-11 07:46:15 -0800</bug_when>
    <thetext>Comment on attachment 114692
Patch

Wait a bit, another approach need to be considered: reusing the gtk process since we depend on gtk anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501718</commentid>
    <comment_count>4</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-11-14 01:27:17 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 114692 [details])
&gt; Wait a bit, another approach need to be considered: reusing the gtk process since we depend on gtk anyway.

After considering this possibility I think reusing the entry point is not a big deal so we shouldn&apos;t bother with that. So I&apos;m going to land the patch if you are not against it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501753</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-14 02:47:39 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 114692 [details] [details])
&gt; &gt; Wait a bit, another approach need to be considered: reusing the gtk process since we depend on gtk anyway.
&gt; 
&gt; After considering this possibility I think reusing the entry point is not a big deal so we shouldn&apos;t bother with that. So I&apos;m going to land the patch if you are not against it.

It&apos;s not about the entry point, it&apos;s about the plugin process being a Gtk+2 application (that doesn&apos;t link against Qt or Gtk3).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501810</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-14 05:07:13 -0800</bug_when>
    <thetext>For the time being I landed http://trac.webkit.org/changeset/100132 to disable plugins for x11 as long as they&apos;re in-process. This was causing crashes for too many developers, turning it into a PITA :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501855</commentid>
    <comment_count>7</comment_count>
      <attachid>114692</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-11-14 06:18:12 -0800</bug_when>
    <thetext>Comment on attachment 114692
Patch

At least it needs to be updated and also it&apos;s not clear whether it is the desired design.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508826</commentid>
    <comment_count>8</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-11-24 10:07:43 -0800</bug_when>
    <thetext>Adding a GTK expert because we need GTK knowleadge here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508827</commentid>
    <comment_count>9</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-11-24 10:09:58 -0800</bug_when>
    <thetext>I take a closer look into the GTK PluginProcess. (Context: I&apos;m investigating of reusing the GTK2 based plugin process for the Qt port. The rationale is that plugins depend on GTK2 anyway and also that the architecture of Qt5 makes implementing plugin support a bit hard.) I was wondering about how much it is using WebCore and JSCore. It links to the WebCore, the Gtk2 version of JSCore (I&apos;m not sure why GTK has this, maybe because of other reasons as well), and another static lib named WebCoreGtk2, which contains the GTK2 platform parts of WebCore. However, what gprof showed me is that it actually does not call into WebCore too much. Actually the profile created for just launching a flash movie and closing the app does not show me any calls into WebCore, just a few to WTF functions. In summary it seems to be not impossible to just find the dependencies manually and build all of them. I am also thinking about whether we could have a shared project file. In the case of Qt it would mean additional build time dependencies but maybe that&apos;s acceptable. I&apos;m curious about your opinion on the topic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508835</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-11-24 10:42:27 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; I take a closer look into the GTK PluginProcess. (Context: I&apos;m investigating of reusing the GTK2 based plugin process for the Qt port. The rationale is that plugins depend on GTK2 anyway and also that the architecture of Qt5 makes implementing plugin support a bit hard.) I was wondering about how much it is using WebCore and JSCore. It links to the WebCore, the Gtk2 version of JSCore (I&apos;m not sure why GTK has this, maybe because of other reasons as well), and another static lib named WebCoreGtk2, which contains the GTK2 platform parts of WebCore. However, what gprof showed me is that it actually does not call into WebCore too much.

Maybe it has changed recently, but when I enabled plugin process for GTK+ port, the webkit2 code used by the plugin process depended on WebCore, that&apos;s why we had to split WebCore into two static libs, one containing only the files that actually use gtk to be able to build it twice: WebCoreGtk2 (linking to gtk2 and used only by plugin process) and WebCoreGtk (linking to gtk3 and used by web and UI processes).

&gt; Actually the profile created for just launching a flash movie and closing the app does not show me any calls into WebCore, just a few to WTF functions. In summary it seems to be not impossible to just find the dependencies manually and build all of them. 

That&apos;s what I did, and the files listed in Programs_WebKitPluginProcess_SOURCES (in Source/WebKit2/GNUmakefile.am) are all the files I needed to build the plugin process.

&gt; I am also thinking about whether we could have a shared project file. In the case of Qt it would mean additional build time dependencies but maybe that&apos;s acceptable. I&apos;m curious about your opinion on the topic.

yes, it&apos;s more build time for us too, but I think it&apos;s worth it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509074</commentid>
    <comment_count>11</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-11-25 04:03:09 -0800</bug_when>
    <thetext>I have realized that I did the profile wrong. I only added &quot;-g -pg&quot; for the plugin process but not to WebCore. I&apos;m going to do it again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509211</commentid>
    <comment_count>12</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-11-25 10:26:57 -0800</bug_when>
    <thetext>I have investigated a bit more. Unfortunately with no success. Actually the profiles does not show very much dependency but I guess that is because of their statistical nature. When I tried to throw away the WebCore static lib and just build the dependencies along with the binary than a lot of other undefined functions appeared. Even just GraphicsContext has a huge dependency tree. By just examining the binary (nm) there are tons of WebCore symbols. If I&apos;m not wrong those would be thrown away if they would not be referenced. The fact is that the plugin process binary is 25M (release!). After all I don&apos;t think it&apos;s suitable for Qt to depend on a GTK WebCore just for plugins. Actually the real solution would be a self-contained plugin process but that is a totally different design than what we have now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513728</commentid>
    <comment_count>13</comment_count>
      <attachid>117617</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-12-02 07:01:22 -0800</bug_when>
    <thetext>Created attachment 117617
patch

Another WIP patch (however I think it&apos;s good enough to be reviewed now).
I have to solve an issue with the Gtk build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513729</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-02 07:03:47 -0800</bug_when>
    <thetext>Attachment 117617 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/QtWebKit.pro&apos;, u&apos;Sour...&quot; exit_code: 1

Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:43:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:119:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebKit2/Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:185:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebKit2/qt/PluginMainQt.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/qt/PluginMainQt.cpp:31:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 7 in 18 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>513730</commentid>
    <comment_count>15</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-12-02 07:06:32 -0800</bug_when>
    <thetext>The approach of the new patch was inspired by Simon&apos;s comment in #72961:
&quot;Like I said in the previous comment, I&apos;d prefer a non-IPC approach with a disk-cache. See also bug #43179 for an alternate approach of using an sqlite database as cache.&quot;

The patch does actually 2 think:
 - set up the plugin process for qt
 - move away all plugin loading to the plugin process

Without the second we cannot be safe from plugin crashes, that&apos;s why I did these in one step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513742</commentid>
    <comment_count>16</comment_count>
      <attachid>117617</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-12-02 07:21:42 -0800</bug_when>
    <thetext>Comment on attachment 117617
patch

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

Self review :) - to help you reviewing the patch.

&gt; Source/WebKit2/Shared/qt/ShareableBitmapQt.cpp:74
&gt; +    if (scaleFactor == 1.0) {
&gt; +        paint(context, dstPoint, srcRect);
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    context.platformContext()-&gt;drawImage(dstPoint, createQImage(), QRect(srcRect));

That&apos;s wrong, I did not consider the scale factor. Will fix.

&gt; Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:71
&gt; +#elif PLATFORM(GKT) &amp;&amp; defined(LIBEXECDIR)
&gt; +    // LIBEXECDIR is not defined when we build the static binary of the plugin process.
&gt; +    const gchar* execDirectory = g_getenv(&quot;WEBKIT_EXEC_PATH&quot;);
&gt; +    return CString(g_build_filename(execDirectory ? execDirectory : LIBEXECDIR, &quot;WebKitPluginProcess&quot;);
&gt; +#else

Acually that&apos;s not true, LIBEXECDIR is not neither defined when building the lib. I get this code from ProcessLauncherGtk.cpp. I couldn&apos;t figure out where this thing is coming from (even preprocessing ProcessLauncherGtk.cpp did not help), it&apos;s seems like it&apos;s some Gtk magic.

&gt; Source/WebKit2/qt/PluginMainQt.cpp:3
&gt; - * Copyright (C) 2011 Igalia S.L.
&gt; + * Copyright (C) 2011 Apple Inc. All rights reserved.
&gt; + * Copyright (C) 2011 University of Szeged. All rights reserved.

Don&apos;t worry about copirights, this is actually a new file but git diff messed it up with the one I removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513818</commentid>
    <comment_count>17</comment_count>
      <attachid>117617</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-12-02 09:06:39 -0800</bug_when>
    <thetext>Comment on attachment 117617
patch

Attachment 117617 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10725419</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514658</commentid>
    <comment_count>18</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-12-04 01:31:54 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:71
&gt; &gt; +#elif PLATFORM(GKT) &amp;&amp; defined(LIBEXECDIR)
&gt; &gt; +    // LIBEXECDIR is not defined when we build the static binary of the plugin process.
&gt; &gt; +    const gchar* execDirectory = g_getenv(&quot;WEBKIT_EXEC_PATH&quot;);
&gt; &gt; +    return CString(g_build_filename(execDirectory ? execDirectory : LIBEXECDIR, &quot;WebKitPluginProcess&quot;);
&gt; &gt; +#else
&gt; 
&gt; Acually that&apos;s not true, LIBEXECDIR is not neither defined when building the lib. I get this code from ProcessLauncherGtk.cpp. I couldn&apos;t figure out where this thing is coming from (even preprocessing ProcessLauncherGtk.cpp did not help), it&apos;s seems like it&apos;s some Gtk magic.

The &quot;magic&quot; has nothing to do with GTK, it&apos;s just a compiler command line parameter -DLIBEXECDIR=/foo/bar</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515773</commentid>
    <comment_count>19</comment_count>
      <attachid>118016</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-12-06 03:17:02 -0800</bug_when>
    <thetext>Created attachment 118016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515806</commentid>
    <comment_count>20</comment_count>
      <attachid>118025</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-12-06 04:36:16 -0800</bug_when>
    <thetext>Created attachment 118025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515807</commentid>
    <comment_count>21</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-12-06 04:37:36 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Created an attachment (id=118025) [details]
&gt; Patch

Fixed the mac build (hopefully).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519118</commentid>
    <comment_count>22</comment_count>
      <attachid>118025</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-12-12 03:54:36 -0800</bug_when>
    <thetext>Comment on attachment 118025
Patch

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

&gt; Source/WebCore/platform/qt/FileSystemQt.cpp:223
&gt; +    QByteArray local8Bit = static_cast&lt;QString&gt;(path).toLocal8Bit();

This should be written as

    QByteArray local8Bit = QFile::encodeName(static_Cast&lt;QString&gt;(path));

&gt; Source/WebKit2/PluginProcess.pro:22
&gt; +QT += network
&gt; +macx: QT += xml

I think you can leave these two lines out. Let&apos;s add them it really turns out that we need them :)

&gt; Source/WebKit2/PluginProcess.pro:27
&gt; +contains(QT_CONFIG, opengl) {
&gt; +    QT += opengl
&gt; +    DEFINES += QT_CONFIGURED_WITH_OPENGL
&gt; +}

This seems unnecessary as well for the plugin process.

&gt; Source/WebKit2/Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:235
&gt; +    String baseName = pluginFileName + String::format(&quot;.%u&quot;, StringHash::hash(pluginPath)) + String(&quot;.bin&quot;);

One thing I don&apos;t like about the approach of having one meta-data file per plugin is that over time we end up accumulating garbage. If a plugin gets removed from the system, we never remove the .bin file.

I think it would be better to re-use the plugin meta-data cache code from WebCore/plugins/PluginDatabase.cpp, which collects all meta-data together in one file.

&gt; Source/WebKit2/Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:358
&gt; +    QString dataLocation = QStandardPaths::writableLocation(QStandardPaths::DataLocation);
&gt; +    if (dataLocation.isEmpty())
&gt; +        dataLocation = pathByAppendingComponent(QDir::homePath(), QCoreApplication::applicationName());
&gt; +    dataLocation = pathByAppendingComponent(dataLocation, &quot;.QtWebKit&quot;);
&gt; +    cacheDirectory = dataLocation;

This is me nitpicking: So we call pathByAppendingComponent, which takes a String and returns one. But we pass QStrings and have that also as return value.

I suggest to rewrite this block to either use String instead of QString more consistently or using Qt APIs all the way.

&gt; Source/WebKit2/Shared/qt/ShareableBitmapQt.cpp:69
&gt; +    if (scaleFactor == 1.0) {

I suggest to use qFuzzyCompare for comparing the float against an absolute value.

&gt; Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:45
&gt; +void PluginProcessProxy::platformInitializePluginProcess(PluginProcessCreationParameters&amp; parameters)

Unused parameter?

&gt; Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:54
&gt; +    CString pluginPathASCII = pluginPath.ascii();
&gt; +    CString filePathASCII = filePath.ascii();

Shuldn&apos;t this use fileSystemRepresentation() ?

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h:347
&gt; +

Stray newline?

&gt; Source/WebKit2/qt/PluginMainQt.cpp:39
&gt; +    QLibrary gtkLibrary(QLatin1String(&quot;libgtk-x11-2.0&quot;), 0);

Before you can use QLibrary you have to instantiate a QCoreApplication (at least) ;(

Perhaps the gtk initialization needs to be done at a later point then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520158</commentid>
    <comment_count>23</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-12-13 10:27:03 -0800</bug_when>
    <thetext>&gt; One thing I don&apos;t like about the approach of having one meta-data file per plugin is that over time we end up accumulating garbage. If a plugin gets removed from the system, we never remove the .bin file.

This is not impossible to remove those files if there is no plugin associated wit h them. There are some minor advantages of having one file per plugin:
 - we do almost exactly the same as the Mac port
 - we can compare the modification date of the file and the plugin
 - fit well with how PluginInfoStore works currently

&gt; I think it would be better to re-use the plugin meta-data cache code from WebCore/plugins/PluginDatabase.cpp, which collects all meta-data together in one file.
&gt; 

Theoretically a lot of things could be reused from the wk1 plugin code but it has been chosen to reimplement the plugin system for wk2 so it&apos;s not trivial to reuse just one piece. 

Currently I am investigating in merging the two (and using just one cache file), I&apos;m just a bit dubious about whether it&apos;s really worth to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521850</commentid>
    <comment_count>24</comment_count>
      <attachid>119415</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-12-15 06:05:09 -0800</bug_when>
    <thetext>Created attachment 119415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521855</commentid>
    <comment_count>25</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-12-15 06:17:25 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 118025 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=118025&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/qt/FileSystemQt.cpp:223
&gt; &gt; +    QByteArray local8Bit = static_cast&lt;QString&gt;(path).toLocal8Bit();
&gt; 
&gt; This should be written as
&gt; 
&gt;     QByteArray local8Bit = QFile::encodeName(static_Cast&lt;QString&gt;(path));

Fixed.

&gt; 
&gt; &gt; Source/WebKit2/PluginProcess.pro:22
&gt; &gt; +QT += network
&gt; &gt; +macx: QT += xml
&gt; 
&gt; I think you can leave these two lines out. Let&apos;s add them it really turns out that we need them :)
&gt; 
&gt; &gt; Source/WebKit2/PluginProcess.pro:27
&gt; &gt; +contains(QT_CONFIG, opengl) {
&gt; &gt; +    QT += opengl
&gt; &gt; +    DEFINES += QT_CONFIGURED_WITH_OPENGL
&gt; &gt; +}
&gt; 
&gt; This seems unnecessary as well for the plugin process.

Fixed.

&gt; 
&gt; &gt; Source/WebKit2/Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:235
&gt; &gt; +    String baseName = pluginFileName + String::format(&quot;.%u&quot;, StringHash::hash(pluginPath)) + String(&quot;.bin&quot;);
&gt; 
&gt; One thing I don&apos;t like about the approach of having one meta-data file per plugin is that over time we end up accumulating garbage. If a plugin gets removed from the system, we never remove the .bin file.
&gt; 
&gt; I think it would be better to re-use the plugin meta-data cache code from WebCore/plugins/PluginDatabase.cpp, which collects all meta-data together in one file.

I did not change on that. I started to implement it with only one file but I did not like that. At the plugin process side we need to append the content and the UI process need to read the file again and again. Also it&apos;s pretty confusing how to behave on IO error - which can happen in both processes - or data corruption. With one file per plugin we never write the files at the UI side and we don&apos;t need to regenerate everything if the data for a particular plugin is out-of-date or has been corrupted. Also, I don&apos;t think we should merge it with the WebCore implementation. It would make thinks overcomplicated as the WK2 plugin system is diverging too much from WebCore.

&gt; &gt; Source/WebKit2/Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:358
&gt; &gt; +    QString dataLocation = QStandardPaths::writableLocation(QStandardPaths::DataLocation);
&gt; &gt; +    if (dataLocation.isEmpty())
&gt; &gt; +        dataLocation = pathByAppendingComponent(QDir::homePath(), QCoreApplication::applicationName());
&gt; &gt; +    dataLocation = pathByAppendingComponent(dataLocation, &quot;.QtWebKit&quot;);
&gt; &gt; +    cacheDirectory = dataLocation;
&gt; 
&gt; This is me nitpicking: So we call pathByAppendingComponent, which takes a String and returns one. But we pass QStrings and have that also as return value.

Fixed.

&gt; 
&gt; I suggest to rewrite this block to either use String instead of QString more consistently or using Qt APIs all the way.
&gt; 
&gt; &gt; Source/WebKit2/Shared/qt/ShareableBitmapQt.cpp:69
&gt; &gt; +    if (scaleFactor == 1.0) {
&gt; 
&gt; I suggest to use qFuzzyCompare for comparing the float against an absolute value.

Fixed.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:45
&gt; &gt; +void PluginProcessProxy::platformInitializePluginProcess(PluginProcessCreationParameters&amp; parameters)
&gt; 
&gt; Unused parameter?

Fixed.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:54
&gt; &gt; +    CString pluginPathASCII = pluginPath.ascii();
&gt; &gt; +    CString filePathASCII = filePath.ascii();
&gt; 
&gt; Shuldn&apos;t this use fileSystemRepresentation() ?

Fixed.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h:347
&gt; &gt; +
&gt; 
&gt; Stray newline?

Fixed.

&gt; 
&gt; &gt; Source/WebKit2/qt/PluginMainQt.cpp:39
&gt; &gt; +    QLibrary gtkLibrary(QLatin1String(&quot;libgtk-x11-2.0&quot;), 0);
&gt; 
&gt; Before you can use QLibrary you have to instantiate a QCoreApplication (at least) ;(
&gt; 
&gt; Perhaps the gtk initialization needs to be done at a later point then?

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534754</commentid>
    <comment_count>26</comment_count>
      <attachid>122217</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-01-12 05:05:48 -0800</bug_when>
    <thetext>Created attachment 122217
fixed win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561911</commentid>
    <comment_count>27</comment_count>
      <attachid>122217</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-02-22 06:10:26 -0800</bug_when>
    <thetext>Comment on attachment 122217
fixed win build

Need to update and split up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561940</commentid>
    <comment_count>28</comment_count>
      <attachid>128204</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-02-22 06:49:13 -0800</bug_when>
    <thetext>Created attachment 128204
patch

Only the process setup part, no caching of meta data. Plugin scanning has been implemented by reading stdout of plugin process via QProcess. It&apos;s still a WIP version since I did not test on Gtk because I have some build issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562560</commentid>
    <comment_count>29</comment_count>
      <attachid>128332</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-02-22 16:48:43 -0800</bug_when>
    <thetext>Created attachment 128332
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566530</commentid>
    <comment_count>30</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-02-28 02:30:35 -0800</bug_when>
    <thetext>*** Bug 72961 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572576</commentid>
    <comment_count>31</comment_count>
      <attachid>128332</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-03-06 23:20:21 -0800</bug_when>
    <thetext>Comment on attachment 128332
Patch

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

A couple of nitpicks, but otherwise this looks good to me. Let&apos;s do one last round :)

&gt; Source/WebKit2/PluginProcess.pro:7
&gt; +load(features)

Is this needed?

&gt; Source/WebKit2/PluginProcess/gtk/PluginProcessMainGtk.cpp:61
&gt; +    fprintf(stderr, &quot;PP running\nargs=%s,%s,%s\n&quot;, argv[0], argv[1], argv[2]);

If arc2 == 2, which seems like a valid condition, the accessing argv[2] here seems like an out-of-bounds array access.

&gt; Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:97
&gt; +        // QProcess does not allow to read the output of the process after
&gt; +        // it has been terminated. Let&apos;s go to sleep and rely on the UI
&gt; +        // process to kill us.
&gt; +        sleep(10);

I don&apos;t understand how this is needed. The documentation of the QProcess finished signal explains that the buffer should still be intact. Is there perhaps an fflush(stdout); or so missing here?

&gt; Source/WebKit2/Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:153
&gt; +    return adoptPtr(truncated);

I think this should be adoptArrayPtr.

&gt; Source/WebKit2/Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:172
&gt; +    OwnPtr&lt;char&gt; name(truncateNewLines(metaData.name.ascii().data()));

Wait, truncateNewLines takes a String() as argument, but we&apos;re passing a const char * as parameter, so this is implicitly constructing a String. Shouldn&apos;t truncateNewLines take a const char* instead then?

&gt; Source/WebKit2/Shared/qt/ShareableBitmapQt.cpp:80
&gt; +    if (qFuzzyCompare(scaleFactor, 1)) {
&gt; +        paint(context, dstPoint, srcRect);
&gt; +        return;
&gt; +    }

Hm, my memory is weak here, but doesn&apos;t this belong into a separate patch? :)

&gt; Source/WebKit2/UIProcess/Plugins/qt/PluginProcessProxyQt.cpp:63
&gt; +    QByteArray output = process-&gt;readAll();

Perhaps this could be simplified by using the patter that you can also find in the QProcess auto-tests:

process.start();
process.waitForStarted();
if (process.waitForFinished()) {
    // success, read all stdout
} else
    // Fail, probably crashed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573789</commentid>
    <comment_count>32</comment_count>
      <attachid>130813</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-03-08 06:11:56 -0800</bug_when>
    <thetext>Created attachment 130813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573791</commentid>
    <comment_count>33</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-03-08 06:12:26 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; (From update of attachment 128332 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128332&amp;action=review
&gt; 
&gt; A couple of nitpicks, but otherwise this looks good to me. Let&apos;s do one last round :)
&gt; 
&gt; &gt; Source/WebKit2/PluginProcess.pro:7
&gt; &gt; +load(features)
&gt; 
&gt; Is this needed?

No, removed.

&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/gtk/PluginProcessMainGtk.cpp:61
&gt; &gt; +    fprintf(stderr, &quot;PP running\nargs=%s,%s,%s\n&quot;, argv[0], argv[1], argv[2]);
&gt; 
&gt; If arc2 == 2, which seems like a valid condition, the accessing argv[2] here seems like an out-of-bounds array access.

Well, it just left over from debugging. Removed.

&gt; &gt; Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:97
&gt; &gt; +        // QProcess does not allow to read the output of the process after
&gt; &gt; +        // it has been terminated. Let&apos;s go to sleep and rely on the UI
&gt; &gt; +        // process to kill us.
&gt; &gt; +        sleep(10);
&gt; 
&gt; I don&apos;t understand how this is needed. The documentation of the QProcess finished signal explains that the buffer should still be intact. Is there perhaps an fflush(stdout); or so missing here?

Right, by using waitForFinished() I could remove this. Fixed.

&gt; 
&gt; &gt; Source/WebKit2/Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:153
&gt; &gt; +    return adoptPtr(truncated);
&gt; 
&gt; I think this should be adoptArrayPtr.
&gt; 
&gt; &gt; Source/WebKit2/Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:172
&gt; &gt; +    OwnPtr&lt;char&gt; name(truncateNewLines(metaData.name.ascii().data()));
&gt; 
&gt; Wait, truncateNewLines takes a String() as argument, but we&apos;re passing a const char * as parameter, so this is implicitly constructing a String. Shouldn&apos;t truncateNewLines take a const char* instead then?

Both are true. However I realized that I was totally unaware of the fact that the meta data is UTF8 (since http://trac.webkit.org/changeset/108281). So I had to rework this in order to pass the unicode data without conversion.

&gt; 
&gt; &gt; Source/WebKit2/Shared/qt/ShareableBitmapQt.cpp:80
&gt; &gt; +    if (qFuzzyCompare(scaleFactor, 1)) {
&gt; &gt; +        paint(context, dstPoint, srcRect);
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; 
&gt; Hm, my memory is weak here, but doesn&apos;t this belong into a separate patch? :)

Without this you won&apos;t see anything from the plugin, so I think it&apos;s better to add this here so we can make sure that this stuff is actually working :)

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/qt/PluginProcessProxyQt.cpp:63
&gt; &gt; +    QByteArray output = process-&gt;readAll();
&gt; 
&gt; Perhaps this could be simplified by using the patter that you can also find in the QProcess auto-tests:
&gt; 
&gt; process.start();
&gt; process.waitForStarted();
&gt; if (process.waitForFinished()) {
&gt;     // success, read all stdout
&gt; } else
&gt;     // Fail, probably crashed.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573792</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-08 06:15:03 -0800</bug_when>
    <thetext>Attachment 130813 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/QtWebKit.pro&apos;, u&apos;Sour...&quot; exit_code: 1
Source/WebKit2/Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:161:  Missing space before ( in while(  [whitespace/parens] [5]
Source/WebKit2/Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:193:  Missing space before ( in while(  [whitespace/parens] [5]
Total errors found: 2 in 21 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>573803</commentid>
    <comment_count>35</comment_count>
      <attachid>130819</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-03-08 06:49:41 -0800</bug_when>
    <thetext>Created attachment 130819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574016</commentid>
    <comment_count>36</comment_count>
      <attachid>130819</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-03-08 11:38:41 -0800</bug_when>
    <thetext>Comment on attachment 130819
Patch

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

r=me with comments. A few things that should be fixed before landing. The QProcess one could be done in a separate patch or you could fix up this one and upload a new version of this patch. Whichever you prefer :)

&gt; Source/WebKit2/PluginProcess.pro:17
&gt; +CONFIG += qtwebkit

Note that when the fix for bug #80590 lands, this has to be written as QT += webkit instead.

&gt; Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:75
&gt; +    QApplication app(argc, argv);

In the future we should change this to be QGuiApplication. At the latest as part of the fix for bug #79458.

&gt; Source/WebKit2/Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:146
&gt; +    unsigned newLenght = 0;

newLenght -&gt; newLength :)

&gt; Source/WebKit2/Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:163
&gt; +static inline void putCharToStdOut(char c)
&gt; +{
&gt; +    int result;
&gt; +    while ((result = fputc(c, stdout)) == EOF &amp;&amp; errno == EINTR) { }
&gt; +    ASSERT(result != EOF);
&gt; +}

This function seems unused. Looks like an earlier left-over that could be removed before landing.

&gt; Source/WebKit2/UIProcess/Plugins/qt/PluginProcessProxyQt.cpp:64
&gt; +    QProcess* process = new QProcess;
&gt; +    QObject::connect(process, SIGNAL(finished(int)), process, SLOT(deleteLater()), Qt::QueuedConnection);
&gt; +    process-&gt;setReadChannel(QProcess::StandardOutput);
&gt; +    process-&gt;start(commandLine);
&gt; +
&gt; +    if (!process-&gt;waitForFinished()
&gt; +        || process-&gt;exitStatus() != QProcess::NormalExit
&gt; +        || process-&gt;exitCode() != EXIT_SUCCESS) {
&gt; +        process-&gt;kill();
&gt; +        return false;
&gt; +    }
&gt; +

Since you now deal with the process synchronously, I think you can safely allocate the process object on the stack and get rid of the finished -&gt; deleteLater connection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574678</commentid>
    <comment_count>37</comment_count>
      <attachid>130819</attachid>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2012-03-08 23:50:46 -0800</bug_when>
    <thetext>Comment on attachment 130819
Patch

This patch needs a slight tweak after the Qt module patch was landed. See https://bugs.webkit.org/show_bug.cgi?id=80590#c14</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574688</commentid>
    <comment_count>38</comment_count>
      <attachid>130819</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-03-09 00:07:33 -0800</bug_when>
    <thetext>Comment on attachment 130819
Patch

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

&gt; Source/WebKit2/GNUmakefile.am:1480
&gt; +	Source/WebKit2/UIProcess/Launcher/ProcessLauncher.cpp \
&gt; +	Source/WebKit2/UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp \
&gt; +	Source/WebKit2/UIProcess/Plugins/gtk/PluginProcessProxyGtk.cpp \

It&apos;s a bit weird that the plugin process needs sources of the UI process. It needs the Launcher but it doesn&apos;t use it to launch a process, just to get the executable path of the plugin process. Maybe we could move ProcessType stuff to Shared with the method to get the path of the process there, and Launcher would use it from Shared too.

&gt; Source/WebKit2/UIProcess/Plugins/gtk/PluginProcessProxyGtk.cpp:61
&gt; +    if (!g_spawn_sync(0, argv, 0, G_SPAWN_STDERR_TO_DEV_NULL, 0, 0, &amp;stdOut, 0, &amp;status, &amp;error.outPtr()))
&gt; +        return false;

Your are not handling errors, you should either show a warning message if it failed or just pass NULL instead of error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574728</commentid>
    <comment_count>39</comment_count>
      <attachid>130819</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-03-09 01:42:22 -0800</bug_when>
    <thetext>Comment on attachment 130819
Patch

That&apos;s enough for another iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574840</commentid>
    <comment_count>40</comment_count>
      <attachid>131033</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-03-09 05:36:40 -0800</bug_when>
    <thetext>Created attachment 131033
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574841</commentid>
    <comment_count>41</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-03-09 05:40:55 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; (From update of attachment 130819 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130819&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/GNUmakefile.am:1480
&gt; &gt; +	Source/WebKit2/UIProcess/Launcher/ProcessLauncher.cpp \
&gt; &gt; +	Source/WebKit2/UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp \
&gt; &gt; +	Source/WebKit2/UIProcess/Plugins/gtk/PluginProcessProxyGtk.cpp \

Fixed. The PluginProcessProxy still need to be added for linking.
I could move the scanPlugin function into NetscapePluginModuleX11.cpp but it would not change on the fact that we need a function to link in that we do not actually use in the plugin process. I think it&apos;s somewhat nicer to go through the PluginProcessProxy, this is what he is for.

Fixed the all other comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574894</commentid>
    <comment_count>42</comment_count>
      <attachid>131033</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-09 08:00:30 -0800</bug_when>
    <thetext>Comment on attachment 131033
Patch

Attachment 131033 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11915545</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574897</commentid>
    <comment_count>43</comment_count>
      <attachid>131033</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2012-03-09 08:09:57 -0800</bug_when>
    <thetext>Comment on attachment 131033
Patch

Attachment 131033 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11903610</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574924</commentid>
    <comment_count>44</comment_count>
      <attachid>131043</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-03-09 08:56:16 -0800</bug_when>
    <thetext>Created attachment 131043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575014</commentid>
    <comment_count>45</comment_count>
      <attachid>131043</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-09 11:04:18 -0800</bug_when>
    <thetext>Comment on attachment 131043
Patch

Attachment 131043 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11906682</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575766</commentid>
    <comment_count>46</comment_count>
      <attachid>131242</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-03-11 10:18:52 -0700</bug_when>
    <thetext>Created attachment 131242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575768</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-11 10:21:26 -0700</bug_when>
    <thetext>Attachment 131242 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/QtWebKit.pro&apos;, u&apos;Sour...&quot; exit_code: 1
Source/WebKit2/Shared/gtk/ProcessExecutablePathGtk.cpp:28:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Source/WebKit2/Shared/gtk/ProcessExecutablePathGtk.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/UIProcess/Plugins/gtk/PluginProcessProxyGtk.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 24 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>575770</commentid>
    <comment_count>48</comment_count>
      <attachid>131243</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-03-11 10:24:10 -0700</bug_when>
    <thetext>Created attachment 131243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575774</commentid>
    <comment_count>49</comment_count>
      <attachid>131243</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-03-11 10:26:37 -0700</bug_when>
    <thetext>Comment on attachment 131243
Patch

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

&gt; Tools/MiniBrowser/gtk/GNUmakefile.am:35
&gt; -	$(GTK_LIBS)
&gt; +	$(GTK_LIBS) \
&gt; +	$(LIBSOUP_LIBS)

This had to be added unless MiniBrowser doesn&apos;t link. Honestly I don&apos;t understand where does this dependency came from. In fact GtkLauncher also has this so maybe it&apos;s ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593408</commentid>
    <comment_count>50</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-04-02 06:10:03 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/112868</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>114692</attachid>
            <date>2011-11-11 06:45:10 -0800</date>
            <delta_ts>2011-11-14 06:18:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72121-20111111154508.patch</filename>
            <type>text/plain</type>
            <size>12039</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4NzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5MmM3MjFlMzgzM2U1MWYy
YWJhNTE3NGY0NWI2YzczZDYyNmE4NjY4Li44OTUyN2RmZTE2ZjdlN2E2ZWZlNjI2OGM4YjhiNWZm
MTI5ODcxZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMTEtMTEgIEJhbGF6
cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBTZXQg
dXAgcGx1Z2luIHByb2Nlc3Mgb24gVW5peAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzIxMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBEbyB0aGUgZmluYWwgc3RlcHMgdG8gbWFrZSBvdXIgcGx1Z2luIHBy
b2Nlc3MgYWxpdmUuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzLnBybzogQWRkZWQuCisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW4pOiBSZXdyaXRlIHdoYXQgd2FzCisgICAgICAgIGhl
cmUgc2luY2UgaXQgd2FzIG5vdCByZWFsbHkgYXBwcm9wcmlhdGUgKGp1c3QKKyAgICAgICAgY29w
aWVkIG92ZXIgZnJvbSB0aGUgTWFjIGNvZGUpLiBQcm9jZXNzIHRoZSBjb25uZWN0aW9uCisgICAg
ICAgIGlkZW50aWZpZXIgYXJndW1lbnQgYW5kIGluaXRpYWxpemUgdGhlIGZyYW1ld29yay4KKyAg
ICAgICAgKiBTaGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OnBhaW50KTogSW1wbGVtZW50IHRoZSBvdmVycmlkZQorICAgICAg
ICB3aXRoIHRoZSBzY2FsZSBmYWN0b3IgYXMgaXQgaXMgdXNlZCBieSBQbHVnaW5Qcm94eS4KKyAg
ICAgICAgKiBUYXJnZXQucHJpOiBBZGQgbWlzc2luZyBmaWxlIHRvIHRoZSBidWlsZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIGNv
bmZpZy5oOgorICAgICAgICAqIHF0L1BsdWdpbk1haW5RdC5jcHA6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5RdC5jcHAuCisgICAg
ICAgIChtYWluKToKKwogMjAxMS0xMS0xMCAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgW1F0XSBYMTEgcGx1Z2lucyBuZWVkIHRvIGJlIHJld29ya2VkIGZv
ciBRdDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9RdFdlYktpdC5wcm8gYi9Tb3VyY2UvUXRXZWJLaXQu
cHJvCmluZGV4IGNmMTI3ODU5YTc4ODJlYjU0NDg1MDM1MjE0NjQzNzUxMDIxOThhZDcuLmM4MzA4
MDQ0Nzk4OWJjNjllMTYzYmMwOGVlMTlkZDc2YTdjYmE2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9R
dFdlYktpdC5wcm8KKysrIGIvU291cmNlL1F0V2ViS2l0LnBybwpAQCAtNCw2ICs0LDggQEAKICMg
U2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQgc3lz
dGVtCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAorbG9hZChmZWF0dXJlcykKKwogVEVNUExBVEUgPSBzdWJkaXJz
CiBDT05GSUcgKz0gb3JkZXJlZAogCkBAIC0xMyw2ICsxNSwxMCBAQCBTVUJESVJTICs9IGFwaQog
IW5vX3dlYmtpdDIgewogICAgIHdlYnByb2Nlc3MuZmlsZSA9IFdlYktpdDIvV2ViUHJvY2Vzcy5w
cm8KICAgICBTVUJESVJTICs9IHdlYnByb2Nlc3MKKyAgICBjb250YWlucyhERUZJTkVTLCBFTkFC
TEVfUExVR0lOX1BST0NFU1M9MSkgeworICAgICAgICBwbHVnaW5wcm9jZXNzLmZpbGUgPSBXZWJL
aXQyL1BsdWdpblByb2Nlc3MucHJvCisgICAgICAgIFNVQkRJUlMgKz0gcGx1Z2lucHJvY2Vzcwor
ICAgIH0KIH0KIAogaW5jbHVkZShXZWJLaXQvcXQvZG9jcy9kb2NzLnByaSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MucHJvIGIvU291cmNlL1dlYktpdDIvUGx1Z2lu
UHJvY2Vzcy5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBkNGFjMDY1MmRlOThkOTk1NDQyMjE5NDNhYWJiYzUw
OTNkZGExMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mu
cHJvCkBAIC0wLDAgKzEsMzMgQEAKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQcm9qZWN0IGZpbGUgZm9yIHRo
ZSBXZWJLaXQyIHBsdWdpbiBwcm9jZXNzIGJpbmFyeQorIworIyBTZWUgJ1Rvb2xzL3FtYWtlL1JF
QURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBzeXN0ZW0KKyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitURU1QTEFURSA9IGFwcAorCitUQVJHRVQgPSBRdFdlYlBsdWdpblByb2Nlc3MKK0RFU1RESVIg
PSAkJHtST09UX0JVSUxEX0RJUn0vYmluCisKK1NPVVJDRVMgKz0gcXQvUGx1Z2luTWFpblF0LmNw
cAorCitJTkNMVURFUEFUSCA9ICQkUFdELy4uL0phdmFTY3JpcHRDb3JlIFwKKyAgICAgICAgICAg
ICAgJCRJTkNMVURFUEFUSAorCitDT05GSUcgKz0gcXR3ZWJraXQKKworUVQgKz0gbmV0d29yawor
bWFjeDogUVQgKz0geG1sCisKK2NvbnRhaW5zKFFUX0NPTkZJRywgb3BlbmdsKSB7CisgICAgUVQg
Kz0gb3BlbmdsCisgICAgREVGSU5FUyArPSBRVF9DT05GSUdVUkVEX1dJVEhfT1BFTkdMCit9CisK
K0lOU1RBTExTICs9IHRhcmdldAorCitpc0VtcHR5KElOU1RBTExfQklOUykgeworICAgIHRhcmdl
dC5wYXRoID0gJCRbUVRfSU5TVEFMTF9CSU5TXQorfSBlbHNlIHsKKyAgICB0YXJnZXQucGF0aCA9
ICQkSU5TVEFMTF9CSU5TCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcAppbmRleCAzZTAwMzNmZjBhYjMzNzY1MGU1
M2QwODFjODlmNDQ0MTRhNjc4YTc1Li44MzM5YWFjNzc2NDU4NzRmYzg4NTMyZDM4ZTNmYzY0NGIx
YjljMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdp
blByb2Nlc3NNYWluUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQv
UGx1Z2luUHJvY2Vzc01haW5RdC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDEwLCAyMDExIE5va2lhIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBVbml2ZXJzaXR5IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsNDIgKzI1LDUxIEBACiAgKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluLmgiCiAK
ICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01haW4u
aCIKIAotI2luY2x1ZGUgIkNvbW1hbmRMaW5lLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5o
IgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CisjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4K
KyNpbmNsdWRlIDxRRGVidWc+CisjaW5jbHVkZSA8UVN0cmluZ0xpc3Q+CiAjaW5jbHVkZSA8cnVu
dGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
LSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KIAotI2RlZmluZSBTSE9XX0NSQVNIX1JFUE9SVEVSIDEKKyNpZiBVU0UoTUVFR09UT1VD
SCkKKyNpbmNsdWRlIDxNQ29tcG9uZW50RGF0YT4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotaW50IFBsdWdpblByb2Nlc3NNYWluKGNvbnN0IENvbW1hbmRMaW5lJiBjb21tYW5kTGlu
ZSkKK1FXRUJLSVRfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiB7Ci0gICAgU3RyaW5nIHNlcnZpY2VOYW1lID0gY29tbWFuZExpbmVbInNlcnZpY2Vu
YW1lIl07Ci0gICAgaWYgKHNlcnZpY2VOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEVY
SVRfRkFJTFVSRTsKLQotI2lmICFTSE9XX0NSQVNIX1JFUE9SVEVSCi0gICAgLy8gSW5zdGFsbHMg
c2lnbmFsIGhhbmRsZXJzIHRoYXQgZXhpdCBvbiBhIGNyYXNoIHNvIHRoYXQgQ3Jhc2hSZXBvcnRl
ciBkb2VzIG5vdCBzaG93IHVwLgotICAgIHNpZ25hbChTSUdJTEwsIF9leGl0KTsKLSAgICBzaWdu
YWwoU0lHRlBFLCBfZXhpdCk7Ci0gICAgc2lnbmFsKFNJR0JVUywgX2V4aXQpOwotICAgIHNpZ25h
bChTSUdTRUdWLCBfZXhpdCk7CisgICAgUUFwcGxpY2F0aW9uIGFwcChhcmdjLCBhcmd2KTsKKyNp
ZiBVU0UoTUVFR09UT1VDSCkKKyAgICBuZXcgTUNvbXBvbmVudERhdGEoYXJnYywgYXJndik7CiAj
ZW5kaWYKLQorICAgIHNyYW5kb20odGltZSgwKSk7CiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFk
aW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6Omlu
aXRpYWxpemVNYWluUnVuTG9vcCgpOwogCisgICAgLy8gQ3JlYXRlIHRoZSBjb25uZWN0aW9uLgor
ICAgIGlmIChhcHAuYXJndW1lbnRzKCkuc2l6ZSgpIDw9IDEpIHsKKyAgICAgICAgcURlYnVnKCkg
PDwgIkVycm9yOiB3cm9uZyBudW1iZXIgb2YgYXJndW1lbnRzLiI7CisgICAgICAgIHJldHVybiAx
OworICAgIH0KKyAgICBib29sIHdhc051bWJlciA9IGZhbHNlOworICAgIGludCBpZGVudGlmaWVy
ID0gYXBwLmFyZ3VtZW50cygpLmF0KDEpLnRvSW50KCZ3YXNOdW1iZXIsIDEwKTsKKyAgICBpZiAo
IXdhc051bWJlcikgeworICAgICAgICBxRGVidWcoKSA8PCAiRXJyb3I6IGludmFsaWQgY29ubmVj
dGlvbiBpZGVudGlmaWVyLiI7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIFdlYktp
dDo6UGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZShpZGVudGlmaWVyLCBSdW5Mb29w
OjptYWluKCkpOworCiAgICAgUnVuTG9vcDo6cnVuKCk7CiAKICAgICByZXR1cm4gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwCmluZGV4IGIwYWIy
ZWMxNjUzMmRlOWM2NTk3MmUwM2NlMTcyOWNjYzc0NTg4MzguLjQ5MjQxNTkwN2Q4ZGM3NTI5MmE5
NGM1MDBhMWZkMWI4MTY1MDA0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9x
dC9TaGFyZWFibGVCaXRtYXBRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1No
YXJlYWJsZUJpdG1hcFF0LmNwcApAQCAtNjQsMTAgKzY0LDE0IEBAIHZvaWQgU2hhcmVhYmxlQml0
bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkc3RQ
b2ludCwKICAgICBwYWludGVyLT5kcmF3SW1hZ2UoZHN0UG9pbnQsIGltYWdlLCBRUmVjdChzcmNS
ZWN0KSk7CiB9CiAKLXZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQm
IC8qY29udGV4dCovLCBmbG9hdCAvKnNjYWxlRmFjdG9yKi8sIGNvbnN0IEludFBvaW50JiAvKmRz
dFBvaW50Ki8sIGNvbnN0IEludFJlY3QmIC8qc3JjUmVjdCovKQordm9pZCBTaGFyZWFibGVCaXRt
YXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2NhbGVGYWN0b3IsIGNv
bnN0IEludFBvaW50JiBkc3RQb2ludCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkKIHsKLSAgICAv
LyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDY2Mz4uCi0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoc2NhbGVGYWN0b3IgPT0gMS4wKSB7CisgICAg
ICAgIHBhaW50KGNvbnRleHQsIGRzdFBvaW50LCBzcmNSZWN0KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmRyYXdJbWFnZShkc3RQb2lu
dCwgY3JlYXRlUUltYWdlKCksIFFSZWN0KHNyY1JlY3QpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dl
YktpdDIvVGFyZ2V0LnByaQppbmRleCAwMTA2YjFlMjEzMDU2ZjY4MjgyNjAzNjNkZTAxMjI0MTZh
NzM3OGFmLi5iZmJmNTRkODhlNDFjZDhjNzVkNTkyMzY4ZWNkY2VkNTgyMjA1YzVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Rhcmdl
dC5wcmkKQEAgLTQzMSw2ICs0MzEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBQbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgXAogICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJv
Y2Vzcy5jcHAgXAogICAgIFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIFwK
KyAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAgXAogICAgIFBs
dWdpblByb2Nlc3MvcXQvUGx1Z2luQ29udHJvbGxlclByb3h5UXQuY3BwIFwKICAgICBQbHVnaW5Q
cm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwIFwKICAgICBQbHVnaW5Qcm9jZXNzL3F0
L1BsdWdpblByb2Nlc3NRdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAKaW5kZXggOWZjMWFmMWEw
NWZmOTJkNDNmM2E4MmMyZTdmZjFlMjRkOGU2OWNhYS4uZThjZTE5NmNkYzAxNTk4ZmFjNTM0NjVl
Y2EyZDBhZWY3NTg0ZDg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
dW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAj
aW5jbHVkZSA8UURlYnVnPgorI2luY2x1ZGUgPFFEaXI+CiAjaW5jbHVkZSA8UUZpbGU+CiAjaW5j
bHVkZSA8UUxvY2FsU2VydmVyPgogI2luY2x1ZGUgPFFNZXRhVHlwZT4KQEAgLTk2LDExICs5Nywx
MyBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiB7CiAgICAgUVN0cmlu
ZyBhcHBsaWNhdGlvblBhdGggPSBRTGF0aW4xU3RyaW5nKCIlMSAlMiIpOwogCi0gICAgaWYgKFFG
aWxlOjpleGlzdHMoUUNvcmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25EaXJQYXRoKCkgKyBRTGF0
aW4xU3RyaW5nKCIvUXRXZWJQcm9jZXNzIikpKSB7Ci0gICAgICAgIGFwcGxpY2F0aW9uUGF0aCA9
IGFwcGxpY2F0aW9uUGF0aC5hcmcoUUNvcmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25EaXJQYXRo
KCkgKyBRTGF0aW4xU3RyaW5nKCIvUXRXZWJQcm9jZXNzIikpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGFwcGxpY2F0aW9uUGF0aCA9IGFwcGxpY2F0aW9uUGF0aC5hcmcoUUxhdGluMVN0cmluZygi
UXRXZWJQcm9jZXNzIikpOwotICAgIH0KKyAgICBRTGF0aW4xU3RyaW5nIGV4ZWN1dGFibGVOYW1l
KG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9PSBQcm9jZXNzTGF1bmNoZXI6OldlYlByb2Nl
c3MgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlF0V2ViUHJvY2VzcyIgOiAi
UXRXZWJQbHVnaW5Qcm9jZXNzIik7CisgICAgUVN0cmluZyBleHBlY3RlZEV4ZWN1dGFibGVQYXRo
ID0gUUNvcmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25EaXJQYXRoKCkgKyBRRGlyOjpzZXBhcmF0
b3IoKSArIGV4ZWN1dGFibGVOYW1lOworICAgIGlmIChRRmlsZTo6ZXhpc3RzKGV4cGVjdGVkRXhl
Y3V0YWJsZVBhdGgpKQorICAgICAgICBhcHBsaWNhdGlvblBhdGggPSBhcHBsaWNhdGlvblBhdGgu
YXJnKGV4cGVjdGVkRXhlY3V0YWJsZVBhdGgpOworICAgIGVsc2UKKyAgICAgICAgYXBwbGljYXRp
b25QYXRoID0gYXBwbGljYXRpb25QYXRoLmFyZyhleGVjdXRhYmxlTmFtZSk7CiAKICAgICBpbnQg
c29ja2V0c1syXTsKICAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwgMCwg
c29ja2V0cykgPT0gLTEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3F0L1BsdWdpbk1h
aW5RdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9xdC9QbHVnaW5NYWluUXQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJiYzgxY2U1NzViNDk4MGU3M2E0MjlkODZkNWY2OTExNDA1NjU0MjkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9xdC9QbHVnaW5NYWluUXQuY3BwCkBAIC0wLDAgKzEsNDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExIFVuaXZlcnNpdHkgb2YgU3plZ2VkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8Y29uZmlnLmg+CisjaWYgRU5BQkxFKFBM
VUdJTl9QUk9DRVNTKQorCisjaW5jbHVkZSA8UXRHbG9iYWw+CisKKyNpbmNsdWRlIDxzdGRpby5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKK1FfREVDTF9JTVBPUlQgaW50IFBsdWdpblByb2Nlc3NN
YWluKGludCBhcmdjLCBjaGFyKiogYXJndik7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFy
KiogYXJndikKK3sKKyAgICByZXR1cm4gV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFpbihhcmdjLCBh
cmd2KTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1
cmVzL2ZlYXR1cmVzLnByZiBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMu
cHJmCmluZGV4IGQ0YmJjODViNzhjMGJiZDU4N2YzMDMyNGE0NTA1ZGE3ODNhMzNkN2QuLjM3YWEy
MDAwMWM1MDM1YTVkYTlhMGZhNGQyYzQxOTllZDY1YjA3N2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3Ft
YWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCisrKyBiL1Rvb2xzL3FtYWtlL21rc3Bl
Y3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCkBAIC0xMDIsNiArMTAyLDkgQEAgaXNFbXB0eShIQVZF
X1FSQVdGT05UKSB7CiAgICAgICAgIENPTkZJRyArPSBwbHVnaW5fYmFja2VuZF94bGliCiAgICAg
ICAgIERFRklORVMgKz0gUExVR0lOX0FSQ0hJVEVDVFVSRV9YMTE9MSBcCiAgICAgICAgICAgICAg
ICAgICAgUExVR0lOX0FSQ0hJVEVDVFVSRV9VTlNVUFBPUlRFRD0wCisgICAgICAgICFjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfUExVR0lOX1BST0NFU1M9LikgeworICAgICAgICAgICAgREVGSU5F
UyArPSBFTkFCTEVfUExVR0lOX1BST0NFU1M9MQorICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgREVGSU5FUyArPSBQTFVHSU5fQVJDSElURUNUVVJFX1VOU1VQUE9SVEVEPTEKICAgICB9
CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMzZlYTM2YzAyNjBiMDNh
OTRiODQ2ZGFkYWQ3Zjk3MjIwYmRjMTU5ZS4uOWRmNTgyMmVmY2E5Yzc0ODg4ODI3OTFlMGY3MDY0
YzI0NDM1YzQ4NiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDExLTExLTExICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBbUXRdW1dLMl0gU2V0IHVwIHBsdWdpbiBwcm9jZXNzIG9uIFVuaXgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTIxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG8gdGhlIGZpbmFs
IHN0ZXBzIHRvIG1ha2Ugb3VyIHBsdWdpbiBwcm9jZXNzIGFsaXZlLgorCisgICAgICAgICogU291
cmNlL1F0V2ViS2l0LnBybzoKKwogMjAxMS0xMS0xMCAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpz
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBYMTEgcGx1Z2lucyBuZWVkIHRvIGJlIHJld29y
a2VkIGZvciBRdDUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117617</attachid>
            <date>2011-12-02 07:01:22 -0800</date>
            <delta_ts>2011-12-06 03:16:55 -0800</delta_ts>
            <desc>patch</desc>
            <filename>uploadv1.diff</filename>
            <type>text/plain</type>
            <size>36951</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlNDRlOTRiLi5jOGM4MDZi
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTEtMTItMDIgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAg
ICAgIFtRdF1bV0syXSBTZXQgdXAgcGx1Z2luIHByb2Nlc3Mgb24gVW5peAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxMjEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXR1cCBwbHVnaW4gcHJvY2VzcyBm
b3IgUXQuCisKKyAgICAgICAgKiBTb3VyY2UvUXRXZWJLaXQucHJvOgorICAgICAgICAqIFNvdXJj
ZS9xdHdlYmtpdC1leHBvcnQubWFwOgorCiAyMDExLTEyLTAyICBBbGVqYW5kcm8gRy4gQ2FzdHJv
ICA8YWxleEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEltcHJvdmUgIEMrKzB4IGNvbXBh
dCB3YXJuaW5ncyBjaGVjawpkaWZmIC0tZ2l0IGEvU291cmNlL1F0V2ViS2l0LnBybyBiL1NvdXJj
ZS9RdFdlYktpdC5wcm8KaW5kZXggMDJmYzllMS4uYmJiZmM0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1F0V2ViS2l0LnBybworKysgYi9Tb3VyY2UvUXRXZWJLaXQucHJvCkBAIC00LDYgKzQsOCBAQAog
IyBTZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBz
eXN0ZW0KICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCitsb2FkKGZlYXR1cmVzKQorCiBURU1QTEFURSA9IHN1YmRp
cnMKIENPTkZJRyArPSBvcmRlcmVkCiAKQEAgLTEzLDYgKzE1LDEwIEBAIFNVQkRJUlMgKz0gYXBp
CiAhbm9fd2Via2l0MiB7CiAgICAgd2VicHJvY2Vzcy5maWxlID0gV2ViS2l0Mi9XZWJQcm9jZXNz
LnBybwogICAgIFNVQkRJUlMgKz0gd2VicHJvY2VzcworICAgIGNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9QTFVHSU5fUFJPQ0VTUz0xKSB7CisgICAgICAgIHBsdWdpbnByb2Nlc3MuZmlsZSA9IFdl
YktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8KKyAgICAgICAgU1VCRElSUyArPSBwbHVnaW5wcm9jZXNz
CisgICAgfQogfQogCiBpbmNsdWRlKFdlYktpdC9xdC9kb2NzL2RvY3MucHJpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGI2NTM1MjguLjc1ZTFiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxMS0x
Mi0wMiAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0
XVtXSzJdIFNldCB1cCBwbHVnaW4gcHJvY2VzcyBvbiBVbml4CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjEyMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldHVwIHBsdWdpbiBwcm9jZXNzIGZvciBRdCBh
bmQgbW92ZSB0aGUgdGFzayBvZiBxdWVyeWluZyB0aGUgcGx1Z2lucworICAgICAgICB0byB0aGlz
IHByb2Nlc3MgaW4gb3JkZXIgdG8gYXZvaWQgY3Jhc2hlcyBkdWUgdG8gcGx1Z2luIGJ1Z3Mgb3Ig
bGlicmFyeQorICAgICAgICBpbmNvbXBhdGliaWxpdHkuIFRoZSBhcHByb2FjaCBvZiBxdWVyeWlu
ZyB0aGUgcGx1Z2lucyBpcyBub3cgaW4gcGFpcgorICAgICAgICB3aXRoIHRoZSBNYWMgcG9ydDog
dGhlIHBsdWdpbiBwcm9jZXNzIHdyaXRlcyBpdCB0byBhIGZpbGUgd2hpY2ggaXMgcmVhZAorICAg
ICAgICBvbiB0aGUgVUkgc2lkZS4gVGhlIGZpbGUgYWxzbyBzZXJ2ZXMgYXMgYSBwZXJzaXN0ZW50
IGNhY2hlLiBUaGlzIHdheQorICAgICAgICB0aGlzIHBhdGNoIGFsc28gaW1wbGVtZW50cyB3aGF0
IHdlIGNhbGwgTkVUU0NBUEVfUExVR0lOX01FVEFEQVRBX0NBQ0hFCisgICAgICAgIGluIFdlYkNv
cmUuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNz
LnBybzogQWRkZWQuCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01h
aW5HdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFpbkd0ayk6CisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW4pOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmg6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6cGFyc2VNSU1FRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6Z2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6
OnJlYWROZXh0VVRGOFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OnJlYWROZXh0VGltZXN0YW1w
KToKKyAgICAgICAgKFdlYktpdDo6cmVhZFBsdWdpbk1ldGFEYXRhRnJvbURlc2NyaXB0b3JGaWxl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8p
OgorICAgICAgICAoV2ViS2l0Ojp3cml0ZVVURjhTdHJpbmcpOgorICAgICAgICAoV2ViS2l0Ojp3
cml0ZVRpbWVzdGFtcCk6CisgICAgICAgIChXZWJLaXQ6OndyaXRlU3RyaW5nKToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmNyZWF0ZVBsdWdpbk1ldGFEYXRhRGVzY3Jp
cHRvckZpbGUpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6ZGV0ZXJt
aW5lUXVpcmtzKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnBsdWdp
bk1ldGFEYXRhQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAqIFNoYXJlZC9xdC9TaGFyZWFibGVC
aXRtYXBRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6cGFpbnQpOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1By
b2Nlc3NMYXVuY2hlclF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjps
YXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJv
eHlRdC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVn
aW5Qcm9jZXNzUHJveHlVbml4LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OnBsdWdpblByb2Nlc3NFeGVjdXRhYmxlUGF0aCk6CisgICAgICAgICogcXQvUGx1Z2lu
TWFpblF0LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlHdGsuY3BwLgorICAgICAgICAobWFpbik6CisKIDIwMTEt
MTEtMjggIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCA0Y2E0OTc3
Li4wOWE5NWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtNTg3LDggKzU4Nyw4IEBAIGxpYndl
YmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlO
T1JfVkVSU0lPTkBfbGFfU09VCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc1Byb3h5LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1dl
YlBsdWdpblNpdGVEYXRhTWFuYWdlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcCBcCisJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlV
bml4LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NNb2RlbC5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmggXApAQCAtMTM3OCw2ICsx
Mzc4LDcgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19TT1VSQ0VTID0gXAogCVNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViTW91c2VFdmVudEd0ay5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcCBcCiAJU291cmNlL1dlYktp
dDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcCBcCisJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcCBcCiAJ
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBcCiAJU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZVV0aWxpdGllcy5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzLnBybwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGQ0
YWMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8K
QEAgLTAsMCArMSwzMyBAQAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFByb2plY3QgZmlsZSBmb3IgdGhlIFdl
YktpdDIgcGx1Z2luIHByb2Nlc3MgYmluYXJ5CisjCisjIFNlZSAnVG9vbHMvcW1ha2UvUkVBRE1F
JyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIGJ1aWxkIHN5c3RlbQorIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RF
TVBMQVRFID0gYXBwCisKK1RBUkdFVCA9IFF0V2ViUGx1Z2luUHJvY2VzcworREVTVERJUiA9ICQk
e1JPT1RfQlVJTERfRElSfS9iaW4KKworU09VUkNFUyArPSBxdC9QbHVnaW5NYWluUXQuY3BwCisK
K0lOQ0xVREVQQVRIID0gJCRQV0QvLi4vSmF2YVNjcmlwdENvcmUgXAorICAgICAgICAgICAgICAk
JElOQ0xVREVQQVRICisKK0NPTkZJRyArPSBxdHdlYmtpdAorCitRVCArPSBuZXR3b3JrCittYWN4
OiBRVCArPSB4bWwKKworY29udGFpbnMoUVRfQ09ORklHLCBvcGVuZ2wpIHsKKyAgICBRVCArPSBv
cGVuZ2wKKyAgICBERUZJTkVTICs9IFFUX0NPTkZJR1VSRURfV0lUSF9PUEVOR0wKK30KKworSU5T
VEFMTFMgKz0gdGFyZ2V0CisKK2lzRW1wdHkoSU5TVEFMTF9CSU5TKSB7CisgICAgdGFyZ2V0LnBh
dGggPSAkJFtRVF9JTlNUQUxMX0JJTlNdCit9IGVsc2UgeworICAgIHRhcmdldC5wYXRoID0gJCRJ
TlNUQUxMX0JJTlMKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
Z3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcAppbmRleCA5OTQyNjA0Li45MmJhNGQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNz
TWFpbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2lu
UHJvY2Vzc01haW5HdGsuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01haW5HdGsuaCIKIAorI2luY2x1ZGUgIk5ldHNjYXBl
UGx1Z2luTW9kdWxlLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdl
YktpdDIvUnVuTG9vcC5oPgogI2luY2x1ZGUgPGdkay9nZGt4Lmg+CkBAIC01MSwxMiArNTIsMjMg
QEAgc3RhdGljIGludCB3ZWJraXRndGtYRXJyb3IoRGlzcGxheSogeGRpc3BsYXksIFhFcnJvckV2
ZW50KiBlcnJvcikKIAogV0tfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpbkd0ayhpbnQgYXJn
YywgY2hhciogYXJndltdKQogewotICAgIEFTU0VSVChhcmdjID09IDIpOworICAgIGJvb2wgY3Jl
YXRpbmdNZXRhRGF0YURlc2NyaXB0aW9uID0gZmFsc2U7CisgICAgQVNTRVJUKGFyZ2MgPT0gMiB8
fCAoYXJnYyA9PSA0ICYmIChjcmVhdGluZ01ldGFEYXRhRGVzY3JpcHRpb24gPSAhc3RyY21wKGFy
Z3ZbMV0sICItY3JlYXRlTWV0YURhdGFEZXNjcmlwdGlvbiIpKSkpOwogCiAgICAgZ3RrX2luaXQo
JmFyZ2MsICZhcmd2KTsKIAogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdU
Rjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKworICAgIGlmIChjcmVhdGluZ01ldGFEYXRhRGVz
Y3JpcHRpb24pIHsKKyAgICAgICAgU3RyaW5nIHBsdWdpblBhdGgoYXJndlsyXSk7CisgICAgICAg
IFN0cmluZyBtZXRhRGF0YURlc2NyaXB0b3JGaWxlUGF0aChhcmd2WzNdKTsKKyAgICAgICAgaWYg
KCFOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Y3JlYXRlUGx1Z2luTWV0YURhdGFEZXNjcmlwdG9yRmls
ZShwbHVnaW5QYXRoLCBtZXRhRGF0YURlc2NyaXB0b3JGaWxlUGF0aCkpCisgICAgICAgICAgICBy
ZXR1cm4gRVhJVF9GQUlMVVJFOworCisgICAgICAgIHJldHVybiBFWElUX1NVQ0NFU1M7CisgICAg
fQorCiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKICAgICAvLyBQbHVn
aW5zIGNhbiBwcm9kdWNlIFggZXJyb3JzIHRoYXQgYXJlIGhhbmRsZWQgYnkgdGhlIEdESyBYIGVy
cm9yIGhhbmRsZXIsIHdoaWNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcAppbmRleCAzZTAwMzNmLi43OTkxMDExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NN
YWluUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJv
Y2Vzc01haW5RdC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEw
LCAyMDExIE5va2lhIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSBVbml2ZXJzaXR5IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsNDIgKzI1LDU4IEBACiAgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluLmgiCiAKICNpZiBFTkFC
TEUoUExVR0lOX1BST0NFU1MpCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01haW4uaCIKIAotI2lu
Y2x1ZGUgIkNvbW1hbmRMaW5lLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgogI2luY2x1
ZGUgIlJ1bkxvb3AuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5j
bHVkZSAiU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIKKyNp
bmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisjaW5jbHVkZSA8UUFwcGxpY2F0aW9uPgorI2luY2x1
ZGUgPFFEZWJ1Zz4KKyNpbmNsdWRlIDxRU3RyaW5nTGlzdD4KICNpbmNsdWRlIDxydW50aW1lL0lu
aXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgog
Ci0jZGVmaW5lIFNIT1dfQ1JBU0hfUkVQT1JURVIgMQorI2luY2x1ZGUgPHNpZ25hbC5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotaW50IFBsdWdpblByb2Nlc3NNYWluKGNvbnN0IENvbW1hbmRM
aW5lJiBjb21tYW5kTGluZSkKK1FXRUJLSVRfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpbihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7Ci0gICAgU3RyaW5nIHNlcnZpY2VOYW1lID0gY29tbWFu
ZExpbmVbInNlcnZpY2VuYW1lIl07Ci0gICAgaWYgKHNlcnZpY2VOYW1lLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLQotI2lmICFTSE9XX0NSQVNIX1JFUE9SVEVSCi0g
ICAgLy8gSW5zdGFsbHMgc2lnbmFsIGhhbmRsZXJzIHRoYXQgZXhpdCBvbiBhIGNyYXNoIHNvIHRo
YXQgQ3Jhc2hSZXBvcnRlciBkb2VzIG5vdCBzaG93IHVwLgotICAgIHNpZ25hbChTSUdJTEwsIF9l
eGl0KTsKLSAgICBzaWduYWwoU0lHRlBFLCBfZXhpdCk7Ci0gICAgc2lnbmFsKFNJR0JVUywgX2V4
aXQpOwotICAgIHNpZ25hbChTSUdTRUdWLCBfZXhpdCk7Ci0jZW5kaWYKKyAgICBRQXBwbGljYXRp
b24gYXBwKGFyZ2MsIGFyZ3YpOwogCiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAg
ICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOworCisgICAgaWYgKGFyZ2MgPD0gMSkKKyAg
ICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKworICAgIGlmIChhcHAuYXJndW1lbnRzKCkuYXQo
MSkgPT0gUUxhdGluMVN0cmluZygiLWNyZWF0ZU1ldGFEYXRhRGVzY3JpcHRpb24iKSkgeworICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIlBQOiBjcmVhdGluZyBkZXNjIGZpbGVcbiIpOworICAgICAg
ICBpZiAoYXJnYyAhPSA0KQorICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKworICAg
ICAgICBTdHJpbmcgcGx1Z2luUGF0aChhcHAuYXJndW1lbnRzKCkuYXQoMikpOworICAgICAgICBT
dHJpbmcgZGVzY3JpcHRvckZpbGVQYXRoKGFwcC5hcmd1bWVudHMoKS5hdCgzKSk7CisgICAgICAg
IGlmICghTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmNyZWF0ZVBsdWdpbk1ldGFEYXRhRGVzY3JpcHRv
ckZpbGUocGx1Z2luUGF0aCwgZGVzY3JpcHRvckZpbGVQYXRoKSkKKyAgICAgICAgICAgIHJldHVy
biBFWElUX0ZBSUxVUkU7CisKKyAgICAgICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKKyAgICB9CisK
ICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIAorICAgIC8vIENyZWF0ZSB0
aGUgY29ubmVjdGlvbi4KKyAgICBib29sIGlzTnVtYmVyID0gZmFsc2U7CisgICAgaW50IGlkZW50
aWZpZXIgPSBhcHAuYXJndW1lbnRzKCkuYXQoMSkudG9JbnQoJmlzTnVtYmVyLCAxMCk7CisgICAg
aWYgKCFpc051bWJlcikKKyAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKworICAgIFdlYktp
dDo6UGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZShpZGVudGlmaWVyLCBSdW5Mb29w
OjptYWluKCkpOworCiAgICAgUnVuTG9vcDo6cnVuKCk7CiAKICAgICByZXR1cm4gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luTW9kdWxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbk1vZHVsZS5oCmluZGV4IGY4MGEwYTEuLmIxZGZkMGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW5Nb2R1bGUuaApAQCAtNTksNiArNTksOSBAQCBwdWJsaWM6CiAKICNpZiBQTFVHSU5fQVJD
SElURUNUVVJFKE1BQykKICAgICBzdGF0aWMgYm9vbCBjcmVhdGVQbHVnaW5NSU1FVHlwZXNQcmVm
ZXJlbmNlcyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOworI2VsaWYgUExVR0lOX0FSQ0hJVEVD
VFVSRShYMTEpCisgICAgc3RhdGljIFN0cmluZyBwbHVnaW5NZXRhRGF0YUNhY2hlRGlyZWN0b3J5
KCk7CisgICAgc3RhdGljIGJvb2wgY3JlYXRlUGx1Z2luTWV0YURhdGFEZXNjcmlwdG9yRmlsZShj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwogI2VuZGlm
CiAKIHByaXZhdGU6CkBAIC02OCw4ICs3MSwxNCBAQCBwcml2YXRlOgogCiAjaWYgUExVR0lOX0FS
Q0hJVEVDVFVSRShYMTEpCiAgICAgdm9pZCBhcHBseVgxMVF1aXJrc0JlZm9yZUxvYWQoKTsKLSAg
ICBzdGF0aWMgdm9pZCBzZXRNSU1FRGVzY3JpcHRpb24oY29uc3QgU3RyaW5nJiBtaW1lRGVzY3Jp
cHRpb24sIFBsdWdpbk1vZHVsZUluZm8mKTsKLSAgICBib29sIGdldFBsdWdpbkluZm9Gb3JMb2Fk
ZWRQbHVnaW4oUGx1Z2luTW9kdWxlSW5mbyYpOworCisgICAgc3RydWN0IFJhd1BsdWdpbk1ldGFE
YXRhIHsKKyAgICAgICAgU3RyaW5nIG5hbWU7CisgICAgICAgIFN0cmluZyBkZXNjcmlwdGlvbjsK
KyAgICAgICAgU3RyaW5nIG1pbWVEZXNjcmlwdGlvbjsKKyAgICB9OworCisgICAgYm9vbCBnZXRQ
bHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKFJhd1BsdWdpbk1ldGFEYXRhJik7CiAjZW5kaWYKIAog
ICAgIGJvb2wgdHJ5R2V0U2l0ZXNXaXRoRGF0YShWZWN0b3I8U3RyaW5nPiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1
Z2luTW9kdWxlWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBl
L3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAKaW5kZXggYmUwNGJmZi4uYTkzN2UxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05l
dHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1
Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCkBAIC0yOCwxOCAr
MjgsMjYgQEAKIAogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luTW9kdWxlLmgiCiAKKyNpbmNsdWRl
ICJQbHVnaW5JbmZvU3RvcmUuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKICNp
bmNsdWRlICJOZXRzY2FwZUJyb3dzZXJGdW5jcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgotCi0jaWYgUExBVEZPUk0oUVQpCi0jaW5jbHVkZSA8UUxpYnJhcnk+Ci0jZW5kaWYK
LQorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2lu
Y2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCisjaWYgUExBVEZPUk0o
UVQpCisjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRRGlyPgorI2luY2x1
ZGUgPFFMaWJyYXJ5PgorI2luY2x1ZGUgPFFTdGFuZGFyZFBhdGhzPgorI2VsaWYgUExBVEZPUk0o
R1RLKQorI2luY2x1ZGUgPGdsaWIuaD4KKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05MywxMSArMTAxLDEzIEBAIHZvaWQgTmV0c2Nh
cGVQbHVnaW5Nb2R1bGU6OmFwcGx5WDExUXVpcmtzQmVmb3JlTG9hZCgpCiAjZW5kaWYKIH0KIAot
dm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2V0TUlNRURlc2NyaXB0aW9uKGNvbnN0IFN0cmlu
ZyYgbWltZURlc2NyaXB0aW9uLCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCitzdGF0aWMgdm9p
ZCBwYXJzZU1JTUVEZXNjcmlwdGlvbihjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlwdGlvbiwgVmVj
dG9yPE1pbWVDbGFzc0luZm8+JiByZXN1bHQpCiB7CisgICAgQVNTRVJUX0FSRyhyZXN1bHQsIHJl
c3VsdC5pc0VtcHR5KCkpOworCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7CiAgICAgbWltZURl
c2NyaXB0aW9uLmxvd2VyKCkuc3BsaXQoVUNoYXIoJzsnKSwgZmFsc2UsIHR5cGVzKTsKLSAgICBw
bHVnaW4uaW5mby5taW1lcy5yZXNlcnZlQ2FwYWNpdHkodHlwZXMuc2l6ZSgpKTsKKyAgICByZXN1
bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0eXBlcy5zaXplKCkpOwogCiAgICAgc2l6ZV90IG1p
bWVJbmZvQ291bnQgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHlwZXMuc2l6ZSgp
OyArK2kpIHsKQEAgLTEwNiw4ICsxMTYsOCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpz
ZXRNSU1FRGVzY3JpcHRpb24oY29uc3QgU3RyaW5nJiBtaW1lRGVzY3JpcHRpb24sIFBsdQogICAg
ICAgICBpZiAobWltZVR5cGVQYXJ0cy5zaXplKCkgPD0gMCkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIHBsdWdpbi5pbmZvLm1pbWVzLnVuY2hlY2tlZEFwcGVuZChNaW1lQ2xhc3NJ
bmZvKCkpOwotICAgICAgICBNaW1lQ2xhc3NJbmZvJiBtaW1lSW5mbyA9IHBsdWdpbi5pbmZvLm1p
bWVzW21pbWVJbmZvQ291bnQrK107CisgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoTWlt
ZUNsYXNzSW5mbygpKTsKKyAgICAgICAgTWltZUNsYXNzSW5mbyYgbWltZUluZm8gPSByZXN1bHRb
bWltZUluZm9Db3VudCsrXTsKICAgICAgICAgbWltZUluZm8udHlwZSA9IG1pbWVUeXBlUGFydHNb
MF07CiAKICAgICAgICAgaWYgKG1pbWVUeXBlUGFydHMuc2l6ZSgpID4gMSkKQEAgLTExOCwxMyAr
MTI4LDEwIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNldE1JTUVEZXNjcmlwdGlvbihj
b25zdCBTdHJpbmcmIG1pbWVEZXNjcmlwdGlvbiwgUGx1CiAgICAgfQogfQogCi1ib29sIE5ldHNj
YXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKFBsdWdpbk1vZHVs
ZUluZm8mIHBsdWdpbikKK2Jvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm9G
b3JMb2FkZWRQbHVnaW4oUmF3UGx1Z2luTWV0YURhdGEmIG1ldGFEYXRhKQogewogICAgIEFTU0VS
VChtX2lzSW5pdGlhbGl6ZWQpOwogCi0gICAgcGx1Z2luLnBhdGggPSBtX3BsdWdpblBhdGg7Ci0g
ICAgcGx1Z2luLmluZm8uZmlsZSA9IHBhdGhHZXRGaWxlTmFtZShtX3BsdWdpblBhdGgpOwotCiAg
ICAgTW9kdWxlKiBtb2R1bGUgPSBtX21vZHVsZS5nZXQoKTsKICAgICBOUFBfR2V0VmFsdWVQcm9j
UHRyIE5QUF9HZXRWYWx1ZSA9IG1vZHVsZS0+ZnVuY3Rpb25Qb2ludGVyPE5QUF9HZXRWYWx1ZVBy
b2NQdHI+KCJOUF9HZXRWYWx1ZSIpOwogICAgIGlmICghTlBQX0dldFZhbHVlKQpAQCAtMTM3LDIy
ICsxNDQsMTcwIEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm9Gb3JM
b2FkZWRQbHVnaW4oUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luCiAgICAgY2hhciogYnVmZmVyOwog
ICAgIE5QRXJyb3IgZXJyb3IgPSBOUFBfR2V0VmFsdWUoMCwgTlBQVnBsdWdpbk5hbWVTdHJpbmcs
ICZidWZmZXIpOwogICAgIGlmIChlcnJvciA9PSBOUEVSUl9OT19FUlJPUikKLSAgICAgICAgcGx1
Z2luLmluZm8ubmFtZSA9IGJ1ZmZlcjsKKyAgICAgICAgbWV0YURhdGEubmFtZSA9IGJ1ZmZlcjsK
IAogICAgIGVycm9yID0gTlBQX0dldFZhbHVlKDAsIE5QUFZwbHVnaW5EZXNjcmlwdGlvblN0cmlu
ZywgJmJ1ZmZlcik7CiAgICAgaWYgKGVycm9yID09IE5QRVJSX05PX0VSUk9SKQotICAgICAgICBw
bHVnaW4uaW5mby5kZXNjID0gYnVmZmVyOworICAgICAgICBtZXRhRGF0YS5kZXNjcmlwdGlvbiA9
IGJ1ZmZlcjsKIAogICAgIGNvbnN0IGNoYXIqIG1pbWVEZXNjcmlwdGlvbiA9IE5QX0dldE1JTUVE
ZXNjcmlwdGlvbigpOwogICAgIGlmICghbWltZURlc2NyaXB0aW9uKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgbWV0YURhdGEubWltZURlc2NyaXB0aW9uID0gbWltZURlc2NyaXB0aW9uOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHJlYWROZXh0VVRGOFN0cmluZyhT
dHJpbmcmIHJlc3VsdCwgY2hhciomIGJ1ZmZlclN0YXJ0LCBjb25zdCBjaGFyKiBidWZmZXJFbmQp
Cit7CisgICAgaWYgKGJ1ZmZlclN0YXJ0ID49IGJ1ZmZlckVuZCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgc2l6ZV90IG1heExlbmd0aCA9IGJ1ZmZlckVuZCAtIGJ1ZmZlclN0YXJ0Owor
ICAgIGludCBsZW5ndGggPSBzdHJubGVuKGJ1ZmZlclN0YXJ0LCBtYXhMZW5ndGgpOworICAgIGlm
IChsZW5ndGggPT0gbWF4TGVuZ3RoKSB7CisgICAgICAgIC8vIE5vIG51bGwgY2hhcmFjdGVyIGJl
Zm9yZSB0aGUgZW5kLiBUaGlzIGluZGljYXRlcyBhIGRhdGEgY29ycnVwdGlvbi4KKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KIAotICAgIHNldE1JTUVEZXNjcmlwdGlvbihtaW1lRGVzY3Jp
cHRpb24sIHBsdWdpbik7CisgICAgcmVzdWx0ID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXJTdGFy
dCwgbGVuZ3RoKTsKKyAgICBidWZmZXJTdGFydCArPSBsZW5ndGggKyAxOwogCiAgICAgcmV0dXJu
IHRydWU7CiB9CisKK3N0YXRpYyBib29sIHJlYWROZXh0VGltZXN0YW1wKHRpbWVfdCYgcmVzdWx0
LCBjaGFyKiYgYnVmZmVyU3RhcnQsIGNvbnN0IGNoYXIqIGJ1ZmZlckVuZCkKK3sKKyAgICBpZiAo
YnVmZmVyU3RhcnQgPj0gYnVmZmVyRW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBXZSBwdXNoIGFuIGV4dHJhIG51bGwgY2hhcmFjdGVyIGluIGZhdm91ciBvZiBkYXRhIGNvcnJ1
cHRpb24gZGV0ZWN0aW9uLgorICAgIGlmIChidWZmZXJTdGFydFtzaXplb2YodGltZV90KV0gIT0g
MCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdCA9ICpyZWludGVycHJldF9jYXN0
PHRpbWVfdCo+KGJ1ZmZlclN0YXJ0KTsKKyAgICBidWZmZXJTdGFydCArPSBzaXplb2YodGltZV90
KSArIDE7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgcmVhZFBsdWdpbk1l
dGFEYXRhRnJvbURlc2NyaXB0b3JGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQoreworICAgIFBsYXRm
b3JtRmlsZUhhbmRsZSBmaWxlID0gb3BlbkZpbGUoZmlsZVBhdGgsIE9wZW5Gb3JSZWFkKTsKKyAg
ICBpZiAoIWlzSGFuZGxlVmFsaWQoZmlsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IFZlY3RvcjxjaGFyPiBidWZmZXI7CisgICAgY29uc3QgaW50IHJlYWRTaXplID0gNjQ7CisgICAg
YnVmZmVyLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVhZFNpemUgKiA0KTsKKyAgICBpbnQgYnl0
ZXNSZWFkID0gMDsKKworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGludCByZXN1bHQgPSBy
ZWFkRnJvbUZpbGUoZmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ5dGVzUmVhZCwgcmVhZFNpemUpOwor
ICAgICAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgYnl0ZXNSZWFkICs9IHJlc3VsdDsKKyAgICAgICAgaWYgKHJlc3VsdCA8IHJlYWRTaXplKQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGJ1ZmZlci5yZXNpemUoYnl0ZXNSZWFkICsgcmVh
ZFNpemUpOworICAgIH0KKworICAgIGNoYXIqIHN0YXJ0ID0gYnVmZmVyLmRhdGEoKTsKKyAgICBj
aGFyKiBlbmQgPSBidWZmZXIuZGF0YSgpICsgYnl0ZXNSZWFkOworCisgICAgLy8gQ2hlY2sgdGhl
IHBsdWdpbiB0aW1lc3RhbXAuCisgICAgdGltZV90IGNhY2hlZFBsdWdpbkxhc3RNb2RpZmllZDsK
KyAgICBpZiAoIXJlYWROZXh0VGltZXN0YW1wKGNhY2hlZFBsdWdpbkxhc3RNb2RpZmllZCwgc3Rh
cnQsIGVuZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB0aW1lX3QgcGx1Z2luTGFzdE1v
ZGlmaWVkOworICAgIGlmICghZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCwgcGx1
Z2luTGFzdE1vZGlmaWVkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjYWNoZWRQ
bHVnaW5MYXN0TW9kaWZpZWQgIT0gcGx1Z2luTGFzdE1vZGlmaWVkKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyBDaGVjayB0aGUgZGVzY3JpcHRvciBmaWxlIHRpbWVzdGFtcC4gVGhp
cyBkZXRlY3RzIGlmIHRoZSBmaWxlIGhhcyBiZWVuIG92ZXJyaWRkZW4uCisgICAgLy8gV2Ugd3Jp
dGUgdGhlIHRpbWVzdGFtcCBkdXJpbmcgd3JpdGluZyB0aGUgZmlsZSBzbyB3ZSBzaG91bGQgYWNj
ZXB0IGEgc21hbGwgZGlmZmVyZW5jZS4KKyAgICB0aW1lX3QgY2FjaGVkRGVzY3JpcHRvckZpbGVM
YXN0TW9kaWZpZWQ7CisgICAgaWYgKCFyZWFkTmV4dFRpbWVzdGFtcChjYWNoZWREZXNjcmlwdG9y
RmlsZUxhc3RNb2RpZmllZCwgc3RhcnQsIGVuZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB0aW1lX3QgZGVzY3JpcHRvckZpbGVMYXN0TW9kaWZpZWQ7CisgICAgaWYgKCFnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZShmaWxlUGF0aCwgZGVzY3JpcHRvckZpbGVMYXN0TW9kaWZpZWQpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgY29uc3QgaW50IHRvbGVyYW5jZUluU2Vjb25kcyA9IDM7
CisgICAgaWYgKGFicyhjYWNoZWREZXNjcmlwdG9yRmlsZUxhc3RNb2RpZmllZCAtIGRlc2NyaXB0
b3JGaWxlTGFzdE1vZGlmaWVkKSA+IHRvbGVyYW5jZUluU2Vjb25kcykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFyZWFkTmV4dFVURjhTdHJpbmcocGx1Z2luLmluZm8ubmFtZSwg
c3RhcnQsIGVuZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXJlYWROZXh0VVRG
OFN0cmluZyhwbHVnaW4uaW5mby5kZXNjLCBzdGFydCwgZW5kKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIFN0cmluZyBtaW1lRGVzY3JpcHRpb247CisgICAgaWYgKCFyZWFkTmV4dFVURjhT
dHJpbmcobWltZURlc2NyaXB0aW9uLCBzdGFydCwgZW5kKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHBhcnNlTUlNRURlc2NyaXB0aW9uKG1pbWVEZXNjcmlwdGlvbiwgcGx1Z2luLmluZm8u
bWltZXMpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1
bGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJ
bmZvJiBwbHVnaW4pCiB7CisgICAgU3RyaW5nIHBsdWdpbkZpbGVOYW1lID0gcGF0aEdldEZpbGVO
YW1lKHBsdWdpblBhdGgpOworICAgIFN0cmluZyBiYXNlTmFtZSA9IHBsdWdpbkZpbGVOYW1lICsg
U3RyaW5nOjpmb3JtYXQoIi4ldSIsIFN0cmluZ0hhc2g6Omhhc2gocGx1Z2luUGF0aCkpICsgU3Ry
aW5nKCIuYmluIik7CisgICAgU3RyaW5nIGZpbGVQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHBsdWdpbk1ldGFEYXRhQ2FjaGVEaXJlY3RvcnkoKSwgYmFzZU5hbWUpOworCisgICAgaWYg
KCFyZWFkUGx1Z2luTWV0YURhdGFGcm9tRGVzY3JpcHRvckZpbGUoZmlsZVBhdGgsIHBsdWdpblBh
dGgsIHBsdWdpbikpIHsKKyAgICAgICAgLy8gKFJlKWdlbmVyYXRlIHRoZSBmaWxlIGFuZCB0cnkg
YWdhaW4uCisgICAgICAgIGlmICghUGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGVNZXRhRGF0YURl
c2NyaXB0b3JGaWxlKHBsdWdpblBhdGgsIGZpbGVQYXRoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgaWYgKCFyZWFkUGx1Z2luTWV0YURhdGFGcm9tRGVzY3JpcHRvckZpbGUo
ZmlsZVBhdGgsIHBsdWdpblBhdGgsIHBsdWdpbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgcGx1Z2luLmluZm8uZmlsZSA9IHBsdWdpbkZpbGVOYW1lOworICAgIHBs
dWdpbi5wYXRoID0gcGx1Z2luUGF0aDsKKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMg
Ym9vbCB3cml0ZVVURjhTdHJpbmcoUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQoreworICAgIEFTU0VSVF9BUkcoZmlsZSwgaXNIYW5kbGVWYWxpZChmaWxlKSk7
CisKKyAgICBDU3RyaW5nIHV0ZjhTdHJpbmcgPSBzdHJpbmcudXRmOCgpOworICAgIGludCBsZW5n
dGggPSB1dGY4U3RyaW5nLmxlbmd0aCgpICsgMTsKKyAgICByZXR1cm4gd3JpdGVUb0ZpbGUoZmls
ZSwgdXRmOFN0cmluZy5kYXRhKCksIGxlbmd0aCkgPT0gbGVuZ3RoOworfQorCitzdGF0aWMgYm9v
bCB3cml0ZVRpbWVzdGFtcChQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgY29uc3QgdGltZV90JiB0
aW1lLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIEFTU0VSVF9BUkcoZmlsZSwgaXNI
YW5kbGVWYWxpZChmaWxlKSk7CisKKyAgICAvLyBXZSBwdXNoIGFuIGV4dHJhIG51bGwgY2hhcmFj
dGVyIGluIGZhdm91ciBvZiBkYXRhIGNvcnJ1cHRpb24gZGV0ZWN0aW9uLgorICAgIGNoYXIgYnVm
ZmVyW3NpemVvZih0aW1lX3QpICsgMV07CisgICAgbWVtc2V0KGJ1ZmZlciwgMCwgc2l6ZW9mKGJ1
ZmZlcikpOworICAgICpyZWludGVycHJldF9jYXN0PHRpbWVfdCo+KGJ1ZmZlcikgPSB0aW1lOwor
CisgICAgaWYgKHdyaXRlVG9GaWxlKGZpbGUsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpID09IHNp
emVvZihidWZmZXIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNsb3NlRmlsZShmaWxl
KTsKKyAgICBkZWxldGVGaWxlKGZpbGVQYXRoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0
YXRpYyBib29sIHdyaXRlU3RyaW5nKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBjb25zdCBTdHJp
bmcmIHN0cmluZywgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICBBU1NFUlRfQVJHKGZp
bGUsIGlzSGFuZGxlVmFsaWQoZmlsZSkpOworCisgICAgaWYgKHdyaXRlVVRGOFN0cmluZyhmaWxl
LCBzdHJpbmcpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNsb3NlRmlsZShmaWxlKTsK
KyAgICBkZWxldGVGaWxlKGZpbGVQYXRoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmNyZWF0ZVBsdWdpbk1ldGFEYXRhRGVzY3JpcHRvckZpbGUo
Y29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorewogICAg
IC8vIFRlbXBhcmFyaWx5IHN1cHByZXNzIHN0ZG91dCBpbiB0aGlzIGZ1bmN0aW9uIGFzIHBsdWdp
bnMgd2lsbCBiZSBsb2FkZWQgYW5kIHNodXRkb3duIGFuZCBkZWJ1ZyBpbmZvCiAgICAgLy8gaXMg
bGVha2VkIHRvIGxheW91dCB0ZXN0IG91dHB1dC4KICAgICBTdGRvdXREZXZOdWxsUmVkaXJlY3Rv
ciBzdGRvdXREZXZOdWxsUmVkaXJlY3RvcjsKQEAgLTE2NCwyMCArMzE5LDQ3IEBAIGJvb2wgTmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRo
LCBQbHVnaW5Nb2R1bGVJCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHBsdWdpbk1vZHVs
ZS0+aW5jcmVtZW50TG9hZENvdW50KCk7Ci0gICAgYm9vbCByZXR1cm5WYWx1ZSA9IHBsdWdpbk1v
ZHVsZS0+Z2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihwbHVnaW4pOworICAgIFJhd1BsdWdp
bk1ldGFEYXRhIG1ldGFEYXRhOworICAgIGJvb2wgZ290UGx1Z2luSW5mbyA9IHBsdWdpbk1vZHVs
ZS0+Z2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihtZXRhRGF0YSk7CiAgICAgcGx1Z2luTW9k
dWxlLT5kZWNyZW1lbnRMb2FkQ291bnQoKTsKKyAgICBpZiAoIWdvdFBsdWdpbkluZm8pCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlID0gb3BlbkZp
bGUoZmlsZVBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGZpbGUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAg
Ly8gV3JpdGUgYSB0aW1lc3RhbXAgZm9yIHRoZSBwbHVnaW4uCisgICAgdGltZV90IGxhc3RNb2Rp
ZmllZDsKKyAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgsIGxhc3RN
b2RpZmllZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXdyaXRlVGltZXN0YW1w
KGZpbGUsIGxhc3RNb2RpZmllZCwgZmlsZVBhdGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBXcml0ZSB0aGUgY3VycmVudCB0aW1lIGFzIGEgdGltZXN0YW1wIGZvciB0aGUgZGVz
Y3JpcHRvciBmaWxlIGl0c2VsZi4KKyAgICBpZiAoIXdyaXRlVGltZXN0YW1wKGZpbGUsIHRpbWUo
MCksIGZpbGVQYXRoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCF3cml0ZVN0
cmluZyhmaWxlLCBtZXRhRGF0YS5uYW1lLCBmaWxlUGF0aCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIXdyaXRlU3RyaW5nKGZpbGUsIG1ldGFEYXRhLmRlc2NyaXB0aW9uLCBmaWxl
UGF0aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXdyaXRlU3RyaW5nKGZpbGUs
IG1ldGFEYXRhLm1pbWVEZXNjcmlwdGlvbiwgZmlsZVBhdGgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBjbG9zZUZpbGUoZmlsZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQg
TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmRldGVybWluZVF1aXJrcygpCiB7CiAjaWYgQ1BVKFg4Nl82
NCkKLSAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbjsKLSAgICBpZiAoIWdldFBsdWdpbkluZm9G
b3JMb2FkZWRQbHVnaW4ocGx1Z2luKSkKKyAgICBSYXdQbHVnaW5NZXRhRGF0YSBtZXRhRGF0YTsK
KyAgICBpZiAoIWdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4obWV0YURhdGEpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBWZWN0b3I8TWltZUNsYXNzSW5mbz4gbWltZVR5cGVzID0gcGx1Z2lu
LmluZm8ubWltZXM7CisgICAgVmVjdG9yPE1pbWVDbGFzc0luZm8+IG1pbWVUeXBlczsKKyAgICBw
YXJzZU1JTUVEZXNjcmlwdGlvbihtZXRhRGF0YS5taW1lRGVzY3JpcHRpb24sIG1pbWVUeXBlcyk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtaW1lVHlwZXMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgaWYgKG1pbWVUeXBlc1tpXS50eXBlID09ICJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1m
bGFzaCIpIHsKICAgICAgICAgICAgIG1fcGx1Z2luUXVpcmtzLmFkZChQbHVnaW5RdWlya3M6Okln
bm9yZVJpZ2h0Q2xpY2tJbldpbmRvd2xlc3NNb2RlKTsKQEAgLTE4Nyw2ICszNjksMzMgQEAgdm9p
ZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6ZGV0ZXJtaW5lUXVpcmtzKCkKICNlbmRpZgogfQogCitT
dHJpbmcgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnBsdWdpbk1ldGFEYXRhQ2FjaGVEaXJlY3Rvcnko
KQoreworI2lmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JNKEdUSykKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKKyNlbHNlCisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIHJlc3VsdCwgKCkpOworICAgIGlmICghcmVzdWx0LmlzTnVsbCgpKQorICAg
ICAgICByZXR1cm4gcmVzdWx0OworCisgICAgU3RyaW5nIGNhY2hlRGlyZWN0b3J5OworI2lmIFBM
QVRGT1JNKFFUKQorICAgIFFTdHJpbmcgZGF0YUxvY2F0aW9uID0gUVN0YW5kYXJkUGF0aHM6Ondy
aXRhYmxlTG9jYXRpb24oUVN0YW5kYXJkUGF0aHM6OkRhdGFMb2NhdGlvbik7CisgICAgaWYgKGRh
dGFMb2NhdGlvbi5pc0VtcHR5KCkpCisgICAgICAgIGRhdGFMb2NhdGlvbiA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChRRGlyOjpob21lUGF0aCgpLCBRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNh
dGlvbk5hbWUoKSk7CisgICAgZGF0YUxvY2F0aW9uID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGRhdGFMb2NhdGlvbiwgIi5RdFdlYktpdCIpOworICAgIGNhY2hlRGlyZWN0b3J5ID0gZGF0YUxv
Y2F0aW9uOworI2VsaWYgUExBVEZPUk0oR1RLKQorICAgIGNhY2hlRGlyZWN0b3J5ID0gZmlsZW5h
bWVUb1N0cmluZyhnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3ZWJr
aXRndGsiLCBOVUxMKSk7CisjZW5kaWYKKworICAgIHJlc3VsdCA9IHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChjYWNoZURpcmVjdG9yeSwgIm5wYXBpX21ldGFkYXRhX2NhY2hlIik7CisgICAgbWFr
ZUFsbERpcmVjdG9yaWVzKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbmRpZgorfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMVUdJTl9BUkNISVRFQ1RVUkUo
WDExKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1h
cFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAK
aW5kZXggYjBhYjJlYy4uNDkyNDE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQv
U2hhcmVhYmxlQml0bWFwUXQuY3BwCkBAIC02NCwxMCArNjQsMTQgQEAgdm9pZCBTaGFyZWFibGVC
aXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQmIGRz
dFBvaW50LAogICAgIHBhaW50ZXItPmRyYXdJbWFnZShkc3RQb2ludCwgaW1hZ2UsIFFSZWN0KHNy
Y1JlY3QpKTsKIH0KIAotdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4
dCYgLypjb250ZXh0Ki8sIGZsb2F0IC8qc2NhbGVGYWN0b3IqLywgY29uc3QgSW50UG9pbnQmIC8q
ZHN0UG9pbnQqLywgY29uc3QgSW50UmVjdCYgLypzcmNSZWN0Ki8pCit2b2lkIFNoYXJlYWJsZUJp
dG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3Rvciwg
Y29uc3QgSW50UG9pbnQmIGRzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQogewotICAg
IC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NjYzPi4K
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChzY2FsZUZhY3RvciA9PSAxLjApIHsKKyAg
ICAgICAgcGFpbnQoY29udGV4dCwgZHN0UG9pbnQsIHNyY1JlY3QpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd0ltYWdlKGRzdFBv
aW50LCBjcmVhdGVRSW1hZ2UoKSwgUVJlY3Qoc3JjUmVjdCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2Uv
V2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDFiNjNhMjcuLjdmMWM3MjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpA
QCAtMzY2LDYgKzM2Niw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFBsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5LmNwcCBcCiAgICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNw
cCBcCiAgICAgUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgXAorICAgIFBs
dWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBcCiAgICAgUGx1Z2luUHJv
Y2Vzcy9xdC9QbHVnaW5Db250cm9sbGVyUHJveHlRdC5jcHAgXAogICAgIFBsdWdpblByb2Nlc3Mv
cXQvUGx1Z2luUHJvY2Vzc01haW5RdC5jcHAgXAogICAgIFBsdWdpblByb2Nlc3MvcXQvUGx1Z2lu
UHJvY2Vzc1F0LmNwcCBcCkBAIC01MDksOCArNTEwLDggQEAgU09VUkNFUyArPSBcCiAgICAgVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvUGx1Z2lucy9X
ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwIFwKLSAgICBVSVByb2Nlc3MvUGx1Z2lucy9xdC9Q
bHVnaW5Qcm9jZXNzUHJveHlRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1
Z2luSW5mb1N0b3JlVW5peC5jcHAgXAorICAgIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2lu
UHJvY2Vzc1Byb3h5VW5peC5jcHAgXAogICAgIFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVy
LmNwcCBcCiAgICAgVUlQcm9jZXNzL1RpbGVkRHJhd2luZ0FyZWFQcm94eS5jcHAgXAogICAgIFVJ
UHJvY2Vzcy9WaXNpdGVkTGlua1Byb3ZpZGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcAppbmRl
eCBiNzI1ZDdiLi4yZDRhNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4K
ICNpbmNsdWRlIDxRRGVidWc+CisjaW5jbHVkZSA8UURpcj4KICNpbmNsdWRlIDxRRmlsZT4KICNp
bmNsdWRlIDxRTG9jYWxTZXJ2ZXI+CiAjaW5jbHVkZSA8UU1ldGFUeXBlPgpAQCAtMTAzLDExICsx
MDQsMTMgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogewogICAgIFFT
dHJpbmcgYXBwbGljYXRpb25QYXRoID0gUUxhdGluMVN0cmluZygiJTEgJTIiKTsKIAotICAgIGlm
IChRRmlsZTo6ZXhpc3RzKFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uRGlyUGF0aCgpICsg
UUxhdGluMVN0cmluZygiL1F0V2ViUHJvY2VzcyIpKSkgewotICAgICAgICBhcHBsaWNhdGlvblBh
dGggPSBhcHBsaWNhdGlvblBhdGguYXJnKFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uRGly
UGF0aCgpICsgUUxhdGluMVN0cmluZygiL1F0V2ViUHJvY2VzcyIpKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBhcHBsaWNhdGlvblBhdGggPSBhcHBsaWNhdGlvblBhdGguYXJnKFFMYXRpbjFTdHJp
bmcoIlF0V2ViUHJvY2VzcyIpKTsKLSAgICB9CisgICAgUUxhdGluMVN0cmluZyBleGVjdXRhYmxl
TmFtZShtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc0xhdW5jaGVyOjpXZWJQ
cm9jZXNzID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJRdFdlYlByb2Nlc3Mi
IDogIlF0V2ViUGx1Z2luUHJvY2VzcyIpOworICAgIFFTdHJpbmcgZXhwZWN0ZWRFeGVjdXRhYmxl
UGF0aCA9IFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uRGlyUGF0aCgpICsgUURpcjo6c2Vw
YXJhdG9yKCkgKyBleGVjdXRhYmxlTmFtZTsKKyAgICBpZiAoUUZpbGU6OmV4aXN0cyhleHBlY3Rl
ZEV4ZWN1dGFibGVQYXRoKSkKKyAgICAgICAgYXBwbGljYXRpb25QYXRoID0gYXBwbGljYXRpb25Q
YXRoLmFyZyhleHBlY3RlZEV4ZWN1dGFibGVQYXRoKTsKKyAgICBlbHNlCisgICAgICAgIGFwcGxp
Y2F0aW9uUGF0aCA9IGFwcGxpY2F0aW9uUGF0aC5hcmcoZXhlY3V0YWJsZU5hbWUpOwogCiAjaWYg
T1MoREFSV0lOKQogICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCmlu
ZGV4IGE3NWQ1YjEuLjY4MDA1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCkBAIC04MCw2ICs4MCwxMCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgY3JlYXRlUHJvcGVydHlMaXN0RmlsZShjb25zdCBQbHVnaW5N
b2R1bGVJbmZvJik7CiAjZW5kaWYKIAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAg
IHN0YXRpYyBib29sIGNyZWF0ZU1ldGFEYXRhRGVzY3JpcHRvckZpbGUoY29uc3QgU3RyaW5nJiBw
bHVnaW5QYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKKyNlbmRpZgorCiBwcml2YXRlOgog
ICAgIFBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0IFBsdWdp
bk1vZHVsZUluZm8mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvcXQvUGx1Z2luUHJvY2Vzc1Byb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvcXQvUGx1Z2luUHJvY2Vzc1Byb3h5UXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjYzUyMWUwLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL3F0L1BsdWdpblByb2Nlc3NQcm94eVF0LmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiUGx1Z2luUHJvY2Vzc1Byb3h5LmgiCi0KLSNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi0K
LSNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBQ
bHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2lu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShQ
TFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZWUyYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXgu
Y3BwCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBVbml2ZXJzaXR5
IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5oIgorCisjaWYgRU5BQkxFKFBM
VUdJTl9QUk9DRVNTKQorCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oIgorI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKKyNpbmNsdWRl
IDxlcnJuby5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNs
dWRlIDxzcGF3bi5oPgorI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+
CisKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgorI2luY2x1
ZGUgPFFEaXI+CisjaW5jbHVkZSA8UUZpbGU+CisjZW5kaWYKKworI2luY2x1ZGUgPHN0ZGlvLmg+
CisKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0
Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCit7Cit9CisKK3N0YXRpYyBDU3RyaW5nIHBsdWdpblByb2Nlc3NFeGVj
dXRhYmxlUGF0aCgpCit7CisjaWYgUExBVEZPUk0oUVQpCisgICAgUUxhdGluMVN0cmluZyBleGVj
dXRhYmxlTmFtZSA9IFFMYXRpbjFTdHJpbmcoIlF0V2ViUGx1Z2luUHJvY2VzcyIpOworICAgIFFT
dHJpbmcgZXhwZWN0ZWRFeGVjdXRhYmxlUGF0aCA9IFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0
aW9uRGlyUGF0aCgpICsgUURpcjo6c2VwYXJhdG9yKCkgKyBleGVjdXRhYmxlTmFtZTsKKyAgICBp
ZiAoUUZpbGU6OmV4aXN0cyhleHBlY3RlZEV4ZWN1dGFibGVQYXRoKSkKKyAgICAgICAgcmV0dXJu
IFN0cmluZyhleHBlY3RlZEV4ZWN1dGFibGVQYXRoKS5hc2NpaSgpOworICAgIHJldHVybiBTdHJp
bmcoZXhlY3V0YWJsZU5hbWUpLmFzY2lpKCk7CisjZWxpZiBQTEFURk9STShHS1QpICYmIGRlZmlu
ZWQoTElCRVhFQ0RJUikKKyAgICAvLyBMSUJFWEVDRElSIGlzIG5vdCBkZWZpbmVkIHdoZW4gd2Ug
YnVpbGQgdGhlIHN0YXRpYyBiaW5hcnkgb2YgdGhlIHBsdWdpbiBwcm9jZXNzLgorICAgIGNvbnN0
IGdjaGFyKiBleGVjRGlyZWN0b3J5ID0gZ19nZXRlbnYoIldFQktJVF9FWEVDX1BBVEgiKTsKKyAg
ICByZXR1cm4gQ1N0cmluZyhnX2J1aWxkX2ZpbGVuYW1lKGV4ZWNEaXJlY3RvcnkgPyBleGVjRGly
ZWN0b3J5IDogTElCRVhFQ0RJUiwgIldlYktpdFBsdWdpblByb2Nlc3MiKTsKKyNlbHNlCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIENTdHJpbmcoKTsKKyNlbmRpZgorfQor
Citib29sIFBsdWdpblByb2Nlc3NQcm94eTo6Y3JlYXRlTWV0YURhdGFEZXNjcmlwdG9yRmlsZShj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAg
Q1N0cmluZyBleGVjdXRhYmxlUGF0aCA9IHBsdWdpblByb2Nlc3NFeGVjdXRhYmxlUGF0aCgpOwor
ICAgIGNoYXIgb3B0aW9uW10gPSAiLWNyZWF0ZU1ldGFEYXRhRGVzY3JpcHRpb24iOworICAgIENT
dHJpbmcgcGx1Z2luUGF0aEFTQ0lJID0gcGx1Z2luUGF0aC5hc2NpaSgpOworICAgIENTdHJpbmcg
ZmlsZVBhdGhBU0NJSSA9IGZpbGVQYXRoLmFzY2lpKCk7CisgICAgY2hhciogYXJnc1tdID0gewor
ICAgICAgICBleGVjdXRhYmxlUGF0aC5tdXRhYmxlRGF0YSgpLAorICAgICAgICBvcHRpb24sCisg
ICAgICAgIHBsdWdpblBhdGhBU0NJSS5tdXRhYmxlRGF0YSgpLAorICAgICAgICBmaWxlUGF0aEFT
Q0lJLm11dGFibGVEYXRhKCksCisgICAgICAgIDAKKyAgICB9OworCisgICAgcGlkX3QgcGlkOwor
ICAgIGlmIChwb3NpeF9zcGF3bigmcGlkLCBhcmdzWzBdLCAwLCAwLCBhcmdzLCA6OmVudmlyb24p
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBXYWl0IGF0IG1vc3QgMyBzZWNvbmRz
IGZvciB0aGUgY2hpbGQuIFRoaXMgaXMgYW4gZW1waXJpY2FsIGxpbWl0LgorICAgIC8vIFVuZm9y
dHVuYXRlbHkgc29tZSBwbHVnaW5zIChtb3N0bHkgdGhlIG5zcGx1Z2lud3JhcHBlciBiYXNlZCBv
bmVzKQorICAgIC8vIG5lZWQgcmVhbGx5IGxvbmcgdGltZSB0byBzZXQgdXAuIFNsZWVwIDUwIG1p
bGxpc2Vjb25kcyBiZWZvcmUgZWFjaCByZXRyeS4KKyAgICBpbnQgY2hpbGRTdGF0dXM7CisgICAg
dW5zaWduZWQgcmV0cnlDb3VudCA9IDA7CisgICAgY29uc3QgdW5zaWduZWQgbWF4V2FpdFRpbWVN
UyA9IDMwMDA7CisgICAgY29uc3QgdW5zaWduZWQgc2xlZXBUaW1lTVMgPSA1MDsKKyAgICB3aGls
ZSAodHJ1ZSkgeworICAgICAgICBpbnQgd2FpdFJlc3VsdDsKKyAgICAgICAgd2hpbGUgKCh3YWl0
UmVzdWx0ID0gd2FpdHBpZChwaWQsICZjaGlsZFN0YXR1cywgV05PSEFORykpID09IC0xICYmIGVy
cm5vID09IEVJTlRSKSB7IH0KKyAgICAgICAgQVNTRVJUKHdhaXRSZXN1bHQgIT0gLTEpOworICAg
ICAgICBpZiAod2FpdFJlc3VsdCkgeworICAgICAgICAgICAgQVNTRVJUKHdhaXRSZXN1bHQgPT0g
cGlkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJldHJ5
Q291bnQrKyA+PSBtYXhXYWl0VGltZU1TIC8gc2xlZXBUaW1lTVMpIHsKKyAgICAgICAgICAgIGtp
bGwocGlkLCBTSUdLSUxMKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
CisgICAgICAgIHRpbWVzcGVjIHNsZWVwVGltZSA9IHsgMCwgc2xlZXBUaW1lTVMgKiAxZSs2IH07
CisgICAgICAgIGludCBzbGVlcFJlc3VsdDsKKyAgICAgICAgd2hpbGUgKChzbGVlcFJlc3VsdCA9
IG5hbm9zbGVlcCgmc2xlZXBUaW1lLCAmc2xlZXBUaW1lKSkgPT0gLTEgJiYgZXJybm8gPT0gRUlO
VFIpIHsgfQorICAgICAgICBBU1NFUlQoc2xlZXBSZXN1bHQgPT0gMCk7CisgICAgfQorCisgICAg
aWYgKCFXSUZFWElURUQoY2hpbGRTdGF0dXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKFdFWElUU1RBVFVTKGNoaWxkU3RhdHVzKSAhPSBFWElUX1NVQ0NFU1MpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlHdGsuY3Bw
IGIvU291cmNlL1dlYktpdDIvcXQvUGx1Z2luTWFpblF0LmNwcApzaW1pbGFyaXR5IGluZGV4IDc3
JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2lu
UHJvY2Vzc1Byb3h5R3RrLmNwcApyZW5hbWUgdG8gU291cmNlL1dlYktpdDIvcXQvUGx1Z2luTWFp
blF0LmNwcAppbmRleCA0Yzg1NzcyLi5kNjUyZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9xdC9QbHVnaW5NYWluUXQuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBVbml2
ZXJzaXR5IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsMjEgKzI0LDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsdWdp
blByb2Nlc3NQcm94eS5oIgotCi0jaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotCi0jaW5jbHVk
ZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
Tm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxjb25maWcuaD4KKyNpbmNsdWRlIDxRdEdsb2Jh
bD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CisgICAgUV9ERUNMX0lNUE9SVCBpbnQgUGx1Z2luUHJv
Y2Vzc01haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KTsKK30KIAotdm9pZCBQbHVnaW5Qcm9jZXNz
UHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJn
dikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBXZWJLaXQ6OlBsdWdpblBy
b2Nlc3NNYWluKGFyZ2MsIGFyZ3YpOwogfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9xdHdlYmtp
dC1leHBvcnQubWFwIGIvU291cmNlL3F0d2Via2l0LWV4cG9ydC5tYXAKaW5kZXggYTU0NmNiMi4u
MWFjMmYzZiAxMDA2NDQKLS0tIGEvU291cmNlL3F0d2Via2l0LWV4cG9ydC5tYXAKKysrIGIvU291
cmNlL3F0d2Via2l0LWV4cG9ydC5tYXAKQEAgLTk2LDYgKzk2LDcgQEAgcXdrXzEuMCB7CiAKICAg
ICAgICAgIyBXZWJLaXQgMiBIZWxwZXJzCiAgICAgICAgIFdlYktpdDo6V2ViUHJvY2Vzc01haW5R
dCo7CisgICAgICAgIFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW4qOwogICAgICAgICBXVEY6OmZh
c3RNYWxsb2MqOwogICAgICAgICBXVEY6OmZhc3RGcmVlKjsKICAgICAgICAgV1RGOjpmYXN0WmVy
b2VkTWFsbG9jKjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA1ZmEwZWJkLi42NzlhOTYzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTItMDIgIEJhbGF6cyBL
ZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBTZXQgdXAg
cGx1Z2luIHByb2Nlc3Mgb24gVW5peAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzIxMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZWVuYWJsZSBwbHVnaW5zLiBUaGV5IHNob3VsZCBub3QgYmUgYSBzb3Vy
Y2UKKyAgICAgICAgb2YgcHJvYmxlbXMgbm93IHRoYXQgd2UgaGF2ZSBhIHdheSBvZiBydW5uaW5n
CisgICAgICAgIHRoZW0gb3V0LW9mLXByb2Nlc3MuCisKKyAgICAgICAgKiBxbWFrZS9ta3NwZWNz
L2ZlYXR1cmVzL2ZlYXR1cmVzLnByZjoKKwogMjAxMS0xMi0wMiAgSGFqaW1lIE1vcnJpdGEgIDxt
b3JyaXRhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTAxNzUxIGFuZCByMTAxNzc1LgpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0
dXJlcy9mZWF0dXJlcy5wcmYgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVz
LnByZgppbmRleCA3ODVjZmU4Li5hMTJhNzM5IDEwMDY0NAotLS0gYS9Ub29scy9xbWFrZS9ta3Nw
ZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgorKysgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1
cmVzL2ZlYXR1cmVzLnByZgpAQCAtMTAyLDEyICsxMDIsMTEgQEAgaXNFbXB0eShIQVZFX1FSQVdG
T05UKSB7CiAKICMgTmV0c2NhcGUgcGx1Z2lucyBzdXBwb3J0IGZvciBXZWJLaXQyCiAhbm9fd2Vi
a2l0MjohY29udGFpbnMoREVGSU5FUywgUExVR0lOX0FSQ0hJVEVDVFVSRV9VTlNVUFBPUlRFRCk6
IHsKLSAgICAjIERpc2FibGUgeGxpYiBwbHVnaW5zIHdoaWxlIHRoZXkncmUgaW4tcHJvY2Vzcywg
YmVjYXVzZSB0aGV5IGNyYXNoCi0gICAgIyBhcyBzb29uIGFzIGFuIGluc3RhbGxlZCBucGFwaSBw
bHVnaW4gdXNlcyBRdCA0LgotICAgIGZhbHNlOmNvbnRhaW5zKFFUX0NPTkZJRywgeGNiLXhsaWIp
IHsKKyAgICBjb250YWlucyhRVF9DT05GSUcsIHhjYi14bGliKSB7CiAgICAgICAgIENPTkZJRyAr
PSBwbHVnaW5fYmFja2VuZF94bGliCiAgICAgICAgIERFRklORVMgKz0gUExVR0lOX0FSQ0hJVEVD
VFVSRV9YMTE9MSBcCiAgICAgICAgICAgICAgICAgICAgUExVR0lOX0FSQ0hJVEVDVFVSRV9VTlNV
UFBPUlRFRD0wCisgICAgICAgIERFRklORVMgKz0gRU5BQkxFX1BMVUdJTl9QUk9DRVNTPTEKICAg
ICB9IGVsc2UgewogICAgICAgICBERUZJTkVTICs9IFBMVUdJTl9BUkNISVRFQ1RVUkVfVU5TVVBQ
T1JURUQ9MQogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118016</attachid>
            <date>2011-12-06 03:17:02 -0800</date>
            <delta_ts>2011-12-06 04:36:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72121-20111206121700.patch</filename>
            <type>text/plain</type>
            <size>54970</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxODA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFlM2M5NTBkZmU0NzZm
NzA0NzRjZmJmNzdjYzBjM2Q3NTgzZWJhMC4uMTIyMDBkMTU5M2MzMzYzNjU5OTRkNmI5OTFlNjZj
NDVlMTFhYzdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTEyLTA1ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdW1dLMl0gU2V0
IHVwIHBsdWdpbiBwcm9jZXNzIG9uIFVuaXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcyMTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkgc28gbm8gbmV3IHRl
c3RzLgorCisgICAgICAgICogcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6IEFkZGVkIG1pc3NpbmcgaW1wbGVt
ZW50YXRpb24uCisKIDIwMTEtMTItMDIgIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OIChyOTExMjUpOiBQb2x5bGluZSB0b29sIGlu
IGdvb2dsZSBkb2NzIGlzIGJyb2tlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDYyZjliOTc4MDdlMjIwYzI4N2Ji
NzNjNDdkMmQ5NTQ5NjI3OGE4YWYuLjNjZDNiYjAyNDViZWNjZmYyNTgxNWYxOTRiZDBhYTUwNGFh
NjhjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDEgQEAKKzIwMTEtMTItMDUgIEJhbGF6cyBL
ZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBTZXQgdXAg
cGx1Z2luIHByb2Nlc3Mgb24gVW5peAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzIxMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTZXR1cCBwbHVnaW4gcHJvY2VzcyBmb3IgUXQgYW5kIG1vdmUgdGhlIHRh
c2sgb2YgcXVlcnlpbmcgdGhlIHBsdWdpbnMKKyAgICAgICAgdG8gdGhpcyBwcm9jZXNzIGluIG9y
ZGVyIHRvIGF2b2lkIGNyYXNoZXMgZHVlIHRvIHBsdWdpbiBidWdzIG9yIGxpYnJhcnkKKyAgICAg
ICAgaW5jb21wYXRpYmlsaXR5LiBUaGUgYXBwcm9hY2ggb2YgcXVlcnlpbmcgdGhlIHBsdWdpbnMg
aXMgbm93IGluIHBhaXIKKyAgICAgICAgd2l0aCB0aGUgTWFjIHBvcnQ6IHRoZSBwbHVnaW4gcHJv
Y2VzcyB3cml0ZXMgaXQgdG8gYSBmaWxlIHdoaWNoIGlzIHJlYWQKKyAgICAgICAgb24gdGhlIFVJ
IHNpZGUuIFRoZSBmaWxlIGFsc28gc2VydmVzIGFzIGEgcGVyc2lzdGVudCBjYWNoZS4gVGhpcyB3
YXkKKyAgICAgICAgdGhpcyBwYXRjaCBhbHNvIGltcGxlbWVudHMgd2hhdCB3ZSBjYWxsIE5FVFND
QVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRQorICAgICAgICBpbiBXZWJDb3JlLgorCisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy5wcm86IEFkZGVkLgor
CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01haW5HdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFpbkd0ayk6CisgICAgICAgICogUGx1Z2lu
UHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc01haW4pOgorICAgICAgICBDcmVhdGUgbWV0YSBkYXRhIGRlc2NyaXB0aW9uIGZp
bGUgaWYgbGF1bmNoZWQgd2l0aAorICAgICAgICAtY3JlYXRlTWV0YURhdGFEZXNjcmlwdGlvbiBj
b21tYW5kIGxpbmUgYXJndW1lbnQuCisgICAgICAgIAorICAgICAgICAqIFNoYXJlZC9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQpOgorICAgICAgICBHZXQgcmlkIG9mIHRoZSBHdGsg
aW5pdGlhbGl6YXRpb24gaGFjay4gV2UgZG8gbm90IG5lYWQgaXQgaGVyZSBhbnltb3JlLgorICAg
ICAgICAKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1v
ZHVsZS5oOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBs
dWdpbk1vZHVsZVgxMS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBhcnNlTUlNRURlc2NyaXB0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm9G
b3JMb2FkZWRQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpyZWFkTmV4dFVURjhTdHJpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpyZWFkTmV4dFRpbWVzdGFtcCk6CisgICAgICAgIChXZWJLaXQ6OmRl
c2NyaXB0b3JGaWxlU2NoZW1hSUQpOgorICAgICAgICAoV2ViS2l0OjpyZWFkUGx1Z2luTWV0YURh
dGFGcm9tRGVzY3JpcHRvckZpbGUpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1v
ZHVsZTo6Z2V0UGx1Z2luSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OndyaXRlVGltZXN0YW1wKToK
KyAgICAgICAgKFdlYktpdDo6d3JpdGVTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2Fw
ZVBsdWdpbk1vZHVsZTo6Y3JlYXRlUGx1Z2luTWV0YURhdGFEZXNjcmlwdG9yRmlsZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjpkZXRlcm1pbmVRdWlya3MpOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6cGx1Z2luTWV0YURhdGFDYWNoZURp
cmVjdG9yeSk6CisgICAgICAgIEFkZGVkIHRoZSBsb2dpYyB0byB3cml0ZSBvdXQgcGx1Z2luIG1l
dGEgZGF0YSBpbnRvIGEgZmlsZSBhbmQgcmVhZCBpdAorICAgICAgICBmcm9tIHRoZXJlLiBTaW1p
bGFyIGhvdyBpdCBpcyBpbXBsZW1lbnRlZCBpbiBXZWJDb3JlIHdpdGggYSBiaXQgbW9yZQorICAg
ICAgICBjaGVja3MgZm9yIGRhdGEgY29ycnVwdGlvbi4KKworICAgICAgICAqIFNoYXJlZC9xdC9T
aGFyZWFibGVCaXRtYXBRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6
cGFpbnQpOgorICAgICAgICBBZGRlZCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIG92ZXJyaWRlIHdp
dGggdGhlIHNjYWxlIGZhY3RvciBiZWNhdXNlCisgICAgICAgIGl0IGlzIGNhbGxlZCBmcm9tIFBs
dWdpblByb3h5LiBJdCBkb2VzIG5vdCBhY3R1YWxseSBoYW5kbGUgdGhlIGNhc2UKKyAgICAgICAg
d2hlbiB0aGUgc2NhbGUgZmFjdG9yIGlzIG5vdCAxIGJlY2F1c2UgSSBjb3VsZCBub3QgZmlndXJl
IG91dCBhIHdheQorICAgICAgICB0byB0ZXN0IHRoaXMgY2FzZS4gTmVlZCB0byBiZSBmaXhlZCBp
biBhIGZvbGxvdy11cC4KKyAgICAgICAgCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
KiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQcm9jZXNzTGF1bmNoZXI6OnBsYXRmb3JtRXhlY3V0YWJsZVBhdGgpOgorICAgICAgICAoV2Vi
S2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
cm9jZXNzTGF1bmNoZXI6OnBsYXRmb3JtRXhlY3V0YWJsZVBhdGgpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nl
c3NMYXVuY2hlcjo6cGxhdGZvcm1FeGVjdXRhYmxlUGF0aCk6CisgICAgICAgIEZhY3RvcmVkIHRo
ZSBleGVjdXRhYmxlIHBhdGggZGV0ZXJtaW5hdGlvbiBpbnRvIGEgc3RhdGljIG1ldGhvZAorICAg
ICAgICB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLiBXZSBjYW4gdXNlIGl0IHdoZW4gbGF1bmNo
aW5nIHRoZQorICAgICAgICBwbHVnaW4gcHJvY2VzcyBmb3IgY3JlYXRpbmcgdGhlIGRlc2NyaXB0
b3IgZmlsZS4KKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nl
c3NQcm94eUd0ay5jcHA6IFJlbW92ZWQuCisgICAgICAgIE5vIG5lZWQgZm9yIGEgR3RrL1F0IHZl
cnNpb24gb2YgdGhpcywgaW5zdGVhZCBjcmVhdGVkIGEKKyAgICAgICAgY29tbW9uIFBsdWdpblBy
b2Nlc3NQcm94eVVuaXguY3BwLgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVn
aW5Qcm9jZXNzUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94
eTo6Y3JlYXRlUHJvcGVydHlMaXN0RmlsZSk6CisgICAgICAgIFVzZSBQcm9jZXNzTGF1bmNoZXI6
OnBsYXRmb3JtRXhlY3V0YWJsZVBhdGggZm9yIGRldGVybWluaW5nCisgICAgICAgIHRoZSBleGVj
dXRhYmxlIHBhdGggb2YgdGhlIHBsdWdpbiBwcm9jZXNzIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRp
b24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94
eVVuaXguY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5Ojpw
bGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc1Byb3h5OjpjcmVhdGVNZXRhRGF0YURlc2NyaXB0b3JGaWxlKToKKyAgICAgICAgTGF1
bmNoaW5nIHRoZSBwbHVnaW4gcHJvY2VzcyB3aXRoIHRoZSAtY3JlYXRlTWV0YURhdGFEZXNjcmlw
dGlvbgorICAgICAgICBhcmd1bWVudC4gSW1wbGVtZW50ZWQgaW4gYSB3YXkgdG8gbm90IGJsb2Nr
IGZvcmV2ZXIgaWYgdGhlIHBsdWdpbgorICAgICAgICBwcm9jZXNzIGhhbmdzICh3aGljaCBkaWQg
bm90IGhhcHBlbiBpbiBteSBlbnZpcm9ubWVudCBidXQgaXQncyBiZXR0ZXIKKyAgICAgICAgdG8g
YmUgcGVzc2ltaXN0aWMpLgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUE5f
R2V0VmFsdWUpOgorICAgICAgICBDaGFuZ2VkIGFjY29yZGluZyB0byB0aGUgcmVtb3ZlIG9mIHRo
ZSBmbGFzaCBoYWNrLiBEbyBub3QgdHJ5CisgICAgICAgIHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBw
bHVnaW4gbmVlZHMgR3RrIGJ5IGl0J3MgbmFtZSBidXQgaW5zdGVhZAorICAgICAgICBhbHdheXMg
Z2V0IGJhY2sgdGhlIGV4cGVjdGVkIEd0ayB2ZXJzaW9uICgyKS4gT25seSBHdGsgcGx1Z2lucwor
ICAgICAgICBzaG91bGQgYXNrIGZvciB0aGlzIGFueXdheS4KKyAgICAgICAgCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICog
cXQvUGx1Z2luTWFpblF0LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL3F0L1BsdWdpblByb2Nlc3NQcm94eVF0LmNwcC4KKyAgICAgICAgRW50cnkgcG9p
bnQgZm9yIHRoZSBwbHVnaW4gcHJvY2Vzcy4gKEl0IGlzIGFjdHVhbGx5IGEgbmV3IGZpbGUgLSBk
b24ndCBtaW5kIHdoYXQgZ2l0IGRpZmYgc2F5cy4pCisgICAgICAgIE1vdmVkIEd0ayBpbml0aWFs
aXphdGlvbiBoZXJlLgorICAgICAgICAobWFpbik6CisKIDIwMTEtMTItMDIgIEFuZHJhcyBCZWNz
aSAgPGFuZHJhcy5iZWNzaUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIFNldCBldmVu
dCB0aW1lc3RhbXBzIG9uIGN1c3RvbSBpbnB1dCBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9R
dFdlYktpdC5wcm8gYi9Tb3VyY2UvUXRXZWJLaXQucHJvCmluZGV4IDAyZmM5ZTFjN2ViZTFmNzMx
OWQwOWQxMjE1ZTIwOTg5OWI0NTFhNzQuLmJiYmZjNDFlNjgxN2I3YzBkNWJkNWUxM2VjOWQzY2Zk
NDc5YmExZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9RdFdlYktpdC5wcm8KKysrIGIvU291cmNlL1F0
V2ViS2l0LnBybwpAQCAtNCw2ICs0LDggQEAKICMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZv
ciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQgc3lzdGVtCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorbG9hZChm
ZWF0dXJlcykKKwogVEVNUExBVEUgPSBzdWJkaXJzCiBDT05GSUcgKz0gb3JkZXJlZAogCkBAIC0x
Myw2ICsxNSwxMCBAQCBTVUJESVJTICs9IGFwaQogIW5vX3dlYmtpdDIgewogICAgIHdlYnByb2Nl
c3MuZmlsZSA9IFdlYktpdDIvV2ViUHJvY2Vzcy5wcm8KICAgICBTVUJESVJTICs9IHdlYnByb2Nl
c3MKKyAgICBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfUExVR0lOX1BST0NFU1M9MSkgeworICAg
ICAgICBwbHVnaW5wcm9jZXNzLmZpbGUgPSBXZWJLaXQyL1BsdWdpblByb2Nlc3MucHJvCisgICAg
ICAgIFNVQkRJUlMgKz0gcGx1Z2lucHJvY2VzcworICAgIH0KIH0KIAogaW5jbHVkZShXZWJLaXQv
cXQvZG9jcy9kb2NzLnByaSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0
L0ZpbGVTeXN0ZW1RdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVt
UXQuY3BwCmluZGV4IDMyNjQ0ZDE3OGJiZDZlMmM5ZTBlYmEzZWUxNGM1NDM4ZjJjNzRiMWQuLjQx
MWM4N2Y4YjA5ZjdiMjlkMzk3ZjlmZDVhNjJlNjRmMjI4Y2Q0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNwcApAQCAtMjE4LDYgKzIxOCwxMiBAQCBib29s
IHVubG9hZE1vZHVsZShQbGF0Zm9ybU1vZHVsZSBtb2R1bGUpCiAjZW5kaWYKIH0KIAorQ1N0cmlu
ZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFFC
eXRlQXJyYXkgbG9jYWw4Qml0ID0gc3RhdGljX2Nhc3Q8UVN0cmluZz4ocGF0aCkudG9Mb2NhbDhC
aXQoKTsKKyAgICByZXR1cm4gQ1N0cmluZyhsb2NhbDhCaXQuY29uc3REYXRhKCksIGxvY2FsOEJp
dC5sZW5ndGgoKSk7Cit9CisKIH0KIAogLy8gdmltOiB0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUuYW0KaW5kZXggNGNhNDk3NzZkZjQ2YmEwOWJjNjcyODRhNjcxM2NiNjg1YjY4YWQwYy4uM2Yw
ZWVlZGMzNDdmZjliNThmMWQwMTg0M2U4ZjkzMGI2NTFhNjEzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUu
YW0KQEAgLTU4Nyw4ICs1ODcsOCBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9S
X1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX1NPVQogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuaCBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2Vy
LmNwcCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nl
c3NQcm94eUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgv
UGx1Z2luSW5mb1N0b3JlVW5peC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Jlc3Bv
bnNpdmVuZXNzVGltZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzcG9uc2l2
ZW5lc3NUaW1lci5oIFwKQEAgLTEyNTMsNiArMTI1Myw3IEBAIFByb2dyYW1zX1dlYktpdFBsdWdp
blByb2Nlc3NfQ1BQRkxBR1MgPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVk
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucyBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvIFwKKwktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvIFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy8gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy8gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS8gXApAQCAtMTI2NCw2ICsxMjY1LDcgQEAgUHJv
Z3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19DUFBGTEFHUyA9IFwKIAktREJVSUxESU5HX1dFQktJ
VCBcCiAJLURHVEtfQVBJX1ZFUlNJT05fMj0xIFwKIAktREVOQUJMRV9QTFVHSU5fUFJPQ0VTUz0x
IFwKKwktRExJQkVYRUNESVI9XCIiJChsaWJleGVjZGlyKSJcIiBcCiAJJChnbG9iYWxfY3BwZmxh
Z3MpIFwKIAkkKHdlYmNvcmVfY3BwZmxhZ3MpIFwKIAkkKHdlYmNvcmVndGtfY3BwZmxhZ3MpIFwK
QEAgLTEzNzgsNiArMTM4MCw5IEBAIFByb2dyYW1zX1dlYktpdFBsdWdpblByb2Nlc3NfU09VUkNF
UyA9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAgXAor
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwIFwK
KwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0
ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJv
Y2Vzc1Byb3h5VW5peC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW4uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgg
XAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVV
dGlsaXRpZXMuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mu
cHJvIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2FjNTY2
MWIxNjBmYjYxYWFlMjM5NzZhZjBlYTEzNDk1M2FhNTFkYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MucHJvCkBAIC0wLDAgKzEsMzUgQEAKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorIyBQcm9qZWN0IGZpbGUgZm9yIHRoZSBXZWJLaXQyIHBsdWdpbiBwcm9jZXNzIGJpbmFy
eQorIworIyBTZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBi
dWlsZCBzeXN0ZW0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitsb2FkKGZlYXR1cmVzKQorCitURU1QTEFURSA9
IGFwcAorCitUQVJHRVQgPSBRdFdlYlBsdWdpblByb2Nlc3MKK0RFU1RESVIgPSAkJHtST09UX0JV
SUxEX0RJUn0vYmluCisKK1NPVVJDRVMgKz0gcXQvUGx1Z2luTWFpblF0LmNwcAorCitJTkNMVURF
UEFUSCA9ICQkUFdELy4uL0phdmFTY3JpcHRDb3JlIFwKKyAgICAgICAgICAgICAgJCRJTkNMVURF
UEFUSAorCitDT05GSUcgKz0gcXR3ZWJraXQKKworUVQgKz0gbmV0d29yaworbWFjeDogUVQgKz0g
eG1sCisKK2NvbnRhaW5zKFFUX0NPTkZJRywgb3BlbmdsKSB7CisgICAgUVQgKz0gb3BlbmdsCisg
ICAgREVGSU5FUyArPSBRVF9DT05GSUdVUkVEX1dJVEhfT1BFTkdMCit9CisKK0lOU1RBTExTICs9
IHRhcmdldAorCitpc0VtcHR5KElOU1RBTExfQklOUykgeworICAgIHRhcmdldC5wYXRoID0gJCRb
UVRfSU5TVEFMTF9CSU5TXQorfSBlbHNlIHsKKyAgICB0YXJnZXQucGF0aCA9ICQkSU5TVEFMTF9C
SU5TCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVn
aW5Qcm9jZXNzTWFpbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9Q
bHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAKaW5kZXggOTk0MjYwNGU3YjlkZTM3YmQ5M2VmZTY0NDc2
MzY1OTAxNWYxOWU4Zi4uNjgwNjg4MDM5ZDIzODUyYzhkNTRlOTk5NjBlZWY0MDU3MWE4MzllOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vz
c01haW5HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdp
blByb2Nlc3NNYWluR3RrLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluR3RrLmgiCiAKKyNpbmNsdWRlICJOZXRzY2Fw
ZVBsdWdpbk1vZHVsZS5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKICNpbmNsdWRlIDxX
ZWJLaXQyL1J1bkxvb3AuaD4KICNpbmNsdWRlIDxnZGsvZ2RreC5oPgpAQCAtNTEsMTIgKzUyLDIz
IEBAIHN0YXRpYyBpbnQgd2Via2l0Z3RrWEVycm9yKERpc3BsYXkqIHhkaXNwbGF5LCBYRXJyb3JF
dmVudCogZXJyb3IpCiAKIFdLX0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW5HdGsoaW50IGFy
Z2MsIGNoYXIqIGFyZ3ZbXSkKIHsKLSAgICBBU1NFUlQoYXJnYyA9PSAyKTsKKyAgICBBU1NFUlQo
YXJnYyA+PSAyKTsKKyAgICBib29sIGNyZWF0aW5nTWV0YURhdGFEZXNjcmlwdGlvbiA9ICFzdHJj
bXAoYXJndlsxXSwgIi1jcmVhdGVNZXRhRGF0YURlc2NyaXB0aW9uIik7CisgICAgQVNTRVJUKGFy
Z2MgPT0gMiB8fCAoYXJnYyA9PSA0ICYmIGNyZWF0aW5nTWV0YURhdGFEZXNjcmlwdGlvbikpOwog
CiAgICAgZ3RrX2luaXQoJmFyZ2MsICZhcmd2KTsKIAogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVh
ZGluZygpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKworICAgIGlmIChjcmVh
dGluZ01ldGFEYXRhRGVzY3JpcHRpb24pIHsKKyAgICAgICAgU3RyaW5nIHBsdWdpblBhdGgoYXJn
dlsyXSk7CisgICAgICAgIFN0cmluZyBtZXRhRGF0YURlc2NyaXB0b3JGaWxlUGF0aChhcmd2WzNd
KTsKKyAgICAgICAgaWYgKCFOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Y3JlYXRlUGx1Z2luTWV0YURh
dGFEZXNjcmlwdG9yRmlsZShwbHVnaW5QYXRoLCBtZXRhRGF0YURlc2NyaXB0b3JGaWxlUGF0aCkp
CisgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgICAgICByZXR1cm4gRVhJVF9T
VUNDRVNTOworICAgIH0KKwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwog
CiAgICAgLy8gUGx1Z2lucyBjYW4gcHJvZHVjZSBYIGVycm9ycyB0aGF0IGFyZSBoYW5kbGVkIGJ5
IHRoZSBHREsgWCBlcnJvciBoYW5kbGVyLCB3aGljaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5RdC5jcHAKaW5kZXggM2UwMDMz
ZmYwYWIzMzc2NTBlNTNkMDgxYzg5ZjQ0NDE0YTY3OGE3NS4uNDdmNmQ5MjlhMWFkMzFlMGNiMTA2
Yzk0ZTA2ZDE0YzgyMmZiZWViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBOb2tpYSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDQyICsy
NSw2OSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbHVnaW5Qcm9j
ZXNzTWFpbi5oIgogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorI2luY2x1ZGUgIlBsdWdp
blByb2Nlc3NNYWluLmgiCiAKLSNpbmNsdWRlICJDb21tYW5kTGluZS5oIgogI2luY2x1ZGUgIlBs
dWdpblByb2Nlc3MuaCIKICNpbmNsdWRlICJSdW5Mb29wLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgIlNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luTW9kdWxlLmgiCisjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorI2luY2x1ZGUg
PFFBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRRGVidWc+CisjaW5jbHVkZSA8UVN0cmluZ0xpc3Q+
CiAjaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAotI2RlZmluZSBTSE9XX0NSQVNIX1JFUE9SVEVSIDEKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWludCBQbHVnaW5Qcm9jZXNzTWFpbihjb25zdCBDb21tYW5k
TGluZSYgY29tbWFuZExpbmUpCitzdGF0aWMgdm9pZCBtZXNzYWdlSGFuZGxlcihRdE1zZ1R5cGUg
dHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKLSAgICBTdHJpbmcgc2VydmljZU5hbWUgPSBj
b21tYW5kTGluZVsic2VydmljZW5hbWUiXTsKLSAgICBpZiAoc2VydmljZU5hbWUuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIGlmICh0eXBlID09IFF0Q3JpdGlj
YWxNc2cpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbWVzc2FnZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBEbyBub3RoaW5nCit9CisKK1FXRUJLSVRfRVhQ
T1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAg
UUJ5dGVBcnJheSBzdXBwcmVzc091dHB1dCA9IHFnZXRlbnYoIlFUX1dFQktJVF9TVVBQUkVTU19X
RUJfUFJPQ0VTU19PVVRQVVQiKTsKKyAgICBpZiAoIXN1cHByZXNzT3V0cHV0LmlzRW1wdHkoKSAm
JiBzdXBwcmVzc091dHB1dCAhPSAiMCIpCisgICAgICAgIHFJbnN0YWxsTXNnSGFuZGxlcihtZXNz
YWdlSGFuZGxlcik7CiAKLSNpZiAhU0hPV19DUkFTSF9SRVBPUlRFUgotICAgIC8vIEluc3RhbGxz
IHNpZ25hbCBoYW5kbGVycyB0aGF0IGV4aXQgb24gYSBjcmFzaCBzbyB0aGF0IENyYXNoUmVwb3J0
ZXIgZG9lcyBub3Qgc2hvdyB1cC4KLSAgICBzaWduYWwoU0lHSUxMLCBfZXhpdCk7Ci0gICAgc2ln
bmFsKFNJR0ZQRSwgX2V4aXQpOwotICAgIHNpZ25hbChTSUdCVVMsIF9leGl0KTsKLSAgICBzaWdu
YWwoU0lHU0VHViwgX2V4aXQpOwotI2VuZGlmCisgICAgUUFwcGxpY2F0aW9uIGFwcChhcmdjLCBh
cmd2KTsKIAogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5pdGlh
bGl6ZU1haW5UaHJlYWQoKTsKKworICAgIGlmIChhcmdjIDw9IDEpCisgICAgICAgIHJldHVybiBF
WElUX0ZBSUxVUkU7CisKKyAgICBpZiAoYXBwLmFyZ3VtZW50cygpLmF0KDEpID09IFFMYXRpbjFT
dHJpbmcoIi1jcmVhdGVNZXRhRGF0YURlc2NyaXB0aW9uIikpIHsKKyAgICAgICAgaWYgKGFyZ2Mg
IT0gNCkKKyAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisKKyAgICAgICAgU3RyaW5n
IHBsdWdpblBhdGgoYXBwLmFyZ3VtZW50cygpLmF0KDIpKTsKKyAgICAgICAgU3RyaW5nIGRlc2Ny
aXB0b3JGaWxlUGF0aChhcHAuYXJndW1lbnRzKCkuYXQoMykpOworICAgICAgICBpZiAoIU5ldHNj
YXBlUGx1Z2luTW9kdWxlOjpjcmVhdGVQbHVnaW5NZXRhRGF0YURlc2NyaXB0b3JGaWxlKHBsdWdp
blBhdGgsIGRlc2NyaXB0b3JGaWxlUGF0aCkpCisgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlM
VVJFOworICAgICAgICByZXR1cm4gRVhJVF9TVUNDRVNTOworICAgIH0KKwogICAgIFJ1bkxvb3A6
OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCisgICAgLy8gQ3JlYXRlIHRoZSBjb25uZWN0aW9u
LgorICAgIGJvb2wgaXNOdW1iZXIgPSBmYWxzZTsKKyAgICBpbnQgaWRlbnRpZmllciA9IGFwcC5h
cmd1bWVudHMoKS5hdCgxKS50b0ludCgmaXNOdW1iZXIsIDEwKTsKKyAgICBpZiAoIWlzTnVtYmVy
KQorICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworCisgICAgV2ViS2l0OjpQbHVnaW5Qcm9j
ZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplKGlkZW50aWZpZXIsIFJ1bkxvb3A6Om1haW4oKSk7CisK
ICAgICBSdW5Mb29wOjpydW4oKTsKIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5N
b2R1bGUuY3BwCmluZGV4IDY0MmUzZjIxMTZmNDAxNjYwNWQzMTI3Nzg0MTYwNWNlOTVhNDQ2ODYu
LmZkYzdhYzU3ZDA1OGFhOTcwZTI5YTM0YWU0ZTlhOWJhODFhY2Y3ZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbk1vZHVsZS5jcHAKQEAgLTE5NywxMCArMTk3LDYgQEAgYm9vbCBOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6bG9hZCgpCiAKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQoKQog
ewotI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgIGFwcGx5WDExUXVpcmtzQmVmb3Jl
TG9hZCgpOwotI2VuZGlmCi0KICAgICBtX21vZHVsZSA9IGFkb3B0UHRyKG5ldyBNb2R1bGUobV9w
bHVnaW5QYXRoKSk7CiAgICAgaWYgKCFtX21vZHVsZS0+bG9hZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaAppbmRleCBmODBhMGExYTBhMzJjMDcyMWNl
NmFiZmI1ZmJkZDViNDBkOGE5NmIyLi5iMWRmZDBlYzk2MDcyYTAzOTM5OTgzYjFmNGM0YmE5NjBl
YzdmNTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmgKQEAgLTU5LDYgKzU5LDkgQEAgcHVi
bGljOgogCiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShNQUMpCiAgICAgc3RhdGljIGJvb2wgY3Jl
YXRlUGx1Z2luTUlNRVR5cGVzUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsK
KyNlbGlmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgIHN0YXRpYyBTdHJpbmcgcGx1Z2lu
TWV0YURhdGFDYWNoZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBib29sIGNyZWF0ZVBsdWdpbk1l
dGFEYXRhRGVzY3JpcHRvckZpbGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtNjgsOCArNzEsMTQgQEAgcHJp
dmF0ZToKIAogI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQogICAgIHZvaWQgYXBwbHlYMTFR
dWlya3NCZWZvcmVMb2FkKCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0TUlNRURlc2NyaXB0aW9uKGNv
bnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uLCBQbHVnaW5Nb2R1bGVJbmZvJik7Ci0gICAgYm9v
bCBnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKFBsdWdpbk1vZHVsZUluZm8mKTsKKworICAg
IHN0cnVjdCBSYXdQbHVnaW5NZXRhRGF0YSB7CisgICAgICAgIFN0cmluZyBuYW1lOworICAgICAg
ICBTdHJpbmcgZGVzY3JpcHRpb247CisgICAgICAgIFN0cmluZyBtaW1lRGVzY3JpcHRpb247Cisg
ICAgfTsKKworICAgIGJvb2wgZ2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihSYXdQbHVnaW5N
ZXRhRGF0YSYpOwogI2VuZGlmCiAKICAgICBib29sIHRyeUdldFNpdGVzV2l0aERhdGEoVmVjdG9y
PFN0cmluZz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05l
dHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCmlu
ZGV4IGJlMDRiZmYyNmY5OGY3NGQ5NDBjYWE1NTYxZWRjNTNjZmJjZmIxYTUuLmVkMmIyZTJjNWM0
NDJjODJlOGE1YjJjYmNmZDljOWZlNjEyZTc4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luTW9kdWxlWDExLmNwcApAQCAtMjgsMTggKzI4LDI2IEBACiAKICNpbmNsdWRlICJOZXRz
Y2FwZVBsdWdpbk1vZHVsZS5oIgogCisjaW5jbHVkZSAiUGx1Z2luSW5mb1N0b3JlLmgiCisjaW5j
bHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiTmV0c2NhcGVCcm93c2VyRnVu
Y3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KLQotI2lmIFBMQVRGT1JNKFFU
KQotI2luY2x1ZGUgPFFMaWJyYXJ5PgotI2VuZGlmCi0KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPGZjbnRs
Lmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNs
dWRlIDx1bmlzdGQuaD4KIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFDb3JlQXBwbGlj
YXRpb24+CisjaW5jbHVkZSA8UURpcj4KKyNpbmNsdWRlIDxRTGlicmFyeT4KKyNpbmNsdWRlIDxR
U3RhbmRhcmRQYXRocz4KKyNlbGlmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxnbGliLmg+Cisj
ZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNjksMzUgKzc3LDEzIEBAIFN0ZG91dERldk51bGxSZWRpcmVjdG9yOjp+U3Rkb3V0RGV2TnVs
bFJlZGlyZWN0b3IoKQogICAgICAgICBkdXAyKG1fc2F2ZWRTdGRvdXQsIFNURE9VVF9GSUxFTk8p
OwogfQogCi0jaWYgUExBVEZPUk0oUVQpCi1zdGF0aWMgdm9pZCBpbml0aWFsaXplR1RLKCkKK3N0
YXRpYyB2b2lkIHBhcnNlTUlNRURlc2NyaXB0aW9uKGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0
aW9uLCBWZWN0b3I8TWltZUNsYXNzSW5mbz4mIHJlc3VsdCkKIHsKLSAgICBRTGlicmFyeSBsaWJy
YXJ5KFFMYXRpbjFTdHJpbmcoImxpYmd0ay14MTEtMi4wLnNvLjAiKSk7Ci0gICAgaWYgKGxpYnJh
cnkubG9hZCgpKSB7Ci0gICAgICAgIHR5cGVkZWYgdm9pZCAqKCpndGtfaW5pdF9jaGVja19wdHIp
KGludCosIGNoYXIqKiopOwotICAgICAgICBndGtfaW5pdF9jaGVja19wdHIgZ3RrSW5pdENoZWNr
ID0gcmVpbnRlcnByZXRfY2FzdDxndGtfaW5pdF9jaGVja19wdHI+KGxpYnJhcnkucmVzb2x2ZSgi
Z3RrX2luaXRfY2hlY2siKSk7Ci0gICAgICAgIC8vIE5PVEU6IFdlJ3JlIHVzaW5nIGd0a19pbml0
X2NoZWNrKCkgc2luY2UgZ3RrX2luaXQoKSBjYWxscyBleGl0KCkgb24gZmFpbHVyZS4KLSAgICAg
ICAgaWYgKGd0a0luaXRDaGVjaykKLSAgICAgICAgICAgICh2b2lkKSBndGtJbml0Q2hlY2soMCwg
MCk7Ci0gICAgfQotfQotI2VuZGlmCisgICAgQVNTRVJUX0FSRyhyZXN1bHQsIHJlc3VsdC5pc0Vt
cHR5KCkpOwogCi12b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjphcHBseVgxMVF1aXJrc0JlZm9y
ZUxvYWQoKQotewotI2lmIFBMQVRGT1JNKFFUKQotICAgIGlmIChtX3BsdWdpblBhdGguY29udGFp
bnMoIm5wd3JhcHBlciIpIHx8IG1fcGx1Z2luUGF0aC5jb250YWlucygiZmxhc2hwbGF5ZXIiKSkg
ewotICAgICAgICBpbml0aWFsaXplR1RLKCk7Ci0gICAgICAgIG1fcGx1Z2luUXVpcmtzLmFkZChQ
bHVnaW5RdWlya3M6OlJlcXVpcmVzR1RLVG9vbEtpdCk7Ci0gICAgfQotI2VuZGlmCi19Ci0KLXZv
aWQgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNldE1JTUVEZXNjcmlwdGlvbihjb25zdCBTdHJpbmcm
IG1pbWVEZXNjcmlwdGlvbiwgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQotewogICAgIFZlY3Rv
cjxTdHJpbmc+IHR5cGVzOwogICAgIG1pbWVEZXNjcmlwdGlvbi5sb3dlcigpLnNwbGl0KFVDaGFy
KCc7JyksIGZhbHNlLCB0eXBlcyk7Ci0gICAgcGx1Z2luLmluZm8ubWltZXMucmVzZXJ2ZUNhcGFj
aXR5KHR5cGVzLnNpemUoKSk7CisgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodHlw
ZXMuc2l6ZSgpKTsKIAogICAgIHNpemVfdCBtaW1lSW5mb0NvdW50ID0gMDsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHR5cGVzLnNpemUoKTsgKytpKSB7CkBAIC0xMDYsOCArOTIsOCBAQCB2
b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpzZXRNSU1FRGVzY3JpcHRpb24oY29uc3QgU3RyaW5n
JiBtaW1lRGVzY3JpcHRpb24sIFBsdQogICAgICAgICBpZiAobWltZVR5cGVQYXJ0cy5zaXplKCkg
PD0gMCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHBsdWdpbi5pbmZvLm1pbWVz
LnVuY2hlY2tlZEFwcGVuZChNaW1lQ2xhc3NJbmZvKCkpOwotICAgICAgICBNaW1lQ2xhc3NJbmZv
JiBtaW1lSW5mbyA9IHBsdWdpbi5pbmZvLm1pbWVzW21pbWVJbmZvQ291bnQrK107CisgICAgICAg
IHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoTWltZUNsYXNzSW5mbygpKTsKKyAgICAgICAgTWltZUNs
YXNzSW5mbyYgbWltZUluZm8gPSByZXN1bHRbbWltZUluZm9Db3VudCsrXTsKICAgICAgICAgbWlt
ZUluZm8udHlwZSA9IG1pbWVUeXBlUGFydHNbMF07CiAKICAgICAgICAgaWYgKG1pbWVUeXBlUGFy
dHMuc2l6ZSgpID4gMSkKQEAgLTExOCwxMyArMTA0LDEwIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5N
b2R1bGU6OnNldE1JTUVEZXNjcmlwdGlvbihjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlwdGlvbiwg
UGx1CiAgICAgfQogfQogCi1ib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZv
Rm9yTG9hZGVkUGx1Z2luKFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKK2Jvb2wgTmV0c2NhcGVQ
bHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4oUmF3UGx1Z2luTWV0YURh
dGEmIG1ldGFEYXRhKQogewogICAgIEFTU0VSVChtX2lzSW5pdGlhbGl6ZWQpOwogCi0gICAgcGx1
Z2luLnBhdGggPSBtX3BsdWdpblBhdGg7Ci0gICAgcGx1Z2luLmluZm8uZmlsZSA9IHBhdGhHZXRG
aWxlTmFtZShtX3BsdWdpblBhdGgpOwotCiAgICAgTW9kdWxlKiBtb2R1bGUgPSBtX21vZHVsZS5n
ZXQoKTsKICAgICBOUFBfR2V0VmFsdWVQcm9jUHRyIE5QUF9HZXRWYWx1ZSA9IG1vZHVsZS0+ZnVu
Y3Rpb25Qb2ludGVyPE5QUF9HZXRWYWx1ZVByb2NQdHI+KCJOUF9HZXRWYWx1ZSIpOwogICAgIGlm
ICghTlBQX0dldFZhbHVlKQpAQCAtMTM3LDIyICsxMjAsMTY4IEBAIGJvb2wgTmV0c2NhcGVQbHVn
aW5Nb2R1bGU6OmdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4oUGx1Z2luTW9kdWxlSW5mbyYg
cGx1Z2luCiAgICAgY2hhciogYnVmZmVyOwogICAgIE5QRXJyb3IgZXJyb3IgPSBOUFBfR2V0VmFs
dWUoMCwgTlBQVnBsdWdpbk5hbWVTdHJpbmcsICZidWZmZXIpOwogICAgIGlmIChlcnJvciA9PSBO
UEVSUl9OT19FUlJPUikKLSAgICAgICAgcGx1Z2luLmluZm8ubmFtZSA9IGJ1ZmZlcjsKKyAgICAg
ICAgbWV0YURhdGEubmFtZSA9IGJ1ZmZlcjsKIAogICAgIGVycm9yID0gTlBQX0dldFZhbHVlKDAs
IE5QUFZwbHVnaW5EZXNjcmlwdGlvblN0cmluZywgJmJ1ZmZlcik7CiAgICAgaWYgKGVycm9yID09
IE5QRVJSX05PX0VSUk9SKQotICAgICAgICBwbHVnaW4uaW5mby5kZXNjID0gYnVmZmVyOworICAg
ICAgICBtZXRhRGF0YS5kZXNjcmlwdGlvbiA9IGJ1ZmZlcjsKIAogICAgIGNvbnN0IGNoYXIqIG1p
bWVEZXNjcmlwdGlvbiA9IE5QX0dldE1JTUVEZXNjcmlwdGlvbigpOwogICAgIGlmICghbWltZURl
c2NyaXB0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbWV0YURhdGEubWltZURlc2Ny
aXB0aW9uID0gbWltZURlc2NyaXB0aW9uOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRp
YyBib29sIHJlYWROZXh0VVRGOFN0cmluZyhTdHJpbmcmIHJlc3VsdCwgY2hhciomIGJ1ZmZlclN0
YXJ0LCBjb25zdCBjaGFyKiBidWZmZXJFbmQpCit7CisgICAgaWYgKGJ1ZmZlclN0YXJ0ID49IGJ1
ZmZlckVuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc2V0TUlNRURlc2NyaXB0aW9u
KG1pbWVEZXNjcmlwdGlvbiwgcGx1Z2luKTsKKyAgICBzaXplX3QgbWF4TGVuZ3RoID0gYnVmZmVy
RW5kIC0gYnVmZmVyU3RhcnQ7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0cm5sZW4oYnVmZmVyU3Rh
cnQsIG1heExlbmd0aCk7CisgICAgaWYgKGxlbmd0aCA9PSBtYXhMZW5ndGgpIHsKKyAgICAgICAg
Ly8gTm8gbnVsbCBjaGFyYWN0ZXIgYmVmb3JlIHRoZSBlbmQuIFRoaXMgaW5kaWNhdGVzIGEgZGF0
YSBjb3JydXB0aW9uLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmVzdWx0
ID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXJTdGFydCwgbGVuZ3RoKTsKKyAgICBidWZmZXJTdGFy
dCArPSBsZW5ndGggKyAxOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHJl
YWROZXh0VGltZXN0YW1wKHRpbWVfdCYgcmVzdWx0LCBjaGFyKiYgYnVmZmVyU3RhcnQsIGNvbnN0
IGNoYXIqIGJ1ZmZlckVuZCkKK3sKKyAgICBpZiAoYnVmZmVyU3RhcnQgPj0gYnVmZmVyRW5kKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBXZSBwdXNoIGFuIGV4dHJhIG51bGwgY2hh
cmFjdGVyIGluIGZhdm91ciBvZiBkYXRhIGNvcnJ1cHRpb24gZGV0ZWN0aW9uLgorICAgIGlmIChi
dWZmZXJTdGFydFtzaXplb2YodGltZV90KV0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXN1bHQgPSAqcmVpbnRlcnByZXRfY2FzdDx0aW1lX3QqPihidWZmZXJTdGFydCk7CisgICAgYnVm
ZmVyU3RhcnQgKz0gc2l6ZW9mKHRpbWVfdCkgKyAxOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CisK
K2NvbnN0IFN0cmluZyYgZGVzY3JpcHRvckZpbGVTY2hlbWFJRCgpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIGlkLCAoIldlYktpdCBOUEFQSS1NRVRBIDEiKSk7CisgICAgcmV0
dXJuIGlkOworfQorCitzdGF0aWMgYm9vbCByZWFkUGx1Z2luTWV0YURhdGFGcm9tRGVzY3JpcHRv
ckZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQ
bHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCit7CisgICAgUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUg
PSBvcGVuRmlsZShmaWxlUGF0aCwgT3BlbkZvclJlYWQpOworICAgIGlmICghaXNIYW5kbGVWYWxp
ZChmaWxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZl
cjsKKyAgICBjb25zdCBpbnQgcmVhZFNpemUgPSA2NDsKKyAgICBidWZmZXIucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShyZWFkU2l6ZSAqIDQpOworICAgIGludCBieXRlc1JlYWQgPSAwOworCisgICAg
d2hpbGUgKHRydWUpIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IHJlYWRGcm9tRmlsZShmaWxlLCBi
dWZmZXIuZGF0YSgpICsgYnl0ZXNSZWFkLCByZWFkU2l6ZSk7CisgICAgICAgIGlmIChyZXN1bHQg
PCAwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBieXRlc1JlYWQgKz0gcmVz
dWx0OworICAgICAgICBpZiAocmVzdWx0IDwgcmVhZFNpemUpCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgYnVmZmVyLnJlc2l6ZShieXRlc1JlYWQgKyByZWFkU2l6ZSk7CisgICAgfQorCisg
ICAgY2hhciogc3RhcnQgPSBidWZmZXIuZGF0YSgpOworICAgIGNoYXIqIGVuZCA9IGJ1ZmZlci5k
YXRhKCkgKyBieXRlc1JlYWQ7CisKKyAgICBTdHJpbmcgY2FjaGVkU2NoZW1hSUQ7CisgICAgaWYg
KCFyZWFkTmV4dFVURjhTdHJpbmcoY2FjaGVkU2NoZW1hSUQsIHN0YXJ0LCBlbmQpIHx8IGNhY2hl
ZFNjaGVtYUlEICE9IGRlc2NyaXB0b3JGaWxlU2NoZW1hSUQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gQ2hlY2sgdGhlIHBsdWdpbiB0aW1lc3RhbXAuCisgICAgdGltZV90IGNh
Y2hlZFBsdWdpbkxhc3RNb2RpZmllZDsKKyAgICB0aW1lX3QgcGx1Z2luTGFzdE1vZGlmaWVkOwor
ICAgIGlmICghcmVhZE5leHRUaW1lc3RhbXAoY2FjaGVkUGx1Z2luTGFzdE1vZGlmaWVkLCBzdGFy
dCwgZW5kKQorICAgICAgICB8fCAhZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCwg
cGx1Z2luTGFzdE1vZGlmaWVkKQorICAgICAgICB8fCBjYWNoZWRQbHVnaW5MYXN0TW9kaWZpZWQg
IT0gcGx1Z2luTGFzdE1vZGlmaWVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBD
aGVjayB0aGUgZGVzY3JpcHRvciBmaWxlIHRpbWVzdGFtcC4gVGhpcyBkZXRlY3RzIGlmIHRoZSBm
aWxlIGhhcyBiZWVuIG92ZXJyaWRkZW4uCisgICAgLy8gV2Ugd3JpdGUgdGhlIHRpbWVzdGFtcCBk
dXJpbmcgd3JpdGluZyB0aGUgZmlsZSBzbyB3ZSBzaG91bGQgYWNjZXB0IGEgc21hbGwgZGlmZmVy
ZW5jZS4KKyAgICB0aW1lX3QgY2FjaGVkRGVzY3JpcHRvckZpbGVMYXN0TW9kaWZpZWQ7CisgICAg
dGltZV90IGRlc2NyaXB0b3JGaWxlTGFzdE1vZGlmaWVkOworICAgIGNvbnN0IGludCB0b2xlcmFu
Y2VJblNlY29uZHMgPSAzOworICAgIGlmICghcmVhZE5leHRUaW1lc3RhbXAoY2FjaGVkRGVzY3Jp
cHRvckZpbGVMYXN0TW9kaWZpZWQsIHN0YXJ0LCBlbmQpCisgICAgICAgIHx8ICFnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZShmaWxlUGF0aCwgZGVzY3JpcHRvckZpbGVMYXN0TW9kaWZpZWQpCisgICAg
ICAgIHx8IGFicyhjYWNoZWREZXNjcmlwdG9yRmlsZUxhc3RNb2RpZmllZCAtIGRlc2NyaXB0b3JG
aWxlTGFzdE1vZGlmaWVkKSA+IHRvbGVyYW5jZUluU2Vjb25kcykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgU3RyaW5nIG1pbWVEZXNjcmlwdGlvbjsKKyAgICBpZiAoIXJlYWROZXh0VVRG
OFN0cmluZyhwbHVnaW4uaW5mby5uYW1lLCBzdGFydCwgZW5kKQorICAgICAgICB8fCAhcmVhZE5l
eHRVVEY4U3RyaW5nKHBsdWdpbi5pbmZvLmRlc2MsIHN0YXJ0LCBlbmQpCisgICAgICAgIHx8ICFy
ZWFkTmV4dFVURjhTdHJpbmcobWltZURlc2NyaXB0aW9uLCBzdGFydCwgZW5kKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcGFyc2VNSU1FRGVzY3JpcHRpb24obWltZURlc2NyaXB0aW9u
LCBwbHVnaW4uaW5mby5taW1lcyk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBOZXRz
Y2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgs
IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKIHsKKyAgICBTdHJpbmcgcGx1Z2luRmlsZU5hbWUg
PSBwYXRoR2V0RmlsZU5hbWUocGx1Z2luUGF0aCk7CisgICAgU3RyaW5nIGJhc2VOYW1lID0gcGx1
Z2luRmlsZU5hbWUgKyBTdHJpbmc6OmZvcm1hdCgiLiV1IiwgU3RyaW5nSGFzaDo6aGFzaChwbHVn
aW5QYXRoKSkgKyBTdHJpbmcoIi5iaW4iKTsKKyAgICBTdHJpbmcgZmlsZVBhdGggPSBwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocGx1Z2luTWV0YURhdGFDYWNoZURpcmVjdG9yeSgpLCBiYXNlTmFt
ZSk7CisKKyAgICBpZiAoIXJlYWRQbHVnaW5NZXRhRGF0YUZyb21EZXNjcmlwdG9yRmlsZShmaWxl
UGF0aCwgcGx1Z2luUGF0aCwgcGx1Z2luKSkgeworICAgICAgICAvLyAoUmUpZ2VuZXJhdGUgdGhl
IGZpbGUgYW5kIHRyeSBhZ2Fpbi4KKyAgICAgICAgaWYgKCFQbHVnaW5Qcm9jZXNzUHJveHk6OmNy
ZWF0ZU1ldGFEYXRhRGVzY3JpcHRvckZpbGUocGx1Z2luUGF0aCwgZmlsZVBhdGgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXJlYWRQbHVnaW5NZXRhRGF0YUZyb21E
ZXNjcmlwdG9yRmlsZShmaWxlUGF0aCwgcGx1Z2luUGF0aCwgcGx1Z2luKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwbHVnaW4uaW5mby5maWxlID0gcGx1Z2luRmls
ZU5hbWU7CisgICAgcGx1Z2luLnBhdGggPSBwbHVnaW5QYXRoOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3N0YXRpYyBib29sIHdyaXRlVGltZXN0YW1wKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxl
LCBjb25zdCB0aW1lX3QmIHRpbWUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgQVNT
RVJUX0FSRyhmaWxlLCBpc0hhbmRsZVZhbGlkKGZpbGUpKTsKKworICAgIC8vIFdlIHB1c2ggYW4g
ZXh0cmEgbnVsbCBjaGFyYWN0ZXIgaW4gZmF2b3VyIG9mIGRhdGEgY29ycnVwdGlvbiBkZXRlY3Rp
b24uCisgICAgY2hhciBidWZmZXJbc2l6ZW9mKHRpbWVfdCkgKyAxXTsKKyAgICBtZW1zZXQoYnVm
ZmVyLCAwLCBzaXplb2YoYnVmZmVyKSk7CisgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dGltZV90Kj4o
YnVmZmVyKSA9IHRpbWU7CisKKyAgICBpZiAod3JpdGVUb0ZpbGUoZmlsZSwgYnVmZmVyLCBzaXpl
b2YoYnVmZmVyKSkgPT0gc2l6ZW9mKGJ1ZmZlcikpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgY2xvc2VGaWxlKGZpbGUpOworICAgIGRlbGV0ZUZpbGUoZmlsZVBhdGgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgd3JpdGVTdHJpbmcoUGxhdGZvcm1GaWxlSGFuZGxl
IGZpbGUsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorewor
ICAgIEFTU0VSVF9BUkcoZmlsZSwgaXNIYW5kbGVWYWxpZChmaWxlKSk7CisKKyAgICBDU3RyaW5n
IHV0ZjhTdHJpbmcgPSBzdHJpbmcudXRmOCgpOworICAgIGludCBsZW5ndGggPSB1dGY4U3RyaW5n
Lmxlbmd0aCgpICsgMTsKKyAgICBpZiAod3JpdGVUb0ZpbGUoZmlsZSwgdXRmOFN0cmluZy5kYXRh
KCksIGxlbmd0aCkgPT0gbGVuZ3RoKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNsb3Nl
RmlsZShmaWxlKTsKKyAgICBkZWxldGVGaWxlKGZpbGVQYXRoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmNyZWF0ZVBsdWdpbk1ldGFEYXRhRGVz
Y3JpcHRvckZpbGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQorewogICAgIC8vIFRlbXBhcmFyaWx5IHN1cHByZXNzIHN0ZG91dCBpbiB0aGlzIGZ1bmN0
aW9uIGFzIHBsdWdpbnMgd2lsbCBiZSBsb2FkZWQgYW5kIHNodXRkb3duIGFuZCBkZWJ1ZyBpbmZv
CiAgICAgLy8gaXMgbGVha2VkIHRvIGxheW91dCB0ZXN0IG91dHB1dC4KICAgICBTdGRvdXREZXZO
dWxsUmVkaXJlY3RvciBzdGRvdXREZXZOdWxsUmVkaXJlY3RvcjsKQEAgLTE2NCwyMCArMjkzLDQ2
IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IHBsdWdpbk1vZHVsZS0+aW5jcmVtZW50TG9hZENvdW50KCk7Ci0gICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHBsdWdpbk1vZHVsZS0+Z2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihwbHVnaW4pOwor
ICAgIFJhd1BsdWdpbk1ldGFEYXRhIG1ldGFEYXRhOworICAgIGJvb2wgZ290UGx1Z2luSW5mbyA9
IHBsdWdpbk1vZHVsZS0+Z2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihtZXRhRGF0YSk7CiAg
ICAgcGx1Z2luTW9kdWxlLT5kZWNyZW1lbnRMb2FkQ291bnQoKTsKKyAgICBpZiAoIWdvdFBsdWdp
bkluZm8pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBm
aWxlID0gb3BlbkZpbGUoZmlsZVBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKCFpc0hhbmRs
ZVZhbGlkKGZpbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXdyaXRlU3Ry
aW5nKGZpbGUsIGRlc2NyaXB0b3JGaWxlU2NoZW1hSUQoKSwgZmlsZVBhdGgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBXcml0ZSBhIHRpbWVzdGFtcCBmb3IgdGhlIHBsdWdpbi4K
KyAgICB0aW1lX3QgbGFzdE1vZGlmaWVkOworICAgIGlmICghZ2V0RmlsZU1vZGlmaWNhdGlvblRp
bWUocGx1Z2luUGF0aCwgbGFzdE1vZGlmaWVkKSB8fCAhd3JpdGVUaW1lc3RhbXAoZmlsZSwgbGFz
dE1vZGlmaWVkLCBmaWxlUGF0aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFdy
aXRlIHRoZSBjdXJyZW50IHRpbWUgYXMgYSB0aW1lc3RhbXAgZm9yIHRoZSBkZXNjcmlwdG9yIGZp
bGUgaXRzZWxmLgorICAgIGlmICghd3JpdGVUaW1lc3RhbXAoZmlsZSwgdGltZSgwKSwgZmlsZVBh
dGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXdyaXRlU3RyaW5nKGZpbGUs
IG1ldGFEYXRhLm5hbWUsIGZpbGVQYXRoKQorICAgICAgICB8fCAhd3JpdGVTdHJpbmcoZmlsZSwg
bWV0YURhdGEuZGVzY3JpcHRpb24sIGZpbGVQYXRoKQorICAgICAgICB8fCAhd3JpdGVTdHJpbmco
ZmlsZSwgbWV0YURhdGEubWltZURlc2NyaXB0aW9uLCBmaWxlUGF0aCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICBjbG9zZUZpbGUoZmlsZSk7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmRldGVy
bWluZVF1aXJrcygpCiB7CiAjaWYgQ1BVKFg4Nl82NCkKLSAgICBQbHVnaW5Nb2R1bGVJbmZvIHBs
dWdpbjsKLSAgICBpZiAoIWdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4ocGx1Z2luKSkKKyAg
ICBSYXdQbHVnaW5NZXRhRGF0YSBtZXRhRGF0YTsKKyAgICBpZiAoIWdldFBsdWdpbkluZm9Gb3JM
b2FkZWRQbHVnaW4obWV0YURhdGEpKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8TWlt
ZUNsYXNzSW5mbz4gbWltZVR5cGVzID0gcGx1Z2luLmluZm8ubWltZXM7CisgICAgVmVjdG9yPE1p
bWVDbGFzc0luZm8+IG1pbWVUeXBlczsKKyAgICBwYXJzZU1JTUVEZXNjcmlwdGlvbihtZXRhRGF0
YS5taW1lRGVzY3JpcHRpb24sIG1pbWVUeXBlcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtaW1lVHlwZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKG1pbWVUeXBlc1tpXS50eXBl
ID09ICJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIpIHsKICAgICAgICAgICAgIG1fcGx1
Z2luUXVpcmtzLmFkZChQbHVnaW5RdWlya3M6Oklnbm9yZVJpZ2h0Q2xpY2tJbldpbmRvd2xlc3NN
b2RlKTsKQEAgLTE4Nyw2ICszNDIsMzMgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6ZGV0
ZXJtaW5lUXVpcmtzKCkKICNlbmRpZgogfQogCitTdHJpbmcgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6
OnBsdWdpbk1ldGFEYXRhQ2FjaGVEaXJlY3RvcnkoKQoreworI2lmIFBMQVRGT1JNKFFUKSB8fCBQ
TEFURk9STShHVEspCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHJlc3VsdCwgKCkp
OworICAgIGlmICghcmVzdWx0LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisg
ICAgU3RyaW5nIGNhY2hlRGlyZWN0b3J5OworI2lmIFBMQVRGT1JNKFFUKQorICAgIFFTdHJpbmcg
ZGF0YUxvY2F0aW9uID0gUVN0YW5kYXJkUGF0aHM6OndyaXRhYmxlTG9jYXRpb24oUVN0YW5kYXJk
UGF0aHM6OkRhdGFMb2NhdGlvbik7CisgICAgaWYgKGRhdGFMb2NhdGlvbi5pc0VtcHR5KCkpCisg
ICAgICAgIGRhdGFMb2NhdGlvbiA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChRRGlyOjpob21l
UGF0aCgpLCBRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlvbk5hbWUoKSk7CisgICAgZGF0YUxv
Y2F0aW9uID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFMb2NhdGlvbiwgIi5RdFdlYktp
dCIpOworICAgIGNhY2hlRGlyZWN0b3J5ID0gZGF0YUxvY2F0aW9uOworI2VsaWYgUExBVEZPUk0o
R1RLKQorICAgIGNhY2hlRGlyZWN0b3J5ID0gZmlsZW5hbWVUb1N0cmluZyhnX2J1aWxkX2ZpbGVu
YW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3ZWJraXRndGsiLCBOVUxMKSk7CisjZW5kaWYK
KworICAgIHJlc3VsdCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZURpcmVjdG9yeSwg
Im5wYXBpX21ldGFkYXRhX2NhY2hlIik7CisgICAgbWFrZUFsbERpcmVjdG9yaWVzKHJlc3VsdCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwCmluZGV4IGIwYWIyZWMxNjUzMmRlOWM2NTk3MmUw
M2NlMTcyOWNjYzc0NTg4MzguLjM4ZTJhN2RkMjNiNTU2ZDA2MzYzMmQyNzliN2Y5MGMwMGViOWNl
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBR
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNw
cApAQCAtNjQsOCArNjQsMTMgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQmIGRzdFBvaW50LAogICAgIHBhaW50ZXIt
PmRyYXdJbWFnZShkc3RQb2ludCwgaW1hZ2UsIFFSZWN0KHNyY1JlY3QpKTsKIH0KIAotdm9pZCBT
aGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgLypjb250ZXh0Ki8sIGZsb2F0
IC8qc2NhbGVGYWN0b3IqLywgY29uc3QgSW50UG9pbnQmIC8qZHN0UG9pbnQqLywgY29uc3QgSW50
UmVjdCYgLypzcmNSZWN0Ki8pCit2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgSW50UG9pbnQmIGRzdFBv
aW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQogeworICAgIGlmIChzY2FsZUZhY3RvciA9PSAx
LjApIHsKKyAgICAgICAgcGFpbnQoY29udGV4dCwgZHN0UG9pbnQsIHNyY1JlY3QpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjQ2NjM+LgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnBy
aQppbmRleCAxYjYzYTI3ZDYzY2I1M2QzMzQwODZkY2JmZjU2ZjI3MzBmNDc2NDFjLi43ZjFjNzIz
OTMzYjI5YjVjYzIwY2Q1ODVmYTk0YWY4ZjBkZTU2OTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTM2Niw2
ICszNjYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5jcHAgXAogICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAgXAogICAg
IFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIFwKKyAgICBQbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAgXAogICAgIFBsdWdpblByb2Nlc3MvcXQv
UGx1Z2luQ29udHJvbGxlclByb3h5UXQuY3BwIFwKICAgICBQbHVnaW5Qcm9jZXNzL3F0L1BsdWdp
blByb2Nlc3NNYWluUXQuY3BwIFwKICAgICBQbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NR
dC5jcHAgXApAQCAtNTA5LDggKzUxMCw4IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NNYW5hZ2VyLmNwcCBcCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2lu
U2l0ZURhdGFNYW5hZ2VyLmNwcCBcCi0gICAgVUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2luUHJv
Y2Vzc1Byb3h5UXQuY3BwIFwKICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9T
dG9yZVVuaXguY3BwIFwKKyAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQ
cm94eVVuaXguY3BwIFwKICAgICBVSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgXAog
ICAgIFVJUHJvY2Vzcy9UaWxlZERyYXdpbmdBcmVhUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3Mv
VmlzaXRlZExpbmtQcm92aWRlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCmluZGV4IDhkYmZiMTEwMWUwZWFkNDk5YTFi
ZTFmNzY0MjJkNjQyODU0OTkyNTguLjRhZmZjZDU5OTI3YWRlOTJmZTI2MThhYjY3ZWM2ZDEwNTg2
OWNjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9j
ZXNzTGF1bmNoZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJv
Y2Vzc0xhdW5jaGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVByb2Nl
c3NJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBQTEFURk9S
TShRVCkKIGNsYXNzIFFMb2NhbFNvY2tldDsKQEAgLTczLDYgKzc0LDggQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIGJvb2wgZ2V0UHJvY2Vzc1R5cGVGcm9tU3RyaW5nKGNvbnN0IGNoYXIqLCBQcm9j
ZXNzVHlwZSYpOwogCisgICAgc3RhdGljIFdURjo6Q1N0cmluZyBwbGF0Zm9ybUV4ZWN1dGFibGVQ
YXRoKFByb2Nlc3NUeXBlKTsKKwogcHJpdmF0ZToKICAgICBQcm9jZXNzTGF1bmNoZXIoQ2xpZW50
KiwgY29uc3QgTGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVy
R3RrLmNwcAppbmRleCBiYmJhZTJlNjgwOTI4NDAyNTVlNmVhYmQ0Y2Y1ZWM1NDBjNGNmMWE4Li5m
ZjdmY2JjMjgwNDYzMDQ4NTIwYTM0ZDBlZTFhOTk5Yjc1OTBlMjcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNo
ZXJHdGsuY3BwCkBAIC03Miw4ICs3MiwxMCBAQCBzdGF0aWMgdm9pZCBjaGlsZEZpbmlzaGVkRnVu
Y3Rpb24oR1BpZCwgZ2ludCBzdGF0dXMsIGdwb2ludGVyIHVzZXJEYXRhKQogICAgIGNsb3NlKEdQ
T0lOVEVSX1RPX0lOVCh1c2VyRGF0YSkpOwogfQogCi1zdGF0aWMgQ1N0cmluZyBmaW5kV2ViS2l0
UHJvY2Vzcyhjb25zdCBjaGFyKiBwcm9jZXNzTmFtZSkKK0NTdHJpbmcgUHJvY2Vzc0xhdW5jaGVy
OjpwbGF0Zm9ybUV4ZWN1dGFibGVQYXRoKFByb2Nlc3NUeXBlIHR5cGUpCiB7CisgICAgY29uc3Qg
Y2hhciogcHJvY2Vzc05hbWUgPSB0eXBlID09IFdlYlByb2Nlc3MgPyBnV2ViS2l0V2ViUHJvY2Vz
c05hbWUgOiBnV2ViS2l0UGx1Z2luUHJvY2Vzc05hbWU7CisKICAgICBjb25zdCBjaGFyKiBleGVj
RGlyZWN0b3J5ID0gZ19nZXRlbnYoIldFQktJVF9FWEVDX1BBVEgiKTsKICAgICBpZiAoZXhlY0Rp
cmVjdG9yeSkgewogICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoZmlsZW5hbWVUb1N0cmluZyhleGVjRGlyZWN0b3J5KSwgcHJvY2Vzc05hbWUpOwpA
QCAtMTExLDEwICsxMTMsMTAgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3Mo
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQ1N0cmluZyBiaW5hcnlQYXRoID0gZmlu
ZFdlYktpdFByb2Nlc3MobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID09IFByb2Nlc3NMYXVu
Y2hlcjo6V2ViUHJvY2VzcyA/IGdXZWJLaXRXZWJQcm9jZXNzTmFtZSA6IGdXZWJLaXRQbHVnaW5Q
cm9jZXNzTmFtZSk7CisgICAgQ1N0cmluZyBiaW5hcnlQYXRoID0gcGxhdGZvcm1FeGVjdXRhYmxl
UGF0aChtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUpOwogICAgIEdPd25QdHI8Z2NoYXI+IHNv
Y2tldChnX3N0cmR1cF9wcmludGYoIiVkIiwgc29ja2V0c1swXSkpOwogICAgIGNoYXIqIGFyZ3Zb
M107Ci0gICAgYXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJpbmFyeVBhdGguZGF0YSgpKTsK
KyAgICBhcmd2WzBdID0gYmluYXJ5UGF0aC5tdXRhYmxlRGF0YSgpOwogICAgIGFyZ3ZbMV0gPSBz
b2NrZXQuZ2V0KCk7CiAgICAgYXJndlsyXSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KaW5k
ZXggMjE1NDVkYTA2NDkyNDczNmExNGNkYTUwZmNkNzBlZjllMWU1MDllYy4uOTE4NjI4ZjU2OTdj
NmUzYjYzMWVhYzFmZWZmZThjYTE4YzlhNDg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KQEAg
LTE5MSw0ICsxOTEsMTcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OnBsYXRmb3JtSW52YWxpZGF0
ZSgpCiB7CiB9CiAKK3N0YXRpYyBDU3RyaW5nIFByb2Nlc3NMYXVuY2hlcjo6cGxhdGZvcm1FeGVj
dXRhYmxlUGF0aChQcm9jZXNzVHlwZSB0eXBlKQoreworICAgIE5TQnVuZGxlICp3ZWJLaXQyQnVu
ZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdDIi
XTsKKworICAgIE5TU3RyaW5nICpwcm9jZXNzUGF0aDsKKyAgICBpZiAodHlwZSA9PSBQcm9jZXNz
TGF1bmNoZXI6OlBsdWdpblByb2Nlc3MpCisgICAgICAgIHByb2Nlc3NQYXRoID0gW3dlYktpdDJC
dW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJQbHVnaW5Qcm9jZXNzLmFwcCJdOwor
ICAgIGVsc2UKKyAgICAgICAgcHJvY2Vzc1BhdGggPSBbd2ViS2l0MkJ1bmRsZSBwYXRoRm9yQXV4
aWxpYXJ5RXhlY3V0YWJsZTpAIldlYlByb2Nlc3MuYXBwIl07CisKKyAgICByZXR1cm4gW1tbTlNC
dW5kbGUgYnVuZGxlV2l0aFBhdGg6cHJvY2Vzc1BhdGhdIGV4ZWN1dGFibGVQYXRoXSBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb25dOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJR
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5j
aGVyUXQuY3BwCmluZGV4IGI3MjVkN2I5MjRjNmY0YjUwZDdlMDM4YjhhMmZhNGJlYzI4MTcxNGIu
LjZkMTBmNjViOTA0YjRjNWEzYzYyODgwMzUzNTZiMmNmYjhmNTA4YjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hl
clF0LmNwcApAQCAtMzIsMTIgKzMyLDE0IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UURlYnVnPgorI2luY2x1ZGUgPFFE
aXI+CiAjaW5jbHVkZSA8UUZpbGU+CiAjaW5jbHVkZSA8UUxvY2FsU2VydmVyPgogI2luY2x1ZGUg
PFFNZXRhVHlwZT4KICNpbmNsdWRlIDxRUHJvY2Vzcz4KICNpbmNsdWRlIDxRU3RyaW5nPgogI2lu
Y2x1ZGUgPFF0Q29yZS9xZ2xvYmFsLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPGVycm5vLmg+
CiAjaW5jbHVkZSA8ZmNudGwuaD4KQEAgLTEwMywxMSArMTA1LDggQEAgdm9pZCBQcm9jZXNzTGF1
bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogewogICAgIFFTdHJpbmcgYXBwbGljYXRpb25QYXRoID0g
UUxhdGluMVN0cmluZygiJTEgJTIiKTsKIAotICAgIGlmIChRRmlsZTo6ZXhpc3RzKFFDb3JlQXBw
bGljYXRpb246OmFwcGxpY2F0aW9uRGlyUGF0aCgpICsgUUxhdGluMVN0cmluZygiL1F0V2ViUHJv
Y2VzcyIpKSkgewotICAgICAgICBhcHBsaWNhdGlvblBhdGggPSBhcHBsaWNhdGlvblBhdGguYXJn
KFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uRGlyUGF0aCgpICsgUUxhdGluMVN0cmluZygi
L1F0V2ViUHJvY2VzcyIpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBhcHBsaWNhdGlvblBhdGgg
PSBhcHBsaWNhdGlvblBhdGguYXJnKFFMYXRpbjFTdHJpbmcoIlF0V2ViUHJvY2VzcyIpKTsKLSAg
ICB9CisgICAgQ1N0cmluZyBleGVjdXRhYmxlUGF0aCA9IHBsYXRmb3JtRXhlY3V0YWJsZVBhdGgo
bV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlKTsKKyAgICBhcHBsaWNhdGlvblBhdGggPSBhcHBs
aWNhdGlvblBhdGguYXJnKFFMYXRpbjFTdHJpbmcoZXhlY3V0YWJsZVBhdGguZGF0YSgpKSk7CiAK
ICNpZiBPUyhEQVJXSU4pCiAgICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcgcG9ydC4KQEAgLTE5
MSw2ICsxOTAsMTggQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OnBsYXRmb3JtSW52YWxpZGF0ZSgp
CiAKIH0KIAorQ1N0cmluZyBQcm9jZXNzTGF1bmNoZXI6OnBsYXRmb3JtRXhlY3V0YWJsZVBhdGgo
UHJvY2Vzc1R5cGUgdHlwZSkKK3sKKyAgICBRTGF0aW4xU3RyaW5nIGV4ZWN1dGFibGVOYW1lID0g
dHlwZSA9PSBQcm9jZXNzTGF1bmNoZXI6OldlYlByb2Nlc3MgPworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJRdFdlYlByb2Nlc3MiKSA6IFFMYXRpbjFT
dHJpbmcoIlF0V2ViUGx1Z2luUHJvY2VzcyIpOworCisgICAgUVN0cmluZyBleHBlY3RlZFBhdGgg
PSBRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlvbkRpclBhdGgoKSArIFFEaXI6OnNlcGFyYXRv
cigpICsgZXhlY3V0YWJsZU5hbWU7CisgICAgaWYgKFFGaWxlOjpleGlzdHMoZXhwZWN0ZWRQYXRo
KSkKKyAgICAgICAgcmV0dXJuIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleHBlY3RlZFBhdGgp
OworCisgICAgcmV0dXJuIENTdHJpbmcoZXhlY3V0YWJsZU5hbWUubGF0aW4xKCkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlclF0Lm1vYyIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c1Byb3h5LmgKaW5kZXggYTc1ZDViMTM4N2NkOGJkYTlkYzUyMzEyZDgyNmY0YWEwYjQ2OTY1Ni4u
NjgwMDVmMTRiNTBlYjdjMWUwNjNmYjc1MTVmMGRiOTg1NGI1MTBkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKQEAg
LTgwLDYgKzgwLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBjcmVhdGVQcm9wZXJ0eUxp
c3RGaWxlKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKICNlbmRpZgogCisjaWYgUExVR0lOX0FS
Q0hJVEVDVFVSRShYMTEpCisgICAgc3RhdGljIGJvb2wgY3JlYXRlTWV0YURhdGFEZXNjcmlwdG9y
RmlsZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NN
YW5hZ2VyKiwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlH
dGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Yzg1NzcyYTI3ZjdiNzA3MmFm
ZjZhMTEzN2M5Mjc0ODg1YThmNjQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Q
cm9jZXNzUHJveHlHdGsuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5LmgiCi0KLSNpZiBFTkFCTEUoUExV
R0lOX1BST0NFU1MpCi0KLSNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdp
blByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCmlu
ZGV4IGIwNzI0MTdmZWEyODNmOTM5MmE1NWRkOTlhYzMzMGZlN2FjNTAzMDAuLjEyMDBmMTcwYzEw
NTA2ZmY5ODEwZmNlZDliMzdlNGExYTJjNWUyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5t
bQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJFbnZpcm9ubWVudFZhcmlhYmxlcy5oIgog
I2ltcG9ydCAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2ltcG9ydCAiUHJv
Y2Vzc0xhdW5jaGVyLmgiCiAjaW1wb3J0ICJXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBv
cnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8c3Bhd24uaD4KQEAgLTcwLDkgKzcx
LDggQEAgYm9vbCBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZVByb3BlcnR5TGlzdEZpbGUoY29u
c3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQogICAgIE5TQnVuZGxlICp3ZWJLaXQyQnVuZGxl
ID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdDIiXTsK
ICAgICBOU1N0cmluZyAqZnJhbWV3b3Jrc1BhdGggPSBbW3dlYktpdDJCdW5kbGUgYnVuZGxlUGF0
aF0gc3RyaW5nQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XTsKICAgICBjb25zdCBjaGFyKiBm
cmFtZXdvcmtFeGVjdXRhYmxlUGF0aCA9IFtbd2ViS2l0MkJ1bmRsZSBleGVjdXRhYmxlUGF0aF0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXTsKLSAgICAKLSAgICBOU1N0cmluZyAqcHJvY2Vzc1Bh
dGggPSBbd2ViS2l0MkJ1bmRsZSBwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZTpAIlBsdWdpblBy
b2Nlc3MuYXBwIl07Ci0gICAgTlNTdHJpbmcgKnByb2Nlc3NBcHBFeGVjdXRhYmxlUGF0aCA9IFtb
TlNCdW5kbGUgYnVuZGxlV2l0aFBhdGg6cHJvY2Vzc1BhdGhdIGV4ZWN1dGFibGVQYXRoXTsKKwor
ICAgIENTdHJpbmcgcHJvY2Vzc0FwcEV4ZWN1dGFibGVQYXRoID0gUHJvY2Vzc0xhdW5jaGVyOjpw
bGF0Zm9ybUV4ZWN1dGFibGVQYXRoKFByb2Nlc3NMYXVuY2hlcjo6UGx1Z2luUHJvY2Vzcyk7CiAK
ICAgICBDU3RyaW5nIHBsdWdpblBhdGhTdHJpbmcgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cGx1Z2luLnBhdGgpOwogCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5
OjpjcmVhdGVQcm9wZXJ0eUxpc3RGaWxlKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikK
ICAgICBpZiAoIVtmcmFtZXdvcmtzUGF0aCBoYXNQcmVmaXg6QCIvU3lzdGVtLyJdKQogICAgICAg
ICBlbnZpcm9ubWVudFZhcmlhYmxlcy5hcHBlbmRWYWx1ZSgiRFlMRF9GUkFNRVdPUktfUEFUSCIs
IFtmcmFtZXdvcmtzUGF0aCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dLCAnOicpOwogCi0gICAg
Y29uc3QgY2hhciogYXJnc1tdID0geyBbcHJvY2Vzc0FwcEV4ZWN1dGFibGVQYXRoIGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbl0sIGZyYW1ld29ya0V4ZWN1dGFibGVQYXRoLCAiLXR5cGUiLCAicGx1
Z2lucHJvY2VzcyIsICItY3JlYXRlUGx1Z2luTUlNRVR5cGVzUHJlZmVyZW5jZXMiLCBwbHVnaW5Q
YXRoU3RyaW5nLmRhdGEoKSwgMCB9OworICAgIGNvbnN0IGNoYXIqIGFyZ3NbXSA9IHsgcHJvY2Vz
c0FwcEV4ZWN1dGFibGVQYXRoLmRhdGEoKSwgZnJhbWV3b3JrRXhlY3V0YWJsZVBhdGgsICItdHlw
ZSIsICJwbHVnaW5wcm9jZXNzIiwgIi1jcmVhdGVQbHVnaW5NSU1FVHlwZXNQcmVmZXJlbmNlcyIs
IHBsdWdpblBhdGhTdHJpbmcuZGF0YSgpLCAwIH07CiAKICAgICBwaWRfdCBwaWQ7CiAgICAgaW50
IHJlc3VsdCA9IHBvc2l4X3NwYXduKCZwaWQsIGFyZ3NbMF0sIDAsICZhdHRyLCBjb25zdF9jYXN0
PGNoYXIqIGNvbnN0Kj4oYXJncyksIGVudmlyb25tZW50VmFyaWFibGVzLmVudmlyb25tZW50UG9p
bnRlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3F0
L1BsdWdpblByb2Nlc3NQcm94eVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL3F0L1BsdWdpblByb2Nlc3NQcm94eVF0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggY2M1MjFlMGFmOWE2YTA3NDRjMmRjMGUwNmY2NTE0ZmM5NGIzNDlmOC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5oIgotCi0jaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQot
Ci0jaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQg
UGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdp
blByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
UExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jNjUzYTRiZDRlM2M1MmUzYzEyY2I5NGZkMzFmMjA5YTBjMWZlZTczCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNz
UHJveHlVbml4LmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
VW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKKworI2lm
IEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKKworI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxz
aWduYWwuaD4KKyNpbmNsdWRlIDxzcGF3bi5oPgorI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisjaW5j
bHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5
OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7Cit9CisKK2Jvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5Ojpj
cmVhdGVNZXRhRGF0YURlc2NyaXB0b3JGaWxlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICBDU3RyaW5nIGV4ZWN1dGFibGVQYXRoID0gUHJv
Y2Vzc0xhdW5jaGVyOjpwbGF0Zm9ybUV4ZWN1dGFibGVQYXRoKFByb2Nlc3NMYXVuY2hlcjo6UGx1
Z2luUHJvY2Vzcyk7CisgICAgY2hhciBvcHRpb25bXSA9ICItY3JlYXRlTWV0YURhdGFEZXNjcmlw
dGlvbiI7CisgICAgQ1N0cmluZyBwbHVnaW5QYXRoQVNDSUkgPSBwbHVnaW5QYXRoLmFzY2lpKCk7
CisgICAgQ1N0cmluZyBmaWxlUGF0aEFTQ0lJID0gZmlsZVBhdGguYXNjaWkoKTsKKyAgICBjaGFy
KiBhcmdzW10gPSB7CisgICAgICAgIGV4ZWN1dGFibGVQYXRoLm11dGFibGVEYXRhKCksCisgICAg
ICAgIG9wdGlvbiwKKyAgICAgICAgcGx1Z2luUGF0aEFTQ0lJLm11dGFibGVEYXRhKCksCisgICAg
ICAgIGZpbGVQYXRoQVNDSUkubXV0YWJsZURhdGEoKSwKKyAgICAgICAgMAorICAgIH07CisKKyAg
ICBwaWRfdCBwaWQ7CisgICAgaWYgKHBvc2l4X3NwYXduKCZwaWQsIGFyZ3NbMF0sIDAsIDAsIGFy
Z3MsIDo6ZW52aXJvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFdhaXQgYXQg
bW9zdCAzIHNlY29uZHMgZm9yIHRoZSBjaGlsZC4gVGhpcyBpcyBhbiBlbXBpcmljYWwgbGltaXQu
CisgICAgLy8gVW5mb3J0dW5hdGVseSBzb21lIHBsdWdpbnMgKG1vc3RseSB0aGUgbnNwbHVnaW53
cmFwcGVyIGJhc2VkIG9uZXMpCisgICAgLy8gbmVlZCByZWFsbHkgbG9uZyB0aW1lIHRvIHNldCB1
cC4KKyAgICBpbnQgY2hpbGRTdGF0dXM7CisgICAgdW5zaWduZWQgcmV0cnlDb3VudCA9IDA7Cisg
ICAgY29uc3QgdW5zaWduZWQgbWF4V2FpdFRpbWVNUyA9IDMwMDA7CisgICAgY29uc3QgdW5zaWdu
ZWQgc2xlZXBUaW1lTVMgPSA1MDsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpbnQgd2Fp
dFJlc3VsdDsKKyAgICAgICAgd2hpbGUgKCh3YWl0UmVzdWx0ID0gd2FpdHBpZChwaWQsICZjaGls
ZFN0YXR1cywgV05PSEFORykpID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KKyAgICAgICAg
QVNTRVJUKHdhaXRSZXN1bHQgIT0gLTEpOworICAgICAgICBpZiAod2FpdFJlc3VsdCkgeworICAg
ICAgICAgICAgQVNTRVJUKHdhaXRSZXN1bHQgPT0gcGlkKTsKKyAgICAgICAgICAgIC8vIFN1Y2Nl
c3MuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZXRyeUNv
dW50KysgPj0gbWF4V2FpdFRpbWVNUyAvIHNsZWVwVGltZU1TKSB7CisgICAgICAgICAgICBraWxs
KHBpZCwgU0lHS0lMTCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKwor
ICAgICAgICB0aW1lc3BlYyBzbGVlcFRpbWUgPSB7IDAsIHNsZWVwVGltZU1TICogMWUrNiB9Owor
ICAgICAgICBpbnQgc2xlZXBSZXN1bHQ7CisgICAgICAgIHdoaWxlICgoc2xlZXBSZXN1bHQgPSBu
YW5vc2xlZXAoJnNsZWVwVGltZSwgJnNsZWVwVGltZSkpID09IC0xICYmIGVycm5vID09IEVJTlRS
KSB7IH0KKyAgICAgICAgQVNTRVJUKCFzbGVlcFJlc3VsdCk7CisgICAgfQorCisgICAgaWYgKCFX
SUZFWElURUQoY2hpbGRTdGF0dXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKFdF
WElUU1RBVFVTKGNoaWxkU3RhdHVzKSAhPSBFWElUX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93
c2VyRnVuY3MuY3BwCmluZGV4IGE4YTgwNmUwMTlhZTQ2Y2ZjMGE1OTBhZGY1MTI3MTZlZGM0MzVm
MWMuLmMwNjYwMjI1OTM5MDkxNzhlM2I3MmIzOTg2MGQzODdkNGI0NDU5Y2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dz
ZXJGdW5jcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNTI4LDI1ICs1MjgsMTAgQEAgc3RhdGlj
IE5QRXJyb3IgTlBOX0dldFZhbHVlKE5QUCBucHAsIE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lk
ICp2YWx1ZSkKICAgICAgICBjYXNlIE5QTlZTdXBwb3J0c1dpbmRvd2xlc3M6CiAgICAgICAgICAg
ICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwogICAgICAgICAgICBicmVhazsK
LQogICAgICAgIGNhc2UgTlBOVlRvb2xraXQ6IHsKLSNpZiBQTEFURk9STShHVEspCi0gICAgICAg
ICAgICpyZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4odmFsdWUpID0gMjsKLSNlbHNlCi0gICAg
ICAgICAgIGNvbnN0IHVpbnQzMl90IGV4cGVjdGVkR1RLVG9vbEtpdFZlcnNpb24gPSAyOwotCi0g
ICAgICAgICAgIC8vIFNldCB0aGUgZXhwZWN0ZWQgR1RLIHZlcnNpb24gaWYgd2Uga25vdyB0aGF0
IHRoaXMgcGx1Z2luIG5lZWRzIGl0IG9yIGlmIHRoZSBwbHVnaW4gY2FsbCB1cwotICAgICAgICAg
ICAvLyB3aXRoIGEgbnVsbCBpbnN0YW5jZS4gVGhlIGxhdHRlciBpcyB0aGUgY2FzZSB3aXRoIE5T
UGx1Z2luV3JhcHBlciBwbHVnaW5zLgotICAgICAgICAgICBib29sIHJlcXVpcmVzR1RLVG9vbEtp
dFZlcnNpb247Ci0gICAgICAgICAgIGlmICghbnBwKQotICAgICAgICAgICAgICAgcmVxdWlyZXNH
VEtUb29sS2l0VmVyc2lvbiA9IHRydWU7Ci0gICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBwbHVnaW4gPSBOZXRzY2FwZVBsdWdpbjo6ZnJvbU5Q
UChucHApOwotICAgICAgICAgICAgICAgcmVxdWlyZXNHVEtUb29sS2l0VmVyc2lvbiA9IHBsdWdp
bi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtzOjpSZXF1aXJlc0dUS1Rvb2xLaXQpOwot
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2
YWx1ZSkgPSByZXF1aXJlc0dUS1Rvb2xLaXRWZXJzaW9uID8gZXhwZWN0ZWRHVEtUb29sS2l0VmVy
c2lvbiA6IDA7Ci0jZW5kaWYKKyAgICAgICAgICAgLy8gR3RrIGJhc2VkIHBsdWdpbnMgbmVlZCB0
byBiZSBhc3N1cmVkIGFib3V0IHRoZSB0b29sa2l0IHZlcnNpb24uCisgICAgICAgICAgIGNvbnN0
IHVpbnQzMl90IGV4cGVjdGVkR3RrVG9vbEtpdFZlcnNpb24gPSAyOworICAgICAgICAgICAqcmVp
bnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHZhbHVlKSA9IGV4cGVjdGVkR3RrVG9vbEtpdFZlcnNp
b247CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApp
bmRleCA4NDU0MTgyMGM4NjA0YzllNThhZjFjNzFmOGQ3OWJhOGQ5ZTgyODdhLi5iZWZhY2QyZTI5
NGI0YjNlMGIxOTc2NjNlOWUwNzI3NTgwOTQ5YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApA
QCAtMzQ0LDYgKzM0NCw3IEBAIHByaXZhdGU6CiAKIHB1YmxpYzogLy8gTmVlZCB0byBjYWxsIGl0
IGluIHRoZSBOUE5fR2V0VmFsdWUgYnJvd3NlciBjYWxsYmFjay4KICAgICBzdGF0aWMgRGlzcGxh
eSogeDExSG9zdERpc3BsYXkoKTsKKwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9xdC9QbHVnaW5NYWluUXQuY3BwIGIvU291cmNlL1dlYktpdDIvcXQvUGx1Z2luTWFp
blF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42OTM3NmEwMDFjYTNiOThjMmY4MTM0MzAwNDVmYjhjNjI2Mzg4
YTIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvcXQvUGx1Z2luTWFpblF0LmNw
cApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBVbml2ZXJzaXR5IG9m
IFN6ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSA8UUxpYnJhcnk+CisjaW5jbHVkZSA8UXRHbG9iYWw+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworUV9ERUNMX0lNUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQor
eworICAgIC8vIFdvcmthcm91bmQgdGhlIGlzc3VlIHRoYXQgc29tZSB2ZXJzaW9ucyBvZiBmbGFz
aCBkb2VzIG5vdCBpbml0aWFsaXplIEd0ayBwcm9wZXJseS4KKyAgICBRTGlicmFyeSBndGtMaWJy
YXJ5KFFMYXRpbjFTdHJpbmcoImxpYmd0ay14MTEtMi4wIiksIDApOworICAgIGlmICghZ3RrTGli
cmFyeS5sb2FkKCkpCisgICAgICAgIHJldHVybiAwOworICAgIHR5cGVkZWYgdm9pZCogKCpndGtf
aW5pdF9wdHIpKHZvaWQqLCB2b2lkKik7CisgICAgZ3RrX2luaXRfcHRyIGd0a0luaXQgPSByZWlu
dGVycHJldF9jYXN0PGd0a19pbml0X3B0cj4oZ3RrTGlicmFyeS5yZXNvbHZlKCJndGtfaW5pdCIp
KTsKKyAgICBpZiAoIWd0a0luaXQpCisgICAgICAgIHJldHVybiAwOworICAgIGd0a0luaXQoMCwg
MCk7CisKKyAgICByZXR1cm4gV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFpbihhcmdjLCBhcmd2KTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9xdHdlYmtpdC1leHBvcnQubWFwIGIvU291cmNlL3F0d2Vi
a2l0LWV4cG9ydC5tYXAKaW5kZXggYTU0NmNiMmZmZTQ5YjVjNjhhOTBjNjlhNTA2ZjlmYjg0MTk5
NmQzYi4uMWFjMmYzZjU2ZWUwMDZjMjVhMzE2MTQwYjM4OTdjYzI2MjAxYjViMyAxMDA2NDQKLS0t
IGEvU291cmNlL3F0d2Via2l0LWV4cG9ydC5tYXAKKysrIGIvU291cmNlL3F0d2Via2l0LWV4cG9y
dC5tYXAKQEAgLTk2LDYgKzk2LDcgQEAgcXdrXzEuMCB7CiAKICAgICAgICAgIyBXZWJLaXQgMiBI
ZWxwZXJzCiAgICAgICAgIFdlYktpdDo6V2ViUHJvY2Vzc01haW5RdCo7CisgICAgICAgIFdlYktp
dDo6UGx1Z2luUHJvY2Vzc01haW4qOwogICAgICAgICBXVEY6OmZhc3RNYWxsb2MqOwogICAgICAg
ICBXVEY6OmZhc3RGcmVlKjsKICAgICAgICAgV1RGOjpmYXN0WmVyb2VkTWFsbG9jKjsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkNDE4ZTMzNWZk
MzA4ZDM4ODk1N2RlMTQzOGYwMjA2NzkwODk3ZTgxLi4wZDQ1MDc3ZjZhZjA1NjcyNTllNDM3YTE2
OWIzMmU3MjhhOTczZDk0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTItMDUgIEJhbGF6cyBLZWxlbWVuICA8
a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBTZXQgdXAgcGx1Z2luIHBy
b2Nlc3Mgb24gVW5peAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzIxMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWVuYWJsZSBwbHVnaW5zLiBUaGV5IHNob3VsZCBub3QgYmUgYSBzb3VyY2UKKyAgICAg
ICAgb2YgcHJvYmxlbXMgbm93IHRoYXQgd2UgaGF2ZSBhIHdheSBvZiBydW5uaW5nCisgICAgICAg
IHRoZW0gb3V0LW9mLXByb2Nlc3MuCisKKyAgICAgICAgKiBxbWFrZS9ta3NwZWNzL2ZlYXR1cmVz
L2ZlYXR1cmVzLnByZjoKKwogMjAxMS0xMi0wMSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5j
b20+CiAKICAgICAgICAgVGVhY2ggY2hlY2std2Via2l0LXN0eWxlIGhvdyB0byBjaGVjayB0aGUg
c3ludGF4IG9mIEpTT04gZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVh
dHVyZXMvZmVhdHVyZXMucHJmIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJl
cy5wcmYKaW5kZXggNzg1Y2ZlODJmMGRjNjBhNjFmY2Q0YjI4ZjRiZmQ2MTVjNTYzYjVkYS4uMzc0
YmQzODUzMTRkYTFkZTM1M2I5YjAwMTg4Njc3OGEzZjc0NzEyZCAxMDA2NDQKLS0tIGEvVG9vbHMv
cW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYKKysrIGIvVG9vbHMvcW1ha2UvbWtz
cGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYKQEAgLTEwMSwxMyArMTAxLDEyIEBAIGlzRW1wdHko
SEFWRV9RUkFXRk9OVCkgewogfQogCiAjIE5ldHNjYXBlIHBsdWdpbnMgc3VwcG9ydCBmb3IgV2Vi
S2l0MgotIW5vX3dlYmtpdDI6IWNvbnRhaW5zKERFRklORVMsIFBMVUdJTl9BUkNISVRFQ1RVUkVf
VU5TVVBQT1JURUQpOiB7Ci0gICAgIyBEaXNhYmxlIHhsaWIgcGx1Z2lucyB3aGlsZSB0aGV5J3Jl
IGluLXByb2Nlc3MsIGJlY2F1c2UgdGhleSBjcmFzaAotICAgICMgYXMgc29vbiBhcyBhbiBpbnN0
YWxsZWQgbnBhcGkgcGx1Z2luIHVzZXMgUXQgNC4KLSAgICBmYWxzZTpjb250YWlucyhRVF9DT05G
SUcsIHhjYi14bGliKSB7Cishbm9fd2Via2l0MjohY29udGFpbnMoREVGSU5FUywgUExVR0lOX0FS
Q0hJVEVDVFVSRV9VTlNVUFBPUlRFRCkgeworICAgIGNvbnRhaW5zKFFUX0NPTkZJRywgeGNiLXhs
aWIpIHsKICAgICAgICAgQ09ORklHICs9IHBsdWdpbl9iYWNrZW5kX3hsaWIKICAgICAgICAgREVG
SU5FUyArPSBQTFVHSU5fQVJDSElURUNUVVJFX1gxMT0xIFwKICAgICAgICAgICAgICAgICAgICBQ
TFVHSU5fQVJDSElURUNUVVJFX1VOU1VQUE9SVEVEPTAKKyAgICAgICAgREVGSU5FUyArPSBFTkFC
TEVfUExVR0lOX1BST0NFU1M9MQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFRklORVMgKz0gUExV
R0lOX0FSQ0hJVEVDVFVSRV9VTlNVUFBPUlRFRD0xCiAgICAgfQpkaWZmIC0tZ2l0IGEvQ2hhbmdl
TG9nIGIvQ2hhbmdlTG9nCmluZGV4IGI1ZjMxNDZhNTc2OTEzZTFmNGUzZWQ4ZmM3Y2E1NThiNTI4
MjYxZWQuLjM0N2I4MDJkYzhmNzNhYmFlNTk0Y2Q0MzczNTU2YTIwNjJmYjk3NmQgMTAwNjQ0Ci0t
LSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMi0w
NSAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XVtX
SzJdIFNldCB1cCBwbHVnaW4gcHJvY2VzcyBvbiBVbml4CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjEyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL1F0V2ViS2l0LnBybzoKKyAgICAgICAg
KiBTb3VyY2UvcXR3ZWJraXQtZXhwb3J0Lm1hcDoKKwogMjAxMS0xMi0wMiAgQWxlamFuZHJvIEcu
IENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBGaXggVGV4dHVyZU1h
cHBlckNhaXJvIGNvbXBpbGF0aW9uCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118025</attachid>
            <date>2011-12-06 04:36:16 -0800</date>
            <delta_ts>2011-12-15 06:04:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72121-20111206133614.patch</filename>
            <type>text/plain</type>
            <size>54963</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxODA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFlM2M5NTBkZmU0NzZm
NzA0NzRjZmJmNzdjYzBjM2Q3NTgzZWJhMC4uMTIyMDBkMTU5M2MzMzYzNjU5OTRkNmI5OTFlNjZj
NDVlMTFhYzdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTEyLTA1ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdW1dLMl0gU2V0
IHVwIHBsdWdpbiBwcm9jZXNzIG9uIFVuaXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcyMTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkgc28gbm8gbmV3IHRl
c3RzLgorCisgICAgICAgICogcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6IEFkZGVkIG1pc3NpbmcgaW1wbGVt
ZW50YXRpb24uCisKIDIwMTEtMTItMDIgIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OIChyOTExMjUpOiBQb2x5bGluZSB0b29sIGlu
IGdvb2dsZSBkb2NzIGlzIGJyb2tlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDYyZjliOTc4MDdlMjIwYzI4N2Ji
NzNjNDdkMmQ5NTQ5NjI3OGE4YWYuLjNjZDNiYjAyNDViZWNjZmYyNTgxNWYxOTRiZDBhYTUwNGFh
NjhjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDEgQEAKKzIwMTEtMTItMDUgIEJhbGF6cyBL
ZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBTZXQgdXAg
cGx1Z2luIHByb2Nlc3Mgb24gVW5peAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzIxMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTZXR1cCBwbHVnaW4gcHJvY2VzcyBmb3IgUXQgYW5kIG1vdmUgdGhlIHRh
c2sgb2YgcXVlcnlpbmcgdGhlIHBsdWdpbnMKKyAgICAgICAgdG8gdGhpcyBwcm9jZXNzIGluIG9y
ZGVyIHRvIGF2b2lkIGNyYXNoZXMgZHVlIHRvIHBsdWdpbiBidWdzIG9yIGxpYnJhcnkKKyAgICAg
ICAgaW5jb21wYXRpYmlsaXR5LiBUaGUgYXBwcm9hY2ggb2YgcXVlcnlpbmcgdGhlIHBsdWdpbnMg
aXMgbm93IGluIHBhaXIKKyAgICAgICAgd2l0aCB0aGUgTWFjIHBvcnQ6IHRoZSBwbHVnaW4gcHJv
Y2VzcyB3cml0ZXMgaXQgdG8gYSBmaWxlIHdoaWNoIGlzIHJlYWQKKyAgICAgICAgb24gdGhlIFVJ
IHNpZGUuIFRoZSBmaWxlIGFsc28gc2VydmVzIGFzIGEgcGVyc2lzdGVudCBjYWNoZS4gVGhpcyB3
YXkKKyAgICAgICAgdGhpcyBwYXRjaCBhbHNvIGltcGxlbWVudHMgd2hhdCB3ZSBjYWxsIE5FVFND
QVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRQorICAgICAgICBpbiBXZWJDb3JlLgorCisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy5wcm86IEFkZGVkLgor
CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01haW5HdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFpbkd0ayk6CisgICAgICAgICogUGx1Z2lu
UHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc01haW4pOgorICAgICAgICBDcmVhdGUgbWV0YSBkYXRhIGRlc2NyaXB0aW9uIGZp
bGUgaWYgbGF1bmNoZWQgd2l0aAorICAgICAgICAtY3JlYXRlTWV0YURhdGFEZXNjcmlwdGlvbiBj
b21tYW5kIGxpbmUgYXJndW1lbnQuCisgICAgICAgIAorICAgICAgICAqIFNoYXJlZC9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQpOgorICAgICAgICBHZXQgcmlkIG9mIHRoZSBHdGsg
aW5pdGlhbGl6YXRpb24gaGFjay4gV2UgZG8gbm90IG5lYWQgaXQgaGVyZSBhbnltb3JlLgorICAg
ICAgICAKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1v
ZHVsZS5oOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBs
dWdpbk1vZHVsZVgxMS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBhcnNlTUlNRURlc2NyaXB0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm9G
b3JMb2FkZWRQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpyZWFkTmV4dFVURjhTdHJpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpyZWFkTmV4dFRpbWVzdGFtcCk6CisgICAgICAgIChXZWJLaXQ6OmRl
c2NyaXB0b3JGaWxlU2NoZW1hSUQpOgorICAgICAgICAoV2ViS2l0OjpyZWFkUGx1Z2luTWV0YURh
dGFGcm9tRGVzY3JpcHRvckZpbGUpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1v
ZHVsZTo6Z2V0UGx1Z2luSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OndyaXRlVGltZXN0YW1wKToK
KyAgICAgICAgKFdlYktpdDo6d3JpdGVTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2Fw
ZVBsdWdpbk1vZHVsZTo6Y3JlYXRlUGx1Z2luTWV0YURhdGFEZXNjcmlwdG9yRmlsZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjpkZXRlcm1pbmVRdWlya3MpOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6cGx1Z2luTWV0YURhdGFDYWNoZURp
cmVjdG9yeSk6CisgICAgICAgIEFkZGVkIHRoZSBsb2dpYyB0byB3cml0ZSBvdXQgcGx1Z2luIG1l
dGEgZGF0YSBpbnRvIGEgZmlsZSBhbmQgcmVhZCBpdAorICAgICAgICBmcm9tIHRoZXJlLiBTaW1p
bGFyIGhvdyBpdCBpcyBpbXBsZW1lbnRlZCBpbiBXZWJDb3JlIHdpdGggYSBiaXQgbW9yZQorICAg
ICAgICBjaGVja3MgZm9yIGRhdGEgY29ycnVwdGlvbi4KKworICAgICAgICAqIFNoYXJlZC9xdC9T
aGFyZWFibGVCaXRtYXBRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6
cGFpbnQpOgorICAgICAgICBBZGRlZCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIG92ZXJyaWRlIHdp
dGggdGhlIHNjYWxlIGZhY3RvciBiZWNhdXNlCisgICAgICAgIGl0IGlzIGNhbGxlZCBmcm9tIFBs
dWdpblByb3h5LiBJdCBkb2VzIG5vdCBhY3R1YWxseSBoYW5kbGUgdGhlIGNhc2UKKyAgICAgICAg
d2hlbiB0aGUgc2NhbGUgZmFjdG9yIGlzIG5vdCAxIGJlY2F1c2UgSSBjb3VsZCBub3QgZmlndXJl
IG91dCBhIHdheQorICAgICAgICB0byB0ZXN0IHRoaXMgY2FzZS4gTmVlZCB0byBiZSBmaXhlZCBp
biBhIGZvbGxvdy11cC4KKyAgICAgICAgCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
KiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQcm9jZXNzTGF1bmNoZXI6OnBsYXRmb3JtRXhlY3V0YWJsZVBhdGgpOgorICAgICAgICAoV2Vi
S2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
cm9jZXNzTGF1bmNoZXI6OnBsYXRmb3JtRXhlY3V0YWJsZVBhdGgpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nl
c3NMYXVuY2hlcjo6cGxhdGZvcm1FeGVjdXRhYmxlUGF0aCk6CisgICAgICAgIEZhY3RvcmVkIHRo
ZSBleGVjdXRhYmxlIHBhdGggZGV0ZXJtaW5hdGlvbiBpbnRvIGEgc3RhdGljIG1ldGhvZAorICAg
ICAgICB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLiBXZSBjYW4gdXNlIGl0IHdoZW4gbGF1bmNo
aW5nIHRoZQorICAgICAgICBwbHVnaW4gcHJvY2VzcyBmb3IgY3JlYXRpbmcgdGhlIGRlc2NyaXB0
b3IgZmlsZS4KKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nl
c3NQcm94eUd0ay5jcHA6IFJlbW92ZWQuCisgICAgICAgIE5vIG5lZWQgZm9yIGEgR3RrL1F0IHZl
cnNpb24gb2YgdGhpcywgaW5zdGVhZCBjcmVhdGVkIGEKKyAgICAgICAgY29tbW9uIFBsdWdpblBy
b2Nlc3NQcm94eVVuaXguY3BwLgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVn
aW5Qcm9jZXNzUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94
eTo6Y3JlYXRlUHJvcGVydHlMaXN0RmlsZSk6CisgICAgICAgIFVzZSBQcm9jZXNzTGF1bmNoZXI6
OnBsYXRmb3JtRXhlY3V0YWJsZVBhdGggZm9yIGRldGVybWluaW5nCisgICAgICAgIHRoZSBleGVj
dXRhYmxlIHBhdGggb2YgdGhlIHBsdWdpbiBwcm9jZXNzIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRp
b24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94
eVVuaXguY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5Ojpw
bGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc1Byb3h5OjpjcmVhdGVNZXRhRGF0YURlc2NyaXB0b3JGaWxlKToKKyAgICAgICAgTGF1
bmNoaW5nIHRoZSBwbHVnaW4gcHJvY2VzcyB3aXRoIHRoZSAtY3JlYXRlTWV0YURhdGFEZXNjcmlw
dGlvbgorICAgICAgICBhcmd1bWVudC4gSW1wbGVtZW50ZWQgaW4gYSB3YXkgdG8gbm90IGJsb2Nr
IGZvcmV2ZXIgaWYgdGhlIHBsdWdpbgorICAgICAgICBwcm9jZXNzIGhhbmdzICh3aGljaCBkaWQg
bm90IGhhcHBlbiBpbiBteSBlbnZpcm9ubWVudCBidXQgaXQncyBiZXR0ZXIKKyAgICAgICAgdG8g
YmUgcGVzc2ltaXN0aWMpLgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUE5f
R2V0VmFsdWUpOgorICAgICAgICBDaGFuZ2VkIGFjY29yZGluZyB0byB0aGUgcmVtb3ZlIG9mIHRo
ZSBmbGFzaCBoYWNrLiBEbyBub3QgdHJ5CisgICAgICAgIHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBw
bHVnaW4gbmVlZHMgR3RrIGJ5IGl0J3MgbmFtZSBidXQgaW5zdGVhZAorICAgICAgICBhbHdheXMg
Z2V0IGJhY2sgdGhlIGV4cGVjdGVkIEd0ayB2ZXJzaW9uICgyKS4gT25seSBHdGsgcGx1Z2lucwor
ICAgICAgICBzaG91bGQgYXNrIGZvciB0aGlzIGFueXdheS4KKyAgICAgICAgCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICog
cXQvUGx1Z2luTWFpblF0LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL3F0L1BsdWdpblByb2Nlc3NQcm94eVF0LmNwcC4KKyAgICAgICAgRW50cnkgcG9p
bnQgZm9yIHRoZSBwbHVnaW4gcHJvY2Vzcy4gKEl0IGlzIGFjdHVhbGx5IGEgbmV3IGZpbGUgLSBk
b24ndCBtaW5kIHdoYXQgZ2l0IGRpZmYgc2F5cy4pCisgICAgICAgIE1vdmVkIEd0ayBpbml0aWFs
aXphdGlvbiBoZXJlLgorICAgICAgICAobWFpbik6CisKIDIwMTEtMTItMDIgIEFuZHJhcyBCZWNz
aSAgPGFuZHJhcy5iZWNzaUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIFNldCBldmVu
dCB0aW1lc3RhbXBzIG9uIGN1c3RvbSBpbnB1dCBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9R
dFdlYktpdC5wcm8gYi9Tb3VyY2UvUXRXZWJLaXQucHJvCmluZGV4IDAyZmM5ZTFjN2ViZTFmNzMx
OWQwOWQxMjE1ZTIwOTg5OWI0NTFhNzQuLmJiYmZjNDFlNjgxN2I3YzBkNWJkNWUxM2VjOWQzY2Zk
NDc5YmExZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9RdFdlYktpdC5wcm8KKysrIGIvU291cmNlL1F0
V2ViS2l0LnBybwpAQCAtNCw2ICs0LDggQEAKICMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZv
ciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQgc3lzdGVtCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorbG9hZChm
ZWF0dXJlcykKKwogVEVNUExBVEUgPSBzdWJkaXJzCiBDT05GSUcgKz0gb3JkZXJlZAogCkBAIC0x
Myw2ICsxNSwxMCBAQCBTVUJESVJTICs9IGFwaQogIW5vX3dlYmtpdDIgewogICAgIHdlYnByb2Nl
c3MuZmlsZSA9IFdlYktpdDIvV2ViUHJvY2Vzcy5wcm8KICAgICBTVUJESVJTICs9IHdlYnByb2Nl
c3MKKyAgICBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfUExVR0lOX1BST0NFU1M9MSkgeworICAg
ICAgICBwbHVnaW5wcm9jZXNzLmZpbGUgPSBXZWJLaXQyL1BsdWdpblByb2Nlc3MucHJvCisgICAg
ICAgIFNVQkRJUlMgKz0gcGx1Z2lucHJvY2VzcworICAgIH0KIH0KIAogaW5jbHVkZShXZWJLaXQv
cXQvZG9jcy9kb2NzLnByaSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0
L0ZpbGVTeXN0ZW1RdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVt
UXQuY3BwCmluZGV4IDMyNjQ0ZDE3OGJiZDZlMmM5ZTBlYmEzZWUxNGM1NDM4ZjJjNzRiMWQuLjQx
MWM4N2Y4YjA5ZjdiMjlkMzk3ZjlmZDVhNjJlNjRmMjI4Y2Q0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNwcApAQCAtMjE4LDYgKzIxOCwxMiBAQCBib29s
IHVubG9hZE1vZHVsZShQbGF0Zm9ybU1vZHVsZSBtb2R1bGUpCiAjZW5kaWYKIH0KIAorQ1N0cmlu
ZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIFFC
eXRlQXJyYXkgbG9jYWw4Qml0ID0gc3RhdGljX2Nhc3Q8UVN0cmluZz4ocGF0aCkudG9Mb2NhbDhC
aXQoKTsKKyAgICByZXR1cm4gQ1N0cmluZyhsb2NhbDhCaXQuY29uc3REYXRhKCksIGxvY2FsOEJp
dC5sZW5ndGgoKSk7Cit9CisKIH0KIAogLy8gdmltOiB0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUuYW0KaW5kZXggNGNhNDk3NzZkZjQ2YmEwOWJjNjcyODRhNjcxM2NiNjg1YjY4YWQwYy4uM2Yw
ZWVlZGMzNDdmZjliNThmMWQwMTg0M2U4ZjkzMGI2NTFhNjEzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUu
YW0KQEAgLTU4Nyw4ICs1ODcsOCBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9S
X1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX1NPVQogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuaCBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2Vy
LmNwcCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nl
c3NQcm94eUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgv
UGx1Z2luSW5mb1N0b3JlVW5peC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Jlc3Bv
bnNpdmVuZXNzVGltZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzcG9uc2l2
ZW5lc3NUaW1lci5oIFwKQEAgLTEyNTMsNiArMTI1Myw3IEBAIFByb2dyYW1zX1dlYktpdFBsdWdp
blByb2Nlc3NfQ1BQRkxBR1MgPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVk
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucyBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvIFwKKwktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvIFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy8gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy8gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS8gXApAQCAtMTI2NCw2ICsxMjY1LDcgQEAgUHJv
Z3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19DUFBGTEFHUyA9IFwKIAktREJVSUxESU5HX1dFQktJ
VCBcCiAJLURHVEtfQVBJX1ZFUlNJT05fMj0xIFwKIAktREVOQUJMRV9QTFVHSU5fUFJPQ0VTUz0x
IFwKKwktRExJQkVYRUNESVI9XCIiJChsaWJleGVjZGlyKSJcIiBcCiAJJChnbG9iYWxfY3BwZmxh
Z3MpIFwKIAkkKHdlYmNvcmVfY3BwZmxhZ3MpIFwKIAkkKHdlYmNvcmVndGtfY3BwZmxhZ3MpIFwK
QEAgLTEzNzgsNiArMTM4MCw5IEBAIFByb2dyYW1zX1dlYktpdFBsdWdpblByb2Nlc3NfU09VUkNF
UyA9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAgXAor
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwIFwK
KwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0
ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJv
Y2Vzc1Byb3h5VW5peC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW4uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgg
XAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVV
dGlsaXRpZXMuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mu
cHJvIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2FjNTY2
MWIxNjBmYjYxYWFlMjM5NzZhZjBlYTEzNDk1M2FhNTFkYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MucHJvCkBAIC0wLDAgKzEsMzUgQEAKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorIyBQcm9qZWN0IGZpbGUgZm9yIHRoZSBXZWJLaXQyIHBsdWdpbiBwcm9jZXNzIGJpbmFy
eQorIworIyBTZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBi
dWlsZCBzeXN0ZW0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitsb2FkKGZlYXR1cmVzKQorCitURU1QTEFURSA9
IGFwcAorCitUQVJHRVQgPSBRdFdlYlBsdWdpblByb2Nlc3MKK0RFU1RESVIgPSAkJHtST09UX0JV
SUxEX0RJUn0vYmluCisKK1NPVVJDRVMgKz0gcXQvUGx1Z2luTWFpblF0LmNwcAorCitJTkNMVURF
UEFUSCA9ICQkUFdELy4uL0phdmFTY3JpcHRDb3JlIFwKKyAgICAgICAgICAgICAgJCRJTkNMVURF
UEFUSAorCitDT05GSUcgKz0gcXR3ZWJraXQKKworUVQgKz0gbmV0d29yaworbWFjeDogUVQgKz0g
eG1sCisKK2NvbnRhaW5zKFFUX0NPTkZJRywgb3BlbmdsKSB7CisgICAgUVQgKz0gb3BlbmdsCisg
ICAgREVGSU5FUyArPSBRVF9DT05GSUdVUkVEX1dJVEhfT1BFTkdMCit9CisKK0lOU1RBTExTICs9
IHRhcmdldAorCitpc0VtcHR5KElOU1RBTExfQklOUykgeworICAgIHRhcmdldC5wYXRoID0gJCRb
UVRfSU5TVEFMTF9CSU5TXQorfSBlbHNlIHsKKyAgICB0YXJnZXQucGF0aCA9ICQkSU5TVEFMTF9C
SU5TCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVn
aW5Qcm9jZXNzTWFpbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9Q
bHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAKaW5kZXggOTk0MjYwNGU3YjlkZTM3YmQ5M2VmZTY0NDc2
MzY1OTAxNWYxOWU4Zi4uNjgwNjg4MDM5ZDIzODUyYzhkNTRlOTk5NjBlZWY0MDU3MWE4MzllOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vz
c01haW5HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdp
blByb2Nlc3NNYWluR3RrLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluR3RrLmgiCiAKKyNpbmNsdWRlICJOZXRzY2Fw
ZVBsdWdpbk1vZHVsZS5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKICNpbmNsdWRlIDxX
ZWJLaXQyL1J1bkxvb3AuaD4KICNpbmNsdWRlIDxnZGsvZ2RreC5oPgpAQCAtNTEsMTIgKzUyLDIz
IEBAIHN0YXRpYyBpbnQgd2Via2l0Z3RrWEVycm9yKERpc3BsYXkqIHhkaXNwbGF5LCBYRXJyb3JF
dmVudCogZXJyb3IpCiAKIFdLX0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW5HdGsoaW50IGFy
Z2MsIGNoYXIqIGFyZ3ZbXSkKIHsKLSAgICBBU1NFUlQoYXJnYyA9PSAyKTsKKyAgICBBU1NFUlQo
YXJnYyA+PSAyKTsKKyAgICBib29sIGNyZWF0aW5nTWV0YURhdGFEZXNjcmlwdGlvbiA9ICFzdHJj
bXAoYXJndlsxXSwgIi1jcmVhdGVNZXRhRGF0YURlc2NyaXB0aW9uIik7CisgICAgQVNTRVJUKGFy
Z2MgPT0gMiB8fCAoYXJnYyA9PSA0ICYmIGNyZWF0aW5nTWV0YURhdGFEZXNjcmlwdGlvbikpOwog
CiAgICAgZ3RrX2luaXQoJmFyZ2MsICZhcmd2KTsKIAogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVh
ZGluZygpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKworICAgIGlmIChjcmVh
dGluZ01ldGFEYXRhRGVzY3JpcHRpb24pIHsKKyAgICAgICAgU3RyaW5nIHBsdWdpblBhdGgoYXJn
dlsyXSk7CisgICAgICAgIFN0cmluZyBtZXRhRGF0YURlc2NyaXB0b3JGaWxlUGF0aChhcmd2WzNd
KTsKKyAgICAgICAgaWYgKCFOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Y3JlYXRlUGx1Z2luTWV0YURh
dGFEZXNjcmlwdG9yRmlsZShwbHVnaW5QYXRoLCBtZXRhRGF0YURlc2NyaXB0b3JGaWxlUGF0aCkp
CisgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgICAgICByZXR1cm4gRVhJVF9T
VUNDRVNTOworICAgIH0KKwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwog
CiAgICAgLy8gUGx1Z2lucyBjYW4gcHJvZHVjZSBYIGVycm9ycyB0aGF0IGFyZSBoYW5kbGVkIGJ5
IHRoZSBHREsgWCBlcnJvciBoYW5kbGVyLCB3aGljaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5RdC5jcHAKaW5kZXggM2UwMDMz
ZmYwYWIzMzc2NTBlNTNkMDgxYzg5ZjQ0NDE0YTY3OGE3NS4uNDdmNmQ5MjlhMWFkMzFlMGNiMTA2
Yzk0ZTA2ZDE0YzgyMmZiZWViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBOb2tpYSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDQyICsy
NSw2OSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbHVnaW5Qcm9j
ZXNzTWFpbi5oIgogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorI2luY2x1ZGUgIlBsdWdp
blByb2Nlc3NNYWluLmgiCiAKLSNpbmNsdWRlICJDb21tYW5kTGluZS5oIgogI2luY2x1ZGUgIlBs
dWdpblByb2Nlc3MuaCIKICNpbmNsdWRlICJSdW5Mb29wLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgIlNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luTW9kdWxlLmgiCisjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorI2luY2x1ZGUg
PFFBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRRGVidWc+CisjaW5jbHVkZSA8UVN0cmluZ0xpc3Q+
CiAjaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAotI2RlZmluZSBTSE9XX0NSQVNIX1JFUE9SVEVSIDEKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWludCBQbHVnaW5Qcm9jZXNzTWFpbihjb25zdCBDb21tYW5k
TGluZSYgY29tbWFuZExpbmUpCitzdGF0aWMgdm9pZCBtZXNzYWdlSGFuZGxlcihRdE1zZ1R5cGUg
dHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKLSAgICBTdHJpbmcgc2VydmljZU5hbWUgPSBj
b21tYW5kTGluZVsic2VydmljZW5hbWUiXTsKLSAgICBpZiAoc2VydmljZU5hbWUuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIGlmICh0eXBlID09IFF0Q3JpdGlj
YWxNc2cpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbWVzc2FnZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBEbyBub3RoaW5nCit9CisKK1FXRUJLSVRfRVhQ
T1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAg
UUJ5dGVBcnJheSBzdXBwcmVzc091dHB1dCA9IHFnZXRlbnYoIlFUX1dFQktJVF9TVVBQUkVTU19X
RUJfUFJPQ0VTU19PVVRQVVQiKTsKKyAgICBpZiAoIXN1cHByZXNzT3V0cHV0LmlzRW1wdHkoKSAm
JiBzdXBwcmVzc091dHB1dCAhPSAiMCIpCisgICAgICAgIHFJbnN0YWxsTXNnSGFuZGxlcihtZXNz
YWdlSGFuZGxlcik7CiAKLSNpZiAhU0hPV19DUkFTSF9SRVBPUlRFUgotICAgIC8vIEluc3RhbGxz
IHNpZ25hbCBoYW5kbGVycyB0aGF0IGV4aXQgb24gYSBjcmFzaCBzbyB0aGF0IENyYXNoUmVwb3J0
ZXIgZG9lcyBub3Qgc2hvdyB1cC4KLSAgICBzaWduYWwoU0lHSUxMLCBfZXhpdCk7Ci0gICAgc2ln
bmFsKFNJR0ZQRSwgX2V4aXQpOwotICAgIHNpZ25hbChTSUdCVVMsIF9leGl0KTsKLSAgICBzaWdu
YWwoU0lHU0VHViwgX2V4aXQpOwotI2VuZGlmCisgICAgUUFwcGxpY2F0aW9uIGFwcChhcmdjLCBh
cmd2KTsKIAogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5pdGlh
bGl6ZU1haW5UaHJlYWQoKTsKKworICAgIGlmIChhcmdjIDw9IDEpCisgICAgICAgIHJldHVybiBF
WElUX0ZBSUxVUkU7CisKKyAgICBpZiAoYXBwLmFyZ3VtZW50cygpLmF0KDEpID09IFFMYXRpbjFT
dHJpbmcoIi1jcmVhdGVNZXRhRGF0YURlc2NyaXB0aW9uIikpIHsKKyAgICAgICAgaWYgKGFyZ2Mg
IT0gNCkKKyAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisKKyAgICAgICAgU3RyaW5n
IHBsdWdpblBhdGgoYXBwLmFyZ3VtZW50cygpLmF0KDIpKTsKKyAgICAgICAgU3RyaW5nIGRlc2Ny
aXB0b3JGaWxlUGF0aChhcHAuYXJndW1lbnRzKCkuYXQoMykpOworICAgICAgICBpZiAoIU5ldHNj
YXBlUGx1Z2luTW9kdWxlOjpjcmVhdGVQbHVnaW5NZXRhRGF0YURlc2NyaXB0b3JGaWxlKHBsdWdp
blBhdGgsIGRlc2NyaXB0b3JGaWxlUGF0aCkpCisgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlM
VVJFOworICAgICAgICByZXR1cm4gRVhJVF9TVUNDRVNTOworICAgIH0KKwogICAgIFJ1bkxvb3A6
OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCisgICAgLy8gQ3JlYXRlIHRoZSBjb25uZWN0aW9u
LgorICAgIGJvb2wgaXNOdW1iZXIgPSBmYWxzZTsKKyAgICBpbnQgaWRlbnRpZmllciA9IGFwcC5h
cmd1bWVudHMoKS5hdCgxKS50b0ludCgmaXNOdW1iZXIsIDEwKTsKKyAgICBpZiAoIWlzTnVtYmVy
KQorICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworCisgICAgV2ViS2l0OjpQbHVnaW5Qcm9j
ZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplKGlkZW50aWZpZXIsIFJ1bkxvb3A6Om1haW4oKSk7CisK
ICAgICBSdW5Mb29wOjpydW4oKTsKIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5N
b2R1bGUuY3BwCmluZGV4IDY0MmUzZjIxMTZmNDAxNjYwNWQzMTI3Nzg0MTYwNWNlOTVhNDQ2ODYu
LmZkYzdhYzU3ZDA1OGFhOTcwZTI5YTM0YWU0ZTlhOWJhODFhY2Y3ZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbk1vZHVsZS5jcHAKQEAgLTE5NywxMCArMTk3LDYgQEAgYm9vbCBOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6bG9hZCgpCiAKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQoKQog
ewotI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgIGFwcGx5WDExUXVpcmtzQmVmb3Jl
TG9hZCgpOwotI2VuZGlmCi0KICAgICBtX21vZHVsZSA9IGFkb3B0UHRyKG5ldyBNb2R1bGUobV9w
bHVnaW5QYXRoKSk7CiAgICAgaWYgKCFtX21vZHVsZS0+bG9hZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaAppbmRleCBmODBhMGExYTBhMzJjMDcyMWNl
NmFiZmI1ZmJkZDViNDBkOGE5NmIyLi5iMWRmZDBlYzk2MDcyYTAzOTM5OTgzYjFmNGM0YmE5NjBl
YzdmNTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmgKQEAgLTU5LDYgKzU5LDkgQEAgcHVi
bGljOgogCiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShNQUMpCiAgICAgc3RhdGljIGJvb2wgY3Jl
YXRlUGx1Z2luTUlNRVR5cGVzUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsK
KyNlbGlmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgIHN0YXRpYyBTdHJpbmcgcGx1Z2lu
TWV0YURhdGFDYWNoZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBib29sIGNyZWF0ZVBsdWdpbk1l
dGFEYXRhRGVzY3JpcHRvckZpbGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtNjgsOCArNzEsMTQgQEAgcHJp
dmF0ZToKIAogI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQogICAgIHZvaWQgYXBwbHlYMTFR
dWlya3NCZWZvcmVMb2FkKCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0TUlNRURlc2NyaXB0aW9uKGNv
bnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uLCBQbHVnaW5Nb2R1bGVJbmZvJik7Ci0gICAgYm9v
bCBnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKFBsdWdpbk1vZHVsZUluZm8mKTsKKworICAg
IHN0cnVjdCBSYXdQbHVnaW5NZXRhRGF0YSB7CisgICAgICAgIFN0cmluZyBuYW1lOworICAgICAg
ICBTdHJpbmcgZGVzY3JpcHRpb247CisgICAgICAgIFN0cmluZyBtaW1lRGVzY3JpcHRpb247Cisg
ICAgfTsKKworICAgIGJvb2wgZ2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihSYXdQbHVnaW5N
ZXRhRGF0YSYpOwogI2VuZGlmCiAKICAgICBib29sIHRyeUdldFNpdGVzV2l0aERhdGEoVmVjdG9y
PFN0cmluZz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05l
dHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCmlu
ZGV4IGJlMDRiZmYyNmY5OGY3NGQ5NDBjYWE1NTYxZWRjNTNjZmJjZmIxYTUuLmVkMmIyZTJjNWM0
NDJjODJlOGE1YjJjYmNmZDljOWZlNjEyZTc4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luTW9kdWxlWDExLmNwcApAQCAtMjgsMTggKzI4LDI2IEBACiAKICNpbmNsdWRlICJOZXRz
Y2FwZVBsdWdpbk1vZHVsZS5oIgogCisjaW5jbHVkZSAiUGx1Z2luSW5mb1N0b3JlLmgiCisjaW5j
bHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiTmV0c2NhcGVCcm93c2VyRnVu
Y3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KLQotI2lmIFBMQVRGT1JNKFFU
KQotI2luY2x1ZGUgPFFMaWJyYXJ5PgotI2VuZGlmCi0KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPGZjbnRs
Lmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNs
dWRlIDx1bmlzdGQuaD4KIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFDb3JlQXBwbGlj
YXRpb24+CisjaW5jbHVkZSA8UURpcj4KKyNpbmNsdWRlIDxRTGlicmFyeT4KKyNpbmNsdWRlIDxR
U3RhbmRhcmRQYXRocz4KKyNlbGlmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxnbGliLmg+Cisj
ZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNjksMzUgKzc3LDEzIEBAIFN0ZG91dERldk51bGxSZWRpcmVjdG9yOjp+U3Rkb3V0RGV2TnVs
bFJlZGlyZWN0b3IoKQogICAgICAgICBkdXAyKG1fc2F2ZWRTdGRvdXQsIFNURE9VVF9GSUxFTk8p
OwogfQogCi0jaWYgUExBVEZPUk0oUVQpCi1zdGF0aWMgdm9pZCBpbml0aWFsaXplR1RLKCkKK3N0
YXRpYyB2b2lkIHBhcnNlTUlNRURlc2NyaXB0aW9uKGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0
aW9uLCBWZWN0b3I8TWltZUNsYXNzSW5mbz4mIHJlc3VsdCkKIHsKLSAgICBRTGlicmFyeSBsaWJy
YXJ5KFFMYXRpbjFTdHJpbmcoImxpYmd0ay14MTEtMi4wLnNvLjAiKSk7Ci0gICAgaWYgKGxpYnJh
cnkubG9hZCgpKSB7Ci0gICAgICAgIHR5cGVkZWYgdm9pZCAqKCpndGtfaW5pdF9jaGVja19wdHIp
KGludCosIGNoYXIqKiopOwotICAgICAgICBndGtfaW5pdF9jaGVja19wdHIgZ3RrSW5pdENoZWNr
ID0gcmVpbnRlcnByZXRfY2FzdDxndGtfaW5pdF9jaGVja19wdHI+KGxpYnJhcnkucmVzb2x2ZSgi
Z3RrX2luaXRfY2hlY2siKSk7Ci0gICAgICAgIC8vIE5PVEU6IFdlJ3JlIHVzaW5nIGd0a19pbml0
X2NoZWNrKCkgc2luY2UgZ3RrX2luaXQoKSBjYWxscyBleGl0KCkgb24gZmFpbHVyZS4KLSAgICAg
ICAgaWYgKGd0a0luaXRDaGVjaykKLSAgICAgICAgICAgICh2b2lkKSBndGtJbml0Q2hlY2soMCwg
MCk7Ci0gICAgfQotfQotI2VuZGlmCisgICAgQVNTRVJUX0FSRyhyZXN1bHQsIHJlc3VsdC5pc0Vt
cHR5KCkpOwogCi12b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjphcHBseVgxMVF1aXJrc0JlZm9y
ZUxvYWQoKQotewotI2lmIFBMQVRGT1JNKFFUKQotICAgIGlmIChtX3BsdWdpblBhdGguY29udGFp
bnMoIm5wd3JhcHBlciIpIHx8IG1fcGx1Z2luUGF0aC5jb250YWlucygiZmxhc2hwbGF5ZXIiKSkg
ewotICAgICAgICBpbml0aWFsaXplR1RLKCk7Ci0gICAgICAgIG1fcGx1Z2luUXVpcmtzLmFkZChQ
bHVnaW5RdWlya3M6OlJlcXVpcmVzR1RLVG9vbEtpdCk7Ci0gICAgfQotI2VuZGlmCi19Ci0KLXZv
aWQgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNldE1JTUVEZXNjcmlwdGlvbihjb25zdCBTdHJpbmcm
IG1pbWVEZXNjcmlwdGlvbiwgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQotewogICAgIFZlY3Rv
cjxTdHJpbmc+IHR5cGVzOwogICAgIG1pbWVEZXNjcmlwdGlvbi5sb3dlcigpLnNwbGl0KFVDaGFy
KCc7JyksIGZhbHNlLCB0eXBlcyk7Ci0gICAgcGx1Z2luLmluZm8ubWltZXMucmVzZXJ2ZUNhcGFj
aXR5KHR5cGVzLnNpemUoKSk7CisgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodHlw
ZXMuc2l6ZSgpKTsKIAogICAgIHNpemVfdCBtaW1lSW5mb0NvdW50ID0gMDsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHR5cGVzLnNpemUoKTsgKytpKSB7CkBAIC0xMDYsOCArOTIsOCBAQCB2
b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpzZXRNSU1FRGVzY3JpcHRpb24oY29uc3QgU3RyaW5n
JiBtaW1lRGVzY3JpcHRpb24sIFBsdQogICAgICAgICBpZiAobWltZVR5cGVQYXJ0cy5zaXplKCkg
PD0gMCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHBsdWdpbi5pbmZvLm1pbWVz
LnVuY2hlY2tlZEFwcGVuZChNaW1lQ2xhc3NJbmZvKCkpOwotICAgICAgICBNaW1lQ2xhc3NJbmZv
JiBtaW1lSW5mbyA9IHBsdWdpbi5pbmZvLm1pbWVzW21pbWVJbmZvQ291bnQrK107CisgICAgICAg
IHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoTWltZUNsYXNzSW5mbygpKTsKKyAgICAgICAgTWltZUNs
YXNzSW5mbyYgbWltZUluZm8gPSByZXN1bHRbbWltZUluZm9Db3VudCsrXTsKICAgICAgICAgbWlt
ZUluZm8udHlwZSA9IG1pbWVUeXBlUGFydHNbMF07CiAKICAgICAgICAgaWYgKG1pbWVUeXBlUGFy
dHMuc2l6ZSgpID4gMSkKQEAgLTExOCwxMyArMTA0LDEwIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5N
b2R1bGU6OnNldE1JTUVEZXNjcmlwdGlvbihjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlwdGlvbiwg
UGx1CiAgICAgfQogfQogCi1ib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZv
Rm9yTG9hZGVkUGx1Z2luKFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKK2Jvb2wgTmV0c2NhcGVQ
bHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4oUmF3UGx1Z2luTWV0YURh
dGEmIG1ldGFEYXRhKQogewogICAgIEFTU0VSVChtX2lzSW5pdGlhbGl6ZWQpOwogCi0gICAgcGx1
Z2luLnBhdGggPSBtX3BsdWdpblBhdGg7Ci0gICAgcGx1Z2luLmluZm8uZmlsZSA9IHBhdGhHZXRG
aWxlTmFtZShtX3BsdWdpblBhdGgpOwotCiAgICAgTW9kdWxlKiBtb2R1bGUgPSBtX21vZHVsZS5n
ZXQoKTsKICAgICBOUFBfR2V0VmFsdWVQcm9jUHRyIE5QUF9HZXRWYWx1ZSA9IG1vZHVsZS0+ZnVu
Y3Rpb25Qb2ludGVyPE5QUF9HZXRWYWx1ZVByb2NQdHI+KCJOUF9HZXRWYWx1ZSIpOwogICAgIGlm
ICghTlBQX0dldFZhbHVlKQpAQCAtMTM3LDIyICsxMjAsMTY4IEBAIGJvb2wgTmV0c2NhcGVQbHVn
aW5Nb2R1bGU6OmdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4oUGx1Z2luTW9kdWxlSW5mbyYg
cGx1Z2luCiAgICAgY2hhciogYnVmZmVyOwogICAgIE5QRXJyb3IgZXJyb3IgPSBOUFBfR2V0VmFs
dWUoMCwgTlBQVnBsdWdpbk5hbWVTdHJpbmcsICZidWZmZXIpOwogICAgIGlmIChlcnJvciA9PSBO
UEVSUl9OT19FUlJPUikKLSAgICAgICAgcGx1Z2luLmluZm8ubmFtZSA9IGJ1ZmZlcjsKKyAgICAg
ICAgbWV0YURhdGEubmFtZSA9IGJ1ZmZlcjsKIAogICAgIGVycm9yID0gTlBQX0dldFZhbHVlKDAs
IE5QUFZwbHVnaW5EZXNjcmlwdGlvblN0cmluZywgJmJ1ZmZlcik7CiAgICAgaWYgKGVycm9yID09
IE5QRVJSX05PX0VSUk9SKQotICAgICAgICBwbHVnaW4uaW5mby5kZXNjID0gYnVmZmVyOworICAg
ICAgICBtZXRhRGF0YS5kZXNjcmlwdGlvbiA9IGJ1ZmZlcjsKIAogICAgIGNvbnN0IGNoYXIqIG1p
bWVEZXNjcmlwdGlvbiA9IE5QX0dldE1JTUVEZXNjcmlwdGlvbigpOwogICAgIGlmICghbWltZURl
c2NyaXB0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbWV0YURhdGEubWltZURlc2Ny
aXB0aW9uID0gbWltZURlc2NyaXB0aW9uOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRp
YyBib29sIHJlYWROZXh0VVRGOFN0cmluZyhTdHJpbmcmIHJlc3VsdCwgY2hhciomIGJ1ZmZlclN0
YXJ0LCBjb25zdCBjaGFyKiBidWZmZXJFbmQpCit7CisgICAgaWYgKGJ1ZmZlclN0YXJ0ID49IGJ1
ZmZlckVuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc2V0TUlNRURlc2NyaXB0aW9u
KG1pbWVEZXNjcmlwdGlvbiwgcGx1Z2luKTsKKyAgICBzaXplX3QgbWF4TGVuZ3RoID0gYnVmZmVy
RW5kIC0gYnVmZmVyU3RhcnQ7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0cm5sZW4oYnVmZmVyU3Rh
cnQsIG1heExlbmd0aCk7CisgICAgaWYgKGxlbmd0aCA9PSBtYXhMZW5ndGgpIHsKKyAgICAgICAg
Ly8gTm8gbnVsbCBjaGFyYWN0ZXIgYmVmb3JlIHRoZSBlbmQuIFRoaXMgaW5kaWNhdGVzIGEgZGF0
YSBjb3JydXB0aW9uLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmVzdWx0
ID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXJTdGFydCwgbGVuZ3RoKTsKKyAgICBidWZmZXJTdGFy
dCArPSBsZW5ndGggKyAxOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHJl
YWROZXh0VGltZXN0YW1wKHRpbWVfdCYgcmVzdWx0LCBjaGFyKiYgYnVmZmVyU3RhcnQsIGNvbnN0
IGNoYXIqIGJ1ZmZlckVuZCkKK3sKKyAgICBpZiAoYnVmZmVyU3RhcnQgPj0gYnVmZmVyRW5kKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBXZSBwdXNoIGFuIGV4dHJhIG51bGwgY2hh
cmFjdGVyIGluIGZhdm91ciBvZiBkYXRhIGNvcnJ1cHRpb24gZGV0ZWN0aW9uLgorICAgIGlmIChi
dWZmZXJTdGFydFtzaXplb2YodGltZV90KV0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXN1bHQgPSAqcmVpbnRlcnByZXRfY2FzdDx0aW1lX3QqPihidWZmZXJTdGFydCk7CisgICAgYnVm
ZmVyU3RhcnQgKz0gc2l6ZW9mKHRpbWVfdCkgKyAxOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CisK
K2NvbnN0IFN0cmluZyYgZGVzY3JpcHRvckZpbGVTY2hlbWFJRCgpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIGlkLCAoIldlYktpdCBOUEFQSS1NRVRBIDEiKSk7CisgICAgcmV0
dXJuIGlkOworfQorCitzdGF0aWMgYm9vbCByZWFkUGx1Z2luTWV0YURhdGFGcm9tRGVzY3JpcHRv
ckZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQ
bHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCit7CisgICAgUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUg
PSBvcGVuRmlsZShmaWxlUGF0aCwgT3BlbkZvclJlYWQpOworICAgIGlmICghaXNIYW5kbGVWYWxp
ZChmaWxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZl
cjsKKyAgICBjb25zdCBpbnQgcmVhZFNpemUgPSA2NDsKKyAgICBidWZmZXIucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShyZWFkU2l6ZSAqIDQpOworICAgIGludCBieXRlc1JlYWQgPSAwOworCisgICAg
d2hpbGUgKHRydWUpIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IHJlYWRGcm9tRmlsZShmaWxlLCBi
dWZmZXIuZGF0YSgpICsgYnl0ZXNSZWFkLCByZWFkU2l6ZSk7CisgICAgICAgIGlmIChyZXN1bHQg
PCAwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBieXRlc1JlYWQgKz0gcmVz
dWx0OworICAgICAgICBpZiAocmVzdWx0IDwgcmVhZFNpemUpCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgYnVmZmVyLnJlc2l6ZShieXRlc1JlYWQgKyByZWFkU2l6ZSk7CisgICAgfQorCisg
ICAgY2hhciogc3RhcnQgPSBidWZmZXIuZGF0YSgpOworICAgIGNoYXIqIGVuZCA9IGJ1ZmZlci5k
YXRhKCkgKyBieXRlc1JlYWQ7CisKKyAgICBTdHJpbmcgY2FjaGVkU2NoZW1hSUQ7CisgICAgaWYg
KCFyZWFkTmV4dFVURjhTdHJpbmcoY2FjaGVkU2NoZW1hSUQsIHN0YXJ0LCBlbmQpIHx8IGNhY2hl
ZFNjaGVtYUlEICE9IGRlc2NyaXB0b3JGaWxlU2NoZW1hSUQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gQ2hlY2sgdGhlIHBsdWdpbiB0aW1lc3RhbXAuCisgICAgdGltZV90IGNh
Y2hlZFBsdWdpbkxhc3RNb2RpZmllZDsKKyAgICB0aW1lX3QgcGx1Z2luTGFzdE1vZGlmaWVkOwor
ICAgIGlmICghcmVhZE5leHRUaW1lc3RhbXAoY2FjaGVkUGx1Z2luTGFzdE1vZGlmaWVkLCBzdGFy
dCwgZW5kKQorICAgICAgICB8fCAhZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCwg
cGx1Z2luTGFzdE1vZGlmaWVkKQorICAgICAgICB8fCBjYWNoZWRQbHVnaW5MYXN0TW9kaWZpZWQg
IT0gcGx1Z2luTGFzdE1vZGlmaWVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBD
aGVjayB0aGUgZGVzY3JpcHRvciBmaWxlIHRpbWVzdGFtcC4gVGhpcyBkZXRlY3RzIGlmIHRoZSBm
aWxlIGhhcyBiZWVuIG92ZXJyaWRkZW4uCisgICAgLy8gV2Ugd3JpdGUgdGhlIHRpbWVzdGFtcCBk
dXJpbmcgd3JpdGluZyB0aGUgZmlsZSBzbyB3ZSBzaG91bGQgYWNjZXB0IGEgc21hbGwgZGlmZmVy
ZW5jZS4KKyAgICB0aW1lX3QgY2FjaGVkRGVzY3JpcHRvckZpbGVMYXN0TW9kaWZpZWQ7CisgICAg
dGltZV90IGRlc2NyaXB0b3JGaWxlTGFzdE1vZGlmaWVkOworICAgIGNvbnN0IGludCB0b2xlcmFu
Y2VJblNlY29uZHMgPSAzOworICAgIGlmICghcmVhZE5leHRUaW1lc3RhbXAoY2FjaGVkRGVzY3Jp
cHRvckZpbGVMYXN0TW9kaWZpZWQsIHN0YXJ0LCBlbmQpCisgICAgICAgIHx8ICFnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZShmaWxlUGF0aCwgZGVzY3JpcHRvckZpbGVMYXN0TW9kaWZpZWQpCisgICAg
ICAgIHx8IGFicyhjYWNoZWREZXNjcmlwdG9yRmlsZUxhc3RNb2RpZmllZCAtIGRlc2NyaXB0b3JG
aWxlTGFzdE1vZGlmaWVkKSA+IHRvbGVyYW5jZUluU2Vjb25kcykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgU3RyaW5nIG1pbWVEZXNjcmlwdGlvbjsKKyAgICBpZiAoIXJlYWROZXh0VVRG
OFN0cmluZyhwbHVnaW4uaW5mby5uYW1lLCBzdGFydCwgZW5kKQorICAgICAgICB8fCAhcmVhZE5l
eHRVVEY4U3RyaW5nKHBsdWdpbi5pbmZvLmRlc2MsIHN0YXJ0LCBlbmQpCisgICAgICAgIHx8ICFy
ZWFkTmV4dFVURjhTdHJpbmcobWltZURlc2NyaXB0aW9uLCBzdGFydCwgZW5kKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcGFyc2VNSU1FRGVzY3JpcHRpb24obWltZURlc2NyaXB0aW9u
LCBwbHVnaW4uaW5mby5taW1lcyk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBOZXRz
Y2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgs
IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKIHsKKyAgICBTdHJpbmcgcGx1Z2luRmlsZU5hbWUg
PSBwYXRoR2V0RmlsZU5hbWUocGx1Z2luUGF0aCk7CisgICAgU3RyaW5nIGJhc2VOYW1lID0gcGx1
Z2luRmlsZU5hbWUgKyBTdHJpbmc6OmZvcm1hdCgiLiV1IiwgU3RyaW5nSGFzaDo6aGFzaChwbHVn
aW5QYXRoKSkgKyBTdHJpbmcoIi5iaW4iKTsKKyAgICBTdHJpbmcgZmlsZVBhdGggPSBwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocGx1Z2luTWV0YURhdGFDYWNoZURpcmVjdG9yeSgpLCBiYXNlTmFt
ZSk7CisKKyAgICBpZiAoIXJlYWRQbHVnaW5NZXRhRGF0YUZyb21EZXNjcmlwdG9yRmlsZShmaWxl
UGF0aCwgcGx1Z2luUGF0aCwgcGx1Z2luKSkgeworICAgICAgICAvLyAoUmUpZ2VuZXJhdGUgdGhl
IGZpbGUgYW5kIHRyeSBhZ2Fpbi4KKyAgICAgICAgaWYgKCFQbHVnaW5Qcm9jZXNzUHJveHk6OmNy
ZWF0ZU1ldGFEYXRhRGVzY3JpcHRvckZpbGUocGx1Z2luUGF0aCwgZmlsZVBhdGgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXJlYWRQbHVnaW5NZXRhRGF0YUZyb21E
ZXNjcmlwdG9yRmlsZShmaWxlUGF0aCwgcGx1Z2luUGF0aCwgcGx1Z2luKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwbHVnaW4uaW5mby5maWxlID0gcGx1Z2luRmls
ZU5hbWU7CisgICAgcGx1Z2luLnBhdGggPSBwbHVnaW5QYXRoOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3N0YXRpYyBib29sIHdyaXRlVGltZXN0YW1wKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxl
LCBjb25zdCB0aW1lX3QmIHRpbWUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgQVNT
RVJUX0FSRyhmaWxlLCBpc0hhbmRsZVZhbGlkKGZpbGUpKTsKKworICAgIC8vIFdlIHB1c2ggYW4g
ZXh0cmEgbnVsbCBjaGFyYWN0ZXIgaW4gZmF2b3VyIG9mIGRhdGEgY29ycnVwdGlvbiBkZXRlY3Rp
b24uCisgICAgY2hhciBidWZmZXJbc2l6ZW9mKHRpbWVfdCkgKyAxXTsKKyAgICBtZW1zZXQoYnVm
ZmVyLCAwLCBzaXplb2YoYnVmZmVyKSk7CisgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dGltZV90Kj4o
YnVmZmVyKSA9IHRpbWU7CisKKyAgICBpZiAod3JpdGVUb0ZpbGUoZmlsZSwgYnVmZmVyLCBzaXpl
b2YoYnVmZmVyKSkgPT0gc2l6ZW9mKGJ1ZmZlcikpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgY2xvc2VGaWxlKGZpbGUpOworICAgIGRlbGV0ZUZpbGUoZmlsZVBhdGgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgd3JpdGVTdHJpbmcoUGxhdGZvcm1GaWxlSGFuZGxl
IGZpbGUsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorewor
ICAgIEFTU0VSVF9BUkcoZmlsZSwgaXNIYW5kbGVWYWxpZChmaWxlKSk7CisKKyAgICBDU3RyaW5n
IHV0ZjhTdHJpbmcgPSBzdHJpbmcudXRmOCgpOworICAgIGludCBsZW5ndGggPSB1dGY4U3RyaW5n
Lmxlbmd0aCgpICsgMTsKKyAgICBpZiAod3JpdGVUb0ZpbGUoZmlsZSwgdXRmOFN0cmluZy5kYXRh
KCksIGxlbmd0aCkgPT0gbGVuZ3RoKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNsb3Nl
RmlsZShmaWxlKTsKKyAgICBkZWxldGVGaWxlKGZpbGVQYXRoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmNyZWF0ZVBsdWdpbk1ldGFEYXRhRGVz
Y3JpcHRvckZpbGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQorewogICAgIC8vIFRlbXBhcmFyaWx5IHN1cHByZXNzIHN0ZG91dCBpbiB0aGlzIGZ1bmN0
aW9uIGFzIHBsdWdpbnMgd2lsbCBiZSBsb2FkZWQgYW5kIHNodXRkb3duIGFuZCBkZWJ1ZyBpbmZv
CiAgICAgLy8gaXMgbGVha2VkIHRvIGxheW91dCB0ZXN0IG91dHB1dC4KICAgICBTdGRvdXREZXZO
dWxsUmVkaXJlY3RvciBzdGRvdXREZXZOdWxsUmVkaXJlY3RvcjsKQEAgLTE2NCwyMCArMjkzLDQ2
IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IHBsdWdpbk1vZHVsZS0+aW5jcmVtZW50TG9hZENvdW50KCk7Ci0gICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHBsdWdpbk1vZHVsZS0+Z2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihwbHVnaW4pOwor
ICAgIFJhd1BsdWdpbk1ldGFEYXRhIG1ldGFEYXRhOworICAgIGJvb2wgZ290UGx1Z2luSW5mbyA9
IHBsdWdpbk1vZHVsZS0+Z2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihtZXRhRGF0YSk7CiAg
ICAgcGx1Z2luTW9kdWxlLT5kZWNyZW1lbnRMb2FkQ291bnQoKTsKKyAgICBpZiAoIWdvdFBsdWdp
bkluZm8pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBm
aWxlID0gb3BlbkZpbGUoZmlsZVBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKCFpc0hhbmRs
ZVZhbGlkKGZpbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXdyaXRlU3Ry
aW5nKGZpbGUsIGRlc2NyaXB0b3JGaWxlU2NoZW1hSUQoKSwgZmlsZVBhdGgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBXcml0ZSBhIHRpbWVzdGFtcCBmb3IgdGhlIHBsdWdpbi4K
KyAgICB0aW1lX3QgbGFzdE1vZGlmaWVkOworICAgIGlmICghZ2V0RmlsZU1vZGlmaWNhdGlvblRp
bWUocGx1Z2luUGF0aCwgbGFzdE1vZGlmaWVkKSB8fCAhd3JpdGVUaW1lc3RhbXAoZmlsZSwgbGFz
dE1vZGlmaWVkLCBmaWxlUGF0aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFdy
aXRlIHRoZSBjdXJyZW50IHRpbWUgYXMgYSB0aW1lc3RhbXAgZm9yIHRoZSBkZXNjcmlwdG9yIGZp
bGUgaXRzZWxmLgorICAgIGlmICghd3JpdGVUaW1lc3RhbXAoZmlsZSwgdGltZSgwKSwgZmlsZVBh
dGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXdyaXRlU3RyaW5nKGZpbGUs
IG1ldGFEYXRhLm5hbWUsIGZpbGVQYXRoKQorICAgICAgICB8fCAhd3JpdGVTdHJpbmcoZmlsZSwg
bWV0YURhdGEuZGVzY3JpcHRpb24sIGZpbGVQYXRoKQorICAgICAgICB8fCAhd3JpdGVTdHJpbmco
ZmlsZSwgbWV0YURhdGEubWltZURlc2NyaXB0aW9uLCBmaWxlUGF0aCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICBjbG9zZUZpbGUoZmlsZSk7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmRldGVy
bWluZVF1aXJrcygpCiB7CiAjaWYgQ1BVKFg4Nl82NCkKLSAgICBQbHVnaW5Nb2R1bGVJbmZvIHBs
dWdpbjsKLSAgICBpZiAoIWdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4ocGx1Z2luKSkKKyAg
ICBSYXdQbHVnaW5NZXRhRGF0YSBtZXRhRGF0YTsKKyAgICBpZiAoIWdldFBsdWdpbkluZm9Gb3JM
b2FkZWRQbHVnaW4obWV0YURhdGEpKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8TWlt
ZUNsYXNzSW5mbz4gbWltZVR5cGVzID0gcGx1Z2luLmluZm8ubWltZXM7CisgICAgVmVjdG9yPE1p
bWVDbGFzc0luZm8+IG1pbWVUeXBlczsKKyAgICBwYXJzZU1JTUVEZXNjcmlwdGlvbihtZXRhRGF0
YS5taW1lRGVzY3JpcHRpb24sIG1pbWVUeXBlcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtaW1lVHlwZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKG1pbWVUeXBlc1tpXS50eXBl
ID09ICJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIpIHsKICAgICAgICAgICAgIG1fcGx1
Z2luUXVpcmtzLmFkZChQbHVnaW5RdWlya3M6Oklnbm9yZVJpZ2h0Q2xpY2tJbldpbmRvd2xlc3NN
b2RlKTsKQEAgLTE4Nyw2ICszNDIsMzMgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6ZGV0
ZXJtaW5lUXVpcmtzKCkKICNlbmRpZgogfQogCitTdHJpbmcgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6
OnBsdWdpbk1ldGFEYXRhQ2FjaGVEaXJlY3RvcnkoKQoreworI2lmIFBMQVRGT1JNKFFUKSB8fCBQ
TEFURk9STShHVEspCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHJlc3VsdCwgKCkp
OworICAgIGlmICghcmVzdWx0LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisg
ICAgU3RyaW5nIGNhY2hlRGlyZWN0b3J5OworI2lmIFBMQVRGT1JNKFFUKQorICAgIFFTdHJpbmcg
ZGF0YUxvY2F0aW9uID0gUVN0YW5kYXJkUGF0aHM6OndyaXRhYmxlTG9jYXRpb24oUVN0YW5kYXJk
UGF0aHM6OkRhdGFMb2NhdGlvbik7CisgICAgaWYgKGRhdGFMb2NhdGlvbi5pc0VtcHR5KCkpCisg
ICAgICAgIGRhdGFMb2NhdGlvbiA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChRRGlyOjpob21l
UGF0aCgpLCBRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlvbk5hbWUoKSk7CisgICAgZGF0YUxv
Y2F0aW9uID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFMb2NhdGlvbiwgIi5RdFdlYktp
dCIpOworICAgIGNhY2hlRGlyZWN0b3J5ID0gZGF0YUxvY2F0aW9uOworI2VsaWYgUExBVEZPUk0o
R1RLKQorICAgIGNhY2hlRGlyZWN0b3J5ID0gZmlsZW5hbWVUb1N0cmluZyhnX2J1aWxkX2ZpbGVu
YW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3ZWJraXRndGsiLCBOVUxMKSk7CisjZW5kaWYK
KworICAgIHJlc3VsdCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZURpcmVjdG9yeSwg
Im5wYXBpX21ldGFkYXRhX2NhY2hlIik7CisgICAgbWFrZUFsbERpcmVjdG9yaWVzKHJlc3VsdCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwCmluZGV4IGIwYWIyZWMxNjUzMmRlOWM2NTk3MmUw
M2NlMTcyOWNjYzc0NTg4MzguLjM4ZTJhN2RkMjNiNTU2ZDA2MzYzMmQyNzliN2Y5MGMwMGViOWNl
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBR
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNw
cApAQCAtNjQsOCArNjQsMTMgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQmIGRzdFBvaW50LAogICAgIHBhaW50ZXIt
PmRyYXdJbWFnZShkc3RQb2ludCwgaW1hZ2UsIFFSZWN0KHNyY1JlY3QpKTsKIH0KIAotdm9pZCBT
aGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgLypjb250ZXh0Ki8sIGZsb2F0
IC8qc2NhbGVGYWN0b3IqLywgY29uc3QgSW50UG9pbnQmIC8qZHN0UG9pbnQqLywgY29uc3QgSW50
UmVjdCYgLypzcmNSZWN0Ki8pCit2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgSW50UG9pbnQmIGRzdFBv
aW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQogeworICAgIGlmIChzY2FsZUZhY3RvciA9PSAx
LjApIHsKKyAgICAgICAgcGFpbnQoY29udGV4dCwgZHN0UG9pbnQsIHNyY1JlY3QpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjQ2NjM+LgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnBy
aQppbmRleCAxYjYzYTI3ZDYzY2I1M2QzMzQwODZkY2JmZjU2ZjI3MzBmNDc2NDFjLi43ZjFjNzIz
OTMzYjI5YjVjYzIwY2Q1ODVmYTk0YWY4ZjBkZTU2OTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTM2Niw2
ICszNjYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5jcHAgXAogICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAgXAogICAg
IFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIFwKKyAgICBQbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAgXAogICAgIFBsdWdpblByb2Nlc3MvcXQv
UGx1Z2luQ29udHJvbGxlclByb3h5UXQuY3BwIFwKICAgICBQbHVnaW5Qcm9jZXNzL3F0L1BsdWdp
blByb2Nlc3NNYWluUXQuY3BwIFwKICAgICBQbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NR
dC5jcHAgXApAQCAtNTA5LDggKzUxMCw4IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NNYW5hZ2VyLmNwcCBcCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2lu
U2l0ZURhdGFNYW5hZ2VyLmNwcCBcCi0gICAgVUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2luUHJv
Y2Vzc1Byb3h5UXQuY3BwIFwKICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9T
dG9yZVVuaXguY3BwIFwKKyAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQ
cm94eVVuaXguY3BwIFwKICAgICBVSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgXAog
ICAgIFVJUHJvY2Vzcy9UaWxlZERyYXdpbmdBcmVhUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3Mv
VmlzaXRlZExpbmtQcm92aWRlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCmluZGV4IDhkYmZiMTEwMWUwZWFkNDk5YTFi
ZTFmNzY0MjJkNjQyODU0OTkyNTguLjRhZmZjZDU5OTI3YWRlOTJmZTI2MThhYjY3ZWM2ZDEwNTg2
OWNjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9j
ZXNzTGF1bmNoZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJv
Y2Vzc0xhdW5jaGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVByb2Nl
c3NJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBQTEFURk9S
TShRVCkKIGNsYXNzIFFMb2NhbFNvY2tldDsKQEAgLTczLDYgKzc0LDggQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIGJvb2wgZ2V0UHJvY2Vzc1R5cGVGcm9tU3RyaW5nKGNvbnN0IGNoYXIqLCBQcm9j
ZXNzVHlwZSYpOwogCisgICAgc3RhdGljIFdURjo6Q1N0cmluZyBwbGF0Zm9ybUV4ZWN1dGFibGVQ
YXRoKFByb2Nlc3NUeXBlKTsKKwogcHJpdmF0ZToKICAgICBQcm9jZXNzTGF1bmNoZXIoQ2xpZW50
KiwgY29uc3QgTGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVy
R3RrLmNwcAppbmRleCBiYmJhZTJlNjgwOTI4NDAyNTVlNmVhYmQ0Y2Y1ZWM1NDBjNGNmMWE4Li5m
ZjdmY2JjMjgwNDYzMDQ4NTIwYTM0ZDBlZTFhOTk5Yjc1OTBlMjcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNo
ZXJHdGsuY3BwCkBAIC03Miw4ICs3MiwxMCBAQCBzdGF0aWMgdm9pZCBjaGlsZEZpbmlzaGVkRnVu
Y3Rpb24oR1BpZCwgZ2ludCBzdGF0dXMsIGdwb2ludGVyIHVzZXJEYXRhKQogICAgIGNsb3NlKEdQ
T0lOVEVSX1RPX0lOVCh1c2VyRGF0YSkpOwogfQogCi1zdGF0aWMgQ1N0cmluZyBmaW5kV2ViS2l0
UHJvY2Vzcyhjb25zdCBjaGFyKiBwcm9jZXNzTmFtZSkKK0NTdHJpbmcgUHJvY2Vzc0xhdW5jaGVy
OjpwbGF0Zm9ybUV4ZWN1dGFibGVQYXRoKFByb2Nlc3NUeXBlIHR5cGUpCiB7CisgICAgY29uc3Qg
Y2hhciogcHJvY2Vzc05hbWUgPSB0eXBlID09IFdlYlByb2Nlc3MgPyBnV2ViS2l0V2ViUHJvY2Vz
c05hbWUgOiBnV2ViS2l0UGx1Z2luUHJvY2Vzc05hbWU7CisKICAgICBjb25zdCBjaGFyKiBleGVj
RGlyZWN0b3J5ID0gZ19nZXRlbnYoIldFQktJVF9FWEVDX1BBVEgiKTsKICAgICBpZiAoZXhlY0Rp
cmVjdG9yeSkgewogICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoZmlsZW5hbWVUb1N0cmluZyhleGVjRGlyZWN0b3J5KSwgcHJvY2Vzc05hbWUpOwpA
QCAtMTExLDEwICsxMTMsMTAgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3Mo
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQ1N0cmluZyBiaW5hcnlQYXRoID0gZmlu
ZFdlYktpdFByb2Nlc3MobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID09IFByb2Nlc3NMYXVu
Y2hlcjo6V2ViUHJvY2VzcyA/IGdXZWJLaXRXZWJQcm9jZXNzTmFtZSA6IGdXZWJLaXRQbHVnaW5Q
cm9jZXNzTmFtZSk7CisgICAgQ1N0cmluZyBiaW5hcnlQYXRoID0gcGxhdGZvcm1FeGVjdXRhYmxl
UGF0aChtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUpOwogICAgIEdPd25QdHI8Z2NoYXI+IHNv
Y2tldChnX3N0cmR1cF9wcmludGYoIiVkIiwgc29ja2V0c1swXSkpOwogICAgIGNoYXIqIGFyZ3Zb
M107Ci0gICAgYXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJpbmFyeVBhdGguZGF0YSgpKTsK
KyAgICBhcmd2WzBdID0gYmluYXJ5UGF0aC5tdXRhYmxlRGF0YSgpOwogICAgIGFyZ3ZbMV0gPSBz
b2NrZXQuZ2V0KCk7CiAgICAgYXJndlsyXSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KaW5k
ZXggMjE1NDVkYTA2NDkyNDczNmExNGNkYTUwZmNkNzBlZjllMWU1MDllYy4uYmJlMGRlZWVmODUz
ZTEzY2NjZGUzM2E2MzkxYmQ1ZDUyMzNhZWVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KQEAg
LTE5MSw0ICsxOTEsMTcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OnBsYXRmb3JtSW52YWxpZGF0
ZSgpCiB7CiB9CiAKK0NTdHJpbmcgUHJvY2Vzc0xhdW5jaGVyOjpwbGF0Zm9ybUV4ZWN1dGFibGVQ
YXRoKFByb2Nlc3NUeXBlIHR5cGUpCit7CisgICAgTlNCdW5kbGUgKndlYktpdDJCdW5kbGUgPSBb
TlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViS2l0MiJdOworCisg
ICAgTlNTdHJpbmcgKnByb2Nlc3NQYXRoOworICAgIGlmICh0eXBlID09IFByb2Nlc3NMYXVuY2hl
cjo6UGx1Z2luUHJvY2VzcykKKyAgICAgICAgcHJvY2Vzc1BhdGggPSBbd2ViS2l0MkJ1bmRsZSBw
YXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZTpAIlBsdWdpblByb2Nlc3MuYXBwIl07CisgICAgZWxz
ZQorICAgICAgICBwcm9jZXNzUGF0aCA9IFt3ZWJLaXQyQnVuZGxlIHBhdGhGb3JBdXhpbGlhcnlF
eGVjdXRhYmxlOkAiV2ViUHJvY2Vzcy5hcHAiXTsKKworICAgIHJldHVybiBbW1tOU0J1bmRsZSBi
dW5kbGVXaXRoUGF0aDpwcm9jZXNzUGF0aF0gZXhlY3V0YWJsZVBhdGhdIGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbl07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5j
cHAKaW5kZXggYjcyNWQ3YjkyNGM2ZjRiNTBkN2UwMzhiOGEyZmE0YmVjMjgxNzE0Yi4uNmQxMGY2
NWI5MDRiNGM1YTNjNjI4ODAzNTM1NmIyY2ZiOGY1MDhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3Bw
CkBAIC0zMiwxMiArMzIsMTQgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8
UUNvcmVBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRRGVidWc+CisjaW5jbHVkZSA8UURpcj4KICNp
bmNsdWRlIDxRRmlsZT4KICNpbmNsdWRlIDxRTG9jYWxTZXJ2ZXI+CiAjaW5jbHVkZSA8UU1ldGFU
eXBlPgogI2luY2x1ZGUgPFFQcm9jZXNzPgogI2luY2x1ZGUgPFFTdHJpbmc+CiAjaW5jbHVkZSA8
UXRDb3JlL3FnbG9iYWwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNs
dWRlIDxmY250bC5oPgpAQCAtMTAzLDExICsxMDUsOCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6
bGF1bmNoUHJvY2VzcygpCiB7CiAgICAgUVN0cmluZyBhcHBsaWNhdGlvblBhdGggPSBRTGF0aW4x
U3RyaW5nKCIlMSAlMiIpOwogCi0gICAgaWYgKFFGaWxlOjpleGlzdHMoUUNvcmVBcHBsaWNhdGlv
bjo6YXBwbGljYXRpb25EaXJQYXRoKCkgKyBRTGF0aW4xU3RyaW5nKCIvUXRXZWJQcm9jZXNzIikp
KSB7Ci0gICAgICAgIGFwcGxpY2F0aW9uUGF0aCA9IGFwcGxpY2F0aW9uUGF0aC5hcmcoUUNvcmVB
cHBsaWNhdGlvbjo6YXBwbGljYXRpb25EaXJQYXRoKCkgKyBRTGF0aW4xU3RyaW5nKCIvUXRXZWJQ
cm9jZXNzIikpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGFwcGxpY2F0aW9uUGF0aCA9IGFwcGxp
Y2F0aW9uUGF0aC5hcmcoUUxhdGluMVN0cmluZygiUXRXZWJQcm9jZXNzIikpOwotICAgIH0KKyAg
ICBDU3RyaW5nIGV4ZWN1dGFibGVQYXRoID0gcGxhdGZvcm1FeGVjdXRhYmxlUGF0aChtX2xhdW5j
aE9wdGlvbnMucHJvY2Vzc1R5cGUpOworICAgIGFwcGxpY2F0aW9uUGF0aCA9IGFwcGxpY2F0aW9u
UGF0aC5hcmcoUUxhdGluMVN0cmluZyhleGVjdXRhYmxlUGF0aC5kYXRhKCkpKTsKIAogI2lmIE9T
KERBUldJTikKICAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgpAQCAtMTkxLDYgKzE5
MCwxOCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIAogfQog
CitDU3RyaW5nIFByb2Nlc3NMYXVuY2hlcjo6cGxhdGZvcm1FeGVjdXRhYmxlUGF0aChQcm9jZXNz
VHlwZSB0eXBlKQoreworICAgIFFMYXRpbjFTdHJpbmcgZXhlY3V0YWJsZU5hbWUgPSB0eXBlID09
IFByb2Nlc3NMYXVuY2hlcjo6V2ViUHJvY2VzcyA/CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIlF0V2ViUHJvY2VzcyIpIDogUUxhdGluMVN0cmluZygi
UXRXZWJQbHVnaW5Qcm9jZXNzIik7CisKKyAgICBRU3RyaW5nIGV4cGVjdGVkUGF0aCA9IFFDb3Jl
QXBwbGljYXRpb246OmFwcGxpY2F0aW9uRGlyUGF0aCgpICsgUURpcjo6c2VwYXJhdG9yKCkgKyBl
eGVjdXRhYmxlTmFtZTsKKyAgICBpZiAoUUZpbGU6OmV4aXN0cyhleHBlY3RlZFBhdGgpKQorICAg
ICAgICByZXR1cm4gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4cGVjdGVkUGF0aCk7CisKKyAg
ICByZXR1cm4gQ1N0cmluZyhleGVjdXRhYmxlTmFtZS5sYXRpbjEoKSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyUXQubW9jIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHku
aAppbmRleCBhNzVkNWIxMzg3Y2Q4YmRhOWRjNTIzMTJkODI2ZjRhYTBiNDY5NjU2Li42ODAwNWYx
NGI1MGViN2MxZTA2M2ZiNzUxNWYwZGI5ODU0YjUxMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaApAQCAtODAsNiAr
ODAsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGNyZWF0ZVByb3BlcnR5TGlzdEZpbGUo
Y29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOwogI2VuZGlmCiAKKyNpZiBQTFVHSU5fQVJDSElURUNU
VVJFKFgxMSkKKyAgICBzdGF0aWMgYm9vbCBjcmVhdGVNZXRhRGF0YURlc2NyaXB0b3JGaWxlKGNv
bnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICBQbHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIq
LCBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlHdGsuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjODU3NzJhMjdmN2I3MDcyYWZmNmExMTM3
YzkyNzQ4ODVhOGY2NDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQ
cm94eUd0ay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKLQotI2lmIEVOQUJMRShQTFVHSU5fUFJP
Q0VTUykKLQotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2Vz
cyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
RU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KaW5kZXggYjA3
MjQxN2ZlYTI4M2Y5MzkyYTU1ZGQ5OWFjMzMwZmU3YWM1MDMwMC4uMTIwMGYxNzBjMTA1MDZmZjk4
MTBmY2VkOWIzN2U0YTFhMmM1ZTJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCkBAIC0z
MCw2ICszMCw3IEBACiAKICNpbXBvcnQgIkVudmlyb25tZW50VmFyaWFibGVzLmgiCiAjaW1wb3J0
ICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJQcm9jZXNzTGF1
bmNoZXIuaCIKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxzcGF3bi5oPgpAQCAtNzAsOSArNzEsOCBAQCBi
b29sIFBsdWdpblByb2Nlc3NQcm94eTo6Y3JlYXRlUHJvcGVydHlMaXN0RmlsZShjb25zdCBQbHVn
aW5Nb2R1bGVJbmZvJiBwbHVnaW4pCiAgICAgTlNCdW5kbGUgKndlYktpdDJCdW5kbGUgPSBbTlNC
dW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViS2l0MiJdOwogICAgIE5T
U3RyaW5nICpmcmFtZXdvcmtzUGF0aCA9IFtbd2ViS2l0MkJ1bmRsZSBidW5kbGVQYXRoXSBzdHJp
bmdCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdOwogICAgIGNvbnN0IGNoYXIqIGZyYW1ld29y
a0V4ZWN1dGFibGVQYXRoID0gW1t3ZWJLaXQyQnVuZGxlIGV4ZWN1dGFibGVQYXRoXSBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb25dOwotICAgIAotICAgIE5TU3RyaW5nICpwcm9jZXNzUGF0aCA9IFt3
ZWJLaXQyQnVuZGxlIHBhdGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlOkAiUGx1Z2luUHJvY2Vzcy5h
cHAiXTsKLSAgICBOU1N0cmluZyAqcHJvY2Vzc0FwcEV4ZWN1dGFibGVQYXRoID0gW1tOU0J1bmRs
ZSBidW5kbGVXaXRoUGF0aDpwcm9jZXNzUGF0aF0gZXhlY3V0YWJsZVBhdGhdOworCisgICAgQ1N0
cmluZyBwcm9jZXNzQXBwRXhlY3V0YWJsZVBhdGggPSBQcm9jZXNzTGF1bmNoZXI6OnBsYXRmb3Jt
RXhlY3V0YWJsZVBhdGgoUHJvY2Vzc0xhdW5jaGVyOjpQbHVnaW5Qcm9jZXNzKTsKIAogICAgIENT
dHJpbmcgcGx1Z2luUGF0aFN0cmluZyA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwbHVnaW4u
cGF0aCk7CiAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0
ZVByb3BlcnR5TGlzdEZpbGUoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQogICAgIGlm
ICghW2ZyYW1ld29ya3NQYXRoIGhhc1ByZWZpeDpAIi9TeXN0ZW0vIl0pCiAgICAgICAgIGVudmly
b25tZW50VmFyaWFibGVzLmFwcGVuZFZhbHVlKCJEWUxEX0ZSQU1FV09SS19QQVRIIiwgW2ZyYW1l
d29ya3NQYXRoIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0sICc6Jyk7CiAKLSAgICBjb25zdCBj
aGFyKiBhcmdzW10gPSB7IFtwcm9jZXNzQXBwRXhlY3V0YWJsZVBhdGggZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uXSwgZnJhbWV3b3JrRXhlY3V0YWJsZVBhdGgsICItdHlwZSIsICJwbHVnaW5wcm9j
ZXNzIiwgIi1jcmVhdGVQbHVnaW5NSU1FVHlwZXNQcmVmZXJlbmNlcyIsIHBsdWdpblBhdGhTdHJp
bmcuZGF0YSgpLCAwIH07CisgICAgY29uc3QgY2hhciogYXJnc1tdID0geyBwcm9jZXNzQXBwRXhl
Y3V0YWJsZVBhdGguZGF0YSgpLCBmcmFtZXdvcmtFeGVjdXRhYmxlUGF0aCwgIi10eXBlIiwgInBs
dWdpbnByb2Nlc3MiLCAiLWNyZWF0ZVBsdWdpbk1JTUVUeXBlc1ByZWZlcmVuY2VzIiwgcGx1Z2lu
UGF0aFN0cmluZy5kYXRhKCksIDAgfTsKIAogICAgIHBpZF90IHBpZDsKICAgICBpbnQgcmVzdWx0
ID0gcG9zaXhfc3Bhd24oJnBpZCwgYXJnc1swXSwgMCwgJmF0dHIsIGNvbnN0X2Nhc3Q8Y2hhciog
Y29uc3QqPihhcmdzKSwgZW52aXJvbm1lbnRWYXJpYWJsZXMuZW52aXJvbm1lbnRQb2ludGVyKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2lu
UHJvY2Vzc1Byb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvcXQv
UGx1Z2luUHJvY2Vzc1Byb3h5UXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
YzUyMWUwYWY5YTZhMDc0NGMyZGMwZTA2ZjY1MTRmYzk0YjM0OWY4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL3F0L1BsdWdpblByb2Nlc3NQcm94eVF0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGx1
Z2luUHJvY2Vzc1Byb3h5LmgiCi0KLSNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi0KLSNpbmNs
dWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBQbHVnaW5Q
cm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5f
UFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3Vu
aXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2NTNh
NGJkNGUzYzUyZTNjMTJjYjk0ZmQzMWYyMDlhMGMxZmVlNzMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVu
aXguY3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBVbml2ZXJz
aXR5IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5oIgorCisjaWYgRU5BQkxF
KFBMVUdJTl9QUk9DRVNTKQorCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oIgorI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Tm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHNpZ25hbC5o
PgorI2luY2x1ZGUgPHNwYXduLmg+CisjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyNpbmNsdWRlIDx0
aW1lLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRm
b3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKK3sKK30KKworYm9vbCBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZU1l
dGFEYXRhRGVzY3JpcHRvckZpbGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQoreworICAgIENTdHJpbmcgZXhlY3V0YWJsZVBhdGggPSBQcm9jZXNzTGF1
bmNoZXI6OnBsYXRmb3JtRXhlY3V0YWJsZVBhdGgoUHJvY2Vzc0xhdW5jaGVyOjpQbHVnaW5Qcm9j
ZXNzKTsKKyAgICBjaGFyIG9wdGlvbltdID0gIi1jcmVhdGVNZXRhRGF0YURlc2NyaXB0aW9uIjsK
KyAgICBDU3RyaW5nIHBsdWdpblBhdGhBU0NJSSA9IHBsdWdpblBhdGguYXNjaWkoKTsKKyAgICBD
U3RyaW5nIGZpbGVQYXRoQVNDSUkgPSBmaWxlUGF0aC5hc2NpaSgpOworICAgIGNoYXIqIGFyZ3Nb
XSA9IHsKKyAgICAgICAgZXhlY3V0YWJsZVBhdGgubXV0YWJsZURhdGEoKSwKKyAgICAgICAgb3B0
aW9uLAorICAgICAgICBwbHVnaW5QYXRoQVNDSUkubXV0YWJsZURhdGEoKSwKKyAgICAgICAgZmls
ZVBhdGhBU0NJSS5tdXRhYmxlRGF0YSgpLAorICAgICAgICAwCisgICAgfTsKKworICAgIHBpZF90
IHBpZDsKKyAgICBpZiAocG9zaXhfc3Bhd24oJnBpZCwgYXJnc1swXSwgMCwgMCwgYXJncywgOjpl
bnZpcm9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gV2FpdCBhdCBtb3N0IDMg
c2Vjb25kcyBmb3IgdGhlIGNoaWxkLiBUaGlzIGlzIGFuIGVtcGlyaWNhbCBsaW1pdC4KKyAgICAv
LyBVbmZvcnR1bmF0ZWx5IHNvbWUgcGx1Z2lucyAobW9zdGx5IHRoZSBuc3BsdWdpbndyYXBwZXIg
YmFzZWQgb25lcykKKyAgICAvLyBuZWVkIHJlYWxseSBsb25nIHRpbWUgdG8gc2V0IHVwLgorICAg
IGludCBjaGlsZFN0YXR1czsKKyAgICB1bnNpZ25lZCByZXRyeUNvdW50ID0gMDsKKyAgICBjb25z
dCB1bnNpZ25lZCBtYXhXYWl0VGltZU1TID0gMzAwMDsKKyAgICBjb25zdCB1bnNpZ25lZCBzbGVl
cFRpbWVNUyA9IDUwOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGludCB3YWl0UmVzdWx0
OworICAgICAgICB3aGlsZSAoKHdhaXRSZXN1bHQgPSB3YWl0cGlkKHBpZCwgJmNoaWxkU3RhdHVz
LCBXTk9IQU5HKSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQorICAgICAgICBBU1NFUlQo
d2FpdFJlc3VsdCAhPSAtMSk7CisgICAgICAgIGlmICh3YWl0UmVzdWx0KSB7CisgICAgICAgICAg
ICBBU1NFUlQod2FpdFJlc3VsdCA9PSBwaWQpOworICAgICAgICAgICAgLy8gU3VjY2Vzcy4KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJldHJ5Q291bnQrKyA+
PSBtYXhXYWl0VGltZU1TIC8gc2xlZXBUaW1lTVMpIHsKKyAgICAgICAgICAgIGtpbGwocGlkLCBT
SUdLSUxMKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAg
IHRpbWVzcGVjIHNsZWVwVGltZSA9IHsgMCwgc2xlZXBUaW1lTVMgKiAxZSs2IH07CisgICAgICAg
IGludCBzbGVlcFJlc3VsdDsKKyAgICAgICAgd2hpbGUgKChzbGVlcFJlc3VsdCA9IG5hbm9zbGVl
cCgmc2xlZXBUaW1lLCAmc2xlZXBUaW1lKSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQor
ICAgICAgICBBU1NFUlQoIXNsZWVwUmVzdWx0KTsKKyAgICB9CisKKyAgICBpZiAoIVdJRkVYSVRF
RChjaGlsZFN0YXR1cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoV0VYSVRTVEFU
VVMoY2hpbGRTdGF0dXMpICE9IEVYSVRfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5j
cy5jcHAKaW5kZXggYThhODA2ZTAxOWFlNDZjZmMwYTU5MGFkZjUxMjcxNmVkYzQzNWYxYy4uYzA2
NjAyMjU5MzkwOTE3OGUzYjcyYjM5ODYwZDM4N2Q0YjQ0NTljZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVCcm93c2VyRnVuY3MuY3BwCkBAIC01MjgsMjUgKzUyOCwxMCBAQCBzdGF0aWMgTlBFcnJv
ciBOUE5fR2V0VmFsdWUoTlBQIG5wcCwgTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVl
KQogICAgICAgIGNhc2UgTlBOVlN1cHBvcnRzV2luZG93bGVzczoKICAgICAgICAgICAgKnN0YXRp
Y19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IHRydWU7CiAgICAgICAgICAgIGJyZWFrOwotCiAgICAg
ICAgY2FzZSBOUE5WVG9vbGtpdDogewotI2lmIFBMQVRGT1JNKEdUSykKLSAgICAgICAgICAgKnJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZSkgPSAyOwotI2Vsc2UKLSAgICAgICAgICAg
Y29uc3QgdWludDMyX3QgZXhwZWN0ZWRHVEtUb29sS2l0VmVyc2lvbiA9IDI7Ci0KLSAgICAgICAg
ICAgLy8gU2V0IHRoZSBleHBlY3RlZCBHVEsgdmVyc2lvbiBpZiB3ZSBrbm93IHRoYXQgdGhpcyBw
bHVnaW4gbmVlZHMgaXQgb3IgaWYgdGhlIHBsdWdpbiBjYWxsIHVzCi0gICAgICAgICAgIC8vIHdp
dGggYSBudWxsIGluc3RhbmNlLiBUaGUgbGF0dGVyIGlzIHRoZSBjYXNlIHdpdGggTlNQbHVnaW5X
cmFwcGVyIHBsdWdpbnMuCi0gICAgICAgICAgIGJvb2wgcmVxdWlyZXNHVEtUb29sS2l0VmVyc2lv
bjsKLSAgICAgICAgICAgaWYgKCFucHApCi0gICAgICAgICAgICAgICByZXF1aXJlc0dUS1Rvb2xL
aXRWZXJzaW9uID0gdHJ1ZTsKLSAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICBSZWZQ
dHI8TmV0c2NhcGVQbHVnaW4+IHBsdWdpbiA9IE5ldHNjYXBlUGx1Z2luOjpmcm9tTlBQKG5wcCk7
Ci0gICAgICAgICAgICAgICByZXF1aXJlc0dUS1Rvb2xLaXRWZXJzaW9uID0gcGx1Z2luLT5xdWly
a3MoKS5jb250YWlucyhQbHVnaW5RdWlya3M6OlJlcXVpcmVzR1RLVG9vbEtpdCk7Ci0gICAgICAg
ICAgIH0KLQotICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHZhbHVlKSA9
IHJlcXVpcmVzR1RLVG9vbEtpdFZlcnNpb24gPyBleHBlY3RlZEdUS1Rvb2xLaXRWZXJzaW9uIDog
MDsKLSNlbmRpZgorICAgICAgICAgICAvLyBHdGsgYmFzZWQgcGx1Z2lucyBuZWVkIHRvIGJlIGFz
c3VyZWQgYWJvdXQgdGhlIHRvb2xraXQgdmVyc2lvbi4KKyAgICAgICAgICAgY29uc3QgdWludDMy
X3QgZXhwZWN0ZWRHdGtUb29sS2l0VmVyc2lvbiA9IDI7CisgICAgICAgICAgICpyZWludGVycHJl
dF9jYXN0PHVpbnQzMl90Kj4odmFsdWUpID0gZXhwZWN0ZWRHdGtUb29sS2l0VmVyc2lvbjsKICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDg0
NTQxODIwYzg2MDRjOWU1OGFmMWM3MWY4ZDc5YmE4ZDllODI4N2EuLmJlZmFjZDJlMjk0YjRiM2Uw
YjE5NzY2M2U5ZTA3Mjc1ODA5NDljMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0zNDQs
NiArMzQ0LDcgQEAgcHJpdmF0ZToKIAogcHVibGljOiAvLyBOZWVkIHRvIGNhbGwgaXQgaW4gdGhl
IE5QTl9HZXRWYWx1ZSBicm93c2VyIGNhbGxiYWNrLgogICAgIHN0YXRpYyBEaXNwbGF5KiB4MTFI
b3N0RGlzcGxheSgpOworCiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L3F0L1BsdWdpbk1haW5RdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9xdC9QbHVnaW5NYWluUXQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjY5Mzc2YTAwMWNhM2I5OGMyZjgxMzQzMDA0NWZiOGM2MjYzODhhMjAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9xdC9QbHVnaW5NYWluUXQuY3BwCkBAIC0w
LDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIFVuaXZlcnNpdHkgb2YgU3plZ2Vk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpbmNsdWRlIDxRTGlicmFyeT4KKyNpbmNsdWRlIDxRdEdsb2JhbD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CitRX0RFQ0xfSU1QT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpbihpbnQgYXJnYywgY2hh
cioqIGFyZ3YpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAg
Ly8gV29ya2Fyb3VuZCB0aGUgaXNzdWUgdGhhdCBzb21lIHZlcnNpb25zIG9mIGZsYXNoIGRvZXMg
bm90IGluaXRpYWxpemUgR3RrIHByb3Blcmx5LgorICAgIFFMaWJyYXJ5IGd0a0xpYnJhcnkoUUxh
dGluMVN0cmluZygibGliZ3RrLXgxMS0yLjAiKSwgMCk7CisgICAgaWYgKCFndGtMaWJyYXJ5Lmxv
YWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgdHlwZWRlZiB2b2lkKiAoKmd0a19pbml0X3B0
cikodm9pZCosIHZvaWQqKTsKKyAgICBndGtfaW5pdF9wdHIgZ3RrSW5pdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Z3RrX2luaXRfcHRyPihndGtMaWJyYXJ5LnJlc29sdmUoImd0a19pbml0IikpOworICAg
IGlmICghZ3RrSW5pdCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgZ3RrSW5pdCgwLCAwKTsKKwor
ICAgIHJldHVybiBXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluKGFyZ2MsIGFyZ3YpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL3F0d2Via2l0LWV4cG9ydC5tYXAgYi9Tb3VyY2UvcXR3ZWJraXQtZXhw
b3J0Lm1hcAppbmRleCBhNTQ2Y2IyZmZlNDliNWM2OGE5MGM2OWE1MDZmOWZiODQxOTk2ZDNiLi4x
YWMyZjNmNTZlZTAwNmMyNWEzMTYxNDBiMzg5N2NjMjYyMDFiNWIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvcXR3ZWJraXQtZXhwb3J0Lm1hcAorKysgYi9Tb3VyY2UvcXR3ZWJraXQtZXhwb3J0Lm1hcApA
QCAtOTYsNiArOTYsNyBAQCBxd2tfMS4wIHsKIAogICAgICAgICAjIFdlYktpdCAyIEhlbHBlcnMK
ICAgICAgICAgV2ViS2l0OjpXZWJQcm9jZXNzTWFpblF0KjsKKyAgICAgICAgV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzTWFpbio7CiAgICAgICAgIFdURjo6ZmFzdE1hbGxvYyo7CiAgICAgICAgIFdURjo6
ZmFzdEZyZWUqOwogICAgICAgICBXVEY6OmZhc3RaZXJvZWRNYWxsb2MqOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ0MThlMzM1ZmQzMDhkMzg4
OTU3ZGUxNDM4ZjAyMDY3OTA4OTdlODEuLjBkNDUwNzdmNmFmMDU2NzI1OWU0MzdhMTY5YjMyZTcy
OGE5NzNkOTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMi0wNSAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpz
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIFNldCB1cCBwbHVnaW4gcHJvY2VzcyBv
biBVbml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MjEyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
ZW5hYmxlIHBsdWdpbnMuIFRoZXkgc2hvdWxkIG5vdCBiZSBhIHNvdXJjZQorICAgICAgICBvZiBw
cm9ibGVtcyBub3cgdGhhdCB3ZSBoYXZlIGEgd2F5IG9mIHJ1bm5pbmcKKyAgICAgICAgdGhlbSBv
dXQtb2YtcHJvY2Vzcy4KKworICAgICAgICAqIHFtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVy
ZXMucHJmOgorCiAyMDExLTEyLTAxICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBUZWFjaCBjaGVjay13ZWJraXQtc3R5bGUgaG93IHRvIGNoZWNrIHRoZSBzeW50YXgg
b2YgSlNPTiBmaWxlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9m
ZWF0dXJlcy5wcmYgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgpp
bmRleCA3ODVjZmU4MmYwZGM2MGE2MWZjZDRiMjhmNGJmZDYxNWM1NjNiNWRhLi4zNzRiZDM4NTMx
NGRhMWRlMzUzYjliMDAxODg2Nzc4YTNmNzQ3MTJkIDEwMDY0NAotLS0gYS9Ub29scy9xbWFrZS9t
a3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgorKysgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2Zl
YXR1cmVzL2ZlYXR1cmVzLnByZgpAQCAtMTAxLDEzICsxMDEsMTIgQEAgaXNFbXB0eShIQVZFX1FS
QVdGT05UKSB7CiB9CiAKICMgTmV0c2NhcGUgcGx1Z2lucyBzdXBwb3J0IGZvciBXZWJLaXQyCi0h
bm9fd2Via2l0MjohY29udGFpbnMoREVGSU5FUywgUExVR0lOX0FSQ0hJVEVDVFVSRV9VTlNVUFBP
UlRFRCk6IHsKLSAgICAjIERpc2FibGUgeGxpYiBwbHVnaW5zIHdoaWxlIHRoZXkncmUgaW4tcHJv
Y2VzcywgYmVjYXVzZSB0aGV5IGNyYXNoCi0gICAgIyBhcyBzb29uIGFzIGFuIGluc3RhbGxlZCBu
cGFwaSBwbHVnaW4gdXNlcyBRdCA0LgotICAgIGZhbHNlOmNvbnRhaW5zKFFUX0NPTkZJRywgeGNi
LXhsaWIpIHsKKyFub193ZWJraXQyOiFjb250YWlucyhERUZJTkVTLCBQTFVHSU5fQVJDSElURUNU
VVJFX1VOU1VQUE9SVEVEKSB7CisgICAgY29udGFpbnMoUVRfQ09ORklHLCB4Y2IteGxpYikgewog
ICAgICAgICBDT05GSUcgKz0gcGx1Z2luX2JhY2tlbmRfeGxpYgogICAgICAgICBERUZJTkVTICs9
IFBMVUdJTl9BUkNISVRFQ1RVUkVfWDExPTEgXAogICAgICAgICAgICAgICAgICAgIFBMVUdJTl9B
UkNISVRFQ1RVUkVfVU5TVVBQT1JURUQ9MAorICAgICAgICBERUZJTkVTICs9IEVOQUJMRV9QTFVH
SU5fUFJPQ0VTUz0xCiAgICAgfSBlbHNlIHsKICAgICAgICAgREVGSU5FUyArPSBQTFVHSU5fQVJD
SElURUNUVVJFX1VOU1VQUE9SVEVEPTEKICAgICB9CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9D
aGFuZ2VMb2cKaW5kZXggYjVmMzE0NmE1NzY5MTNlMWY0ZTNlZDhmYzdjYTU1OGI1MjgyNjFlZC4u
MzQ3YjgwMmRjOGY3M2FiYWU1OTRjZDQzNzM1NTZhMjA2MmZiOTc2ZCAxMDA2NDQKLS0tIGEvQ2hh
bmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTEyLTA1ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdW1dLMl0gU2V0
IHVwIHBsdWdpbiBwcm9jZXNzIG9uIFVuaXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcyMTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvUXRXZWJLaXQucHJvOgorICAgICAgICAqIFNvdXJj
ZS9xdHdlYmtpdC1leHBvcnQubWFwOgorCiAyMDExLTEyLTAyICBBbGVqYW5kcm8gRy4gQ2FzdHJv
ICA8YWxleEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEZpeCBUZXh0dXJlTWFwcGVyQ2Fp
cm8gY29tcGlsYXRpb24K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119415</attachid>
            <date>2011-12-15 06:05:09 -0800</date>
            <delta_ts>2012-01-12 05:05:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72121-20111215150507.patch</filename>
            <type>text/plain</type>
            <size>60462</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyOTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzk3ZDRlODIyMmQ2YTky
ZTA3NWFkYTM2YWYwZDAxMjA0NDM1NzEzMi4uNDY5ZmE1OGNmMDA0ZGNhYTE5NDRiMmY3YjkzMTZh
YzBhNDFjZTcxNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTEyLTE1ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdW1dLMl0gU2V0
IHVwIHBsdWdpbiBwcm9jZXNzIG9uIFVuaXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcyMTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkgc28gbm8gbmV3IHRl
c3RzLgorCisgICAgICAgICogcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6IEFkZGVkIG1pc3NpbmcgaW1wbGVt
ZW50YXRpb24uCisKIDIwMTEtMTItMTUgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXggYWZ0ZXIgcjEwMjkwNiAo
cG9vciBtZXJnZSkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDI4M2ViZmE3N2ZjOGVhZDNjZDE1ODcyMDc3MDFm
Zjg4MTI4NzJiYi4uYTFlMGNhNjJjZjFlOThjYmY4YjQzN2Q1NGJkYTNjMmFjMWQ1YTQwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxMS0xMi0xNSAgQmFsYXpzIEtlbGVtZW4gIDxr
YmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIFNldCB1cCBwbHVnaW4gcHJv
Y2VzcyBvbiBVbml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MjEyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNldHVwIHBsdWdpbiBwcm9jZXNzIGZvciBRdCBhbmQgbW92ZSB0aGUgdGFzayBvZiBxdWVy
eWluZyB0aGUgcGx1Z2lucworICAgICAgICB0byB0aGlzIHByb2Nlc3MgaW4gb3JkZXIgdG8gYXZv
aWQgY3Jhc2hlcyBkdWUgdG8gcGx1Z2luIGJ1Z3Mgb3IgbGlicmFyeQorICAgICAgICBpbmNvbXBh
dGliaWxpdHkuIFRoZSBhcHByb2FjaCBvZiBxdWVyeWluZyB0aGUgcGx1Z2lucyBpcyBub3cgaW4g
cGFpcgorICAgICAgICB3aXRoIHRoZSBNYWMgcG9ydDogdGhlIHBsdWdpbiBwcm9jZXNzIHdyaXRl
cyBpdCB0byBhIGZpbGUgd2hpY2ggaXMgcmVhZAorICAgICAgICBvbiB0aGUgVUkgc2lkZS4gVGhl
IGZpbGUgYWxzbyBzZXJ2ZXMgYXMgYSBwZXJzaXN0ZW50IGNhY2hlLiBUaGlzIHdheQorICAgICAg
ICB0aGlzIHBhdGNoIGFsc28gaW1wbGVtZW50cyB3aGF0IHdlIGNhbGwgTkVUU0NBUEVfUExVR0lO
X01FVEFEQVRBX0NBQ0hFCisgICAgICAgIGluIFdlYkNvcmUgaW4gYSBzbGlnaHRseSBkaWZmZXJl
bnQgd2F5LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogUGx1Z2luUHJv
Y2Vzcy5wcm86IEFkZGVkLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJv
Y2Vzc01haW5HdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFpbkd0ayk6
CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6bWVzc2FnZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm9jZXNzTWFpbik6CisgICAgICAgIENyZWF0ZSBtZXRhIGRhdGEgZGVzY3JpcHRpb24gZmlsZSBp
ZiBsYXVuY2hlZCB3aXRoCisgICAgICAgIC1jcmVhdGVNZXRhRGF0YURlc2NyaXB0aW9uIGNvbW1h
bmQgbGluZSBhcmd1bWVudC4KKworICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luTW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5N
b2R1bGU6OnRyeUxvYWQpOgorICAgICAgICBHZXQgcmlkIG9mIHRoZSBHdGsgaW5pdGlhbGl6YXRp
b24gaGFjay4gV2UgZG8gbm90IG5lYWQgaXQgaGVyZSBhbnltb3JlLgorCisgICAgICAgICogU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaDoKKyAgICAgICAgKiBT
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpwYXJzZU1JTUVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKToKKyAg
ICAgICAgKFdlYktpdDo6cmVhZE5leHRVVEY4U3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6cmVh
ZE5leHRUaW1lc3RhbXApOgorICAgICAgICAoV2ViS2l0OjpkZXNjcmlwdG9yRmlsZVNjaGVtYUlE
KToKKyAgICAgICAgKFdlYktpdDo6cmVhZFBsdWdpbk1ldGFEYXRhRnJvbURlc2NyaXB0b3JGaWxl
KToKKyAgICAgICAgKFdlYktpdDo6bWV0YURhdGFEZXNjcmlwdG9yRmlsZVBhdGgpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mbyk6CisgICAgICAg
IChXZWJLaXQ6OndyaXRlVGltZXN0YW1wKToKKyAgICAgICAgKFdlYktpdDo6d3JpdGVTdHJpbmcp
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Y3JlYXRlUGx1Z2luTWV0
YURhdGFEZXNjcmlwdG9yRmlsZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9k
dWxlOjpkZXRlcm1pbmVRdWlya3MpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1v
ZHVsZTo6cGx1Z2luTWV0YURhdGFDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHNjYXBlUGx1Z2luTW9kdWxlOjp2YWxpZGF0ZVBlcnNpc3RlbnRNZXRhRGF0YUNhY2hlKToKKyAg
ICAgICAgQWRkZWQgdGhlIGxvZ2ljIHRvIHdyaXRlIG91dCBwbHVnaW4gbWV0YSBkYXRhIGludG8g
YSBmaWxlIGFuZCByZWFkIGl0CisgICAgICAgIGZyb20gdGhlcmUuIFNpbWlsYXIgaG93IGl0IGlz
IGltcGxlbWVudGVkIGluIFdlYkNvcmUgd2l0aCBhIGJpdCBtb3JlCisgICAgICAgIGNoZWNrcyBm
b3IgZGF0YSBjb3JydXB0aW9uLgorCisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvUGx1Z2luUGF0
aEhhc2hTZXQuaDogQWRkZWQuCisgICAgICAgIEEgaGFzaCBzZXQgc3RvcmluZyBwbHVnaW4gcGF0
aHMuIEZhY3RvcmVkIG91dCBmcm9tIFBsdWdpbkluZm9TdG9yZS5jcHAuCisgICAgICAgIChOb3Rl
IHRoYXQgZ2l0IGRpZmYgd3JvbmdseSBub3RpY2UgaXQgYXMgYSByZW5hbWVkIGZpbGUuKQorCisg
ICAgICAgICogU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpwYWludCk6CisgICAgICAgIEFkZGVkIGltcGxlbWVudGF0aW9u
IGZvciB0aGUgb3ZlcnJpZGUgd2l0aCB0aGUgc2NhbGUgZmFjdG9yIGJlY2F1c2UKKyAgICAgICAg
aXQgaXMgY2FsbGVkIGZyb20gUGx1Z2luUHJveHkuIEl0IGRvZXMgbm90IGFjdHVhbGx5IGhhbmRs
ZSB0aGUgY2FzZQorICAgICAgICB3aGVuIHRoZSBzY2FsZSBmYWN0b3IgaXMgbm90IDEgYmVjYXVz
ZSBpdCBjYW4gb25seSBoYXBwZW4gb24gTWFjIGN1cnJlbnRseS4KKworICAgICAgICAqIFRhcmdl
dC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpwbGF0Zm9ybUV4ZWN1dGFibGVQYXRo
KToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpwbGF0Zm9ybUV4ZWN1dGFibGVQYXRoKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OnBsYXRmb3JtRXhlY3V0YWJsZVBhdGgpOgorICAg
ICAgICBGYWN0b3JlZCB0aGUgZXhlY3V0YWJsZSBwYXRoIGRldGVybWluYXRpb24gaW50byBhIHN0
YXRpYyBtZXRob2QKKyAgICAgICAgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4gV2UgY2FuIHVz
ZSBpdCB3aGVuIGxhdW5jaGluZyB0aGUKKyAgICAgICAgcGx1Z2luIHByb2Nlc3MgZm9yIGNyZWF0
aW5nIHRoZSBkZXNjcmlwdG9yIGZpbGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5JbmZvU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5JbmZvU3RvcmU6Omxv
YWRQbHVnaW5zSWZOZWNlc3NhcnkpOgorCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdp
blByb2Nlc3NQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5
OjpjcmVhdGVQcm9wZXJ0eUxpc3RGaWxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91
bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGVNZXRhRGF0YURlc2NyaXB0
b3JGaWxlKToKKyAgICAgICAgTGF1bmNoaW5nIHRoZSBwbHVnaW4gcHJvY2VzcyB3aXRoIHRoZSAt
Y3JlYXRlTWV0YURhdGFEZXNjcmlwdGlvbgorICAgICAgICBhcmd1bWVudC4gSW1wbGVtZW50ZWQg
aW4gYSB3YXkgdG8gbm90IGJsb2NrIGZvcmV2ZXIgaWYgdGhlIHBsdWdpbgorICAgICAgICBwcm9j
ZXNzIGhhbmdzICh3aGljaCBkaWQgbm90IGhhcHBlbiBpbiBteSBlbnZpcm9ubWVudCBidXQgaXQn
cyBiZXR0ZXIKKyAgICAgICAgdG8gYmUgcGVzc2ltaXN0aWMpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eVF0LmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgTm8gbmVlZCBmb3IgYSBHdGsvUXQgdmVyc2lvbiBvZiB0aGlzLCBpbnN0
ZWFkIGNyZWF0ZWQgYSBjb21tb24KKyAgICAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2Vy
RnVuY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUE5fR2V0VmFsdWUpOgorICAgICAgICBDaGFu
Z2VkIGFjY29yZGluZyB0byB0aGUgcmVtb3ZlIG9mIHRoZSBmbGFzaCBoYWNrLiBEbyBub3QgdHJ5
CisgICAgICAgIHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBwbHVnaW4gbmVlZHMgR3RrIGJ5IGl0J3Mg
bmFtZSBidXQgaW5zdGVhZAorICAgICAgICBhbHdheXMgZ2V0IGJhY2sgdGhlIGV4cGVjdGVkIEd0
ayB2ZXJzaW9uICgyKS4gT25seSBHdGsgcGx1Z2lucworICAgICAgICBzaG91bGQgYXNrIGZvciB0
aGlzIGFueXdheS4KKyAgICAgICAgKiBxdC9QbHVnaW5NYWluUXQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKG1haW4pOgorICAgICAgICBFbnRyeSBwb2ludCBmb3IgdGhlIHBsdWdpbiBwcm9jZXNzLgor
ICAgICAgICAoTm90ZSB0aGF0IGdpdCBkaWZmIHdyb25nbHkgbm90aWNlIGl0IGFzIGEgcmVuYW1l
ZCBmaWxlLikKKwogMjAxMS0xMi0xNSAgQWxleGFuZGVyIEbDpnLDuHkgIDxhaGZAMHg5MC5kaz4K
IAogICAgICAgICBbUXRdIHIxMDI4NDkgYnJva2UgdGhlIFF0IGJ1aWxkIG9uIE1hYyBPUyBYLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1F0V2ViS2l0LnBybyBiL1NvdXJjZS9RdFdlYktpdC5wcm8KaW5k
ZXggMDJmYzllMWM3ZWJlMWY3MzE5ZDA5ZDEyMTVlMjA5ODk5YjQ1MWE3NC4uYmJiZmM0MWU2ODE3
YjdjMGQ1YmQ1ZTEzZWM5ZDNjZmQ0NzliYTFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1F0V2ViS2l0
LnBybworKysgYi9Tb3VyY2UvUXRXZWJLaXQucHJvCkBAIC00LDYgKzQsOCBAQAogIyBTZWUgJ1Rv
b2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBzeXN0ZW0KICMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCitsb2FkKGZlYXR1cmVzKQorCiBURU1QTEFURSA9IHN1YmRpcnMKIENPTkZJ
RyArPSBvcmRlcmVkCiAKQEAgLTEzLDYgKzE1LDEwIEBAIFNVQkRJUlMgKz0gYXBpCiAhbm9fd2Vi
a2l0MiB7CiAgICAgd2VicHJvY2Vzcy5maWxlID0gV2ViS2l0Mi9XZWJQcm9jZXNzLnBybwogICAg
IFNVQkRJUlMgKz0gd2VicHJvY2VzcworICAgIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9QTFVH
SU5fUFJPQ0VTUz0xKSB7CisgICAgICAgIHBsdWdpbnByb2Nlc3MuZmlsZSA9IFdlYktpdDIvUGx1
Z2luUHJvY2Vzcy5wcm8KKyAgICAgICAgU1VCRElSUyArPSBwbHVnaW5wcm9jZXNzCisgICAgfQog
fQogCiBpbmNsdWRlKFdlYktpdC9xdC9kb2NzL2RvY3MucHJpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAKaW5kZXggMzI2NDRkMTc4YmJkNmUyYzllMGViYTNl
ZTE0YzU0MzhmMmM3NGIxZC4uN2FiZmUyZmQ1ODFkNjQ3YjgwZTNhN2EwY2UzODhmZTVlZjRiMTY0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwCkBAIC0y
MTgsNiArMjE4LDEyIEBAIGJvb2wgdW5sb2FkTW9kdWxlKFBsYXRmb3JtTW9kdWxlIG1vZHVsZSkK
ICNlbmRpZgogfQogCitDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJp
bmcmIHBhdGgpCit7CisgICAgUUJ5dGVBcnJheSBlbmNvZGVkID0gUUZpbGU6OmVuY29kZU5hbWUo
c3RhdGljX2Nhc3Q8UVN0cmluZz4ocGF0aCkpOworICAgIHJldHVybiBDU3RyaW5nKGVuY29kZWQu
Y29uc3REYXRhKCksIGVuY29kZWQubGVuZ3RoKCkpOworfQorCiB9CiAKIC8vIHZpbTogdHM9NCBz
dz00IGV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGY2NmNmZGQ0ZWQxMjk1MDNlNTI1Y2MzMDM4
ZWNhODE5ZjliMzYzNDcuLmEyOGJmMzAzMDUzNjFlNjA1YWQyODIyYWQzNTc5MTg3NzVmOTRiZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC02MDcsOCArNjA3LDggQEAgbGlid2Via2l0Mmd0a19A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
UHJveHkuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luU2l0
ZURhdGFNYW5hZ2VyLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1dlYlBs
dWdpblNpdGVEYXRhTWFuYWdlci5jcHAgXAotCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwIFwKKwlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc01vZGVsLmggXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcCBcCiAJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuaCBcCkBAIC0xMjc3LDYgKzEyNzcsNyBAQCBQ
cm9ncmFtc19XZWJLaXRQbHVnaW5Qcm9jZXNzX0NQUEZMQUdTID0gXAogCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVk
L1BsdWdpbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05l
dHNjYXBlLyBcCisJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVy
LyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvIFwKIAkt
SSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvIFwKQEAgLTEy
ODgsNiArMTI4OSw3IEBAIFByb2dyYW1zX1dlYktpdFBsdWdpblByb2Nlc3NfQ1BQRkxBR1MgPSBc
CiAJLURCVUlMRElOR19XRUJLSVQgXAogCS1ER1RLX0FQSV9WRVJTSU9OXzI9MSBcCiAJLURFTkFC
TEVfUExVR0lOX1BST0NFU1M9MSBcCisJLURMSUJFWEVDRElSPVwiIiQobGliZXhlY2RpcikiXCIg
XAogCSQoZ2xvYmFsX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlX2NwcGZsYWdzKSBcCiAJJCh3ZWJj
b3JlZ3RrX2NwcGZsYWdzKSBcCkBAIC0xNDAyLDYgKzE0MDQsOSBAQCBQcm9ncmFtc19XZWJLaXRQ
bHVnaW5Qcm9jZXNzX1NPVVJDRVMgPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRp
dmVXZWJNb3VzZUV2ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJF
dmVudEZhY3RvcnkuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxl
Qml0bWFwQ2Fpcm8uY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJv
Y2Vzc0xhdW5jaGVyLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0
ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbi5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTlBSdW50aW1lVXRpbGl0aWVzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzLnBybyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MucHJv
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc0NGNhNjJkZDRiOWY4OGUzMTIzZjMwOGY0OGQyMWM5NjFkMThhOWMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzLnBybwpAQCAtMCww
ICsxLDI3IEBACisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUHJvamVjdCBmaWxlIGZvciB0aGUgV2ViS2l0MiBw
bHVnaW4gcHJvY2VzcyBiaW5hcnkKKyMKKyMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBh
biBvdmVydmlldyBvZiB0aGUgYnVpbGQgc3lzdGVtCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbG9hZChmZWF0
dXJlcykKKworVEVNUExBVEUgPSBhcHAKKworVEFSR0VUID0gUXRXZWJQbHVnaW5Qcm9jZXNzCitE
RVNURElSID0gJCR7Uk9PVF9CVUlMRF9ESVJ9L2JpbgorCitTT1VSQ0VTICs9IHF0L1BsdWdpbk1h
aW5RdC5jcHAKKworSU5DTFVERVBBVEggPSAkJFBXRC8uLi9KYXZhU2NyaXB0Q29yZSBcCisgICAg
ICAgICAgICAgICQkSU5DTFVERVBBVEgKKworQ09ORklHICs9IHF0d2Via2l0CisKK0lOU1RBTExT
ICs9IHRhcmdldAorCitpc0VtcHR5KElOU1RBTExfQklOUykgeworICAgIHRhcmdldC5wYXRoID0g
JCRbUVRfSU5TVEFMTF9CSU5TXQorfSBlbHNlIHsKKyAgICB0YXJnZXQucGF0aCA9ICQkSU5TVEFM
TF9CSU5TCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9Q
bHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0
ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAKaW5kZXggOTk0MjYwNGU3YjlkZTM3YmQ5M2VmZTY0
NDc2MzY1OTAxNWYxOWU4Zi4uNjgwNjg4MDM5ZDIzODUyYzhkNTRlOTk5NjBlZWY0MDU3MWE4Mzll
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJv
Y2Vzc01haW5HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1Bs
dWdpblByb2Nlc3NNYWluR3RrLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluR3RrLmgiCiAKKyNpbmNsdWRlICJOZXRz
Y2FwZVBsdWdpbk1vZHVsZS5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKICNpbmNsdWRl
IDxXZWJLaXQyL1J1bkxvb3AuaD4KICNpbmNsdWRlIDxnZGsvZ2RreC5oPgpAQCAtNTEsMTIgKzUy
LDIzIEBAIHN0YXRpYyBpbnQgd2Via2l0Z3RrWEVycm9yKERpc3BsYXkqIHhkaXNwbGF5LCBYRXJy
b3JFdmVudCogZXJyb3IpCiAKIFdLX0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW5HdGsoaW50
IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKIHsKLSAgICBBU1NFUlQoYXJnYyA9PSAyKTsKKyAgICBBU1NF
UlQoYXJnYyA+PSAyKTsKKyAgICBib29sIGNyZWF0aW5nTWV0YURhdGFEZXNjcmlwdGlvbiA9ICFz
dHJjbXAoYXJndlsxXSwgIi1jcmVhdGVNZXRhRGF0YURlc2NyaXB0aW9uIik7CisgICAgQVNTRVJU
KGFyZ2MgPT0gMiB8fCAoYXJnYyA9PSA0ICYmIGNyZWF0aW5nTWV0YURhdGFEZXNjcmlwdGlvbikp
OwogCiAgICAgZ3RrX2luaXQoJmFyZ2MsICZhcmd2KTsKIAogICAgIEpTQzo6aW5pdGlhbGl6ZVRo
cmVhZGluZygpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKworICAgIGlmIChj
cmVhdGluZ01ldGFEYXRhRGVzY3JpcHRpb24pIHsKKyAgICAgICAgU3RyaW5nIHBsdWdpblBhdGgo
YXJndlsyXSk7CisgICAgICAgIFN0cmluZyBtZXRhRGF0YURlc2NyaXB0b3JGaWxlUGF0aChhcmd2
WzNdKTsKKyAgICAgICAgaWYgKCFOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Y3JlYXRlUGx1Z2luTWV0
YURhdGFEZXNjcmlwdG9yRmlsZShwbHVnaW5QYXRoLCBtZXRhRGF0YURlc2NyaXB0b3JGaWxlUGF0
aCkpCisgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgICAgICByZXR1cm4gRVhJ
VF9TVUNDRVNTOworICAgIH0KKwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgp
OwogCiAgICAgLy8gUGx1Z2lucyBjYW4gcHJvZHVjZSBYIGVycm9ycyB0aGF0IGFyZSBoYW5kbGVk
IGJ5IHRoZSBHREsgWCBlcnJvciBoYW5kbGVyLCB3aGljaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5RdC5jcHAKaW5kZXggM2Uw
MDMzZmYwYWIzMzc2NTBlNTNkMDgxYzg5ZjQ0NDE0YTY3OGE3NS4uN2M4NzU0NjdmYmE3MzkxMjE2
M2E0MzNmZmJiYjNhNjAwMDJhZjM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2lu
UHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBOb2tpYSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDQy
ICsyNSw4NCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbHVnaW5Q
cm9jZXNzTWFpbi5oIgogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorI2luY2x1ZGUgIlBs
dWdpblByb2Nlc3NNYWluLmgiCiAKLSNpbmNsdWRlICJDb21tYW5kTGluZS5oIgogI2luY2x1ZGUg
IlBsdWdpblByb2Nlc3MuaCIKICNpbmNsdWRlICJSdW5Mb29wLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgIlNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luTW9kdWxlLmgiCisjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorI2luY2x1
ZGUgPFFBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRRGVidWc+CisjaW5jbHVkZSA8UVN0cmluZ0xp
c3Q+CiAjaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAotI2RlZmluZSBTSE9XX0NSQVNIX1JFUE9SVEVSIDEK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWludCBQbHVnaW5Qcm9jZXNzTWFpbihjb25zdCBDb21t
YW5kTGluZSYgY29tbWFuZExpbmUpCitzdGF0aWMgdm9pZCBtZXNzYWdlSGFuZGxlcihRdE1zZ1R5
cGUgdHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKLSAgICBTdHJpbmcgc2VydmljZU5hbWUg
PSBjb21tYW5kTGluZVsic2VydmljZW5hbWUiXTsKLSAgICBpZiAoc2VydmljZU5hbWUuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIGlmICh0eXBlID09IFF0Q3Jp
dGljYWxNc2cpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbWVzc2FnZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBEbyBub3RoaW5nCit9CisKK3N0YXRpYyB2
b2lkIGluaXRpYWxpemVHdGsoKQoreworICAgIFFMaWJyYXJ5IGd0a0xpYnJhcnkoUUxhdGluMVN0
cmluZygibGliZ3RrLXgxMS0yLjAiKSwgMCk7CisgICAgaWYgKCFndGtMaWJyYXJ5LmxvYWQoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIHR5cGVkZWYgdm9pZCogKCpndGtfaW5pdF9wdHIpKHZvaWQq
LCB2b2lkKik7CisgICAgZ3RrX2luaXRfcHRyIGd0a0luaXQgPSByZWludGVycHJldF9jYXN0PGd0
a19pbml0X3B0cj4oZ3RrTGlicmFyeS5yZXNvbHZlKCJndGtfaW5pdCIpKTsKKyAgICBpZiAoIWd0
a0luaXQpCisgICAgICAgIHJldHVybjsKKyAgICBndGtJbml0KDAsIDApOworfQorCitRV0VCS0lU
X0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQorewor
ICAgIFFCeXRlQXJyYXkgc3VwcHJlc3NPdXRwdXQgPSBxZ2V0ZW52KCJRVF9XRUJLSVRfU1VQUFJF
U1NfV0VCX1BST0NFU1NfT1VUUFVUIik7CisgICAgaWYgKCFzdXBwcmVzc091dHB1dC5pc0VtcHR5
KCkgJiYgc3VwcHJlc3NPdXRwdXQgIT0gIjAiKQorICAgICAgICBxSW5zdGFsbE1zZ0hhbmRsZXIo
bWVzc2FnZUhhbmRsZXIpOwogCi0jaWYgIVNIT1dfQ1JBU0hfUkVQT1JURVIKLSAgICAvLyBJbnN0
YWxscyBzaWduYWwgaGFuZGxlcnMgdGhhdCBleGl0IG9uIGEgY3Jhc2ggc28gdGhhdCBDcmFzaFJl
cG9ydGVyIGRvZXMgbm90IHNob3cgdXAuCi0gICAgc2lnbmFsKFNJR0lMTCwgX2V4aXQpOwotICAg
IHNpZ25hbChTSUdGUEUsIF9leGl0KTsKLSAgICBzaWduYWwoU0lHQlVTLCBfZXhpdCk7Ci0gICAg
c2lnbmFsKFNJR1NFR1YsIF9leGl0KTsKLSNlbmRpZgorICAgIFFBcHBsaWNhdGlvbiBhcHAoYXJn
YywgYXJndik7CisKKyAgICAvLyBXb3JrYXJvdW5kIHRoZSBpc3N1ZSB0aGF0IHNvbWUgdmVyc2lv
bnMgb2YgZmxhc2ggZG9lcyBub3QgaW5pdGlhbGl6ZSBHdGsgcHJvcGVybHkuCisgICAgaW5pdGlh
bGl6ZUd0aygpOwogCiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgV1RGOjpp
bml0aWFsaXplTWFpblRocmVhZCgpOworCisgICAgaWYgKGFyZ2MgPD0gMSkKKyAgICAgICAgcmV0
dXJuIEVYSVRfRkFJTFVSRTsKKworICAgIGlmIChhcHAuYXJndW1lbnRzKCkuYXQoMSkgPT0gUUxh
dGluMVN0cmluZygiLWNyZWF0ZU1ldGFEYXRhRGVzY3JpcHRpb24iKSkgeworICAgICAgICBpZiAo
YXJnYyAhPSA0KQorICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKworICAgICAgICBT
dHJpbmcgcGx1Z2luUGF0aChhcHAuYXJndW1lbnRzKCkuYXQoMikpOworICAgICAgICBTdHJpbmcg
ZGVzY3JpcHRvckZpbGVQYXRoKGFwcC5hcmd1bWVudHMoKS5hdCgzKSk7CisgICAgICAgIGlmICgh
TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmNyZWF0ZVBsdWdpbk1ldGFEYXRhRGVzY3JpcHRvckZpbGUo
cGx1Z2luUGF0aCwgZGVzY3JpcHRvckZpbGVQYXRoKSkKKyAgICAgICAgICAgIHJldHVybiBFWElU
X0ZBSUxVUkU7CisgICAgICAgIHJldHVybiBFWElUX1NVQ0NFU1M7CisgICAgfQorCiAgICAgUnVu
TG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKKyAgICAvLyBDcmVhdGUgdGhlIGNvbm5l
Y3Rpb24uCisgICAgYm9vbCBpc051bWJlciA9IGZhbHNlOworICAgIGludCBpZGVudGlmaWVyID0g
YXBwLmFyZ3VtZW50cygpLmF0KDEpLnRvSW50KCZpc051bWJlciwgMTApOworICAgIGlmICghaXNO
dW1iZXIpCisgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisKKyAgICBXZWJLaXQ6OlBsdWdp
blByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUoaWRlbnRpZmllciwgUnVuTG9vcDo6bWFpbigp
KTsKKwogICAgIFJ1bkxvb3A6OnJ1bigpOwogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVs
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbk1vZHVsZS5jcHAKaW5kZXggZTVmOGRjMmEzZjJlZmE3ZGU4YjQxMDk5MzI2YWUwNGY5NWY0
NTE2My4uYzE4NzRkOTk2NmE2NmRkOTMyZWQyZGZmOTIwN2NiZjg5ZDMyNWJhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5N
b2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luTW9kdWxlLmNwcApAQCAtMTk3LDEwICsxOTcsNiBAQCBib29sIE5ldHNjYXBl
UGx1Z2luTW9kdWxlOjpsb2FkKCkKIAogYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6dHJ5TG9h
ZCgpCiB7Ci0jaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCi0gICAgYXBwbHlYMTFRdWlya3NC
ZWZvcmVMb2FkKCk7Ci0jZW5kaWYKLQogICAgIG1fbW9kdWxlID0gYWRvcHRQdHIobmV3IE1vZHVs
ZShtX3BsdWdpblBhdGgpKTsKICAgICBpZiAoIW1fbW9kdWxlLT5sb2FkKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oCmluZGV4IGY4MGEwYTFhMGEzMmMw
NzIxY2U2YWJmYjVmYmRkNWI0MGQ4YTk2YjIuLjlkMTlkYzRhOGYwZDRjNWZmYTJhN2RiMWFjMWJm
MDBjODU0NjMyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaApAQCAtMjcsNiArMjcsNyBA
QAogI2RlZmluZSBOZXRzY2FwZVBsdWdpbk1vZHVsZV9oCiAKICNpbmNsdWRlICJNb2R1bGUuaCIK
KyNpbmNsdWRlICJQbHVnaW5QYXRoSGFzaFNldC5oIgogI2luY2x1ZGUgIlBsdWdpbk1vZHVsZUlu
Zm8uaCIKICNpbmNsdWRlICJQbHVnaW5RdWlya3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL25wcnVu
dGltZV9pbnRlcm5hbC5oPgpAQCAtNTksNiArNjAsMTAgQEAgcHVibGljOgogCiAjaWYgUExVR0lO
X0FSQ0hJVEVDVFVSRShNQUMpCiAgICAgc3RhdGljIGJvb2wgY3JlYXRlUGx1Z2luTUlNRVR5cGVz
UHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKKyNlbGlmIFBMVUdJTl9BUkNI
SVRFQ1RVUkUoWDExKQorICAgIHN0YXRpYyBTdHJpbmcgcGx1Z2luTWV0YURhdGFDYWNoZURpcmVj
dG9yeSgpOworICAgIHN0YXRpYyBib29sIGNyZWF0ZVBsdWdpbk1ldGFEYXRhRGVzY3JpcHRvckZp
bGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKKyAg
ICBzdGF0aWMgdm9pZCB2YWxpZGF0ZVBlcnNpc3RlbnRNZXRhRGF0YUNhY2hlKGNvbnN0IFBsdWdp
blBhdGhIYXNoU2V0JiB1c2VkUGx1Z2lucyk7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTY3LDkg
KzcyLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXRlcm1pbmVRdWlya3MoKTsKIAogI2lmIFBM
VUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgIHZvaWQgYXBwbHlYMTFRdWlya3NCZWZvcmVMb2Fk
KCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0TUlNRURlc2NyaXB0aW9uKGNvbnN0IFN0cmluZyYgbWlt
ZURlc2NyaXB0aW9uLCBQbHVnaW5Nb2R1bGVJbmZvJik7Ci0gICAgYm9vbCBnZXRQbHVnaW5JbmZv
Rm9yTG9hZGVkUGx1Z2luKFBsdWdpbk1vZHVsZUluZm8mKTsKKyAgICBzdHJ1Y3QgUmF3UGx1Z2lu
TWV0YURhdGEgeworICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgU3RyaW5nIGRlc2NyaXB0
aW9uOworICAgICAgICBTdHJpbmcgbWltZURlc2NyaXB0aW9uOworICAgIH07CisKKyAgICBib29s
IGdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4oUmF3UGx1Z2luTWV0YURhdGEmKTsKICNlbmRp
ZgogCiAgICAgYm9vbCB0cnlHZXRTaXRlc1dpdGhEYXRhKFZlY3RvcjxTdHJpbmc+Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2Nh
cGVQbHVnaW5Nb2R1bGVYMTEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0
c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcAppbmRleCBiZTA0YmZmMjZmOThm
NzRkOTQwY2FhNTU2MWVkYzUzY2ZiY2ZiMWE1Li5hOTVhYTU1M2E4NDFkNmRkNzAxNzI0NmQxY2U4
MGEwZDZmNDRmZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9O
ZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5j
cHAKQEAgLTI4LDE4ICsyOCwyOCBAQAogCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW5Nb2R1bGUu
aCIKIAorI2luY2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgorI2luY2x1ZGUgIlBsdWdpblBhdGhI
YXNoU2V0LmgiCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiTmV0
c2NhcGVCcm93c2VyRnVuY3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KLQot
I2lmIFBMQVRGT1JNKFFUKQotI2luY2x1ZGUgPFFMaWJyYXJ5PgotI2VuZGlmCi0KKyNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxz
eXMvc3RhdC5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgog
CisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KKyNpbmNsdWRl
IDxRRGlyPgorI2luY2x1ZGUgPFFMaWJyYXJ5PgorI2luY2x1ZGUgPFFTdGFuZGFyZFBhdGhzPgor
I2VsaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPGdsaWIuaD4KKyNlbmRpZgorCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02OSwzNSArNzksMTMg
QEAgU3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3I6On5TdGRvdXREZXZOdWxsUmVkaXJlY3RvcigpCiAg
ICAgICAgIGR1cDIobV9zYXZlZFN0ZG91dCwgU1RET1VUX0ZJTEVOTyk7CiB9CiAKLSNpZiBQTEFU
Rk9STShRVCkKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVHVEsoKQorc3RhdGljIHZvaWQgcGFyc2VN
SU1FRGVzY3JpcHRpb24oY29uc3QgU3RyaW5nJiBtaW1lRGVzY3JpcHRpb24sIFZlY3RvcjxNaW1l
Q2xhc3NJbmZvPiYgcmVzdWx0KQogewotICAgIFFMaWJyYXJ5IGxpYnJhcnkoUUxhdGluMVN0cmlu
ZygibGliZ3RrLXgxMS0yLjAuc28uMCIpKTsKLSAgICBpZiAobGlicmFyeS5sb2FkKCkpIHsKLSAg
ICAgICAgdHlwZWRlZiB2b2lkICooKmd0a19pbml0X2NoZWNrX3B0cikoaW50KiwgY2hhcioqKik7
Ci0gICAgICAgIGd0a19pbml0X2NoZWNrX3B0ciBndGtJbml0Q2hlY2sgPSByZWludGVycHJldF9j
YXN0PGd0a19pbml0X2NoZWNrX3B0cj4obGlicmFyeS5yZXNvbHZlKCJndGtfaW5pdF9jaGVjayIp
KTsKLSAgICAgICAgLy8gTk9URTogV2UncmUgdXNpbmcgZ3RrX2luaXRfY2hlY2soKSBzaW5jZSBn
dGtfaW5pdCgpIGNhbGxzIGV4aXQoKSBvbiBmYWlsdXJlLgotICAgICAgICBpZiAoZ3RrSW5pdENo
ZWNrKQotICAgICAgICAgICAgKHZvaWQpIGd0a0luaXRDaGVjaygwLCAwKTsKLSAgICB9Ci19Ci0j
ZW5kaWYKKyAgICBBU1NFUlRfQVJHKHJlc3VsdCwgcmVzdWx0LmlzRW1wdHkoKSk7CiAKLXZvaWQg
TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmFwcGx5WDExUXVpcmtzQmVmb3JlTG9hZCgpCi17Ci0jaWYg
UExBVEZPUk0oUVQpCi0gICAgaWYgKG1fcGx1Z2luUGF0aC5jb250YWlucygibnB3cmFwcGVyIikg
fHwgbV9wbHVnaW5QYXRoLmNvbnRhaW5zKCJmbGFzaHBsYXllciIpKSB7Ci0gICAgICAgIGluaXRp
YWxpemVHVEsoKTsKLSAgICAgICAgbV9wbHVnaW5RdWlya3MuYWRkKFBsdWdpblF1aXJrczo6UmVx
dWlyZXNHVEtUb29sS2l0KTsKLSAgICB9Ci0jZW5kaWYKLX0KLQotdm9pZCBOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6c2V0TUlNRURlc2NyaXB0aW9uKGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9u
LCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCi17CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7
CiAgICAgbWltZURlc2NyaXB0aW9uLmxvd2VyKCkuc3BsaXQoVUNoYXIoJzsnKSwgZmFsc2UsIHR5
cGVzKTsKLSAgICBwbHVnaW4uaW5mby5taW1lcy5yZXNlcnZlQ2FwYWNpdHkodHlwZXMuc2l6ZSgp
KTsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0eXBlcy5zaXplKCkpOwogCiAg
ICAgc2l6ZV90IG1pbWVJbmZvQ291bnQgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dHlwZXMuc2l6ZSgpOyArK2kpIHsKQEAgLTEwNiw4ICs5NCw4IEBAIHZvaWQgTmV0c2NhcGVQbHVn
aW5Nb2R1bGU6OnNldE1JTUVEZXNjcmlwdGlvbihjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlwdGlv
biwgUGx1CiAgICAgICAgIGlmIChtaW1lVHlwZVBhcnRzLnNpemUoKSA8PSAwKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgcGx1Z2luLmluZm8ubWltZXMudW5jaGVja2VkQXBwZW5k
KE1pbWVDbGFzc0luZm8oKSk7Ci0gICAgICAgIE1pbWVDbGFzc0luZm8mIG1pbWVJbmZvID0gcGx1
Z2luLmluZm8ubWltZXNbbWltZUluZm9Db3VudCsrXTsKKyAgICAgICAgcmVzdWx0LnVuY2hlY2tl
ZEFwcGVuZChNaW1lQ2xhc3NJbmZvKCkpOworICAgICAgICBNaW1lQ2xhc3NJbmZvJiBtaW1lSW5m
byA9IHJlc3VsdFttaW1lSW5mb0NvdW50KytdOwogICAgICAgICBtaW1lSW5mby50eXBlID0gbWlt
ZVR5cGVQYXJ0c1swXTsKIAogICAgICAgICBpZiAobWltZVR5cGVQYXJ0cy5zaXplKCkgPiAxKQpA
QCAtMTE4LDEzICsxMDYsMTAgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2V0TUlNRURl
c2NyaXB0aW9uKGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uLCBQbHUKICAgICB9CiB9CiAK
LWJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4o
UGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQorYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0
UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihSYXdQbHVnaW5NZXRhRGF0YSYgbWV0YURhdGEpCiB7
CiAgICAgQVNTRVJUKG1faXNJbml0aWFsaXplZCk7CiAKLSAgICBwbHVnaW4ucGF0aCA9IG1fcGx1
Z2luUGF0aDsKLSAgICBwbHVnaW4uaW5mby5maWxlID0gcGF0aEdldEZpbGVOYW1lKG1fcGx1Z2lu
UGF0aCk7Ci0KICAgICBNb2R1bGUqIG1vZHVsZSA9IG1fbW9kdWxlLmdldCgpOwogICAgIE5QUF9H
ZXRWYWx1ZVByb2NQdHIgTlBQX0dldFZhbHVlID0gbW9kdWxlLT5mdW5jdGlvblBvaW50ZXI8TlBQ
X0dldFZhbHVlUHJvY1B0cj4oIk5QX0dldFZhbHVlIik7CiAgICAgaWYgKCFOUFBfR2V0VmFsdWUp
CkBAIC0xMzcsMjIgKzEyMiwxNzIgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1
Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4KICAgICBjaGFy
KiBidWZmZXI7CiAgICAgTlBFcnJvciBlcnJvciA9IE5QUF9HZXRWYWx1ZSgwLCBOUFBWcGx1Z2lu
TmFtZVN0cmluZywgJmJ1ZmZlcik7CiAgICAgaWYgKGVycm9yID09IE5QRVJSX05PX0VSUk9SKQot
ICAgICAgICBwbHVnaW4uaW5mby5uYW1lID0gYnVmZmVyOworICAgICAgICBtZXRhRGF0YS5uYW1l
ID0gYnVmZmVyOwogCiAgICAgZXJyb3IgPSBOUFBfR2V0VmFsdWUoMCwgTlBQVnBsdWdpbkRlc2Ny
aXB0aW9uU3RyaW5nLCAmYnVmZmVyKTsKICAgICBpZiAoZXJyb3IgPT0gTlBFUlJfTk9fRVJST1Ip
Ci0gICAgICAgIHBsdWdpbi5pbmZvLmRlc2MgPSBidWZmZXI7CisgICAgICAgIG1ldGFEYXRhLmRl
c2NyaXB0aW9uID0gYnVmZmVyOwogCiAgICAgY29uc3QgY2hhciogbWltZURlc2NyaXB0aW9uID0g
TlBfR2V0TUlNRURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCFtaW1lRGVzY3JpcHRpb24pCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBtZXRhRGF0YS5taW1lRGVzY3JpcHRpb24gPSBtaW1lRGVz
Y3JpcHRpb247CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgcmVhZE5leHRV
VEY4U3RyaW5nKFN0cmluZyYgcmVzdWx0LCBjaGFyKiYgYnVmZmVyU3RhcnQsIGNvbnN0IGNoYXIq
IGJ1ZmZlckVuZCkKK3sKKyAgICBpZiAoYnVmZmVyU3RhcnQgPj0gYnVmZmVyRW5kKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplX3QgbWF4TGVuZ3RoID0gYnVmZmVyRW5kIC0gYnVm
ZmVyU3RhcnQ7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0cm5sZW4oYnVmZmVyU3RhcnQsIG1heExl
bmd0aCk7CisgICAgaWYgKGxlbmd0aCA9PSBtYXhMZW5ndGgpIHsKKyAgICAgICAgLy8gTm8gbnVs
bCBjaGFyYWN0ZXIgYmVmb3JlIHRoZSBlbmQuIFRoaXMgaW5kaWNhdGVzIGEgZGF0YSBjb3JydXB0
aW9uLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmVzdWx0ID0gU3RyaW5n
Ojpmcm9tVVRGOChidWZmZXJTdGFydCwgbGVuZ3RoKTsKKyAgICBidWZmZXJTdGFydCArPSBsZW5n
dGggKyAxOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHJlYWROZXh0VGlt
ZXN0YW1wKHRpbWVfdCYgcmVzdWx0LCBjaGFyKiYgYnVmZmVyU3RhcnQsIGNvbnN0IGNoYXIqIGJ1
ZmZlckVuZCkKK3sKKyAgICBpZiAoYnVmZmVyU3RhcnQgPj0gYnVmZmVyRW5kKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBXZSBwdXNoIGFuIGV4dHJhIG51bGwgY2hhcmFjdGVyIGlu
IGZhdm91ciBvZiBkYXRhIGNvcnJ1cHRpb24gZGV0ZWN0aW9uLgorICAgIGlmIChidWZmZXJTdGFy
dFtzaXplb2YodGltZV90KV0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQgPSAq
cmVpbnRlcnByZXRfY2FzdDx0aW1lX3QqPihidWZmZXJTdGFydCk7CisgICAgYnVmZmVyU3RhcnQg
Kz0gc2l6ZW9mKHRpbWVfdCkgKyAxOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2NvbnN0IFN0
cmluZyYgZGVzY3JpcHRvckZpbGVTY2hlbWFJRCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIGlkLCAoIldlYktpdCBOUEFQSS1NRVRBIDEiKSk7CisgICAgcmV0dXJuIGlkOwor
fQorCitzdGF0aWMgYm9vbCByZWFkUGx1Z2luTWV0YURhdGFGcm9tRGVzY3JpcHRvckZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1
bGVJbmZvJiBwbHVnaW4pCit7CisgICAgUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUgPSBvcGVuRmls
ZShmaWxlUGF0aCwgT3BlbkZvclJlYWQpOworICAgIGlmICghaXNIYW5kbGVWYWxpZChmaWxlKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcjsKKyAgICBj
b25zdCBpbnQgcmVhZFNpemUgPSA2NDsKKyAgICBidWZmZXIucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShyZWFkU2l6ZSAqIDQpOworICAgIGludCBieXRlc1JlYWQgPSAwOworCisgICAgd2hpbGUgKHRy
dWUpIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IHJlYWRGcm9tRmlsZShmaWxlLCBidWZmZXIuZGF0
YSgpICsgYnl0ZXNSZWFkLCByZWFkU2l6ZSk7CisgICAgICAgIGlmIChyZXN1bHQgPCAwKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBieXRlc1JlYWQgKz0gcmVzdWx0OworICAg
ICAgICBpZiAocmVzdWx0IDwgcmVhZFNpemUpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
YnVmZmVyLnJlc2l6ZShieXRlc1JlYWQgKyByZWFkU2l6ZSk7CisgICAgfQorCisgICAgY2hhciog
c3RhcnQgPSBidWZmZXIuZGF0YSgpOworICAgIGNoYXIqIGVuZCA9IGJ1ZmZlci5kYXRhKCkgKyBi
eXRlc1JlYWQ7CisKKyAgICBTdHJpbmcgY2FjaGVkU2NoZW1hSUQ7CisgICAgaWYgKCFyZWFkTmV4
dFVURjhTdHJpbmcoY2FjaGVkU2NoZW1hSUQsIHN0YXJ0LCBlbmQpIHx8IGNhY2hlZFNjaGVtYUlE
ICE9IGRlc2NyaXB0b3JGaWxlU2NoZW1hSUQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgLy8gQ2hlY2sgdGhlIHBsdWdpbiB0aW1lc3RhbXAuCisgICAgdGltZV90IGNhY2hlZFBsdWdp
bkxhc3RNb2RpZmllZDsKKyAgICB0aW1lX3QgcGx1Z2luTGFzdE1vZGlmaWVkOworICAgIGlmICgh
cmVhZE5leHRUaW1lc3RhbXAoY2FjaGVkUGx1Z2luTGFzdE1vZGlmaWVkLCBzdGFydCwgZW5kKQor
ICAgICAgICB8fCAhZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCwgcGx1Z2luTGFz
dE1vZGlmaWVkKQorICAgICAgICB8fCBjYWNoZWRQbHVnaW5MYXN0TW9kaWZpZWQgIT0gcGx1Z2lu
TGFzdE1vZGlmaWVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBDaGVjayB0aGUg
ZGVzY3JpcHRvciBmaWxlIHRpbWVzdGFtcC4gVGhpcyBkZXRlY3RzIGlmIHRoZSBmaWxlIGhhcyBi
ZWVuIG92ZXJyaWRkZW4uCisgICAgLy8gV2Ugd3JpdGUgdGhlIHRpbWVzdGFtcCBkdXJpbmcgd3Jp
dGluZyB0aGUgZmlsZSBzbyB3ZSBzaG91bGQgYWNjZXB0IGEgc21hbGwgZGlmZmVyZW5jZS4KKyAg
ICB0aW1lX3QgY2FjaGVkRGVzY3JpcHRvckZpbGVMYXN0TW9kaWZpZWQ7CisgICAgdGltZV90IGRl
c2NyaXB0b3JGaWxlTGFzdE1vZGlmaWVkOworICAgIGNvbnN0IGludCB0b2xlcmFuY2VJblNlY29u
ZHMgPSAzOworICAgIGlmICghcmVhZE5leHRUaW1lc3RhbXAoY2FjaGVkRGVzY3JpcHRvckZpbGVM
YXN0TW9kaWZpZWQsIHN0YXJ0LCBlbmQpCisgICAgICAgIHx8ICFnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZShmaWxlUGF0aCwgZGVzY3JpcHRvckZpbGVMYXN0TW9kaWZpZWQpCisgICAgICAgIHx8IGFi
cyhjYWNoZWREZXNjcmlwdG9yRmlsZUxhc3RNb2RpZmllZCAtIGRlc2NyaXB0b3JGaWxlTGFzdE1v
ZGlmaWVkKSA+IHRvbGVyYW5jZUluU2Vjb25kcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgU3RyaW5nIG1pbWVEZXNjcmlwdGlvbjsKKyAgICBpZiAoIXJlYWROZXh0VVRGOFN0cmluZyhw
bHVnaW4uaW5mby5uYW1lLCBzdGFydCwgZW5kKQorICAgICAgICB8fCAhcmVhZE5leHRVVEY4U3Ry
aW5nKHBsdWdpbi5pbmZvLmRlc2MsIHN0YXJ0LCBlbmQpCisgICAgICAgIHx8ICFyZWFkTmV4dFVU
RjhTdHJpbmcobWltZURlc2NyaXB0aW9uLCBzdGFydCwgZW5kKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgc2V0TUlNRURlc2NyaXB0aW9uKG1pbWVEZXNjcmlwdGlvbiwgcGx1Z2luKTsK
KyAgICBwYXJzZU1JTUVEZXNjcmlwdGlvbihtaW1lRGVzY3JpcHRpb24sIHBsdWdpbi5pbmZvLm1p
bWVzKTsKIAogICAgIHJldHVybiB0cnVlOwogfQorCitzdGF0aWMgU3RyaW5nIG1ldGFEYXRhRGVz
Y3JpcHRvckZpbGVQYXRoKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKK3sKKyAgICBTdHJpbmcg
cGx1Z2luRmlsZU5hbWUgPSBwYXRoR2V0RmlsZU5hbWUocGx1Z2luUGF0aCk7CisgICAgU3RyaW5n
IGJhc2VOYW1lID0gcGx1Z2luRmlsZU5hbWUgKyBTdHJpbmc6OmZvcm1hdCgiLiV1IiwgU3RyaW5n
SGFzaDo6aGFzaChwbHVnaW5QYXRoKSkgKyBTdHJpbmcoIi5iaW4iKTsKKyAgICByZXR1cm4gcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpwbHVnaW5NZXRhRGF0
YUNhY2hlRGlyZWN0b3J5KCksIGJhc2VOYW1lKTsKK30KKwogYm9vbCBOZXRzY2FwZVBsdWdpbk1v
ZHVsZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpbk1vZHVs
ZUluZm8mIHBsdWdpbikKIHsKKyAgICBTdHJpbmcgZmlsZVBhdGggPSBtZXRhRGF0YURlc2NyaXB0
b3JGaWxlUGF0aChwbHVnaW5QYXRoKTsKKyAgICBpZiAoIXJlYWRQbHVnaW5NZXRhRGF0YUZyb21E
ZXNjcmlwdG9yRmlsZShmaWxlUGF0aCwgcGx1Z2luUGF0aCwgcGx1Z2luKSkgeworICAgICAgICAv
LyAoUmUpZ2VuZXJhdGUgdGhlIGZpbGUgYW5kIHRyeSBhZ2Fpbi4KKyAgICAgICAgaWYgKCFQbHVn
aW5Qcm9jZXNzUHJveHk6OmNyZWF0ZU1ldGFEYXRhRGVzY3JpcHRvckZpbGUocGx1Z2luUGF0aCwg
ZmlsZVBhdGgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXJlYWRQ
bHVnaW5NZXRhRGF0YUZyb21EZXNjcmlwdG9yRmlsZShmaWxlUGF0aCwgcGx1Z2luUGF0aCwgcGx1
Z2luKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwbHVnaW4uaW5m
by5maWxlID0gcGF0aEdldEZpbGVOYW1lKHBsdWdpblBhdGgpOworICAgIHBsdWdpbi5wYXRoID0g
cGx1Z2luUGF0aDsKKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCB3cml0ZVRp
bWVzdGFtcChQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgY29uc3QgdGltZV90JiB0aW1lLCBjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIEFTU0VSVF9BUkcoZmlsZSwgaXNIYW5kbGVWYWxp
ZChmaWxlKSk7CisKKyAgICAvLyBXZSBwdXNoIGFuIGV4dHJhIG51bGwgY2hhcmFjdGVyIGluIGZh
dm91ciBvZiBkYXRhIGNvcnJ1cHRpb24gZGV0ZWN0aW9uLgorICAgIGNoYXIgYnVmZmVyW3NpemVv
Zih0aW1lX3QpICsgMV07CisgICAgbWVtc2V0KGJ1ZmZlciwgMCwgc2l6ZW9mKGJ1ZmZlcikpOwor
ICAgICpyZWludGVycHJldF9jYXN0PHRpbWVfdCo+KGJ1ZmZlcikgPSB0aW1lOworCisgICAgaWYg
KHdyaXRlVG9GaWxlKGZpbGUsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpID09IHNpemVvZihidWZm
ZXIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNsb3NlRmlsZShmaWxlKTsKKyAgICBk
ZWxldGVGaWxlKGZpbGVQYXRoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29s
IHdyaXRlU3RyaW5nKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBjb25zdCBTdHJpbmcmIHN0cmlu
ZywgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICBBU1NFUlRfQVJHKGZpbGUsIGlzSGFu
ZGxlVmFsaWQoZmlsZSkpOworCisgICAgQ1N0cmluZyB1dGY4U3RyaW5nID0gc3RyaW5nLnV0Zjgo
KTsKKyAgICBpbnQgbGVuZ3RoID0gdXRmOFN0cmluZy5sZW5ndGgoKSArIDE7CisgICAgaWYgKHdy
aXRlVG9GaWxlKGZpbGUsIHV0ZjhTdHJpbmcuZGF0YSgpLCBsZW5ndGgpID09IGxlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjbG9zZUZpbGUoZmlsZSk7CisgICAgZGVsZXRlRmls
ZShmaWxlUGF0aCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE5ldHNjYXBlUGx1Z2lu
TW9kdWxlOjpjcmVhdGVQbHVnaW5NZXRhRGF0YURlc2NyaXB0b3JGaWxlKGNvbnN0IFN0cmluZyYg
cGx1Z2luUGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKICAgICAvLyBUZW1wYXJhcmls
eSBzdXBwcmVzcyBzdGRvdXQgaW4gdGhpcyBmdW5jdGlvbiBhcyBwbHVnaW5zIHdpbGwgYmUgbG9h
ZGVkIGFuZCBzaHV0ZG93biBhbmQgZGVidWcgaW5mbwogICAgIC8vIGlzIGxlYWtlZCB0byBsYXlv
dXQgdGVzdCBvdXRwdXQuCiAgICAgU3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3Igc3Rkb3V0RGV2TnVs
bFJlZGlyZWN0b3I7CkBAIC0xNjQsMjAgKzI5OSw0NiBAQCBib29sIE5ldHNjYXBlUGx1Z2luTW9k
dWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9kdWxl
SQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBwbHVnaW5Nb2R1bGUtPmluY3JlbWVudExv
YWRDb3VudCgpOwotICAgIGJvb2wgcmV0dXJuVmFsdWUgPSBwbHVnaW5Nb2R1bGUtPmdldFBsdWdp
bkluZm9Gb3JMb2FkZWRQbHVnaW4ocGx1Z2luKTsKKyAgICBSYXdQbHVnaW5NZXRhRGF0YSBtZXRh
RGF0YTsKKyAgICBib29sIGdvdFBsdWdpbkluZm8gPSBwbHVnaW5Nb2R1bGUtPmdldFBsdWdpbklu
Zm9Gb3JMb2FkZWRQbHVnaW4obWV0YURhdGEpOwogICAgIHBsdWdpbk1vZHVsZS0+ZGVjcmVtZW50
TG9hZENvdW50KCk7CisgICAgaWYgKCFnb3RQbHVnaW5JbmZvKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSA9IG9wZW5GaWxlKGZpbGVQYXRoLCBP
cGVuRm9yV3JpdGUpOworICAgIGlmICghaXNIYW5kbGVWYWxpZChmaWxlKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKCF3cml0ZVN0cmluZyhmaWxlLCBkZXNjcmlwdG9yRmlsZVNj
aGVtYUlEKCksIGZpbGVQYXRoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJu
IHJldHVyblZhbHVlOworICAgIC8vIFdyaXRlIGEgdGltZXN0YW1wIGZvciB0aGUgcGx1Z2luLgor
ICAgIHRpbWVfdCBsYXN0TW9kaWZpZWQ7CisgICAgaWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShwbHVnaW5QYXRoLCBsYXN0TW9kaWZpZWQpIHx8ICF3cml0ZVRpbWVzdGFtcChmaWxlLCBsYXN0
TW9kaWZpZWQsIGZpbGVQYXRoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gV3Jp
dGUgdGhlIGN1cnJlbnQgdGltZSBhcyBhIHRpbWVzdGFtcCBmb3IgdGhlIGRlc2NyaXB0b3IgZmls
ZSBpdHNlbGYuCisgICAgaWYgKCF3cml0ZVRpbWVzdGFtcChmaWxlLCB0aW1lKDApLCBmaWxlUGF0
aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghd3JpdGVTdHJpbmcoZmlsZSwg
bWV0YURhdGEubmFtZSwgZmlsZVBhdGgpCisgICAgICAgIHx8ICF3cml0ZVN0cmluZyhmaWxlLCBt
ZXRhRGF0YS5kZXNjcmlwdGlvbiwgZmlsZVBhdGgpCisgICAgICAgIHx8ICF3cml0ZVN0cmluZyhm
aWxlLCBtZXRhRGF0YS5taW1lRGVzY3JpcHRpb24sIGZpbGVQYXRoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgY2xvc2VGaWxlKGZpbGUpOworICAgIHJldHVybiB0cnVlOwogfQogCiB2
b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpkZXRlcm1pbmVRdWlya3MoKQogewogI2lmIENQVShY
ODZfNjQpCi0gICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW47Ci0gICAgaWYgKCFnZXRQbHVnaW5J
bmZvRm9yTG9hZGVkUGx1Z2luKHBsdWdpbikpCisgICAgUmF3UGx1Z2luTWV0YURhdGEgbWV0YURh
dGE7CisgICAgaWYgKCFnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKG1ldGFEYXRhKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPE1pbWVDbGFzc0luZm8+IG1pbWVUeXBlcyA9IHBs
dWdpbi5pbmZvLm1pbWVzOworICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtaW1lVHlwZXM7Cisg
ICAgcGFyc2VNSU1FRGVzY3JpcHRpb24obWV0YURhdGEubWltZURlc2NyaXB0aW9uLCBtaW1lVHlw
ZXMpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWltZVR5cGVzLnNpemUoKTsgKytpKSB7
CiAgICAgICAgIGlmIChtaW1lVHlwZXNbaV0udHlwZSA9PSAiYXBwbGljYXRpb24veC1zaG9ja3dh
dmUtZmxhc2giKSB7CiAgICAgICAgICAgICBtX3BsdWdpblF1aXJrcy5hZGQoUGx1Z2luUXVpcmtz
OjpJZ25vcmVSaWdodENsaWNrSW5XaW5kb3dsZXNzTW9kZSk7CkBAIC0xODcsNiArMzQ4LDQ4IEBA
IHZvaWQgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmRldGVybWluZVF1aXJrcygpCiAjZW5kaWYKIH0K
IAorU3RyaW5nIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpwbHVnaW5NZXRhRGF0YUNhY2hlRGlyZWN0
b3J5KCkKK3sKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQorICAgIERFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCByZXN1bHQsICgpKTsKKyAgICBpZiAoIXJlc3VsdC5pc051bGwo
KSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgIFN0cmluZyBjYWNoZURpcmVjdG9yeTsK
KyNpZiBQTEFURk9STShRVCkKKyAgICBRU3RyaW5nIGRhdGFMb2NhdGlvbiA9IFFTdGFuZGFyZFBh
dGhzOjp3cml0YWJsZUxvY2F0aW9uKFFTdGFuZGFyZFBhdGhzOjpEYXRhTG9jYXRpb24pOworICAg
IFFTdHJpbmcgZGlyZWN0b3J5ID0gUUxhdGluMVN0cmluZygiJTElMiUzIik7CisgICAgZGlyZWN0
b3J5ID0gZGF0YUxvY2F0aW9uLmlzRW1wdHkoKSA/IGRpcmVjdG9yeS5hcmcoUURpcjo6aG9tZVBh
dGgoKSkgOiBkaXJlY3RvcnkuYXJnKGRhdGFMb2NhdGlvbik7CisgICAgZGlyZWN0b3J5ID0gZGly
ZWN0b3J5LmFyZyhRRGlyOjpzZXBhcmF0b3IoKSkuYXJnKFFMYXRpbjFTdHJpbmcoIi5RdFdlYktp
dCIpKTsKKyAgICBjYWNoZURpcmVjdG9yeSA9IHN0YXRpY19jYXN0PFN0cmluZz4oZGlyZWN0b3J5
KTsKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICBjYWNoZURpcmVjdG9yeSA9IGZpbGVuYW1lVG9T
dHJpbmcoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid2Via2l0Z3Rr
IiwgTlVMTCkpOworI2VuZGlmCisKKyAgICByZXN1bHQgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoY2FjaGVEaXJlY3RvcnksICJucGFwaV9tZXRhZGF0YV9jYWNoZSIpOworICAgIG1ha2VBbGxE
aXJlY3RvcmllcyhyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7CisjZWxzZQorICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworI2VuZGlmCit9CisKK3ZvaWQgTmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OnZhbGlkYXRlUGVyc2lzdGVudE1ldGFEYXRhQ2FjaGUoY29uc3Qg
UGx1Z2luUGF0aEhhc2hTZXQmIHVzZWRQbHVnaW5zKQoreworICAgIC8vIFJlbW92ZSBkZXNjcmlw
dG9yIGZpbGVzIGZvciBwbHVnaW5zIHRoYXQgd2Ugbm8gbG9uZ2VyIHVzZS4KKyAgICBWZWN0b3I8
U3RyaW5nPiBkZXNjcmlwdG9yRmlsZXMgPSBsaXN0RGlyZWN0b3J5KHBsdWdpbk1ldGFEYXRhQ2Fj
aGVEaXJlY3RvcnkoKSwgU3RyaW5nKCIuYmluIikpOworICAgIEhhc2hTZXQ8U3RyaW5nPiBmaWxl
c1RvS2VlcDsKKyAgICBmb3IgKFBsdWdpblBhdGhIYXNoU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9
IHVzZWRQbHVnaW5zLmJlZ2luKCk7IGl0ICE9IHVzZWRQbHVnaW5zLmVuZCgpOyArK2l0KQorICAg
ICAgICBmaWxlc1RvS2VlcC5hZGQobWV0YURhdGFEZXNjcmlwdG9yRmlsZVBhdGgoKml0KSk7CisK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVzY3JpcHRvckZpbGVzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIFN0cmluZyBmaWxlID0gZGVzY3JpcHRvckZpbGVzW2ldOworICAgICAgICBp
ZiAoIWZpbGVzVG9LZWVwLmNvbnRhaW5zKGZpbGUpKQorICAgICAgICAgICAgZGVsZXRlRmlsZShm
aWxlKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExV
R0lOX0FSQ0hJVEVDVFVSRShYMTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
UGx1Z2lucy9QbHVnaW5QYXRoSGFzaFNldC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdp
bnMvUGx1Z2luUGF0aEhhc2hTZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjk3YmVmYjUzODA3MWY3MzNiNmQ5
MWZiOTY2YjFkY2MxYzFmZjJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvUGx1Z2luUGF0aEhhc2hTZXQuaApAQCAtMCwwICsxLDM4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworLy8gV2UgdXNlIGEgTGlzdEhhc2hTZXQgc28gdGhhdCBwbHVnaW5zIHdpbGwgYmUgbG9hZGVk
IGZyb20gdGhlIGFkZGl0aW9uYWwgcGx1Z2lucyBkaXJlY3RvcmllcyBmaXJzdAorLy8gKHdoaWNo
IGluIHR1cm4gbWVhbnMgdGhvc2UgcGx1Z2lucyB3aWxsIGJlIHByZWZlcnJlZCBpZiB0d28gcGx1
Z2lucyBjbGFpbSB0aGUgc2FtZSBNSU1FIHR5cGUpLgorI2lmIE9TKFdJTkRPV1MpCit0eXBlZGVm
IExpc3RIYXNoU2V0PFN0cmluZywgMzIsIENhc2VGb2xkaW5nSGFzaD4gUGx1Z2luUGF0aEhhc2hT
ZXQ7CisjZWxzZQordHlwZWRlZiBMaXN0SGFzaFNldDxTdHJpbmcsIDMyPiBQbHVnaW5QYXRoSGFz
aFNldDsKKyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQv
U2hhcmVhYmxlQml0bWFwUXQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1NoYXJlYWJs
ZUJpdG1hcFF0LmNwcAppbmRleCBiMGFiMmVjMTY1MzJkZTljNjU5NzJlMDNjZTE3MjljY2M3NDU4
ODM4Li4xZWJkZmJjOGIyYjE5Yzg4NWJhYTY5MzE1MmFkMTUzZjBmMjRjYzQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2luY2x1ZGUgPFFJbWFnZT4KICNpbmNsdWRlIDxRUGFpbnRlcj4KKyNpbmNsdWRl
IDxRdEdsb2JhbD4KICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CkBAIC02NCw4ICs2NSwxMyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgZHN0UG9pbnQsCiAgICAgcGFp
bnRlci0+ZHJhd0ltYWdlKGRzdFBvaW50LCBpbWFnZSwgUVJlY3Qoc3JjUmVjdCkpOwogfQogCi12
b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiAvKmNvbnRleHQqLywg
ZmxvYXQgLypzY2FsZUZhY3RvciovLCBjb25zdCBJbnRQb2ludCYgLypkc3RQb2ludCovLCBjb25z
dCBJbnRSZWN0JiAvKnNyY1JlY3QqLykKK3ZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYg
ZHN0UG9pbnQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCiB7CisgICAgaWYgKHFGdXp6eUNvbXBh
cmUoc2NhbGVGYWN0b3IsIDEuMGYpKSB7CisgICAgICAgIHBhaW50KGNvbnRleHQsIGRzdFBvaW50
LCBzcmNSZWN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIC8vIFNlZSA8aHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NjYzPi4KICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJj
ZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggMmVhM2Y2ZWFmYTkwMmY1NThkMmJmZDM1Y2QyMTRk
ZDBiNzY0NjBjNy4uMDE4NWQwODI2OTllOTIzNTUwMDc1YWI5NGU0MjE1YTI5Y2ExMTY3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9U
YXJnZXQucHJpCkBAIC0zNzcsNiArMzc3LDcgQEAgU09VUkNFUyArPSBcCiAgICAgUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIFwKICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdp
blByb2Nlc3MuY3BwIFwKICAgICBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNw
cCBcCisgICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuY3BwIFwKICAg
ICBQbHVnaW5Qcm9jZXNzL3F0L1BsdWdpbkNvbnRyb2xsZXJQcm94eVF0LmNwcCBcCiAgICAgUGx1
Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcCBcCiAgICAgUGx1Z2luUHJvY2Vz
cy9xdC9QbHVnaW5Qcm9jZXNzUXQuY3BwIFwKQEAgLTUzMCw4ICs1MzEsOCBAQCBTT1VSQ0VTICs9
IFwKICAgICBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwIFwKICAgICBV
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAgXAogICAgIFVJUHJvY2Vz
cy9QbHVnaW5zL1dlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5jcHAgXAotICAgIFVJUHJvY2Vzcy9Q
bHVnaW5zL3F0L1BsdWdpblByb2Nlc3NQcm94eVF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL1BsdWdp
bnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcCBcCisgICAgVUlQcm9jZXNzL1BsdWdpbnMv
dW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcCBcCiAgICAgVUlQcm9jZXNzL1Jlc3BvbnNp
dmVuZXNzVGltZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvVGlsZWREcmF3aW5nQXJlYVByb3h5LmNw
cCBcCiAgICAgVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAppbmRleCA4
ZGJmYjExMDFlMGVhZDQ5OWExYmUxZjc2NDIyZDY0Mjg1NDk5MjU4Li40YWZmY2Q1OTkyN2FkZTky
ZmUyNjE4YWI2N2VjNmQxMDU4NjljYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCiAjaWYgUExBVEZPUk0oUVQpCiBjbGFzcyBRTG9jYWxTb2NrZXQ7CkBAIC03Myw2ICs3
NCw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGdldFByb2Nlc3NUeXBlRnJvbVN0cmlu
Zyhjb25zdCBjaGFyKiwgUHJvY2Vzc1R5cGUmKTsKIAorICAgIHN0YXRpYyBXVEY6OkNTdHJpbmcg
cGxhdGZvcm1FeGVjdXRhYmxlUGF0aChQcm9jZXNzVHlwZSk7CisKIHByaXZhdGU6CiAgICAgUHJv
Y2Vzc0xhdW5jaGVyKENsaWVudCosIGNvbnN0IExhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1By
b2Nlc3NMYXVuY2hlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIv
Z3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKaW5kZXggYmJiYWUyZTY4MDkyODQwMjU1ZTZlYWJk
NGNmNWVjNTQwYzRjZjFhOC4uZmY3ZmNiYzI4MDQ2MzA0ODUyMGEzNGQwZWUxYTk5OWI3NTkwZTI3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9j
ZXNzTGF1bmNoZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hl
ci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcApAQCAtNzIsOCArNzIsMTAgQEAgc3RhdGljIHZv
aWQgY2hpbGRGaW5pc2hlZEZ1bmN0aW9uKEdQaWQsIGdpbnQgc3RhdHVzLCBncG9pbnRlciB1c2Vy
RGF0YSkKICAgICBjbG9zZShHUE9JTlRFUl9UT19JTlQodXNlckRhdGEpKTsKIH0KIAotc3RhdGlj
IENTdHJpbmcgZmluZFdlYktpdFByb2Nlc3MoY29uc3QgY2hhciogcHJvY2Vzc05hbWUpCitDU3Ry
aW5nIFByb2Nlc3NMYXVuY2hlcjo6cGxhdGZvcm1FeGVjdXRhYmxlUGF0aChQcm9jZXNzVHlwZSB0
eXBlKQogeworICAgIGNvbnN0IGNoYXIqIHByb2Nlc3NOYW1lID0gdHlwZSA9PSBXZWJQcm9jZXNz
ID8gZ1dlYktpdFdlYlByb2Nlc3NOYW1lIDogZ1dlYktpdFBsdWdpblByb2Nlc3NOYW1lOworCiAg
ICAgY29uc3QgY2hhciogZXhlY0RpcmVjdG9yeSA9IGdfZ2V0ZW52KCJXRUJLSVRfRVhFQ19QQVRI
Iik7CiAgICAgaWYgKGV4ZWNEaXJlY3RvcnkpIHsKICAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRo
ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZpbGVuYW1lVG9TdHJpbmcoZXhlY0RpcmVjdG9y
eSksIHByb2Nlc3NOYW1lKTsKQEAgLTExMSwxMCArMTEzLDEwIEBAIHZvaWQgUHJvY2Vzc0xhdW5j
aGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIENTdHJp
bmcgYmluYXJ5UGF0aCA9IGZpbmRXZWJLaXRQcm9jZXNzKG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNz
VHlwZSA9PSBQcm9jZXNzTGF1bmNoZXI6OldlYlByb2Nlc3MgPyBnV2ViS2l0V2ViUHJvY2Vzc05h
bWUgOiBnV2ViS2l0UGx1Z2luUHJvY2Vzc05hbWUpOworICAgIENTdHJpbmcgYmluYXJ5UGF0aCA9
IHBsYXRmb3JtRXhlY3V0YWJsZVBhdGgobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlKTsKICAg
ICBHT3duUHRyPGdjaGFyPiBzb2NrZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIHNvY2tldHNbMF0p
KTsKICAgICBjaGFyKiBhcmd2WzNdOwotICAgIGFyZ3ZbMF0gPSBjb25zdF9jYXN0PGNoYXIqPihi
aW5hcnlQYXRoLmRhdGEoKSk7CisgICAgYXJndlswXSA9IGJpbmFyeVBhdGgubXV0YWJsZURhdGEo
KTsKICAgICBhcmd2WzFdID0gc29ja2V0LmdldCgpOwogICAgIGFyZ3ZbMl0gPSAwOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVu
Y2hlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vz
c0xhdW5jaGVyTWFjLm1tCmluZGV4IDI5OWYwMjM0ODFmOTkzNGI3MDFjZDIyMWMzOTU5ODAzOTcy
NWJmZjQuLjY0ODg1YjMyNmEyNzExZjMzMzJhZjE4NTgxNTgyN2ZiMDU5ZGRhNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vz
c0xhdW5jaGVyTWFjLm1tCkBAIC0xOTcsNCArMTk3LDE3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVy
OjpwbGF0Zm9ybUludmFsaWRhdGUoKQogewogfQogCitDU3RyaW5nIFByb2Nlc3NMYXVuY2hlcjo6
cGxhdGZvcm1FeGVjdXRhYmxlUGF0aChQcm9jZXNzVHlwZSB0eXBlKQoreworICAgIE5TQnVuZGxl
ICp3ZWJLaXQyQnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFw
cGxlLldlYktpdDIiXTsKKworICAgIE5TU3RyaW5nICpwcm9jZXNzUGF0aDsKKyAgICBpZiAodHlw
ZSA9PSBQcm9jZXNzTGF1bmNoZXI6OlBsdWdpblByb2Nlc3MpCisgICAgICAgIHByb2Nlc3NQYXRo
ID0gW3dlYktpdDJCdW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJQbHVnaW5Qcm9j
ZXNzLmFwcCJdOworICAgIGVsc2UKKyAgICAgICAgcHJvY2Vzc1BhdGggPSBbd2ViS2l0MkJ1bmRs
ZSBwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZTpAIldlYlByb2Nlc3MuYXBwIl07CisKKyAgICBy
ZXR1cm4gW1tbTlNCdW5kbGUgYnVuZGxlV2l0aFBhdGg6cHJvY2Vzc1BhdGhdIGV4ZWN1dGFibGVQ
YXRoXSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9j
ZXNzTGF1bmNoZXJRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQv
UHJvY2Vzc0xhdW5jaGVyUXQuY3BwCmluZGV4IGI3MjVkN2I5MjRjNmY0YjUwZDdlMDM4YjhhMmZh
NGJlYzI4MTcxNGIuLjZkMTBmNjViOTA0YjRjNWEzYzYyODgwMzUzNTZiMmNmYjhmNTA4YjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1
bmNoZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1By
b2Nlc3NMYXVuY2hlclF0LmNwcApAQCAtMzIsMTIgKzMyLDE0IEBACiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgogI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UURlYnVnPgor
I2luY2x1ZGUgPFFEaXI+CiAjaW5jbHVkZSA8UUZpbGU+CiAjaW5jbHVkZSA8UUxvY2FsU2VydmVy
PgogI2luY2x1ZGUgPFFNZXRhVHlwZT4KICNpbmNsdWRlIDxRUHJvY2Vzcz4KICNpbmNsdWRlIDxR
U3RyaW5nPgogI2luY2x1ZGUgPFF0Q29yZS9xZ2xvYmFsLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1
ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KQEAgLTEwMywxMSArMTA1LDggQEAgdm9p
ZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogewogICAgIFFTdHJpbmcgYXBwbGlj
YXRpb25QYXRoID0gUUxhdGluMVN0cmluZygiJTEgJTIiKTsKIAotICAgIGlmIChRRmlsZTo6ZXhp
c3RzKFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uRGlyUGF0aCgpICsgUUxhdGluMVN0cmlu
ZygiL1F0V2ViUHJvY2VzcyIpKSkgewotICAgICAgICBhcHBsaWNhdGlvblBhdGggPSBhcHBsaWNh
dGlvblBhdGguYXJnKFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uRGlyUGF0aCgpICsgUUxh
dGluMVN0cmluZygiL1F0V2ViUHJvY2VzcyIpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBhcHBs
aWNhdGlvblBhdGggPSBhcHBsaWNhdGlvblBhdGguYXJnKFFMYXRpbjFTdHJpbmcoIlF0V2ViUHJv
Y2VzcyIpKTsKLSAgICB9CisgICAgQ1N0cmluZyBleGVjdXRhYmxlUGF0aCA9IHBsYXRmb3JtRXhl
Y3V0YWJsZVBhdGgobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlKTsKKyAgICBhcHBsaWNhdGlv
blBhdGggPSBhcHBsaWNhdGlvblBhdGguYXJnKFFMYXRpbjFTdHJpbmcoZXhlY3V0YWJsZVBhdGgu
ZGF0YSgpKSk7CiAKICNpZiBPUyhEQVJXSU4pCiAgICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcg
cG9ydC4KQEAgLTE5MSw2ICsxOTAsMTggQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OnBsYXRmb3Jt
SW52YWxpZGF0ZSgpCiAKIH0KIAorQ1N0cmluZyBQcm9jZXNzTGF1bmNoZXI6OnBsYXRmb3JtRXhl
Y3V0YWJsZVBhdGgoUHJvY2Vzc1R5cGUgdHlwZSkKK3sKKyAgICBRTGF0aW4xU3RyaW5nIGV4ZWN1
dGFibGVOYW1lID0gdHlwZSA9PSBQcm9jZXNzTGF1bmNoZXI6OldlYlByb2Nlc3MgPworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJRdFdlYlByb2Nlc3Mi
KSA6IFFMYXRpbjFTdHJpbmcoIlF0V2ViUGx1Z2luUHJvY2VzcyIpOworCisgICAgUVN0cmluZyBl
eHBlY3RlZFBhdGggPSBRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlvbkRpclBhdGgoKSArIFFE
aXI6OnNlcGFyYXRvcigpICsgZXhlY3V0YWJsZU5hbWU7CisgICAgaWYgKFFGaWxlOjpleGlzdHMo
ZXhwZWN0ZWRQYXRoKSkKKyAgICAgICAgcmV0dXJuIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihl
eHBlY3RlZFBhdGgpOworCisgICAgcmV0dXJuIENTdHJpbmcoZXhlY3V0YWJsZU5hbWUubGF0aW4x
KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2luY2x1ZGUgIlByb2Nlc3NMYXVu
Y2hlclF0Lm1vYyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkluZm9TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5JbmZvU3RvcmUuY3BwCmluZGV4IGYzNzA5OWYyYzJhNDJkMjJlMjcwMjVhZjY0MWUxYmQ3
ZGEyMzgyMTEuLjljOTgyYzMxMTdiOWE3Y2YwMjQwZjgwMWVkMWZlNjkyN2Y0OWQ0ZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3Jl
LmNwcApAQCAtMjYsMTEgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
UGx1Z2luSW5mb1N0b3JlLmgiCiAKKyNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbk1vZHVsZS5oIgor
I2luY2x1ZGUgIlBsdWdpblBhdGhIYXNoU2V0LmgiCiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5m
by5oIgogI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5
cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDx3dGYvTGlzdEhh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CkBAIC02MSwyMCArNjIsMTIgQEAgc3RhdGljIHZvaWQgYWRkRnJvbVZlY3RvcihUJiBo
YXNoU2V0LCBjb25zdCBVJiB2ZWN0b3IpCiAgICAgICAgIGhhc2hTZXQuYWRkKHZlY3RvcltpXSk7
CiB9CiAKLS8vIFdlIHVzZSBhIExpc3RIYXNoU2V0IHNvIHRoYXQgcGx1Z2lucyB3aWxsIGJlIGxv
YWRlZCBmcm9tIHRoZSBhZGRpdGlvbmFsIHBsdWdpbnMgZGlyZWN0b3JpZXMgZmlyc3QKLS8vICh3
aGljaCBpbiB0dXJuIG1lYW5zIHRob3NlIHBsdWdpbnMgd2lsbCBiZSBwcmVmZXJyZWQgaWYgdHdv
IHBsdWdpbnMgY2xhaW0gdGhlIHNhbWUgTUlNRSB0eXBlKS4KLSNpZiBPUyhXSU5ET1dTKQotdHlw
ZWRlZiBMaXN0SGFzaFNldDxTdHJpbmcsIDMyLCBDYXNlRm9sZGluZ0hhc2g+IFBhdGhIYXNoU2V0
OwotI2Vsc2UKLXR5cGVkZWYgTGlzdEhhc2hTZXQ8U3RyaW5nLCAzMj4gUGF0aEhhc2hTZXQ7Ci0j
ZW5kaWYKLQogdm9pZCBQbHVnaW5JbmZvU3RvcmU6OmxvYWRQbHVnaW5zSWZOZWNlc3NhcnkoKQog
ewogICAgIGlmIChtX3BsdWdpbkxpc3RJc1VwVG9EYXRlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBQYXRoSGFzaFNldCB1bmlxdWVQbHVnaW5QYXRoczsKKyAgICBQbHVnaW5QYXRoSGFzaFNldCB1
bmlxdWVQbHVnaW5QYXRoczsKIAogICAgIC8vIEZpcnN0LCBsb2FkIHBsdWctaW5zIGZyb20gdGhl
IGFkZGl0aW9uYWwgcGx1Zy1pbnMgZGlyZWN0b3JpZXMgc3BlY2lmaWVkLgogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9hZGRpdGlvbmFsUGx1Z2luc0RpcmVjdG9yaWVzLnNpemUoKTsgKytp
KQpAQCAtODgsMTMgKzgxLDE3IEBAIHZvaWQgUGx1Z2luSW5mb1N0b3JlOjpsb2FkUGx1Z2luc0lm
TmVjZXNzYXJ5KCkKICAgICAvLyBUaGVuIGxvYWQgcGx1Zy1pbnMgdGhhdCBhcmUgbm90IGluIHRo
ZSBzdGFuZGFyZCBwbHVnLWlucyBkaXJlY3Rvcmllcy4KICAgICBhZGRGcm9tVmVjdG9yKHVuaXF1
ZVBsdWdpblBhdGhzLCBpbmRpdmlkdWFsUGx1Z2luUGF0aHMoKSk7CiAKKyNpZiBQTFVHSU5fQVJD
SElURUNUVVJFKFgxMSkKKyAgICBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6dmFsaWRhdGVQZXJzaXN0
ZW50TWV0YURhdGFDYWNoZSh1bmlxdWVQbHVnaW5QYXRocyk7CisjZW5kaWYKKwogICAgIFZlY3Rv
cjxQbHVnaW5Nb2R1bGVJbmZvPiBwbHVnaW5zOwogCi0gICAgUGF0aEhhc2hTZXQ6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IHVuaXF1ZVBsdWdpblBhdGhzLmVuZCgpOwotICAgIGZvciAoUGF0aEhhc2hT
ZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdW5pcXVlUGx1Z2luUGF0aHMuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KQorICAgIFBsdWdpblBhdGhIYXNoU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSB1
bmlxdWVQbHVnaW5QYXRocy5lbmQoKTsKKyAgICBmb3IgKFBsdWdpblBhdGhIYXNoU2V0Ojpjb25z
dF9pdGVyYXRvciBpdCA9IHVuaXF1ZVBsdWdpblBhdGhzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkKICAgICAgICAgbG9hZFBsdWdpbihwbHVnaW5zLCAqaXQpOwogCi0gICAgbV9wbHVnaW5zLnN3
YXAocGx1Z2lucyk7CisgICAgbV9wbHVnaW5zLnN3YXAocGx1Z2lucyk7ICAgIAogICAgIG1fcGx1
Z2luTGlzdElzVXBUb0RhdGUgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCmluZGV4IGE3NWQ1YjEzODdj
ZDhiZGE5ZGM1MjMxMmQ4MjZmNGFhMGI0Njk2NTYuLjY4MDA1ZjE0YjUwZWI3YzFlMDYzZmI3NTE1
ZjBkYjk4NTRiNTEwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCkBAIC04MCw2ICs4MCwxMCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGJvb2wgY3JlYXRlUHJvcGVydHlMaXN0RmlsZShjb25zdCBQbHVnaW5Nb2R1bGVJ
bmZvJik7CiAjZW5kaWYKIAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgIHN0YXRp
YyBib29sIGNyZWF0ZU1ldGFEYXRhRGVzY3JpcHRvckZpbGUoY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFBs
dWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0IFBsdWdpbk1vZHVs
ZUluZm8mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
Z3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNGM4NTc3MmEyN2Y3YjcwNzJhZmY2YTExMzdjOTI3NDg4NWE4ZjY0My4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlh
IFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsdWdpblBy
b2Nlc3NQcm94eS5oIgotCi0jaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotCi0jaW5jbHVkZSAi
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgUGx1Z2luUHJvY2Vz
c1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NF
U1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1
Z2luUHJvY2Vzc1Byb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
bWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQppbmRleCBiMDcyNDE3ZmVhMjgzZjkzOTJhNTVk
ZDk5YWMzMzBmZTdhYzUwMzAwLi4xMjAwZjE3MGMxMDUwNmZmOTgxMGZjZWQ5YjM3ZTRhMWEyYzVl
MmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1
Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lt
cG9ydCAiRW52aXJvbm1lbnRWYXJpYWJsZXMuaCIKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgIlByb2Nlc3NMYXVuY2hlci5oIgogI2ltcG9ydCAi
V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbXBvcnQgPHNwYXduLmg+CkBAIC03MCw5ICs3MSw4IEBAIGJvb2wgUGx1Z2luUHJvY2Vzc1By
b3h5OjpjcmVhdGVQcm9wZXJ0eUxpc3RGaWxlKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdp
bikKICAgICBOU0J1bmRsZSAqd2ViS2l0MkJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRl
bnRpZmllcjpAImNvbS5hcHBsZS5XZWJLaXQyIl07CiAgICAgTlNTdHJpbmcgKmZyYW1ld29ya3NQ
YXRoID0gW1t3ZWJLaXQyQnVuZGxlIGJ1bmRsZVBhdGhdIHN0cmluZ0J5RGVsZXRpbmdMYXN0UGF0
aENvbXBvbmVudF07CiAgICAgY29uc3QgY2hhciogZnJhbWV3b3JrRXhlY3V0YWJsZVBhdGggPSBb
W3dlYktpdDJCdW5kbGUgZXhlY3V0YWJsZVBhdGhdIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl07
Ci0gICAgCi0gICAgTlNTdHJpbmcgKnByb2Nlc3NQYXRoID0gW3dlYktpdDJCdW5kbGUgcGF0aEZv
ckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJQbHVnaW5Qcm9jZXNzLmFwcCJdOwotICAgIE5TU3RyaW5n
ICpwcm9jZXNzQXBwRXhlY3V0YWJsZVBhdGggPSBbW05TQnVuZGxlIGJ1bmRsZVdpdGhQYXRoOnBy
b2Nlc3NQYXRoXSBleGVjdXRhYmxlUGF0aF07CisKKyAgICBDU3RyaW5nIHByb2Nlc3NBcHBFeGVj
dXRhYmxlUGF0aCA9IFByb2Nlc3NMYXVuY2hlcjo6cGxhdGZvcm1FeGVjdXRhYmxlUGF0aChQcm9j
ZXNzTGF1bmNoZXI6OlBsdWdpblByb2Nlc3MpOwogCiAgICAgQ1N0cmluZyBwbHVnaW5QYXRoU3Ry
aW5nID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpbi5wYXRoKTsKIApAQCAtOTEsNyAr
OTEsNyBAQCBib29sIFBsdWdpblByb2Nlc3NQcm94eTo6Y3JlYXRlUHJvcGVydHlMaXN0RmlsZShj
b25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCiAgICAgaWYgKCFbZnJhbWV3b3Jrc1BhdGgg
aGFzUHJlZml4OkAiL1N5c3RlbS8iXSkKICAgICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXMuYXBw
ZW5kVmFsdWUoIkRZTERfRlJBTUVXT1JLX1BBVEgiLCBbZnJhbWV3b3Jrc1BhdGggZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uXSwgJzonKTsKIAotICAgIGNvbnN0IGNoYXIqIGFyZ3NbXSA9IHsgW3By
b2Nlc3NBcHBFeGVjdXRhYmxlUGF0aCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dLCBmcmFtZXdv
cmtFeGVjdXRhYmxlUGF0aCwgIi10eXBlIiwgInBsdWdpbnByb2Nlc3MiLCAiLWNyZWF0ZVBsdWdp
bk1JTUVUeXBlc1ByZWZlcmVuY2VzIiwgcGx1Z2luUGF0aFN0cmluZy5kYXRhKCksIDAgfTsKKyAg
ICBjb25zdCBjaGFyKiBhcmdzW10gPSB7IHByb2Nlc3NBcHBFeGVjdXRhYmxlUGF0aC5kYXRhKCks
IGZyYW1ld29ya0V4ZWN1dGFibGVQYXRoLCAiLXR5cGUiLCAicGx1Z2lucHJvY2VzcyIsICItY3Jl
YXRlUGx1Z2luTUlNRVR5cGVzUHJlZmVyZW5jZXMiLCBwbHVnaW5QYXRoU3RyaW5nLmRhdGEoKSwg
MCB9OwogCiAgICAgcGlkX3QgcGlkOwogICAgIGludCByZXN1bHQgPSBwb3NpeF9zcGF3bigmcGlk
LCBhcmdzWzBdLCAwLCAmYXR0ciwgY29uc3RfY2FzdDxjaGFyKiBjb25zdCo+KGFyZ3MpLCBlbnZp
cm9ubWVudFZhcmlhYmxlcy5lbnZpcm9ubWVudFBvaW50ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlR
dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNTIxZTBhZjlhNmEwNzQ0YzJk
YzBlMDZmNjUxNGZjOTRiMzQ5ZjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2luUHJv
Y2Vzc1Byb3h5UXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBOb2tpYSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIK
LQotI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLQotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZv
cm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJv
eHlVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2lu
UHJvY2Vzc1Byb3h5VW5peC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ3ZmZhYTU3YjA4ZTBkOTZiYzhiZjUz
MjY4NGRlNjBmMTc2OWIyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKQEAgLTAsMCArMSwx
MDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIFVuaXZlcnNpdHkgb2YgU3plZ2VkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUGx1Z2luUHJvY2Vzc1Byb3h5LmgiCisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisK
KyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAi
UHJvY2Vzc0xhdW5jaGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5j
bHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8c3Bhd24uaD4KKyNpbmNsdWRlIDxzeXMvd2FpdC5o
PgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBs
dWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit7Cit9CisKK2Jv
b2wgUGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGVNZXRhRGF0YURlc2NyaXB0b3JGaWxlKGNvbnN0
IFN0cmluZyYgcGx1Z2luUGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICBDU3Ry
aW5nIGV4ZWN1dGFibGVQYXRoID0gUHJvY2Vzc0xhdW5jaGVyOjpwbGF0Zm9ybUV4ZWN1dGFibGVQ
YXRoKFByb2Nlc3NMYXVuY2hlcjo6UGx1Z2luUHJvY2Vzcyk7CisgICAgY2hhciBvcHRpb25bXSA9
ICItY3JlYXRlTWV0YURhdGFEZXNjcmlwdGlvbiI7CisgICAgQ1N0cmluZyBwbHVnaW5QYXRoQ1N0
cmluZyA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwbHVnaW5QYXRoKTsKKyAgICBDU3RyaW5n
IGZpbGVQYXRoQ1N0cmluZyA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7Cisg
ICAgY2hhciogYXJnc1tdID0geworICAgICAgICBleGVjdXRhYmxlUGF0aC5tdXRhYmxlRGF0YSgp
LAorICAgICAgICBvcHRpb24sCisgICAgICAgIHBsdWdpblBhdGhDU3RyaW5nLm11dGFibGVEYXRh
KCksCisgICAgICAgIGZpbGVQYXRoQ1N0cmluZy5tdXRhYmxlRGF0YSgpLAorICAgICAgICAwCisg
ICAgfTsKKworICAgIHBpZF90IHBpZDsKKyAgICBpZiAocG9zaXhfc3Bhd24oJnBpZCwgYXJnc1sw
XSwgMCwgMCwgYXJncywgOjplbnZpcm9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gV2FpdCBhdCBtb3N0IDMgc2Vjb25kcyBmb3IgdGhlIGNoaWxkLiBUaGlzIGlzIGFuIGVtcGly
aWNhbCBsaW1pdC4KKyAgICAvLyBVbmZvcnR1bmF0ZWx5IHNvbWUgcGx1Z2lucyAobW9zdGx5IHRo
ZSBuc3BsdWdpbndyYXBwZXIgYmFzZWQgb25lcykKKyAgICAvLyBuZWVkIHJlYWxseSBsb25nIHRp
bWUgdG8gc2V0IHVwLgorICAgIGludCBjaGlsZFN0YXR1czsKKyAgICB1bnNpZ25lZCByZXRyeUNv
dW50ID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBtYXhXYWl0VGltZU1TID0gMzAwMDsKKyAgICBj
b25zdCB1bnNpZ25lZCBzbGVlcFRpbWVNUyA9IDUwOworICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICAgIGludCB3YWl0UmVzdWx0OworICAgICAgICB3aGlsZSAoKHdhaXRSZXN1bHQgPSB3YWl0cGlk
KHBpZCwgJmNoaWxkU3RhdHVzLCBXTk9IQU5HKSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsg
fQorICAgICAgICBBU1NFUlQod2FpdFJlc3VsdCAhPSAtMSk7CisgICAgICAgIGlmICh3YWl0UmVz
dWx0KSB7CisgICAgICAgICAgICBBU1NFUlQod2FpdFJlc3VsdCA9PSBwaWQpOworICAgICAgICAg
ICAgLy8gU3VjY2Vzcy4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHJldHJ5Q291bnQrKyA+PSBtYXhXYWl0VGltZU1TIC8gc2xlZXBUaW1lTVMpIHsKKyAgICAg
ICAgICAgIGtpbGwocGlkLCBTSUdLSUxMKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorCisgICAgICAgIHRpbWVzcGVjIHNsZWVwVGltZSA9IHsgMCwgc2xlZXBUaW1lTVMg
KiAxZSs2IH07CisgICAgICAgIGludCBzbGVlcFJlc3VsdDsKKyAgICAgICAgd2hpbGUgKChzbGVl
cFJlc3VsdCA9IG5hbm9zbGVlcCgmc2xlZXBUaW1lLCAmc2xlZXBUaW1lKSkgPT0gLTEgJiYgZXJy
bm8gPT0gRUlOVFIpIHsgfQorICAgICAgICBBU1NFUlQoIXNsZWVwUmVzdWx0KTsKKyAgICB9CisK
KyAgICBpZiAoIVdJRkVYSVRFRChjaGlsZFN0YXR1cykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoV0VYSVRTVEFUVVMoY2hpbGRTdGF0dXMpICE9IEVYSVRfU1VDQ0VTUykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3Nl
ckZ1bmNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKaW5kZXggYThhODA2ZTAxOWFlNDZjZmMwYTU5MGFkZjUx
MjcxNmVkYzQzNWYxYy4uYzA2NjAyMjU5MzkwOTE3OGUzYjcyYjM5ODYwZDM4N2Q0YjQ0NTljZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlQnJvd3NlckZ1bmNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCkBAIC01MjgsMjUgKzUyOCwx
MCBAQCBzdGF0aWMgTlBFcnJvciBOUE5fR2V0VmFsdWUoTlBQIG5wcCwgTlBOVmFyaWFibGUgdmFy
aWFibGUsIHZvaWQgKnZhbHVlKQogICAgICAgIGNhc2UgTlBOVlN1cHBvcnRzV2luZG93bGVzczoK
ICAgICAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IHRydWU7CiAgICAgICAg
ICAgIGJyZWFrOwotCiAgICAgICAgY2FzZSBOUE5WVG9vbGtpdDogewotI2lmIFBMQVRGT1JNKEdU
SykKLSAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZSkgPSAyOwot
I2Vsc2UKLSAgICAgICAgICAgY29uc3QgdWludDMyX3QgZXhwZWN0ZWRHVEtUb29sS2l0VmVyc2lv
biA9IDI7Ci0KLSAgICAgICAgICAgLy8gU2V0IHRoZSBleHBlY3RlZCBHVEsgdmVyc2lvbiBpZiB3
ZSBrbm93IHRoYXQgdGhpcyBwbHVnaW4gbmVlZHMgaXQgb3IgaWYgdGhlIHBsdWdpbiBjYWxsIHVz
Ci0gICAgICAgICAgIC8vIHdpdGggYSBudWxsIGluc3RhbmNlLiBUaGUgbGF0dGVyIGlzIHRoZSBj
YXNlIHdpdGggTlNQbHVnaW5XcmFwcGVyIHBsdWdpbnMuCi0gICAgICAgICAgIGJvb2wgcmVxdWly
ZXNHVEtUb29sS2l0VmVyc2lvbjsKLSAgICAgICAgICAgaWYgKCFucHApCi0gICAgICAgICAgICAg
ICByZXF1aXJlc0dUS1Rvb2xLaXRWZXJzaW9uID0gdHJ1ZTsKLSAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICBSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IHBsdWdpbiA9IE5ldHNjYXBlUGx1
Z2luOjpmcm9tTlBQKG5wcCk7Ci0gICAgICAgICAgICAgICByZXF1aXJlc0dUS1Rvb2xLaXRWZXJz
aW9uID0gcGx1Z2luLT5xdWlya3MoKS5jb250YWlucyhQbHVnaW5RdWlya3M6OlJlcXVpcmVzR1RL
VG9vbEtpdCk7Ci0gICAgICAgICAgIH0KLQotICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDx1
aW50MzJfdCo+KHZhbHVlKSA9IHJlcXVpcmVzR1RLVG9vbEtpdFZlcnNpb24gPyBleHBlY3RlZEdU
S1Rvb2xLaXRWZXJzaW9uIDogMDsKLSNlbmRpZgorICAgICAgICAgICAvLyBHdGsgYmFzZWQgcGx1
Z2lucyBuZWVkIHRvIGJlIGFzc3VyZWQgYWJvdXQgdGhlIHRvb2xraXQgdmVyc2lvbi4KKyAgICAg
ICAgICAgY29uc3QgdWludDMyX3QgZXhwZWN0ZWRHdGtUb29sS2l0VmVyc2lvbiA9IDI7CisgICAg
ICAgICAgICpyZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4odmFsdWUpID0gZXhwZWN0ZWRHdGtU
b29sS2l0VmVyc2lvbjsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9xdC9QbHVnaW5NYWluUXQuY3BwIGIvU291cmNlL1dlYktpdDIvcXQv
UGx1Z2luTWFpblF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDVjOTNiNTdiM2I5ZWNlNTQzNmMwNmQxNzY0
MzNiZDI2OWE5MWQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvcXQvUGx1Z2lu
TWFpblF0LmNwcApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBVbml2
ZXJzaXR5IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8UUxpYnJhcnk+CisjaW5jbHVkZSA8UXRHbG9iYWw+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworUV9ERUNMX0lNUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01h
aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQoreworICAgIHJldHVybiBXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluKGFyZ2MsIGFy
Z3YpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL3F0d2Via2l0LWV4cG9ydC5tYXAgYi9Tb3VyY2Uv
cXR3ZWJraXQtZXhwb3J0Lm1hcAppbmRleCBiNzc2OTNjNDliZTJiMWU0Y2RkMTE3ZWJiNWJkNWNi
Y2U2Mjc2YTQyLi5mNTRkNTg0OTQxZjQxZjY1OTZlNzVhNmRkMWM5OGZjODY0OGRlNTNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvcXR3ZWJraXQtZXhwb3J0Lm1hcAorKysgYi9Tb3VyY2UvcXR3ZWJraXQt
ZXhwb3J0Lm1hcApAQCAtOTYsNiArOTYsNyBAQCBxd2tfMS4wIHsKIAogICAgICAgICAjIFdlYktp
dCAyIEhlbHBlcnMKICAgICAgICAgV2ViS2l0OjpXZWJQcm9jZXNzTWFpblF0KjsKKyAgICAgICAg
V2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFpbio7CiAgICAgICAgIFdURjo6ZmFzdE1hbGxvYyo7CiAg
ICAgICAgIFdURjo6ZmFzdEZyZWUqOwogICAgICAgICBXVEY6OmZhc3RaZXJvZWRNYWxsb2MqOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGI3MzY3
ZTE5MGNmYmZiNWNmYTRmNDQ1ZjkyODJhMWVkYTEzZDExODQuLjdkNGMyNjI3MTQ1ODdjMjU5MThm
NDBmMzg5YmMxMzYxNjAzZjc3YTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMi0xNSAgQmFsYXpzIEtlbGVt
ZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIFNldCB1cCBwbHVn
aW4gcHJvY2VzcyBvbiBVbml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MjEyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlZW5hYmxlIHBsdWdpbnMuIFRoZXkgc2hvdWxkIG5vdCBiZSBhIHNvdXJjZQor
ICAgICAgICBvZiBwcm9ibGVtcyBub3cgdGhhdCB3ZSBoYXZlIGEgd2F5IG9mIHJ1bm5pbmcKKyAg
ICAgICAgdGhlbSBvdXQtb2YtcHJvY2Vzcy4KKworICAgICAgICAqIHFtYWtlL21rc3BlY3MvZmVh
dHVyZXMvZmVhdHVyZXMucHJmOgorCiAyMDExLTEyLTE1ICBBbGV4YW5kZXIgRsOmcsO4eSAgPGFo
ZkAweDkwLmRrPgogCiAgICAgICAgIFtRdF0gUXRXZWJLaXQgZmFpbHMgdG8gYnVpbGQgb24gTWFj
IE9TIFggYWZ0ZXIgcjEwMjc3NgpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0
dXJlcy9mZWF0dXJlcy5wcmYgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVz
LnByZgppbmRleCBjODM3YzhmMWU3ZjdlZjA4YzY1MGM1MjZmYzA0OTYyZjEwOWIzZDM4Li5lOWY5
ZmFhODFhNzY5YjMzMGFhZGQ3MzYxZWY0YjkyODQzYjE5YjBmIDEwMDY0NAotLS0gYS9Ub29scy9x
bWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgorKysgYi9Ub29scy9xbWFrZS9ta3Nw
ZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgpAQCAtMTA5LDEzICsxMDksMTIgQEAgaGF2ZVF0KDQp
OnVuaXg6IW1hYzohZW1iZWRkZWQgewogfQogCiAjIE5ldHNjYXBlIHBsdWdpbnMgc3VwcG9ydCBm
b3IgV2ViS2l0MgotIW5vX3dlYmtpdDI6IWNvbnRhaW5zKERFRklORVMsIFBMVUdJTl9BUkNISVRF
Q1RVUkVfVU5TVVBQT1JURUQpOiB7Ci0gICAgIyBEaXNhYmxlIHhsaWIgcGx1Z2lucyB3aGlsZSB0
aGV5J3JlIGluLXByb2Nlc3MsIGJlY2F1c2UgdGhleSBjcmFzaAotICAgICMgYXMgc29vbiBhcyBh
biBpbnN0YWxsZWQgbnBhcGkgcGx1Z2luIHVzZXMgUXQgNC4KLSAgICBmYWxzZTpjb250YWlucyhR
VF9DT05GSUcsIHhjYi14bGliKSB7Cishbm9fd2Via2l0MjohY29udGFpbnMoREVGSU5FUywgUExV
R0lOX0FSQ0hJVEVDVFVSRV9VTlNVUFBPUlRFRCkgeworICAgIGNvbnRhaW5zKFFUX0NPTkZJRywg
eGNiLXhsaWIpIHsKICAgICAgICAgQ09ORklHICs9IHBsdWdpbl9iYWNrZW5kX3hsaWIKICAgICAg
ICAgREVGSU5FUyArPSBQTFVHSU5fQVJDSElURUNUVVJFX1gxMT0xIFwKICAgICAgICAgICAgICAg
ICAgICBQTFVHSU5fQVJDSElURUNUVVJFX1VOU1VQUE9SVEVEPTAKKyAgICAgICAgREVGSU5FUyAr
PSBFTkFCTEVfUExVR0lOX1BST0NFU1M9MQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFRklORVMg
Kz0gUExVR0lOX0FSQ0hJVEVDVFVSRV9VTlNVUFBPUlRFRD0xCiAgICAgfQpkaWZmIC0tZ2l0IGEv
Q2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDRhZjk0ZmZlZmM0MmMwOWEyODQ3Y2QxYzE1OTZj
MmMxZTJkMTQ5MWYuLjZkMmRlNmY3NDE3NTkyZDY4Njg4ZjQ3YWJiN2FmODQ5ODc5YTUxMzQgMTAw
NjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
MS0xMi0xNSAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
W1F0XVtXSzJdIFNldCB1cCBwbHVnaW4gcHJvY2VzcyBvbiBVbml4CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjEyMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL1F0V2ViS2l0LnBybzoKKyAg
ICAgICAgKiBTb3VyY2UvcXR3ZWJraXQtZXhwb3J0Lm1hcDoKKwogMjAxMS0xMi0xNCAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgYSBtYW51YWwgdGVzdCBm
b3IgY2FyZXQgYmxpbmtpbmcgZHVyaW5nIGZvcndhcmQgZGVsZXRpb24K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122217</attachid>
            <date>2012-01-12 05:05:48 -0800</date>
            <delta_ts>2012-02-22 06:10:26 -0800</delta_ts>
            <desc>fixed win build</desc>
            <filename>bug-72121-20120112140546.patch</filename>
            <type>text/plain</type>
            <size>60584</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0Nzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2E0YjgyMzIyNWI0MDMx
MGZjZmQ1YmU4OThjMGRjNjI1NzAwZGIwYS4uNjdmOTE2ZTk1ZTdkZjViMDc0MjM3ODc4ZTBjNTY1
MTg3OGI2MDhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAxLTEyICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdW1dLMl0gU2V0
IHVwIHBsdWdpbiBwcm9jZXNzIG9uIFVuaXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcyMTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkgc28gbm8gbmV3IHRl
c3RzLgorCisgICAgICAgICogcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6IEFkZGVkIG1pc3NpbmcgaW1wbGVt
ZW50YXRpb24uCisKIDIwMTItMDEtMTEgIEt3YW5nSHl1ayBLaW0gIDxoeXVraS5raW1Ac2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgW0VGTF0gUmVuYW1lIHBhcmFtZXRlciBhbmQgdmFyaWFibGUgbmFt
ZSAncicgdG8gJ3JlY3QnIGluIEludFJlY3RFZmwuY3BwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDY0ZjkxMjYw
ZmZlNDc1MDUyOGNkZjU5YWJkZWY2NjI1YmE5Y2QyOTMuLmY1YmIwNzdmNDExNmQzZDExMTE1NTZl
ZTFjYWJjYmZmYmEyMTUyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDcgQEAKKzIwMTItMDEt
MTIgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF1b
V0syXSBTZXQgdXAgcGx1Z2luIHByb2Nlc3Mgb24gVW5peAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxMjEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXR1cCBwbHVnaW4gcHJvY2VzcyBmb3IgUXQgYW5k
IG1vdmUgdGhlIHRhc2sgb2YgcXVlcnlpbmcgdGhlIHBsdWdpbnMKKyAgICAgICAgdG8gdGhpcyBw
cm9jZXNzIGluIG9yZGVyIHRvIGF2b2lkIGNyYXNoZXMgZHVlIHRvIHBsdWdpbiBidWdzIG9yIGxp
YnJhcnkKKyAgICAgICAgaW5jb21wYXRpYmlsaXR5LiBUaGUgYXBwcm9hY2ggb2YgcXVlcnlpbmcg
dGhlIHBsdWdpbnMgaXMgbm93IGluIHBhaXIKKyAgICAgICAgd2l0aCB0aGUgTWFjIHBvcnQ6IHRo
ZSBwbHVnaW4gcHJvY2VzcyB3cml0ZXMgaXQgdG8gYSBmaWxlIHdoaWNoIGlzIHJlYWQKKyAgICAg
ICAgb24gdGhlIFVJIHNpZGUuIFRoZSBmaWxlIGFsc28gc2VydmVzIGFzIGEgcGVyc2lzdGVudCBj
YWNoZS4gVGhpcyB3YXkKKyAgICAgICAgdGhpcyBwYXRjaCBhbHNvIGltcGxlbWVudHMgd2hhdCB3
ZSBjYWxsIE5FVFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRQorICAgICAgICBpbiBXZWJDb3Jl
IGluIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHdheS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFt
OgorICAgICAgICAqIFBsdWdpblByb2Nlc3MucHJvOiBBZGRlZC4KKworICAgICAgICAqIFBsdWdp
blByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJvY2Vzc01haW5HdGspOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvcXQvUGx1Z2lu
UHJvY2Vzc01haW5RdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1lc3NhZ2VIYW5kbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW4pOgorICAgICAgICBDcmVhdGUgbWV0YSBk
YXRhIGRlc2NyaXB0aW9uIGZpbGUgaWYgbGF1bmNoZWQgd2l0aAorICAgICAgICAtY3JlYXRlTWV0
YURhdGFEZXNjcmlwdGlvbiBjb21tYW5kIGxpbmUgYXJndW1lbnQuCisKKyAgICAgICAgKiBTaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKToKKyAgICAgICAgR2V0IHJpZCBv
ZiB0aGUgR3RrIGluaXRpYWxpemF0aW9uIGhhY2suIFdlIGRvIG5vdCBuZWFkIGl0IGhlcmUgYW55
bW9yZS4KKworICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
TW9kdWxlLmg6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luTW9kdWxlWDExLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cGFyc2VNSU1FRGVzY3JpcHRp
b24pOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5m
b0ZvckxvYWRlZFBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OnJlYWROZXh0VVRGOFN0cmluZyk6
CisgICAgICAgIChXZWJLaXQ6OnJlYWROZXh0VGltZXN0YW1wKToKKyAgICAgICAgKFdlYktpdDo6
ZGVzY3JpcHRvckZpbGVTY2hlbWFJRCk6CisgICAgICAgIChXZWJLaXQ6OnJlYWRQbHVnaW5NZXRh
RGF0YUZyb21EZXNjcmlwdG9yRmlsZSk6CisgICAgICAgIChXZWJLaXQ6Om1ldGFEYXRhRGVzY3Jp
cHRvckZpbGVQYXRoKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6Omdl
dFBsdWdpbkluZm8pOgorICAgICAgICAoV2ViS2l0Ojp3cml0ZVRpbWVzdGFtcCk6CisgICAgICAg
IChXZWJLaXQ6OndyaXRlU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5N
b2R1bGU6OmNyZWF0ZVBsdWdpbk1ldGFEYXRhRGVzY3JpcHRvckZpbGUpOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6ZGV0ZXJtaW5lUXVpcmtzKToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnBsdWdpbk1ldGFEYXRhQ2FjaGVEaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6dmFsaWRhdGVQZXJzaXN0
ZW50TWV0YURhdGFDYWNoZSk6CisgICAgICAgIEFkZGVkIHRoZSBsb2dpYyB0byB3cml0ZSBvdXQg
cGx1Z2luIG1ldGEgZGF0YSBpbnRvIGEgZmlsZSBhbmQgcmVhZCBpdAorICAgICAgICBmcm9tIHRo
ZXJlLiBTaW1pbGFyIGhvdyBpdCBpcyBpbXBsZW1lbnRlZCBpbiBXZWJDb3JlIHdpdGggYSBiaXQg
bW9yZQorICAgICAgICBjaGVja3MgZm9yIGRhdGEgY29ycnVwdGlvbi4KKworICAgICAgICAqIFNo
YXJlZC9QbHVnaW5zL1BsdWdpblBhdGhIYXNoU2V0Lmg6IEFkZGVkLgorICAgICAgICBBIGhhc2gg
c2V0IHN0b3JpbmcgcGx1Z2luIHBhdGhzLiBGYWN0b3JlZCBvdXQgZnJvbSBQbHVnaW5JbmZvU3Rv
cmUuY3BwLgorICAgICAgICAoTm90ZSB0aGF0IGdpdCBkaWZmIHdyb25nbHkgbm90aWNlIGl0IGFz
IGEgcmVuYW1lZCBmaWxlLikKKworICAgICAgICAqIFNoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBR
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6cGFpbnQpOgorICAgICAg
ICBBZGRlZCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIG92ZXJyaWRlIHdpdGggdGhlIHNjYWxlIGZh
Y3RvciBiZWNhdXNlCisgICAgICAgIGl0IGlzIGNhbGxlZCBmcm9tIFBsdWdpblByb3h5LiBJdCBk
b2VzIG5vdCBhY3R1YWxseSBoYW5kbGUgdGhlIGNhc2UKKyAgICAgICAgd2hlbiB0aGUgc2NhbGUg
ZmFjdG9yIGlzIG5vdCAxIGJlY2F1c2UgaXQgY2FuIG9ubHkgaGFwcGVuIG9uIE1hYyBjdXJyZW50
bHkuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1By
b2Nlc3NMYXVuY2hlckd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6
cGxhdGZvcm1FeGVjdXRhYmxlUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hl
cjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9j
ZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6cGxh
dGZvcm1FeGVjdXRhYmxlUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1By
b2Nlc3NMYXVuY2hlclF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjps
YXVuY2hQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpwbGF0Zm9y
bUV4ZWN1dGFibGVQYXRoKToKKyAgICAgICAgRmFjdG9yZWQgdGhlIGV4ZWN1dGFibGUgcGF0aCBk
ZXRlcm1pbmF0aW9uIGludG8gYSBzdGF0aWMgbWV0aG9kCisgICAgICAgIHRvIGF2b2lkIGNvZGUg
ZHVwbGljYXRpb24uIFdlIGNhbiB1c2UgaXQgd2hlbiBsYXVuY2hpbmcgdGhlCisgICAgICAgIHBs
dWdpbiBwcm9jZXNzIGZvciBjcmVhdGluZyB0aGUgZGVzY3JpcHRvciBmaWxlLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luSW5mb1N0b3JlOjpsb2FkUGx1Z2luc0lmTmVjZXNzYXJ5KToKKworICAgICAgICAq
IFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6Y3JlYXRlUHJvcGVydHlMaXN0RmlsZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFs
aXplUGx1Z2luUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6
Y3JlYXRlTWV0YURhdGFEZXNjcmlwdG9yRmlsZSk6CisgICAgICAgIExhdW5jaGluZyB0aGUgcGx1
Z2luIHByb2Nlc3Mgd2l0aCB0aGUgLWNyZWF0ZU1ldGFEYXRhRGVzY3JpcHRpb24KKyAgICAgICAg
YXJndW1lbnQuIEltcGxlbWVudGVkIGluIGEgd2F5IHRvIG5vdCBibG9jayBmb3JldmVyIGlmIHRo
ZSBwbHVnaW4KKyAgICAgICAgcHJvY2VzcyBoYW5ncyAod2hpY2ggZGlkIG5vdCBoYXBwZW4gaW4g
bXkgZW52aXJvbm1lbnQgYnV0IGl0J3MgYmV0dGVyCisgICAgICAgIHRvIGJlIHBlc3NpbWlzdGlj
KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlH
dGsuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Q
cm9jZXNzUHJveHlRdC5jcHA6IFJlbW92ZWQuCisgICAgICAgIE5vIG5lZWQgZm9yIGEgR3RrL1F0
IHZlcnNpb24gb2YgdGhpcywgaW5zdGVhZCBjcmVhdGVkIGEgY29tbW9uCisgICAgICAgIFBsdWdp
blByb2Nlc3NQcm94eVVuaXguY3BwLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBOX0dl
dFZhbHVlKToKKyAgICAgICAgQ2hhbmdlZCBhY2NvcmRpbmcgdG8gdGhlIHJlbW92ZSBvZiB0aGUg
Zmxhc2ggaGFjay4gRG8gbm90IHRyeQorICAgICAgICB0byBkZWNpZGUgd2hldGhlciB0aGUgcGx1
Z2luIG5lZWRzIEd0ayBieSBpdCdzIG5hbWUgYnV0IGluc3RlYWQKKyAgICAgICAgYWx3YXlzIGdl
dCBiYWNrIHRoZSBleHBlY3RlZCBHdGsgdmVyc2lvbiAoMikuIE9ubHkgR3RrIHBsdWdpbnMKKyAg
ICAgICAgc2hvdWxkIGFzayBmb3IgdGhpcyBhbnl3YXkuCisgICAgICAgICogcXQvUGx1Z2luTWFp
blF0LmNwcDogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAgRW50cnkgcG9pbnQgZm9y
IHRoZSBwbHVnaW4gcHJvY2Vzcy4KKyAgICAgICAgKE5vdGUgdGhhdCBnaXQgZGlmZiB3cm9uZ2x5
IG5vdGljZSBpdCBhcyBhIHJlbmFtZWQgZmlsZS4pCisKIDIwMTItMDEtMTIgIFJ5dWFuIENob2kg
IDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQWRkIFBMQVRG
T1JNKEVGTCkgaW4gU2hhcmVkTWVtb3J5LmgsIFdlYlByb2Nlc3NTdG9yZS5oLCBXZWJFZGl0b3JD
bGllbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUXRXZWJLaXQucHJvIGIvU291cmNlL1F0V2Vi
S2l0LnBybwppbmRleCAwMmZjOWUxYzdlYmUxZjczMTlkMDlkMTIxNWUyMDk4OTliNDUxYTc0Li5i
YmJmYzQxZTY4MTdiN2MwZDViZDVlMTNlYzlkM2NmZDQ3OWJhMWY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvUXRXZWJLaXQucHJvCisrKyBiL1NvdXJjZS9RdFdlYktpdC5wcm8KQEAgLTQsNiArNCw4IEBA
CiAjIFNlZSAnVG9vbHMvcW1ha2UvUkVBRE1FJyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIGJ1aWxk
IHN5c3RlbQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK2xvYWQoZmVhdHVyZXMpCisKIFRFTVBMQVRFID0gc3Vi
ZGlycwogQ09ORklHICs9IG9yZGVyZWQKIApAQCAtMTMsNiArMTUsMTAgQEAgU1VCRElSUyArPSBh
cGkKICFub193ZWJraXQyIHsKICAgICB3ZWJwcm9jZXNzLmZpbGUgPSBXZWJLaXQyL1dlYlByb2Nl
c3MucHJvCiAgICAgU1VCRElSUyArPSB3ZWJwcm9jZXNzCisgICAgY29udGFpbnMoREVGSU5FUywg
RU5BQkxFX1BMVUdJTl9QUk9DRVNTPTEpIHsKKyAgICAgICAgcGx1Z2lucHJvY2Vzcy5maWxlID0g
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzLnBybworICAgICAgICBTVUJESVJTICs9IHBsdWdpbnByb2Nl
c3MKKyAgICB9CiB9CiAKIGluY2x1ZGUoV2ViS2l0L3F0L2RvY3MvZG9jcy5wcmkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNwcAppbmRleCAzMjY0NGQxNzhiYmQ2
ZTJjOWUwZWJhM2VlMTRjNTQzOGYyYzc0YjFkLi43YWJmZTJmZDU4MWQ2NDdiODBlM2E3YTBjZTM4
OGZlNWVmNGIxNjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxl
U3lzdGVtUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1R
dC5jcHAKQEAgLTIxOCw2ICsyMTgsMTIgQEAgYm9vbCB1bmxvYWRNb2R1bGUoUGxhdGZvcm1Nb2R1
bGUgbW9kdWxlKQogI2VuZGlmCiB9CiAKK0NTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBRQnl0ZUFycmF5IGVuY29kZWQgPSBRRmlsZTo6
ZW5jb2RlTmFtZShzdGF0aWNfY2FzdDxRU3RyaW5nPihwYXRoKSk7CisgICAgcmV0dXJuIENTdHJp
bmcoZW5jb2RlZC5jb25zdERhdGEoKSwgZW5jb2RlZC5sZW5ndGgoKSk7Cit9CisKIH0KIAogLy8g
dmltOiB0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggNDJmODUxYjUwMmQzYWNl
OWE3ZmJjMDA5Yjg5MWVlZDNlOTIwMDhiZi4uOGZhNTgyOWNkMjVjY2FjMTE5ZDQ3N2MzOTQyZjdl
MGI5N2YwODFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysr
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTYxMSw4ICs2MTEsOCBAQCBsaWJ3
ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01J
Tk9SX1ZFUlNJT05AX2xhX1NPVQogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9X
ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmNwcCBcCi0JU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAgXAor
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5
VW5peC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaCBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5oIFwKQEAgLTEyOTEsNiAr
MTI5MSw3IEBAIFByb2dyYW1zX1dlYktpdFBsdWdpblByb2Nlc3NfQ1BQRkxBR1MgPSBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUGx1Z2lucyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVk
L1BsdWdpbnMvTmV0c2NhcGUvIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTGF1bmNoZXIvIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy8gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy8g
XAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS8gXApAQCAtMTMwMiw2ICsxMzAzLDcgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19D
UFBGTEFHUyA9IFwKIAktREJVSUxESU5HX1dFQktJVCBcCiAJLURHVEtfQVBJX1ZFUlNJT05fMj0x
IFwKIAktREVOQUJMRV9QTFVHSU5fUFJPQ0VTUz0xIFwKKwktRExJQkVYRUNESVI9XCIiJChsaWJl
eGVjZGlyKSJcIiBcCiAJJChnbG9iYWxfY3BwZmxhZ3MpIFwKIAkkKHdlYmNvcmVfY3BwZmxhZ3Mp
IFwKIAkkKHdlYmNvcmVndGtfY3BwZmxhZ3MpIFwKQEAgLTE0MTUsNiArMTQxNyw5IEBAIFByb2dy
YW1zX1dlYktpdFBsdWdpblByb2Nlc3NfU09VUkNFUyA9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9jYWly
by9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9M
YXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVVdGlsaXRpZXMuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MucHJvIGIvU291cmNlL1dlYktpdDIvUGx1Z2lu
UHJvY2Vzcy5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQ0Y2E2MmRkNGI5Zjg4ZTMxMjNmMzA4ZjQ4ZDIxYzk2
MWQxOGE5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mu
cHJvCkBAIC0wLDAgKzEsMjcgQEAKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQcm9qZWN0IGZpbGUgZm9yIHRo
ZSBXZWJLaXQyIHBsdWdpbiBwcm9jZXNzIGJpbmFyeQorIworIyBTZWUgJ1Rvb2xzL3FtYWtlL1JF
QURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBzeXN0ZW0KKyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Citsb2FkKGZlYXR1cmVzKQorCitURU1QTEFURSA9IGFwcAorCitUQVJHRVQgPSBRdFdlYlBsdWdp
blByb2Nlc3MKK0RFU1RESVIgPSAkJHtST09UX0JVSUxEX0RJUn0vYmluCisKK1NPVVJDRVMgKz0g
cXQvUGx1Z2luTWFpblF0LmNwcAorCitJTkNMVURFUEFUSCA9ICQkUFdELy4uL0phdmFTY3JpcHRD
b3JlIFwKKyAgICAgICAgICAgICAgJCRJTkNMVURFUEFUSAorCitDT05GSUcgKz0gcXR3ZWJraXQK
KworSU5TVEFMTFMgKz0gdGFyZ2V0CisKK2lzRW1wdHkoSU5TVEFMTF9CSU5TKSB7CisgICAgdGFy
Z2V0LnBhdGggPSAkJFtRVF9JTlNUQUxMX0JJTlNdCit9IGVsc2UgeworICAgIHRhcmdldC5wYXRo
ID0gJCRJTlNUQUxMX0JJTlMKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcAppbmRleCA5OTQyNjA0ZTdiOWRl
MzdiZDkzZWZlNjQ0NzYzNjU5MDE1ZjE5ZThmLi42ODA2ODgwMzlkMjM4NTJjOGQ1NGU5OTk2MGVl
ZjQwNTcxYTgzOWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0
ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01haW5HdGsuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01haW5HdGsuaCIKIAorI2lu
Y2x1ZGUgIk5ldHNjYXBlUGx1Z2luTW9kdWxlLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5o
IgogI2luY2x1ZGUgPFdlYktpdDIvUnVuTG9vcC5oPgogI2luY2x1ZGUgPGdkay9nZGt4Lmg+CkBA
IC01MSwxMiArNTIsMjMgQEAgc3RhdGljIGludCB3ZWJraXRndGtYRXJyb3IoRGlzcGxheSogeGRp
c3BsYXksIFhFcnJvckV2ZW50KiBlcnJvcikKIAogV0tfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNz
TWFpbkd0ayhpbnQgYXJnYywgY2hhciogYXJndltdKQogewotICAgIEFTU0VSVChhcmdjID09IDIp
OworICAgIEFTU0VSVChhcmdjID49IDIpOworICAgIGJvb2wgY3JlYXRpbmdNZXRhRGF0YURlc2Ny
aXB0aW9uID0gIXN0cmNtcChhcmd2WzFdLCAiLWNyZWF0ZU1ldGFEYXRhRGVzY3JpcHRpb24iKTsK
KyAgICBBU1NFUlQoYXJnYyA9PSAyIHx8IChhcmdjID09IDQgJiYgY3JlYXRpbmdNZXRhRGF0YURl
c2NyaXB0aW9uKSk7CiAKICAgICBndGtfaW5pdCgmYXJnYywgJmFyZ3YpOwogCiAgICAgSlNDOjpp
bml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwor
CisgICAgaWYgKGNyZWF0aW5nTWV0YURhdGFEZXNjcmlwdGlvbikgeworICAgICAgICBTdHJpbmcg
cGx1Z2luUGF0aChhcmd2WzJdKTsKKyAgICAgICAgU3RyaW5nIG1ldGFEYXRhRGVzY3JpcHRvckZp
bGVQYXRoKGFyZ3ZbM10pOworICAgICAgICBpZiAoIU5ldHNjYXBlUGx1Z2luTW9kdWxlOjpjcmVh
dGVQbHVnaW5NZXRhRGF0YURlc2NyaXB0b3JGaWxlKHBsdWdpblBhdGgsIG1ldGFEYXRhRGVzY3Jp
cHRvckZpbGVQYXRoKSkKKyAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAg
IHJldHVybiBFWElUX1NVQ0NFU1M7CisgICAgfQorCiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1h
aW5SdW5Mb29wKCk7CiAKICAgICAvLyBQbHVnaW5zIGNhbiBwcm9kdWNlIFggZXJyb3JzIHRoYXQg
YXJlIGhhbmRsZWQgYnkgdGhlIEdESyBYIGVycm9yIGhhbmRsZXIsIHdoaWNoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3Bw
IGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNw
cAppbmRleCAzZTAwMzNmZjBhYjMzNzY1MGU1M2QwODFjODlmNDQ0MTRhNjc4YTc1Li43Yzg3NTQ2
N2ZiYTczOTEyMTYzYTQzM2ZmYmJiM2E2MDAwMmFmMzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5RdC5jcHAKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIE5va2lhIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBVbml2ZXJzaXR5IG9mIFN6
ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjQsNDIgKzI1LDg0IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlBsdWdpblByb2Nlc3NNYWluLmgiCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisj
aW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01haW4uaCIKIAotI2luY2x1ZGUgIkNvbW1hbmRMaW5lLmgi
CiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSAiU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFs
LmgiCisjaW5jbHVkZSA8UUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFEZWJ1Zz4KKyNpbmNsdWRl
IDxRU3RyaW5nTGlzdD4KICNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCi0jZGVmaW5lIFNIT1dfQ1JBU0hf
UkVQT1JURVIgMQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotaW50IFBsdWdpblByb2Nlc3NNYWlu
KGNvbnN0IENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkKK3N0YXRpYyB2b2lkIG1lc3NhZ2VIYW5k
bGVyKFF0TXNnVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewotICAgIFN0cmluZyBz
ZXJ2aWNlTmFtZSA9IGNvbW1hbmRMaW5lWyJzZXJ2aWNlbmFtZSJdOwotICAgIGlmIChzZXJ2aWNl
TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgaWYgKHR5
cGUgPT0gUXRDcml0aWNhbE1zZykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBt
ZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIERvIG5vdGhpbmcKK30K
Kworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUd0aygpCit7CisgICAgUUxpYnJhcnkgZ3RrTGlicmFy
eShRTGF0aW4xU3RyaW5nKCJsaWJndGsteDExLTIuMCIpLCAwKTsKKyAgICBpZiAoIWd0a0xpYnJh
cnkubG9hZCgpKQorICAgICAgICByZXR1cm47CisgICAgdHlwZWRlZiB2b2lkKiAoKmd0a19pbml0
X3B0cikodm9pZCosIHZvaWQqKTsKKyAgICBndGtfaW5pdF9wdHIgZ3RrSW5pdCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Z3RrX2luaXRfcHRyPihndGtMaWJyYXJ5LnJlc29sdmUoImd0a19pbml0IikpOwor
ICAgIGlmICghZ3RrSW5pdCkKKyAgICAgICAgcmV0dXJuOworICAgIGd0a0luaXQoMCwgMCk7Cit9
CisKK1FXRUJLSVRfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCit7CisgICAgUUJ5dGVBcnJheSBzdXBwcmVzc091dHB1dCA9IHFnZXRlbnYoIlFUX1dF
QktJVF9TVVBQUkVTU19XRUJfUFJPQ0VTU19PVVRQVVQiKTsKKyAgICBpZiAoIXN1cHByZXNzT3V0
cHV0LmlzRW1wdHkoKSAmJiBzdXBwcmVzc091dHB1dCAhPSAiMCIpCisgICAgICAgIHFJbnN0YWxs
TXNnSGFuZGxlcihtZXNzYWdlSGFuZGxlcik7CiAKLSNpZiAhU0hPV19DUkFTSF9SRVBPUlRFUgot
ICAgIC8vIEluc3RhbGxzIHNpZ25hbCBoYW5kbGVycyB0aGF0IGV4aXQgb24gYSBjcmFzaCBzbyB0
aGF0IENyYXNoUmVwb3J0ZXIgZG9lcyBub3Qgc2hvdyB1cC4KLSAgICBzaWduYWwoU0lHSUxMLCBf
ZXhpdCk7Ci0gICAgc2lnbmFsKFNJR0ZQRSwgX2V4aXQpOwotICAgIHNpZ25hbChTSUdCVVMsIF9l
eGl0KTsKLSAgICBzaWduYWwoU0lHU0VHViwgX2V4aXQpOwotI2VuZGlmCisgICAgUUFwcGxpY2F0
aW9uIGFwcChhcmdjLCBhcmd2KTsKKworICAgIC8vIFdvcmthcm91bmQgdGhlIGlzc3VlIHRoYXQg
c29tZSB2ZXJzaW9ucyBvZiBmbGFzaCBkb2VzIG5vdCBpbml0aWFsaXplIEd0ayBwcm9wZXJseS4K
KyAgICBpbml0aWFsaXplR3RrKCk7CiAKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsK
ICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisKKyAgICBpZiAoYXJnYyA8PSAxKQor
ICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworCisgICAgaWYgKGFwcC5hcmd1bWVudHMoKS5h
dCgxKSA9PSBRTGF0aW4xU3RyaW5nKCItY3JlYXRlTWV0YURhdGFEZXNjcmlwdGlvbiIpKSB7Cisg
ICAgICAgIGlmIChhcmdjICE9IDQpCisgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwor
CisgICAgICAgIFN0cmluZyBwbHVnaW5QYXRoKGFwcC5hcmd1bWVudHMoKS5hdCgyKSk7CisgICAg
ICAgIFN0cmluZyBkZXNjcmlwdG9yRmlsZVBhdGgoYXBwLmFyZ3VtZW50cygpLmF0KDMpKTsKKyAg
ICAgICAgaWYgKCFOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Y3JlYXRlUGx1Z2luTWV0YURhdGFEZXNj
cmlwdG9yRmlsZShwbHVnaW5QYXRoLCBkZXNjcmlwdG9yRmlsZVBhdGgpKQorICAgICAgICAgICAg
cmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKKyAgICB9
CisKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIAorICAgIC8vIENyZWF0
ZSB0aGUgY29ubmVjdGlvbi4KKyAgICBib29sIGlzTnVtYmVyID0gZmFsc2U7CisgICAgaW50IGlk
ZW50aWZpZXIgPSBhcHAuYXJndW1lbnRzKCkuYXQoMSkudG9JbnQoJmlzTnVtYmVyLCAxMCk7Cisg
ICAgaWYgKCFpc051bWJlcikKKyAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKworICAgIFdl
YktpdDo6UGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZShpZGVudGlmaWVyLCBSdW5M
b29wOjptYWluKCkpOworCiAgICAgUnVuTG9vcDo6cnVuKCk7CiAKICAgICByZXR1cm4gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcAppbmRleCBlNWY4ZGMyYTNmMmVmYTdkZThiNDEwOTkz
MjZhZTA0Zjk1ZjQ1MTYzLi5jMTg3NGQ5OTY2YTY2ZGQ5MzJlZDJkZmY5MjA3Y2JmODlkMzI1YmE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCkBAIC0xOTcsMTAgKzE5Nyw2IEBAIGJv
b2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmxvYWQoKQogCiBib29sIE5ldHNjYXBlUGx1Z2luTW9k
dWxlOjp0cnlMb2FkKCkKIHsKLSNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKLSAgICBhcHBs
eVgxMVF1aXJrc0JlZm9yZUxvYWQoKTsKLSNlbmRpZgotCiAgICAgbV9tb2R1bGUgPSBhZG9wdFB0
cihuZXcgTW9kdWxlKG1fcGx1Z2luUGF0aCkpOwogICAgIGlmICghbV9tb2R1bGUtPmxvYWQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmgKaW5kZXggZjgw
YTBhMWEwYTMyYzA3MjFjZTZhYmZiNWZiZGQ1YjQwZDhhOTZiMi4uOWQxOWRjNGE4ZjBkNGM1ZmZh
MmE3ZGIxYWMxYmYwMGM4NTQ2MzI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAjZGVmaW5lIE5ldHNjYXBlUGx1Z2luTW9kdWxlX2gKIAogI2luY2x1ZGUg
Ik1vZHVsZS5oIgorI2luY2x1ZGUgIlBsdWdpblBhdGhIYXNoU2V0LmgiCiAjaW5jbHVkZSAiUGx1
Z2luTW9kdWxlSW5mby5oIgogI2luY2x1ZGUgIlBsdWdpblF1aXJrcy5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvbnBydW50aW1lX2ludGVybmFsLmg+CkBAIC01OSw2ICs2MCwxMCBAQCBwdWJsaWM6CiAK
ICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKE1BQykKICAgICBzdGF0aWMgYm9vbCBjcmVhdGVQbHVn
aW5NSU1FVHlwZXNQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOworI2VsaWYg
UExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgc3RhdGljIFN0cmluZyBwbHVnaW5NZXRhRGF0
YUNhY2hlRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIGJvb2wgY3JlYXRlUGx1Z2luTWV0YURhdGFE
ZXNjcmlwdG9yRmlsZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpOworICAgIHN0YXRpYyB2b2lkIHZhbGlkYXRlUGVyc2lzdGVudE1ldGFEYXRhQ2FjaGUo
Y29uc3QgUGx1Z2luUGF0aEhhc2hTZXQmIHVzZWRQbHVnaW5zKTsKICNlbmRpZgogCiBwcml2YXRl
OgpAQCAtNjcsOSArNzIsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRldGVybWluZVF1aXJrcygp
OwogCiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCi0gICAgdm9pZCBhcHBseVgxMVF1aXJr
c0JlZm9yZUxvYWQoKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRNSU1FRGVzY3JpcHRpb24oY29uc3Qg
U3RyaW5nJiBtaW1lRGVzY3JpcHRpb24sIFBsdWdpbk1vZHVsZUluZm8mKTsKLSAgICBib29sIGdl
dFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4oUGx1Z2luTW9kdWxlSW5mbyYpOworICAgIHN0cnVj
dCBSYXdQbHVnaW5NZXRhRGF0YSB7CisgICAgICAgIFN0cmluZyBuYW1lOworICAgICAgICBTdHJp
bmcgZGVzY3JpcHRpb247CisgICAgICAgIFN0cmluZyBtaW1lRGVzY3JpcHRpb247CisgICAgfTsK
KworICAgIGJvb2wgZ2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihSYXdQbHVnaW5NZXRhRGF0
YSYpOwogI2VuZGlmCiAKICAgICBib29sIHRyeUdldFNpdGVzV2l0aERhdGEoVmVjdG9yPFN0cmlu
Zz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBl
L3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
UGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCmluZGV4IGJl
MDRiZmYyNmY5OGY3NGQ5NDBjYWE1NTYxZWRjNTNjZmJjZmIxYTUuLmE5NWFhNTUzYTg0MWQ2ZGQ3
MDE3MjQ2ZDFjZTgwYTBkNmY0NGZmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2lu
TW9kdWxlWDExLmNwcApAQCAtMjgsMTggKzI4LDI4IEBACiAKICNpbmNsdWRlICJOZXRzY2FwZVBs
dWdpbk1vZHVsZS5oIgogCisjaW5jbHVkZSAiUGx1Z2luSW5mb1N0b3JlLmgiCisjaW5jbHVkZSAi
UGx1Z2luUGF0aEhhc2hTZXQuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKICNp
bmNsdWRlICJOZXRzY2FwZUJyb3dzZXJGdW5jcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgotCi0jaWYgUExBVEZPUk0oUVQpCi0jaW5jbHVkZSA8UUxpYnJhcnk+Ci0jZW5kaWYK
LQorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDxmY250bC5oPgog
I2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8
dW5pc3RkLmg+CiAKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9u
PgorI2luY2x1ZGUgPFFEaXI+CisjaW5jbHVkZSA8UUxpYnJhcnk+CisjaW5jbHVkZSA8UVN0YW5k
YXJkUGF0aHM+CisjZWxpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8Z2xpYi5oPgorI2VuZGlm
CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY5
LDM1ICs3OSwxMyBAQCBTdGRvdXREZXZOdWxsUmVkaXJlY3Rvcjo6flN0ZG91dERldk51bGxSZWRp
cmVjdG9yKCkKICAgICAgICAgZHVwMihtX3NhdmVkU3Rkb3V0LCBTVERPVVRfRklMRU5PKTsKIH0K
IAotI2lmIFBMQVRGT1JNKFFUKQotc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUdUSygpCitzdGF0aWMg
dm9pZCBwYXJzZU1JTUVEZXNjcmlwdGlvbihjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlwdGlvbiwg
VmVjdG9yPE1pbWVDbGFzc0luZm8+JiByZXN1bHQpCiB7Ci0gICAgUUxpYnJhcnkgbGlicmFyeShR
TGF0aW4xU3RyaW5nKCJsaWJndGsteDExLTIuMC5zby4wIikpOwotICAgIGlmIChsaWJyYXJ5Lmxv
YWQoKSkgewotICAgICAgICB0eXBlZGVmIHZvaWQgKigqZ3RrX2luaXRfY2hlY2tfcHRyKShpbnQq
LCBjaGFyKioqKTsKLSAgICAgICAgZ3RrX2luaXRfY2hlY2tfcHRyIGd0a0luaXRDaGVjayA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Z3RrX2luaXRfY2hlY2tfcHRyPihsaWJyYXJ5LnJlc29sdmUoImd0a19p
bml0X2NoZWNrIikpOwotICAgICAgICAvLyBOT1RFOiBXZSdyZSB1c2luZyBndGtfaW5pdF9jaGVj
aygpIHNpbmNlIGd0a19pbml0KCkgY2FsbHMgZXhpdCgpIG9uIGZhaWx1cmUuCi0gICAgICAgIGlm
IChndGtJbml0Q2hlY2spCi0gICAgICAgICAgICAodm9pZCkgZ3RrSW5pdENoZWNrKDAsIDApOwot
ICAgIH0KLX0KLSNlbmRpZgorICAgIEFTU0VSVF9BUkcocmVzdWx0LCByZXN1bHQuaXNFbXB0eSgp
KTsKIAotdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6YXBwbHlYMTFRdWlya3NCZWZvcmVMb2Fk
KCkKLXsKLSNpZiBQTEFURk9STShRVCkKLSAgICBpZiAobV9wbHVnaW5QYXRoLmNvbnRhaW5zKCJu
cHdyYXBwZXIiKSB8fCBtX3BsdWdpblBhdGguY29udGFpbnMoImZsYXNocGxheWVyIikpIHsKLSAg
ICAgICAgaW5pdGlhbGl6ZUdUSygpOwotICAgICAgICBtX3BsdWdpblF1aXJrcy5hZGQoUGx1Z2lu
UXVpcmtzOjpSZXF1aXJlc0dUS1Rvb2xLaXQpOwotICAgIH0KLSNlbmRpZgotfQotCi12b2lkIE5l
dHNjYXBlUGx1Z2luTW9kdWxlOjpzZXRNSU1FRGVzY3JpcHRpb24oY29uc3QgU3RyaW5nJiBtaW1l
RGVzY3JpcHRpb24sIFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKLXsKICAgICBWZWN0b3I8U3Ry
aW5nPiB0eXBlczsKICAgICBtaW1lRGVzY3JpcHRpb24ubG93ZXIoKS5zcGxpdChVQ2hhcignOycp
LCBmYWxzZSwgdHlwZXMpOwotICAgIHBsdWdpbi5pbmZvLm1pbWVzLnJlc2VydmVDYXBhY2l0eSh0
eXBlcy5zaXplKCkpOworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHR5cGVzLnNp
emUoKSk7CiAKICAgICBzaXplX3QgbWltZUluZm9Db3VudCA9IDA7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB0eXBlcy5zaXplKCk7ICsraSkgewpAQCAtMTA2LDggKzk0LDggQEAgdm9pZCBO
ZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2V0TUlNRURlc2NyaXB0aW9uKGNvbnN0IFN0cmluZyYgbWlt
ZURlc2NyaXB0aW9uLCBQbHUKICAgICAgICAgaWYgKG1pbWVUeXBlUGFydHMuc2l6ZSgpIDw9IDAp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBwbHVnaW4uaW5mby5taW1lcy51bmNo
ZWNrZWRBcHBlbmQoTWltZUNsYXNzSW5mbygpKTsKLSAgICAgICAgTWltZUNsYXNzSW5mbyYgbWlt
ZUluZm8gPSBwbHVnaW4uaW5mby5taW1lc1ttaW1lSW5mb0NvdW50KytdOworICAgICAgICByZXN1
bHQudW5jaGVja2VkQXBwZW5kKE1pbWVDbGFzc0luZm8oKSk7CisgICAgICAgIE1pbWVDbGFzc0lu
Zm8mIG1pbWVJbmZvID0gcmVzdWx0W21pbWVJbmZvQ291bnQrK107CiAgICAgICAgIG1pbWVJbmZv
LnR5cGUgPSBtaW1lVHlwZVBhcnRzWzBdOwogCiAgICAgICAgIGlmIChtaW1lVHlwZVBhcnRzLnNp
emUoKSA+IDEpCkBAIC0xMTgsMTMgKzEwNiwxMCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxl
OjpzZXRNSU1FRGVzY3JpcHRpb24oY29uc3QgU3RyaW5nJiBtaW1lRGVzY3JpcHRpb24sIFBsdQog
ICAgIH0KIH0KIAotYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mb0Zvckxv
YWRlZFBsdWdpbihQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCitib29sIE5ldHNjYXBlUGx1Z2lu
TW9kdWxlOjpnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKFJhd1BsdWdpbk1ldGFEYXRhJiBt
ZXRhRGF0YSkKIHsKICAgICBBU1NFUlQobV9pc0luaXRpYWxpemVkKTsKIAotICAgIHBsdWdpbi5w
YXRoID0gbV9wbHVnaW5QYXRoOwotICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBwYXRoR2V0RmlsZU5h
bWUobV9wbHVnaW5QYXRoKTsKLQogICAgIE1vZHVsZSogbW9kdWxlID0gbV9tb2R1bGUuZ2V0KCk7
CiAgICAgTlBQX0dldFZhbHVlUHJvY1B0ciBOUFBfR2V0VmFsdWUgPSBtb2R1bGUtPmZ1bmN0aW9u
UG9pbnRlcjxOUFBfR2V0VmFsdWVQcm9jUHRyPigiTlBfR2V0VmFsdWUiKTsKICAgICBpZiAoIU5Q
UF9HZXRWYWx1ZSkKQEAgLTEzNywyMiArMTIyLDE3MiBAQCBib29sIE5ldHNjYXBlUGx1Z2luTW9k
dWxlOjpnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKFBsdWdpbk1vZHVsZUluZm8mIHBsdWdp
bgogICAgIGNoYXIqIGJ1ZmZlcjsKICAgICBOUEVycm9yIGVycm9yID0gTlBQX0dldFZhbHVlKDAs
IE5QUFZwbHVnaW5OYW1lU3RyaW5nLCAmYnVmZmVyKTsKICAgICBpZiAoZXJyb3IgPT0gTlBFUlJf
Tk9fRVJST1IpCi0gICAgICAgIHBsdWdpbi5pbmZvLm5hbWUgPSBidWZmZXI7CisgICAgICAgIG1l
dGFEYXRhLm5hbWUgPSBidWZmZXI7CiAKICAgICBlcnJvciA9IE5QUF9HZXRWYWx1ZSgwLCBOUFBW
cGx1Z2luRGVzY3JpcHRpb25TdHJpbmcsICZidWZmZXIpOwogICAgIGlmIChlcnJvciA9PSBOUEVS
Ul9OT19FUlJPUikKLSAgICAgICAgcGx1Z2luLmluZm8uZGVzYyA9IGJ1ZmZlcjsKKyAgICAgICAg
bWV0YURhdGEuZGVzY3JpcHRpb24gPSBidWZmZXI7CiAKICAgICBjb25zdCBjaGFyKiBtaW1lRGVz
Y3JpcHRpb24gPSBOUF9HZXRNSU1FRGVzY3JpcHRpb24oKTsKICAgICBpZiAoIW1pbWVEZXNjcmlw
dGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1ldGFEYXRhLm1pbWVEZXNjcmlwdGlv
biA9IG1pbWVEZXNjcmlwdGlvbjsKKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9v
bCByZWFkTmV4dFVURjhTdHJpbmcoU3RyaW5nJiByZXN1bHQsIGNoYXIqJiBidWZmZXJTdGFydCwg
Y29uc3QgY2hhciogYnVmZmVyRW5kKQoreworICAgIGlmIChidWZmZXJTdGFydCA+PSBidWZmZXJF
bmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNpemVfdCBtYXhMZW5ndGggPSBidWZm
ZXJFbmQgLSBidWZmZXJTdGFydDsKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RybmxlbihidWZmZXJT
dGFydCwgbWF4TGVuZ3RoKTsKKyAgICBpZiAobGVuZ3RoID09IG1heExlbmd0aCkgeworICAgICAg
ICAvLyBObyBudWxsIGNoYXJhY3RlciBiZWZvcmUgdGhlIGVuZC4gVGhpcyBpbmRpY2F0ZXMgYSBk
YXRhIGNvcnJ1cHRpb24uCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXN1
bHQgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlclN0YXJ0LCBsZW5ndGgpOworICAgIGJ1ZmZlclN0
YXJ0ICs9IGxlbmd0aCArIDE7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wg
cmVhZE5leHRUaW1lc3RhbXAodGltZV90JiByZXN1bHQsIGNoYXIqJiBidWZmZXJTdGFydCwgY29u
c3QgY2hhciogYnVmZmVyRW5kKQoreworICAgIGlmIChidWZmZXJTdGFydCA+PSBidWZmZXJFbmQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFdlIHB1c2ggYW4gZXh0cmEgbnVsbCBj
aGFyYWN0ZXIgaW4gZmF2b3VyIG9mIGRhdGEgY29ycnVwdGlvbiBkZXRlY3Rpb24uCisgICAgaWYg
KGJ1ZmZlclN0YXJ0W3NpemVvZih0aW1lX3QpXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJlc3VsdCA9ICpyZWludGVycHJldF9jYXN0PHRpbWVfdCo+KGJ1ZmZlclN0YXJ0KTsKKyAgICBi
dWZmZXJTdGFydCArPSBzaXplb2YodGltZV90KSArIDE7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworY29uc3QgU3RyaW5nJiBkZXNjcmlwdG9yRmlsZVNjaGVtYUlEKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgaWQsICgiV2ViS2l0IE5QQVBJLU1FVEEgMSIpKTsKKyAgICBy
ZXR1cm4gaWQ7Cit9CisKK3N0YXRpYyBib29sIHJlYWRQbHVnaW5NZXRhRGF0YUZyb21EZXNjcmlw
dG9yRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgs
IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKK3sKKyAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgZmls
ZSA9IG9wZW5GaWxlKGZpbGVQYXRoLCBPcGVuRm9yUmVhZCk7CisgICAgaWYgKCFpc0hhbmRsZVZh
bGlkKGZpbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBWZWN0b3I8Y2hhcj4gYnVm
ZmVyOworICAgIGNvbnN0IGludCByZWFkU2l6ZSA9IDY0OworICAgIGJ1ZmZlci5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHJlYWRTaXplICogNCk7CisgICAgaW50IGJ5dGVzUmVhZCA9IDA7CisKKyAg
ICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpbnQgcmVzdWx0ID0gcmVhZEZyb21GaWxlKGZpbGUs
IGJ1ZmZlci5kYXRhKCkgKyBieXRlc1JlYWQsIHJlYWRTaXplKTsKKyAgICAgICAgaWYgKHJlc3Vs
dCA8IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGJ5dGVzUmVhZCArPSBy
ZXN1bHQ7CisgICAgICAgIGlmIChyZXN1bHQgPCByZWFkU2l6ZSkKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBidWZmZXIucmVzaXplKGJ5dGVzUmVhZCArIHJlYWRTaXplKTsKKyAgICB9CisK
KyAgICBjaGFyKiBzdGFydCA9IGJ1ZmZlci5kYXRhKCk7CisgICAgY2hhciogZW5kID0gYnVmZmVy
LmRhdGEoKSArIGJ5dGVzUmVhZDsKKworICAgIFN0cmluZyBjYWNoZWRTY2hlbWFJRDsKKyAgICBp
ZiAoIXJlYWROZXh0VVRGOFN0cmluZyhjYWNoZWRTY2hlbWFJRCwgc3RhcnQsIGVuZCkgfHwgY2Fj
aGVkU2NoZW1hSUQgIT0gZGVzY3JpcHRvckZpbGVTY2hlbWFJRCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyBDaGVjayB0aGUgcGx1Z2luIHRpbWVzdGFtcC4KKyAgICB0aW1lX3Qg
Y2FjaGVkUGx1Z2luTGFzdE1vZGlmaWVkOworICAgIHRpbWVfdCBwbHVnaW5MYXN0TW9kaWZpZWQ7
CisgICAgaWYgKCFyZWFkTmV4dFRpbWVzdGFtcChjYWNoZWRQbHVnaW5MYXN0TW9kaWZpZWQsIHN0
YXJ0LCBlbmQpCisgICAgICAgIHx8ICFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwbHVnaW5QYXRo
LCBwbHVnaW5MYXN0TW9kaWZpZWQpCisgICAgICAgIHx8IGNhY2hlZFBsdWdpbkxhc3RNb2RpZmll
ZCAhPSBwbHVnaW5MYXN0TW9kaWZpZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IENoZWNrIHRoZSBkZXNjcmlwdG9yIGZpbGUgdGltZXN0YW1wLiBUaGlzIGRldGVjdHMgaWYgdGhl
IGZpbGUgaGFzIGJlZW4gb3ZlcnJpZGRlbi4KKyAgICAvLyBXZSB3cml0ZSB0aGUgdGltZXN0YW1w
IGR1cmluZyB3cml0aW5nIHRoZSBmaWxlIHNvIHdlIHNob3VsZCBhY2NlcHQgYSBzbWFsbCBkaWZm
ZXJlbmNlLgorICAgIHRpbWVfdCBjYWNoZWREZXNjcmlwdG9yRmlsZUxhc3RNb2RpZmllZDsKKyAg
ICB0aW1lX3QgZGVzY3JpcHRvckZpbGVMYXN0TW9kaWZpZWQ7CisgICAgY29uc3QgaW50IHRvbGVy
YW5jZUluU2Vjb25kcyA9IDM7CisgICAgaWYgKCFyZWFkTmV4dFRpbWVzdGFtcChjYWNoZWREZXNj
cmlwdG9yRmlsZUxhc3RNb2RpZmllZCwgc3RhcnQsIGVuZCkKKyAgICAgICAgfHwgIWdldEZpbGVN
b2RpZmljYXRpb25UaW1lKGZpbGVQYXRoLCBkZXNjcmlwdG9yRmlsZUxhc3RNb2RpZmllZCkKKyAg
ICAgICAgfHwgYWJzKGNhY2hlZERlc2NyaXB0b3JGaWxlTGFzdE1vZGlmaWVkIC0gZGVzY3JpcHRv
ckZpbGVMYXN0TW9kaWZpZWQpID4gdG9sZXJhbmNlSW5TZWNvbmRzKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBTdHJpbmcgbWltZURlc2NyaXB0aW9uOworICAgIGlmICghcmVhZE5leHRV
VEY4U3RyaW5nKHBsdWdpbi5pbmZvLm5hbWUsIHN0YXJ0LCBlbmQpCisgICAgICAgIHx8ICFyZWFk
TmV4dFVURjhTdHJpbmcocGx1Z2luLmluZm8uZGVzYywgc3RhcnQsIGVuZCkKKyAgICAgICAgfHwg
IXJlYWROZXh0VVRGOFN0cmluZyhtaW1lRGVzY3JpcHRpb24sIHN0YXJ0LCBlbmQpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBzZXRNSU1FRGVzY3JpcHRpb24obWltZURlc2NyaXB0aW9u
LCBwbHVnaW4pOworICAgIHBhcnNlTUlNRURlc2NyaXB0aW9uKG1pbWVEZXNjcmlwdGlvbiwgcGx1
Z2luLmluZm8ubWltZXMpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CisKK3N0YXRpYyBTdHJpbmcg
bWV0YURhdGFEZXNjcmlwdG9yRmlsZVBhdGgoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQorewor
ICAgIFN0cmluZyBwbHVnaW5GaWxlTmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwbHVnaW5QYXRoKTsK
KyAgICBTdHJpbmcgYmFzZU5hbWUgPSBwbHVnaW5GaWxlTmFtZSArIFN0cmluZzo6Zm9ybWF0KCIu
JXUiLCBTdHJpbmdIYXNoOjpoYXNoKHBsdWdpblBhdGgpKSArIFN0cmluZygiLmJpbiIpOworICAg
IHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnBs
dWdpbk1ldGFEYXRhQ2FjaGVEaXJlY3RvcnkoKSwgYmFzZU5hbWUpOworfQorCiBib29sIE5ldHNj
YXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwg
UGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQogeworICAgIFN0cmluZyBmaWxlUGF0aCA9IG1ldGFE
YXRhRGVzY3JpcHRvckZpbGVQYXRoKHBsdWdpblBhdGgpOworICAgIGlmICghcmVhZFBsdWdpbk1l
dGFEYXRhRnJvbURlc2NyaXB0b3JGaWxlKGZpbGVQYXRoLCBwbHVnaW5QYXRoLCBwbHVnaW4pKSB7
CisgICAgICAgIC8vIChSZSlnZW5lcmF0ZSB0aGUgZmlsZSBhbmQgdHJ5IGFnYWluLgorICAgICAg
ICBpZiAoIVBsdWdpblByb2Nlc3NQcm94eTo6Y3JlYXRlTWV0YURhdGFEZXNjcmlwdG9yRmlsZShw
bHVnaW5QYXRoLCBmaWxlUGF0aCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGlmICghcmVhZFBsdWdpbk1ldGFEYXRhRnJvbURlc2NyaXB0b3JGaWxlKGZpbGVQYXRoLCBwbHVn
aW5QYXRoLCBwbHVnaW4pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHBsdWdpbi5pbmZvLmZpbGUgPSBwYXRoR2V0RmlsZU5hbWUocGx1Z2luUGF0aCk7CisgICAgcGx1
Z2luLnBhdGggPSBwbHVnaW5QYXRoOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBi
b29sIHdyaXRlVGltZXN0YW1wKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBjb25zdCB0aW1lX3Qm
IHRpbWUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgQVNTRVJUX0FSRyhmaWxlLCBp
c0hhbmRsZVZhbGlkKGZpbGUpKTsKKworICAgIC8vIFdlIHB1c2ggYW4gZXh0cmEgbnVsbCBjaGFy
YWN0ZXIgaW4gZmF2b3VyIG9mIGRhdGEgY29ycnVwdGlvbiBkZXRlY3Rpb24uCisgICAgY2hhciBi
dWZmZXJbc2l6ZW9mKHRpbWVfdCkgKyAxXTsKKyAgICBtZW1zZXQoYnVmZmVyLCAwLCBzaXplb2Yo
YnVmZmVyKSk7CisgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dGltZV90Kj4oYnVmZmVyKSA9IHRpbWU7
CisKKyAgICBpZiAod3JpdGVUb0ZpbGUoZmlsZSwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkgPT0g
c2l6ZW9mKGJ1ZmZlcikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgY2xvc2VGaWxlKGZp
bGUpOworICAgIGRlbGV0ZUZpbGUoZmlsZVBhdGgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
c3RhdGljIGJvb2wgd3JpdGVTdHJpbmcoUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIEFTU0VSVF9BUkco
ZmlsZSwgaXNIYW5kbGVWYWxpZChmaWxlKSk7CisKKyAgICBDU3RyaW5nIHV0ZjhTdHJpbmcgPSBz
dHJpbmcudXRmOCgpOworICAgIGludCBsZW5ndGggPSB1dGY4U3RyaW5nLmxlbmd0aCgpICsgMTsK
KyAgICBpZiAod3JpdGVUb0ZpbGUoZmlsZSwgdXRmOFN0cmluZy5kYXRhKCksIGxlbmd0aCkgPT0g
bGVuZ3RoKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNsb3NlRmlsZShmaWxlKTsKKyAg
ICBkZWxldGVGaWxlKGZpbGVQYXRoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OmNyZWF0ZVBsdWdpbk1ldGFEYXRhRGVzY3JpcHRvckZpbGUoY29u
c3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorewogICAgIC8v
IFRlbXBhcmFyaWx5IHN1cHByZXNzIHN0ZG91dCBpbiB0aGlzIGZ1bmN0aW9uIGFzIHBsdWdpbnMg
d2lsbCBiZSBsb2FkZWQgYW5kIHNodXRkb3duIGFuZCBkZWJ1ZyBpbmZvCiAgICAgLy8gaXMgbGVh
a2VkIHRvIGxheW91dCB0ZXN0IG91dHB1dC4KICAgICBTdGRvdXREZXZOdWxsUmVkaXJlY3RvciBz
dGRvdXREZXZOdWxsUmVkaXJlY3RvcjsKQEAgLTE2NCwyMCArMjk5LDQ2IEBAIGJvb2wgTmV0c2Nh
cGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQ
bHVnaW5Nb2R1bGVJCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHBsdWdpbk1vZHVsZS0+
aW5jcmVtZW50TG9hZENvdW50KCk7Ci0gICAgYm9vbCByZXR1cm5WYWx1ZSA9IHBsdWdpbk1vZHVs
ZS0+Z2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihwbHVnaW4pOworICAgIFJhd1BsdWdpbk1l
dGFEYXRhIG1ldGFEYXRhOworICAgIGJvb2wgZ290UGx1Z2luSW5mbyA9IHBsdWdpbk1vZHVsZS0+
Z2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihtZXRhRGF0YSk7CiAgICAgcGx1Z2luTW9kdWxl
LT5kZWNyZW1lbnRMb2FkQ291bnQoKTsKKyAgICBpZiAoIWdvdFBsdWdpbkluZm8pCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlID0gb3BlbkZpbGUo
ZmlsZVBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGZpbGUpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXdyaXRlU3RyaW5nKGZpbGUsIGRlc2Ny
aXB0b3JGaWxlU2NoZW1hSUQoKSwgZmlsZVBhdGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgLy8gV3JpdGUgYSB0aW1lc3RhbXAgZm9yIHRo
ZSBwbHVnaW4uCisgICAgdGltZV90IGxhc3RNb2RpZmllZDsKKyAgICBpZiAoIWdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKHBsdWdpblBhdGgsIGxhc3RNb2RpZmllZCkgfHwgIXdyaXRlVGltZXN0YW1w
KGZpbGUsIGxhc3RNb2RpZmllZCwgZmlsZVBhdGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBXcml0ZSB0aGUgY3VycmVudCB0aW1lIGFzIGEgdGltZXN0YW1wIGZvciB0aGUgZGVz
Y3JpcHRvciBmaWxlIGl0c2VsZi4KKyAgICBpZiAoIXdyaXRlVGltZXN0YW1wKGZpbGUsIHRpbWUo
MCksIGZpbGVQYXRoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCF3cml0ZVN0
cmluZyhmaWxlLCBtZXRhRGF0YS5uYW1lLCBmaWxlUGF0aCkKKyAgICAgICAgfHwgIXdyaXRlU3Ry
aW5nKGZpbGUsIG1ldGFEYXRhLmRlc2NyaXB0aW9uLCBmaWxlUGF0aCkKKyAgICAgICAgfHwgIXdy
aXRlU3RyaW5nKGZpbGUsIG1ldGFEYXRhLm1pbWVEZXNjcmlwdGlvbiwgZmlsZVBhdGgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjbG9zZUZpbGUoZmlsZSk7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmRldGVybWluZVF1aXJrcygpCiB7
CiAjaWYgQ1BVKFg4Nl82NCkKLSAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbjsKLSAgICBpZiAo
IWdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4ocGx1Z2luKSkKKyAgICBSYXdQbHVnaW5NZXRh
RGF0YSBtZXRhRGF0YTsKKyAgICBpZiAoIWdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4obWV0
YURhdGEpKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8TWltZUNsYXNzSW5mbz4gbWlt
ZVR5cGVzID0gcGx1Z2luLmluZm8ubWltZXM7CisgICAgVmVjdG9yPE1pbWVDbGFzc0luZm8+IG1p
bWVUeXBlczsKKyAgICBwYXJzZU1JTUVEZXNjcmlwdGlvbihtZXRhRGF0YS5taW1lRGVzY3JpcHRp
b24sIG1pbWVUeXBlcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtaW1lVHlwZXMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKG1pbWVUeXBlc1tpXS50eXBlID09ICJhcHBsaWNhdGlv
bi94LXNob2Nrd2F2ZS1mbGFzaCIpIHsKICAgICAgICAgICAgIG1fcGx1Z2luUXVpcmtzLmFkZChQ
bHVnaW5RdWlya3M6Oklnbm9yZVJpZ2h0Q2xpY2tJbldpbmRvd2xlc3NNb2RlKTsKQEAgLTE4Nyw2
ICszNDgsNDggQEAgdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6ZGV0ZXJtaW5lUXVpcmtzKCkK
ICNlbmRpZgogfQogCitTdHJpbmcgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnBsdWdpbk1ldGFEYXRh
Q2FjaGVEaXJlY3RvcnkoKQoreworI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHJlc3VsdCwgKCkpOworICAgIGlmICghcmVz
dWx0LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgU3RyaW5nIGNhY2hl
RGlyZWN0b3J5OworI2lmIFBMQVRGT1JNKFFUKQorICAgIFFTdHJpbmcgZGF0YUxvY2F0aW9uID0g
UVN0YW5kYXJkUGF0aHM6OndyaXRhYmxlTG9jYXRpb24oUVN0YW5kYXJkUGF0aHM6OkRhdGFMb2Nh
dGlvbik7CisgICAgUVN0cmluZyBkaXJlY3RvcnkgPSBRTGF0aW4xU3RyaW5nKCIlMSUyJTMiKTsK
KyAgICBkaXJlY3RvcnkgPSBkYXRhTG9jYXRpb24uaXNFbXB0eSgpID8gZGlyZWN0b3J5LmFyZyhR
RGlyOjpob21lUGF0aCgpKSA6IGRpcmVjdG9yeS5hcmcoZGF0YUxvY2F0aW9uKTsKKyAgICBkaXJl
Y3RvcnkgPSBkaXJlY3RvcnkuYXJnKFFEaXI6OnNlcGFyYXRvcigpKS5hcmcoUUxhdGluMVN0cmlu
ZygiLlF0V2ViS2l0IikpOworICAgIGNhY2hlRGlyZWN0b3J5ID0gc3RhdGljX2Nhc3Q8U3RyaW5n
PihkaXJlY3RvcnkpOworI2VsaWYgUExBVEZPUk0oR1RLKQorICAgIGNhY2hlRGlyZWN0b3J5ID0g
ZmlsZW5hbWVUb1N0cmluZyhnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCks
ICJ3ZWJraXRndGsiLCBOVUxMKSk7CisjZW5kaWYKKworICAgIHJlc3VsdCA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChjYWNoZURpcmVjdG9yeSwgIm5wYXBpX21ldGFkYXRhX2NhY2hlIik7Cisg
ICAgbWFrZUFsbERpcmVjdG9yaWVzKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbHNl
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7CisjZW5kaWYKK30K
Kwordm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6dmFsaWRhdGVQZXJzaXN0ZW50TWV0YURhdGFD
YWNoZShjb25zdCBQbHVnaW5QYXRoSGFzaFNldCYgdXNlZFBsdWdpbnMpCit7CisgICAgLy8gUmVt
b3ZlIGRlc2NyaXB0b3IgZmlsZXMgZm9yIHBsdWdpbnMgdGhhdCB3ZSBubyBsb25nZXIgdXNlLgor
ICAgIFZlY3RvcjxTdHJpbmc+IGRlc2NyaXB0b3JGaWxlcyA9IGxpc3REaXJlY3RvcnkocGx1Z2lu
TWV0YURhdGFDYWNoZURpcmVjdG9yeSgpLCBTdHJpbmcoIi5iaW4iKSk7CisgICAgSGFzaFNldDxT
dHJpbmc+IGZpbGVzVG9LZWVwOworICAgIGZvciAoUGx1Z2luUGF0aEhhc2hTZXQ6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gdXNlZFBsdWdpbnMuYmVnaW4oKTsgaXQgIT0gdXNlZFBsdWdpbnMuZW5kKCk7
ICsraXQpCisgICAgICAgIGZpbGVzVG9LZWVwLmFkZChtZXRhRGF0YURlc2NyaXB0b3JGaWxlUGF0
aCgqaXQpKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXNjcmlwdG9yRmlsZXMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgU3RyaW5nIGZpbGUgPSBkZXNjcmlwdG9yRmlsZXNbaV07
CisgICAgICAgIGlmICghZmlsZXNUb0tlZXAuY29udGFpbnMoZmlsZSkpCisgICAgICAgICAgICBk
ZWxldGVGaWxlKGZpbGUpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblBhdGhIYXNoU2V0LmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvUGx1Z2lucy9QbHVnaW5QYXRoSGFzaFNldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhMDRmNjQ0ZGI4
OTMzM2NjOGUzMzEzOGFiNzIwMTUyZGM4ZDk0MjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5QYXRoSGFzaFNldC5oCkBAIC0wLDAgKzEsMzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gV2UgdXNl
IGEgTGlzdEhhc2hTZXQgc28gdGhhdCBwbHVnaW5zIHdpbGwgYmUgbG9hZGVkIGZyb20gdGhlIGFk
ZGl0aW9uYWwgcGx1Z2lucyBkaXJlY3RvcmllcyBmaXJzdAorLy8gKHdoaWNoIGluIHR1cm4gbWVh
bnMgdGhvc2UgcGx1Z2lucyB3aWxsIGJlIHByZWZlcnJlZCBpZiB0d28gcGx1Z2lucyBjbGFpbSB0
aGUgc2FtZSBNSU1FIHR5cGUpLgorI2lmIE9TKFdJTkRPV1MpCit0eXBlZGVmIExpc3RIYXNoU2V0
PFN0cmluZywgMzIsIENhc2VGb2xkaW5nSGFzaD4gUGx1Z2luUGF0aEhhc2hTZXQ7CisjZWxzZQor
dHlwZWRlZiBMaXN0SGFzaFNldDxTdHJpbmcsIDMyPiBQbHVnaW5QYXRoSGFzaFNldDsKKyNlbmRp
ZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvU2hhcmVhYmxlQml0
bWFwUXQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNw
cAppbmRleCBiMGFiMmVjMTY1MzJkZTljNjU5NzJlMDNjZTE3MjljY2M3NDU4ODM4Li4xZWJkZmJj
OGIyYjE5Yzg4NWJhYTY5MzE1MmFkMTUzZjBmMjRjYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgPFFJbWFnZT4KICNpbmNsdWRlIDxRUGFpbnRlcj4KKyNpbmNsdWRlIDxRdEdsb2JhbD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC02
NCw4ICs2NSwxMyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgZHN0UG9pbnQsCiAgICAgcGFpbnRlci0+ZHJhd0lt
YWdlKGRzdFBvaW50LCBpbWFnZSwgUVJlY3Qoc3JjUmVjdCkpOwogfQogCi12b2lkIFNoYXJlYWJs
ZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiAvKmNvbnRleHQqLywgZmxvYXQgLypzY2Fs
ZUZhY3RvciovLCBjb25zdCBJbnRQb2ludCYgLypkc3RQb2ludCovLCBjb25zdCBJbnRSZWN0JiAv
KnNyY1JlY3QqLykKK3ZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZHN0UG9pbnQsIGNv
bnN0IEludFJlY3QmIHNyY1JlY3QpCiB7CisgICAgaWYgKHFGdXp6eUNvbXBhcmUoc2NhbGVGYWN0
b3IsIDEuMGYpKSB7CisgICAgICAgIHBhaW50KGNvbnRleHQsIGRzdFBvaW50LCBzcmNSZWN0KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NjYzPi4KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1Rh
cmdldC5wcmkKaW5kZXggMzU5ODNmMDc2NTZkYjQ4MGY4MzVhY2NmNjNmZTNjZDY2ZGE5N2M5MC4u
NzJjM2Y4YTk3OGFiNGIwOTU2MmUxZWY0MjViNzIxMjNkNmExYjhjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBA
IC0zODAsNiArMzgwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkuY3BwIFwKICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3Bw
IFwKICAgICBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBcCisgICAgUGx1
Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuY3BwIFwKICAgICBQbHVnaW5Qcm9j
ZXNzL3F0L1BsdWdpbkNvbnRyb2xsZXJQcm94eVF0LmNwcCBcCiAgICAgUGx1Z2luUHJvY2Vzcy9x
dC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcCBcCiAgICAgUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Q
cm9jZXNzUXQuY3BwIFwKQEAgLTUzOSw4ICs1NDAsOCBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAgXAogICAgIFVJUHJvY2Vzcy9QbHVnaW5zL1dl
YlBsdWdpblNpdGVEYXRhTWFuYWdlci5jcHAgXAotICAgIFVJUHJvY2Vzcy9QbHVnaW5zL3F0L1Bs
dWdpblByb2Nlc3NQcm94eVF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVn
aW5JbmZvU3RvcmVVbml4LmNwcCBcCisgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Q
cm9jZXNzUHJveHlVbml4LmNwcCBcCiAgICAgVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIu
Y3BwIFwKICAgICBVSVByb2Nlc3MvVGlsZWREcmF3aW5nQXJlYVByb3h5LmNwcCBcCiAgICAgVUlQ
cm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAppbmRleCA4ZGJmYjExMDFlMGVh
ZDQ5OWExYmUxZjc2NDIyZDY0Mjg1NDk5MjU4Li40YWZmY2Q1OTkyN2FkZTkyZmUyNjE4YWI2N2Vj
NmQxMDU4NjljYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNo
ZXIvUHJvY2Vzc0xhdW5jaGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5j
aGVyL1Byb2Nlc3NMYXVuY2hlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiUGxhdGZv
cm1Qcm9jZXNzSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYg
UExBVEZPUk0oUVQpCiBjbGFzcyBRTG9jYWxTb2NrZXQ7CkBAIC03Myw2ICs3NCw4IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBib29sIGdldFByb2Nlc3NUeXBlRnJvbVN0cmluZyhjb25zdCBjaGFy
KiwgUHJvY2Vzc1R5cGUmKTsKIAorICAgIHN0YXRpYyBXVEY6OkNTdHJpbmcgcGxhdGZvcm1FeGVj
dXRhYmxlUGF0aChQcm9jZXNzVHlwZSk7CisKIHByaXZhdGU6CiAgICAgUHJvY2Vzc0xhdW5jaGVy
KENsaWVudCosIGNvbnN0IExhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hl
ckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NM
YXVuY2hlckd0ay5jcHAKaW5kZXggYzYzNDVhNmM2OTI1N2VlMDNmZTU4M2M5ZjViOGNiYjBlNTY0
ZjhmNC4uMWVlMjRlMzg5ZDk2Y2IyOTI3N2VlMDFiMDlmMGNmZjZmODRhMGUzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vz
c0xhdW5jaGVyR3RrLmNwcApAQCAtNzYsOCArNzYsMTAgQEAgc3RhdGljIHZvaWQgY2hpbGRGaW5p
c2hlZEZ1bmN0aW9uKEdQaWQsIGdpbnQgc3RhdHVzLCBncG9pbnRlciB1c2VyRGF0YSkKICAgICBj
bG9zZShHUE9JTlRFUl9UT19JTlQodXNlckRhdGEpKTsKIH0KIAotc3RhdGljIENTdHJpbmcgZmlu
ZFdlYktpdFByb2Nlc3MoY29uc3QgY2hhciogcHJvY2Vzc05hbWUpCitDU3RyaW5nIFByb2Nlc3NM
YXVuY2hlcjo6cGxhdGZvcm1FeGVjdXRhYmxlUGF0aChQcm9jZXNzVHlwZSB0eXBlKQogeworICAg
IGNvbnN0IGNoYXIqIHByb2Nlc3NOYW1lID0gdHlwZSA9PSBXZWJQcm9jZXNzID8gZ1dlYktpdFdl
YlByb2Nlc3NOYW1lIDogZ1dlYktpdFBsdWdpblByb2Nlc3NOYW1lOworCiAgICAgY29uc3QgY2hh
ciogZXhlY0RpcmVjdG9yeSA9IGdfZ2V0ZW52KCJXRUJLSVRfRVhFQ19QQVRIIik7CiAgICAgaWYg
KGV4ZWNEaXJlY3RvcnkpIHsKICAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0gcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGZpbGVuYW1lVG9TdHJpbmcoZXhlY0RpcmVjdG9yeSksIHByb2Nlc3NO
YW1lKTsKQEAgLTExNSwxMCArMTE3LDEwIEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQ
cm9jZXNzKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIENTdHJpbmcgYmluYXJ5UGF0
aCA9IGZpbmRXZWJLaXRQcm9jZXNzKG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9PSBQcm9j
ZXNzTGF1bmNoZXI6OldlYlByb2Nlc3MgPyBnV2ViS2l0V2ViUHJvY2Vzc05hbWUgOiBnV2ViS2l0
UGx1Z2luUHJvY2Vzc05hbWUpOworICAgIENTdHJpbmcgYmluYXJ5UGF0aCA9IHBsYXRmb3JtRXhl
Y3V0YWJsZVBhdGgobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlKTsKICAgICBHT3duUHRyPGdj
aGFyPiBzb2NrZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIHNvY2tldHNbMF0pKTsKICAgICBjaGFy
KiBhcmd2WzNdOwotICAgIGFyZ3ZbMF0gPSBjb25zdF9jYXN0PGNoYXIqPihiaW5hcnlQYXRoLmRh
dGEoKSk7CisgICAgYXJndlswXSA9IGJpbmFyeVBhdGgubXV0YWJsZURhdGEoKTsKICAgICBhcmd2
WzFdID0gc29ja2V0LmdldCgpOwogICAgIGFyZ3ZbMl0gPSAwOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFj
Lm1tCmluZGV4IGM3MGY2MmVkZmJjZjg3YzZhYjI4YWU2YmM3MmM0YWMyNzhkN2U5NzQuLmIxNTFm
YmU1NmY2OGMzNDIzNzg1YzJlZDk2ODMzNGRiY2NlYTlmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFj
Lm1tCkBAIC0yMzEsNCArMjMxLDE3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpwbGF0Zm9ybUlu
dmFsaWRhdGUoKQogewogfQogCitDU3RyaW5nIFByb2Nlc3NMYXVuY2hlcjo6cGxhdGZvcm1FeGVj
dXRhYmxlUGF0aChQcm9jZXNzVHlwZSB0eXBlKQoreworICAgIE5TQnVuZGxlICp3ZWJLaXQyQnVu
ZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdDIi
XTsKKworICAgIE5TU3RyaW5nICpwcm9jZXNzUGF0aDsKKyAgICBpZiAodHlwZSA9PSBQcm9jZXNz
TGF1bmNoZXI6OlBsdWdpblByb2Nlc3MpCisgICAgICAgIHByb2Nlc3NQYXRoID0gW3dlYktpdDJC
dW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJQbHVnaW5Qcm9jZXNzLmFwcCJdOwor
ICAgIGVsc2UKKyAgICAgICAgcHJvY2Vzc1BhdGggPSBbd2ViS2l0MkJ1bmRsZSBwYXRoRm9yQXV4
aWxpYXJ5RXhlY3V0YWJsZTpAIldlYlByb2Nlc3MuYXBwIl07CisKKyAgICByZXR1cm4gW1tbTlNC
dW5kbGUgYnVuZGxlV2l0aFBhdGg6cHJvY2Vzc1BhdGhdIGV4ZWN1dGFibGVQYXRoXSBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb25dOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJR
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5j
aGVyUXQuY3BwCmluZGV4IDgzN2Y1OWJhZjFiNWZmNWExNjU0NWY2NTkwN2Y2YWQzNTA0MDEwMWQu
LjcyZTg3ZjNlZDE1NzczNjNhZGY5MDk5MzM1M2NiOWJmODdhNTRjMzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hl
clF0LmNwcApAQCAtMzIsMTIgKzMyLDE0IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UURlYnVnPgorI2luY2x1ZGUgPFFE
aXI+CiAjaW5jbHVkZSA8UUZpbGU+CiAjaW5jbHVkZSA8UUxvY2FsU2VydmVyPgogI2luY2x1ZGUg
PFFNZXRhVHlwZT4KICNpbmNsdWRlIDxRUHJvY2Vzcz4KICNpbmNsdWRlIDxRU3RyaW5nPgogI2lu
Y2x1ZGUgPFF0Q29yZS9xZ2xvYmFsLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPGVycm5vLmg+
CiAjaW5jbHVkZSA8ZmNudGwuaD4KQEAgLTEwMywxMSArMTA1LDggQEAgdm9pZCBQcm9jZXNzTGF1
bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogewogICAgIFFTdHJpbmcgYXBwbGljYXRpb25QYXRoID0g
UUxhdGluMVN0cmluZygiJTEgJTIiKTsKIAotICAgIGlmIChRRmlsZTo6ZXhpc3RzKFFDb3JlQXBw
bGljYXRpb246OmFwcGxpY2F0aW9uRGlyUGF0aCgpICsgUUxhdGluMVN0cmluZygiL1F0V2ViUHJv
Y2VzcyIpKSkgewotICAgICAgICBhcHBsaWNhdGlvblBhdGggPSBhcHBsaWNhdGlvblBhdGguYXJn
KFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uRGlyUGF0aCgpICsgUUxhdGluMVN0cmluZygi
L1F0V2ViUHJvY2VzcyIpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBhcHBsaWNhdGlvblBhdGgg
PSBhcHBsaWNhdGlvblBhdGguYXJnKFFMYXRpbjFTdHJpbmcoIlF0V2ViUHJvY2VzcyIpKTsKLSAg
ICB9CisgICAgQ1N0cmluZyBleGVjdXRhYmxlUGF0aCA9IHBsYXRmb3JtRXhlY3V0YWJsZVBhdGgo
bV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlKTsKKyAgICBhcHBsaWNhdGlvblBhdGggPSBhcHBs
aWNhdGlvblBhdGguYXJnKFFMYXRpbjFTdHJpbmcoZXhlY3V0YWJsZVBhdGguZGF0YSgpKSk7CiAK
ICNpZiBPUyhEQVJXSU4pCiAgICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcgcG9ydC4KQEAgLTE5
MSw2ICsxOTAsMTggQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OnBsYXRmb3JtSW52YWxpZGF0ZSgp
CiAKIH0KIAorQ1N0cmluZyBQcm9jZXNzTGF1bmNoZXI6OnBsYXRmb3JtRXhlY3V0YWJsZVBhdGgo
UHJvY2Vzc1R5cGUgdHlwZSkKK3sKKyAgICBRTGF0aW4xU3RyaW5nIGV4ZWN1dGFibGVOYW1lID0g
dHlwZSA9PSBQcm9jZXNzTGF1bmNoZXI6OldlYlByb2Nlc3MgPworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJRdFdlYlByb2Nlc3MiKSA6IFFMYXRpbjFT
dHJpbmcoIlF0V2ViUGx1Z2luUHJvY2VzcyIpOworCisgICAgUVN0cmluZyBleHBlY3RlZFBhdGgg
PSBRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlvbkRpclBhdGgoKSArIFFEaXI6OnNlcGFyYXRv
cigpICsgZXhlY3V0YWJsZU5hbWU7CisgICAgaWYgKFFGaWxlOjpleGlzdHMoZXhwZWN0ZWRQYXRo
KSkKKyAgICAgICAgcmV0dXJuIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleHBlY3RlZFBhdGgp
OworCisgICAgcmV0dXJuIENTdHJpbmcoZXhlY3V0YWJsZU5hbWUubGF0aW4xKCkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlclF0Lm1vYyIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9T
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3Rv
cmUuY3BwCmluZGV4IGYzNzA5OWYyYzJhNDJkMjJlMjcwMjVhZjY0MWUxYmQ3ZGEyMzgyMTEuLjlj
OTgyYzMxMTdiOWE3Y2YwMjQwZjgwMWVkMWZlNjkyN2Y0OWQ0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcApAQCAtMjYs
MTEgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb1N0
b3JlLmgiCiAKKyNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbk1vZHVsZS5oIgorI2luY2x1ZGUgIlBs
dWdpblBhdGhIYXNoU2V0LmgiCiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvS1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5o
PgogI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC02
MSwyMCArNjIsMTIgQEAgc3RhdGljIHZvaWQgYWRkRnJvbVZlY3RvcihUJiBoYXNoU2V0LCBjb25z
dCBVJiB2ZWN0b3IpCiAgICAgICAgIGhhc2hTZXQuYWRkKHZlY3RvcltpXSk7CiB9CiAKLS8vIFdl
IHVzZSBhIExpc3RIYXNoU2V0IHNvIHRoYXQgcGx1Z2lucyB3aWxsIGJlIGxvYWRlZCBmcm9tIHRo
ZSBhZGRpdGlvbmFsIHBsdWdpbnMgZGlyZWN0b3JpZXMgZmlyc3QKLS8vICh3aGljaCBpbiB0dXJu
IG1lYW5zIHRob3NlIHBsdWdpbnMgd2lsbCBiZSBwcmVmZXJyZWQgaWYgdHdvIHBsdWdpbnMgY2xh
aW0gdGhlIHNhbWUgTUlNRSB0eXBlKS4KLSNpZiBPUyhXSU5ET1dTKQotdHlwZWRlZiBMaXN0SGFz
aFNldDxTdHJpbmcsIDMyLCBDYXNlRm9sZGluZ0hhc2g+IFBhdGhIYXNoU2V0OwotI2Vsc2UKLXR5
cGVkZWYgTGlzdEhhc2hTZXQ8U3RyaW5nLCAzMj4gUGF0aEhhc2hTZXQ7Ci0jZW5kaWYKLQogdm9p
ZCBQbHVnaW5JbmZvU3RvcmU6OmxvYWRQbHVnaW5zSWZOZWNlc3NhcnkoKQogewogICAgIGlmICht
X3BsdWdpbkxpc3RJc1VwVG9EYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBQYXRoSGFzaFNl
dCB1bmlxdWVQbHVnaW5QYXRoczsKKyAgICBQbHVnaW5QYXRoSGFzaFNldCB1bmlxdWVQbHVnaW5Q
YXRoczsKIAogICAgIC8vIEZpcnN0LCBsb2FkIHBsdWctaW5zIGZyb20gdGhlIGFkZGl0aW9uYWwg
cGx1Zy1pbnMgZGlyZWN0b3JpZXMgc3BlY2lmaWVkLgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9hZGRpdGlvbmFsUGx1Z2luc0RpcmVjdG9yaWVzLnNpemUoKTsgKytpKQpAQCAtODgsMTMg
KzgxLDE3IEBAIHZvaWQgUGx1Z2luSW5mb1N0b3JlOjpsb2FkUGx1Z2luc0lmTmVjZXNzYXJ5KCkK
ICAgICAvLyBUaGVuIGxvYWQgcGx1Zy1pbnMgdGhhdCBhcmUgbm90IGluIHRoZSBzdGFuZGFyZCBw
bHVnLWlucyBkaXJlY3Rvcmllcy4KICAgICBhZGRGcm9tVmVjdG9yKHVuaXF1ZVBsdWdpblBhdGhz
LCBpbmRpdmlkdWFsUGx1Z2luUGF0aHMoKSk7CiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgx
MSkKKyAgICBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6dmFsaWRhdGVQZXJzaXN0ZW50TWV0YURhdGFD
YWNoZSh1bmlxdWVQbHVnaW5QYXRocyk7CisjZW5kaWYKKwogICAgIFZlY3RvcjxQbHVnaW5Nb2R1
bGVJbmZvPiBwbHVnaW5zOwogCi0gICAgUGF0aEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IHVuaXF1ZVBsdWdpblBhdGhzLmVuZCgpOwotICAgIGZvciAoUGF0aEhhc2hTZXQ6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gdW5pcXVlUGx1Z2luUGF0aHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQor
ICAgIFBsdWdpblBhdGhIYXNoU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSB1bmlxdWVQbHVnaW5Q
YXRocy5lbmQoKTsKKyAgICBmb3IgKFBsdWdpblBhdGhIYXNoU2V0Ojpjb25zdF9pdGVyYXRvciBp
dCA9IHVuaXF1ZVBsdWdpblBhdGhzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAg
bG9hZFBsdWdpbihwbHVnaW5zLCAqaXQpOwogCi0gICAgbV9wbHVnaW5zLnN3YXAocGx1Z2lucyk7
CisgICAgbV9wbHVnaW5zLnN3YXAocGx1Z2lucyk7ICAgIAogICAgIG1fcGx1Z2luTGlzdElzVXBU
b0RhdGUgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCmluZGV4IGE3NWQ1YjEzODdjZDhiZGE5ZGM1MjMx
MmQ4MjZmNGFhMGI0Njk2NTYuLjY4MDA1ZjE0YjUwZWI3YzFlMDYzZmI3NTE1ZjBkYjk4NTRiNTEw
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NQcm94eS5oCkBAIC04MCw2ICs4MCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgY3JlYXRlUHJvcGVydHlMaXN0RmlsZShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJik7CiAjZW5k
aWYKIAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgIHN0YXRpYyBib29sIGNyZWF0
ZU1ldGFEYXRhRGVzY3JpcHRvckZpbGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFBsdWdpblByb2Nlc3NQ
cm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblBy
b2Nlc3NQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsv
UGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NGM4NTc3MmEyN2Y3YjcwNzJhZmY2YTExMzdjOTI3NDg4NWE4ZjY0My4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5o
IgotCi0jaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotCi0jaW5jbHVkZSAiUGx1Z2luUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0
Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1By
b3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblBy
b2Nlc3NQcm94eU1hYy5tbQppbmRleCBiMDcyNDE3ZmVhMjgzZjkzOTJhNTVkZDk5YWMzMzBmZTdh
YzUwMzAwLi4xMjAwZjE3MGMxMDUwNmZmOTgxMGZjZWQ5YjM3ZTRhMWEyYzVlMmMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1By
b3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVn
aW5Qcm9jZXNzUHJveHlNYWMubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiRW52aXJv
bm1lbnRWYXJpYWJsZXMuaCIKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKKyNpbXBvcnQgIlByb2Nlc3NMYXVuY2hlci5oIgogI2ltcG9ydCAiV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHNw
YXduLmg+CkBAIC03MCw5ICs3MSw4IEBAIGJvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGVQ
cm9wZXJ0eUxpc3RGaWxlKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKICAgICBOU0J1
bmRsZSAqd2ViS2l0MkJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNv
bS5hcHBsZS5XZWJLaXQyIl07CiAgICAgTlNTdHJpbmcgKmZyYW1ld29ya3NQYXRoID0gW1t3ZWJL
aXQyQnVuZGxlIGJ1bmRsZVBhdGhdIHN0cmluZ0J5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF07
CiAgICAgY29uc3QgY2hhciogZnJhbWV3b3JrRXhlY3V0YWJsZVBhdGggPSBbW3dlYktpdDJCdW5k
bGUgZXhlY3V0YWJsZVBhdGhdIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl07Ci0gICAgCi0gICAg
TlNTdHJpbmcgKnByb2Nlc3NQYXRoID0gW3dlYktpdDJCdW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4
ZWN1dGFibGU6QCJQbHVnaW5Qcm9jZXNzLmFwcCJdOwotICAgIE5TU3RyaW5nICpwcm9jZXNzQXBw
RXhlY3V0YWJsZVBhdGggPSBbW05TQnVuZGxlIGJ1bmRsZVdpdGhQYXRoOnByb2Nlc3NQYXRoXSBl
eGVjdXRhYmxlUGF0aF07CisKKyAgICBDU3RyaW5nIHByb2Nlc3NBcHBFeGVjdXRhYmxlUGF0aCA9
IFByb2Nlc3NMYXVuY2hlcjo6cGxhdGZvcm1FeGVjdXRhYmxlUGF0aChQcm9jZXNzTGF1bmNoZXI6
OlBsdWdpblByb2Nlc3MpOwogCiAgICAgQ1N0cmluZyBwbHVnaW5QYXRoU3RyaW5nID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpbi5wYXRoKTsKIApAQCAtOTEsNyArOTEsNyBAQCBib29s
IFBsdWdpblByb2Nlc3NQcm94eTo6Y3JlYXRlUHJvcGVydHlMaXN0RmlsZShjb25zdCBQbHVnaW5N
b2R1bGVJbmZvJiBwbHVnaW4pCiAgICAgaWYgKCFbZnJhbWV3b3Jrc1BhdGggaGFzUHJlZml4OkAi
L1N5c3RlbS8iXSkKICAgICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXMuYXBwZW5kVmFsdWUoIkRZ
TERfRlJBTUVXT1JLX1BBVEgiLCBbZnJhbWV3b3Jrc1BhdGggZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uXSwgJzonKTsKIAotICAgIGNvbnN0IGNoYXIqIGFyZ3NbXSA9IHsgW3Byb2Nlc3NBcHBFeGVj
dXRhYmxlUGF0aCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dLCBmcmFtZXdvcmtFeGVjdXRhYmxl
UGF0aCwgIi10eXBlIiwgInBsdWdpbnByb2Nlc3MiLCAiLWNyZWF0ZVBsdWdpbk1JTUVUeXBlc1By
ZWZlcmVuY2VzIiwgcGx1Z2luUGF0aFN0cmluZy5kYXRhKCksIDAgfTsKKyAgICBjb25zdCBjaGFy
KiBhcmdzW10gPSB7IHByb2Nlc3NBcHBFeGVjdXRhYmxlUGF0aC5kYXRhKCksIGZyYW1ld29ya0V4
ZWN1dGFibGVQYXRoLCAiLXR5cGUiLCAicGx1Z2lucHJvY2VzcyIsICItY3JlYXRlUGx1Z2luTUlN
RVR5cGVzUHJlZmVyZW5jZXMiLCBwbHVnaW5QYXRoU3RyaW5nLmRhdGEoKSwgMCB9OwogCiAgICAg
cGlkX3QgcGlkOwogICAgIGludCByZXN1bHQgPSBwb3NpeF9zcGF3bigmcGlkLCBhcmdzWzBdLCAw
LCAmYXR0ciwgY29uc3RfY2FzdDxjaGFyKiBjb25zdCo+KGFyZ3MpLCBlbnZpcm9ubWVudFZhcmlh
Ymxlcy5lbnZpcm9ubWVudFBvaW50ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNTIxZTBhZjlhNmEwNzQ0YzJkYzBlMDZmNjUxNGZj
OTRiMzQ5ZjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2luUHJvY2Vzc1Byb3h5UXQu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBOb2tpYSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKLQotI2lmIEVOQUJM
RShQTFVHSU5fUFJPQ0VTUykKLQotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXpl
UGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5
VW5peC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ3ZmZhYTU3YjA4ZTBkOTZiYzhiZjUzMjY4NGRlNjBmMTc2
OWIyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKQEAgLTAsMCArMSwxMDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExIFVuaXZlcnNpdHkgb2YgU3plZ2VkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJv
Y2Vzc1Byb3h5LmgiCisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisKKyNpbmNsdWRlICJQ
bHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiUHJvY2Vzc0xhdW5j
aGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c2lnbmFs
Lmg+CisjaW5jbHVkZSA8c3Bhd24uaD4KKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgorI2luY2x1ZGUg
PHRpbWUuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
dm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3Mo
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit7Cit9CisKK2Jvb2wgUGx1Z2luUHJv
Y2Vzc1Byb3h5OjpjcmVhdGVNZXRhRGF0YURlc2NyaXB0b3JGaWxlKGNvbnN0IFN0cmluZyYgcGx1
Z2luUGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICBDU3RyaW5nIGV4ZWN1dGFi
bGVQYXRoID0gUHJvY2Vzc0xhdW5jaGVyOjpwbGF0Zm9ybUV4ZWN1dGFibGVQYXRoKFByb2Nlc3NM
YXVuY2hlcjo6UGx1Z2luUHJvY2Vzcyk7CisgICAgY2hhciBvcHRpb25bXSA9ICItY3JlYXRlTWV0
YURhdGFEZXNjcmlwdGlvbiI7CisgICAgQ1N0cmluZyBwbHVnaW5QYXRoQ1N0cmluZyA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwbHVnaW5QYXRoKTsKKyAgICBDU3RyaW5nIGZpbGVQYXRoQ1N0
cmluZyA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisgICAgY2hhciogYXJn
c1tdID0geworICAgICAgICBleGVjdXRhYmxlUGF0aC5tdXRhYmxlRGF0YSgpLAorICAgICAgICBv
cHRpb24sCisgICAgICAgIHBsdWdpblBhdGhDU3RyaW5nLm11dGFibGVEYXRhKCksCisgICAgICAg
IGZpbGVQYXRoQ1N0cmluZy5tdXRhYmxlRGF0YSgpLAorICAgICAgICAwCisgICAgfTsKKworICAg
IHBpZF90IHBpZDsKKyAgICBpZiAocG9zaXhfc3Bhd24oJnBpZCwgYXJnc1swXSwgMCwgMCwgYXJn
cywgOjplbnZpcm9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gV2FpdCBhdCBt
b3N0IDMgc2Vjb25kcyBmb3IgdGhlIGNoaWxkLiBUaGlzIGlzIGFuIGVtcGlyaWNhbCBsaW1pdC4K
KyAgICAvLyBVbmZvcnR1bmF0ZWx5IHNvbWUgcGx1Z2lucyAobW9zdGx5IHRoZSBuc3BsdWdpbndy
YXBwZXIgYmFzZWQgb25lcykKKyAgICAvLyBuZWVkIHJlYWxseSBsb25nIHRpbWUgdG8gc2V0IHVw
LgorICAgIGludCBjaGlsZFN0YXR1czsKKyAgICB1bnNpZ25lZCByZXRyeUNvdW50ID0gMDsKKyAg
ICBjb25zdCB1bnNpZ25lZCBtYXhXYWl0VGltZU1TID0gMzAwMDsKKyAgICBjb25zdCB1bnNpZ25l
ZCBzbGVlcFRpbWVNUyA9IDUwOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGludCB3YWl0
UmVzdWx0OworICAgICAgICB3aGlsZSAoKHdhaXRSZXN1bHQgPSB3YWl0cGlkKHBpZCwgJmNoaWxk
U3RhdHVzLCBXTk9IQU5HKSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQorICAgICAgICBB
U1NFUlQod2FpdFJlc3VsdCAhPSAtMSk7CisgICAgICAgIGlmICh3YWl0UmVzdWx0KSB7CisgICAg
ICAgICAgICBBU1NFUlQod2FpdFJlc3VsdCA9PSBwaWQpOworICAgICAgICAgICAgLy8gU3VjY2Vz
cy4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJldHJ5Q291
bnQrKyA+PSBtYXhXYWl0VGltZU1TIC8gc2xlZXBUaW1lTVMpIHsKKyAgICAgICAgICAgIGtpbGwo
cGlkLCBTSUdLSUxMKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisg
ICAgICAgIHRpbWVzcGVjIHNsZWVwVGltZSA9IHsgMCwgc2xlZXBUaW1lTVMgKiAxZSs2IH07Cisg
ICAgICAgIGludCBzbGVlcFJlc3VsdDsKKyAgICAgICAgd2hpbGUgKChzbGVlcFJlc3VsdCA9IG5h
bm9zbGVlcCgmc2xlZXBUaW1lLCAmc2xlZXBUaW1lKSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIp
IHsgfQorICAgICAgICBBU1NFUlQoIXNsZWVwUmVzdWx0KTsKKyAgICB9CisKKyAgICBpZiAoIVdJ
RkVYSVRFRChjaGlsZFN0YXR1cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoV0VY
SVRTVEFUVVMoY2hpbGRTdGF0dXMpICE9IEVYSVRfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dz
ZXJGdW5jcy5jcHAKaW5kZXggYThhODA2ZTAxOWFlNDZjZmMwYTU5MGFkZjUxMjcxNmVkYzQzNWYx
Yy4uYzA2NjAyMjU5MzkwOTE3OGUzYjcyYjM5ODYwZDM4N2Q0YjQ0NTljZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3Nl
ckZ1bmNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCkBAIC01MjgsMjUgKzUyOCwxMCBAQCBzdGF0aWMg
TlBFcnJvciBOUE5fR2V0VmFsdWUoTlBQIG5wcCwgTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQg
KnZhbHVlKQogICAgICAgIGNhc2UgTlBOVlN1cHBvcnRzV2luZG93bGVzczoKICAgICAgICAgICAg
KnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IHRydWU7CiAgICAgICAgICAgIGJyZWFrOwot
CiAgICAgICAgY2FzZSBOUE5WVG9vbGtpdDogewotI2lmIFBMQVRGT1JNKEdUSykKLSAgICAgICAg
ICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZSkgPSAyOwotI2Vsc2UKLSAgICAg
ICAgICAgY29uc3QgdWludDMyX3QgZXhwZWN0ZWRHVEtUb29sS2l0VmVyc2lvbiA9IDI7Ci0KLSAg
ICAgICAgICAgLy8gU2V0IHRoZSBleHBlY3RlZCBHVEsgdmVyc2lvbiBpZiB3ZSBrbm93IHRoYXQg
dGhpcyBwbHVnaW4gbmVlZHMgaXQgb3IgaWYgdGhlIHBsdWdpbiBjYWxsIHVzCi0gICAgICAgICAg
IC8vIHdpdGggYSBudWxsIGluc3RhbmNlLiBUaGUgbGF0dGVyIGlzIHRoZSBjYXNlIHdpdGggTlNQ
bHVnaW5XcmFwcGVyIHBsdWdpbnMuCi0gICAgICAgICAgIGJvb2wgcmVxdWlyZXNHVEtUb29sS2l0
VmVyc2lvbjsKLSAgICAgICAgICAgaWYgKCFucHApCi0gICAgICAgICAgICAgICByZXF1aXJlc0dU
S1Rvb2xLaXRWZXJzaW9uID0gdHJ1ZTsKLSAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICBSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IHBsdWdpbiA9IE5ldHNjYXBlUGx1Z2luOjpmcm9tTlBQ
KG5wcCk7Ci0gICAgICAgICAgICAgICByZXF1aXJlc0dUS1Rvb2xLaXRWZXJzaW9uID0gcGx1Z2lu
LT5xdWlya3MoKS5jb250YWlucyhQbHVnaW5RdWlya3M6OlJlcXVpcmVzR1RLVG9vbEtpdCk7Ci0g
ICAgICAgICAgIH0KLQotICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHZh
bHVlKSA9IHJlcXVpcmVzR1RLVG9vbEtpdFZlcnNpb24gPyBleHBlY3RlZEdUS1Rvb2xLaXRWZXJz
aW9uIDogMDsKLSNlbmRpZgorICAgICAgICAgICAvLyBHdGsgYmFzZWQgcGx1Z2lucyBuZWVkIHRv
IGJlIGFzc3VyZWQgYWJvdXQgdGhlIHRvb2xraXQgdmVyc2lvbi4KKyAgICAgICAgICAgY29uc3Qg
dWludDMyX3QgZXhwZWN0ZWRHdGtUb29sS2l0VmVyc2lvbiA9IDI7CisgICAgICAgICAgICpyZWlu
dGVycHJldF9jYXN0PHVpbnQzMl90Kj4odmFsdWUpID0gZXhwZWN0ZWRHdGtUb29sS2l0VmVyc2lv
bjsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9xdC9QbHVnaW5NYWluUXQuY3BwIGIvU291cmNlL1dlYktpdDIvcXQvUGx1Z2luTWFpblF0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zZDVjOTNiNTdiM2I5ZWNlNTQzNmMwNmQxNzY0MzNiZDI2OWE5MWQy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvcXQvUGx1Z2luTWFpblF0LmNwcApA
QCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBVbml2ZXJzaXR5IG9mIFN6
ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaW5jbHVkZSA8UUxpYnJhcnk+CisjaW5jbHVkZSA8UXRHbG9iYWw+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworUV9ERUNMX0lNUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW4oaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQorewor
ICAgIHJldHVybiBXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluKGFyZ2MsIGFyZ3YpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL3F0d2Via2l0LWV4cG9ydC5tYXAgYi9Tb3VyY2UvcXR3ZWJraXQtZXhw
b3J0Lm1hcAppbmRleCAzYWY4NDkyYmI1NDM2YmJlY2MzZmQ0NmJlOTllZjhjY2U5ZjRiZTliLi45
Y2RhODRmZDBjYTUyZDBmMjc5OWZiYzVjODM1YTVjNjRhYjVkNTNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvcXR3ZWJraXQtZXhwb3J0Lm1hcAorKysgYi9Tb3VyY2UvcXR3ZWJraXQtZXhwb3J0Lm1hcApA
QCAtOTYsNiArOTYsNyBAQCBxd2tfMS4wIHsKIAogICAgICAgICAjIFdlYktpdCAyIEhlbHBlcnMK
ICAgICAgICAgV2ViS2l0OjpXZWJQcm9jZXNzTWFpblF0KjsKKyAgICAgICAgV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzTWFpbio7CiAgICAgICAgIFdURjo6ZmFzdE1hbGxvYyo7CiAgICAgICAgIFdURjo6
ZmFzdEZyZWUqOwogICAgICAgICBXVEY6OmZhc3RaZXJvZWRNYWxsb2MqOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdhZGQ2OTdlMjk0Zjg1OWM0
NGFmODIwYmQwMGNjN2M2ODA5ZWUwZjEuLjM4NzNiYmJlNjYyODg5MzAxZDIxMWIxNTExM2RkOTVh
Y2YzMjk3MDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wMS0xMiAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpz
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIFNldCB1cCBwbHVnaW4gcHJvY2VzcyBv
biBVbml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MjEyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
ZW5hYmxlIHBsdWdpbnMuIFRoZXkgc2hvdWxkIG5vdCBiZSBhIHNvdXJjZQorICAgICAgICBvZiBw
cm9ibGVtcyBub3cgdGhhdCB3ZSBoYXZlIGEgd2F5IG9mIHJ1bm5pbmcKKyAgICAgICAgdGhlbSBv
dXQtb2YtcHJvY2Vzcy4KKworICAgICAgICAqIHFtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVy
ZXMucHJmOgorCiAyMDEyLTAxLTEwICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIHRlc3Qtd2Via2l0cHk6IHB1c2ggbW9yZSBsb2dpYyBpbnRvIHdlYmtpdHB5
LnRlc3QubWFpbiwgY2xlYW4gdXAgY29kZQpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVj
cy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2Zl
YXR1cmVzLnByZgppbmRleCA3OWM5MDRjMTNiOTU2NzAwMmFhMWFhMTc3ODBjNzViZmE4MjJiNzA5
Li43NzQzZTlhNTg5N2E1ZTlmYjVlY2FjZjQ3Y2FhYjczY2Q0ZGUxZGRmIDEwMDY0NAotLS0gYS9U
b29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgorKysgYi9Ub29scy9xbWFr
ZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgpAQCAtMTEwLDEzICsxMTAsMTIgQEAgaGF2
ZVF0KDQpOnVuaXg6IW1hYzohZW1iZWRkZWQgewogfQogCiAjIE5ldHNjYXBlIHBsdWdpbnMgc3Vw
cG9ydCBmb3IgV2ViS2l0MgotIW5vX3dlYmtpdDI6IWNvbnRhaW5zKERFRklORVMsIFBMVUdJTl9B
UkNISVRFQ1RVUkVfVU5TVVBQT1JURUQpOiB7Ci0gICAgIyBEaXNhYmxlIHhsaWIgcGx1Z2lucyB3
aGlsZSB0aGV5J3JlIGluLXByb2Nlc3MsIGJlY2F1c2UgdGhleSBjcmFzaAotICAgICMgYXMgc29v
biBhcyBhbiBpbnN0YWxsZWQgbnBhcGkgcGx1Z2luIHVzZXMgUXQgNC4KLSAgICBmYWxzZTpjb250
YWlucyhRVF9DT05GSUcsIHhjYi14bGliKSB7Cishbm9fd2Via2l0MjohY29udGFpbnMoREVGSU5F
UywgUExVR0lOX0FSQ0hJVEVDVFVSRV9VTlNVUFBPUlRFRCkgeworICAgIGNvbnRhaW5zKFFUX0NP
TkZJRywgeGNiLXhsaWIpIHsKICAgICAgICAgQ09ORklHICs9IHBsdWdpbl9iYWNrZW5kX3hsaWIK
ICAgICAgICAgREVGSU5FUyArPSBQTFVHSU5fQVJDSElURUNUVVJFX1gxMT0xIFwKICAgICAgICAg
ICAgICAgICAgICBQTFVHSU5fQVJDSElURUNUVVJFX1VOU1VQUE9SVEVEPTAKKyAgICAgICAgREVG
SU5FUyArPSBFTkFCTEVfUExVR0lOX1BST0NFU1M9MQogICAgIH0gZWxzZSB7CiAgICAgICAgIERF
RklORVMgKz0gUExVR0lOX0FSQ0hJVEVDVFVSRV9VTlNVUFBPUlRFRD0xCiAgICAgfQpkaWZmIC0t
Z2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGMyMWI5NGRiMGMzMGQ1ZDIzYzM3ZDMw
NzkwODA5OWUyMGM1MWU0ZjQuLmU2NzdiZmEzMTRlOWMwZTU5NDAxZWE1NDJkYjkwNTQwYjkyZDgx
YjQgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxMi0wMS0xMiAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW1F0XVtXSzJdIFNldCB1cCBwbHVnaW4gcHJvY2VzcyBvbiBVbml4CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjEyMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL1F0V2ViS2l0LnBy
bzoKKyAgICAgICAgKiBTb3VyY2UvcXR3ZWJraXQtZXhwb3J0Lm1hcDoKKwogMjAxMi0wMS0xMSAg
VWxhbiBEZWdlbmJhZXYgIDx1bGFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbdjhdIEludDE2
QXJyYXkuc2V0KGFycmF5LCBvZmZzZXQpIGZhaWxzIG9uIGZpcnN0IGV4ZWN1dGlvbgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128204</attachid>
            <date>2012-02-22 06:49:13 -0800</date>
            <delta_ts>2012-02-22 16:48:34 -0800</delta_ts>
            <desc>patch</desc>
            <filename>tmp.diff</filename>
            <type>text/plain</type>
            <size>39275</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4YjYxMjJhLi4yNmJmMWMy
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTItMDItMjIgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAg
ICAgIFtRdF1bV0syXSBTZXQgdXAgcGx1Z2luIHByb2Nlc3Mgb24gVW5peAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxMjEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9RdFdlYktpdC5wcm86
IEFkZCBQbHVnaW5Qcm9jZXNzIHN1YnByb2plY3QuCisKIDIwMTItMDItMTkgIEd1c3Rhdm8gTm9y
b25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUS10gUmVtb3ZlIHVudXNl
ZCBHU2V0dGluZ3Mgc3R1ZmYKZGlmZiAtLWdpdCBhL1NvdXJjZS9RdFdlYktpdC5wcm8gYi9Tb3Vy
Y2UvUXRXZWJLaXQucHJvCmluZGV4IDAyZmM5ZTEuLmJiYmZjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9RdFdlYktpdC5wcm8KKysrIGIvU291cmNlL1F0V2ViS2l0LnBybwpAQCAtNCw2ICs0LDggQEAK
ICMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQg
c3lzdGVtCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorbG9hZChmZWF0dXJlcykKKwogVEVNUExBVEUgPSBzdWJk
aXJzCiBDT05GSUcgKz0gb3JkZXJlZAogCkBAIC0xMyw2ICsxNSwxMCBAQCBTVUJESVJTICs9IGFw
aQogIW5vX3dlYmtpdDIgewogICAgIHdlYnByb2Nlc3MuZmlsZSA9IFdlYktpdDIvV2ViUHJvY2Vz
cy5wcm8KICAgICBTVUJESVJTICs9IHdlYnByb2Nlc3MKKyAgICBjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfUExVR0lOX1BST0NFU1M9MSkgeworICAgICAgICBwbHVnaW5wcm9jZXNzLmZpbGUgPSBX
ZWJLaXQyL1BsdWdpblByb2Nlc3MucHJvCisgICAgICAgIFNVQkRJUlMgKz0gcGx1Z2lucHJvY2Vz
cworICAgIH0KIH0KIAogaW5jbHVkZShXZWJLaXQvcXQvZG9jcy9kb2NzLnByaSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCAyMzkxMTZmLi5jYzA3YzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisyMDEy
LTAyLTIyICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBb
UXRdW1dLMl0gU2V0IHVwIHBsdWdpbiBwcm9jZXNzIG9uIFVuaXgKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTIxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0dXAgcGx1Z2luIHByb2Nlc3MgZm9yIFF0
IGFuZCBtb3ZlIHRoZSB0YXNrIG9mIHF1ZXJ5aW5nIHRoZSBwbHVnaW5zCisgICAgICAgIHRvIHRo
aXMgcHJvY2VzcyBpbiBvcmRlciB0byBhdm9pZCBjcmFzaGVzIGR1ZSB0byBwbHVnaW4gYnVncyBv
ciBsaWJyYXJ5CisgICAgICAgIGluY29tcGF0aWJpbGl0eS4KKworICAgICAgICAqIEdOVW1ha2Vm
aWxlLmFtOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MucHJvOiBBZGRlZC4KKworICAgICAgICAq
IFBsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luUHJvY2Vzc01haW5HdGspCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9xdC9Q
bHVnaW5Qcm9jZXNzTWFpblF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bWVzc2FnZUhhbmRsZXIp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZUd0ayk6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluKToKKyAgICAgICAgSW1wbGVtZW50IGVu
dHJ5IHBvaW50IG9mIHRoZSBwbHVnaW4gcHJvY2Vzcy4KKyAgICAgICAgSGFuZGxlIC1zY2FuUGx1
Z2luIGNvbW1hbmQgbGluZSBzd2l0Y2g6IHByb2R1Y2UgbWV0YSBkYXRhCisgICAgICAgIG9mIHBs
dWdpbiBvbiBzdGFuZGFyZCBvdXRwdXQgYW5kIHRlcm1pbmF0ZS4gTW92ZSBHdGsgaW5pdGlhbGl6
YXRpb24KKyAgICAgICAgaGFjayB0byB0aGVyZS4KKworICAgICAgICAqIFNoYXJlZC9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQpOgorICAgICAgICBHZXQgcmlkIG9mIHRoZSBHdGsg
aW5pdGlhbGl6YXRpb24gaGFjay4gV2UgZG8gbm90IG5lYWQgaXQgaGVyZSBhbnltb3JlLgorCisg
ICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChOZXRzY2FwZVBsdWdpbk1vZHVsZSk6CisgICAg
ICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDEx
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cGFyc2VNSU1FRGVzY3JpcHRpb24pOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdp
bik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1v
ZHVsZTo6Z2V0UGx1Z2luSW5mbyk6CisgICAgICAgIEdldCBwbHVnaW4gbWV0YSBkYXRhIHZpYSBQ
bHVnaW5Qcm9jZXNzcHJveHkuIElmIGEgZmFpbHVyZQorICAgICAgICBoYXBwZW5lZCB3ZSBpZ25v
cmUgdG8gdXNlIHRoZSBwbHVnaW4uIFJlbW92ZSB0aGUgY29uY2VwdAorICAgICAgICBvZiBzdGRv
dXQgcmVkaXJlY3Rpb24gc2luY2Ugd2UgY2FuIGNvbnRyb2wgaXQgd2hlbiBsYXVuY2hpbmcKKyAg
ICAgICAgdGhlIHByb2Nlc3MuCisKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1
bGU6OmRldGVybWluZVF1aXJrcyk6CisgICAgICAgIChXZWJLaXQ6OnRydW5jYXRlTmV3TGluZXMp
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2NhblBsdWdpbik6Cisg
ICAgICAgIFByb2R1Y2UgcGx1Z2luIG1ldGEgZGF0YSBvbiBzdGFuZGFyZCBvdXRwdXQuCisKKyAg
ICAgICAgKiBTaGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OnBhaW50KToKKyAgICAgICAgQWRkZWQgaW1wbGVtZW50YXRpb24g
Zm9yIHRoZSBvdmVycmlkZSB3aXRoIHRoZSBzY2FsZSBmYWN0b3IgYmVjYXVzZQorICAgICAgICBp
dCBpcyBjYWxsZWQgZnJvbSBQbHVnaW5Qcm94eS4gSXQgZG9lcyBub3QgYWN0dWFsbHkgaGFuZGxl
IHRoZSBjYXNlCisgICAgICAgIHdoZW4gdGhlIHNjYWxlIGZhY3RvciBpcyBub3QgMS4gSG93ZXZl
ciBpdCdzIG9rIGJlY2F1c2UgaXQgY2FuIG9ubHkKKyAgICAgICAgaGFwcGVuIG9uIE1hYyBjdXJy
ZW50bHkuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorCisgICAgICAgICogVUlQcm9jZXNzL0xh
dW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oOgorICAgICAgICAoUHJvY2Vzc0xhdW5jaGVyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OmZpbmRXZWJLaXRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6ZXhlY3V0YWJsZVBhdGgpOgorICAgICAg
ICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlByb2Nlc3NMYXVuY2hlcjo6ZXhlY3V0YWJsZVBhdGgpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAg
ICAgRmFjdG9yZWQgdGhlIGV4ZWN1dGFibGUgcGF0aCBkZXRlcm1pbmF0aW9uIGludG8gYSBzdGF0
aWMgbWV0aG9kCisgICAgICAgIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChSYXdQbHVnaW5NZXRhRGF0YSk6CisgICAgICAgIChQbHVnaW5Qcm9jZXNz
UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJv
eHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3Jt
SW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2luKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6
ZVBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnNj
YW5QbHVnaW4pOgorICAgICAgICBMYXVuY2ggcGx1Z2luIHByb2Nlc3MgYW5kIHBhcnNlIGl0J3Mg
b3V0cHV0IHRvIGdldCB0aGUgbWV0YSBkYXRhCisgICAgICAgIGZvciB0aGUgcGx1Z2luLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBOX0dldFZhbHVlKToKKyAgICAgICAgQ2hhbmdlZCBh
Y2NvcmRpbmcgdG8gdGhlIHJlbW92ZSBvZiB0aGUgZmxhc2ggaGFjay4gRG8gbm90IHRyeQorICAg
ICAgICB0byBkZWNpZGUgd2hldGhlciB0aGUgcGx1Z2luIG5lZWRzIEd0ayBieSBpdCdzIG5hbWUg
YnV0IGluc3RlYWQKKyAgICAgICAgYWx3YXlzIGdldCBiYWNrIHRoZSBleHBlY3RlZCBHdGsgdmVy
c2lvbiAoMikuIE9ubHkgR3RrIHBsdWdpbnMKKyAgICAgICAgc2hvdWxkIGFzayBmb3IgdGhpcyBh
bnl3YXkuCisKKyAgICAgICAgKiBxdC9QbHVnaW5NYWluUXQuY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNw
cC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChtYWluKToKKwogMjAxMi0wMi0xOCAgRGFu
IEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MDg5MTgwMT4gQmFja2luZ1N0b3JlOjpzY3JvbGwoKSB1bm5lY2Vzc2FyaWx5IGNvcGllcyBwaXhl
bHMgYXJvdW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1Nv
dXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGNmNzA1NDUuLjRiMzA3YTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmFtCkBAIC0xMzM0LDYgKzEzMzQsNyBAQCBQcm9ncmFtc19XZWJLaXRQbHVn
aW5Qcm9jZXNzX0NQUEZMQUdTID0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMgXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlLyBcCisJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyLyBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MucHJvIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ0Y2E2MgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MucHJvCkBAIC0wLDAgKzEsMjcgQEAK
KyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorIyBQcm9qZWN0IGZpbGUgZm9yIHRoZSBXZWJLaXQyIHBsdWdpbiBwcm9j
ZXNzIGJpbmFyeQorIworIyBTZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3
IG9mIHRoZSBidWlsZCBzeXN0ZW0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitsb2FkKGZlYXR1cmVzKQorCitU
RU1QTEFURSA9IGFwcAorCitUQVJHRVQgPSBRdFdlYlBsdWdpblByb2Nlc3MKK0RFU1RESVIgPSAk
JHtST09UX0JVSUxEX0RJUn0vYmluCisKK1NPVVJDRVMgKz0gcXQvUGx1Z2luTWFpblF0LmNwcAor
CitJTkNMVURFUEFUSCA9ICQkUFdELy4uL0phdmFTY3JpcHRDb3JlIFwKKyAgICAgICAgICAgICAg
JCRJTkNMVURFUEFUSAorCitDT05GSUcgKz0gcXR3ZWJraXQKKworSU5TVEFMTFMgKz0gdGFyZ2V0
CisKK2lzRW1wdHkoSU5TVEFMTF9CSU5TKSB7CisgICAgdGFyZ2V0LnBhdGggPSAkJFtRVF9JTlNU
QUxMX0JJTlNdCit9IGVsc2UgeworICAgIHRhcmdldC5wYXRoID0gJCRJTlNUQUxMX0JJTlMKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nl
c3NNYWluR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblBy
b2Nlc3NNYWluR3RrLmNwcAppbmRleCA5OTJkNzQwLi5kMjcyYWQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01haW5HdGsu
Y3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGx1
Z2luUHJvY2Vzc01haW5HdGsuaCIKIAorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCiAjaW5j
bHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgogI2lu
Y2x1ZGUgPGdkay9nZGt4Lmg+CkBAIC01MywxMiArNTQsMjIgQEAgc3RhdGljIGludCB3ZWJraXRn
dGtYRXJyb3IoRGlzcGxheSogeGRpc3BsYXksIFhFcnJvckV2ZW50KiBlcnJvcikKIAogV0tfRVhQ
T1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpbkd0ayhpbnQgYXJnYywgY2hhciogYXJndltdKQogewot
ICAgIEFTU0VSVChhcmdjID09IDIpOworICAgIEFTU0VSVChhcmdjID49IDIpOworICAgIGJvb2wg
c2NhblBsdWdpbiA9ICFzdHJjbXAoYXJndlsxXSwgIi1zY2FuUGx1Z2luIik7CisgICAgQVNTRVJU
KGFyZ2MgPT0gMiB8fCAoYXJnYyA9PSAzICYmIHNjYW5QbHVnaW4pKTsKIAogICAgIGd0a19pbml0
KCZhcmdjLCAmYXJndik7CiAKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBX
VEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisKKyAgICBpZiAoc2NhblBsdWdpbikgeworICAg
ICAgICBTdHJpbmcgcGx1Z2luUGF0aChhcmd2WzJdKTsKKyAgICAgICAgaWYgKCFOZXRzY2FwZVBs
dWdpbk1vZHVsZTo6c2NhblBsdWdpbihwbHVnaW5QYXRoKSkKKyAgICAgICAgICAgIHJldHVybiBF
WElUX0ZBSUxVUkU7CisgICAgICAgIHJldHVybiBFWElUX1NVQ0NFU1M7CisgICAgfQorCiAgICAg
UnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKICAgICAvLyBQbHVnaW5zIGNhbiBw
cm9kdWNlIFggZXJyb3JzIHRoYXQgYXJlIGhhbmRsZWQgYnkgdGhlIEdESyBYIGVycm9yIGhhbmRs
ZXIsIHdoaWNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1Bs
dWdpblByb2Nlc3NNYWluUXQuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9xdC9Q
bHVnaW5Qcm9jZXNzTWFpblF0LmNwcAppbmRleCBkM2EwZWMzLi42ZTk3MzgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5R
dC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIE5v
a2lhIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBVbml2
ZXJzaXR5IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjQsNDQgKzI1LDg2IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluLmgiCiAKICNpZiBFTkFCTEUoUExVR0lO
X1BST0NFU1MpCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01haW4uaCIKIAotI2luY2x1ZGUgIkNv
bW1hbmRMaW5lLmgiCisjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIKICNpbmNsdWRl
ICJQbHVnaW5Qcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgor
I2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRRGVidWc+CisjaW5jbHVkZSA8UVN0
cmluZ0xpc3Q+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi0jZGVmaW5lIFNIT1dfQ1JBU0hfUkVQ
T1JURVIgMQorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1pbnQgUGx1Z2luUHJvY2Vzc01haW4oY29u
c3QgQ29tbWFuZExpbmUmIGNvbW1hbmRMaW5lKQorc3RhdGljIHZvaWQgbWVzc2FnZUhhbmRsZXIo
UXRNc2dUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7Ci0gICAgU3RyaW5nIHNlcnZp
Y2VOYW1lID0gY29tbWFuZExpbmVbInNlcnZpY2VuYW1lIl07Ci0gICAgaWYgKHNlcnZpY2VOYW1l
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICBpZiAodHlwZSA9
PSBRdENyaXRpY2FsTXNnKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1lc3Nh
Z2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRG8gbm90aGluZworfQorCitz
dGF0aWMgdm9pZCBpbml0aWFsaXplR3RrKCkKK3sKKyAgICBRTGlicmFyeSBndGtMaWJyYXJ5KFFM
YXRpbjFTdHJpbmcoImxpYmd0ay14MTEtMi4wIiksIDApOworICAgIGlmICghZ3RrTGlicmFyeS5s
b2FkKCkpCisgICAgICAgIHJldHVybjsKKyAgICB0eXBlZGVmIHZvaWQqICgqZ3RrX2luaXRfcHRy
KSh2b2lkKiwgdm9pZCopOworICAgIGd0a19pbml0X3B0ciBndGtJbml0ID0gcmVpbnRlcnByZXRf
Y2FzdDxndGtfaW5pdF9wdHI+KGd0a0xpYnJhcnkucmVzb2x2ZSgiZ3RrX2luaXQiKSk7CisgICAg
aWYgKCFndGtJbml0KQorICAgICAgICByZXR1cm47CisgICAgZ3RrSW5pdCgwLCAwKTsKK30KKwor
aW50IFBsdWdpblByb2Nlc3NNYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICBRQnl0
ZUFycmF5IHN1cHByZXNzT3V0cHV0ID0gcWdldGVudigiUVRfV0VCS0lUX1NVUFBSRVNTX1dFQl9Q
Uk9DRVNTX09VVFBVVCIpOworICAgIGlmICghc3VwcHJlc3NPdXRwdXQuaXNFbXB0eSgpICYmIHN1
cHByZXNzT3V0cHV0ICE9ICIwIikKKyAgICAgICAgcUluc3RhbGxNc2dIYW5kbGVyKG1lc3NhZ2VI
YW5kbGVyKTsKKworICAgIFFBcHBsaWNhdGlvbiBhcHAoYXJnYywgYXJndik7CiAKLSNpZiAhU0hP
V19DUkFTSF9SRVBPUlRFUgotICAgIC8vIEluc3RhbGxzIHNpZ25hbCBoYW5kbGVycyB0aGF0IGV4
aXQgb24gYSBjcmFzaCBzbyB0aGF0IENyYXNoUmVwb3J0ZXIgZG9lcyBub3Qgc2hvdyB1cC4KLSAg
ICBzaWduYWwoU0lHSUxMLCBfZXhpdCk7Ci0gICAgc2lnbmFsKFNJR0ZQRSwgX2V4aXQpOwotICAg
IHNpZ25hbChTSUdCVVMsIF9leGl0KTsKLSAgICBzaWduYWwoU0lHU0VHViwgX2V4aXQpOwotI2Vu
ZGlmCisgICAgLy8gV29ya2Fyb3VuZCB0aGUgaXNzdWUgdGhhdCBzb21lIHZlcnNpb25zIG9mIGZs
YXNoIGRvZXMgbm90IGluaXRpYWxpemUgR3RrIHByb3Blcmx5LgorICAgIGluaXRpYWxpemVHdGso
KTsKIAogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5pdGlhbGl6
ZU1haW5UaHJlYWQoKTsKKworICAgIGlmIChhcmdjIDw9IDEpCisgICAgICAgIHJldHVybiBFWElU
X0ZBSUxVUkU7CisKKyAgICBpZiAoYXBwLmFyZ3VtZW50cygpLmF0KDEpID09IFFMYXRpbjFTdHJp
bmcoIi1zY2FuUGx1Z2luIikpIHsKKyAgICAgICAgaWYgKGFyZ2MgIT0gMykKKyAgICAgICAgICAg
IHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAgIFN0cmluZyBwbHVnaW5QYXRoKGFwcC5hcmd1
bWVudHMoKS5hdCgyKSk7CisgICAgICAgIGlmICghTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNjYW5Q
bHVnaW4ocGx1Z2luUGF0aCkpCisgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworCisg
ICAgICAgIC8vIFFQcm9jZXNzIGRvZXMgbm90IGFsbG93IHRvIHJlYWQgdGhlIG91dHB1dCBvZiB0
aGUgIHByb2Nlc3MgYWZ0ZXIKKyAgICAgICAgLy8gaXQgdGVybWluYXRlcy4gTGV0J3MgZ28gc2xl
ZXAgYW5kIHJlbHkgb24gdGhlIFVJIHByb2Nlc3MgdG8ga2lsbCB1cy4KKyAgICAgICAgc2xlZXAo
MTApOworCisgICAgICAgIHJldHVybiBFWElUX1NVQ0NFU1M7CisgICAgfQorCiAgICAgUnVuTG9v
cDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKKyAgICAvLyBDcmVhdGUgdGhlIGNvbm5lY3Rp
b24uCisgICAgYm9vbCBpc051bWJlciA9IGZhbHNlOworICAgIGludCBpZGVudGlmaWVyID0gYXBw
LmFyZ3VtZW50cygpLmF0KDEpLnRvSW50KCZpc051bWJlciwgMTApOworICAgIGlmICghaXNOdW1i
ZXIpCisgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgV2ViS2l0OjpQbHVnaW5Qcm9j
ZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplKGlkZW50aWZpZXIsIFJ1bkxvb3A6Om1haW4oKSk7CisK
ICAgICBSdW5Mb29wOjpydW4oKTsKIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5N
b2R1bGUuY3BwCmluZGV4IGU1ZjhkYzIuLmMxODc0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1v
ZHVsZS5jcHAKQEAgLTE5NywxMCArMTk3LDYgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6
bG9hZCgpCiAKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQoKQogewotI2lmIFBM
VUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgIGFwcGx5WDExUXVpcmtzQmVmb3JlTG9hZCgpOwot
I2VuZGlmCi0KICAgICBtX21vZHVsZSA9IGFkb3B0UHRyKG5ldyBNb2R1bGUobV9wbHVnaW5QYXRo
KSk7CiAgICAgaWYgKCFtX21vZHVsZS0+bG9hZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbk1vZHVsZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5Nb2R1bGUuaAppbmRleCBmODBhMGExLi5lOTZiZDJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1v
ZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luTW9kdWxlLmgKQEAgLTM1LDYgKzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK2NsYXNzIFJhd1BsdWdpbk1ldGFEYXRhOworCiBjbGFzcyBOZXRzY2FwZVBsdWdpbk1vZHVs
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IGdldE9yQ3JlYXRlKGNv
bnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CkBAIC02MSwxNSArNjMsMTcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBib29sIGNyZWF0ZVBsdWdpbk1JTUVUeXBlc1ByZWZlcmVuY2VzKGNvbnN0IFN0cmlu
ZyYgcGx1Z2luUGF0aCk7CiAjZW5kaWYKIAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQor
ICAgIHN0YXRpYyBib29sIHNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKKyNl
bmRpZgorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE5ldHNjYXBlUGx1Z2luTW9kdWxlKGNvbnN0
IFN0cmluZyYgcGx1Z2luUGF0aCk7CiAKICAgICB2b2lkIGRldGVybWluZVF1aXJrcygpOwogCiAj
aWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCi0gICAgdm9pZCBhcHBseVgxMVF1aXJrc0JlZm9y
ZUxvYWQoKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRNSU1FRGVzY3JpcHRpb24oY29uc3QgU3RyaW5n
JiBtaW1lRGVzY3JpcHRpb24sIFBsdWdpbk1vZHVsZUluZm8mKTsKLSAgICBib29sIGdldFBsdWdp
bkluZm9Gb3JMb2FkZWRQbHVnaW4oUGx1Z2luTW9kdWxlSW5mbyYpOworICAgIGJvb2wgZ2V0UGx1
Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihSYXdQbHVnaW5NZXRhRGF0YSYpOwogI2VuZGlmCiAKICAg
ICBib29sIHRyeUdldFNpdGVzV2l0aERhdGEoVmVjdG9yPFN0cmluZz4mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdp
bk1vZHVsZVgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94
MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCmluZGV4IGJlMDRiZmYuLmE2MDY5NDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRz
Y2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdp
bnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcApAQCAtMjgsNzYgKzI4
LDI4IEBACiAKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbk1vZHVsZS5oIgogCisjaW5jbHVkZSAi
UGx1Z2luUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiTmV0c2NhcGVCcm93c2VyRnVuY3MuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KLQotI2lmIFBMQVRGT1JNKFFUKQotI2lu
Y2x1ZGUgPFFMaWJyYXJ5PgotI2VuZGlmCi0KICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUg
PHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+
CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFN0ZG91dERldk51bGxSZWRpcmVjdG9yIHsK
LXB1YmxpYzoKLSAgICBTdGRvdXREZXZOdWxsUmVkaXJlY3RvcigpOwotICAgIH5TdGRvdXREZXZO
dWxsUmVkaXJlY3RvcigpOwotCi1wcml2YXRlOgotICAgIGludCBtX3NhdmVkU3Rkb3V0OwotfTsK
LQotU3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3I6OlN0ZG91dERldk51bGxSZWRpcmVjdG9yKCkKLSAg
ICA6IG1fc2F2ZWRTdGRvdXQoLTEpCi17Ci0gICAgaW50IG5ld1N0ZG91dCA9IG9wZW4oIi9kZXYv
bnVsbCIsIE9fV1JPTkxZKTsKLSAgICBpZiAobmV3U3Rkb3V0ID09IC0xKQotICAgICAgICByZXR1
cm47Ci0gICAgbV9zYXZlZFN0ZG91dCA9IGR1cChTVERPVVRfRklMRU5PKTsKLSAgICBkdXAyKG5l
d1N0ZG91dCwgU1RET1VUX0ZJTEVOTyk7Ci19Ci0KLVN0ZG91dERldk51bGxSZWRpcmVjdG9yOjp+
U3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3IoKQorc3RhdGljIHZvaWQgcGFyc2VNSU1FRGVzY3JpcHRp
b24oY29uc3QgU3RyaW5nJiBtaW1lRGVzY3JpcHRpb24sIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiYg
cmVzdWx0KQogewotICAgIGlmIChtX3NhdmVkU3Rkb3V0ICE9IC0xKQotICAgICAgICBkdXAyKG1f
c2F2ZWRTdGRvdXQsIFNURE9VVF9GSUxFTk8pOwotfQorICAgIEFTU0VSVF9BUkcocmVzdWx0LCBy
ZXN1bHQuaXNFbXB0eSgpKTsKIAotI2lmIFBMQVRGT1JNKFFUKQotc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZUdUSygpCi17Ci0gICAgUUxpYnJhcnkgbGlicmFyeShRTGF0aW4xU3RyaW5nKCJsaWJndGst
eDExLTIuMC5zby4wIikpOwotICAgIGlmIChsaWJyYXJ5LmxvYWQoKSkgewotICAgICAgICB0eXBl
ZGVmIHZvaWQgKigqZ3RrX2luaXRfY2hlY2tfcHRyKShpbnQqLCBjaGFyKioqKTsKLSAgICAgICAg
Z3RrX2luaXRfY2hlY2tfcHRyIGd0a0luaXRDaGVjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8Z3RrX2lu
aXRfY2hlY2tfcHRyPihsaWJyYXJ5LnJlc29sdmUoImd0a19pbml0X2NoZWNrIikpOwotICAgICAg
ICAvLyBOT1RFOiBXZSdyZSB1c2luZyBndGtfaW5pdF9jaGVjaygpIHNpbmNlIGd0a19pbml0KCkg
Y2FsbHMgZXhpdCgpIG9uIGZhaWx1cmUuCi0gICAgICAgIGlmIChndGtJbml0Q2hlY2spCi0gICAg
ICAgICAgICAodm9pZCkgZ3RrSW5pdENoZWNrKDAsIDApOwotICAgIH0KLX0KLSNlbmRpZgotCi12
b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjphcHBseVgxMVF1aXJrc0JlZm9yZUxvYWQoKQotewot
I2lmIFBMQVRGT1JNKFFUKQotICAgIGlmIChtX3BsdWdpblBhdGguY29udGFpbnMoIm5wd3JhcHBl
ciIpIHx8IG1fcGx1Z2luUGF0aC5jb250YWlucygiZmxhc2hwbGF5ZXIiKSkgewotICAgICAgICBp
bml0aWFsaXplR1RLKCk7Ci0gICAgICAgIG1fcGx1Z2luUXVpcmtzLmFkZChQbHVnaW5RdWlya3M6
OlJlcXVpcmVzR1RLVG9vbEtpdCk7Ci0gICAgfQotI2VuZGlmCi19Ci0KLXZvaWQgTmV0c2NhcGVQ
bHVnaW5Nb2R1bGU6OnNldE1JTUVEZXNjcmlwdGlvbihjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlw
dGlvbiwgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQotewogICAgIFZlY3RvcjxTdHJpbmc+IHR5
cGVzOwogICAgIG1pbWVEZXNjcmlwdGlvbi5sb3dlcigpLnNwbGl0KFVDaGFyKCc7JyksIGZhbHNl
LCB0eXBlcyk7Ci0gICAgcGx1Z2luLmluZm8ubWltZXMucmVzZXJ2ZUNhcGFjaXR5KHR5cGVzLnNp
emUoKSk7CisgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodHlwZXMuc2l6ZSgpKTsK
IAogICAgIHNpemVfdCBtaW1lSW5mb0NvdW50ID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHR5cGVzLnNpemUoKTsgKytpKSB7CkBAIC0xMDYsOCArNTgsOCBAQCB2b2lkIE5ldHNjYXBl
UGx1Z2luTW9kdWxlOjpzZXRNSU1FRGVzY3JpcHRpb24oY29uc3QgU3RyaW5nJiBtaW1lRGVzY3Jp
cHRpb24sIFBsdQogICAgICAgICBpZiAobWltZVR5cGVQYXJ0cy5zaXplKCkgPD0gMCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHBsdWdpbi5pbmZvLm1pbWVzLnVuY2hlY2tlZEFw
cGVuZChNaW1lQ2xhc3NJbmZvKCkpOwotICAgICAgICBNaW1lQ2xhc3NJbmZvJiBtaW1lSW5mbyA9
IHBsdWdpbi5pbmZvLm1pbWVzW21pbWVJbmZvQ291bnQrK107CisgICAgICAgIHJlc3VsdC51bmNo
ZWNrZWRBcHBlbmQoTWltZUNsYXNzSW5mbygpKTsKKyAgICAgICAgTWltZUNsYXNzSW5mbyYgbWlt
ZUluZm8gPSByZXN1bHRbbWltZUluZm9Db3VudCsrXTsKICAgICAgICAgbWltZUluZm8udHlwZSA9
IG1pbWVUeXBlUGFydHNbMF07CiAKICAgICAgICAgaWYgKG1pbWVUeXBlUGFydHMuc2l6ZSgpID4g
MSkKQEAgLTExOCwxMyArNzAsMTAgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2V0TUlN
RURlc2NyaXB0aW9uKGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uLCBQbHUKICAgICB9CiB9
CiAKLWJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVn
aW4oUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQorYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6
Z2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihSYXdQbHVnaW5NZXRhRGF0YSYgbWV0YURhdGEp
CiB7CiAgICAgQVNTRVJUKG1faXNJbml0aWFsaXplZCk7CiAKLSAgICBwbHVnaW4ucGF0aCA9IG1f
cGx1Z2luUGF0aDsKLSAgICBwbHVnaW4uaW5mby5maWxlID0gcGF0aEdldEZpbGVOYW1lKG1fcGx1
Z2luUGF0aCk7Ci0KICAgICBNb2R1bGUqIG1vZHVsZSA9IG1fbW9kdWxlLmdldCgpOwogICAgIE5Q
UF9HZXRWYWx1ZVByb2NQdHIgTlBQX0dldFZhbHVlID0gbW9kdWxlLT5mdW5jdGlvblBvaW50ZXI8
TlBQX0dldFZhbHVlUHJvY1B0cj4oIk5QX0dldFZhbHVlIik7CiAgICAgaWYgKCFOUFBfR2V0VmFs
dWUpCkBAIC0xMzcsNDcgKzg2LDQ1IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBs
dWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4oUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luCiAgICAgY2hh
ciogYnVmZmVyOwogICAgIE5QRXJyb3IgZXJyb3IgPSBOUFBfR2V0VmFsdWUoMCwgTlBQVnBsdWdp
bk5hbWVTdHJpbmcsICZidWZmZXIpOwogICAgIGlmIChlcnJvciA9PSBOUEVSUl9OT19FUlJPUikK
LSAgICAgICAgcGx1Z2luLmluZm8ubmFtZSA9IGJ1ZmZlcjsKKyAgICAgICAgbWV0YURhdGEubmFt
ZSA9IGJ1ZmZlcjsKIAogICAgIGVycm9yID0gTlBQX0dldFZhbHVlKDAsIE5QUFZwbHVnaW5EZXNj
cmlwdGlvblN0cmluZywgJmJ1ZmZlcik7CiAgICAgaWYgKGVycm9yID09IE5QRVJSX05PX0VSUk9S
KQotICAgICAgICBwbHVnaW4uaW5mby5kZXNjID0gYnVmZmVyOworICAgICAgICBtZXRhRGF0YS5k
ZXNjcmlwdGlvbiA9IGJ1ZmZlcjsKIAogICAgIGNvbnN0IGNoYXIqIG1pbWVEZXNjcmlwdGlvbiA9
IE5QX0dldE1JTUVEZXNjcmlwdGlvbigpOwogICAgIGlmICghbWltZURlc2NyaXB0aW9uKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzZXRNSU1FRGVzY3JpcHRpb24obWltZURlc2NyaXB0
aW9uLCBwbHVnaW4pOworICAgIG1ldGFEYXRhLm1pbWVEZXNjcmlwdGlvbiA9IG1pbWVEZXNjcmlw
dGlvbjsKIAogICAgIHJldHVybiB0cnVlOwogfQorCiBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxl
OjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9kdWxlSW5m
byYgcGx1Z2luKQogewotICAgIC8vIFRlbXBhcmFyaWx5IHN1cHByZXNzIHN0ZG91dCBpbiB0aGlz
IGZ1bmN0aW9uIGFzIHBsdWdpbnMgd2lsbCBiZSBsb2FkZWQgYW5kIHNodXRkb3duIGFuZCBkZWJ1
ZyBpbmZvCi0gICAgLy8gaXMgbGVha2VkIHRvIGxheW91dCB0ZXN0IG91dHB1dC4KLSAgICBTdGRv
dXREZXZOdWxsUmVkaXJlY3RvciBzdGRvdXREZXZOdWxsUmVkaXJlY3RvcjsKLQotICAgIC8vIFdl
IGFyZSBsb2FkaW5nIHRoZSBwbHVnaW4gaGVyZSBzaW5jZSBpdCBkb2VzIG5vdCBzZWVtIHRvIGJl
IGEgc3RhbmRhcmRpemVkIHdheSB0bwotICAgIC8vIGdldCB0aGUgbmVlZGVkIGluZm9ybWF0aW9u
cyBmcm9tIGEgVU5JWCBwbHVnaW4gd2l0aG91dCBsb2FkaW5nIGl0LgotICAgIFJlZlB0cjxOZXRz
Y2FwZVBsdWdpbk1vZHVsZT4gcGx1Z2luTW9kdWxlID0gTmV0c2NhcGVQbHVnaW5Nb2R1bGU6Omdl
dE9yQ3JlYXRlKHBsdWdpblBhdGgpOwotICAgIGlmICghcGx1Z2luTW9kdWxlKQorICAgIFJhd1Bs
dWdpbk1ldGFEYXRhIG1ldGFEYXRhOworICAgIGlmICghUGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2Fu
UGx1Z2luKHBsdWdpblBhdGgsIG1ldGFEYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgcGx1Z2luTW9kdWxlLT5pbmNyZW1lbnRMb2FkQ291bnQoKTsKLSAgICBib29sIHJldHVyblZh
bHVlID0gcGx1Z2luTW9kdWxlLT5nZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKHBsdWdpbik7
Ci0gICAgcGx1Z2luTW9kdWxlLT5kZWNyZW1lbnRMb2FkQ291bnQoKTsKKyAgICBwbHVnaW4ucGF0
aCA9IHBsdWdpblBhdGg7CisgICAgcGx1Z2luLmluZm8uZmlsZSA9IHBhdGhHZXRGaWxlTmFtZShw
bHVnaW5QYXRoKTsKKyAgICBwbHVnaW4uaW5mby5uYW1lID0gbWV0YURhdGEubmFtZTsKKyAgICBw
bHVnaW4uaW5mby5kZXNjID0gbWV0YURhdGEuZGVzY3JpcHRpb247CisgICAgcGFyc2VNSU1FRGVz
Y3JpcHRpb24obWV0YURhdGEubWltZURlc2NyaXB0aW9uLCBwbHVnaW4uaW5mby5taW1lcyk7CiAK
LSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgTmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OmRldGVybWluZVF1aXJrcygpCiB7CiAjaWYgQ1BVKFg4Nl82NCkK
LSAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbjsKLSAgICBpZiAoIWdldFBsdWdpbkluZm9Gb3JM
b2FkZWRQbHVnaW4ocGx1Z2luKSkKKyAgICBSYXdQbHVnaW5NZXRhRGF0YSBtZXRhRGF0YTsKKyAg
ICBpZiAoIWdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4obWV0YURhdGEpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBWZWN0b3I8TWltZUNsYXNzSW5mbz4gbWltZVR5cGVzID0gcGx1Z2luLmlu
Zm8ubWltZXM7CisgICAgVmVjdG9yPE1pbWVDbGFzc0luZm8+IG1pbWVUeXBlczsKKyAgICBwYXJz
ZU1JTUVEZXNjcmlwdGlvbihtZXRhRGF0YS5taW1lRGVzY3JpcHRpb24sIG1pbWVUeXBlcyk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtaW1lVHlwZXMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgaWYgKG1pbWVUeXBlc1tpXS50eXBlID09ICJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFz
aCIpIHsKICAgICAgICAgICAgIG1fcGx1Z2luUXVpcmtzLmFkZChQbHVnaW5RdWlya3M6Oklnbm9y
ZVJpZ2h0Q2xpY2tJbldpbmRvd2xlc3NNb2RlKTsKQEAgLTE4Nyw2ICsxMzQsNDggQEAgdm9pZCBO
ZXRzY2FwZVBsdWdpbk1vZHVsZTo6ZGV0ZXJtaW5lUXVpcmtzKCkKICNlbmRpZgogfQogCitzdGF0
aWMgUGFzc093blB0cjxjaGFyPiB0cnVuY2F0ZU5ld0xpbmVzKGNvbnN0IGNoYXIqIHN0cmluZykK
K3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4oc3RyaW5nKTsKKyAgICBjaGFyKiB0cnVu
Y2F0ZWQgPSBuZXcgY2hhcltsZW5ndGggKyAxXTsKKyAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSAw
OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAg
IGNoYXIgYyA9IHN0cmluZ1tpXTsKKyAgICAgICAgaWYgKGMgIT0gJ1xuJykKKyAgICAgICAgICAg
IHRydW5jYXRlZFtuZXdMZW5ndGgrK10gPSBjOworICAgIH0KKyAgICB0cnVuY2F0ZWRbbmV3TGVu
Z3RoXSA9IDA7CisKKyAgICByZXR1cm4gYWRvcHRQdHIodHJ1bmNhdGVkKTsKK30KKworYm9vbCBO
ZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2NhblBsdWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgp
Cit7CisgICAgLy8gV2UgYXJlIGxvYWRpbmcgdGhlIHBsdWdpbiBoZXJlIHNpbmNlIGl0IGRvZXMg
bm90IHNlZW0gdG8gYmUgYSBzdGFuZGFyZGl6ZWQgd2F5IHRvCisgICAgLy8gZ2V0IHRoZSBuZWVk
ZWQgaW5mb3JtYXRpb25zIGZyb20gYSBVTklYIHBsdWdpbiB3aXRob3V0IGxvYWRpbmcgaXQuCisg
ICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBwbHVnaW5Nb2R1bGUgPSBOZXRzY2FwZVBs
dWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUocGx1Z2luUGF0aCk7CisgICAgaWYgKCFwbHVnaW5Nb2R1
bGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHBsdWdpbk1vZHVsZS0+aW5jcmVtZW50
TG9hZENvdW50KCk7CisgICAgUmF3UGx1Z2luTWV0YURhdGEgbWV0YURhdGE7CisgICAgYm9vbCBz
dWNjZXNzID0gcGx1Z2luTW9kdWxlLT5nZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKG1ldGFE
YXRhKTsKKyAgICBwbHVnaW5Nb2R1bGUtPmRlY3JlbWVudExvYWRDb3VudCgpOworCisgICAgaWYg
KCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBPd25QdHI8Y2hhcj4gbmFt
ZSh0cnVuY2F0ZU5ld0xpbmVzKG1ldGFEYXRhLm5hbWUuYXNjaWkoKS5kYXRhKCkpKTsKKyAgICBP
d25QdHI8Y2hhcj4gZGVzY3JpcHRpb24odHJ1bmNhdGVOZXdMaW5lcyhtZXRhRGF0YS5kZXNjcmlw
dGlvbi5hc2NpaSgpLmRhdGEoKSkpOworICAgIE93blB0cjxjaGFyPiBtaW1lRGVzY3JpcHRpb24o
dHJ1bmNhdGVOZXdMaW5lcyhtZXRhRGF0YS5taW1lRGVzY3JpcHRpb24uYXNjaWkoKS5kYXRhKCkp
KTsKKworICAgIHByaW50ZigiJXNcbiVzXG4lc1xuIiwgbmFtZS5nZXQoKSwgZGVzY3JpcHRpb24u
Z2V0KCksIG1pbWVEZXNjcmlwdGlvbi5nZXQoKSk7CisgICAgZmZsdXNoKHN0ZG91dCk7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQ
TFVHSU5fQVJDSElURUNUVVJFKFgxMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvU2hh
cmVhYmxlQml0bWFwUXQuY3BwCmluZGV4IDBjOGJlMDcuLjc3OGJjZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNwcApAQCAtMjgsNiArMjgsNyBA
QAogCiAjaW5jbHVkZSA8UUltYWdlPgogI2luY2x1ZGUgPFFQYWludGVyPgorI2luY2x1ZGUgPFF0
R2xvYmFsPgogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KQEAgLTcxLDggKzcyLDEzIEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkc3RQb2ludCwKICAgICBwYWludGVy
LT5kcmF3SW1hZ2UoZHN0UG9pbnQsIGltYWdlLCBRUmVjdChzcmNSZWN0KSk7CiB9CiAKLXZvaWQg
U2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQmIC8qY29udGV4dCovLCBmbG9h
dCAvKnNjYWxlRmFjdG9yKi8sIGNvbnN0IEludFBvaW50JiAvKmRzdFBvaW50Ki8sIGNvbnN0IElu
dFJlY3QmIC8qc3JjUmVjdCovKQordm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2NhbGVGYWN0b3IsIGNvbnN0IEludFBvaW50JiBkc3RQ
b2ludCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkKIHsKKyAgICBpZiAocUZ1enp5Q29tcGFyZShz
Y2FsZUZhY3RvciwgMSkpIHsKKyAgICAgICAgcGFpbnQoY29udGV4dCwgZHN0UG9pbnQsIHNyY1Jl
Y3QpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ2NjM+LgogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktp
dDIvVGFyZ2V0LnByaQppbmRleCA1YjJjZmI5Li41NjFmZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTM0
LDYgKzM0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggXAog
ICAgIFBsYXRmb3JtL1dvcmtRdWV1ZS5oIFwKICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5oIFwKKyAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVy
cy5oIFwKICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaCBcCiAgICAgUGx1Z2luUHJv
Y2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oIFwKICAgICBTaGFyZWQvQVBJL2MvV0tCYXNlLmgg
XApAQCAtMzc2LDYgKzM3Nyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFBsYXRmb3JtL1dvcmtRdWV1
ZS5jcHAgXAogICAgIFBsYXRmb3JtL3F0L01vZHVsZVF0LmNwcCBcCiAgICAgUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIFwKKyAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAgXAogICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5j
cHAgXAogICAgIFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIFwKICAgICBQ
bHVnaW5Qcm9jZXNzL3F0L1BsdWdpbkNvbnRyb2xsZXJQcm94eVF0LmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKaW5kZXgg
OGRiZmIxMS4uZDI2NWUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
dW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9M
YXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaApAQCAtNzMsNiArNzMsMTAgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIGJvb2wgZ2V0UHJvY2Vzc1R5cGVGcm9tU3RyaW5nKGNvbnN0IGNoYXIqLCBQcm9j
ZXNzVHlwZSYpOwogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgc3RhdGljIFN0
cmluZyBleGVjdXRhYmxlUGF0aChQcm9jZXNzVHlwZSk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICBQcm9jZXNzTGF1bmNoZXIoQ2xpZW50KiwgY29uc3QgTGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0
aW9ucyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9n
dGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVu
Y2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAppbmRleCA5NGNhZDVmLi5mNzE3ZTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NM
YXVuY2hlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0
ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCkBAIC03NywxMyArNzcsMTMgQEAgc3RhdGljIHZvaWQg
Y2hpbGRGaW5pc2hlZEZ1bmN0aW9uKEdQaWQsIGdpbnQgc3RhdHVzLCBncG9pbnRlciB1c2VyRGF0
YSkKICAgICBjbG9zZShHUE9JTlRFUl9UT19JTlQodXNlckRhdGEpKTsKIH0KIAotc3RhdGljIENT
dHJpbmcgZmluZFdlYktpdFByb2Nlc3MoY29uc3QgY2hhciogcHJvY2Vzc05hbWUpCitzdGF0aWMg
U3RyaW5nIGZpbmRXZWJLaXRQcm9jZXNzKGNvbnN0IGNoYXIqIHByb2Nlc3NOYW1lKQogewogICAg
IGNvbnN0IGNoYXIqIGV4ZWNEaXJlY3RvcnkgPSBnX2dldGVudigiV0VCS0lUX0VYRUNfUEFUSCIp
OwogICAgIGlmIChleGVjRGlyZWN0b3J5KSB7CiAgICAgICAgIFN0cmluZyBwcm9jZXNzUGF0aCA9
IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmaWxlbmFtZVRvU3RyaW5nKGV4ZWNEaXJlY3Rvcnkp
LCBwcm9jZXNzTmFtZSk7CiAgICAgICAgIGlmIChmaWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkKLSAg
ICAgICAgICAgIHJldHVybiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJvY2Vzc1BhdGgpOwor
ICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NQYXRoOwogICAgIH0KIAogICAgIHN0YXRpYyBib29s
IGdvdEV4ZWN1dGFibGVQYXRoID0gZmFsc2U7CkBAIC05OSwxMCArOTksMTUgQEAgc3RhdGljIENT
dHJpbmcgZmluZFdlYktpdFByb2Nlc3MoY29uc3QgY2hhciogcHJvY2Vzc05hbWUpCiAgICAgaWYg
KCFleGVjdXRhYmxlUGF0aC5pc051bGwoKSkgewogICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGgg
PSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZXhlY3V0YWJsZVBhdGgsIHByb2Nlc3NOYW1lKTsK
ICAgICAgICAgaWYgKGZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQotICAgICAgICAgICAgcmV0dXJu
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcm9jZXNzUGF0aCk7CisgICAgICAgICAgICByZXR1
cm4gcHJvY2Vzc1BhdGg7CiAgICAgfQogCi0gICAgcmV0dXJuIGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZmlsZW5hbWVUb1N0cmluZyhMSUJFWEVDRElS
KSwgcHJvY2Vzc05hbWUpKTsKKyAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZp
bGVuYW1lVG9TdHJpbmcoTElCRVhFQ0RJUiksIHByb2Nlc3NOYW1lKTsKK30KKworU3RyaW5nIFBy
b2Nlc3NMYXVuY2hlcjo6ZXhlY3V0YWJsZVBhdGgoUHJvY2Vzc1R5cGUgdHlwZSkKK3sKKyAgICBy
ZXR1cm4gZmluZFdlYktpdFByb2Nlc3ModHlwZSA9PSBQcm9jZXNzTGF1bmNoZXI6OldlYlByb2Nl
c3MgPyBnV2ViS2l0V2ViUHJvY2Vzc05hbWUgOiBnV2ViS2l0UGx1Z2luUHJvY2Vzc05hbWUpOwog
fQogCiB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCkBAIC0xMTYsNyArMTIx
LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgQ1N0cmluZyBiaW5hcnlQYXRoID0gZmluZFdlYktpdFByb2Nlc3Mo
bV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID09IFByb2Nlc3NMYXVuY2hlcjo6V2ViUHJvY2Vz
cyA/IGdXZWJLaXRXZWJQcm9jZXNzTmFtZSA6IGdXZWJLaXRQbHVnaW5Qcm9jZXNzTmFtZSk7Cisg
ICAgQ1N0cmluZyBiaW5hcnlQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFi
bGVQYXRoKFdlYlByb2Nlc3MpKTsKICAgICBHT3duUHRyPGdjaGFyPiBzb2NrZXQoZ19zdHJkdXBf
cHJpbnRmKCIlZCIsIHNvY2tldHNbMF0pKTsKICAgICBjaGFyKiBhcmd2WzNdOwogICAgIGFyZ3Zb
MF0gPSBjb25zdF9jYXN0PGNoYXIqPihiaW5hcnlQYXRoLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0
LmNwcAppbmRleCA4ZTgyNjIwLi4zOGRiZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8UUNvcmVBcHBs
aWNhdGlvbj4KICNpbmNsdWRlIDxRRGVidWc+CisjaW5jbHVkZSA8UURpcj4KICNpbmNsdWRlIDxR
RmlsZT4KICNpbmNsdWRlIDxRTG9jYWxTZXJ2ZXI+CiAjaW5jbHVkZSA8UU1ldGFUeXBlPgpAQCAt
NzMsNiArNzQsMTYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCitTdHJpbmcgUHJvY2Vzc0xhdW5jaGVyOjpleGVjdXRhYmxlUGF0aChQcm9jZXNzVHlw
ZSB0eXBlKQoreworICAgIFFMYXRpbjFTdHJpbmcgYmFzZU5hbWUodHlwZSA9PSBXZWJQcm9jZXNz
ID8gUVN0cmluZ0xpdGVyYWwoIlF0V2ViUHJvY2VzcyIpIDogUVN0cmluZ0xpdGVyYWwoIlF0V2Vi
UGx1Z2luUHJvY2VzcyIpKTsKKyAgICBRU3RyaW5nIGV4cGVjdGVkUGF0aCA9IFFDb3JlQXBwbGlj
YXRpb246OmFwcGxpY2F0aW9uRGlyUGF0aCgpICsgUURpcjo6c2VwYXJhdG9yKCkgKyBiYXNlTmFt
ZTsKKyAgICBpZiAoUUZpbGU6OmV4aXN0cyhleHBlY3RlZFBhdGgpKQorICAgICAgICByZXR1cm4g
U3RyaW5nKGV4cGVjdGVkUGF0aCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gU3RyaW5nKFFT
dHJpbmcoYmFzZU5hbWUpKTsKK30KKwogY2xhc3MgUXRXZWJQcm9jZXNzIDogcHVibGljIFFQcm9j
ZXNzCiB7CiAgICAgUV9PQkpFQ1QKQEAgLTEwMiwxMyArMTEzLDggQEAgdm9pZCBRdFdlYlByb2Nl
c3M6OnNldHVwQ2hpbGRQcm9jZXNzKCkKIAogdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFBy
b2Nlc3MoKQogewotICAgIFFTdHJpbmcgYXBwbGljYXRpb25QYXRoID0gUUxhdGluMVN0cmluZygi
JTEgJTIiKTsKLQotICAgIGlmIChRRmlsZTo6ZXhpc3RzKFFDb3JlQXBwbGljYXRpb246OmFwcGxp
Y2F0aW9uRGlyUGF0aCgpICsgUUxhdGluMVN0cmluZygiL1F0V2ViUHJvY2VzcyIpKSkgewotICAg
ICAgICBhcHBsaWNhdGlvblBhdGggPSBhcHBsaWNhdGlvblBhdGguYXJnKFFDb3JlQXBwbGljYXRp
b246OmFwcGxpY2F0aW9uRGlyUGF0aCgpICsgUUxhdGluMVN0cmluZygiL1F0V2ViUHJvY2VzcyIp
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBhcHBsaWNhdGlvblBhdGggPSBhcHBsaWNhdGlvblBh
dGguYXJnKFFMYXRpbjFTdHJpbmcoIlF0V2ViUHJvY2VzcyIpKTsKLSAgICB9CisgICAgUVN0cmlu
ZyBjb21tYW5kTGluZSA9IFFMYXRpbjFTdHJpbmcoIiUxICUyIik7CisgICAgY29tbWFuZExpbmUg
PSBjb21tYW5kTGluZS5hcmcoZXhlY3V0YWJsZVBhdGgobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NU
eXBlKSk7CiAKICNpZiBPUyhEQVJXSU4pCiAgICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcgcG9y
dC4KQEAgLTEyNCw3ICsxMzAsNyBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vz
cygpCiAgICAga2Vybl9yZXR1cm5fdCBrciA9IGJvb3RzdHJhcF9yZWdpc3RlcjIoYm9vdHN0cmFw
X3BvcnQsIGNvbnN0X2Nhc3Q8Y2hhcio+KHNlcnZpY2VOYW1lLnRvVXRmOCgpLmRhdGEoKSksIGNv
bm5lY3RvciwgMCk7CiAgICAgQVNTRVJUX1VOVVNFRChrciwga3IgPT0gS0VSTl9TVUNDRVNTKTsK
IAotICAgIFFTdHJpbmcgcHJvZ3JhbShhcHBsaWNhdGlvblBhdGguYXJnKHNlcnZpY2VOYW1lKSk7
CisgICAgY29tbWFuZExpbmUgPSBjb21tYW5kTGluZS5hcmcoc2VydmljZU5hbWUpOwogI2Vsc2UK
ICAgICBpbnQgc29ja2V0c1syXTsKICAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRf
VFlQRSwgMCwgc29ja2V0cykgPT0gLTEpIHsKQEAgLTE0NCwxMiArMTUwLDEyIEBAIHZvaWQgUHJv
Y2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICB9CiAKICAgICBpbnQgY29ubmVjdG9y
ID0gc29ja2V0c1sxXTsKLSAgICBRU3RyaW5nIHByb2dyYW0oYXBwbGljYXRpb25QYXRoLmFyZyhz
b2NrZXRzWzBdKSk7CisgICAgY29tbWFuZExpbmUgPSBjb21tYW5kTGluZS5hcmcoc29ja2V0c1sw
XSk7CiAjZW5kaWYKIAogICAgIFFQcm9jZXNzKiB3ZWJQcm9jZXNzID0gbmV3IFF0V2ViUHJvY2Vz
cygpOwogICAgIHdlYlByb2Nlc3MtPnNldFByb2Nlc3NDaGFubmVsTW9kZShRUHJvY2Vzczo6Rm9y
d2FyZGVkQ2hhbm5lbHMpOwotICAgIHdlYlByb2Nlc3MtPnN0YXJ0KHByb2dyYW0pOworICAgIHdl
YlByb2Nlc3MtPnN0YXJ0KGNvbW1hbmRMaW5lKTsKIAogI2lmICFPUyhEQVJXSU4pCiAgICAgLy8g
RG9uJ3QgZXhwb3NlIHRoZSB3ZWIgc29ja2V0IHRvIHBvc3NpYmxlIGZ1dHVyZSB3ZWIgcHJvY2Vz
c2VzCkBAIC0xNjMsNyArMTY5LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nl
c3MoKQogI2VuZGlmCiAKICAgICBpZiAoIXdlYlByb2Nlc3MtPndhaXRGb3JTdGFydGVkKCkpIHsK
LSAgICAgICAgcURlYnVnKCkgPDwgIkZhaWxlZCB0byBzdGFydCIgPDwgcHJvZ3JhbTsKKyAgICAg
ICAgcURlYnVnKCkgPDwgIkZhaWxlZCB0byBzdGFydCIgPDwgY29tbWFuZExpbmU7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2lmIE9TKERBUldJTikKICAgICAgICAgbWFjaF9wb3J0
X2RlYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgY29ubmVjdG9yKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKaW5kZXgg
YTc1ZDViMS4uNDQyM2Q0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKQEAgLTUyLDYgKzUyLDE0IEBAIGNsYXNzIFdl
YlBsdWdpblNpdGVEYXRhTWFuYWdlcjsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIHN0cnVjdCBQ
bHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVS
RShYMTEpCitzdHJ1Y3QgUmF3UGx1Z2luTWV0YURhdGEgeworICAgIFN0cmluZyBuYW1lOworICAg
IFN0cmluZyBkZXNjcmlwdGlvbjsKKyAgICBTdHJpbmcgbWltZURlc2NyaXB0aW9uOworfTsKKyNl
bmRpZgorCiBjbGFzcyBQbHVnaW5Qcm9jZXNzUHJveHkgOiBDb3JlSVBDOjpDb25uZWN0aW9uOjpD
bGllbnQsIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c093blB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+IGNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFuYWdlcios
IGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKQEAgLTgwLDYgKzg4LDEwIEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBjcmVhdGVQcm9wZXJ0eUxpc3RGaWxlKGNvbnN0IFBsdWdpbk1vZHVsZUlu
Zm8mKTsKICNlbmRpZgogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgc3RhdGlj
IGJvb2wgc2NhblBsdWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFJhd1BsdWdpbk1ldGFE
YXRhJiByZXN1bHQpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5
KFBsdWdpblByb2Nlc3NNYW5hZ2VyKiwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vz
c1Byb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVn
aW5Qcm9jZXNzUHJveHlHdGsuY3BwCmluZGV4IDRjODU3NzIuLjZmMWE1YWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Q
cm9jZXNzUHJveHlHdGsuY3BwCkBAIC0yOCwxNCArMjgsNjIgQEAKIAogI2lmIEVOQUJMRShQTFVH
SU5fUFJPQ0VTUykKIAorLy8jaW5jbHVkZSAiLi4vLi4vTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVy
LmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDxnbGliLmg+Cisj
aW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlv
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
dm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3Mo
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCitib29sIFBsdWdpblByb2Nlc3NQcm94eTo6c2NhblBsdWdpbihj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFJhd1BsdWdpbk1ldGFEYXRhJiByZXN1bHQpCit7Cisg
ICAgQ1N0cmluZyBiaW5hcnlQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFByb2Nlc3NM
YXVuY2hlcjo6ZXhlY3V0YWJsZVBhdGgoUHJvY2Vzc0xhdW5jaGVyOjpQbHVnaW5Qcm9jZXNzKSk7
CisgICAgY2hhciogYXJndls0XTsKKyAgICBhcmd2WzBdID0gY29uc3RfY2FzdDxjaGFyKj4oYmlu
YXJ5UGF0aC5kYXRhKCkpOworICAgIGFyZ3ZbMV0gPSBjb25zdF9jYXN0PGNoYXIqPigiLXNjYW5Q
bHVnaW4iKTsKKyAgICBhcmd2WzJdID0gY29uc3RfY2FzdDxjaGFyKj4ocGx1Z2luUGF0aC5hc2Np
aSgpLmRhdGEoKSk7CisgICAgYXJndlszXSA9IDA7CisKKyAgICBHT3duUHRyPEdFcnJvcj4gZXJy
b3I7CisgICAgZ2ludCBzdGF0dXM7CisgICAgZ2NoYXIqIHN0ZE91dDsKKyAgICBpZiAoIWdfc3Bh
d25fc3luYygwLCBhcmd2LCAwLCBHX1NQQVdOX1NUREVSUl9UT19ERVZfTlVMTCwgMCwgMCwgJnN0
ZE91dCwgMCwgJnN0YXR1cywgJmVycm9yLm91dFB0cigpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghV0lGRVhJVEVEKHN0YXR1cykgfHwgV0VYSVRTVEFUVVMoc3RhdHVzKSAhPSBF
WElUX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZwcmludGYoc3RkZXJy
LCAic3Rkb3V0IG9mIHNjYW5uZXI9PVxuJXNcbiIsIHN0ZE91dCk7CisKKyAgICBjb25zdCBjaGFy
KiBvdXRwdXQgPSBjb25zdF9jYXN0PGNvbnN0IGNoYXIqPihzdGF0aWNfY2FzdDxjaGFyKj4oc3Rk
T3V0KSk7CisgICAgY29uc3QgdW5zaWduZWQga051bUxpbmVzRXhwZWN0ZWQgPSAzOworICAgIGlu
dCBsaW5lRW5kc1trTnVtTGluZXNFeHBlY3RlZF07CisgICAgaW50IG51bUxpbmVzID0gc3NjYW5m
KHN0YXRpY19jYXN0PGNoYXIqPihzdGRPdXQpLCAiJSpzJW5cbiUqcyVuXG4lKnMlblxuIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgJmxpbmVFbmRzWzBdLCAmbGluZUVuZHNbMV0sICZsaW5l
RW5kc1syXSk7CisgICAgaWYgKG51bUxpbmVzICE9IHN0YXRpY19jYXN0PGludD4oa051bUxpbmVz
RXhwZWN0ZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTdHJpbmcgbGluZXNba051
bUxpbmVzRXhwZWN0ZWRdOworICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGxpbmVTdGFydCA9IDA7
IGkgPCBrTnVtTGluZXNFeHBlY3RlZDsgKytpKSB7CisgICAgICAgIGxpbmVzW2ldID0gU3RyaW5n
KG91dHB1dCArIGxpbmVTdGFydCwgbGluZUVuZHNbaV0gLSBsaW5lU3RhcnQpOworICAgICAgICBs
aW5lU3RhcnQgPSBsaW5lRW5kc1tpXSArIDE7CisgICAgfQorCisgICAgcmVzdWx0Lm5hbWUgPSBT
dHJpbmcobGluZXNbMF0pOworICAgIHJlc3VsdC5kZXNjcmlwdGlvbiA9IFN0cmluZyhsaW5lc1sx
XSk7CisgICAgcmVzdWx0Lm1pbWVEZXNjcmlwdGlvbiA9IFN0cmluZyhsaW5lc1syXSk7CisgICAg
cmV0dXJuICFyZXN1bHQubWltZURlc2NyaXB0aW9uLmlzRW1wdHkoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5jcHAKaW5kZXggY2M1MjFlMC4uNDQxZjA2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2lu
UHJvY2Vzc1Byb3h5UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L3F0L1BsdWdpblByb2Nlc3NQcm94eVF0LmNwcApAQCAtMjgsMTYgKzI4LDczIEBACiAKICNpZiBF
TkFCTEUoUExVR0lOX1BST0NFU1MpCiAKLSNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1
ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgorI2luY2x1ZGUgPFFCeXRlQXJyYXk+CisjaW5jbHVkZSA8
UUNvcmVBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRRGlyPgorI2luY2x1ZGUgPFFFdmVudExvb3A+
CisjaW5jbHVkZSA8UVByb2Nlc3M+CisjaW5jbHVkZSA8UVN0cmluZz4KKworI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KKworI2lmIGRlZmluZWQoUV9PU19MSU5VWCkKKyNpbmNsdWRlIDxzeXMvcHJj
dGwuaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgUGx1Z2luUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczsKKwogdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5p
dGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFy
YW1ldGVycykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIFBsdWdpblByb2Nl
c3NQcm94eTo6c2NhblBsdWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFJhd1BsdWdpbk1l
dGFEYXRhJiByZXN1bHQpCit7CisgICAgUVN0cmluZyBjb21tYW5kTGluZSA9IFFMYXRpbjFTdHJp
bmcoIiUxICUyICUzIik7CisgICAgY29tbWFuZExpbmUgPSBjb21tYW5kTGluZS5hcmcoUHJvY2Vz
c0xhdW5jaGVyOjpleGVjdXRhYmxlUGF0aChQcm9jZXNzTGF1bmNoZXI6OlBsdWdpblByb2Nlc3Mp
KTsKKyAgICBjb21tYW5kTGluZSA9IGNvbW1hbmRMaW5lLmFyZyhRU3RyaW5nTGl0ZXJhbCgiLXNj
YW5QbHVnaW4iKSkuYXJnKHN0YXRpY19jYXN0PFFTdHJpbmc+KHBsdWdpblBhdGgpKTsKKworICAg
IFFQcm9jZXNzKiBwcm9jZXNzID0gbmV3IFFQcm9jZXNzOworICAgIFFPYmplY3Q6OmNvbm5lY3Qo
cHJvY2VzcywgU0lHTkFMKGZpbmlzaGVkKGludCkpLCBwcm9jZXNzLCBTTE9UKGRlbGV0ZUxhdGVy
KCkpKTsKKyAgICBwcm9jZXNzLT5zZXRSZWFkQ2hhbm5lbChRUHJvY2Vzczo6U3RhbmRhcmRPdXRw
dXQpOworCisgICAgcHJvY2Vzcy0+c3RhcnQoY29tbWFuZExpbmUpOworICAgIGlmICghcHJvY2Vz
cy0+d2FpdEZvclJlYWR5UmVhZCgpKSB7CisgICAgICAgIHByb2Nlc3MtPmtpbGwoKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFFCeXRlQXJyYXkgb3V0cHV0ID0gcHJvY2Vz
cy0+cmVhZEFsbCgpOworCisgICAgY29uc3QgdW5zaWduZWQga051bUxpbmVzRXhwZWN0ZWQgPSAz
OworICAgIFFTdHJpbmcgbGluZXNba051bUxpbmVzRXhwZWN0ZWRdOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDAsIHN0YXJ0ID0gMCwgZW5kID0gMDsgaSA8IGtOdW1MaW5lc0V4cGVjdGVkOyArK2kp
IHsKKyAgICAgICAgZW5kID0gb3V0cHV0LmluZGV4T2YoJ1xuJywgc3RhcnQpOworICAgICAgICBp
ZiAoZW5kID09IC0xKSB7CisgICAgICAgICAgICBwcm9jZXNzLT5raWxsKCk7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgbGluZXNbaV0gPSBRU3RyaW5nOjpm
cm9tTGF0aW4xKG91dHB1dC5jb25zdERhdGEoKSArIHN0YXJ0LCBlbmQgLSBzdGFydCk7CisgICAg
ICAgIHN0YXJ0ID0gZW5kICsgMTsKKyAgICB9CisKKyAgICByZXN1bHQubmFtZSA9IFN0cmluZyhs
aW5lc1swXSk7CisgICAgcmVzdWx0LmRlc2NyaXB0aW9uID0gU3RyaW5nKGxpbmVzWzFdKTsKKyAg
ICByZXN1bHQubWltZURlc2NyaXB0aW9uID0gU3RyaW5nKGxpbmVzWzJdKTsKKyAgICBib29sIHN1
Y2Nlc3MgPSAhcmVzdWx0Lm1pbWVEZXNjcmlwdGlvbi5pc0VtcHR5KCk7CisKKyAgICBwcm9jZXNz
LT5raWxsKCk7CisKKyAgICByZXR1cm4gc3VjY2VzczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHlRdC5tb2MiCisKICNlbmRpZiAvLyBF
TkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNw
cAppbmRleCBlMDlhZGE0Li4yMGJkZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJG
dW5jcy5jcHAKQEAgLTUzNywyMyArNTM3LDkgQEAgc3RhdGljIE5QRXJyb3IgTlBOX0dldFZhbHVl
KE5QUCBucHAsIE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1ZSkKICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICBjYXNlIE5QTlZUb29sa2l0OiB7Ci0jaWYgUExBVEZPUk0oR1RLKQot
ICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHZhbHVlKSA9IDI7Ci0jZWxz
ZQotICAgICAgICAgICBjb25zdCB1aW50MzJfdCBleHBlY3RlZEdUS1Rvb2xLaXRWZXJzaW9uID0g
MjsKLQotICAgICAgICAgICAvLyBTZXQgdGhlIGV4cGVjdGVkIEdUSyB2ZXJzaW9uIGlmIHdlIGtu
b3cgdGhhdCB0aGlzIHBsdWdpbiBuZWVkcyBpdCBvciBpZiB0aGUgcGx1Z2luIGNhbGwgdXMKLSAg
ICAgICAgICAgLy8gd2l0aCBhIG51bGwgaW5zdGFuY2UuIFRoZSBsYXR0ZXIgaXMgdGhlIGNhc2Ug
d2l0aCBOU1BsdWdpbldyYXBwZXIgcGx1Z2lucy4KLSAgICAgICAgICAgYm9vbCByZXF1aXJlc0dU
S1Rvb2xLaXRWZXJzaW9uOwotICAgICAgICAgICBpZiAoIW5wcCkKLSAgICAgICAgICAgICAgIHJl
cXVpcmVzR1RLVG9vbEtpdFZlcnNpb24gPSB0cnVlOwotICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gcGx1Z2luID0gTmV0c2NhcGVQbHVnaW46
OmZyb21OUFAobnBwKTsKLSAgICAgICAgICAgICAgIHJlcXVpcmVzR1RLVG9vbEtpdFZlcnNpb24g
PSBwbHVnaW4tPnF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrczo6UmVxdWlyZXNHVEtUb29s
S2l0KTsKLSAgICAgICAgICAgfQotCi0gICAgICAgICAgICpyZWludGVycHJldF9jYXN0PHVpbnQz
Ml90Kj4odmFsdWUpID0gcmVxdWlyZXNHVEtUb29sS2l0VmVyc2lvbiA/IGV4cGVjdGVkR1RLVG9v
bEtpdFZlcnNpb24gOiAwOwotI2VuZGlmCisgICAgICAgICAgIC8vIEd0ayBiYXNlZCBwbHVnaW5z
IG5lZWQgdG8gYmUgYXNzdXJlZCBhYm91dCB0aGUgdG9vbGtpdCB2ZXJzaW9uLgorICAgICAgICAg
ICBjb25zdCB1aW50MzJfdCBleHBlY3RlZEd0a1Rvb2xLaXRWZXJzaW9uID0gMjsKKyAgICAgICAg
ICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZSkgPSBleHBlY3RlZEd0a1Rvb2xL
aXRWZXJzaW9uOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL3F0L1BsdWdpbk1haW5RdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9xdC9QbHVn
aW5NYWluUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkNWM5M2IK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9xdC9QbHVnaW5NYWluUXQuY3BwCkBA
IC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIFVuaXZlcnNpdHkgb2YgU3pl
Z2VkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpbmNsdWRlIDxRTGlicmFyeT4KKyNpbmNsdWRlIDxRdEdsb2JhbD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CitRX0RFQ0xfSU1QT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7Cisg
ICAgcmV0dXJuIFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW4oYXJnYywgYXJndik7Cit9CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmZhZTg3OC4u
Yzk0MjkzNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAyLTIyICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNA
d2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdW1dLMl0gU2V0IHVwIHBsdWdpbiBwcm9jZXNzIG9u
IFVuaXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcy
MTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBx
bWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZjogUmVlbmFibGUgcGx1Z2lucworICAg
ICAgICBhbmQgdHVybiBvbiBwbHVnaW4gcHJvY2Vzcy4KKwogMjAxMi0wMi0xOSAgSnVuZ0ppayBM
ZWUgIDxqdW5namlrLmxlZUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBVc2UgbW9kaWZp
ZXIga2V5cyB0byBleGVjdXRlIHByZS1yZW5kZXJpbmcuCmRpZmYgLS1naXQgYS9Ub29scy9xbWFr
ZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZiBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVh
dHVyZXMvZmVhdHVyZXMucHJmCmluZGV4IGVhNzMxZTQuLmJjYzYwODkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCisrKyBiL1Rvb2xzL3FtYWtl
L21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCkBAIC0xMTksMTIgKzExOSwxMSBAQCBoYXZl
UXQoNCk6dW5peDohbWFjOiFlbWJlZGRlZCB7CiAgICAgbm9fd2Via2l0MiB7CiAgICAgICAgIERF
RklORVMgKz0gUExVR0lOX0FSQ0hJVEVDVFVSRV9VTlNVUFBPUlRFRD0xCiAgICAgfSBlbHNlIHsK
LSAgICAgICAgIyBEaXNhYmxlIHhsaWIgcGx1Z2lucyB3aGlsZSB0aGV5J3JlIGluLXByb2Nlc3Ms
IGJlY2F1c2UgdGhleSBjcmFzaAotICAgICAgICAjIGFzIHNvb24gYXMgYW4gaW5zdGFsbGVkIG5w
YXBpIHBsdWdpbiB1c2VzIFF0IDQuCi0gICAgICAgIGZhbHNlOmNvbnRhaW5zKFFUX0NPTkZJRywg
eGNiLXhsaWIpIHsKKyAgICAgICAgY29udGFpbnMoUVRfQ09ORklHLCB4Y2IteGxpYikgewogICAg
ICAgICAgICAgQ09ORklHICs9IHBsdWdpbl9iYWNrZW5kX3hsaWIKICAgICAgICAgICAgIERFRklO
RVMgKz0gUExVR0lOX0FSQ0hJVEVDVFVSRV9YMTE9MSBcCi0gICAgICAgICAgICAgICAgICAgICAg
IFBMVUdJTl9BUkNISVRFQ1RVUkVfVU5TVVBQT1JURUQ9MAorICAgICAgICAgICAgICAgICAgICAg
ICBQTFVHSU5fQVJDSElURUNUVVJFX1VOU1VQUE9SVEVEPTAgXAorICAgICAgICAgICAgICAgICAg
ICAgICBFTkFCTEVfUExVR0lOX1BST0NFU1M9MQogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgREVGSU5FUyArPSBQTFVHSU5fQVJDSElURUNUVVJFX1VOU1VQUE9SVEVEPTEKICAgICAgICAg
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128332</attachid>
            <date>2012-02-22 16:48:43 -0800</date>
            <delta_ts>2012-03-08 06:11:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72121-20120223014842.patch</filename>
            <type>text/plain</type>
            <size>41683</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2IzNGNjM2NhYzExM2U3
NjU4YjBmNTdmZTA5ZTMxYzY4MjViNjY2YS4uMWJjMmVhZTYxMDMwNzVhZDJkNjUxNGNlMzczZTFm
MjE5ZGU4NjUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAxMi0wMi0yMiAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIFNl
dCB1cCBwbHVnaW4gcHJvY2VzcyBvbiBVbml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MjEyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNldHVwIHBsdWdpbiBwcm9jZXNzIGZvciBRdCBhbmQgbW92ZSB0
aGUgdGFzayBvZiBxdWVyeWluZyB0aGUgcGx1Z2lucworICAgICAgICB0byB0aGlzIHByb2Nlc3Mg
aW4gb3JkZXIgdG8gYXZvaWQgY3Jhc2hlcyBkdWUgdG8gcGx1Z2luIGJ1Z3Mgb3IgbGlicmFyeQor
ICAgICAgICBpbmNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzLnBybzogQWRkZWQuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9j
ZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3NNYWluR3RrKQorICAgICAgICAqIFBsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vz
c01haW5RdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVHdGspOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzTWFpbik6CisgICAgICAgIEltcGxlbWVudCBlbnRyeSBwb2ludCBv
ZiB0aGUgcGx1Z2luIHByb2Nlc3MuCisgICAgICAgIEhhbmRsZSAtc2NhblBsdWdpbiBjb21tYW5k
IGxpbmUgc3dpdGNoOiBwcm9kdWNlIG1ldGEgZGF0YQorICAgICAgICBvZiBwbHVnaW4gb24gc3Rh
bmRhcmQgb3V0cHV0IGFuZCB0ZXJtaW5hdGUuIE1vdmUgR3RrIGluaXRpYWxpemF0aW9uCisgICAg
ICAgIGhhY2sgdG8gdGhlcmUuCisKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
TW9kdWxlOjp0cnlMb2FkKToKKyAgICAgICAgR2V0IHJpZCBvZiB0aGUgR3RrIGluaXRpYWxpemF0
aW9uIGhhY2suIFdlIGRvIG5vdCBuZWFkIGl0IGhlcmUgYW55bW9yZS4KKworICAgICAgICAqIFNo
YXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmg6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoTmV0c2NhcGVQbHVnaW5Nb2R1bGUpOgorICAgICAgICAqIFNoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnBhcnNlTUlNRURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4pOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBs
dWdpbkluZm8pOgorICAgICAgICBHZXQgcGx1Z2luIG1ldGEgZGF0YSB2aWEgUGx1Z2luUHJvY2Vz
c3Byb3h5LiBJZiBhIGZhaWx1cmUKKyAgICAgICAgaGFwcGVuZWQgd2UgaWdub3JlIHRvIHVzZSB0
aGUgcGx1Z2luLiBSZW1vdmUgdGhlIGNvbmNlcHQKKyAgICAgICAgb2Ygc3Rkb3V0IHJlZGlyZWN0
aW9uIHNpbmNlIHdlIGNhbiBjb250cm9sIGl0IHdoZW4gbGF1bmNoaW5nCisgICAgICAgIHRoZSBw
cm9jZXNzLgorCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjpkZXRlcm1p
bmVRdWlya3MpOgorICAgICAgICAoV2ViS2l0Ojp0cnVuY2F0ZU5ld0xpbmVzKToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNjYW5QbHVnaW4pOgorICAgICAgICBQcm9k
dWNlIHBsdWdpbiBtZXRhIGRhdGEgb24gc3RhbmRhcmQgb3V0cHV0LgorCisgICAgICAgICogU2hh
cmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpwYWludCk6CisgICAgICAgIEFkZGVkIGltcGxlbWVudGF0aW9uIGZvciB0aGUgb3Zl
cnJpZGUgd2l0aCB0aGUgc2NhbGUgZmFjdG9yIGJlY2F1c2UKKyAgICAgICAgaXQgaXMgY2FsbGVk
IGZyb20gUGx1Z2luUHJveHkuIEl0IGRvZXMgbm90IGFjdHVhbGx5IGhhbmRsZSB0aGUgY2FzZQor
ICAgICAgICB3aGVuIHRoZSBzY2FsZSBmYWN0b3IgaXMgbm90IDEuIEhvd2V2ZXIgaXQncyBvayBi
ZWNhdXNlIGl0IGNhbiBvbmx5CisgICAgICAgIGhhcHBlbiBvbiBNYWMgY3VycmVudGx5LgorCisg
ICAgICAgICogVGFyZ2V0LnByaToKKworICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9j
ZXNzTGF1bmNoZXIuaDoKKyAgICAgICAgKFByb2Nlc3NMYXVuY2hlcik6CisgICAgICAgICogVUlQ
cm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpmaW5kV2ViS2l0UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpQcm9jZXNzTGF1bmNoZXI6OmV4ZWN1dGFibGVQYXRoKToKKyAgICAgICAgKFdlYktpdDo6
UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1
bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNz
TGF1bmNoZXI6OmV4ZWN1dGFibGVQYXRoKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIEZhY3RvcmVk
IHRoZSBleGVjdXRhYmxlIHBhdGggZGV0ZXJtaW5hdGlvbiBpbnRvIGEgc3RhdGljIG1ldGhvZAor
ICAgICAgICB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoUmF3UGx1Z2luTWV0YURhdGEpOgorICAgICAgICAoUGx1Z2luUHJvY2Vzc1Byb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQ
bHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3NQcm94eTo6c2NhblBsdWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMv
cXQvUGx1Z2luUHJvY2Vzc1Byb3h5UXQuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2luKToK
KyAgICAgICAgTGF1bmNoIHBsdWdpbiBwcm9jZXNzIGFuZCBwYXJzZSBpdCdzIG91dHB1dCB0byBn
ZXQgdGhlIG1ldGEgZGF0YQorICAgICAgICBmb3IgdGhlIHBsdWdpbi4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5QTl9HZXRWYWx1ZSk6CisgICAgICAgIENoYW5nZWQgYWNjb3JkaW5nIHRv
IHRoZSByZW1vdmUgb2YgdGhlIGZsYXNoIGhhY2suIERvIG5vdCB0cnkKKyAgICAgICAgdG8gZGVj
aWRlIHdoZXRoZXIgdGhlIHBsdWdpbiBuZWVkcyBHdGsgYnkgaXQncyBuYW1lIGJ1dCBpbnN0ZWFk
CisgICAgICAgIGFsd2F5cyBnZXQgYmFjayB0aGUgZXhwZWN0ZWQgR3RrIHZlcnNpb24gKDIpLiBP
bmx5IEd0ayBwbHVnaW5zCisgICAgICAgIHNob3VsZCBhc2sgZm9yIHRoaXMgYW55d2F5LgorCisg
ICAgICAgICogcXQvUGx1Z2luTWFpblF0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAuCisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAobWFpbik6CisKIDIwMTItMDItMjIgIE1hcnRpbiBSb2JpbnNv
biAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIENsZWFuIGJ1aWxkIGlz
IGJyb2tlbiB3aGVuIHVzaW5nIG1ha2UgLWoKZGlmZiAtLWdpdCBhL1NvdXJjZS9RdFdlYktpdC5w
cm8gYi9Tb3VyY2UvUXRXZWJLaXQucHJvCmluZGV4IDAyZmM5ZTFjN2ViZTFmNzMxOWQwOWQxMjE1
ZTIwOTg5OWI0NTFhNzQuLmJiYmZjNDFlNjgxN2I3YzBkNWJkNWUxM2VjOWQzY2ZkNDc5YmExZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9RdFdlYktpdC5wcm8KKysrIGIvU291cmNlL1F0V2ViS2l0LnBy
bwpAQCAtNCw2ICs0LDggQEAKICMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBvdmVy
dmlldyBvZiB0aGUgYnVpbGQgc3lzdGVtCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorbG9hZChmZWF0dXJlcykK
KwogVEVNUExBVEUgPSBzdWJkaXJzCiBDT05GSUcgKz0gb3JkZXJlZAogCkBAIC0xMyw2ICsxNSwx
MCBAQCBTVUJESVJTICs9IGFwaQogIW5vX3dlYmtpdDIgewogICAgIHdlYnByb2Nlc3MuZmlsZSA9
IFdlYktpdDIvV2ViUHJvY2Vzcy5wcm8KICAgICBTVUJESVJTICs9IHdlYnByb2Nlc3MKKyAgICBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfUExVR0lOX1BST0NFU1M9MSkgeworICAgICAgICBwbHVn
aW5wcm9jZXNzLmZpbGUgPSBXZWJLaXQyL1BsdWdpblByb2Nlc3MucHJvCisgICAgICAgIFNVQkRJ
UlMgKz0gcGx1Z2lucHJvY2VzcworICAgIH0KIH0KIAogaW5jbHVkZShXZWJLaXQvcXQvZG9jcy9k
b2NzLnByaSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291
cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggMGUxMzcxNWEzYzYxODk5MzY4NDFhMDIw
ZGQ2MjcxNzQ5NjlmNTQ3OS4uY2I5YTA2YmQyYjgyNGE4YjkzMzNjZjQ4Njg3MjAzNzhkOWQxNmNm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNl
L1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTEzNDIsNiArMTM0Miw3IEBAIFByb2dyYW1zX1dl
YktpdFBsdWdpblByb2Nlc3NfQ1BQRkxBR1MgPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktp
dDIvU2hhcmVkIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucyBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvIFwK
KwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvIFwKIAktSSQo
c3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy8gXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy8gXAogCS1JJChzcmNkaXIpL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS8gXApAQCAtMTM1Myw2ICsxMzU0
LDcgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19DUFBGTEFHUyA9IFwKIAktREJVSUxE
SU5HX1dFQktJVCBcCiAJLURHVEtfQVBJX1ZFUlNJT05fMj0xIFwKIAktREVOQUJMRV9QTFVHSU5f
UFJPQ0VTUz0xIFwKKwktRExJQkVYRUNESVI9XCIiJChsaWJleGVjZGlyKSJcIiBcCiAJJChnbG9i
YWxfY3BwZmxhZ3MpIFwKIAkkKHdlYmNvcmVfY3BwZmxhZ3MpIFwKIAkkKHdlYmNvcmVndGtfY3Bw
ZmxhZ3MpIFwKQEAgLTE0NjMsNiArMTQ2NSw5IEBAIHdlYmtpdDJfcGx1Z2luX3Byb2Nlc3Nfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50
R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3Bw
IFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNw
cCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNo
ZXJHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2lu
UHJvY2Vzc1Byb3h5R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbi5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4u
aCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGlt
ZVV0aWxpdGllcy5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzLnBybwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDRj
YTYyZGQ0YjlmODhlMzEyM2YzMDhmNDhkMjFjOTYxZDE4YTljCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8KQEAgLTAsMCArMSwyNyBAQAorIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisjIFByb2plY3QgZmlsZSBmb3IgdGhlIFdlYktpdDIgcGx1Z2luIHByb2Nlc3MgYmlu
YXJ5CisjCisjIFNlZSAnVG9vbHMvcW1ha2UvUkVBRE1FJyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhl
IGJ1aWxkIHN5c3RlbQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2xvYWQoZmVhdHVyZXMpCisKK1RFTVBMQVRF
ID0gYXBwCisKK1RBUkdFVCA9IFF0V2ViUGx1Z2luUHJvY2VzcworREVTVERJUiA9ICQke1JPT1Rf
QlVJTERfRElSfS9iaW4KKworU09VUkNFUyArPSBxdC9QbHVnaW5NYWluUXQuY3BwCisKK0lOQ0xV
REVQQVRIID0gJCRQV0QvLi4vSmF2YVNjcmlwdENvcmUgXAorICAgICAgICAgICAgICAkJElOQ0xV
REVQQVRICisKK0NPTkZJRyArPSBxdHdlYmtpdAorCitJTlNUQUxMUyArPSB0YXJnZXQKKworaXNF
bXB0eShJTlNUQUxMX0JJTlMpIHsKKyAgICB0YXJnZXQucGF0aCA9ICQkW1FUX0lOU1RBTExfQklO
U10KK30gZWxzZSB7CisgICAgdGFyZ2V0LnBhdGggPSAkJElOU1RBTExfQklOUworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01haW5H
dGsuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01h
aW5HdGsuY3BwCmluZGV4IDk5MmQ3NDA3NTEwNGM4Y2JjYTYxMmYxY2Q4OTllOWE1MGUzNzE0NGQu
LmIxZjUwMTdmNzgzYzZjNDAzNDY2YTJmZmVmY2Q0YTcwYWM2NTVhNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0
ay5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQ
bHVnaW5Qcm9jZXNzTWFpbkd0ay5oIgogCisjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIKICNp
bmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAj
aW5jbHVkZSA8Z2RrL2dka3guaD4KQEAgLTUzLDEyICs1NCwyNCBAQCBzdGF0aWMgaW50IHdlYmtp
dGd0a1hFcnJvcihEaXNwbGF5KiB4ZGlzcGxheSwgWEVycm9yRXZlbnQqIGVycm9yKQogCiBXS19F
WFBPUlQgaW50IFBsdWdpblByb2Nlc3NNYWluR3RrKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiB7
Ci0gICAgQVNTRVJUKGFyZ2MgPT0gMik7CisgICAgQVNTRVJUKGFyZ2MgPT0gMiB8fCBhcmdjID09
IDMpOworICAgIGJvb2wgc2NhblBsdWdpbiA9ICFzdHJjbXAoYXJndlsxXSwgIi1zY2FuUGx1Z2lu
Iik7CisgICAgQVNTRVJUKGFyZ2MgPT0gMiB8fCAoYXJnYyA9PSAzICYmIHNjYW5QbHVnaW4pKTsK
KworICAgIGZwcmludGYoc3RkZXJyLCAiUFAgcnVubmluZ1xuYXJncz0lcywlcywlc1xuIiwgYXJn
dlswXSwgYXJndlsxXSwgYXJndlsyXSk7CiAKICAgICBndGtfaW5pdCgmYXJnYywgJmFyZ3YpOwog
CiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFp
blRocmVhZCgpOworCisgICAgaWYgKHNjYW5QbHVnaW4pIHsKKyAgICAgICAgU3RyaW5nIHBsdWdp
blBhdGgoYXJndlsyXSk7CisgICAgICAgIGlmICghTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNjYW5Q
bHVnaW4ocGx1Z2luUGF0aCkpCisgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAg
ICAgICByZXR1cm4gRVhJVF9TVUNDRVNTOworICAgIH0KKwogICAgIFJ1bkxvb3A6OmluaXRpYWxp
emVNYWluUnVuTG9vcCgpOwogCiAgICAgLy8gUGx1Z2lucyBjYW4gcHJvZHVjZSBYIGVycm9ycyB0
aGF0IGFyZSBoYW5kbGVkIGJ5IHRoZSBHREsgWCBlcnJvciBoYW5kbGVyLCB3aGljaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5R
dC5jcHAKaW5kZXggZDNhMGVjM2UyNDU5NTZiOTg1MDBkNTY3ZTU2NWZhYTE1MDZhMDA1My4uYjhi
MDU4MDU0NjM2OTZmZWU0MTc2YzAxYjE1OTc2MDFkNzY3YmMzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwCkBA
IC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBOb2tpYSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVW5pdmVyc2l0eSBv
ZiBTemVnZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI0LDQ0ICsyNSw4OSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpbi5oIgogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNT
KQorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluLmgiCiAKLSNpbmNsdWRlICJDb21tYW5kTGlu
ZS5oIgorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luTW9kdWxlLmgiCiAjaW5jbHVkZSAiUGx1Z2lu
UHJvY2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRl
IDxRQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UURlYnVnPgorI2luY2x1ZGUgPFFTdHJpbmdMaXN0
PgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotI2RlZmluZSBTSE9XX0NSQVNIX1JFUE9SVEVSIDEK
KyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotaW50IFBsdWdpblByb2Nlc3NNYWluKGNvbnN0IENvbW1h
bmRMaW5lJiBjb21tYW5kTGluZSkKK3N0YXRpYyB2b2lkIG1lc3NhZ2VIYW5kbGVyKFF0TXNnVHlw
ZSB0eXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewotICAgIFN0cmluZyBzZXJ2aWNlTmFtZSA9
IGNvbW1hbmRMaW5lWyJzZXJ2aWNlbmFtZSJdOwotICAgIGlmIChzZXJ2aWNlTmFtZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgaWYgKHR5cGUgPT0gUXRDcml0
aWNhbE1zZykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtZXNzYWdlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIERvIG5vdGhpbmcKK30KKworc3RhdGljIGJv
b2wgaW5pdGlhbGl6ZUd0aygpCit7CisgICAgUUxpYnJhcnkgZ3RrTGlicmFyeShRTGF0aW4xU3Ry
aW5nKCJsaWJndGsteDExLTIuMCIpLCAwKTsKKyAgICBpZiAoIWd0a0xpYnJhcnkubG9hZCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdHlwZWRlZiB2b2lkKiAoKmd0a19pbml0X3B0ciko
dm9pZCosIHZvaWQqKTsKKyAgICBndGtfaW5pdF9wdHIgZ3RrSW5pdCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Z3RrX2luaXRfcHRyPihndGtMaWJyYXJ5LnJlc29sdmUoImd0a19pbml0IikpOworICAgIGlm
ICghZ3RrSW5pdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGd0a0luaXQoMCwgMCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2ludCBQbHVnaW5Qcm9jZXNzTWFpbihpbnQgYXJnYywgY2hh
cioqIGFyZ3YpCit7CisgICAgUUJ5dGVBcnJheSBzdXBwcmVzc091dHB1dCA9IHFnZXRlbnYoIlFU
X1dFQktJVF9TVVBQUkVTU19XRUJfUFJPQ0VTU19PVVRQVVQiKTsKKyAgICBpZiAoIXN1cHByZXNz
T3V0cHV0LmlzRW1wdHkoKSAmJiBzdXBwcmVzc091dHB1dCAhPSAiMCIpCisgICAgICAgIHFJbnN0
YWxsTXNnSGFuZGxlcihtZXNzYWdlSGFuZGxlcik7CiAKLSNpZiAhU0hPV19DUkFTSF9SRVBPUlRF
UgotICAgIC8vIEluc3RhbGxzIHNpZ25hbCBoYW5kbGVycyB0aGF0IGV4aXQgb24gYSBjcmFzaCBz
byB0aGF0IENyYXNoUmVwb3J0ZXIgZG9lcyBub3Qgc2hvdyB1cC4KLSAgICBzaWduYWwoU0lHSUxM
LCBfZXhpdCk7Ci0gICAgc2lnbmFsKFNJR0ZQRSwgX2V4aXQpOwotICAgIHNpZ25hbChTSUdCVVMs
IF9leGl0KTsKLSAgICBzaWduYWwoU0lHU0VHViwgX2V4aXQpOwotI2VuZGlmCisgICAgUUFwcGxp
Y2F0aW9uIGFwcChhcmdjLCBhcmd2KTsKKworICAgIC8vIFdvcmthcm91bmQgdGhlIGlzc3VlIHRo
YXQgc29tZSB2ZXJzaW9ucyBvZiBmbGFzaCBkb2VzIG5vdCBpbml0aWFsaXplIEd0ayBwcm9wZXJs
eS4KKyAgICBpZiAoIWluaXRpYWxpemVHdGsoKSkKKyAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVS
RTsKIAogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5pdGlhbGl6
ZU1haW5UaHJlYWQoKTsKKworICAgIGlmIChhcmdjIDw9IDEpCisgICAgICAgIHJldHVybiBFWElU
X0ZBSUxVUkU7CisKKyAgICBpZiAoYXBwLmFyZ3VtZW50cygpLmF0KDEpID09IFFMYXRpbjFTdHJp
bmcoIi1zY2FuUGx1Z2luIikpIHsKKyAgICAgICAgaWYgKGFyZ2MgIT0gMykKKyAgICAgICAgICAg
IHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAgIFN0cmluZyBwbHVnaW5QYXRoKGFwcC5hcmd1
bWVudHMoKS5hdCgyKSk7CisgICAgICAgIGlmICghTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNjYW5Q
bHVnaW4ocGx1Z2luUGF0aCkpCisgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworCisg
ICAgICAgIC8vIFFQcm9jZXNzIGRvZXMgbm90IGFsbG93IHRvIHJlYWQgdGhlIG91dHB1dCBvZiB0
aGUgcHJvY2VzcyBhZnRlcgorICAgICAgICAvLyBpdCBoYXMgYmVlbiB0ZXJtaW5hdGVkLiBMZXQn
cyBnbyB0byBzbGVlcCBhbmQgcmVseSBvbiB0aGUgVUkKKyAgICAgICAgLy8gcHJvY2VzcyB0byBr
aWxsIHVzLgorICAgICAgICBzbGVlcCgxMCk7CisKKyAgICAgICAgcmV0dXJuIEVYSVRfU1VDQ0VT
UzsKKyAgICB9CisKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIAorICAg
IC8vIENyZWF0ZSB0aGUgY29ubmVjdGlvbi4KKyAgICBib29sIGlzTnVtYmVyID0gZmFsc2U7Cisg
ICAgaW50IGlkZW50aWZpZXIgPSBhcHAuYXJndW1lbnRzKCkuYXQoMSkudG9JbnQoJmlzTnVtYmVy
LCAxMCk7CisgICAgaWYgKCFpc051bWJlcikKKyAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsK
KyAgICBXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUoaWRlbnRpZmll
ciwgUnVuTG9vcDo6bWFpbigpKTsKKwogICAgIFJ1bkxvb3A6OnJ1bigpOwogCiAgICAgcmV0dXJu
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKaW5kZXggZTVmOGRjMmEzZjJlZmE3ZGU4
YjQxMDk5MzI2YWUwNGY5NWY0NTE2My4uYzE4NzRkOTk2NmE2NmRkOTMyZWQyZGZmOTIwN2NiZjg5
ZDMyNWJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcApAQCAtMTk3LDEwICsxOTcs
NiBAQCBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpsb2FkKCkKIAogYm9vbCBOZXRzY2FwZVBs
dWdpbk1vZHVsZTo6dHJ5TG9hZCgpCiB7Ci0jaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCi0g
ICAgYXBwbHlYMTFRdWlya3NCZWZvcmVMb2FkKCk7Ci0jZW5kaWYKLQogICAgIG1fbW9kdWxlID0g
YWRvcHRQdHIobmV3IE1vZHVsZShtX3BsdWdpblBhdGgpKTsKICAgICBpZiAoIW1fbW9kdWxlLT5s
b2FkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oCmlu
ZGV4IGY4MGEwYTFhMGEzMmMwNzIxY2U2YWJmYjVmYmRkNWI0MGQ4YTk2YjIuLmU5NmJkMmQwNDJi
Y2VhNDU5ZWNiMWE0ZGY4NjI2Y2U2MzY4MTE5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUu
aApAQCAtMzUsNiArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgUmF3UGx1
Z2luTWV0YURhdGE7CisKIGNsYXNzIE5ldHNjYXBlUGx1Z2luTW9kdWxlIDogcHVibGljIFJlZkNv
dW50ZWQ8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gZ2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBwbHVn
aW5QYXRoKTsKQEAgLTYxLDE1ICs2MywxNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgY3Jl
YXRlUGx1Z2luTUlNRVR5cGVzUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsK
ICNlbmRpZgogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgc3RhdGljIGJvb2wg
c2NhblBsdWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOworI2VuZGlmCisKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgTmV0c2NhcGVQbHVnaW5Nb2R1bGUoY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoKTsKIAogICAgIHZvaWQgZGV0ZXJtaW5lUXVpcmtzKCk7CiAKICNpZiBQTFVHSU5fQVJDSElU
RUNUVVJFKFgxMSkKLSAgICB2b2lkIGFwcGx5WDExUXVpcmtzQmVmb3JlTG9hZCgpOwotICAgIHN0
YXRpYyB2b2lkIHNldE1JTUVEZXNjcmlwdGlvbihjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlwdGlv
biwgUGx1Z2luTW9kdWxlSW5mbyYpOwotICAgIGJvb2wgZ2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBs
dWdpbihQbHVnaW5Nb2R1bGVJbmZvJik7CisgICAgYm9vbCBnZXRQbHVnaW5JbmZvRm9yTG9hZGVk
UGx1Z2luKFJhd1BsdWdpbk1ldGFEYXRhJik7CiAjZW5kaWYKIAogICAgIGJvb2wgdHJ5R2V0U2l0
ZXNXaXRoRGF0YShWZWN0b3I8U3RyaW5nPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdp
bk1vZHVsZVgxMS5jcHAKaW5kZXggODY2ODMzYzY0NjExZDEyZGQ3ZTA1MWM3ZjA5YjU0YWU4OGY1
OTM2OS4uYjQ4YjZkYmQ4YzEyMGE4N2Y0MTU4OWI0YWRjZGIwMDM1MTE3NGE3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1
Z2luTW9kdWxlWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCkBAIC0yOCw3NiArMjgsMjggQEAK
IAogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luTW9kdWxlLmgiCiAKKyNpbmNsdWRlICJQbHVnaW5Q
cm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJOZXRzY2FwZUJyb3dzZXJGdW5jcy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotCi0jaWYgUExBVEZPUk0oUVQpCi0jaW5jbHVkZSA8
UUxpYnJhcnk+Ci0jZW5kaWYKLQogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL3N0
YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgU3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3IgewotcHVibGlj
OgotICAgIFN0ZG91dERldk51bGxSZWRpcmVjdG9yKCk7Ci0gICAgflN0ZG91dERldk51bGxSZWRp
cmVjdG9yKCk7Ci0KLXByaXZhdGU6Ci0gICAgaW50IG1fc2F2ZWRTdGRvdXQ7Ci19OwotCi1TdGRv
dXREZXZOdWxsUmVkaXJlY3Rvcjo6U3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3IoKQotICAgIDogbV9z
YXZlZFN0ZG91dCgtMSkKLXsKLSAgICBpbnQgbmV3U3Rkb3V0ID0gb3BlbigiL2Rldi9udWxsIiwg
T19XUk9OTFkpOwotICAgIGlmIChuZXdTdGRvdXQgPT0gLTEpCi0gICAgICAgIHJldHVybjsKLSAg
ICBtX3NhdmVkU3Rkb3V0ID0gZHVwKFNURE9VVF9GSUxFTk8pOwotICAgIGR1cDIobmV3U3Rkb3V0
LCBTVERPVVRfRklMRU5PKTsKLX0KLQotU3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3I6On5TdGRvdXRE
ZXZOdWxsUmVkaXJlY3RvcigpCi17Ci0gICAgaWYgKG1fc2F2ZWRTdGRvdXQgIT0gLTEpCi0gICAg
ICAgIGR1cDIobV9zYXZlZFN0ZG91dCwgU1RET1VUX0ZJTEVOTyk7Ci19Ci0KLSNpZiBQTEFURk9S
TShRVCkKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVHVEsoKQotewotICAgIFFMaWJyYXJ5IGxpYnJh
cnkoUUxhdGluMVN0cmluZygibGliZ3RrLXgxMS0yLjAuc28uMCIpKTsKLSAgICBpZiAobGlicmFy
eS5sb2FkKCkpIHsKLSAgICAgICAgdHlwZWRlZiB2b2lkICooKmd0a19pbml0X2NoZWNrX3B0ciko
aW50KiwgY2hhcioqKik7Ci0gICAgICAgIGd0a19pbml0X2NoZWNrX3B0ciBndGtJbml0Q2hlY2sg
PSByZWludGVycHJldF9jYXN0PGd0a19pbml0X2NoZWNrX3B0cj4obGlicmFyeS5yZXNvbHZlKCJn
dGtfaW5pdF9jaGVjayIpKTsKLSAgICAgICAgLy8gTk9URTogV2UncmUgdXNpbmcgZ3RrX2luaXRf
Y2hlY2soKSBzaW5jZSBndGtfaW5pdCgpIGNhbGxzIGV4aXQoKSBvbiBmYWlsdXJlLgotICAgICAg
ICBpZiAoZ3RrSW5pdENoZWNrKQotICAgICAgICAgICAgKHZvaWQpIGd0a0luaXRDaGVjaygwLCAw
KTsKLSAgICB9Ci19Ci0jZW5kaWYKLQotdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6YXBwbHlY
MTFRdWlya3NCZWZvcmVMb2FkKCkKK3N0YXRpYyB2b2lkIHBhcnNlTUlNRURlc2NyaXB0aW9uKGNv
bnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uLCBWZWN0b3I8TWltZUNsYXNzSW5mbz4mIHJlc3Vs
dCkKIHsKLSNpZiBQTEFURk9STShRVCkKLSAgICBpZiAobV9wbHVnaW5QYXRoLmNvbnRhaW5zKCJu
cHdyYXBwZXIiKSB8fCBtX3BsdWdpblBhdGguY29udGFpbnMoImZsYXNocGxheWVyIikpIHsKLSAg
ICAgICAgaW5pdGlhbGl6ZUdUSygpOwotICAgICAgICBtX3BsdWdpblF1aXJrcy5hZGQoUGx1Z2lu
UXVpcmtzOjpSZXF1aXJlc0dUS1Rvb2xLaXQpOwotICAgIH0KLSNlbmRpZgotfQorICAgIEFTU0VS
VF9BUkcocmVzdWx0LCByZXN1bHQuaXNFbXB0eSgpKTsKIAotdm9pZCBOZXRzY2FwZVBsdWdpbk1v
ZHVsZTo6c2V0TUlNRURlc2NyaXB0aW9uKGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uLCBQ
bHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCi17CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7CiAg
ICAgbWltZURlc2NyaXB0aW9uLmxvd2VyKCkuc3BsaXQoVUNoYXIoJzsnKSwgZmFsc2UsIHR5cGVz
KTsKLSAgICBwbHVnaW4uaW5mby5taW1lcy5yZXNlcnZlQ2FwYWNpdHkodHlwZXMuc2l6ZSgpKTsK
KyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0eXBlcy5zaXplKCkpOwogCiAgICAg
c2l6ZV90IG1pbWVJbmZvQ291bnQgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHlw
ZXMuc2l6ZSgpOyArK2kpIHsKQEAgLTEwNiw4ICs1OCw4IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5N
b2R1bGU6OnNldE1JTUVEZXNjcmlwdGlvbihjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlwdGlvbiwg
UGx1CiAgICAgICAgIGlmIChtaW1lVHlwZVBhcnRzLnNpemUoKSA8PSAwKQogICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgcGx1Z2luLmluZm8ubWltZXMudW5jaGVja2VkQXBwZW5kKE1p
bWVDbGFzc0luZm8oKSk7Ci0gICAgICAgIE1pbWVDbGFzc0luZm8mIG1pbWVJbmZvID0gcGx1Z2lu
LmluZm8ubWltZXNbbWltZUluZm9Db3VudCsrXTsKKyAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFw
cGVuZChNaW1lQ2xhc3NJbmZvKCkpOworICAgICAgICBNaW1lQ2xhc3NJbmZvJiBtaW1lSW5mbyA9
IHJlc3VsdFttaW1lSW5mb0NvdW50KytdOwogICAgICAgICBtaW1lSW5mby50eXBlID0gbWltZVR5
cGVQYXJ0c1swXTsKIAogICAgICAgICBpZiAobWltZVR5cGVQYXJ0cy5zaXplKCkgPiAxKQpAQCAt
MTE4LDEzICs3MCwxMCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpzZXRNSU1FRGVzY3Jp
cHRpb24oY29uc3QgU3RyaW5nJiBtaW1lRGVzY3JpcHRpb24sIFBsdQogICAgIH0KIH0KIAotYm9v
bCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihQbHVn
aW5Nb2R1bGVJbmZvJiBwbHVnaW4pCitib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVn
aW5JbmZvRm9yTG9hZGVkUGx1Z2luKFJhd1BsdWdpbk1ldGFEYXRhJiBtZXRhRGF0YSkKIHsKICAg
ICBBU1NFUlQobV9pc0luaXRpYWxpemVkKTsKIAotICAgIHBsdWdpbi5wYXRoID0gbV9wbHVnaW5Q
YXRoOwotICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBwYXRoR2V0RmlsZU5hbWUobV9wbHVnaW5QYXRo
KTsKLQogICAgIE1vZHVsZSogbW9kdWxlID0gbV9tb2R1bGUuZ2V0KCk7CiAgICAgTlBQX0dldFZh
bHVlUHJvY1B0ciBOUFBfR2V0VmFsdWUgPSBtb2R1bGUtPmZ1bmN0aW9uUG9pbnRlcjxOUFBfR2V0
VmFsdWVQcm9jUHRyPigiTlBfR2V0VmFsdWUiKTsKICAgICBpZiAoIU5QUF9HZXRWYWx1ZSkKQEAg
LTEzNyw0NyArODYsNDUgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5m
b0ZvckxvYWRlZFBsdWdpbihQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4KICAgICBjaGFyKiBidWZm
ZXI7CiAgICAgTlBFcnJvciBlcnJvciA9IE5QUF9HZXRWYWx1ZSgwLCBOUFBWcGx1Z2luTmFtZVN0
cmluZywgJmJ1ZmZlcik7CiAgICAgaWYgKGVycm9yID09IE5QRVJSX05PX0VSUk9SKQotICAgICAg
ICBwbHVnaW4uaW5mby5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIpOworICAgICAgICBt
ZXRhRGF0YS5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIpOwogCiAgICAgZXJyb3IgPSBO
UFBfR2V0VmFsdWUoMCwgTlBQVnBsdWdpbkRlc2NyaXB0aW9uU3RyaW5nLCAmYnVmZmVyKTsKICAg
ICBpZiAoZXJyb3IgPT0gTlBFUlJfTk9fRVJST1IpCi0gICAgICAgIHBsdWdpbi5pbmZvLmRlc2Mg
PSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlcik7CisgICAgICAgIG1ldGFEYXRhLmRlc2NyaXB0aW9u
ID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIpOwogCiAgICAgU3RyaW5nIG1pbWVEZXNjcmlwdGlv
biA9IFN0cmluZzo6ZnJvbVVURjgoTlBfR2V0TUlNRURlc2NyaXB0aW9uKCkpOwogICAgIGlmICht
aW1lRGVzY3JpcHRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHNl
dE1JTUVEZXNjcmlwdGlvbihtaW1lRGVzY3JpcHRpb24sIHBsdWdpbik7CisgICAgbWV0YURhdGEu
bWltZURlc2NyaXB0aW9uID0gbWltZURlc2NyaXB0aW9uOwogCiAgICAgcmV0dXJuIHRydWU7CiB9
CisKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCiB7Ci0gICAgLy8gVGVtcGFy
YXJpbHkgc3VwcHJlc3Mgc3Rkb3V0IGluIHRoaXMgZnVuY3Rpb24gYXMgcGx1Z2lucyB3aWxsIGJl
IGxvYWRlZCBhbmQgc2h1dGRvd24gYW5kIGRlYnVnIGluZm8KLSAgICAvLyBpcyBsZWFrZWQgdG8g
bGF5b3V0IHRlc3Qgb3V0cHV0LgotICAgIFN0ZG91dERldk51bGxSZWRpcmVjdG9yIHN0ZG91dERl
dk51bGxSZWRpcmVjdG9yOwotCi0gICAgLy8gV2UgYXJlIGxvYWRpbmcgdGhlIHBsdWdpbiBoZXJl
IHNpbmNlIGl0IGRvZXMgbm90IHNlZW0gdG8gYmUgYSBzdGFuZGFyZGl6ZWQgd2F5IHRvCi0gICAg
Ly8gZ2V0IHRoZSBuZWVkZWQgaW5mb3JtYXRpb25zIGZyb20gYSBVTklYIHBsdWdpbiB3aXRob3V0
IGxvYWRpbmcgaXQuCi0gICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBwbHVnaW5Nb2R1
bGUgPSBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUocGx1Z2luUGF0aCk7Ci0gICAg
aWYgKCFwbHVnaW5Nb2R1bGUpCisgICAgUmF3UGx1Z2luTWV0YURhdGEgbWV0YURhdGE7CisgICAg
aWYgKCFQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4ocGx1Z2luUGF0aCwgbWV0YURhdGEp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBwbHVnaW5Nb2R1bGUtPmluY3JlbWVudExv
YWRDb3VudCgpOwotICAgIGJvb2wgcmV0dXJuVmFsdWUgPSBwbHVnaW5Nb2R1bGUtPmdldFBsdWdp
bkluZm9Gb3JMb2FkZWRQbHVnaW4ocGx1Z2luKTsKLSAgICBwbHVnaW5Nb2R1bGUtPmRlY3JlbWVu
dExvYWRDb3VudCgpOworICAgIHBsdWdpbi5wYXRoID0gcGx1Z2luUGF0aDsKKyAgICBwbHVnaW4u
aW5mby5maWxlID0gcGF0aEdldEZpbGVOYW1lKHBsdWdpblBhdGgpOworICAgIHBsdWdpbi5pbmZv
Lm5hbWUgPSBtZXRhRGF0YS5uYW1lOworICAgIHBsdWdpbi5pbmZvLmRlc2MgPSBtZXRhRGF0YS5k
ZXNjcmlwdGlvbjsKKyAgICBwYXJzZU1JTUVEZXNjcmlwdGlvbihtZXRhRGF0YS5taW1lRGVzY3Jp
cHRpb24sIHBsdWdpbi5pbmZvLm1pbWVzKTsKIAotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6ZGV0ZXJtaW5l
UXVpcmtzKCkKIHsKICNpZiBDUFUoWDg2XzY0KQotICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2lu
OwotICAgIGlmICghZ2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihwbHVnaW4pKQorICAgIFJh
d1BsdWdpbk1ldGFEYXRhIG1ldGFEYXRhOworICAgIGlmICghZ2V0UGx1Z2luSW5mb0ZvckxvYWRl
ZFBsdWdpbihtZXRhRGF0YSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxNaW1lQ2xh
c3NJbmZvPiBtaW1lVHlwZXMgPSBwbHVnaW4uaW5mby5taW1lczsKKyAgICBWZWN0b3I8TWltZUNs
YXNzSW5mbz4gbWltZVR5cGVzOworICAgIHBhcnNlTUlNRURlc2NyaXB0aW9uKG1ldGFEYXRhLm1p
bWVEZXNjcmlwdGlvbiwgbWltZVR5cGVzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1p
bWVUeXBlcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAobWltZVR5cGVzW2ldLnR5cGUgPT0g
ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIikgewogICAgICAgICAgICAgbV9wbHVnaW5R
dWlya3MuYWRkKFBsdWdpblF1aXJrczo6SWdub3JlUmlnaHRDbGlja0luV2luZG93bGVzc01vZGUp
OwpAQCAtMTg3LDYgKzEzNCw1MiBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpkZXRlcm1p
bmVRdWlya3MoKQogI2VuZGlmCiB9CiAKK3N0YXRpYyBQYXNzT3duUHRyPGNoYXI+IHRydW5jYXRl
TmV3TGluZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgQVNTRVJUKHN0cmluZy5jb250
YWluc09ubHlMYXRpbjEoKSk7CisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3Ro
KCk7CisgICAgY2hhciogdHJ1bmNhdGVkID0gbmV3IGNoYXJbbGVuZ3RoICsgMV07CisgICAgdW5z
aWduZWQgbmV3TGVuZ3RoID0gMDsKKworICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzID0gc3Ry
aW5nLmNoYXJhY3RlcnM4KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7CisgICAgICAgIExDaGFyIGMgPSBjaGFyYWN0ZXJzW2ldOworICAgICAgICBpZiAoYyAh
PSAnXG4nKQorICAgICAgICAgICAgdHJ1bmNhdGVkW25ld0xlbmd0aCsrXSA9IGM7CisgICAgfQor
ICAgIHRydW5jYXRlZFtuZXdMZW5ndGhdID0gMDsKKworICAgIHJldHVybiBhZG9wdFB0cih0cnVu
Y2F0ZWQpOworfQorCitib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpzY2FuUGx1Z2luKGNvbnN0
IFN0cmluZyYgcGx1Z2luUGF0aCkKK3sKKyAgICAvLyBXZSBhcmUgbG9hZGluZyB0aGUgcGx1Z2lu
IGhlcmUgc2luY2UgaXQgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHN0YW5kYXJkaXplZCB3YXkgdG8K
KyAgICAvLyBnZXQgdGhlIG5lZWRlZCBpbmZvcm1hdGlvbnMgZnJvbSBhIFVOSVggcGx1Z2luIHdp
dGhvdXQgbG9hZGluZyBpdC4KKyAgICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IHBsdWdp
bk1vZHVsZSA9IE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRPckNyZWF0ZShwbHVnaW5QYXRoKTsK
KyAgICBpZiAoIXBsdWdpbk1vZHVsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcGx1
Z2luTW9kdWxlLT5pbmNyZW1lbnRMb2FkQ291bnQoKTsKKyAgICBSYXdQbHVnaW5NZXRhRGF0YSBt
ZXRhRGF0YTsKKyAgICBib29sIHN1Y2Nlc3MgPSBwbHVnaW5Nb2R1bGUtPmdldFBsdWdpbkluZm9G
b3JMb2FkZWRQbHVnaW4obWV0YURhdGEpOworICAgIHBsdWdpbk1vZHVsZS0+ZGVjcmVtZW50TG9h
ZENvdW50KCk7CisKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIE93blB0cjxjaGFyPiBuYW1lKHRydW5jYXRlTmV3TGluZXMobWV0YURhdGEubmFtZS5hc2Np
aSgpLmRhdGEoKSkpOworICAgIE93blB0cjxjaGFyPiBkZXNjcmlwdGlvbih0cnVuY2F0ZU5ld0xp
bmVzKG1ldGFEYXRhLmRlc2NyaXB0aW9uLmFzY2lpKCkuZGF0YSgpKSk7CisgICAgT3duUHRyPGNo
YXI+IG1pbWVEZXNjcmlwdGlvbih0cnVuY2F0ZU5ld0xpbmVzKG1ldGFEYXRhLm1pbWVEZXNjcmlw
dGlvbi5hc2NpaSgpLmRhdGEoKSkpOworCisgICAgLy8gV3JpdGUgZGF0YSB0byBzdGFuZGFyZCBv
dXRwdXQgZm9yIHRoZSBVSSBwcm9jZXNzLgorICAgIHByaW50ZigiJXNcbiVzXG4lc1xuIiwgbmFt
ZS5nZXQoKSwgZGVzY3JpcHRpb24uZ2V0KCksIG1pbWVEZXNjcmlwdGlvbi5nZXQoKSk7CisgICAg
ZmZsdXNoKHN0ZG91dCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZiAvLyBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwCmluZGV4IDBjOGJlMDcyYTQ2
MmQ2M2ZjMDYyNzA4YzAxZWM1YTZmYzIxZmVkM2IuLjc3OGJjZmNjMWNkMmMzZDI1OTBjYjhmZjM0
MWYwOGRjOTg3OTBjZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9TaGFy
ZWFibGVCaXRtYXBRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1NoYXJlYWJs
ZUJpdG1hcFF0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSA8UUltYWdlPgogI2lu
Y2x1ZGUgPFFQYWludGVyPgorI2luY2x1ZGUgPFF0R2xvYmFsPgogI2luY2x1ZGUgPFdlYkNvcmUv
Qml0bWFwSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTcxLDggKzcyLDEzIEBAIHZvaWQg
U2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IElu
dFBvaW50JiBkc3RQb2ludCwKICAgICBwYWludGVyLT5kcmF3SW1hZ2UoZHN0UG9pbnQsIGltYWdl
LCBRUmVjdChzcmNSZWN0KSk7CiB9CiAKLXZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFw
aGljc0NvbnRleHQmIC8qY29udGV4dCovLCBmbG9hdCAvKnNjYWxlRmFjdG9yKi8sIGNvbnN0IElu
dFBvaW50JiAvKmRzdFBvaW50Ki8sIGNvbnN0IEludFJlY3QmIC8qc3JjUmVjdCovKQordm9pZCBT
aGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Nh
bGVGYWN0b3IsIGNvbnN0IEludFBvaW50JiBkc3RQb2ludCwgY29uc3QgSW50UmVjdCYgc3JjUmVj
dCkKIHsKKyAgICBpZiAocUZ1enp5Q29tcGFyZShzY2FsZUZhY3RvciwgMSkpIHsKKyAgICAgICAg
cGFpbnQoY29udGV4dCwgZHN0UG9pbnQsIHNyY1JlY3QpOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjQ2NjM+LgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCBjZDJkMDhk
ZjQ1MzNiNTJhYWJmMDQyNWM2MzIzMjBjMDQzMTBkOTEyLi4xOTQzNGEwZmMwYmVlODEwYTdhYjcy
ZjA4ZDM1YzZkZTNkZTU3N2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJp
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTM0LDYgKzM0LDcgQEAgSEVBREVS
UyArPSBcCiAgICAgUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggXAogICAgIFBsYXRmb3JtL1dvcmtR
dWV1ZS5oIFwKICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIFwKKyAg
ICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5oIFwKICAgICBQbHVnaW5Q
cm9jZXNzL1BsdWdpblByb2Nlc3MuaCBcCiAgICAgUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29u
bmVjdGlvbi5oIFwKICAgICBTaGFyZWQvQVBJL2MvV0tCYXNlLmggXApAQCAtMzc2LDYgKzM3Nyw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIFBsYXRmb3JtL1dvcmtRdWV1ZS5jcHAgXAogICAgIFBsYXRm
b3JtL3F0L01vZHVsZVF0LmNwcCBcCiAgICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuY3BwIFwKKyAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5j
cHAgXAogICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAgXAogICAgIFBsdWdpblBy
b2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIFwKICAgICBQbHVnaW5Qcm9jZXNzL3F0L1Bs
dWdpbkNvbnRyb2xsZXJQcm94eVF0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKaW5kZXggOGRiZmIxMTAxZTBlYWQ0OTlh
MWJlMWY3NjQyMmQ2NDI4NTQ5OTI1OC4uZDI2NWUwYzEwMzE3YzI3ZTllZjk0Mzg5ZmMyMmVjZDM5
N2I0YjFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1By
b2Nlc3NMYXVuY2hlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Q
cm9jZXNzTGF1bmNoZXIuaApAQCAtNzMsNiArNzMsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IGJvb2wgZ2V0UHJvY2Vzc1R5cGVGcm9tU3RyaW5nKGNvbnN0IGNoYXIqLCBQcm9jZXNzVHlwZSYp
OwogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgc3RhdGljIFN0cmluZyBleGVj
dXRhYmxlUGF0aChQcm9jZXNzVHlwZSk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBQcm9jZXNz
TGF1bmNoZXIoQ2xpZW50KiwgY29uc3QgTGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vz
c0xhdW5jaGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsv
UHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAppbmRleCA5NGNhZDVmYzQ0ODIwZGExOThkYTg3MWNjYmQ2
ZmE0N2U0Mzg5YjJiLi41NTA3ZmNkMTk0ZTY2MjU4MzQxNjc4NjIzNzFmYjY0YzMzYjQ5YjZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NM
YXVuY2hlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0
ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCkBAIC03NywxMyArNzcsMTMgQEAgc3RhdGljIHZvaWQg
Y2hpbGRGaW5pc2hlZEZ1bmN0aW9uKEdQaWQsIGdpbnQgc3RhdHVzLCBncG9pbnRlciB1c2VyRGF0
YSkKICAgICBjbG9zZShHUE9JTlRFUl9UT19JTlQodXNlckRhdGEpKTsKIH0KIAotc3RhdGljIENT
dHJpbmcgZmluZFdlYktpdFByb2Nlc3MoY29uc3QgY2hhciogcHJvY2Vzc05hbWUpCitzdGF0aWMg
U3RyaW5nIGZpbmRXZWJLaXRQcm9jZXNzKGNvbnN0IGNoYXIqIHByb2Nlc3NOYW1lKQogewogICAg
IGNvbnN0IGNoYXIqIGV4ZWNEaXJlY3RvcnkgPSBnX2dldGVudigiV0VCS0lUX0VYRUNfUEFUSCIp
OwogICAgIGlmIChleGVjRGlyZWN0b3J5KSB7CiAgICAgICAgIFN0cmluZyBwcm9jZXNzUGF0aCA9
IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmaWxlbmFtZVRvU3RyaW5nKGV4ZWNEaXJlY3Rvcnkp
LCBwcm9jZXNzTmFtZSk7CiAgICAgICAgIGlmIChmaWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkKLSAg
ICAgICAgICAgIHJldHVybiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJvY2Vzc1BhdGgpOwor
ICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NQYXRoOwogICAgIH0KIAogICAgIHN0YXRpYyBib29s
IGdvdEV4ZWN1dGFibGVQYXRoID0gZmFsc2U7CkBAIC05OSwxMCArOTksMTUgQEAgc3RhdGljIENT
dHJpbmcgZmluZFdlYktpdFByb2Nlc3MoY29uc3QgY2hhciogcHJvY2Vzc05hbWUpCiAgICAgaWYg
KCFleGVjdXRhYmxlUGF0aC5pc051bGwoKSkgewogICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGgg
PSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZXhlY3V0YWJsZVBhdGgsIHByb2Nlc3NOYW1lKTsK
ICAgICAgICAgaWYgKGZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQotICAgICAgICAgICAgcmV0dXJu
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcm9jZXNzUGF0aCk7CisgICAgICAgICAgICByZXR1
cm4gcHJvY2Vzc1BhdGg7CiAgICAgfQogCi0gICAgcmV0dXJuIGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZmlsZW5hbWVUb1N0cmluZyhMSUJFWEVDRElS
KSwgcHJvY2Vzc05hbWUpKTsKKyAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZp
bGVuYW1lVG9TdHJpbmcoTElCRVhFQ0RJUiksIHByb2Nlc3NOYW1lKTsKK30KKworU3RyaW5nIFBy
b2Nlc3NMYXVuY2hlcjo6ZXhlY3V0YWJsZVBhdGgoUHJvY2Vzc1R5cGUgdHlwZSkKK3sKKyAgICBy
ZXR1cm4gZmluZFdlYktpdFByb2Nlc3ModHlwZSA9PSBQcm9jZXNzTGF1bmNoZXI6OldlYlByb2Nl
c3MgPyBnV2ViS2l0V2ViUHJvY2Vzc05hbWUgOiBnV2ViS2l0UGx1Z2luUHJvY2Vzc05hbWUpOwog
fQogCiB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCkBAIC0xMTYsNyArMTIx
LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgQ1N0cmluZyBiaW5hcnlQYXRoID0gZmluZFdlYktpdFByb2Nlc3Mo
bV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID09IFByb2Nlc3NMYXVuY2hlcjo6V2ViUHJvY2Vz
cyA/IGdXZWJLaXRXZWJQcm9jZXNzTmFtZSA6IGdXZWJLaXRQbHVnaW5Qcm9jZXNzTmFtZSk7Cisg
ICAgQ1N0cmluZyBiaW5hcnlQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFi
bGVQYXRoKG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSkpOwogICAgIEdPd25QdHI8Z2NoYXI+
IHNvY2tldChnX3N0cmR1cF9wcmludGYoIiVkIiwgc29ja2V0c1swXSkpOwogICAgIGNoYXIqIGFy
Z3ZbM107CiAgICAgYXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJpbmFyeVBhdGguZGF0YSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9j
ZXNzTGF1bmNoZXJRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQv
UHJvY2Vzc0xhdW5jaGVyUXQuY3BwCmluZGV4IDhlODI2MjA2MzY3ZWVkOGViMWMyNWNlMmY0YjQ1
NjRiMDhmNzRhMDguLmVkMTA4MTkzZjE0MjJhYjU2MjkzOTM0YTE5MTViZjQwMmE2NjkzZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1
bmNoZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1By
b2Nlc3NMYXVuY2hlclF0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nl
c3MuaCIKICNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgogI2luY2x1ZGUgPFFEZWJ1Zz4KKyNp
bmNsdWRlIDxRRGlyPgogI2luY2x1ZGUgPFFGaWxlPgogI2luY2x1ZGUgPFFMb2NhbFNlcnZlcj4K
ICNpbmNsdWRlIDxRTWV0YVR5cGU+CkBAIC03Myw2ICs3NCwxNSBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK1N0cmluZyBQcm9jZXNzTGF1bmNoZXI6
OmV4ZWN1dGFibGVQYXRoKFByb2Nlc3NUeXBlIHR5cGUpCit7CisgICAgUUxhdGluMVN0cmluZyBi
YXNlTmFtZSh0eXBlID09IFdlYlByb2Nlc3MgPyBRU3RyaW5nTGl0ZXJhbCgiUXRXZWJQcm9jZXNz
IikgOiBRU3RyaW5nTGl0ZXJhbCgiUXRXZWJQbHVnaW5Qcm9jZXNzIikpOworICAgIFFTdHJpbmcg
ZXhwZWN0ZWRQYXRoID0gUUNvcmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25EaXJQYXRoKCkgKyBR
RGlyOjpzZXBhcmF0b3IoKSArIGJhc2VOYW1lOworICAgIGlmIChRRmlsZTo6ZXhpc3RzKGV4cGVj
dGVkUGF0aCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoZXhwZWN0ZWRQYXRoKTsgICAgCisgICAg
cmV0dXJuIFN0cmluZyhRU3RyaW5nKGJhc2VOYW1lKSk7Cit9CisKIGNsYXNzIFF0V2ViUHJvY2Vz
cyA6IHB1YmxpYyBRUHJvY2VzcwogewogICAgIFFfT0JKRUNUCkBAIC0xMDIsMTMgKzExMiw4IEBA
IHZvaWQgUXRXZWJQcm9jZXNzOjpzZXR1cENoaWxkUHJvY2VzcygpCiAKIHZvaWQgUHJvY2Vzc0xh
dW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKIHsKLSAgICBRU3RyaW5nIGFwcGxpY2F0aW9uUGF0aCA9
IFFMYXRpbjFTdHJpbmcoIiUxICUyIik7Ci0KLSAgICBpZiAoUUZpbGU6OmV4aXN0cyhRQ29yZUFw
cGxpY2F0aW9uOjphcHBsaWNhdGlvbkRpclBhdGgoKSArIFFMYXRpbjFTdHJpbmcoIi9RdFdlYlBy
b2Nlc3MiKSkpIHsKLSAgICAgICAgYXBwbGljYXRpb25QYXRoID0gYXBwbGljYXRpb25QYXRoLmFy
ZyhRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlvbkRpclBhdGgoKSArIFFMYXRpbjFTdHJpbmco
Ii9RdFdlYlByb2Nlc3MiKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYXBwbGljYXRpb25QYXRo
ID0gYXBwbGljYXRpb25QYXRoLmFyZyhRTGF0aW4xU3RyaW5nKCJRdFdlYlByb2Nlc3MiKSk7Ci0g
ICAgfQorICAgIFFTdHJpbmcgY29tbWFuZExpbmUgPSBRTGF0aW4xU3RyaW5nKCIlMSAlMiIpOwor
ICAgIGNvbW1hbmRMaW5lID0gY29tbWFuZExpbmUuYXJnKGV4ZWN1dGFibGVQYXRoKG1fbGF1bmNo
T3B0aW9ucy5wcm9jZXNzVHlwZSkpOwogCiAjaWYgT1MoREFSV0lOKQogICAgIC8vIENyZWF0ZSB0
aGUgbGlzdGVuaW5nIHBvcnQuCkBAIC0xMjQsNyArMTI5LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNo
ZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBib290c3RyYXBfcmVn
aXN0ZXIyKGJvb3RzdHJhcF9wb3J0LCBjb25zdF9jYXN0PGNoYXIqPihzZXJ2aWNlTmFtZS50b1V0
ZjgoKS5kYXRhKCkpLCBjb25uZWN0b3IsIDApOwogICAgIEFTU0VSVF9VTlVTRUQoa3IsIGtyID09
IEtFUk5fU1VDQ0VTUyk7CiAKLSAgICBRU3RyaW5nIHByb2dyYW0oYXBwbGljYXRpb25QYXRoLmFy
ZyhzZXJ2aWNlTmFtZSkpOworICAgIGNvbW1hbmRMaW5lID0gY29tbWFuZExpbmUuYXJnKHNlcnZp
Y2VOYW1lKTsKICNlbHNlCiAgICAgaW50IHNvY2tldHNbMl07CiAgICAgaWYgKHNvY2tldHBhaXIo
QUZfVU5JWCwgU09DS0VUX1RZUEUsIDAsIHNvY2tldHMpID09IC0xKSB7CkBAIC0xNDQsMTIgKzE0
OSwxMiBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgfQogCiAg
ICAgaW50IGNvbm5lY3RvciA9IHNvY2tldHNbMV07Ci0gICAgUVN0cmluZyBwcm9ncmFtKGFwcGxp
Y2F0aW9uUGF0aC5hcmcoc29ja2V0c1swXSkpOworICAgIGNvbW1hbmRMaW5lID0gY29tbWFuZExp
bmUuYXJnKHNvY2tldHNbMF0pOwogI2VuZGlmCiAKICAgICBRUHJvY2Vzcyogd2ViUHJvY2VzcyA9
IG5ldyBRdFdlYlByb2Nlc3MoKTsKICAgICB3ZWJQcm9jZXNzLT5zZXRQcm9jZXNzQ2hhbm5lbE1v
ZGUoUVByb2Nlc3M6OkZvcndhcmRlZENoYW5uZWxzKTsKLSAgICB3ZWJQcm9jZXNzLT5zdGFydChw
cm9ncmFtKTsKKyAgICB3ZWJQcm9jZXNzLT5zdGFydChjb21tYW5kTGluZSk7CiAKICNpZiAhT1Mo
REFSV0lOKQogICAgIC8vIERvbid0IGV4cG9zZSB0aGUgd2ViIHNvY2tldCB0byBwb3NzaWJsZSBm
dXR1cmUgd2ViIHByb2Nlc3NlcwpAQCAtMTYzLDcgKzE2OCw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5j
aGVyOjpsYXVuY2hQcm9jZXNzKCkKICNlbmRpZgogCiAgICAgaWYgKCF3ZWJQcm9jZXNzLT53YWl0
Rm9yU3RhcnRlZCgpKSB7Ci0gICAgICAgIHFEZWJ1ZygpIDw8ICJGYWlsZWQgdG8gc3RhcnQiIDw8
IHByb2dyYW07CisgICAgICAgIHFEZWJ1ZygpIDw8ICJGYWlsZWQgdG8gc3RhcnQiIDw8IGNvbW1h
bmRMaW5lOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNpZiBPUyhEQVJXSU4pCiAg
ICAgICAgIG1hY2hfcG9ydF9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIGNvbm5lY3Rvcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NQcm94eS5oCmluZGV4IGE3NWQ1YjEzODdjZDhiZGE5ZGM1MjMxMmQ4MjZmNGFhMGI0Njk2NTYu
LjQ0MjNkNDdmMDlhOWJiMjkxNjQ4NzY1ZWRhN2IwODZlYjU0YWI3YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCkBA
IC01Miw2ICs1MiwxNCBAQCBjbGFzcyBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI7CiBjbGFzcyBX
ZWJQcm9jZXNzUHJveHk7CiBzdHJ1Y3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsK
IAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorc3RydWN0IFJhd1BsdWdpbk1ldGFEYXRh
IHsKKyAgICBTdHJpbmcgbmFtZTsKKyAgICBTdHJpbmcgZGVzY3JpcHRpb247CisgICAgU3RyaW5n
IG1pbWVEZXNjcmlwdGlvbjsKK307CisjZW5kaWYKKwogY2xhc3MgUGx1Z2luUHJvY2Vzc1Byb3h5
IDogQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UGx1Z2luUHJvY2Vzc1Byb3h5PiBjcmVh
dGUoUGx1Z2luUHJvY2Vzc01hbmFnZXIqLCBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJik7CkBAIC04
MCw2ICs4OCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgY3JlYXRlUHJvcGVydHlMaXN0
RmlsZShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJik7CiAjZW5kaWYKIAorI2lmIFBMVUdJTl9BUkNI
SVRFQ1RVUkUoWDExKQorICAgIHN0YXRpYyBib29sIHNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBw
bHVnaW5QYXRoLCBSYXdQbHVnaW5NZXRhRGF0YSYgcmVzdWx0KTsKKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIFBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0IFBs
dWdpbk1vZHVsZUluZm8mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcAppbmRleCA0Yzg1
NzcyYTI3ZjdiNzA3MmFmZjZhMTEzN2M5Mjc0ODg1YThmNjQzLi5iZmI5NTFjNWMwOWViNTY2OTQy
NjA2MjVlNGU4OWJhZjQxZDczODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcApAQCAt
MjksMTMgKzI5LDYwIEBACiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogCiAjaW5jbHVkZSAi
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0
aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgUGx1Z2luUHJvY2Vz
c1Byb3h5OjpzY2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0
YURhdGEmIHJlc3VsdCkKK3sKKyAgICBDU3RyaW5nIGJpbmFyeVBhdGggPSBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oUHJvY2Vzc0xhdW5jaGVyOjpleGVjdXRhYmxlUGF0aChQcm9jZXNzTGF1bmNo
ZXI6OlBsdWdpblByb2Nlc3MpKTsKKyAgICBDU3RyaW5nIHBsdWdpblBhdGhDU3RyaW5nID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpblBhdGgpOworICAgIGNoYXIqIGFyZ3ZbNF07Cisg
ICAgYXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJpbmFyeVBhdGguZGF0YSgpKTsKKyAgICBh
cmd2WzFdID0gY29uc3RfY2FzdDxjaGFyKj4oIi1zY2FuUGx1Z2luIik7CisgICAgYXJndlsyXSA9
IGNvbnN0X2Nhc3Q8Y2hhcio+KHBsdWdpblBhdGhDU3RyaW5nLmRhdGEoKSk7CisgICAgYXJndlsz
XSA9IDA7CisKKyAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgZ2ludCBzdGF0dXM7Cisg
ICAgZ2NoYXIqIHN0ZE91dDsKKyAgICBpZiAoIWdfc3Bhd25fc3luYygwLCBhcmd2LCAwLCBHX1NQ
QVdOX1NUREVSUl9UT19ERVZfTlVMTCwgMCwgMCwgJnN0ZE91dCwgMCwgJnN0YXR1cywgJmVycm9y
Lm91dFB0cigpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghV0lGRVhJVEVEKHN0
YXR1cykgfHwgV0VYSVRTVEFUVVMoc3RhdHVzKSAhPSBFWElUX1NVQ0NFU1MpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGNvbnN0IHVuc2lnbmVkIGtOdW1MaW5lc0V4cGVjdGVkID0gMzsK
KyAgICBpbnQgbGluZUVuZHNba051bUxpbmVzRXhwZWN0ZWRdOworICAgIHNpemVfdCBzdGRPdXRM
ZW5ndGggPSBzdHJsZW4oc3RkT3V0KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBuID0gMDsg
aSA8IHN0ZE91dExlbmd0aDsgKytpKSB7CisgICAgICAgIGlmIChzdGRPdXRbaV0gPT0gJ1xuJykg
eworICAgICAgICAgICAgbGluZUVuZHNbbisrXSA9IGk7CisgICAgICAgICAgICBpZiAobiA9PSBr
TnVtTGluZXNFeHBlY3RlZCAmJiBpICE9IHN0ZE91dExlbmd0aCAtIDEpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgU3RyaW5nIGxpbmVzW2tO
dW1MaW5lc0V4cGVjdGVkXTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBsaW5lU3RhcnQgPSAw
OyBpIDwga051bUxpbmVzRXhwZWN0ZWQ7ICsraSkgeworICAgICAgICBsaW5lc1tpXSA9IFN0cmlu
ZyhzdGRPdXQgKyBsaW5lU3RhcnQsIGxpbmVFbmRzW2ldIC0gbGluZVN0YXJ0KTsKKyAgICAgICAg
bGluZVN0YXJ0ID0gbGluZUVuZHNbaV0gKyAxOworICAgIH0KKworICAgIHJlc3VsdC5uYW1lLnN3
YXAobGluZXNbMF0pOworICAgIHJlc3VsdC5kZXNjcmlwdGlvbi5zd2FwKGxpbmVzWzFdKTsKKyAg
ICByZXN1bHQubWltZURlc2NyaXB0aW9uLnN3YXAobGluZXNbMl0pOworICAgIHJldHVybiAhcmVz
dWx0Lm1pbWVEZXNjcmlwdGlvbi5pc0VtcHR5KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2lu
UHJvY2Vzc1Byb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvcXQv
UGx1Z2luUHJvY2Vzc1Byb3h5UXQuY3BwCmluZGV4IGNjNTIxZTBhZjlhNmEwNzQ0YzJkYzBlMDZm
NjUxNGZjOTRiMzQ5ZjguLjUwNDExMTY5YjBhN2ZmOTYyOTk3MDkzNTIyODIyMmMzMTY2NTAzMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3F0L1BsdWdpblBy
b2Nlc3NQcm94eVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9x
dC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5jcHAKQEAgLTI4LDE0ICsyOCw2MCBAQAogCiAjaWYgRU5B
QkxFKFBMVUdJTl9QUk9DRVNTKQogCi0jaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRl
ICJQcm9jZXNzTGF1bmNoZXIuaCIKKyNpbmNsdWRlIDxRQnl0ZUFycmF5PgorI2luY2x1ZGUgPFFD
b3JlQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UURpcj4KKyNpbmNsdWRlIDxRRXZlbnRMb29wPgor
I2luY2x1ZGUgPFFQcm9jZXNzPgorI2luY2x1ZGUgPFFTdHJpbmc+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCitjbGFzcyBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOworCiB2b2lkIFBs
dWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Q
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK2Jvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2luKGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmIHJlc3VsdCkKK3sKKyAgICBRU3Ry
aW5nIGNvbW1hbmRMaW5lID0gUUxhdGluMVN0cmluZygiJTEgJTIgJTMiKTsKKyAgICBjb21tYW5k
TGluZSA9IGNvbW1hbmRMaW5lLmFyZyhQcm9jZXNzTGF1bmNoZXI6OmV4ZWN1dGFibGVQYXRoKFBy
b2Nlc3NMYXVuY2hlcjo6UGx1Z2luUHJvY2VzcykpOworICAgIGNvbW1hbmRMaW5lID0gY29tbWFu
ZExpbmUuYXJnKFFTdHJpbmdMaXRlcmFsKCItc2NhblBsdWdpbiIpKS5hcmcoc3RhdGljX2Nhc3Q8
UVN0cmluZz4ocGx1Z2luUGF0aCkpOworCisgICAgUVByb2Nlc3MqIHByb2Nlc3MgPSBuZXcgUVBy
b2Nlc3M7CisgICAgUU9iamVjdDo6Y29ubmVjdChwcm9jZXNzLCBTSUdOQUwoZmluaXNoZWQoaW50
KSksIHByb2Nlc3MsIFNMT1QoZGVsZXRlTGF0ZXIoKSkpOworICAgIHByb2Nlc3MtPnNldFJlYWRD
aGFubmVsKFFQcm9jZXNzOjpTdGFuZGFyZE91dHB1dCk7CisKKyAgICBwcm9jZXNzLT5zdGFydChj
b21tYW5kTGluZSk7CisgICAgaWYgKCFwcm9jZXNzLT53YWl0Rm9yUmVhZHlSZWFkKCkpIHsKKyAg
ICAgICAgcHJvY2Vzcy0+a2lsbCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgUUJ5dGVBcnJheSBvdXRwdXQgPSBwcm9jZXNzLT5yZWFkQWxsKCk7CisKKyAgICBjb25zdCB1
bnNpZ25lZCBrTnVtTGluZXNFeHBlY3RlZCA9IDM7CisgICAgU3RyaW5nIGxpbmVzW2tOdW1MaW5l
c0V4cGVjdGVkXTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzdGFydCA9IDAsIGVuZCA9IDA7
IGkgPCBrTnVtTGluZXNFeHBlY3RlZDsgKytpKSB7CisgICAgICAgIGVuZCA9IG91dHB1dC5pbmRl
eE9mKCdcbicsIHN0YXJ0KTsKKyAgICAgICAgaWYgKGVuZCA9PSAtMSkgeworICAgICAgICAgICAg
cHJvY2Vzcy0+a2lsbCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgICAgIGxpbmVzW2ldID0gU3RyaW5nKG91dHB1dC5jb25zdERhdGEoKSArIHN0YXJ0LCBlbmQg
LSBzdGFydCk7CisgICAgICAgIHN0YXJ0ID0gZW5kICsgMTsKKyAgICB9CisKKyAgICByZXN1bHQu
bmFtZS5zd2FwKGxpbmVzWzBdKTsKKyAgICByZXN1bHQuZGVzY3JpcHRpb24uc3dhcChsaW5lc1sx
XSk7CisgICAgcmVzdWx0Lm1pbWVEZXNjcmlwdGlvbi5zd2FwKGxpbmVzWzJdKTsKKyAgICBib29s
IHN1Y2Nlc3MgPSAhcmVzdWx0Lm1pbWVEZXNjcmlwdGlvbi5pc0VtcHR5KCk7CisKKyAgICBwcm9j
ZXNzLT5raWxsKCk7CisKKyAgICByZXR1cm4gc3VjY2VzczsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAppbmRleCBlMDlhZGE0
MGFkZGI3Y2Q0NWMxYzQwMDRjYzk1NDNkMWUxOWNmZWVmLi4yMGJkZTI3NjIxYjBmNTBiNGRmMjNi
MDE0YWQ5MTBkNjdiN2ViN2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5j
cHAKQEAgLTUzNywyMyArNTM3LDkgQEAgc3RhdGljIE5QRXJyb3IgTlBOX0dldFZhbHVlKE5QUCBu
cHAsIE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1ZSkKICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICBjYXNlIE5QTlZUb29sa2l0OiB7Ci0jaWYgUExBVEZPUk0oR1RLKQotICAgICAg
ICAgICAqcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHZhbHVlKSA9IDI7Ci0jZWxzZQotICAg
ICAgICAgICBjb25zdCB1aW50MzJfdCBleHBlY3RlZEdUS1Rvb2xLaXRWZXJzaW9uID0gMjsKLQot
ICAgICAgICAgICAvLyBTZXQgdGhlIGV4cGVjdGVkIEdUSyB2ZXJzaW9uIGlmIHdlIGtub3cgdGhh
dCB0aGlzIHBsdWdpbiBuZWVkcyBpdCBvciBpZiB0aGUgcGx1Z2luIGNhbGwgdXMKLSAgICAgICAg
ICAgLy8gd2l0aCBhIG51bGwgaW5zdGFuY2UuIFRoZSBsYXR0ZXIgaXMgdGhlIGNhc2Ugd2l0aCBO
U1BsdWdpbldyYXBwZXIgcGx1Z2lucy4KLSAgICAgICAgICAgYm9vbCByZXF1aXJlc0dUS1Rvb2xL
aXRWZXJzaW9uOwotICAgICAgICAgICBpZiAoIW5wcCkKLSAgICAgICAgICAgICAgIHJlcXVpcmVz
R1RLVG9vbEtpdFZlcnNpb24gPSB0cnVlOwotICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gcGx1Z2luID0gTmV0c2NhcGVQbHVnaW46OmZyb21O
UFAobnBwKTsKLSAgICAgICAgICAgICAgIHJlcXVpcmVzR1RLVG9vbEtpdFZlcnNpb24gPSBwbHVn
aW4tPnF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrczo6UmVxdWlyZXNHVEtUb29sS2l0KTsK
LSAgICAgICAgICAgfQotCi0gICAgICAgICAgICpyZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4o
dmFsdWUpID0gcmVxdWlyZXNHVEtUb29sS2l0VmVyc2lvbiA/IGV4cGVjdGVkR1RLVG9vbEtpdFZl
cnNpb24gOiAwOwotI2VuZGlmCisgICAgICAgICAgIC8vIEd0ayBiYXNlZCBwbHVnaW5zIG5lZWQg
dG8gYmUgYXNzdXJlZCBhYm91dCB0aGUgdG9vbGtpdCB2ZXJzaW9uLgorICAgICAgICAgICBjb25z
dCB1aW50MzJfdCBleHBlY3RlZEd0a1Rvb2xLaXRWZXJzaW9uID0gMjsKKyAgICAgICAgICAgKnJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZSkgPSBleHBlY3RlZEd0a1Rvb2xLaXRWZXJz
aW9uOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL3F0L1BsdWdpbk1haW5RdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9xdC9QbHVnaW5NYWlu
UXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNkNWM5M2I1N2IzYjllY2U1NDM2YzA2ZDE3NjQzM2JkMjY5YTkx
ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9xdC9QbHVnaW5NYWluUXQuY3Bw
CkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIFVuaXZlcnNpdHkgb2Yg
U3plZ2VkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlIDxRTGlicmFyeT4KKyNpbmNsdWRlIDxRdEdsb2JhbD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CitRX0RFQ0xfSU1QT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpbihpbnQgYXJn
YywgY2hhcioqIGFyZ3YpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7
CisgICAgcmV0dXJuIFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW4oYXJnYywgYXJndik7Cit9CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWJlNDhi
ZjJiZWFjMTMxNzE0YWU2YmU2Y2JlOWM2ODNhZWE0NmY1Ny4uZjgyMDFjMjBhZGNiNzE1ZGJjMTE1
MmJmMzFiNTZjMTU3Y2VlNTczYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAyLTIyICBCYWxhenMgS2VsZW1l
biAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdW1dLMl0gU2V0IHVwIHBsdWdp
biBwcm9jZXNzIG9uIFVuaXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcyMTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBxbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZjogUmVlbmFibGUg
cGx1Z2lucworICAgICAgICBhbmQgdHVybiBvbiBwbHVnaW4gcHJvY2Vzcy4KKwogMjAxMi0wMi0y
MiAgS2FsZXYgTGVtYmVyICA8a2FsZXZsZW1iZXJAZ21haWwuY29tPgogCiAgICAgICAgIEV4cGxp
Y2l0bHkgaW5jbHVkZSB1bmlzdGQuaCBpbiBUZXN0TmV0c2NhcGVQbHVnSW4gZm9yIEdDQyA0LjcK
ZGlmZiAtLWdpdCBhL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmIGIv
VG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYKaW5kZXggZWE3MzFlNDhl
NjE5NjRmYzhiZDA1MDc3YTc0YzQyZDZiZmI0ZmY3Yy4uYmNjNjA4OTEyYWNkMjMyOTU4ODVkNDZj
NzU1NjY0NmVkY2I2NjE0NCAxMDA2NDQKLS0tIGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJl
cy9mZWF0dXJlcy5wcmYKKysrIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJl
cy5wcmYKQEAgLTExOSwxMiArMTE5LDExIEBAIGhhdmVRdCg0KTp1bml4OiFtYWM6IWVtYmVkZGVk
IHsKICAgICBub193ZWJraXQyIHsKICAgICAgICAgREVGSU5FUyArPSBQTFVHSU5fQVJDSElURUNU
VVJFX1VOU1VQUE9SVEVEPTEKICAgICB9IGVsc2UgewotICAgICAgICAjIERpc2FibGUgeGxpYiBw
bHVnaW5zIHdoaWxlIHRoZXkncmUgaW4tcHJvY2VzcywgYmVjYXVzZSB0aGV5IGNyYXNoCi0gICAg
ICAgICMgYXMgc29vbiBhcyBhbiBpbnN0YWxsZWQgbnBhcGkgcGx1Z2luIHVzZXMgUXQgNC4KLSAg
ICAgICAgZmFsc2U6Y29udGFpbnMoUVRfQ09ORklHLCB4Y2IteGxpYikgeworICAgICAgICBjb250
YWlucyhRVF9DT05GSUcsIHhjYi14bGliKSB7CiAgICAgICAgICAgICBDT05GSUcgKz0gcGx1Z2lu
X2JhY2tlbmRfeGxpYgogICAgICAgICAgICAgREVGSU5FUyArPSBQTFVHSU5fQVJDSElURUNUVVJF
X1gxMT0xIFwKLSAgICAgICAgICAgICAgICAgICAgICAgUExVR0lOX0FSQ0hJVEVDVFVSRV9VTlNV
UFBPUlRFRD0wCisgICAgICAgICAgICAgICAgICAgICAgIFBMVUdJTl9BUkNISVRFQ1RVUkVfVU5T
VVBQT1JURUQ9MCBcCisgICAgICAgICAgICAgICAgICAgICAgIEVOQUJMRV9QTFVHSU5fUFJPQ0VT
Uz0xCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBERUZJTkVTICs9IFBMVUdJTl9BUkNI
SVRFQ1RVUkVfVU5TVVBQT1JURUQ9MQogICAgICAgICB9CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cg
Yi9DaGFuZ2VMb2cKaW5kZXggMmQ0MmY4NmIzMmNjNmVmNzY0M2NhOGI3MzM4MDdkYjA1ZThhMjFi
Ny4uNjVlODMxYzZlYzU4MDg0YjEzMDlmYjFiYjk1ZTRmMDhjZjZiOWM3ZSAxMDA2NDQKLS0tIGEv
Q2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAyLTIyICBC
YWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdW1dLMl0g
U2V0IHVwIHBsdWdpbiBwcm9jZXNzIG9uIFVuaXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvUXRXZWJLaXQucHJvOiBBZGQgUGx1Z2luUHJv
Y2VzcyBzdWJwcm9qZWN0LgorCiAyMDEyLTAyLTIyICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBDbGVhbiBidWlsZCBpcyBicm9rZW4gd2hl
biB1c2luZyBtYWtlIC1qCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130813</attachid>
            <date>2012-03-08 06:11:56 -0800</date>
            <delta_ts>2012-03-08 06:49:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72121-20120308151154.patch</filename>
            <type>text/plain</type>
            <size>41750</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2YxY2Q0Y2JiMTQ2MzZk
MzA1ODFhODFiNGMwODdiM2RlYTE0MmJlNS4uYzM4NWIzMTIzMmFmNWJhZjBhZDdmMmYzMmQxOTBj
NDI5MGZmMzZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAxMi0wMy0wOCAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIFNl
dCB1cCBwbHVnaW4gcHJvY2VzcyBvbiBVbml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MjEyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNldHVwIHBsdWdpbiBwcm9jZXNzIGZvciBRdCBhbmQgbW92ZSB0
aGUgdGFzayBvZiBxdWVyeWluZyB0aGUgcGx1Z2lucworICAgICAgICB0byB0aGlzIHByb2Nlc3Mg
aW4gb3JkZXIgdG8gYXZvaWQgY3Jhc2hlcyBkdWUgdG8gcGx1Z2luIGJ1Z3Mgb3IgbGlicmFyeQor
ICAgICAgICBpbmNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzLnBybzogQWRkZWQuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9j
ZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3NNYWluR3RrKQorICAgICAgICAqIFBsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vz
c01haW5RdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVHdGspOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzTWFpbik6CisgICAgICAgIEltcGxlbWVudCBlbnRyeSBwb2ludCBv
ZiB0aGUgcGx1Z2luIHByb2Nlc3MuCisgICAgICAgIEhhbmRsZSAtc2NhblBsdWdpbiBjb21tYW5k
IGxpbmUgc3dpdGNoOiBwcm9kdWNlIG1ldGEgZGF0YQorICAgICAgICBvZiBwbHVnaW4gb24gc3Rh
bmRhcmQgb3V0cHV0IGFuZCB0ZXJtaW5hdGUuIE1vdmUgR3RrIGluaXRpYWxpemF0aW9uCisgICAg
ICAgIGhhY2sgdG8gdGhlcmUuCisKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
TW9kdWxlOjp0cnlMb2FkKToKKyAgICAgICAgR2V0IHJpZCBvZiB0aGUgR3RrIGluaXRpYWxpemF0
aW9uIGhhY2suIFdlIGRvIG5vdCBuZWFkIGl0IGhlcmUgYW55bW9yZS4KKworICAgICAgICAqIFNo
YXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmg6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoTmV0c2NhcGVQbHVnaW5Nb2R1bGUpOgorICAgICAgICAqIFNoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnBhcnNlTUlNRURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4pOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBs
dWdpbkluZm8pOgorICAgICAgICBHZXQgcGx1Z2luIG1ldGEgZGF0YSB2aWEgUGx1Z2luUHJvY2Vz
c3Byb3h5LiBJZiBhIGZhaWx1cmUKKyAgICAgICAgaGFwcGVuZWQgd2UgaWdub3JlIHRvIHVzZSB0
aGUgcGx1Z2luLiBSZW1vdmUgdGhlIGNvbmNlcHQKKyAgICAgICAgb2Ygc3Rkb3V0IHJlZGlyZWN0
aW9uIHNpbmNlIHdlIGNhbiBjb250cm9sIGl0IHdoZW4gbGF1bmNoaW5nCisgICAgICAgIHRoZSBw
cm9jZXNzLgorCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjpkZXRlcm1p
bmVRdWlya3MpOgorICAgICAgICAoV2ViS2l0Ojp0cnVuY2F0ZU5ld0xpbmVzKToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNjYW5QbHVnaW4pOgorICAgICAgICBQcm9k
dWNlIHBsdWdpbiBtZXRhIGRhdGEgb24gc3RhbmRhcmQgb3V0cHV0LgorCisgICAgICAgICogU2hh
cmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpwYWludCk6CisgICAgICAgIEFkZGVkIGltcGxlbWVudGF0aW9uIGZvciB0aGUgb3Zl
cnJpZGUgd2l0aCB0aGUgc2NhbGUgZmFjdG9yIGJlY2F1c2UKKyAgICAgICAgaXQgaXMgY2FsbGVk
IGZyb20gUGx1Z2luUHJveHkuIEl0IGRvZXMgbm90IGFjdHVhbGx5IGhhbmRsZSB0aGUgY2FzZQor
ICAgICAgICB3aGVuIHRoZSBzY2FsZSBmYWN0b3IgaXMgbm90IDEuIEhvd2V2ZXIgaXQncyBvayBi
ZWNhdXNlIGl0IGNhbiBvbmx5CisgICAgICAgIGhhcHBlbiBvbiBNYWMgY3VycmVudGx5LgorCisg
ICAgICAgICogVGFyZ2V0LnByaToKKworICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9j
ZXNzTGF1bmNoZXIuaDoKKyAgICAgICAgKFByb2Nlc3NMYXVuY2hlcik6CisgICAgICAgICogVUlQ
cm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpmaW5kV2ViS2l0UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpQcm9jZXNzTGF1bmNoZXI6OmV4ZWN1dGFibGVQYXRoKToKKyAgICAgICAgKFdlYktpdDo6
UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1
bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNz
TGF1bmNoZXI6OmV4ZWN1dGFibGVQYXRoKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIEZhY3RvcmVk
IHRoZSBleGVjdXRhYmxlIHBhdGggZGV0ZXJtaW5hdGlvbiBpbnRvIGEgc3RhdGljIG1ldGhvZAor
ICAgICAgICB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoUmF3UGx1Z2luTWV0YURhdGEpOgorICAgICAgICAoUGx1Z2luUHJvY2Vzc1Byb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQ
bHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3NQcm94eTo6c2NhblBsdWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMv
cXQvUGx1Z2luUHJvY2Vzc1Byb3h5UXQuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2luKToK
KyAgICAgICAgTGF1bmNoIHBsdWdpbiBwcm9jZXNzIGFuZCBwYXJzZSBpdCdzIG91dHB1dCB0byBn
ZXQgdGhlIG1ldGEgZGF0YQorICAgICAgICBmb3IgdGhlIHBsdWdpbi4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5QTl9HZXRWYWx1ZSk6CisgICAgICAgIENoYW5nZWQgYWNjb3JkaW5nIHRv
IHRoZSByZW1vdmUgb2YgdGhlIGZsYXNoIGhhY2suIERvIG5vdCB0cnkKKyAgICAgICAgdG8gZGVj
aWRlIHdoZXRoZXIgdGhlIHBsdWdpbiBuZWVkcyBHdGsgYnkgaXQncyBuYW1lIGJ1dCBpbnN0ZWFk
CisgICAgICAgIGFsd2F5cyBnZXQgYmFjayB0aGUgZXhwZWN0ZWQgR3RrIHZlcnNpb24gKDIpLiBP
bmx5IEd0ayBwbHVnaW5zCisgICAgICAgIHNob3VsZCBhc2sgZm9yIHRoaXMgYW55d2F5LgorCisg
ICAgICAgICogcXQvUGx1Z2luTWFpblF0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAuCisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAobWFpbik6CisKIDIwMTItMDMtMDcgIERpbnUgSmFjb2IgIDxk
aW51LmphY29iQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIEF1dGhlbnRpY2F0aW9uIGRpYWxv
ZyBkb2VzIG5vdCB3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvUXRXZWJLaXQucHJvIGIvU291cmNl
L1F0V2ViS2l0LnBybwppbmRleCAwMmZjOWUxYzdlYmUxZjczMTlkMDlkMTIxNWUyMDk4OTliNDUx
YTc0Li5iYmJmYzQxZTY4MTdiN2MwZDViZDVlMTNlYzlkM2NmZDQ3OWJhMWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvUXRXZWJLaXQucHJvCisrKyBiL1NvdXJjZS9RdFdlYktpdC5wcm8KQEAgLTQsNiAr
NCw4IEBACiAjIFNlZSAnVG9vbHMvcW1ha2UvUkVBRE1FJyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhl
IGJ1aWxkIHN5c3RlbQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK2xvYWQoZmVhdHVyZXMpCisKIFRFTVBMQVRF
ID0gc3ViZGlycwogQ09ORklHICs9IG9yZGVyZWQKIApAQCAtMTMsNiArMTUsMTAgQEAgU1VCRElS
UyArPSBhcGkKICFub193ZWJraXQyIHsKICAgICB3ZWJwcm9jZXNzLmZpbGUgPSBXZWJLaXQyL1dl
YlByb2Nlc3MucHJvCiAgICAgU1VCRElSUyArPSB3ZWJwcm9jZXNzCisgICAgY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX1BMVUdJTl9QUk9DRVNTPTEpIHsKKyAgICAgICAgcGx1Z2lucHJvY2Vzcy5m
aWxlID0gV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzLnBybworICAgICAgICBTVUJESVJTICs9IHBsdWdp
bnByb2Nlc3MKKyAgICB9CiB9CiAKIGluY2x1ZGUoV2ViS2l0L3F0L2RvY3MvZG9jcy5wcmkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmFtCmluZGV4IDQ1YzRmZjM0ZmFiNGVkZTY4NWRmYTljZjM4ZDE4NGFkYjY2
ODBkZDQuLjg3OGU4ZmU5ZWI4Zjc4MDA1NGNkNWEzM2I3MWFjZWUyM2NiNGM5NDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtCkBAIC0xMzUyLDYgKzEzNTIsNyBAQCBQcm9ncmFtc19XZWJLaXRQbHVnaW5Q
cm9jZXNzX0NQUEZMQUdTID0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZCBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMgXAogCS1JJChzcmNk
aXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlLyBcCisJLUkkKHNyY2Rp
cikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyLyBcCiAJLUkkKHNyY2RpcikvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvIFwKQEAgLTEzNjMsNiArMTM2NCw3IEBAIFByb2dy
YW1zX1dlYktpdFBsdWdpblByb2Nlc3NfQ1BQRkxBR1MgPSBcCiAJLURCVUlMRElOR19XRUJLSVQg
XAogCS1ER1RLX0FQSV9WRVJTSU9OXzI9MSBcCiAJLURFTkFCTEVfUExVR0lOX1BST0NFU1M9MSBc
CisJLURMSUJFWEVDRElSPVwiIiQobGliZXhlY2RpcikiXCIgXAogCSQoZ2xvYmFsX2NwcGZsYWdz
KSBcCiAJJCh3ZWJjb3JlX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlZ3RrX2NwcGZsYWdzKSBcCkBA
IC0xNDczLDYgKzE0NzUsOSBAQCB3ZWJraXQyX3BsdWdpbl9wcm9jZXNzX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViTW91c2VFdmVudEd0ay5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcCBcCiAJU291cmNl
L1dlYktpdDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcCBcCisJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHAgXAorCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcCBc
CisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94
eUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggXAogCVNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVVdGlsaXRpZXMu
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MucHJvIGIvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDViOTg2ZTExMGNlMzI0
ZDQ5MTk3ZjY2MGFiNDZiYWQ0ZDZjM2Y1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MucHJvCkBAIC0wLDAgKzEsMjUgQEAKKyMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQ
cm9qZWN0IGZpbGUgZm9yIHRoZSBXZWJLaXQyIHBsdWdpbiBwcm9jZXNzIGJpbmFyeQorIworIyBT
ZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBzeXN0
ZW0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitURU1QTEFURSA9IGFwcAorCitUQVJHRVQgPSBRdFdlYlBsdWdp
blByb2Nlc3MKK0RFU1RESVIgPSAkJHtST09UX0JVSUxEX0RJUn0vYmluCisKK1NPVVJDRVMgKz0g
cXQvUGx1Z2luTWFpblF0LmNwcAorCitJTkNMVURFUEFUSCA9ICQkUFdELy4uL0phdmFTY3JpcHRD
b3JlIFwKKyAgICAgICAgICAgICAgJCRJTkNMVURFUEFUSAorCitDT05GSUcgKz0gcXR3ZWJraXQK
KworSU5TVEFMTFMgKz0gdGFyZ2V0CisKK2lzRW1wdHkoSU5TVEFMTF9CSU5TKSB7CisgICAgdGFy
Z2V0LnBhdGggPSAkJFtRVF9JTlNUQUxMX0JJTlNdCit9IGVsc2UgeworICAgIHRhcmdldC5wYXRo
ID0gJCRJTlNUQUxMX0JJTlMKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcAppbmRleCA5OTJkNzQwNzUxMDRj
OGNiY2E2MTJmMWNkODk5ZTlhNTBlMzcxNDRkLi44NzBjMDFjMjc5NDZlYjJlNTAzNDE1MWIwOTg4
YzBlYjY2MDgzMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0
ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01haW5HdGsuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01haW5HdGsuaCIKIAorI2lu
Y2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgogI2luY2x1ZGUgPGdkay9nZGt4Lmg+CkBAIC01Mywx
MiArNTQsMjIgQEAgc3RhdGljIGludCB3ZWJraXRndGtYRXJyb3IoRGlzcGxheSogeGRpc3BsYXks
IFhFcnJvckV2ZW50KiBlcnJvcikKIAogV0tfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpbkd0
ayhpbnQgYXJnYywgY2hhciogYXJndltdKQogewotICAgIEFTU0VSVChhcmdjID09IDIpOworICAg
IEFTU0VSVChhcmdjID09IDIgfHwgYXJnYyA9PSAzKTsKKyAgICBib29sIHNjYW5QbHVnaW4gPSAh
c3RyY21wKGFyZ3ZbMV0sICItc2NhblBsdWdpbiIpOworICAgIEFTU0VSVChhcmdjID09IDIgfHwg
KGFyZ2MgPT0gMyAmJiBzY2FuUGx1Z2luKSk7CiAKICAgICBndGtfaW5pdCgmYXJnYywgJmFyZ3Yp
OwogCiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXpl
TWFpblRocmVhZCgpOworCisgICAgaWYgKHNjYW5QbHVnaW4pIHsKKyAgICAgICAgU3RyaW5nIHBs
dWdpblBhdGgoYXJndlsyXSk7CisgICAgICAgIGlmICghTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNj
YW5QbHVnaW4ocGx1Z2luUGF0aCkpCisgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwor
ICAgICAgICByZXR1cm4gRVhJVF9TVUNDRVNTOworICAgIH0KKwogICAgIFJ1bkxvb3A6OmluaXRp
YWxpemVNYWluUnVuTG9vcCgpOwogCiAgICAgLy8gUGx1Z2lucyBjYW4gcHJvZHVjZSBYIGVycm9y
cyB0aGF0IGFyZSBoYW5kbGVkIGJ5IHRoZSBHREsgWCBlcnJvciBoYW5kbGVyLCB3aGljaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFp
blF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01h
aW5RdC5jcHAKaW5kZXggZDNhMGVjM2UyNDU5NTZiOTg1MDBkNTY3ZTU2NWZhYTE1MDZhMDA1My4u
YzYyY2Y4YmQ2MDE3NDcwZWZhMzVlZTJlZTUxYmVhZjQyNmM5NWY3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3Bw
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBOb2tpYSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVW5pdmVyc2l0
eSBvZiBTemVnZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI0LDQ0ICsyNSw4MyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpbi5oIgogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9D
RVNTKQorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluLmgiCiAKLSNpbmNsdWRlICJDb21tYW5k
TGluZS5oIgorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luTW9kdWxlLmgiCiAjaW5jbHVkZSAiUGx1
Z2luUHJvY2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNs
dWRlIDxRQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UURlYnVnPgorI2luY2x1ZGUgPFFTdHJpbmdM
aXN0PgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSW5p
dGlhbGl6ZVRocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotI2RlZmluZSBTSE9XX0NSQVNIX1JFUE9SVEVS
IDEKKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotaW50IFBsdWdpblByb2Nlc3NNYWluKGNvbnN0IENv
bW1hbmRMaW5lJiBjb21tYW5kTGluZSkKK3N0YXRpYyB2b2lkIG1lc3NhZ2VIYW5kbGVyKFF0TXNn
VHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewotICAgIFN0cmluZyBzZXJ2aWNlTmFt
ZSA9IGNvbW1hbmRMaW5lWyJzZXJ2aWNlbmFtZSJdOwotICAgIGlmIChzZXJ2aWNlTmFtZS5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgaWYgKHR5cGUgPT0gUXRD
cml0aWNhbE1zZykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtZXNzYWdlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIERvIG5vdGhpbmcKK30KIAotI2lmICFT
SE9XX0NSQVNIX1JFUE9SVEVSCi0gICAgLy8gSW5zdGFsbHMgc2lnbmFsIGhhbmRsZXJzIHRoYXQg
ZXhpdCBvbiBhIGNyYXNoIHNvIHRoYXQgQ3Jhc2hSZXBvcnRlciBkb2VzIG5vdCBzaG93IHVwLgot
ICAgIHNpZ25hbChTSUdJTEwsIF9leGl0KTsKLSAgICBzaWduYWwoU0lHRlBFLCBfZXhpdCk7Ci0g
ICAgc2lnbmFsKFNJR0JVUywgX2V4aXQpOwotICAgIHNpZ25hbChTSUdTRUdWLCBfZXhpdCk7Ci0j
ZW5kaWYKK3N0YXRpYyBib29sIGluaXRpYWxpemVHdGsoKQoreworICAgIFFMaWJyYXJ5IGd0a0xp
YnJhcnkoUUxhdGluMVN0cmluZygibGliZ3RrLXgxMS0yLjAiKSwgMCk7CisgICAgaWYgKCFndGtM
aWJyYXJ5LmxvYWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHR5cGVkZWYgdm9pZCog
KCpndGtfaW5pdF9wdHIpKHZvaWQqLCB2b2lkKik7CisgICAgZ3RrX2luaXRfcHRyIGd0a0luaXQg
PSByZWludGVycHJldF9jYXN0PGd0a19pbml0X3B0cj4oZ3RrTGlicmFyeS5yZXNvbHZlKCJndGtf
aW5pdCIpKTsKKyAgICBpZiAoIWd0a0luaXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBn
dGtJbml0KDAsIDApOworICAgIHJldHVybiB0cnVlOworfQorCitpbnQgUGx1Z2luUHJvY2Vzc01h
aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIFFCeXRlQXJyYXkgc3VwcHJlc3NPdXRw
dXQgPSBxZ2V0ZW52KCJRVF9XRUJLSVRfU1VQUFJFU1NfV0VCX1BST0NFU1NfT1VUUFVUIik7Cisg
ICAgaWYgKCFzdXBwcmVzc091dHB1dC5pc0VtcHR5KCkgJiYgc3VwcHJlc3NPdXRwdXQgIT0gIjAi
KQorICAgICAgICBxSW5zdGFsbE1zZ0hhbmRsZXIobWVzc2FnZUhhbmRsZXIpOworCisgICAgUUFw
cGxpY2F0aW9uIGFwcChhcmdjLCBhcmd2KTsKKworICAgIC8vIFdvcmthcm91bmQgdGhlIGlzc3Vl
IHRoYXQgc29tZSB2ZXJzaW9ucyBvZiBmbGFzaCBkb2VzIG5vdCBpbml0aWFsaXplIEd0ayBwcm9w
ZXJseS4KKyAgICBpZiAoIWluaXRpYWxpemVHdGsoKSkKKyAgICAgICAgcmV0dXJuIEVYSVRfRkFJ
TFVSRTsKIAogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5pdGlh
bGl6ZU1haW5UaHJlYWQoKTsKKworICAgIGlmIChhcmdjIDw9IDEpCisgICAgICAgIHJldHVybiBF
WElUX0ZBSUxVUkU7CisKKyAgICBpZiAoYXBwLmFyZ3VtZW50cygpLmF0KDEpID09IFFMYXRpbjFT
dHJpbmcoIi1zY2FuUGx1Z2luIikpIHsKKyAgICAgICAgaWYgKGFyZ2MgIT0gMykKKyAgICAgICAg
ICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAgIFN0cmluZyBwbHVnaW5QYXRoKGFwcC5h
cmd1bWVudHMoKS5hdCgyKSk7CisgICAgICAgIGlmICghTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNj
YW5QbHVnaW4ocGx1Z2luUGF0aCkpCisgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwor
ICAgICAgICByZXR1cm4gRVhJVF9TVUNDRVNTOworICAgIH0KKwogICAgIFJ1bkxvb3A6OmluaXRp
YWxpemVNYWluUnVuTG9vcCgpOwogCisgICAgLy8gQ3JlYXRlIHRoZSBjb25uZWN0aW9uLgorICAg
IGJvb2wgaXNOdW1iZXIgPSBmYWxzZTsKKyAgICBpbnQgaWRlbnRpZmllciA9IGFwcC5hcmd1bWVu
dHMoKS5hdCgxKS50b0ludCgmaXNOdW1iZXIsIDEwKTsKKyAgICBpZiAoIWlzTnVtYmVyKQorICAg
ICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6c2hh
cmVkKCkuaW5pdGlhbGl6ZShpZGVudGlmaWVyLCBSdW5Mb29wOjptYWluKCkpOworCiAgICAgUnVu
TG9vcDo6cnVuKCk7CiAKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNw
cAppbmRleCBlNWY4ZGMyYTNmMmVmYTdkZThiNDEwOTkzMjZhZTA0Zjk1ZjQ1MTYzLi5jMTg3NGQ5
OTY2YTY2ZGQ5MzJlZDJkZmY5MjA3Y2JmODlkMzI1YmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5N
b2R1bGUuY3BwCkBAIC0xOTcsMTAgKzE5Nyw2IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6
OmxvYWQoKQogCiBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKCkKIHsKLSNpZiBQ
TFVHSU5fQVJDSElURUNUVVJFKFgxMSkKLSAgICBhcHBseVgxMVF1aXJrc0JlZm9yZUxvYWQoKTsK
LSNlbmRpZgotCiAgICAgbV9tb2R1bGUgPSBhZG9wdFB0cihuZXcgTW9kdWxlKG1fcGx1Z2luUGF0
aCkpOwogICAgIGlmICghbV9tb2R1bGUtPmxvYWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5Nb2R1bGUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luTW9kdWxlLmgKaW5kZXggZjgwYTBhMWEwYTMyYzA3MjFjZTZhYmZiNWZi
ZGQ1YjQwZDhhOTZiMi4uZTk2YmQyZDA0MmJjZWE0NTllY2IxYTRkZjg2MjZjZTYzNjgxMTk5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5Nb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oCkBAIC0zNSw2ICszNSw4IEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCitjbGFzcyBSYXdQbHVnaW5NZXRhRGF0YTsKKwogY2xhc3MgTmV0c2NhcGVQ
bHVnaW5Nb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBnZXRP
ckNyZWF0ZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwpAQCAtNjEsMTUgKzYzLDE3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgYm9vbCBjcmVhdGVQbHVnaW5NSU1FVHlwZXNQcmVmZXJlbmNlcyhj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwogI2VuZGlmCiAKKyNpZiBQTFVHSU5fQVJDSElURUNU
VVJFKFgxMSkKKyAgICBzdGF0aWMgYm9vbCBzY2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBOZXRzY2FwZVBsdWdpbk1v
ZHVsZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwogCiAgICAgdm9pZCBkZXRlcm1pbmVRdWly
a3MoKTsKIAogI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgIHZvaWQgYXBwbHlYMTFR
dWlya3NCZWZvcmVMb2FkKCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0TUlNRURlc2NyaXB0aW9uKGNv
bnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uLCBQbHVnaW5Nb2R1bGVJbmZvJik7Ci0gICAgYm9v
bCBnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKFBsdWdpbk1vZHVsZUluZm8mKTsKKyAgICBi
b29sIGdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4oUmF3UGx1Z2luTWV0YURhdGEmKTsKICNl
bmRpZgogCiAgICAgYm9vbCB0cnlHZXRTaXRlc1dpdGhEYXRhKFZlY3RvcjxTdHJpbmc+Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0
c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcAppbmRleCA4NjY4MzNjNjQ2
MTFkMTJkZDdlMDUxYzdmMDliNTRhZTg4ZjU5MzY5Li4yZWM4ZWVmNTc0NDZkMDUyNGVlMmMxMTEz
NTZiNTRmM2EzNGI5MTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgx
MS5jcHAKQEAgLTI4LDc2ICsyOCwyOSBAQAogCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW5Nb2R1
bGUuaCIKIAorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIk5ldHNj
YXBlQnJvd3NlckZ1bmNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0KLSNp
ZiBQTEFURk9STShRVCkKLSNpbmNsdWRlIDxRTGlicmFyeT4KLSNlbmRpZgotCisjaW5jbHVkZSA8
ZXJybm8uaD4KICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5j
bHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3RmL093
bkFycmF5UHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25BcnJheVB0ci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1jbGFzcyBTdGRvdXREZXZOdWxsUmVkaXJlY3RvciB7Ci1wdWJsaWM6
Ci0gICAgU3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3IoKTsKLSAgICB+U3Rkb3V0RGV2TnVsbFJlZGly
ZWN0b3IoKTsKLQotcHJpdmF0ZToKLSAgICBpbnQgbV9zYXZlZFN0ZG91dDsKLX07Ci0KLVN0ZG91
dERldk51bGxSZWRpcmVjdG9yOjpTdGRvdXREZXZOdWxsUmVkaXJlY3RvcigpCi0gICAgOiBtX3Nh
dmVkU3Rkb3V0KC0xKQotewotICAgIGludCBuZXdTdGRvdXQgPSBvcGVuKCIvZGV2L251bGwiLCBP
X1dST05MWSk7Ci0gICAgaWYgKG5ld1N0ZG91dCA9PSAtMSkKLSAgICAgICAgcmV0dXJuOwotICAg
IG1fc2F2ZWRTdGRvdXQgPSBkdXAoU1RET1VUX0ZJTEVOTyk7Ci0gICAgZHVwMihuZXdTdGRvdXQs
IFNURE9VVF9GSUxFTk8pOwotfQotCi1TdGRvdXREZXZOdWxsUmVkaXJlY3Rvcjo6flN0ZG91dERl
dk51bGxSZWRpcmVjdG9yKCkKLXsKLSAgICBpZiAobV9zYXZlZFN0ZG91dCAhPSAtMSkKLSAgICAg
ICAgZHVwMihtX3NhdmVkU3Rkb3V0LCBTVERPVVRfRklMRU5PKTsKLX0KLQotI2lmIFBMQVRGT1JN
KFFUKQotc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUdUSygpCi17Ci0gICAgUUxpYnJhcnkgbGlicmFy
eShRTGF0aW4xU3RyaW5nKCJsaWJndGsteDExLTIuMC5zby4wIikpOwotICAgIGlmIChsaWJyYXJ5
LmxvYWQoKSkgewotICAgICAgICB0eXBlZGVmIHZvaWQgKigqZ3RrX2luaXRfY2hlY2tfcHRyKShp
bnQqLCBjaGFyKioqKTsKLSAgICAgICAgZ3RrX2luaXRfY2hlY2tfcHRyIGd0a0luaXRDaGVjayA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Z3RrX2luaXRfY2hlY2tfcHRyPihsaWJyYXJ5LnJlc29sdmUoImd0
a19pbml0X2NoZWNrIikpOwotICAgICAgICAvLyBOT1RFOiBXZSdyZSB1c2luZyBndGtfaW5pdF9j
aGVjaygpIHNpbmNlIGd0a19pbml0KCkgY2FsbHMgZXhpdCgpIG9uIGZhaWx1cmUuCi0gICAgICAg
IGlmIChndGtJbml0Q2hlY2spCi0gICAgICAgICAgICAodm9pZCkgZ3RrSW5pdENoZWNrKDAsIDAp
OwotICAgIH0KLX0KLSNlbmRpZgotCi12b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjphcHBseVgx
MVF1aXJrc0JlZm9yZUxvYWQoKQorc3RhdGljIHZvaWQgcGFyc2VNSU1FRGVzY3JpcHRpb24oY29u
c3QgU3RyaW5nJiBtaW1lRGVzY3JpcHRpb24sIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiYgcmVzdWx0
KQogewotI2lmIFBMQVRGT1JNKFFUKQotICAgIGlmIChtX3BsdWdpblBhdGguY29udGFpbnMoIm5w
d3JhcHBlciIpIHx8IG1fcGx1Z2luUGF0aC5jb250YWlucygiZmxhc2hwbGF5ZXIiKSkgewotICAg
ICAgICBpbml0aWFsaXplR1RLKCk7Ci0gICAgICAgIG1fcGx1Z2luUXVpcmtzLmFkZChQbHVnaW5R
dWlya3M6OlJlcXVpcmVzR1RLVG9vbEtpdCk7Ci0gICAgfQotI2VuZGlmCi19CisgICAgQVNTRVJU
X0FSRyhyZXN1bHQsIHJlc3VsdC5pc0VtcHR5KCkpOwogCi12b2lkIE5ldHNjYXBlUGx1Z2luTW9k
dWxlOjpzZXRNSU1FRGVzY3JpcHRpb24oY29uc3QgU3RyaW5nJiBtaW1lRGVzY3JpcHRpb24sIFBs
dWdpbk1vZHVsZUluZm8mIHBsdWdpbikKLXsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKICAg
ICBtaW1lRGVzY3JpcHRpb24ubG93ZXIoKS5zcGxpdChVQ2hhcignOycpLCBmYWxzZSwgdHlwZXMp
OwotICAgIHBsdWdpbi5pbmZvLm1pbWVzLnJlc2VydmVDYXBhY2l0eSh0eXBlcy5zaXplKCkpOwor
ICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHR5cGVzLnNpemUoKSk7CiAKICAgICBz
aXplX3QgbWltZUluZm9Db3VudCA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0eXBl
cy5zaXplKCk7ICsraSkgewpAQCAtMTA2LDggKzU5LDggQEAgdm9pZCBOZXRzY2FwZVBsdWdpbk1v
ZHVsZTo6c2V0TUlNRURlc2NyaXB0aW9uKGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uLCBQ
bHUKICAgICAgICAgaWYgKG1pbWVUeXBlUGFydHMuc2l6ZSgpIDw9IDApCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICBwbHVnaW4uaW5mby5taW1lcy51bmNoZWNrZWRBcHBlbmQoTWlt
ZUNsYXNzSW5mbygpKTsKLSAgICAgICAgTWltZUNsYXNzSW5mbyYgbWltZUluZm8gPSBwbHVnaW4u
aW5mby5taW1lc1ttaW1lSW5mb0NvdW50KytdOworICAgICAgICByZXN1bHQudW5jaGVja2VkQXBw
ZW5kKE1pbWVDbGFzc0luZm8oKSk7CisgICAgICAgIE1pbWVDbGFzc0luZm8mIG1pbWVJbmZvID0g
cmVzdWx0W21pbWVJbmZvQ291bnQrK107CiAgICAgICAgIG1pbWVJbmZvLnR5cGUgPSBtaW1lVHlw
ZVBhcnRzWzBdOwogCiAgICAgICAgIGlmIChtaW1lVHlwZVBhcnRzLnNpemUoKSA+IDEpCkBAIC0x
MTgsMTMgKzcxLDEwIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNldE1JTUVEZXNjcmlw
dGlvbihjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlwdGlvbiwgUGx1CiAgICAgfQogfQogCi1ib29s
IE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKFBsdWdp
bk1vZHVsZUluZm8mIHBsdWdpbikKK2Jvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdp
bkluZm9Gb3JMb2FkZWRQbHVnaW4oUmF3UGx1Z2luTWV0YURhdGEmIG1ldGFEYXRhKQogewogICAg
IEFTU0VSVChtX2lzSW5pdGlhbGl6ZWQpOwogCi0gICAgcGx1Z2luLnBhdGggPSBtX3BsdWdpblBh
dGg7Ci0gICAgcGx1Z2luLmluZm8uZmlsZSA9IHBhdGhHZXRGaWxlTmFtZShtX3BsdWdpblBhdGgp
OwotCiAgICAgTW9kdWxlKiBtb2R1bGUgPSBtX21vZHVsZS5nZXQoKTsKICAgICBOUFBfR2V0VmFs
dWVQcm9jUHRyIE5QUF9HZXRWYWx1ZSA9IG1vZHVsZS0+ZnVuY3Rpb25Qb2ludGVyPE5QUF9HZXRW
YWx1ZVByb2NQdHI+KCJOUF9HZXRWYWx1ZSIpOwogICAgIGlmICghTlBQX0dldFZhbHVlKQpAQCAt
MTM3LDQ3ICs4Nyw0NSBAQCBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZv
Rm9yTG9hZGVkUGx1Z2luKFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbgogICAgIGNoYXIqIGJ1ZmZl
cjsKICAgICBOUEVycm9yIGVycm9yID0gTlBQX0dldFZhbHVlKDAsIE5QUFZwbHVnaW5OYW1lU3Ry
aW5nLCAmYnVmZmVyKTsKICAgICBpZiAoZXJyb3IgPT0gTlBFUlJfTk9fRVJST1IpCi0gICAgICAg
IHBsdWdpbi5pbmZvLm5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlcik7CisgICAgICAgIG1l
dGFEYXRhLm5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlcik7CiAKICAgICBlcnJvciA9IE5Q
UF9HZXRWYWx1ZSgwLCBOUFBWcGx1Z2luRGVzY3JpcHRpb25TdHJpbmcsICZidWZmZXIpOwogICAg
IGlmIChlcnJvciA9PSBOUEVSUl9OT19FUlJPUikKLSAgICAgICAgcGx1Z2luLmluZm8uZGVzYyA9
IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyKTsKKyAgICAgICAgbWV0YURhdGEuZGVzY3JpcHRpb24g
PSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlcik7CiAKICAgICBTdHJpbmcgbWltZURlc2NyaXB0aW9u
ID0gU3RyaW5nOjpmcm9tVVRGOChOUF9HZXRNSU1FRGVzY3JpcHRpb24oKSk7CiAgICAgaWYgKG1p
bWVEZXNjcmlwdGlvbi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc2V0
TUlNRURlc2NyaXB0aW9uKG1pbWVEZXNjcmlwdGlvbiwgcGx1Z2luKTsKKyAgICBtZXRhRGF0YS5t
aW1lRGVzY3JpcHRpb24gPSBtaW1lRGVzY3JpcHRpb247CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
KwogYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcm
IHBsdWdpblBhdGgsIFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKIHsKLSAgICAvLyBUZW1wYXJh
cmlseSBzdXBwcmVzcyBzdGRvdXQgaW4gdGhpcyBmdW5jdGlvbiBhcyBwbHVnaW5zIHdpbGwgYmUg
bG9hZGVkIGFuZCBzaHV0ZG93biBhbmQgZGVidWcgaW5mbwotICAgIC8vIGlzIGxlYWtlZCB0byBs
YXlvdXQgdGVzdCBvdXRwdXQuCi0gICAgU3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3Igc3Rkb3V0RGV2
TnVsbFJlZGlyZWN0b3I7Ci0KLSAgICAvLyBXZSBhcmUgbG9hZGluZyB0aGUgcGx1Z2luIGhlcmUg
c2luY2UgaXQgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHN0YW5kYXJkaXplZCB3YXkgdG8KLSAgICAv
LyBnZXQgdGhlIG5lZWRlZCBpbmZvcm1hdGlvbnMgZnJvbSBhIFVOSVggcGx1Z2luIHdpdGhvdXQg
bG9hZGluZyBpdC4KLSAgICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IHBsdWdpbk1vZHVs
ZSA9IE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRPckNyZWF0ZShwbHVnaW5QYXRoKTsKLSAgICBp
ZiAoIXBsdWdpbk1vZHVsZSkKKyAgICBSYXdQbHVnaW5NZXRhRGF0YSBtZXRhRGF0YTsKKyAgICBp
ZiAoIVBsdWdpblByb2Nlc3NQcm94eTo6c2NhblBsdWdpbihwbHVnaW5QYXRoLCBtZXRhRGF0YSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHBsdWdpbk1vZHVsZS0+aW5jcmVtZW50TG9h
ZENvdW50KCk7Ci0gICAgYm9vbCByZXR1cm5WYWx1ZSA9IHBsdWdpbk1vZHVsZS0+Z2V0UGx1Z2lu
SW5mb0ZvckxvYWRlZFBsdWdpbihwbHVnaW4pOwotICAgIHBsdWdpbk1vZHVsZS0+ZGVjcmVtZW50
TG9hZENvdW50KCk7CisgICAgcGx1Z2luLnBhdGggPSBwbHVnaW5QYXRoOworICAgIHBsdWdpbi5p
bmZvLmZpbGUgPSBwYXRoR2V0RmlsZU5hbWUocGx1Z2luUGF0aCk7CisgICAgcGx1Z2luLmluZm8u
bmFtZSA9IG1ldGFEYXRhLm5hbWU7CisgICAgcGx1Z2luLmluZm8uZGVzYyA9IG1ldGFEYXRhLmRl
c2NyaXB0aW9uOworICAgIHBhcnNlTUlNRURlc2NyaXB0aW9uKG1ldGFEYXRhLm1pbWVEZXNjcmlw
dGlvbiwgcGx1Z2luLmluZm8ubWltZXMpOwogCi0gICAgcmV0dXJuIHJldHVyblZhbHVlOworICAg
IHJldHVybiB0cnVlOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpkZXRlcm1pbmVR
dWlya3MoKQogewogI2lmIENQVShYODZfNjQpCi0gICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW47
Ci0gICAgaWYgKCFnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKHBsdWdpbikpCisgICAgUmF3
UGx1Z2luTWV0YURhdGEgbWV0YURhdGE7CisgICAgaWYgKCFnZXRQbHVnaW5JbmZvRm9yTG9hZGVk
UGx1Z2luKG1ldGFEYXRhKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPE1pbWVDbGFz
c0luZm8+IG1pbWVUeXBlcyA9IHBsdWdpbi5pbmZvLm1pbWVzOworICAgIFZlY3RvcjxNaW1lQ2xh
c3NJbmZvPiBtaW1lVHlwZXM7CisgICAgcGFyc2VNSU1FRGVzY3JpcHRpb24obWV0YURhdGEubWlt
ZURlc2NyaXB0aW9uLCBtaW1lVHlwZXMpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWlt
ZVR5cGVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChtaW1lVHlwZXNbaV0udHlwZSA9PSAi
YXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giKSB7CiAgICAgICAgICAgICBtX3BsdWdpblF1
aXJrcy5hZGQoUGx1Z2luUXVpcmtzOjpJZ25vcmVSaWdodENsaWNrSW5XaW5kb3dsZXNzTW9kZSk7
CkBAIC0xODcsNiArMTM1LDcyIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmRldGVybWlu
ZVF1aXJrcygpCiAjZW5kaWYKIH0KIAorc3RhdGljIFN0cmluZyB0cnVuY2F0ZVRvU2luZ2xlTGlu
ZShjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBBU1NFUlRfQVJHKHN0cmluZywgIXN0cmlu
Zy5pczhCaXQoKSk7CisKKyAgICB1bnNpZ25lZCBvbGRMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7
CisgICAgVUNoYXIqIGJ1ZmZlcjsKKyAgICBTdHJpbmcgc3RyaW5nQnVmZmVyKFN0cmluZ0ltcGw6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQob2xkTGVuZ3RoICsgMSwgYnVmZmVyKSk7CisKKyAgICB1bnNp
Z25lZCBuZXdMZW5naHQgPSAwOworICAgIGZvciAoY29uc3QgVUNoYXIqIGMgPSBzdHJpbmcuY2hh
cmFjdGVyczE2KCk7IGMgPCBzdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBvbGRMZW5ndGg7ICsrYykg
eworICAgICAgICBpZiAoKmMgIT0gVUNoYXIoJ1xuJykpCisgICAgICAgICAgICBidWZmZXJbbmV3
TGVuZ2h0KytdID0gKmM7CisgICAgfQorICAgIGJ1ZmZlcltuZXdMZW5naHQrK10gPSBVQ2hhcign
XG4nKTsKKworICAgIGlmIChuZXdMZW5naHQgPT0gb2xkTGVuZ3RoICsgMSkKKyAgICAgICAgcmV0
dXJuIHN0cmluZ0J1ZmZlcjsKKyAgICByZXR1cm4gU3RyaW5nKHN0cmluZ0J1ZmZlci5jaGFyYWN0
ZXJzMTYoKSwgbmV3TGVuZ2h0KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHB1dENoYXJUb1N0
ZE91dChjaGFyIGMpCit7CisgICAgaW50IHJlc3VsdDsKKyAgICB3aGlsZSgocmVzdWx0ID0gZnB1
dGMoYywgc3Rkb3V0KSkgPT0gRU9GICYmIGVycm5vID09IEVJTlRSKSB7IH0KKyAgICBBU1NFUlQo
cmVzdWx0ICE9IEVPRik7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNjYW5QbHVn
aW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQoreworICAgIC8vIFdlIGFyZSBsb2FkaW5nIHRo
ZSBwbHVnaW4gaGVyZSBzaW5jZSBpdCBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgc3RhbmRhcmRpemVk
IHdheSB0bworICAgIC8vIGdldCB0aGUgbmVlZGVkIGluZm9ybWF0aW9ucyBmcm9tIGEgVU5JWCBw
bHVnaW4gd2l0aG91dCBsb2FkaW5nIGl0LgorICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVs
ZT4gcGx1Z2luTW9kdWxlID0gTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldE9yQ3JlYXRlKHBsdWdp
blBhdGgpOworICAgIGlmICghcGx1Z2luTW9kdWxlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBwbHVnaW5Nb2R1bGUtPmluY3JlbWVudExvYWRDb3VudCgpOworICAgIFJhd1BsdWdpbk1l
dGFEYXRhIG1ldGFEYXRhOworICAgIGJvb2wgc3VjY2VzcyA9IHBsdWdpbk1vZHVsZS0+Z2V0UGx1
Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihtZXRhRGF0YSk7CisgICAgcGx1Z2luTW9kdWxlLT5kZWNy
ZW1lbnRMb2FkQ291bnQoKTsKKworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gV3JpdGUgZGF0YSB0byBzdGFuZGFyZCBvdXRwdXQgZm9yIHRoZSBVSSBw
cm9jZXNzLgorICAgIFN0cmluZyBvdXRwdXRbM10gPSB7CisgICAgICAgIHRydW5jYXRlVG9TaW5n
bGVMaW5lKG1ldGFEYXRhLm5hbWUpLAorICAgICAgICB0cnVuY2F0ZVRvU2luZ2xlTGluZShtZXRh
RGF0YS5kZXNjcmlwdGlvbiksCisgICAgICAgIHRydW5jYXRlVG9TaW5nbGVMaW5lKG1ldGFEYXRh
Lm1pbWVEZXNjcmlwdGlvbikKKyAgICB9OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAz
OyArK2kpIHsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBsaW5lID0gb3V0cHV0W2ldOworICAgICAg
ICBjb25zdCBjaGFyKiBjdXJyZW50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obGlu
ZS5jaGFyYWN0ZXJzMTYoKSk7CisgICAgICAgIGNvbnN0IGNoYXIqIGVuZCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGxpbmUuY2hhcmFjdGVyczE2KCkpICsgKGxpbmUubGVuZ3RoKCkg
KiBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnQgPCBlbmQpIHsKKyAgICAg
ICAgICAgIGludCByZXN1bHQ7CisgICAgICAgICAgICB3aGlsZSgocmVzdWx0ID0gZnB1dGMoKmN1
cnJlbnQsIHN0ZG91dCkpID09IEVPRiAmJiBlcnJubyA9PSBFSU5UUikgeyB9CisgICAgICAgICAg
ICBBU1NFUlQocmVzdWx0ICE9IEVPRik7CisgICAgICAgICAgICArK2N1cnJlbnQ7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBmZmx1c2goc3Rkb3V0KTsKKworICAgIHJldHVybiB0cnVlOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMVUdJTl9BUkNISVRFQ1RVUkUo
WDExKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1h
cFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAK
aW5kZXggMGM4YmUwNzJhNDYyZDYzZmMwNjI3MDhjMDFlYzVhNmZjMjFmZWQzYi4uNzc4YmNmY2Mx
Y2QyYzNkMjU5MGNiOGZmMzQxZjA4ZGM5ODc5MGNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlIDxRSW1hZ2U+CiAjaW5jbHVkZSA8UVBhaW50ZXI+CisjaW5jbHVkZSA8UXRHbG9iYWw+CiAj
aW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtNzEs
OCArNzIsMTMgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgSW50UG9pbnQmIGRzdFBvaW50LAogICAgIHBhaW50ZXItPmRyYXdJbWFn
ZShkc3RQb2ludCwgaW1hZ2UsIFFSZWN0KHNyY1JlY3QpKTsKIH0KIAotdm9pZCBTaGFyZWFibGVC
aXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgLypjb250ZXh0Ki8sIGZsb2F0IC8qc2NhbGVG
YWN0b3IqLywgY29uc3QgSW50UG9pbnQmIC8qZHN0UG9pbnQqLywgY29uc3QgSW50UmVjdCYgLypz
cmNSZWN0Ki8pCit2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgSW50UG9pbnQmIGRzdFBvaW50LCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0KQogeworICAgIGlmIChxRnV6enlDb21wYXJlKHNjYWxlRmFjdG9y
LCAxKSkgeworICAgICAgICBwYWludChjb250ZXh0LCBkc3RQb2ludCwgc3JjUmVjdCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NDY2Mz4uCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQu
cHJpCmluZGV4IDIyNjE2MGZiYzczZmEyMDA5NGI1MGRjMmU4NzUzYTJmMGRlNDYwNTYuLjBiYWQ2
Y2YyNmQ4ZjMzMGFiY2ExZTkwZTczYTNiZDViZjZjNGRkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMzQs
NiArMzQsNyBAQCBIRUFERVJTICs9IFwKICAgICBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBcCiAg
ICAgUGxhdGZvcm0vV29ya1F1ZXVlLmggXAogICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJv
bGxlclByb3h5LmggXAorICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJz
LmggXAogICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oIFwKICAgICBQbHVnaW5Qcm9j
ZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmggXAogICAgIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaCBc
CkBAIC0zNzksNiArMzgwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgUGxhdGZvcm0vV29ya1F1ZXVl
LmNwcCBcCiAgICAgUGxhdGZvcm0vcXQvTW9kdWxlUXQuY3BwIFwKICAgICBQbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgXAorICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcCBcCiAgICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNw
cCBcCiAgICAgUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgXAogICAgIFBs
dWdpblByb2Nlc3MvcXQvUGx1Z2luQ29udHJvbGxlclByb3h5UXQuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAppbmRleCAw
OWM1NTg5ZjM4ODgxNTBlNTkxY2I5ZjNlMDcxMzg0NTQyYzc5NzJmLi4wMjViZmNmOWRmMjRmMGEw
YWJjYmFmYzhiMTY0YjU3ODIyMjlhNGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCkBAIC02OSw2ICs2OSwxMCBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgYm9vbCBnZXRQcm9jZXNzVHlwZUZyb21TdHJpbmcoY29uc3QgY2hh
ciosIFByb2Nlc3NUeXBlJik7CiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICBz
dGF0aWMgU3RyaW5nIGV4ZWN1dGFibGVQYXRoKFByb2Nlc3NUeXBlKTsKKyNlbmRpZgorCiBwcml2
YXRlOgogICAgIFByb2Nlc3NMYXVuY2hlcihDbGllbnQqLCBjb25zdCBMYXVuY2hPcHRpb25zJiBs
YXVuY2hPcHRpb25zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
dW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCmluZGV4IDk0Y2FkNWZjNDQ4
MjBkYTE5OGRhODcxY2NiZDZmYTQ3ZTQzODliMmIuLjU1MDdmY2QxOTRlNjYyNTgzNDE2Nzg2MjM3
MWZiNjRjMzNiNDliNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVu
Y2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKQEAgLTc3LDEzICs3Nywx
MyBAQCBzdGF0aWMgdm9pZCBjaGlsZEZpbmlzaGVkRnVuY3Rpb24oR1BpZCwgZ2ludCBzdGF0dXMs
IGdwb2ludGVyIHVzZXJEYXRhKQogICAgIGNsb3NlKEdQT0lOVEVSX1RPX0lOVCh1c2VyRGF0YSkp
OwogfQogCi1zdGF0aWMgQ1N0cmluZyBmaW5kV2ViS2l0UHJvY2Vzcyhjb25zdCBjaGFyKiBwcm9j
ZXNzTmFtZSkKK3N0YXRpYyBTdHJpbmcgZmluZFdlYktpdFByb2Nlc3MoY29uc3QgY2hhciogcHJv
Y2Vzc05hbWUpCiB7CiAgICAgY29uc3QgY2hhciogZXhlY0RpcmVjdG9yeSA9IGdfZ2V0ZW52KCJX
RUJLSVRfRVhFQ19QQVRIIik7CiAgICAgaWYgKGV4ZWNEaXJlY3RvcnkpIHsKICAgICAgICAgU3Ry
aW5nIHByb2Nlc3NQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZpbGVuYW1lVG9TdHJp
bmcoZXhlY0RpcmVjdG9yeSksIHByb2Nlc3NOYW1lKTsKICAgICAgICAgaWYgKGZpbGVFeGlzdHMo
cHJvY2Vzc1BhdGgpKQotICAgICAgICAgICAgcmV0dXJuIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwcm9jZXNzUGF0aCk7CisgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc1BhdGg7CiAgICAgfQog
CiAgICAgc3RhdGljIGJvb2wgZ290RXhlY3V0YWJsZVBhdGggPSBmYWxzZTsKQEAgLTk5LDEwICs5
OSwxNSBAQCBzdGF0aWMgQ1N0cmluZyBmaW5kV2ViS2l0UHJvY2Vzcyhjb25zdCBjaGFyKiBwcm9j
ZXNzTmFtZSkKICAgICBpZiAoIWV4ZWN1dGFibGVQYXRoLmlzTnVsbCgpKSB7CiAgICAgICAgIFN0
cmluZyBwcm9jZXNzUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChleGVjdXRhYmxlUGF0
aCwgcHJvY2Vzc05hbWUpOwogICAgICAgICBpZiAoZmlsZUV4aXN0cyhwcm9jZXNzUGF0aCkpCi0g
ICAgICAgICAgICByZXR1cm4gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByb2Nlc3NQYXRoKTsK
KyAgICAgICAgICAgIHJldHVybiBwcm9jZXNzUGF0aDsKICAgICB9CiAKLSAgICByZXR1cm4gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmaWxlbmFtZVRv
U3RyaW5nKExJQkVYRUNESVIpLCBwcm9jZXNzTmFtZSkpOworICAgIHJldHVybiBwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoZmlsZW5hbWVUb1N0cmluZyhMSUJFWEVDRElSKSwgcHJvY2Vzc05hbWUp
OworfQorCitTdHJpbmcgUHJvY2Vzc0xhdW5jaGVyOjpleGVjdXRhYmxlUGF0aChQcm9jZXNzVHlw
ZSB0eXBlKQoreworICAgIHJldHVybiBmaW5kV2ViS2l0UHJvY2Vzcyh0eXBlID09IFByb2Nlc3NM
YXVuY2hlcjo6V2ViUHJvY2VzcyA/IGdXZWJLaXRXZWJQcm9jZXNzTmFtZSA6IGdXZWJLaXRQbHVn
aW5Qcm9jZXNzTmFtZSk7CiB9CiAKIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNz
KCkKQEAgLTExNiw3ICsxMjEsNyBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vz
cygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDU3RyaW5nIGJpbmFyeVBhdGggPSBm
aW5kV2ViS2l0UHJvY2VzcyhtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc0xh
dW5jaGVyOjpXZWJQcm9jZXNzID8gZ1dlYktpdFdlYlByb2Nlc3NOYW1lIDogZ1dlYktpdFBsdWdp
blByb2Nlc3NOYW1lKTsKKyAgICBDU3RyaW5nIGJpbmFyeVBhdGggPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZXhlY3V0YWJsZVBhdGgobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlKSk7CiAg
ICAgR093blB0cjxnY2hhcj4gc29ja2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBzb2NrZXRzWzBd
KSk7CiAgICAgY2hhciogYXJndlszXTsKICAgICBhcmd2WzBdID0gY29uc3RfY2FzdDxjaGFyKj4o
YmluYXJ5UGF0aC5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAKaW5kZXggOGU4MjYyMDYzNjdl
ZWQ4ZWIxYzI1Y2UyZjRiNDU2NGIwOGY3NGEwOC4uZWQxMDgxOTNmMTQyMmFiNTYyOTM5MzRhMTkx
NWJmNDAyYTY2OTNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5j
aGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5j
bHVkZSA8UURlYnVnPgorI2luY2x1ZGUgPFFEaXI+CiAjaW5jbHVkZSA8UUZpbGU+CiAjaW5jbHVk
ZSA8UUxvY2FsU2VydmVyPgogI2luY2x1ZGUgPFFNZXRhVHlwZT4KQEAgLTczLDYgKzc0LDE1IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorU3RyaW5n
IFByb2Nlc3NMYXVuY2hlcjo6ZXhlY3V0YWJsZVBhdGgoUHJvY2Vzc1R5cGUgdHlwZSkKK3sKKyAg
ICBRTGF0aW4xU3RyaW5nIGJhc2VOYW1lKHR5cGUgPT0gV2ViUHJvY2VzcyA/IFFTdHJpbmdMaXRl
cmFsKCJRdFdlYlByb2Nlc3MiKSA6IFFTdHJpbmdMaXRlcmFsKCJRdFdlYlBsdWdpblByb2Nlc3Mi
KSk7CisgICAgUVN0cmluZyBleHBlY3RlZFBhdGggPSBRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNh
dGlvbkRpclBhdGgoKSArIFFEaXI6OnNlcGFyYXRvcigpICsgYmFzZU5hbWU7CisgICAgaWYgKFFG
aWxlOjpleGlzdHMoZXhwZWN0ZWRQYXRoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZyhleHBlY3Rl
ZFBhdGgpOyAgICAKKyAgICByZXR1cm4gU3RyaW5nKFFTdHJpbmcoYmFzZU5hbWUpKTsKK30KKwog
Y2xhc3MgUXRXZWJQcm9jZXNzIDogcHVibGljIFFQcm9jZXNzCiB7CiAgICAgUV9PQkpFQ1QKQEAg
LTEwMiwxMyArMTEyLDggQEAgdm9pZCBRdFdlYlByb2Nlc3M6OnNldHVwQ2hpbGRQcm9jZXNzKCkK
IAogdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogewotICAgIFFTdHJpbmcg
YXBwbGljYXRpb25QYXRoID0gUUxhdGluMVN0cmluZygiJTEgJTIiKTsKLQotICAgIGlmIChRRmls
ZTo6ZXhpc3RzKFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uRGlyUGF0aCgpICsgUUxhdGlu
MVN0cmluZygiL1F0V2ViUHJvY2VzcyIpKSkgewotICAgICAgICBhcHBsaWNhdGlvblBhdGggPSBh
cHBsaWNhdGlvblBhdGguYXJnKFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uRGlyUGF0aCgp
ICsgUUxhdGluMVN0cmluZygiL1F0V2ViUHJvY2VzcyIpKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBhcHBsaWNhdGlvblBhdGggPSBhcHBsaWNhdGlvblBhdGguYXJnKFFMYXRpbjFTdHJpbmcoIlF0
V2ViUHJvY2VzcyIpKTsKLSAgICB9CisgICAgUVN0cmluZyBjb21tYW5kTGluZSA9IFFMYXRpbjFT
dHJpbmcoIiUxICUyIik7CisgICAgY29tbWFuZExpbmUgPSBjb21tYW5kTGluZS5hcmcoZXhlY3V0
YWJsZVBhdGgobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlKSk7CiAKICNpZiBPUyhEQVJXSU4p
CiAgICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcgcG9ydC4KQEAgLTEyNCw3ICsxMjksNyBAQCB2
b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAga2Vybl9yZXR1cm5fdCBr
ciA9IGJvb3RzdHJhcF9yZWdpc3RlcjIoYm9vdHN0cmFwX3BvcnQsIGNvbnN0X2Nhc3Q8Y2hhcio+
KHNlcnZpY2VOYW1lLnRvVXRmOCgpLmRhdGEoKSksIGNvbm5lY3RvciwgMCk7CiAgICAgQVNTRVJU
X1VOVVNFRChrciwga3IgPT0gS0VSTl9TVUNDRVNTKTsKIAotICAgIFFTdHJpbmcgcHJvZ3JhbShh
cHBsaWNhdGlvblBhdGguYXJnKHNlcnZpY2VOYW1lKSk7CisgICAgY29tbWFuZExpbmUgPSBjb21t
YW5kTGluZS5hcmcoc2VydmljZU5hbWUpOwogI2Vsc2UKICAgICBpbnQgc29ja2V0c1syXTsKICAg
ICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgPT0gLTEp
IHsKQEAgLTE0NCwxMiArMTQ5LDEyIEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9j
ZXNzKCkKICAgICB9CiAKICAgICBpbnQgY29ubmVjdG9yID0gc29ja2V0c1sxXTsKLSAgICBRU3Ry
aW5nIHByb2dyYW0oYXBwbGljYXRpb25QYXRoLmFyZyhzb2NrZXRzWzBdKSk7CisgICAgY29tbWFu
ZExpbmUgPSBjb21tYW5kTGluZS5hcmcoc29ja2V0c1swXSk7CiAjZW5kaWYKIAogICAgIFFQcm9j
ZXNzKiB3ZWJQcm9jZXNzID0gbmV3IFF0V2ViUHJvY2VzcygpOwogICAgIHdlYlByb2Nlc3MtPnNl
dFByb2Nlc3NDaGFubmVsTW9kZShRUHJvY2Vzczo6Rm9yd2FyZGVkQ2hhbm5lbHMpOwotICAgIHdl
YlByb2Nlc3MtPnN0YXJ0KHByb2dyYW0pOworICAgIHdlYlByb2Nlc3MtPnN0YXJ0KGNvbW1hbmRM
aW5lKTsKIAogI2lmICFPUyhEQVJXSU4pCiAgICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSB3ZWIgc29j
a2V0IHRvIHBvc3NpYmxlIGZ1dHVyZSB3ZWIgcHJvY2Vzc2VzCkBAIC0xNjMsNyArMTY4LDcgQEAg
dm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogI2VuZGlmCiAKICAgICBpZiAo
IXdlYlByb2Nlc3MtPndhaXRGb3JTdGFydGVkKCkpIHsKLSAgICAgICAgcURlYnVnKCkgPDwgIkZh
aWxlZCB0byBzdGFydCIgPDwgcHJvZ3JhbTsKKyAgICAgICAgcURlYnVnKCkgPDwgIkZhaWxlZCB0
byBzdGFydCIgPDwgY29tbWFuZExpbmU7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
I2lmIE9TKERBUldJTikKICAgICAgICAgbWFjaF9wb3J0X2RlYWxsb2NhdGUobWFjaF90YXNrX3Nl
bGYoKSwgY29ubmVjdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKaW5kZXggYTc1ZDViMTM4N2NkOGJkYTlkYzUyMzEy
ZDgyNmY0YWEwYjQ2OTY1Ni4uNDQyM2Q0N2YwOWE5YmIyOTE2NDg3NjVlZGE3YjA4NmViNTRhYjdh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmgKQEAgLTUyLDYgKzUyLDE0IEBAIGNsYXNzIFdlYlBsdWdpblNpdGVEYXRh
TWFuYWdlcjsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIHN0cnVjdCBQbHVnaW5Qcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOwogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCitzdHJ1Y3Qg
UmF3UGx1Z2luTWV0YURhdGEgeworICAgIFN0cmluZyBuYW1lOworICAgIFN0cmluZyBkZXNjcmlw
dGlvbjsKKyAgICBTdHJpbmcgbWltZURlc2NyaXB0aW9uOworfTsKKyNlbmRpZgorCiBjbGFzcyBQ
bHVnaW5Qcm9jZXNzUHJveHkgOiBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIFByb2Nlc3NM
YXVuY2hlcjo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxQbHVnaW5Q
cm9jZXNzUHJveHk+IGNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0IFBsdWdpbk1v
ZHVsZUluZm8mKTsKQEAgLTgwLDYgKzg4LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBj
cmVhdGVQcm9wZXJ0eUxpc3RGaWxlKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKICNlbmRpZgog
CisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgc3RhdGljIGJvb2wgc2NhblBsdWdp
bihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFJhd1BsdWdpbk1ldGFEYXRhJiByZXN1bHQpOwor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NN
YW5hZ2VyKiwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlH
dGsuY3BwCmluZGV4IDRjODU3NzJhMjdmN2I3MDcyYWZmNmExMTM3YzkyNzQ4ODVhOGY2NDMuLmZj
ZTkzNmM2ZjlkMmNiOTMzY2I0MjYxMGEyZWY2OTM5NWNjOTVlZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNz
UHJveHlHdGsuY3BwCkBAIC0yOSwxMyArMjksNTMgQEAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NF
U1MpCiAKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hl
ci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPGdsaWIuaD4K
KyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgUGx1Z2luUHJvY2Vzc1By
b3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
Ym9vbCBQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoLCBSYXdQbHVnaW5NZXRhRGF0YSYgcmVzdWx0KQoreworICAgIENTdHJpbmcgYmluYXJ5UGF0
aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihQcm9jZXNzTGF1bmNoZXI6OmV4ZWN1dGFibGVQ
YXRoKFByb2Nlc3NMYXVuY2hlcjo6UGx1Z2luUHJvY2VzcykpOworICAgIENTdHJpbmcgcGx1Z2lu
UGF0aENTdHJpbmcgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGx1Z2luUGF0aCk7CisgICAg
Y2hhciogYXJndls0XTsKKyAgICBhcmd2WzBdID0gY29uc3RfY2FzdDxjaGFyKj4oYmluYXJ5UGF0
aC5kYXRhKCkpOworICAgIGFyZ3ZbMV0gPSBjb25zdF9jYXN0PGNoYXIqPigiLXNjYW5QbHVnaW4i
KTsKKyAgICBhcmd2WzJdID0gY29uc3RfY2FzdDxjaGFyKj4ocGx1Z2luUGF0aENTdHJpbmcuZGF0
YSgpKTsKKyAgICBhcmd2WzNdID0gMDsKKworICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAg
ICBnaW50IHN0YXR1czsKKyAgICBnY2hhciogc3RkT3V0OworICAgIGlmICghZ19zcGF3bl9zeW5j
KDAsIGFyZ3YsIDAsIEdfU1BBV05fU1RERVJSX1RPX0RFVl9OVUxMLCAwLCAwLCAmc3RkT3V0LCAw
LCAmc3RhdHVzLCAmZXJyb3Iub3V0UHRyKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFXSUZFWElURUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IEVYSVRfU1VD
Q0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgdW5zaWduZWQga051bUxp
bmVzRXhwZWN0ZWQgPSAzOworICAgIFN0cmluZyBsaW5lc1trTnVtTGluZXNFeHBlY3RlZF07Cisg
ICAgdW5zaWduZWQgbGluZUluZGV4ID0gMDsKKyAgICBjb25zdCBVQ2hhciogY3VycmVudCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzdGRPdXQpOworICAgIHdoaWxlIChsaW5lSW5k
ZXggPCBrTnVtTGluZXNFeHBlY3RlZCkgeworICAgICAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBj
dXJyZW50OworICAgICAgICB3aGlsZSAoKmN1cnJlbnQrKyAhPSBVQ2hhcignXG4nKSkgeyB9Cisg
ICAgICAgIGxpbmVzW2xpbmVJbmRleCsrXSA9IFN0cmluZyhzdGFydCwgY3VycmVudCAtIHN0YXJ0
IC0gMSk7CisgICAgfQorCisgICAgcmVzdWx0Lm5hbWUuc3dhcChsaW5lc1swXSk7CisgICAgcmVz
dWx0LmRlc2NyaXB0aW9uLnN3YXAobGluZXNbMV0pOworICAgIHJlc3VsdC5taW1lRGVzY3JpcHRp
b24uc3dhcChsaW5lc1syXSk7CisgICAgcmV0dXJuICFyZXN1bHQubWltZURlc2NyaXB0aW9uLmlz
RW1wdHkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5j
cHAKaW5kZXggY2M1MjFlMGFmOWE2YTA3NDRjMmRjMGUwNmY2NTE0ZmM5NGIzNDlmOC4uZDY5Yjhm
YTA4MGVjNWY2ZjgxMmMzNzM1MmRiYjVjNGUxZDAyZGNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2luUHJvY2Vzc1Byb3h5UXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3F0L1BsdWdpblByb2Nlc3NQcm94eVF0
LmNwcApAQCAtMjgsMTQgKzI4LDUyIEBACiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAK
LSNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgor
I2luY2x1ZGUgPFFCeXRlQXJyYXk+CisjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KKyNpbmNs
dWRlIDxRRGlyPgorI2luY2x1ZGUgPFFFdmVudExvb3A+CisjaW5jbHVkZSA8UVByb2Nlc3M+Cisj
aW5jbHVkZSA8UVN0cmluZz4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFBsdWdpblBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CisKIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0
Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBQbHVn
aW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBSYXdQ
bHVnaW5NZXRhRGF0YSYgcmVzdWx0KQoreworICAgIFFTdHJpbmcgY29tbWFuZExpbmUgPSBRTGF0
aW4xU3RyaW5nKCIlMSAlMiAlMyIpOworICAgIGNvbW1hbmRMaW5lID0gY29tbWFuZExpbmUuYXJn
KFByb2Nlc3NMYXVuY2hlcjo6ZXhlY3V0YWJsZVBhdGgoUHJvY2Vzc0xhdW5jaGVyOjpQbHVnaW5Q
cm9jZXNzKSk7CisgICAgY29tbWFuZExpbmUgPSBjb21tYW5kTGluZS5hcmcoUVN0cmluZ0xpdGVy
YWwoIi1zY2FuUGx1Z2luIikpLmFyZyhzdGF0aWNfY2FzdDxRU3RyaW5nPihwbHVnaW5QYXRoKSk7
CisKKyAgICBRUHJvY2VzcyogcHJvY2VzcyA9IG5ldyBRUHJvY2VzczsKKyAgICBRT2JqZWN0Ojpj
b25uZWN0KHByb2Nlc3MsIFNJR05BTChmaW5pc2hlZChpbnQpKSwgcHJvY2VzcywgU0xPVChkZWxl
dGVMYXRlcigpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworICAgIHByb2Nlc3MtPnNldFJlYWRD
aGFubmVsKFFQcm9jZXNzOjpTdGFuZGFyZE91dHB1dCk7CisgICAgcHJvY2Vzcy0+c3RhcnQoY29t
bWFuZExpbmUpOworCisgICAgaWYgKCFwcm9jZXNzLT53YWl0Rm9yRmluaXNoZWQoKQorICAgICAg
ICB8fCBwcm9jZXNzLT5leGl0U3RhdHVzKCkgIT0gUVByb2Nlc3M6Ok5vcm1hbEV4aXQKKyAgICAg
ICAgfHwgcHJvY2Vzcy0+ZXhpdENvZGUoKSAhPSBFWElUX1NVQ0NFU1MpIHsKKyAgICAgICAgcHJv
Y2Vzcy0+a2lsbCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgUUJ5dGVB
cnJheSBvdXRwdXRCeXRlcyA9IHByb2Nlc3MtPnJlYWRBbGwoKTsKKyAgICBBU1NFUlQoIShvdXRw
dXRCeXRlcy5zaXplKCkgJSBzaXplb2YoVUNoYXIpKSk7CisKKyAgICBTdHJpbmcgb3V0cHV0KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihvdXRwdXRCeXRlcy5jb25zdERhdGEoKSksIG91
dHB1dEJ5dGVzLnNpemUoKSAvIHNpemVvZihVQ2hhcikpOworICAgIFZlY3RvcjxTdHJpbmc+IGxp
bmVzOworICAgIG91dHB1dC5zcGxpdChVQ2hhcignXG4nKSwgbGluZXMpOworICAgIEFTU0VSVChs
aW5lcy5zaXplKCkgPT0gMyk7CisKKyAgICByZXN1bHQubmFtZS5zd2FwKGxpbmVzWzBdKTsKKyAg
ICByZXN1bHQuZGVzY3JpcHRpb24uc3dhcChsaW5lc1sxXSk7CisgICAgcmVzdWx0Lm1pbWVEZXNj
cmlwdGlvbi5zd2FwKGxpbmVzWzJdKTsKKyAgICByZXR1cm4gIXJlc3VsdC5taW1lRGVzY3JpcHRp
b24uaXNFbXB0eSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJG
dW5jcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVCcm93c2VyRnVuY3MuY3BwCmluZGV4IGJkYzZlOWRlOWUxMjU0NGIwYTA0MjNkMDRkOWUy
YjY0NGQ4MzljZDEuLmQxMjEzODhmNTA4MGYwMTlmMTM5M2M3ZmUxM2FiNDc5ZjEzYjBmN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNTUxLDIzICs1NTEsOSBA
QCBzdGF0aWMgTlBFcnJvciBOUE5fR2V0VmFsdWUoTlBQIG5wcCwgTlBOVmFyaWFibGUgdmFyaWFi
bGUsIHZvaWQgKnZhbHVlKQogICAgICAgICAgICBicmVhazsKIAogICAgICAgIGNhc2UgTlBOVlRv
b2xraXQ6IHsKLSNpZiBQTEFURk9STShHVEspCi0gICAgICAgICAgICpyZWludGVycHJldF9jYXN0
PHVpbnQzMl90Kj4odmFsdWUpID0gMjsKLSNlbHNlCi0gICAgICAgICAgIGNvbnN0IHVpbnQzMl90
IGV4cGVjdGVkR1RLVG9vbEtpdFZlcnNpb24gPSAyOwotCi0gICAgICAgICAgIC8vIFNldCB0aGUg
ZXhwZWN0ZWQgR1RLIHZlcnNpb24gaWYgd2Uga25vdyB0aGF0IHRoaXMgcGx1Z2luIG5lZWRzIGl0
IG9yIGlmIHRoZSBwbHVnaW4gY2FsbCB1cwotICAgICAgICAgICAvLyB3aXRoIGEgbnVsbCBpbnN0
YW5jZS4gVGhlIGxhdHRlciBpcyB0aGUgY2FzZSB3aXRoIE5TUGx1Z2luV3JhcHBlciBwbHVnaW5z
LgotICAgICAgICAgICBib29sIHJlcXVpcmVzR1RLVG9vbEtpdFZlcnNpb247Ci0gICAgICAgICAg
IGlmICghbnBwKQotICAgICAgICAgICAgICAgcmVxdWlyZXNHVEtUb29sS2l0VmVyc2lvbiA9IHRy
dWU7Ci0gICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgUmVmUHRyPE5ldHNjYXBlUGx1
Z2luPiBwbHVnaW4gPSBOZXRzY2FwZVBsdWdpbjo6ZnJvbU5QUChucHApOwotICAgICAgICAgICAg
ICAgcmVxdWlyZXNHVEtUb29sS2l0VmVyc2lvbiA9IHBsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMo
UGx1Z2luUXVpcmtzOjpSZXF1aXJlc0dUS1Rvb2xLaXQpOwotICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZSkgPSByZXF1aXJlc0dUS1Rv
b2xLaXRWZXJzaW9uID8gZXhwZWN0ZWRHVEtUb29sS2l0VmVyc2lvbiA6IDA7Ci0jZW5kaWYKKyAg
ICAgICAgICAgLy8gR3RrIGJhc2VkIHBsdWdpbnMgbmVlZCB0byBiZSBhc3N1cmVkIGFib3V0IHRo
ZSB0b29sa2l0IHZlcnNpb24uCisgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IGV4cGVjdGVkR3Rr
VG9vbEtpdFZlcnNpb24gPSAyOworICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDx1aW50MzJf
dCo+KHZhbHVlKSA9IGV4cGVjdGVkR3RrVG9vbEtpdFZlcnNpb247CiAgICAgICAgICAgIGJyZWFr
OwogICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvcXQvUGx1Z2luTWFpblF0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL3F0L1BsdWdpbk1haW5RdC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q1
YzkzYjU3YjNiOWVjZTU0MzZjMDZkMTc2NDMzYmQyNjlhOTFkMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL3F0L1BsdWdpbk1haW5RdC5jcHAKQEAgLTAsMCArMSwzOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgVW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPFFMaWJy
YXJ5PgorI2luY2x1ZGUgPFF0R2xvYmFsPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK1FfREVDTF9J
TVBPUlQgaW50IFBsdWdpblByb2Nlc3NNYWluKGludCBhcmdjLCBjaGFyKiogYXJndik7Cit9CisK
K2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICByZXR1cm4gV2ViS2l0OjpQ
bHVnaW5Qcm9jZXNzTWFpbihhcmdjLCBhcmd2KTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxMmVhZGIzNTljZDI4YjdkOGQ1NDNkMmQ5OTJi
NDE4MTcwOTIzNzQ0Li5iMmQ4NmY3M2IzZThlODExNzgzYjA1OWMwYWM3MjJlMGJhOTE0NjcwIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTItMDMtMDggIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3Jn
PgorCisgICAgICAgIFtRdF1bV0syXSBTZXQgdXAgcGx1Z2luIHByb2Nlc3Mgb24gVW5peAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxMjEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHFtYWtlL21rc3Bl
Y3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmOiBSZWVuYWJsZSBwbHVnaW5zCisgICAgICAgIGFuZCB0
dXJuIG9uIHBsdWdpbiBwcm9jZXNzLgorCiAyMDEyLTAzLTA4ICBTaGVyaWZmIEJvdCAgPHdlYmtp
dC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTEwMTE1LgpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0
dXJlcy5wcmYgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgppbmRl
eCA4NWU5YTRhMDgzNGEwMDk5N2E0ZTE1ZmRjNTVhODA4MjIwYzA3YjFkLi44NTY2NjMyMzQ3ZDUw
YmZjZjI0NTYwOGRiZmIwODVkZDczZGE5MGM3IDEwMDY0NAotLS0gYS9Ub29scy9xbWFrZS9ta3Nw
ZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgorKysgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1
cmVzL2ZlYXR1cmVzLnByZgpAQCAtMTI0LDEyICsxMjQsMTEgQEAgaGF2ZVF0KDUpIHsKICAgICBu
b193ZWJraXQyIHsKICAgICAgICAgREVGSU5FUyArPSBQTFVHSU5fQVJDSElURUNUVVJFX1VOU1VQ
UE9SVEVEPTEKICAgICB9IGVsc2UgewotICAgICAgICAjIERpc2FibGUgeGxpYiBwbHVnaW5zIHdo
aWxlIHRoZXkncmUgaW4tcHJvY2VzcywgYmVjYXVzZSB0aGV5IGNyYXNoCi0gICAgICAgICMgYXMg
c29vbiBhcyBhbiBpbnN0YWxsZWQgbnBhcGkgcGx1Z2luIHVzZXMgUXQgNC4KLSAgICAgICAgZmFs
c2U6Y29udGFpbnMoUVRfQ09ORklHLCB4Y2IteGxpYikgeworICAgICAgICBjb250YWlucyhRVF9D
T05GSUcsIHhjYi14bGliKSB7CiAgICAgICAgICAgICBDT05GSUcgKz0gcGx1Z2luX2JhY2tlbmRf
eGxpYgogICAgICAgICAgICAgREVGSU5FUyArPSBQTFVHSU5fQVJDSElURUNUVVJFX1gxMT0xIFwK
LSAgICAgICAgICAgICAgICAgICAgICAgUExVR0lOX0FSQ0hJVEVDVFVSRV9VTlNVUFBPUlRFRD0w
CisgICAgICAgICAgICAgICAgICAgICAgIFBMVUdJTl9BUkNISVRFQ1RVUkVfVU5TVVBQT1JURUQ9
MCBcCisgICAgICAgICAgICAgICAgICAgICAgIEVOQUJMRV9QTFVHSU5fUFJPQ0VTUz0xCiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBERUZJTkVTICs9IFBMVUdJTl9BUkNISVRFQ1RVUkVf
VU5TVVBQT1JURUQ9MQogICAgICAgICB9CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VM
b2cKaW5kZXggNTE4MDc0ZWRmYjYwYWM4MzkzNTBlYWUxOWU1OTg4OWUyOThjMGY4Mi4uMTliOGY0
Nzg5M2JlYmVkYzM5MTMyMzU2YmY2ZGRhNWU2NTFkMzFhYSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9n
CisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAzLTA4ICBCYWxhenMgS2Vs
ZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdW1dLMl0gU2V0IHVwIHBs
dWdpbiBwcm9jZXNzIG9uIFVuaXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcyMTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTb3VyY2UvUXRXZWJLaXQucHJvOiBBZGQgUGx1Z2luUHJvY2VzcyBzdWJw
cm9qZWN0LgorCiAyMDEyLTAzLTA1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFR1cm4gUnVucyBjbGFzcyBpbnRvIGEgcHJvcGVyIG1vZGVsIHRvIGltcGxlbWVu
dCBpbmNyZW1lbnRhbCBKU09OIHVwZGF0ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130819</attachid>
            <date>2012-03-08 06:49:41 -0800</date>
            <delta_ts>2012-03-09 01:42:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72121-20120308154939.patch</filename>
            <type>text/plain</type>
            <size>41756</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2YxY2Q0Y2JiMTQ2MzZk
MzA1ODFhODFiNGMwODdiM2RlYTE0MmJlNS4uM2E4OWQyMGVmMWQxMmVmOGU1Njg3YmM2MzE3ZTkw
YjAyYTMwOWQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAxMi0wMy0wOCAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIFNl
dCB1cCBwbHVnaW4gcHJvY2VzcyBvbiBVbml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MjEyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNldHVwIHBsdWdpbiBwcm9jZXNzIGZvciBRdCBhbmQgbW92ZSB0
aGUgdGFzayBvZiBxdWVyeWluZyB0aGUgcGx1Z2lucworICAgICAgICB0byB0aGlzIHByb2Nlc3Mg
aW4gb3JkZXIgdG8gYXZvaWQgY3Jhc2hlcyBkdWUgdG8gcGx1Z2luIGJ1Z3Mgb3IgbGlicmFyeQor
ICAgICAgICBpbmNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzLnBybzogQWRkZWQuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9j
ZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3NNYWluR3RrKQorICAgICAgICAqIFBsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vz
c01haW5RdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVHdGspOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzTWFpbik6CisgICAgICAgIEltcGxlbWVudCBlbnRyeSBwb2ludCBv
ZiB0aGUgcGx1Z2luIHByb2Nlc3MuCisgICAgICAgIEhhbmRsZSAtc2NhblBsdWdpbiBjb21tYW5k
IGxpbmUgc3dpdGNoOiBwcm9kdWNlIG1ldGEgZGF0YQorICAgICAgICBvZiBwbHVnaW4gb24gc3Rh
bmRhcmQgb3V0cHV0IGFuZCB0ZXJtaW5hdGUuIE1vdmUgR3RrIGluaXRpYWxpemF0aW9uCisgICAg
ICAgIGhhY2sgdG8gdGhlcmUuCisKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
TW9kdWxlOjp0cnlMb2FkKToKKyAgICAgICAgR2V0IHJpZCBvZiB0aGUgR3RrIGluaXRpYWxpemF0
aW9uIGhhY2suIFdlIGRvIG5vdCBuZWFkIGl0IGhlcmUgYW55bW9yZS4KKworICAgICAgICAqIFNo
YXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmg6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoTmV0c2NhcGVQbHVnaW5Nb2R1bGUpOgorICAgICAgICAqIFNoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnBhcnNlTUlNRURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4pOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBs
dWdpbkluZm8pOgorICAgICAgICBHZXQgcGx1Z2luIG1ldGEgZGF0YSB2aWEgUGx1Z2luUHJvY2Vz
c3Byb3h5LiBJZiBhIGZhaWx1cmUKKyAgICAgICAgaGFwcGVuZWQgd2UgaWdub3JlIHRvIHVzZSB0
aGUgcGx1Z2luLiBSZW1vdmUgdGhlIGNvbmNlcHQKKyAgICAgICAgb2Ygc3Rkb3V0IHJlZGlyZWN0
aW9uIHNpbmNlIHdlIGNhbiBjb250cm9sIGl0IHdoZW4gbGF1bmNoaW5nCisgICAgICAgIHRoZSBw
cm9jZXNzLgorCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjpkZXRlcm1p
bmVRdWlya3MpOgorICAgICAgICAoV2ViS2l0Ojp0cnVuY2F0ZU5ld0xpbmVzKToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNjYW5QbHVnaW4pOgorICAgICAgICBQcm9k
dWNlIHBsdWdpbiBtZXRhIGRhdGEgb24gc3RhbmRhcmQgb3V0cHV0LgorCisgICAgICAgICogU2hh
cmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpwYWludCk6CisgICAgICAgIEFkZGVkIGltcGxlbWVudGF0aW9uIGZvciB0aGUgb3Zl
cnJpZGUgd2l0aCB0aGUgc2NhbGUgZmFjdG9yIGJlY2F1c2UKKyAgICAgICAgaXQgaXMgY2FsbGVk
IGZyb20gUGx1Z2luUHJveHkuIEl0IGRvZXMgbm90IGFjdHVhbGx5IGhhbmRsZSB0aGUgY2FzZQor
ICAgICAgICB3aGVuIHRoZSBzY2FsZSBmYWN0b3IgaXMgbm90IDEuIEhvd2V2ZXIgaXQncyBvayBi
ZWNhdXNlIGl0IGNhbiBvbmx5CisgICAgICAgIGhhcHBlbiBvbiBNYWMgaW4gdGhlIG1vbWVudC4K
KworICAgICAgICAqIFRhcmdldC5wcmk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIv
UHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAgIChQcm9jZXNzTGF1bmNoZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6ZmluZFdlYktpdFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpleGVjdXRhYmxlUGF0aCk6CisgICAgICAgIChXZWJL
aXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJv
Y2Vzc0xhdW5jaGVyOjpleGVjdXRhYmxlUGF0aCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICBGYWN0
b3JlZCB0aGUgZXhlY3V0YWJsZSBwYXRoIGRldGVybWluYXRpb24gaW50byBhIHN0YXRpYyBtZXRo
b2QKKyAgICAgICAgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFJhd1BsdWdpbk1ldGFEYXRhKToKKyAgICAgICAgKFBsdWdpblByb2Nlc3NQcm94eSk6
CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFs
aXplUGx1Z2luUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVn
aW5zL3F0L1BsdWdpblByb2Nlc3NQcm94eVF0LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2lu
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6c2NhblBsdWdp
bik6CisgICAgICAgIExhdW5jaCBwbHVnaW4gcHJvY2VzcyBhbmQgcGFyc2UgaXQncyBvdXRwdXQg
dG8gZ2V0IHRoZSBtZXRhIGRhdGEKKyAgICAgICAgZm9yIHRoZSBwbHVnaW4uCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOUE5fR2V0VmFsdWUpOgorICAgICAgICBDaGFuZ2VkIGFjY29yZGlu
ZyB0byB0aGUgcmVtb3ZlIG9mIHRoZSBmbGFzaCBoYWNrLiBEbyBub3QgdHJ5CisgICAgICAgIHRv
IGRlY2lkZSB3aGV0aGVyIHRoZSBwbHVnaW4gbmVlZHMgR3RrIGJ5IGl0J3MgbmFtZSBidXQgaW5z
dGVhZAorICAgICAgICBhbHdheXMgZ2V0IGJhY2sgdGhlIGV4cGVjdGVkIEd0ayB2ZXJzaW9uICgy
KS4gT25seSBHdGsgcGx1Z2lucworICAgICAgICBzaG91bGQgYXNrIGZvciB0aGlzIGFueXdheS4K
KworICAgICAgICAqIHF0L1BsdWdpbk1haW5RdC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlHdGsuY3BwLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKG1haW4pOgorCiAyMDEyLTAzLTA3ICBEaW51IEphY29i
ICA8ZGludS5qYWNvYkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBBdXRoZW50aWNhdGlvbiBk
aWFsb2cgZG9lcyBub3Qgd29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1F0V2ViS2l0LnBybyBiL1Nv
dXJjZS9RdFdlYktpdC5wcm8KaW5kZXggMDJmYzllMWM3ZWJlMWY3MzE5ZDA5ZDEyMTVlMjA5ODk5
YjQ1MWE3NC4uYmJiZmM0MWU2ODE3YjdjMGQ1YmQ1ZTEzZWM5ZDNjZmQ0NzliYTFmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1F0V2ViS2l0LnBybworKysgYi9Tb3VyY2UvUXRXZWJLaXQucHJvCkBAIC00
LDYgKzQsOCBAQAogIyBTZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9m
IHRoZSBidWlsZCBzeXN0ZW0KICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitsb2FkKGZlYXR1cmVzKQorCiBURU1Q
TEFURSA9IHN1YmRpcnMKIENPTkZJRyArPSBvcmRlcmVkCiAKQEAgLTEzLDYgKzE1LDEwIEBAIFNV
QkRJUlMgKz0gYXBpCiAhbm9fd2Via2l0MiB7CiAgICAgd2VicHJvY2Vzcy5maWxlID0gV2ViS2l0
Mi9XZWJQcm9jZXNzLnBybwogICAgIFNVQkRJUlMgKz0gd2VicHJvY2VzcworICAgIGNvbnRhaW5z
KERFRklORVMsIEVOQUJMRV9QTFVHSU5fUFJPQ0VTUz0xKSB7CisgICAgICAgIHBsdWdpbnByb2Nl
c3MuZmlsZSA9IFdlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8KKyAgICAgICAgU1VCRElSUyArPSBw
bHVnaW5wcm9jZXNzCisgICAgfQogfQogCiBpbmNsdWRlKFdlYktpdC9xdC9kb2NzL2RvY3MucHJp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCA0NWM0ZmYzNGZhYjRlZGU2ODVkZmE5Y2YzOGQxODRh
ZGI2NjgwZGQ0Li44NzhlOGZlOWViOGY3ODAwNTRjZDVhMzNiNzFhY2VlMjNjYjRjOTQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5hbQpAQCAtMTM1Miw2ICsxMzUyLDcgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1
Z2luUHJvY2Vzc19DUFBGTEFHUyA9IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zIFwKIAktSSQo
c3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS8gXAorCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci8gXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zLyBcCiAJLUkkKHNyY2RpcikvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zLyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlLyBcCkBAIC0xMzYzLDYgKzEzNjQsNyBAQCBQ
cm9ncmFtc19XZWJLaXRQbHVnaW5Qcm9jZXNzX0NQUEZMQUdTID0gXAogCS1EQlVJTERJTkdfV0VC
S0lUIFwKIAktREdUS19BUElfVkVSU0lPTl8yPTEgXAogCS1ERU5BQkxFX1BMVUdJTl9QUk9DRVNT
PTEgXAorCS1ETElCRVhFQ0RJUj1cIiIkKGxpYmV4ZWNkaXIpIlwiIFwKIAkkKGdsb2JhbF9jcHBm
bGFncykgXAogCSQod2ViY29yZV9jcHBmbGFncykgXAogCSQod2ViY29yZWd0a19jcHBmbGFncykg
XApAQCAtMTQ3Myw2ICsxNDc1LDkgQEAgd2Via2l0Ml9wbHVnaW5fcHJvY2Vzc19zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAgXAogCVNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAgXAorCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwIFwKKwlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5j
cHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNz
UHJveHlHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lVXRpbGl0
aWVzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzLnBybyBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1Yjk4NmUxMTBj
ZTMyNGQ0OTE5N2Y2NjBhYjQ2YmFkNGQ2YzNmNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzLnBybwpAQCAtMCwwICsxLDI1IEBACisjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyMgUHJvamVjdCBmaWxlIGZvciB0aGUgV2ViS2l0MiBwbHVnaW4gcHJvY2VzcyBiaW5hcnkKKyMK
KyMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQg
c3lzdGVtCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVNUExBVEUgPSBhcHAKKworVEFSR0VUID0gUXRXZWJQ
bHVnaW5Qcm9jZXNzCitERVNURElSID0gJCR7Uk9PVF9CVUlMRF9ESVJ9L2JpbgorCitTT1VSQ0VT
ICs9IHF0L1BsdWdpbk1haW5RdC5jcHAKKworSU5DTFVERVBBVEggPSAkJFBXRC8uLi9KYXZhU2Ny
aXB0Q29yZSBcCisgICAgICAgICAgICAgICQkSU5DTFVERVBBVEgKKworQ09ORklHICs9IHF0d2Vi
a2l0CisKK0lOU1RBTExTICs9IHRhcmdldAorCitpc0VtcHR5KElOU1RBTExfQklOUykgeworICAg
IHRhcmdldC5wYXRoID0gJCRbUVRfSU5TVEFMTF9CSU5TXQorfSBlbHNlIHsKKyAgICB0YXJnZXQu
cGF0aCA9ICQkSU5TVEFMTF9CSU5TCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAKaW5kZXggOTkyZDc0MDc1
MTA0YzhjYmNhNjEyZjFjZDg5OWU5YTUwZTM3MTQ0ZC4uODcwYzAxYzI3OTQ2ZWIyZTUwMzQxNTFi
MDk4OGMwZWI2NjA4MzEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9ndGsvUGx1Z2luUHJvY2Vzc01haW5HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluR3RrLmgiCiAK
KyNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KICNpbmNsdWRlIDxnZGsvZ2RreC5oPgpAQCAt
NTMsMTIgKzU0LDIyIEBAIHN0YXRpYyBpbnQgd2Via2l0Z3RrWEVycm9yKERpc3BsYXkqIHhkaXNw
bGF5LCBYRXJyb3JFdmVudCogZXJyb3IpCiAKIFdLX0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01h
aW5HdGsoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKIHsKLSAgICBBU1NFUlQoYXJnYyA9PSAyKTsK
KyAgICBBU1NFUlQoYXJnYyA9PSAyIHx8IGFyZ2MgPT0gMyk7CisgICAgYm9vbCBzY2FuUGx1Z2lu
ID0gIXN0cmNtcChhcmd2WzFdLCAiLXNjYW5QbHVnaW4iKTsKKyAgICBBU1NFUlQoYXJnYyA9PSAy
IHx8IChhcmdjID09IDMgJiYgc2NhblBsdWdpbikpOwogCiAgICAgZ3RrX2luaXQoJmFyZ2MsICZh
cmd2KTsKIAogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5pdGlh
bGl6ZU1haW5UaHJlYWQoKTsKKworICAgIGlmIChzY2FuUGx1Z2luKSB7CisgICAgICAgIFN0cmlu
ZyBwbHVnaW5QYXRoKGFyZ3ZbMl0pOworICAgICAgICBpZiAoIU5ldHNjYXBlUGx1Z2luTW9kdWxl
OjpzY2FuUGx1Z2luKHBsdWdpblBhdGgpKQorICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVS
RTsKKyAgICAgICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKKyAgICB9CisKICAgICBSdW5Mb29wOjpp
bml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIAogICAgIC8vIFBsdWdpbnMgY2FuIHByb2R1Y2UgWCBl
cnJvcnMgdGhhdCBhcmUgaGFuZGxlZCBieSB0aGUgR0RLIFggZXJyb3IgaGFuZGxlciwgd2hpY2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vz
c01haW5RdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nl
c3NNYWluUXQuY3BwCmluZGV4IGQzYTBlYzNlMjQ1OTU2Yjk4NTAwZDU2N2U1NjVmYWExNTA2YTAw
NTMuLmM2MmNmOGJkNjAxNzQ3MGVmYTM1ZWUyZWU1MWJlYWY0MjZjOTVmNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5RdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0
LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgTm9r
aWEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIFVuaXZl
cnNpdHkgb2YgU3plZ2VkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNCw0NCArMjUsODMgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01haW4uaCIKIAogI2lmIEVOQUJMRShQTFVHSU5f
UFJPQ0VTUykKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpbi5oIgogCi0jaW5jbHVkZSAiQ29t
bWFuZExpbmUuaCIKKyNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbk1vZHVsZS5oIgogI2luY2x1ZGUg
IlBsdWdpblByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Cisj
aW5jbHVkZSA8UUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFEZWJ1Zz4KKyNpbmNsdWRlIDxRU3Ry
aW5nTGlzdD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KICNpbmNsdWRlIDxydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNkZWZpbmUgU0hPV19DUkFTSF9SRVBP
UlRFUiAxCisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWludCBQbHVnaW5Qcm9jZXNzTWFpbihjb25z
dCBDb21tYW5kTGluZSYgY29tbWFuZExpbmUpCitzdGF0aWMgdm9pZCBtZXNzYWdlSGFuZGxlcihR
dE1zZ1R5cGUgdHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKLSAgICBTdHJpbmcgc2Vydmlj
ZU5hbWUgPSBjb21tYW5kTGluZVsic2VydmljZW5hbWUiXTsKLSAgICBpZiAoc2VydmljZU5hbWUu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIGlmICh0eXBlID09
IFF0Q3JpdGljYWxNc2cpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbWVzc2Fn
ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBEbyBub3RoaW5nCit9CiAKLSNp
ZiAhU0hPV19DUkFTSF9SRVBPUlRFUgotICAgIC8vIEluc3RhbGxzIHNpZ25hbCBoYW5kbGVycyB0
aGF0IGV4aXQgb24gYSBjcmFzaCBzbyB0aGF0IENyYXNoUmVwb3J0ZXIgZG9lcyBub3Qgc2hvdyB1
cC4KLSAgICBzaWduYWwoU0lHSUxMLCBfZXhpdCk7Ci0gICAgc2lnbmFsKFNJR0ZQRSwgX2V4aXQp
OwotICAgIHNpZ25hbChTSUdCVVMsIF9leGl0KTsKLSAgICBzaWduYWwoU0lHU0VHViwgX2V4aXQp
OwotI2VuZGlmCitzdGF0aWMgYm9vbCBpbml0aWFsaXplR3RrKCkKK3sKKyAgICBRTGlicmFyeSBn
dGtMaWJyYXJ5KFFMYXRpbjFTdHJpbmcoImxpYmd0ay14MTEtMi4wIiksIDApOworICAgIGlmICgh
Z3RrTGlicmFyeS5sb2FkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB0eXBlZGVmIHZv
aWQqICgqZ3RrX2luaXRfcHRyKSh2b2lkKiwgdm9pZCopOworICAgIGd0a19pbml0X3B0ciBndGtJ
bml0ID0gcmVpbnRlcnByZXRfY2FzdDxndGtfaW5pdF9wdHI+KGd0a0xpYnJhcnkucmVzb2x2ZSgi
Z3RrX2luaXQiKSk7CisgICAgaWYgKCFndGtJbml0KQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgZ3RrSW5pdCgwLCAwKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW50IFBsdWdpblByb2Nl
c3NNYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICBRQnl0ZUFycmF5IHN1cHByZXNz
T3V0cHV0ID0gcWdldGVudigiUVRfV0VCS0lUX1NVUFBSRVNTX1dFQl9QUk9DRVNTX09VVFBVVCIp
OworICAgIGlmICghc3VwcHJlc3NPdXRwdXQuaXNFbXB0eSgpICYmIHN1cHByZXNzT3V0cHV0ICE9
ICIwIikKKyAgICAgICAgcUluc3RhbGxNc2dIYW5kbGVyKG1lc3NhZ2VIYW5kbGVyKTsKKworICAg
IFFBcHBsaWNhdGlvbiBhcHAoYXJnYywgYXJndik7CisKKyAgICAvLyBXb3JrYXJvdW5kIHRoZSBp
c3N1ZSB0aGF0IHNvbWUgdmVyc2lvbnMgb2YgZmxhc2ggZG9lcyBub3QgaW5pdGlhbGl6ZSBHdGsg
cHJvcGVybHkuCisgICAgaWYgKCFpbml0aWFsaXplR3RrKCkpCisgICAgICAgIHJldHVybiBFWElU
X0ZBSUxVUkU7CiAKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6Omlu
aXRpYWxpemVNYWluVGhyZWFkKCk7CisKKyAgICBpZiAoYXJnYyA8PSAxKQorICAgICAgICByZXR1
cm4gRVhJVF9GQUlMVVJFOworCisgICAgaWYgKGFwcC5hcmd1bWVudHMoKS5hdCgxKSA9PSBRTGF0
aW4xU3RyaW5nKCItc2NhblBsdWdpbiIpKSB7CisgICAgICAgIGlmIChhcmdjICE9IDMpCisgICAg
ICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgICAgICBTdHJpbmcgcGx1Z2luUGF0aChh
cHAuYXJndW1lbnRzKCkuYXQoMikpOworICAgICAgICBpZiAoIU5ldHNjYXBlUGx1Z2luTW9kdWxl
OjpzY2FuUGx1Z2luKHBsdWdpblBhdGgpKQorICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVS
RTsKKyAgICAgICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKKyAgICB9CisKICAgICBSdW5Mb29wOjpp
bml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIAorICAgIC8vIENyZWF0ZSB0aGUgY29ubmVjdGlvbi4K
KyAgICBib29sIGlzTnVtYmVyID0gZmFsc2U7CisgICAgaW50IGlkZW50aWZpZXIgPSBhcHAuYXJn
dW1lbnRzKCkuYXQoMSkudG9JbnQoJmlzTnVtYmVyLCAxMCk7CisgICAgaWYgKCFpc051bWJlcikK
KyAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICBXZWJLaXQ6OlBsdWdpblByb2Nlc3M6
OnNoYXJlZCgpLmluaXRpYWxpemUoaWRlbnRpZmllciwgUnVuTG9vcDo6bWFpbigpKTsKKwogICAg
IFJ1bkxvb3A6OnJ1bigpOwogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVs
ZS5jcHAKaW5kZXggZTVmOGRjMmEzZjJlZmE3ZGU4YjQxMDk5MzI2YWUwNGY5NWY0NTE2My4uYzE4
NzRkOTk2NmE2NmRkOTMyZWQyZGZmOTIwN2NiZjg5ZDMyNWJhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luTW9kdWxlLmNwcApAQCAtMTk3LDEwICsxOTcsNiBAQCBib29sIE5ldHNjYXBlUGx1Z2luTW9k
dWxlOjpsb2FkKCkKIAogYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6dHJ5TG9hZCgpCiB7Ci0j
aWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCi0gICAgYXBwbHlYMTFRdWlya3NCZWZvcmVMb2Fk
KCk7Ci0jZW5kaWYKLQogICAgIG1fbW9kdWxlID0gYWRvcHRQdHIobmV3IE1vZHVsZShtX3BsdWdp
blBhdGgpKTsKICAgICBpZiAoIW1fbW9kdWxlLT5sb2FkKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luTW9kdWxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oCmluZGV4IGY4MGEwYTFhMGEzMmMwNzIxY2U2YWJm
YjVmYmRkNWI0MGQ4YTk2YjIuLmU5NmJkMmQwNDJiY2VhNDU5ZWNiMWE0ZGY4NjI2Y2U2MzY4MTE5
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaApAQCAtMzUsNiArMzUsOCBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgUmF3UGx1Z2luTWV0YURhdGE7CisKIGNsYXNzIE5ldHNj
YXBlUGx1Z2luTW9kdWxlIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4g
Z2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKQEAgLTYxLDE1ICs2MywxNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgY3JlYXRlUGx1Z2luTUlNRVR5cGVzUHJlZmVyZW5j
ZXMoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKICNlbmRpZgogCisjaWYgUExVR0lOX0FSQ0hJ
VEVDVFVSRShYMTEpCisgICAgc3RhdGljIGJvb2wgc2NhblBsdWdpbihjb25zdCBTdHJpbmcmIHBs
dWdpblBhdGgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTmV0c2NhcGVQbHVn
aW5Nb2R1bGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKIAogICAgIHZvaWQgZGV0ZXJtaW5l
UXVpcmtzKCk7CiAKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKLSAgICB2b2lkIGFwcGx5
WDExUXVpcmtzQmVmb3JlTG9hZCgpOwotICAgIHN0YXRpYyB2b2lkIHNldE1JTUVEZXNjcmlwdGlv
bihjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlwdGlvbiwgUGx1Z2luTW9kdWxlSW5mbyYpOwotICAg
IGJvb2wgZ2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihQbHVnaW5Nb2R1bGVJbmZvJik7Cisg
ICAgYm9vbCBnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKFJhd1BsdWdpbk1ldGFEYXRhJik7
CiAjZW5kaWYKIAogICAgIGJvb2wgdHJ5R2V0U2l0ZXNXaXRoRGF0YShWZWN0b3I8U3RyaW5nPiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDEx
L05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVn
aW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAKaW5kZXggODY2ODMz
YzY0NjExZDEyZGQ3ZTA1MWM3ZjA5YjU0YWU4OGY1OTM2OS4uZTlkN2M2NjIxOTQxNGY0ZTM3ZmUx
NGVhMzFiYzY1MDVlOTU3ODYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1
bGVYMTEuY3BwCkBAIC0yOCw3NiArMjgsMjkgQEAKIAogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2lu
TW9kdWxlLmgiCiAKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJO
ZXRzY2FwZUJyb3dzZXJGdW5jcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgot
Ci0jaWYgUExBVEZPUk0oUVQpCi0jaW5jbHVkZSA8UUxpYnJhcnk+Ci0jZW5kaWYKLQorI2luY2x1
ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgog
I2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0
Zi9Pd25BcnJheVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duQXJyYXlQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgU3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3IgewotcHVi
bGljOgotICAgIFN0ZG91dERldk51bGxSZWRpcmVjdG9yKCk7Ci0gICAgflN0ZG91dERldk51bGxS
ZWRpcmVjdG9yKCk7Ci0KLXByaXZhdGU6Ci0gICAgaW50IG1fc2F2ZWRTdGRvdXQ7Ci19OwotCi1T
dGRvdXREZXZOdWxsUmVkaXJlY3Rvcjo6U3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3IoKQotICAgIDog
bV9zYXZlZFN0ZG91dCgtMSkKLXsKLSAgICBpbnQgbmV3U3Rkb3V0ID0gb3BlbigiL2Rldi9udWxs
IiwgT19XUk9OTFkpOwotICAgIGlmIChuZXdTdGRvdXQgPT0gLTEpCi0gICAgICAgIHJldHVybjsK
LSAgICBtX3NhdmVkU3Rkb3V0ID0gZHVwKFNURE9VVF9GSUxFTk8pOwotICAgIGR1cDIobmV3U3Rk
b3V0LCBTVERPVVRfRklMRU5PKTsKLX0KLQotU3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3I6On5TdGRv
dXREZXZOdWxsUmVkaXJlY3RvcigpCi17Ci0gICAgaWYgKG1fc2F2ZWRTdGRvdXQgIT0gLTEpCi0g
ICAgICAgIGR1cDIobV9zYXZlZFN0ZG91dCwgU1RET1VUX0ZJTEVOTyk7Ci19Ci0KLSNpZiBQTEFU
Rk9STShRVCkKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVHVEsoKQotewotICAgIFFMaWJyYXJ5IGxp
YnJhcnkoUUxhdGluMVN0cmluZygibGliZ3RrLXgxMS0yLjAuc28uMCIpKTsKLSAgICBpZiAobGli
cmFyeS5sb2FkKCkpIHsKLSAgICAgICAgdHlwZWRlZiB2b2lkICooKmd0a19pbml0X2NoZWNrX3B0
cikoaW50KiwgY2hhcioqKik7Ci0gICAgICAgIGd0a19pbml0X2NoZWNrX3B0ciBndGtJbml0Q2hl
Y2sgPSByZWludGVycHJldF9jYXN0PGd0a19pbml0X2NoZWNrX3B0cj4obGlicmFyeS5yZXNvbHZl
KCJndGtfaW5pdF9jaGVjayIpKTsKLSAgICAgICAgLy8gTk9URTogV2UncmUgdXNpbmcgZ3RrX2lu
aXRfY2hlY2soKSBzaW5jZSBndGtfaW5pdCgpIGNhbGxzIGV4aXQoKSBvbiBmYWlsdXJlLgotICAg
ICAgICBpZiAoZ3RrSW5pdENoZWNrKQotICAgICAgICAgICAgKHZvaWQpIGd0a0luaXRDaGVjaygw
LCAwKTsKLSAgICB9Ci19Ci0jZW5kaWYKLQotdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6YXBw
bHlYMTFRdWlya3NCZWZvcmVMb2FkKCkKK3N0YXRpYyB2b2lkIHBhcnNlTUlNRURlc2NyaXB0aW9u
KGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uLCBWZWN0b3I8TWltZUNsYXNzSW5mbz4mIHJl
c3VsdCkKIHsKLSNpZiBQTEFURk9STShRVCkKLSAgICBpZiAobV9wbHVnaW5QYXRoLmNvbnRhaW5z
KCJucHdyYXBwZXIiKSB8fCBtX3BsdWdpblBhdGguY29udGFpbnMoImZsYXNocGxheWVyIikpIHsK
LSAgICAgICAgaW5pdGlhbGl6ZUdUSygpOwotICAgICAgICBtX3BsdWdpblF1aXJrcy5hZGQoUGx1
Z2luUXVpcmtzOjpSZXF1aXJlc0dUS1Rvb2xLaXQpOwotICAgIH0KLSNlbmRpZgotfQorICAgIEFT
U0VSVF9BUkcocmVzdWx0LCByZXN1bHQuaXNFbXB0eSgpKTsKIAotdm9pZCBOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6c2V0TUlNRURlc2NyaXB0aW9uKGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9u
LCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCi17CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7
CiAgICAgbWltZURlc2NyaXB0aW9uLmxvd2VyKCkuc3BsaXQoVUNoYXIoJzsnKSwgZmFsc2UsIHR5
cGVzKTsKLSAgICBwbHVnaW4uaW5mby5taW1lcy5yZXNlcnZlQ2FwYWNpdHkodHlwZXMuc2l6ZSgp
KTsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0eXBlcy5zaXplKCkpOwogCiAg
ICAgc2l6ZV90IG1pbWVJbmZvQ291bnQgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dHlwZXMuc2l6ZSgpOyArK2kpIHsKQEAgLTEwNiw4ICs1OSw4IEBAIHZvaWQgTmV0c2NhcGVQbHVn
aW5Nb2R1bGU6OnNldE1JTUVEZXNjcmlwdGlvbihjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlwdGlv
biwgUGx1CiAgICAgICAgIGlmIChtaW1lVHlwZVBhcnRzLnNpemUoKSA8PSAwKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgcGx1Z2luLmluZm8ubWltZXMudW5jaGVja2VkQXBwZW5k
KE1pbWVDbGFzc0luZm8oKSk7Ci0gICAgICAgIE1pbWVDbGFzc0luZm8mIG1pbWVJbmZvID0gcGx1
Z2luLmluZm8ubWltZXNbbWltZUluZm9Db3VudCsrXTsKKyAgICAgICAgcmVzdWx0LnVuY2hlY2tl
ZEFwcGVuZChNaW1lQ2xhc3NJbmZvKCkpOworICAgICAgICBNaW1lQ2xhc3NJbmZvJiBtaW1lSW5m
byA9IHJlc3VsdFttaW1lSW5mb0NvdW50KytdOwogICAgICAgICBtaW1lSW5mby50eXBlID0gbWlt
ZVR5cGVQYXJ0c1swXTsKIAogICAgICAgICBpZiAobWltZVR5cGVQYXJ0cy5zaXplKCkgPiAxKQpA
QCAtMTE4LDEzICs3MSwxMCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpzZXRNSU1FRGVz
Y3JpcHRpb24oY29uc3QgU3RyaW5nJiBtaW1lRGVzY3JpcHRpb24sIFBsdQogICAgIH0KIH0KIAot
Ym9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihQ
bHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCitib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQ
bHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKFJhd1BsdWdpbk1ldGFEYXRhJiBtZXRhRGF0YSkKIHsK
ICAgICBBU1NFUlQobV9pc0luaXRpYWxpemVkKTsKIAotICAgIHBsdWdpbi5wYXRoID0gbV9wbHVn
aW5QYXRoOwotICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBwYXRoR2V0RmlsZU5hbWUobV9wbHVnaW5Q
YXRoKTsKLQogICAgIE1vZHVsZSogbW9kdWxlID0gbV9tb2R1bGUuZ2V0KCk7CiAgICAgTlBQX0dl
dFZhbHVlUHJvY1B0ciBOUFBfR2V0VmFsdWUgPSBtb2R1bGUtPmZ1bmN0aW9uUG9pbnRlcjxOUFBf
R2V0VmFsdWVQcm9jUHRyPigiTlBfR2V0VmFsdWUiKTsKICAgICBpZiAoIU5QUF9HZXRWYWx1ZSkK
QEAgLTEzNyw0NyArODcsNDUgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2lu
SW5mb0ZvckxvYWRlZFBsdWdpbihQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4KICAgICBjaGFyKiBi
dWZmZXI7CiAgICAgTlBFcnJvciBlcnJvciA9IE5QUF9HZXRWYWx1ZSgwLCBOUFBWcGx1Z2luTmFt
ZVN0cmluZywgJmJ1ZmZlcik7CiAgICAgaWYgKGVycm9yID09IE5QRVJSX05PX0VSUk9SKQotICAg
ICAgICBwbHVnaW4uaW5mby5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIpOworICAgICAg
ICBtZXRhRGF0YS5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIpOwogCiAgICAgZXJyb3Ig
PSBOUFBfR2V0VmFsdWUoMCwgTlBQVnBsdWdpbkRlc2NyaXB0aW9uU3RyaW5nLCAmYnVmZmVyKTsK
ICAgICBpZiAoZXJyb3IgPT0gTlBFUlJfTk9fRVJST1IpCi0gICAgICAgIHBsdWdpbi5pbmZvLmRl
c2MgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlcik7CisgICAgICAgIG1ldGFEYXRhLmRlc2NyaXB0
aW9uID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIpOwogCiAgICAgU3RyaW5nIG1pbWVEZXNjcmlw
dGlvbiA9IFN0cmluZzo6ZnJvbVVURjgoTlBfR2V0TUlNRURlc2NyaXB0aW9uKCkpOwogICAgIGlm
IChtaW1lRGVzY3JpcHRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHNldE1JTUVEZXNjcmlwdGlvbihtaW1lRGVzY3JpcHRpb24sIHBsdWdpbik7CisgICAgbWV0YURh
dGEubWltZURlc2NyaXB0aW9uID0gbWltZURlc2NyaXB0aW9uOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CisKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3Ry
aW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCiB7Ci0gICAgLy8gVGVt
cGFyYXJpbHkgc3VwcHJlc3Mgc3Rkb3V0IGluIHRoaXMgZnVuY3Rpb24gYXMgcGx1Z2lucyB3aWxs
IGJlIGxvYWRlZCBhbmQgc2h1dGRvd24gYW5kIGRlYnVnIGluZm8KLSAgICAvLyBpcyBsZWFrZWQg
dG8gbGF5b3V0IHRlc3Qgb3V0cHV0LgotICAgIFN0ZG91dERldk51bGxSZWRpcmVjdG9yIHN0ZG91
dERldk51bGxSZWRpcmVjdG9yOwotCi0gICAgLy8gV2UgYXJlIGxvYWRpbmcgdGhlIHBsdWdpbiBo
ZXJlIHNpbmNlIGl0IGRvZXMgbm90IHNlZW0gdG8gYmUgYSBzdGFuZGFyZGl6ZWQgd2F5IHRvCi0g
ICAgLy8gZ2V0IHRoZSBuZWVkZWQgaW5mb3JtYXRpb25zIGZyb20gYSBVTklYIHBsdWdpbiB3aXRo
b3V0IGxvYWRpbmcgaXQuCi0gICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBwbHVnaW5N
b2R1bGUgPSBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUocGx1Z2luUGF0aCk7Ci0g
ICAgaWYgKCFwbHVnaW5Nb2R1bGUpCisgICAgUmF3UGx1Z2luTWV0YURhdGEgbWV0YURhdGE7Cisg
ICAgaWYgKCFQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4ocGx1Z2luUGF0aCwgbWV0YURh
dGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBwbHVnaW5Nb2R1bGUtPmluY3JlbWVu
dExvYWRDb3VudCgpOwotICAgIGJvb2wgcmV0dXJuVmFsdWUgPSBwbHVnaW5Nb2R1bGUtPmdldFBs
dWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4ocGx1Z2luKTsKLSAgICBwbHVnaW5Nb2R1bGUtPmRlY3Jl
bWVudExvYWRDb3VudCgpOworICAgIHBsdWdpbi5wYXRoID0gcGx1Z2luUGF0aDsKKyAgICBwbHVn
aW4uaW5mby5maWxlID0gcGF0aEdldEZpbGVOYW1lKHBsdWdpblBhdGgpOworICAgIHBsdWdpbi5p
bmZvLm5hbWUgPSBtZXRhRGF0YS5uYW1lOworICAgIHBsdWdpbi5pbmZvLmRlc2MgPSBtZXRhRGF0
YS5kZXNjcmlwdGlvbjsKKyAgICBwYXJzZU1JTUVEZXNjcmlwdGlvbihtZXRhRGF0YS5taW1lRGVz
Y3JpcHRpb24sIHBsdWdpbi5pbmZvLm1pbWVzKTsKIAotICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6ZGV0ZXJt
aW5lUXVpcmtzKCkKIHsKICNpZiBDUFUoWDg2XzY0KQotICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1
Z2luOwotICAgIGlmICghZ2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihwbHVnaW4pKQorICAg
IFJhd1BsdWdpbk1ldGFEYXRhIG1ldGFEYXRhOworICAgIGlmICghZ2V0UGx1Z2luSW5mb0Zvckxv
YWRlZFBsdWdpbihtZXRhRGF0YSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxNaW1l
Q2xhc3NJbmZvPiBtaW1lVHlwZXMgPSBwbHVnaW4uaW5mby5taW1lczsKKyAgICBWZWN0b3I8TWlt
ZUNsYXNzSW5mbz4gbWltZVR5cGVzOworICAgIHBhcnNlTUlNRURlc2NyaXB0aW9uKG1ldGFEYXRh
Lm1pbWVEZXNjcmlwdGlvbiwgbWltZVR5cGVzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1pbWVUeXBlcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAobWltZVR5cGVzW2ldLnR5cGUg
PT0gImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIikgewogICAgICAgICAgICAgbV9wbHVn
aW5RdWlya3MuYWRkKFBsdWdpblF1aXJrczo6SWdub3JlUmlnaHRDbGlja0luV2luZG93bGVzc01v
ZGUpOwpAQCAtMTg3LDYgKzEzNSw3MiBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpkZXRl
cm1pbmVRdWlya3MoKQogI2VuZGlmCiB9CiAKK3N0YXRpYyBTdHJpbmcgdHJ1bmNhdGVUb1Npbmds
ZUxpbmUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgQVNTRVJUX0FSRyhzdHJpbmcsICFz
dHJpbmcuaXM4Qml0KCkpOworCisgICAgdW5zaWduZWQgb2xkTGVuZ3RoID0gc3RyaW5nLmxlbmd0
aCgpOworICAgIFVDaGFyKiBidWZmZXI7CisgICAgU3RyaW5nIHN0cmluZ0J1ZmZlcihTdHJpbmdJ
bXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKG9sZExlbmd0aCArIDEsIGJ1ZmZlcikpOworCisgICAg
dW5zaWduZWQgbmV3TGVuZ2h0ID0gMDsKKyAgICBmb3IgKGNvbnN0IFVDaGFyKiBjID0gc3RyaW5n
LmNoYXJhY3RlcnMxNigpOyBjIDwgc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgb2xkTGVuZ3RoOyAr
K2MpIHsKKyAgICAgICAgaWYgKCpjICE9IFVDaGFyKCdcbicpKQorICAgICAgICAgICAgYnVmZmVy
W25ld0xlbmdodCsrXSA9ICpjOworICAgIH0KKyAgICBidWZmZXJbbmV3TGVuZ2h0KytdID0gVUNo
YXIoJ1xuJyk7CisKKyAgICBpZiAobmV3TGVuZ2h0ID09IG9sZExlbmd0aCArIDEpCisgICAgICAg
IHJldHVybiBzdHJpbmdCdWZmZXI7CisgICAgcmV0dXJuIFN0cmluZyhzdHJpbmdCdWZmZXIuY2hh
cmFjdGVyczE2KCksIG5ld0xlbmdodCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBwdXRDaGFy
VG9TdGRPdXQoY2hhciBjKQoreworICAgIGludCByZXN1bHQ7CisgICAgd2hpbGUgKChyZXN1bHQg
PSBmcHV0YyhjLCBzdGRvdXQpKSA9PSBFT0YgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQorICAgIEFT
U0VSVChyZXN1bHQgIT0gRU9GKTsKK30KKworYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2Nh
blBsdWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCit7CisgICAgLy8gV2UgYXJlIGxvYWRp
bmcgdGhlIHBsdWdpbiBoZXJlIHNpbmNlIGl0IGRvZXMgbm90IHNlZW0gdG8gYmUgYSBzdGFuZGFy
ZGl6ZWQgd2F5IHRvCisgICAgLy8gZ2V0IHRoZSBuZWVkZWQgaW5mb3JtYXRpb25zIGZyb20gYSBV
TklYIHBsdWdpbiB3aXRob3V0IGxvYWRpbmcgaXQuCisgICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2lu
TW9kdWxlPiBwbHVnaW5Nb2R1bGUgPSBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUo
cGx1Z2luUGF0aCk7CisgICAgaWYgKCFwbHVnaW5Nb2R1bGUpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHBsdWdpbk1vZHVsZS0+aW5jcmVtZW50TG9hZENvdW50KCk7CisgICAgUmF3UGx1
Z2luTWV0YURhdGEgbWV0YURhdGE7CisgICAgYm9vbCBzdWNjZXNzID0gcGx1Z2luTW9kdWxlLT5n
ZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKG1ldGFEYXRhKTsKKyAgICBwbHVnaW5Nb2R1bGUt
PmRlY3JlbWVudExvYWRDb3VudCgpOworCisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAvLyBXcml0ZSBkYXRhIHRvIHN0YW5kYXJkIG91dHB1dCBmb3IgdGhl
IFVJIHByb2Nlc3MuCisgICAgU3RyaW5nIG91dHB1dFszXSA9IHsKKyAgICAgICAgdHJ1bmNhdGVU
b1NpbmdsZUxpbmUobWV0YURhdGEubmFtZSksCisgICAgICAgIHRydW5jYXRlVG9TaW5nbGVMaW5l
KG1ldGFEYXRhLmRlc2NyaXB0aW9uKSwKKyAgICAgICAgdHJ1bmNhdGVUb1NpbmdsZUxpbmUobWV0
YURhdGEubWltZURlc2NyaXB0aW9uKQorICAgIH07CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IDM7ICsraSkgeworICAgICAgICBjb25zdCBTdHJpbmcmIGxpbmUgPSBvdXRwdXRbaV07Cisg
ICAgICAgIGNvbnN0IGNoYXIqIGN1cnJlbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihsaW5lLmNoYXJhY3RlcnMxNigpKTsKKyAgICAgICAgY29uc3QgY2hhciogZW5kID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4obGluZS5jaGFyYWN0ZXJzMTYoKSkgKyAobGluZS5sZW5n
dGgoKSAqIHNpemVvZihVQ2hhcikpOworICAgICAgICB3aGlsZSAoY3VycmVudCA8IGVuZCkgewor
ICAgICAgICAgICAgaW50IHJlc3VsdDsKKyAgICAgICAgICAgIHdoaWxlICgocmVzdWx0ID0gZnB1
dGMoKmN1cnJlbnQsIHN0ZG91dCkpID09IEVPRiAmJiBlcnJubyA9PSBFSU5UUikgeyB9CisgICAg
ICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEVPRik7CisgICAgICAgICAgICArK2N1cnJlbnQ7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBmZmx1c2goc3Rkb3V0KTsKKworICAgIHJldHVybiB0cnVl
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMVUdJTl9BUkNISVRF
Q1RVUkUoWDExKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1NoYXJlYWJs
ZUJpdG1hcFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBR
dC5jcHAKaW5kZXggMGM4YmUwNzJhNDYyZDYzZmMwNjI3MDhjMDFlYzVhNmZjMjFmZWQzYi4uNzc4
YmNmY2MxY2QyYzNkMjU5MGNiOGZmMzQxZjA4ZGM5ODc5MGNkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlIDxRSW1hZ2U+CiAjaW5jbHVkZSA8UVBhaW50ZXI+CisjaW5jbHVkZSA8UXRHbG9i
YWw+CiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
R3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpA
QCAtNzEsOCArNzIsMTMgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQmIGRzdFBvaW50LAogICAgIHBhaW50ZXItPmRy
YXdJbWFnZShkc3RQb2ludCwgaW1hZ2UsIFFSZWN0KHNyY1JlY3QpKTsKIH0KIAotdm9pZCBTaGFy
ZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgLypjb250ZXh0Ki8sIGZsb2F0IC8q
c2NhbGVGYWN0b3IqLywgY29uc3QgSW50UG9pbnQmIC8qZHN0UG9pbnQqLywgY29uc3QgSW50UmVj
dCYgLypzcmNSZWN0Ki8pCit2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgSW50UG9pbnQmIGRzdFBvaW50
LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQogeworICAgIGlmIChxRnV6enlDb21wYXJlKHNjYWxl
RmFjdG9yLCAxKSkgeworICAgICAgICBwYWludChjb250ZXh0LCBkc3RQb2ludCwgc3JjUmVjdCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDY2Mz4uCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9U
YXJnZXQucHJpCmluZGV4IDIyNjE2MGZiYzczZmEyMDA5NGI1MGRjMmU4NzUzYTJmMGRlNDYwNTYu
LjBiYWQ2Y2YyNmQ4ZjMzMGFiY2ExZTkwZTczYTNiZDViZjZjNGRkMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpA
QCAtMzQsNiArMzQsNyBAQCBIRUFERVJTICs9IFwKICAgICBQbGF0Zm9ybS9TaGFyZWRNZW1vcnku
aCBcCiAgICAgUGxhdGZvcm0vV29ya1F1ZXVlLmggXAogICAgIFBsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5LmggXAorICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJh
bWV0ZXJzLmggXAogICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oIFwKICAgICBQbHVn
aW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmggXAogICAgIFNoYXJlZC9BUEkvYy9XS0Jh
c2UuaCBcCkBAIC0zNzksNiArMzgwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgUGxhdGZvcm0vV29y
a1F1ZXVlLmNwcCBcCiAgICAgUGxhdGZvcm0vcXQvTW9kdWxlUXQuY3BwIFwKICAgICBQbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgXAorICAgIFBsdWdpblByb2Nlc3MvUGx1
Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBcCiAgICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9j
ZXNzLmNwcCBcCiAgICAgUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgXAog
ICAgIFBsdWdpblByb2Nlc3MvcXQvUGx1Z2luQ29udHJvbGxlclByb3h5UXQuY3BwIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaApp
bmRleCAwOWM1NTg5ZjM4ODgxNTBlNTkxY2I5ZjNlMDcxMzg0NTQyYzc5NzJmLi4wMjViZmNmOWRm
MjRmMGEwYWJjYmFmYzhiMTY0YjU3ODIyMjlhNGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCkBAIC02OSw2ICs2OSwxMCBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBnZXRQcm9jZXNzVHlwZUZyb21TdHJpbmcoY29u
c3QgY2hhciosIFByb2Nlc3NUeXBlJik7CiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkK
KyAgICBzdGF0aWMgU3RyaW5nIGV4ZWN1dGFibGVQYXRoKFByb2Nlc3NUeXBlKTsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIFByb2Nlc3NMYXVuY2hlcihDbGllbnQqLCBjb25zdCBMYXVuY2hPcHRp
b25zJiBsYXVuY2hPcHRpb25zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCmluZGV4IDk0Y2Fk
NWZjNDQ4MjBkYTE5OGRhODcxY2NiZDZmYTQ3ZTQzODliMmIuLjU1MDdmY2QxOTRlNjYyNTgzNDE2
Nzg2MjM3MWZiNjRjMzNiNDliNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKQEAgLTc3LDEz
ICs3NywxMyBAQCBzdGF0aWMgdm9pZCBjaGlsZEZpbmlzaGVkRnVuY3Rpb24oR1BpZCwgZ2ludCBz
dGF0dXMsIGdwb2ludGVyIHVzZXJEYXRhKQogICAgIGNsb3NlKEdQT0lOVEVSX1RPX0lOVCh1c2Vy
RGF0YSkpOwogfQogCi1zdGF0aWMgQ1N0cmluZyBmaW5kV2ViS2l0UHJvY2Vzcyhjb25zdCBjaGFy
KiBwcm9jZXNzTmFtZSkKK3N0YXRpYyBTdHJpbmcgZmluZFdlYktpdFByb2Nlc3MoY29uc3QgY2hh
ciogcHJvY2Vzc05hbWUpCiB7CiAgICAgY29uc3QgY2hhciogZXhlY0RpcmVjdG9yeSA9IGdfZ2V0
ZW52KCJXRUJLSVRfRVhFQ19QQVRIIik7CiAgICAgaWYgKGV4ZWNEaXJlY3RvcnkpIHsKICAgICAg
ICAgU3RyaW5nIHByb2Nlc3NQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZpbGVuYW1l
VG9TdHJpbmcoZXhlY0RpcmVjdG9yeSksIHByb2Nlc3NOYW1lKTsKICAgICAgICAgaWYgKGZpbGVF
eGlzdHMocHJvY2Vzc1BhdGgpKQotICAgICAgICAgICAgcmV0dXJuIGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwcm9jZXNzUGF0aCk7CisgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc1BhdGg7CiAg
ICAgfQogCiAgICAgc3RhdGljIGJvb2wgZ290RXhlY3V0YWJsZVBhdGggPSBmYWxzZTsKQEAgLTk5
LDEwICs5OSwxNSBAQCBzdGF0aWMgQ1N0cmluZyBmaW5kV2ViS2l0UHJvY2Vzcyhjb25zdCBjaGFy
KiBwcm9jZXNzTmFtZSkKICAgICBpZiAoIWV4ZWN1dGFibGVQYXRoLmlzTnVsbCgpKSB7CiAgICAg
ICAgIFN0cmluZyBwcm9jZXNzUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChleGVjdXRh
YmxlUGF0aCwgcHJvY2Vzc05hbWUpOwogICAgICAgICBpZiAoZmlsZUV4aXN0cyhwcm9jZXNzUGF0
aCkpCi0gICAgICAgICAgICByZXR1cm4gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByb2Nlc3NQ
YXRoKTsKKyAgICAgICAgICAgIHJldHVybiBwcm9jZXNzUGF0aDsKICAgICB9CiAKLSAgICByZXR1
cm4gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmaWxl
bmFtZVRvU3RyaW5nKExJQkVYRUNESVIpLCBwcm9jZXNzTmFtZSkpOworICAgIHJldHVybiBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZmlsZW5hbWVUb1N0cmluZyhMSUJFWEVDRElSKSwgcHJvY2Vz
c05hbWUpOworfQorCitTdHJpbmcgUHJvY2Vzc0xhdW5jaGVyOjpleGVjdXRhYmxlUGF0aChQcm9j
ZXNzVHlwZSB0eXBlKQoreworICAgIHJldHVybiBmaW5kV2ViS2l0UHJvY2Vzcyh0eXBlID09IFBy
b2Nlc3NMYXVuY2hlcjo6V2ViUHJvY2VzcyA/IGdXZWJLaXRXZWJQcm9jZXNzTmFtZSA6IGdXZWJL
aXRQbHVnaW5Qcm9jZXNzTmFtZSk7CiB9CiAKIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQ
cm9jZXNzKCkKQEAgLTExNiw3ICsxMjEsNyBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNo
UHJvY2VzcygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDU3RyaW5nIGJpbmFyeVBh
dGggPSBmaW5kV2ViS2l0UHJvY2VzcyhtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gUHJv
Y2Vzc0xhdW5jaGVyOjpXZWJQcm9jZXNzID8gZ1dlYktpdFdlYlByb2Nlc3NOYW1lIDogZ1dlYktp
dFBsdWdpblByb2Nlc3NOYW1lKTsKKyAgICBDU3RyaW5nIGJpbmFyeVBhdGggPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGgobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBl
KSk7CiAgICAgR093blB0cjxnY2hhcj4gc29ja2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBzb2Nr
ZXRzWzBdKSk7CiAgICAgY2hhciogYXJndlszXTsKICAgICBhcmd2WzBdID0gY29uc3RfY2FzdDxj
aGFyKj4oYmluYXJ5UGF0aC5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAKaW5kZXggOGU4MjYy
MDYzNjdlZWQ4ZWIxYzI1Y2UyZjRiNDU2NGIwOGY3NGEwOC4uZWQxMDgxOTNmMTQyMmFiNTYyOTM5
MzRhMTkxNWJmNDAyYTY2OTNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+
CiAjaW5jbHVkZSA8UURlYnVnPgorI2luY2x1ZGUgPFFEaXI+CiAjaW5jbHVkZSA8UUZpbGU+CiAj
aW5jbHVkZSA8UUxvY2FsU2VydmVyPgogI2luY2x1ZGUgPFFNZXRhVHlwZT4KQEAgLTczLDYgKzc0
LDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
U3RyaW5nIFByb2Nlc3NMYXVuY2hlcjo6ZXhlY3V0YWJsZVBhdGgoUHJvY2Vzc1R5cGUgdHlwZSkK
K3sKKyAgICBRTGF0aW4xU3RyaW5nIGJhc2VOYW1lKHR5cGUgPT0gV2ViUHJvY2VzcyA/IFFTdHJp
bmdMaXRlcmFsKCJRdFdlYlByb2Nlc3MiKSA6IFFTdHJpbmdMaXRlcmFsKCJRdFdlYlBsdWdpblBy
b2Nlc3MiKSk7CisgICAgUVN0cmluZyBleHBlY3RlZFBhdGggPSBRQ29yZUFwcGxpY2F0aW9uOjph
cHBsaWNhdGlvbkRpclBhdGgoKSArIFFEaXI6OnNlcGFyYXRvcigpICsgYmFzZU5hbWU7CisgICAg
aWYgKFFGaWxlOjpleGlzdHMoZXhwZWN0ZWRQYXRoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZyhl
eHBlY3RlZFBhdGgpOyAgICAKKyAgICByZXR1cm4gU3RyaW5nKFFTdHJpbmcoYmFzZU5hbWUpKTsK
K30KKwogY2xhc3MgUXRXZWJQcm9jZXNzIDogcHVibGljIFFQcm9jZXNzCiB7CiAgICAgUV9PQkpF
Q1QKQEAgLTEwMiwxMyArMTEyLDggQEAgdm9pZCBRdFdlYlByb2Nlc3M6OnNldHVwQ2hpbGRQcm9j
ZXNzKCkKIAogdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogewotICAgIFFT
dHJpbmcgYXBwbGljYXRpb25QYXRoID0gUUxhdGluMVN0cmluZygiJTEgJTIiKTsKLQotICAgIGlm
IChRRmlsZTo6ZXhpc3RzKFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uRGlyUGF0aCgpICsg
UUxhdGluMVN0cmluZygiL1F0V2ViUHJvY2VzcyIpKSkgewotICAgICAgICBhcHBsaWNhdGlvblBh
dGggPSBhcHBsaWNhdGlvblBhdGguYXJnKFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uRGly
UGF0aCgpICsgUUxhdGluMVN0cmluZygiL1F0V2ViUHJvY2VzcyIpKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBhcHBsaWNhdGlvblBhdGggPSBhcHBsaWNhdGlvblBhdGguYXJnKFFMYXRpbjFTdHJp
bmcoIlF0V2ViUHJvY2VzcyIpKTsKLSAgICB9CisgICAgUVN0cmluZyBjb21tYW5kTGluZSA9IFFM
YXRpbjFTdHJpbmcoIiUxICUyIik7CisgICAgY29tbWFuZExpbmUgPSBjb21tYW5kTGluZS5hcmco
ZXhlY3V0YWJsZVBhdGgobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlKSk7CiAKICNpZiBPUyhE
QVJXSU4pCiAgICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcgcG9ydC4KQEAgLTEyNCw3ICsxMjks
NyBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAga2Vybl9yZXR1
cm5fdCBrciA9IGJvb3RzdHJhcF9yZWdpc3RlcjIoYm9vdHN0cmFwX3BvcnQsIGNvbnN0X2Nhc3Q8
Y2hhcio+KHNlcnZpY2VOYW1lLnRvVXRmOCgpLmRhdGEoKSksIGNvbm5lY3RvciwgMCk7CiAgICAg
QVNTRVJUX1VOVVNFRChrciwga3IgPT0gS0VSTl9TVUNDRVNTKTsKIAotICAgIFFTdHJpbmcgcHJv
Z3JhbShhcHBsaWNhdGlvblBhdGguYXJnKHNlcnZpY2VOYW1lKSk7CisgICAgY29tbWFuZExpbmUg
PSBjb21tYW5kTGluZS5hcmcoc2VydmljZU5hbWUpOwogI2Vsc2UKICAgICBpbnQgc29ja2V0c1sy
XTsKICAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykg
PT0gLTEpIHsKQEAgLTE0NCwxMiArMTQ5LDEyIEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVu
Y2hQcm9jZXNzKCkKICAgICB9CiAKICAgICBpbnQgY29ubmVjdG9yID0gc29ja2V0c1sxXTsKLSAg
ICBRU3RyaW5nIHByb2dyYW0oYXBwbGljYXRpb25QYXRoLmFyZyhzb2NrZXRzWzBdKSk7CisgICAg
Y29tbWFuZExpbmUgPSBjb21tYW5kTGluZS5hcmcoc29ja2V0c1swXSk7CiAjZW5kaWYKIAogICAg
IFFQcm9jZXNzKiB3ZWJQcm9jZXNzID0gbmV3IFF0V2ViUHJvY2VzcygpOwogICAgIHdlYlByb2Nl
c3MtPnNldFByb2Nlc3NDaGFubmVsTW9kZShRUHJvY2Vzczo6Rm9yd2FyZGVkQ2hhbm5lbHMpOwot
ICAgIHdlYlByb2Nlc3MtPnN0YXJ0KHByb2dyYW0pOworICAgIHdlYlByb2Nlc3MtPnN0YXJ0KGNv
bW1hbmRMaW5lKTsKIAogI2lmICFPUyhEQVJXSU4pCiAgICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSB3
ZWIgc29ja2V0IHRvIHBvc3NpYmxlIGZ1dHVyZSB3ZWIgcHJvY2Vzc2VzCkBAIC0xNjMsNyArMTY4
LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogI2VuZGlmCiAKICAg
ICBpZiAoIXdlYlByb2Nlc3MtPndhaXRGb3JTdGFydGVkKCkpIHsKLSAgICAgICAgcURlYnVnKCkg
PDwgIkZhaWxlZCB0byBzdGFydCIgPDwgcHJvZ3JhbTsKKyAgICAgICAgcURlYnVnKCkgPDwgIkZh
aWxlZCB0byBzdGFydCIgPDwgY29tbWFuZExpbmU7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogI2lmIE9TKERBUldJTikKICAgICAgICAgbWFjaF9wb3J0X2RlYWxsb2NhdGUobWFjaF90
YXNrX3NlbGYoKSwgY29ubmVjdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKaW5kZXggYTc1ZDViMTM4N2NkOGJkYTlk
YzUyMzEyZDgyNmY0YWEwYjQ2OTY1Ni4uNDQyM2Q0N2YwOWE5YmIyOTE2NDg3NjVlZGE3YjA4NmVi
NTRhYjdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc1Byb3h5LmgKQEAgLTUyLDYgKzUyLDE0IEBAIGNsYXNzIFdlYlBsdWdpblNp
dGVEYXRhTWFuYWdlcjsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIHN0cnVjdCBQbHVnaW5Qcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCitz
dHJ1Y3QgUmF3UGx1Z2luTWV0YURhdGEgeworICAgIFN0cmluZyBuYW1lOworICAgIFN0cmluZyBk
ZXNjcmlwdGlvbjsKKyAgICBTdHJpbmcgbWltZURlc2NyaXB0aW9uOworfTsKKyNlbmRpZgorCiBj
bGFzcyBQbHVnaW5Qcm9jZXNzUHJveHkgOiBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIFBy
b2Nlc3NMYXVuY2hlcjo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxQ
bHVnaW5Qcm9jZXNzUHJveHk+IGNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0IFBs
dWdpbk1vZHVsZUluZm8mKTsKQEAgLTgwLDYgKzg4LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Ym9vbCBjcmVhdGVQcm9wZXJ0eUxpc3RGaWxlKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKICNl
bmRpZgogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgc3RhdGljIGJvb2wgc2Nh
blBsdWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFJhd1BsdWdpbk1ldGFEYXRhJiByZXN1
bHQpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblBy
b2Nlc3NNYW5hZ2VyKiwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNz
UHJveHlHdGsuY3BwCmluZGV4IDRjODU3NzJhMjdmN2I3MDcyYWZmNmExMTM3YzkyNzQ4ODVhOGY2
NDMuLmZjZTkzNmM2ZjlkMmNiOTMzY2I0MjYxMGEyZWY2OTM5NWNjOTVlZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Q
cm9jZXNzUHJveHlHdGsuY3BwCkBAIC0yOSwxMyArMjksNTMgQEAKICNpZiBFTkFCTEUoUExVR0lO
X1BST0NFU1MpCiAKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgIlByb2Nlc3NM
YXVuY2hlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPGds
aWIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgUGx1Z2luUHJv
Y2Vzc1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKworYm9vbCBQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBw
bHVnaW5QYXRoLCBSYXdQbHVnaW5NZXRhRGF0YSYgcmVzdWx0KQoreworICAgIENTdHJpbmcgYmlu
YXJ5UGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihQcm9jZXNzTGF1bmNoZXI6OmV4ZWN1
dGFibGVQYXRoKFByb2Nlc3NMYXVuY2hlcjo6UGx1Z2luUHJvY2VzcykpOworICAgIENTdHJpbmcg
cGx1Z2luUGF0aENTdHJpbmcgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGx1Z2luUGF0aCk7
CisgICAgY2hhciogYXJndls0XTsKKyAgICBhcmd2WzBdID0gY29uc3RfY2FzdDxjaGFyKj4oYmlu
YXJ5UGF0aC5kYXRhKCkpOworICAgIGFyZ3ZbMV0gPSBjb25zdF9jYXN0PGNoYXIqPigiLXNjYW5Q
bHVnaW4iKTsKKyAgICBhcmd2WzJdID0gY29uc3RfY2FzdDxjaGFyKj4ocGx1Z2luUGF0aENTdHJp
bmcuZGF0YSgpKTsKKyAgICBhcmd2WzNdID0gMDsKKworICAgIEdPd25QdHI8R0Vycm9yPiBlcnJv
cjsKKyAgICBnaW50IHN0YXR1czsKKyAgICBnY2hhciogc3RkT3V0OworICAgIGlmICghZ19zcGF3
bl9zeW5jKDAsIGFyZ3YsIDAsIEdfU1BBV05fU1RERVJSX1RPX0RFVl9OVUxMLCAwLCAwLCAmc3Rk
T3V0LCAwLCAmc3RhdHVzLCAmZXJyb3Iub3V0UHRyKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFXSUZFWElURUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IEVY
SVRfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgdW5zaWduZWQg
a051bUxpbmVzRXhwZWN0ZWQgPSAzOworICAgIFN0cmluZyBsaW5lc1trTnVtTGluZXNFeHBlY3Rl
ZF07CisgICAgdW5zaWduZWQgbGluZUluZGV4ID0gMDsKKyAgICBjb25zdCBVQ2hhciogY3VycmVu
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzdGRPdXQpOworICAgIHdoaWxlIChs
aW5lSW5kZXggPCBrTnVtTGluZXNFeHBlY3RlZCkgeworICAgICAgICBjb25zdCBVQ2hhciogc3Rh
cnQgPSBjdXJyZW50OworICAgICAgICB3aGlsZSAoKmN1cnJlbnQrKyAhPSBVQ2hhcignXG4nKSkg
eyB9CisgICAgICAgIGxpbmVzW2xpbmVJbmRleCsrXSA9IFN0cmluZyhzdGFydCwgY3VycmVudCAt
IHN0YXJ0IC0gMSk7CisgICAgfQorCisgICAgcmVzdWx0Lm5hbWUuc3dhcChsaW5lc1swXSk7Cisg
ICAgcmVzdWx0LmRlc2NyaXB0aW9uLnN3YXAobGluZXNbMV0pOworICAgIHJlc3VsdC5taW1lRGVz
Y3JpcHRpb24uc3dhcChsaW5lc1syXSk7CisgICAgcmV0dXJuICFyZXN1bHQubWltZURlc2NyaXB0
aW9uLmlzRW1wdHkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJv
eHlRdC5jcHAKaW5kZXggY2M1MjFlMGFmOWE2YTA3NDRjMmRjMGUwNmY2NTE0ZmM5NGIzNDlmOC4u
ZDY5YjhmYTA4MGVjNWY2ZjgxMmMzNzM1MmRiYjVjNGUxZDAyZGNlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2luUHJvY2Vzc1Byb3h5UXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3F0L1BsdWdpblByb2Nlc3NQ
cm94eVF0LmNwcApAQCAtMjgsMTQgKzI4LDUyIEBACiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NF
U1MpCiAKLSNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hl
ci5oIgorI2luY2x1ZGUgPFFCeXRlQXJyYXk+CisjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4K
KyNpbmNsdWRlIDxRRGlyPgorI2luY2x1ZGUgPFFFdmVudExvb3A+CisjaW5jbHVkZSA8UVByb2Nl
c3M+CisjaW5jbHVkZSA8UVN0cmluZz4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFBs
dWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CisKIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5
OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9v
bCBQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRo
LCBSYXdQbHVnaW5NZXRhRGF0YSYgcmVzdWx0KQoreworICAgIFFTdHJpbmcgY29tbWFuZExpbmUg
PSBRTGF0aW4xU3RyaW5nKCIlMSAlMiAlMyIpOworICAgIGNvbW1hbmRMaW5lID0gY29tbWFuZExp
bmUuYXJnKFByb2Nlc3NMYXVuY2hlcjo6ZXhlY3V0YWJsZVBhdGgoUHJvY2Vzc0xhdW5jaGVyOjpQ
bHVnaW5Qcm9jZXNzKSk7CisgICAgY29tbWFuZExpbmUgPSBjb21tYW5kTGluZS5hcmcoUVN0cmlu
Z0xpdGVyYWwoIi1zY2FuUGx1Z2luIikpLmFyZyhzdGF0aWNfY2FzdDxRU3RyaW5nPihwbHVnaW5Q
YXRoKSk7CisKKyAgICBRUHJvY2VzcyogcHJvY2VzcyA9IG5ldyBRUHJvY2VzczsKKyAgICBRT2Jq
ZWN0Ojpjb25uZWN0KHByb2Nlc3MsIFNJR05BTChmaW5pc2hlZChpbnQpKSwgcHJvY2VzcywgU0xP
VChkZWxldGVMYXRlcigpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworICAgIHByb2Nlc3MtPnNl
dFJlYWRDaGFubmVsKFFQcm9jZXNzOjpTdGFuZGFyZE91dHB1dCk7CisgICAgcHJvY2Vzcy0+c3Rh
cnQoY29tbWFuZExpbmUpOworCisgICAgaWYgKCFwcm9jZXNzLT53YWl0Rm9yRmluaXNoZWQoKQor
ICAgICAgICB8fCBwcm9jZXNzLT5leGl0U3RhdHVzKCkgIT0gUVByb2Nlc3M6Ok5vcm1hbEV4aXQK
KyAgICAgICAgfHwgcHJvY2Vzcy0+ZXhpdENvZGUoKSAhPSBFWElUX1NVQ0NFU1MpIHsKKyAgICAg
ICAgcHJvY2Vzcy0+a2lsbCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
UUJ5dGVBcnJheSBvdXRwdXRCeXRlcyA9IHByb2Nlc3MtPnJlYWRBbGwoKTsKKyAgICBBU1NFUlQo
IShvdXRwdXRCeXRlcy5zaXplKCkgJSBzaXplb2YoVUNoYXIpKSk7CisKKyAgICBTdHJpbmcgb3V0
cHV0KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihvdXRwdXRCeXRlcy5jb25zdERhdGEo
KSksIG91dHB1dEJ5dGVzLnNpemUoKSAvIHNpemVvZihVQ2hhcikpOworICAgIFZlY3RvcjxTdHJp
bmc+IGxpbmVzOworICAgIG91dHB1dC5zcGxpdChVQ2hhcignXG4nKSwgbGluZXMpOworICAgIEFT
U0VSVChsaW5lcy5zaXplKCkgPT0gMyk7CisKKyAgICByZXN1bHQubmFtZS5zd2FwKGxpbmVzWzBd
KTsKKyAgICByZXN1bHQuZGVzY3JpcHRpb24uc3dhcChsaW5lc1sxXSk7CisgICAgcmVzdWx0Lm1p
bWVEZXNjcmlwdGlvbi5zd2FwKGxpbmVzWzJdKTsKKyAgICByZXR1cm4gIXJlc3VsdC5taW1lRGVz
Y3JpcHRpb24uaXNFbXB0eSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJy
b3dzZXJGdW5jcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCmluZGV4IGJkYzZlOWRlOWUxMjU0NGIwYTA0MjNk
MDRkOWUyYjY0NGQ4MzljZDEuLmQxMjEzODhmNTA4MGYwMTlmMTM5M2M3ZmUxM2FiNDc5ZjEzYjBm
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNTUxLDIzICs1
NTEsOSBAQCBzdGF0aWMgTlBFcnJvciBOUE5fR2V0VmFsdWUoTlBQIG5wcCwgTlBOVmFyaWFibGUg
dmFyaWFibGUsIHZvaWQgKnZhbHVlKQogICAgICAgICAgICBicmVhazsKIAogICAgICAgIGNhc2Ug
TlBOVlRvb2xraXQ6IHsKLSNpZiBQTEFURk9STShHVEspCi0gICAgICAgICAgICpyZWludGVycHJl
dF9jYXN0PHVpbnQzMl90Kj4odmFsdWUpID0gMjsKLSNlbHNlCi0gICAgICAgICAgIGNvbnN0IHVp
bnQzMl90IGV4cGVjdGVkR1RLVG9vbEtpdFZlcnNpb24gPSAyOwotCi0gICAgICAgICAgIC8vIFNl
dCB0aGUgZXhwZWN0ZWQgR1RLIHZlcnNpb24gaWYgd2Uga25vdyB0aGF0IHRoaXMgcGx1Z2luIG5l
ZWRzIGl0IG9yIGlmIHRoZSBwbHVnaW4gY2FsbCB1cwotICAgICAgICAgICAvLyB3aXRoIGEgbnVs
bCBpbnN0YW5jZS4gVGhlIGxhdHRlciBpcyB0aGUgY2FzZSB3aXRoIE5TUGx1Z2luV3JhcHBlciBw
bHVnaW5zLgotICAgICAgICAgICBib29sIHJlcXVpcmVzR1RLVG9vbEtpdFZlcnNpb247Ci0gICAg
ICAgICAgIGlmICghbnBwKQotICAgICAgICAgICAgICAgcmVxdWlyZXNHVEtUb29sS2l0VmVyc2lv
biA9IHRydWU7Ci0gICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgUmVmUHRyPE5ldHNj
YXBlUGx1Z2luPiBwbHVnaW4gPSBOZXRzY2FwZVBsdWdpbjo6ZnJvbU5QUChucHApOwotICAgICAg
ICAgICAgICAgcmVxdWlyZXNHVEtUb29sS2l0VmVyc2lvbiA9IHBsdWdpbi0+cXVpcmtzKCkuY29u
dGFpbnMoUGx1Z2luUXVpcmtzOjpSZXF1aXJlc0dUS1Rvb2xLaXQpOwotICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZSkgPSByZXF1aXJl
c0dUS1Rvb2xLaXRWZXJzaW9uID8gZXhwZWN0ZWRHVEtUb29sS2l0VmVyc2lvbiA6IDA7Ci0jZW5k
aWYKKyAgICAgICAgICAgLy8gR3RrIGJhc2VkIHBsdWdpbnMgbmVlZCB0byBiZSBhc3N1cmVkIGFi
b3V0IHRoZSB0b29sa2l0IHZlcnNpb24uCisgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IGV4cGVj
dGVkR3RrVG9vbEtpdFZlcnNpb24gPSAyOworICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDx1
aW50MzJfdCo+KHZhbHVlKSA9IGV4cGVjdGVkR3RrVG9vbEtpdFZlcnNpb247CiAgICAgICAgICAg
IGJyZWFrOwogICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvcXQvUGx1Z2lu
TWFpblF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL3F0L1BsdWdpbk1haW5RdC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2Q1YzkzYjU3YjNiOWVjZTU0MzZjMDZkMTc2NDMzYmQyNjlhOTFkMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL3F0L1BsdWdpbk1haW5RdC5jcHAKQEAgLTAsMCArMSwzOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
PFFMaWJyYXJ5PgorI2luY2x1ZGUgPFF0R2xvYmFsPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK1Ff
REVDTF9JTVBPUlQgaW50IFBsdWdpblByb2Nlc3NNYWluKGludCBhcmdjLCBjaGFyKiogYXJndik7
Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICByZXR1cm4gV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzTWFpbihhcmdjLCBhcmd2KTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxMmVhZGIzNTljZDI4YjdkOGQ1NDNk
MmQ5OTJiNDE4MTcwOTIzNzQ0Li5iMmQ4NmY3M2IzZThlODExNzgzYjA1OWMwYWM3MjJlMGJhOTE0
NjcwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTItMDMtMDggIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJr
aXQub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBTZXQgdXAgcGx1Z2luIHByb2Nlc3Mgb24gVW5p
eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxMjEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHFtYWtl
L21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmOiBSZWVuYWJsZSBwbHVnaW5zCisgICAgICAg
IGFuZCB0dXJuIG9uIHBsdWdpbiBwcm9jZXNzLgorCiAyMDEyLTAzLTA4ICBTaGVyaWZmIEJvdCAg
PHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTEwMTE1LgpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJl
cy9mZWF0dXJlcy5wcmYgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnBy
ZgppbmRleCA4NWU5YTRhMDgzNGEwMDk5N2E0ZTE1ZmRjNTVhODA4MjIwYzA3YjFkLi44NTY2NjMy
MzQ3ZDUwYmZjZjI0NTYwOGRiZmIwODVkZDczZGE5MGM3IDEwMDY0NAotLS0gYS9Ub29scy9xbWFr
ZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgorKysgYi9Ub29scy9xbWFrZS9ta3NwZWNz
L2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgpAQCAtMTI0LDEyICsxMjQsMTEgQEAgaGF2ZVF0KDUpIHsK
ICAgICBub193ZWJraXQyIHsKICAgICAgICAgREVGSU5FUyArPSBQTFVHSU5fQVJDSElURUNUVVJF
X1VOU1VQUE9SVEVEPTEKICAgICB9IGVsc2UgewotICAgICAgICAjIERpc2FibGUgeGxpYiBwbHVn
aW5zIHdoaWxlIHRoZXkncmUgaW4tcHJvY2VzcywgYmVjYXVzZSB0aGV5IGNyYXNoCi0gICAgICAg
ICMgYXMgc29vbiBhcyBhbiBpbnN0YWxsZWQgbnBhcGkgcGx1Z2luIHVzZXMgUXQgNC4KLSAgICAg
ICAgZmFsc2U6Y29udGFpbnMoUVRfQ09ORklHLCB4Y2IteGxpYikgeworICAgICAgICBjb250YWlu
cyhRVF9DT05GSUcsIHhjYi14bGliKSB7CiAgICAgICAgICAgICBDT05GSUcgKz0gcGx1Z2luX2Jh
Y2tlbmRfeGxpYgogICAgICAgICAgICAgREVGSU5FUyArPSBQTFVHSU5fQVJDSElURUNUVVJFX1gx
MT0xIFwKLSAgICAgICAgICAgICAgICAgICAgICAgUExVR0lOX0FSQ0hJVEVDVFVSRV9VTlNVUFBP
UlRFRD0wCisgICAgICAgICAgICAgICAgICAgICAgIFBMVUdJTl9BUkNISVRFQ1RVUkVfVU5TVVBQ
T1JURUQ9MCBcCisgICAgICAgICAgICAgICAgICAgICAgIEVOQUJMRV9QTFVHSU5fUFJPQ0VTUz0x
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBERUZJTkVTICs9IFBMVUdJTl9BUkNISVRF
Q1RVUkVfVU5TVVBQT1JURUQ9MQogICAgICAgICB9CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9D
aGFuZ2VMb2cKaW5kZXggNTE4MDc0ZWRmYjYwYWM4MzkzNTBlYWUxOWU1OTg4OWUyOThjMGY4Mi4u
MTliOGY0Nzg5M2JlYmVkYzM5MTMyMzU2YmY2ZGRhNWU2NTFkMzFhYSAxMDA2NDQKLS0tIGEvQ2hh
bmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAzLTA4ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdW1dLMl0gU2V0
IHVwIHBsdWdpbiBwcm9jZXNzIG9uIFVuaXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcyMTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvUXRXZWJLaXQucHJvOiBBZGQgUGx1Z2luUHJvY2Vz
cyBzdWJwcm9qZWN0LgorCiAyMDEyLTAzLTA1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFR1cm4gUnVucyBjbGFzcyBpbnRvIGEgcHJvcGVyIG1vZGVsIHRvIGlt
cGxlbWVudCBpbmNyZW1lbnRhbCBKU09OIHVwZGF0ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131033</attachid>
            <date>2012-03-09 05:36:40 -0800</date>
            <delta_ts>2012-03-09 08:56:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72121-20120309143638.patch</filename>
            <type>text/plain</type>
            <size>50833</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjNmMGU2MjdkZTBmZGRh
ZjIzOWZlOTczNDdjZjAzYjVjNzczNWYzNS4uN2FiN2I5NWFkYzhmZjc1NTFlZjVjNDhjZGIwMjk0
ZWU0NTE4MTg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxMi0wMy0wOSAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIFNl
dCB1cCBwbHVnaW4gcHJvY2VzcyBvbiBVbml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MjEyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNldHVwIHBsdWdpbiBwcm9jZXNzIGZvciBRdCBhbmQgbW92ZSB0
aGUgdGFzayBvZiBxdWVyeWluZyB0aGUgcGx1Z2lucworICAgICAgICB0byB0aGlzIHByb2Nlc3Mg
aW4gb3JkZXIgdG8gYXZvaWQgY3Jhc2hlcyBkdWUgdG8gcGx1Z2luIGJ1Z3Mgb3IgbGlicmFyeQor
ICAgICAgICBpbmNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzLnBybzogQWRkZWQuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9j
ZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3NNYWluR3RrKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nl
c3NNYWluUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjptZXNzYWdlSGFuZGxlcik6CisgICAgICAg
IChXZWJLaXQ6OmluaXRpYWxpemVHdGspOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luUHJvY2Vzc01haW4pOgorICAgICAgICBJbXBsZW1lbnQgZW50cnkgcG9pbnQg
b2YgdGhlIHBsdWdpbiBwcm9jZXNzLgorICAgICAgICBIYW5kbGUgLXNjYW5QbHVnaW4gY29tbWFu
ZCBsaW5lIHN3aXRjaDogcHJvZHVjZSBtZXRhIGRhdGEKKyAgICAgICAgb2YgcGx1Z2luIG9uIHN0
YW5kYXJkIG91dHB1dCBhbmQgdGVybWluYXRlLiBNb3ZlIEd0ayBpbml0aWFsaXphdGlvbgorICAg
ICAgICBoYWNrIHRvIHRoZXJlLgorCisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6dHJ5TG9hZCk6CisgICAgICAgIEdldCByaWQgb2YgdGhlIEd0ayBpbml0aWFsaXph
dGlvbiBoYWNrLiBXZSBkbyBub3QgbmVhZCBpdCBoZXJlIGFueW1vcmUuCisKKyAgICAgICAgKiBT
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKE5ldHNjYXBlUGx1Z2luTW9kdWxlKToKKyAgICAgICAgKiBTaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpwYXJzZU1JTUVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQ
bHVnaW5JbmZvKToKKyAgICAgICAgR2V0IHBsdWdpbiBtZXRhIGRhdGEgdmlhIFBsdWdpblByb2Nl
c3Nwcm94eS4gSWYgYSBmYWlsdXJlCisgICAgICAgIGhhcHBlbmVkIHdlIGlnbm9yZSB0byB1c2Ug
dGhlIHBsdWdpbi4gUmVtb3ZlIHRoZSBjb25jZXB0CisgICAgICAgIG9mIHN0ZG91dCByZWRpcmVj
dGlvbiBzaW5jZSB3ZSBjYW4gY29udHJvbCBpdCB3aGVuIGxhdW5jaGluZworICAgICAgICB0aGUg
cHJvY2Vzcy4KKworICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6ZGV0ZXJt
aW5lUXVpcmtzKToKKyAgICAgICAgKFdlYktpdDo6dHJ1bmNhdGVUb1NpbmdsZUxpbmUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2NhblBsdWdpbik6CisgICAgICAg
IFByb2R1Y2UgcGx1Z2luIG1ldGEgZGF0YSBvbiBzdGFuZGFyZCBvdXRwdXQuCisKKyAgICAgICAg
KiBTaGFyZWQvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKiBTaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHA6IEFk
ZGVkLgorICAgICAgICAoZmluZFdlYktpdFByb2Nlc3MpOgorICAgICAgICAoZXhlY3V0YWJsZVBh
dGhPZldlYlByb2Nlc3MpOgorICAgICAgICAoZXhlY3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3Mp
OgorICAgICAgICAqIFNoYXJlZC9xdC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhRdC5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3F0L1BsdWdpblByb2Nlc3NQ
cm94eVF0LmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmV4ZWN1dGFi
bGVQYXRoKToKKyAgICAgICAgKFdlYktpdDo6ZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpleGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2Vzcyk6CisgICAgICAg
IEZhY3RvcmVkIHRoZSBleGVjdXRhYmxlIHBhdGggZGV0ZXJtaW5hdGlvbiBpbnRvIGZyZWUgZnVu
Y3Rpb25zCisgICAgICAgIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uCisKKyAgICAgICAgKiBT
aGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OnBhaW50KToKKyAgICAgICAgQWRkZWQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBv
dmVycmlkZSB3aXRoIHRoZSBzY2FsZSBmYWN0b3IgYmVjYXVzZQorICAgICAgICBpdCBpcyBjYWxs
ZWQgZnJvbSBQbHVnaW5Qcm94eS4gSXQgZG9lcyBub3QgYWN0dWFsbHkgaGFuZGxlIHRoZSBjYXNl
CisgICAgICAgIHdoZW4gdGhlIHNjYWxlIGZhY3RvciBpcyBub3QgMS4gSG93ZXZlciBpdCdzIG9r
IGJlY2F1c2UgaXQgY2FuIG9ubHkKKyAgICAgICAgaGFwcGVuIG9uIE1hYyBpbiB0aGUgbW9tZW50
LgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIv
UHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAgIChQcm9jZXNzTGF1bmNoZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICBVc2UgdGhlIG5ldyBm
dW5jdGlvbnMgdG8gZGV0ZXJtaW5lIHRoZSBleGVjdXRhYmxlIHBhdGguCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChSYXdQbHVnaW5NZXRhRGF0YSk6CisgICAgICAgIChQbHVnaW5Qcm9jZXNzUHJv
eHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlH
dGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5p
dGlhbGl6ZVBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2luKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBs
dWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5Q
bHVnaW4pOgorICAgICAgICBMYXVuY2ggcGx1Z2luIHByb2Nlc3MgYW5kIHBhcnNlIGl0J3Mgb3V0
cHV0IHRvIGdldCB0aGUgbWV0YSBkYXRhCisgICAgICAgIGZvciB0aGUgcGx1Z2luLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TlBOX0dldFZhbHVlKToKKyAgICAgICAgQ2hhbmdlZCBhY2Nv
cmRpbmcgdG8gdGhlIHJlbW92aW5nIG9mIHRoZSBmbGFzaCBoYWNrLiBEbyBub3QgdHJ5CisgICAg
ICAgIHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBwbHVnaW4gbmVlZHMgR3RrIGJ5IGl0J3MgbmFtZSBi
dXQgaW5zdGVhZAorICAgICAgICBhbHdheXMgZ2V0IGJhY2sgdGhlIGV4cGVjdGVkIEd0ayB2ZXJz
aW9uICgyKS4gT25seSBHdGsgcGx1Z2lucworICAgICAgICBzaG91bGQgYXNrIGZvciB0aGlzIGFu
eXdheS4KKworICAgICAgICAqIHF0L1BsdWdpbk1haW5RdC5jcHA6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlHdGsuY3Bw
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKG1haW4pOgorCiAyMDEyLTAzLTA4ICBUb3Ig
QXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRd
IFVzZSBRdCdzIG1vZHVsZSBzeXN0ZW0gZm9yIGluc3RhbGwgcnVsZXMgYW5kIGRlcGVuZGluZyBv
biBRdFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1F0V2ViS2l0LnBybyBiL1NvdXJjZS9RdFdl
YktpdC5wcm8KaW5kZXggMDJmYzllMWM3ZWJlMWY3MzE5ZDA5ZDEyMTVlMjA5ODk5YjQ1MWE3NC4u
YmJiZmM0MWU2ODE3YjdjMGQ1YmQ1ZTEzZWM5ZDNjZmQ0NzliYTFmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1F0V2ViS2l0LnBybworKysgYi9Tb3VyY2UvUXRXZWJLaXQucHJvCkBAIC00LDYgKzQsOCBA
QAogIyBTZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBidWls
ZCBzeXN0ZW0KICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitsb2FkKGZlYXR1cmVzKQorCiBURU1QTEFURSA9IHN1
YmRpcnMKIENPTkZJRyArPSBvcmRlcmVkCiAKQEAgLTEzLDYgKzE1LDEwIEBAIFNVQkRJUlMgKz0g
YXBpCiAhbm9fd2Via2l0MiB7CiAgICAgd2VicHJvY2Vzcy5maWxlID0gV2ViS2l0Mi9XZWJQcm9j
ZXNzLnBybwogICAgIFNVQkRJUlMgKz0gd2VicHJvY2VzcworICAgIGNvbnRhaW5zKERFRklORVMs
IEVOQUJMRV9QTFVHSU5fUFJPQ0VTUz0xKSB7CisgICAgICAgIHBsdWdpbnByb2Nlc3MuZmlsZSA9
IFdlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8KKyAgICAgICAgU1VCRElSUyArPSBwbHVnaW5wcm9j
ZXNzCisgICAgfQogfQogCiBpbmNsdWRlKFdlYktpdC9xdC9kb2NzL2RvY3MucHJpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQppbmRleCA5ODAwZmY1NmFiMTk2MWM2OWY3ZWMwOWM2OTMwNDU0MmNjNmY0MGU3
Li41NjYxMGMxMmE5MDNjOTAzNjlkMjUxYjQxZmZhZTYxYmE1ZmY2NDg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5hbQpAQCAtMzI2LDYgKzMyNiw3IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVk
L0VkaXRvclN0YXRlLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250U21vb3RoaW5nTGV2
ZWwuaCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vTGF5ZXJUcmVlQ29udGV4dENhaXJvLmNwcCBc
CiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcCBc
CiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5oIFwKQEAgLTMz
NSw2ICszMzYsNyBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9ndGsvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVk
L2d0ay9QcmludEluZm9HdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Byb2Nl
c3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9X
ZWJFdmVudEZhY3RvcnkuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50
RmFjdG9yeS5oIFwKQEAgLTEzNjEsNiArMTM2Myw3IEBAIFByb2dyYW1zX1dlYktpdFBsdWdpblBy
b2Nlc3NfQ1BQRkxBR1MgPSBcCiAJLURCVUlMRElOR19XRUJLSVQgXAogCS1ER1RLX0FQSV9WRVJT
SU9OXzI9MSBcCiAJLURFTkFCTEVfUExVR0lOX1BST0NFU1M9MSBcCisJLURMSUJFWEVDRElSPVwi
IiQobGliZXhlY2RpcikiXCIgXAogCSQoZ2xvYmFsX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlX2Nw
cGZsYWdzKSBcCiAJJCh3ZWJjb3JlZ3RrX2NwcGZsYWdzKSBcCkBAIC0xNDQzLDYgKzE0NDYsNyBA
QCB3ZWJraXQyX3BsdWdpbl9wcm9jZXNzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcCBcCiAJU291cmNlL1dlYktp
dDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGls
ZFByb2Nlc3MuaCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0
aC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNw
cCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0YS5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5j
cHAgXApAQCAtMTQ2OSw4ICsxNDczLDEwIEBAIHdlYmtpdDJfcGx1Z2luX3Byb2Nlc3Nfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50
R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJXaGVlbEV2ZW50
R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50
R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBh
dGhHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5j
cHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNz
UHJveHlHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lVXRpbGl0
aWVzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzLnBybyBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMDBjNDcwODFm
ZDI4NjA4NmYwNDQxNmE5MWM1ZTZjMTM2OGNmMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzLnBybwpAQCAtMCwwICsxLDI1IEBACisjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyMgUHJvamVjdCBmaWxlIGZvciB0aGUgV2ViS2l0MiBwbHVnaW4gcHJvY2VzcyBiaW5hcnkKKyMK
KyMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQg
c3lzdGVtCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVNUExBVEUgPSBhcHAKKworUVQgKz0gd2Via2l0CisK
K1RBUkdFVCA9IFF0V2ViUGx1Z2luUHJvY2VzcworREVTVERJUiA9ICQke1JPT1RfQlVJTERfRElS
fS9iaW4KKworU09VUkNFUyArPSBxdC9QbHVnaW5NYWluUXQuY3BwCisKK0lOQ0xVREVQQVRIID0g
JCRQV0QvLi4vSmF2YVNjcmlwdENvcmUgXAorICAgICAgICAgICAgICAkJElOQ0xVREVQQVRICisK
K0lOU1RBTExTICs9IHRhcmdldAorCitpc0VtcHR5KElOU1RBTExfQklOUykgeworICAgIHRhcmdl
dC5wYXRoID0gJCRbUVRfSU5TVEFMTF9CSU5TXQorfSBlbHNlIHsKKyAgICB0YXJnZXQucGF0aCA9
ICQkSU5TVEFMTF9CSU5TCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAKaW5kZXggOTkyZDc0MDc1MTA0Yzhj
YmNhNjEyZjFjZDg5OWU5YTUwZTM3MTQ0ZC4uODcwYzAxYzI3OTQ2ZWIyZTUwMzQxNTFiMDk4OGMw
ZWI2NjA4MzEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsv
UGx1Z2luUHJvY2Vzc01haW5HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluR3RrLmgiCiAKKyNpbmNs
dWRlICJOZXRzY2FwZVBsdWdpbi5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KICNpbmNsdWRlIDxnZGsvZ2RreC5oPgpAQCAtNTMsMTIg
KzU0LDIyIEBAIHN0YXRpYyBpbnQgd2Via2l0Z3RrWEVycm9yKERpc3BsYXkqIHhkaXNwbGF5LCBY
RXJyb3JFdmVudCogZXJyb3IpCiAKIFdLX0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW5HdGso
aW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKIHsKLSAgICBBU1NFUlQoYXJnYyA9PSAyKTsKKyAgICBB
U1NFUlQoYXJnYyA9PSAyIHx8IGFyZ2MgPT0gMyk7CisgICAgYm9vbCBzY2FuUGx1Z2luID0gIXN0
cmNtcChhcmd2WzFdLCAiLXNjYW5QbHVnaW4iKTsKKyAgICBBU1NFUlQoYXJnYyA9PSAyIHx8IChh
cmdjID09IDMgJiYgc2NhblBsdWdpbikpOwogCiAgICAgZ3RrX2luaXQoJmFyZ2MsICZhcmd2KTsK
IAogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1h
aW5UaHJlYWQoKTsKKworICAgIGlmIChzY2FuUGx1Z2luKSB7CisgICAgICAgIFN0cmluZyBwbHVn
aW5QYXRoKGFyZ3ZbMl0pOworICAgICAgICBpZiAoIU5ldHNjYXBlUGx1Z2luTW9kdWxlOjpzY2Fu
UGx1Z2luKHBsdWdpblBhdGgpKQorICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAg
ICAgICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKKyAgICB9CisKICAgICBSdW5Mb29wOjppbml0aWFs
aXplTWFpblJ1bkxvb3AoKTsKIAogICAgIC8vIFBsdWdpbnMgY2FuIHByb2R1Y2UgWCBlcnJvcnMg
dGhhdCBhcmUgaGFuZGxlZCBieSB0aGUgR0RLIFggZXJyb3IgaGFuZGxlciwgd2hpY2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5R
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWlu
UXQuY3BwCmluZGV4IGQzYTBlYzNlMjQ1OTU2Yjk4NTAwZDU2N2U1NjVmYWExNTA2YTAwNTMuLmJj
NDg3ZTFlYzcxZjQwMDlmNjdlMWZlZWFkMDEyMDFmNTI2ZGJhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5RdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgTm9raWEgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIFVuaXZlcnNpdHkg
b2YgU3plZ2VkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNCw0NCArMjUsODMgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01haW4uaCIKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VT
UykKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpbi5oIgogCi0jaW5jbHVkZSAiQ29tbWFuZExp
bmUuaCIKKyNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbk1vZHVsZS5oIgogI2luY2x1ZGUgIlBsdWdp
blByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVk
ZSA8UURlYnVnPgorI2luY2x1ZGUgPFFHdWlBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRU3RyaW5n
TGlzdD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KICNpbmNsdWRlIDxydW50aW1lL0lu
aXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNkZWZpbmUgU0hPV19DUkFTSF9SRVBPUlRF
UiAxCisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWludCBQbHVnaW5Qcm9jZXNzTWFpbihjb25zdCBD
b21tYW5kTGluZSYgY29tbWFuZExpbmUpCitzdGF0aWMgdm9pZCBtZXNzYWdlSGFuZGxlcihRdE1z
Z1R5cGUgdHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKLSAgICBTdHJpbmcgc2VydmljZU5h
bWUgPSBjb21tYW5kTGluZVsic2VydmljZW5hbWUiXTsKLSAgICBpZiAoc2VydmljZU5hbWUuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIGlmICh0eXBlID09IFF0
Q3JpdGljYWxNc2cpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbWVzc2FnZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBEbyBub3RoaW5nCit9CiAKLSNpZiAh
U0hPV19DUkFTSF9SRVBPUlRFUgotICAgIC8vIEluc3RhbGxzIHNpZ25hbCBoYW5kbGVycyB0aGF0
IGV4aXQgb24gYSBjcmFzaCBzbyB0aGF0IENyYXNoUmVwb3J0ZXIgZG9lcyBub3Qgc2hvdyB1cC4K
LSAgICBzaWduYWwoU0lHSUxMLCBfZXhpdCk7Ci0gICAgc2lnbmFsKFNJR0ZQRSwgX2V4aXQpOwot
ICAgIHNpZ25hbChTSUdCVVMsIF9leGl0KTsKLSAgICBzaWduYWwoU0lHU0VHViwgX2V4aXQpOwot
I2VuZGlmCitzdGF0aWMgYm9vbCBpbml0aWFsaXplR3RrKCkKK3sKKyAgICBRTGlicmFyeSBndGtM
aWJyYXJ5KFFMYXRpbjFTdHJpbmcoImxpYmd0ay14MTEtMi4wIiksIDApOworICAgIGlmICghZ3Rr
TGlicmFyeS5sb2FkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB0eXBlZGVmIHZvaWQq
ICgqZ3RrX2luaXRfcHRyKSh2b2lkKiwgdm9pZCopOworICAgIGd0a19pbml0X3B0ciBndGtJbml0
ID0gcmVpbnRlcnByZXRfY2FzdDxndGtfaW5pdF9wdHI+KGd0a0xpYnJhcnkucmVzb2x2ZSgiZ3Rr
X2luaXQiKSk7CisgICAgaWYgKCFndGtJbml0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Z3RrSW5pdCgwLCAwKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW50IFBsdWdpblByb2Nlc3NN
YWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICBRQnl0ZUFycmF5IHN1cHByZXNzT3V0
cHV0ID0gcWdldGVudigiUVRfV0VCS0lUX1NVUFBSRVNTX1dFQl9QUk9DRVNTX09VVFBVVCIpOwor
ICAgIGlmICghc3VwcHJlc3NPdXRwdXQuaXNFbXB0eSgpICYmIHN1cHByZXNzT3V0cHV0ICE9ICIw
IikKKyAgICAgICAgcUluc3RhbGxNc2dIYW5kbGVyKG1lc3NhZ2VIYW5kbGVyKTsKKworICAgIFFH
dWlBcHBsaWNhdGlvbiBhcHAoYXJnYywgYXJndik7CisKKyAgICAvLyBXb3JrYXJvdW5kIHRoZSBp
c3N1ZSB0aGF0IHNvbWUgdmVyc2lvbnMgb2YgZmxhc2ggZG9lcyBub3QgaW5pdGlhbGl6ZSBHdGsg
cHJvcGVybHkuCisgICAgaWYgKCFpbml0aWFsaXplR3RrKCkpCisgICAgICAgIHJldHVybiBFWElU
X0ZBSUxVUkU7CiAKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6Omlu
aXRpYWxpemVNYWluVGhyZWFkKCk7CisKKyAgICBpZiAoYXJnYyA8PSAxKQorICAgICAgICByZXR1
cm4gRVhJVF9GQUlMVVJFOworCisgICAgaWYgKGFwcC5hcmd1bWVudHMoKS5hdCgxKSA9PSBRTGF0
aW4xU3RyaW5nKCItc2NhblBsdWdpbiIpKSB7CisgICAgICAgIGlmIChhcmdjICE9IDMpCisgICAg
ICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgICAgICBTdHJpbmcgcGx1Z2luUGF0aChh
cHAuYXJndW1lbnRzKCkuYXQoMikpOworICAgICAgICBpZiAoIU5ldHNjYXBlUGx1Z2luTW9kdWxl
OjpzY2FuUGx1Z2luKHBsdWdpblBhdGgpKQorICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVS
RTsKKyAgICAgICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKKyAgICB9CisKICAgICBSdW5Mb29wOjpp
bml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIAorICAgIC8vIENyZWF0ZSB0aGUgY29ubmVjdGlvbi4K
KyAgICBib29sIGlzTnVtYmVyID0gZmFsc2U7CisgICAgaW50IGlkZW50aWZpZXIgPSBhcHAuYXJn
dW1lbnRzKCkuYXQoMSkudG9JbnQoJmlzTnVtYmVyLCAxMCk7CisgICAgaWYgKCFpc051bWJlcikK
KyAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICBXZWJLaXQ6OlBsdWdpblByb2Nlc3M6
OnNoYXJlZCgpLmluaXRpYWxpemUoaWRlbnRpZmllciwgUnVuTG9vcDo6bWFpbigpKTsKKwogICAg
IFJ1bkxvb3A6OnJ1bigpOwogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVs
ZS5jcHAKaW5kZXggZTVmOGRjMmEzZjJlZmE3ZGU4YjQxMDk5MzI2YWUwNGY5NWY0NTE2My4uYzE4
NzRkOTk2NmE2NmRkOTMyZWQyZGZmOTIwN2NiZjg5ZDMyNWJhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luTW9kdWxlLmNwcApAQCAtMTk3LDEwICsxOTcsNiBAQCBib29sIE5ldHNjYXBlUGx1Z2luTW9k
dWxlOjpsb2FkKCkKIAogYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6dHJ5TG9hZCgpCiB7Ci0j
aWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCi0gICAgYXBwbHlYMTFRdWlya3NCZWZvcmVMb2Fk
KCk7Ci0jZW5kaWYKLQogICAgIG1fbW9kdWxlID0gYWRvcHRQdHIobmV3IE1vZHVsZShtX3BsdWdp
blBhdGgpKTsKICAgICBpZiAoIW1fbW9kdWxlLT5sb2FkKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luTW9kdWxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oCmluZGV4IGY4MGEwYTFhMGEzMmMwNzIxY2U2YWJm
YjVmYmRkNWI0MGQ4YTk2YjIuLmU5NmJkMmQwNDJiY2VhNDU5ZWNiMWE0ZGY4NjI2Y2U2MzY4MTE5
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaApAQCAtMzUsNiArMzUsOCBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgUmF3UGx1Z2luTWV0YURhdGE7CisKIGNsYXNzIE5ldHNj
YXBlUGx1Z2luTW9kdWxlIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4g
Z2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKQEAgLTYxLDE1ICs2MywxNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgY3JlYXRlUGx1Z2luTUlNRVR5cGVzUHJlZmVyZW5j
ZXMoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKICNlbmRpZgogCisjaWYgUExVR0lOX0FSQ0hJ
VEVDVFVSRShYMTEpCisgICAgc3RhdGljIGJvb2wgc2NhblBsdWdpbihjb25zdCBTdHJpbmcmIHBs
dWdpblBhdGgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTmV0c2NhcGVQbHVn
aW5Nb2R1bGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKIAogICAgIHZvaWQgZGV0ZXJtaW5l
UXVpcmtzKCk7CiAKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKLSAgICB2b2lkIGFwcGx5
WDExUXVpcmtzQmVmb3JlTG9hZCgpOwotICAgIHN0YXRpYyB2b2lkIHNldE1JTUVEZXNjcmlwdGlv
bihjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlwdGlvbiwgUGx1Z2luTW9kdWxlSW5mbyYpOwotICAg
IGJvb2wgZ2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihQbHVnaW5Nb2R1bGVJbmZvJik7Cisg
ICAgYm9vbCBnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKFJhd1BsdWdpbk1ldGFEYXRhJik7
CiAjZW5kaWYKIAogICAgIGJvb2wgdHJ5R2V0U2l0ZXNXaXRoRGF0YShWZWN0b3I8U3RyaW5nPiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDEx
L05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVn
aW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAKaW5kZXggODY2ODMz
YzY0NjExZDEyZGQ3ZTA1MWM3ZjA5YjU0YWU4OGY1OTM2OS4uMGNiZmU5Y2Y5YjE2MmQ0ZjI2YWIy
ZGYzYWQyYzZjOWU5N2RkMDhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1
bGVYMTEuY3BwCkBAIC0yOCw3NiArMjgsMjkgQEAKIAogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2lu
TW9kdWxlLmgiCiAKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJO
ZXRzY2FwZUJyb3dzZXJGdW5jcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgot
Ci0jaWYgUExBVEZPUk0oUVQpCi0jaW5jbHVkZSA8UUxpYnJhcnk+Ci0jZW5kaWYKLQorI2luY2x1
ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgog
I2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0
Zi9Pd25BcnJheVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duQXJyYXlQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgU3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3IgewotcHVi
bGljOgotICAgIFN0ZG91dERldk51bGxSZWRpcmVjdG9yKCk7Ci0gICAgflN0ZG91dERldk51bGxS
ZWRpcmVjdG9yKCk7Ci0KLXByaXZhdGU6Ci0gICAgaW50IG1fc2F2ZWRTdGRvdXQ7Ci19OwotCi1T
dGRvdXREZXZOdWxsUmVkaXJlY3Rvcjo6U3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3IoKQotICAgIDog
bV9zYXZlZFN0ZG91dCgtMSkKK3N0YXRpYyB2b2lkIHBhcnNlTUlNRURlc2NyaXB0aW9uKGNvbnN0
IFN0cmluZyYgbWltZURlc2NyaXB0aW9uLCBWZWN0b3I8TWltZUNsYXNzSW5mbz4mIHJlc3VsdCkK
IHsKLSAgICBpbnQgbmV3U3Rkb3V0ID0gb3BlbigiL2Rldi9udWxsIiwgT19XUk9OTFkpOwotICAg
IGlmIChuZXdTdGRvdXQgPT0gLTEpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3NhdmVkU3Rkb3V0
ID0gZHVwKFNURE9VVF9GSUxFTk8pOwotICAgIGR1cDIobmV3U3Rkb3V0LCBTVERPVVRfRklMRU5P
KTsKLX0KLQotU3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3I6On5TdGRvdXREZXZOdWxsUmVkaXJlY3Rv
cigpCi17Ci0gICAgaWYgKG1fc2F2ZWRTdGRvdXQgIT0gLTEpCi0gICAgICAgIGR1cDIobV9zYXZl
ZFN0ZG91dCwgU1RET1VUX0ZJTEVOTyk7Ci19Ci0KLSNpZiBQTEFURk9STShRVCkKLXN0YXRpYyB2
b2lkIGluaXRpYWxpemVHVEsoKQotewotICAgIFFMaWJyYXJ5IGxpYnJhcnkoUUxhdGluMVN0cmlu
ZygibGliZ3RrLXgxMS0yLjAuc28uMCIpKTsKLSAgICBpZiAobGlicmFyeS5sb2FkKCkpIHsKLSAg
ICAgICAgdHlwZWRlZiB2b2lkICooKmd0a19pbml0X2NoZWNrX3B0cikoaW50KiwgY2hhcioqKik7
Ci0gICAgICAgIGd0a19pbml0X2NoZWNrX3B0ciBndGtJbml0Q2hlY2sgPSByZWludGVycHJldF9j
YXN0PGd0a19pbml0X2NoZWNrX3B0cj4obGlicmFyeS5yZXNvbHZlKCJndGtfaW5pdF9jaGVjayIp
KTsKLSAgICAgICAgLy8gTk9URTogV2UncmUgdXNpbmcgZ3RrX2luaXRfY2hlY2soKSBzaW5jZSBn
dGtfaW5pdCgpIGNhbGxzIGV4aXQoKSBvbiBmYWlsdXJlLgotICAgICAgICBpZiAoZ3RrSW5pdENo
ZWNrKQotICAgICAgICAgICAgKHZvaWQpIGd0a0luaXRDaGVjaygwLCAwKTsKLSAgICB9Ci19Ci0j
ZW5kaWYKKyAgICBBU1NFUlRfQVJHKHJlc3VsdCwgcmVzdWx0LmlzRW1wdHkoKSk7CiAKLXZvaWQg
TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmFwcGx5WDExUXVpcmtzQmVmb3JlTG9hZCgpCi17Ci0jaWYg
UExBVEZPUk0oUVQpCi0gICAgaWYgKG1fcGx1Z2luUGF0aC5jb250YWlucygibnB3cmFwcGVyIikg
fHwgbV9wbHVnaW5QYXRoLmNvbnRhaW5zKCJmbGFzaHBsYXllciIpKSB7Ci0gICAgICAgIGluaXRp
YWxpemVHVEsoKTsKLSAgICAgICAgbV9wbHVnaW5RdWlya3MuYWRkKFBsdWdpblF1aXJrczo6UmVx
dWlyZXNHVEtUb29sS2l0KTsKLSAgICB9Ci0jZW5kaWYKLX0KLQotdm9pZCBOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6c2V0TUlNRURlc2NyaXB0aW9uKGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9u
LCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCi17CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7
CiAgICAgbWltZURlc2NyaXB0aW9uLmxvd2VyKCkuc3BsaXQoVUNoYXIoJzsnKSwgZmFsc2UsIHR5
cGVzKTsKLSAgICBwbHVnaW4uaW5mby5taW1lcy5yZXNlcnZlQ2FwYWNpdHkodHlwZXMuc2l6ZSgp
KTsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0eXBlcy5zaXplKCkpOwogCiAg
ICAgc2l6ZV90IG1pbWVJbmZvQ291bnQgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dHlwZXMuc2l6ZSgpOyArK2kpIHsKQEAgLTEwNiw4ICs1OSw4IEBAIHZvaWQgTmV0c2NhcGVQbHVn
aW5Nb2R1bGU6OnNldE1JTUVEZXNjcmlwdGlvbihjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlwdGlv
biwgUGx1CiAgICAgICAgIGlmIChtaW1lVHlwZVBhcnRzLnNpemUoKSA8PSAwKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgcGx1Z2luLmluZm8ubWltZXMudW5jaGVja2VkQXBwZW5k
KE1pbWVDbGFzc0luZm8oKSk7Ci0gICAgICAgIE1pbWVDbGFzc0luZm8mIG1pbWVJbmZvID0gcGx1
Z2luLmluZm8ubWltZXNbbWltZUluZm9Db3VudCsrXTsKKyAgICAgICAgcmVzdWx0LnVuY2hlY2tl
ZEFwcGVuZChNaW1lQ2xhc3NJbmZvKCkpOworICAgICAgICBNaW1lQ2xhc3NJbmZvJiBtaW1lSW5m
byA9IHJlc3VsdFttaW1lSW5mb0NvdW50KytdOwogICAgICAgICBtaW1lSW5mby50eXBlID0gbWlt
ZVR5cGVQYXJ0c1swXTsKIAogICAgICAgICBpZiAobWltZVR5cGVQYXJ0cy5zaXplKCkgPiAxKQpA
QCAtMTE4LDEzICs3MSwxMCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpzZXRNSU1FRGVz
Y3JpcHRpb24oY29uc3QgU3RyaW5nJiBtaW1lRGVzY3JpcHRpb24sIFBsdQogICAgIH0KIH0KIAot
Ym9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihQ
bHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCitib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQ
bHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKFJhd1BsdWdpbk1ldGFEYXRhJiBtZXRhRGF0YSkKIHsK
ICAgICBBU1NFUlQobV9pc0luaXRpYWxpemVkKTsKIAotICAgIHBsdWdpbi5wYXRoID0gbV9wbHVn
aW5QYXRoOwotICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBwYXRoR2V0RmlsZU5hbWUobV9wbHVnaW5Q
YXRoKTsKLQogICAgIE1vZHVsZSogbW9kdWxlID0gbV9tb2R1bGUuZ2V0KCk7CiAgICAgTlBQX0dl
dFZhbHVlUHJvY1B0ciBOUFBfR2V0VmFsdWUgPSBtb2R1bGUtPmZ1bmN0aW9uUG9pbnRlcjxOUFBf
R2V0VmFsdWVQcm9jUHRyPigiTlBfR2V0VmFsdWUiKTsKICAgICBpZiAoIU5QUF9HZXRWYWx1ZSkK
QEAgLTEzNyw0NyArODcsNDUgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2lu
SW5mb0ZvckxvYWRlZFBsdWdpbihQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4KICAgICBjaGFyKiBi
dWZmZXI7CiAgICAgTlBFcnJvciBlcnJvciA9IE5QUF9HZXRWYWx1ZSgwLCBOUFBWcGx1Z2luTmFt
ZVN0cmluZywgJmJ1ZmZlcik7CiAgICAgaWYgKGVycm9yID09IE5QRVJSX05PX0VSUk9SKQotICAg
ICAgICBwbHVnaW4uaW5mby5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIpOworICAgICAg
ICBtZXRhRGF0YS5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIpOwogCiAgICAgZXJyb3Ig
PSBOUFBfR2V0VmFsdWUoMCwgTlBQVnBsdWdpbkRlc2NyaXB0aW9uU3RyaW5nLCAmYnVmZmVyKTsK
ICAgICBpZiAoZXJyb3IgPT0gTlBFUlJfTk9fRVJST1IpCi0gICAgICAgIHBsdWdpbi5pbmZvLmRl
c2MgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlcik7CisgICAgICAgIG1ldGFEYXRhLmRlc2NyaXB0
aW9uID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIpOwogCiAgICAgU3RyaW5nIG1pbWVEZXNjcmlw
dGlvbiA9IFN0cmluZzo6ZnJvbVVURjgoTlBfR2V0TUlNRURlc2NyaXB0aW9uKCkpOwogICAgIGlm
IChtaW1lRGVzY3JpcHRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHNldE1JTUVEZXNjcmlwdGlvbihtaW1lRGVzY3JpcHRpb24sIHBsdWdpbik7CisgICAgbWV0YURh
dGEubWltZURlc2NyaXB0aW9uID0gbWltZURlc2NyaXB0aW9uOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CisKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3Ry
aW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCiB7Ci0gICAgLy8gVGVt
cGFyYXJpbHkgc3VwcHJlc3Mgc3Rkb3V0IGluIHRoaXMgZnVuY3Rpb24gYXMgcGx1Z2lucyB3aWxs
IGJlIGxvYWRlZCBhbmQgc2h1dGRvd24gYW5kIGRlYnVnIGluZm8KLSAgICAvLyBpcyBsZWFrZWQg
dG8gbGF5b3V0IHRlc3Qgb3V0cHV0LgotICAgIFN0ZG91dERldk51bGxSZWRpcmVjdG9yIHN0ZG91
dERldk51bGxSZWRpcmVjdG9yOwotCi0gICAgLy8gV2UgYXJlIGxvYWRpbmcgdGhlIHBsdWdpbiBo
ZXJlIHNpbmNlIGl0IGRvZXMgbm90IHNlZW0gdG8gYmUgYSBzdGFuZGFyZGl6ZWQgd2F5IHRvCi0g
ICAgLy8gZ2V0IHRoZSBuZWVkZWQgaW5mb3JtYXRpb25zIGZyb20gYSBVTklYIHBsdWdpbiB3aXRo
b3V0IGxvYWRpbmcgaXQuCi0gICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBwbHVnaW5N
b2R1bGUgPSBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUocGx1Z2luUGF0aCk7Ci0g
ICAgaWYgKCFwbHVnaW5Nb2R1bGUpCisgICAgUmF3UGx1Z2luTWV0YURhdGEgbWV0YURhdGE7Cisg
ICAgaWYgKCFQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4ocGx1Z2luUGF0aCwgbWV0YURh
dGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBwbHVnaW5Nb2R1bGUtPmluY3JlbWVu
dExvYWRDb3VudCgpOwotICAgIGJvb2wgcmV0dXJuVmFsdWUgPSBwbHVnaW5Nb2R1bGUtPmdldFBs
dWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4ocGx1Z2luKTsKLSAgICBwbHVnaW5Nb2R1bGUtPmRlY3Jl
bWVudExvYWRDb3VudCgpOworICAgIHBsdWdpbi5wYXRoID0gcGx1Z2luUGF0aDsKKyAgICBwbHVn
aW4uaW5mby5maWxlID0gcGF0aEdldEZpbGVOYW1lKHBsdWdpblBhdGgpOworICAgIHBsdWdpbi5p
bmZvLm5hbWUgPSBtZXRhRGF0YS5uYW1lOworICAgIHBsdWdpbi5pbmZvLmRlc2MgPSBtZXRhRGF0
YS5kZXNjcmlwdGlvbjsKKyAgICBwYXJzZU1JTUVEZXNjcmlwdGlvbihtZXRhRGF0YS5taW1lRGVz
Y3JpcHRpb24sIHBsdWdpbi5pbmZvLm1pbWVzKTsKIAotICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6ZGV0ZXJt
aW5lUXVpcmtzKCkKIHsKICNpZiBDUFUoWDg2XzY0KQotICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1
Z2luOwotICAgIGlmICghZ2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihwbHVnaW4pKQorICAg
IFJhd1BsdWdpbk1ldGFEYXRhIG1ldGFEYXRhOworICAgIGlmICghZ2V0UGx1Z2luSW5mb0Zvckxv
YWRlZFBsdWdpbihtZXRhRGF0YSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxNaW1l
Q2xhc3NJbmZvPiBtaW1lVHlwZXMgPSBwbHVnaW4uaW5mby5taW1lczsKKyAgICBWZWN0b3I8TWlt
ZUNsYXNzSW5mbz4gbWltZVR5cGVzOworICAgIHBhcnNlTUlNRURlc2NyaXB0aW9uKG1ldGFEYXRh
Lm1pbWVEZXNjcmlwdGlvbiwgbWltZVR5cGVzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1pbWVUeXBlcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAobWltZVR5cGVzW2ldLnR5cGUg
PT0gImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIikgewogICAgICAgICAgICAgbV9wbHVn
aW5RdWlya3MuYWRkKFBsdWdpblF1aXJrczo6SWdub3JlUmlnaHRDbGlja0luV2luZG93bGVzc01v
ZGUpOwpAQCAtMTg3LDYgKzEzNSw2NSBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpkZXRl
cm1pbmVRdWlya3MoKQogI2VuZGlmCiB9CiAKK3N0YXRpYyBTdHJpbmcgdHJ1bmNhdGVUb1Npbmds
ZUxpbmUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgQVNTRVJUX0FSRyhzdHJpbmcsICFz
dHJpbmcuaXM4Qml0KCkpOworCisgICAgdW5zaWduZWQgb2xkTGVuZ3RoID0gc3RyaW5nLmxlbmd0
aCgpOworICAgIFVDaGFyKiBidWZmZXI7CisgICAgU3RyaW5nIHN0cmluZ0J1ZmZlcihTdHJpbmdJ
bXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKG9sZExlbmd0aCArIDEsIGJ1ZmZlcikpOworCisgICAg
dW5zaWduZWQgbmV3TGVuZ3RoID0gMDsKKyAgICBmb3IgKGNvbnN0IFVDaGFyKiBjID0gc3RyaW5n
LmNoYXJhY3RlcnMxNigpOyBjIDwgc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgb2xkTGVuZ3RoOyAr
K2MpIHsKKyAgICAgICAgaWYgKCpjICE9IFVDaGFyKCdcbicpKQorICAgICAgICAgICAgYnVmZmVy
W25ld0xlbmd0aCsrXSA9ICpjOworICAgIH0KKyAgICBidWZmZXJbbmV3TGVuZ3RoKytdID0gVUNo
YXIoJ1xuJyk7CisKKyAgICBpZiAobmV3TGVuZ3RoID09IG9sZExlbmd0aCArIDEpCisgICAgICAg
IHJldHVybiBzdHJpbmdCdWZmZXI7CisgICAgcmV0dXJuIFN0cmluZyhzdHJpbmdCdWZmZXIuY2hh
cmFjdGVyczE2KCksIG5ld0xlbmd0aCk7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6
OnNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQoreworICAgIC8vIFdlIGFyZSBs
b2FkaW5nIHRoZSBwbHVnaW4gaGVyZSBzaW5jZSBpdCBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgc3Rh
bmRhcmRpemVkIHdheSB0bworICAgIC8vIGdldCB0aGUgbmVlZGVkIGluZm9ybWF0aW9ucyBmcm9t
IGEgVU5JWCBwbHVnaW4gd2l0aG91dCBsb2FkaW5nIGl0LgorICAgIFJlZlB0cjxOZXRzY2FwZVBs
dWdpbk1vZHVsZT4gcGx1Z2luTW9kdWxlID0gTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldE9yQ3Jl
YXRlKHBsdWdpblBhdGgpOworICAgIGlmICghcGx1Z2luTW9kdWxlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBwbHVnaW5Nb2R1bGUtPmluY3JlbWVudExvYWRDb3VudCgpOworICAgIFJh
d1BsdWdpbk1ldGFEYXRhIG1ldGFEYXRhOworICAgIGJvb2wgc3VjY2VzcyA9IHBsdWdpbk1vZHVs
ZS0+Z2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihtZXRhRGF0YSk7CisgICAgcGx1Z2luTW9k
dWxlLT5kZWNyZW1lbnRMb2FkQ291bnQoKTsKKworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gV3JpdGUgZGF0YSB0byBzdGFuZGFyZCBvdXRwdXQgZm9y
IHRoZSBVSSBwcm9jZXNzLgorICAgIFN0cmluZyBvdXRwdXRbM10gPSB7CisgICAgICAgIHRydW5j
YXRlVG9TaW5nbGVMaW5lKG1ldGFEYXRhLm5hbWUpLAorICAgICAgICB0cnVuY2F0ZVRvU2luZ2xl
TGluZShtZXRhRGF0YS5kZXNjcmlwdGlvbiksCisgICAgICAgIHRydW5jYXRlVG9TaW5nbGVMaW5l
KG1ldGFEYXRhLm1pbWVEZXNjcmlwdGlvbikKKyAgICB9OworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCAzOyArK2kpIHsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBsaW5lID0gb3V0cHV0W2ld
OworICAgICAgICBjb25zdCBjaGFyKiBjdXJyZW50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4obGluZS5jaGFyYWN0ZXJzMTYoKSk7CisgICAgICAgIGNvbnN0IGNoYXIqIGVuZCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxpbmUuY2hhcmFjdGVyczE2KCkpICsgKGxpbmUu
bGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnQgPCBlbmQp
IHsKKyAgICAgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgICAgICB3aGlsZSAoKHJlc3VsdCA9
IGZwdXRjKCpjdXJyZW50LCBzdGRvdXQpKSA9PSBFT0YgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQor
ICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCAhPSBFT0YpOworICAgICAgICAgICAgKytjdXJyZW50
OworICAgICAgICB9CisgICAgfQorCisgICAgZmZsdXNoKHN0ZG91dCk7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTFVHSU5fQVJD
SElURUNUVVJFKFgxMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Qcm9jZXNz
RXhlY3V0YWJsZVBhdGguaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Qcm9jZXNzRXhlY3V0YWJs
ZVBhdGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZmJmMzIwMTgxMTA1NWUzODRhYmVkYjZkM2RkNWRhZjFjN2I3
NGRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
VW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBVTklWRVJTSVRZIE9GIFNaRUdFRCBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFVOSVZFUlNJVFkgT0YgU1pFR0VEIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWZuZGVmIFByb2Nlc3NFeGVjdXRhYmxlUGF0
aF9oCisjZGVmaW5lIFByb2Nlc3NFeGVjdXRhYmxlUGF0aF9oCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nlc3MoKTsKK1N0cmluZyBleGVjdXRh
YmxlUGF0aE9mUGx1Z2luUHJvY2VzcygpOworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVlNTRjOGIyMTI3ZDM3YmQxOTIyMWJkNjhmYzJkOWNhODJjNWQ0ZTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0
aEd0ay5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIw
MTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBNT1RPUk9MQSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBNT1RPUk9M
QSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJs
ZVBhdGguaCIKKworY29uc3QgY2hhciogZ1dlYktpdFdlYlByb2Nlc3NOYW1lID0gIldlYktpdFdl
YlByb2Nlc3MiOworY29uc3QgY2hhciogZ1dlYktpdFBsdWdpblByb2Nlc3NOYW1lID0gIldlYktp
dFBsdWdpblByb2Nlc3MiOworCitzdGF0aWMgU3RyaW5nIGZpbmRXZWJLaXRQcm9jZXNzKGNvbnN0
IGNoYXIqIHByb2Nlc3NOYW1lKQoreworICAgIGNvbnN0IGNoYXIqIGV4ZWNEaXJlY3RvcnkgPSBn
X2dldGVudigiV0VCS0lUX0VYRUNfUEFUSCIpOworICAgIGlmIChleGVjRGlyZWN0b3J5KSB7Cisg
ICAgICAgIFN0cmluZyBwcm9jZXNzUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmaWxl
bmFtZVRvU3RyaW5nKGV4ZWNEaXJlY3RvcnkpLCBwcm9jZXNzTmFtZSk7CisgICAgICAgIGlmIChm
aWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkKKyAgICAgICAgICAgIHJldHVybiBwcm9jZXNzUGF0aDsK
KyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBnb3RFeGVjdXRhYmxlUGF0aCA9IGZhbHNlOworICAg
IHN0YXRpYyBTdHJpbmcgZXhlY3V0YWJsZVBhdGg7CisgICAgaWYgKCFnb3RFeGVjdXRhYmxlUGF0
aCkgeworICAgICAgICBnb3RFeGVjdXRhYmxlUGF0aCA9IHRydWU7CisKKyAgICAgICAgQ1N0cmlu
ZyBleGVjdXRhYmxlRmlsZSA9IGdldEN1cnJlbnRFeGVjdXRhYmxlUGF0aCgpOworICAgICAgICBp
ZiAoIWV4ZWN1dGFibGVGaWxlLmlzTnVsbCgpKQorICAgICAgICAgICAgZXhlY3V0YWJsZVBhdGgg
PSBkaXJlY3RvcnlOYW1lKGZpbGVuYW1lVG9TdHJpbmcoZXhlY3V0YWJsZUZpbGUuZGF0YSgpKSk7
CisgICAgfQorCisgICAgaWYgKCFleGVjdXRhYmxlUGF0aC5pc051bGwoKSkgeworICAgICAgICBT
dHJpbmcgcHJvY2Vzc1BhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZXhlY3V0YWJsZVBh
dGgsIHByb2Nlc3NOYW1lKTsKKyAgICAgICAgaWYgKGZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQor
ICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NQYXRoOworICAgIH0KKworICAgIHJldHVybiBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZmlsZW5hbWVUb1N0cmluZyhMSUJFWEVDRElSKSwgcHJvY2Vz
c05hbWUpOworfQorCitTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nlc3MoKQoreworICAg
IGZpbmRXZWJLaXRQcm9jZXNzKGdXZWJLaXRXZWJQcm9jZXNzTmFtZSk7Cit9CisKK1N0cmluZyBl
eGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2VzcygpCit7CisgICAgZmluZFdlYktpdFByb2Nlc3Mo
Z1dlYktpdFBsdWdpblByb2Nlc3NOYW1lKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9xdC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvcXQvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljYmNkZjEx
NmI5YjYwYmZiNjdhMThmY2I4ZmRmMTNmN2FiNmEyMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvcXQvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoUXQuY3BwCkBAIC0wLDAg
KzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgiCisKKyNpbmNsdWRlIDxRQ29yZUFwcGxp
Y2F0aW9uPgorI2luY2x1ZGUgPFFEaXI+CisjaW5jbHVkZSA8UUZpbGU+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdGF0aWMgU3RyaW5nIGV4ZWN1dGFibGVQYXRoKFFMYXRpbjFTdHJpbmcgYmFz
ZU5hbWUpCit7CisgICAgUVN0cmluZyBleHBlY3RlZFBhdGggPSBRQ29yZUFwcGxpY2F0aW9uOjph
cHBsaWNhdGlvbkRpclBhdGgoKSArIFFEaXI6OnNlcGFyYXRvcigpICsgYmFzZU5hbWU7CisgICAg
aWYgKFFGaWxlOjpleGlzdHMoZXhwZWN0ZWRQYXRoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZyhl
eHBlY3RlZFBhdGgpOworICAgIHJldHVybiBTdHJpbmcoUVN0cmluZyhiYXNlTmFtZSkpOworfQor
CitTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nlc3MoKQoreworICAgIHJldHVybiBleGVj
dXRhYmxlUGF0aChRU3RyaW5nTGl0ZXJhbCgiUXRXZWJQcm9jZXNzIikpOworfQorCitTdHJpbmcg
ZXhlY3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MoKQoreworICAgIHJldHVybiBleGVjdXRhYmxl
UGF0aChRU3RyaW5nTGl0ZXJhbCgiUXRXZWJQbHVnaW5Qcm9jZXNzIikpOworfQorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNwcAppbmRleCAwYzhi
ZTA3MmE0NjJkNjNmYzA2MjcwOGMwMWVjNWE2ZmMyMWZlZDNiLi43NzhiY2ZjYzFjZDJjM2QyNTkw
Y2I4ZmYzNDFmMDhkYzk4NzkwY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
cXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9T
aGFyZWFibGVCaXRtYXBRdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFFJbWFn
ZT4KICNpbmNsdWRlIDxRUGFpbnRlcj4KKyNpbmNsdWRlIDxRdEdsb2JhbD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC03MSw4ICs3MiwxMyBA
QCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBJbnRQb2ludCYgZHN0UG9pbnQsCiAgICAgcGFpbnRlci0+ZHJhd0ltYWdlKGRzdFBvaW50
LCBpbWFnZSwgUVJlY3Qoc3JjUmVjdCkpOwogfQogCi12b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiAvKmNvbnRleHQqLywgZmxvYXQgLypzY2FsZUZhY3RvciovLCBj
b25zdCBJbnRQb2ludCYgLypkc3RQb2ludCovLCBjb25zdCBJbnRSZWN0JiAvKnNyY1JlY3QqLykK
K3ZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZHN0UG9pbnQsIGNvbnN0IEludFJlY3Qm
IHNyY1JlY3QpCiB7CisgICAgaWYgKHFGdXp6eUNvbXBhcmUoc2NhbGVGYWN0b3IsIDEpKSB7Cisg
ICAgICAgIHBhaW50KGNvbnRleHQsIGRzdFBvaW50LCBzcmNSZWN0KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY0NjYzPi4KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXgg
YzRlMzY5M2U2NjFhMjAxNjliNjQzMDZiMzg3MjA2YzJmMDM5NTYwYi4uMjc5MDJiZDk4N2ZjODk3
M2E4ZjM5MzE5NDMwOTJmN2Q1NGVhYWU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFy
Z2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0zNCw2ICszNCw3IEBA
IEhFQURFUlMgKz0gXAogICAgIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIFwKICAgICBQbGF0Zm9y
bS9Xb3JrUXVldWUuaCBcCiAgICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
aCBcCisgICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuaCBcCiAgICAg
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmggXAogICAgIFBsdWdpblByb2Nlc3MvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLQmFzZS5oIFwKQEAgLTgwLDYg
KzgxLDcgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL09yaWdpbkFuZERhdGFiYXNlcy5oIFwK
ICAgICBTaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmggXAogICAgIFNoYXJlZC9QcmludElu
Zm8uaCBcCisgICAgU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIFwKICAgICBTaGFyZWQv
U2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBcCiAgICAgU2hhcmVkL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oIFwKICAgICBTaGFyZWQvU2Vzc2lvblN0YXRlLmggXApAQCAtMzc4LDYgKzM4MCw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIFBsYXRmb3JtL1dvcmtRdWV1ZS5jcHAgXAogICAgIFBsYXRmb3Jt
L3F0L01vZHVsZVF0LmNwcCBcCiAgICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuY3BwIFwKKyAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAg
XAogICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAgXAogICAgIFBsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIFwKICAgICBQbHVnaW5Qcm9jZXNzL3F0L1BsdWdp
bkNvbnRyb2xsZXJQcm94eVF0LmNwcCBcCkBAIC00NjgsNiArNDcxLDcgQEAgU09VUkNFUyArPSBc
CiAgICAgU2hhcmVkL3F0L05hdGl2ZVdlYktleWJvYXJkRXZlbnRRdC5jcHAgXAogICAgIFNoYXJl
ZC9xdC9OYXRpdmVXZWJNb3VzZUV2ZW50UXQuY3BwIFwKICAgICBTaGFyZWQvcXQvTmF0aXZlV2Vi
V2hlZWxFdmVudFF0LmNwcCBcCisgICAgU2hhcmVkL3F0L1Byb2Nlc3NFeGVjdXRhYmxlUGF0aFF0
LmNwcCBcCiAgICAgU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcCBcCiAgICAg
U2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmNwcCBcCiAgICAgU2hhcmVkL3F0L1F0TmV0d29y
a1JlcGx5RGF0YS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
dW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5j
aGVyL1Byb2Nlc3NMYXVuY2hlci5oCmluZGV4IDA5YzU1ODlmMzg4ODE1MGU1OTFjYjlmM2UwNzEz
ODQ1NDJjNzk3MmYuLmJjMWY4NjdmM2MyOTE1NTIzNjMwYzY3NjExZjA1Y2U5NzNkZWQ1M2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNo
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5j
aGVyLmgKQEAgLTY4LDcgKzY4LDYgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwog
CiAgICAgc3RhdGljIGJvb2wgZ2V0UHJvY2Vzc1R5cGVGcm9tU3RyaW5nKGNvbnN0IGNoYXIqLCBQ
cm9jZXNzVHlwZSYpOwotCiBwcml2YXRlOgogICAgIFByb2Nlc3NMYXVuY2hlcihDbGllbnQqLCBj
b25zdCBMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsu
Y3BwCmluZGV4IDk0Y2FkNWZjNDQ4MjBkYTE5OGRhODcxY2NiZDZmYTQ3ZTQzODliMmIuLjZjYmJk
YjljODg3NWFhZGUyZTM5M2E5NDk3YjBmNTE2NjYxY2EyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0
ay5jcHAKQEAgLTUyLDkgKzUyLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1jb25zdCBjaGFyKiBnV2ViS2l0V2ViUHJvY2Vzc05hbWUgPSAiV2Vi
S2l0V2ViUHJvY2VzcyI7Ci1jb25zdCBjaGFyKiBnV2ViS2l0UGx1Z2luUHJvY2Vzc05hbWUgPSAi
V2ViS2l0UGx1Z2luUHJvY2VzcyI7Ci0KIHN0YXRpYyB2b2lkIGNoaWxkU2V0dXBGdW5jdGlvbihn
cG9pbnRlciB1c2VyRGF0YSkKIHsKICAgICBpbnQgc29ja2V0ID0gR1BPSU5URVJfVE9fSU5UKHVz
ZXJEYXRhKTsKQEAgLTc3LDM0ICs3NCw2IEBAIHN0YXRpYyB2b2lkIGNoaWxkRmluaXNoZWRGdW5j
dGlvbihHUGlkLCBnaW50IHN0YXR1cywgZ3BvaW50ZXIgdXNlckRhdGEpCiAgICAgY2xvc2UoR1BP
SU5URVJfVE9fSU5UKHVzZXJEYXRhKSk7CiB9CiAKLXN0YXRpYyBDU3RyaW5nIGZpbmRXZWJLaXRQ
cm9jZXNzKGNvbnN0IGNoYXIqIHByb2Nlc3NOYW1lKQotewotICAgIGNvbnN0IGNoYXIqIGV4ZWNE
aXJlY3RvcnkgPSBnX2dldGVudigiV0VCS0lUX0VYRUNfUEFUSCIpOwotICAgIGlmIChleGVjRGly
ZWN0b3J5KSB7Ci0gICAgICAgIFN0cmluZyBwcm9jZXNzUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChmaWxlbmFtZVRvU3RyaW5nKGV4ZWNEaXJlY3RvcnkpLCBwcm9jZXNzTmFtZSk7Ci0g
ICAgICAgIGlmIChmaWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkKLSAgICAgICAgICAgIHJldHVybiBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJvY2Vzc1BhdGgpOwotICAgIH0KLQotICAgIHN0YXRp
YyBib29sIGdvdEV4ZWN1dGFibGVQYXRoID0gZmFsc2U7Ci0gICAgc3RhdGljIFN0cmluZyBleGVj
dXRhYmxlUGF0aDsKLSAgICBpZiAoIWdvdEV4ZWN1dGFibGVQYXRoKSB7Ci0gICAgICAgIGdvdEV4
ZWN1dGFibGVQYXRoID0gdHJ1ZTsKLQotICAgICAgICBDU3RyaW5nIGV4ZWN1dGFibGVGaWxlID0g
Z2V0Q3VycmVudEV4ZWN1dGFibGVQYXRoKCk7Ci0gICAgICAgIGlmICghZXhlY3V0YWJsZUZpbGUu
aXNOdWxsKCkpCi0gICAgICAgICAgICBleGVjdXRhYmxlUGF0aCA9IGRpcmVjdG9yeU5hbWUoZmls
ZW5hbWVUb1N0cmluZyhleGVjdXRhYmxlRmlsZS5kYXRhKCkpKTsKLSAgICB9Ci0KLSAgICBpZiAo
IWV4ZWN1dGFibGVQYXRoLmlzTnVsbCgpKSB7Ci0gICAgICAgIFN0cmluZyBwcm9jZXNzUGF0aCA9
IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChleGVjdXRhYmxlUGF0aCwgcHJvY2Vzc05hbWUpOwot
ICAgICAgICBpZiAoZmlsZUV4aXN0cyhwcm9jZXNzUGF0aCkpCi0gICAgICAgICAgICByZXR1cm4g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByb2Nlc3NQYXRoKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmaWxl
bmFtZVRvU3RyaW5nKExJQkVYRUNESVIpLCBwcm9jZXNzTmFtZSkpOwotfQotCiB2b2lkIFByb2Nl
c3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiB7CiAgICAgR1BpZCBwaWQgPSAwOwpAQCAtMTE2
LDcgKzg1LDkgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgQ1N0cmluZyBiaW5hcnlQYXRoID0gZmluZFdlYktpdFBy
b2Nlc3MobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID09IFByb2Nlc3NMYXVuY2hlcjo6V2Vi
UHJvY2VzcyA/IGdXZWJLaXRXZWJQcm9jZXNzTmFtZSA6IGdXZWJLaXRQbHVnaW5Qcm9jZXNzTmFt
ZSk7CisgICAgU3RyaW5nIGV4ZWN1dGFibGVQYXRoID0gbV9sYXVuY2hPcHRpb25zLnByb2Nlc3NU
eXBlID09IFdlYlByb2Nlc3MgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFi
bGVQYXRoT2ZXZWJQcm9jZXNzKCkgOiBleGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2VzcygpOwor
ICAgIENTdHJpbmcgYmluYXJ5UGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRh
YmxlUGF0aCk7CiAgICAgR093blB0cjxnY2hhcj4gc29ja2V0KGdfc3RyZHVwX3ByaW50ZigiJWQi
LCBzb2NrZXRzWzBdKSk7CiAgICAgY2hhciogYXJndlszXTsKICAgICBhcmd2WzBdID0gY29uc3Rf
Y2FzdDxjaGFyKj4oYmluYXJ5UGF0aC5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAKaW5kZXgg
OGU4MjYyMDYzNjdlZWQ4ZWIxYzI1Y2UyZjRiNDU2NGIwOGY3NGEwOC4uYzVjM2Y3MTQ1ZGU2Yzg5
MWM0NWEyZDU2NjAwMDgyNDkwYTg3NWZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCkBAIC0yOCwx
MCArMjgsOSBAQAogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgogCiAjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgogI2luY2x1ZGUgPFFE
ZWJ1Zz4KLSNpbmNsdWRlIDxRRmlsZT4KICNpbmNsdWRlIDxRTG9jYWxTZXJ2ZXI+CiAjaW5jbHVk
ZSA8UU1ldGFUeXBlPgogI2luY2x1ZGUgPFFQcm9jZXNzPgpAQCAtMTAyLDEzICsxMDEsOSBAQCB2
b2lkIFF0V2ViUHJvY2Vzczo6c2V0dXBDaGlsZFByb2Nlc3MoKQogCiB2b2lkIFByb2Nlc3NMYXVu
Y2hlcjo6bGF1bmNoUHJvY2VzcygpCiB7Ci0gICAgUVN0cmluZyBhcHBsaWNhdGlvblBhdGggPSBR
TGF0aW4xU3RyaW5nKCIlMSAlMiIpOwotCi0gICAgaWYgKFFGaWxlOjpleGlzdHMoUUNvcmVBcHBs
aWNhdGlvbjo6YXBwbGljYXRpb25EaXJQYXRoKCkgKyBRTGF0aW4xU3RyaW5nKCIvUXRXZWJQcm9j
ZXNzIikpKSB7Ci0gICAgICAgIGFwcGxpY2F0aW9uUGF0aCA9IGFwcGxpY2F0aW9uUGF0aC5hcmco
UUNvcmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25EaXJQYXRoKCkgKyBRTGF0aW4xU3RyaW5nKCIv
UXRXZWJQcm9jZXNzIikpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGFwcGxpY2F0aW9uUGF0aCA9
IGFwcGxpY2F0aW9uUGF0aC5hcmcoUUxhdGluMVN0cmluZygiUXRXZWJQcm9jZXNzIikpOwotICAg
IH0KKyAgICBRU3RyaW5nIGNvbW1hbmRMaW5lID0gUUxhdGluMVN0cmluZygiJTEgJTIiKTsKKyAg
ICBjb21tYW5kTGluZSA9IGNvbW1hbmRMaW5lLmFyZyhtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5
cGUgPT0gV2ViUHJvY2VzcyA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhl
Y3V0YWJsZVBhdGhPZldlYlByb2Nlc3MoKSA6IGV4ZWN1dGFibGVQYXRoT2ZQbHVnaW5Qcm9jZXNz
KCkpOwogCiAjaWYgT1MoREFSV0lOKQogICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQu
CkBAIC0xMjQsNyArMTE5LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3Mo
KQogICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBib290c3RyYXBfcmVnaXN0ZXIyKGJvb3RzdHJhcF9w
b3J0LCBjb25zdF9jYXN0PGNoYXIqPihzZXJ2aWNlTmFtZS50b1V0ZjgoKS5kYXRhKCkpLCBjb25u
ZWN0b3IsIDApOwogICAgIEFTU0VSVF9VTlVTRUQoa3IsIGtyID09IEtFUk5fU1VDQ0VTUyk7CiAK
LSAgICBRU3RyaW5nIHByb2dyYW0oYXBwbGljYXRpb25QYXRoLmFyZyhzZXJ2aWNlTmFtZSkpOwor
ICAgIGNvbW1hbmRMaW5lID0gY29tbWFuZExpbmUuYXJnKHNlcnZpY2VOYW1lKTsKICNlbHNlCiAg
ICAgaW50IHNvY2tldHNbMl07CiAgICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS0VUX1RZ
UEUsIDAsIHNvY2tldHMpID09IC0xKSB7CkBAIC0xNDQsMTIgKzEzOSwxMiBAQCB2b2lkIFByb2Nl
c3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgfQogCiAgICAgaW50IGNvbm5lY3RvciA9
IHNvY2tldHNbMV07Ci0gICAgUVN0cmluZyBwcm9ncmFtKGFwcGxpY2F0aW9uUGF0aC5hcmcoc29j
a2V0c1swXSkpOworICAgIGNvbW1hbmRMaW5lID0gY29tbWFuZExpbmUuYXJnKHNvY2tldHNbMF0p
OwogI2VuZGlmCiAKICAgICBRUHJvY2Vzcyogd2ViUHJvY2VzcyA9IG5ldyBRdFdlYlByb2Nlc3Mo
KTsKICAgICB3ZWJQcm9jZXNzLT5zZXRQcm9jZXNzQ2hhbm5lbE1vZGUoUVByb2Nlc3M6OkZvcndh
cmRlZENoYW5uZWxzKTsKLSAgICB3ZWJQcm9jZXNzLT5zdGFydChwcm9ncmFtKTsKKyAgICB3ZWJQ
cm9jZXNzLT5zdGFydChjb21tYW5kTGluZSk7CiAKICNpZiAhT1MoREFSV0lOKQogICAgIC8vIERv
bid0IGV4cG9zZSB0aGUgd2ViIHNvY2tldCB0byBwb3NzaWJsZSBmdXR1cmUgd2ViIHByb2Nlc3Nl
cwpAQCAtMTYzLDcgKzE1OCw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNz
KCkKICNlbmRpZgogCiAgICAgaWYgKCF3ZWJQcm9jZXNzLT53YWl0Rm9yU3RhcnRlZCgpKSB7Ci0g
ICAgICAgIHFEZWJ1ZygpIDw8ICJGYWlsZWQgdG8gc3RhcnQiIDw8IHByb2dyYW07CisgICAgICAg
IHFEZWJ1ZygpIDw8ICJGYWlsZWQgdG8gc3RhcnQiIDw8IGNvbW1hbmRMaW5lOwogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICNpZiBPUyhEQVJXSU4pCiAgICAgICAgIG1hY2hfcG9ydF9k
ZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIGNvbm5lY3Rvcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCmluZGV4IGE3
NWQ1YjEzODdjZDhiZGE5ZGM1MjMxMmQ4MjZmNGFhMGI0Njk2NTYuLjQ0MjNkNDdmMDlhOWJiMjkx
NjQ4NzY1ZWRhN2IwODZlYjU0YWI3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCkBAIC01Miw2ICs1MiwxNCBAQCBj
bGFzcyBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBz
dHJ1Y3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAorI2lmIFBMVUdJTl9BUkNI
SVRFQ1RVUkUoWDExKQorc3RydWN0IFJhd1BsdWdpbk1ldGFEYXRhIHsKKyAgICBTdHJpbmcgbmFt
ZTsKKyAgICBTdHJpbmcgZGVzY3JpcHRpb247CisgICAgU3RyaW5nIG1pbWVEZXNjcmlwdGlvbjsK
K307CisjZW5kaWYKKwogY2xhc3MgUGx1Z2luUHJvY2Vzc1Byb3h5IDogQ29yZUlQQzo6Q29ubmVj
dGlvbjo6Q2xpZW50LCBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NPd25QdHI8UGx1Z2luUHJvY2Vzc1Byb3h5PiBjcmVhdGUoUGx1Z2luUHJvY2Vzc01h
bmFnZXIqLCBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJik7CkBAIC04MCw2ICs4OCwxMCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgY3JlYXRlUHJvcGVydHlMaXN0RmlsZShjb25zdCBQbHVnaW5N
b2R1bGVJbmZvJik7CiAjZW5kaWYKIAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAg
IHN0YXRpYyBib29sIHNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBSYXdQbHVn
aW5NZXRhRGF0YSYgcmVzdWx0KTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFBsdWdpblByb2Nl
c3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdp
blByb2Nlc3NQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9n
dGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcAppbmRleCA0Yzg1NzcyYTI3ZjdiNzA3MmFmZjZh
MTEzN2M5Mjc0ODg1YThmNjQzLi4zYTEyMDk1NDhhN2I2MGJkZTEzNjMwZDM5ZDE2MGFiMmFiYzJl
M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1
Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcApAQCAtMjksMTMgKzI5LDUyIEBACiAj
aWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNp
bmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2Vz
cyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQordm9pZCBQbHVn
aW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit7Cit9CisKK2Jvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5
OjpzY2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEm
IHJlc3VsdCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIENTdHJpbmcgYmluYXJ5UGF0
aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihQcm9jZXNzTGF1bmNoZXI6OmV4ZWN1dGFibGVQ
YXRoKFByb2Nlc3NMYXVuY2hlcjo6UGx1Z2luUHJvY2VzcykpOworICAgIENTdHJpbmcgcGx1Z2lu
UGF0aENTdHJpbmcgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGx1Z2luUGF0aCk7CisgICAg
Y2hhciogYXJndls0XTsKKyAgICBhcmd2WzBdID0gY29uc3RfY2FzdDxjaGFyKj4oYmluYXJ5UGF0
aC5kYXRhKCkpOworICAgIGFyZ3ZbMV0gPSBjb25zdF9jYXN0PGNoYXIqPigiLXNjYW5QbHVnaW4i
KTsKKyAgICBhcmd2WzJdID0gY29uc3RfY2FzdDxjaGFyKj4ocGx1Z2luUGF0aENTdHJpbmcuZGF0
YSgpKTsKKyAgICBhcmd2WzNdID0gMDsKKworICAgIGdpbnQgc3RhdHVzOworICAgIGdjaGFyKiBz
dGRPdXQ7CisgICAgaWYgKCFnX3NwYXduX3N5bmMoMCwgYXJndiwgMCwgR19TUEFXTl9TVERFUlJf
VE9fREVWX05VTEwsIDAsIDAsICZzdGRPdXQsIDAsICZzdGF0dXMsIDApKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKCFXSUZFWElURUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0
dXMpICE9IEVYSVRfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3Qg
dW5zaWduZWQga051bUxpbmVzRXhwZWN0ZWQgPSAzOworICAgIFN0cmluZyBsaW5lc1trTnVtTGlu
ZXNFeHBlY3RlZF07CisgICAgdW5zaWduZWQgbGluZUluZGV4ID0gMDsKKyAgICBjb25zdCBVQ2hh
ciogY3VycmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzdGRPdXQpOworICAg
IHdoaWxlIChsaW5lSW5kZXggPCBrTnVtTGluZXNFeHBlY3RlZCkgeworICAgICAgICBjb25zdCBV
Q2hhciogc3RhcnQgPSBjdXJyZW50OworICAgICAgICB3aGlsZSAoKmN1cnJlbnQrKyAhPSBVQ2hh
cignXG4nKSkgeyB9CisgICAgICAgIGxpbmVzW2xpbmVJbmRleCsrXSA9IFN0cmluZyhzdGFydCwg
Y3VycmVudCAtIHN0YXJ0IC0gMSk7CisgICAgfQorCisgICAgcmVzdWx0Lm5hbWUuc3dhcChsaW5l
c1swXSk7CisgICAgcmVzdWx0LmRlc2NyaXB0aW9uLnN3YXAobGluZXNbMV0pOworICAgIHJlc3Vs
dC5taW1lRGVzY3JpcHRpb24uc3dhcChsaW5lc1syXSk7CisgICAgcmV0dXJuICFyZXN1bHQubWlt
ZURlc2NyaXB0aW9uLmlzRW1wdHkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNz
UHJveHlRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Q
cm9jZXNzUHJveHlRdC5jcHAKaW5kZXggY2M1MjFlMGFmOWE2YTA3NDRjMmRjMGUwNmY2NTE0ZmM5
NGIzNDlmOC4uOWI3ZjJiMmRkYTJlNzhhZmQzYTg3ZjE3MjE2ZGUxYmFhY2U3MzlmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2luUHJvY2Vzc1By
b3h5UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3F0L1BsdWdp
blByb2Nlc3NQcm94eVF0LmNwcApAQCAtMjgsMTQgKzI4LDUxIEBACiAKICNpZiBFTkFCTEUoUExV
R0lOX1BST0NFU1MpCiAKLSNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgIlByb2Nl
c3NFeGVjdXRhYmxlUGF0aC5oIgorI2luY2x1ZGUgPFFCeXRlQXJyYXk+CisjaW5jbHVkZSA8UUNv
cmVBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRRGlyPgorI2luY2x1ZGUgPFFFdmVudExvb3A+Cisj
aW5jbHVkZSA8UVByb2Nlc3M+CisjaW5jbHVkZSA8UVN0cmluZz4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Q
cm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCitjbGFz
cyBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOworCit2b2lkIFBsdWdpblByb2Nlc3NQ
cm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIFBsdWdp
blByb2Nlc3NQcm94eTo6c2NhblBsdWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFJhd1Bs
dWdpbk1ldGFEYXRhJiByZXN1bHQpCit7CisgICAgUVN0cmluZyBjb21tYW5kTGluZSA9IFFMYXRp
bjFTdHJpbmcoIiUxICUyICUzIik7CisgICAgY29tbWFuZExpbmUgPSBjb21tYW5kTGluZS5hcmco
ZXhlY3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MoKSk7CisgICAgY29tbWFuZExpbmUgPSBjb21t
YW5kTGluZS5hcmcoUVN0cmluZ0xpdGVyYWwoIi1zY2FuUGx1Z2luIikpLmFyZyhzdGF0aWNfY2Fz
dDxRU3RyaW5nPihwbHVnaW5QYXRoKSk7CisKKyAgICBRUHJvY2VzcyBwcm9jZXNzOworICAgIHBy
b2Nlc3Muc2V0UmVhZENoYW5uZWwoUVByb2Nlc3M6OlN0YW5kYXJkT3V0cHV0KTsKKyAgICBwcm9j
ZXNzLnN0YXJ0KGNvbW1hbmRMaW5lKTsKKworICAgIGlmICghcHJvY2Vzcy53YWl0Rm9yRmluaXNo
ZWQoKQorICAgICAgICB8fCBwcm9jZXNzLmV4aXRTdGF0dXMoKSAhPSBRUHJvY2Vzczo6Tm9ybWFs
RXhpdAorICAgICAgICB8fCBwcm9jZXNzLmV4aXRDb2RlKCkgIT0gRVhJVF9TVUNDRVNTKSB7Cisg
ICAgICAgIHByb2Nlc3Mua2lsbCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgUUJ5dGVBcnJheSBvdXRwdXRCeXRlcyA9IHByb2Nlc3MucmVhZEFsbCgpOworICAgIEFTU0VS
VCghKG91dHB1dEJ5dGVzLnNpemUoKSAlIHNpemVvZihVQ2hhcikpKTsKKworICAgIFN0cmluZyBv
dXRwdXQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KG91dHB1dEJ5dGVzLmNvbnN0RGF0
YSgpKSwgb3V0cHV0Qnl0ZXMuc2l6ZSgpIC8gc2l6ZW9mKFVDaGFyKSk7CisgICAgVmVjdG9yPFN0
cmluZz4gbGluZXM7CisgICAgb3V0cHV0LnNwbGl0KFVDaGFyKCdcbicpLCBsaW5lcyk7CisgICAg
QVNTRVJUKGxpbmVzLnNpemUoKSA9PSAzKTsKKworICAgIHJlc3VsdC5uYW1lLnN3YXAobGluZXNb
MF0pOworICAgIHJlc3VsdC5kZXNjcmlwdGlvbi5zd2FwKGxpbmVzWzFdKTsKKyAgICByZXN1bHQu
bWltZURlc2NyaXB0aW9uLnN3YXAobGluZXNbMl0pOworICAgIHJldHVybiAhcmVzdWx0Lm1pbWVE
ZXNjcmlwdGlvbi5pc0VtcHR5KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
QnJvd3NlckZ1bmNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKaW5kZXggYmRjNmU5ZGU5ZTEyNTQ0YjBhMDQy
M2QwNGQ5ZTJiNjQ0ZDgzOWNkMS4uZDEyMTM4OGY1MDgwZjAxOWYxMzkzYzdmZTEzYWI0NzlmMTNi
MGY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCkBAIC01NTEsMjMg
KzU1MSw5IEBAIHN0YXRpYyBOUEVycm9yIE5QTl9HZXRWYWx1ZShOUFAgbnBwLCBOUE5WYXJpYWJs
ZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUpCiAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgY2Fz
ZSBOUE5WVG9vbGtpdDogewotI2lmIFBMQVRGT1JNKEdUSykKLSAgICAgICAgICAgKnJlaW50ZXJw
cmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZSkgPSAyOwotI2Vsc2UKLSAgICAgICAgICAgY29uc3Qg
dWludDMyX3QgZXhwZWN0ZWRHVEtUb29sS2l0VmVyc2lvbiA9IDI7Ci0KLSAgICAgICAgICAgLy8g
U2V0IHRoZSBleHBlY3RlZCBHVEsgdmVyc2lvbiBpZiB3ZSBrbm93IHRoYXQgdGhpcyBwbHVnaW4g
bmVlZHMgaXQgb3IgaWYgdGhlIHBsdWdpbiBjYWxsIHVzCi0gICAgICAgICAgIC8vIHdpdGggYSBu
dWxsIGluc3RhbmNlLiBUaGUgbGF0dGVyIGlzIHRoZSBjYXNlIHdpdGggTlNQbHVnaW5XcmFwcGVy
IHBsdWdpbnMuCi0gICAgICAgICAgIGJvb2wgcmVxdWlyZXNHVEtUb29sS2l0VmVyc2lvbjsKLSAg
ICAgICAgICAgaWYgKCFucHApCi0gICAgICAgICAgICAgICByZXF1aXJlc0dUS1Rvb2xLaXRWZXJz
aW9uID0gdHJ1ZTsKLSAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICBSZWZQdHI8TmV0
c2NhcGVQbHVnaW4+IHBsdWdpbiA9IE5ldHNjYXBlUGx1Z2luOjpmcm9tTlBQKG5wcCk7Ci0gICAg
ICAgICAgICAgICByZXF1aXJlc0dUS1Rvb2xLaXRWZXJzaW9uID0gcGx1Z2luLT5xdWlya3MoKS5j
b250YWlucyhQbHVnaW5RdWlya3M6OlJlcXVpcmVzR1RLVG9vbEtpdCk7Ci0gICAgICAgICAgIH0K
LQotICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHZhbHVlKSA9IHJlcXVp
cmVzR1RLVG9vbEtpdFZlcnNpb24gPyBleHBlY3RlZEdUS1Rvb2xLaXRWZXJzaW9uIDogMDsKLSNl
bmRpZgorICAgICAgICAgICAvLyBHdGsgYmFzZWQgcGx1Z2lucyBuZWVkIHRvIGJlIGFzc3VyZWQg
YWJvdXQgdGhlIHRvb2xraXQgdmVyc2lvbi4KKyAgICAgICAgICAgY29uc3QgdWludDMyX3QgZXhw
ZWN0ZWRHdGtUb29sS2l0VmVyc2lvbiA9IDI7CisgICAgICAgICAgICpyZWludGVycHJldF9jYXN0
PHVpbnQzMl90Kj4odmFsdWUpID0gZXhwZWN0ZWRHdGtUb29sS2l0VmVyc2lvbjsKICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9xdC9QbHVn
aW5NYWluUXQuY3BwIGIvU291cmNlL1dlYktpdDIvcXQvUGx1Z2luTWFpblF0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zZDVjOTNiNTdiM2I5ZWNlNTQzNmMwNmQxNzY0MzNiZDI2OWE5MWQyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvcXQvUGx1Z2luTWFpblF0LmNwcApAQCAtMCwwICsxLDM5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBVbml2ZXJzaXR5IG9mIFN6ZWdlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSA8UUxpYnJhcnk+CisjaW5jbHVkZSA8UXRHbG9iYWw+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
UV9ERUNMX0lNUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2
KTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIHJldHVybiBX
ZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluKGFyZ2MsIGFyZ3YpOworfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFiMjc3ZTk5ODdlYzZiZGZlYTk3
ODZiZmYzZTEwODEzZTNkZWFjZTguLmM1YjdkZGVjZGRhN2U1YmJiY2M4NmViMzJmYzAxYjZhZmVh
MzU0MTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMy0wOSAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIFNldCB1cCBwbHVnaW4gcHJvY2VzcyBvbiBV
bml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjEy
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcW1h
a2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmY6IFJlZW5hYmxlIHBsdWdpbnMKKyAgICAg
ICAgYW5kIHR1cm4gb24gcGx1Z2luIHByb2Nlc3MuCisKIDIwMTItMDMtMDkgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxMTAyNTAuCmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1
cmVzL2ZlYXR1cmVzLnByZiBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMu
cHJmCmluZGV4IDg1ZTlhNGEwODM0YTAwOTk3YTRlMTVmZGM1NWE4MDgyMjBjMDdiMWQuLjg1NjY2
MzIzNDdkNTBiZmNmMjQ1NjA4ZGJmYjA4NWRkNzNkYTkwYzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3Ft
YWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCisrKyBiL1Rvb2xzL3FtYWtlL21rc3Bl
Y3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCkBAIC0xMjQsMTIgKzEyNCwxMSBAQCBoYXZlUXQoNSkg
ewogICAgIG5vX3dlYmtpdDIgewogICAgICAgICBERUZJTkVTICs9IFBMVUdJTl9BUkNISVRFQ1RV
UkVfVU5TVVBQT1JURUQ9MQogICAgIH0gZWxzZSB7Ci0gICAgICAgICMgRGlzYWJsZSB4bGliIHBs
dWdpbnMgd2hpbGUgdGhleSdyZSBpbi1wcm9jZXNzLCBiZWNhdXNlIHRoZXkgY3Jhc2gKLSAgICAg
ICAgIyBhcyBzb29uIGFzIGFuIGluc3RhbGxlZCBucGFwaSBwbHVnaW4gdXNlcyBRdCA0LgotICAg
ICAgICBmYWxzZTpjb250YWlucyhRVF9DT05GSUcsIHhjYi14bGliKSB7CisgICAgICAgIGNvbnRh
aW5zKFFUX0NPTkZJRywgeGNiLXhsaWIpIHsKICAgICAgICAgICAgIENPTkZJRyArPSBwbHVnaW5f
YmFja2VuZF94bGliCiAgICAgICAgICAgICBERUZJTkVTICs9IFBMVUdJTl9BUkNISVRFQ1RVUkVf
WDExPTEgXAotICAgICAgICAgICAgICAgICAgICAgICBQTFVHSU5fQVJDSElURUNUVVJFX1VOU1VQ
UE9SVEVEPTAKKyAgICAgICAgICAgICAgICAgICAgICAgUExVR0lOX0FSQ0hJVEVDVFVSRV9VTlNV
UFBPUlRFRD0wIFwKKyAgICAgICAgICAgICAgICAgICAgICAgRU5BQkxFX1BMVUdJTl9QUk9DRVNT
PTEKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIERFRklORVMgKz0gUExVR0lOX0FSQ0hJ
VEVDVFVSRV9VTlNVUFBPUlRFRD0xCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBi
L0NoYW5nZUxvZwppbmRleCA0MTg0ZjNlYWU0MjBmMmI4N2RiZmQyMGRlMzczOGJjM2IxZjZiZDE2
Li4zN2VmMzI4ZjQ1ODcxODllNTE4ZGVmNTM2ZDQyY2M5NjIzZDM4MGU5IDEwMDY0NAotLS0gYS9D
aGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDMtMDkgIEJh
bGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBT
ZXQgdXAgcGx1Z2luIHByb2Nlc3Mgb24gVW5peAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9RdFdlYktpdC5wcm86IEFkZCBQbHVnaW5Qcm9j
ZXNzIHN1YnByb2plY3QuCisKIDIwMTItMDMtMDggIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJu
ZS52ZXN0Ym9Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gVXNlIFF0J3MgbW9kdWxlIHN5c3Rl
bSBmb3IgaW5zdGFsbCBydWxlcyBhbmQgZGVwZW5kaW5nIG9uIFF0V2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131043</attachid>
            <date>2012-03-09 08:56:16 -0800</date>
            <delta_ts>2012-03-11 10:18:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72121-20120309175614.patch</filename>
            <type>text/plain</type>
            <size>51044</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjNmMGU2MjdkZTBmZGRh
ZjIzOWZlOTczNDdjZjAzYjVjNzczNWYzNS4uN2FiN2I5NWFkYzhmZjc1NTFlZjVjNDhjZGIwMjk0
ZWU0NTE4MTg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxMi0wMy0wOSAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIFNl
dCB1cCBwbHVnaW4gcHJvY2VzcyBvbiBVbml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MjEyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNldHVwIHBsdWdpbiBwcm9jZXNzIGZvciBRdCBhbmQgbW92ZSB0
aGUgdGFzayBvZiBxdWVyeWluZyB0aGUgcGx1Z2lucworICAgICAgICB0byB0aGlzIHByb2Nlc3Mg
aW4gb3JkZXIgdG8gYXZvaWQgY3Jhc2hlcyBkdWUgdG8gcGx1Z2luIGJ1Z3Mgb3IgbGlicmFyeQor
ICAgICAgICBpbmNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzLnBybzogQWRkZWQuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9j
ZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3NNYWluR3RrKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nl
c3NNYWluUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjptZXNzYWdlSGFuZGxlcik6CisgICAgICAg
IChXZWJLaXQ6OmluaXRpYWxpemVHdGspOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luUHJvY2Vzc01haW4pOgorICAgICAgICBJbXBsZW1lbnQgZW50cnkgcG9pbnQg
b2YgdGhlIHBsdWdpbiBwcm9jZXNzLgorICAgICAgICBIYW5kbGUgLXNjYW5QbHVnaW4gY29tbWFu
ZCBsaW5lIHN3aXRjaDogcHJvZHVjZSBtZXRhIGRhdGEKKyAgICAgICAgb2YgcGx1Z2luIG9uIHN0
YW5kYXJkIG91dHB1dCBhbmQgdGVybWluYXRlLiBNb3ZlIEd0ayBpbml0aWFsaXphdGlvbgorICAg
ICAgICBoYWNrIHRvIHRoZXJlLgorCisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6dHJ5TG9hZCk6CisgICAgICAgIEdldCByaWQgb2YgdGhlIEd0ayBpbml0aWFsaXph
dGlvbiBoYWNrLiBXZSBkbyBub3QgbmVhZCBpdCBoZXJlIGFueW1vcmUuCisKKyAgICAgICAgKiBT
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKE5ldHNjYXBlUGx1Z2luTW9kdWxlKToKKyAgICAgICAgKiBTaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpwYXJzZU1JTUVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQ
bHVnaW5JbmZvKToKKyAgICAgICAgR2V0IHBsdWdpbiBtZXRhIGRhdGEgdmlhIFBsdWdpblByb2Nl
c3Nwcm94eS4gSWYgYSBmYWlsdXJlCisgICAgICAgIGhhcHBlbmVkIHdlIGlnbm9yZSB0byB1c2Ug
dGhlIHBsdWdpbi4gUmVtb3ZlIHRoZSBjb25jZXB0CisgICAgICAgIG9mIHN0ZG91dCByZWRpcmVj
dGlvbiBzaW5jZSB3ZSBjYW4gY29udHJvbCBpdCB3aGVuIGxhdW5jaGluZworICAgICAgICB0aGUg
cHJvY2Vzcy4KKworICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6ZGV0ZXJt
aW5lUXVpcmtzKToKKyAgICAgICAgKFdlYktpdDo6dHJ1bmNhdGVUb1NpbmdsZUxpbmUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2NhblBsdWdpbik6CisgICAgICAg
IFByb2R1Y2UgcGx1Z2luIG1ldGEgZGF0YSBvbiBzdGFuZGFyZCBvdXRwdXQuCisKKyAgICAgICAg
KiBTaGFyZWQvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKiBTaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHA6IEFk
ZGVkLgorICAgICAgICAoZmluZFdlYktpdFByb2Nlc3MpOgorICAgICAgICAoZXhlY3V0YWJsZVBh
dGhPZldlYlByb2Nlc3MpOgorICAgICAgICAoZXhlY3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3Mp
OgorICAgICAgICAqIFNoYXJlZC9xdC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhRdC5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3F0L1BsdWdpblByb2Nlc3NQ
cm94eVF0LmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmV4ZWN1dGFi
bGVQYXRoKToKKyAgICAgICAgKFdlYktpdDo6ZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpleGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2Vzcyk6CisgICAgICAg
IEZhY3RvcmVkIHRoZSBleGVjdXRhYmxlIHBhdGggZGV0ZXJtaW5hdGlvbiBpbnRvIGZyZWUgZnVu
Y3Rpb25zCisgICAgICAgIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uCisKKyAgICAgICAgKiBT
aGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OnBhaW50KToKKyAgICAgICAgQWRkZWQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBv
dmVycmlkZSB3aXRoIHRoZSBzY2FsZSBmYWN0b3IgYmVjYXVzZQorICAgICAgICBpdCBpcyBjYWxs
ZWQgZnJvbSBQbHVnaW5Qcm94eS4gSXQgZG9lcyBub3QgYWN0dWFsbHkgaGFuZGxlIHRoZSBjYXNl
CisgICAgICAgIHdoZW4gdGhlIHNjYWxlIGZhY3RvciBpcyBub3QgMS4gSG93ZXZlciBpdCdzIG9r
IGJlY2F1c2UgaXQgY2FuIG9ubHkKKyAgICAgICAgaGFwcGVuIG9uIE1hYyBpbiB0aGUgbW9tZW50
LgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIv
UHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAgIChQcm9jZXNzTGF1bmNoZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICBVc2UgdGhlIG5ldyBm
dW5jdGlvbnMgdG8gZGV0ZXJtaW5lIHRoZSBleGVjdXRhYmxlIHBhdGguCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChSYXdQbHVnaW5NZXRhRGF0YSk6CisgICAgICAgIChQbHVnaW5Qcm9jZXNzUHJv
eHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlH
dGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5p
dGlhbGl6ZVBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2luKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBs
dWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5Q
bHVnaW4pOgorICAgICAgICBMYXVuY2ggcGx1Z2luIHByb2Nlc3MgYW5kIHBhcnNlIGl0J3Mgb3V0
cHV0IHRvIGdldCB0aGUgbWV0YSBkYXRhCisgICAgICAgIGZvciB0aGUgcGx1Z2luLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TlBOX0dldFZhbHVlKToKKyAgICAgICAgQ2hhbmdlZCBhY2Nv
cmRpbmcgdG8gdGhlIHJlbW92aW5nIG9mIHRoZSBmbGFzaCBoYWNrLiBEbyBub3QgdHJ5CisgICAg
ICAgIHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBwbHVnaW4gbmVlZHMgR3RrIGJ5IGl0J3MgbmFtZSBi
dXQgaW5zdGVhZAorICAgICAgICBhbHdheXMgZ2V0IGJhY2sgdGhlIGV4cGVjdGVkIEd0ayB2ZXJz
aW9uICgyKS4gT25seSBHdGsgcGx1Z2lucworICAgICAgICBzaG91bGQgYXNrIGZvciB0aGlzIGFu
eXdheS4KKworICAgICAgICAqIHF0L1BsdWdpbk1haW5RdC5jcHA6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlHdGsuY3Bw
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKG1haW4pOgorCiAyMDEyLTAzLTA4ICBUb3Ig
QXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRd
IFVzZSBRdCdzIG1vZHVsZSBzeXN0ZW0gZm9yIGluc3RhbGwgcnVsZXMgYW5kIGRlcGVuZGluZyBv
biBRdFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1F0V2ViS2l0LnBybyBiL1NvdXJjZS9RdFdl
YktpdC5wcm8KaW5kZXggMDJmYzllMWM3ZWJlMWY3MzE5ZDA5ZDEyMTVlMjA5ODk5YjQ1MWE3NC4u
YmJiZmM0MWU2ODE3YjdjMGQ1YmQ1ZTEzZWM5ZDNjZmQ0NzliYTFmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1F0V2ViS2l0LnBybworKysgYi9Tb3VyY2UvUXRXZWJLaXQucHJvCkBAIC00LDYgKzQsOCBA
QAogIyBTZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBidWls
ZCBzeXN0ZW0KICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitsb2FkKGZlYXR1cmVzKQorCiBURU1QTEFURSA9IHN1
YmRpcnMKIENPTkZJRyArPSBvcmRlcmVkCiAKQEAgLTEzLDYgKzE1LDEwIEBAIFNVQkRJUlMgKz0g
YXBpCiAhbm9fd2Via2l0MiB7CiAgICAgd2VicHJvY2Vzcy5maWxlID0gV2ViS2l0Mi9XZWJQcm9j
ZXNzLnBybwogICAgIFNVQkRJUlMgKz0gd2VicHJvY2VzcworICAgIGNvbnRhaW5zKERFRklORVMs
IEVOQUJMRV9QTFVHSU5fUFJPQ0VTUz0xKSB7CisgICAgICAgIHBsdWdpbnByb2Nlc3MuZmlsZSA9
IFdlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8KKyAgICAgICAgU1VCRElSUyArPSBwbHVnaW5wcm9j
ZXNzCisgICAgfQogfQogCiBpbmNsdWRlKFdlYktpdC9xdC9kb2NzL2RvY3MucHJpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQppbmRleCA5ODAwZmY1NmFiMTk2MWM2OWY3ZWMwOWM2OTMwNDU0MmNjNmY0MGU3
Li41NjYxMGMxMmE5MDNjOTAzNjlkMjUxYjQxZmZhZTYxYmE1ZmY2NDg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5hbQpAQCAtMzI2LDYgKzMyNiw3IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVk
L0VkaXRvclN0YXRlLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250U21vb3RoaW5nTGV2
ZWwuaCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vTGF5ZXJUcmVlQ29udGV4dENhaXJvLmNwcCBc
CiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcCBc
CiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5oIFwKQEAgLTMz
NSw2ICszMzYsNyBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9ndGsvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVk
L2d0ay9QcmludEluZm9HdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Byb2Nl
c3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9X
ZWJFdmVudEZhY3RvcnkuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50
RmFjdG9yeS5oIFwKQEAgLTEzNjEsNiArMTM2Myw3IEBAIFByb2dyYW1zX1dlYktpdFBsdWdpblBy
b2Nlc3NfQ1BQRkxBR1MgPSBcCiAJLURCVUlMRElOR19XRUJLSVQgXAogCS1ER1RLX0FQSV9WRVJT
SU9OXzI9MSBcCiAJLURFTkFCTEVfUExVR0lOX1BST0NFU1M9MSBcCisJLURMSUJFWEVDRElSPVwi
IiQobGliZXhlY2RpcikiXCIgXAogCSQoZ2xvYmFsX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlX2Nw
cGZsYWdzKSBcCiAJJCh3ZWJjb3JlZ3RrX2NwcGZsYWdzKSBcCkBAIC0xNDQzLDYgKzE0NDYsNyBA
QCB3ZWJraXQyX3BsdWdpbl9wcm9jZXNzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcCBcCiAJU291cmNlL1dlYktp
dDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGls
ZFByb2Nlc3MuaCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0
aC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNw
cCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0YS5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5j
cHAgXApAQCAtMTQ2OSw4ICsxNDczLDEwIEBAIHdlYmtpdDJfcGx1Z2luX3Byb2Nlc3Nfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50
R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJXaGVlbEV2ZW50
R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50
R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBh
dGhHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5j
cHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNz
UHJveHlHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lVXRpbGl0
aWVzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzLnBybyBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMDBjNDcwODFm
ZDI4NjA4NmYwNDQxNmE5MWM1ZTZjMTM2OGNmMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzLnBybwpAQCAtMCwwICsxLDI1IEBACisjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyMgUHJvamVjdCBmaWxlIGZvciB0aGUgV2ViS2l0MiBwbHVnaW4gcHJvY2VzcyBiaW5hcnkKKyMK
KyMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQg
c3lzdGVtCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVNUExBVEUgPSBhcHAKKworUVQgKz0gd2Via2l0CisK
K1RBUkdFVCA9IFF0V2ViUGx1Z2luUHJvY2VzcworREVTVERJUiA9ICQke1JPT1RfQlVJTERfRElS
fS9iaW4KKworU09VUkNFUyArPSBxdC9QbHVnaW5NYWluUXQuY3BwCisKK0lOQ0xVREVQQVRIID0g
JCRQV0QvLi4vSmF2YVNjcmlwdENvcmUgXAorICAgICAgICAgICAgICAkJElOQ0xVREVQQVRICisK
K0lOU1RBTExTICs9IHRhcmdldAorCitpc0VtcHR5KElOU1RBTExfQklOUykgeworICAgIHRhcmdl
dC5wYXRoID0gJCRbUVRfSU5TVEFMTF9CSU5TXQorfSBlbHNlIHsKKyAgICB0YXJnZXQucGF0aCA9
ICQkSU5TVEFMTF9CSU5TCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAKaW5kZXggOTkyZDc0MDc1MTA0Yzhj
YmNhNjEyZjFjZDg5OWU5YTUwZTM3MTQ0ZC4uODcwYzAxYzI3OTQ2ZWIyZTUwMzQxNTFiMDk4OGMw
ZWI2NjA4MzEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsv
UGx1Z2luUHJvY2Vzc01haW5HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluR3RrLmgiCiAKKyNpbmNs
dWRlICJOZXRzY2FwZVBsdWdpbi5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KICNpbmNsdWRlIDxnZGsvZ2RreC5oPgpAQCAtNTMsMTIg
KzU0LDIyIEBAIHN0YXRpYyBpbnQgd2Via2l0Z3RrWEVycm9yKERpc3BsYXkqIHhkaXNwbGF5LCBY
RXJyb3JFdmVudCogZXJyb3IpCiAKIFdLX0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW5HdGso
aW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKIHsKLSAgICBBU1NFUlQoYXJnYyA9PSAyKTsKKyAgICBB
U1NFUlQoYXJnYyA9PSAyIHx8IGFyZ2MgPT0gMyk7CisgICAgYm9vbCBzY2FuUGx1Z2luID0gIXN0
cmNtcChhcmd2WzFdLCAiLXNjYW5QbHVnaW4iKTsKKyAgICBBU1NFUlQoYXJnYyA9PSAyIHx8IChh
cmdjID09IDMgJiYgc2NhblBsdWdpbikpOwogCiAgICAgZ3RrX2luaXQoJmFyZ2MsICZhcmd2KTsK
IAogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1h
aW5UaHJlYWQoKTsKKworICAgIGlmIChzY2FuUGx1Z2luKSB7CisgICAgICAgIFN0cmluZyBwbHVn
aW5QYXRoKGFyZ3ZbMl0pOworICAgICAgICBpZiAoIU5ldHNjYXBlUGx1Z2luTW9kdWxlOjpzY2Fu
UGx1Z2luKHBsdWdpblBhdGgpKQorICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAg
ICAgICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKKyAgICB9CisKICAgICBSdW5Mb29wOjppbml0aWFs
aXplTWFpblJ1bkxvb3AoKTsKIAogICAgIC8vIFBsdWdpbnMgY2FuIHByb2R1Y2UgWCBlcnJvcnMg
dGhhdCBhcmUgaGFuZGxlZCBieSB0aGUgR0RLIFggZXJyb3IgaGFuZGxlciwgd2hpY2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5R
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWlu
UXQuY3BwCmluZGV4IGQzYTBlYzNlMjQ1OTU2Yjk4NTAwZDU2N2U1NjVmYWExNTA2YTAwNTMuLmJj
NDg3ZTFlYzcxZjQwMDlmNjdlMWZlZWFkMDEyMDFmNTI2ZGJhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5RdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgTm9raWEgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIFVuaXZlcnNpdHkg
b2YgU3plZ2VkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNCw0NCArMjUsODMgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01haW4uaCIKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VT
UykKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpbi5oIgogCi0jaW5jbHVkZSAiQ29tbWFuZExp
bmUuaCIKKyNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbk1vZHVsZS5oIgogI2luY2x1ZGUgIlBsdWdp
blByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVk
ZSA8UURlYnVnPgorI2luY2x1ZGUgPFFHdWlBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRU3RyaW5n
TGlzdD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KICNpbmNsdWRlIDxydW50aW1lL0lu
aXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNkZWZpbmUgU0hPV19DUkFTSF9SRVBPUlRF
UiAxCisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWludCBQbHVnaW5Qcm9jZXNzTWFpbihjb25zdCBD
b21tYW5kTGluZSYgY29tbWFuZExpbmUpCitzdGF0aWMgdm9pZCBtZXNzYWdlSGFuZGxlcihRdE1z
Z1R5cGUgdHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKLSAgICBTdHJpbmcgc2VydmljZU5h
bWUgPSBjb21tYW5kTGluZVsic2VydmljZW5hbWUiXTsKLSAgICBpZiAoc2VydmljZU5hbWUuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIGlmICh0eXBlID09IFF0
Q3JpdGljYWxNc2cpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbWVzc2FnZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBEbyBub3RoaW5nCit9CiAKLSNpZiAh
U0hPV19DUkFTSF9SRVBPUlRFUgotICAgIC8vIEluc3RhbGxzIHNpZ25hbCBoYW5kbGVycyB0aGF0
IGV4aXQgb24gYSBjcmFzaCBzbyB0aGF0IENyYXNoUmVwb3J0ZXIgZG9lcyBub3Qgc2hvdyB1cC4K
LSAgICBzaWduYWwoU0lHSUxMLCBfZXhpdCk7Ci0gICAgc2lnbmFsKFNJR0ZQRSwgX2V4aXQpOwot
ICAgIHNpZ25hbChTSUdCVVMsIF9leGl0KTsKLSAgICBzaWduYWwoU0lHU0VHViwgX2V4aXQpOwot
I2VuZGlmCitzdGF0aWMgYm9vbCBpbml0aWFsaXplR3RrKCkKK3sKKyAgICBRTGlicmFyeSBndGtM
aWJyYXJ5KFFMYXRpbjFTdHJpbmcoImxpYmd0ay14MTEtMi4wIiksIDApOworICAgIGlmICghZ3Rr
TGlicmFyeS5sb2FkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB0eXBlZGVmIHZvaWQq
ICgqZ3RrX2luaXRfcHRyKSh2b2lkKiwgdm9pZCopOworICAgIGd0a19pbml0X3B0ciBndGtJbml0
ID0gcmVpbnRlcnByZXRfY2FzdDxndGtfaW5pdF9wdHI+KGd0a0xpYnJhcnkucmVzb2x2ZSgiZ3Rr
X2luaXQiKSk7CisgICAgaWYgKCFndGtJbml0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Z3RrSW5pdCgwLCAwKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW50IFBsdWdpblByb2Nlc3NN
YWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICBRQnl0ZUFycmF5IHN1cHByZXNzT3V0
cHV0ID0gcWdldGVudigiUVRfV0VCS0lUX1NVUFBSRVNTX1dFQl9QUk9DRVNTX09VVFBVVCIpOwor
ICAgIGlmICghc3VwcHJlc3NPdXRwdXQuaXNFbXB0eSgpICYmIHN1cHByZXNzT3V0cHV0ICE9ICIw
IikKKyAgICAgICAgcUluc3RhbGxNc2dIYW5kbGVyKG1lc3NhZ2VIYW5kbGVyKTsKKworICAgIFFH
dWlBcHBsaWNhdGlvbiBhcHAoYXJnYywgYXJndik7CisKKyAgICAvLyBXb3JrYXJvdW5kIHRoZSBp
c3N1ZSB0aGF0IHNvbWUgdmVyc2lvbnMgb2YgZmxhc2ggZG9lcyBub3QgaW5pdGlhbGl6ZSBHdGsg
cHJvcGVybHkuCisgICAgaWYgKCFpbml0aWFsaXplR3RrKCkpCisgICAgICAgIHJldHVybiBFWElU
X0ZBSUxVUkU7CiAKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6Omlu
aXRpYWxpemVNYWluVGhyZWFkKCk7CisKKyAgICBpZiAoYXJnYyA8PSAxKQorICAgICAgICByZXR1
cm4gRVhJVF9GQUlMVVJFOworCisgICAgaWYgKGFwcC5hcmd1bWVudHMoKS5hdCgxKSA9PSBRTGF0
aW4xU3RyaW5nKCItc2NhblBsdWdpbiIpKSB7CisgICAgICAgIGlmIChhcmdjICE9IDMpCisgICAg
ICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgICAgICBTdHJpbmcgcGx1Z2luUGF0aChh
cHAuYXJndW1lbnRzKCkuYXQoMikpOworICAgICAgICBpZiAoIU5ldHNjYXBlUGx1Z2luTW9kdWxl
OjpzY2FuUGx1Z2luKHBsdWdpblBhdGgpKQorICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVS
RTsKKyAgICAgICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKKyAgICB9CisKICAgICBSdW5Mb29wOjpp
bml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIAorICAgIC8vIENyZWF0ZSB0aGUgY29ubmVjdGlvbi4K
KyAgICBib29sIGlzTnVtYmVyID0gZmFsc2U7CisgICAgaW50IGlkZW50aWZpZXIgPSBhcHAuYXJn
dW1lbnRzKCkuYXQoMSkudG9JbnQoJmlzTnVtYmVyLCAxMCk7CisgICAgaWYgKCFpc051bWJlcikK
KyAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICBXZWJLaXQ6OlBsdWdpblByb2Nlc3M6
OnNoYXJlZCgpLmluaXRpYWxpemUoaWRlbnRpZmllciwgUnVuTG9vcDo6bWFpbigpKTsKKwogICAg
IFJ1bkxvb3A6OnJ1bigpOwogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVs
ZS5jcHAKaW5kZXggZTVmOGRjMmEzZjJlZmE3ZGU4YjQxMDk5MzI2YWUwNGY5NWY0NTE2My4uYzE4
NzRkOTk2NmE2NmRkOTMyZWQyZGZmOTIwN2NiZjg5ZDMyNWJhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luTW9kdWxlLmNwcApAQCAtMTk3LDEwICsxOTcsNiBAQCBib29sIE5ldHNjYXBlUGx1Z2luTW9k
dWxlOjpsb2FkKCkKIAogYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6dHJ5TG9hZCgpCiB7Ci0j
aWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCi0gICAgYXBwbHlYMTFRdWlya3NCZWZvcmVMb2Fk
KCk7Ci0jZW5kaWYKLQogICAgIG1fbW9kdWxlID0gYWRvcHRQdHIobmV3IE1vZHVsZShtX3BsdWdp
blBhdGgpKTsKICAgICBpZiAoIW1fbW9kdWxlLT5sb2FkKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luTW9kdWxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oCmluZGV4IGY4MGEwYTFhMGEzMmMwNzIxY2U2YWJm
YjVmYmRkNWI0MGQ4YTk2YjIuLmU5NmJkMmQwNDJiY2VhNDU5ZWNiMWE0ZGY4NjI2Y2U2MzY4MTE5
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaApAQCAtMzUsNiArMzUsOCBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgUmF3UGx1Z2luTWV0YURhdGE7CisKIGNsYXNzIE5ldHNj
YXBlUGx1Z2luTW9kdWxlIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4g
Z2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKQEAgLTYxLDE1ICs2MywxNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgY3JlYXRlUGx1Z2luTUlNRVR5cGVzUHJlZmVyZW5j
ZXMoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKICNlbmRpZgogCisjaWYgUExVR0lOX0FSQ0hJ
VEVDVFVSRShYMTEpCisgICAgc3RhdGljIGJvb2wgc2NhblBsdWdpbihjb25zdCBTdHJpbmcmIHBs
dWdpblBhdGgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTmV0c2NhcGVQbHVn
aW5Nb2R1bGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKIAogICAgIHZvaWQgZGV0ZXJtaW5l
UXVpcmtzKCk7CiAKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKLSAgICB2b2lkIGFwcGx5
WDExUXVpcmtzQmVmb3JlTG9hZCgpOwotICAgIHN0YXRpYyB2b2lkIHNldE1JTUVEZXNjcmlwdGlv
bihjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlwdGlvbiwgUGx1Z2luTW9kdWxlSW5mbyYpOwotICAg
IGJvb2wgZ2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihQbHVnaW5Nb2R1bGVJbmZvJik7Cisg
ICAgYm9vbCBnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKFJhd1BsdWdpbk1ldGFEYXRhJik7
CiAjZW5kaWYKIAogICAgIGJvb2wgdHJ5R2V0U2l0ZXNXaXRoRGF0YShWZWN0b3I8U3RyaW5nPiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDEx
L05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVn
aW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAKaW5kZXggODY2ODMz
YzY0NjExZDEyZGQ3ZTA1MWM3ZjA5YjU0YWU4OGY1OTM2OS4uMGNiZmU5Y2Y5YjE2MmQ0ZjI2YWIy
ZGYzYWQyYzZjOWU5N2RkMDhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1
bGVYMTEuY3BwCkBAIC0yOCw3NiArMjgsMjkgQEAKIAogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2lu
TW9kdWxlLmgiCiAKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJO
ZXRzY2FwZUJyb3dzZXJGdW5jcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgot
Ci0jaWYgUExBVEZPUk0oUVQpCi0jaW5jbHVkZSA8UUxpYnJhcnk+Ci0jZW5kaWYKLQorI2luY2x1
ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgog
I2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0
Zi9Pd25BcnJheVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duQXJyYXlQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgU3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3IgewotcHVi
bGljOgotICAgIFN0ZG91dERldk51bGxSZWRpcmVjdG9yKCk7Ci0gICAgflN0ZG91dERldk51bGxS
ZWRpcmVjdG9yKCk7Ci0KLXByaXZhdGU6Ci0gICAgaW50IG1fc2F2ZWRTdGRvdXQ7Ci19OwotCi1T
dGRvdXREZXZOdWxsUmVkaXJlY3Rvcjo6U3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3IoKQotICAgIDog
bV9zYXZlZFN0ZG91dCgtMSkKK3N0YXRpYyB2b2lkIHBhcnNlTUlNRURlc2NyaXB0aW9uKGNvbnN0
IFN0cmluZyYgbWltZURlc2NyaXB0aW9uLCBWZWN0b3I8TWltZUNsYXNzSW5mbz4mIHJlc3VsdCkK
IHsKLSAgICBpbnQgbmV3U3Rkb3V0ID0gb3BlbigiL2Rldi9udWxsIiwgT19XUk9OTFkpOwotICAg
IGlmIChuZXdTdGRvdXQgPT0gLTEpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3NhdmVkU3Rkb3V0
ID0gZHVwKFNURE9VVF9GSUxFTk8pOwotICAgIGR1cDIobmV3U3Rkb3V0LCBTVERPVVRfRklMRU5P
KTsKLX0KLQotU3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3I6On5TdGRvdXREZXZOdWxsUmVkaXJlY3Rv
cigpCi17Ci0gICAgaWYgKG1fc2F2ZWRTdGRvdXQgIT0gLTEpCi0gICAgICAgIGR1cDIobV9zYXZl
ZFN0ZG91dCwgU1RET1VUX0ZJTEVOTyk7Ci19Ci0KLSNpZiBQTEFURk9STShRVCkKLXN0YXRpYyB2
b2lkIGluaXRpYWxpemVHVEsoKQotewotICAgIFFMaWJyYXJ5IGxpYnJhcnkoUUxhdGluMVN0cmlu
ZygibGliZ3RrLXgxMS0yLjAuc28uMCIpKTsKLSAgICBpZiAobGlicmFyeS5sb2FkKCkpIHsKLSAg
ICAgICAgdHlwZWRlZiB2b2lkICooKmd0a19pbml0X2NoZWNrX3B0cikoaW50KiwgY2hhcioqKik7
Ci0gICAgICAgIGd0a19pbml0X2NoZWNrX3B0ciBndGtJbml0Q2hlY2sgPSByZWludGVycHJldF9j
YXN0PGd0a19pbml0X2NoZWNrX3B0cj4obGlicmFyeS5yZXNvbHZlKCJndGtfaW5pdF9jaGVjayIp
KTsKLSAgICAgICAgLy8gTk9URTogV2UncmUgdXNpbmcgZ3RrX2luaXRfY2hlY2soKSBzaW5jZSBn
dGtfaW5pdCgpIGNhbGxzIGV4aXQoKSBvbiBmYWlsdXJlLgotICAgICAgICBpZiAoZ3RrSW5pdENo
ZWNrKQotICAgICAgICAgICAgKHZvaWQpIGd0a0luaXRDaGVjaygwLCAwKTsKLSAgICB9Ci19Ci0j
ZW5kaWYKKyAgICBBU1NFUlRfQVJHKHJlc3VsdCwgcmVzdWx0LmlzRW1wdHkoKSk7CiAKLXZvaWQg
TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmFwcGx5WDExUXVpcmtzQmVmb3JlTG9hZCgpCi17Ci0jaWYg
UExBVEZPUk0oUVQpCi0gICAgaWYgKG1fcGx1Z2luUGF0aC5jb250YWlucygibnB3cmFwcGVyIikg
fHwgbV9wbHVnaW5QYXRoLmNvbnRhaW5zKCJmbGFzaHBsYXllciIpKSB7Ci0gICAgICAgIGluaXRp
YWxpemVHVEsoKTsKLSAgICAgICAgbV9wbHVnaW5RdWlya3MuYWRkKFBsdWdpblF1aXJrczo6UmVx
dWlyZXNHVEtUb29sS2l0KTsKLSAgICB9Ci0jZW5kaWYKLX0KLQotdm9pZCBOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6c2V0TUlNRURlc2NyaXB0aW9uKGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9u
LCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCi17CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7
CiAgICAgbWltZURlc2NyaXB0aW9uLmxvd2VyKCkuc3BsaXQoVUNoYXIoJzsnKSwgZmFsc2UsIHR5
cGVzKTsKLSAgICBwbHVnaW4uaW5mby5taW1lcy5yZXNlcnZlQ2FwYWNpdHkodHlwZXMuc2l6ZSgp
KTsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0eXBlcy5zaXplKCkpOwogCiAg
ICAgc2l6ZV90IG1pbWVJbmZvQ291bnQgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dHlwZXMuc2l6ZSgpOyArK2kpIHsKQEAgLTEwNiw4ICs1OSw4IEBAIHZvaWQgTmV0c2NhcGVQbHVn
aW5Nb2R1bGU6OnNldE1JTUVEZXNjcmlwdGlvbihjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlwdGlv
biwgUGx1CiAgICAgICAgIGlmIChtaW1lVHlwZVBhcnRzLnNpemUoKSA8PSAwKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgcGx1Z2luLmluZm8ubWltZXMudW5jaGVja2VkQXBwZW5k
KE1pbWVDbGFzc0luZm8oKSk7Ci0gICAgICAgIE1pbWVDbGFzc0luZm8mIG1pbWVJbmZvID0gcGx1
Z2luLmluZm8ubWltZXNbbWltZUluZm9Db3VudCsrXTsKKyAgICAgICAgcmVzdWx0LnVuY2hlY2tl
ZEFwcGVuZChNaW1lQ2xhc3NJbmZvKCkpOworICAgICAgICBNaW1lQ2xhc3NJbmZvJiBtaW1lSW5m
byA9IHJlc3VsdFttaW1lSW5mb0NvdW50KytdOwogICAgICAgICBtaW1lSW5mby50eXBlID0gbWlt
ZVR5cGVQYXJ0c1swXTsKIAogICAgICAgICBpZiAobWltZVR5cGVQYXJ0cy5zaXplKCkgPiAxKQpA
QCAtMTE4LDEzICs3MSwxMCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpzZXRNSU1FRGVz
Y3JpcHRpb24oY29uc3QgU3RyaW5nJiBtaW1lRGVzY3JpcHRpb24sIFBsdQogICAgIH0KIH0KIAot
Ym9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihQ
bHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCitib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQ
bHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKFJhd1BsdWdpbk1ldGFEYXRhJiBtZXRhRGF0YSkKIHsK
ICAgICBBU1NFUlQobV9pc0luaXRpYWxpemVkKTsKIAotICAgIHBsdWdpbi5wYXRoID0gbV9wbHVn
aW5QYXRoOwotICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBwYXRoR2V0RmlsZU5hbWUobV9wbHVnaW5Q
YXRoKTsKLQogICAgIE1vZHVsZSogbW9kdWxlID0gbV9tb2R1bGUuZ2V0KCk7CiAgICAgTlBQX0dl
dFZhbHVlUHJvY1B0ciBOUFBfR2V0VmFsdWUgPSBtb2R1bGUtPmZ1bmN0aW9uUG9pbnRlcjxOUFBf
R2V0VmFsdWVQcm9jUHRyPigiTlBfR2V0VmFsdWUiKTsKICAgICBpZiAoIU5QUF9HZXRWYWx1ZSkK
QEAgLTEzNyw0NyArODcsNDUgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2lu
SW5mb0ZvckxvYWRlZFBsdWdpbihQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4KICAgICBjaGFyKiBi
dWZmZXI7CiAgICAgTlBFcnJvciBlcnJvciA9IE5QUF9HZXRWYWx1ZSgwLCBOUFBWcGx1Z2luTmFt
ZVN0cmluZywgJmJ1ZmZlcik7CiAgICAgaWYgKGVycm9yID09IE5QRVJSX05PX0VSUk9SKQotICAg
ICAgICBwbHVnaW4uaW5mby5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIpOworICAgICAg
ICBtZXRhRGF0YS5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIpOwogCiAgICAgZXJyb3Ig
PSBOUFBfR2V0VmFsdWUoMCwgTlBQVnBsdWdpbkRlc2NyaXB0aW9uU3RyaW5nLCAmYnVmZmVyKTsK
ICAgICBpZiAoZXJyb3IgPT0gTlBFUlJfTk9fRVJST1IpCi0gICAgICAgIHBsdWdpbi5pbmZvLmRl
c2MgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlcik7CisgICAgICAgIG1ldGFEYXRhLmRlc2NyaXB0
aW9uID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIpOwogCiAgICAgU3RyaW5nIG1pbWVEZXNjcmlw
dGlvbiA9IFN0cmluZzo6ZnJvbVVURjgoTlBfR2V0TUlNRURlc2NyaXB0aW9uKCkpOwogICAgIGlm
IChtaW1lRGVzY3JpcHRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHNldE1JTUVEZXNjcmlwdGlvbihtaW1lRGVzY3JpcHRpb24sIHBsdWdpbik7CisgICAgbWV0YURh
dGEubWltZURlc2NyaXB0aW9uID0gbWltZURlc2NyaXB0aW9uOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CisKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3Ry
aW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCiB7Ci0gICAgLy8gVGVt
cGFyYXJpbHkgc3VwcHJlc3Mgc3Rkb3V0IGluIHRoaXMgZnVuY3Rpb24gYXMgcGx1Z2lucyB3aWxs
IGJlIGxvYWRlZCBhbmQgc2h1dGRvd24gYW5kIGRlYnVnIGluZm8KLSAgICAvLyBpcyBsZWFrZWQg
dG8gbGF5b3V0IHRlc3Qgb3V0cHV0LgotICAgIFN0ZG91dERldk51bGxSZWRpcmVjdG9yIHN0ZG91
dERldk51bGxSZWRpcmVjdG9yOwotCi0gICAgLy8gV2UgYXJlIGxvYWRpbmcgdGhlIHBsdWdpbiBo
ZXJlIHNpbmNlIGl0IGRvZXMgbm90IHNlZW0gdG8gYmUgYSBzdGFuZGFyZGl6ZWQgd2F5IHRvCi0g
ICAgLy8gZ2V0IHRoZSBuZWVkZWQgaW5mb3JtYXRpb25zIGZyb20gYSBVTklYIHBsdWdpbiB3aXRo
b3V0IGxvYWRpbmcgaXQuCi0gICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBwbHVnaW5N
b2R1bGUgPSBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUocGx1Z2luUGF0aCk7Ci0g
ICAgaWYgKCFwbHVnaW5Nb2R1bGUpCisgICAgUmF3UGx1Z2luTWV0YURhdGEgbWV0YURhdGE7Cisg
ICAgaWYgKCFQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4ocGx1Z2luUGF0aCwgbWV0YURh
dGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBwbHVnaW5Nb2R1bGUtPmluY3JlbWVu
dExvYWRDb3VudCgpOwotICAgIGJvb2wgcmV0dXJuVmFsdWUgPSBwbHVnaW5Nb2R1bGUtPmdldFBs
dWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4ocGx1Z2luKTsKLSAgICBwbHVnaW5Nb2R1bGUtPmRlY3Jl
bWVudExvYWRDb3VudCgpOworICAgIHBsdWdpbi5wYXRoID0gcGx1Z2luUGF0aDsKKyAgICBwbHVn
aW4uaW5mby5maWxlID0gcGF0aEdldEZpbGVOYW1lKHBsdWdpblBhdGgpOworICAgIHBsdWdpbi5p
bmZvLm5hbWUgPSBtZXRhRGF0YS5uYW1lOworICAgIHBsdWdpbi5pbmZvLmRlc2MgPSBtZXRhRGF0
YS5kZXNjcmlwdGlvbjsKKyAgICBwYXJzZU1JTUVEZXNjcmlwdGlvbihtZXRhRGF0YS5taW1lRGVz
Y3JpcHRpb24sIHBsdWdpbi5pbmZvLm1pbWVzKTsKIAotICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6ZGV0ZXJt
aW5lUXVpcmtzKCkKIHsKICNpZiBDUFUoWDg2XzY0KQotICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1
Z2luOwotICAgIGlmICghZ2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihwbHVnaW4pKQorICAg
IFJhd1BsdWdpbk1ldGFEYXRhIG1ldGFEYXRhOworICAgIGlmICghZ2V0UGx1Z2luSW5mb0Zvckxv
YWRlZFBsdWdpbihtZXRhRGF0YSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxNaW1l
Q2xhc3NJbmZvPiBtaW1lVHlwZXMgPSBwbHVnaW4uaW5mby5taW1lczsKKyAgICBWZWN0b3I8TWlt
ZUNsYXNzSW5mbz4gbWltZVR5cGVzOworICAgIHBhcnNlTUlNRURlc2NyaXB0aW9uKG1ldGFEYXRh
Lm1pbWVEZXNjcmlwdGlvbiwgbWltZVR5cGVzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1pbWVUeXBlcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAobWltZVR5cGVzW2ldLnR5cGUg
PT0gImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIikgewogICAgICAgICAgICAgbV9wbHVn
aW5RdWlya3MuYWRkKFBsdWdpblF1aXJrczo6SWdub3JlUmlnaHRDbGlja0luV2luZG93bGVzc01v
ZGUpOwpAQCAtMTg3LDYgKzEzNSw2NSBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpkZXRl
cm1pbmVRdWlya3MoKQogI2VuZGlmCiB9CiAKK3N0YXRpYyBTdHJpbmcgdHJ1bmNhdGVUb1Npbmds
ZUxpbmUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgQVNTRVJUX0FSRyhzdHJpbmcsICFz
dHJpbmcuaXM4Qml0KCkpOworCisgICAgdW5zaWduZWQgb2xkTGVuZ3RoID0gc3RyaW5nLmxlbmd0
aCgpOworICAgIFVDaGFyKiBidWZmZXI7CisgICAgU3RyaW5nIHN0cmluZ0J1ZmZlcihTdHJpbmdJ
bXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKG9sZExlbmd0aCArIDEsIGJ1ZmZlcikpOworCisgICAg
dW5zaWduZWQgbmV3TGVuZ3RoID0gMDsKKyAgICBmb3IgKGNvbnN0IFVDaGFyKiBjID0gc3RyaW5n
LmNoYXJhY3RlcnMxNigpOyBjIDwgc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgb2xkTGVuZ3RoOyAr
K2MpIHsKKyAgICAgICAgaWYgKCpjICE9IFVDaGFyKCdcbicpKQorICAgICAgICAgICAgYnVmZmVy
W25ld0xlbmd0aCsrXSA9ICpjOworICAgIH0KKyAgICBidWZmZXJbbmV3TGVuZ3RoKytdID0gVUNo
YXIoJ1xuJyk7CisKKyAgICBpZiAobmV3TGVuZ3RoID09IG9sZExlbmd0aCArIDEpCisgICAgICAg
IHJldHVybiBzdHJpbmdCdWZmZXI7CisgICAgcmV0dXJuIFN0cmluZyhzdHJpbmdCdWZmZXIuY2hh
cmFjdGVyczE2KCksIG5ld0xlbmd0aCk7Cit9CisKK2Jvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6
OnNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQoreworICAgIC8vIFdlIGFyZSBs
b2FkaW5nIHRoZSBwbHVnaW4gaGVyZSBzaW5jZSBpdCBkb2VzIG5vdCBzZWVtIHRvIGJlIGEgc3Rh
bmRhcmRpemVkIHdheSB0bworICAgIC8vIGdldCB0aGUgbmVlZGVkIGluZm9ybWF0aW9ucyBmcm9t
IGEgVU5JWCBwbHVnaW4gd2l0aG91dCBsb2FkaW5nIGl0LgorICAgIFJlZlB0cjxOZXRzY2FwZVBs
dWdpbk1vZHVsZT4gcGx1Z2luTW9kdWxlID0gTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldE9yQ3Jl
YXRlKHBsdWdpblBhdGgpOworICAgIGlmICghcGx1Z2luTW9kdWxlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBwbHVnaW5Nb2R1bGUtPmluY3JlbWVudExvYWRDb3VudCgpOworICAgIFJh
d1BsdWdpbk1ldGFEYXRhIG1ldGFEYXRhOworICAgIGJvb2wgc3VjY2VzcyA9IHBsdWdpbk1vZHVs
ZS0+Z2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihtZXRhRGF0YSk7CisgICAgcGx1Z2luTW9k
dWxlLT5kZWNyZW1lbnRMb2FkQ291bnQoKTsKKworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gV3JpdGUgZGF0YSB0byBzdGFuZGFyZCBvdXRwdXQgZm9y
IHRoZSBVSSBwcm9jZXNzLgorICAgIFN0cmluZyBvdXRwdXRbM10gPSB7CisgICAgICAgIHRydW5j
YXRlVG9TaW5nbGVMaW5lKG1ldGFEYXRhLm5hbWUpLAorICAgICAgICB0cnVuY2F0ZVRvU2luZ2xl
TGluZShtZXRhRGF0YS5kZXNjcmlwdGlvbiksCisgICAgICAgIHRydW5jYXRlVG9TaW5nbGVMaW5l
KG1ldGFEYXRhLm1pbWVEZXNjcmlwdGlvbikKKyAgICB9OworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCAzOyArK2kpIHsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBsaW5lID0gb3V0cHV0W2ld
OworICAgICAgICBjb25zdCBjaGFyKiBjdXJyZW50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4obGluZS5jaGFyYWN0ZXJzMTYoKSk7CisgICAgICAgIGNvbnN0IGNoYXIqIGVuZCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxpbmUuY2hhcmFjdGVyczE2KCkpICsgKGxpbmUu
bGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnQgPCBlbmQp
IHsKKyAgICAgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgICAgICB3aGlsZSAoKHJlc3VsdCA9
IGZwdXRjKCpjdXJyZW50LCBzdGRvdXQpKSA9PSBFT0YgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQor
ICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCAhPSBFT0YpOworICAgICAgICAgICAgKytjdXJyZW50
OworICAgICAgICB9CisgICAgfQorCisgICAgZmZsdXNoKHN0ZG91dCk7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTFVHSU5fQVJD
SElURUNUVVJFKFgxMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Qcm9jZXNz
RXhlY3V0YWJsZVBhdGguaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Qcm9jZXNzRXhlY3V0YWJs
ZVBhdGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZmJmMzIwMTgxMTA1NWUzODRhYmVkYjZkM2RkNWRhZjFjN2I3
NGRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
VW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBVTklWRVJTSVRZIE9GIFNaRUdFRCBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFVOSVZFUlNJVFkgT0YgU1pFR0VEIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWZuZGVmIFByb2Nlc3NFeGVjdXRhYmxlUGF0
aF9oCisjZGVmaW5lIFByb2Nlc3NFeGVjdXRhYmxlUGF0aF9oCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nlc3MoKTsKK1N0cmluZyBleGVjdXRh
YmxlUGF0aE9mUGx1Z2luUHJvY2VzcygpOworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVlNTRjOGIyMTI3ZDM3YmQxOTIyMWJkNjhmYzJkOWNhODJjNWQ0ZTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0
aEd0ay5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIw
MTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBNT1RPUk9MQSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBNT1RPUk9M
QSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJs
ZVBhdGguaCIKKworY29uc3QgY2hhciogZ1dlYktpdFdlYlByb2Nlc3NOYW1lID0gIldlYktpdFdl
YlByb2Nlc3MiOworY29uc3QgY2hhciogZ1dlYktpdFBsdWdpblByb2Nlc3NOYW1lID0gIldlYktp
dFBsdWdpblByb2Nlc3MiOworCitzdGF0aWMgU3RyaW5nIGZpbmRXZWJLaXRQcm9jZXNzKGNvbnN0
IGNoYXIqIHByb2Nlc3NOYW1lKQoreworICAgIGNvbnN0IGNoYXIqIGV4ZWNEaXJlY3RvcnkgPSBn
X2dldGVudigiV0VCS0lUX0VYRUNfUEFUSCIpOworICAgIGlmIChleGVjRGlyZWN0b3J5KSB7Cisg
ICAgICAgIFN0cmluZyBwcm9jZXNzUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmaWxl
bmFtZVRvU3RyaW5nKGV4ZWNEaXJlY3RvcnkpLCBwcm9jZXNzTmFtZSk7CisgICAgICAgIGlmIChm
aWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkKKyAgICAgICAgICAgIHJldHVybiBwcm9jZXNzUGF0aDsK
KyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBnb3RFeGVjdXRhYmxlUGF0aCA9IGZhbHNlOworICAg
IHN0YXRpYyBTdHJpbmcgZXhlY3V0YWJsZVBhdGg7CisgICAgaWYgKCFnb3RFeGVjdXRhYmxlUGF0
aCkgeworICAgICAgICBnb3RFeGVjdXRhYmxlUGF0aCA9IHRydWU7CisKKyAgICAgICAgQ1N0cmlu
ZyBleGVjdXRhYmxlRmlsZSA9IGdldEN1cnJlbnRFeGVjdXRhYmxlUGF0aCgpOworICAgICAgICBp
ZiAoIWV4ZWN1dGFibGVGaWxlLmlzTnVsbCgpKQorICAgICAgICAgICAgZXhlY3V0YWJsZVBhdGgg
PSBkaXJlY3RvcnlOYW1lKGZpbGVuYW1lVG9TdHJpbmcoZXhlY3V0YWJsZUZpbGUuZGF0YSgpKSk7
CisgICAgfQorCisgICAgaWYgKCFleGVjdXRhYmxlUGF0aC5pc051bGwoKSkgeworICAgICAgICBT
dHJpbmcgcHJvY2Vzc1BhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZXhlY3V0YWJsZVBh
dGgsIHByb2Nlc3NOYW1lKTsKKyAgICAgICAgaWYgKGZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQor
ICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NQYXRoOworICAgIH0KKworICAgIHJldHVybiBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZmlsZW5hbWVUb1N0cmluZyhMSUJFWEVDRElSKSwgcHJvY2Vz
c05hbWUpOworfQorCitTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nlc3MoKQoreworICAg
IGZpbmRXZWJLaXRQcm9jZXNzKGdXZWJLaXRXZWJQcm9jZXNzTmFtZSk7Cit9CisKK1N0cmluZyBl
eGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2VzcygpCit7CisgICAgZmluZFdlYktpdFByb2Nlc3Mo
Z1dlYktpdFBsdWdpblByb2Nlc3NOYW1lKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9xdC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvcXQvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljYmNkZjEx
NmI5YjYwYmZiNjdhMThmY2I4ZmRmMTNmN2FiNmEyMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvcXQvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoUXQuY3BwCkBAIC0wLDAg
KzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgiCisKKyNpbmNsdWRlIDxRQ29yZUFwcGxp
Y2F0aW9uPgorI2luY2x1ZGUgPFFEaXI+CisjaW5jbHVkZSA8UUZpbGU+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdGF0aWMgU3RyaW5nIGV4ZWN1dGFibGVQYXRoKFFMYXRpbjFTdHJpbmcgYmFz
ZU5hbWUpCit7CisgICAgUVN0cmluZyBleHBlY3RlZFBhdGggPSBRQ29yZUFwcGxpY2F0aW9uOjph
cHBsaWNhdGlvbkRpclBhdGgoKSArIFFEaXI6OnNlcGFyYXRvcigpICsgYmFzZU5hbWU7CisgICAg
aWYgKFFGaWxlOjpleGlzdHMoZXhwZWN0ZWRQYXRoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZyhl
eHBlY3RlZFBhdGgpOworICAgIHJldHVybiBTdHJpbmcoUVN0cmluZyhiYXNlTmFtZSkpOworfQor
CitTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nlc3MoKQoreworICAgIHJldHVybiBleGVj
dXRhYmxlUGF0aChRU3RyaW5nTGl0ZXJhbCgiUXRXZWJQcm9jZXNzIikpOworfQorCitTdHJpbmcg
ZXhlY3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MoKQoreworICAgIHJldHVybiBleGVjdXRhYmxl
UGF0aChRU3RyaW5nTGl0ZXJhbCgiUXRXZWJQbHVnaW5Qcm9jZXNzIikpOworfQorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNwcAppbmRleCAwYzhi
ZTA3MmE0NjJkNjNmYzA2MjcwOGMwMWVjNWE2ZmMyMWZlZDNiLi43NzhiY2ZjYzFjZDJjM2QyNTkw
Y2I4ZmYzNDFmMDhkYzk4NzkwY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
cXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9T
aGFyZWFibGVCaXRtYXBRdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFFJbWFn
ZT4KICNpbmNsdWRlIDxRUGFpbnRlcj4KKyNpbmNsdWRlIDxRdEdsb2JhbD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC03MSw4ICs3MiwxMyBA
QCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBJbnRQb2ludCYgZHN0UG9pbnQsCiAgICAgcGFpbnRlci0+ZHJhd0ltYWdlKGRzdFBvaW50
LCBpbWFnZSwgUVJlY3Qoc3JjUmVjdCkpOwogfQogCi12b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiAvKmNvbnRleHQqLywgZmxvYXQgLypzY2FsZUZhY3RvciovLCBj
b25zdCBJbnRQb2ludCYgLypkc3RQb2ludCovLCBjb25zdCBJbnRSZWN0JiAvKnNyY1JlY3QqLykK
K3ZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZHN0UG9pbnQsIGNvbnN0IEludFJlY3Qm
IHNyY1JlY3QpCiB7CisgICAgaWYgKHFGdXp6eUNvbXBhcmUoc2NhbGVGYWN0b3IsIDEpKSB7Cisg
ICAgICAgIHBhaW50KGNvbnRleHQsIGRzdFBvaW50LCBzcmNSZWN0KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY0NjYzPi4KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXgg
YzRlMzY5M2U2NjFhMjAxNjliNjQzMDZiMzg3MjA2YzJmMDM5NTYwYi4uMjc5MDJiZDk4N2ZjODk3
M2E4ZjM5MzE5NDMwOTJmN2Q1NGVhYWU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFy
Z2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0zNCw2ICszNCw3IEBA
IEhFQURFUlMgKz0gXAogICAgIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIFwKICAgICBQbGF0Zm9y
bS9Xb3JrUXVldWUuaCBcCiAgICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
aCBcCisgICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuaCBcCiAgICAg
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmggXAogICAgIFBsdWdpblByb2Nlc3MvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLQmFzZS5oIFwKQEAgLTgwLDYg
KzgxLDcgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL09yaWdpbkFuZERhdGFiYXNlcy5oIFwK
ICAgICBTaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmggXAogICAgIFNoYXJlZC9QcmludElu
Zm8uaCBcCisgICAgU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIFwKICAgICBTaGFyZWQv
U2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBcCiAgICAgU2hhcmVkL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oIFwKICAgICBTaGFyZWQvU2Vzc2lvblN0YXRlLmggXApAQCAtMzc4LDYgKzM4MCw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIFBsYXRmb3JtL1dvcmtRdWV1ZS5jcHAgXAogICAgIFBsYXRmb3Jt
L3F0L01vZHVsZVF0LmNwcCBcCiAgICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuY3BwIFwKKyAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAg
XAogICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAgXAogICAgIFBsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIFwKICAgICBQbHVnaW5Qcm9jZXNzL3F0L1BsdWdp
bkNvbnRyb2xsZXJQcm94eVF0LmNwcCBcCkBAIC00NjgsNiArNDcxLDcgQEAgU09VUkNFUyArPSBc
CiAgICAgU2hhcmVkL3F0L05hdGl2ZVdlYktleWJvYXJkRXZlbnRRdC5jcHAgXAogICAgIFNoYXJl
ZC9xdC9OYXRpdmVXZWJNb3VzZUV2ZW50UXQuY3BwIFwKICAgICBTaGFyZWQvcXQvTmF0aXZlV2Vi
V2hlZWxFdmVudFF0LmNwcCBcCisgICAgU2hhcmVkL3F0L1Byb2Nlc3NFeGVjdXRhYmxlUGF0aFF0
LmNwcCBcCiAgICAgU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcCBcCiAgICAg
U2hhcmVkL3F0L1dlYkV2ZW50RmFjdG9yeVF0LmNwcCBcCiAgICAgU2hhcmVkL3F0L1F0TmV0d29y
a1JlcGx5RGF0YS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
dW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5j
aGVyL1Byb2Nlc3NMYXVuY2hlci5oCmluZGV4IDA5YzU1ODlmMzg4ODE1MGU1OTFjYjlmM2UwNzEz
ODQ1NDJjNzk3MmYuLmJjMWY4NjdmM2MyOTE1NTIzNjMwYzY3NjExZjA1Y2U5NzNkZWQ1M2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNo
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5j
aGVyLmgKQEAgLTY4LDcgKzY4LDYgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwog
CiAgICAgc3RhdGljIGJvb2wgZ2V0UHJvY2Vzc1R5cGVGcm9tU3RyaW5nKGNvbnN0IGNoYXIqLCBQ
cm9jZXNzVHlwZSYpOwotCiBwcml2YXRlOgogICAgIFByb2Nlc3NMYXVuY2hlcihDbGllbnQqLCBj
b25zdCBMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsu
Y3BwCmluZGV4IDk0Y2FkNWZjNDQ4MjBkYTE5OGRhODcxY2NiZDZmYTQ3ZTQzODliMmIuLjhmYjYx
OWVjZDQ2YjY3N2NmNTRhM2NkODQ3NDRiNmZjNjM1MzQxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0
ay5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKIAog
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJsZVBhdGgu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CkBAIC01Miw5ICs1
Myw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
Y29uc3QgY2hhciogZ1dlYktpdFdlYlByb2Nlc3NOYW1lID0gIldlYktpdFdlYlByb2Nlc3MiOwot
Y29uc3QgY2hhciogZ1dlYktpdFBsdWdpblByb2Nlc3NOYW1lID0gIldlYktpdFBsdWdpblByb2Nl
c3MiOwotCiBzdGF0aWMgdm9pZCBjaGlsZFNldHVwRnVuY3Rpb24oZ3BvaW50ZXIgdXNlckRhdGEp
CiB7CiAgICAgaW50IHNvY2tldCA9IEdQT0lOVEVSX1RPX0lOVCh1c2VyRGF0YSk7CkBAIC03Nywz
NCArNzUsNiBAQCBzdGF0aWMgdm9pZCBjaGlsZEZpbmlzaGVkRnVuY3Rpb24oR1BpZCwgZ2ludCBz
dGF0dXMsIGdwb2ludGVyIHVzZXJEYXRhKQogICAgIGNsb3NlKEdQT0lOVEVSX1RPX0lOVCh1c2Vy
RGF0YSkpOwogfQogCi1zdGF0aWMgQ1N0cmluZyBmaW5kV2ViS2l0UHJvY2Vzcyhjb25zdCBjaGFy
KiBwcm9jZXNzTmFtZSkKLXsKLSAgICBjb25zdCBjaGFyKiBleGVjRGlyZWN0b3J5ID0gZ19nZXRl
bnYoIldFQktJVF9FWEVDX1BBVEgiKTsKLSAgICBpZiAoZXhlY0RpcmVjdG9yeSkgewotICAgICAg
ICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZmlsZW5hbWVU
b1N0cmluZyhleGVjRGlyZWN0b3J5KSwgcHJvY2Vzc05hbWUpOwotICAgICAgICBpZiAoZmlsZUV4
aXN0cyhwcm9jZXNzUGF0aCkpCi0gICAgICAgICAgICByZXR1cm4gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHByb2Nlc3NQYXRoKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBnb3RFeGVjdXRh
YmxlUGF0aCA9IGZhbHNlOwotICAgIHN0YXRpYyBTdHJpbmcgZXhlY3V0YWJsZVBhdGg7Ci0gICAg
aWYgKCFnb3RFeGVjdXRhYmxlUGF0aCkgewotICAgICAgICBnb3RFeGVjdXRhYmxlUGF0aCA9IHRy
dWU7Ci0KLSAgICAgICAgQ1N0cmluZyBleGVjdXRhYmxlRmlsZSA9IGdldEN1cnJlbnRFeGVjdXRh
YmxlUGF0aCgpOwotICAgICAgICBpZiAoIWV4ZWN1dGFibGVGaWxlLmlzTnVsbCgpKQotICAgICAg
ICAgICAgZXhlY3V0YWJsZVBhdGggPSBkaXJlY3RvcnlOYW1lKGZpbGVuYW1lVG9TdHJpbmcoZXhl
Y3V0YWJsZUZpbGUuZGF0YSgpKSk7Ci0gICAgfQotCi0gICAgaWYgKCFleGVjdXRhYmxlUGF0aC5p
c051bGwoKSkgewotICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoZXhlY3V0YWJsZVBhdGgsIHByb2Nlc3NOYW1lKTsKLSAgICAgICAgaWYgKGZpbGVF
eGlzdHMocHJvY2Vzc1BhdGgpKQotICAgICAgICAgICAgcmV0dXJuIGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwcm9jZXNzUGF0aCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZmlsZW5hbWVUb1N0cmluZyhMSUJF
WEVDRElSKSwgcHJvY2Vzc05hbWUpKTsKLX0KLQogdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5j
aFByb2Nlc3MoKQogewogICAgIEdQaWQgcGlkID0gMDsKQEAgLTExNiw3ICs4Niw5IEBAIHZvaWQg
UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIENTdHJpbmcgYmluYXJ5UGF0aCA9IGZpbmRXZWJLaXRQcm9jZXNzKG1fbGF1bmNoT3B0
aW9ucy5wcm9jZXNzVHlwZSA9PSBQcm9jZXNzTGF1bmNoZXI6OldlYlByb2Nlc3MgPyBnV2ViS2l0
V2ViUHJvY2Vzc05hbWUgOiBnV2ViS2l0UGx1Z2luUHJvY2Vzc05hbWUpOworICAgIFN0cmluZyBl
eGVjdXRhYmxlUGF0aCA9IG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9PSBXZWJQcm9jZXNz
ID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlUGF0aE9mV2ViUHJvY2Vz
cygpIDogZXhlY3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MoKTsKKyAgICBDU3RyaW5nIGJpbmFy
eVBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGgpOwogICAgIEdP
d25QdHI8Z2NoYXI+IHNvY2tldChnX3N0cmR1cF9wcmludGYoIiVkIiwgc29ja2V0c1swXSkpOwog
ICAgIGNoYXIqIGFyZ3ZbM107CiAgICAgYXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJpbmFy
eVBhdGguZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVu
Y2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCmluZGV4IDhlODI2MjA2MzY3ZWVkOGVi
MWMyNWNlMmY0YjQ1NjRiMDhmNzRhMDguLmM1YzNmNzE0NWRlNmM4OTFjNDVhMmQ1NjYwMDA4MjQ5
MGE4NzVmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9x
dC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
dW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcApAQCAtMjgsMTAgKzI4LDkgQEAKICNpbmNs
dWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJQcm9jZXNzRXhlY3V0YWJsZVBhdGguaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0j
aW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRRGVidWc+Ci0jaW5jbHVkZSA8
UUZpbGU+CiAjaW5jbHVkZSA8UUxvY2FsU2VydmVyPgogI2luY2x1ZGUgPFFNZXRhVHlwZT4KICNp
bmNsdWRlIDxRUHJvY2Vzcz4KQEAgLTEwMiwxMyArMTAxLDkgQEAgdm9pZCBRdFdlYlByb2Nlc3M6
OnNldHVwQ2hpbGRQcm9jZXNzKCkKIAogdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nl
c3MoKQogewotICAgIFFTdHJpbmcgYXBwbGljYXRpb25QYXRoID0gUUxhdGluMVN0cmluZygiJTEg
JTIiKTsKLQotICAgIGlmIChRRmlsZTo6ZXhpc3RzKFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0
aW9uRGlyUGF0aCgpICsgUUxhdGluMVN0cmluZygiL1F0V2ViUHJvY2VzcyIpKSkgewotICAgICAg
ICBhcHBsaWNhdGlvblBhdGggPSBhcHBsaWNhdGlvblBhdGguYXJnKFFDb3JlQXBwbGljYXRpb246
OmFwcGxpY2F0aW9uRGlyUGF0aCgpICsgUUxhdGluMVN0cmluZygiL1F0V2ViUHJvY2VzcyIpKTsK
LSAgICB9IGVsc2UgewotICAgICAgICBhcHBsaWNhdGlvblBhdGggPSBhcHBsaWNhdGlvblBhdGgu
YXJnKFFMYXRpbjFTdHJpbmcoIlF0V2ViUHJvY2VzcyIpKTsKLSAgICB9CisgICAgUVN0cmluZyBj
b21tYW5kTGluZSA9IFFMYXRpbjFTdHJpbmcoIiUxICUyIik7CisgICAgY29tbWFuZExpbmUgPSBj
b21tYW5kTGluZS5hcmcobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID09IFdlYlByb2Nlc3Mg
PworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVQYXRoT2ZXZWJQ
cm9jZXNzKCkgOiBleGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2VzcygpKTsKIAogI2lmIE9TKERB
UldJTikKICAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgpAQCAtMTI0LDcgKzExOSw3
IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICBrZXJuX3JldHVy
bl90IGtyID0gYm9vdHN0cmFwX3JlZ2lzdGVyMihib290c3RyYXBfcG9ydCwgY29uc3RfY2FzdDxj
aGFyKj4oc2VydmljZU5hbWUudG9VdGY4KCkuZGF0YSgpKSwgY29ubmVjdG9yLCAwKTsKICAgICBB
U1NFUlRfVU5VU0VEKGtyLCBrciA9PSBLRVJOX1NVQ0NFU1MpOwogCi0gICAgUVN0cmluZyBwcm9n
cmFtKGFwcGxpY2F0aW9uUGF0aC5hcmcoc2VydmljZU5hbWUpKTsKKyAgICBjb21tYW5kTGluZSA9
IGNvbW1hbmRMaW5lLmFyZyhzZXJ2aWNlTmFtZSk7CiAjZWxzZQogICAgIGludCBzb2NrZXRzWzJd
OwogICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRzKSA9
PSAtMSkgewpAQCAtMTQ0LDEyICsxMzksMTIgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5j
aFByb2Nlc3MoKQogICAgIH0KIAogICAgIGludCBjb25uZWN0b3IgPSBzb2NrZXRzWzFdOwotICAg
IFFTdHJpbmcgcHJvZ3JhbShhcHBsaWNhdGlvblBhdGguYXJnKHNvY2tldHNbMF0pKTsKKyAgICBj
b21tYW5kTGluZSA9IGNvbW1hbmRMaW5lLmFyZyhzb2NrZXRzWzBdKTsKICNlbmRpZgogCiAgICAg
UVByb2Nlc3MqIHdlYlByb2Nlc3MgPSBuZXcgUXRXZWJQcm9jZXNzKCk7CiAgICAgd2ViUHJvY2Vz
cy0+c2V0UHJvY2Vzc0NoYW5uZWxNb2RlKFFQcm9jZXNzOjpGb3J3YXJkZWRDaGFubmVscyk7Ci0g
ICAgd2ViUHJvY2Vzcy0+c3RhcnQocHJvZ3JhbSk7CisgICAgd2ViUHJvY2Vzcy0+c3RhcnQoY29t
bWFuZExpbmUpOwogCiAjaWYgIU9TKERBUldJTikKICAgICAvLyBEb24ndCBleHBvc2UgdGhlIHdl
YiBzb2NrZXQgdG8gcG9zc2libGUgZnV0dXJlIHdlYiBwcm9jZXNzZXMKQEAgLTE2Myw3ICsxNTgs
NyBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAjZW5kaWYKIAogICAg
IGlmICghd2ViUHJvY2Vzcy0+d2FpdEZvclN0YXJ0ZWQoKSkgewotICAgICAgICBxRGVidWcoKSA8
PCAiRmFpbGVkIHRvIHN0YXJ0IiA8PCBwcm9ncmFtOworICAgICAgICBxRGVidWcoKSA8PCAiRmFp
bGVkIHRvIHN0YXJ0IiA8PCBjb21tYW5kTGluZTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAjaWYgT1MoREFSV0lOKQogICAgICAgICBtYWNoX3BvcnRfZGVhbGxvY2F0ZShtYWNoX3Rh
c2tfc2VsZigpLCBjb25uZWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAppbmRleCBhNzVkNWIxMzg3Y2Q4YmRhOWRj
NTIzMTJkODI2ZjRhYTBiNDY5NjU2Li40NDIzZDQ3ZjA5YTliYjI5MTY0ODc2NWVkYTdiMDg2ZWI1
NGFiN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzUHJveHkuaApAQCAtNTIsNiArNTIsMTQgQEAgY2xhc3MgV2ViUGx1Z2luU2l0
ZURhdGFNYW5hZ2VyOwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5Owogc3RydWN0IFBsdWdpblByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKK3N0
cnVjdCBSYXdQbHVnaW5NZXRhRGF0YSB7CisgICAgU3RyaW5nIG5hbWU7CisgICAgU3RyaW5nIGRl
c2NyaXB0aW9uOworICAgIFN0cmluZyBtaW1lRGVzY3JpcHRpb247Cit9OworI2VuZGlmCisKIGNs
YXNzIFBsdWdpblByb2Nlc3NQcm94eSA6IENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgUHJv
Y2Vzc0xhdW5jaGVyOjpDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFBs
dWdpblByb2Nlc3NQcm94eT4gY3JlYXRlKFBsdWdpblByb2Nlc3NNYW5hZ2VyKiwgY29uc3QgUGx1
Z2luTW9kdWxlSW5mbyYpOwpAQCAtODAsNiArODgsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBi
b29sIGNyZWF0ZVByb3BlcnR5TGlzdEZpbGUoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOwogI2Vu
ZGlmCiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICBzdGF0aWMgYm9vbCBzY2Fu
UGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmIHJlc3Vs
dCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBQbHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJv
Y2Vzc01hbmFnZXIqLCBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlHdGsu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQ
cm94eUd0ay5jcHAKaW5kZXggNGM4NTc3MmEyN2Y3YjcwNzJhZmY2YTExMzdjOTI3NDg4NWE4ZjY0
My4uM2ExMjA5NTQ4YTdiNjBiZGUxMzYzMGQzOWQxNjBhYjJhYmMyZTNkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblBy
b2Nlc3NQcm94eUd0ay5jcHAKQEAgLTI5LDEzICsyOSw1MiBAQAogI2lmIEVOQUJMRShQTFVHSU5f
UFJPQ0VTUykKIAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSAiUHJvY2Vzc0xh
dW5jaGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8Z2xp
Yi5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBQbHVnaW5Qcm9j
ZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5Ojpw
bGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmKQoreworfQorCitib29sIFBsdWdpblByb2Nlc3NQcm94eTo6c2NhblBsdWdpbihjb25z
dCBTdHJpbmcmIHBsdWdpblBhdGgsIFJhd1BsdWdpbk1ldGFEYXRhJiByZXN1bHQpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBDU3RyaW5nIGJpbmFyeVBhdGggPSBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oUHJvY2Vzc0xhdW5jaGVyOjpleGVjdXRhYmxlUGF0aChQcm9jZXNzTGF1bmNo
ZXI6OlBsdWdpblByb2Nlc3MpKTsKKyAgICBDU3RyaW5nIHBsdWdpblBhdGhDU3RyaW5nID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpblBhdGgpOworICAgIGNoYXIqIGFyZ3ZbNF07Cisg
ICAgYXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJpbmFyeVBhdGguZGF0YSgpKTsKKyAgICBh
cmd2WzFdID0gY29uc3RfY2FzdDxjaGFyKj4oIi1zY2FuUGx1Z2luIik7CisgICAgYXJndlsyXSA9
IGNvbnN0X2Nhc3Q8Y2hhcio+KHBsdWdpblBhdGhDU3RyaW5nLmRhdGEoKSk7CisgICAgYXJndlsz
XSA9IDA7CisKKyAgICBnaW50IHN0YXR1czsKKyAgICBnY2hhciogc3RkT3V0OworICAgIGlmICgh
Z19zcGF3bl9zeW5jKDAsIGFyZ3YsIDAsIEdfU1BBV05fU1RERVJSX1RPX0RFVl9OVUxMLCAwLCAw
LCAmc3RkT3V0LCAwLCAmc3RhdHVzLCAwKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghV0lGRVhJVEVEKHN0YXR1cykgfHwgV0VYSVRTVEFUVVMoc3RhdHVzKSAhPSBFWElUX1NVQ0NF
U1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IHVuc2lnbmVkIGtOdW1MaW5l
c0V4cGVjdGVkID0gMzsKKyAgICBTdHJpbmcgbGluZXNba051bUxpbmVzRXhwZWN0ZWRdOworICAg
IHVuc2lnbmVkIGxpbmVJbmRleCA9IDA7CisgICAgY29uc3QgVUNoYXIqIGN1cnJlbnQgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oc3RkT3V0KTsKKyAgICB3aGlsZSAobGluZUluZGV4
IDwga051bUxpbmVzRXhwZWN0ZWQpIHsKKyAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gY3Vy
cmVudDsKKyAgICAgICAgd2hpbGUgKCpjdXJyZW50KysgIT0gVUNoYXIoJ1xuJykpIHsgfQorICAg
ICAgICBsaW5lc1tsaW5lSW5kZXgrK10gPSBTdHJpbmcoc3RhcnQsIGN1cnJlbnQgLSBzdGFydCAt
IDEpOworICAgIH0KKworICAgIHJlc3VsdC5uYW1lLnN3YXAobGluZXNbMF0pOworICAgIHJlc3Vs
dC5kZXNjcmlwdGlvbi5zd2FwKGxpbmVzWzFdKTsKKyAgICByZXN1bHQubWltZURlc2NyaXB0aW9u
LnN3YXAobGluZXNbMl0pOworICAgIHJldHVybiAhcmVzdWx0Lm1pbWVEZXNjcmlwdGlvbi5pc0Vt
cHR5KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2luUHJvY2Vzc1Byb3h5UXQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2luUHJvY2Vzc1Byb3h5UXQuY3Bw
CmluZGV4IGNjNTIxZTBhZjlhNmEwNzQ0YzJkYzBlMDZmNjUxNGZjOTRiMzQ5ZjguLjliN2YyYjJk
ZGEyZTc4YWZkM2E4N2YxNzIxNmRlMWJhYWNlNzM5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3F0L1BsdWdpblByb2Nlc3NQcm94eVF0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5j
cHAKQEAgLTI4LDE0ICsyOCw1MSBAQAogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogCi0j
aW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJsZVBhdGgu
aCIKKyNpbmNsdWRlIDxRQnl0ZUFycmF5PgorI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+Cisj
aW5jbHVkZSA8UURpcj4KKyNpbmNsdWRlIDxRRXZlbnRMb29wPgorI2luY2x1ZGUgPFFQcm9jZXNz
PgorI2luY2x1ZGUgPFFTdHJpbmc+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFBsdWdp
blByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorY2xhc3MgUGx1Z2luUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczsKKwordm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5p
dGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCiB7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBQbHVnaW5Qcm9jZXNzUHJveHk6OnNj
YW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBSYXdQbHVnaW5NZXRhRGF0YSYgcmVz
dWx0KQoreworICAgIFFTdHJpbmcgY29tbWFuZExpbmUgPSBRTGF0aW4xU3RyaW5nKCIlMSAlMiAl
MyIpOworICAgIGNvbW1hbmRMaW5lID0gY29tbWFuZExpbmUuYXJnKGV4ZWN1dGFibGVQYXRoT2ZQ
bHVnaW5Qcm9jZXNzKCkpOworICAgIGNvbW1hbmRMaW5lID0gY29tbWFuZExpbmUuYXJnKFFTdHJp
bmdMaXRlcmFsKCItc2NhblBsdWdpbiIpKS5hcmcoc3RhdGljX2Nhc3Q8UVN0cmluZz4ocGx1Z2lu
UGF0aCkpOworCisgICAgUVByb2Nlc3MgcHJvY2VzczsKKyAgICBwcm9jZXNzLnNldFJlYWRDaGFu
bmVsKFFQcm9jZXNzOjpTdGFuZGFyZE91dHB1dCk7CisgICAgcHJvY2Vzcy5zdGFydChjb21tYW5k
TGluZSk7CisKKyAgICBpZiAoIXByb2Nlc3Mud2FpdEZvckZpbmlzaGVkKCkKKyAgICAgICAgfHwg
cHJvY2Vzcy5leGl0U3RhdHVzKCkgIT0gUVByb2Nlc3M6Ok5vcm1hbEV4aXQKKyAgICAgICAgfHwg
cHJvY2Vzcy5leGl0Q29kZSgpICE9IEVYSVRfU1VDQ0VTUykgeworICAgICAgICBwcm9jZXNzLmtp
bGwoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFFCeXRlQXJyYXkgb3V0
cHV0Qnl0ZXMgPSBwcm9jZXNzLnJlYWRBbGwoKTsKKyAgICBBU1NFUlQoIShvdXRwdXRCeXRlcy5z
aXplKCkgJSBzaXplb2YoVUNoYXIpKSk7CisKKyAgICBTdHJpbmcgb3V0cHV0KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUNoYXIqPihvdXRwdXRCeXRlcy5jb25zdERhdGEoKSksIG91dHB1dEJ5dGVz
LnNpemUoKSAvIHNpemVvZihVQ2hhcikpOworICAgIFZlY3RvcjxTdHJpbmc+IGxpbmVzOworICAg
IG91dHB1dC5zcGxpdChVQ2hhcignXG4nKSwgbGluZXMpOworICAgIEFTU0VSVChsaW5lcy5zaXpl
KCkgPT0gMyk7CisKKyAgICByZXN1bHQubmFtZS5zd2FwKGxpbmVzWzBdKTsKKyAgICByZXN1bHQu
ZGVzY3JpcHRpb24uc3dhcChsaW5lc1sxXSk7CisgICAgcmVzdWx0Lm1pbWVEZXNjcmlwdGlvbi5z
d2FwKGxpbmVzWzJdKTsKKyAgICByZXR1cm4gIXJlc3VsdC5taW1lRGVzY3JpcHRpb24uaXNFbXB0
eSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93
c2VyRnVuY3MuY3BwCmluZGV4IGJkYzZlOWRlOWUxMjU0NGIwYTA0MjNkMDRkOWUyYjY0NGQ4Mzlj
ZDEuLmQxMjEzODhmNTA4MGYwMTlmMTM5M2M3ZmUxM2FiNDc5ZjEzYjBmN2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dz
ZXJGdW5jcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNTUxLDIzICs1NTEsOSBAQCBzdGF0aWMg
TlBFcnJvciBOUE5fR2V0VmFsdWUoTlBQIG5wcCwgTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQg
KnZhbHVlKQogICAgICAgICAgICBicmVhazsKIAogICAgICAgIGNhc2UgTlBOVlRvb2xraXQ6IHsK
LSNpZiBQTEFURk9STShHVEspCi0gICAgICAgICAgICpyZWludGVycHJldF9jYXN0PHVpbnQzMl90
Kj4odmFsdWUpID0gMjsKLSNlbHNlCi0gICAgICAgICAgIGNvbnN0IHVpbnQzMl90IGV4cGVjdGVk
R1RLVG9vbEtpdFZlcnNpb24gPSAyOwotCi0gICAgICAgICAgIC8vIFNldCB0aGUgZXhwZWN0ZWQg
R1RLIHZlcnNpb24gaWYgd2Uga25vdyB0aGF0IHRoaXMgcGx1Z2luIG5lZWRzIGl0IG9yIGlmIHRo
ZSBwbHVnaW4gY2FsbCB1cwotICAgICAgICAgICAvLyB3aXRoIGEgbnVsbCBpbnN0YW5jZS4gVGhl
IGxhdHRlciBpcyB0aGUgY2FzZSB3aXRoIE5TUGx1Z2luV3JhcHBlciBwbHVnaW5zLgotICAgICAg
ICAgICBib29sIHJlcXVpcmVzR1RLVG9vbEtpdFZlcnNpb247Ci0gICAgICAgICAgIGlmICghbnBw
KQotICAgICAgICAgICAgICAgcmVxdWlyZXNHVEtUb29sS2l0VmVyc2lvbiA9IHRydWU7Ci0gICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBwbHVn
aW4gPSBOZXRzY2FwZVBsdWdpbjo6ZnJvbU5QUChucHApOwotICAgICAgICAgICAgICAgcmVxdWly
ZXNHVEtUb29sS2l0VmVyc2lvbiA9IHBsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVp
cmtzOjpSZXF1aXJlc0dUS1Rvb2xLaXQpOwotICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgKnJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZSkgPSByZXF1aXJlc0dUS1Rvb2xLaXRWZXJz
aW9uID8gZXhwZWN0ZWRHVEtUb29sS2l0VmVyc2lvbiA6IDA7Ci0jZW5kaWYKKyAgICAgICAgICAg
Ly8gR3RrIGJhc2VkIHBsdWdpbnMgbmVlZCB0byBiZSBhc3N1cmVkIGFib3V0IHRoZSB0b29sa2l0
IHZlcnNpb24uCisgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IGV4cGVjdGVkR3RrVG9vbEtpdFZl
cnNpb24gPSAyOworICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHZhbHVl
KSA9IGV4cGVjdGVkR3RrVG9vbEtpdFZlcnNpb247CiAgICAgICAgICAgIGJyZWFrOwogICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvcXQvUGx1Z2luTWFpblF0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL3F0L1BsdWdpbk1haW5RdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q1YzkzYjU3YjNi
OWVjZTU0MzZjMDZkMTc2NDMzYmQyNjlhOTFkMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL3F0L1BsdWdpbk1haW5RdC5jcHAKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgVW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPFFMaWJyYXJ5PgorI2lu
Y2x1ZGUgPFF0R2xvYmFsPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK1FfREVDTF9JTVBPUlQgaW50
IFBsdWdpblByb2Nlc3NNYWluKGludCBhcmdjLCBjaGFyKiogYXJndik7Cit9CisKK2ludCBtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICByZXR1cm4gV2ViS2l0OjpQbHVnaW5Qcm9j
ZXNzTWFpbihhcmdjLCBhcmd2KTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCAxYjI3N2U5OTg3ZWM2YmRmZWE5Nzg2YmZmM2UxMDgxM2UzZGVh
Y2U4Li5jNWI3ZGRlY2RkYTdlNWJiYmNjODZlYjMyZmMwMWI2YWZlYTM1NDE1IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTItMDMtMDkgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAg
ICAgIFtRdF1bV0syXSBTZXQgdXAgcGx1Z2luIHByb2Nlc3Mgb24gVW5peAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxMjEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHFtYWtlL21rc3BlY3MvZmVhdHVy
ZXMvZmVhdHVyZXMucHJmOiBSZWVuYWJsZSBwbHVnaW5zCisgICAgICAgIGFuZCB0dXJuIG9uIHBs
dWdpbiBwcm9jZXNzLgorCiAyMDEyLTAzLTA5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTEwMjUw
LgpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYg
Yi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgppbmRleCA4NWU5YTRh
MDgzNGEwMDk5N2E0ZTE1ZmRjNTVhODA4MjIwYzA3YjFkLi44NTY2NjMyMzQ3ZDUwYmZjZjI0NTYw
OGRiZmIwODVkZDczZGE5MGM3IDEwMDY0NAotLS0gYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1
cmVzL2ZlYXR1cmVzLnByZgorKysgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1
cmVzLnByZgpAQCAtMTI0LDEyICsxMjQsMTEgQEAgaGF2ZVF0KDUpIHsKICAgICBub193ZWJraXQy
IHsKICAgICAgICAgREVGSU5FUyArPSBQTFVHSU5fQVJDSElURUNUVVJFX1VOU1VQUE9SVEVEPTEK
ICAgICB9IGVsc2UgewotICAgICAgICAjIERpc2FibGUgeGxpYiBwbHVnaW5zIHdoaWxlIHRoZXkn
cmUgaW4tcHJvY2VzcywgYmVjYXVzZSB0aGV5IGNyYXNoCi0gICAgICAgICMgYXMgc29vbiBhcyBh
biBpbnN0YWxsZWQgbnBhcGkgcGx1Z2luIHVzZXMgUXQgNC4KLSAgICAgICAgZmFsc2U6Y29udGFp
bnMoUVRfQ09ORklHLCB4Y2IteGxpYikgeworICAgICAgICBjb250YWlucyhRVF9DT05GSUcsIHhj
Yi14bGliKSB7CiAgICAgICAgICAgICBDT05GSUcgKz0gcGx1Z2luX2JhY2tlbmRfeGxpYgogICAg
ICAgICAgICAgREVGSU5FUyArPSBQTFVHSU5fQVJDSElURUNUVVJFX1gxMT0xIFwKLSAgICAgICAg
ICAgICAgICAgICAgICAgUExVR0lOX0FSQ0hJVEVDVFVSRV9VTlNVUFBPUlRFRD0wCisgICAgICAg
ICAgICAgICAgICAgICAgIFBMVUdJTl9BUkNISVRFQ1RVUkVfVU5TVVBQT1JURUQ9MCBcCisgICAg
ICAgICAgICAgICAgICAgICAgIEVOQUJMRV9QTFVHSU5fUFJPQ0VTUz0xCiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBERUZJTkVTICs9IFBMVUdJTl9BUkNISVRFQ1RVUkVfVU5TVVBQT1JU
RUQ9MQogICAgICAgICB9CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXgg
NDE4NGYzZWFlNDIwZjJiODdkYmZkMjBkZTM3MzhiYzNiMWY2YmQxNi4uMzdlZjMyOGY0NTg3MTg5
ZTUxOGRlZjUzNmQ0MmNjOTYyM2QzODBlOSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAzLTA5ICBCYWxhenMgS2VsZW1lbiAgPGti
YWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdW1dLMl0gU2V0IHVwIHBsdWdpbiBwcm9j
ZXNzIG9uIFVuaXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcyMTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTb3VyY2UvUXRXZWJLaXQucHJvOiBBZGQgUGx1Z2luUHJvY2VzcyBzdWJwcm9qZWN0Lgor
CiAyMDEyLTAzLTA4ICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNv
bT4KIAogICAgICAgICBbUXRdIFVzZSBRdCdzIG1vZHVsZSBzeXN0ZW0gZm9yIGluc3RhbGwgcnVs
ZXMgYW5kIGRlcGVuZGluZyBvbiBRdFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131242</attachid>
            <date>2012-03-11 10:18:52 -0700</date>
            <delta_ts>2012-03-11 10:24:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72121-20120311181850.patch</filename>
            <type>text/plain</type>
            <size>52116</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTdmZjk5MWE2YTM2ZmNm
Y2QyYjIwMWVhMWQ2MGI4Y2YxOWYyYWNiMi4uNDBhODIyZTViMWNmMDkwZTlkYzY4MTNiYmU5NzE2
YWFkODY4MDA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxMi0wMy0xMSAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIFNl
dCB1cCBwbHVnaW4gcHJvY2VzcyBvbiBVbml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MjEyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNldHVwIHBsdWdpbiBwcm9jZXNzIGZvciBRdCBhbmQgbW92ZSB0
aGUgdGFzayBvZiBxdWVyeWluZyB0aGUgcGx1Z2lucworICAgICAgICB0byB0aGlzIHByb2Nlc3Mg
aW4gb3JkZXIgdG8gYXZvaWQgY3Jhc2hlcyBkdWUgdG8gcGx1Z2luIGJ1Z3Mgb3IgbGlicmFyeQor
ICAgICAgICBpbmNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzLnBybzogQWRkZWQuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9j
ZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3NNYWluR3RrKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nl
c3NNYWluUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjptZXNzYWdlSGFuZGxlcik6CisgICAgICAg
IChXZWJLaXQ6OmluaXRpYWxpemVHdGspOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luUHJvY2Vzc01haW4pOgorICAgICAgICBJbXBsZW1lbnQgZW50cnkgcG9pbnQg
b2YgdGhlIHBsdWdpbiBwcm9jZXNzLgorICAgICAgICBIYW5kbGUgLXNjYW5QbHVnaW4gY29tbWFu
ZCBsaW5lIHN3aXRjaDogcHJvZHVjZSBtZXRhIGRhdGEKKyAgICAgICAgb2YgcGx1Z2luIG9uIHN0
YW5kYXJkIG91dHB1dCBhbmQgdGVybWluYXRlLiBNb3ZlIEd0ayBpbml0aWFsaXphdGlvbgorICAg
ICAgICBoYWNrIHRvIHRoZXJlLgorCisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6dHJ5TG9hZCk6CisgICAgICAgIEdldCByaWQgb2YgdGhlIEd0ayBpbml0aWFsaXph
dGlvbiBoYWNrLiBXZSBkbyBub3QgbmVhZCBpdCBoZXJlIGFueW1vcmUuCisKKyAgICAgICAgKiBT
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKE5ldHNjYXBlUGx1Z2luTW9kdWxlKToKKyAgICAgICAgKiBTaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpwYXJzZU1JTUVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQ
bHVnaW5JbmZvKToKKyAgICAgICAgR2V0IHBsdWdpbiBtZXRhIGRhdGEgdmlhIFBsdWdpblByb2Nl
c3Nwcm94eS4gSWYgYSBmYWlsdXJlCisgICAgICAgIGhhcHBlbmVkIHdlIGlnbm9yZSB0byB1c2Ug
dGhlIHBsdWdpbi4gUmVtb3ZlIHRoZSBjb25jZXB0CisgICAgICAgIG9mIHN0ZG91dCByZWRpcmVj
dGlvbiBzaW5jZSB3ZSBjYW4gY29udHJvbCBpdCB3aGVuIGxhdW5jaGluZworICAgICAgICB0aGUg
cHJvY2Vzcy4KKworICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6ZGV0ZXJt
aW5lUXVpcmtzKToKKyAgICAgICAgKFdlYktpdDo6dHJ1bmNhdGVUb1NpbmdsZUxpbmUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2NhblBsdWdpbik6CisgICAgICAg
IFByb2R1Y2UgcGx1Z2luIG1ldGEgZGF0YSBvbiBzdGFuZGFyZCBvdXRwdXQuCisKKyAgICAgICAg
KiBTaGFyZWQvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKiBTaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHA6IEFk
ZGVkLgorICAgICAgICAoZmluZFdlYktpdFByb2Nlc3MpOgorICAgICAgICAoZXhlY3V0YWJsZVBh
dGhPZldlYlByb2Nlc3MpOgorICAgICAgICAoZXhlY3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3Mp
OgorICAgICAgICAqIFNoYXJlZC9xdC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhRdC5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3F0L1BsdWdpblByb2Nlc3NQ
cm94eVF0LmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmV4ZWN1dGFi
bGVQYXRoKToKKyAgICAgICAgKFdlYktpdDo6ZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpleGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2Vzcyk6CisgICAgICAg
IEZhY3RvcmVkIHRoZSBleGVjdXRhYmxlIHBhdGggZGV0ZXJtaW5hdGlvbiBpbnRvIGZyZWUgZnVu
Y3Rpb25zCisgICAgICAgIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uCisKKyAgICAgICAgKiBT
aGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OnBhaW50KToKKyAgICAgICAgQWRkZWQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBv
dmVycmlkZSB3aXRoIHRoZSBzY2FsZSBmYWN0b3IgYmVjYXVzZQorICAgICAgICBpdCBpcyBjYWxs
ZWQgZnJvbSBQbHVnaW5Qcm94eS4gSXQgZG9lcyBub3QgYWN0dWFsbHkgaGFuZGxlIHRoZSBjYXNl
CisgICAgICAgIHdoZW4gdGhlIHNjYWxlIGZhY3RvciBpcyBub3QgMS4gSG93ZXZlciBpdCdzIG9r
IGJlY2F1c2UgaXQgY2FuIG9ubHkKKyAgICAgICAgaGFwcGVuIG9uIE1hYyBpbiB0aGUgbW9tZW50
LgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIv
UHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAgIChQcm9jZXNzTGF1bmNoZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICBVc2UgdGhlIG5ldyBm
dW5jdGlvbnMgdG8gZGV0ZXJtaW5lIHRoZSBleGVjdXRhYmxlIHBhdGguCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChSYXdQbHVnaW5NZXRhRGF0YSk6CisgICAgICAgIChQbHVnaW5Qcm9jZXNzUHJv
eHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlH
dGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5p
dGlhbGl6ZVBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2luKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBs
dWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5Q
bHVnaW4pOgorICAgICAgICBMYXVuY2ggcGx1Z2luIHByb2Nlc3MgYW5kIHBhcnNlIGl0J3Mgb3V0
cHV0IHRvIGdldCB0aGUgbWV0YSBkYXRhCisgICAgICAgIGZvciB0aGUgcGx1Z2luLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TlBOX0dldFZhbHVlKToKKyAgICAgICAgQ2hhbmdlZCBhY2Nv
cmRpbmcgdG8gdGhlIHJlbW92aW5nIG9mIHRoZSBmbGFzaCBoYWNrLiBEbyBub3QgdHJ5CisgICAg
ICAgIHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBwbHVnaW4gbmVlZHMgR3RrIGJ5IGl0J3MgbmFtZSBi
dXQgaW5zdGVhZAorICAgICAgICBhbHdheXMgZ2V0IGJhY2sgdGhlIGV4cGVjdGVkIEd0ayB2ZXJz
aW9uICgyKS4gT25seSBHdGsgcGx1Z2lucworICAgICAgICBzaG91bGQgYXNrIGZvciB0aGlzIGFu
eXdheS4KKworICAgICAgICAqIHF0L1BsdWdpbk1haW5RdC5jcHA6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlHdGsuY3Bw
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKG1haW4pOgorCiAyMDEyLTAzLTExICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgPGh0dHA6Ly93ZWJr
aXQub3JnL2IvODA3ODI+IFdlYiBJbnNwZWN0b3I6IENyYXNoIHVzaW5nIHJlbGVhc2VkIGZyb250
ZW5kQ2xpZW50IHdoZW4gcmVzaXppbmcgd2luZG93IHdpdGggY2xvc2VkIGluc3BlY3RvcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1F0V2ViS2l0LnBybyBiL1NvdXJjZS9RdFdlYktpdC5wcm8KaW5kZXgg
MDJmYzllMWM3ZWJlMWY3MzE5ZDA5ZDEyMTVlMjA5ODk5YjQ1MWE3NC4uYmJiZmM0MWU2ODE3Yjdj
MGQ1YmQ1ZTEzZWM5ZDNjZmQ0NzliYTFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1F0V2ViS2l0LnBy
bworKysgYi9Tb3VyY2UvUXRXZWJLaXQucHJvCkBAIC00LDYgKzQsOCBAQAogIyBTZWUgJ1Rvb2xz
L3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBzeXN0ZW0KICMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCitsb2FkKGZlYXR1cmVzKQorCiBURU1QTEFURSA9IHN1YmRpcnMKIENPTkZJRyAr
PSBvcmRlcmVkCiAKQEAgLTEzLDYgKzE1LDEwIEBAIFNVQkRJUlMgKz0gYXBpCiAhbm9fd2Via2l0
MiB7CiAgICAgd2VicHJvY2Vzcy5maWxlID0gV2ViS2l0Mi9XZWJQcm9jZXNzLnBybwogICAgIFNV
QkRJUlMgKz0gd2VicHJvY2VzcworICAgIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9QTFVHSU5f
UFJPQ0VTUz0xKSB7CisgICAgICAgIHBsdWdpbnByb2Nlc3MuZmlsZSA9IFdlYktpdDIvUGx1Z2lu
UHJvY2Vzcy5wcm8KKyAgICAgICAgU1VCRElSUyArPSBwbHVnaW5wcm9jZXNzCisgICAgfQogfQog
CiBpbmNsdWRlKFdlYktpdC9xdC9kb2NzL2RvY3MucHJpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRl
eCA5ODAwZmY1NmFiMTk2MWM2OWY3ZWMwOWM2OTMwNDU0MmNjNmY0MGU3Li40YzMyYTYxNTU4OTI1
NjQyNzNkYjhjZTM0MWM4NmExMTQ4MWFmZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtMzI2
LDYgKzMyNiw3IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVk
L0VkaXRvclN0YXRlLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmgg
XAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250U21vb3RoaW5nTGV2ZWwuaCBcCisJU291cmNl
L1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvY2Fpcm8vTGF5ZXJUcmVlQ29udGV4dENhaXJvLmNwcCBcCiAJU291cmNlL1dlYktp
dDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcCBcCiAJU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5oIFwKQEAgLTMzNSw2ICszMzYsNyBAQCB3
ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2Vi
V2hlZWxFdmVudEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUGxhdGZvcm1D
ZXJ0aWZpY2F0ZUluZm8uaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9QcmludEluZm9H
dGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0
aEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rvcnku
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5oIFwKQEAg
LTEzNTEsNiArMTM1Myw3IEBAIFByb2dyYW1zX1dlYktpdFBsdWdpblByb2Nlc3NfQ1BQRkxBR1Mg
PSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMgXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlLyBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvIFwKKwktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy8gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS8gXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIgXApAQCAtMTM2MSw2ICsxMzY0LDcgQEAgUHJvZ3JhbXNfV2ViS2l0
UGx1Z2luUHJvY2Vzc19DUFBGTEFHUyA9IFwKIAktREJVSUxESU5HX1dFQktJVCBcCiAJLURHVEtf
QVBJX1ZFUlNJT05fMj0xIFwKIAktREVOQUJMRV9QTFVHSU5fUFJPQ0VTUz0xIFwKKwktRExJQkVY
RUNESVI9XCIiJChsaWJleGVjZGlyKSJcIiBcCiAJJChnbG9iYWxfY3BwZmxhZ3MpIFwKIAkkKHdl
YmNvcmVfY3BwZmxhZ3MpIFwKIAkkKHdlYmNvcmVndGtfY3BwZmxhZ3MpIFwKQEAgLTE0NDMsNiAr
MTQ0Nyw3IEBAIHdlYmtpdDJfcGx1Z2luX3Byb2Nlc3Nfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01haW5HdGsuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hh
cmVkL0NoaWxkUHJvY2Vzcy5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUHJvY2Vzc0V4ZWN1
dGFibGVQYXRoLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmll
ckRhdGEuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJE
YXRhLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJl
Y2VpdmVyLmNwcCBcCkBAIC0xNDY5LDggKzE0NzQsMTAgQEAgd2Via2l0Ml9wbHVnaW5fcHJvY2Vz
c19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJv
YXJkRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYldo
ZWVsRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1v
dXNlRXZlbnRHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRG
YWN0b3J5LmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1h
cENhaXJvLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdp
blByb2Nlc3NQcm94eUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW4uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRp
bWVVdGlsaXRpZXMuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MucHJvIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAw
MGM0NzA4MWZkMjg2MDg2ZjA0NDE2YTkxYzVlNmMxMzY4Y2YzOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MucHJvCkBAIC0wLDAgKzEsMjUgQEAKKyMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorIyBQcm9qZWN0IGZpbGUgZm9yIHRoZSBXZWJLaXQyIHBsdWdpbiBwcm9jZXNzIGJp
bmFyeQorIworIyBTZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRo
ZSBidWlsZCBzeXN0ZW0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURU1QTEFURSA9IGFwcAorCitRVCArPSB3
ZWJraXQKKworVEFSR0VUID0gUXRXZWJQbHVnaW5Qcm9jZXNzCitERVNURElSID0gJCR7Uk9PVF9C
VUlMRF9ESVJ9L2JpbgorCitTT1VSQ0VTICs9IHF0L1BsdWdpbk1haW5RdC5jcHAKKworSU5DTFVE
RVBBVEggPSAkJFBXRC8uLi9KYXZhU2NyaXB0Q29yZSBcCisgICAgICAgICAgICAgICQkSU5DTFVE
RVBBVEgKKworSU5TVEFMTFMgKz0gdGFyZ2V0CisKK2lzRW1wdHkoSU5TVEFMTF9CSU5TKSB7Cisg
ICAgdGFyZ2V0LnBhdGggPSAkJFtRVF9JTlNUQUxMX0JJTlNdCit9IGVsc2UgeworICAgIHRhcmdl
dC5wYXRoID0gJCRJTlNUQUxMX0JJTlMKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcAppbmRleCA5OTJkNzQw
NzUxMDRjOGNiY2E2MTJmMWNkODk5ZTlhNTBlMzcxNDRkLi44NzBjMDFjMjc5NDZlYjJlNTAzNDE1
MWIwOTg4YzBlYjY2MDgzMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01haW5HdGsuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01haW5HdGsuaCIK
IAorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgogI2luY2x1ZGUgPGdkay9nZGt4Lmg+CkBA
IC01MywxMiArNTQsMjIgQEAgc3RhdGljIGludCB3ZWJraXRndGtYRXJyb3IoRGlzcGxheSogeGRp
c3BsYXksIFhFcnJvckV2ZW50KiBlcnJvcikKIAogV0tfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNz
TWFpbkd0ayhpbnQgYXJnYywgY2hhciogYXJndltdKQogewotICAgIEFTU0VSVChhcmdjID09IDIp
OworICAgIEFTU0VSVChhcmdjID09IDIgfHwgYXJnYyA9PSAzKTsKKyAgICBib29sIHNjYW5QbHVn
aW4gPSAhc3RyY21wKGFyZ3ZbMV0sICItc2NhblBsdWdpbiIpOworICAgIEFTU0VSVChhcmdjID09
IDIgfHwgKGFyZ2MgPT0gMyAmJiBzY2FuUGx1Z2luKSk7CiAKICAgICBndGtfaW5pdCgmYXJnYywg
JmFyZ3YpOwogCiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0
aWFsaXplTWFpblRocmVhZCgpOworCisgICAgaWYgKHNjYW5QbHVnaW4pIHsKKyAgICAgICAgU3Ry
aW5nIHBsdWdpblBhdGgoYXJndlsyXSk7CisgICAgICAgIGlmICghTmV0c2NhcGVQbHVnaW5Nb2R1
bGU6OnNjYW5QbHVnaW4ocGx1Z2luUGF0aCkpCisgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlM
VVJFOworICAgICAgICByZXR1cm4gRVhJVF9TVUNDRVNTOworICAgIH0KKwogICAgIFJ1bkxvb3A6
OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCiAgICAgLy8gUGx1Z2lucyBjYW4gcHJvZHVjZSBY
IGVycm9ycyB0aGF0IGFyZSBoYW5kbGVkIGJ5IHRoZSBHREsgWCBlcnJvciBoYW5kbGVyLCB3aGlj
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9j
ZXNzTWFpblF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJv
Y2Vzc01haW5RdC5jcHAKaW5kZXggZDNhMGVjM2UyNDU5NTZiOTg1MDBkNTY3ZTU2NWZhYTE1MDZh
MDA1My4uYmM0ODdlMWVjNzFmNDAwOWY2N2UxZmVlYWQwMTIwMWY1MjZkYmEyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWlu
UXQuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBO
b2tpYSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVW5p
dmVyc2l0eSBvZiBTemVnZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDQ0ICsyNSw4MyBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpbi5oIgogCiAjaWYgRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluLmgiCiAKLSNpbmNsdWRlICJD
b21tYW5kTGluZS5oIgorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luTW9kdWxlLmgiCiAjaW5jbHVk
ZSAiUGx1Z2luUHJvY2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
KyNpbmNsdWRlIDxRRGVidWc+CisjaW5jbHVkZSA8UUd1aUFwcGxpY2F0aW9uPgorI2luY2x1ZGUg
PFFTdHJpbmdMaXN0PgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotI2RlZmluZSBTSE9XX0NSQVNI
X1JFUE9SVEVSIDEKKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotaW50IFBsdWdpblByb2Nlc3NNYWlu
KGNvbnN0IENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkKK3N0YXRpYyB2b2lkIG1lc3NhZ2VIYW5k
bGVyKFF0TXNnVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewotICAgIFN0cmluZyBz
ZXJ2aWNlTmFtZSA9IGNvbW1hbmRMaW5lWyJzZXJ2aWNlbmFtZSJdOwotICAgIGlmIChzZXJ2aWNl
TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgaWYgKHR5
cGUgPT0gUXRDcml0aWNhbE1zZykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBt
ZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIERvIG5vdGhpbmcKK30K
IAotI2lmICFTSE9XX0NSQVNIX1JFUE9SVEVSCi0gICAgLy8gSW5zdGFsbHMgc2lnbmFsIGhhbmRs
ZXJzIHRoYXQgZXhpdCBvbiBhIGNyYXNoIHNvIHRoYXQgQ3Jhc2hSZXBvcnRlciBkb2VzIG5vdCBz
aG93IHVwLgotICAgIHNpZ25hbChTSUdJTEwsIF9leGl0KTsKLSAgICBzaWduYWwoU0lHRlBFLCBf
ZXhpdCk7Ci0gICAgc2lnbmFsKFNJR0JVUywgX2V4aXQpOwotICAgIHNpZ25hbChTSUdTRUdWLCBf
ZXhpdCk7Ci0jZW5kaWYKK3N0YXRpYyBib29sIGluaXRpYWxpemVHdGsoKQoreworICAgIFFMaWJy
YXJ5IGd0a0xpYnJhcnkoUUxhdGluMVN0cmluZygibGliZ3RrLXgxMS0yLjAiKSwgMCk7CisgICAg
aWYgKCFndGtMaWJyYXJ5LmxvYWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHR5cGVk
ZWYgdm9pZCogKCpndGtfaW5pdF9wdHIpKHZvaWQqLCB2b2lkKik7CisgICAgZ3RrX2luaXRfcHRy
IGd0a0luaXQgPSByZWludGVycHJldF9jYXN0PGd0a19pbml0X3B0cj4oZ3RrTGlicmFyeS5yZXNv
bHZlKCJndGtfaW5pdCIpKTsKKyAgICBpZiAoIWd0a0luaXQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBndGtJbml0KDAsIDApOworICAgIHJldHVybiB0cnVlOworfQorCitpbnQgUGx1Z2lu
UHJvY2Vzc01haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIFFCeXRlQXJyYXkgc3Vw
cHJlc3NPdXRwdXQgPSBxZ2V0ZW52KCJRVF9XRUJLSVRfU1VQUFJFU1NfV0VCX1BST0NFU1NfT1VU
UFVUIik7CisgICAgaWYgKCFzdXBwcmVzc091dHB1dC5pc0VtcHR5KCkgJiYgc3VwcHJlc3NPdXRw
dXQgIT0gIjAiKQorICAgICAgICBxSW5zdGFsbE1zZ0hhbmRsZXIobWVzc2FnZUhhbmRsZXIpOwor
CisgICAgUUd1aUFwcGxpY2F0aW9uIGFwcChhcmdjLCBhcmd2KTsKKworICAgIC8vIFdvcmthcm91
bmQgdGhlIGlzc3VlIHRoYXQgc29tZSB2ZXJzaW9ucyBvZiBmbGFzaCBkb2VzIG5vdCBpbml0aWFs
aXplIEd0ayBwcm9wZXJseS4KKyAgICBpZiAoIWluaXRpYWxpemVHdGsoKSkKKyAgICAgICAgcmV0
dXJuIEVYSVRfRkFJTFVSRTsKIAogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAg
IFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKworICAgIGlmIChhcmdjIDw9IDEpCisgICAg
ICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisKKyAgICBpZiAoYXBwLmFyZ3VtZW50cygpLmF0KDEp
ID09IFFMYXRpbjFTdHJpbmcoIi1zY2FuUGx1Z2luIikpIHsKKyAgICAgICAgaWYgKGFyZ2MgIT0g
MykKKyAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAgIFN0cmluZyBwbHVn
aW5QYXRoKGFwcC5hcmd1bWVudHMoKS5hdCgyKSk7CisgICAgICAgIGlmICghTmV0c2NhcGVQbHVn
aW5Nb2R1bGU6OnNjYW5QbHVnaW4ocGx1Z2luUGF0aCkpCisgICAgICAgICAgICByZXR1cm4gRVhJ
VF9GQUlMVVJFOworICAgICAgICByZXR1cm4gRVhJVF9TVUNDRVNTOworICAgIH0KKwogICAgIFJ1
bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCisgICAgLy8gQ3JlYXRlIHRoZSBjb25u
ZWN0aW9uLgorICAgIGJvb2wgaXNOdW1iZXIgPSBmYWxzZTsKKyAgICBpbnQgaWRlbnRpZmllciA9
IGFwcC5hcmd1bWVudHMoKS5hdCgxKS50b0ludCgmaXNOdW1iZXIsIDEwKTsKKyAgICBpZiAoIWlz
TnVtYmVyKQorICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIFdlYktpdDo6UGx1Z2lu
UHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZShpZGVudGlmaWVyLCBSdW5Mb29wOjptYWluKCkp
OworCiAgICAgUnVuTG9vcDo6cnVuKCk7CiAKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luTW9kdWxlLmNwcAppbmRleCBlNWY4ZGMyYTNmMmVmYTdkZThiNDEwOTkzMjZhZTA0Zjk1ZjQ1
MTYzLi5jMTg3NGQ5OTY2YTY2ZGQ5MzJlZDJkZmY5MjA3Y2JmODlkMzI1YmE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1v
ZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCkBAIC0xOTcsMTAgKzE5Nyw2IEBAIGJvb2wgTmV0c2NhcGVQ
bHVnaW5Nb2R1bGU6OmxvYWQoKQogCiBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2Fk
KCkKIHsKLSNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKLSAgICBhcHBseVgxMVF1aXJrc0Jl
Zm9yZUxvYWQoKTsKLSNlbmRpZgotCiAgICAgbV9tb2R1bGUgPSBhZG9wdFB0cihuZXcgTW9kdWxl
KG1fcGx1Z2luUGF0aCkpOwogICAgIGlmICghbV9tb2R1bGUtPmxvYWQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmgKaW5kZXggZjgwYTBhMWEwYTMyYzA3
MjFjZTZhYmZiNWZiZGQ1YjQwZDhhOTZiMi4uZTk2YmQyZDA0MmJjZWE0NTllY2IxYTRkZjg2MjZj
ZTYzNjgxMTk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oCkBAIC0zNSw2ICszNSw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBSYXdQbHVnaW5NZXRhRGF0YTsKKwogY2xh
c3MgTmV0c2NhcGVQbHVnaW5Nb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXRzY2FwZVBsdWdp
bk1vZHVsZT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2lu
TW9kdWxlPiBnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwpAQCAtNjEsMTUg
KzYzLDE3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBjcmVhdGVQbHVnaW5NSU1FVHlwZXNQ
cmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwogI2VuZGlmCiAKKyNpZiBQTFVH
SU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICBzdGF0aWMgYm9vbCBzY2FuUGx1Z2luKGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBOZXRz
Y2FwZVBsdWdpbk1vZHVsZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwogCiAgICAgdm9pZCBk
ZXRlcm1pbmVRdWlya3MoKTsKIAogI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgIHZv
aWQgYXBwbHlYMTFRdWlya3NCZWZvcmVMb2FkKCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0TUlNRURl
c2NyaXB0aW9uKGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uLCBQbHVnaW5Nb2R1bGVJbmZv
Jik7Ci0gICAgYm9vbCBnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKFBsdWdpbk1vZHVsZUlu
Zm8mKTsKKyAgICBib29sIGdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4oUmF3UGx1Z2luTWV0
YURhdGEmKTsKICNlbmRpZgogCiAgICAgYm9vbCB0cnlHZXRTaXRlc1dpdGhEYXRhKFZlY3RvcjxT
dHJpbmc+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcAppbmRl
eCA4NjY4MzNjNjQ2MTFkMTJkZDdlMDUxYzdmMDliNTRhZTg4ZjU5MzY5Li5kMmUzZWM5NGFkMWE2
Zjc2MDViMDM5YjY3MzI1ZjhhMTk3OTBjZjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBs
dWdpbk1vZHVsZVgxMS5jcHAKQEAgLTI4LDEzICsyOCwxMCBAQAogCiAjaW5jbHVkZSAiTmV0c2Nh
cGVQbHVnaW5Nb2R1bGUuaCIKIAorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5oIgogI2lu
Y2x1ZGUgIk5ldHNjYXBlQnJvd3NlckZ1bmNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+Ci0KLSNpZiBQTEFURk9STShRVCkKLSNpbmNsdWRlIDxRTGlicmFyeT4KLSNlbmRpZgot
CisjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHN5cy9z
dGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CkBAIC00NCw2MCArNDEsMTMgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBTdGRvdXRE
ZXZOdWxsUmVkaXJlY3RvciB7Ci1wdWJsaWM6Ci0gICAgU3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3Io
KTsKLSAgICB+U3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3IoKTsKLQotcHJpdmF0ZToKLSAgICBpbnQg
bV9zYXZlZFN0ZG91dDsKLX07Ci0KLVN0ZG91dERldk51bGxSZWRpcmVjdG9yOjpTdGRvdXREZXZO
dWxsUmVkaXJlY3RvcigpCi0gICAgOiBtX3NhdmVkU3Rkb3V0KC0xKQorc3RhdGljIHZvaWQgcGFy
c2VNSU1FRGVzY3JpcHRpb24oY29uc3QgU3RyaW5nJiBtaW1lRGVzY3JpcHRpb24sIFZlY3RvcjxN
aW1lQ2xhc3NJbmZvPiYgcmVzdWx0KQogewotICAgIGludCBuZXdTdGRvdXQgPSBvcGVuKCIvZGV2
L251bGwiLCBPX1dST05MWSk7Ci0gICAgaWYgKG5ld1N0ZG91dCA9PSAtMSkKLSAgICAgICAgcmV0
dXJuOwotICAgIG1fc2F2ZWRTdGRvdXQgPSBkdXAoU1RET1VUX0ZJTEVOTyk7Ci0gICAgZHVwMihu
ZXdTdGRvdXQsIFNURE9VVF9GSUxFTk8pOwotfQotCi1TdGRvdXREZXZOdWxsUmVkaXJlY3Rvcjo6
flN0ZG91dERldk51bGxSZWRpcmVjdG9yKCkKLXsKLSAgICBpZiAobV9zYXZlZFN0ZG91dCAhPSAt
MSkKLSAgICAgICAgZHVwMihtX3NhdmVkU3Rkb3V0LCBTVERPVVRfRklMRU5PKTsKLX0KLQotI2lm
IFBMQVRGT1JNKFFUKQotc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUdUSygpCi17Ci0gICAgUUxpYnJh
cnkgbGlicmFyeShRTGF0aW4xU3RyaW5nKCJsaWJndGsteDExLTIuMC5zby4wIikpOwotICAgIGlm
IChsaWJyYXJ5LmxvYWQoKSkgewotICAgICAgICB0eXBlZGVmIHZvaWQgKigqZ3RrX2luaXRfY2hl
Y2tfcHRyKShpbnQqLCBjaGFyKioqKTsKLSAgICAgICAgZ3RrX2luaXRfY2hlY2tfcHRyIGd0a0lu
aXRDaGVjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8Z3RrX2luaXRfY2hlY2tfcHRyPihsaWJyYXJ5LnJl
c29sdmUoImd0a19pbml0X2NoZWNrIikpOwotICAgICAgICAvLyBOT1RFOiBXZSdyZSB1c2luZyBn
dGtfaW5pdF9jaGVjaygpIHNpbmNlIGd0a19pbml0KCkgY2FsbHMgZXhpdCgpIG9uIGZhaWx1cmUu
Ci0gICAgICAgIGlmIChndGtJbml0Q2hlY2spCi0gICAgICAgICAgICAodm9pZCkgZ3RrSW5pdENo
ZWNrKDAsIDApOwotICAgIH0KLX0KLSNlbmRpZgorICAgIEFTU0VSVF9BUkcocmVzdWx0LCByZXN1
bHQuaXNFbXB0eSgpKTsKIAotdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6YXBwbHlYMTFRdWly
a3NCZWZvcmVMb2FkKCkKLXsKLSNpZiBQTEFURk9STShRVCkKLSAgICBpZiAobV9wbHVnaW5QYXRo
LmNvbnRhaW5zKCJucHdyYXBwZXIiKSB8fCBtX3BsdWdpblBhdGguY29udGFpbnMoImZsYXNocGxh
eWVyIikpIHsKLSAgICAgICAgaW5pdGlhbGl6ZUdUSygpOwotICAgICAgICBtX3BsdWdpblF1aXJr
cy5hZGQoUGx1Z2luUXVpcmtzOjpSZXF1aXJlc0dUS1Rvb2xLaXQpOwotICAgIH0KLSNlbmRpZgot
fQotCi12b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpzZXRNSU1FRGVzY3JpcHRpb24oY29uc3Qg
U3RyaW5nJiBtaW1lRGVzY3JpcHRpb24sIFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKLXsKICAg
ICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKICAgICBtaW1lRGVzY3JpcHRpb24ubG93ZXIoKS5zcGxp
dChVQ2hhcignOycpLCBmYWxzZSwgdHlwZXMpOwotICAgIHBsdWdpbi5pbmZvLm1pbWVzLnJlc2Vy
dmVDYXBhY2l0eSh0eXBlcy5zaXplKCkpOworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KHR5cGVzLnNpemUoKSk7CiAKICAgICBzaXplX3QgbWltZUluZm9Db3VudCA9IDA7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB0eXBlcy5zaXplKCk7ICsraSkgewpAQCAtMTA2LDggKzU2
LDggQEAgdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2V0TUlNRURlc2NyaXB0aW9uKGNvbnN0
IFN0cmluZyYgbWltZURlc2NyaXB0aW9uLCBQbHUKICAgICAgICAgaWYgKG1pbWVUeXBlUGFydHMu
c2l6ZSgpIDw9IDApCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBwbHVnaW4uaW5m
by5taW1lcy51bmNoZWNrZWRBcHBlbmQoTWltZUNsYXNzSW5mbygpKTsKLSAgICAgICAgTWltZUNs
YXNzSW5mbyYgbWltZUluZm8gPSBwbHVnaW4uaW5mby5taW1lc1ttaW1lSW5mb0NvdW50KytdOwor
ICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKE1pbWVDbGFzc0luZm8oKSk7CisgICAgICAg
IE1pbWVDbGFzc0luZm8mIG1pbWVJbmZvID0gcmVzdWx0W21pbWVJbmZvQ291bnQrK107CiAgICAg
ICAgIG1pbWVJbmZvLnR5cGUgPSBtaW1lVHlwZVBhcnRzWzBdOwogCiAgICAgICAgIGlmIChtaW1l
VHlwZVBhcnRzLnNpemUoKSA+IDEpCkBAIC0xMTgsMTMgKzY4LDEwIEBAIHZvaWQgTmV0c2NhcGVQ
bHVnaW5Nb2R1bGU6OnNldE1JTUVEZXNjcmlwdGlvbihjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlw
dGlvbiwgUGx1CiAgICAgfQogfQogCi1ib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVn
aW5JbmZvRm9yTG9hZGVkUGx1Z2luKFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKK2Jvb2wgTmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4oUmF3UGx1Z2lu
TWV0YURhdGEmIG1ldGFEYXRhKQogewogICAgIEFTU0VSVChtX2lzSW5pdGlhbGl6ZWQpOwogCi0g
ICAgcGx1Z2luLnBhdGggPSBtX3BsdWdpblBhdGg7Ci0gICAgcGx1Z2luLmluZm8uZmlsZSA9IHBh
dGhHZXRGaWxlTmFtZShtX3BsdWdpblBhdGgpOwotCiAgICAgTW9kdWxlKiBtb2R1bGUgPSBtX21v
ZHVsZS5nZXQoKTsKICAgICBOUFBfR2V0VmFsdWVQcm9jUHRyIE5QUF9HZXRWYWx1ZSA9IG1vZHVs
ZS0+ZnVuY3Rpb25Qb2ludGVyPE5QUF9HZXRWYWx1ZVByb2NQdHI+KCJOUF9HZXRWYWx1ZSIpOwog
ICAgIGlmICghTlBQX0dldFZhbHVlKQpAQCAtMTM3LDQ3ICs4NCw0NSBAQCBib29sIE5ldHNjYXBl
UGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKFBsdWdpbk1vZHVsZUlu
Zm8mIHBsdWdpbgogICAgIGNoYXIqIGJ1ZmZlcjsKICAgICBOUEVycm9yIGVycm9yID0gTlBQX0dl
dFZhbHVlKDAsIE5QUFZwbHVnaW5OYW1lU3RyaW5nLCAmYnVmZmVyKTsKICAgICBpZiAoZXJyb3Ig
PT0gTlBFUlJfTk9fRVJST1IpCi0gICAgICAgIHBsdWdpbi5pbmZvLm5hbWUgPSBTdHJpbmc6OmZy
b21VVEY4KGJ1ZmZlcik7CisgICAgICAgIG1ldGFEYXRhLm5hbWUgPSBTdHJpbmc6OmZyb21VVEY4
KGJ1ZmZlcik7CiAKICAgICBlcnJvciA9IE5QUF9HZXRWYWx1ZSgwLCBOUFBWcGx1Z2luRGVzY3Jp
cHRpb25TdHJpbmcsICZidWZmZXIpOwogICAgIGlmIChlcnJvciA9PSBOUEVSUl9OT19FUlJPUikK
LSAgICAgICAgcGx1Z2luLmluZm8uZGVzYyA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyKTsKKyAg
ICAgICAgbWV0YURhdGEuZGVzY3JpcHRpb24gPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlcik7CiAK
ICAgICBTdHJpbmcgbWltZURlc2NyaXB0aW9uID0gU3RyaW5nOjpmcm9tVVRGOChOUF9HZXRNSU1F
RGVzY3JpcHRpb24oKSk7CiAgICAgaWYgKG1pbWVEZXNjcmlwdGlvbi5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc2V0TUlNRURlc2NyaXB0aW9uKG1pbWVEZXNjcmlwdGlv
biwgcGx1Z2luKTsKKyAgICBtZXRhRGF0YS5taW1lRGVzY3JpcHRpb24gPSBtaW1lRGVzY3JpcHRp
b247CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KKwogYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6
Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpbk1vZHVsZUluZm8m
IHBsdWdpbikKIHsKLSAgICAvLyBUZW1wYXJhcmlseSBzdXBwcmVzcyBzdGRvdXQgaW4gdGhpcyBm
dW5jdGlvbiBhcyBwbHVnaW5zIHdpbGwgYmUgbG9hZGVkIGFuZCBzaHV0ZG93biBhbmQgZGVidWcg
aW5mbwotICAgIC8vIGlzIGxlYWtlZCB0byBsYXlvdXQgdGVzdCBvdXRwdXQuCi0gICAgU3Rkb3V0
RGV2TnVsbFJlZGlyZWN0b3Igc3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3I7Ci0KLSAgICAvLyBXZSBh
cmUgbG9hZGluZyB0aGUgcGx1Z2luIGhlcmUgc2luY2UgaXQgZG9lcyBub3Qgc2VlbSB0byBiZSBh
IHN0YW5kYXJkaXplZCB3YXkgdG8KLSAgICAvLyBnZXQgdGhlIG5lZWRlZCBpbmZvcm1hdGlvbnMg
ZnJvbSBhIFVOSVggcGx1Z2luIHdpdGhvdXQgbG9hZGluZyBpdC4KLSAgICBSZWZQdHI8TmV0c2Nh
cGVQbHVnaW5Nb2R1bGU+IHBsdWdpbk1vZHVsZSA9IE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRP
ckNyZWF0ZShwbHVnaW5QYXRoKTsKLSAgICBpZiAoIXBsdWdpbk1vZHVsZSkKKyAgICBSYXdQbHVn
aW5NZXRhRGF0YSBtZXRhRGF0YTsKKyAgICBpZiAoIVBsdWdpblByb2Nlc3NQcm94eTo6c2NhblBs
dWdpbihwbHVnaW5QYXRoLCBtZXRhRGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHBsdWdpbk1vZHVsZS0+aW5jcmVtZW50TG9hZENvdW50KCk7Ci0gICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHBsdWdpbk1vZHVsZS0+Z2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihwbHVnaW4pOwot
ICAgIHBsdWdpbk1vZHVsZS0+ZGVjcmVtZW50TG9hZENvdW50KCk7CisgICAgcGx1Z2luLnBhdGgg
PSBwbHVnaW5QYXRoOworICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBwYXRoR2V0RmlsZU5hbWUocGx1
Z2luUGF0aCk7CisgICAgcGx1Z2luLmluZm8ubmFtZSA9IG1ldGFEYXRhLm5hbWU7CisgICAgcGx1
Z2luLmluZm8uZGVzYyA9IG1ldGFEYXRhLmRlc2NyaXB0aW9uOworICAgIHBhcnNlTUlNRURlc2Ny
aXB0aW9uKG1ldGFEYXRhLm1pbWVEZXNjcmlwdGlvbiwgcGx1Z2luLmluZm8ubWltZXMpOwogCi0g
ICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIE5ldHNj
YXBlUGx1Z2luTW9kdWxlOjpkZXRlcm1pbmVRdWlya3MoKQogewogI2lmIENQVShYODZfNjQpCi0g
ICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW47Ci0gICAgaWYgKCFnZXRQbHVnaW5JbmZvRm9yTG9h
ZGVkUGx1Z2luKHBsdWdpbikpCisgICAgUmF3UGx1Z2luTWV0YURhdGEgbWV0YURhdGE7CisgICAg
aWYgKCFnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKG1ldGFEYXRhKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgVmVjdG9yPE1pbWVDbGFzc0luZm8+IG1pbWVUeXBlcyA9IHBsdWdpbi5pbmZv
Lm1pbWVzOworICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtaW1lVHlwZXM7CisgICAgcGFyc2VN
SU1FRGVzY3JpcHRpb24obWV0YURhdGEubWltZURlc2NyaXB0aW9uLCBtaW1lVHlwZXMpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWltZVR5cGVzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGlmIChtaW1lVHlwZXNbaV0udHlwZSA9PSAiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gi
KSB7CiAgICAgICAgICAgICBtX3BsdWdpblF1aXJrcy5hZGQoUGx1Z2luUXVpcmtzOjpJZ25vcmVS
aWdodENsaWNrSW5XaW5kb3dsZXNzTW9kZSk7CkBAIC0xODcsNiArMTMyLDY1IEBAIHZvaWQgTmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OmRldGVybWluZVF1aXJrcygpCiAjZW5kaWYKIH0KIAorc3RhdGlj
IFN0cmluZyB0cnVuY2F0ZVRvU2luZ2xlTGluZShjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAg
ICBBU1NFUlRfQVJHKHN0cmluZywgIXN0cmluZy5pczhCaXQoKSk7CisKKyAgICB1bnNpZ25lZCBv
bGRMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgVUNoYXIqIGJ1ZmZlcjsKKyAgICBTdHJp
bmcgc3RyaW5nQnVmZmVyKFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQob2xkTGVuZ3Ro
ICsgMSwgYnVmZmVyKSk7CisKKyAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSAwOworICAgIGZvciAo
Y29uc3QgVUNoYXIqIGMgPSBzdHJpbmcuY2hhcmFjdGVyczE2KCk7IGMgPCBzdHJpbmcuY2hhcmFj
dGVyczE2KCkgKyBvbGRMZW5ndGg7ICsrYykgeworICAgICAgICBpZiAoKmMgIT0gVUNoYXIoJ1xu
JykpCisgICAgICAgICAgICBidWZmZXJbbmV3TGVuZ3RoKytdID0gKmM7CisgICAgfQorICAgIGJ1
ZmZlcltuZXdMZW5ndGgrK10gPSBVQ2hhcignXG4nKTsKKworICAgIGlmIChuZXdMZW5ndGggPT0g
b2xkTGVuZ3RoICsgMSkKKyAgICAgICAgcmV0dXJuIHN0cmluZ0J1ZmZlcjsKKyAgICByZXR1cm4g
U3RyaW5nKHN0cmluZ0J1ZmZlci5jaGFyYWN0ZXJzMTYoKSwgbmV3TGVuZ3RoKTsKK30KKworYm9v
bCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2NhblBsdWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBh
dGgpCit7CisgICAgLy8gV2UgYXJlIGxvYWRpbmcgdGhlIHBsdWdpbiBoZXJlIHNpbmNlIGl0IGRv
ZXMgbm90IHNlZW0gdG8gYmUgYSBzdGFuZGFyZGl6ZWQgd2F5IHRvCisgICAgLy8gZ2V0IHRoZSBu
ZWVkZWQgaW5mb3JtYXRpb25zIGZyb20gYSBVTklYIHBsdWdpbiB3aXRob3V0IGxvYWRpbmcgaXQu
CisgICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBwbHVnaW5Nb2R1bGUgPSBOZXRzY2Fw
ZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUocGx1Z2luUGF0aCk7CisgICAgaWYgKCFwbHVnaW5N
b2R1bGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHBsdWdpbk1vZHVsZS0+aW5jcmVt
ZW50TG9hZENvdW50KCk7CisgICAgUmF3UGx1Z2luTWV0YURhdGEgbWV0YURhdGE7CisgICAgYm9v
bCBzdWNjZXNzID0gcGx1Z2luTW9kdWxlLT5nZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKG1l
dGFEYXRhKTsKKyAgICBwbHVnaW5Nb2R1bGUtPmRlY3JlbWVudExvYWRDb3VudCgpOworCisgICAg
aWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBXcml0ZSBkYXRh
IHRvIHN0YW5kYXJkIG91dHB1dCBmb3IgdGhlIFVJIHByb2Nlc3MuCisgICAgU3RyaW5nIG91dHB1
dFszXSA9IHsKKyAgICAgICAgdHJ1bmNhdGVUb1NpbmdsZUxpbmUobWV0YURhdGEubmFtZSksCisg
ICAgICAgIHRydW5jYXRlVG9TaW5nbGVMaW5lKG1ldGFEYXRhLmRlc2NyaXB0aW9uKSwKKyAgICAg
ICAgdHJ1bmNhdGVUb1NpbmdsZUxpbmUobWV0YURhdGEubWltZURlc2NyaXB0aW9uKQorICAgIH07
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDM7ICsraSkgeworICAgICAgICBjb25zdCBT
dHJpbmcmIGxpbmUgPSBvdXRwdXRbaV07CisgICAgICAgIGNvbnN0IGNoYXIqIGN1cnJlbnQgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihsaW5lLmNoYXJhY3RlcnMxNigpKTsKKyAgICAg
ICAgY29uc3QgY2hhciogZW5kID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obGluZS5j
aGFyYWN0ZXJzMTYoKSkgKyAobGluZS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikpOworICAgICAg
ICB3aGlsZSAoY3VycmVudCA8IGVuZCkgeworICAgICAgICAgICAgaW50IHJlc3VsdDsKKyAgICAg
ICAgICAgIHdoaWxlICgocmVzdWx0ID0gZnB1dGMoKmN1cnJlbnQsIHN0ZG91dCkpID09IEVPRiAm
JiBlcnJubyA9PSBFSU5UUikgeyB9CisgICAgICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEVPRik7
CisgICAgICAgICAgICArK2N1cnJlbnQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmZmx1c2go
c3Rkb3V0KTsKKworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYmYzMjAxODExMDU1
ZTM4NGFiZWRiNmQzZGQ1ZGFmMWM3Yjc0ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgKQEAgLTAsMCArMSwzOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBVbml2ZXJzaXR5IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFVO
SVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVU5J
VkVSU0lUWSBPRiBTWkVHRUQgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZm5k
ZWYgUHJvY2Vzc0V4ZWN1dGFibGVQYXRoX2gKKyNkZWZpbmUgUHJvY2Vzc0V4ZWN1dGFibGVQYXRo
X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1N0cmluZyBleGVjdXRhYmxlUGF0aE9mV2ViUHJv
Y2VzcygpOworU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZQbHVnaW5Qcm9jZXNzKCk7CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aEd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmVhNmU4M2E5NjM3NGQ0NTM2YWZhOTQ5YzI5
NmI0MWNlZTFhZGVlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9n
dGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcApAQCAtMCwwICsxLDc4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBv
cnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIE1PVE9ST0xBIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIE1PVE9ST0xBIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HbGliVXRp
bGl0aWVzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY29uc3QgY2hhciogZ1dlYktpdFdlYlByb2Nlc3NOYW1lID0gIldlYktpdFdlYlByb2Nl
c3MiOworY29uc3QgY2hhciogZ1dlYktpdFBsdWdpblByb2Nlc3NOYW1lID0gIldlYktpdFBsdWdp
blByb2Nlc3MiOworCitzdGF0aWMgU3RyaW5nIGZpbmRXZWJLaXRQcm9jZXNzKGNvbnN0IGNoYXIq
IHByb2Nlc3NOYW1lKQoreworICAgIGNvbnN0IGNoYXIqIGV4ZWNEaXJlY3RvcnkgPSBnX2dldGVu
digiV0VCS0lUX0VYRUNfUEFUSCIpOworICAgIGlmIChleGVjRGlyZWN0b3J5KSB7CisgICAgICAg
IFN0cmluZyBwcm9jZXNzUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmaWxlbmFtZVRv
U3RyaW5nKGV4ZWNEaXJlY3RvcnkpLCBwcm9jZXNzTmFtZSk7CisgICAgICAgIGlmIChmaWxlRXhp
c3RzKHByb2Nlc3NQYXRoKSkKKyAgICAgICAgICAgIHJldHVybiBwcm9jZXNzUGF0aDsKKyAgICB9
CisKKyAgICBzdGF0aWMgYm9vbCBnb3RFeGVjdXRhYmxlUGF0aCA9IGZhbHNlOworICAgIHN0YXRp
YyBTdHJpbmcgZXhlY3V0YWJsZVBhdGg7CisgICAgaWYgKCFnb3RFeGVjdXRhYmxlUGF0aCkgewor
ICAgICAgICBnb3RFeGVjdXRhYmxlUGF0aCA9IHRydWU7CisKKyAgICAgICAgQ1N0cmluZyBleGVj
dXRhYmxlRmlsZSA9IGdldEN1cnJlbnRFeGVjdXRhYmxlUGF0aCgpOworICAgICAgICBpZiAoIWV4
ZWN1dGFibGVGaWxlLmlzTnVsbCgpKQorICAgICAgICAgICAgZXhlY3V0YWJsZVBhdGggPSBkaXJl
Y3RvcnlOYW1lKGZpbGVuYW1lVG9TdHJpbmcoZXhlY3V0YWJsZUZpbGUuZGF0YSgpKSk7CisgICAg
fQorCisgICAgaWYgKCFleGVjdXRhYmxlUGF0aC5pc051bGwoKSkgeworICAgICAgICBTdHJpbmcg
cHJvY2Vzc1BhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZXhlY3V0YWJsZVBhdGgsIHBy
b2Nlc3NOYW1lKTsKKyAgICAgICAgaWYgKGZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQorICAgICAg
ICAgICAgcmV0dXJuIHByb2Nlc3NQYXRoOworICAgIH0KKworICAgIHJldHVybiBwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoZmlsZW5hbWVUb1N0cmluZyhMSUJFWEVDRElSKSwgcHJvY2Vzc05hbWUp
OworfQorCitTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nlc3MoKQoreworICAgIHJldHVy
biBmaW5kV2ViS2l0UHJvY2VzcyhnV2ViS2l0V2ViUHJvY2Vzc05hbWUpOworfQorCitTdHJpbmcg
ZXhlY3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MoKQoreworICAgIHJldHVybiBmaW5kV2ViS2l0
UHJvY2VzcyhnV2ViS2l0UGx1Z2luUHJvY2Vzc05hbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9Qcm9jZXNzRXhlY3V0
YWJsZVBhdGhRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvUHJvY2Vzc0V4ZWN1dGFi
bGVQYXRoUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNGY4MjQ5YWRlMTA1ZjFiYzBmODIwZmE5MmE1MzU2
NDdlOTFiNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoUXQuY3BwCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFi
bGVQYXRoLmgiCisKKyNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFEaXI+
CisjaW5jbHVkZSA8UUZpbGU+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgU3RyaW5n
IGV4ZWN1dGFibGVQYXRoKFFMYXRpbjFTdHJpbmcgYmFzZU5hbWUpCit7CisgICAgUVN0cmluZyBl
eHBlY3RlZFBhdGggPSBRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlvbkRpclBhdGgoKSArIFFE
aXI6OnNlcGFyYXRvcigpICsgYmFzZU5hbWU7CisgICAgaWYgKFFGaWxlOjpleGlzdHMoZXhwZWN0
ZWRQYXRoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZyhleHBlY3RlZFBhdGgpOworICAgIHJldHVy
biBTdHJpbmcoUVN0cmluZyhiYXNlTmFtZSkpOworfQorCitTdHJpbmcgZXhlY3V0YWJsZVBhdGhP
ZldlYlByb2Nlc3MoKQoreworICAgIHJldHVybiBleGVjdXRhYmxlUGF0aChRU3RyaW5nTGl0ZXJh
bCgiUXRXZWJQcm9jZXNzIikpOworfQorCitTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZlBsdWdpblBy
b2Nlc3MoKQoreworICAgIHJldHVybiBleGVjdXRhYmxlUGF0aChRU3RyaW5nTGl0ZXJhbCgiUXRX
ZWJQbHVnaW5Qcm9jZXNzIikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwCmluZGV4IDBjOGJlMDcy
YTQ2MmQ2M2ZjMDYyNzA4YzAxZWM1YTZmYzIxZmVkM2IuLjc3OGJjZmNjMWNkMmMzZDI1OTBjYjhm
ZjM0MWYwOGRjOTg3OTBjZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9T
aGFyZWFibGVCaXRtYXBRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1NoYXJl
YWJsZUJpdG1hcFF0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSA8UUltYWdlPgog
I2luY2x1ZGUgPFFQYWludGVyPgorI2luY2x1ZGUgPFF0R2xvYmFsPgogI2luY2x1ZGUgPFdlYkNv
cmUvQml0bWFwSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTcxLDggKzcyLDEzIEBAIHZv
aWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEludFBvaW50JiBkc3RQb2ludCwKICAgICBwYWludGVyLT5kcmF3SW1hZ2UoZHN0UG9pbnQsIGlt
YWdlLCBRUmVjdChzcmNSZWN0KSk7CiB9CiAKLXZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChH
cmFwaGljc0NvbnRleHQmIC8qY29udGV4dCovLCBmbG9hdCAvKnNjYWxlRmFjdG9yKi8sIGNvbnN0
IEludFBvaW50JiAvKmRzdFBvaW50Ki8sIGNvbnN0IEludFJlY3QmIC8qc3JjUmVjdCovKQordm9p
ZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQg
c2NhbGVGYWN0b3IsIGNvbnN0IEludFBvaW50JiBkc3RQb2ludCwgY29uc3QgSW50UmVjdCYgc3Jj
UmVjdCkKIHsKKyAgICBpZiAocUZ1enp5Q29tcGFyZShzY2FsZUZhY3RvciwgMSkpIHsKKyAgICAg
ICAgcGFpbnQoY29udGV4dCwgZHN0UG9pbnQsIHNyY1JlY3QpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCiAgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjQ2NjM+LgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCBjMDAx
YmU5YTc3YTczMzViNDQ1MGUxOWQwNGFhM2RjODM1MGI0ZWQyLi5iZTMyZmRlMTVmNjBkNGU0MDhk
YWYwZTQxY2I4NWQ5NDE3OThkZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQu
cHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTM0LDYgKzM0LDcgQEAgSEVB
REVSUyArPSBcCiAgICAgUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggXAogICAgIFBsYXRmb3JtL1dv
cmtRdWV1ZS5oIFwKICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIFwK
KyAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5oIFwKICAgICBQbHVn
aW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaCBcCiAgICAgUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNz
Q29ubmVjdGlvbi5oIFwKICAgICBTaGFyZWQvQVBJL2MvV0tCYXNlLmggXApAQCAtODAsNiArODEs
NyBAQCBIRUFERVJTICs9IFwKICAgICBTaGFyZWQvT3JpZ2luQW5kRGF0YWJhc2VzLmggXAogICAg
IFNoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuaCBcCiAgICAgU2hhcmVkL1ByaW50SW5mby5o
IFwKKyAgICBTaGFyZWQvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmggXAogICAgIFNoYXJlZC9TYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIFwKICAgICBTaGFyZWQvU2VjdXJpdHlPcmlnaW5EYXRh
LmggXAogICAgIFNoYXJlZC9TZXNzaW9uU3RhdGUuaCBcCkBAIC0zNzksNiArMzgxLDcgQEAgU09V
UkNFUyArPSBcCiAgICAgUGxhdGZvcm0vV29ya1F1ZXVlLmNwcCBcCiAgICAgUGxhdGZvcm0vcXQv
TW9kdWxlUXQuY3BwIFwKICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5j
cHAgXAorICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBcCiAg
ICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcCBcCiAgICAgUGx1Z2luUHJvY2Vzcy9X
ZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgXAogICAgIFBsdWdpblByb2Nlc3MvcXQvUGx1Z2luQ29u
dHJvbGxlclByb3h5UXQuY3BwIFwKQEAgLTQ2OSw2ICs0NzIsNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBTaGFyZWQvcXQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudFF0LmNwcCBcCiAgICAgU2hhcmVkL3F0
L05hdGl2ZVdlYk1vdXNlRXZlbnRRdC5jcHAgXAogICAgIFNoYXJlZC9xdC9OYXRpdmVXZWJXaGVl
bEV2ZW50UXQuY3BwIFwKKyAgICBTaGFyZWQvcXQvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoUXQuY3Bw
IFwKICAgICBTaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwIFwKICAgICBTaGFy
ZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuY3BwIFwKICAgICBTaGFyZWQvcXQvUXROZXR3b3JrUmVw
bHlEYXRhLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNo
ZXIvUHJvY2Vzc0xhdW5jaGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIv
UHJvY2Vzc0xhdW5jaGVyLmgKaW5kZXggMDljNTU4OWYzODg4MTUwZTU5MWNiOWYzZTA3MTM4NDU0
MmM3OTcyZi4uYmMxZjg2N2YzYzI5MTU1MjM2MzBjNjc2MTFmMDVjZTk3M2RlZDUzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIu
aApAQCAtNjgsNyArNjgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAg
ICBzdGF0aWMgYm9vbCBnZXRQcm9jZXNzVHlwZUZyb21TdHJpbmcoY29uc3QgY2hhciosIFByb2Nl
c3NUeXBlJik7Ci0KIHByaXZhdGU6CiAgICAgUHJvY2Vzc0xhdW5jaGVyKENsaWVudCosIGNvbnN0
IExhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAK
aW5kZXggOTRjYWQ1ZmM0NDgyMGRhMTk4ZGE4NzFjY2JkNmZhNDdlNDM4OWIyYi4uOGZiNjE5ZWNk
NDZiNjc3Y2Y1NGEzY2Q4NDc0NGI2ZmM2MzUzNDE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNw
cApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgogCiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KQEAgLTUyLDkgKzUzLDYg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jb25z
dCBjaGFyKiBnV2ViS2l0V2ViUHJvY2Vzc05hbWUgPSAiV2ViS2l0V2ViUHJvY2VzcyI7Ci1jb25z
dCBjaGFyKiBnV2ViS2l0UGx1Z2luUHJvY2Vzc05hbWUgPSAiV2ViS2l0UGx1Z2luUHJvY2VzcyI7
Ci0KIHN0YXRpYyB2b2lkIGNoaWxkU2V0dXBGdW5jdGlvbihncG9pbnRlciB1c2VyRGF0YSkKIHsK
ICAgICBpbnQgc29ja2V0ID0gR1BPSU5URVJfVE9fSU5UKHVzZXJEYXRhKTsKQEAgLTc3LDM0ICs3
NSw2IEBAIHN0YXRpYyB2b2lkIGNoaWxkRmluaXNoZWRGdW5jdGlvbihHUGlkLCBnaW50IHN0YXR1
cywgZ3BvaW50ZXIgdXNlckRhdGEpCiAgICAgY2xvc2UoR1BPSU5URVJfVE9fSU5UKHVzZXJEYXRh
KSk7CiB9CiAKLXN0YXRpYyBDU3RyaW5nIGZpbmRXZWJLaXRQcm9jZXNzKGNvbnN0IGNoYXIqIHBy
b2Nlc3NOYW1lKQotewotICAgIGNvbnN0IGNoYXIqIGV4ZWNEaXJlY3RvcnkgPSBnX2dldGVudigi
V0VCS0lUX0VYRUNfUEFUSCIpOwotICAgIGlmIChleGVjRGlyZWN0b3J5KSB7Ci0gICAgICAgIFN0
cmluZyBwcm9jZXNzUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmaWxlbmFtZVRvU3Ry
aW5nKGV4ZWNEaXJlY3RvcnkpLCBwcm9jZXNzTmFtZSk7Ci0gICAgICAgIGlmIChmaWxlRXhpc3Rz
KHByb2Nlc3NQYXRoKSkKLSAgICAgICAgICAgIHJldHVybiBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocHJvY2Vzc1BhdGgpOwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGdvdEV4ZWN1dGFibGVQ
YXRoID0gZmFsc2U7Ci0gICAgc3RhdGljIFN0cmluZyBleGVjdXRhYmxlUGF0aDsKLSAgICBpZiAo
IWdvdEV4ZWN1dGFibGVQYXRoKSB7Ci0gICAgICAgIGdvdEV4ZWN1dGFibGVQYXRoID0gdHJ1ZTsK
LQotICAgICAgICBDU3RyaW5nIGV4ZWN1dGFibGVGaWxlID0gZ2V0Q3VycmVudEV4ZWN1dGFibGVQ
YXRoKCk7Ci0gICAgICAgIGlmICghZXhlY3V0YWJsZUZpbGUuaXNOdWxsKCkpCi0gICAgICAgICAg
ICBleGVjdXRhYmxlUGF0aCA9IGRpcmVjdG9yeU5hbWUoZmlsZW5hbWVUb1N0cmluZyhleGVjdXRh
YmxlRmlsZS5kYXRhKCkpKTsKLSAgICB9Ci0KLSAgICBpZiAoIWV4ZWN1dGFibGVQYXRoLmlzTnVs
bCgpKSB7Ci0gICAgICAgIFN0cmluZyBwcm9jZXNzUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChleGVjdXRhYmxlUGF0aCwgcHJvY2Vzc05hbWUpOwotICAgICAgICBpZiAoZmlsZUV4aXN0
cyhwcm9jZXNzUGF0aCkpCi0gICAgICAgICAgICByZXR1cm4gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHByb2Nlc3NQYXRoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmaWxlbmFtZVRvU3RyaW5nKExJQkVYRUNE
SVIpLCBwcm9jZXNzTmFtZSkpOwotfQotCiB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJv
Y2VzcygpCiB7CiAgICAgR1BpZCBwaWQgPSAwOwpAQCAtMTE2LDcgKzg2LDkgQEAgdm9pZCBQcm9j
ZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgQ1N0cmluZyBiaW5hcnlQYXRoID0gZmluZFdlYktpdFByb2Nlc3MobV9sYXVuY2hPcHRpb25z
LnByb2Nlc3NUeXBlID09IFByb2Nlc3NMYXVuY2hlcjo6V2ViUHJvY2VzcyA/IGdXZWJLaXRXZWJQ
cm9jZXNzTmFtZSA6IGdXZWJLaXRQbHVnaW5Qcm9jZXNzTmFtZSk7CisgICAgU3RyaW5nIGV4ZWN1
dGFibGVQYXRoID0gbV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID09IFdlYlByb2Nlc3MgPwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVQYXRoT2ZXZWJQcm9jZXNzKCkg
OiBleGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2VzcygpOworICAgIENTdHJpbmcgYmluYXJ5UGF0
aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aCk7CiAgICAgR093blB0
cjxnY2hhcj4gc29ja2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBzb2NrZXRzWzBdKSk7CiAgICAg
Y2hhciogYXJndlszXTsKICAgICBhcmd2WzBdID0gY29uc3RfY2FzdDxjaGFyKj4oYmluYXJ5UGF0
aC5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVy
L3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVu
Y2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAKaW5kZXggOGU4MjYyMDYzNjdlZWQ4ZWIxYzI1
Y2UyZjRiNDU2NGIwOGY3NGEwOC4uYzVjM2Y3MTQ1ZGU2Yzg5MWM0NWEyZDU2NjAwMDgyNDkwYTg3
NWZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1By
b2Nlc3NMYXVuY2hlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNo
ZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCkBAIC0yOCwxMCArMjgsOSBAQAogI2luY2x1ZGUg
IlByb2Nlc3NMYXVuY2hlci5oIgogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IlByb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNs
dWRlIDxRQ29yZUFwcGxpY2F0aW9uPgogI2luY2x1ZGUgPFFEZWJ1Zz4KLSNpbmNsdWRlIDxRRmls
ZT4KICNpbmNsdWRlIDxRTG9jYWxTZXJ2ZXI+CiAjaW5jbHVkZSA8UU1ldGFUeXBlPgogI2luY2x1
ZGUgPFFQcm9jZXNzPgpAQCAtMTAyLDEzICsxMDEsOSBAQCB2b2lkIFF0V2ViUHJvY2Vzczo6c2V0
dXBDaGlsZFByb2Nlc3MoKQogCiB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcygp
CiB7Ci0gICAgUVN0cmluZyBhcHBsaWNhdGlvblBhdGggPSBRTGF0aW4xU3RyaW5nKCIlMSAlMiIp
OwotCi0gICAgaWYgKFFGaWxlOjpleGlzdHMoUUNvcmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25E
aXJQYXRoKCkgKyBRTGF0aW4xU3RyaW5nKCIvUXRXZWJQcm9jZXNzIikpKSB7Ci0gICAgICAgIGFw
cGxpY2F0aW9uUGF0aCA9IGFwcGxpY2F0aW9uUGF0aC5hcmcoUUNvcmVBcHBsaWNhdGlvbjo6YXBw
bGljYXRpb25EaXJQYXRoKCkgKyBRTGF0aW4xU3RyaW5nKCIvUXRXZWJQcm9jZXNzIikpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIGFwcGxpY2F0aW9uUGF0aCA9IGFwcGxpY2F0aW9uUGF0aC5hcmco
UUxhdGluMVN0cmluZygiUXRXZWJQcm9jZXNzIikpOwotICAgIH0KKyAgICBRU3RyaW5nIGNvbW1h
bmRMaW5lID0gUUxhdGluMVN0cmluZygiJTEgJTIiKTsKKyAgICBjb21tYW5kTGluZSA9IGNvbW1h
bmRMaW5lLmFyZyhtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gV2ViUHJvY2VzcyA/Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nl
c3MoKSA6IGV4ZWN1dGFibGVQYXRoT2ZQbHVnaW5Qcm9jZXNzKCkpOwogCiAjaWYgT1MoREFSV0lO
KQogICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCkBAIC0xMjQsNyArMTE5LDcgQEAg
dm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIGtlcm5fcmV0dXJuX3Qg
a3IgPSBib290c3RyYXBfcmVnaXN0ZXIyKGJvb3RzdHJhcF9wb3J0LCBjb25zdF9jYXN0PGNoYXIq
PihzZXJ2aWNlTmFtZS50b1V0ZjgoKS5kYXRhKCkpLCBjb25uZWN0b3IsIDApOwogICAgIEFTU0VS
VF9VTlVTRUQoa3IsIGtyID09IEtFUk5fU1VDQ0VTUyk7CiAKLSAgICBRU3RyaW5nIHByb2dyYW0o
YXBwbGljYXRpb25QYXRoLmFyZyhzZXJ2aWNlTmFtZSkpOworICAgIGNvbW1hbmRMaW5lID0gY29t
bWFuZExpbmUuYXJnKHNlcnZpY2VOYW1lKTsKICNlbHNlCiAgICAgaW50IHNvY2tldHNbMl07CiAg
ICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS0VUX1RZUEUsIDAsIHNvY2tldHMpID09IC0x
KSB7CkBAIC0xNDQsMTIgKzEzOSwxMiBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJv
Y2VzcygpCiAgICAgfQogCiAgICAgaW50IGNvbm5lY3RvciA9IHNvY2tldHNbMV07Ci0gICAgUVN0
cmluZyBwcm9ncmFtKGFwcGxpY2F0aW9uUGF0aC5hcmcoc29ja2V0c1swXSkpOworICAgIGNvbW1h
bmRMaW5lID0gY29tbWFuZExpbmUuYXJnKHNvY2tldHNbMF0pOwogI2VuZGlmCiAKICAgICBRUHJv
Y2Vzcyogd2ViUHJvY2VzcyA9IG5ldyBRdFdlYlByb2Nlc3MoKTsKICAgICB3ZWJQcm9jZXNzLT5z
ZXRQcm9jZXNzQ2hhbm5lbE1vZGUoUVByb2Nlc3M6OkZvcndhcmRlZENoYW5uZWxzKTsKLSAgICB3
ZWJQcm9jZXNzLT5zdGFydChwcm9ncmFtKTsKKyAgICB3ZWJQcm9jZXNzLT5zdGFydChjb21tYW5k
TGluZSk7CiAKICNpZiAhT1MoREFSV0lOKQogICAgIC8vIERvbid0IGV4cG9zZSB0aGUgd2ViIHNv
Y2tldCB0byBwb3NzaWJsZSBmdXR1cmUgd2ViIHByb2Nlc3NlcwpAQCAtMTYzLDcgKzE1OCw3IEBA
IHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICNlbmRpZgogCiAgICAgaWYg
KCF3ZWJQcm9jZXNzLT53YWl0Rm9yU3RhcnRlZCgpKSB7Ci0gICAgICAgIHFEZWJ1ZygpIDw8ICJG
YWlsZWQgdG8gc3RhcnQiIDw8IHByb2dyYW07CisgICAgICAgIHFEZWJ1ZygpIDw8ICJGYWlsZWQg
dG8gc3RhcnQiIDw8IGNvbW1hbmRMaW5lOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICNpZiBPUyhEQVJXSU4pCiAgICAgICAgIG1hY2hfcG9ydF9kZWFsbG9jYXRlKG1hY2hfdGFza19z
ZWxmKCksIGNvbm5lY3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCmluZGV4IGE3NWQ1YjEzODdjZDhiZGE5ZGM1MjMx
MmQ4MjZmNGFhMGI0Njk2NTYuLjQ0MjNkNDdmMDlhOWJiMjkxNjQ4NzY1ZWRhN2IwODZlYjU0YWI3
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NQcm94eS5oCkBAIC01Miw2ICs1MiwxNCBAQCBjbGFzcyBXZWJQbHVnaW5TaXRlRGF0
YU1hbmFnZXI7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBzdHJ1Y3QgUGx1Z2luUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczsKIAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorc3RydWN0
IFJhd1BsdWdpbk1ldGFEYXRhIHsKKyAgICBTdHJpbmcgbmFtZTsKKyAgICBTdHJpbmcgZGVzY3Jp
cHRpb247CisgICAgU3RyaW5nIG1pbWVEZXNjcmlwdGlvbjsKK307CisjZW5kaWYKKwogY2xhc3Mg
UGx1Z2luUHJvY2Vzc1Byb3h5IDogQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBQcm9jZXNz
TGF1bmNoZXI6OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UGx1Z2lu
UHJvY2Vzc1Byb3h5PiBjcmVhdGUoUGx1Z2luUHJvY2Vzc01hbmFnZXIqLCBjb25zdCBQbHVnaW5N
b2R1bGVJbmZvJik7CkBAIC04MCw2ICs4OCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wg
Y3JlYXRlUHJvcGVydHlMaXN0RmlsZShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJik7CiAjZW5kaWYK
IAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgIHN0YXRpYyBib29sIHNjYW5QbHVn
aW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBSYXdQbHVnaW5NZXRhRGF0YSYgcmVzdWx0KTsK
KyNlbmRpZgorCiBwcml2YXRlOgogICAgIFBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNz
TWFuYWdlciosIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5
R3RrLmNwcAppbmRleCA0Yzg1NzcyYTI3ZjdiNzA3MmFmZjZhMTEzN2M5Mjc0ODg1YThmNjQzLi41
NDI1OTFkNDA1MDI1NmYyZjY2YTliMDEyMTgwOGY0OWI2ODk2MjQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vz
c1Byb3h5R3RrLmNwcApAQCAtMjksMTMgKzI5LDUzIEBACiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9D
RVNTKQogCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlICJQcm9jZXNzRXhlY3V0
YWJsZVBhdGguaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDxn
bGliLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6
cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQordm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5p
dGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit7
Cit9CisKK2Jvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2luKGNvbnN0IFN0cmluZyYg
cGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmIHJlc3VsdCkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIENTdHJpbmcgYmluYXJ5UGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihleGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2VzcygpKTsKKyAgICBDU3RyaW5nIHBsdWdpblBh
dGhDU3RyaW5nID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpblBhdGgpOworICAgIGNo
YXIqIGFyZ3ZbNF07CisgICAgYXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJpbmFyeVBhdGgu
ZGF0YSgpKTsKKyAgICBhcmd2WzFdID0gY29uc3RfY2FzdDxjaGFyKj4oIi1zY2FuUGx1Z2luIik7
CisgICAgYXJndlsyXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHBsdWdpblBhdGhDU3RyaW5nLmRhdGEo
KSk7CisgICAgYXJndlszXSA9IDA7CisKKyAgICBnaW50IHN0YXR1czsKKyAgICBnY2hhciogc3Rk
T3V0OworICAgIGlmICghZ19zcGF3bl9zeW5jKDAsIGFyZ3YsIDAsIEdfU1BBV05fU1RERVJSX1RP
X0RFVl9OVUxMLCAwLCAwLCAmc3RkT3V0LCAwLCAmc3RhdHVzLCAwKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghV0lGRVhJVEVEKHN0YXR1cykgfHwgV0VYSVRTVEFUVVMoc3RhdHVz
KSAhPSBFWElUX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IHVu
c2lnbmVkIGtOdW1MaW5lc0V4cGVjdGVkID0gMzsKKyAgICBTdHJpbmcgbGluZXNba051bUxpbmVz
RXhwZWN0ZWRdOworICAgIHVuc2lnbmVkIGxpbmVJbmRleCA9IDA7CisgICAgY29uc3QgVUNoYXIq
IGN1cnJlbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oc3RkT3V0KTsKKyAgICB3
aGlsZSAobGluZUluZGV4IDwga051bUxpbmVzRXhwZWN0ZWQpIHsKKyAgICAgICAgY29uc3QgVUNo
YXIqIHN0YXJ0ID0gY3VycmVudDsKKyAgICAgICAgd2hpbGUgKCpjdXJyZW50KysgIT0gVUNoYXIo
J1xuJykpIHsgfQorICAgICAgICBsaW5lc1tsaW5lSW5kZXgrK10gPSBTdHJpbmcoc3RhcnQsIGN1
cnJlbnQgLSBzdGFydCAtIDEpOworICAgIH0KKworICAgIHJlc3VsdC5uYW1lLnN3YXAobGluZXNb
MF0pOworICAgIHJlc3VsdC5kZXNjcmlwdGlvbi5zd2FwKGxpbmVzWzFdKTsKKyAgICByZXN1bHQu
bWltZURlc2NyaXB0aW9uLnN3YXAobGluZXNbMl0pOworICAgIHJldHVybiAhcmVzdWx0Lm1pbWVE
ZXNjcmlwdGlvbi5pc0VtcHR5KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2luUHJvY2Vzc1By
b3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2luUHJv
Y2Vzc1Byb3h5UXQuY3BwCmluZGV4IGNjNTIxZTBhZjlhNmEwNzQ0YzJkYzBlMDZmNjUxNGZjOTRi
MzQ5ZjguLjliN2YyYjJkZGEyZTc4YWZkM2E4N2YxNzIxNmRlMWJhYWNlNzM5ZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3F0L1BsdWdpblByb2Nlc3NQcm94
eVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Q
cm9jZXNzUHJveHlRdC5jcHAKQEAgLTI4LDE0ICsyOCw1MSBAQAogCiAjaWYgRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQogCi0jaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlICJQcm9jZXNz
RXhlY3V0YWJsZVBhdGguaCIKKyNpbmNsdWRlIDxRQnl0ZUFycmF5PgorI2luY2x1ZGUgPFFDb3Jl
QXBwbGljYXRpb24+CisjaW5jbHVkZSA8UURpcj4KKyNpbmNsdWRlIDxRRXZlbnRMb29wPgorI2lu
Y2x1ZGUgPFFQcm9jZXNzPgorI2luY2x1ZGUgPFFTdHJpbmc+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJv
Y2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorY2xhc3Mg
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKKwordm9pZCBQbHVnaW5Qcm9jZXNzUHJv
eHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyYpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBQbHVnaW5Q
cm9jZXNzUHJveHk6OnNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBSYXdQbHVn
aW5NZXRhRGF0YSYgcmVzdWx0KQoreworICAgIFFTdHJpbmcgY29tbWFuZExpbmUgPSBRTGF0aW4x
U3RyaW5nKCIlMSAlMiAlMyIpOworICAgIGNvbW1hbmRMaW5lID0gY29tbWFuZExpbmUuYXJnKGV4
ZWN1dGFibGVQYXRoT2ZQbHVnaW5Qcm9jZXNzKCkpOworICAgIGNvbW1hbmRMaW5lID0gY29tbWFu
ZExpbmUuYXJnKFFTdHJpbmdMaXRlcmFsKCItc2NhblBsdWdpbiIpKS5hcmcoc3RhdGljX2Nhc3Q8
UVN0cmluZz4ocGx1Z2luUGF0aCkpOworCisgICAgUVByb2Nlc3MgcHJvY2VzczsKKyAgICBwcm9j
ZXNzLnNldFJlYWRDaGFubmVsKFFQcm9jZXNzOjpTdGFuZGFyZE91dHB1dCk7CisgICAgcHJvY2Vz
cy5zdGFydChjb21tYW5kTGluZSk7CisKKyAgICBpZiAoIXByb2Nlc3Mud2FpdEZvckZpbmlzaGVk
KCkKKyAgICAgICAgfHwgcHJvY2Vzcy5leGl0U3RhdHVzKCkgIT0gUVByb2Nlc3M6Ok5vcm1hbEV4
aXQKKyAgICAgICAgfHwgcHJvY2Vzcy5leGl0Q29kZSgpICE9IEVYSVRfU1VDQ0VTUykgeworICAg
ICAgICBwcm9jZXNzLmtpbGwoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IFFCeXRlQXJyYXkgb3V0cHV0Qnl0ZXMgPSBwcm9jZXNzLnJlYWRBbGwoKTsKKyAgICBBU1NFUlQo
IShvdXRwdXRCeXRlcy5zaXplKCkgJSBzaXplb2YoVUNoYXIpKSk7CisKKyAgICBTdHJpbmcgb3V0
cHV0KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihvdXRwdXRCeXRlcy5jb25zdERhdGEo
KSksIG91dHB1dEJ5dGVzLnNpemUoKSAvIHNpemVvZihVQ2hhcikpOworICAgIFZlY3RvcjxTdHJp
bmc+IGxpbmVzOworICAgIG91dHB1dC5zcGxpdChVQ2hhcignXG4nKSwgbGluZXMpOworICAgIEFT
U0VSVChsaW5lcy5zaXplKCkgPT0gMyk7CisKKyAgICByZXN1bHQubmFtZS5zd2FwKGxpbmVzWzBd
KTsKKyAgICByZXN1bHQuZGVzY3JpcHRpb24uc3dhcChsaW5lc1sxXSk7CisgICAgcmVzdWx0Lm1p
bWVEZXNjcmlwdGlvbi5zd2FwKGxpbmVzWzJdKTsKKyAgICByZXR1cm4gIXJlc3VsdC5taW1lRGVz
Y3JpcHRpb24uaXNFbXB0eSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJy
b3dzZXJGdW5jcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCmluZGV4IGJkYzZlOWRlOWUxMjU0NGIwYTA0MjNk
MDRkOWUyYjY0NGQ4MzljZDEuLmQxMjEzODhmNTA4MGYwMTlmMTM5M2M3ZmUxM2FiNDc5ZjEzYjBm
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNTUxLDIzICs1
NTEsOSBAQCBzdGF0aWMgTlBFcnJvciBOUE5fR2V0VmFsdWUoTlBQIG5wcCwgTlBOVmFyaWFibGUg
dmFyaWFibGUsIHZvaWQgKnZhbHVlKQogICAgICAgICAgICBicmVhazsKIAogICAgICAgIGNhc2Ug
TlBOVlRvb2xraXQ6IHsKLSNpZiBQTEFURk9STShHVEspCi0gICAgICAgICAgICpyZWludGVycHJl
dF9jYXN0PHVpbnQzMl90Kj4odmFsdWUpID0gMjsKLSNlbHNlCi0gICAgICAgICAgIGNvbnN0IHVp
bnQzMl90IGV4cGVjdGVkR1RLVG9vbEtpdFZlcnNpb24gPSAyOwotCi0gICAgICAgICAgIC8vIFNl
dCB0aGUgZXhwZWN0ZWQgR1RLIHZlcnNpb24gaWYgd2Uga25vdyB0aGF0IHRoaXMgcGx1Z2luIG5l
ZWRzIGl0IG9yIGlmIHRoZSBwbHVnaW4gY2FsbCB1cwotICAgICAgICAgICAvLyB3aXRoIGEgbnVs
bCBpbnN0YW5jZS4gVGhlIGxhdHRlciBpcyB0aGUgY2FzZSB3aXRoIE5TUGx1Z2luV3JhcHBlciBw
bHVnaW5zLgotICAgICAgICAgICBib29sIHJlcXVpcmVzR1RLVG9vbEtpdFZlcnNpb247Ci0gICAg
ICAgICAgIGlmICghbnBwKQotICAgICAgICAgICAgICAgcmVxdWlyZXNHVEtUb29sS2l0VmVyc2lv
biA9IHRydWU7Ci0gICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgUmVmUHRyPE5ldHNj
YXBlUGx1Z2luPiBwbHVnaW4gPSBOZXRzY2FwZVBsdWdpbjo6ZnJvbU5QUChucHApOwotICAgICAg
ICAgICAgICAgcmVxdWlyZXNHVEtUb29sS2l0VmVyc2lvbiA9IHBsdWdpbi0+cXVpcmtzKCkuY29u
dGFpbnMoUGx1Z2luUXVpcmtzOjpSZXF1aXJlc0dUS1Rvb2xLaXQpOwotICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZSkgPSByZXF1aXJl
c0dUS1Rvb2xLaXRWZXJzaW9uID8gZXhwZWN0ZWRHVEtUb29sS2l0VmVyc2lvbiA6IDA7Ci0jZW5k
aWYKKyAgICAgICAgICAgLy8gR3RrIGJhc2VkIHBsdWdpbnMgbmVlZCB0byBiZSBhc3N1cmVkIGFi
b3V0IHRoZSB0b29sa2l0IHZlcnNpb24uCisgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IGV4cGVj
dGVkR3RrVG9vbEtpdFZlcnNpb24gPSAyOworICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDx1
aW50MzJfdCo+KHZhbHVlKSA9IGV4cGVjdGVkR3RrVG9vbEtpdFZlcnNpb247CiAgICAgICAgICAg
IGJyZWFrOwogICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvcXQvUGx1Z2lu
TWFpblF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL3F0L1BsdWdpbk1haW5RdC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2Q1YzkzYjU3YjNiOWVjZTU0MzZjMDZkMTc2NDMzYmQyNjlhOTFkMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL3F0L1BsdWdpbk1haW5RdC5jcHAKQEAgLTAsMCArMSwzOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
PFFMaWJyYXJ5PgorI2luY2x1ZGUgPFF0R2xvYmFsPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK1Ff
REVDTF9JTVBPUlQgaW50IFBsdWdpblByb2Nlc3NNYWluKGludCBhcmdjLCBjaGFyKiogYXJndik7
Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICByZXR1cm4gV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzTWFpbihhcmdjLCBhcmd2KTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ZmVlMTQxZWVlMjc1NDc4YzQxMjA4
OWU2MjdkZjdjOWE1ZGZlMDAwLi5hMDQzODU3MjgwMjU0YjlhOTE2M2Q1NzVmZjYzYWM0ZDRmNjIy
MGJmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTItMDMtMTEgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJr
aXQub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBTZXQgdXAgcGx1Z2luIHByb2Nlc3Mgb24gVW5p
eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxMjEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHFtYWtl
L21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmOiBSZWVuYWJsZSBwbHVnaW5zCisgICAgICAg
IGFuZCB0dXJuIG9uIHBsdWdpbiBwcm9jZXNzLgorCiAyMDEyLTAzLTExICBNYWNpZWogU3RhY2hv
d2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIC0taW5zdHJ1bWVudHMgb3B0aW9u
IHRvIHN1bnNwaWRlciB0byBwcm9maWxlIHdpdGggSW5zdHJ1bWVudHMKZGlmZiAtLWdpdCBhL1Rv
b2xzL01pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9HTlVtYWtlZmlsZS5hbQppbmRleCA5ZTQyZTE5NGZiNTcxNmRjZGU5NzA5OGZjZmU2MTM5MDVj
YWJjNDI3Li4yZjQ4MmZiYmQyNjA2OTE5MWZmOTMzMjBlMjk1YzQ2MGFiMWFlMzVmIDEwMDY0NAot
LS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvR05VbWFrZWZpbGUuYW0KKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC0zMSw3ICszMSw4IEBAIG5vZGlzdF9Qcm9n
cmFtc19NaW5pQnJvd3Nlcl9TT1VSQ0VTID0gXAogUHJvZ3JhbXNfTWluaUJyb3dzZXJfTERBREQg
PSBcCiAJbGlid2Via2l0Mmd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lU
R1RLX0FQSV9NSU5PUl9WRVJTSU9OQC5sYSBcCiAJJChHTElCX0xJQlMpIFwKLQkkKEdUS19MSUJT
KQorCSQoR1RLX0xJQlMpIFwKKwkkKExJQlNPVVBfTElCUykKIAogUHJvZ3JhbXNfTWluaUJyb3dz
ZXJfTERGTEFHUyA9IFwKIAktbm8tZmFzdC1pbnN0YWxsIFwKZGlmZiAtLWdpdCBhL1Rvb2xzL3Ft
YWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9m
ZWF0dXJlcy9mZWF0dXJlcy5wcmYKaW5kZXggNTlhMGJkNGMzMmMyZmYwNmU4MTFiYmZjY2JkNzE1
MDJjOTc5YTg4Ni4uZGY3NjkyOGY5MzE5YmY2OTY0ZmZiOTRhN2YxNjhjZjQ0Zjg4ZTYyYyAxMDA2
NDQKLS0tIGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYKKysrIGIv
VG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYKQEAgLTEyNSwxMiArMTI1
LDExIEBAIGhhdmVRdCg1KSB7CiAgICAgbm9fd2Via2l0MiB7CiAgICAgICAgIERFRklORVMgKz0g
UExVR0lOX0FSQ0hJVEVDVFVSRV9VTlNVUFBPUlRFRD0xCiAgICAgfSBlbHNlIHsKLSAgICAgICAg
IyBEaXNhYmxlIHhsaWIgcGx1Z2lucyB3aGlsZSB0aGV5J3JlIGluLXByb2Nlc3MsIGJlY2F1c2Ug
dGhleSBjcmFzaAotICAgICAgICAjIGFzIHNvb24gYXMgYW4gaW5zdGFsbGVkIG5wYXBpIHBsdWdp
biB1c2VzIFF0IDQuCi0gICAgICAgIGZhbHNlOmNvbnRhaW5zKFFUX0NPTkZJRywgeGNiLXhsaWIp
IHsKKyAgICAgICAgY29udGFpbnMoUVRfQ09ORklHLCB4Y2IteGxpYikgewogICAgICAgICAgICAg
Q09ORklHICs9IHBsdWdpbl9iYWNrZW5kX3hsaWIKICAgICAgICAgICAgIERFRklORVMgKz0gUExV
R0lOX0FSQ0hJVEVDVFVSRV9YMTE9MSBcCi0gICAgICAgICAgICAgICAgICAgICAgIFBMVUdJTl9B
UkNISVRFQ1RVUkVfVU5TVVBQT1JURUQ9MAorICAgICAgICAgICAgICAgICAgICAgICBQTFVHSU5f
QVJDSElURUNUVVJFX1VOU1VQUE9SVEVEPTAgXAorICAgICAgICAgICAgICAgICAgICAgICBFTkFC
TEVfUExVR0lOX1BST0NFU1M9MQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgREVGSU5F
UyArPSBQTFVHSU5fQVJDSElURUNUVVJFX1VOU1VQUE9SVEVEPTEKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDA3YjIwNDBmODNjNGRkZDcyZTZjYWNi
NjE1MjlhNWY2ZTNjMjZjMjcuLjEyMTZiNjFlNjk2ZmQ0YmExNTFjYmZmOTZmZTljYzIxMzc3MWIy
MjUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAxMi0wMy0xMSAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW1F0XVtXSzJdIFNldCB1cCBwbHVnaW4gcHJvY2VzcyBvbiBVbml4CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjEyMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL1F0V2ViS2l0LnBy
bzogQWRkIFBsdWdpblByb2Nlc3Mgc3VicHJvamVjdC4KKwogMjAxMi0wMy0xMCAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBJbmNyZW1lbnQgdGhlIHBlcmYtby1t
YXRpYyBhcHAgdmVyc2lvbi4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131243</attachid>
            <date>2012-03-11 10:24:10 -0700</date>
            <delta_ts>2012-04-02 09:52:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72121-20120311182408.patch</filename>
            <type>text/plain</type>
            <size>52096</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTdmZjk5MWE2YTM2ZmNm
Y2QyYjIwMWVhMWQ2MGI4Y2YxOWYyYWNiMi4uNDBhODIyZTViMWNmMDkwZTlkYzY4MTNiYmU5NzE2
YWFkODY4MDA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxMi0wMy0xMSAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIFNl
dCB1cCBwbHVnaW4gcHJvY2VzcyBvbiBVbml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MjEyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNldHVwIHBsdWdpbiBwcm9jZXNzIGZvciBRdCBhbmQgbW92ZSB0
aGUgdGFzayBvZiBxdWVyeWluZyB0aGUgcGx1Z2lucworICAgICAgICB0byB0aGlzIHByb2Nlc3Mg
aW4gb3JkZXIgdG8gYXZvaWQgY3Jhc2hlcyBkdWUgdG8gcGx1Z2luIGJ1Z3Mgb3IgbGlicmFyeQor
ICAgICAgICBpbmNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzLnBybzogQWRkZWQuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9j
ZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3NNYWluR3RrKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nl
c3NNYWluUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjptZXNzYWdlSGFuZGxlcik6CisgICAgICAg
IChXZWJLaXQ6OmluaXRpYWxpemVHdGspOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luUHJvY2Vzc01haW4pOgorICAgICAgICBJbXBsZW1lbnQgZW50cnkgcG9pbnQg
b2YgdGhlIHBsdWdpbiBwcm9jZXNzLgorICAgICAgICBIYW5kbGUgLXNjYW5QbHVnaW4gY29tbWFu
ZCBsaW5lIHN3aXRjaDogcHJvZHVjZSBtZXRhIGRhdGEKKyAgICAgICAgb2YgcGx1Z2luIG9uIHN0
YW5kYXJkIG91dHB1dCBhbmQgdGVybWluYXRlLiBNb3ZlIEd0ayBpbml0aWFsaXphdGlvbgorICAg
ICAgICBoYWNrIHRvIHRoZXJlLgorCisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6dHJ5TG9hZCk6CisgICAgICAgIEdldCByaWQgb2YgdGhlIEd0ayBpbml0aWFsaXph
dGlvbiBoYWNrLiBXZSBkbyBub3QgbmVhZCBpdCBoZXJlIGFueW1vcmUuCisKKyAgICAgICAgKiBT
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKE5ldHNjYXBlUGx1Z2luTW9kdWxlKToKKyAgICAgICAgKiBTaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpwYXJzZU1JTUVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQ
bHVnaW5JbmZvKToKKyAgICAgICAgR2V0IHBsdWdpbiBtZXRhIGRhdGEgdmlhIFBsdWdpblByb2Nl
c3Nwcm94eS4gSWYgYSBmYWlsdXJlCisgICAgICAgIGhhcHBlbmVkIHdlIGlnbm9yZSB0byB1c2Ug
dGhlIHBsdWdpbi4gUmVtb3ZlIHRoZSBjb25jZXB0CisgICAgICAgIG9mIHN0ZG91dCByZWRpcmVj
dGlvbiBzaW5jZSB3ZSBjYW4gY29udHJvbCBpdCB3aGVuIGxhdW5jaGluZworICAgICAgICB0aGUg
cHJvY2Vzcy4KKworICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6ZGV0ZXJt
aW5lUXVpcmtzKToKKyAgICAgICAgKFdlYktpdDo6dHJ1bmNhdGVUb1NpbmdsZUxpbmUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2NhblBsdWdpbik6CisgICAgICAg
IFByb2R1Y2UgcGx1Z2luIG1ldGEgZGF0YSBvbiBzdGFuZGFyZCBvdXRwdXQuCisKKyAgICAgICAg
KiBTaGFyZWQvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKiBTaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHA6IEFk
ZGVkLgorICAgICAgICAoZmluZFdlYktpdFByb2Nlc3MpOgorICAgICAgICAoZXhlY3V0YWJsZVBh
dGhPZldlYlByb2Nlc3MpOgorICAgICAgICAoZXhlY3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3Mp
OgorICAgICAgICAqIFNoYXJlZC9xdC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhRdC5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3F0L1BsdWdpblByb2Nlc3NQ
cm94eVF0LmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmV4ZWN1dGFi
bGVQYXRoKToKKyAgICAgICAgKFdlYktpdDo6ZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpleGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2Vzcyk6CisgICAgICAg
IEZhY3RvcmVkIHRoZSBleGVjdXRhYmxlIHBhdGggZGV0ZXJtaW5hdGlvbiBpbnRvIGZyZWUgZnVu
Y3Rpb25zCisgICAgICAgIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uCisKKyAgICAgICAgKiBT
aGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OnBhaW50KToKKyAgICAgICAgQWRkZWQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBv
dmVycmlkZSB3aXRoIHRoZSBzY2FsZSBmYWN0b3IgYmVjYXVzZQorICAgICAgICBpdCBpcyBjYWxs
ZWQgZnJvbSBQbHVnaW5Qcm94eS4gSXQgZG9lcyBub3QgYWN0dWFsbHkgaGFuZGxlIHRoZSBjYXNl
CisgICAgICAgIHdoZW4gdGhlIHNjYWxlIGZhY3RvciBpcyBub3QgMS4gSG93ZXZlciBpdCdzIG9r
IGJlY2F1c2UgaXQgY2FuIG9ubHkKKyAgICAgICAgaGFwcGVuIG9uIE1hYyBpbiB0aGUgbW9tZW50
LgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIv
UHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAgIChQcm9jZXNzTGF1bmNoZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICBVc2UgdGhlIG5ldyBm
dW5jdGlvbnMgdG8gZGV0ZXJtaW5lIHRoZSBleGVjdXRhYmxlIHBhdGguCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChSYXdQbHVnaW5NZXRhRGF0YSk6CisgICAgICAgIChQbHVnaW5Qcm9jZXNzUHJv
eHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlH
dGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5p
dGlhbGl6ZVBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2luKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBs
dWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5Q
bHVnaW4pOgorICAgICAgICBMYXVuY2ggcGx1Z2luIHByb2Nlc3MgYW5kIHBhcnNlIGl0J3Mgb3V0
cHV0IHRvIGdldCB0aGUgbWV0YSBkYXRhCisgICAgICAgIGZvciB0aGUgcGx1Z2luLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TlBOX0dldFZhbHVlKToKKyAgICAgICAgQ2hhbmdlZCBhY2Nv
cmRpbmcgdG8gdGhlIHJlbW92aW5nIG9mIHRoZSBmbGFzaCBoYWNrLiBEbyBub3QgdHJ5CisgICAg
ICAgIHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBwbHVnaW4gbmVlZHMgR3RrIGJ5IGl0J3MgbmFtZSBi
dXQgaW5zdGVhZAorICAgICAgICBhbHdheXMgZ2V0IGJhY2sgdGhlIGV4cGVjdGVkIEd0ayB2ZXJz
aW9uICgyKS4gT25seSBHdGsgcGx1Z2lucworICAgICAgICBzaG91bGQgYXNrIGZvciB0aGlzIGFu
eXdheS4KKworICAgICAgICAqIHF0L1BsdWdpbk1haW5RdC5jcHA6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlHdGsuY3Bw
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKG1haW4pOgorCiAyMDEyLTAzLTExICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgPGh0dHA6Ly93ZWJr
aXQub3JnL2IvODA3ODI+IFdlYiBJbnNwZWN0b3I6IENyYXNoIHVzaW5nIHJlbGVhc2VkIGZyb250
ZW5kQ2xpZW50IHdoZW4gcmVzaXppbmcgd2luZG93IHdpdGggY2xvc2VkIGluc3BlY3RvcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1F0V2ViS2l0LnBybyBiL1NvdXJjZS9RdFdlYktpdC5wcm8KaW5kZXgg
MDJmYzllMWM3ZWJlMWY3MzE5ZDA5ZDEyMTVlMjA5ODk5YjQ1MWE3NC4uYmJiZmM0MWU2ODE3Yjdj
MGQ1YmQ1ZTEzZWM5ZDNjZmQ0NzliYTFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1F0V2ViS2l0LnBy
bworKysgYi9Tb3VyY2UvUXRXZWJLaXQucHJvCkBAIC00LDYgKzQsOCBAQAogIyBTZWUgJ1Rvb2xz
L3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBzeXN0ZW0KICMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCitsb2FkKGZlYXR1cmVzKQorCiBURU1QTEFURSA9IHN1YmRpcnMKIENPTkZJRyAr
PSBvcmRlcmVkCiAKQEAgLTEzLDYgKzE1LDEwIEBAIFNVQkRJUlMgKz0gYXBpCiAhbm9fd2Via2l0
MiB7CiAgICAgd2VicHJvY2Vzcy5maWxlID0gV2ViS2l0Mi9XZWJQcm9jZXNzLnBybwogICAgIFNV
QkRJUlMgKz0gd2VicHJvY2VzcworICAgIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9QTFVHSU5f
UFJPQ0VTUz0xKSB7CisgICAgICAgIHBsdWdpbnByb2Nlc3MuZmlsZSA9IFdlYktpdDIvUGx1Z2lu
UHJvY2Vzcy5wcm8KKyAgICAgICAgU1VCRElSUyArPSBwbHVnaW5wcm9jZXNzCisgICAgfQogfQog
CiBpbmNsdWRlKFdlYktpdC9xdC9kb2NzL2RvY3MucHJpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRl
eCA5ODAwZmY1NmFiMTk2MWM2OWY3ZWMwOWM2OTMwNDU0MmNjNmY0MGU3Li40YzMyYTYxNTU4OTI1
NjQyNzNkYjhjZTM0MWM4NmExMTQ4MWFmZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtMzI2
LDYgKzMyNiw3IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVk
L0VkaXRvclN0YXRlLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmgg
XAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250U21vb3RoaW5nTGV2ZWwuaCBcCisJU291cmNl
L1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvY2Fpcm8vTGF5ZXJUcmVlQ29udGV4dENhaXJvLmNwcCBcCiAJU291cmNlL1dlYktp
dDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcCBcCiAJU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5oIFwKQEAgLTMzNSw2ICszMzYsNyBAQCB3
ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2Vi
V2hlZWxFdmVudEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUGxhdGZvcm1D
ZXJ0aWZpY2F0ZUluZm8uaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9QcmludEluZm9H
dGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0
aEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rvcnku
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5oIFwKQEAg
LTEzNTEsNiArMTM1Myw3IEBAIFByb2dyYW1zX1dlYktpdFBsdWdpblByb2Nlc3NfQ1BQRkxBR1Mg
PSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMgXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlLyBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvIFwKKwktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy8gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS8gXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIgXApAQCAtMTM2MSw2ICsxMzY0LDcgQEAgUHJvZ3JhbXNfV2ViS2l0
UGx1Z2luUHJvY2Vzc19DUFBGTEFHUyA9IFwKIAktREJVSUxESU5HX1dFQktJVCBcCiAJLURHVEtf
QVBJX1ZFUlNJT05fMj0xIFwKIAktREVOQUJMRV9QTFVHSU5fUFJPQ0VTUz0xIFwKKwktRExJQkVY
RUNESVI9XCIiJChsaWJleGVjZGlyKSJcIiBcCiAJJChnbG9iYWxfY3BwZmxhZ3MpIFwKIAkkKHdl
YmNvcmVfY3BwZmxhZ3MpIFwKIAkkKHdlYmNvcmVndGtfY3BwZmxhZ3MpIFwKQEAgLTE0NDMsNiAr
MTQ0Nyw3IEBAIHdlYmtpdDJfcGx1Z2luX3Byb2Nlc3Nfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01haW5HdGsuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hh
cmVkL0NoaWxkUHJvY2Vzcy5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUHJvY2Vzc0V4ZWN1
dGFibGVQYXRoLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmll
ckRhdGEuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJE
YXRhLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJl
Y2VpdmVyLmNwcCBcCkBAIC0xNDY5LDggKzE0NzQsMTAgQEAgd2Via2l0Ml9wbHVnaW5fcHJvY2Vz
c19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJv
YXJkRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYldo
ZWVsRXZlbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1v
dXNlRXZlbnRHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRG
YWN0b3J5LmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1h
cENhaXJvLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdp
blByb2Nlc3NQcm94eUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW4uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRp
bWVVdGlsaXRpZXMuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MucHJvIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAw
MGM0NzA4MWZkMjg2MDg2ZjA0NDE2YTkxYzVlNmMxMzY4Y2YzOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MucHJvCkBAIC0wLDAgKzEsMjUgQEAKKyMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorIyBQcm9qZWN0IGZpbGUgZm9yIHRoZSBXZWJLaXQyIHBsdWdpbiBwcm9jZXNzIGJp
bmFyeQorIworIyBTZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRo
ZSBidWlsZCBzeXN0ZW0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURU1QTEFURSA9IGFwcAorCitRVCArPSB3
ZWJraXQKKworVEFSR0VUID0gUXRXZWJQbHVnaW5Qcm9jZXNzCitERVNURElSID0gJCR7Uk9PVF9C
VUlMRF9ESVJ9L2JpbgorCitTT1VSQ0VTICs9IHF0L1BsdWdpbk1haW5RdC5jcHAKKworSU5DTFVE
RVBBVEggPSAkJFBXRC8uLi9KYXZhU2NyaXB0Q29yZSBcCisgICAgICAgICAgICAgICQkSU5DTFVE
RVBBVEgKKworSU5TVEFMTFMgKz0gdGFyZ2V0CisKK2lzRW1wdHkoSU5TVEFMTF9CSU5TKSB7Cisg
ICAgdGFyZ2V0LnBhdGggPSAkJFtRVF9JTlNUQUxMX0JJTlNdCit9IGVsc2UgeworICAgIHRhcmdl
dC5wYXRoID0gJCRJTlNUQUxMX0JJTlMKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcAppbmRleCA5OTJkNzQw
NzUxMDRjOGNiY2E2MTJmMWNkODk5ZTlhNTBlMzcxNDRkLi44NzBjMDFjMjc5NDZlYjJlNTAzNDE1
MWIwOTg4YzBlYjY2MDgzMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01haW5HdGsuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01haW5HdGsuaCIK
IAorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgogI2luY2x1ZGUgPGdkay9nZGt4Lmg+CkBA
IC01MywxMiArNTQsMjIgQEAgc3RhdGljIGludCB3ZWJraXRndGtYRXJyb3IoRGlzcGxheSogeGRp
c3BsYXksIFhFcnJvckV2ZW50KiBlcnJvcikKIAogV0tfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNz
TWFpbkd0ayhpbnQgYXJnYywgY2hhciogYXJndltdKQogewotICAgIEFTU0VSVChhcmdjID09IDIp
OworICAgIEFTU0VSVChhcmdjID09IDIgfHwgYXJnYyA9PSAzKTsKKyAgICBib29sIHNjYW5QbHVn
aW4gPSAhc3RyY21wKGFyZ3ZbMV0sICItc2NhblBsdWdpbiIpOworICAgIEFTU0VSVChhcmdjID09
IDIgfHwgKGFyZ2MgPT0gMyAmJiBzY2FuUGx1Z2luKSk7CiAKICAgICBndGtfaW5pdCgmYXJnYywg
JmFyZ3YpOwogCiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0
aWFsaXplTWFpblRocmVhZCgpOworCisgICAgaWYgKHNjYW5QbHVnaW4pIHsKKyAgICAgICAgU3Ry
aW5nIHBsdWdpblBhdGgoYXJndlsyXSk7CisgICAgICAgIGlmICghTmV0c2NhcGVQbHVnaW5Nb2R1
bGU6OnNjYW5QbHVnaW4ocGx1Z2luUGF0aCkpCisgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlM
VVJFOworICAgICAgICByZXR1cm4gRVhJVF9TVUNDRVNTOworICAgIH0KKwogICAgIFJ1bkxvb3A6
OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCiAgICAgLy8gUGx1Z2lucyBjYW4gcHJvZHVjZSBY
IGVycm9ycyB0aGF0IGFyZSBoYW5kbGVkIGJ5IHRoZSBHREsgWCBlcnJvciBoYW5kbGVyLCB3aGlj
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9j
ZXNzTWFpblF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJv
Y2Vzc01haW5RdC5jcHAKaW5kZXggZDNhMGVjM2UyNDU5NTZiOTg1MDBkNTY3ZTU2NWZhYTE1MDZh
MDA1My4uYmM0ODdlMWVjNzFmNDAwOWY2N2UxZmVlYWQwMTIwMWY1MjZkYmEyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWlu
UXQuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBO
b2tpYSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVW5p
dmVyc2l0eSBvZiBTemVnZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDQ0ICsyNSw4MyBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpbi5oIgogCiAjaWYgRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluLmgiCiAKLSNpbmNsdWRlICJD
b21tYW5kTGluZS5oIgorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luTW9kdWxlLmgiCiAjaW5jbHVk
ZSAiUGx1Z2luUHJvY2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
KyNpbmNsdWRlIDxRRGVidWc+CisjaW5jbHVkZSA8UUd1aUFwcGxpY2F0aW9uPgorI2luY2x1ZGUg
PFFTdHJpbmdMaXN0PgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotI2RlZmluZSBTSE9XX0NSQVNI
X1JFUE9SVEVSIDEKKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotaW50IFBsdWdpblByb2Nlc3NNYWlu
KGNvbnN0IENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkKK3N0YXRpYyB2b2lkIG1lc3NhZ2VIYW5k
bGVyKFF0TXNnVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewotICAgIFN0cmluZyBz
ZXJ2aWNlTmFtZSA9IGNvbW1hbmRMaW5lWyJzZXJ2aWNlbmFtZSJdOwotICAgIGlmIChzZXJ2aWNl
TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgaWYgKHR5
cGUgPT0gUXRDcml0aWNhbE1zZykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBt
ZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIERvIG5vdGhpbmcKK30K
IAotI2lmICFTSE9XX0NSQVNIX1JFUE9SVEVSCi0gICAgLy8gSW5zdGFsbHMgc2lnbmFsIGhhbmRs
ZXJzIHRoYXQgZXhpdCBvbiBhIGNyYXNoIHNvIHRoYXQgQ3Jhc2hSZXBvcnRlciBkb2VzIG5vdCBz
aG93IHVwLgotICAgIHNpZ25hbChTSUdJTEwsIF9leGl0KTsKLSAgICBzaWduYWwoU0lHRlBFLCBf
ZXhpdCk7Ci0gICAgc2lnbmFsKFNJR0JVUywgX2V4aXQpOwotICAgIHNpZ25hbChTSUdTRUdWLCBf
ZXhpdCk7Ci0jZW5kaWYKK3N0YXRpYyBib29sIGluaXRpYWxpemVHdGsoKQoreworICAgIFFMaWJy
YXJ5IGd0a0xpYnJhcnkoUUxhdGluMVN0cmluZygibGliZ3RrLXgxMS0yLjAiKSwgMCk7CisgICAg
aWYgKCFndGtMaWJyYXJ5LmxvYWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHR5cGVk
ZWYgdm9pZCogKCpndGtfaW5pdF9wdHIpKHZvaWQqLCB2b2lkKik7CisgICAgZ3RrX2luaXRfcHRy
IGd0a0luaXQgPSByZWludGVycHJldF9jYXN0PGd0a19pbml0X3B0cj4oZ3RrTGlicmFyeS5yZXNv
bHZlKCJndGtfaW5pdCIpKTsKKyAgICBpZiAoIWd0a0luaXQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBndGtJbml0KDAsIDApOworICAgIHJldHVybiB0cnVlOworfQorCitpbnQgUGx1Z2lu
UHJvY2Vzc01haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIFFCeXRlQXJyYXkgc3Vw
cHJlc3NPdXRwdXQgPSBxZ2V0ZW52KCJRVF9XRUJLSVRfU1VQUFJFU1NfV0VCX1BST0NFU1NfT1VU
UFVUIik7CisgICAgaWYgKCFzdXBwcmVzc091dHB1dC5pc0VtcHR5KCkgJiYgc3VwcHJlc3NPdXRw
dXQgIT0gIjAiKQorICAgICAgICBxSW5zdGFsbE1zZ0hhbmRsZXIobWVzc2FnZUhhbmRsZXIpOwor
CisgICAgUUd1aUFwcGxpY2F0aW9uIGFwcChhcmdjLCBhcmd2KTsKKworICAgIC8vIFdvcmthcm91
bmQgdGhlIGlzc3VlIHRoYXQgc29tZSB2ZXJzaW9ucyBvZiBmbGFzaCBkb2VzIG5vdCBpbml0aWFs
aXplIEd0ayBwcm9wZXJseS4KKyAgICBpZiAoIWluaXRpYWxpemVHdGsoKSkKKyAgICAgICAgcmV0
dXJuIEVYSVRfRkFJTFVSRTsKIAogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAg
IFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKworICAgIGlmIChhcmdjIDw9IDEpCisgICAg
ICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisKKyAgICBpZiAoYXBwLmFyZ3VtZW50cygpLmF0KDEp
ID09IFFMYXRpbjFTdHJpbmcoIi1zY2FuUGx1Z2luIikpIHsKKyAgICAgICAgaWYgKGFyZ2MgIT0g
MykKKyAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAgIFN0cmluZyBwbHVn
aW5QYXRoKGFwcC5hcmd1bWVudHMoKS5hdCgyKSk7CisgICAgICAgIGlmICghTmV0c2NhcGVQbHVn
aW5Nb2R1bGU6OnNjYW5QbHVnaW4ocGx1Z2luUGF0aCkpCisgICAgICAgICAgICByZXR1cm4gRVhJ
VF9GQUlMVVJFOworICAgICAgICByZXR1cm4gRVhJVF9TVUNDRVNTOworICAgIH0KKwogICAgIFJ1
bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCisgICAgLy8gQ3JlYXRlIHRoZSBjb25u
ZWN0aW9uLgorICAgIGJvb2wgaXNOdW1iZXIgPSBmYWxzZTsKKyAgICBpbnQgaWRlbnRpZmllciA9
IGFwcC5hcmd1bWVudHMoKS5hdCgxKS50b0ludCgmaXNOdW1iZXIsIDEwKTsKKyAgICBpZiAoIWlz
TnVtYmVyKQorICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIFdlYktpdDo6UGx1Z2lu
UHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZShpZGVudGlmaWVyLCBSdW5Mb29wOjptYWluKCkp
OworCiAgICAgUnVuTG9vcDo6cnVuKCk7CiAKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luTW9kdWxlLmNwcAppbmRleCBlNWY4ZGMyYTNmMmVmYTdkZThiNDEwOTkzMjZhZTA0Zjk1ZjQ1
MTYzLi5jMTg3NGQ5OTY2YTY2ZGQ5MzJlZDJkZmY5MjA3Y2JmODlkMzI1YmE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1v
ZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCkBAIC0xOTcsMTAgKzE5Nyw2IEBAIGJvb2wgTmV0c2NhcGVQ
bHVnaW5Nb2R1bGU6OmxvYWQoKQogCiBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2Fk
KCkKIHsKLSNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKLSAgICBhcHBseVgxMVF1aXJrc0Jl
Zm9yZUxvYWQoKTsKLSNlbmRpZgotCiAgICAgbV9tb2R1bGUgPSBhZG9wdFB0cihuZXcgTW9kdWxl
KG1fcGx1Z2luUGF0aCkpOwogICAgIGlmICghbV9tb2R1bGUtPmxvYWQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmgKaW5kZXggZjgwYTBhMWEwYTMyYzA3
MjFjZTZhYmZiNWZiZGQ1YjQwZDhhOTZiMi4uZTk2YmQyZDA0MmJjZWE0NTllY2IxYTRkZjg2MjZj
ZTYzNjgxMTk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oCkBAIC0zNSw2ICszNSw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBSYXdQbHVnaW5NZXRhRGF0YTsKKwogY2xh
c3MgTmV0c2NhcGVQbHVnaW5Nb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXRzY2FwZVBsdWdp
bk1vZHVsZT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2lu
TW9kdWxlPiBnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwpAQCAtNjEsMTUg
KzYzLDE3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBjcmVhdGVQbHVnaW5NSU1FVHlwZXNQ
cmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwogI2VuZGlmCiAKKyNpZiBQTFVH
SU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICBzdGF0aWMgYm9vbCBzY2FuUGx1Z2luKGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBOZXRz
Y2FwZVBsdWdpbk1vZHVsZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwogCiAgICAgdm9pZCBk
ZXRlcm1pbmVRdWlya3MoKTsKIAogI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgIHZv
aWQgYXBwbHlYMTFRdWlya3NCZWZvcmVMb2FkKCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0TUlNRURl
c2NyaXB0aW9uKGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uLCBQbHVnaW5Nb2R1bGVJbmZv
Jik7Ci0gICAgYm9vbCBnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKFBsdWdpbk1vZHVsZUlu
Zm8mKTsKKyAgICBib29sIGdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4oUmF3UGx1Z2luTWV0
YURhdGEmKTsKICNlbmRpZgogCiAgICAgYm9vbCB0cnlHZXRTaXRlc1dpdGhEYXRhKFZlY3RvcjxT
dHJpbmc+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcAppbmRl
eCA4NjY4MzNjNjQ2MTFkMTJkZDdlMDUxYzdmMDliNTRhZTg4ZjU5MzY5Li5kMmUzZWM5NGFkMWE2
Zjc2MDViMDM5YjY3MzI1ZjhhMTk3OTBjZjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBs
dWdpbk1vZHVsZVgxMS5jcHAKQEAgLTI4LDEzICsyOCwxMCBAQAogCiAjaW5jbHVkZSAiTmV0c2Nh
cGVQbHVnaW5Nb2R1bGUuaCIKIAorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5oIgogI2lu
Y2x1ZGUgIk5ldHNjYXBlQnJvd3NlckZ1bmNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+Ci0KLSNpZiBQTEFURk9STShRVCkKLSNpbmNsdWRlIDxRTGlicmFyeT4KLSNlbmRpZgot
CisjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHN5cy9z
dGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CkBAIC00NCw2MCArNDEsMTMgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBTdGRvdXRE
ZXZOdWxsUmVkaXJlY3RvciB7Ci1wdWJsaWM6Ci0gICAgU3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3Io
KTsKLSAgICB+U3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3IoKTsKLQotcHJpdmF0ZToKLSAgICBpbnQg
bV9zYXZlZFN0ZG91dDsKLX07Ci0KLVN0ZG91dERldk51bGxSZWRpcmVjdG9yOjpTdGRvdXREZXZO
dWxsUmVkaXJlY3RvcigpCi0gICAgOiBtX3NhdmVkU3Rkb3V0KC0xKQorc3RhdGljIHZvaWQgcGFy
c2VNSU1FRGVzY3JpcHRpb24oY29uc3QgU3RyaW5nJiBtaW1lRGVzY3JpcHRpb24sIFZlY3RvcjxN
aW1lQ2xhc3NJbmZvPiYgcmVzdWx0KQogewotICAgIGludCBuZXdTdGRvdXQgPSBvcGVuKCIvZGV2
L251bGwiLCBPX1dST05MWSk7Ci0gICAgaWYgKG5ld1N0ZG91dCA9PSAtMSkKLSAgICAgICAgcmV0
dXJuOwotICAgIG1fc2F2ZWRTdGRvdXQgPSBkdXAoU1RET1VUX0ZJTEVOTyk7Ci0gICAgZHVwMihu
ZXdTdGRvdXQsIFNURE9VVF9GSUxFTk8pOwotfQotCi1TdGRvdXREZXZOdWxsUmVkaXJlY3Rvcjo6
flN0ZG91dERldk51bGxSZWRpcmVjdG9yKCkKLXsKLSAgICBpZiAobV9zYXZlZFN0ZG91dCAhPSAt
MSkKLSAgICAgICAgZHVwMihtX3NhdmVkU3Rkb3V0LCBTVERPVVRfRklMRU5PKTsKLX0KLQotI2lm
IFBMQVRGT1JNKFFUKQotc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUdUSygpCi17Ci0gICAgUUxpYnJh
cnkgbGlicmFyeShRTGF0aW4xU3RyaW5nKCJsaWJndGsteDExLTIuMC5zby4wIikpOwotICAgIGlm
IChsaWJyYXJ5LmxvYWQoKSkgewotICAgICAgICB0eXBlZGVmIHZvaWQgKigqZ3RrX2luaXRfY2hl
Y2tfcHRyKShpbnQqLCBjaGFyKioqKTsKLSAgICAgICAgZ3RrX2luaXRfY2hlY2tfcHRyIGd0a0lu
aXRDaGVjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8Z3RrX2luaXRfY2hlY2tfcHRyPihsaWJyYXJ5LnJl
c29sdmUoImd0a19pbml0X2NoZWNrIikpOwotICAgICAgICAvLyBOT1RFOiBXZSdyZSB1c2luZyBn
dGtfaW5pdF9jaGVjaygpIHNpbmNlIGd0a19pbml0KCkgY2FsbHMgZXhpdCgpIG9uIGZhaWx1cmUu
Ci0gICAgICAgIGlmIChndGtJbml0Q2hlY2spCi0gICAgICAgICAgICAodm9pZCkgZ3RrSW5pdENo
ZWNrKDAsIDApOwotICAgIH0KLX0KLSNlbmRpZgorICAgIEFTU0VSVF9BUkcocmVzdWx0LCByZXN1
bHQuaXNFbXB0eSgpKTsKIAotdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6YXBwbHlYMTFRdWly
a3NCZWZvcmVMb2FkKCkKLXsKLSNpZiBQTEFURk9STShRVCkKLSAgICBpZiAobV9wbHVnaW5QYXRo
LmNvbnRhaW5zKCJucHdyYXBwZXIiKSB8fCBtX3BsdWdpblBhdGguY29udGFpbnMoImZsYXNocGxh
eWVyIikpIHsKLSAgICAgICAgaW5pdGlhbGl6ZUdUSygpOwotICAgICAgICBtX3BsdWdpblF1aXJr
cy5hZGQoUGx1Z2luUXVpcmtzOjpSZXF1aXJlc0dUS1Rvb2xLaXQpOwotICAgIH0KLSNlbmRpZgot
fQotCi12b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpzZXRNSU1FRGVzY3JpcHRpb24oY29uc3Qg
U3RyaW5nJiBtaW1lRGVzY3JpcHRpb24sIFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKLXsKICAg
ICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKICAgICBtaW1lRGVzY3JpcHRpb24ubG93ZXIoKS5zcGxp
dChVQ2hhcignOycpLCBmYWxzZSwgdHlwZXMpOwotICAgIHBsdWdpbi5pbmZvLm1pbWVzLnJlc2Vy
dmVDYXBhY2l0eSh0eXBlcy5zaXplKCkpOworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KHR5cGVzLnNpemUoKSk7CiAKICAgICBzaXplX3QgbWltZUluZm9Db3VudCA9IDA7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB0eXBlcy5zaXplKCk7ICsraSkgewpAQCAtMTA2LDggKzU2
LDggQEAgdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2V0TUlNRURlc2NyaXB0aW9uKGNvbnN0
IFN0cmluZyYgbWltZURlc2NyaXB0aW9uLCBQbHUKICAgICAgICAgaWYgKG1pbWVUeXBlUGFydHMu
c2l6ZSgpIDw9IDApCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBwbHVnaW4uaW5m
by5taW1lcy51bmNoZWNrZWRBcHBlbmQoTWltZUNsYXNzSW5mbygpKTsKLSAgICAgICAgTWltZUNs
YXNzSW5mbyYgbWltZUluZm8gPSBwbHVnaW4uaW5mby5taW1lc1ttaW1lSW5mb0NvdW50KytdOwor
ICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKE1pbWVDbGFzc0luZm8oKSk7CisgICAgICAg
IE1pbWVDbGFzc0luZm8mIG1pbWVJbmZvID0gcmVzdWx0W21pbWVJbmZvQ291bnQrK107CiAgICAg
ICAgIG1pbWVJbmZvLnR5cGUgPSBtaW1lVHlwZVBhcnRzWzBdOwogCiAgICAgICAgIGlmIChtaW1l
VHlwZVBhcnRzLnNpemUoKSA+IDEpCkBAIC0xMTgsMTMgKzY4LDEwIEBAIHZvaWQgTmV0c2NhcGVQ
bHVnaW5Nb2R1bGU6OnNldE1JTUVEZXNjcmlwdGlvbihjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlw
dGlvbiwgUGx1CiAgICAgfQogfQogCi1ib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVn
aW5JbmZvRm9yTG9hZGVkUGx1Z2luKFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKK2Jvb2wgTmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm9Gb3JMb2FkZWRQbHVnaW4oUmF3UGx1Z2lu
TWV0YURhdGEmIG1ldGFEYXRhKQogewogICAgIEFTU0VSVChtX2lzSW5pdGlhbGl6ZWQpOwogCi0g
ICAgcGx1Z2luLnBhdGggPSBtX3BsdWdpblBhdGg7Ci0gICAgcGx1Z2luLmluZm8uZmlsZSA9IHBh
dGhHZXRGaWxlTmFtZShtX3BsdWdpblBhdGgpOwotCiAgICAgTW9kdWxlKiBtb2R1bGUgPSBtX21v
ZHVsZS5nZXQoKTsKICAgICBOUFBfR2V0VmFsdWVQcm9jUHRyIE5QUF9HZXRWYWx1ZSA9IG1vZHVs
ZS0+ZnVuY3Rpb25Qb2ludGVyPE5QUF9HZXRWYWx1ZVByb2NQdHI+KCJOUF9HZXRWYWx1ZSIpOwog
ICAgIGlmICghTlBQX0dldFZhbHVlKQpAQCAtMTM3LDQ3ICs4NCw0NSBAQCBib29sIE5ldHNjYXBl
UGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKFBsdWdpbk1vZHVsZUlu
Zm8mIHBsdWdpbgogICAgIGNoYXIqIGJ1ZmZlcjsKICAgICBOUEVycm9yIGVycm9yID0gTlBQX0dl
dFZhbHVlKDAsIE5QUFZwbHVnaW5OYW1lU3RyaW5nLCAmYnVmZmVyKTsKICAgICBpZiAoZXJyb3Ig
PT0gTlBFUlJfTk9fRVJST1IpCi0gICAgICAgIHBsdWdpbi5pbmZvLm5hbWUgPSBTdHJpbmc6OmZy
b21VVEY4KGJ1ZmZlcik7CisgICAgICAgIG1ldGFEYXRhLm5hbWUgPSBTdHJpbmc6OmZyb21VVEY4
KGJ1ZmZlcik7CiAKICAgICBlcnJvciA9IE5QUF9HZXRWYWx1ZSgwLCBOUFBWcGx1Z2luRGVzY3Jp
cHRpb25TdHJpbmcsICZidWZmZXIpOwogICAgIGlmIChlcnJvciA9PSBOUEVSUl9OT19FUlJPUikK
LSAgICAgICAgcGx1Z2luLmluZm8uZGVzYyA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyKTsKKyAg
ICAgICAgbWV0YURhdGEuZGVzY3JpcHRpb24gPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlcik7CiAK
ICAgICBTdHJpbmcgbWltZURlc2NyaXB0aW9uID0gU3RyaW5nOjpmcm9tVVRGOChOUF9HZXRNSU1F
RGVzY3JpcHRpb24oKSk7CiAgICAgaWYgKG1pbWVEZXNjcmlwdGlvbi5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc2V0TUlNRURlc2NyaXB0aW9uKG1pbWVEZXNjcmlwdGlv
biwgcGx1Z2luKTsKKyAgICBtZXRhRGF0YS5taW1lRGVzY3JpcHRpb24gPSBtaW1lRGVzY3JpcHRp
b247CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KKwogYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6
Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpbk1vZHVsZUluZm8m
IHBsdWdpbikKIHsKLSAgICAvLyBUZW1wYXJhcmlseSBzdXBwcmVzcyBzdGRvdXQgaW4gdGhpcyBm
dW5jdGlvbiBhcyBwbHVnaW5zIHdpbGwgYmUgbG9hZGVkIGFuZCBzaHV0ZG93biBhbmQgZGVidWcg
aW5mbwotICAgIC8vIGlzIGxlYWtlZCB0byBsYXlvdXQgdGVzdCBvdXRwdXQuCi0gICAgU3Rkb3V0
RGV2TnVsbFJlZGlyZWN0b3Igc3Rkb3V0RGV2TnVsbFJlZGlyZWN0b3I7Ci0KLSAgICAvLyBXZSBh
cmUgbG9hZGluZyB0aGUgcGx1Z2luIGhlcmUgc2luY2UgaXQgZG9lcyBub3Qgc2VlbSB0byBiZSBh
IHN0YW5kYXJkaXplZCB3YXkgdG8KLSAgICAvLyBnZXQgdGhlIG5lZWRlZCBpbmZvcm1hdGlvbnMg
ZnJvbSBhIFVOSVggcGx1Z2luIHdpdGhvdXQgbG9hZGluZyBpdC4KLSAgICBSZWZQdHI8TmV0c2Nh
cGVQbHVnaW5Nb2R1bGU+IHBsdWdpbk1vZHVsZSA9IE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRP
ckNyZWF0ZShwbHVnaW5QYXRoKTsKLSAgICBpZiAoIXBsdWdpbk1vZHVsZSkKKyAgICBSYXdQbHVn
aW5NZXRhRGF0YSBtZXRhRGF0YTsKKyAgICBpZiAoIVBsdWdpblByb2Nlc3NQcm94eTo6c2NhblBs
dWdpbihwbHVnaW5QYXRoLCBtZXRhRGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHBsdWdpbk1vZHVsZS0+aW5jcmVtZW50TG9hZENvdW50KCk7Ci0gICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHBsdWdpbk1vZHVsZS0+Z2V0UGx1Z2luSW5mb0ZvckxvYWRlZFBsdWdpbihwbHVnaW4pOwot
ICAgIHBsdWdpbk1vZHVsZS0+ZGVjcmVtZW50TG9hZENvdW50KCk7CisgICAgcGx1Z2luLnBhdGgg
PSBwbHVnaW5QYXRoOworICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBwYXRoR2V0RmlsZU5hbWUocGx1
Z2luUGF0aCk7CisgICAgcGx1Z2luLmluZm8ubmFtZSA9IG1ldGFEYXRhLm5hbWU7CisgICAgcGx1
Z2luLmluZm8uZGVzYyA9IG1ldGFEYXRhLmRlc2NyaXB0aW9uOworICAgIHBhcnNlTUlNRURlc2Ny
aXB0aW9uKG1ldGFEYXRhLm1pbWVEZXNjcmlwdGlvbiwgcGx1Z2luLmluZm8ubWltZXMpOwogCi0g
ICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIE5ldHNj
YXBlUGx1Z2luTW9kdWxlOjpkZXRlcm1pbmVRdWlya3MoKQogewogI2lmIENQVShYODZfNjQpCi0g
ICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW47Ci0gICAgaWYgKCFnZXRQbHVnaW5JbmZvRm9yTG9h
ZGVkUGx1Z2luKHBsdWdpbikpCisgICAgUmF3UGx1Z2luTWV0YURhdGEgbWV0YURhdGE7CisgICAg
aWYgKCFnZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKG1ldGFEYXRhKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgVmVjdG9yPE1pbWVDbGFzc0luZm8+IG1pbWVUeXBlcyA9IHBsdWdpbi5pbmZv
Lm1pbWVzOworICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtaW1lVHlwZXM7CisgICAgcGFyc2VN
SU1FRGVzY3JpcHRpb24obWV0YURhdGEubWltZURlc2NyaXB0aW9uLCBtaW1lVHlwZXMpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWltZVR5cGVzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGlmIChtaW1lVHlwZXNbaV0udHlwZSA9PSAiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gi
KSB7CiAgICAgICAgICAgICBtX3BsdWdpblF1aXJrcy5hZGQoUGx1Z2luUXVpcmtzOjpJZ25vcmVS
aWdodENsaWNrSW5XaW5kb3dsZXNzTW9kZSk7CkBAIC0xODcsNiArMTMyLDY1IEBAIHZvaWQgTmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OmRldGVybWluZVF1aXJrcygpCiAjZW5kaWYKIH0KIAorc3RhdGlj
IFN0cmluZyB0cnVuY2F0ZVRvU2luZ2xlTGluZShjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAg
ICBBU1NFUlRfQVJHKHN0cmluZywgIXN0cmluZy5pczhCaXQoKSk7CisKKyAgICB1bnNpZ25lZCBv
bGRMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgVUNoYXIqIGJ1ZmZlcjsKKyAgICBTdHJp
bmcgc3RyaW5nQnVmZmVyKFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQob2xkTGVuZ3Ro
ICsgMSwgYnVmZmVyKSk7CisKKyAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSAwOworICAgIGZvciAo
Y29uc3QgVUNoYXIqIGMgPSBzdHJpbmcuY2hhcmFjdGVyczE2KCk7IGMgPCBzdHJpbmcuY2hhcmFj
dGVyczE2KCkgKyBvbGRMZW5ndGg7ICsrYykgeworICAgICAgICBpZiAoKmMgIT0gVUNoYXIoJ1xu
JykpCisgICAgICAgICAgICBidWZmZXJbbmV3TGVuZ3RoKytdID0gKmM7CisgICAgfQorICAgIGJ1
ZmZlcltuZXdMZW5ndGgrK10gPSBVQ2hhcignXG4nKTsKKworICAgIGlmIChuZXdMZW5ndGggPT0g
b2xkTGVuZ3RoICsgMSkKKyAgICAgICAgcmV0dXJuIHN0cmluZ0J1ZmZlcjsKKyAgICByZXR1cm4g
U3RyaW5nKHN0cmluZ0J1ZmZlci5jaGFyYWN0ZXJzMTYoKSwgbmV3TGVuZ3RoKTsKK30KKworYm9v
bCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2NhblBsdWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBh
dGgpCit7CisgICAgLy8gV2UgYXJlIGxvYWRpbmcgdGhlIHBsdWdpbiBoZXJlIHNpbmNlIGl0IGRv
ZXMgbm90IHNlZW0gdG8gYmUgYSBzdGFuZGFyZGl6ZWQgd2F5IHRvCisgICAgLy8gZ2V0IHRoZSBu
ZWVkZWQgaW5mb3JtYXRpb25zIGZyb20gYSBVTklYIHBsdWdpbiB3aXRob3V0IGxvYWRpbmcgaXQu
CisgICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBwbHVnaW5Nb2R1bGUgPSBOZXRzY2Fw
ZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUocGx1Z2luUGF0aCk7CisgICAgaWYgKCFwbHVnaW5N
b2R1bGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHBsdWdpbk1vZHVsZS0+aW5jcmVt
ZW50TG9hZENvdW50KCk7CisgICAgUmF3UGx1Z2luTWV0YURhdGEgbWV0YURhdGE7CisgICAgYm9v
bCBzdWNjZXNzID0gcGx1Z2luTW9kdWxlLT5nZXRQbHVnaW5JbmZvRm9yTG9hZGVkUGx1Z2luKG1l
dGFEYXRhKTsKKyAgICBwbHVnaW5Nb2R1bGUtPmRlY3JlbWVudExvYWRDb3VudCgpOworCisgICAg
aWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBXcml0ZSBkYXRh
IHRvIHN0YW5kYXJkIG91dHB1dCBmb3IgdGhlIFVJIHByb2Nlc3MuCisgICAgU3RyaW5nIG91dHB1
dFszXSA9IHsKKyAgICAgICAgdHJ1bmNhdGVUb1NpbmdsZUxpbmUobWV0YURhdGEubmFtZSksCisg
ICAgICAgIHRydW5jYXRlVG9TaW5nbGVMaW5lKG1ldGFEYXRhLmRlc2NyaXB0aW9uKSwKKyAgICAg
ICAgdHJ1bmNhdGVUb1NpbmdsZUxpbmUobWV0YURhdGEubWltZURlc2NyaXB0aW9uKQorICAgIH07
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDM7ICsraSkgeworICAgICAgICBjb25zdCBT
dHJpbmcmIGxpbmUgPSBvdXRwdXRbaV07CisgICAgICAgIGNvbnN0IGNoYXIqIGN1cnJlbnQgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihsaW5lLmNoYXJhY3RlcnMxNigpKTsKKyAgICAg
ICAgY29uc3QgY2hhciogZW5kID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obGluZS5j
aGFyYWN0ZXJzMTYoKSkgKyAobGluZS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikpOworICAgICAg
ICB3aGlsZSAoY3VycmVudCA8IGVuZCkgeworICAgICAgICAgICAgaW50IHJlc3VsdDsKKyAgICAg
ICAgICAgIHdoaWxlICgocmVzdWx0ID0gZnB1dGMoKmN1cnJlbnQsIHN0ZG91dCkpID09IEVPRiAm
JiBlcnJubyA9PSBFSU5UUikgeyB9CisgICAgICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEVPRik7
CisgICAgICAgICAgICArK2N1cnJlbnQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmZmx1c2go
c3Rkb3V0KTsKKworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYmYzMjAxODExMDU1
ZTM4NGFiZWRiNmQzZGQ1ZGFmMWM3Yjc0ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgKQEAgLTAsMCArMSwzOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBVbml2ZXJzaXR5IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFVO
SVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVU5J
VkVSU0lUWSBPRiBTWkVHRUQgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZm5k
ZWYgUHJvY2Vzc0V4ZWN1dGFibGVQYXRoX2gKKyNkZWZpbmUgUHJvY2Vzc0V4ZWN1dGFibGVQYXRo
X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1N0cmluZyBleGVjdXRhYmxlUGF0aE9mV2ViUHJv
Y2VzcygpOworU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZQbHVnaW5Qcm9jZXNzKCk7CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aEd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUxNTAyOWMzNzIwYTNhMzA1NDYwNDE0MTJh
ZWNlNjg2MGVjYTliYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9n
dGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcApAQCAtMCwwICsxLDc5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBv
cnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIE1PVE9ST0xBIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIE1PVE9ST0xBIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dsaWJV
dGlsaXRpZXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjb25zdCBjaGFyKiBnV2ViS2l0V2ViUHJvY2Vzc05hbWUgPSAiV2ViS2l0V2ViUHJv
Y2VzcyI7Citjb25zdCBjaGFyKiBnV2ViS2l0UGx1Z2luUHJvY2Vzc05hbWUgPSAiV2ViS2l0UGx1
Z2luUHJvY2VzcyI7CisKK3N0YXRpYyBTdHJpbmcgZmluZFdlYktpdFByb2Nlc3MoY29uc3QgY2hh
ciogcHJvY2Vzc05hbWUpCit7CisgICAgY29uc3QgY2hhciogZXhlY0RpcmVjdG9yeSA9IGdfZ2V0
ZW52KCJXRUJLSVRfRVhFQ19QQVRIIik7CisgICAgaWYgKGV4ZWNEaXJlY3RvcnkpIHsKKyAgICAg
ICAgU3RyaW5nIHByb2Nlc3NQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZpbGVuYW1l
VG9TdHJpbmcoZXhlY0RpcmVjdG9yeSksIHByb2Nlc3NOYW1lKTsKKyAgICAgICAgaWYgKGZpbGVF
eGlzdHMocHJvY2Vzc1BhdGgpKQorICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NQYXRoOworICAg
IH0KKworICAgIHN0YXRpYyBib29sIGdvdEV4ZWN1dGFibGVQYXRoID0gZmFsc2U7CisgICAgc3Rh
dGljIFN0cmluZyBleGVjdXRhYmxlUGF0aDsKKyAgICBpZiAoIWdvdEV4ZWN1dGFibGVQYXRoKSB7
CisgICAgICAgIGdvdEV4ZWN1dGFibGVQYXRoID0gdHJ1ZTsKKworICAgICAgICBDU3RyaW5nIGV4
ZWN1dGFibGVGaWxlID0gZ2V0Q3VycmVudEV4ZWN1dGFibGVQYXRoKCk7CisgICAgICAgIGlmICgh
ZXhlY3V0YWJsZUZpbGUuaXNOdWxsKCkpCisgICAgICAgICAgICBleGVjdXRhYmxlUGF0aCA9IGRp
cmVjdG9yeU5hbWUoZmlsZW5hbWVUb1N0cmluZyhleGVjdXRhYmxlRmlsZS5kYXRhKCkpKTsKKyAg
ICB9CisKKyAgICBpZiAoIWV4ZWN1dGFibGVQYXRoLmlzTnVsbCgpKSB7CisgICAgICAgIFN0cmlu
ZyBwcm9jZXNzUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChleGVjdXRhYmxlUGF0aCwg
cHJvY2Vzc05hbWUpOworICAgICAgICBpZiAoZmlsZUV4aXN0cyhwcm9jZXNzUGF0aCkpCisgICAg
ICAgICAgICByZXR1cm4gcHJvY2Vzc1BhdGg7CisgICAgfQorCisgICAgcmV0dXJuIHBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChmaWxlbmFtZVRvU3RyaW5nKExJQkVYRUNESVIpLCBwcm9jZXNzTmFt
ZSk7Cit9CisKK1N0cmluZyBleGVjdXRhYmxlUGF0aE9mV2ViUHJvY2VzcygpCit7CisgICAgcmV0
dXJuIGZpbmRXZWJLaXRQcm9jZXNzKGdXZWJLaXRXZWJQcm9jZXNzTmFtZSk7Cit9CisKK1N0cmlu
ZyBleGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2VzcygpCit7CisgICAgcmV0dXJuIGZpbmRXZWJL
aXRQcm9jZXNzKGdXZWJLaXRQbHVnaW5Qcm9jZXNzTmFtZSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9Qcm9jZXNzRXhlY3V0
YWJsZVBhdGhRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI0ZjgyNDlhZGUxMDVmMWJjMGY4MjBmYTkyYTUz
NTY0N2U5MWI2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9Q
cm9jZXNzRXhlY3V0YWJsZVBhdGhRdC5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcm9jZXNzRXhlY3V0
YWJsZVBhdGguaCIKKworI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UURp
cj4KKyNpbmNsdWRlIDxRRmlsZT4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBTdHJp
bmcgZXhlY3V0YWJsZVBhdGgoUUxhdGluMVN0cmluZyBiYXNlTmFtZSkKK3sKKyAgICBRU3RyaW5n
IGV4cGVjdGVkUGF0aCA9IFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uRGlyUGF0aCgpICsg
UURpcjo6c2VwYXJhdG9yKCkgKyBiYXNlTmFtZTsKKyAgICBpZiAoUUZpbGU6OmV4aXN0cyhleHBl
Y3RlZFBhdGgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKGV4cGVjdGVkUGF0aCk7CisgICAgcmV0
dXJuIFN0cmluZyhRU3RyaW5nKGJhc2VOYW1lKSk7Cit9CisKK1N0cmluZyBleGVjdXRhYmxlUGF0
aE9mV2ViUHJvY2VzcygpCit7CisgICAgcmV0dXJuIGV4ZWN1dGFibGVQYXRoKFFTdHJpbmdMaXRl
cmFsKCJRdFdlYlByb2Nlc3MiKSk7Cit9CisKK1N0cmluZyBleGVjdXRhYmxlUGF0aE9mUGx1Z2lu
UHJvY2VzcygpCit7CisgICAgcmV0dXJuIGV4ZWN1dGFibGVQYXRoKFFTdHJpbmdMaXRlcmFsKCJR
dFdlYlBsdWdpblByb2Nlc3MiKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAKaW5kZXggMGM4YmUw
NzJhNDYyZDYzZmMwNjI3MDhjMDFlYzVhNmZjMjFmZWQzYi4uNzc4YmNmY2MxY2QyYzNkMjU5MGNi
OGZmMzQxZjA4ZGM5ODc5MGNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0
L1NoYXJlYWJsZUJpdG1hcFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvU2hh
cmVhYmxlQml0bWFwUXQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDxRSW1hZ2U+
CiAjaW5jbHVkZSA8UVBhaW50ZXI+CisjaW5jbHVkZSA8UXRHbG9iYWw+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9CaXRtYXBJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtNzEsOCArNzIsMTMgQEAg
dm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgSW50UG9pbnQmIGRzdFBvaW50LAogICAgIHBhaW50ZXItPmRyYXdJbWFnZShkc3RQb2ludCwg
aW1hZ2UsIFFSZWN0KHNyY1JlY3QpKTsKIH0KIAotdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgLypjb250ZXh0Ki8sIGZsb2F0IC8qc2NhbGVGYWN0b3IqLywgY29u
c3QgSW50UG9pbnQmIC8qZHN0UG9pbnQqLywgY29uc3QgSW50UmVjdCYgLypzcmNSZWN0Ki8pCit2
b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBmbG9h
dCBzY2FsZUZhY3RvciwgY29uc3QgSW50UG9pbnQmIGRzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBz
cmNSZWN0KQogeworICAgIGlmIChxRnV6enlDb21wYXJlKHNjYWxlRmFjdG9yLCAxKSkgeworICAg
ICAgICBwYWludChjb250ZXh0LCBkc3RQb2ludCwgc3JjUmVjdCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NDY2Mz4uCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IGMw
MDFiZTlhNzdhNzMzNWI0NDUwZTE5ZDA0YWEzZGM4MzUwYjRlZDIuLmJlMzJmZGUxNWY2MGQ0ZTQw
OGRhZjBlNDFjYjg1ZDk0MTc5OGRkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Rhcmdl
dC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMzQsNiArMzQsNyBAQCBI
RUFERVJTICs9IFwKICAgICBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBcCiAgICAgUGxhdGZvcm0v
V29ya1F1ZXVlLmggXAogICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lmgg
XAorICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmggXAogICAgIFBs
dWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oIFwKICAgICBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nl
c3NDb25uZWN0aW9uLmggXAogICAgIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaCBcCkBAIC04MCw2ICs4
MSw3IEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJlZC9PcmlnaW5BbmREYXRhYmFzZXMuaCBcCiAg
ICAgU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5oIFwKICAgICBTaGFyZWQvUHJpbnRJbmZv
LmggXAorICAgIFNoYXJlZC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGguaCBcCiAgICAgU2hhcmVkL1Nh
bWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggXAogICAgIFNoYXJlZC9TZWN1cml0eU9yaWdpbkRh
dGEuaCBcCiAgICAgU2hhcmVkL1Nlc3Npb25TdGF0ZS5oIFwKQEAgLTM3OSw2ICszODEsNyBAQCBT
T1VSQ0VTICs9IFwKICAgICBQbGF0Zm9ybS9Xb3JrUXVldWUuY3BwIFwKICAgICBQbGF0Zm9ybS9x
dC9Nb2R1bGVRdC5jcHAgXAogICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
LmNwcCBcCisgICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuY3BwIFwK
ICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwIFwKICAgICBQbHVnaW5Qcm9jZXNz
L1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBcCiAgICAgUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5D
b250cm9sbGVyUHJveHlRdC5jcHAgXApAQCAtNDY5LDYgKzQ3Miw3IEBAIFNPVVJDRVMgKz0gXAog
ICAgIFNoYXJlZC9xdC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50UXQuY3BwIFwKICAgICBTaGFyZWQv
cXQvTmF0aXZlV2ViTW91c2VFdmVudFF0LmNwcCBcCiAgICAgU2hhcmVkL3F0L05hdGl2ZVdlYldo
ZWVsRXZlbnRRdC5jcHAgXAorICAgIFNoYXJlZC9xdC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhRdC5j
cHAgXAogICAgIFNoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAgXAogICAgIFNo
YXJlZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5jcHAgXAogICAgIFNoYXJlZC9xdC9RdE5ldHdvcmtS
ZXBseURhdGEuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVu
Y2hlci9Qcm9jZXNzTGF1bmNoZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuaAppbmRleCAwOWM1NTg5ZjM4ODgxNTBlNTkxY2I5ZjNlMDcxMzg0
NTQyYzc5NzJmLi5iYzFmODY3ZjNjMjkxNTUyMzYzMGM2NzYxMWYwNWNlOTczZGVkNTNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVy
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hl
ci5oCkBAIC02OCw3ICs2OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGUoKTsKIAog
ICAgIHN0YXRpYyBib29sIGdldFByb2Nlc3NUeXBlRnJvbVN0cmluZyhjb25zdCBjaGFyKiwgUHJv
Y2Vzc1R5cGUmKTsKLQogcHJpdmF0ZToKICAgICBQcm9jZXNzTGF1bmNoZXIoQ2xpZW50KiwgY29u
c3QgTGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNw
cAppbmRleCA5NGNhZDVmYzQ0ODIwZGExOThkYTg3MWNjYmQ2ZmE0N2U0Mzg5YjJiLi44ZmI2MTll
Y2Q0NmI2NzdjZjU0YTNjZDg0NzQ0YjZmYzYzNTM0MTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsu
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgpAQCAtNTIsOSArNTMs
NiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNv
bnN0IGNoYXIqIGdXZWJLaXRXZWJQcm9jZXNzTmFtZSA9ICJXZWJLaXRXZWJQcm9jZXNzIjsKLWNv
bnN0IGNoYXIqIGdXZWJLaXRQbHVnaW5Qcm9jZXNzTmFtZSA9ICJXZWJLaXRQbHVnaW5Qcm9jZXNz
IjsKLQogc3RhdGljIHZvaWQgY2hpbGRTZXR1cEZ1bmN0aW9uKGdwb2ludGVyIHVzZXJEYXRhKQog
ewogICAgIGludCBzb2NrZXQgPSBHUE9JTlRFUl9UT19JTlQodXNlckRhdGEpOwpAQCAtNzcsMzQg
Kzc1LDYgQEAgc3RhdGljIHZvaWQgY2hpbGRGaW5pc2hlZEZ1bmN0aW9uKEdQaWQsIGdpbnQgc3Rh
dHVzLCBncG9pbnRlciB1c2VyRGF0YSkKICAgICBjbG9zZShHUE9JTlRFUl9UT19JTlQodXNlckRh
dGEpKTsKIH0KIAotc3RhdGljIENTdHJpbmcgZmluZFdlYktpdFByb2Nlc3MoY29uc3QgY2hhciog
cHJvY2Vzc05hbWUpCi17Ci0gICAgY29uc3QgY2hhciogZXhlY0RpcmVjdG9yeSA9IGdfZ2V0ZW52
KCJXRUJLSVRfRVhFQ19QQVRIIik7Ci0gICAgaWYgKGV4ZWNEaXJlY3RvcnkpIHsKLSAgICAgICAg
U3RyaW5nIHByb2Nlc3NQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZpbGVuYW1lVG9T
dHJpbmcoZXhlY0RpcmVjdG9yeSksIHByb2Nlc3NOYW1lKTsKLSAgICAgICAgaWYgKGZpbGVFeGlz
dHMocHJvY2Vzc1BhdGgpKQotICAgICAgICAgICAgcmV0dXJuIGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwcm9jZXNzUGF0aCk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgZ290RXhlY3V0YWJs
ZVBhdGggPSBmYWxzZTsKLSAgICBzdGF0aWMgU3RyaW5nIGV4ZWN1dGFibGVQYXRoOwotICAgIGlm
ICghZ290RXhlY3V0YWJsZVBhdGgpIHsKLSAgICAgICAgZ290RXhlY3V0YWJsZVBhdGggPSB0cnVl
OwotCi0gICAgICAgIENTdHJpbmcgZXhlY3V0YWJsZUZpbGUgPSBnZXRDdXJyZW50RXhlY3V0YWJs
ZVBhdGgoKTsKLSAgICAgICAgaWYgKCFleGVjdXRhYmxlRmlsZS5pc051bGwoKSkKLSAgICAgICAg
ICAgIGV4ZWN1dGFibGVQYXRoID0gZGlyZWN0b3J5TmFtZShmaWxlbmFtZVRvU3RyaW5nKGV4ZWN1
dGFibGVGaWxlLmRhdGEoKSkpOwotICAgIH0KLQotICAgIGlmICghZXhlY3V0YWJsZVBhdGguaXNO
dWxsKCkpIHsKLSAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGV4ZWN1dGFibGVQYXRoLCBwcm9jZXNzTmFtZSk7Ci0gICAgICAgIGlmIChmaWxlRXhp
c3RzKHByb2Nlc3NQYXRoKSkKLSAgICAgICAgICAgIHJldHVybiBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocHJvY2Vzc1BhdGgpOwotICAgIH0KLQotICAgIHJldHVybiBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZpbGVuYW1lVG9TdHJpbmcoTElCRVhF
Q0RJUiksIHByb2Nlc3NOYW1lKSk7Ci19Ci0KIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQ
cm9jZXNzKCkKIHsKICAgICBHUGlkIHBpZCA9IDA7CkBAIC0xMTYsNyArODYsOSBAQCB2b2lkIFBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBDU3RyaW5nIGJpbmFyeVBhdGggPSBmaW5kV2ViS2l0UHJvY2VzcyhtX2xhdW5jaE9wdGlv
bnMucHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc0xhdW5jaGVyOjpXZWJQcm9jZXNzID8gZ1dlYktpdFdl
YlByb2Nlc3NOYW1lIDogZ1dlYktpdFBsdWdpblByb2Nlc3NOYW1lKTsKKyAgICBTdHJpbmcgZXhl
Y3V0YWJsZVBhdGggPSBtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gV2ViUHJvY2VzcyA/
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nlc3Mo
KSA6IGV4ZWN1dGFibGVQYXRoT2ZQbHVnaW5Qcm9jZXNzKCk7CisgICAgQ1N0cmluZyBiaW5hcnlQ
YXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRoKTsKICAgICBHT3du
UHRyPGdjaGFyPiBzb2NrZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIHNvY2tldHNbMF0pKTsKICAg
ICBjaGFyKiBhcmd2WzNdOwogICAgIGFyZ3ZbMF0gPSBjb25zdF9jYXN0PGNoYXIqPihiaW5hcnlQ
YXRoLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNo
ZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
dW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcAppbmRleCA4ZTgyNjIwNjM2N2VlZDhlYjFj
MjVjZTJmNGI0NTY0YjA4Zjc0YTA4Li5jNWMzZjcxNDVkZTZjODkxYzQ1YTJkNTY2MDAwODI0OTBh
ODc1ZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQv
UHJvY2Vzc0xhdW5jaGVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVu
Y2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAKQEAgLTI4LDEwICsyOCw5IEBACiAjaW5jbHVk
ZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2lu
Y2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UURlYnVnPgotI2luY2x1ZGUgPFFG
aWxlPgogI2luY2x1ZGUgPFFMb2NhbFNlcnZlcj4KICNpbmNsdWRlIDxRTWV0YVR5cGU+CiAjaW5j
bHVkZSA8UVByb2Nlc3M+CkBAIC0xMDIsMTMgKzEwMSw5IEBAIHZvaWQgUXRXZWJQcm9jZXNzOjpz
ZXR1cENoaWxkUHJvY2VzcygpCiAKIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNz
KCkKIHsKLSAgICBRU3RyaW5nIGFwcGxpY2F0aW9uUGF0aCA9IFFMYXRpbjFTdHJpbmcoIiUxICUy
Iik7Ci0KLSAgICBpZiAoUUZpbGU6OmV4aXN0cyhRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlv
bkRpclBhdGgoKSArIFFMYXRpbjFTdHJpbmcoIi9RdFdlYlByb2Nlc3MiKSkpIHsKLSAgICAgICAg
YXBwbGljYXRpb25QYXRoID0gYXBwbGljYXRpb25QYXRoLmFyZyhRQ29yZUFwcGxpY2F0aW9uOjph
cHBsaWNhdGlvbkRpclBhdGgoKSArIFFMYXRpbjFTdHJpbmcoIi9RdFdlYlByb2Nlc3MiKSk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgYXBwbGljYXRpb25QYXRoID0gYXBwbGljYXRpb25QYXRoLmFy
ZyhRTGF0aW4xU3RyaW5nKCJRdFdlYlByb2Nlc3MiKSk7Ci0gICAgfQorICAgIFFTdHJpbmcgY29t
bWFuZExpbmUgPSBRTGF0aW4xU3RyaW5nKCIlMSAlMiIpOworICAgIGNvbW1hbmRMaW5lID0gY29t
bWFuZExpbmUuYXJnKG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9PSBXZWJQcm9jZXNzID8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlUGF0aE9mV2ViUHJv
Y2VzcygpIDogZXhlY3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MoKSk7CiAKICNpZiBPUyhEQVJX
SU4pCiAgICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcgcG9ydC4KQEAgLTEyNCw3ICsxMTksNyBA
QCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAga2Vybl9yZXR1cm5f
dCBrciA9IGJvb3RzdHJhcF9yZWdpc3RlcjIoYm9vdHN0cmFwX3BvcnQsIGNvbnN0X2Nhc3Q8Y2hh
cio+KHNlcnZpY2VOYW1lLnRvVXRmOCgpLmRhdGEoKSksIGNvbm5lY3RvciwgMCk7CiAgICAgQVNT
RVJUX1VOVVNFRChrciwga3IgPT0gS0VSTl9TVUNDRVNTKTsKIAotICAgIFFTdHJpbmcgcHJvZ3Jh
bShhcHBsaWNhdGlvblBhdGguYXJnKHNlcnZpY2VOYW1lKSk7CisgICAgY29tbWFuZExpbmUgPSBj
b21tYW5kTGluZS5hcmcoc2VydmljZU5hbWUpOwogI2Vsc2UKICAgICBpbnQgc29ja2V0c1syXTsK
ICAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgPT0g
LTEpIHsKQEAgLTE0NCwxMiArMTM5LDEyIEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQ
cm9jZXNzKCkKICAgICB9CiAKICAgICBpbnQgY29ubmVjdG9yID0gc29ja2V0c1sxXTsKLSAgICBR
U3RyaW5nIHByb2dyYW0oYXBwbGljYXRpb25QYXRoLmFyZyhzb2NrZXRzWzBdKSk7CisgICAgY29t
bWFuZExpbmUgPSBjb21tYW5kTGluZS5hcmcoc29ja2V0c1swXSk7CiAjZW5kaWYKIAogICAgIFFQ
cm9jZXNzKiB3ZWJQcm9jZXNzID0gbmV3IFF0V2ViUHJvY2VzcygpOwogICAgIHdlYlByb2Nlc3Mt
PnNldFByb2Nlc3NDaGFubmVsTW9kZShRUHJvY2Vzczo6Rm9yd2FyZGVkQ2hhbm5lbHMpOwotICAg
IHdlYlByb2Nlc3MtPnN0YXJ0KHByb2dyYW0pOworICAgIHdlYlByb2Nlc3MtPnN0YXJ0KGNvbW1h
bmRMaW5lKTsKIAogI2lmICFPUyhEQVJXSU4pCiAgICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSB3ZWIg
c29ja2V0IHRvIHBvc3NpYmxlIGZ1dHVyZSB3ZWIgcHJvY2Vzc2VzCkBAIC0xNjMsNyArMTU4LDcg
QEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogI2VuZGlmCiAKICAgICBp
ZiAoIXdlYlByb2Nlc3MtPndhaXRGb3JTdGFydGVkKCkpIHsKLSAgICAgICAgcURlYnVnKCkgPDwg
IkZhaWxlZCB0byBzdGFydCIgPDwgcHJvZ3JhbTsKKyAgICAgICAgcURlYnVnKCkgPDwgIkZhaWxl
ZCB0byBzdGFydCIgPDwgY29tbWFuZExpbmU7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogI2lmIE9TKERBUldJTikKICAgICAgICAgbWFjaF9wb3J0X2RlYWxsb2NhdGUobWFjaF90YXNr
X3NlbGYoKSwgY29ubmVjdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKaW5kZXggYTc1ZDViMTM4N2NkOGJkYTlkYzUy
MzEyZDgyNmY0YWEwYjQ2OTY1Ni4uNDQyM2Q0N2YwOWE5YmIyOTE2NDg3NjVlZGE3YjA4NmViNTRh
YjdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc1Byb3h5LmgKQEAgLTUyLDYgKzUyLDE0IEBAIGNsYXNzIFdlYlBsdWdpblNpdGVE
YXRhTWFuYWdlcjsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIHN0cnVjdCBQbHVnaW5Qcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOwogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCitzdHJ1
Y3QgUmF3UGx1Z2luTWV0YURhdGEgeworICAgIFN0cmluZyBuYW1lOworICAgIFN0cmluZyBkZXNj
cmlwdGlvbjsKKyAgICBTdHJpbmcgbWltZURlc2NyaXB0aW9uOworfTsKKyNlbmRpZgorCiBjbGFz
cyBQbHVnaW5Qcm9jZXNzUHJveHkgOiBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIFByb2Nl
c3NMYXVuY2hlcjo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxQbHVn
aW5Qcm9jZXNzUHJveHk+IGNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0IFBsdWdp
bk1vZHVsZUluZm8mKTsKQEAgLTgwLDYgKzg4LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBjcmVhdGVQcm9wZXJ0eUxpc3RGaWxlKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKICNlbmRp
ZgogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgc3RhdGljIGJvb2wgc2NhblBs
dWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFJhd1BsdWdpbk1ldGFEYXRhJiByZXN1bHQp
OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nl
c3NNYW5hZ2VyKiwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJv
eHlHdGsuY3BwCmluZGV4IDRjODU3NzJhMjdmN2I3MDcyYWZmNmExMTM3YzkyNzQ4ODVhOGY2NDMu
LjY1M2M3Mjk2NWViOTMyOTZmYTdkZmJkZGI5NTVkNmIyODAwODczYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9j
ZXNzUHJveHlHdGsuY3BwCkBAIC0yOSwxMyArMjksNTEgQEAKICNpZiBFTkFCTEUoUExVR0lOX1BS
T0NFU1MpCiAKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgIlByb2Nlc3NFeGVj
dXRhYmxlUGF0aC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUg
PGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBs
dWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
K3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNz
KFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKQoreworfQorCitib29sIFBsdWdpblBy
b2Nlc3NQcm94eTo6c2NhblBsdWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFJhd1BsdWdp
bk1ldGFEYXRhJiByZXN1bHQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBDU3RyaW5n
IGJpbmFyeVBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGhPZlBs
dWdpblByb2Nlc3MoKSk7CisgICAgQ1N0cmluZyBwbHVnaW5QYXRoQ1N0cmluZyA9IGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwbHVnaW5QYXRoKTsKKyAgICBjaGFyKiBhcmd2WzRdOworICAgIGFy
Z3ZbMF0gPSBjb25zdF9jYXN0PGNoYXIqPihiaW5hcnlQYXRoLmRhdGEoKSk7CisgICAgYXJndlsx
XSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KCItc2NhblBsdWdpbiIpOworICAgIGFyZ3ZbMl0gPSBjb25z
dF9jYXN0PGNoYXIqPihwbHVnaW5QYXRoQ1N0cmluZy5kYXRhKCkpOworICAgIGFyZ3ZbM10gPSAw
OworCisgICAgZ2ludCBzdGF0dXM7CisgICAgZ2NoYXIqIHN0ZE91dDsKKyAgICBpZiAoIWdfc3Bh
d25fc3luYygwLCBhcmd2LCAwLCBHX1NQQVdOX1NUREVSUl9UT19ERVZfTlVMTCwgMCwgMCwgJnN0
ZE91dCwgMCwgJnN0YXR1cywgMCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIVdJ
RkVYSVRFRChzdGF0dXMpIHx8IFdFWElUU1RBVFVTKHN0YXR1cykgIT0gRVhJVF9TVUNDRVNTKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCB1bnNpZ25lZCBrTnVtTGluZXNFeHBl
Y3RlZCA9IDM7CisgICAgU3RyaW5nIGxpbmVzW2tOdW1MaW5lc0V4cGVjdGVkXTsKKyAgICB1bnNp
Z25lZCBsaW5lSW5kZXggPSAwOworICAgIGNvbnN0IFVDaGFyKiBjdXJyZW50ID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBVQ2hhcio+KHN0ZE91dCk7CisgICAgd2hpbGUgKGxpbmVJbmRleCA8IGtO
dW1MaW5lc0V4cGVjdGVkKSB7CisgICAgICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IGN1cnJlbnQ7
CisgICAgICAgIHdoaWxlICgqY3VycmVudCsrICE9IFVDaGFyKCdcbicpKSB7IH0KKyAgICAgICAg
bGluZXNbbGluZUluZGV4KytdID0gU3RyaW5nKHN0YXJ0LCBjdXJyZW50IC0gc3RhcnQgLSAxKTsK
KyAgICB9CisKKyAgICByZXN1bHQubmFtZS5zd2FwKGxpbmVzWzBdKTsKKyAgICByZXN1bHQuZGVz
Y3JpcHRpb24uc3dhcChsaW5lc1sxXSk7CisgICAgcmVzdWx0Lm1pbWVEZXNjcmlwdGlvbi5zd2Fw
KGxpbmVzWzJdKTsKKyAgICByZXR1cm4gIXJlc3VsdC5taW1lRGVzY3JpcHRpb24uaXNFbXB0eSgp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL3F0L1BsdWdpblByb2Nlc3NQcm94eVF0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3F0L1BsdWdpblByb2Nlc3NQcm94eVF0LmNwcAppbmRl
eCBjYzUyMWUwYWY5YTZhMDc0NGMyZGMwZTA2ZjY1MTRmYzk0YjM0OWY4Li45YjdmMmIyZGRhMmU3
OGFmZDNhODdmMTcyMTZkZTFiYWFjZTczOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJveHlRdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2luUHJvY2Vzc1Byb3h5UXQuY3BwCkBA
IC0yOCwxNCArMjgsNTEgQEAKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIAotI2luY2x1
ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgiCisj
aW5jbHVkZSA8UUJ5dGVBcnJheT4KKyNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgorI2luY2x1
ZGUgPFFEaXI+CisjaW5jbHVkZSA8UUV2ZW50TG9vcD4KKyNpbmNsdWRlIDxRUHJvY2Vzcz4KKyNp
bmNsdWRlIDxRU3RyaW5nPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBQbHVnaW5Qcm9j
ZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK2NsYXNzIFBsdWdpblByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM7CisKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxp
emVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1
Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmIHJlc3VsdCkK
K3sKKyAgICBRU3RyaW5nIGNvbW1hbmRMaW5lID0gUUxhdGluMVN0cmluZygiJTEgJTIgJTMiKTsK
KyAgICBjb21tYW5kTGluZSA9IGNvbW1hbmRMaW5lLmFyZyhleGVjdXRhYmxlUGF0aE9mUGx1Z2lu
UHJvY2VzcygpKTsKKyAgICBjb21tYW5kTGluZSA9IGNvbW1hbmRMaW5lLmFyZyhRU3RyaW5nTGl0
ZXJhbCgiLXNjYW5QbHVnaW4iKSkuYXJnKHN0YXRpY19jYXN0PFFTdHJpbmc+KHBsdWdpblBhdGgp
KTsKKworICAgIFFQcm9jZXNzIHByb2Nlc3M7CisgICAgcHJvY2Vzcy5zZXRSZWFkQ2hhbm5lbChR
UHJvY2Vzczo6U3RhbmRhcmRPdXRwdXQpOworICAgIHByb2Nlc3Muc3RhcnQoY29tbWFuZExpbmUp
OworCisgICAgaWYgKCFwcm9jZXNzLndhaXRGb3JGaW5pc2hlZCgpCisgICAgICAgIHx8IHByb2Nl
c3MuZXhpdFN0YXR1cygpICE9IFFQcm9jZXNzOjpOb3JtYWxFeGl0CisgICAgICAgIHx8IHByb2Nl
c3MuZXhpdENvZGUoKSAhPSBFWElUX1NVQ0NFU1MpIHsKKyAgICAgICAgcHJvY2Vzcy5raWxsKCk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBRQnl0ZUFycmF5IG91dHB1dEJ5
dGVzID0gcHJvY2Vzcy5yZWFkQWxsKCk7CisgICAgQVNTRVJUKCEob3V0cHV0Qnl0ZXMuc2l6ZSgp
ICUgc2l6ZW9mKFVDaGFyKSkpOworCisgICAgU3RyaW5nIG91dHB1dChyZWludGVycHJldF9jYXN0
PGNvbnN0IFVDaGFyKj4ob3V0cHV0Qnl0ZXMuY29uc3REYXRhKCkpLCBvdXRwdXRCeXRlcy5zaXpl
KCkgLyBzaXplb2YoVUNoYXIpKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBsaW5lczsKKyAgICBvdXRw
dXQuc3BsaXQoVUNoYXIoJ1xuJyksIGxpbmVzKTsKKyAgICBBU1NFUlQobGluZXMuc2l6ZSgpID09
IDMpOworCisgICAgcmVzdWx0Lm5hbWUuc3dhcChsaW5lc1swXSk7CisgICAgcmVzdWx0LmRlc2Ny
aXB0aW9uLnN3YXAobGluZXNbMV0pOworICAgIHJlc3VsdC5taW1lRGVzY3JpcHRpb24uc3dhcChs
aW5lc1syXSk7CisgICAgcmV0dXJuICFyZXN1bHQubWltZURlc2NyaXB0aW9uLmlzRW1wdHkoKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1
bmNzLmNwcAppbmRleCBiZGM2ZTlkZTllMTI1NDRiMGEwNDIzZDA0ZDllMmI2NDRkODM5Y2QxLi5k
MTIxMzg4ZjUwODBmMDE5ZjEzOTNjN2ZlMTNhYjQ3OWYxM2IwZjdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVu
Y3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKQEAgLTU1MSwyMyArNTUxLDkgQEAgc3RhdGljIE5QRXJy
b3IgTlBOX0dldFZhbHVlKE5QUCBucHAsIE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1
ZSkKICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICBjYXNlIE5QTlZUb29sa2l0OiB7Ci0jaWYg
UExBVEZPUk0oR1RLKQotICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHZh
bHVlKSA9IDI7Ci0jZWxzZQotICAgICAgICAgICBjb25zdCB1aW50MzJfdCBleHBlY3RlZEdUS1Rv
b2xLaXRWZXJzaW9uID0gMjsKLQotICAgICAgICAgICAvLyBTZXQgdGhlIGV4cGVjdGVkIEdUSyB2
ZXJzaW9uIGlmIHdlIGtub3cgdGhhdCB0aGlzIHBsdWdpbiBuZWVkcyBpdCBvciBpZiB0aGUgcGx1
Z2luIGNhbGwgdXMKLSAgICAgICAgICAgLy8gd2l0aCBhIG51bGwgaW5zdGFuY2UuIFRoZSBsYXR0
ZXIgaXMgdGhlIGNhc2Ugd2l0aCBOU1BsdWdpbldyYXBwZXIgcGx1Z2lucy4KLSAgICAgICAgICAg
Ym9vbCByZXF1aXJlc0dUS1Rvb2xLaXRWZXJzaW9uOwotICAgICAgICAgICBpZiAoIW5wcCkKLSAg
ICAgICAgICAgICAgIHJlcXVpcmVzR1RLVG9vbEtpdFZlcnNpb24gPSB0cnVlOwotICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gcGx1Z2luID0g
TmV0c2NhcGVQbHVnaW46OmZyb21OUFAobnBwKTsKLSAgICAgICAgICAgICAgIHJlcXVpcmVzR1RL
VG9vbEtpdFZlcnNpb24gPSBwbHVnaW4tPnF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrczo6
UmVxdWlyZXNHVEtUb29sS2l0KTsKLSAgICAgICAgICAgfQotCi0gICAgICAgICAgICpyZWludGVy
cHJldF9jYXN0PHVpbnQzMl90Kj4odmFsdWUpID0gcmVxdWlyZXNHVEtUb29sS2l0VmVyc2lvbiA/
IGV4cGVjdGVkR1RLVG9vbEtpdFZlcnNpb24gOiAwOwotI2VuZGlmCisgICAgICAgICAgIC8vIEd0
ayBiYXNlZCBwbHVnaW5zIG5lZWQgdG8gYmUgYXNzdXJlZCBhYm91dCB0aGUgdG9vbGtpdCB2ZXJz
aW9uLgorICAgICAgICAgICBjb25zdCB1aW50MzJfdCBleHBlY3RlZEd0a1Rvb2xLaXRWZXJzaW9u
ID0gMjsKKyAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2YWx1ZSkgPSBl
eHBlY3RlZEd0a1Rvb2xLaXRWZXJzaW9uOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3F0L1BsdWdpbk1haW5RdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9xdC9QbHVnaW5NYWluUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNWM5M2I1N2IzYjllY2U1
NDM2YzA2ZDE3NjQzM2JkMjY5YTkxZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9xdC9QbHVnaW5NYWluUXQuY3BwCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExIFVuaXZlcnNpdHkgb2YgU3plZ2VkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxRTGlicmFyeT4KKyNpbmNsdWRl
IDxRdEdsb2JhbD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitRX0RFQ0xfSU1QT1JUIGludCBQbHVn
aW5Qcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpOworfQorCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgcmV0dXJuIFdlYktpdDo6UGx1Z2luUHJvY2Vzc01h
aW4oYXJnYywgYXJndik7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggOWZlZTE0MWVlZTI3NTQ3OGM0MTIwODllNjI3ZGY3YzlhNWRmZTAwMC4u
YTA0Mzg1NzI4MDI1NGI5YTkxNjNkNTc1ZmY2M2FjNGQ0ZjYyMjBiZiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEy
LTAzLTExICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBb
UXRdW1dLMl0gU2V0IHVwIHBsdWdpbiBwcm9jZXNzIG9uIFVuaXgKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTIxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBxbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2Zl
YXR1cmVzLnByZjogUmVlbmFibGUgcGx1Z2lucworICAgICAgICBhbmQgdHVybiBvbiBwbHVnaW4g
cHJvY2Vzcy4KKwogMjAxMi0wMy0xMSAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCAtLWluc3RydW1lbnRzIG9wdGlvbiB0byBzdW5zcGlkZXIgdG8gcHJv
ZmlsZSB3aXRoIEluc3RydW1lbnRzCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsv
R05VbWFrZWZpbGUuYW0gYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvR05VbWFrZWZpbGUuYW0KaW5k
ZXggOWU0MmUxOTRmYjU3MTZkY2RlOTcwOThmY2ZlNjEzOTA1Y2FiYzQyNy4uMmY0ODJmYmJkMjYw
NjkxOTFmZjkzMzIwZTI5NWM0NjBhYjFhZTM1ZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9HTlVtYWtl
ZmlsZS5hbQpAQCAtMzEsNyArMzEsOCBAQCBub2Rpc3RfUHJvZ3JhbXNfTWluaUJyb3dzZXJfU09V
UkNFUyA9IFwKIFByb2dyYW1zX01pbmlCcm93c2VyX0xEQUREID0gXAogCWxpYndlYmtpdDJndGst
QFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lP
TkAubGEgXAogCSQoR0xJQl9MSUJTKSBcCi0JJChHVEtfTElCUykKKwkkKEdUS19MSUJTKSBcCisJ
JChMSUJTT1VQX0xJQlMpCiAKIFByb2dyYW1zX01pbmlCcm93c2VyX0xERkxBR1MgPSBcCiAJLW5v
LWZhc3QtaW5zdGFsbCBcCmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVz
L2ZlYXR1cmVzLnByZiBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJm
CmluZGV4IDU5YTBiZDRjMzJjMmZmMDZlODExYmJmY2NiZDcxNTAyYzk3OWE4ODYuLmRmNzY5Mjhm
OTMxOWJmNjk2NGZmYjk0YTdmMTY4Y2Y0NGY4OGU2MmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3FtYWtl
L21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCisrKyBiL1Rvb2xzL3FtYWtlL21rc3BlY3Mv
ZmVhdHVyZXMvZmVhdHVyZXMucHJmCkBAIC0xMjUsMTIgKzEyNSwxMSBAQCBoYXZlUXQoNSkgewog
ICAgIG5vX3dlYmtpdDIgewogICAgICAgICBERUZJTkVTICs9IFBMVUdJTl9BUkNISVRFQ1RVUkVf
VU5TVVBQT1JURUQ9MQogICAgIH0gZWxzZSB7Ci0gICAgICAgICMgRGlzYWJsZSB4bGliIHBsdWdp
bnMgd2hpbGUgdGhleSdyZSBpbi1wcm9jZXNzLCBiZWNhdXNlIHRoZXkgY3Jhc2gKLSAgICAgICAg
IyBhcyBzb29uIGFzIGFuIGluc3RhbGxlZCBucGFwaSBwbHVnaW4gdXNlcyBRdCA0LgotICAgICAg
ICBmYWxzZTpjb250YWlucyhRVF9DT05GSUcsIHhjYi14bGliKSB7CisgICAgICAgIGNvbnRhaW5z
KFFUX0NPTkZJRywgeGNiLXhsaWIpIHsKICAgICAgICAgICAgIENPTkZJRyArPSBwbHVnaW5fYmFj
a2VuZF94bGliCiAgICAgICAgICAgICBERUZJTkVTICs9IFBMVUdJTl9BUkNISVRFQ1RVUkVfWDEx
PTEgXAotICAgICAgICAgICAgICAgICAgICAgICBQTFVHSU5fQVJDSElURUNUVVJFX1VOU1VQUE9S
VEVEPTAKKyAgICAgICAgICAgICAgICAgICAgICAgUExVR0lOX0FSQ0hJVEVDVFVSRV9VTlNVUFBP
UlRFRD0wIFwKKyAgICAgICAgICAgICAgICAgICAgICAgRU5BQkxFX1BMVUdJTl9QUk9DRVNTPTEK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIERFRklORVMgKz0gUExVR0lOX0FSQ0hJVEVD
VFVSRV9VTlNVUFBPUlRFRD0xCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0No
YW5nZUxvZwppbmRleCAwN2IyMDQwZjgzYzRkZGQ3MmU2Y2FjYjYxNTI5YTVmNmUzYzI2YzI3Li4x
MjE2YjYxZTY5NmZkNGJhMTUxY2JmZjk2ZmU5Y2MyMTM3NzFiMjI1IDEwMDY0NAotLS0gYS9DaGFu
Z2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDMtMTEgIEJhbGF6
cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBTZXQg
dXAgcGx1Z2luIHByb2Nlc3Mgb24gVW5peAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzIxMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNvdXJjZS9RdFdlYktpdC5wcm86IEFkZCBQbHVnaW5Qcm9jZXNz
IHN1YnByb2plY3QuCisKIDIwMTItMDMtMTAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgSW5jcmVtZW50IHRoZSBwZXJmLW8tbWF0aWMgYXBwIHZlcnNpb24uCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>