<?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>108759</bug_id>
          
          <creation_ts>2013-02-02 18:35:44 -0800</creation_ts>
          <short_desc>webdatabase: Introduce back-end database classes and a few small fixes</short_desc>
          <delta_ts>2013-02-05 14:05:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>107475</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>dglazkov</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>michaeln</cc>
    
    <cc>mkwst+watchlist</cc>
    
    <cc>peter+ews</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>823745</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-02-02 18:35:44 -0800</bug_when>
    <thetext>This is a sub-task of https://bugs.webkit.org/show_bug.cgi?id=107475.  Breaking out as a step for easier review.

This patch includes:

1. introducing dummy classes for DatabaseBackendContext, DatabaseBackendAsync, and DatabaseBackendSync.
    - Currently they are just sub-classes of DatabaseContext, Database, and DatabaseSync respectively.  Though logically, the code refers to their instances as if there are 2 objects (e.g. 1 for Database, and 1 for DatabaseBackendAsync), in the current patch, they are implemented as 2 references to the same 1 object.
    - The purpose of doing this is so that code can start to be refactored to work with either the front-end object or the back-end object without requiring them to be properly split apart yet.  This allows the refactoring to proceed in piece-meal fashion.

    In general, the guiding principal is that back-end code should make no references to the ScriptExecutionContext.  This has not been achieved yet, but we&apos;re heading there.

2. introducing class DatabaseBase to hold client-side common functionality between Database and DatabaseSync.

3. some renames of a few functions to make them easier to read/understand.
    - deletingDatabase() renamed to isDeletingDatabase()
    - deletingOrigin() renamed to isDeletingOrigin()
    - !canCreateDatabase() reworked to be isDeletingDatabaseOrOriginFor()

4. Cleaned up some destruction code in ~DatabaseSync().
    - The DatabaseBackend that it inherits from will take care of calling closeDatabase().  This call is redundant and now removed.

5. Added a few FIXME comments for code that is transient in this refactoring effort.
    - These serve as reminders to remove them because they will be stale once more / all of the refactoring is done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823747</commentid>
    <comment_count>1</comment_count>
      <attachid>186243</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-02-02 18:58:08 -0800</bug_when>
    <thetext>Created attachment 186243
The patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823748</commentid>
    <comment_count>2</comment_count>
      <attachid>186243</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-02 19:03:24 -0800</bug_when>
    <thetext>Comment on attachment 186243
The patch.

Attachment 186243 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16346306</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823749</commentid>
    <comment_count>3</comment_count>
      <attachid>186243</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-02 19:05:09 -0800</bug_when>
    <thetext>Comment on attachment 186243
The patch.

Attachment 186243 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16351202</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823750</commentid>
    <comment_count>4</comment_count>
      <attachid>186243</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-02 19:05:16 -0800</bug_when>
    <thetext>Comment on attachment 186243
The patch.

Attachment 186243 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16353192</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823753</commentid>
    <comment_count>5</comment_count>
      <attachid>186245</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-02-02 19:29:53 -0800</bug_when>
    <thetext>Created attachment 186245
one more time after touching up all the other port&apos;s build files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823754</commentid>
    <comment_count>6</comment_count>
      <attachid>186245</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-02 19:35:09 -0800</bug_when>
    <thetext>Comment on attachment 186245
one more time after touching up all the other port&apos;s build files.

Attachment 186245 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16351218</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823755</commentid>
    <comment_count>7</comment_count>
      <attachid>186245</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-02 19:36:14 -0800</bug_when>
    <thetext>Comment on attachment 186245
one more time after touching up all the other port&apos;s build files.

Attachment 186245 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16351219</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823756</commentid>
    <comment_count>8</comment_count>
      <attachid>186245</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-02-02 19:39:41 -0800</bug_when>
    <thetext>Comment on attachment 186245
one more time after touching up all the other port&apos;s build files.

Attachment 186245 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/16360160</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823759</commentid>
    <comment_count>9</comment_count>
      <attachid>186245</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-02 20:34:08 -0800</bug_when>
    <thetext>Comment on attachment 186245
one more time after touching up all the other port&apos;s build files.

Attachment 186245 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16352245</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823787</commentid>
    <comment_count>10</comment_count>
      <attachid>186253</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-02-03 01:50:53 -0800</bug_when>
    <thetext>Created attachment 186253
revised with chromium changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823801</commentid>
    <comment_count>11</comment_count>
      <attachid>186253</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-03 02:54:50 -0800</bug_when>
    <thetext>Comment on attachment 186253
revised with chromium changes.

Attachment 186253 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16358366</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823882</commentid>
    <comment_count>12</comment_count>
      <attachid>186268</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-02-03 14:11:22 -0800</bug_when>
    <thetext>Created attachment 186268
Revised backend classes that are friendlier for chromium.

Chromium did not like the previous trick of simulating backend classes by sub-classing the Database class itself.  Chromium was doing a class vtbl comparison that failed because it was not able to see that DatabaseBackendAsync is actually a sub-class of Database.

However, implementing DatabaseBackendAsync as a sub-class of Database is meant as a short term trick to keep the compiler happy while allowing us to refer to start thinking of the back-end and the front-end as distinct objects.  Because eventually, DatabaseBaackendAsync will not be a sub-class of Database, it was better to refactor the implementation than to make the chromium code do a real class-hierachy check.  The result is a better refactor where Database extends both DatabaseBase (front end base class) and DatabaseBackendAsync (backend class).  This achieves the goal of this patch without actually doing the full refactor of Database.  FYI, eventually, we&apos;ll want DatabaseBackendAsync to be a separate object that Database delegates to instead of inheriting from.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823893</commentid>
    <comment_count>13</comment_count>
      <attachid>186268</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-03 15:20:01 -0800</bug_when>
    <thetext>Comment on attachment 186268
Revised backend classes that are friendlier for chromium.

Attachment 186268 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16360730</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823898</commentid>
    <comment_count>14</comment_count>
      <attachid>186268</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-02-03 15:50:31 -0800</bug_when>
    <thetext>Comment on attachment 186268
Revised backend classes that are friendlier for chromium.

Ready for a review.  The win ews complaints seem to be unrelated to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823907</commentid>
    <comment_count>15</comment_count>
      <attachid>186268</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-03 16:17:21 -0800</bug_when>
    <thetext>Comment on attachment 186268
Revised backend classes that are friendlier for chromium.

Attachment 186268 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16354806</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824877</commentid>
    <comment_count>16</comment_count>
      <attachid>186268</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-02-04 16:19:56 -0800</bug_when>
    <thetext>Comment on attachment 186268
Revised backend classes that are friendlier for chromium.

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

Most of my comments are about comments.

But I also have very real concerns.  Possibly ones that could be resolved with... comments.

&gt; Source/WebCore/Modules/webdatabase/Database.cpp:72
&gt; -Database::Database(PassRefPtr&lt;DatabaseContext&gt; databaseContext, const String&amp; name, const String&amp; expectedVersion, const String&amp; displayName, unsigned long estimatedSize)
&gt; -    : DatabaseBackend(databaseContext, name, expectedVersion, displayName, estimatedSize, AsyncDatabase)
&gt; +Database::Database(ScriptExecutionContext* scriptExecutionContext, PassRefPtr&lt;DatabaseBackendContext&gt; databaseContext,
&gt; +    const String&amp; name, const String&amp; expectedVersion, const String&amp; displayName, unsigned long estimatedSize)
&gt; +    : DatabaseBase(scriptExecutionContext)
&gt; +    , DatabaseBackendAsync(databaseContext, name, expectedVersion, displayName, estimatedSize)

Presumably the DatabaseBackendContext here refers to the same ScriptExecutionContext being passed in.  If that&apos;s the case, no need for both arguments.

&gt; Source/WebCore/Modules/webdatabase/Database.cpp:-77
&gt; -    ScriptController::initializeThreading();

This is the type of mysterious change I&apos;d hope to see an explanation of in the ChangeLog.  Why was it needed before, and why is it not needed now?

&gt; Source/WebCore/Modules/webdatabase/Database.h:94
&gt; -    Database(PassRefPtr&lt;DatabaseContext&gt;, const String&amp; name, const String&amp; expectedVersion,
&gt; -             const String&amp; displayName, unsigned long estimatedSize);
&gt; +    Database(ScriptExecutionContext*, PassRefPtr&lt;DatabaseBackendContext&gt;, const String&amp; name,
&gt; +        const String&amp; expectedVersion, const String&amp; displayName, unsigned long estimatedSize);
&gt; +    PassRefPtr&lt;DatabaseBackendAsync&gt; backend();
&gt; +

Same comment about DatabaseBackendContext and ScriptExecutionContext possibly being duplicate parameters.

&gt; Source/WebCore/Modules/webdatabase/DatabaseBackend.cpp:246
&gt;  DatabaseBackend::~DatabaseBackend()
&gt;  {
&gt; -    ASSERT(!m_opened);
&gt; +    if (opened())
&gt; +        closeDatabase();
&gt;  }

In WebCore we try to avoid doing much work in destructors.  The ASSERT here was to help assure the heavyweight work had already been completed.

This change moves the heavyweight work into the destructor, which might be problematic.

Why is this necessary now when it wasn&apos;t before?

&gt; Source/WebCore/Modules/webdatabase/DatabaseContext.cpp:162
&gt; +PassRefPtr&lt;DatabaseBackendContext&gt; DatabaseContext::backend()
&gt; +{
&gt; +    ref();
&gt; +    DatabaseBackendContext* backend;
&gt; +    backend = reinterpret_cast&lt;DatabaseBackendContext*&gt;(this);
&gt; +    RefPtr&lt;DatabaseBackendContext&gt; backendRef = adoptRef(backend);
&gt; +    return backendRef.release();
&gt; +}

The ref() is super mysterious here.  Why is it necessary?  Can lifetime not be managed another way?

Any time we do manual ref()/deref()s deserves and explanation.

&gt; Source/WebCore/Modules/webdatabase/DatabaseSync.h:79
&gt; +    DatabaseSync(ScriptExecutionContext*, PassRefPtr&lt;DatabaseBackendContext&gt;, const String&amp; name,
&gt; +        const String&amp; expectedVersion, const String&amp; displayName, unsigned long estimatedSize);
&gt; +    PassRefPtr&lt;DatabaseBackendSync&gt; backend();

Same comment about duplicating DatabaseBackendContext and ScriptExecutionContext

&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:111
&gt; -        return;
&gt; +        return; // Already open. Nothing more to do.

We don&apos;t normally put comments on the same line as code.

It is perfectly acceptable - and expected - to add a {...} block to conditionals like this to contain the comment on its own line.

That said, I don&apos;t think this comment is necessary at all, as it&apos;s more of a &quot;WHAT this code does&quot; comment instead of a &quot;WHY this code does it&quot; comment.

&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:124
&gt; +    // Open the database unconditionally. If one does not exists already, open
&gt; +    // a new one.

Not really convinced this comment needs to be here.  I think the paragraphing was enough to make this code easily readable.

&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:132
&gt; +
&gt; +    // Ensure that the &apos;Origins&apos; table exists. Create it if it doesn&apos;t exist yet.

same here.

&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:140
&gt; +
&gt; +    // Ensure that the &apos;Databases&apos; table exists. Create it if it doesn&apos;t exist yet.

same here.

&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:214
&gt;      if (!m_database.isOpen())
&gt; -        return false;
&gt; +        return false; // No &quot;tracker database&quot;. Hence, no entry for the database of interest.

This comment feels useful to me.  But it needs to be on its own line, and therefore the if() needs a {...} block to contain the two lines.

&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:375
&gt; -    openTrackerDatabase(false);
&gt; +    openTrackerDatabase(false); // Don&apos;t create one if it doesn&apos;t already exist.

If this comment is necessary, it needs to be on its own line.

&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:380
&gt; +    // Setup an SQL query to fetch the databases for the specified origin:
&gt;      SQLiteStatement statement(m_database, &quot;SELECT name FROM Databases where origin=?;&quot;);

Don&apos;t think this one is needed.

&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:390
&gt; +    // Execute the query and fetch each relevant db into the result:
&gt;      int result;
&gt;      while ((result = statement.step()) == SQLResultRow)
&gt;          resultVector.append(statement.getColumnText(0));

Ditto.

&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:634
&gt;      if (!originQuotaManager().tracksOrigin(origin))
&gt; -        return 0;
&gt; +        return 0; // Still no db&apos;s for this origin. Hence, total usage is 0.

Not convinced this one is needed.  If it is, it needs its own line.

&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:637
&gt; +    // Compute the total disk usage of all db&apos;s from the specified origin:
&gt;      return originQuotaManager().diskUsage(origin);

If this is just saying what diskUsage() does, it&apos;s not necessary.

If the intention is to point out that diskUsage involves computation and is not simply an accessor, I think it needs to more explicitly state that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824912</commentid>
    <comment_count>17</comment_count>
      <attachid>186268</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-02-04 17:01:23 -0800</bug_when>
    <thetext>Comment on attachment 186268
Revised backend classes that are friendlier for chromium.

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

&gt;&gt; Source/WebCore/Modules/webdatabase/Database.cpp:72
&gt;&gt; +    , DatabaseBackendAsync(databaseContext, name, expectedVersion, displayName, estimatedSize)
&gt; 
&gt; Presumably the DatabaseBackendContext here refers to the same ScriptExecutionContext being passed in.  If that&apos;s the case, no need for both arguments.

Yes, currently, they refer to the same ScriptExecutionContext.  I expressed it this way to hint at forward looking changes where Database is instantiated separately from its corresponding DatabaseBackend.  But since those changes are not materialized yet, I&apos;m fine with reducing this to just pass the DatabaseBackendContext and make use of the existing temporary hack to fetch the ScriptExecutionContext from that.

&gt;&gt; Source/WebCore/Modules/webdatabase/Database.cpp:-77
&gt;&gt; -    ScriptController::initializeThreading();
&gt; 
&gt; This is the type of mysterious change I&apos;d hope to see an explanation of in the ChangeLog.  Why was it needed before, and why is it not needed now?

Previously, all we cared about is to make sure that we call ScriptController::initializeThreading() on first use of Database code.  Since the JS interface is set up that we need a Database object before we can do database work, we just did this thread initialization in the Database object even though it has nothing to do with a Database object specifically.  Now, we have added a DatabaseManager.  I moved this thread initialization call there to DatabaseManager::openDatabase() (which is the same Database instantiation code path).  My thinking is: let the manager initialize the system (e.g. like this thread initialization), and let the object that it manages (i.e. the Database) assume that its manager has setup the environment properly for it to operate in.

I will add a comment in the ChangeLog to explain this.

&gt;&gt; Source/WebCore/Modules/webdatabase/DatabaseBackend.cpp:246
&gt;&gt;  }
&gt; 
&gt; In WebCore we try to avoid doing much work in destructors.  The ASSERT here was to help assure the heavyweight work had already been completed.
&gt; 
&gt; This change moves the heavyweight work into the destructor, which might be problematic.
&gt; 
&gt; Why is this necessary now when it wasn&apos;t before?

This code is defensive.  Plus DatabaseSync was calling closeDatabase() in its destructor anyway.  I simply consolidated it here so that we get common behavior instead of special casing it for DatabaseSync alone, and we get the code being more defensive against leaks as a bonus.

&gt;&gt; Source/WebCore/Modules/webdatabase/DatabaseContext.cpp:162
&gt;&gt; +}
&gt; 
&gt; The ref() is super mysterious here.  Why is it necessary?  Can lifetime not be managed another way?
&gt; 
&gt; Any time we do manual ref()/deref()s deserves and explanation.

I could have expressed it better (now that I&apos;m a little more familiar with how refs work).  How about it I re-write it as this?

PassRefPtr&lt;DatabaseBackendContext&gt; DatabaseContext::backend()
{
    DatabaseBackendContext* backend = static_cast&lt;DatabaseBackendContext*&gt;(this);
    return backend;
}

&gt;&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:111
&gt;&gt; +        return; // Already open. Nothing more to do.
&gt; 
&gt; We don&apos;t normally put comments on the same line as code.
&gt; 
&gt; It is perfectly acceptable - and expected - to add a {...} block to conditionals like this to contain the comment on its own line.
&gt; 
&gt; That said, I don&apos;t think this comment is necessary at all, as it&apos;s more of a &quot;WHAT this code does&quot; comment instead of a &quot;WHY this code does it&quot; comment.

I&apos;m fine with dropping this comment.

&gt;&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:124
&gt;&gt; +    // a new one.
&gt; 
&gt; Not really convinced this comment needs to be here.  I think the paragraphing was enough to make this code easily readable.

I think of it as re-enforcing the comment on the previous comment block above.  Having it here allows me to start reading from this point on and understanding how things work without having to parse and grok the complicated behavior of SQLiteFileSystem::ensureDatabaseFileExists() and further inferring the fall out of that from a variable createIfDoesNotExist flag.  Yes, one can figure things out without this comment, but it requires a bit more bandwidth.  If you strongly object to the presence of this comment, I can delete it.

&gt;&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:132
&gt;&gt; +    // Ensure that the &apos;Origins&apos; table exists. Create it if it doesn&apos;t exist yet.
&gt; 
&gt; same here.

I like section headers that tells me what the code is trying to achieve so that I can quickly tell what is happening without groking the code.  It&apos;s less bandwidth to get the intent from &quot;Create it if it doesn&apos;t exist yet&quot; then from &quot;m_database.executeCommand(&quot;CREATE TABLE Origins (origin TEXT UNIQUE ON CONFLICT REPLACE, quota INTEGER NOT NULL ON CONFLICT FAIL);&quot;)&quot;.  Note that there is also an if statement involve to handle the case where the &quot;creation origin&quot; fails.  The comment allows me to bypass that detail quickly while I need to grok that from the code (though I agree that it will be only a minor effort).

Again, it&apos;s a minor convenience for the reader but I can delete it if you strongly object.

&gt;&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:140
&gt;&gt; +    // Ensure that the &apos;Databases&apos; table exists. Create it if it doesn&apos;t exist yet.
&gt; 
&gt; same here.

Ditto.  Same reason as above.

&gt;&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:214
&gt;&gt; +        return false; // No &quot;tracker database&quot;. Hence, no entry for the database of interest.
&gt; 
&gt; This comment feels useful to me.  But it needs to be on its own line, and therefore the if() needs a {...} block to contain the two lines.

Will fix.

&gt;&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:375
&gt;&gt; +    openTrackerDatabase(false); // Don&apos;t create one if it doesn&apos;t already exist.
&gt; 
&gt; If this comment is necessary, it needs to be on its own line.

It&apos;s necessary because &quot;false&quot; here doesn&apos;t tell you much.  Will fix the line issue.

&gt;&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:637
&gt;&gt;      return originQuotaManager().diskUsage(origin);
&gt; 
&gt; If this is just saying what diskUsage() does, it&apos;s not necessary.
&gt; 
&gt; If the intention is to point out that diskUsage involves computation and is not simply an accessor, I think it needs to more explicitly state that.

It&apos;s to point out that this code may be heavy weight and will be scanning the disk and not just fetching a cached value.  I agree that I should be more verbose and state that explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824920</commentid>
    <comment_count>18</comment_count>
      <attachid>186268</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2013-02-04 17:10:38 -0800</bug_when>
    <thetext>Comment on attachment 186268
Revised backend classes that are friendlier for chromium.

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

&gt;&gt;&gt; Source/WebCore/Modules/webdatabase/DatabaseBackend.cpp:246
&gt;&gt;&gt;  }
&gt;&gt; 
&gt;&gt; In WebCore we try to avoid doing much work in destructors.  The ASSERT here was to help assure the heavyweight work had already been completed.
&gt;&gt; 
&gt;&gt; This change moves the heavyweight work into the destructor, which might be problematic.
&gt;&gt; 
&gt;&gt; Why is this necessary now when it wasn&apos;t before?
&gt; 
&gt; This code is defensive.  Plus DatabaseSync was calling closeDatabase() in its destructor anyway.  I simply consolidated it here so that we get common behavior instead of special casing it for DatabaseSync alone, and we get the code being more defensive against leaks as a bonus.

With DatabaseSync, the class is effectively single threaded. But with Database, refs are held and released on multiple threads which means the final release could happen from an unexpected thread. I think the ASSERT here was to ensure, in the Database case, that the database file is actually closed on the background thread instead of potentially the main ui thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824934</commentid>
    <comment_count>19</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-02-04 17:19:52 -0800</bug_when>
    <thetext>(In reply to comment #17)

&gt; &gt;&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:375
&gt; &gt;&gt; +    openTrackerDatabase(false); // Don&apos;t create one if it doesn&apos;t already exist.
&gt; &gt; 
&gt; &gt; If this comment is necessary, it needs to be on its own line.
&gt; 
&gt; It&apos;s necessary because &quot;false&quot; here doesn&apos;t tell you much.  Will fix the line issue.

The &quot;false&quot; is leftover from days where we will let people get away with adding bool arguments for random things.  I&apos;m probably personally responsible for this one originally.

These days, we aren&apos;t afraid to add a two-state enum that is descriptive for what&apos;s going on.  That makes it impossible to accidentally misuse, makes the code self-documenting, and removes the need for comments like these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825063</commentid>
    <comment_count>20</comment_count>
      <attachid>186268</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-02-04 20:22:04 -0800</bug_when>
    <thetext>Comment on attachment 186268
Revised backend classes that are friendlier for chromium.

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

&gt;&gt;&gt; Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp:375
&gt;&gt;&gt; +    openTrackerDatabase(false); // Don&apos;t create one if it doesn&apos;t already exist.
&gt;&gt; 
&gt;&gt; If this comment is necessary, it needs to be on its own line.
&gt; 
&gt; It&apos;s necessary because &quot;false&quot; here doesn&apos;t tell you much.  Will fix the line issue.

Added a TrackerCreationAction { DontCreateIfDoesNotExist, CreateIfDoesNotExist } enum to use here and replaced all calls to openTrackerDatabase() to use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825071</commentid>
    <comment_count>21</comment_count>
      <attachid>186531</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-02-04 20:25:47 -0800</bug_when>
    <thetext>Created attachment 186531
Addressed Brady&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825073</commentid>
    <comment_count>22</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-02-04 20:27:38 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; Created an attachment (id=186531) [details]
&gt; Addressed Brady

Fudge fingers.  Hit the enter key accidentally.   Meant to say &quot;Addressed Brady&apos;s comments.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825567</commentid>
    <comment_count>23</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-02-05 09:45:11 -0800</bug_when>
    <thetext>(In reply to comment #17)

&gt; &gt;&gt; Source/WebCore/Modules/webdatabase/DatabaseBackend.cpp:246
&gt; &gt;&gt;  }
&gt; &gt; 
&gt; &gt; In WebCore we try to avoid doing much work in destructors.  The ASSERT here was to help assure the heavyweight work had already been completed.
&gt; &gt; 
&gt; &gt; This change moves the heavyweight work into the destructor, which might be problematic.
&gt; &gt; 
&gt; &gt; Why is this necessary now when it wasn&apos;t before?
&gt; 
&gt; This code is defensive.  Plus DatabaseSync was calling closeDatabase() in its destructor anyway.  I simply consolidated it here so that we get common behavior instead of special casing it for DatabaseSync alone, and we get the code being more defensive against leaks as a bonus.
&gt; 

Except there&apos;s a very real difference between Async and Synchronous databases that calls for this behavior to *not* be consolidated...

(In reply to comment #18)
&gt; With DatabaseSync, the class is effectively single threaded. But with Database, refs are held and released on multiple threads which means the final release could happen from an unexpected thread. I think the ASSERT here was to ensure, in the Database case, that the database file is actually closed on the background thread instead of potentially the main ui thread.

By ditching the ASSERT in ~DatabaseBackend we&apos;re losing the ability to see a threading error like this creep in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825569</commentid>
    <comment_count>24</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-02-05 09:49:37 -0800</bug_when>
    <thetext>&gt; (In reply to comment #18)
&gt; By ditching the ASSERT in ~DatabaseBackend we&apos;re losing the ability to see a threading error like this creep in.

Since you&apos;re new to working in this area, I&apos;ll elaborate on why this is important.

SQLite is &quot;multi-thread safe&quot;, but each database handle can only be used on a single thread at a time.

The decision a long time ago in WebCore was to make sure we open a SQLite database handle on the background thread where it is going to be used, then close it on that same background thread once we&apos;re done with it.

It is important we continue to be able to make sure we don&apos;t close it on the main thread, as it still may be used on a background thread.  That&apos;s why closing it is an explicit background task.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825571</commentid>
    <comment_count>25</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-02-05 09:57:15 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; &gt; (In reply to comment #18)
&gt; &gt; By ditching the ASSERT in ~DatabaseBackend we&apos;re losing the ability to see a threading error like this creep in.
&gt; 
&gt; Since you&apos;re new to working in this area, I&apos;ll elaborate on why this is important.
&gt; 
&gt; SQLite is &quot;multi-thread safe&quot;, but each database handle can only be used on a single thread at a time.
&gt; 
&gt; The decision a long time ago in WebCore was to make sure we open a SQLite database handle on the background thread where it is going to be used, then close it on that same background thread once we&apos;re done with it.
&gt; 
&gt; It is important we continue to be able to make sure we don&apos;t close it on the main thread, as it still may be used on a background thread.  That&apos;s why closing it is an explicit background task.

Thanks.  I&apos;ll &quot;revert&quot; the change by putting the assert back into DatabaseBackend, and moving the DatabaseSync call to close to DatabaseBackendSync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825636</commentid>
    <comment_count>26</comment_count>
      <attachid>186659</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-02-05 10:51:28 -0800</bug_when>
    <thetext>Created attachment 186659
One more time with ~DatabaseBackend() assert put back in, and ~DatabaseBackendSync() closing its own database.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825768</commentid>
    <comment_count>27</comment_count>
      <attachid>186659</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-02-05 13:24:02 -0800</bug_when>
    <thetext>Comment on attachment 186659
One more time with ~DatabaseBackend() assert put back in, and ~DatabaseBackendSync() closing its own database.

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

&gt; Source/WebCore/Modules/webdatabase/DatabaseBackend.cpp:251
&gt; +    // SQLite is &quot;multi-thread safe&quot;, but each database handle can only be used
&gt; +    // on a single thread at a time.
&gt; +    //
&gt; +    // For DatabaseBackendAsync, we open the SQLite database on the DatabaseThread,
&gt; +    // and hence we should also close it on that same thread. This means that the
&gt; +    // SQLite database need to be closed by another mechanism (see
&gt; +    // DatabaseContext::stopDatabases()). By the time we get here, the SQLite
&gt; +    // database should have already been closed.

Good comment, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825793</commentid>
    <comment_count>28</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-02-05 14:05:18 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r141928: &lt;http://trac.webkit.org/changeset/141928&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186243</attachid>
            <date>2013-02-02 18:58:08 -0800</date>
            <delta_ts>2013-02-02 19:30:08 -0800</delta_ts>
            <desc>The patch.</desc>
            <filename>bug-108759.patch</filename>
            <type>text/plain</type>
            <size>91813</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOCBAQAorMjAxMy0wMi0wMiAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHBzZXVkbyBiYWNrLWVuZCBk
YXRhYmFzZSBjbGFzc2VzICsgYSBmZXcgc21hbGwgZml4ZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3NTkuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gQWRkZWQgRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dCwgRGF0YWJhc2VCYWNrZW5kQXN5bmMsIGFuZCBEYXRhYmFzZUJhY2tlbmRTeW5jLgorICAg
ICAgICAgICBUaGVzZSBhcmUgYmFja2VuZHMgZm9yIERhdGFiYXNlQ29udGV4dCwgRGF0YWJhc2Us
IGFuZCBEYXRhYmFzZVN5bmMKKyAgICAgICAgICAgcmVzcGVjdGl2ZWx5LiBUaGV5IGFyZSBvbmx5
ICJwcmV0ZW5kIiBiYWNrZW5kcyBmb3Igbm93LgorICAgICAgICAyLiBBZGRlZCBEYXRhYmFzZUJh
c2UgdG8gaG9sZCBjb21tb24gY29kZSBiZXR3ZWVuIERhdGFiYXNlIGFuZCBEYXRhYmFzZVN5bmMu
CisgICAgICAgIDMuIFJlbmFtZWQgYSBmZXcgZnVuY3Rpb25zLgorICAgICAgICA0LiBDbGVhbmVk
IHVwIHVubmVlZGVkIGNvZGUgaW4gfkRhdGFiYXNlU3luYygpLgorICAgICAgICA1LiBBZGRlZCBz
b21lIEZJWE1FcyBhcyByZW1pbmRlcnMgb3IgcGxhY2VzIHRvIGNsZWFuIHVwIHdoZW4gd2UncmUg
ZG9uZQorICAgICAgICAgICByZWZhY3RvcmluZy4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5o
OgorICAgICAgICAoQWJzdHJhY3REYXRhYmFzZVNlcnZlcik6CisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpEYXRhYmFzZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oOgorICAgICAgICAoRGF0YWJhc2UpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6RGF0YWJhc2VCYWNrZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6fkRhdGFiYXNlQmFja2VuZCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZUJhY2tlbmQ6OmxvZ0Vycm9yTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuaDoKKyAgICAgICAgKERhdGFiYXNlQmFja2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OmRhdGFiYXNlQ29udGV4dCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kQXN5bmM6OkRhdGFiYXNl
QmFja2VuZEFzeW5jKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFj
a2VuZEFzeW5jLmg6IEFkZGVkLgorICAgICAgICAoRGF0YWJhc2VCYWNrZW5kQXN5bmMpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kQ29udGV4dDo6c2VjdXJpdHlP
cmlnaW4pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKERhdGFiYXNlQmFja2VuZENvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kQ29udGV4dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRTeW5jOjpEYXRhYmFz
ZUJhY2tlbmRTeW5jKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFj
a2VuZFN5bmMuaDogQWRkZWQuCisgICAgICAgIChEYXRhYmFzZUJhY2tlbmRTeW5jKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VCYXNlOjpEYXRhYmFzZUJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlQmFzZTo6bG9nRXJyb3JNZXNzYWdlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKERhdGFiYXNlQmFzZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpEYXRhYmFzZUNvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpiYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oOgorICAgICAgICAoRGF0YWJhc2VDb250ZXh0
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFzZVN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpoYXNPcGVuRGF0YWJhc2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmdldE1heFNpemVGb3JEYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmxvZ0Vycm9yTWVzc2FnZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAg
ICAgKERhdGFiYXNlTWFuYWdlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVNlcnZlcjo6aW50ZXJy
dXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVNl
cnZlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VTZXJ2ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OkRhdGFiYXNlU3luYyk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZVN5bmM6On5EYXRhYmFzZVN5bmMpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmg6CisgICAgICAgIChEYXRhYmFzZVN5bmMpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6aGFzRW50cnlGb3JEYXRhYmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZU5hbWVz
Rm9yT3JpZ2luTm9Mb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dXNh
Z2VGb3JPcmlnaW5Ob0xvY2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpp
c0RlbGV0aW5nRGF0YWJhc2VPck9yaWdpbkZvcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZVRyYWNrZXI6OmNhbkRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6aXNEZWxldGluZ0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6Y2FuRGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6aXNEZWxldGluZ09yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNr
ZXI6OnJlY29yZERlbGV0aW5nT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6ZG9uZURlbGV0aW5nT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVHJhY2tlci5oOgorICAgICAgICAoRGF0YWJhc2VUcmFja2VyKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRFeGNlZWRRdW90YSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvblN5bmMuY3BwOgorICAgICAgICAqIFRhcmdl
dC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMy0wMi0w
MiAgSnVuIEppYW5nICA8anVuLmEuamlhbmdAaW50ZWwuY29tPgogCiAgICAgICAgIE9wdGltaXpl
IHNvbWUgb3BlcmF0aW9ucyBmb3IgZmxvYXQgdHlwZSBpbiB0ZXh0dXJlIGZvcm1hdCBjb252ZXJz
aW9ucyBvZiBXZWJHTApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE0MTcxMSkK
KysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05NTAs
NiArOTUwLDkgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2UuY3BwCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIu
Y3BwCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwCisgICAgTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAKKyAgICBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwCisgICAgTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VDb250ZXh0LmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2Vy
LmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0MTcxMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIxMDAsNiArMjEw
MCwxMiBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFzeW5jLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2Vu
ZENvbnRleHQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZUJhY2tlbmRTeW5jLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZUJhY2tlbmRTeW5jLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VCYXNpY1R5cGVzLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VDYWxsYmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAx
NDE3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDQzLDYgKzE0NDMsOSBAQCBIRUFERVJTICs9IFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQXV0aG9yaXplci5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmgg
XAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmggXAorICAgIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuaCBcCisgICAgTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0LmggXAorICAgIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VCYWNrZW5kU3luYy5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQ2FsbGJhY2suaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUVycm9yLmgg
XAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmggXApAQCAtMzAzNyw2
ICszMDQwLDkgQEAgdXNlPyhQTFVHSU5fQkFDS0VORF9YTElCKSB7CiBlbmFibGU/KFNRTF9EQVRB
QkFTRSkgewogICAgIFNPVVJDRVMgKz0gXAogICAgICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0No
YW5nZVZlcnNpb25XcmFwcGVyLmNwcCBcCisgICAgICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VCYWNrZW5kQXN5bmMuY3BwIFwKKyAgICAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUJhY2tlbmRDb250ZXh0LmNwcCBcCisgICAgICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VCYWNrZW5kU3luYy5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlTWFuYWdlci5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFz
ay5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcCBc
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxNDE3MTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTEwMDAsMTEgKzEwMDAsMTggQEAKICAg
ICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQXV0aG9yaXplci5oJywKICAg
ICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5jcHAnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmgnLAorICAgICAg
ICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuY3BwJywKKyAg
ICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFzeW5jLmgnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5j
cHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dC5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2Vu
ZFN5bmMuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFj
a2VuZFN5bmMuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNh
bGxiYWNrLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250
ZXh0LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRl
eHQuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUVycm9yLmgn
LAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCcs
CisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5jcHAnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwJywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3RE
YXRhYmFzZVNlcnZlci5oCShyZXZpc2lvbiAxNDE3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzYsOCArMzYsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJhc2VC
YWNrZW5kOworY2xhc3MgRGF0YWJhc2VCYWNrZW5kQXN5bmM7CitjbGFzcyBEYXRhYmFzZUJhY2tl
bmRDb250ZXh0OworY2xhc3MgRGF0YWJhc2VCYWNrZW5kU3luYzsKIGNsYXNzIERhdGFiYXNlTWFu
YWdlckNsaWVudDsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKIAogY2xhc3MgQWJzdHJhY3REYXRhYmFzZVNlcnZlciB7CkBAIC03Myw5ICs3NSw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShj
b25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwog
I2VuZGlmIC8vIFBMQVRGT1JNKENIUk9NSVVNKQogCi0gICAgdmlydHVhbCB2b2lkIGludGVycnVw
dEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25z
dCBEYXRhYmFzZUJhY2tlbmRDb250ZXh0KikgPSAwOwogCi0gICAgdmlydHVhbCBib29sIGNhbkVz
dGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6
ZSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShEYXRhYmFzZUJh
Y2tlbmRDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBzZXREYXRhYmFzZURldGFpbHMoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkg
PSAwOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIGdldE1heFNpemVGb3JEYXRhYmFz
ZShjb25zdCBEYXRhYmFzZUJhY2tlbmQqKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAkocmV2aXNpb24gMTQxNzExKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDggQEAKIAogI2luY2x1ZGUgIkNoYW5nZVZlcnNpb25XcmFwcGVy
LmgiCiAjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNr
ZW5kQXN5bmMuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiRGF0YWJhc2VDYWxsYmFjay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgpAQCAtNDksNyArNTEsNiBAQAogI2luY2x1ZGUgIlNR
TFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkVycm9y
Q2FsbGJhY2suaCIKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJTY3Jp
cHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCkBAIC02
NiwxNSArNjcsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EYXRhYmFzZTo6RGF0YWJh
c2UoUGFzc1JlZlB0cjxEYXRhYmFzZUNvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQotICAgIDogRGF0YWJhc2VC
YWNrZW5kKGRhdGFiYXNlQ29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFt
ZSwgZXN0aW1hdGVkU2l6ZSwgQXN5bmNEYXRhYmFzZSkKKy8vIEZJWE1FOiBUaGUgRGF0YWJhc2VN
YW5hZ2VyIG5lZWRzIHRvIGNyZWF0ZSBhIERhdGFiYXNlIGluc3RhbmNlIGZyb20gaXRzIGJhY2tl
bmQuCisvLyBUaGlzIGZhY3RvcnkgbWV0aG9kIGlzIGEgdGVtcG9yYXJ5IHdvcmthcm91bmQgdG8g
dGhhdCBEYXRhYmFzZU1hbmFnZXIgbmVlZC4KKy8vIFdoZW4gdGhlIGJhY2tlbmQgaGFzIGFjdHVh
bGx5IGJlZW4gc3BsaXQgb3V0IGZyb20gdGhlIERhdGFiYXNlLCB3ZSBzaG91bGQgYmUKKy8vIHVz
aW5nIHRoZSB1cGRhdGVkIERhdGFiYXNlIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgdGhpcyB3b3Jr
YXJvdW5kLCBhbmQgdGhpcworLy8gbWV0aG9kIHNob3VsZCBiZSBkZWxldGVkLgorUGFzc1JlZlB0
cjxEYXRhYmFzZT4gRGF0YWJhc2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFz
c1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRBc3luYz4gYmFja2VuZCkKK3sKKyAgICByZXR1cm4gYmFj
a2VuZDsKK30KKworRGF0YWJhc2U6OkRhdGFiYXNlKFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5k
Q29udGV4dD4gZGF0YWJhc2VDb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBs
b25nIGVzdGltYXRlZFNpemUpCisgICAgOiBEYXRhYmFzZUJhc2UoZGF0YWJhc2VDb250ZXh0LCBu
YW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBBc3luY0Rh
dGFiYXNlKQogICAgICwgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MoZmFsc2UpCiAgICAgLCBtX2lz
VHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQodHJ1ZSkKICAgICAsIG1fZGVsZXRlZChmYWxzZSkKIHsK
ICAgICBtX2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW4gPSBtX2NvbnRleHRUaHJlYWRTZWN1
cml0eU9yaWdpbi0+aXNvbGF0ZWRDb3B5KCk7CiAKLSAgICBTY3JpcHRDb250cm9sbGVyOjppbml0
aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFz
ZVRocmVhZCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuaAkocmV2aXNpb24gMTQxNzExKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3
IEBACiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiRGF0YWJhc2VCYWNr
ZW5kLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VCYXNp
Y1R5cGVzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgpAQCAtNDAsNiArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERh
dGFiYXNlQmFja2VuZEFzeW5jOwogY2xhc3MgRGF0YWJhc2VDYWxsYmFjazsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwogY2xhc3MgU1FMVHJhbnNhY3Rpb247CkBAIC01MCw3ICs1MSw3IEBAIGNsYXNz
IFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uV3JhcHBl
cjsKIGNsYXNzIFZvaWRDYWxsYmFjazsKIAotY2xhc3MgRGF0YWJhc2UgOiBwdWJsaWMgRGF0YWJh
c2VCYWNrZW5kIHsKK2NsYXNzIERhdGFiYXNlIDogcHVibGljIERhdGFiYXNlQmFzZSB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+RGF0YWJhc2UoKTsKIApAQCAtODcsOCArODgsMTAgQEAgcHJpdmF0
ZToKICAgICBjbGFzcyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzazsKICAgICBjbGFzcyBEYXRhYmFz
ZVRhYmxlTmFtZXNUYXNrOwogCi0gICAgRGF0YWJhc2UoUGFzc1JlZlB0cjxEYXRhYmFzZUNvbnRl
eHQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAor
ICAgIERhdGFiYXNlKFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4sIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sCiAgICAgICAgICAgICAg
Y29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhYmFzZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZEFzeW5jPik7CisKICAgICB2b2lkIHJ1
blRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4sIFBhc3NSZWZQ
dHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiwKICAgICAgICAgICAgICAgICAgICAgICAg
IFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FM
VHJhbnNhY3Rpb25XcmFwcGVyPiwgYm9vbCByZWFkT25seSk7CiAKQEAgLTExMCw2ICsxMTMsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9kZWxldGVkOwogCiAgICAgZnJpZW5kIGNsYXNzIERhdGFi
YXNlTWFuYWdlcjsKKyAgICBmcmllbmQgY2xhc3MgRGF0YWJhc2VCYWNrZW5kQXN5bmM7IC8vIEZJ
WE1FOiByZW1vdmUgdGhpcyB3aGVuIHRoZSBiYWNrZW5kIGhhcyBiZWVuIHNwbGl0IG91dC4KIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5jcHAJKHJldmlzaW9uIDE0
MTcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNr
ZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMzLDcgQEAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQogCiAjaW5jbHVkZSAiRGF0YWJhc2VBdXRob3JpemVyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VC
YWNrZW5kQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgpAQCAtMzks
NyArNDEsNiBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1l
bnQuaCIKICNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlvbi5oIgotI2luY2x1ZGUgIlNjcmlwdENh
bGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01OCw3ICs1
OSw3IEBACiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CiAvLyBUaGUgRGF0YWJhc2VUcmFja2VyIG1haW50YWlucyBhIGxpc3Qgb2YgZGF0
YWJhc2VzIHRoYXQgaGF2ZSBiZWVuCiAvLyAib3BlbmVkIiBzbyB0aGF0IHRoZSBjbGllbnQgY2Fu
IGNhbGwgaW50ZXJydXB0IG9yIGRlbGV0ZSBvbiBldmVyeSBkYXRhYmFzZQotLy8gYXNzb2NpYXRl
ZCB3aXRoIGEgRGF0YWJhc2VDb250ZXh0LgorLy8gYXNzb2NpYXRlZCB3aXRoIGEgRGF0YWJhc2VC
YWNrZW5kQ29udGV4dC4KIC8vCiAvLyBXZSB3aWxsIG9ubHkgY2FsbCBEYXRhYmFzZVRyYWNrZXI6
OmFkZE9wZW5EYXRhYmFzZSgpIHRvIGFkZCB0aGUgZGF0YWJhc2UKIC8vIHRvIHRoZSB0cmFja2Vy
IGFzIG9wZW5lZCB3aGVuIHdlJ3ZlIHN1Y2NlZWRlZCBpbiBvcGVuaW5nIHRoZSBkYXRhYmFzZSwK
QEAgLTczLDcgKzc0LDcgQEAKIC8vIFRoZSBvbmx5IGRhdGFiYXNlcyBpbnN0YW5jZXMgbm90IHRy
YWNrZWQgYnkgdGhlIHRyYWNrZXIncyBvcGVuIGRhdGFiYXNlCiAvLyBsaXN0IGFyZSB0aGUgb25l
cyB0aGF0IGhhdmUgbm90IGJlZW4gYWRkZWQgeWV0LCBvciB0aGUgb25lcyB0aGF0IHdlCiAvLyBh
dHRlbXB0ZWQgYW4gb3BlbiBvbiBidXQgZmFpbGVkIHRvLiBTdWNoIGluc3RhbmNlcyBvbmx5IGV4
aXN0IGluIHRoZQotLy8gRGF0YWJhc2VNYW5hZ2VyJ3MgZmFjdG9yeSBtZXRob2RzIGZvciBjcmVh
dGluZyBEYXRhYmFzZUJhY2tlbmRzLgorLy8gRGF0YWJhc2VTZXJ2ZXIncyBmYWN0b3J5IG1ldGhv
ZHMgZm9yIGNyZWF0aW5nIERhdGFiYXNlQmFja2VuZHMuCiAvLwogLy8gVGhlIGZhY3RvcnkgbWV0
aG9kcyB3aWxsIGVpdGhlciBjYWxsIG9wZW5BbmRWZXJpZnlWZXJzaW9uKCkgb3IKIC8vIHBlcmZv
cm1PcGVuQW5kVmVyaWZ5KCkuIFRoZXNlIG1ldGhvZHMgd2lsbCBhZGQgdGhlIG5ld2x5IGluc3Rh
bnRpYXRlZApAQCAtMjA0LDEwICsyMDUsOSBAQCBjb25zdCBjaGFyKiBEYXRhYmFzZUJhY2tlbmQ6
OmRhdGFiYXNlSW5mCiAgICAgcmV0dXJuIGluZm9UYWJsZU5hbWU7CiB9CiAKLURhdGFiYXNlQmFj
a2VuZDo6RGF0YWJhc2VCYWNrZW5kKFBhc3NSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBkYXRhYmFz
ZUNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNp
b24sCitEYXRhYmFzZUJhY2tlbmQ6OkRhdGFiYXNlQmFja2VuZChQYXNzUmVmUHRyPERhdGFiYXNl
QmFja2VuZENvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwKICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1l
LCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIERhdGFiYXNlVHlwZSBkYXRhYmFzZVR5cGUp
CiAgICAgOiBtX2RhdGFiYXNlQ29udGV4dChkYXRhYmFzZUNvbnRleHQpCi0gICAgLCBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQobV9kYXRhYmFzZUNvbnRleHQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkKICAgICAsIG1fbmFtZShuYW1lLmlzb2xhdGVkQ29weSgpKQogICAgICwgbV9leHBlY3Rl
ZFZlcnNpb24oZXhwZWN0ZWRWZXJzaW9uLmlzb2xhdGVkQ29weSgpKQogICAgICwgbV9kaXNwbGF5
TmFtZShkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSkKQEAgLTIxNyw4ICsyMTcsNyBAQCBEYXRh
YmFzZUJhY2tlbmQ6OkRhdGFiYXNlQmFja2VuZChQYXNzUmVmCiAgICAgLCBtX25ldyhmYWxzZSkK
ICAgICAsIG1faXNTeW5jRGF0YWJhc2UoZGF0YWJhc2VUeXBlID09IFN5bmNEYXRhYmFzZSkKIHsK
LSAgICBBU1NFUlQobV9kYXRhYmFzZUNvbnRleHQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
aXNDb250ZXh0VGhyZWFkKCkpOwotICAgIG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2luID0g
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5pc29sYXRlZENvcHko
KTsKKyAgICBtX2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbiA9IG1fZGF0YWJhc2VDb250ZXh0
LT5zZWN1cml0eU9yaWdpbigpLT5pc29sYXRlZENvcHkoKTsKIAogICAgIG1fZGF0YWJhc2VBdXRo
b3JpemVyID0gRGF0YWJhc2VBdXRob3JpemVyOjpjcmVhdGUoaW5mb1RhYmxlTmFtZSk7CiAKQEAg
LTI0Miw3ICsyNDEsOCBAQCBEYXRhYmFzZUJhY2tlbmQ6OkRhdGFiYXNlQmFja2VuZChQYXNzUmVm
CiAKIERhdGFiYXNlQmFja2VuZDo6fkRhdGFiYXNlQmFja2VuZCgpCiB7Ci0gICAgQVNTRVJUKCFt
X29wZW5lZCk7CisgICAgaWYgKG9wZW5lZCgpKQorICAgICAgICBjbG9zZURhdGFiYXNlKCk7CiB9
CiAKIHZvaWQgRGF0YWJhc2VCYWNrZW5kOjpjbG9zZURhdGFiYXNlKCkKQEAgLTQyNywxMSArNDI3
LDYgQEAgYm9vbCBEYXRhYmFzZUJhY2tlbmQ6OnBlcmZvcm1PcGVuQW5kVmVyaQogICAgIHJldHVy
biB0cnVlOwogfQogCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBEYXRhYmFzZUJhY2tlbmQ6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuZ2V0KCk7Ci19Ci0KIFNlY3VyaXR5T3JpZ2luKiBEYXRhYmFzZUJhY2tlbmQ6
OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb250ZXh0VGhyZWFkU2Vj
dXJpdHlPcmlnaW4uZ2V0KCk7CkBAIC02MTgsNyArNjEzLDkgQEAgYm9vbCBEYXRhYmFzZUJhY2tl
bmQ6OmlzSW50ZXJydXB0ZWQoKQogCiB2b2lkIERhdGFiYXNlQmFja2VuZDo6bG9nRXJyb3JNZXNz
YWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmFkZENvbnNvbGVNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsIG1lc3NhZ2UpOworICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgbWFrZSByZWZlcmVuY2Ugb2Yg
dGhlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHIgZnJvbSB0aGUgYmFja2VuZC4KKyAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gbV9kYXRhYmFzZUNvbnRleHQtPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKKyAgICBjb250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShPdGhlck1lc3Nh
Z2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlKTsKIH0KIAogI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlQmFja2VuZC5oCShyZXZpc2lvbiAxNDE3MTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw4ICs0Nyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERhdGFiYXNl
QXV0aG9yaXplcjsKLWNsYXNzIERhdGFiYXNlQ29udGV4dDsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CitjbGFzcyBEYXRhYmFzZUJhY2tlbmRDb250ZXh0OwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiAKIGNsYXNzIERhdGFiYXNlQmFja2VuZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxEYXRhYmFzZUJhY2tlbmQ+IHsKQEAgLTYxLDcgKzYwLDYgQEAgcHVibGljOgogICAgIGJv
b2wgaXNOZXcoKSBjb25zdCB7IHJldHVybiBtX25ldzsgfQogICAgIGJvb2wgaXNTeW5jRGF0YWJh
c2UoKSBjb25zdCB7IHJldHVybiBtX2lzU3luY0RhdGFiYXNlOyB9CiAKLSAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwogICAgIHZp
cnR1YWwgU3RyaW5nIHN0cmluZ0lkZW50aWZpZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmlu
ZyBkaXNwbGF5TmFtZSgpIGNvbnN0OwpAQCAtODgsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIG1hcmtBc0RlbGV0ZWRBbmRDbG9zZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2VJbW1lZGlhdGVseSgpID0gMDsKIAotICAgIERhdGFiYXNlQ29udGV4dCogZGF0YWJhc2VD
b250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFzZUNvbnRleHQuZ2V0KCk7IH0KKyAgICBE
YXRhYmFzZUJhY2tlbmRDb250ZXh0KiBkYXRhYmFzZUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBt
X2RhdGFiYXNlQ29udGV4dC5nZXQoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNz
IENoYW5nZVZlcnNpb25XcmFwcGVyOwpAQCAtMTAyLDcgKzEwMCw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgU3luY0RhdGFiYXNlCiAgICAgfTsKIAotICAgIERhdGFiYXNlQmFja2VuZChQYXNzUmVm
UHRyPERhdGFiYXNlQ29udGV4dD4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBl
eHBlY3RlZFZlcnNpb24sCisgICAgRGF0YWJhc2VCYWNrZW5kKFBhc3NSZWZQdHI8RGF0YWJhc2VC
YWNrZW5kQ29udGV4dD4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3Rl
ZFZlcnNpb24sCiAgICAgICAgIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxv
bmcgZXN0aW1hdGVkU2l6ZSwgRGF0YWJhc2VUeXBlKTsKIAogICAgIHZvaWQgY2xvc2VEYXRhYmFz
ZSgpOwpAQCAtMTI5LDggKzEyNyw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgY2hh
ciogZGF0YWJhc2VJbmZvVGFibGVOYW1lKCk7CiAKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2luOwotICAgIFJlZlB0cjxEYXRhYmFzZUNvbnRl
eHQ+IG1fZGF0YWJhc2VDb250ZXh0OyAvLyBBc3NvY2lhdGVkIHdpdGggbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LgotICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CisgICAgUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IG1fZGF0
YWJhc2VDb250ZXh0OyAvLyBBc3NvY2lhdGVkIHdpdGggbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LgogCiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcgbV9leHBlY3RlZFZlcnNpb247CkBA
IC0xNTEsNiArMTQ4LDggQEAgcHJpdmF0ZToKICAgICBTUUxpdGVEYXRhYmFzZSBtX3NxbGl0ZURh
dGFiYXNlOwogCiAgICAgUmVmUHRyPERhdGFiYXNlQXV0aG9yaXplcj4gbV9kYXRhYmFzZUF1dGhv
cml6ZXI7CisKKyAgICBmcmllbmQgY2xhc3MgRGF0YWJhc2VTZXJ2ZXI7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlQmFja2VuZEFzeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFzeW5jLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5
bmMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJEYXRhYmFzZUJhY2tlbmRBc3luYy5oIgorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKwor
I2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitEYXRhYmFzZUJhY2tlbmRBc3luYzo6RGF0YWJhc2VCYWNrZW5kQXN5bmMoUGFzc1JlZlB0
cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKKyAgICA6IERhdGFiYXNlKGRhdGFi
YXNlQ29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVk
U2l6ZSkKK3sKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERhdGFiYXNlQmFja2VuZEFzeW5jX2gKKyNk
ZWZpbmUgRGF0YWJhc2VCYWNrZW5kQXN5bmNfaAorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
KworI2luY2x1ZGUgIkRhdGFiYXNlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGF0YWJhc2VTZXJ2ZXI7CisKKy8vIEZJ
WE1FOiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIERhdGFiYXNlQmFja2VuZEFzeW5jIGlzIG9ubHkg
YSBwbGFjZSBob2xkZXIKKy8vIGZvciB0aGUgc3BsaXQgb3V0IG9mIHRoZSBEYXRhYmFzZSBiYWNr
ZW5kIHRvIGJlIGRvbmUgbGF0ZXIuIFRoaXMKKy8vIHBsYWNlIGhvbGRlciBpcyBuZWVkZWQgdG8g
YWxsb3cgb3RoZXIgY29kZSB0aGF0IG5lZWQgdG8gcmVmZXJlbmNlIHRoZQorLy8gRGF0YWJhc2VC
YWNrZW5kQXN5bmMgdG8gZG8gc28gYmVmb3JlIHRoZSBwcm9wZXIgYmFja2VuZCBzcGxpdCBpcwor
Ly8gYXZhaWxhYmxlLiBUaGlzIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIHRoZSBhY3R1YWwgaW1w
bGVtZW50YXRpb24gbGF0ZXIuCisKK2NsYXNzIERhdGFiYXNlQmFja2VuZEFzeW5jIDogcHVibGlj
IERhdGFiYXNlIHsKK3ByaXZhdGU6CisgICAgRGF0YWJhc2VCYWNrZW5kQXN5bmMoUGFzc1JlZlB0
cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplKTsKKworICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZU1hbmFnZXI7
IC8vIEZJWE1FOiByZW1vdmUgdGhpcyBvbmNlIHdlIGhhdmUgaXNvbGF0ZWQgdGhpcyB0byB0aGUg
YmFja2VuZC4KKyAgICBmcmllbmQgY2xhc3MgRGF0YWJhc2VTZXJ2ZXI7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjZW5k
aWYgLy8gRGF0YWJhc2VCYWNrZW5kQXN5bmNfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZUJhY2tlbmRDb250ZXh0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIgorCisjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTZWN1cml0eU9yaWdpbiogRGF0YWJhc2VCYWNrZW5k
Q29udGV4dDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAoreworICAgIHJldHVybiBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2Vu
ZENvbnRleHQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgRGF0YWJhc2VCYWNrZW5kQ29udGV4dF9oCisjZGVmaW5lIERhdGFiYXNlQmFja2VuZENvbnRl
eHRfaAorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkRhdGFiYXNlQ29u
dGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKKworLy8gRklYTUU6IFRoaXMgaW1wbGVtZW50
YXRpb24gb2YgRGF0YWJhc2VCYWNrZW5kQ29udGV4dCBpcyBvbmx5IGEgcGxhY2UgaG9sZGVyCisv
LyBmb3IgdGhlIHNwbGl0IG91dCBvZiB0aGUgRGF0YWJhc2VDb250ZXh0IGJhY2tlbmQgdG8gYmUg
ZG9uZSBsYXRlci4gVGhpcworLy8gcGxhY2UgaG9sZGVyIGlzIG5lZWRlZCB0byBhbGxvdyBvdGhl
ciBjb2RlIHRoYXQgbmVlZCB0byByZWZlcmVuY2UgdGhlCisvLyBEYXRhYmFzZUJhY2tlbmRDb250
ZXh0IHRvIGRvIHNvIGJlZm9yZSB0aGUgcHJvcGVyIGJhY2tlbmQgc3BsaXQgaXMKKy8vIGF2YWls
YWJsZS4gVGhpcyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsIGltcGxlbWVudGF0
aW9uIGxhdGVyLgorCitjbGFzcyBEYXRhYmFzZUJhY2tlbmRDb250ZXh0IDogcHVibGljIERhdGFi
YXNlQ29udGV4dCB7CitwdWJsaWM6CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsgfQorICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkK
KworI2VuZGlmIC8vIERhdGFiYXNlQmFja2VuZENvbnRleHRfaApJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZFN5
bmMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kU3luYy5oIgorCisjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitEYXRhYmFzZUJhY2tlbmRTeW5jOjpEYXRhYmFzZUJhY2tl
bmRTeW5jKFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4gZGF0YWJhc2VDb250ZXh0
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25z
dCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpCisgICAg
OiBEYXRhYmFzZVN5bmMoZGF0YWJhc2VDb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRp
c3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKQoreworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZFN5bmMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZFN5bmMu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VCYWNrZW5kU3luYy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRGF0YWJhc2VC
YWNrZW5kU3luY19oCisjZGVmaW5lIERhdGFiYXNlQmFja2VuZFN5bmNfaAorCisjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkRhdGFiYXNlU3luYy5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERhdGFi
YXNlU2VydmVyOworCisvLyBGSVhNRTogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBEYXRhYmFzZUJh
Y2tlbmRTeW5jIGlzIG9ubHkgYSBwbGFjZSBob2xkZXIKKy8vIGZvciB0aGUgc3BsaXQgb3V0IG9m
IHRoZSBEYXRhYmFzZVN5bmMgYmFja2VuZCB0byBiZSBkb25lIGxhdGVyLiBUaGlzCisvLyBwbGFj
ZSBob2xkZXIgaXMgbmVlZGVkIHRvIGFsbG93IG90aGVyIGNvZGUgdGhhdCBuZWVkIHRvIHJlZmVy
ZW5jZSB0aGUKKy8vIERhdGFiYXNlQmFja2VuZFN5bmMgdG8gZG8gc28gYmVmb3JlIHRoZSBwcm9w
ZXIgYmFja2VuZCBzcGxpdCBpcworLy8gYXZhaWxhYmxlLiBUaGlzIHNob3VsZCBiZSByZXBsYWNl
ZCB3aXRoIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gbGF0ZXIuCisKK2NsYXNzIERhdGFiYXNl
QmFja2VuZFN5bmMgOiBwdWJsaWMgRGF0YWJhc2VTeW5jIHsKK3ByaXZhdGU6CisgICAgRGF0YWJh
c2VCYWNrZW5kU3luYyhQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcm
IGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOworCisgICAgZnJpZW5k
IGNsYXNzIERhdGFiYXNlTWFuYWdlcjsgLy8gRklYTUU6IHJlbW92ZSB0aGlzIG9uY2Ugd2UgaGF2
ZSBpc29sYXRlZCB0aGlzIHRvIHRoZSBiYWNrZW5kLgorICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFz
ZVNlcnZlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShTUUxfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBEYXRhYmFzZUJhY2tlbmRTeW5jX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFz
ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlQmFzZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkRhdGFiYXNlQmFzZS5oIgorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
KworI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKKyNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitEYXRhYmFzZUJhc2U6OkRhdGFiYXNlQmFzZShQYXNzUmVmUHRyPERh
dGFiYXNlQmFja2VuZENvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBEYXRhYmFzZVR5cGUgZGF0YWJhc2VUeXBl
KQorICAgIDogRGF0YWJhc2VCYWNrZW5kKGRhdGFiYXNlQ29udGV4dCwgbmFtZSwgZXhwZWN0ZWRW
ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSwgZGF0YWJhc2VUeXBlKQorICAgICwg
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KG1fZGF0YWJhc2VDb250ZXh0LT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpCit7CisgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXND
b250ZXh0VGhyZWFkKCkpOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBEYXRhYmFzZUJh
c2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCk7Cit9CisKK3ZvaWQgRGF0YWJhc2VCYXNlOjpsb2dFcnJv
ck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgbWVzc2FnZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgRGF0YWJhc2VCYXNlX2gKKyNkZWZpbmUgRGF0YWJhc2VCYXNlX2gKKwor
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owor
CitjbGFzcyBEYXRhYmFzZUJhc2UgOiBwdWJsaWMgRGF0YWJhc2VCYWNrZW5kIHsKK3B1YmxpYzoK
KyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3Q7CisgICAgdm9pZCBsb2dFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKwor
cHJvdGVjdGVkOgorICAgIERhdGFiYXNlQmFzZShQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENv
bnRleHQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9u
LAorICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGlt
YXRlZFNpemUsIERhdGFiYXNlVHlwZSk7CisKKyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIERhdGFi
YXNlQmFzZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCShyZXZpc2lvbiAxNDE3MTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJD
aHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkRhdGFiYXNl
QmFja2VuZENvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRl
ICJEYXRhYmFzZVRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgpAQCAtMTA5LDcg
KzExMCw3IEBAIERhdGFiYXNlQ29udGV4dDo6RGF0YWJhc2VDb250ZXh0KFNjcmlwdEUKIAogICAg
IC8vIEZvciBkZWJ1ZyBhY2NvdW50aW5nIG9ubHkuIFdlIG11c3QgZG8gdGhpcyBiZWZvcmUgd2Ug
cmVnaXN0ZXIgdGhlCiAgICAgLy8gaW5zdGFuY2UuIFRoZSBhc3NlcnRpb25zIGFzc3VtZSB0aGlz
LgotICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRpZENvbnN0cnVjdERhdGFiYXNlQ29u
dGV4dCgpOyAKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kaWRDb25zdHJ1Y3REYXRh
YmFzZUNvbnRleHQoKTsKIAogICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnJlZ2lzdGVy
RGF0YWJhc2VDb250ZXh0KHRoaXMpOwogfQpAQCAtMTUxLDYgKzE1MiwxNSBAQCB2b2lkIERhdGFi
YXNlQ29udGV4dDo6c3RvcCgpCiAgICAgc3RvcERhdGFiYXNlcygpOwogfQogCitQYXNzUmVmUHRy
PERhdGFiYXNlQmFja2VuZENvbnRleHQ+IERhdGFiYXNlQ29udGV4dDo6YmFja2VuZCgpCit7Cisg
ICAgcmVmKCk7CisgICAgRGF0YWJhc2VCYWNrZW5kQ29udGV4dCogYmFja2VuZDsKKyAgICBiYWNr
ZW5kID0gcmVpbnRlcnByZXRfY2FzdDxEYXRhYmFzZUJhY2tlbmRDb250ZXh0Kj4odGhpcyk7Cisg
ICAgUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGJhY2tlbmRSZWYgPSBhZG9wdFJlZihi
YWNrZW5kKTsKKyAgICByZXR1cm4gYmFja2VuZFJlZi5yZWxlYXNlKCk7Cit9CisKIERhdGFiYXNl
VGhyZWFkKiBEYXRhYmFzZUNvbnRleHQ6OmRhdGFiYXNlVGhyZWFkKCkKIHsKICAgICBpZiAoIW1f
ZGF0YWJhc2VUaHJlYWQgJiYgIW1faGFzT3BlbkRhdGFiYXNlcykgewpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oCShy
ZXZpc2lvbiAxNDE3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIERhdGFiYXNlOworY2xhc3MgRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dDsKIGNsYXNzIERhdGFiYXNlVGFza1N5bmNocm9uaXplcjsKIGNsYXNzIERhdGFiYXNlVGhy
ZWFkOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKQEAgLTUwLDcgKzUxLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CiAgICAgdmlydHVhbCB2
b2lkIHN0b3AoKTsKIAotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KKyAgICBQYXNz
UmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGJhY2tlbmQoKTsKICAgICBEYXRhYmFzZVRo
cmVhZCogZGF0YWJhc2VUaHJlYWQoKTsKIAogICAgIHZvaWQgc2V0SGFzT3BlbkRhdGFiYXNlcygp
IHsgbV9oYXNPcGVuRGF0YWJhc2VzID0gdHJ1ZTsgfQpAQCAtNzIsNiArNzMsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWQ7CiAgICAgYm9vbCBtX2hhc1JlcXVlc3RlZFRlcm1p
bmF0aW9uOwogCisgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlQmFja2VuZENvbnRleHQ7CiAgICAg
ZnJpZW5kIGNsYXNzIERhdGFiYXNlTWFuYWdlcjsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAJKHJl
dmlzaW9uIDE0MTcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDE2IEBACiAKICNp
bmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZC5oIgorI2luY2x1
ZGUgIkRhdGFiYXNlQmFja2VuZEFzeW5jLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZFN5bmMuaCIKICNpbmNsdWRlICJEYXRh
YmFzZUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAi
RGF0YWJhc2VTeW5jLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRGF0YWJhc2VJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCkBAIC0yMDEsMjggKzIwNSwz
MyBAQCBQYXNzUmVmUHRyPERhdGFiYXNlPiBEYXRhYmFzZU1hbmFnZXI6Om9wCiAgICAgdW5zaWdu
ZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0
aW9uQ2FsbGJhY2ssCiAgICAgRGF0YWJhc2VFcnJvciYgZXJyb3IpCiB7CisgICAgU2NyaXB0Q29u
dHJvbGxlcjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFJlZlB0cjxEYXRhYmFzZUNvbnRl
eHQ+IGRhdGFiYXNlQ29udGV4dCA9IGRhdGFiYXNlQ29udGV4dEZvcihjb250ZXh0KTsKKyAgICBS
ZWZQdHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4gYmFja2VuZENvbnRleHQgPSBkYXRhYmFzZUNv
bnRleHQtPmJhY2tlbmQoKTsKICAgICBBU1NFUlQoZXJyb3IgPT0gRGF0YWJhc2VFcnJvcjo6Tm9u
ZSk7CiAKLSAgICBpZiAoIWNhbkVzdGFibGlzaERhdGFiYXNlKGNvbnRleHQsIG5hbWUsIGRpc3Bs
YXlOYW1lLCBlc3RpbWF0ZWRTaXplKSkgeworICAgIGlmICghbV9zZXJ2ZXItPmNhbkVzdGFibGlz
aERhdGFiYXNlKGJhY2tlbmRDb250ZXh0LmdldCgpLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1h
dGVkU2l6ZSkpIHsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJEYXRhYmFzZSAlcyBmb3Igb3Jp
Z2luICVzIG5vdCBhbGxvd2VkIHRvIGJlIGVzdGFibGlzaGVkIiwgbmFtZS5hc2NpaSgpLmRhdGEo
KSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0cjxEYXRhYmFzZT4gZGF0YWJh
c2UgPSBhZG9wdFJlZihuZXcgRGF0YWJhc2UoZGF0YWJhc2VDb250ZXh0LCBuYW1lLCBleHBlY3Rl
ZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKSk7Ci0KICAgICBTdHJpbmcgZXJy
b3JNZXNzYWdlOwotICAgIGlmICghZGF0YWJhc2UtPm9wZW5BbmRWZXJpZnlWZXJzaW9uKCFjcmVh
dGlvbkNhbGxiYWNrLCBlcnJvciwgZXJyb3JNZXNzYWdlKSkgewotICAgICAgICBkYXRhYmFzZS0+
bG9nRXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZSk7CisgICAgUmVmUHRyPERhdGFiYXNlQmFja2Vu
ZEFzeW5jPiBiYWNrZW5kID0gYWRvcHRSZWYobmV3IERhdGFiYXNlQmFja2VuZEFzeW5jKGJhY2tl
bmRDb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRT
aXplKSk7CisKKyAgICBpZiAoIWJhY2tlbmQtPm9wZW5BbmRWZXJpZnlWZXJzaW9uKCFjcmVhdGlv
bkNhbGxiYWNrLCBlcnJvciwgZXJyb3JNZXNzYWdlKSkgeworICAgICAgICBsb2dFcnJvck1lc3Nh
Z2UoY29udGV4dCwgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgc2V0RGF0YWJhc2VEZXRhaWxzKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIG5hbWUsIGRp
c3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKKyAgICAvLyBOb3cgdGhhdCB3ZSBoYXZlIGEgYmFj
a2VuZCwgd2UgY2FuIGNyZWF0ZSB0aGUgZnJvbnRlbmQgZGIgZm9yIGl0OgorICAgIFJlZlB0cjxE
YXRhYmFzZT4gZGF0YWJhc2UgPSBEYXRhYmFzZTo6Y3JlYXRlKGNvbnRleHQsIGJhY2tlbmQpOwor
CisgICAgbV9zZXJ2ZXItPnNldERhdGFiYXNlRGV0YWlscyhjb250ZXh0LT5zZWN1cml0eU9yaWdp
bigpLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CiAgICAgZGF0YWJhc2VDb250
ZXh0LT5zZXRIYXNPcGVuRGF0YWJhc2VzKCk7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZE9wZW5EYXRhYmFzZShjb250ZXh0LCBkYXRhYmFzZSwgY29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKS0+aG9zdCgpLCBuYW1lLCBleHBlY3RlZFZlcnNpb24pOwogCi0gICAgaWYgKGRhdGFi
YXNlLT5pc05ldygpICYmIGNyZWF0aW9uQ2FsbGJhY2suZ2V0KCkpIHsKKyAgICBpZiAoYmFja2Vu
ZC0+aXNOZXcoKSAmJiBjcmVhdGlvbkNhbGxiYWNrLmdldCgpKSB7CiAgICAgICAgIExPRyhTdG9y
YWdlQVBJLCAiU2NoZWR1bGluZyBEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrIGZvciBkYXRh
YmFzZSAlcFxuIiwgZGF0YWJhc2UuZ2V0KCkpOwogICAgICAgICBkYXRhYmFzZS0+bV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrOjpj
cmVhdGUoZGF0YWJhc2UsIGNyZWF0aW9uQ2FsbGJhY2spKTsKICAgICB9CkBAIC0yMzUsMjUgKzI0
NCwyOSBAQCBQYXNzUmVmUHRyPERhdGFiYXNlU3luYz4gRGF0YWJhc2VNYW5hZ2VyCiAgICAgdW5z
aWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNy
ZWF0aW9uQ2FsbGJhY2ssIERhdGFiYXNlRXJyb3ImIGVycm9yKQogewogICAgIFJlZlB0cjxEYXRh
YmFzZUNvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCA9IGRhdGFiYXNlQ29udGV4dEZvcihjb250ZXh0
KTsKKyAgICBSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4gYmFja2VuZENvbnRleHQgPSBk
YXRhYmFzZUNvbnRleHQtPmJhY2tlbmQoKTsKICAgICBBU1NFUlQoY29udGV4dC0+aXNDb250ZXh0
VGhyZWFkKCkpOwogICAgIEFTU0VSVChlcnJvciA9PSBEYXRhYmFzZUVycm9yOjpOb25lKTsKIAot
ICAgIGlmICghY2FuRXN0YWJsaXNoRGF0YWJhc2UoY29udGV4dCwgbmFtZSwgZGlzcGxheU5hbWUs
IGVzdGltYXRlZFNpemUpKSB7CisgICAgaWYgKCFtX3NlcnZlci0+Y2FuRXN0YWJsaXNoRGF0YWJh
c2UoYmFja2VuZENvbnRleHQuZ2V0KCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXpl
KSkgewogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIkRhdGFiYXNlICVzIGZvciBvcmlnaW4gJXMg
bm90IGFsbG93ZWQgdG8gYmUgZXN0YWJsaXNoZWQiLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBjb250
ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVmUHRyPERhdGFiYXNlU3luYz4gZGF0YWJhc2Ug
PSBhZG9wdFJlZihuZXcgRGF0YWJhc2VTeW5jKGRhdGFiYXNlQ29udGV4dCwgbmFtZSwgZXhwZWN0
ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkpOwotCiAgICAgU3RyaW5nIGVy
cm9yTWVzc2FnZTsKLSAgICBpZiAoIWRhdGFiYXNlLT5vcGVuQW5kVmVyaWZ5VmVyc2lvbighY3Jl
YXRpb25DYWxsYmFjaywgZXJyb3IsIGVycm9yTWVzc2FnZSkpIHsKLSAgICAgICAgZGF0YWJhc2Ut
PmxvZ0Vycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOworICAgIFJlZlB0cjxEYXRhYmFzZUJhY2tl
bmRTeW5jPiBiYWNrZW5kID0gYWRvcHRSZWYobmV3IERhdGFiYXNlQmFja2VuZFN5bmMoYmFja2Vu
ZENvbnRleHQsIG5hbWUsIGV4cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNp
emUpKTsKKworICAgIGlmICghYmFja2VuZC0+b3BlbkFuZFZlcmlmeVZlcnNpb24oIWNyZWF0aW9u
Q2FsbGJhY2ssIGVycm9yLCBlcnJvck1lc3NhZ2UpKSB7CisgICAgICAgIGxvZ0Vycm9yTWVzc2Fn
ZShjb250ZXh0LCBlcnJvck1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAg
ICBzZXREYXRhYmFzZURldGFpbHMoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbmFtZSwgZGlz
cGxheU5hbWUsIGVzdGltYXRlZFNpemUpOworICAgIC8vIE5vdyB0aGF0IHdlIGhhdmUgYSBiYWNr
ZW5kLCB3ZSBjYW4gY3JlYXRlIHRoZSBmcm9udGVuZCBkYiBmb3IgaXQ6CisgICAgUmVmUHRyPERh
dGFiYXNlU3luYz4gZGF0YWJhc2UgPSBEYXRhYmFzZVN5bmM6OmNyZWF0ZShjb250ZXh0LCBiYWNr
ZW5kKTsKKworICAgIG1fc2VydmVyLT5zZXREYXRhYmFzZURldGFpbHMoY29udGV4dC0+c2VjdXJp
dHlPcmlnaW4oKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOwogCi0gICAgaWYg
KGRhdGFiYXNlLT5pc05ldygpICYmIGNyZWF0aW9uQ2FsbGJhY2suZ2V0KCkpIHsKKyAgICBpZiAo
YmFja2VuZC0+aXNOZXcoKSAmJiBjcmVhdGlvbkNhbGxiYWNrLmdldCgpKSB7CiAgICAgICAgIExP
RyhTdG9yYWdlQVBJLCAiSW52b2tpbmcgdGhlIGNyZWF0aW9uIGNhbGxiYWNrIGZvciBkYXRhYmFz
ZSAlcFxuIiwgZGF0YWJhc2UuZ2V0KCkpOwogICAgICAgICBjcmVhdGlvbkNhbGxiYWNrLT5oYW5k
bGVFdmVudChkYXRhYmFzZS5nZXQoKSk7CiAgICAgfQpAQCAtMjY2LDcgKzI3OSw3IEBAIGJvb2wg
RGF0YWJhc2VNYW5hZ2VyOjpoYXNPcGVuRGF0YWJhc2VzKFMKICAgICBSZWZQdHI8RGF0YWJhc2VD
b250ZXh0PiBkYXRhYmFzZUNvbnRleHQgPSBleGlzdGluZ0RhdGFiYXNlQ29udGV4dEZvcihjb250
ZXh0KTsKICAgICBpZiAoIWRhdGFiYXNlQ29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBkYXRhYmFzZUNvbnRleHQtPm1faGFzT3BlbkRhdGFiYXNlczsKKyAgICByZXR1
cm4gZGF0YWJhc2VDb250ZXh0LT5oYXNPcGVuRGF0YWJhc2VzKCk7CiB9CiAKIHZvaWQgRGF0YWJh
c2VNYW5hZ2VyOjpzdG9wRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IERhdGFiYXNlVGFza1N5bmNocm9uaXplciogc3luY2hyb25pemVyKQpAQCAtMzU1LDIyICszNjgs
MTcgQEAgdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmludGVycnVwdEFsbERhdGFiYQogewogICAgIFJl
ZlB0cjxEYXRhYmFzZUNvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCA9IGV4aXN0aW5nRGF0YWJhc2VD
b250ZXh0Rm9yKGNvbnRleHQpOwogICAgIGlmIChkYXRhYmFzZUNvbnRleHQpCi0gICAgICAgIG1f
c2VydmVyLT5pbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnRleHQpOworICAgICAg
ICBtX3NlcnZlci0+aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChkYXRhYmFzZUNvbnRl
eHQtPmJhY2tlbmQoKS5nZXQoKSk7CiB9CiAKLWJvb2wgRGF0YWJhc2VNYW5hZ2VyOjpjYW5Fc3Rh
Ymxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1h
dGVkU2l6ZSkKLXsKLSAgICByZXR1cm4gbV9zZXJ2ZXItPmNhbkVzdGFibGlzaERhdGFiYXNlKGNv
bnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKLX0KLQotdm9pZCBEYXRh
YmFzZU1hbmFnZXI6OnNldERhdGFiYXNlRGV0YWlscyhTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxv
bmcgZXN0aW1hdGVkU2l6ZSkKK3Vuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZU1hbmFnZXI6Omdl
dE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKQogewot
ICAgIG1fc2VydmVyLT5zZXREYXRhYmFzZURldGFpbHMob3JpZ2luLCBuYW1lLCBkaXNwbGF5TmFt
ZSwgZXN0aW1hdGVkU2l6ZSk7CisgICAgcmV0dXJuIG1fc2VydmVyLT5nZXRNYXhTaXplRm9yRGF0
YWJhc2UoZGF0YWJhc2UpOwogfQogCi11bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VNYW5hZ2Vy
OjpnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkK
K3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpsb2dFcnJvck1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIHJldHVybiBtX3Nl
cnZlci0+Z2V0TWF4U2l6ZUZvckRhdGFiYXNlKGRhdGFiYXNlKTsKKyAgICBjb250ZXh0LT5hZGRD
b25zb2xlTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNz
YWdlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCShyZXZpc2lv
biAxNDE3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
TWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJB
YnN0cmFjdERhdGFiYXNlU2VydmVyLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VCYXNpY1R5cGVzLmgi
CisjaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VFcnJvci5o
IgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
QEAgLTQwLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBYnN0cmFjdERh
dGFiYXNlU2VydmVyOwogY2xhc3MgRGF0YWJhc2U7CitjbGFzcyBEYXRhYmFzZUJhY2tlbmQ7CiBj
bGFzcyBEYXRhYmFzZUNhbGxiYWNrOwogY2xhc3MgRGF0YWJhc2VDb250ZXh0OwogY2xhc3MgRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50OwpAQCAtMTEyLDkgKzExNCw2IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CiAKLSAgICBib29sIGNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2ln
bmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7Ci0KLSAgICB2b2lkIHNldERhdGFiYXNlRGV0YWlscyhT
ZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5
TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKICAgICB1bnNpZ25lZCBsb25nIGxv
bmcgZ2V0TWF4U2l6ZUZvckRhdGFiYXNlKGNvbnN0IERhdGFiYXNlQmFja2VuZCopOwogCiBwcml2
YXRlOgpAQCAtMTI1LDYgKzEyNCw4IEBAIHByaXZhdGU6CiAgICAgLy8gaXQgYWxyZWFkeSBleGlz
dCBwcmV2aW91c2x5LiBPdGhlcndpc2UsIGl0IHJldHVybnMgMC4KICAgICBQYXNzUmVmUHRyPERh
dGFiYXNlQ29udGV4dD4gZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOwogCisgICAgc3RhdGljIHZvaWQgbG9nRXJyb3JNZXNzYWdlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworCiAgICAgQWJzdHJhY3REYXRh
YmFzZVNlcnZlciogbV9zZXJ2ZXI7CiAgICAgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBtX2NsaWVu
dDsKICAgICBib29sIG1fZGF0YWJhc2VJc0F2YWlsYWJsZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwCShyZXZp
c2lvbiAxNDE3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlU2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOSBAQAogCiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZEFzeW5jLmgiCisj
aW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFj
a2VuZFN5bmMuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlIDx3dGYv
VW51c2VkUGFyYW0uaD4KIApAQCAtMTQxLDE0ICsxNDQsMTQgQEAgdm9pZCBEYXRhYmFzZVNlcnZl
cjo6Y2xvc2VEYXRhYmFzZXNJbW1lZAogfQogI2VuZGlmIC8vIFBMQVRGT1JNKENIUk9NSVVNKQog
Ci12b2lkIERhdGFiYXNlU2VydmVyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNv
bnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit2b2lkIERhdGFiYXNlU2VydmVy
OjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IERhdGFiYXNlQmFja2VuZENv
bnRleHQqIGNvbnRleHQpCiB7CiAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuaW50ZXJy
dXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb250ZXh0KTsKIH0KIAotYm9vbCBEYXRhYmFzZVNl
cnZlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25l
ZCBsb25nIGVzdGltYXRlZFNpemUpCitib29sIERhdGFiYXNlU2VydmVyOjpjYW5Fc3RhYmxpc2hE
YXRhYmFzZShEYXRhYmFzZUJhY2tlbmRDb250ZXh0KiBiYWNrZW5kQ29udGV4dCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGlt
YXRlZFNpemUpCiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNhbkVz
dGFibGlzaERhdGFiYXNlKGNvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXpl
KTsKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuY2FuRXN0YWJsaXNoRGF0
YWJhc2UoYmFja2VuZENvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsK
IH0KIAogdm9pZCBEYXRhYmFzZVNlcnZlcjo6c2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaAkocmV2aXNpb24gMTQx
NzExKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw5ICs2OCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgY2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAjZW5kaWYgLy8gUExBVEZPUk0oQ0hST01JVU0p
CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25z
dCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgdmlydHVhbCB2b2lkIGludGVycnVwdEFs
bERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgRGF0YWJhc2VCYWNrZW5kQ29udGV4dCopOwogCi0g
ICAgdmlydHVhbCBib29sIGNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2ln
bmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CisgICAgdmlydHVhbCBib29sIGNhbkVzdGFibGlzaERh
dGFiYXNlKERhdGFiYXNlQmFja2VuZENvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVz
dGltYXRlZFNpemUpOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIGdldE1heFNpemVG
b3JEYXRhYmFzZShjb25zdCBEYXRhYmFzZUJhY2tlbmQqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAJKHJldmlzaW9u
IDE0MTcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VT
eW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOCBAQAogCiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKKyNpbmNs
dWRlICJEYXRhYmFzZUJhY2tlbmRTeW5jLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VDYWxsYmFjay5o
IgogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdl
ci5oIgpAQCAtNDksMTggKzUxLDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGF0YWJh
c2VTeW5jOjpEYXRhYmFzZVN5bmMoUGFzc1JlZlB0cjxEYXRhYmFzZUNvbnRleHQ+IGRhdGFiYXNl
Q29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lv
biwKKy8vIEZJWE1FOiBUaGUgRGF0YWJhc2VNYW5hZ2VyIG5lZWRzIHRvIGNyZWF0ZSBhIERhdGFi
YXNlU3luYyBpbnN0YW5jZSBmcm9tIGl0cyBiYWNrZW5kLgorLy8gVGhpcyBmYWN0b3J5IG1ldGhv
ZCBpcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kIHRvIHRoYXQgRGF0YWJhc2VNYW5hZ2VyIG5lZWQu
CisvLyBXaGVuIHRoZSBiYWNrZW5kIGhhcyBhY3R1YWxseSBiZWVuIHNwbGl0IG91dCBmcm9tIHRo
ZSBEYXRhYmFzZVN5bmMsIHdlIHNob3VsZCBiZQorLy8gdXNpbmcgdGhlIHVwZGF0ZWQgRGF0YWJh
c2UgY29uc3RydWN0b3IgaW5zdGVhZCBvZiB0aGlzIHdvcmthcm91bmQsIGFuZCB0aGlzCisvLyBt
ZXRob2Qgc2hvdWxkIGJlIGRlbGV0ZWQuCitQYXNzUmVmUHRyPERhdGFiYXNlU3luYz4gRGF0YWJh
c2VTeW5jOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8RGF0YWJh
c2VCYWNrZW5kU3luYz4gYmFja2VuZCkKK3sKKyAgICByZXR1cm4gYmFja2VuZDsKK30KKworRGF0
YWJhc2VTeW5jOjpEYXRhYmFzZVN5bmMoUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0
PiBkYXRhYmFzZUNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBl
Y3RlZFZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRp
c3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpCi0gICAgOiBEYXRhYmFzZUJh
Y2tlbmQoZGF0YWJhc2VDb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1l
LCBlc3RpbWF0ZWRTaXplLCBTeW5jRGF0YWJhc2UpCisgICAgOiBEYXRhYmFzZUJhc2UoZGF0YWJh
c2VDb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRT
aXplLCBTeW5jRGF0YWJhc2UpCiB7CiB9CiAKIERhdGFiYXNlU3luYzo6fkRhdGFiYXNlU3luYygp
CiB7CiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFk
KCkpOwotCi0gICAgaWYgKG9wZW5lZCgpKQotICAgICAgICBjbG9zZURhdGFiYXNlKCk7CiB9CiAK
IHZvaWQgRGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKGNvbnN0IFN0cmluZyYgb2xkVmVyc2lv
biwgY29uc3QgU3RyaW5nJiBuZXdWZXJzaW9uLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3lu
Y0NhbGxiYWNrPiBjaGFuZ2VWZXJzaW9uQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3lu
Yy5oCShyZXZpc2lvbiAxNDE3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlU3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kLmgiCisj
aW5jbHVkZSAiRGF0YWJhc2VCYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VCYXNpY1R5cGVzLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTQ0LDEzICs0NCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERh
dGFiYXNlQmFja2VuZFN5bmM7CiBjbGFzcyBEYXRhYmFzZUNhbGxiYWNrOwogY2xhc3MgU1FMVHJh
bnNhY3Rpb25TeW5jOwogY2xhc3MgU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s7CiBjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKIAogLy8gSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3Mgc2hvdWxkIGJlIGNy
ZWF0ZWQgYW5kIHVzZWQgb25seSBvbiB0aGUgd29ya2VyJ3MgY29udGV4dCB0aHJlYWQuCi1jbGFz
cyBEYXRhYmFzZVN5bmMgOiBwdWJsaWMgRGF0YWJhc2VCYWNrZW5kIHsKK2NsYXNzIERhdGFiYXNl
U3luYyA6IHB1YmxpYyBEYXRhYmFzZUJhc2UgewogcHVibGljOgogICAgIHZpcnR1YWwgfkRhdGFi
YXNlU3luYygpOwogCkBAIC03Myw4ICs3NCwxMCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRl
OgotICAgIERhdGFiYXNlU3luYyhQYXNzUmVmUHRyPERhdGFiYXNlQ29udGV4dD4sIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sCisgICAgRGF0YWJhc2VT
eW5jKFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4sIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sCiAgICAgICAgICAgICAgICAgIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kU3luYz4pOworCiAgICAgdm9pZCBydW5U
cmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiwgYm9vbCBy
ZWFkT25seSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgYm9vbCBvcGVuQW5kVmVyaWZ5VmVyc2lv
bihib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBEYXRhYmFzZUVycm9yJiwgU3RyaW5nJiBl
cnJvck1lc3NhZ2UpOwpAQCAtODIsNiArODUsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2xh
c3RFcnJvck1lc3NhZ2U7CiAKICAgICBmcmllbmQgY2xhc3MgRGF0YWJhc2VNYW5hZ2VyOworICAg
IGZyaWVuZCBjbGFzcyBEYXRhYmFzZUJhY2tlbmRTeW5jOyAvLyBGSVhNRTogcmVtb3ZlIHRoaXMg
d2hlbiB0aGUgYmFja2VuZCBoYXMgYmVlbiBzcGxpdCBvdXQuCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVHJhY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCShyZXZpc2lvbiAxNDE3MTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDE0ICszNCwxMyBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUg
IkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZC5oIgotI2luY2x1ZGUg
IkRhdGFiYXNlQ29udGV4dC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIK
ICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXJD
bGllbnQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJPcmlnaW5RdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0j
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5IYXNoLmgiCiAjaW5jbHVkZSAiU1FMaXRl
RmlsZVN5c3RlbS5oIgpAQCAtMTA5LDI0ICsxMDgsMzYgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6
Om9wZW5UcmFja2VyRGF0YWJhcwogICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2so
KSk7CiAKICAgICBpZiAobV9kYXRhYmFzZS5pc09wZW4oKSkKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm47IC8vIEFscmVhZHkgb3Blbi4gTm90aGluZyBtb3JlIHRvIGRvLgogCisgICAg
Ly8gSWYgY3JlYXRlSWZEb2VzTm90RXhpc3QgaXMgZmFsc2UsIFNRTGl0ZUZpbGVTeXN0ZW06OmVu
c3VyZURhdGFiYXNlRmlsZUV4aXN0cygpCisgICAgLy8gd2lsbCByZXR1cm4gZmFsc2UgaWYgdGhl
IGRhdGFiYXNlIGZpbGUgZG9lcyBub3QgZXhpc3QuCisgICAgLy8gSWYgY3JlYXRlSWZEb2VzTm90
RXhpc3QgaXMgdHJ1ZSwgU1FMaXRlRmlsZVN5c3RlbTo6ZW5zdXJlRGF0YWJhc2VGaWxlRXhpc3Rz
KCkKKyAgICAvLyB3aWxsIGF0dGVtcHQgdG8gY3JlYXRlIHRoZSBwYXRoIHRvIHRoZSBkYXRhYmFz
ZSBmaWxlIGlmIGl0IGRvZXMgbm90CisgICAgLy8gZXhpc3RzIHlldC4gSXQnbGwgcmV0dXJuIHRy
dWUgaWYgdGhlIHBhdGggYWxyZWFkeSBleGlzdHMsIG9yIGlmIGl0CisgICAgLy8gc3VjY2Vzc2Z1
bGx5IGNyZWF0ZXMgdGhlIHBhdGguIEVsc2UsIGl0IHdpbGwgcmV0dXJuIGZhbHNlLgogICAgIFN0
cmluZyBkYXRhYmFzZVBhdGggPSB0cmFja2VyRGF0YWJhc2VQYXRoKCk7CiAgICAgaWYgKCFTUUxp
dGVGaWxlU3lzdGVtOjplbnN1cmVEYXRhYmFzZUZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoLCBjcmVh
dGVJZkRvZXNOb3RFeGlzdCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIE9wZW4gdGhlIGRh
dGFiYXNlIHVuY29uZGl0aW9uYWxseS4gSWYgb25lIGRvZXMgbm90IGV4aXN0cyBhbHJlYWR5LCBv
cGVuCisgICAgLy8gYSBuZXcgb25lLgogICAgIGlmICghbV9kYXRhYmFzZS5vcGVuKGRhdGFiYXNl
UGF0aCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdoYXQgZG8gZG8gaGVyZT8KICAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBkYXRhYmFzZVBhdGggJXMuIiwgZGF0YWJhc2VQYXRoLmFz
Y2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2RhdGFiYXNlLmRp
c2FibGVUaHJlYWRpbmdDaGVja3MoKTsKKworICAgIC8vIEVuc3VyZSB0aGF0IHRoZSAnT3JpZ2lu
cycgdGFibGUgZXhpc3RzLiBDcmVhdGUgaXQgaWYgaXQgZG9lc24ndCBleGlzdCB5ZXQuCiAgICAg
aWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJPcmlnaW5zIikpIHsKICAgICAgICAgaWYgKCFt
X2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgT3JpZ2lucyAob3JpZ2luIFRF
WFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHF1b3RhIElOVEVHRVIgTk9UIE5VTEwgT04g
Q09ORkxJQ1QgRkFJTCk7IikpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBhbmQgaGVyZQogICAg
ICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIE9yaWdpbnMgdGFibGUiKTsKICAg
ICAgICAgfQogICAgIH0KKworICAgIC8vIEVuc3VyZSB0aGF0IHRoZSAnRGF0YWJhc2VzJyB0YWJs
ZSBleGlzdHMuIENyZWF0ZSBpdCBpZiBpdCBkb2Vzbid0IGV4aXN0IHlldC4KICAgICBpZiAoIW1f
ZGF0YWJhc2UudGFibGVFeGlzdHMoIkRhdGFiYXNlcyIpKSB7CiAgICAgICAgIGlmICghbV9kYXRh
YmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIERhdGFiYXNlcyAoZ3VpZCBJTlRFR0VS
IFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQsIG9yaWdpbiBURVhULCBuYW1lIFRFWFQsIGRpc3Bs
YXlOYW1lIFRFWFQsIGVzdGltYXRlZFNpemUgSU5URUdFUiwgcGF0aCBURVhUKTsiKSkgewogICAg
ICAgICAgICAgLy8gRklYTUU6IGFuZCBoZXJlCkBAIC0xMzUsNyArMTQ2LDcgQEAgdm9pZCBEYXRh
YmFzZVRyYWNrZXI6Om9wZW5UcmFja2VyRGF0YWJhcwogICAgIH0KIH0KIAotYm9vbCBEYXRhYmFz
ZVRyYWNrZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5z
aWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQorYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNhbkVzdGFi
bGlzaERhdGFiYXNlKERhdGFiYXNlQmFja2VuZENvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0
ZWRTaXplKQogewogICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBjb250ZXh0LT5zZWN1cml0
eU9yaWdpbigpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXF1aXJlbWVudDsKQEAgLTE0Myw3
ICsxNTQsNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhCiAgICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwogICAgICAgICBM
b2NrZXI8T3JpZ2luUXVvdGFNYW5hZ2VyPiBxdW90YU1hbmFnZXJMb2NrZXIob3JpZ2luUXVvdGFN
YW5hZ2VyKCkpOwogCi0gICAgICAgIGlmICghY2FuQ3JlYXRlRGF0YWJhc2Uob3JpZ2luLCBuYW1l
KSkKKyAgICAgICAgaWYgKGlzRGVsZXRpbmdEYXRhYmFzZU9yT3JpZ2luRm9yKG9yaWdpbiwgbmFt
ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgcmVjb3JkQ3JlYXRpbmdE
YXRhYmFzZShvcmlnaW4sIG5hbWUpOwpAQCAtMTY4LDggKzE3OSw3IEBAIGJvb2wgRGF0YWJhc2VU
cmFja2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmEKIAogICAgIC8vIEdpdmUgdGhlIGNocm9tZSBjbGll
bnQgYSBjaGFuY2UgdG8gaW5jcmVhc2UgdGhlIHF1b3RhLgogICAgIC8vIERyb3AgYWxsIGxvY2tz
IGJlZm9yZSBjYWxsaW5nIG91dDsgd2UgZG9uJ3Qga25vdyB3aGF0IHRoZXknbGwgZG8uCi0gICAg
UmVmUHRyPERhdGFiYXNlQ29udGV4dD4gZGF0YWJhc2VDb250ZXh0ID0gRGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkuZGF0YWJhc2VDb250ZXh0Rm9yKGNvbnRleHQpOwotICAgIGRhdGFiYXNlQ29u
dGV4dC0+ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKG5hbWUsIERhdGFiYXNlRGV0YWlscyhuYW1lLmlz
b2xhdGVkQ29weSgpLCBkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSwgZXN0aW1hdGVkU2l6ZSwg
MCkpOworICAgIGNvbnRleHQtPmRhdGFiYXNlRXhjZWVkZWRRdW90YShuYW1lLCBEYXRhYmFzZURl
dGFpbHMobmFtZS5pc29sYXRlZENvcHkoKSwgZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCksIGVz
dGltYXRlZFNpemUsIDApKTsKIAogICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFi
YXNlR3VhcmQpOwogCkBAIC0yMDEsNyArMjExLDkgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6Omhh
c0VudHJ5Rm9yRGF0YWJhcwogICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7
CiAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShmYWxzZSk7CiAgICAgaWYgKCFtX2RhdGFiYXNlLmlz
T3BlbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBmYWxzZTsgLy8g
Tm8gInRyYWNrZXIgZGF0YWJhc2UiLiBIZW5jZSwgbm8gZW50cnkgZm9yIHRoZSBkYXRhYmFzZSBv
ZiBpbnRlcmVzdC4KKworICAgIC8vIFdlJ3ZlIGdvdCBhIHRyYWNrZXIgZGF0YWJhc2UuIFNldCB1
cCBhIHF1ZXJ5IHRvIGFzayBmb3IgdGhlIGRiIG9mIGludGVyZXN0OgogICAgIFNRTGl0ZVN0YXRl
bWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBndWlkIEZST00gRGF0YWJhc2VzIFdI
RVJFIG9yaWdpbj0/IEFORCBuYW1lPT87Iik7CiAKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUo
KSAhPSBTUUxSZXN1bHRPaykKQEAgLTIyOSw3ICsyNDEsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tl
cjo6ZGF0YWJhc2VDaGFuZ2VkKERhCiAgICAgb3JpZ2luUXVvdGFNYW5hZ2VyKCkubWFya0RhdGFi
YXNlKGRhdGFiYXNlKTsKIH0KIAotdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmludGVycnVwdEFsbERh
dGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
K3ZvaWQgRGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNv
bnN0IERhdGFiYXNlQmFja2VuZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgVmVjdG9yPFJlZlB0
cjxEYXRhYmFzZUJhY2tlbmQ+ID4gb3BlbkRhdGFiYXNlczsKICAgICB7CkBAIC0yNDcsNyArMjU5
LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmludGVycnVwdEFsbERhdGFiYQogICAgICAgICAg
ICAgRGF0YWJhc2VTZXQqIGRhdGFiYXNlU2V0ID0gZGJOYW1lTWFwSXQtPnZhbHVlOwogICAgICAg
ICAgICAgRGF0YWJhc2VTZXQ6OmNvbnN0X2l0ZXJhdG9yIGRiU2V0RW5kSXQgPSBkYXRhYmFzZVNl
dC0+ZW5kKCk7CiAgICAgICAgICAgICBmb3IgKERhdGFiYXNlU2V0Ojpjb25zdF9pdGVyYXRvciBk
YlNldEl0ID0gZGF0YWJhc2VTZXQtPmJlZ2luKCk7IGRiU2V0SXQgIT0gZGJTZXRFbmRJdDsgKytk
YlNldEl0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCgqZGJTZXRJdCktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSA9PSBjb250ZXh0KQorICAgICAgICAgICAgICAgIGlmICgoKmRiU2V0SXQpLT5k
YXRhYmFzZUNvbnRleHQoKSA9PSBjb250ZXh0KQogICAgICAgICAgICAgICAgICAgICBvcGVuRGF0
YWJhc2VzLmFwcGVuZCgqZGJTZXRJdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTM2
MCwxMCArMzcyLDExIEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zKFZlY3RvcjxSZWYK
IGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZU5hbWVzRm9yT3JpZ2luTm9Mb2NrKFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4sIFZlY3RvcjxTdHJpbmc+JiByZXN1bHRWZWN0b3IpCiB7CiAgICAg
QVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKLSAgICBvcGVuVHJhY2tlckRhdGFi
YXNlKGZhbHNlKTsKKyAgICBvcGVuVHJhY2tlckRhdGFiYXNlKGZhbHNlKTsgLy8gRG9uJ3QgY3Jl
YXRlIG9uZSBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QuCiAgICAgaWYgKCFtX2RhdGFiYXNl
LmlzT3BlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICAvLyBTZXR1cCBhbiBTUUwg
cXVlcnkgdG8gZmV0Y2ggdGhlIGRhdGFiYXNlcyBmb3IgdGhlIHNwZWNpZmllZCBvcmlnaW46CiAg
ICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIG5hbWUgRlJP
TSBEYXRhYmFzZXMgd2hlcmUgb3JpZ2luPT87Iik7CiAKICAgICBpZiAoc3RhdGVtZW50LnByZXBh
cmUoKSAhPSBTUUxSZXN1bHRPaykKQEAgLTM3MSw2ICszODQsNyBAQCBib29sIERhdGFiYXNlVHJh
Y2tlcjo6ZGF0YWJhc2VOYW1lc0Zvck9yCiAKICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgb3Jp
Z2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAKKyAgICAvLyBFeGVjdXRlIHRoZSBxdWVyeSBh
bmQgZmV0Y2ggZWFjaCByZWxldmFudCBkYiBpbnRvIHRoZSByZXN1bHQ6CiAgICAgaW50IHJlc3Vs
dDsKICAgICB3aGlsZSAoKHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCkpID09IFNRTFJlc3VsdFJv
dykKICAgICAgICAgcmVzdWx0VmVjdG9yLmFwcGVuZChzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgw
KSk7CkBAIC02MTcsNyArNjMxLDkgQEAgdW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlVHJhY2tl
cjo6dXNhZwogICAgICAgICBvcmlnaW5RdW90YU1hbmFnZXIoKS5hZGREYXRhYmFzZShvcmlnaW4s
IG5hbWVzW2ldLCBmdWxsUGF0aEZvckRhdGFiYXNlTm9Mb2NrKG9yaWdpbiwgbmFtZXNbaV0sIGZh
bHNlKSk7CiAKICAgICBpZiAoIW9yaWdpblF1b3RhTWFuYWdlcigpLnRyYWNrc09yaWdpbihvcmln
aW4pKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIDA7IC8vIFN0aWxsIG5vIGRi
J3MgZm9yIHRoaXMgb3JpZ2luLiBIZW5jZSwgdG90YWwgdXNhZ2UgaXMgMC4KKworICAgIC8vIENv
bXB1dGUgdGhlIHRvdGFsIGRpc2sgdXNhZ2Ugb2YgYWxsIGRiJ3MgZnJvbSB0aGUgc3BlY2lmaWVk
IG9yaWdpbjoKICAgICByZXR1cm4gb3JpZ2luUXVvdGFNYW5hZ2VyKCkuZGlza1VzYWdlKG9yaWdp
bik7CiB9CiAKQEAgLTgxOSwxMSArODM1LDExIEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxl
dGVPcmlnaW4oU2VjdXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBEYXRhYmFzZVRyYWNr
ZXI6OmNhbkNyZWF0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK2Jvb2wgRGF0YWJhc2VUcmFja2VyOjppc0RlbGV0aW5nRGF0YWJhc2VPck9yaWdp
bkZvcihTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAg
QVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKICAgICAvLyBDYW4ndCBjcmVhdGUg
YSBkYXRhYmFzZSB3aGlsZSBzb21lb25lIGVsc2UgaXMgZGVsZXRpbmcgaXQ7IHRoZXJlJ3MgYSBy
aXNrIG9mIGxlYXZpbmcgdW50cmFja2VkIGRhdGFiYXNlIGRlYnJpcyBvbiB0aGUgZGlzay4KLSAg
ICByZXR1cm4gIWRlbGV0aW5nRGF0YWJhc2Uob3JpZ2luLCBuYW1lKSAmJiAhZGVsZXRpbmdPcmln
aW4ob3JpZ2luKTsKKyAgICByZXR1cm4gaXNEZWxldGluZ0RhdGFiYXNlKG9yaWdpbiwgbmFtZSkg
fHwgaXNEZWxldGluZ09yaWdpbihvcmlnaW4pOwogfQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6
cmVjb3JkQ3JlYXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJp
bmcmIG5hbWUpCkBAIC04NjgsNyArODg0LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNyZWF0
aW5nRGF0YWJhc2UoUwogYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNhbkRlbGV0ZURhdGFiYXNlKFNl
Y3VyaXR5T3JpZ2luICpvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQo
IW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOwotICAgIHJldHVybiAhY3JlYXRpbmdEYXRhYmFz
ZShvcmlnaW4sIG5hbWUpICYmICFkZWxldGluZ0RhdGFiYXNlKG9yaWdpbiwgbmFtZSk7CisgICAg
cmV0dXJuICFjcmVhdGluZ0RhdGFiYXNlKG9yaWdpbiwgbmFtZSkgJiYgIWlzRGVsZXRpbmdEYXRh
YmFzZShvcmlnaW4sIG5hbWUpOwogfQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVjb3JkRGVs
ZXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUp
CkBAIC05MDAsNyArOTE2LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRvbmVEZWxldGluZ0Rh
dGFiYQogICAgIH0KIH0KIAotYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0aW5nRGF0YWJhc2Uo
U2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQorYm9vbCBEYXRhYmFz
ZVRyYWNrZXI6OmlzRGVsZXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25z
dCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygp
KTsKICAgICBOYW1lU2V0KiBuYW1lU2V0ID0gbV9iZWluZ0RlbGV0ZWQuZ2V0KG9yaWdpbik7CkBA
IC05MTAsMTAgKzkyNiwxMCBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRpbmdEYXRhYmFz
ZShTCiBib29sIERhdGFiYXNlVHJhY2tlcjo6Y2FuRGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2lu
ICpvcmlnaW4pCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKLSAg
ICByZXR1cm4gIShkZWxldGluZ09yaWdpbihvcmlnaW4pIHx8IG1fYmVpbmdDcmVhdGVkLmdldChv
cmlnaW4pKTsKKyAgICByZXR1cm4gIShpc0RlbGV0aW5nT3JpZ2luKG9yaWdpbikgfHwgbV9iZWlu
Z0NyZWF0ZWQuZ2V0KG9yaWdpbikpOwogfQogCi1ib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRp
bmdPcmlnaW4oU2VjdXJpdHlPcmlnaW4gKm9yaWdpbikKK2Jvb2wgRGF0YWJhc2VUcmFja2VyOjpp
c0RlbGV0aW5nT3JpZ2luKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pCiB7CiAgICAgQVNTRVJUKCFt
X2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKICAgICByZXR1cm4gbV9vcmlnaW5zQmVpbmdEZWxl
dGVkLmNvbnRhaW5zKG9yaWdpbik7CkBAIC05MjIsMTQgKzkzOCwxNCBAQCBib29sIERhdGFiYXNl
VHJhY2tlcjo6ZGVsZXRpbmdPcmlnaW4oU2VjCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVjb3Jk
RGVsZXRpbmdPcmlnaW4oU2VjdXJpdHlPcmlnaW4gKm9yaWdpbikKIHsKICAgICBBU1NFUlQoIW1f
ZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOwotICAgIEFTU0VSVCghZGVsZXRpbmdPcmlnaW4ob3Jp
Z2luKSk7CisgICAgQVNTRVJUKCFpc0RlbGV0aW5nT3JpZ2luKG9yaWdpbikpOwogICAgIG1fb3Jp
Z2luc0JlaW5nRGVsZXRlZC5hZGQob3JpZ2luLT5pc29sYXRlZENvcHkoKSk7CiB9CiAKIHZvaWQg
RGF0YWJhc2VUcmFja2VyOjpkb25lRGVsZXRpbmdPcmlnaW4oU2VjdXJpdHlPcmlnaW4gKm9yaWdp
bikKIHsKICAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOwotICAgIEFTU0VS
VChkZWxldGluZ09yaWdpbihvcmlnaW4pKTsKKyAgICBBU1NFUlQoaXNEZWxldGluZ09yaWdpbihv
cmlnaW4pKTsKICAgICBtX29yaWdpbnNCZWluZ0RlbGV0ZWQucmVtb3ZlKG9yaWdpbik7CiB9CiAK
QEAgLTk5OSw3ICsxMDE1LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNl
RmlsZQogI2lmbmRlZiBOREVCVUcKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tEYXRh
YmFzZShtX2RhdGFiYXNlR3VhcmQpOwotICAgICAgICBBU1NFUlQoZGVsZXRpbmdEYXRhYmFzZShv
cmlnaW4sIG5hbWUpIHx8IGRlbGV0aW5nT3JpZ2luKG9yaWdpbikpOworICAgICAgICBBU1NFUlQo
aXNEZWxldGluZ0RhdGFiYXNlT3JPcmlnaW5Gb3Iob3JpZ2luLCBuYW1lKSk7CiAgICAgfQogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
cmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRyYWNrZXIuaAkocmV2aXNpb24gMTQxNzExKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDUsNyArNDUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhYmFzZUJhY2tl
bmQ7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgRGF0YWJhc2VCYWNrZW5k
Q29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5I
YXNoOwpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgLy8gbV9kYXRhYmFzZUd1YXJkIGFu
ZCBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIGN1cnJlbnRseSBkb24ndCBvdmVybGFwLgogICAgIC8v
IG5vdGlmaWNhdGlvbk11dGV4KCkgaXMgY3VycmVudGx5IGluZGVwZW5kZW50IG9mIHRoZSBvdGhl
ciBsb2Nrcy4KIAotICAgIGJvb2wgY2FuRXN0YWJsaXNoRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKKyAgICBib29sIGNhbkVzdGFibGlzaERhdGFi
YXNlKERhdGFiYXNlQmFja2VuZENvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CiAgICAgdm9p
ZCBzZXREYXRhYmFzZURldGFpbHMoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7
CiAgICAgU3RyaW5nIGZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QgPSB0cnVlKTsKIApAQCAtODEs
NyArODEsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGdldE1heFNpemVGb3JE
YXRhYmFzZShjb25zdCBEYXRhYmFzZUJhY2tlbmQqKTsKICAgICB2b2lkIGRhdGFiYXNlQ2hhbmdl
ZChEYXRhYmFzZUJhY2tlbmQqKTsKIAotICAgIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9y
Q29udGV4dChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgdm9pZCBpbnRlcnJ1
cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IERhdGFiYXNlQmFja2VuZENvbnRleHQqKTsK
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBEYXRhYmFzZVRyYWNrZXIoY29uc3QgU3RyaW5nJiBk
YXRhYmFzZVBhdGgpOwpAQCAtMTU3LDE4ICsxNTcsMTggQEAgcHJpdmF0ZToKICAgICB0eXBlZGVm
IEhhc2hTZXQ8U3RyaW5nPiBOYW1lU2V0OwogICAgIEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiwgTmFtZVNldCosIFNlY3VyaXR5T3JpZ2luSGFzaD4gbV9iZWluZ0RlbGV0ZWQ7CiAgICAg
SGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTZWN1cml0eU9yaWdpbkhhc2g+IG1fb3Jp
Z2luc0JlaW5nRGVsZXRlZDsKLSAgICBib29sIGNhbkNyZWF0ZURhdGFiYXNlKFNlY3VyaXR5T3Jp
Z2luICpvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgdm9pZCByZWNvcmRDcmVhdGlu
Z0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0g
ICAgdm9pZCBkb25lQ3JlYXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25z
dCBTdHJpbmcmIG5hbWUpOwotICAgIGJvb2wgY3JlYXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdp
biAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIGJvb2wgY2FuRGVsZXRlRGF0YWJh
c2UoU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICB2b2lk
IHJlY29yZERlbGV0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKLSAgICB2b2lkIGRvbmVEZWxldGluZ0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2lu
ICpvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgYm9vbCBkZWxldGluZ0RhdGFiYXNl
KFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgYm9vbCBj
YW5EZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4gKm9yaWdpbik7Ci0gICAgYm9vbCBkZWxldGlu
Z09yaWdpbihTZWN1cml0eU9yaWdpbiAqb3JpZ2luKTsKLSAgICB2b2lkIHJlY29yZERlbGV0aW5n
T3JpZ2luKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pOwotICAgIHZvaWQgZG9uZURlbGV0aW5nT3Jp
Z2luKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pOworICAgIGJvb2wgaXNEZWxldGluZ0RhdGFiYXNl
T3JPcmlnaW5Gb3IoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZv
aWQgcmVjb3JkQ3JlYXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYg
bmFtZSk7CisgICAgdm9pZCBkb25lQ3JlYXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNv
bnN0IFN0cmluZyYgbmFtZSk7CisgICAgYm9vbCBjcmVhdGluZ0RhdGFiYXNlKFNlY3VyaXR5T3Jp
Z2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBib29sIGNhbkRlbGV0ZURhdGFiYXNlKFNl
Y3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIHJlY29yZERlbGV0
aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZv
aWQgZG9uZURlbGV0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5h
bWUpOworICAgIGJvb2wgaXNEZWxldGluZ0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKKyAgICBib29sIGNhbkRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiop
OworICAgIGJvb2wgaXNEZWxldGluZ09yaWdpbihTZWN1cml0eU9yaWdpbiopOworICAgIHZvaWQg
cmVjb3JkRGVsZXRpbmdPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2b2lkIGRvbmVEZWxl
dGluZ09yaWdpbihTZWN1cml0eU9yaWdpbiopOwogCiAgICAgc3RhdGljIHZvaWQgc2NoZWR1bGVG
b3JOb3RpZmljYXRpb24oKTsKICAgICBzdGF0aWMgdm9pZCBub3RpZnlEYXRhYmFzZXNDaGFuZ2Vk
KHZvaWQqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAxNDE3MTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNyArMzMsNyBAQAogCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJE
YXRhYmFzZUF1dGhvcml6ZXIuaCIKLSNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKKyNpbmNs
dWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNsaWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbkNsaWVudC5jcHAJKHJldmlzaW9uIDE0MTcxMSkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAogI2lu
Y2x1ZGUgIkRhdGFiYXNlQmFja2VuZC5oIgotI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgor
I2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZU1h
bmFnZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbkNs
aWVudDo6ZGlkRXhlY3V0ZVN0YQogCiBib29sIFNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRFeGNl
ZWRRdW90YShEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKQogewotICAgIEFTU0VSVChkYXRhYmFz
ZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNT
RVJUKGRhdGFiYXNlLT5kYXRhYmFzZUNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5pc0NvbnRleHRUaHJlYWQoKSk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90
YSA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnF1b3RhRm9yT3JpZ2luKGRhdGFiYXNlLT5z
ZWN1cml0eU9yaWdpbigpKTsKICAgICBkYXRhYmFzZS0+ZGF0YWJhc2VDb250ZXh0KCktPmRhdGFi
YXNlRXhjZWVkZWRRdW90YShkYXRhYmFzZS0+c3RyaW5nSWRlbnRpZmllcigpLCBkYXRhYmFzZS0+
ZGV0YWlscygpKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEgPSBEYXRhYmFzZU1h
bmFnZXI6Om1hbmFnZXIoKS5xdW90YUZvck9yaWdpbihkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4o
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uU3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxUcmFuc2FjdGlvblN5bmMuY3BwCShyZXZpc2lvbiAxNDE3MTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uU3luYy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCiAj
aW5jbHVkZSAiRGF0YWJhc2VBdXRob3JpemVyLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0
LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFi
YXNlU3luYy5oIgogI2luY2x1ZGUgIlNRTEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIlNRTFJlc3Vs
dFNldC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oJKHJldmlzaW9uIDE0MTcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNTM1MCw2ICsyNTM1MCwzMCBAQAog
CQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9k
dWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFi
YXNlXERhdGFiYXNlQmFja2VuZEFzeW5jLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZp
bGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFj
a2VuZENvbnRleHQuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRDb250ZXh0
LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZFN5bmMuY3BwIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJk
YXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRTeW5jLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJ
PEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNl
Q2FsbGJhY2suaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNpb24gMTQxNzExKQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMTg1Niw2ICsxODU2LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1v
ZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUF1dGhvcml6ZXIuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tl
bmQuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFz
ZVxEYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwIiAvPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tl
bmRTeW5jLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0
YWJhc2VcRGF0YWJhc2VDb250ZXh0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VNYW5hZ2VyLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VTZXJ2ZXIuY3BwIiAv
PgpAQCAtNjQwOCw2ICs2NDExLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVs
ZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VBdXRob3JpemVyLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZC5oIiAv
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFz
ZUJhY2tlbmRBc3luYy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3
ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZFN5bmMuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VD
YWxsYmFjay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRh
YmFzZVxEYXRhYmFzZUNvbnRleHQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1v
ZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VFcnJvci5oIiAvPgpJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwko
cmV2aXNpb24gMTQxNzExKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC0xODM5LDYgKzE4MzksMTUgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VC
YWNrZW5kLmNwcCI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJhc2U8L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2Vi
ZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kQXN5bmMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxl
c1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmNw
cCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJhc2U8L0ZpbHRlcj4KKyAgICA8L0Ns
Q29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2Vc
RGF0YWJhc2VCYWNrZW5kU3luYy5jcHAiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFi
YXNlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQ29udGV4dC5jcHAiPgogICAgICAgPEZpbHRl
cj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC04NDYw
LDYgKzg0NjksMTUgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0
YWJhc2VcRGF0YWJhc2VCYWNrZW5kLmgiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFi
YXNlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZEFzeW5jLmgiPgorICAgICAgPEZp
bHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2Vu
ZENvbnRleHQuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJhc2U8L0ZpbHRlcj4K
KyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2Vi
ZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kU3luYy5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3
ZWJkYXRhYmFzZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUNhbGxiYWNrLmgiPgogICAgICAg
PEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxNDE3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY3MjksMTEgKzY3MjksMjMgQEAK
IAkJRkRGNkJBRjkxMzRBNEM5ODAwODIyOTIwIC8qIEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREY2
QkFGNzEzNEE0Qzk4MDA4MjI5MjAgLyogSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCAq
LzsgfTsKIAkJRkRGN0U5QzMxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFj
ay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREY3
RTlDMTEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmNwcCAqLzsgfTsK
IAkJRkRGN0U5QzQxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRGN0U5QzIxM0FD
MjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oICovOyB9OwotCQlGRTA5REI0
OTE2OUUyRDZFMDA2MjI1NTcgLyogRGF0YWJhc2VFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwOURCNDYxNjlFMkQ2RTAwNjIyNTU3IC8qIERh
dGFiYXNlRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGRTExNUZBQjE2Nzk4OENEMDAyNDkxMzQgLyogQWJzdHJhY3REYXRhYmFzZVNlcnZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMTVG
QTkxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTE2Q0ZEMzE2OUQxREVE
MDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kQXN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxNkNGQ0YxNjlEMURFQzAwRDNBMEM3IC8qIERh
dGFiYXNlQmFja2VuZEFzeW5jLmNwcCAqLzsgfTsKKwkJRkUxNkNGRDQxNjlEMURFRDAwRDNBMEM3
IC8qIERhdGFiYXNlQmFja2VuZEFzeW5jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTE2Q0ZEMDE2OUQxREVDMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNr
ZW5kQXN5bmMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlGRTZGNkFBRjE2OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTZGNkFB
RDE2OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAgKi87IH07CisJ
CUZFNkY2QUIwMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTZGNkFBRTE2OUUw
NTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFMTZDRkQ1MTY5RDFERUQwMEQzQTBD
NyAvKiBEYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTZDRkQxMTY5RDFERUMwMEQzQTBDNyAvKiBEYXRhYmFzZUJh
Y2tlbmRTeW5jLmNwcCAqLzsgfTsKKwkJRkUxNkNGRDYxNjlEMURFRDAwRDNBMEM3IC8qIERhdGFi
YXNlQmFja2VuZFN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMTZDRkQyMTY5RDFERUMwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRTeW5jLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVCQzVG
MzExNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUJDNUYyRjE2QkQwQ0MzMDA2NTlCRDMgLyog
RGF0YWJhc2VCYXNlLmNwcCAqLzsgfTsKKwkJRkVCQzVGMzIxNkJEMENDMzAwNjU5QkQzIC8qIERh
dGFiYXNlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkVCQzVGMzAxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMzM3MUEyMTY3QzExRDQw
MEVEQjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzM3MUEwMTY3QzExRDQwMEVEQjc1MiAvKiBEYXRhYmFz
ZUJhc2ljVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlGRTA5REI0OTE2OUUyRDZFMDA2MjI1NTcgLyogRGF0YWJhc2VFcnJvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwOURCNDYxNjlFMkQ2
RTAwNjIyNTU3IC8qIERhdGFiYXNlRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTQ1NkYxODE2NzdENzRFMDA1RURERjkgLyogRGF0YWJh
c2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFNDU2RjE2MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwICovOyB9
OwogCQlGRTQ1NkYxOTE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYxNzE2NzdENzRF
MDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVCMjZEMjgxNjdBOEYyQTAwRkREMjZCIC8qIERhdGFi
YXNlU2VydmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFQjI2RDI3MTY3QThGMkEwMEZERDI2QiAvKiBEYXRhYmFzZVNlcnZlci5jcHAgKi87IH07
CisJCUZFQUY2NjU0MTY3OTcwMzIwMDYyRDBDNSAvKiBEYXRhYmFzZVNlcnZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBRjY2NTMxNjc5NzAwNzAw
NjJEMEM1IC8qIERhdGFiYXNlU2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVERUY4NDExNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNl
U3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkVERUY4M0YxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwICovOyB9
OworCQlGRURFRjg0MjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVERUY4NDAxNjc5NzEw
ODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTZGRDQ4ODBGNjc2RTU3MDAwOTI4NzMgLyogQ29v
cmRpbmF0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFNkZENDg1MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGluYXRlcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNkZENDhEMEY2NzZFOTMwMDA5
Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFNkZENDhCMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVz
LmNwcCAqLzsgfTsKIAkJRkU2RkQ0OEUwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNkZENDhD
MEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmggKi87IH07CkBAIC02NzQ1LDEwICs2
NzU3LDYgQEAKIAkJRkU4MERBNjYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYyMEU5
QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi87IH07CiAJCUZFODBEQTcxMEU5QzQ3
MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9z
aXRpb25FcnJvci5jcHAgKi87IH07CiAJCUZFODBEQTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bv
c2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFODBEQTZFMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLzsgfTsK
LQkJRkVBRjY2NTQxNjc5NzAzMjAwNjJEMEM1IC8qIERhdGFiYXNlU2VydmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUFGNjY1MzE2Nzk3MDA3MDA2
MkQwQzUgLyogRGF0YWJhc2VTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQlGRUIyNkQyODE2N0E4RjJBMDBGREQyNkIgLyogRGF0YWJhc2VT
ZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVCMjZEMjcxNjdBOEYyQTAwRkREMjZCIC8qIERhdGFiYXNlU2VydmVyLmNwcCAqLzsgfTsKLQkJ
RkVERUY4NDExNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVERUY4M0YxNjc5NzEwODAw
MEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwICovOyB9OwotCQlGRURFRjg0MjE2Nzk3MTA4
MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkVERUY4NDAxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNl
U3RyYXRlZ3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlGRjk0NUVDQjE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjk0NUVDOTE2MUY3RjM2
MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5jcHAgKi87IH07CiAJCUZGOTQ1RUNDMTYxRjdGMzYw
MDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRjk0NUVDQTE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVu
dC5oICovOyB9OwogCQlGRkQ1Qjk3QTEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlT
dGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RkQ1Qjk3NzEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgKi87IH07
CkBAIC0xNDQwMSw5ICsxNDQwOSwyMSBAQAogCQlGREY3RTlDMjEzQUMyMURCMDBBNTFFQUMgLyog
SlNBdWRpb0J1ZmZlckNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTA5REI0NjE2OUUyRDZFMDA2MjI1NTcgLyogRGF0YWJhc2VFcnJvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZUVycm9yLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUx
MTVGQTkxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oOyBwYXRo
ID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTZDRkNGMTY5RDFERUMwMEQzQTBDNyAvKiBEYXRhYmFz
ZUJhY2tlbmRBc3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
YXRhYmFzZUJhY2tlbmRBc3luYy5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQmFja2VuZEFzeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUxNkNG
RDAxNjlEMURFQzAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZEFzeW5jLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlQmFja2VuZEFzeW5jLmg7IHBhdGggPSBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFzeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFNkY2QUFEMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tlbmRD
b250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNl
QmFja2VuZENvbnRleHQuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJh
Y2tlbmRDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU2RjZBQUUx
NjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFja2VuZENvbnRleHQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oOyBwYXRoID0gTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFMTZDRkQxMTY5RDFERUMwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tl
bmRTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNl
QmFja2VuZFN5bmMuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tl
bmRTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUxNkNGRDIxNjlEMURF
QzAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZFN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gRGF0YWJhc2VCYWNrZW5kU3luYy5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFQkM1RjJGMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGF0YWJhc2VCYXNlLmNwcDsgcGF0aCA9IE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRkVCQzVGMzAxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZUJhc2UuaDsgcGF0aCA9IE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFMzM3MUEwMTY3QzExRDQwMEVEQjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VCYXNpY1R5cGVzLmg7IHBhdGggPSBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzaWNUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTQ1NkYxNjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlTWFuYWdl
ci5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNDU2RjE3MTY3N0Q3NEUwMDVFRERGOSAvKiBE
YXRhYmFzZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJh
c2VNYW5hZ2VyLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUIyNkQyNzE2N0E4RjJBMDBGREQyNkIg
LyogRGF0YWJhc2VTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gRGF0YWJhc2VTZXJ2ZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQUY2NjUzMTY3OTcw
MDcwMDYyRDBDNSAvKiBEYXRhYmFzZVNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBEYXRhYmFzZVNlcnZlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRURFRjgzRjE2Nzk3
MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVN0cmF0ZWd5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRkVERUY4NDAxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3ku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VTdHJhdGVneS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTZGRDQ4NTBGNjc2RTU3MDAwOTI4NzMgLyog
Q29vcmRpbmF0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29vcmRpbmF0
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RkQ0ODYwRjY3NkU1NzAwMDky
ODczIC8qIENvb3JkaW5hdGVzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDb29yZGluYXRl
cy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNkZENDhCMEY2NzZFOTMwMDA5
Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQ29vcmRpbmF0ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTQ0MTYsMTAgKzE0NDM2LDYgQEAKIAkJRkU4MERBNjIwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2Vv
cG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW9wb3NpdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwREE2RDBFOUM0NzJGMDAwRDZG
NzUgLyogSlNQb3NpdGlvbkVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTUG9zaXRpb25FcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFODBEQTZFMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQb3NpdGlvbkVycm9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUZFQUY2NjUzMTY3OTcwMDcwMDYyRDBDNSAvKiBEYXRhYmFzZVNlcnZl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZVNlcnZlci5oOyBw
YXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlGRUIyNkQyNzE2N0E4RjJBMDBGREQyNkIgLyogRGF0YWJhc2VTZXJ2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGF0YWJhc2VTZXJ2
ZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFREVGODNGMTY3OTcxMDgwMDBFNDQ0QSAvKiBE
YXRhYmFzZVN0cmF0ZWd5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERhdGFiYXNlU3RyYXRlZ3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRURF
Rjg0MDE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZVN0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZGOTQ1RUM5MTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBzZXVkb0VsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRjk0NUVDQTE2MUY3RjM2MDA5NzFCQzgg
LyogUHNldWRvRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQc2V1
ZG9FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGRDVCOTc3MTM1Q0M5
NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTg1MDcsNiArMTg1MjMsMTQgQEAKIAkJCQk5N0JDNjlFMjE1MDVG
MDgxMDAxQjc0QUMgLyogRGF0YWJhc2VBdXRob3JpemVyLmggKi8sCiAJCQkJOTdCQzY5RDYxNTA1
RjA3NjAwMUI3NEFDIC8qIERhdGFiYXNlQmFja2VuZC5jcHAgKi8sCiAJCQkJOTdCQzY5RDcxNTA1
RjA3NjAwMUI3NEFDIC8qIERhdGFiYXNlQmFja2VuZC5oICovLAorCQkJCUZFMTZDRkNGMTY5RDFE
RUMwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAgKi8sCisJCQkJRkUxNkNGRDAx
NjlEMURFQzAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZEFzeW5jLmggKi8sCisJCQkJRkU2RjZB
QUQxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwICovLAorCQkJ
CUZFNkY2QUFFMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmggKi8s
CisJCQkJRkUxNkNGRDExNjlEMURFQzAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZFN5bmMuY3Bw
ICovLAorCQkJCUZFMTZDRkQyMTY5RDFERUMwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRTeW5j
LmggKi8sCisJCQkJRkVCQzVGMkYxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5jcHAg
Ki8sCisJCQkJRkVCQzVGMzAxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5oICovLAog
CQkJCUZFMzM3MUEwMTY3QzExRDQwMEVEQjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMuaCAqLywK
IAkJCQk5N0JDNjlFMzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDYWxsYmFjay5oICovLAog
CQkJCTk3QkM2OUU0MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNhbGxiYWNrLmlkbCAqLywK
QEAgLTIzMjk1LDYgKzIzMzE5LDEwIEBACiAJCQkJOTdCQzZBMjExNTA1RjA4MTAwMUI3NEFDIC8q
IERhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEyNDE1MDVGMDgxMDAxQjc0QUMg
LyogRGF0YWJhc2VBdXRob3JpemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNjlEQjE1MDVG
MDc2MDAxQjc0QUMgLyogRGF0YWJhc2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTE2
Q0ZENDE2OUQxREVEMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kQXN5bmMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUZFNkY2QUIwMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tlbmRDb250
ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTE2Q0ZENjE2OUQxREVEMDBEM0EwQzcgLyogRGF0
YWJhc2VCYWNrZW5kU3luYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVCQzVGMzIxNkJEMENDMzAw
NjU5QkQzIC8qIERhdGFiYXNlQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMzcxQTIxNjdD
MTFENDAwRURCNzUyIC8qIERhdGFiYXNlQmFzaWNUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTdCQzZBMjUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3QkM2QTI4MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuaCBp
biBIZWFkZXJzICovLApAQCAtMjY5NDIsNiArMjY5NzAsMTAgQEAKIAkJCQk5N0JDNkEyMDE1MDVG
MDgxMDAxQjc0QUMgLyogRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzZBMjMx
NTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQXV0aG9yaXplci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5N0JDNjlEQTE1MDVGMDc2MDAxQjc0QUMgLyogRGF0YWJhc2VCYWNrZW5kLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUZFMTZDRkQzMTY5RDFERUQwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tl
bmRBc3luYy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTZGNkFBRjE2OUUwNTc1MDBGQzMwQTIg
LyogRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTE2Q0ZE
NTE2OUQxREVEMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlGRUJDNUYzMTE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTk3QkM2QTI3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRl
eHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU0NTZGMTgxNjc3RDc0RTAwNUVEREY5IC8qIERh
dGFiYXNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRUIyNkQyODE2N0E4RjJBMDBG
REQyNkIgLyogRGF0YWJhc2VTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>
<flag name="commit-queue"
          id="205610"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186245</attachid>
            <date>2013-02-02 19:29:53 -0800</date>
            <delta_ts>2013-02-03 01:50:53 -0800</delta_ts>
            <desc>one more time after touching up all the other port&apos;s build files.</desc>
            <filename>bug-108759.patch</filename>
            <type>text/plain</type>
            <size>93148</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOCBAQAorMjAxMy0wMi0wMiAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHBzZXVkbyBiYWNrLWVuZCBk
YXRhYmFzZSBjbGFzc2VzICsgYSBmZXcgc21hbGwgZml4ZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3NTkuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gQWRkZWQgRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dCwgRGF0YWJhc2VCYWNrZW5kQXN5bmMsIGFuZCBEYXRhYmFzZUJhY2tlbmRTeW5jLgorICAg
ICAgICAgICBUaGVzZSBhcmUgYmFja2VuZHMgZm9yIERhdGFiYXNlQ29udGV4dCwgRGF0YWJhc2Us
IGFuZCBEYXRhYmFzZVN5bmMKKyAgICAgICAgICAgcmVzcGVjdGl2ZWx5LiBUaGV5IGFyZSBvbmx5
ICJwcmV0ZW5kIiBiYWNrZW5kcyBmb3Igbm93LgorICAgICAgICAyLiBBZGRlZCBEYXRhYmFzZUJh
c2UgdG8gaG9sZCBjb21tb24gY29kZSBiZXR3ZWVuIERhdGFiYXNlIGFuZCBEYXRhYmFzZVN5bmMu
CisgICAgICAgIDMuIFJlbmFtZWQgYSBmZXcgZnVuY3Rpb25zLgorICAgICAgICA0LiBDbGVhbmVk
IHVwIHVubmVlZGVkIGNvZGUgaW4gfkRhdGFiYXNlU3luYygpLgorICAgICAgICA1LiBBZGRlZCBz
b21lIEZJWE1FcyBhcyByZW1pbmRlcnMgb3IgcGxhY2VzIHRvIGNsZWFuIHVwIHdoZW4gd2UncmUg
ZG9uZQorICAgICAgICAgICByZWZhY3RvcmluZy4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5o
OgorICAgICAgICAoQWJzdHJhY3REYXRhYmFzZVNlcnZlcik6CisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpEYXRhYmFzZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oOgorICAgICAgICAoRGF0YWJhc2UpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6RGF0YWJhc2VCYWNrZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6fkRhdGFiYXNlQmFja2VuZCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZUJhY2tlbmQ6OmxvZ0Vycm9yTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuaDoKKyAgICAgICAgKERhdGFiYXNlQmFja2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OmRhdGFiYXNlQ29udGV4dCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kQXN5bmM6OkRhdGFiYXNl
QmFja2VuZEFzeW5jKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFj
a2VuZEFzeW5jLmg6IEFkZGVkLgorICAgICAgICAoRGF0YWJhc2VCYWNrZW5kQXN5bmMpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kQ29udGV4dDo6c2VjdXJpdHlP
cmlnaW4pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKERhdGFiYXNlQmFja2VuZENvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kQ29udGV4dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRTeW5jOjpEYXRhYmFz
ZUJhY2tlbmRTeW5jKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFj
a2VuZFN5bmMuaDogQWRkZWQuCisgICAgICAgIChEYXRhYmFzZUJhY2tlbmRTeW5jKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VCYXNlOjpEYXRhYmFzZUJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlQmFzZTo6bG9nRXJyb3JNZXNzYWdlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKERhdGFiYXNlQmFzZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpEYXRhYmFzZUNvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpiYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oOgorICAgICAgICAoRGF0YWJhc2VDb250ZXh0
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFzZVN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpoYXNPcGVuRGF0YWJhc2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmdldE1heFNpemVGb3JEYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmxvZ0Vycm9yTWVzc2FnZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAg
ICAgKERhdGFiYXNlTWFuYWdlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVNlcnZlcjo6aW50ZXJy
dXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVNl
cnZlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VTZXJ2ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OkRhdGFiYXNlU3luYyk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZVN5bmM6On5EYXRhYmFzZVN5bmMpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmg6CisgICAgICAgIChEYXRhYmFzZVN5bmMpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6aGFzRW50cnlGb3JEYXRhYmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZU5hbWVz
Rm9yT3JpZ2luTm9Mb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dXNh
Z2VGb3JPcmlnaW5Ob0xvY2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpp
c0RlbGV0aW5nRGF0YWJhc2VPck9yaWdpbkZvcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZVRyYWNrZXI6OmNhbkRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6aXNEZWxldGluZ0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6Y2FuRGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6aXNEZWxldGluZ09yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNr
ZXI6OnJlY29yZERlbGV0aW5nT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6ZG9uZURlbGV0aW5nT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVHJhY2tlci5oOgorICAgICAgICAoRGF0YWJhc2VUcmFja2VyKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRFeGNlZWRRdW90YSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvblN5bmMuY3BwOgorICAgICAgICAqIFRhcmdl
dC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMy0wMi0w
MiAgSnVuIEppYW5nICA8anVuLmEuamlhbmdAaW50ZWwuY29tPgogCiAgICAgICAgIE9wdGltaXpl
IHNvbWUgb3BlcmF0aW9ucyBmb3IgZmxvYXQgdHlwZSBpbiB0ZXh0dXJlIGZvcm1hdCBjb252ZXJz
aW9ucyBvZiBXZWJHTApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE0MTcxMSkK
KysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05NTAs
NiArOTUwLDEwIEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRob3JpemVy
LmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmNwcAorICAgIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuY3BwCisgICAgTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0LmNwcAorICAgIE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQmFzZS5jcHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5j
cHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKICAgICBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNDE3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAwLDYgKzIxMDAsMTQgQEAgd2ViY29y
ZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VBdXRob3JpemVyLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuaCBcCisJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0LmNwcCBcCisJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0LmggXAor
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3luYy5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5k
U3luYy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFz
ZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNl
LmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNpY1R5
cGVzLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDYWxs
YmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29u
dGV4dC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNDE3MTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQzLDYgKzE0NDMsMTEgQEAg
SEVBREVSUyArPSBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIu
aCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oIFwKICAgICBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5oIFwKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQmFja2VuZEFzeW5jLmggXAorICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VC
YWNrZW5kQ29udGV4dC5oIFwKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2Vu
ZFN5bmMuaCBcCisgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuaCBcCisgICAg
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2ljVHlwZXMuaCBcCiAgICAgTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUNhbGxiYWNrLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VFcnJvci5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdl
ci5oIFwKQEAgLTMwMzcsNiArMzA0MiwxMCBAQCB1c2U/KFBMVUdJTl9CQUNLRU5EX1hMSUIpIHsK
IGVuYWJsZT8oU1FMX0RBVEFCQVNFKSB7CiAgICAgU09VUkNFUyArPSBcCiAgICAgICAgIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIFwKKyAgICAgICAgTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAgXAorICAgICAgICBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwIFwKKyAgICAgICAgTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCBcCisgICAgICAgIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNlLmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUYXNrLmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJl
YWQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDE0MTcxMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTAwMCwxMSArMTAwMCwy
MSBAQAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRob3JpemVy
LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmNw
cCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuaCcs
CisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5j
cHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5
bmMuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRD
b250ZXh0LmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJh
Y2tlbmRDb250ZXh0LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VCYWNrZW5kU3luYy5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VCYWNrZW5kU3luYy5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQmFzZS5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VCYXNlLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNp
Y1R5cGVzLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDYWxs
YmFjay5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4
dC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0
LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VFcnJvci5oJywK
ICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwJywKICAgICAg
ICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmgnLAogICAgICAgICAg
ICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcCcsCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0
YWJhc2VTZXJ2ZXIuaAkocmV2aXNpb24gMTQxNzExKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDggKzM2LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERhdGFiYXNlQmFj
a2VuZDsKK2NsYXNzIERhdGFiYXNlQmFja2VuZEFzeW5jOworY2xhc3MgRGF0YWJhc2VCYWNrZW5k
Q29udGV4dDsKK2NsYXNzIERhdGFiYXNlQmFja2VuZFN5bmM7CiBjbGFzcyBEYXRhYmFzZU1hbmFn
ZXJDbGllbnQ7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiAKIGNsYXNzIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIgewpAQCAtNzMsOSArNzUsOSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHkoY29u
c3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKICNl
bmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkKIAotICAgIHZpcnR1YWwgdm9pZCBpbnRlcnJ1cHRB
bGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3Qg
RGF0YWJhc2VCYWNrZW5kQ29udGV4dCopID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5Fc3Rh
Ymxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuRXN0YWJsaXNoRGF0YWJhc2UoRGF0YWJhc2VCYWNr
ZW5kQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpID0g
MDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhTaXplRm9yRGF0YWJhc2Uo
Y29uc3QgRGF0YWJhc2VCYWNrZW5kKikgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDE0MTcxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMyw4IEBACiAKICNpbmNsdWRlICJDaGFuZ2VWZXJzaW9uV3JhcHBlci5o
IgogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2Vu
ZEFzeW5jLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlQ2FsbGJhY2suaCIKICNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNs
dWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKQEAgLTQ5LDcgKzUxLDYgQEAKICNpbmNsdWRlICJTUUxU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25FcnJvckNh
bGxiYWNrLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgpAQCAtNjYs
MTUgKzY3LDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGF0YWJhc2U6OkRhdGFiYXNl
KFBhc3NSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlz
cGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKLSAgICA6IERhdGFiYXNlQmFj
a2VuZChkYXRhYmFzZUNvbnRleHQsIG5hbWUsIGV4cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUs
IGVzdGltYXRlZFNpemUsIEFzeW5jRGF0YWJhc2UpCisvLyBGSVhNRTogVGhlIERhdGFiYXNlTWFu
YWdlciBuZWVkcyB0byBjcmVhdGUgYSBEYXRhYmFzZSBpbnN0YW5jZSBmcm9tIGl0cyBiYWNrZW5k
LgorLy8gVGhpcyBmYWN0b3J5IG1ldGhvZCBpcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kIHRvIHRo
YXQgRGF0YWJhc2VNYW5hZ2VyIG5lZWQuCisvLyBXaGVuIHRoZSBiYWNrZW5kIGhhcyBhY3R1YWxs
eSBiZWVuIHNwbGl0IG91dCBmcm9tIHRoZSBEYXRhYmFzZSwgd2Ugc2hvdWxkIGJlCisvLyB1c2lu
ZyB0aGUgdXBkYXRlZCBEYXRhYmFzZSBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIHRoaXMgd29ya2Fy
b3VuZCwgYW5kIHRoaXMKKy8vIG1ldGhvZCBzaG91bGQgYmUgZGVsZXRlZC4KK1Bhc3NSZWZQdHI8
RGF0YWJhc2U+IERhdGFiYXNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8RGF0YWJhc2VCYWNrZW5kQXN5bmM+IGJhY2tlbmQpCit7CisgICAgcmV0dXJuIGJhY2tl
bmQ7Cit9CisKK0RhdGFiYXNlOjpEYXRhYmFzZShQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENv
bnRleHQ+IGRhdGFiYXNlQ29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9u
ZyBlc3RpbWF0ZWRTaXplKQorICAgIDogRGF0YWJhc2VCYXNlKGRhdGFiYXNlQ29udGV4dCwgbmFt
ZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSwgQXN5bmNEYXRh
YmFzZSkKICAgICAsIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzKGZhbHNlKQogICAgICwgbV9pc1Ry
YW5zYWN0aW9uUXVldWVFbmFibGVkKHRydWUpCiAgICAgLCBtX2RlbGV0ZWQoZmFsc2UpCiB7CiAg
ICAgbV9kYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luID0gbV9jb250ZXh0VGhyZWFkU2VjdXJp
dHlPcmlnaW4tPmlzb2xhdGVkQ29weSgpOwogCi0gICAgU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlh
bGl6ZVRocmVhZGluZygpOwogICAgIEFTU0VSVChtX2RhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VU
aHJlYWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmgJKHJldmlzaW9uIDE0MTcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBA
QAogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkRhdGFiYXNlQmFja2Vu
ZC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQmFzaWNU
eXBlcy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUu
aD4KQEAgLTQwLDYgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEYXRh
YmFzZUJhY2tlbmRBc3luYzsKIGNsYXNzIERhdGFiYXNlQ2FsbGJhY2s7CiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uOwpAQCAtNTAsNyArNTEsNyBAQCBjbGFzcyBT
UUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s7CiBjbGFzcyBTUUxUcmFuc2FjdGlvbldyYXBwZXI7
CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKLWNsYXNzIERhdGFiYXNlIDogcHVibGljIERhdGFiYXNl
QmFja2VuZCB7CitjbGFzcyBEYXRhYmFzZSA6IHB1YmxpYyBEYXRhYmFzZUJhc2UgewogcHVibGlj
OgogICAgIHZpcnR1YWwgfkRhdGFiYXNlKCk7CiAKQEAgLTg3LDggKzg4LDEwIEBAIHByaXZhdGU6
CiAgICAgY2xhc3MgRGF0YWJhc2VUcmFuc2FjdGlvblRhc2s7CiAgICAgY2xhc3MgRGF0YWJhc2VU
YWJsZU5hbWVzVGFzazsKIAotICAgIERhdGFiYXNlKFBhc3NSZWZQdHI8RGF0YWJhc2VDb250ZXh0
PiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwKKyAg
ICBEYXRhYmFzZShQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+LCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAogICAgICAgICAgICAgIGNv
bnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YWJhc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRBc3luYz4pOworCiAgICAgdm9pZCBydW5U
cmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRy
PFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4sCiAgICAgICAgICAgICAgICAgICAgICAgICBQ
YXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFRy
YW5zYWN0aW9uV3JhcHBlcj4sIGJvb2wgcmVhZE9ubHkpOwogCkBAIC0xMTAsNiArMTEzLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fZGVsZXRlZDsKIAogICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFz
ZU1hbmFnZXI7CisgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlQmFja2VuZEFzeW5jOyAvLyBGSVhN
RTogcmVtb3ZlIHRoaXMgd2hlbiB0aGUgYmFja2VuZCBoYXMgYmVlbiBzcGxpdCBvdXQuCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwCShyZXZpc2lvbiAxNDE3
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2Vu
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMyw3IEBACiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
IAogI2luY2x1ZGUgIkRhdGFiYXNlQXV0aG9yaXplci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFj
a2VuZENvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJE
YXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKQEAgLTM5LDcg
KzQxLDYgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50
LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKLSNpbmNsdWRlICJTY3JpcHRDYWxs
U3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNTgsNyArNTks
NyBAQAogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQogLy8gVGhlIERhdGFiYXNlVHJhY2tlciBtYWludGFpbnMgYSBsaXN0IG9mIGRhdGFi
YXNlcyB0aGF0IGhhdmUgYmVlbgogLy8gIm9wZW5lZCIgc28gdGhhdCB0aGUgY2xpZW50IGNhbiBj
YWxsIGludGVycnVwdCBvciBkZWxldGUgb24gZXZlcnkgZGF0YWJhc2UKLS8vIGFzc29jaWF0ZWQg
d2l0aCBhIERhdGFiYXNlQ29udGV4dC4KKy8vIGFzc29jaWF0ZWQgd2l0aCBhIERhdGFiYXNlQmFj
a2VuZENvbnRleHQuCiAvLwogLy8gV2Ugd2lsbCBvbmx5IGNhbGwgRGF0YWJhc2VUcmFja2VyOjph
ZGRPcGVuRGF0YWJhc2UoKSB0byBhZGQgdGhlIGRhdGFiYXNlCiAvLyB0byB0aGUgdHJhY2tlciBh
cyBvcGVuZWQgd2hlbiB3ZSd2ZSBzdWNjZWVkZWQgaW4gb3BlbmluZyB0aGUgZGF0YWJhc2UsCkBA
IC03Myw3ICs3NCw3IEBACiAvLyBUaGUgb25seSBkYXRhYmFzZXMgaW5zdGFuY2VzIG5vdCB0cmFj
a2VkIGJ5IHRoZSB0cmFja2VyJ3Mgb3BlbiBkYXRhYmFzZQogLy8gbGlzdCBhcmUgdGhlIG9uZXMg
dGhhdCBoYXZlIG5vdCBiZWVuIGFkZGVkIHlldCwgb3IgdGhlIG9uZXMgdGhhdCB3ZQogLy8gYXR0
ZW1wdGVkIGFuIG9wZW4gb24gYnV0IGZhaWxlZCB0by4gU3VjaCBpbnN0YW5jZXMgb25seSBleGlz
dCBpbiB0aGUKLS8vIERhdGFiYXNlTWFuYWdlcidzIGZhY3RvcnkgbWV0aG9kcyBmb3IgY3JlYXRp
bmcgRGF0YWJhc2VCYWNrZW5kcy4KKy8vIERhdGFiYXNlU2VydmVyJ3MgZmFjdG9yeSBtZXRob2Rz
IGZvciBjcmVhdGluZyBEYXRhYmFzZUJhY2tlbmRzLgogLy8KIC8vIFRoZSBmYWN0b3J5IG1ldGhv
ZHMgd2lsbCBlaXRoZXIgY2FsbCBvcGVuQW5kVmVyaWZ5VmVyc2lvbigpIG9yCiAvLyBwZXJmb3Jt
T3BlbkFuZFZlcmlmeSgpLiBUaGVzZSBtZXRob2RzIHdpbGwgYWRkIHRoZSBuZXdseSBpbnN0YW50
aWF0ZWQKQEAgLTIwNCwxMCArMjA1LDkgQEAgY29uc3QgY2hhciogRGF0YWJhc2VCYWNrZW5kOjpk
YXRhYmFzZUluZgogICAgIHJldHVybiBpbmZvVGFibGVOYW1lOwogfQogCi1EYXRhYmFzZUJhY2tl
bmQ6OkRhdGFiYXNlQmFja2VuZChQYXNzUmVmUHRyPERhdGFiYXNlQ29udGV4dD4gZGF0YWJhc2VD
b250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9u
LAorRGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFzZUJhY2tlbmQoUGFzc1JlZlB0cjxEYXRhYmFzZUJh
Y2tlbmRDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBleHBlY3RlZFZlcnNpb24sCiAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBEYXRhYmFzZVR5cGUgZGF0YWJhc2VUeXBlKQog
ICAgIDogbV9kYXRhYmFzZUNvbnRleHQoZGF0YWJhc2VDb250ZXh0KQotICAgICwgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KG1fZGF0YWJhc2VDb250ZXh0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpCiAgICAgLCBtX25hbWUobmFtZS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fZXhwZWN0ZWRW
ZXJzaW9uKGV4cGVjdGVkVmVyc2lvbi5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fZGlzcGxheU5h
bWUoZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkpCkBAIC0yMTcsOCArMjE3LDcgQEAgRGF0YWJh
c2VCYWNrZW5kOjpEYXRhYmFzZUJhY2tlbmQoUGFzc1JlZgogICAgICwgbV9uZXcoZmFsc2UpCiAg
ICAgLCBtX2lzU3luY0RhdGFiYXNlKGRhdGFiYXNlVHlwZSA9PSBTeW5jRGF0YWJhc2UpCiB7Ci0g
ICAgQVNTRVJUKG1fZGF0YWJhc2VDb250ZXh0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlz
Q29udGV4dFRocmVhZCgpKTsKLSAgICBtX2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbiA9IG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aXNvbGF0ZWRDb3B5KCk7
CisgICAgbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4gPSBtX2RhdGFiYXNlQ29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKS0+aXNvbGF0ZWRDb3B5KCk7CiAKICAgICBtX2RhdGFiYXNlQXV0aG9y
aXplciA9IERhdGFiYXNlQXV0aG9yaXplcjo6Y3JlYXRlKGluZm9UYWJsZU5hbWUpOwogCkBAIC0y
NDIsNyArMjQxLDggQEAgRGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFzZUJhY2tlbmQoUGFzc1JlZgog
CiBEYXRhYmFzZUJhY2tlbmQ6On5EYXRhYmFzZUJhY2tlbmQoKQogewotICAgIEFTU0VSVCghbV9v
cGVuZWQpOworICAgIGlmIChvcGVuZWQoKSkKKyAgICAgICAgY2xvc2VEYXRhYmFzZSgpOwogfQog
CiB2b2lkIERhdGFiYXNlQmFja2VuZDo6Y2xvc2VEYXRhYmFzZSgpCkBAIC00MjcsMTEgKzQyNyw2
IEBAIGJvb2wgRGF0YWJhc2VCYWNrZW5kOjpwZXJmb3JtT3BlbkFuZFZlcmkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogRGF0YWJhc2VCYWNrZW5kOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LmdldCgpOwotfQotCiBTZWN1cml0eU9yaWdpbiogRGF0YWJhc2VCYWNrZW5kOjpz
ZWN1cml0eU9yaWdpbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29udGV4dFRocmVhZFNlY3Vy
aXR5T3JpZ2luLmdldCgpOwpAQCAtNjE4LDcgKzYxMyw5IEBAIGJvb2wgRGF0YWJhc2VCYWNrZW5k
Ojppc0ludGVycnVwdGVkKCkKIAogdm9pZCBEYXRhYmFzZUJhY2tlbmQ6OmxvZ0Vycm9yTWVzc2Fn
ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5hZGRDb25zb2xlTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVs
LCBtZXNzYWdlKTsKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIG1ha2UgcmVmZXJlbmNlIG9mIHRo
ZSBTY3JpcHRFeGVjdXRpb25Db250ZXhyIGZyb20gdGhlIGJhY2tlbmQuCisgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCA9IG1fZGF0YWJhc2VDb250ZXh0LT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CisgICAgY29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoT3RoZXJNZXNzYWdl
U291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSk7CiB9CiAKICNpZiBQTEFURk9STShD
SFJPTUlVTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VCYWNrZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUJhY2tlbmQuaAkocmV2aXNpb24gMTQxNzExKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDcsOCArNDcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhYmFzZUF1
dGhvcml6ZXI7Ci1jbGFzcyBEYXRhYmFzZUNvbnRleHQ7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OworY2xhc3MgRGF0YWJhc2VCYWNrZW5kQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogCiBjbGFzcyBEYXRhYmFzZUJhY2tlbmQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8RGF0YWJhc2VCYWNrZW5kPiB7CkBAIC02MSw3ICs2MCw2IEBAIHB1YmxpYzoKICAgICBib29s
IGlzTmV3KCkgY29uc3QgeyByZXR1cm4gbV9uZXc7IH0KICAgICBib29sIGlzU3luY0RhdGFiYXNl
KCkgY29uc3QgeyByZXR1cm4gbV9pc1N5bmNEYXRhYmFzZTsgfQogCi0gICAgdmlydHVhbCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAgICAg
dmlydHVhbCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKICAgICB2aXJ0
dWFsIFN0cmluZyBzdHJpbmdJZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcg
ZGlzcGxheU5hbWUoKSBjb25zdDsKQEAgLTg4LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBtYXJrQXNEZWxldGVkQW5kQ2xvc2UoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNs
b3NlSW1tZWRpYXRlbHkoKSA9IDA7CiAKLSAgICBEYXRhYmFzZUNvbnRleHQqIGRhdGFiYXNlQ29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VDb250ZXh0LmdldCgpOyB9CisgICAgRGF0
YWJhc2VCYWNrZW5kQ29udGV4dCogZGF0YWJhc2VDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhYmFzZUNvbnRleHQuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBD
aGFuZ2VWZXJzaW9uV3JhcHBlcjsKQEAgLTEwMiw3ICsxMDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIFN5bmNEYXRhYmFzZQogICAgIH07CiAKLSAgICBEYXRhYmFzZUJhY2tlbmQoUGFzc1JlZlB0
cjxEYXRhYmFzZUNvbnRleHQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhw
ZWN0ZWRWZXJzaW9uLAorICAgIERhdGFiYXNlQmFja2VuZChQYXNzUmVmUHRyPERhdGFiYXNlQmFj
a2VuZENvbnRleHQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRW
ZXJzaW9uLAogICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25n
IGVzdGltYXRlZFNpemUsIERhdGFiYXNlVHlwZSk7CiAKICAgICB2b2lkIGNsb3NlRGF0YWJhc2Uo
KTsKQEAgLTEyOSw4ICsxMjcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpOwogCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBt
X2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbjsKLSAgICBSZWZQdHI8RGF0YWJhc2VDb250ZXh0
PiBtX2RhdGFiYXNlQ29udGV4dDsgLy8gQXNzb2NpYXRlZCB3aXRoIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC4KLSAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0OworICAgIFJlZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiBtX2RhdGFi
YXNlQ29udGV4dDsgLy8gQXNzb2NpYXRlZCB3aXRoIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC4K
IAogICAgIFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fZXhwZWN0ZWRWZXJzaW9uOwpAQCAt
MTUxLDYgKzE0OCw4IEBAIHByaXZhdGU6CiAgICAgU1FMaXRlRGF0YWJhc2UgbV9zcWxpdGVEYXRh
YmFzZTsKIAogICAgIFJlZlB0cjxEYXRhYmFzZUF1dGhvcml6ZXI+IG1fZGF0YWJhc2VBdXRob3Jp
emVyOworCisgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlU2VydmVyOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZUJhY2tlbmRBc3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFzeW5j
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
RGF0YWJhc2VCYWNrZW5kQXN5bmMuaCIKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNp
bmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworRGF0YWJhc2VCYWNrZW5kQXN5bmM6OkRhdGFiYXNlQmFja2VuZEFzeW5jKFBhc3NSZWZQdHI8
RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4gZGF0YWJhc2VDb250ZXh0LCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpCisgICAgOiBEYXRhYmFzZShkYXRhYmFz
ZUNvbnRleHQsIG5hbWUsIGV4cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNp
emUpCit7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFNRTF9EQVRBQkFTRSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VCYWNrZW5kQXN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFzeW5jLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFzeW5jLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBEYXRhYmFzZUJhY2tlbmRBc3luY19oCisjZGVm
aW5lIERhdGFiYXNlQmFja2VuZEFzeW5jX2gKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisK
KyNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERhdGFiYXNlU2VydmVyOworCisvLyBGSVhN
RTogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBEYXRhYmFzZUJhY2tlbmRBc3luYyBpcyBvbmx5IGEg
cGxhY2UgaG9sZGVyCisvLyBmb3IgdGhlIHNwbGl0IG91dCBvZiB0aGUgRGF0YWJhc2UgYmFja2Vu
ZCB0byBiZSBkb25lIGxhdGVyLiBUaGlzCisvLyBwbGFjZSBob2xkZXIgaXMgbmVlZGVkIHRvIGFs
bG93IG90aGVyIGNvZGUgdGhhdCBuZWVkIHRvIHJlZmVyZW5jZSB0aGUKKy8vIERhdGFiYXNlQmFj
a2VuZEFzeW5jIHRvIGRvIHNvIGJlZm9yZSB0aGUgcHJvcGVyIGJhY2tlbmQgc3BsaXQgaXMKKy8v
IGF2YWlsYWJsZS4gVGhpcyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsIGltcGxl
bWVudGF0aW9uIGxhdGVyLgorCitjbGFzcyBEYXRhYmFzZUJhY2tlbmRBc3luYyA6IHB1YmxpYyBE
YXRhYmFzZSB7Citwcml2YXRlOgorICAgIERhdGFiYXNlQmFja2VuZEFzeW5jKFBhc3NSZWZQdHI8
RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxv
bmcgZXN0aW1hdGVkU2l6ZSk7CisKKyAgICBmcmllbmQgY2xhc3MgRGF0YWJhc2VNYW5hZ2VyOyAv
LyBGSVhNRTogcmVtb3ZlIHRoaXMgb25jZSB3ZSBoYXZlIGlzb2xhdGVkIHRoaXMgdG8gdGhlIGJh
Y2tlbmQuCisgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlU2VydmVyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2VuZGlm
IC8vIERhdGFiYXNlQmFja2VuZEFzeW5jX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0LmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKKworI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2VjdXJpdHlPcmlnaW4qIERhdGFiYXNlQmFja2VuZENv
bnRleHQ6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRD
b250ZXh0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IERhdGFiYXNlQmFja2VuZENvbnRleHRfaAorI2RlZmluZSBEYXRhYmFzZUJhY2tlbmRDb250ZXh0
X2gKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZUNvbnRl
eHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OworY2xhc3MgU2VjdXJpdHlPcmlnaW47CisKKy8vIEZJWE1FOiBUaGlzIGltcGxlbWVudGF0
aW9uIG9mIERhdGFiYXNlQmFja2VuZENvbnRleHQgaXMgb25seSBhIHBsYWNlIGhvbGRlcgorLy8g
Zm9yIHRoZSBzcGxpdCBvdXQgb2YgdGhlIERhdGFiYXNlQ29udGV4dCBiYWNrZW5kIHRvIGJlIGRv
bmUgbGF0ZXIuIFRoaXMKKy8vIHBsYWNlIGhvbGRlciBpcyBuZWVkZWQgdG8gYWxsb3cgb3RoZXIg
Y29kZSB0aGF0IG5lZWQgdG8gcmVmZXJlbmNlIHRoZQorLy8gRGF0YWJhc2VCYWNrZW5kQ29udGV4
dCB0byBkbyBzbyBiZWZvcmUgdGhlIHByb3BlciBiYWNrZW5kIHNwbGl0IGlzCisvLyBhdmFpbGFi
bGUuIFRoaXMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlv
biBsYXRlci4KKworY2xhc3MgRGF0YWJhc2VCYWNrZW5kQ29udGV4dCA6IHB1YmxpYyBEYXRhYmFz
ZUNvbnRleHQgeworcHVibGljOgorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
IH0KKyAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCisK
KyNlbmRpZiAvLyBEYXRhYmFzZUJhY2tlbmRDb250ZXh0X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5j
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VCYWNrZW5kU3luYy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZFN5bmMuaCIKKworI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworRGF0YWJhc2VCYWNrZW5kU3luYzo6RGF0YWJhc2VCYWNrZW5k
U3luYyhQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQorICAgIDog
RGF0YWJhc2VTeW5jKGRhdGFiYXNlQ29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNw
bGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkKK3sKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQmFja2VuZFN5bmMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERhdGFiYXNlQmFj
a2VuZFN5bmNfaAorI2RlZmluZSBEYXRhYmFzZUJhY2tlbmRTeW5jX2gKKworI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZVN5bmMuaCIKKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEYXRhYmFz
ZVNlcnZlcjsKKworLy8gRklYTUU6IFRoaXMgaW1wbGVtZW50YXRpb24gb2YgRGF0YWJhc2VCYWNr
ZW5kU3luYyBpcyBvbmx5IGEgcGxhY2UgaG9sZGVyCisvLyBmb3IgdGhlIHNwbGl0IG91dCBvZiB0
aGUgRGF0YWJhc2VTeW5jIGJhY2tlbmQgdG8gYmUgZG9uZSBsYXRlci4gVGhpcworLy8gcGxhY2Ug
aG9sZGVyIGlzIG5lZWRlZCB0byBhbGxvdyBvdGhlciBjb2RlIHRoYXQgbmVlZCB0byByZWZlcmVu
Y2UgdGhlCisvLyBEYXRhYmFzZUJhY2tlbmRTeW5jIHRvIGRvIHNvIGJlZm9yZSB0aGUgcHJvcGVy
IGJhY2tlbmQgc3BsaXQgaXMKKy8vIGF2YWlsYWJsZS4gVGhpcyBzaG91bGQgYmUgcmVwbGFjZWQg
d2l0aCB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIGxhdGVyLgorCitjbGFzcyBEYXRhYmFzZUJh
Y2tlbmRTeW5jIDogcHVibGljIERhdGFiYXNlU3luYyB7Citwcml2YXRlOgorICAgIERhdGFiYXNl
QmFja2VuZFN5bmMoUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKKworICAgIGZyaWVuZCBj
bGFzcyBEYXRhYmFzZU1hbmFnZXI7IC8vIEZJWE1FOiByZW1vdmUgdGhpcyBvbmNlIHdlIGhhdmUg
aXNvbGF0ZWQgdGhpcyB0byB0aGUgYmFja2VuZC4KKyAgICBmcmllbmQgY2xhc3MgRGF0YWJhc2VT
ZXJ2ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
U1FMX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gRGF0YWJhc2VCYWNrZW5kU3luY19oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2Uu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZUJhc2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJEYXRhYmFzZUJhc2UuaCIKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisK
KyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworRGF0YWJhc2VCYXNlOjpEYXRhYmFzZUJhc2UoUGFzc1JlZlB0cjxEYXRh
YmFzZUJhY2tlbmRDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUs
IHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgRGF0YWJhc2VUeXBlIGRhdGFiYXNlVHlwZSkK
KyAgICA6IERhdGFiYXNlQmFja2VuZChkYXRhYmFzZUNvbnRleHQsIG5hbWUsIGV4cGVjdGVkVmVy
c2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIGRhdGFiYXNlVHlwZSkKKyAgICAsIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dChtX2RhdGFiYXNlQ29udGV4dC0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKQoreworICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29u
dGV4dFRocmVhZCgpKTsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogRGF0YWJhc2VCYXNl
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LmdldCgpOworfQorCit2b2lkIERhdGFiYXNlQmFzZTo6bG9nRXJyb3JN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdl
TGV2ZWwsIG1lc3NhZ2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIERhdGFiYXNlQmFzZV9oCisjZGVmaW5lIERhdGFiYXNlQmFzZV9oCisKKyNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKwor
Y2xhc3MgRGF0YWJhc2VCYXNlIDogcHVibGljIERhdGFiYXNlQmFja2VuZCB7CitwdWJsaWM6Cisg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
OworICAgIHZvaWQgbG9nRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisKK3By
b3RlY3RlZDoKKyAgICBEYXRhYmFzZUJhc2UoUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250
ZXh0PiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwK
KyAgICAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0
ZWRTaXplLCBEYXRhYmFzZVR5cGUpOworCisgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBEYXRhYmFz
ZUJhc2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZUNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAkocmV2aXNpb24gMTQxNzExKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hy
b21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJh
Y2tlbmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
RGF0YWJhc2VUYXNrLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKQEAgLTEwOSw3ICsx
MTAsNyBAQCBEYXRhYmFzZUNvbnRleHQ6OkRhdGFiYXNlQ29udGV4dChTY3JpcHRFCiAKICAgICAv
LyBGb3IgZGVidWcgYWNjb3VudGluZyBvbmx5LiBXZSBtdXN0IGRvIHRoaXMgYmVmb3JlIHdlIHJl
Z2lzdGVyIHRoZQogICAgIC8vIGluc3RhbmNlLiBUaGUgYXNzZXJ0aW9ucyBhc3N1bWUgdGhpcy4K
LSAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kaWRDb25zdHJ1Y3REYXRhYmFzZUNvbnRl
eHQoKTsgCisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGlkQ29uc3RydWN0RGF0YWJh
c2VDb250ZXh0KCk7CiAKICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5yZWdpc3RlckRh
dGFiYXNlQ29udGV4dCh0aGlzKTsKIH0KQEAgLTE1MSw2ICsxNTIsMTUgQEAgdm9pZCBEYXRhYmFz
ZUNvbnRleHQ6OnN0b3AoKQogICAgIHN0b3BEYXRhYmFzZXMoKTsKIH0KIAorUGFzc1JlZlB0cjxE
YXRhYmFzZUJhY2tlbmRDb250ZXh0PiBEYXRhYmFzZUNvbnRleHQ6OmJhY2tlbmQoKQoreworICAg
IHJlZigpOworICAgIERhdGFiYXNlQmFja2VuZENvbnRleHQqIGJhY2tlbmQ7CisgICAgYmFja2Vu
ZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YWJhc2VCYWNrZW5kQ29udGV4dCo+KHRoaXMpOworICAg
IFJlZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiBiYWNrZW5kUmVmID0gYWRvcHRSZWYoYmFj
a2VuZCk7CisgICAgcmV0dXJuIGJhY2tlbmRSZWYucmVsZWFzZSgpOworfQorCiBEYXRhYmFzZVRo
cmVhZCogRGF0YWJhc2VDb250ZXh0OjpkYXRhYmFzZVRocmVhZCgpCiB7CiAgICAgaWYgKCFtX2Rh
dGFiYXNlVGhyZWFkICYmICFtX2hhc09wZW5EYXRhYmFzZXMpIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaAkocmV2
aXNpb24gMTQxNzExKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBEYXRhYmFzZTsKK2NsYXNzIERhdGFiYXNlQmFja2VuZENvbnRl
eHQ7CiBjbGFzcyBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXI7CiBjbGFzcyBEYXRhYmFzZVRocmVh
ZDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CkBAIC01MCw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBzdG9wKCk7CiAKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9CisgICAgUGFzc1Jl
ZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiBiYWNrZW5kKCk7CiAgICAgRGF0YWJhc2VUaHJl
YWQqIGRhdGFiYXNlVGhyZWFkKCk7CiAKICAgICB2b2lkIHNldEhhc09wZW5EYXRhYmFzZXMoKSB7
IG1faGFzT3BlbkRhdGFiYXNlcyA9IHRydWU7IH0KQEAgLTcyLDYgKzczLDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1faXNSZWdpc3RlcmVkOwogICAgIGJvb2wgbV9oYXNSZXF1ZXN0ZWRUZXJtaW5h
dGlvbjsKIAorICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZUJhY2tlbmRDb250ZXh0OwogICAgIGZy
aWVuZCBjbGFzcyBEYXRhYmFzZU1hbmFnZXI7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCShyZXZp
c2lvbiAxNDE3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEyICszMCwxNiBAQAogCiAjaW5j
bHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmQuaCIKKyNpbmNsdWRl
ICJEYXRhYmFzZUJhY2tlbmRBc3luYy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRl
eHQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRTeW5jLmgiCiAjaW5jbHVkZSAiRGF0YWJh
c2VDYWxsYmFjay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRh
dGFiYXNlU3luYy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGFzay5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckRhdGFiYXNlSW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIApAQCAtMjAxLDI4ICsyMDUsMzMg
QEAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gRGF0YWJhc2VNYW5hZ2VyOjpvcAogICAgIHVuc2lnbmVk
IGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlv
bkNhbGxiYWNrLAogICAgIERhdGFiYXNlRXJyb3ImIGVycm9yKQogeworICAgIFNjcmlwdENvbnRy
b2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBSZWZQdHI8RGF0YWJhc2VDb250ZXh0
PiBkYXRhYmFzZUNvbnRleHQgPSBkYXRhYmFzZUNvbnRleHRGb3IoY29udGV4dCk7CisgICAgUmVm
UHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGJhY2tlbmRDb250ZXh0ID0gZGF0YWJhc2VDb250
ZXh0LT5iYWNrZW5kKCk7CiAgICAgQVNTRVJUKGVycm9yID09IERhdGFiYXNlRXJyb3I6Ok5vbmUp
OwogCi0gICAgaWYgKCFjYW5Fc3RhYmxpc2hEYXRhYmFzZShjb250ZXh0LCBuYW1lLCBkaXNwbGF5
TmFtZSwgZXN0aW1hdGVkU2l6ZSkpIHsKKyAgICBpZiAoIW1fc2VydmVyLT5jYW5Fc3RhYmxpc2hE
YXRhYmFzZShiYWNrZW5kQ29udGV4dC5nZXQoKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRl
ZFNpemUpKSB7CiAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2UgJXMgZm9yIG9yaWdp
biAlcyBub3QgYWxsb3dlZCB0byBiZSBlc3RhYmxpc2hlZCIsIG5hbWUuYXNjaWkoKS5kYXRhKCks
IGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYXNl
ID0gYWRvcHRSZWYobmV3IERhdGFiYXNlKGRhdGFiYXNlQ29udGV4dCwgbmFtZSwgZXhwZWN0ZWRW
ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkpOwotCiAgICAgU3RyaW5nIGVycm9y
TWVzc2FnZTsKLSAgICBpZiAoIWRhdGFiYXNlLT5vcGVuQW5kVmVyaWZ5VmVyc2lvbighY3JlYXRp
b25DYWxsYmFjaywgZXJyb3IsIGVycm9yTWVzc2FnZSkpIHsKLSAgICAgICAgZGF0YWJhc2UtPmxv
Z0Vycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOworICAgIFJlZlB0cjxEYXRhYmFzZUJhY2tlbmRB
c3luYz4gYmFja2VuZCA9IGFkb3B0UmVmKG5ldyBEYXRhYmFzZUJhY2tlbmRBc3luYyhiYWNrZW5k
Q29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6
ZSkpOworCisgICAgaWYgKCFiYWNrZW5kLT5vcGVuQW5kVmVyaWZ5VmVyc2lvbighY3JlYXRpb25D
YWxsYmFjaywgZXJyb3IsIGVycm9yTWVzc2FnZSkpIHsKKyAgICAgICAgbG9nRXJyb3JNZXNzYWdl
KGNvbnRleHQsIGVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAg
IHNldERhdGFiYXNlRGV0YWlscyhjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBuYW1lLCBkaXNw
bGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CisgICAgLy8gTm93IHRoYXQgd2UgaGF2ZSBhIGJhY2tl
bmQsIHdlIGNhbiBjcmVhdGUgdGhlIGZyb250ZW5kIGRiIGZvciBpdDoKKyAgICBSZWZQdHI8RGF0
YWJhc2U+IGRhdGFiYXNlID0gRGF0YWJhc2U6OmNyZWF0ZShjb250ZXh0LCBiYWNrZW5kKTsKKwor
ICAgIG1fc2VydmVyLT5zZXREYXRhYmFzZURldGFpbHMoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4o
KSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOwogICAgIGRhdGFiYXNlQ29udGV4
dC0+c2V0SGFzT3BlbkRhdGFiYXNlcygpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRPcGVuRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2UsIGNvbnRleHQtPnNlY3VyaXR5T3Jp
Z2luKCktPmhvc3QoKSwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uKTsKIAotICAgIGlmIChkYXRhYmFz
ZS0+aXNOZXcoKSAmJiBjcmVhdGlvbkNhbGxiYWNrLmdldCgpKSB7CisgICAgaWYgKGJhY2tlbmQt
PmlzTmV3KCkgJiYgY3JlYXRpb25DYWxsYmFjay5nZXQoKSkgewogICAgICAgICBMT0coU3RvcmFn
ZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzayBmb3IgZGF0YWJh
c2UgJXBcbiIsIGRhdGFiYXNlLmdldCgpKTsKICAgICAgICAgZGF0YWJhc2UtPm1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+cG9zdFRhc2soRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzazo6Y3Jl
YXRlKGRhdGFiYXNlLCBjcmVhdGlvbkNhbGxiYWNrKSk7CiAgICAgfQpAQCAtMjM1LDI1ICsyNDQs
MjkgQEAgUGFzc1JlZlB0cjxEYXRhYmFzZVN5bmM+IERhdGFiYXNlTWFuYWdlcgogICAgIHVuc2ln
bmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVh
dGlvbkNhbGxiYWNrLCBEYXRhYmFzZUVycm9yJiBlcnJvcikKIHsKICAgICBSZWZQdHI8RGF0YWJh
c2VDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQgPSBkYXRhYmFzZUNvbnRleHRGb3IoY29udGV4dCk7
CisgICAgUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGJhY2tlbmRDb250ZXh0ID0gZGF0
YWJhc2VDb250ZXh0LT5iYWNrZW5kKCk7CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzQ29udGV4dFRo
cmVhZCgpKTsKICAgICBBU1NFUlQoZXJyb3IgPT0gRGF0YWJhc2VFcnJvcjo6Tm9uZSk7CiAKLSAg
ICBpZiAoIWNhbkVzdGFibGlzaERhdGFiYXNlKGNvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBl
c3RpbWF0ZWRTaXplKSkgeworICAgIGlmICghbV9zZXJ2ZXItPmNhbkVzdGFibGlzaERhdGFiYXNl
KGJhY2tlbmRDb250ZXh0LmdldCgpLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkp
IHsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJEYXRhYmFzZSAlcyBmb3Igb3JpZ2luICVzIG5v
dCBhbGxvd2VkIHRvIGJlIGVzdGFibGlzaGVkIiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgY29udGV4
dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0cjxEYXRhYmFzZVN5bmM+IGRhdGFiYXNlID0g
YWRvcHRSZWYobmV3IERhdGFiYXNlU3luYyhkYXRhYmFzZUNvbnRleHQsIG5hbWUsIGV4cGVjdGVk
VmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKTsKLQogICAgIFN0cmluZyBlcnJv
ck1lc3NhZ2U7Ci0gICAgaWYgKCFkYXRhYmFzZS0+b3BlbkFuZFZlcmlmeVZlcnNpb24oIWNyZWF0
aW9uQ2FsbGJhY2ssIGVycm9yLCBlcnJvck1lc3NhZ2UpKSB7Ci0gICAgICAgIGRhdGFiYXNlLT5s
b2dFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTsKKyAgICBSZWZQdHI8RGF0YWJhc2VCYWNrZW5k
U3luYz4gYmFja2VuZCA9IGFkb3B0UmVmKG5ldyBEYXRhYmFzZUJhY2tlbmRTeW5jKGJhY2tlbmRD
b250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXpl
KSk7CisKKyAgICBpZiAoIWJhY2tlbmQtPm9wZW5BbmRWZXJpZnlWZXJzaW9uKCFjcmVhdGlvbkNh
bGxiYWNrLCBlcnJvciwgZXJyb3JNZXNzYWdlKSkgeworICAgICAgICBsb2dFcnJvck1lc3NhZ2Uo
Y29udGV4dCwgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAg
c2V0RGF0YWJhc2VEZXRhaWxzKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIG5hbWUsIGRpc3Bs
YXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKKyAgICAvLyBOb3cgdGhhdCB3ZSBoYXZlIGEgYmFja2Vu
ZCwgd2UgY2FuIGNyZWF0ZSB0aGUgZnJvbnRlbmQgZGIgZm9yIGl0OgorICAgIFJlZlB0cjxEYXRh
YmFzZVN5bmM+IGRhdGFiYXNlID0gRGF0YWJhc2VTeW5jOjpjcmVhdGUoY29udGV4dCwgYmFja2Vu
ZCk7CisKKyAgICBtX3NlcnZlci0+c2V0RGF0YWJhc2VEZXRhaWxzKGNvbnRleHQtPnNlY3VyaXR5
T3JpZ2luKCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKIAotICAgIGlmIChk
YXRhYmFzZS0+aXNOZXcoKSAmJiBjcmVhdGlvbkNhbGxiYWNrLmdldCgpKSB7CisgICAgaWYgKGJh
Y2tlbmQtPmlzTmV3KCkgJiYgY3JlYXRpb25DYWxsYmFjay5nZXQoKSkgewogICAgICAgICBMT0co
U3RvcmFnZUFQSSwgIkludm9raW5nIHRoZSBjcmVhdGlvbiBjYWxsYmFjayBmb3IgZGF0YWJhc2Ug
JXBcbiIsIGRhdGFiYXNlLmdldCgpKTsKICAgICAgICAgY3JlYXRpb25DYWxsYmFjay0+aGFuZGxl
RXZlbnQoZGF0YWJhc2UuZ2V0KCkpOwogICAgIH0KQEAgLTI2Niw3ICsyNzksNyBAQCBib29sIERh
dGFiYXNlTWFuYWdlcjo6aGFzT3BlbkRhdGFiYXNlcyhTCiAgICAgUmVmUHRyPERhdGFiYXNlQ29u
dGV4dD4gZGF0YWJhc2VDb250ZXh0ID0gZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGb3IoY29udGV4
dCk7CiAgICAgaWYgKCFkYXRhYmFzZUNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gZGF0YWJhc2VDb250ZXh0LT5tX2hhc09wZW5EYXRhYmFzZXM7CisgICAgcmV0dXJu
IGRhdGFiYXNlQ29udGV4dC0+aGFzT3BlbkRhdGFiYXNlcygpOwogfQogCiB2b2lkIERhdGFiYXNl
TWFuYWdlcjo6c3RvcERhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBE
YXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIqIHN5bmNocm9uaXplcikKQEAgLTM1NSwyMiArMzY4LDE3
IEBAIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjppbnRlcnJ1cHRBbGxEYXRhYmEKIHsKICAgICBSZWZQ
dHI8RGF0YWJhc2VDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQgPSBleGlzdGluZ0RhdGFiYXNlQ29u
dGV4dEZvcihjb250ZXh0KTsKICAgICBpZiAoZGF0YWJhc2VDb250ZXh0KQotICAgICAgICBtX3Nl
cnZlci0+aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb250ZXh0KTsKKyAgICAgICAg
bV9zZXJ2ZXItPmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoZGF0YWJhc2VDb250ZXh0
LT5iYWNrZW5kKCkuZ2V0KCkpOwogfQogCi1ib29sIERhdGFiYXNlTWFuYWdlcjo6Y2FuRXN0YWJs
aXNoRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRl
ZFNpemUpCi17Ci0gICAgcmV0dXJuIG1fc2VydmVyLT5jYW5Fc3RhYmxpc2hEYXRhYmFzZShjb250
ZXh0LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7Ci19Ci0KLXZvaWQgRGF0YWJh
c2VNYW5hZ2VyOjpzZXREYXRhYmFzZURldGFpbHMoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25n
IGVzdGltYXRlZFNpemUpCit1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VNYW5hZ2VyOjpnZXRN
YXhTaXplRm9yRGF0YWJhc2UoY29uc3QgRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKIHsKLSAg
ICBtX3NlcnZlci0+c2V0RGF0YWJhc2VEZXRhaWxzKG9yaWdpbiwgbmFtZSwgZGlzcGxheU5hbWUs
IGVzdGltYXRlZFNpemUpOworICAgIHJldHVybiBtX3NlcnZlci0+Z2V0TWF4U2l6ZUZvckRhdGFi
YXNlKGRhdGFiYXNlKTsKIH0KIAotdW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlTWFuYWdlcjo6
Z2V0TWF4U2l6ZUZvckRhdGFiYXNlKGNvbnN0IERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UpCit2
b2lkIERhdGFiYXNlTWFuYWdlcjo6bG9nRXJyb3JNZXNzYWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICByZXR1cm4gbV9zZXJ2
ZXItPmdldE1heFNpemVGb3JEYXRhYmFzZShkYXRhYmFzZSk7CisgICAgY29udGV4dC0+YWRkQ29u
c29sZU1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2Fn
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAkocmV2aXNpb24g
MTQxNzExKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1h
bmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQWJz
dHJhY3REYXRhYmFzZVNlcnZlci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQmFzaWNUeXBlcy5oIgor
I2luY2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlRXJyb3IuaCIK
ICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBA
IC00MCw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJhY3REYXRh
YmFzZVNlcnZlcjsKIGNsYXNzIERhdGFiYXNlOworY2xhc3MgRGF0YWJhc2VCYWNrZW5kOwogY2xh
c3MgRGF0YWJhc2VDYWxsYmFjazsKIGNsYXNzIERhdGFiYXNlQ29udGV4dDsKIGNsYXNzIERhdGFi
YXNlTWFuYWdlckNsaWVudDsKQEAgLTExMiw5ICsxMTQsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OwogCi0gICAgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25l
ZCBsb25nIGVzdGltYXRlZFNpemUpOwotCi0gICAgdm9pZCBzZXREYXRhYmFzZURldGFpbHMoU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5h
bWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25n
IGdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBEYXRhYmFzZUJhY2tlbmQqKTsKIAogcHJpdmF0
ZToKQEAgLTEyNSw2ICsxMjQsOCBAQCBwcml2YXRlOgogICAgIC8vIGl0IGFscmVhZHkgZXhpc3Qg
cHJldmlvdXNseS4gT3RoZXJ3aXNlLCBpdCByZXR1cm5zIDAuCiAgICAgUGFzc1JlZlB0cjxEYXRh
YmFzZUNvbnRleHQ+IGV4aXN0aW5nRGF0YWJhc2VDb250ZXh0Rm9yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKIAorICAgIHN0YXRpYyB2b2lkIGxvZ0Vycm9yTWVzc2FnZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKwogICAgIEFic3RyYWN0RGF0YWJh
c2VTZXJ2ZXIqIG1fc2VydmVyOwogICAgIERhdGFiYXNlTWFuYWdlckNsaWVudCogbV9jbGllbnQ7
CiAgICAgYm9vbCBtX2RhdGFiYXNlSXNBdmFpbGFibGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcAkocmV2aXNp
b24gMTQxNzExKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDkgQEAKIAogI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRBc3luYy5oIgorI2lu
Y2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tl
bmRTeW5jLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSA8d3RmL1Vu
dXNlZFBhcmFtLmg+CiAKQEAgLTE0MSwxNCArMTQ0LDE0IEBAIHZvaWQgRGF0YWJhc2VTZXJ2ZXI6
OmNsb3NlRGF0YWJhc2VzSW1tZWQKIH0KICNlbmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkKIAot
dm9pZCBEYXRhYmFzZVNlcnZlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25z
dCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQordm9pZCBEYXRhYmFzZVNlcnZlcjo6
aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBEYXRhYmFzZUJhY2tlbmRDb250
ZXh0KiBjb250ZXh0KQogewogICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmludGVycnVw
dEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29udGV4dCk7CiB9CiAKLWJvb2wgRGF0YWJhc2VTZXJ2
ZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplKQorYm9vbCBEYXRhYmFzZVNlcnZlcjo6Y2FuRXN0YWJsaXNoRGF0
YWJhc2UoRGF0YWJhc2VCYWNrZW5kQ29udGV4dCogYmFja2VuZENvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0
ZWRTaXplKQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5jYW5Fc3Rh
Ymxpc2hEYXRhYmFzZShjb250ZXh0LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7
CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNhbkVzdGFibGlzaERhdGFi
YXNlKGJhY2tlbmRDb250ZXh0LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CiB9
CiAKIHZvaWQgRGF0YWJhc2VTZXJ2ZXI6OnNldERhdGFiYXNlRGV0YWlscyhTZWN1cml0eU9yaWdp
biogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUs
IHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmgJKHJldmlzaW9uIDE0MTcx
MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNjgsOSArNjgsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogI2VuZGlmIC8vIFBMQVRGT1JNKENIUk9NSVVNKQog
Ci0gICAgdmlydHVhbCB2b2lkIGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3Qg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHZpcnR1YWwgdm9pZCBpbnRlcnJ1cHRBbGxE
YXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IERhdGFiYXNlQmFja2VuZENvbnRleHQqKTsKIAotICAg
IHZpcnR1YWwgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25l
ZCBsb25nIGVzdGltYXRlZFNpemUpOworICAgIHZpcnR1YWwgYm9vbCBjYW5Fc3RhYmxpc2hEYXRh
YmFzZShEYXRhYmFzZUJhY2tlbmRDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldERhdGFiYXNlRGV0YWlscyhTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3Rp
bWF0ZWRTaXplKTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhTaXplRm9y
RGF0YWJhc2UoY29uc3QgRGF0YWJhc2VCYWNrZW5kKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwCShyZXZpc2lvbiAx
NDE3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3lu
Yy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDggQEAKIAogI2lmIEVOQUJMRShTUUxf
REFUQUJBU0UpCiAKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCisjaW5jbHVk
ZSAiRGF0YWJhc2VCYWNrZW5kU3luYy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIK
ICNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIu
aCIKQEAgLTQ5LDE4ICs1MSwyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURhdGFiYXNl
U3luYzo6RGF0YWJhc2VTeW5jKFBhc3NSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBkYXRhYmFzZUNv
bnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24s
CisvLyBGSVhNRTogVGhlIERhdGFiYXNlTWFuYWdlciBuZWVkcyB0byBjcmVhdGUgYSBEYXRhYmFz
ZVN5bmMgaW5zdGFuY2UgZnJvbSBpdHMgYmFja2VuZC4KKy8vIFRoaXMgZmFjdG9yeSBtZXRob2Qg
aXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCB0byB0aGF0IERhdGFiYXNlTWFuYWdlciBuZWVkLgor
Ly8gV2hlbiB0aGUgYmFja2VuZCBoYXMgYWN0dWFsbHkgYmVlbiBzcGxpdCBvdXQgZnJvbSB0aGUg
RGF0YWJhc2VTeW5jLCB3ZSBzaG91bGQgYmUKKy8vIHVzaW5nIHRoZSB1cGRhdGVkIERhdGFiYXNl
IGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgdGhpcyB3b3JrYXJvdW5kLCBhbmQgdGhpcworLy8gbWV0
aG9kIHNob3VsZCBiZSBkZWxldGVkLgorUGFzc1JlZlB0cjxEYXRhYmFzZVN5bmM+IERhdGFiYXNl
U3luYzo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPERhdGFiYXNl
QmFja2VuZFN5bmM+IGJhY2tlbmQpCit7CisgICAgcmV0dXJuIGJhY2tlbmQ7Cit9CisKK0RhdGFi
YXNlU3luYzo6RGF0YWJhc2VTeW5jKFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4g
ZGF0YWJhc2VDb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0
ZWRWZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBkaXNw
bGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQotICAgIDogRGF0YWJhc2VCYWNr
ZW5kKGRhdGFiYXNlQ29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwg
ZXN0aW1hdGVkU2l6ZSwgU3luY0RhdGFiYXNlKQorICAgIDogRGF0YWJhc2VCYXNlKGRhdGFiYXNl
Q29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6
ZSwgU3luY0RhdGFiYXNlKQogewogfQogCiBEYXRhYmFzZVN5bmM6On5EYXRhYmFzZVN5bmMoKQog
ewogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgp
KTsKLQotICAgIGlmIChvcGVuZWQoKSkKLSAgICAgICAgY2xvc2VEYXRhYmFzZSgpOwogfQogCiB2
b2lkIERhdGFiYXNlU3luYzo6Y2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbmcmIG9sZFZlcnNpb24s
IGNvbnN0IFN0cmluZyYgbmV3VmVyc2lvbiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmND
YWxsYmFjaz4gY2hhbmdlVmVyc2lvbkNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMu
aAkocmV2aXNpb24gMTQxNzExKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiAjaWYg
RU5BQkxFKFNRTF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZC5oIgorI2lu
Y2x1ZGUgIkRhdGFiYXNlQmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQmFzaWNUeXBlcy5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CkBAIC00NCwxMyArNDQsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEYXRh
YmFzZUJhY2tlbmRTeW5jOwogY2xhc3MgRGF0YWJhc2VDYWxsYmFjazsKIGNsYXNzIFNRTFRyYW5z
YWN0aW9uU3luYzsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrOwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CiAKIC8vIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIHNob3VsZCBiZSBjcmVh
dGVkIGFuZCB1c2VkIG9ubHkgb24gdGhlIHdvcmtlcidzIGNvbnRleHQgdGhyZWFkLgotY2xhc3Mg
RGF0YWJhc2VTeW5jIDogcHVibGljIERhdGFiYXNlQmFja2VuZCB7CitjbGFzcyBEYXRhYmFzZVN5
bmMgOiBwdWJsaWMgRGF0YWJhc2VCYXNlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EYXRhYmFz
ZVN5bmMoKTsKIApAQCAtNzMsOCArNzQsMTAgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToK
LSAgICBEYXRhYmFzZVN5bmMoUGFzc1JlZlB0cjxEYXRhYmFzZUNvbnRleHQ+LCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAorICAgIERhdGFiYXNlU3lu
YyhQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+LCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAogICAgICAgICAgICAgICAgICBjb25zdCBT
dHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPERhdGFiYXNlU3luYz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZFN5bmM+KTsKKwogICAgIHZvaWQgcnVuVHJh
bnNhY3Rpb24oUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4sIGJvb2wgcmVh
ZE9ubHksIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIGJvb2wgb3BlbkFuZFZlcmlmeVZlcnNpb24o
Ym9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRGF0YWJhc2VFcnJvciYsIFN0cmluZyYgZXJy
b3JNZXNzYWdlKTsKQEAgLTgyLDYgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9sYXN0
RXJyb3JNZXNzYWdlOwogCiAgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlTWFuYWdlcjsKKyAgICBm
cmllbmQgY2xhc3MgRGF0YWJhc2VCYWNrZW5kU3luYzsgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdo
ZW4gdGhlIGJhY2tlbmQgaGFzIGJlZW4gc3BsaXQgb3V0LgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAkocmV2aXNpb24gMTQxNzExKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCwxNCArMzQsMTMgQEAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJD
aHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmQuaCIKLSNpbmNsdWRlICJE
YXRhYmFzZUNvbnRleHQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCiAj
aW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiT3JpZ2luUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgogI2luY2x1ZGUgIlNRTGl0ZUZp
bGVTeXN0ZW0uaCIKQEAgLTEwOSwyNCArMTA4LDM2IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpv
cGVuVHJhY2tlckRhdGFiYXMKICAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkp
OwogCiAgICAgaWYgKG1fZGF0YWJhc2UuaXNPcGVuKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuOyAvLyBBbHJlYWR5IG9wZW4uIE5vdGhpbmcgbW9yZSB0byBkby4KIAorICAgIC8v
IElmIGNyZWF0ZUlmRG9lc05vdEV4aXN0IGlzIGZhbHNlLCBTUUxpdGVGaWxlU3lzdGVtOjplbnN1
cmVEYXRhYmFzZUZpbGVFeGlzdHMoKQorICAgIC8vIHdpbGwgcmV0dXJuIGZhbHNlIGlmIHRoZSBk
YXRhYmFzZSBmaWxlIGRvZXMgbm90IGV4aXN0LgorICAgIC8vIElmIGNyZWF0ZUlmRG9lc05vdEV4
aXN0IGlzIHRydWUsIFNRTGl0ZUZpbGVTeXN0ZW06OmVuc3VyZURhdGFiYXNlRmlsZUV4aXN0cygp
CisgICAgLy8gd2lsbCBhdHRlbXB0IHRvIGNyZWF0ZSB0aGUgcGF0aCB0byB0aGUgZGF0YWJhc2Ug
ZmlsZSBpZiBpdCBkb2VzIG5vdAorICAgIC8vIGV4aXN0cyB5ZXQuIEl0J2xsIHJldHVybiB0cnVl
IGlmIHRoZSBwYXRoIGFscmVhZHkgZXhpc3RzLCBvciBpZiBpdAorICAgIC8vIHN1Y2Nlc3NmdWxs
eSBjcmVhdGVzIHRoZSBwYXRoLiBFbHNlLCBpdCB3aWxsIHJldHVybiBmYWxzZS4KICAgICBTdHJp
bmcgZGF0YWJhc2VQYXRoID0gdHJhY2tlckRhdGFiYXNlUGF0aCgpOwogICAgIGlmICghU1FMaXRl
RmlsZVN5c3RlbTo6ZW5zdXJlRGF0YWJhc2VGaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCwgY3JlYXRl
SWZEb2VzTm90RXhpc3QpKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBPcGVuIHRoZSBkYXRh
YmFzZSB1bmNvbmRpdGlvbmFsbHkuIElmIG9uZSBkb2VzIG5vdCBleGlzdHMgYWxyZWFkeSwgb3Bl
bgorICAgIC8vIGEgbmV3IG9uZS4KICAgICBpZiAoIW1fZGF0YWJhc2Uub3BlbihkYXRhYmFzZVBh
dGgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXaGF0IGRvIGRvIGhlcmU/CiAgICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIG9wZW4gZGF0YWJhc2VQYXRoICVzLiIsIGRhdGFiYXNlUGF0aC5hc2Np
aSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9kYXRhYmFzZS5kaXNh
YmxlVGhyZWFkaW5nQ2hlY2tzKCk7CisKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgJ09yaWdpbnMn
IHRhYmxlIGV4aXN0cy4gQ3JlYXRlIGl0IGlmIGl0IGRvZXNuJ3QgZXhpc3QgeWV0LgogICAgIGlm
ICghbV9kYXRhYmFzZS50YWJsZUV4aXN0cygiT3JpZ2lucyIpKSB7CiAgICAgICAgIGlmICghbV9k
YXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIE9yaWdpbnMgKG9yaWdpbiBURVhU
IFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCBxdW90YSBJTlRFR0VSIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwpOyIpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogYW5kIGhlcmUKICAgICAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBPcmlnaW5zIHRhYmxlIik7CiAgICAg
ICAgIH0KICAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgJ0RhdGFiYXNlcycgdGFibGUg
ZXhpc3RzLiBDcmVhdGUgaXQgaWYgaXQgZG9lc24ndCBleGlzdCB5ZXQuCiAgICAgaWYgKCFtX2Rh
dGFiYXNlLnRhYmxlRXhpc3RzKCJEYXRhYmFzZXMiKSkgewogICAgICAgICBpZiAoIW1fZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBEYXRhYmFzZXMgKGd1aWQgSU5URUdFUiBQ
UklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBvcmlnaW4gVEVYVCwgbmFtZSBURVhULCBkaXNwbGF5
TmFtZSBURVhULCBlc3RpbWF0ZWRTaXplIElOVEVHRVIsIHBhdGggVEVYVCk7IikpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBhbmQgaGVyZQpAQCAtMTM1LDcgKzE0Niw3IEBAIHZvaWQgRGF0YWJh
c2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFiYXMKICAgICB9CiB9CiAKLWJvb2wgRGF0YWJhc2VU
cmFja2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2ln
bmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKK2Jvb2wgRGF0YWJhc2VUcmFja2VyOjpjYW5Fc3RhYmxp
c2hEYXRhYmFzZShEYXRhYmFzZUJhY2tlbmRDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVk
U2l6ZSkKIHsKICAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gY29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmVxdWlyZW1lbnQ7CkBAIC0xNDMsNyAr
MTU0LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNhbkVzdGFibGlzaERhdGFiYQogICAgICAg
ICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKICAgICAgICAgTG9j
a2VyPE9yaWdpblF1b3RhTWFuYWdlcj4gcXVvdGFNYW5hZ2VyTG9ja2VyKG9yaWdpblF1b3RhTWFu
YWdlcigpKTsKIAotICAgICAgICBpZiAoIWNhbkNyZWF0ZURhdGFiYXNlKG9yaWdpbiwgbmFtZSkp
CisgICAgICAgIGlmIChpc0RlbGV0aW5nRGF0YWJhc2VPck9yaWdpbkZvcihvcmlnaW4sIG5hbWUp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHJlY29yZENyZWF0aW5nRGF0
YWJhc2Uob3JpZ2luLCBuYW1lKTsKQEAgLTE2OCw4ICsxNzksNyBAQCBib29sIERhdGFiYXNlVHJh
Y2tlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhCiAKICAgICAvLyBHaXZlIHRoZSBjaHJvbWUgY2xpZW50
IGEgY2hhbmNlIHRvIGluY3JlYXNlIHRoZSBxdW90YS4KICAgICAvLyBEcm9wIGFsbCBsb2NrcyBi
ZWZvcmUgY2FsbGluZyBvdXQ7IHdlIGRvbid0IGtub3cgd2hhdCB0aGV5J2xsIGRvLgotICAgIFJl
ZlB0cjxEYXRhYmFzZUNvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCA9IERhdGFiYXNlTWFuYWdlcjo6
bWFuYWdlcigpLmRhdGFiYXNlQ29udGV4dEZvcihjb250ZXh0KTsKLSAgICBkYXRhYmFzZUNvbnRl
eHQtPmRhdGFiYXNlRXhjZWVkZWRRdW90YShuYW1lLCBEYXRhYmFzZURldGFpbHMobmFtZS5pc29s
YXRlZENvcHkoKSwgZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCksIGVzdGltYXRlZFNpemUsIDAp
KTsKKyAgICBjb250ZXh0LT5kYXRhYmFzZUV4Y2VlZGVkUXVvdGEobmFtZSwgRGF0YWJhc2VEZXRh
aWxzKG5hbWUuaXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lLmlzb2xhdGVkQ29weSgpLCBlc3Rp
bWF0ZWRTaXplLCAwKSk7CiAKICAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFz
ZUd1YXJkKTsKIApAQCAtMjAxLDcgKzIxMSw5IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpoYXNF
bnRyeUZvckRhdGFiYXMKICAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOwog
ICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoZmFsc2UpOwogICAgIGlmICghbV9kYXRhYmFzZS5pc09w
ZW4oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE5v
ICJ0cmFja2VyIGRhdGFiYXNlIi4gSGVuY2UsIG5vIGVudHJ5IGZvciB0aGUgZGF0YWJhc2Ugb2Yg
aW50ZXJlc3QuCisKKyAgICAvLyBXZSd2ZSBnb3QgYSB0cmFja2VyIGRhdGFiYXNlLiBTZXQgdXAg
YSBxdWVyeSB0byBhc2sgZm9yIHRoZSBkYiBvZiBpbnRlcmVzdDoKICAgICBTUUxpdGVTdGF0ZW1l
bnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgZ3VpZCBGUk9NIERhdGFiYXNlcyBXSEVS
RSBvcmlnaW49PyBBTkQgbmFtZT0/OyIpOwogCiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkg
IT0gU1FMUmVzdWx0T2spCkBAIC0yMjksNyArMjQxLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6
OmRhdGFiYXNlQ2hhbmdlZChEYQogICAgIG9yaWdpblF1b3RhTWFuYWdlcigpLm1hcmtEYXRhYmFz
ZShkYXRhYmFzZSk7CiB9CiAKLXZvaWQgRGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1cHRBbGxEYXRh
YmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit2
b2lkIERhdGFiYXNlVHJhY2tlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25z
dCBEYXRhYmFzZUJhY2tlbmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFZlY3RvcjxSZWZQdHI8
RGF0YWJhc2VCYWNrZW5kPiA+IG9wZW5EYXRhYmFzZXM7CiAgICAgewpAQCAtMjQ3LDcgKzI1OSw3
IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1cHRBbGxEYXRhYmEKICAgICAgICAgICAg
IERhdGFiYXNlU2V0KiBkYXRhYmFzZVNldCA9IGRiTmFtZU1hcEl0LT52YWx1ZTsKICAgICAgICAg
ICAgIERhdGFiYXNlU2V0Ojpjb25zdF9pdGVyYXRvciBkYlNldEVuZEl0ID0gZGF0YWJhc2VTZXQt
PmVuZCgpOwogICAgICAgICAgICAgZm9yIChEYXRhYmFzZVNldDo6Y29uc3RfaXRlcmF0b3IgZGJT
ZXRJdCA9IGRhdGFiYXNlU2V0LT5iZWdpbigpOyBkYlNldEl0ICE9IGRiU2V0RW5kSXQ7ICsrZGJT
ZXRJdCkgewotICAgICAgICAgICAgICAgIGlmICgoKmRiU2V0SXQpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgPT0gY29udGV4dCkKKyAgICAgICAgICAgICAgICBpZiAoKCpkYlNldEl0KS0+ZGF0
YWJhc2VDb250ZXh0KCkgPT0gY29udGV4dCkKICAgICAgICAgICAgICAgICAgICAgb3BlbkRhdGFi
YXNlcy5hcHBlbmQoKmRiU2V0SXQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zNjAs
MTAgKzM3MiwxMSBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6b3JpZ2lucyhWZWN0b3I8UmVmCiBi
b29sIERhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbk5vTG9jayhTZWN1cml0
eU9yaWdpbiogb3JpZ2luLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0VmVjdG9yKQogewogICAgIEFT
U0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7Ci0gICAgb3BlblRyYWNrZXJEYXRhYmFz
ZShmYWxzZSk7CisgICAgb3BlblRyYWNrZXJEYXRhYmFzZShmYWxzZSk7IC8vIERvbid0IGNyZWF0
ZSBvbmUgaWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0LgogICAgIGlmICghbV9kYXRhYmFzZS5p
c09wZW4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgLy8gU2V0dXAgYW4gU1FMIHF1
ZXJ5IHRvIGZldGNoIHRoZSBkYXRhYmFzZXMgZm9yIHRoZSBzcGVjaWZpZWQgb3JpZ2luOgogICAg
IFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBuYW1lIEZST00g
RGF0YWJhc2VzIHdoZXJlIG9yaWdpbj0/OyIpOwogCiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJl
KCkgIT0gU1FMUmVzdWx0T2spCkBAIC0zNzEsNiArMzg0LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNr
ZXI6OmRhdGFiYXNlTmFtZXNGb3JPcgogCiAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdp
bi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogCisgICAgLy8gRXhlY3V0ZSB0aGUgcXVlcnkgYW5k
IGZldGNoIGVhY2ggcmVsZXZhbnQgZGIgaW50byB0aGUgcmVzdWx0OgogICAgIGludCByZXN1bHQ7
CiAgICAgd2hpbGUgKChyZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxSZXN1bHRSb3cp
CiAgICAgICAgIHJlc3VsdFZlY3Rvci5hcHBlbmQoc3RhdGVtZW50LmdldENvbHVtblRleHQoMCkp
OwpAQCAtNjE3LDcgKzYzMSw5IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZVRyYWNrZXI6
OnVzYWcKICAgICAgICAgb3JpZ2luUXVvdGFNYW5hZ2VyKCkuYWRkRGF0YWJhc2Uob3JpZ2luLCBu
YW1lc1tpXSwgZnVsbFBhdGhGb3JEYXRhYmFzZU5vTG9jayhvcmlnaW4sIG5hbWVzW2ldLCBmYWxz
ZSkpOwogCiAgICAgaWYgKCFvcmlnaW5RdW90YU1hbmFnZXIoKS50cmFja3NPcmlnaW4ob3JpZ2lu
KSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAwOyAvLyBTdGlsbCBubyBkYidz
IGZvciB0aGlzIG9yaWdpbi4gSGVuY2UsIHRvdGFsIHVzYWdlIGlzIDAuCisKKyAgICAvLyBDb21w
dXRlIHRoZSB0b3RhbCBkaXNrIHVzYWdlIG9mIGFsbCBkYidzIGZyb20gdGhlIHNwZWNpZmllZCBv
cmlnaW46CiAgICAgcmV0dXJuIG9yaWdpblF1b3RhTWFuYWdlcigpLmRpc2tVc2FnZShvcmlnaW4p
OwogfQogCkBAIC04MTksMTEgKzgzNSwxMSBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRl
T3JpZ2luKFNlY3VyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRGF0YWJhc2VUcmFja2Vy
OjpjYW5DcmVhdGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcm
IG5hbWUpCitib29sIERhdGFiYXNlVHJhY2tlcjo6aXNEZWxldGluZ0RhdGFiYXNlT3JPcmlnaW5G
b3IoU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEFT
U0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7CiAgICAgLy8gQ2FuJ3QgY3JlYXRlIGEg
ZGF0YWJhc2Ugd2hpbGUgc29tZW9uZSBlbHNlIGlzIGRlbGV0aW5nIGl0OyB0aGVyZSdzIGEgcmlz
ayBvZiBsZWF2aW5nIHVudHJhY2tlZCBkYXRhYmFzZSBkZWJyaXMgb24gdGhlIGRpc2suCi0gICAg
cmV0dXJuICFkZWxldGluZ0RhdGFiYXNlKG9yaWdpbiwgbmFtZSkgJiYgIWRlbGV0aW5nT3JpZ2lu
KG9yaWdpbik7CisgICAgcmV0dXJuIGlzRGVsZXRpbmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpIHx8
IGlzRGVsZXRpbmdPcmlnaW4ob3JpZ2luKTsKIH0KIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJl
Y29yZENyZWF0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwgY29uc3QgU3RyaW5n
JiBuYW1lKQpAQCAtODY4LDcgKzg4NCw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpjcmVhdGlu
Z0RhdGFiYXNlKFMKIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpjYW5EZWxldGVEYXRhYmFzZShTZWN1
cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFt
X2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKLSAgICByZXR1cm4gIWNyZWF0aW5nRGF0YWJhc2Uo
b3JpZ2luLCBuYW1lKSAmJiAhZGVsZXRpbmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpOworICAgIHJl
dHVybiAhY3JlYXRpbmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpICYmICFpc0RlbGV0aW5nRGF0YWJh
c2Uob3JpZ2luLCBuYW1lKTsKIH0KIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZERlbGV0
aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQpA
QCAtOTAwLDcgKzkxNiw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpkb25lRGVsZXRpbmdEYXRh
YmEKICAgICB9CiB9CiAKLWJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGluZ0RhdGFiYXNlKFNl
Y3VyaXR5T3JpZ2luICpvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgRGF0YWJhc2VU
cmFja2VyOjppc0RlbGV0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBuYW1lKQogewogICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7
CiAgICAgTmFtZVNldCogbmFtZVNldCA9IG1fYmVpbmdEZWxldGVkLmdldChvcmlnaW4pOwpAQCAt
OTEwLDEwICs5MjYsMTAgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0aW5nRGF0YWJhc2Uo
UwogYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNhbkRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiAq
b3JpZ2luKQogewogICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7Ci0gICAg
cmV0dXJuICEoZGVsZXRpbmdPcmlnaW4ob3JpZ2luKSB8fCBtX2JlaW5nQ3JlYXRlZC5nZXQob3Jp
Z2luKSk7CisgICAgcmV0dXJuICEoaXNEZWxldGluZ09yaWdpbihvcmlnaW4pIHx8IG1fYmVpbmdD
cmVhdGVkLmdldChvcmlnaW4pKTsKIH0KIAotYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0aW5n
T3JpZ2luKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pCitib29sIERhdGFiYXNlVHJhY2tlcjo6aXNE
ZWxldGluZ09yaWdpbihTZWN1cml0eU9yaWdpbiAqb3JpZ2luKQogewogICAgIEFTU0VSVCghbV9k
YXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7CiAgICAgcmV0dXJuIG1fb3JpZ2luc0JlaW5nRGVsZXRl
ZC5jb250YWlucyhvcmlnaW4pOwpAQCAtOTIyLDE0ICs5MzgsMTQgQEAgYm9vbCBEYXRhYmFzZVRy
YWNrZXI6OmRlbGV0aW5nT3JpZ2luKFNlYwogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZERl
bGV0aW5nT3JpZ2luKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pCiB7CiAgICAgQVNTRVJUKCFtX2Rh
dGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKLSAgICBBU1NFUlQoIWRlbGV0aW5nT3JpZ2luKG9yaWdp
bikpOworICAgIEFTU0VSVCghaXNEZWxldGluZ09yaWdpbihvcmlnaW4pKTsKICAgICBtX29yaWdp
bnNCZWluZ0RlbGV0ZWQuYWRkKG9yaWdpbi0+aXNvbGF0ZWRDb3B5KCkpOwogfQogCiB2b2lkIERh
dGFiYXNlVHJhY2tlcjo6ZG9uZURlbGV0aW5nT3JpZ2luKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4p
CiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKLSAgICBBU1NFUlQo
ZGVsZXRpbmdPcmlnaW4ob3JpZ2luKSk7CisgICAgQVNTRVJUKGlzRGVsZXRpbmdPcmlnaW4ob3Jp
Z2luKSk7CiAgICAgbV9vcmlnaW5zQmVpbmdEZWxldGVkLnJlbW92ZShvcmlnaW4pOwogfQogCkBA
IC05OTksNyArMTAxNSw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZp
bGUKICNpZm5kZWYgTkRFQlVHCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrRGF0YWJh
c2UobV9kYXRhYmFzZUd1YXJkKTsKLSAgICAgICAgQVNTRVJUKGRlbGV0aW5nRGF0YWJhc2Uob3Jp
Z2luLCBuYW1lKSB8fCBkZWxldGluZ09yaWdpbihvcmlnaW4pKTsKKyAgICAgICAgQVNTRVJUKGlz
RGVsZXRpbmdEYXRhYmFzZU9yT3JpZ2luRm9yKG9yaWdpbiwgbmFtZSkpOwogICAgIH0KICNlbmRp
ZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJh
Y2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUcmFja2VyLmgJKHJldmlzaW9uIDE0MTcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDcgKzQ1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJhc2VCYWNrZW5k
OwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIERhdGFiYXNlQmFja2VuZENv
bnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogc3RydWN0IFNlY3VyaXR5T3JpZ2luSGFz
aDsKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIC8vIG1fZGF0YWJhc2VHdWFyZCBhbmQg
bV9vcGVuRGF0YWJhc2VNYXBHdWFyZCBjdXJyZW50bHkgZG9uJ3Qgb3ZlcmxhcC4KICAgICAvLyBu
b3RpZmljYXRpb25NdXRleCgpIGlzIGN1cnJlbnRseSBpbmRlcGVuZGVudCBvZiB0aGUgb3RoZXIg
bG9ja3MuCiAKLSAgICBib29sIGNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVu
c2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CisgICAgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFz
ZShEYXRhYmFzZUJhY2tlbmRDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOwogICAgIHZvaWQg
c2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOwog
ICAgIFN0cmluZyBmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0ID0gdHJ1ZSk7CiAKQEAgLTgxLDcg
KzgxLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhTaXplRm9yRGF0
YWJhc2UoY29uc3QgRGF0YWJhc2VCYWNrZW5kKik7CiAgICAgdm9pZCBkYXRhYmFzZUNoYW5nZWQo
RGF0YWJhc2VCYWNrZW5kKik7CiAKLSAgICB2b2lkIGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNv
bnRleHQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHZvaWQgaW50ZXJydXB0
QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBEYXRhYmFzZUJhY2tlbmRDb250ZXh0Kik7CiAK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgRGF0YWJhc2VUcmFja2VyKGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VQYXRoKTsKQEAgLTE1NywxOCArMTU3LDE4IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBI
YXNoU2V0PFN0cmluZz4gTmFtZVNldDsKICAgICBIYXNoTWFwPFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4sIE5hbWVTZXQqLCBTZWN1cml0eU9yaWdpbkhhc2g+IG1fYmVpbmdEZWxldGVkOwogICAgIEhh
c2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2VjdXJpdHlPcmlnaW5IYXNoPiBtX29yaWdp
bnNCZWluZ0RlbGV0ZWQ7Ci0gICAgYm9vbCBjYW5DcmVhdGVEYXRhYmFzZShTZWN1cml0eU9yaWdp
biAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIHZvaWQgcmVjb3JkQ3JlYXRpbmdE
YXRhYmFzZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAg
IHZvaWQgZG9uZUNyZWF0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKLSAgICBib29sIGNyZWF0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4g
Km9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBib29sIGNhbkRlbGV0ZURhdGFiYXNl
KFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgdm9pZCBy
ZWNvcmREZWxldGluZ0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7Ci0gICAgdm9pZCBkb25lRGVsZXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiAq
b3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIGJvb2wgZGVsZXRpbmdEYXRhYmFzZShT
ZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIGJvb2wgY2Fu
RGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pOwotICAgIGJvb2wgZGVsZXRpbmdP
cmlnaW4oU2VjdXJpdHlPcmlnaW4gKm9yaWdpbik7Ci0gICAgdm9pZCByZWNvcmREZWxldGluZ09y
aWdpbihTZWN1cml0eU9yaWdpbiAqb3JpZ2luKTsKLSAgICB2b2lkIGRvbmVEZWxldGluZ09yaWdp
bihTZWN1cml0eU9yaWdpbiAqb3JpZ2luKTsKKyAgICBib29sIGlzRGVsZXRpbmdEYXRhYmFzZU9y
T3JpZ2luRm9yKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lk
IHJlY29yZENyZWF0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5h
bWUpOworICAgIHZvaWQgZG9uZUNyZWF0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25z
dCBTdHJpbmcmIG5hbWUpOworICAgIGJvb2wgY3JlYXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdp
biosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgYm9vbCBjYW5EZWxldGVEYXRhYmFzZShTZWN1
cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCByZWNvcmREZWxldGlu
Z0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lk
IGRvbmVEZWxldGluZ0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKKyAgICBib29sIGlzRGVsZXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0
cmluZyYgbmFtZSk7CisgICAgYm9vbCBjYW5EZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsK
KyAgICBib29sIGlzRGVsZXRpbmdPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2b2lkIHJl
Y29yZERlbGV0aW5nT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisgICAgdm9pZCBkb25lRGVsZXRp
bmdPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKIAogICAgIHN0YXRpYyB2b2lkIHNjaGVkdWxlRm9y
Tm90aWZpY2F0aW9uKCk7CiAgICAgc3RhdGljIHZvaWQgbm90aWZ5RGF0YWJhc2VzQ2hhbmdlZCh2
b2lkKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMTQxNzExKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDcgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0
YWJhc2VBdXRob3JpemVyLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCisjaW5jbHVk
ZSAiRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
VHJhbnNhY3Rpb25DbGllbnQuY3BwCShyZXZpc2lvbiAxNDE3MTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKICNpbmNs
dWRlICJEYXRhYmFzZUJhY2tlbmQuaCIKLSNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKKyNp
bmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb25DbGll
bnQ6OmRpZEV4ZWN1dGVTdGEKIAogYm9vbCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkRXhjZWVk
UXVvdGEoRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKIHsKLSAgICBBU1NFUlQoZGF0YWJhc2Ut
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VS
VChkYXRhYmFzZS0+ZGF0YWJhc2VDb250ZXh0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
aXNDb250ZXh0VGhyZWFkKCkpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEg
PSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5xdW90YUZvck9yaWdpbihkYXRhYmFzZS0+c2Vj
dXJpdHlPcmlnaW4oKSk7CiAgICAgZGF0YWJhc2UtPmRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFz
ZUV4Y2VlZGVkUXVvdGEoZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSwgZGF0YWJhc2UtPmRl
dGFpbHMoKSk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhID0gRGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4oZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luKCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
blN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb25TeW5jLmNwcAkocmV2aXNpb24gMTQxNzExKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvblN5bmMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAogI2lu
Y2x1ZGUgIkRhdGFiYXNlQXV0aG9yaXplci5oIgotI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5o
IgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFz
ZVN5bmMuaCIKICNpbmNsdWRlICJTUUxFeGNlcHRpb24uaCIKICNpbmNsdWRlICJTUUxSZXN1bHRT
ZXQuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCShyZXZpc2lvbiAxNDE3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjUzNTAsNiArMjUzNTAsNDIgQEAKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVs
ZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kQXN5bmMuY3BwIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFz
ZVxEYXRhYmFzZUJhY2tlbmRBc3luYy5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxl
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tl
bmRDb250ZXh0LmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5o
IgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
TW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCIKKwkJCQkJPgorCQkJ
CTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0
YWJhc2VcRGF0YWJhc2VCYWNrZW5kU3luYy5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJh
c2UuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhc2UuaCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJh
c2VcRGF0YWJhc2VCYXNpY1R5cGVzLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
IAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQ2FsbGJh
Y2suaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNpb24gMTQxNzExKQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTg1Niw2ICsxODU2LDEwIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVz
XHdlYmRhdGFiYXNlXERhdGFiYXNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VBdXRob3JpemVyLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0
YWJhc2VCYWNrZW5kQXN5bmMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9k
dWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmNwcCIgLz4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kU3lu
Yy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNl
XERhdGFiYXNlQmFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVz
XHdlYmRhdGFiYXNlXERhdGFiYXNlQ29udGV4dC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlTWFuYWdlci5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlU2VydmVy
LmNwcCIgLz4KQEAgLTY0MDgsNiArNjQxMiwxMSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUF1dGhvcml6ZXIuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNr
ZW5kLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNl
XERhdGFiYXNlQmFja2VuZEFzeW5jLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZENvbnRleHQuaCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kU3lu
Yy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxE
YXRhYmFzZUJhc2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2Vi
ZGF0YWJhc2VcRGF0YWJhc2VCYXNpY1R5cGVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQ2FsbGJhY2suaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VDb250ZXh0Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFi
YXNlRXJyb3IuaCIgLz4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE0MTcxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwkod29y
a2luZyBjb3B5KQpAQCAtMTgzOSw2ICsxODM5LDE4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZC5jcHAiPgogICAgICAgPEZp
bHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2Vu
ZEFzeW5jLmNwcCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJhc2U8L0ZpbHRlcj4K
KyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2Vi
ZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAiPgorICAgICAgPEZpbHRlcj5Nb2R1
bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZFN5bmMuY3Bw
Ij4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgorICAgIDwvQ2xD
b21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxE
YXRhYmFzZUJhc2UuY3BwIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmls
dGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxl
c1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUNvbnRleHQuY3BwIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxl
c1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtODQ2MCw2ICs4NDcy
LDIxIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERh
dGFiYXNlQmFja2VuZC5oIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxl
c1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRBc3luYy5oIj4KKyAgICAgIDxGaWx0ZXI+TW9k
dWxlc1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRDb250ZXh0
LmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CisgICAgPC9D
bEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNl
XERhdGFiYXNlQmFja2VuZFN5bmMuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJh
c2U8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYXNlLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1
bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFzaWNUeXBlcy5oIj4K
KyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRh
YmFzZUNhbGxiYWNrLmgiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDE3MTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTY3MjksMTEgKzY3MjksMjMgQEAKIAkJRkRGNkJBRjkxMzRBNEM5ODAwODIyOTIwIC8qIEpT
T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGREY2QkFGNzEzNEE0Qzk4MDA4MjI5MjAgLyogSlNPZmZsaW5l
QXVkaW9Db21wbGV0aW9uRXZlbnQuaCAqLzsgfTsKIAkJRkRGN0U5QzMxM0FDMjFEQjAwQTUxRUFD
IC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGREY3RTlDMTEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1
ZmZlckNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJRkRGN0U5QzQxM0FDMjFEQjAwQTUxRUFDIC8qIEpT
QXVkaW9CdWZmZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkRGN0U5QzIxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxs
YmFjay5oICovOyB9OwotCQlGRTA5REI0OTE2OUUyRDZFMDA2MjI1NTcgLyogRGF0YWJhc2VFcnJv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwOURC
NDYxNjlFMkQ2RTAwNjIyNTU3IC8qIERhdGFiYXNlRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTExNUZBQjE2Nzk4OENEMDAyNDkxMzQg
LyogQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUxMTVGQTkxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0
YWJhc2VTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlGRTE2Q0ZEMzE2OUQxREVEMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kQXN5bmMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxNkNG
Q0YxNjlEMURFQzAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZEFzeW5jLmNwcCAqLzsgfTsKKwkJ
RkUxNkNGRDQxNjlEMURFRDAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZEFzeW5jLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE2Q0ZEMDE2OUQxREVD
MDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kQXN5bmMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTZGNkFBRjE2OUUwNTc1MDBGQzMwQTIgLyog
RGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTZGNkFBRDE2OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNr
ZW5kQ29udGV4dC5jcHAgKi87IH07CisJCUZFNkY2QUIwMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRh
YmFzZUJhY2tlbmRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTZGNkFBRTE2OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUZFMTZDRkQ1MTY5RDFERUQwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTZDRkQxMTY5RDFE
RUMwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCAqLzsgfTsKKwkJRkUxNkNGRDYx
NjlEMURFRDAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZFN5bmMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTZDRkQyMTY5RDFERUMwMEQzQTBDNyAv
KiBEYXRhYmFzZUJhY2tlbmRTeW5jLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRkVCQzVGMzExNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFz
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUJD
NUYyRjE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmNwcCAqLzsgfTsKKwkJRkVCQzVG
MzIxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVCQzVGMzAxNkJEMENDMzAwNjU5QkQzIC8qIERh
dGFiYXNlQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUZFMzM3MUEyMTY3QzExRDQwMEVEQjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzM3MUEwMTY3
QzExRDQwMEVEQjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTA5REI0OTE2OUUyRDZFMDA2MjI1NTcg
LyogRGF0YWJhc2VFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkUwOURCNDYxNjlFMkQ2RTAwNjIyNTU3IC8qIERhdGFiYXNlRXJyb3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTQ1NkYxODE2
NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE2MTY3N0Q3NEUwMDVFRERGOSAvKiBE
YXRhYmFzZU1hbmFnZXIuY3BwICovOyB9OwogCQlGRTQ1NkYxOTE2NzdENzRFMDA1RURERjkgLyog
RGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTQ1NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVCMjZEMjgx
NjdBOEYyQTAwRkREMjZCIC8qIERhdGFiYXNlU2VydmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjI2RDI3MTY3QThGMkEwMEZERDI2QiAvKiBE
YXRhYmFzZVNlcnZlci5jcHAgKi87IH07CisJCUZFQUY2NjU0MTY3OTcwMzIwMDYyRDBDNSAvKiBE
YXRhYmFzZVNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkVBRjY2NTMxNjc5NzAwNzAwNjJEMEM1IC8qIERhdGFiYXNlU2VydmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVERUY4NDExNjc5
NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVERUY4M0YxNjc5NzEwODAwMEU0NDRBIC8qIERh
dGFiYXNlU3RyYXRlZ3kuY3BwICovOyB9OworCQlGRURFRjg0MjE2Nzk3MTA4MDAwRTQ0NEEgLyog
RGF0YWJhc2VTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkVERUY4NDAxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTZGRDQ4
ODBGNjc2RTU3MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNkZENDg1MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29y
ZGluYXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUZFNkZENDhEMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNkZENDhCMEY2NzZFOTMw
MDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmNwcCAqLzsgfTsKIAkJRkU2RkQ0OEUwRjY3NkU5MzAw
MDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFNkZENDhDMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVz
LmggKi87IH07CkBAIC02NzQ1LDEwICs2NzU3LDYgQEAKIAkJRkU4MERBNjYwRTlDNDcwMzAwMEQ2
Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmgg
Ki87IH07CiAJCUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkQw
RTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi87IH07CiAJCUZFODBEQTcy
MEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZFMEU5QzQ3MkYwMDBENkY3NSAvKiBK
U1Bvc2l0aW9uRXJyb3IuaCAqLzsgfTsKLQkJRkVBRjY2NTQxNjc5NzAzMjAwNjJEMEM1IC8qIERh
dGFiYXNlU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRUFGNjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyogRGF0YWJhc2VTZXJ2ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlGRUIyNkQyODE2N0E4
RjJBMDBGREQyNkIgLyogRGF0YWJhc2VTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVCMjZEMjcxNjdBOEYyQTAwRkREMjZCIC8qIERhdGFi
YXNlU2VydmVyLmNwcCAqLzsgfTsKLQkJRkVERUY4NDExNjc5NzEwODAwMEU0NDRBIC8qIERhdGFi
YXNlU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkVERUY4M0YxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwICov
OyB9OwotCQlGRURFRjg0MjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVERUY4NDAxNjc5
NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRjk0NUVDQjE2MUY3RjM2MDA5NzFCQzggLyog
UHNldWRvRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRjk0NUVDOTE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5jcHAgKi87
IH07CiAJCUZGOTQ1RUNDMTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjk0NUVDQTE2MUY3RjM2
MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5oICovOyB9OwogCQlGRkQ1Qjk3QTEzNUNDOTc4MDBE
NUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRkQ1Qjk3NzEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZp
c2liaWxpdHlTdGF0ZS5jcHAgKi87IH07CkBAIC0xNDQwMSw5ICsxNDQwOSwyMSBAQAogCQlGREY3
RTlDMjEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTA5REI0NjE2OUUyRDZFMDA2MjI1NTcgLyogRGF0YWJh
c2VFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZUVycm9y
Lmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlRXJyb3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxMTVGQTkxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0
RGF0YWJhc2VTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWJzdHJh
Y3REYXRhYmFzZVNlcnZlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERh
dGFiYXNlU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTZDRkNGMTY5
RDFERUMwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZUJhY2tlbmRBc3luYy5jcHA7IHBhdGggPSBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFzeW5jLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkUxNkNGRDAxNjlEMURFQzAwRDNBMEM3IC8qIERhdGFiYXNlQmFj
a2VuZEFzeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlQmFj
a2VuZEFzeW5jLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFz
eW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNkY2QUFEMTY5RTA1NzUwMEZD
MzBBMiAvKiBEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwOyBwYXRoID0gTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRkU2RjZBQUUxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFja2Vu
ZENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VCYWNr
ZW5kQ29udGV4dC5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRD
b250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTZDRkQxMTY5RDFERUMw
MEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlQmFja2VuZFN5bmMuY3BwOyBwYXRoID0gTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkUxNkNGRDIxNjlEMURFQzAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZFN5bmMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VCYWNrZW5kU3luYy5o
OyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQkM1RjJGMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRh
YmFzZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGF0YWJh
c2VCYXNlLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVCQzVGMzAxNkJEMENDMzAwNjU5QkQzIC8q
IERhdGFiYXNlQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFz
ZUJhc2UuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzM3MUEwMTY3QzExRDQwMEVEQjc1MiAvKiBEYXRh
YmFzZUJhc2ljVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJh
c2VCYXNpY1R5cGVzLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzaWNU
eXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTQ1NkYxNjE2NzdENzRFMDA1
RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERhdGFiYXNlTWFuYWdlci5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNDU2
RjE3MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VNYW5hZ2VyLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
RUIyNkQyNzE2N0E4RjJBMDBGREQyNkIgLyogRGF0YWJhc2VTZXJ2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGF0YWJhc2VTZXJ2ZXIuY3BwOyBwYXRoID0gTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUZFQUY2NjUzMTY3OTcwMDcwMDYyRDBDNSAvKiBEYXRhYmFzZVNlcnZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZVNlcnZlci5oOyBwYXRoID0g
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRURFRjgzRjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVN0cmF0ZWd5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVERUY4NDAxNjc5NzEwODAwMEU0
NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGF0YWJhc2VTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTZG
RDQ4NTBGNjc2RTU3MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29vcmRpbmF0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkU2RkQ0ODYwRjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVzLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBDb29yZGluYXRlcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFNkZENDhCMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ29vcmRpbmF0ZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ0MTYsMTAgKzE0NDM2LDYgQEAKIAkJRkU4MERBNjIw
RTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNHZW9wb3NpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRTgwREE2RDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9zaXRpb25FcnJvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODBEQTZFMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bv
c2l0aW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQb3NpdGlv
bkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFQUY2NjUzMTY3OTcwMDcw
MDYyRDBDNSAvKiBEYXRhYmFzZVNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBEYXRhYmFzZVNlcnZlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRUIyNkQyNzE2N0E4RjJB
MDBGREQyNkIgLyogRGF0YWJhc2VTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gRGF0YWJhc2VTZXJ2ZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFREVG
ODNGMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlU3RyYXRlZ3kuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlGRURFRjg0MDE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VT
dHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZVN0cmF0
ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGOTQ1RUM5MTYxRjdGMzYwMDk3
MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBzZXVkb0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
Rjk0NUVDQTE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQc2V1ZG9FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZGRDVCOTc3MTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5
U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg1MDcsNiArMTg1MjMs
MTQgQEAKIAkJCQk5N0JDNjlFMjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VBdXRob3JpemVy
LmggKi8sCiAJCQkJOTdCQzY5RDYxNTA1RjA3NjAwMUI3NEFDIC8qIERhdGFiYXNlQmFja2VuZC5j
cHAgKi8sCiAJCQkJOTdCQzY5RDcxNTA1RjA3NjAwMUI3NEFDIC8qIERhdGFiYXNlQmFja2VuZC5o
ICovLAorCQkJCUZFMTZDRkNGMTY5RDFERUMwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRBc3lu
Yy5jcHAgKi8sCisJCQkJRkUxNkNGRDAxNjlEMURFQzAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2Vu
ZEFzeW5jLmggKi8sCisJCQkJRkU2RjZBQUQxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFj
a2VuZENvbnRleHQuY3BwICovLAorCQkJCUZFNkY2QUFFMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRh
YmFzZUJhY2tlbmRDb250ZXh0LmggKi8sCisJCQkJRkUxNkNGRDExNjlEMURFQzAwRDNBMEM3IC8q
IERhdGFiYXNlQmFja2VuZFN5bmMuY3BwICovLAorCQkJCUZFMTZDRkQyMTY5RDFERUMwMEQzQTBD
NyAvKiBEYXRhYmFzZUJhY2tlbmRTeW5jLmggKi8sCisJCQkJRkVCQzVGMkYxNkJEMENDMzAwNjU5
QkQzIC8qIERhdGFiYXNlQmFzZS5jcHAgKi8sCisJCQkJRkVCQzVGMzAxNkJEMENDMzAwNjU5QkQz
IC8qIERhdGFiYXNlQmFzZS5oICovLAogCQkJCUZFMzM3MUEwMTY3QzExRDQwMEVEQjc1MiAvKiBE
YXRhYmFzZUJhc2ljVHlwZXMuaCAqLywKIAkJCQk5N0JDNjlFMzE1MDVGMDgxMDAxQjc0QUMgLyog
RGF0YWJhc2VDYWxsYmFjay5oICovLAogCQkJCTk3QkM2OUU0MTUwNUYwODEwMDFCNzRBQyAvKiBE
YXRhYmFzZUNhbGxiYWNrLmlkbCAqLywKQEAgLTIzMjk1LDYgKzIzMzE5LDEwIEBACiAJCQkJOTdC
QzZBMjExNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
N0JDNkEyNDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VBdXRob3JpemVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5N0JDNjlEQjE1MDVGMDc2MDAxQjc0QUMgLyogRGF0YWJhc2VCYWNrZW5kLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGRTE2Q0ZENDE2OUQxREVEMDBEM0EwQzcgLyogRGF0YWJhc2VC
YWNrZW5kQXN5bmMuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFNkY2QUIwMTY5RTA1NzUwMEZDMzBB
MiAvKiBEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTE2Q0ZE
NjE2OUQxREVEMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kU3luYy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRkVCQzVGMzIxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkUzMzcxQTIxNjdDMTFENDAwRURCNzUyIC8qIERhdGFiYXNlQmFzaWNUeXBl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzZBMjUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFi
YXNlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTI4MTUwNUYwODEwMDFCNzRB
QyAvKiBEYXRhYmFzZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY5NDIsNiArMjY5NzAs
MTAgQEAKIAkJCQk5N0JDNkEyMDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTdCQzZBMjMxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQXV0aG9y
aXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0JDNjlEQTE1MDVGMDc2MDAxQjc0QUMgLyog
RGF0YWJhc2VCYWNrZW5kLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMTZDRkQzMTY5RDFERUQw
MEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlG
RTZGNkFBRjE2OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlGRTE2Q0ZENTE2OUQxREVEMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNr
ZW5kU3luYy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRUJDNUYzMTE2QkQwQ0MzMDA2NTlCRDMg
LyogRGF0YWJhc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QkM2QTI3MTUwNUYwODEw
MDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU0NTZG
MTgxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGRUIyNkQyODE2N0E4RjJBMDBGREQyNkIgLyogRGF0YWJhc2VTZXJ2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCg==
</data>
<flag name="commit-queue"
          id="205612"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186253</attachid>
            <date>2013-02-03 01:50:53 -0800</date>
            <delta_ts>2013-02-03 14:11:22 -0800</delta_ts>
            <desc>revised with chromium changes.</desc>
            <filename>bug-108759.patch</filename>
            <type>text/plain</type>
            <size>101622</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTcxMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExOCBAQAorMjAxMy0wMi0wMyAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHBzZXVkbyBiYWNrLWVuZCBk
YXRhYmFzZSBjbGFzc2VzICsgYSBmZXcgc21hbGwgZml4ZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3NTkuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gQWRkZWQgRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dCwgRGF0YWJhc2VCYWNrZW5kQXN5bmMsIGFuZCBEYXRhYmFzZUJhY2tlbmRTeW5jLgorICAg
ICAgICAgICBUaGVzZSBhcmUgYmFja2VuZHMgZm9yIERhdGFiYXNlQ29udGV4dCwgRGF0YWJhc2Us
IGFuZCBEYXRhYmFzZVN5bmMKKyAgICAgICAgICAgcmVzcGVjdGl2ZWx5LiBUaGV5IGFyZSBvbmx5
ICJwcmV0ZW5kIiBiYWNrZW5kcyBmb3Igbm93LgorICAgICAgICAyLiBBZGRlZCBEYXRhYmFzZUJh
c2UgdG8gaG9sZCBjb21tb24gY29kZSBiZXR3ZWVuIERhdGFiYXNlIGFuZCBEYXRhYmFzZVN5bmMu
CisgICAgICAgIDMuIFJlbmFtZWQgYSBmZXcgZnVuY3Rpb25zLgorICAgICAgICA0LiBDbGVhbmVk
IHVwIHVubmVlZGVkIGNvZGUgaW4gfkRhdGFiYXNlU3luYygpLgorICAgICAgICA1LiBBZGRlZCBz
b21lIEZJWE1FcyBhcyByZW1pbmRlcnMgb3IgcGxhY2VzIHRvIGNsZWFuIHVwIHdoZW4gd2UncmUg
ZG9uZQorICAgICAgICAgICByZWZhY3RvcmluZy4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5o
OgorICAgICAgICAoQWJzdHJhY3REYXRhYmFzZVNlcnZlcik6CisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpEYXRhYmFzZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oOgorICAgICAgICAoRGF0YWJhc2UpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6RGF0YWJhc2VCYWNrZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6fkRhdGFiYXNlQmFja2VuZCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZUJhY2tlbmQ6OmxvZ0Vycm9yTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuaDoKKyAgICAgICAgKERhdGFiYXNlQmFja2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OmRhdGFiYXNlQ29udGV4dCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kQXN5bmM6OkRhdGFiYXNl
QmFja2VuZEFzeW5jKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFj
a2VuZEFzeW5jLmg6IEFkZGVkLgorICAgICAgICAoRGF0YWJhc2VCYWNrZW5kQXN5bmMpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kQ29udGV4dDo6c2VjdXJpdHlP
cmlnaW4pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKERhdGFiYXNlQmFja2VuZENvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kQ29udGV4dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRTeW5jOjpEYXRhYmFz
ZUJhY2tlbmRTeW5jKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFj
a2VuZFN5bmMuaDogQWRkZWQuCisgICAgICAgIChEYXRhYmFzZUJhY2tlbmRTeW5jKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VCYXNlOjpEYXRhYmFzZUJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlQmFzZTo6bG9nRXJyb3JNZXNzYWdlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKERhdGFiYXNlQmFzZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpEYXRhYmFzZUNvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpiYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oOgorICAgICAgICAoRGF0YWJhc2VDb250ZXh0
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFzZVN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpoYXNPcGVuRGF0YWJhc2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmdldE1heFNpemVGb3JEYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmxvZ0Vycm9yTWVzc2FnZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAg
ICAgKERhdGFiYXNlTWFuYWdlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVNlcnZlcjo6aW50ZXJy
dXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVNl
cnZlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VTZXJ2ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OkRhdGFiYXNlU3luYyk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZVN5bmM6On5EYXRhYmFzZVN5bmMpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmg6CisgICAgICAgIChEYXRhYmFzZVN5bmMpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6aGFzRW50cnlGb3JEYXRhYmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZU5hbWVz
Rm9yT3JpZ2luTm9Mb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dXNh
Z2VGb3JPcmlnaW5Ob0xvY2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpp
c0RlbGV0aW5nRGF0YWJhc2VPck9yaWdpbkZvcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZVRyYWNrZXI6OmNhbkRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6aXNEZWxldGluZ0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6Y2FuRGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6aXNEZWxldGluZ09yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNr
ZXI6OnJlY29yZERlbGV0aW5nT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6ZG9uZURlbGV0aW5nT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVHJhY2tlci5oOgorICAgICAgICAoRGF0YWJhc2VUcmFja2VyKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRFeGNlZWRRdW90YSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvblN5bmMuY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvY2hyb21pdW0vRGF0YWJhc2VUcmFja2VyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnByZXBhcmVUb09wZW5EYXRhYmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmZhaWxlZFRvT3BlbkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6aW50ZXJydXB0QWxsRGF0YWJh
c2VzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmNsb3Nl
RGF0YWJhc2VzSW1tZWRpYXRlbHkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvY2hy
b21pdW0vU1FMVHJhbnNhY3Rpb25DbGllbnRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkQ29tbWl0V3JpdGVUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkRXhjZWVkUXVvdGEpOgorICAg
ICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KwogMjAxMy0wMi0wMiAgSnVuIEppYW5nICA8anVuLmEuamlhbmdAaW50ZWwuY29tPgogCiAgICAg
ICAgIE9wdGltaXplIHNvbWUgb3BlcmF0aW9ucyBmb3IgZmxvYXQgdHlwZSBpbiB0ZXh0dXJlIGZv
cm1hdCBjb252ZXJzaW9ucyBvZiBXZWJHTApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDE0MTcxMikKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC05NTAsNiArOTUwLDEwIEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VBdXRob3JpemVyLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5k
LmNwcAorICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuY3BwCisg
ICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0LmNwcAorICAgIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAKKyAgICBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5jcHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQ29udGV4dC5jcHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5j
cHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcApJbmRleDogU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNDE3MTIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAwLDYgKzIxMDAs
MTQgQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRob3JpemVyLmggXAogCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuaCBcCisJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuaCBcCisJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0LmNw
cCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRD
b250ZXh0LmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VC
YWNrZW5kU3luYy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VCYWNrZW5kU3luYy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlQmFzZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VCYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VCYXNpY1R5cGVzLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VDYWxsYmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlQ29udGV4dC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNDE3MTIp
CisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQzLDYg
KzE0NDMsMTEgQEAgSEVBREVSUyArPSBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZUF1dGhvcml6ZXIuaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oIFwKICAg
ICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5oIFwKKyAgICBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFzeW5jLmggXAorICAgIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIFwKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQmFja2VuZFN5bmMuaCBcCisgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJh
c2UuaCBcCisgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2ljVHlwZXMuaCBcCiAg
ICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNhbGxiYWNrLmggXAogICAgIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VFcnJvci5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5oIFwKQEAgLTMwMzcsNiArMzA0MiwxMCBAQCB1c2U/KFBMVUdJTl9CQUNL
RU5EX1hMSUIpIHsKIGVuYWJsZT8oU1FMX0RBVEFCQVNFKSB7CiAgICAgU09VUkNFUyArPSBcCiAg
ICAgICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIFwKKyAg
ICAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAgXAorICAg
ICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwIFwKKyAg
ICAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCBcCisgICAg
ICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNlLmNwcCBcCiAgICAgICAgIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUaHJlYWQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDE0MTcx
MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTAw
MCwxMSArMTAwMCwyMSBAQAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VBdXRob3JpemVyLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VCYWNrZW5kLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZUJhY2tlbmQuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJh
Y2tlbmRBc3luYy5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VCYWNrZW5kQXN5bmMuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUJhY2tlbmRDb250ZXh0LmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3luYy5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VCYXNlLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VCYXNpY1R5cGVzLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VDYWxsYmFjay5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQ29udGV4dC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VDb250ZXh0LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VFcnJvci5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFu
YWdlci5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5h
Z2VyLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIu
Y3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmgn
LAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcCcsCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VT
ZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaAkocmV2aXNpb24gMTQxNzEyKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDggKzM2LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IERhdGFiYXNlQmFja2VuZDsKK2NsYXNzIERhdGFiYXNlQmFja2VuZEFzeW5jOworY2xhc3MgRGF0
YWJhc2VCYWNrZW5kQ29udGV4dDsKK2NsYXNzIERhdGFiYXNlQmFja2VuZFN5bmM7CiBjbGFzcyBE
YXRhYmFzZU1hbmFnZXJDbGllbnQ7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xh
c3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIgewpAQCAt
NzMsOSArNzUsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YWJhc2VzSW1t
ZWRpYXRlbHkoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5h
bWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkKIAotICAgIHZpcnR1YWwgdm9p
ZCBpbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNv
bnRleHQoY29uc3QgRGF0YWJhc2VCYWNrZW5kQ29udGV4dCopID0gMDsKIAotICAgIHZpcnR1YWwg
Ym9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVz
dGltYXRlZFNpemUpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuRXN0YWJsaXNoRGF0YWJhc2Uo
RGF0YWJhc2VCYWNrZW5kQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKSA9IDA7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGlt
YXRlZFNpemUpID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhTaXpl
Rm9yRGF0YWJhc2UoY29uc3QgRGF0YWJhc2VCYWNrZW5kKikgPSAwOwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDE0
MTcxMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw4IEBACiAKICNpbmNsdWRlICJDaGFuZ2VWZXJz
aW9uV3JhcHBlci5oIgogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgorI2luY2x1ZGUgIkRh
dGFiYXNlQmFja2VuZEFzeW5jLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5o
IgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKICNpbmNsdWRlICJEYXRhYmFzZUNvbnRl
eHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKQEAgLTQ5LDcgKzUxLDYgQEAKICNp
bmNsdWRlICJTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU1FMVHJhbnNh
Y3Rpb25FcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCi0jaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFj
ay5oIgpAQCAtNjYsMTUgKzY3LDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGF0YWJh
c2U6OkRhdGFiYXNlKFBhc3NSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKLSAgICA6
IERhdGFiYXNlQmFja2VuZChkYXRhYmFzZUNvbnRleHQsIG5hbWUsIGV4cGVjdGVkVmVyc2lvbiwg
ZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIEFzeW5jRGF0YWJhc2UpCisvLyBGSVhNRTogVGhl
IERhdGFiYXNlTWFuYWdlciBuZWVkcyB0byBjcmVhdGUgYSBEYXRhYmFzZSBpbnN0YW5jZSBmcm9t
IGl0cyBiYWNrZW5kLgorLy8gVGhpcyBmYWN0b3J5IG1ldGhvZCBpcyBhIHRlbXBvcmFyeSB3b3Jr
YXJvdW5kIHRvIHRoYXQgRGF0YWJhc2VNYW5hZ2VyIG5lZWQuCisvLyBXaGVuIHRoZSBiYWNrZW5k
IGhhcyBhY3R1YWxseSBiZWVuIHNwbGl0IG91dCBmcm9tIHRoZSBEYXRhYmFzZSwgd2Ugc2hvdWxk
IGJlCisvLyB1c2luZyB0aGUgdXBkYXRlZCBEYXRhYmFzZSBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9m
IHRoaXMgd29ya2Fyb3VuZCwgYW5kIHRoaXMKKy8vIG1ldGhvZCBzaG91bGQgYmUgZGVsZXRlZC4K
K1Bhc3NSZWZQdHI8RGF0YWJhc2U+IERhdGFiYXNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQXN5bmM+IGJhY2tlbmQpCit7CisgICAg
cmV0dXJuIGJhY2tlbmQ7Cit9CisKK0RhdGFiYXNlOjpEYXRhYmFzZShQYXNzUmVmUHRyPERhdGFi
YXNlQmFja2VuZENvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQorICAgIDogRGF0YWJhc2VCYXNlKGRhdGFiYXNl
Q29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6
ZSwgQXN5bmNEYXRhYmFzZSkKICAgICAsIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzKGZhbHNlKQog
ICAgICwgbV9pc1RyYW5zYWN0aW9uUXVldWVFbmFibGVkKHRydWUpCiAgICAgLCBtX2RlbGV0ZWQo
ZmFsc2UpCiB7CiAgICAgbV9kYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luID0gbV9jb250ZXh0
VGhyZWFkU2VjdXJpdHlPcmlnaW4tPmlzb2xhdGVkQ29weSgpOwogCi0gICAgU2NyaXB0Q29udHJv
bGxlcjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIEFTU0VSVChtX2RhdGFiYXNlQ29udGV4
dC0+ZGF0YWJhc2VUaHJlYWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmgJKHJldmlzaW9uIDE0MTcxMikKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNyArMzEsNyBAQAogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkRh
dGFiYXNlQmFja2VuZC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFzZS5oIgogI2luY2x1ZGUgIkRh
dGFiYXNlQmFzaWNUeXBlcy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KQEAgLTQwLDYgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBEYXRhYmFzZUJhY2tlbmRBc3luYzsKIGNsYXNzIERhdGFiYXNlQ2FsbGJhY2s7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uOwpAQCAtNTAsNyArNTEs
NyBAQCBjbGFzcyBTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s7CiBjbGFzcyBTUUxUcmFuc2Fj
dGlvbldyYXBwZXI7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKLWNsYXNzIERhdGFiYXNlIDogcHVi
bGljIERhdGFiYXNlQmFja2VuZCB7CitjbGFzcyBEYXRhYmFzZSA6IHB1YmxpYyBEYXRhYmFzZUJh
c2UgewogcHVibGljOgogICAgIHZpcnR1YWwgfkRhdGFiYXNlKCk7CiAKQEAgLTg3LDggKzg4LDEw
IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgRGF0YWJhc2VUcmFuc2FjdGlvblRhc2s7CiAgICAgY2xh
c3MgRGF0YWJhc2VUYWJsZU5hbWVzVGFzazsKIAotICAgIERhdGFiYXNlKFBhc3NSZWZQdHI8RGF0
YWJhc2VDb250ZXh0PiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVk
VmVyc2lvbiwKKyAgICBEYXRhYmFzZShQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAogICAg
ICAgICAgICAgIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1h
dGVkU2l6ZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YWJhc2U+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRBc3luYz4pOworCiAg
ICAgdm9pZCBydW5UcmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+
LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4sCiAgICAgICAgICAgICAg
ICAgICAgICAgICBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNz
UmVmUHRyPFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4sIGJvb2wgcmVhZE9ubHkpOwogCkBAIC0xMTAs
NiArMTEzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZGVsZXRlZDsKIAogICAgIGZyaWVuZCBj
bGFzcyBEYXRhYmFzZU1hbmFnZXI7CisgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlQmFja2VuZEFz
eW5jOyAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB0aGUgYmFja2VuZCBoYXMgYmVlbiBzcGxp
dCBvdXQuCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwCShy
ZXZpc2lvbiAxNDE3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMyw3IEBACiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkRhdGFiYXNlQXV0aG9yaXplci5oIgorI2luY2x1ZGUg
IkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIK
ICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIu
aCIKQEAgLTM5LDcgKzQxLDYgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FM
aXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKLSNpbmNsdWRl
ICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpA
QCAtNTgsNyArNTksNyBAQAogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQogLy8gVGhlIERhdGFiYXNlVHJhY2tlciBtYWludGFpbnMgYSBs
aXN0IG9mIGRhdGFiYXNlcyB0aGF0IGhhdmUgYmVlbgogLy8gIm9wZW5lZCIgc28gdGhhdCB0aGUg
Y2xpZW50IGNhbiBjYWxsIGludGVycnVwdCBvciBkZWxldGUgb24gZXZlcnkgZGF0YWJhc2UKLS8v
IGFzc29jaWF0ZWQgd2l0aCBhIERhdGFiYXNlQ29udGV4dC4KKy8vIGFzc29jaWF0ZWQgd2l0aCBh
IERhdGFiYXNlQmFja2VuZENvbnRleHQuCiAvLwogLy8gV2Ugd2lsbCBvbmx5IGNhbGwgRGF0YWJh
c2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UoKSB0byBhZGQgdGhlIGRhdGFiYXNlCiAvLyB0byB0
aGUgdHJhY2tlciBhcyBvcGVuZWQgd2hlbiB3ZSd2ZSBzdWNjZWVkZWQgaW4gb3BlbmluZyB0aGUg
ZGF0YWJhc2UsCkBAIC03Myw3ICs3NCw3IEBACiAvLyBUaGUgb25seSBkYXRhYmFzZXMgaW5zdGFu
Y2VzIG5vdCB0cmFja2VkIGJ5IHRoZSB0cmFja2VyJ3Mgb3BlbiBkYXRhYmFzZQogLy8gbGlzdCBh
cmUgdGhlIG9uZXMgdGhhdCBoYXZlIG5vdCBiZWVuIGFkZGVkIHlldCwgb3IgdGhlIG9uZXMgdGhh
dCB3ZQogLy8gYXR0ZW1wdGVkIGFuIG9wZW4gb24gYnV0IGZhaWxlZCB0by4gU3VjaCBpbnN0YW5j
ZXMgb25seSBleGlzdCBpbiB0aGUKLS8vIERhdGFiYXNlTWFuYWdlcidzIGZhY3RvcnkgbWV0aG9k
cyBmb3IgY3JlYXRpbmcgRGF0YWJhc2VCYWNrZW5kcy4KKy8vIERhdGFiYXNlU2VydmVyJ3MgZmFj
dG9yeSBtZXRob2RzIGZvciBjcmVhdGluZyBEYXRhYmFzZUJhY2tlbmRzLgogLy8KIC8vIFRoZSBm
YWN0b3J5IG1ldGhvZHMgd2lsbCBlaXRoZXIgY2FsbCBvcGVuQW5kVmVyaWZ5VmVyc2lvbigpIG9y
CiAvLyBwZXJmb3JtT3BlbkFuZFZlcmlmeSgpLiBUaGVzZSBtZXRob2RzIHdpbGwgYWRkIHRoZSBu
ZXdseSBpbnN0YW50aWF0ZWQKQEAgLTIwNCwxMCArMjA1LDkgQEAgY29uc3QgY2hhciogRGF0YWJh
c2VCYWNrZW5kOjpkYXRhYmFzZUluZgogICAgIHJldHVybiBpbmZvVGFibGVOYW1lOwogfQogCi1E
YXRhYmFzZUJhY2tlbmQ6OkRhdGFiYXNlQmFja2VuZChQYXNzUmVmUHRyPERhdGFiYXNlQ29udGV4
dD4gZGF0YWJhc2VDb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhw
ZWN0ZWRWZXJzaW9uLAorRGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFzZUJhY2tlbmQoUGFzc1JlZlB0
cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sCiAgICAgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBEYXRhYmFzZVR5cGUgZGF0
YWJhc2VUeXBlKQogICAgIDogbV9kYXRhYmFzZUNvbnRleHQoZGF0YWJhc2VDb250ZXh0KQotICAg
ICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KG1fZGF0YWJhc2VDb250ZXh0LT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpCiAgICAgLCBtX25hbWUobmFtZS5pc29sYXRlZENvcHkoKSkKICAgICAs
IG1fZXhwZWN0ZWRWZXJzaW9uKGV4cGVjdGVkVmVyc2lvbi5pc29sYXRlZENvcHkoKSkKICAgICAs
IG1fZGlzcGxheU5hbWUoZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkpCkBAIC0yMTcsOCArMjE3
LDcgQEAgRGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFzZUJhY2tlbmQoUGFzc1JlZgogICAgICwgbV9u
ZXcoZmFsc2UpCiAgICAgLCBtX2lzU3luY0RhdGFiYXNlKGRhdGFiYXNlVHlwZSA9PSBTeW5jRGF0
YWJhc2UpCiB7Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2VDb250ZXh0LT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKLSAgICBtX2NvbnRleHRUaHJlYWRTZWN1cml0
eU9yaWdpbiA9IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aXNv
bGF0ZWRDb3B5KCk7CisgICAgbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4gPSBtX2RhdGFi
YXNlQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aXNvbGF0ZWRDb3B5KCk7CiAKICAgICBtX2Rh
dGFiYXNlQXV0aG9yaXplciA9IERhdGFiYXNlQXV0aG9yaXplcjo6Y3JlYXRlKGluZm9UYWJsZU5h
bWUpOwogCkBAIC0yNDIsNyArMjQxLDggQEAgRGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFzZUJhY2tl
bmQoUGFzc1JlZgogCiBEYXRhYmFzZUJhY2tlbmQ6On5EYXRhYmFzZUJhY2tlbmQoKQogewotICAg
IEFTU0VSVCghbV9vcGVuZWQpOworICAgIGlmIChvcGVuZWQoKSkKKyAgICAgICAgY2xvc2VEYXRh
YmFzZSgpOwogfQogCiB2b2lkIERhdGFiYXNlQmFja2VuZDo6Y2xvc2VEYXRhYmFzZSgpCkBAIC00
MjcsMTEgKzQyNyw2IEBAIGJvb2wgRGF0YWJhc2VCYWNrZW5kOjpwZXJmb3JtT3BlbkFuZFZlcmkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogRGF0YWJhc2VC
YWNrZW5kOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpOwotfQotCiBTZWN1cml0eU9yaWdpbiogRGF0YWJh
c2VCYWNrZW5kOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29udGV4
dFRocmVhZFNlY3VyaXR5T3JpZ2luLmdldCgpOwpAQCAtNjE4LDcgKzYxMyw5IEBAIGJvb2wgRGF0
YWJhc2VCYWNrZW5kOjppc0ludGVycnVwdGVkKCkKIAogdm9pZCBEYXRhYmFzZUJhY2tlbmQ6Omxv
Z0Vycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIEVycm9y
TWVzc2FnZUxldmVsLCBtZXNzYWdlKTsKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIG1ha2UgcmVm
ZXJlbmNlIG9mIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXhyIGZyb20gdGhlIGJhY2tlbmQuCisg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IG1fZGF0YWJhc2VDb250ZXh0LT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgY29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2Uo
T3RoZXJNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSk7CiB9CiAKICNp
ZiBQTEFURk9STShDSFJPTUlVTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuaAkocmV2aXNpb24gMTQxNzEyKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDcsOCArNDcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBEYXRhYmFzZUF1dGhvcml6ZXI7Ci1jbGFzcyBEYXRhYmFzZUNvbnRleHQ7Ci1jbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgRGF0YWJhc2VCYWNrZW5kQ29udGV4dDsKIGNsYXNz
IFNlY3VyaXR5T3JpZ2luOwogCiBjbGFzcyBEYXRhYmFzZUJhY2tlbmQgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8RGF0YWJhc2VCYWNrZW5kPiB7CkBAIC02MSw3ICs2MCw2IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzTmV3KCkgY29uc3QgeyByZXR1cm4gbV9uZXc7IH0KICAgICBib29sIGlz
U3luY0RhdGFiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N5bmNEYXRhYmFzZTsgfQogCi0gICAg
dmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25z
dDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdJZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBTdHJpbmcgZGlzcGxheU5hbWUoKSBjb25zdDsKQEAgLTg4LDcgKzg2LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBtYXJrQXNEZWxldGVkQW5kQ2xvc2UoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNsb3NlSW1tZWRpYXRlbHkoKSA9IDA7CiAKLSAgICBEYXRhYmFzZUNvbnRleHQq
IGRhdGFiYXNlQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VDb250ZXh0LmdldCgp
OyB9CisgICAgRGF0YWJhc2VCYWNrZW5kQ29udGV4dCogZGF0YWJhc2VDb250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhYmFzZUNvbnRleHQuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgogICAgIGZy
aWVuZCBjbGFzcyBDaGFuZ2VWZXJzaW9uV3JhcHBlcjsKQEAgLTEwMiw3ICsxMDAsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgIFN5bmNEYXRhYmFzZQogICAgIH07CiAKLSAgICBEYXRhYmFzZUJhY2tl
bmQoUGFzc1JlZlB0cjxEYXRhYmFzZUNvbnRleHQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAorICAgIERhdGFiYXNlQmFja2VuZChQYXNzUmVmUHRy
PERhdGFiYXNlQmFja2VuZENvbnRleHQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgZXhwZWN0ZWRWZXJzaW9uLAogICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1
bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIERhdGFiYXNlVHlwZSk7CiAKICAgICB2b2lkIGNs
b3NlRGF0YWJhc2UoKTsKQEAgLTEyOSw4ICsxMjcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpOwogCiAgICAgUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiBtX2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbjsKLSAgICBSZWZQdHI8RGF0
YWJhc2VDb250ZXh0PiBtX2RhdGFiYXNlQ29udGV4dDsgLy8gQXNzb2NpYXRlZCB3aXRoIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC4KLSAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4g
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIFJlZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250
ZXh0PiBtX2RhdGFiYXNlQ29udGV4dDsgLy8gQXNzb2NpYXRlZCB3aXRoIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC4KIAogICAgIFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fZXhwZWN0ZWRW
ZXJzaW9uOwpAQCAtMTUxLDYgKzE0OCw4IEBAIHByaXZhdGU6CiAgICAgU1FMaXRlRGF0YWJhc2Ug
bV9zcWxpdGVEYXRhYmFzZTsKIAogICAgIFJlZlB0cjxEYXRhYmFzZUF1dGhvcml6ZXI+IG1fZGF0
YWJhc2VBdXRob3JpemVyOworCisgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlU2VydmVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
QmFja2VuZEFzeW5jLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQXN5bmMuaCIKKworI2lmIEVOQUJMRShTUUxfREFU
QUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworRGF0YWJhc2VCYWNrZW5kQXN5bmM6OkRhdGFiYXNlQmFja2VuZEFzeW5j
KFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4gZGF0YWJhc2VDb250ZXh0LCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJp
bmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpCisgICAgOiBEYXRh
YmFzZShkYXRhYmFzZUNvbnRleHQsIG5hbWUsIGV4cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUs
IGVzdGltYXRlZFNpemUpCit7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFzeW5jLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFj
a2VuZEFzeW5jLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBEYXRhYmFzZUJhY2tlbmRB
c3luY19oCisjZGVmaW5lIERhdGFiYXNlQmFja2VuZEFzeW5jX2gKKworI2lmIEVOQUJMRShTUUxf
REFUQUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERhdGFiYXNlU2VydmVy
OworCisvLyBGSVhNRTogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBEYXRhYmFzZUJhY2tlbmRBc3lu
YyBpcyBvbmx5IGEgcGxhY2UgaG9sZGVyCisvLyBmb3IgdGhlIHNwbGl0IG91dCBvZiB0aGUgRGF0
YWJhc2UgYmFja2VuZCB0byBiZSBkb25lIGxhdGVyLiBUaGlzCisvLyBwbGFjZSBob2xkZXIgaXMg
bmVlZGVkIHRvIGFsbG93IG90aGVyIGNvZGUgdGhhdCBuZWVkIHRvIHJlZmVyZW5jZSB0aGUKKy8v
IERhdGFiYXNlQmFja2VuZEFzeW5jIHRvIGRvIHNvIGJlZm9yZSB0aGUgcHJvcGVyIGJhY2tlbmQg
c3BsaXQgaXMKKy8vIGF2YWlsYWJsZS4gVGhpcyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCB0aGUg
YWN0dWFsIGltcGxlbWVudGF0aW9uIGxhdGVyLgorCitjbGFzcyBEYXRhYmFzZUJhY2tlbmRBc3lu
YyA6IHB1YmxpYyBEYXRhYmFzZSB7Citwcml2YXRlOgorICAgIERhdGFiYXNlQmFja2VuZEFzeW5j
KFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4sIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUs
IHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CisKKyAgICBmcmllbmQgY2xhc3MgRGF0YWJh
c2VNYW5hZ2VyOyAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgb25jZSB3ZSBoYXZlIGlzb2xhdGVkIHRo
aXMgdG8gdGhlIGJhY2tlbmQuCisgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlU2VydmVyOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFT
RSkKKworI2VuZGlmIC8vIERhdGFiYXNlQmFja2VuZEFzeW5jX2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tl
bmRDb250ZXh0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIK
KworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2VjdXJpdHlPcmlnaW4qIERhdGFi
YXNlQmFja2VuZENvbnRleHQ6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUJhY2tlbmRDb250ZXh0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIERhdGFiYXNlQmFja2VuZENvbnRleHRfaAorI2RlZmluZSBEYXRhYmFzZUJh
Y2tlbmRDb250ZXh0X2gKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJE
YXRhYmFzZUNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OworY2xhc3MgU2VjdXJpdHlPcmlnaW47CisKKy8vIEZJWE1FOiBUaGlz
IGltcGxlbWVudGF0aW9uIG9mIERhdGFiYXNlQmFja2VuZENvbnRleHQgaXMgb25seSBhIHBsYWNl
IGhvbGRlcgorLy8gZm9yIHRoZSBzcGxpdCBvdXQgb2YgdGhlIERhdGFiYXNlQ29udGV4dCBiYWNr
ZW5kIHRvIGJlIGRvbmUgbGF0ZXIuIFRoaXMKKy8vIHBsYWNlIGhvbGRlciBpcyBuZWVkZWQgdG8g
YWxsb3cgb3RoZXIgY29kZSB0aGF0IG5lZWQgdG8gcmVmZXJlbmNlIHRoZQorLy8gRGF0YWJhc2VC
YWNrZW5kQ29udGV4dCB0byBkbyBzbyBiZWZvcmUgdGhlIHByb3BlciBiYWNrZW5kIHNwbGl0IGlz
CisvLyBhdmFpbGFibGUuIFRoaXMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggdGhlIGFjdHVhbCBp
bXBsZW1lbnRhdGlvbiBsYXRlci4KKworY2xhc3MgRGF0YWJhc2VCYWNrZW5kQ29udGV4dCA6IHB1
YmxpYyBEYXRhYmFzZUNvbnRleHQgeworcHVibGljOgorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7IH0KKyAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25z
dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTUUxf
REFUQUJBU0UpCisKKyNlbmRpZiAvLyBEYXRhYmFzZUJhY2tlbmRDb250ZXh0X2gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZUJhY2tlbmRTeW5jLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZFN5bmMuaCIKKwor
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250
ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGF0YWJhc2VCYWNrZW5kU3luYzo6RGF0
YWJhc2VCYWNrZW5kU3luYyhQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGRhdGFi
YXNlQ29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVy
c2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRT
aXplKQorICAgIDogRGF0YWJhc2VTeW5jKGRhdGFiYXNlQ29udGV4dCwgbmFtZSwgZXhwZWN0ZWRW
ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkKK3sKK30KKworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJh
Y2tlbmRTeW5jLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlQmFja2VuZFN5bmMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IERhdGFiYXNlQmFja2VuZFN5bmNfaAorI2RlZmluZSBEYXRhYmFzZUJhY2tlbmRTeW5jX2gKKwor
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZVN5bmMuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBEYXRhYmFzZVNlcnZlcjsKKworLy8gRklYTUU6IFRoaXMgaW1wbGVtZW50YXRpb24gb2Yg
RGF0YWJhc2VCYWNrZW5kU3luYyBpcyBvbmx5IGEgcGxhY2UgaG9sZGVyCisvLyBmb3IgdGhlIHNw
bGl0IG91dCBvZiB0aGUgRGF0YWJhc2VTeW5jIGJhY2tlbmQgdG8gYmUgZG9uZSBsYXRlci4gVGhp
cworLy8gcGxhY2UgaG9sZGVyIGlzIG5lZWRlZCB0byBhbGxvdyBvdGhlciBjb2RlIHRoYXQgbmVl
ZCB0byByZWZlcmVuY2UgdGhlCisvLyBEYXRhYmFzZUJhY2tlbmRTeW5jIHRvIGRvIHNvIGJlZm9y
ZSB0aGUgcHJvcGVyIGJhY2tlbmQgc3BsaXQgaXMKKy8vIGF2YWlsYWJsZS4gVGhpcyBzaG91bGQg
YmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIGxhdGVyLgorCitjbGFz
cyBEYXRhYmFzZUJhY2tlbmRTeW5jIDogcHVibGljIERhdGFiYXNlU3luYyB7Citwcml2YXRlOgor
ICAgIERhdGFiYXNlQmFja2VuZFN5bmMoUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0
PiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKKwor
ICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZU1hbmFnZXI7IC8vIEZJWE1FOiByZW1vdmUgdGhpcyBv
bmNlIHdlIGhhdmUgaXNvbGF0ZWQgdGhpcyB0byB0aGUgYmFja2VuZC4KKyAgICBmcmllbmQgY2xh
c3MgRGF0YWJhc2VTZXJ2ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gRGF0YWJhc2VCYWNrZW5kU3lu
Y19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZUJhc2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhc2UuaCIKKworI2lmIEVOQUJMRShTUUxf
REFUQUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCisjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGF0YWJhc2VCYXNlOjpEYXRhYmFzZUJhc2UoUGFz
c1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYg
ZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgRGF0YWJhc2VUeXBlIGRh
dGFiYXNlVHlwZSkKKyAgICA6IERhdGFiYXNlQmFja2VuZChkYXRhYmFzZUNvbnRleHQsIG5hbWUs
IGV4cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIGRhdGFiYXNlVHlw
ZSkKKyAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChtX2RhdGFiYXNlQ29udGV4dC0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKQoreworICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
RGF0YWJhc2VCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpOworfQorCit2b2lkIERhdGFiYXNlQmFz
ZTo6bG9nRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIERhdGFiYXNlQmFzZV9oCisjZGVmaW5lIERhdGFiYXNl
QmFzZV9oCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRGF0YWJhc2VC
YWNrZW5kLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKKworY2xhc3MgRGF0YWJhc2VCYXNlIDogcHVibGljIERhdGFiYXNlQmFja2VuZCB7
CitwdWJsaWM6CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0OworICAgIHZvaWQgbG9nRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSk7CisKK3Byb3RlY3RlZDoKKyAgICBEYXRhYmFzZUJhc2UoUGFzc1JlZlB0cjxEYXRhYmFz
ZUJhY2tlbmRDb250ZXh0PiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVj
dGVkVmVyc2lvbiwKKyAgICAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplLCBEYXRhYmFzZVR5cGUpOworCisgICAgUmVmUHRyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNlbmRp
ZiAvLyBEYXRhYmFzZUJhc2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAkocmV2aXNpb24gMTQxNzEyKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKKyNpbmNsdWRl
ICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIK
QEAgLTEwOSw3ICsxMTAsNyBAQCBEYXRhYmFzZUNvbnRleHQ6OkRhdGFiYXNlQ29udGV4dChTY3Jp
cHRFCiAKICAgICAvLyBGb3IgZGVidWcgYWNjb3VudGluZyBvbmx5LiBXZSBtdXN0IGRvIHRoaXMg
YmVmb3JlIHdlIHJlZ2lzdGVyIHRoZQogICAgIC8vIGluc3RhbmNlLiBUaGUgYXNzZXJ0aW9ucyBh
c3N1bWUgdGhpcy4KLSAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kaWRDb25zdHJ1Y3RE
YXRhYmFzZUNvbnRleHQoKTsgCisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGlkQ29u
c3RydWN0RGF0YWJhc2VDb250ZXh0KCk7CiAKICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIo
KS5yZWdpc3RlckRhdGFiYXNlQ29udGV4dCh0aGlzKTsKIH0KQEAgLTE1MSw2ICsxNTIsMTUgQEAg
dm9pZCBEYXRhYmFzZUNvbnRleHQ6OnN0b3AoKQogICAgIHN0b3BEYXRhYmFzZXMoKTsKIH0KIAor
UGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiBEYXRhYmFzZUNvbnRleHQ6OmJhY2tl
bmQoKQoreworICAgIHJlZigpOworICAgIERhdGFiYXNlQmFja2VuZENvbnRleHQqIGJhY2tlbmQ7
CisgICAgYmFja2VuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YWJhc2VCYWNrZW5kQ29udGV4dCo+
KHRoaXMpOworICAgIFJlZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiBiYWNrZW5kUmVmID0g
YWRvcHRSZWYoYmFja2VuZCk7CisgICAgcmV0dXJuIGJhY2tlbmRSZWYucmVsZWFzZSgpOworfQor
CiBEYXRhYmFzZVRocmVhZCogRGF0YWJhc2VDb250ZXh0OjpkYXRhYmFzZVRocmVhZCgpCiB7CiAg
ICAgaWYgKCFtX2RhdGFiYXNlVGhyZWFkICYmICFtX2hhc09wZW5EYXRhYmFzZXMpIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNv
bnRleHQuaAkocmV2aXNpb24gMTQxNzEyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhYmFzZTsKK2NsYXNzIERhdGFiYXNl
QmFja2VuZENvbnRleHQ7CiBjbGFzcyBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXI7CiBjbGFzcyBE
YXRhYmFzZVRocmVhZDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CkBAIC01MCw3ICs1
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9
CisgICAgUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiBiYWNrZW5kKCk7CiAgICAg
RGF0YWJhc2VUaHJlYWQqIGRhdGFiYXNlVGhyZWFkKCk7CiAKICAgICB2b2lkIHNldEhhc09wZW5E
YXRhYmFzZXMoKSB7IG1faGFzT3BlbkRhdGFiYXNlcyA9IHRydWU7IH0KQEAgLTcyLDYgKzczLDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1faXNSZWdpc3RlcmVkOwogICAgIGJvb2wgbV9oYXNSZXF1
ZXN0ZWRUZXJtaW5hdGlvbjsKIAorICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZUJhY2tlbmRDb250
ZXh0OwogICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZU1hbmFnZXI7CiB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuY3BwCShyZXZpc2lvbiAxNDE3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEyICszMCwx
NiBAQAogCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmQu
aCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRBc3luYy5oIgorI2luY2x1ZGUgIkRhdGFiYXNl
QmFja2VuZENvbnRleHQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRTeW5jLmgiCiAjaW5j
bHVkZSAiRGF0YWJhc2VDYWxsYmFjay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgog
I2luY2x1ZGUgIkRhdGFiYXNlU3luYy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGFzay5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlSW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIApAQCAtMjAx
LDI4ICsyMDUsMzMgQEAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gRGF0YWJhc2VNYW5hZ2VyOjpvcAog
ICAgIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxi
YWNrPiBjcmVhdGlvbkNhbGxiYWNrLAogICAgIERhdGFiYXNlRXJyb3ImIGVycm9yKQogeworICAg
IFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBSZWZQdHI8RGF0
YWJhc2VDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQgPSBkYXRhYmFzZUNvbnRleHRGb3IoY29udGV4
dCk7CisgICAgUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGJhY2tlbmRDb250ZXh0ID0g
ZGF0YWJhc2VDb250ZXh0LT5iYWNrZW5kKCk7CiAgICAgQVNTRVJUKGVycm9yID09IERhdGFiYXNl
RXJyb3I6Ok5vbmUpOwogCi0gICAgaWYgKCFjYW5Fc3RhYmxpc2hEYXRhYmFzZShjb250ZXh0LCBu
YW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkpIHsKKyAgICBpZiAoIW1fc2VydmVyLT5j
YW5Fc3RhYmxpc2hEYXRhYmFzZShiYWNrZW5kQ29udGV4dC5nZXQoKSwgbmFtZSwgZGlzcGxheU5h
bWUsIGVzdGltYXRlZFNpemUpKSB7CiAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2Ug
JXMgZm9yIG9yaWdpbiAlcyBub3QgYWxsb3dlZCB0byBiZSBlc3RhYmxpc2hlZCIsIG5hbWUuYXNj
aWkoKS5kYXRhKCksIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkuYXNjaWko
KS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBSZWZQdHI8RGF0YWJh
c2U+IGRhdGFiYXNlID0gYWRvcHRSZWYobmV3IERhdGFiYXNlKGRhdGFiYXNlQ29udGV4dCwgbmFt
ZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkpOwotCiAgICAg
U3RyaW5nIGVycm9yTWVzc2FnZTsKLSAgICBpZiAoIWRhdGFiYXNlLT5vcGVuQW5kVmVyaWZ5VmVy
c2lvbighY3JlYXRpb25DYWxsYmFjaywgZXJyb3IsIGVycm9yTWVzc2FnZSkpIHsKLSAgICAgICAg
ZGF0YWJhc2UtPmxvZ0Vycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOworICAgIFJlZlB0cjxEYXRh
YmFzZUJhY2tlbmRBc3luYz4gYmFja2VuZCA9IGFkb3B0UmVmKG5ldyBEYXRhYmFzZUJhY2tlbmRB
c3luYyhiYWNrZW5kQ29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwg
ZXN0aW1hdGVkU2l6ZSkpOworCisgICAgaWYgKCFiYWNrZW5kLT5vcGVuQW5kVmVyaWZ5VmVyc2lv
bighY3JlYXRpb25DYWxsYmFjaywgZXJyb3IsIGVycm9yTWVzc2FnZSkpIHsKKyAgICAgICAgbG9n
RXJyb3JNZXNzYWdlKGNvbnRleHQsIGVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIAotICAgIHNldERhdGFiYXNlRGV0YWlscyhjb250ZXh0LT5zZWN1cml0eU9yaWdpbigp
LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CisgICAgLy8gTm93IHRoYXQgd2Ug
aGF2ZSBhIGJhY2tlbmQsIHdlIGNhbiBjcmVhdGUgdGhlIGZyb250ZW5kIGRiIGZvciBpdDoKKyAg
ICBSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYXNlID0gRGF0YWJhc2U6OmNyZWF0ZShjb250ZXh0LCBi
YWNrZW5kKTsKKworICAgIG1fc2VydmVyLT5zZXREYXRhYmFzZURldGFpbHMoY29udGV4dC0+c2Vj
dXJpdHlPcmlnaW4oKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOwogICAgIGRh
dGFiYXNlQ29udGV4dC0+c2V0SGFzT3BlbkRhdGFiYXNlcygpOwogCiAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRPcGVuRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2UsIGNvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCktPmhvc3QoKSwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uKTsKIAotICAg
IGlmIChkYXRhYmFzZS0+aXNOZXcoKSAmJiBjcmVhdGlvbkNhbGxiYWNrLmdldCgpKSB7CisgICAg
aWYgKGJhY2tlbmQtPmlzTmV3KCkgJiYgY3JlYXRpb25DYWxsYmFjay5nZXQoKSkgewogICAgICAg
ICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFz
ayBmb3IgZGF0YWJhc2UgJXBcbiIsIGRhdGFiYXNlLmdldCgpKTsKICAgICAgICAgZGF0YWJhc2Ut
Pm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soRGF0YWJhc2VDcmVhdGlvbkNhbGxi
YWNrVGFzazo6Y3JlYXRlKGRhdGFiYXNlLCBjcmVhdGlvbkNhbGxiYWNrKSk7CiAgICAgfQpAQCAt
MjM1LDI1ICsyNDQsMjkgQEAgUGFzc1JlZlB0cjxEYXRhYmFzZVN5bmM+IERhdGFiYXNlTWFuYWdl
cgogICAgIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNh
bGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrLCBEYXRhYmFzZUVycm9yJiBlcnJvcikKIHsKICAgICBS
ZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQgPSBkYXRhYmFzZUNvbnRleHRG
b3IoY29udGV4dCk7CisgICAgUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGJhY2tlbmRD
b250ZXh0ID0gZGF0YWJhc2VDb250ZXh0LT5iYWNrZW5kKCk7CiAgICAgQVNTRVJUKGNvbnRleHQt
PmlzQ29udGV4dFRocmVhZCgpKTsKICAgICBBU1NFUlQoZXJyb3IgPT0gRGF0YWJhc2VFcnJvcjo6
Tm9uZSk7CiAKLSAgICBpZiAoIWNhbkVzdGFibGlzaERhdGFiYXNlKGNvbnRleHQsIG5hbWUsIGRp
c3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKSkgeworICAgIGlmICghbV9zZXJ2ZXItPmNhbkVzdGFi
bGlzaERhdGFiYXNlKGJhY2tlbmRDb250ZXh0LmdldCgpLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0
aW1hdGVkU2l6ZSkpIHsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJEYXRhYmFzZSAlcyBmb3Ig
b3JpZ2luICVzIG5vdCBhbGxvd2VkIHRvIGJlIGVzdGFibGlzaGVkIiwgbmFtZS5hc2NpaSgpLmRh
dGEoKSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEo
KSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0cjxEYXRhYmFzZVN5bmM+
IGRhdGFiYXNlID0gYWRvcHRSZWYobmV3IERhdGFiYXNlU3luYyhkYXRhYmFzZUNvbnRleHQsIG5h
bWUsIGV4cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKTsKLQogICAg
IFN0cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAgaWYgKCFkYXRhYmFzZS0+b3BlbkFuZFZlcmlmeVZl
cnNpb24oIWNyZWF0aW9uQ2FsbGJhY2ssIGVycm9yLCBlcnJvck1lc3NhZ2UpKSB7Ci0gICAgICAg
IGRhdGFiYXNlLT5sb2dFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTsKKyAgICBSZWZQdHI8RGF0
YWJhc2VCYWNrZW5kU3luYz4gYmFja2VuZCA9IGFkb3B0UmVmKG5ldyBEYXRhYmFzZUJhY2tlbmRT
eW5jKGJhY2tlbmRDb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBl
c3RpbWF0ZWRTaXplKSk7CisKKyAgICBpZiAoIWJhY2tlbmQtPm9wZW5BbmRWZXJpZnlWZXJzaW9u
KCFjcmVhdGlvbkNhbGxiYWNrLCBlcnJvciwgZXJyb3JNZXNzYWdlKSkgeworICAgICAgICBsb2dF
cnJvck1lc3NhZ2UoY29udGV4dCwgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCi0gICAgc2V0RGF0YWJhc2VEZXRhaWxzKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCks
IG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKKyAgICAvLyBOb3cgdGhhdCB3ZSBo
YXZlIGEgYmFja2VuZCwgd2UgY2FuIGNyZWF0ZSB0aGUgZnJvbnRlbmQgZGIgZm9yIGl0OgorICAg
IFJlZlB0cjxEYXRhYmFzZVN5bmM+IGRhdGFiYXNlID0gRGF0YWJhc2VTeW5jOjpjcmVhdGUoY29u
dGV4dCwgYmFja2VuZCk7CisKKyAgICBtX3NlcnZlci0+c2V0RGF0YWJhc2VEZXRhaWxzKGNvbnRl
eHQtPnNlY3VyaXR5T3JpZ2luKCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsK
IAotICAgIGlmIChkYXRhYmFzZS0+aXNOZXcoKSAmJiBjcmVhdGlvbkNhbGxiYWNrLmdldCgpKSB7
CisgICAgaWYgKGJhY2tlbmQtPmlzTmV3KCkgJiYgY3JlYXRpb25DYWxsYmFjay5nZXQoKSkgewog
ICAgICAgICBMT0coU3RvcmFnZUFQSSwgIkludm9raW5nIHRoZSBjcmVhdGlvbiBjYWxsYmFjayBm
b3IgZGF0YWJhc2UgJXBcbiIsIGRhdGFiYXNlLmdldCgpKTsKICAgICAgICAgY3JlYXRpb25DYWxs
YmFjay0+aGFuZGxlRXZlbnQoZGF0YWJhc2UuZ2V0KCkpOwogICAgIH0KQEAgLTI2Niw3ICsyNzks
NyBAQCBib29sIERhdGFiYXNlTWFuYWdlcjo6aGFzT3BlbkRhdGFiYXNlcyhTCiAgICAgUmVmUHRy
PERhdGFiYXNlQ29udGV4dD4gZGF0YWJhc2VDb250ZXh0ID0gZXhpc3RpbmdEYXRhYmFzZUNvbnRl
eHRGb3IoY29udGV4dCk7CiAgICAgaWYgKCFkYXRhYmFzZUNvbnRleHQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gZGF0YWJhc2VDb250ZXh0LT5tX2hhc09wZW5EYXRhYmFzZXM7
CisgICAgcmV0dXJuIGRhdGFiYXNlQ29udGV4dC0+aGFzT3BlbkRhdGFiYXNlcygpOwogfQogCiB2
b2lkIERhdGFiYXNlTWFuYWdlcjo6c3RvcERhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIqIHN5bmNocm9uaXplcikKQEAgLTM1
NSwyMiArMzY4LDE3IEBAIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjppbnRlcnJ1cHRBbGxEYXRhYmEK
IHsKICAgICBSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQgPSBleGlzdGlu
Z0RhdGFiYXNlQ29udGV4dEZvcihjb250ZXh0KTsKICAgICBpZiAoZGF0YWJhc2VDb250ZXh0KQot
ICAgICAgICBtX3NlcnZlci0+aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb250ZXh0
KTsKKyAgICAgICAgbV9zZXJ2ZXItPmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoZGF0
YWJhc2VDb250ZXh0LT5iYWNrZW5kKCkuZ2V0KCkpOwogfQogCi1ib29sIERhdGFiYXNlTWFuYWdl
cjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBs
b25nIGVzdGltYXRlZFNpemUpCi17Ci0gICAgcmV0dXJuIG1fc2VydmVyLT5jYW5Fc3RhYmxpc2hE
YXRhYmFzZShjb250ZXh0LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7Ci19Ci0K
LXZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzZXREYXRhYmFzZURldGFpbHMoU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1
bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpCit1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VN
YW5hZ2VyOjpnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgRGF0YWJhc2VCYWNrZW5kKiBkYXRh
YmFzZSkKIHsKLSAgICBtX3NlcnZlci0+c2V0RGF0YWJhc2VEZXRhaWxzKG9yaWdpbiwgbmFtZSwg
ZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOworICAgIHJldHVybiBtX3NlcnZlci0+Z2V0TWF4
U2l6ZUZvckRhdGFiYXNlKGRhdGFiYXNlKTsKIH0KIAotdW5zaWduZWQgbG9uZyBsb25nIERhdGFi
YXNlTWFuYWdlcjo6Z2V0TWF4U2l6ZUZvckRhdGFiYXNlKGNvbnN0IERhdGFiYXNlQmFja2VuZCog
ZGF0YWJhc2UpCit2b2lkIERhdGFiYXNlTWFuYWdlcjo6bG9nRXJyb3JNZXNzYWdlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBy
ZXR1cm4gbV9zZXJ2ZXItPmdldE1heFNpemVGb3JEYXRhYmFzZShkYXRhYmFzZSk7CisgICAgY29u
dGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgbWVzc2FnZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIu
aAkocmV2aXNpb24gMTQxNzEyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQmFz
aWNUeXBlcy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgogI2luY2x1ZGUgIkRhdGFi
YXNlRXJyb3IuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CkBAIC00MCw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QWJzdHJhY3REYXRhYmFzZVNlcnZlcjsKIGNsYXNzIERhdGFiYXNlOworY2xhc3MgRGF0YWJhc2VC
YWNrZW5kOwogY2xhc3MgRGF0YWJhc2VDYWxsYmFjazsKIGNsYXNzIERhdGFiYXNlQ29udGV4dDsK
IGNsYXNzIERhdGFiYXNlTWFuYWdlckNsaWVudDsKQEAgLTExMiw5ICsxMTQsNiBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopOwogCi0gICAgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOwotCi0gICAgdm9pZCBzZXREYXRhYmFz
ZURldGFpbHMoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CiAgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIGdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBEYXRhYmFzZUJhY2tlbmQq
KTsKIAogcHJpdmF0ZToKQEAgLTEyNSw2ICsxMjQsOCBAQCBwcml2YXRlOgogICAgIC8vIGl0IGFs
cmVhZHkgZXhpc3QgcHJldmlvdXNseS4gT3RoZXJ3aXNlLCBpdCByZXR1cm5zIDAuCiAgICAgUGFz
c1JlZlB0cjxEYXRhYmFzZUNvbnRleHQ+IGV4aXN0aW5nRGF0YWJhc2VDb250ZXh0Rm9yKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKTsKIAorICAgIHN0YXRpYyB2b2lkIGxvZ0Vycm9yTWVzc2FnZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKwogICAgIEFi
c3RyYWN0RGF0YWJhc2VTZXJ2ZXIqIG1fc2VydmVyOwogICAgIERhdGFiYXNlTWFuYWdlckNsaWVu
dCogbV9jbGllbnQ7CiAgICAgYm9vbCBtX2RhdGFiYXNlSXNBdmFpbGFibGU7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVy
LmNwcAkocmV2aXNpb24gMTQxNzEyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDkgQEAK
IAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRB
c3luYy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKKyNpbmNsdWRlICJE
YXRhYmFzZUJhY2tlbmRTeW5jLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5j
bHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKQEAgLTE0MSwxNCArMTQ0LDE0IEBAIHZvaWQgRGF0
YWJhc2VTZXJ2ZXI6OmNsb3NlRGF0YWJhc2VzSW1tZWQKIH0KICNlbmRpZiAvLyBQTEFURk9STShD
SFJPTUlVTSkKIAotdm9pZCBEYXRhYmFzZVNlcnZlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9y
Q29udGV4dChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQordm9pZCBEYXRh
YmFzZVNlcnZlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBEYXRhYmFz
ZUJhY2tlbmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29udGV4dCk7CiB9CiAKLWJvb2wg
RGF0YWJhc2VTZXJ2ZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQorYm9vbCBEYXRhYmFzZVNlcnZlcjo6Y2Fu
RXN0YWJsaXNoRGF0YWJhc2UoRGF0YWJhc2VCYWNrZW5kQ29udGV4dCogYmFja2VuZENvbnRleHQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplKQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5jYW5Fc3RhYmxpc2hEYXRhYmFzZShjb250ZXh0LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0
aW1hdGVkU2l6ZSk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNhbkVz
dGFibGlzaERhdGFiYXNlKGJhY2tlbmRDb250ZXh0LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1h
dGVkU2l6ZSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VTZXJ2ZXI6OnNldERhdGFiYXNlRGV0YWlscyhT
ZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
ZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmgJKHJl
dmlzaW9uIDE0MTcxMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsOSArNjgsOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5nJiBv
cmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogI2VuZGlmIC8vIFBMQVRGT1JN
KENIUk9NSVVNKQogCi0gICAgdmlydHVhbCB2b2lkIGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNv
bnRleHQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHZpcnR1YWwgdm9pZCBp
bnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IERhdGFiYXNlQmFja2VuZENvbnRl
eHQqKTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOworICAgIHZpcnR1YWwgYm9vbCBjYW5F
c3RhYmxpc2hEYXRhYmFzZShEYXRhYmFzZUJhY2tlbmRDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNp
emUpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldERhdGFiYXNlRGV0YWlscyhTZWN1cml0eU9yaWdp
biosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWdu
ZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBn
ZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgRGF0YWJhc2VCYWNrZW5kKik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3Bw
CShyZXZpc2lvbiAxNDE3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlU3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDggQEAKIAogI2lm
IEVOQUJMRShTUUxfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0
LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kU3luYy5oIgogI2luY2x1ZGUgIkRhdGFiYXNl
Q2FsbGJhY2suaCIKICNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJEYXRh
YmFzZU1hbmFnZXIuaCIKQEAgLTQ5LDE4ICs1MSwyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLURhdGFiYXNlU3luYzo6RGF0YWJhc2VTeW5jKFBhc3NSZWZQdHI8RGF0YWJhc2VDb250ZXh0
PiBkYXRhYmFzZUNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBl
Y3RlZFZlcnNpb24sCisvLyBGSVhNRTogVGhlIERhdGFiYXNlTWFuYWdlciBuZWVkcyB0byBjcmVh
dGUgYSBEYXRhYmFzZVN5bmMgaW5zdGFuY2UgZnJvbSBpdHMgYmFja2VuZC4KKy8vIFRoaXMgZmFj
dG9yeSBtZXRob2QgaXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCB0byB0aGF0IERhdGFiYXNlTWFu
YWdlciBuZWVkLgorLy8gV2hlbiB0aGUgYmFja2VuZCBoYXMgYWN0dWFsbHkgYmVlbiBzcGxpdCBv
dXQgZnJvbSB0aGUgRGF0YWJhc2VTeW5jLCB3ZSBzaG91bGQgYmUKKy8vIHVzaW5nIHRoZSB1cGRh
dGVkIERhdGFiYXNlIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgdGhpcyB3b3JrYXJvdW5kLCBhbmQg
dGhpcworLy8gbWV0aG9kIHNob3VsZCBiZSBkZWxldGVkLgorUGFzc1JlZlB0cjxEYXRhYmFzZVN5
bmM+IERhdGFiYXNlU3luYzo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPERhdGFiYXNlQmFja2VuZFN5bmM+IGJhY2tlbmQpCit7CisgICAgcmV0dXJuIGJhY2tlbmQ7
Cit9CisKK0RhdGFiYXNlU3luYzo6RGF0YWJhc2VTeW5jKFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNr
ZW5kQ29udGV4dD4gZGF0YWJhc2VDb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQotICAgIDog
RGF0YWJhc2VCYWNrZW5kKGRhdGFiYXNlQ29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBk
aXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSwgU3luY0RhdGFiYXNlKQorICAgIDogRGF0YWJhc2VC
YXNlKGRhdGFiYXNlQ29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwg
ZXN0aW1hdGVkU2l6ZSwgU3luY0RhdGFiYXNlKQogewogfQogCiBEYXRhYmFzZVN5bmM6On5EYXRh
YmFzZVN5bmMoKQogewogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29u
dGV4dFRocmVhZCgpKTsKLQotICAgIGlmIChvcGVuZWQoKSkKLSAgICAgICAgY2xvc2VEYXRhYmFz
ZSgpOwogfQogCiB2b2lkIERhdGFiYXNlU3luYzo6Y2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbmcm
IG9sZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgbmV3VmVyc2lvbiwgUGFzc1JlZlB0cjxTUUxUcmFu
c2FjdGlvblN5bmNDYWxsYmFjaz4gY2hhbmdlVmVyc2lvbkNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
JiBlYykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VT
eW5jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVN5bmMuaAkocmV2aXNpb24gMTQxNzEyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMs
NyBAQAogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkRhdGFiYXNlQmFj
a2VuZC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQmFz
aWNUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CkBAIC00NCwxMyArNDQsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBEYXRhYmFzZUJhY2tlbmRTeW5jOwogY2xhc3MgRGF0YWJhc2VDYWxsYmFjazsKIGNs
YXNzIFNRTFRyYW5zYWN0aW9uU3luYzsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNr
OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIC8vIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIHNo
b3VsZCBiZSBjcmVhdGVkIGFuZCB1c2VkIG9ubHkgb24gdGhlIHdvcmtlcidzIGNvbnRleHQgdGhy
ZWFkLgotY2xhc3MgRGF0YWJhc2VTeW5jIDogcHVibGljIERhdGFiYXNlQmFja2VuZCB7CitjbGFz
cyBEYXRhYmFzZVN5bmMgOiBwdWJsaWMgRGF0YWJhc2VCYXNlIHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5EYXRhYmFzZVN5bmMoKTsKIApAQCAtNzMsOCArNzQsMTAgQEAgcHVibGljOgogICAgIH0K
IAogcHJpdmF0ZToKLSAgICBEYXRhYmFzZVN5bmMoUGFzc1JlZlB0cjxEYXRhYmFzZUNvbnRleHQ+
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAorICAg
IERhdGFiYXNlU3luYyhQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAogICAgICAgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNp
emUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGFiYXNlU3luYz4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZFN5bmM+KTsKKwogICAg
IHZvaWQgcnVuVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFj
az4sIGJvb2wgcmVhZE9ubHksIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIGJvb2wgb3BlbkFuZFZl
cmlmeVZlcnNpb24oYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRGF0YWJhc2VFcnJvciYs
IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKQEAgLTgyLDYgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9sYXN0RXJyb3JNZXNzYWdlOwogCiAgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlTWFu
YWdlcjsKKyAgICBmcmllbmQgY2xhc3MgRGF0YWJhc2VCYWNrZW5kU3luYzsgLy8gRklYTUU6IHJl
bW92ZSB0aGlzIHdoZW4gdGhlIGJhY2tlbmQgaGFzIGJlZW4gc3BsaXQgb3V0LgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAkocmV2aXNpb24gMTQxNzEyKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNCArMzQsMTMgQEAKICNpbmNsdWRlICJDaHJvbWUuaCIK
ICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmQuaCIK
LSNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRD
b250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiT3JpZ2luUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgogI2luY2x1
ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKQEAgLTEwOSwyNCArMTA4LDM2IEBAIHZvaWQgRGF0YWJh
c2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFiYXMKICAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFy
ZC50cnlMb2NrKCkpOwogCiAgICAgaWYgKG1fZGF0YWJhc2UuaXNPcGVuKCkpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuOyAvLyBBbHJlYWR5IG9wZW4uIE5vdGhpbmcgbW9yZSB0byBk
by4KIAorICAgIC8vIElmIGNyZWF0ZUlmRG9lc05vdEV4aXN0IGlzIGZhbHNlLCBTUUxpdGVGaWxl
U3lzdGVtOjplbnN1cmVEYXRhYmFzZUZpbGVFeGlzdHMoKQorICAgIC8vIHdpbGwgcmV0dXJuIGZh
bHNlIGlmIHRoZSBkYXRhYmFzZSBmaWxlIGRvZXMgbm90IGV4aXN0LgorICAgIC8vIElmIGNyZWF0
ZUlmRG9lc05vdEV4aXN0IGlzIHRydWUsIFNRTGl0ZUZpbGVTeXN0ZW06OmVuc3VyZURhdGFiYXNl
RmlsZUV4aXN0cygpCisgICAgLy8gd2lsbCBhdHRlbXB0IHRvIGNyZWF0ZSB0aGUgcGF0aCB0byB0
aGUgZGF0YWJhc2UgZmlsZSBpZiBpdCBkb2VzIG5vdAorICAgIC8vIGV4aXN0cyB5ZXQuIEl0J2xs
IHJldHVybiB0cnVlIGlmIHRoZSBwYXRoIGFscmVhZHkgZXhpc3RzLCBvciBpZiBpdAorICAgIC8v
IHN1Y2Nlc3NmdWxseSBjcmVhdGVzIHRoZSBwYXRoLiBFbHNlLCBpdCB3aWxsIHJldHVybiBmYWxz
ZS4KICAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gdHJhY2tlckRhdGFiYXNlUGF0aCgpOwogICAg
IGlmICghU1FMaXRlRmlsZVN5c3RlbTo6ZW5zdXJlRGF0YWJhc2VGaWxlRXhpc3RzKGRhdGFiYXNl
UGF0aCwgY3JlYXRlSWZEb2VzTm90RXhpc3QpKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBP
cGVuIHRoZSBkYXRhYmFzZSB1bmNvbmRpdGlvbmFsbHkuIElmIG9uZSBkb2VzIG5vdCBleGlzdHMg
YWxyZWFkeSwgb3BlbgorICAgIC8vIGEgbmV3IG9uZS4KICAgICBpZiAoIW1fZGF0YWJhc2Uub3Bl
bihkYXRhYmFzZVBhdGgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXaGF0IGRvIGRvIGhlcmU/CiAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gZGF0YWJhc2VQYXRoICVzLiIsIGRhdGFi
YXNlUGF0aC5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9k
YXRhYmFzZS5kaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCk7CisKKyAgICAvLyBFbnN1cmUgdGhhdCB0
aGUgJ09yaWdpbnMnIHRhYmxlIGV4aXN0cy4gQ3JlYXRlIGl0IGlmIGl0IGRvZXNuJ3QgZXhpc3Qg
eWV0LgogICAgIGlmICghbV9kYXRhYmFzZS50YWJsZUV4aXN0cygiT3JpZ2lucyIpKSB7CiAgICAg
ICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIE9yaWdpbnMg
KG9yaWdpbiBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCBxdW90YSBJTlRFR0VSIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogYW5k
IGhlcmUKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBPcmlnaW5zIHRh
YmxlIik7CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgJ0RhdGFi
YXNlcycgdGFibGUgZXhpc3RzLiBDcmVhdGUgaXQgaWYgaXQgZG9lc24ndCBleGlzdCB5ZXQuCiAg
ICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJEYXRhYmFzZXMiKSkgewogICAgICAgICBp
ZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBEYXRhYmFzZXMgKGd1
aWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBvcmlnaW4gVEVYVCwgbmFtZSBU
RVhULCBkaXNwbGF5TmFtZSBURVhULCBlc3RpbWF0ZWRTaXplIElOVEVHRVIsIHBhdGggVEVYVCk7
IikpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBhbmQgaGVyZQpAQCAtMTM1LDcgKzE0Niw3IEBA
IHZvaWQgRGF0YWJhc2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFiYXMKICAgICB9CiB9CiAKLWJv
b2wgRGF0YWJhc2VUcmFja2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKK2Jvb2wgRGF0YWJhc2VUcmFja2Vy
OjpjYW5Fc3RhYmxpc2hEYXRhYmFzZShEYXRhYmFzZUJhY2tlbmRDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxv
bmcgZXN0aW1hdGVkU2l6ZSkKIHsKICAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gY29udGV4
dC0+c2VjdXJpdHlPcmlnaW4oKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmVxdWlyZW1lbnQ7
CkBAIC0xNDMsNyArMTU0LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNhbkVzdGFibGlzaERh
dGFiYQogICAgICAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsK
ICAgICAgICAgTG9ja2VyPE9yaWdpblF1b3RhTWFuYWdlcj4gcXVvdGFNYW5hZ2VyTG9ja2VyKG9y
aWdpblF1b3RhTWFuYWdlcigpKTsKIAotICAgICAgICBpZiAoIWNhbkNyZWF0ZURhdGFiYXNlKG9y
aWdpbiwgbmFtZSkpCisgICAgICAgIGlmIChpc0RlbGV0aW5nRGF0YWJhc2VPck9yaWdpbkZvcihv
cmlnaW4sIG5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHJlY29y
ZENyZWF0aW5nRGF0YWJhc2Uob3JpZ2luLCBuYW1lKTsKQEAgLTE2OCw4ICsxNzksNyBAQCBib29s
IERhdGFiYXNlVHJhY2tlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhCiAKICAgICAvLyBHaXZlIHRoZSBj
aHJvbWUgY2xpZW50IGEgY2hhbmNlIHRvIGluY3JlYXNlIHRoZSBxdW90YS4KICAgICAvLyBEcm9w
IGFsbCBsb2NrcyBiZWZvcmUgY2FsbGluZyBvdXQ7IHdlIGRvbid0IGtub3cgd2hhdCB0aGV5J2xs
IGRvLgotICAgIFJlZlB0cjxEYXRhYmFzZUNvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCA9IERhdGFi
YXNlTWFuYWdlcjo6bWFuYWdlcigpLmRhdGFiYXNlQ29udGV4dEZvcihjb250ZXh0KTsKLSAgICBk
YXRhYmFzZUNvbnRleHQtPmRhdGFiYXNlRXhjZWVkZWRRdW90YShuYW1lLCBEYXRhYmFzZURldGFp
bHMobmFtZS5pc29sYXRlZENvcHkoKSwgZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCksIGVzdGlt
YXRlZFNpemUsIDApKTsKKyAgICBjb250ZXh0LT5kYXRhYmFzZUV4Y2VlZGVkUXVvdGEobmFtZSwg
RGF0YWJhc2VEZXRhaWxzKG5hbWUuaXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lLmlzb2xhdGVk
Q29weSgpLCBlc3RpbWF0ZWRTaXplLCAwKSk7CiAKICAgICBNdXRleExvY2tlciBsb2NrRGF0YWJh
c2UobV9kYXRhYmFzZUd1YXJkKTsKIApAQCAtMjAxLDcgKzIxMSw5IEBAIGJvb2wgRGF0YWJhc2VU
cmFja2VyOjpoYXNFbnRyeUZvckRhdGFiYXMKICAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50
cnlMb2NrKCkpOwogICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoZmFsc2UpOwogICAgIGlmICghbV9k
YXRhYmFzZS5pc09wZW4oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
ZmFsc2U7IC8vIE5vICJ0cmFja2VyIGRhdGFiYXNlIi4gSGVuY2UsIG5vIGVudHJ5IGZvciB0aGUg
ZGF0YWJhc2Ugb2YgaW50ZXJlc3QuCisKKyAgICAvLyBXZSd2ZSBnb3QgYSB0cmFja2VyIGRhdGFi
YXNlLiBTZXQgdXAgYSBxdWVyeSB0byBhc2sgZm9yIHRoZSBkYiBvZiBpbnRlcmVzdDoKICAgICBT
UUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgZ3VpZCBGUk9NIERh
dGFiYXNlcyBXSEVSRSBvcmlnaW49PyBBTkQgbmFtZT0/OyIpOwogCiAgICAgaWYgKHN0YXRlbWVu
dC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spCkBAIC0yMjksNyArMjQxLDcgQEAgdm9pZCBEYXRh
YmFzZVRyYWNrZXI6OmRhdGFiYXNlQ2hhbmdlZChEYQogICAgIG9yaWdpblF1b3RhTWFuYWdlcigp
Lm1hcmtEYXRhYmFzZShkYXRhYmFzZSk7CiB9CiAKLXZvaWQgRGF0YWJhc2VUcmFja2VyOjppbnRl
cnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCit2b2lkIERhdGFiYXNlVHJhY2tlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9y
Q29udGV4dChjb25zdCBEYXRhYmFzZUJhY2tlbmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFZl
Y3RvcjxSZWZQdHI8RGF0YWJhc2VCYWNrZW5kPiA+IG9wZW5EYXRhYmFzZXM7CiAgICAgewpAQCAt
MjQ3LDcgKzI1OSw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1cHRBbGxEYXRhYmEK
ICAgICAgICAgICAgIERhdGFiYXNlU2V0KiBkYXRhYmFzZVNldCA9IGRiTmFtZU1hcEl0LT52YWx1
ZTsKICAgICAgICAgICAgIERhdGFiYXNlU2V0Ojpjb25zdF9pdGVyYXRvciBkYlNldEVuZEl0ID0g
ZGF0YWJhc2VTZXQtPmVuZCgpOwogICAgICAgICAgICAgZm9yIChEYXRhYmFzZVNldDo6Y29uc3Rf
aXRlcmF0b3IgZGJTZXRJdCA9IGRhdGFiYXNlU2V0LT5iZWdpbigpOyBkYlNldEl0ICE9IGRiU2V0
RW5kSXQ7ICsrZGJTZXRJdCkgewotICAgICAgICAgICAgICAgIGlmICgoKmRiU2V0SXQpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgPT0gY29udGV4dCkKKyAgICAgICAgICAgICAgICBpZiAoKCpk
YlNldEl0KS0+ZGF0YWJhc2VDb250ZXh0KCkgPT0gY29udGV4dCkKICAgICAgICAgICAgICAgICAg
ICAgb3BlbkRhdGFiYXNlcy5hcHBlbmQoKmRiU2V0SXQpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0zNjAsMTAgKzM3MiwxMSBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6b3JpZ2lucyhW
ZWN0b3I8UmVmCiBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbk5v
TG9jayhTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0VmVjdG9y
KQogewogICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7Ci0gICAgb3BlblRy
YWNrZXJEYXRhYmFzZShmYWxzZSk7CisgICAgb3BlblRyYWNrZXJEYXRhYmFzZShmYWxzZSk7IC8v
IERvbid0IGNyZWF0ZSBvbmUgaWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0LgogICAgIGlmICgh
bV9kYXRhYmFzZS5pc09wZW4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgLy8gU2V0
dXAgYW4gU1FMIHF1ZXJ5IHRvIGZldGNoIHRoZSBkYXRhYmFzZXMgZm9yIHRoZSBzcGVjaWZpZWQg
b3JpZ2luOgogICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVD
VCBuYW1lIEZST00gRGF0YWJhc2VzIHdoZXJlIG9yaWdpbj0/OyIpOwogCiAgICAgaWYgKHN0YXRl
bWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spCkBAIC0zNzEsNiArMzg0LDcgQEAgYm9vbCBE
YXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlTmFtZXNGb3JPcgogCiAgICAgc3RhdGVtZW50LmJpbmRU
ZXh0KDEsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogCisgICAgLy8gRXhlY3V0ZSB0
aGUgcXVlcnkgYW5kIGZldGNoIGVhY2ggcmVsZXZhbnQgZGIgaW50byB0aGUgcmVzdWx0OgogICAg
IGludCByZXN1bHQ7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpKSA9PSBT
UUxSZXN1bHRSb3cpCiAgICAgICAgIHJlc3VsdFZlY3Rvci5hcHBlbmQoc3RhdGVtZW50LmdldENv
bHVtblRleHQoMCkpOwpAQCAtNjE3LDcgKzYzMSw5IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRh
YmFzZVRyYWNrZXI6OnVzYWcKICAgICAgICAgb3JpZ2luUXVvdGFNYW5hZ2VyKCkuYWRkRGF0YWJh
c2Uob3JpZ2luLCBuYW1lc1tpXSwgZnVsbFBhdGhGb3JEYXRhYmFzZU5vTG9jayhvcmlnaW4sIG5h
bWVzW2ldLCBmYWxzZSkpOwogCiAgICAgaWYgKCFvcmlnaW5RdW90YU1hbmFnZXIoKS50cmFja3NP
cmlnaW4ob3JpZ2luKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAwOyAvLyBT
dGlsbCBubyBkYidzIGZvciB0aGlzIG9yaWdpbi4gSGVuY2UsIHRvdGFsIHVzYWdlIGlzIDAuCisK
KyAgICAvLyBDb21wdXRlIHRoZSB0b3RhbCBkaXNrIHVzYWdlIG9mIGFsbCBkYidzIGZyb20gdGhl
IHNwZWNpZmllZCBvcmlnaW46CiAgICAgcmV0dXJuIG9yaWdpblF1b3RhTWFuYWdlcigpLmRpc2tV
c2FnZShvcmlnaW4pOwogfQogCkBAIC04MTksMTEgKzgzNSwxMSBAQCBib29sIERhdGFiYXNlVHJh
Y2tlcjo6ZGVsZXRlT3JpZ2luKFNlY3VyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRGF0
YWJhc2VUcmFja2VyOjpjYW5DcmVhdGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBj
b25zdCBTdHJpbmcmIG5hbWUpCitib29sIERhdGFiYXNlVHJhY2tlcjo6aXNEZWxldGluZ0RhdGFi
YXNlT3JPcmlnaW5Gb3IoU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1l
KQogewogICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7CiAgICAgLy8gQ2Fu
J3QgY3JlYXRlIGEgZGF0YWJhc2Ugd2hpbGUgc29tZW9uZSBlbHNlIGlzIGRlbGV0aW5nIGl0OyB0
aGVyZSdzIGEgcmlzayBvZiBsZWF2aW5nIHVudHJhY2tlZCBkYXRhYmFzZSBkZWJyaXMgb24gdGhl
IGRpc2suCi0gICAgcmV0dXJuICFkZWxldGluZ0RhdGFiYXNlKG9yaWdpbiwgbmFtZSkgJiYgIWRl
bGV0aW5nT3JpZ2luKG9yaWdpbik7CisgICAgcmV0dXJuIGlzRGVsZXRpbmdEYXRhYmFzZShvcmln
aW4sIG5hbWUpIHx8IGlzRGVsZXRpbmdPcmlnaW4ob3JpZ2luKTsKIH0KIAogdm9pZCBEYXRhYmFz
ZVRyYWNrZXI6OnJlY29yZENyZWF0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtODY4LDcgKzg4NCw3IEBAIGJvb2wgRGF0YWJhc2VUcmFj
a2VyOjpjcmVhdGluZ0RhdGFiYXNlKFMKIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpjYW5EZWxldGVE
YXRhYmFzZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAg
ICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKLSAgICByZXR1cm4gIWNyZWF0
aW5nRGF0YWJhc2Uob3JpZ2luLCBuYW1lKSAmJiAhZGVsZXRpbmdEYXRhYmFzZShvcmlnaW4sIG5h
bWUpOworICAgIHJldHVybiAhY3JlYXRpbmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpICYmICFpc0Rl
bGV0aW5nRGF0YWJhc2Uob3JpZ2luLCBuYW1lKTsKIH0KIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6
OnJlY29yZERlbGV0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBuYW1lKQpAQCAtOTAwLDcgKzkxNiw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpkb25l
RGVsZXRpbmdEYXRhYmEKICAgICB9CiB9CiAKLWJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGlu
Z0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jv
b2wgRGF0YWJhc2VUcmFja2VyOjppc0RlbGV0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4gKm9y
aWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJk
LnRyeUxvY2soKSk7CiAgICAgTmFtZVNldCogbmFtZVNldCA9IG1fYmVpbmdEZWxldGVkLmdldChv
cmlnaW4pOwpAQCAtOTEwLDEwICs5MjYsMTAgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0
aW5nRGF0YWJhc2UoUwogYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNhbkRlbGV0ZU9yaWdpbihTZWN1
cml0eU9yaWdpbiAqb3JpZ2luKQogewogICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxv
Y2soKSk7Ci0gICAgcmV0dXJuICEoZGVsZXRpbmdPcmlnaW4ob3JpZ2luKSB8fCBtX2JlaW5nQ3Jl
YXRlZC5nZXQob3JpZ2luKSk7CisgICAgcmV0dXJuICEoaXNEZWxldGluZ09yaWdpbihvcmlnaW4p
IHx8IG1fYmVpbmdDcmVhdGVkLmdldChvcmlnaW4pKTsKIH0KIAotYm9vbCBEYXRhYmFzZVRyYWNr
ZXI6OmRlbGV0aW5nT3JpZ2luKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pCitib29sIERhdGFiYXNl
VHJhY2tlcjo6aXNEZWxldGluZ09yaWdpbihTZWN1cml0eU9yaWdpbiAqb3JpZ2luKQogewogICAg
IEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7CiAgICAgcmV0dXJuIG1fb3JpZ2lu
c0JlaW5nRGVsZXRlZC5jb250YWlucyhvcmlnaW4pOwpAQCAtOTIyLDE0ICs5MzgsMTQgQEAgYm9v
bCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0aW5nT3JpZ2luKFNlYwogdm9pZCBEYXRhYmFzZVRyYWNr
ZXI6OnJlY29yZERlbGV0aW5nT3JpZ2luKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pCiB7CiAgICAg
QVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKLSAgICBBU1NFUlQoIWRlbGV0aW5n
T3JpZ2luKG9yaWdpbikpOworICAgIEFTU0VSVCghaXNEZWxldGluZ09yaWdpbihvcmlnaW4pKTsK
ICAgICBtX29yaWdpbnNCZWluZ0RlbGV0ZWQuYWRkKG9yaWdpbi0+aXNvbGF0ZWRDb3B5KCkpOwog
fQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZG9uZURlbGV0aW5nT3JpZ2luKFNlY3VyaXR5T3Jp
Z2luICpvcmlnaW4pCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsK
LSAgICBBU1NFUlQoZGVsZXRpbmdPcmlnaW4ob3JpZ2luKSk7CisgICAgQVNTRVJUKGlzRGVsZXRp
bmdPcmlnaW4ob3JpZ2luKSk7CiAgICAgbV9vcmlnaW5zQmVpbmdEZWxldGVkLnJlbW92ZShvcmln
aW4pOwogfQogCkBAIC05OTksNyArMTAxNSw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxl
dGVEYXRhYmFzZUZpbGUKICNpZm5kZWYgTkRFQlVHCiAgICAgewogICAgICAgICBNdXRleExvY2tl
ciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKLSAgICAgICAgQVNTRVJUKGRlbGV0aW5n
RGF0YWJhc2Uob3JpZ2luLCBuYW1lKSB8fCBkZWxldGluZ09yaWdpbihvcmlnaW4pKTsKKyAgICAg
ICAgQVNTRVJUKGlzRGVsZXRpbmdEYXRhYmFzZU9yT3JpZ2luRm9yKG9yaWdpbiwgbmFtZSkpOwog
ICAgIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmgJKHJldmlzaW9uIDE0MTcxMikKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0
YWJhc2VCYWNrZW5kOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIERhdGFi
YXNlQmFja2VuZENvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogc3RydWN0IFNlY3Vy
aXR5T3JpZ2luSGFzaDsKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIC8vIG1fZGF0YWJh
c2VHdWFyZCBhbmQgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCBjdXJyZW50bHkgZG9uJ3Qgb3Zlcmxh
cC4KICAgICAvLyBub3RpZmljYXRpb25NdXRleCgpIGlzIGN1cnJlbnRseSBpbmRlcGVuZGVudCBv
ZiB0aGUgb3RoZXIgbG9ja3MuCiAKLSAgICBib29sIGNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlz
cGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CisgICAgYm9vbCBjYW5Fc3Rh
Ymxpc2hEYXRhYmFzZShEYXRhYmFzZUJhY2tlbmRDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUp
OwogICAgIHZvaWQgc2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGlt
YXRlZFNpemUpOwogICAgIFN0cmluZyBmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2lu
KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0ID0gdHJ1ZSk7
CiAKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRN
YXhTaXplRm9yRGF0YWJhc2UoY29uc3QgRGF0YWJhc2VCYWNrZW5kKik7CiAgICAgdm9pZCBkYXRh
YmFzZUNoYW5nZWQoRGF0YWJhc2VCYWNrZW5kKik7CiAKLSAgICB2b2lkIGludGVycnVwdEFsbERh
dGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHZv
aWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBEYXRhYmFzZUJhY2tlbmRD
b250ZXh0Kik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRGF0YWJhc2VUcmFja2VyKGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VQYXRoKTsKQEAgLTE1NywxOCArMTU3LDE4IEBAIHByaXZhdGU6CiAg
ICAgdHlwZWRlZiBIYXNoU2V0PFN0cmluZz4gTmFtZVNldDsKICAgICBIYXNoTWFwPFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4sIE5hbWVTZXQqLCBTZWN1cml0eU9yaWdpbkhhc2g+IG1fYmVpbmdEZWxl
dGVkOwogICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2VjdXJpdHlPcmlnaW5I
YXNoPiBtX29yaWdpbnNCZWluZ0RlbGV0ZWQ7Ci0gICAgYm9vbCBjYW5DcmVhdGVEYXRhYmFzZShT
ZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIHZvaWQgcmVj
b3JkQ3JlYXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcm
IG5hbWUpOwotICAgIHZvaWQgZG9uZUNyZWF0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4gKm9y
aWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBib29sIGNyZWF0aW5nRGF0YWJhc2UoU2Vj
dXJpdHlPcmlnaW4gKm9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBib29sIGNhbkRl
bGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSk7
Ci0gICAgdm9pZCByZWNvcmREZWxldGluZ0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4s
IGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgdm9pZCBkb25lRGVsZXRpbmdEYXRhYmFzZShTZWN1
cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIGJvb2wgZGVsZXRp
bmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpOwot
ICAgIGJvb2wgY2FuRGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pOwotICAgIGJv
b2wgZGVsZXRpbmdPcmlnaW4oU2VjdXJpdHlPcmlnaW4gKm9yaWdpbik7Ci0gICAgdm9pZCByZWNv
cmREZWxldGluZ09yaWdpbihTZWN1cml0eU9yaWdpbiAqb3JpZ2luKTsKLSAgICB2b2lkIGRvbmVE
ZWxldGluZ09yaWdpbihTZWN1cml0eU9yaWdpbiAqb3JpZ2luKTsKKyAgICBib29sIGlzRGVsZXRp
bmdEYXRhYmFzZU9yT3JpZ2luRm9yKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKKyAgICB2b2lkIHJlY29yZENyZWF0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25z
dCBTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgZG9uZUNyZWF0aW5nRGF0YWJhc2UoU2VjdXJpdHlP
cmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIGJvb2wgY3JlYXRpbmdEYXRhYmFzZShT
ZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgYm9vbCBjYW5EZWxldGVE
YXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCBy
ZWNvcmREZWxldGluZ0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKKyAgICB2b2lkIGRvbmVEZWxldGluZ0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKKyAgICBib29sIGlzRGVsZXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdp
biosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgYm9vbCBjYW5EZWxldGVPcmlnaW4oU2VjdXJp
dHlPcmlnaW4qKTsKKyAgICBib29sIGlzRGVsZXRpbmdPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsK
KyAgICB2b2lkIHJlY29yZERlbGV0aW5nT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisgICAgdm9p
ZCBkb25lRGVsZXRpbmdPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKIAogICAgIHN0YXRpYyB2b2lk
IHNjaGVkdWxlRm9yTm90aWZpY2F0aW9uKCk7CiAgICAgc3RhdGljIHZvaWQgbm90aWZ5RGF0YWJh
c2VzQ2hhbmdlZCh2b2lkKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMTQxNzEyKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAj
aW5jbHVkZSAiRGF0YWJhc2VBdXRob3JpemVyLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0
LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFi
YXNlVGhyZWFkLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb25DbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwCShyZXZpc2lvbiAxNDE3MTIpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCiAKICNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmQuaCIKLSNpbmNsdWRlICJEYXRhYmFzZUNv
bnRleHQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCiAjaW5jbHVkZSAi
RGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgU1FMVHJh
bnNhY3Rpb25DbGllbnQ6OmRpZEV4ZWN1dGVTdGEKIAogYm9vbCBTUUxUcmFuc2FjdGlvbkNsaWVu
dDo6ZGlkRXhjZWVkUXVvdGEoRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKIHsKLSAgICBBU1NF
UlQoZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkp
OworICAgIEFTU0VSVChkYXRhYmFzZS0+ZGF0YWJhc2VDb250ZXh0KCktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBj
dXJyZW50UXVvdGEgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5xdW90YUZvck9yaWdpbihk
YXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgZGF0YWJhc2UtPmRhdGFiYXNlQ29udGV4
dCgpLT5kYXRhYmFzZUV4Y2VlZGVkUXVvdGEoZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSwg
ZGF0YWJhc2UtPmRldGFpbHMoKSk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhID0g
RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4oZGF0YWJhc2UtPnNlY3Vy
aXR5T3JpZ2luKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvblN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25TeW5jLmNwcAkocmV2aXNpb24gMTQxNzEyKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvblN5bmMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKIAogI2luY2x1ZGUgIkRhdGFiYXNlQXV0aG9yaXplci5oIgotI2luY2x1ZGUgIkRhdGFi
YXNlQ29udGV4dC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKICNpbmNs
dWRlICJEYXRhYmFzZVN5bmMuaCIKICNpbmNsdWRlICJTUUxFeGNlcHRpb24uaCIKICNpbmNsdWRl
ICJTUUxSZXN1bHRTZXQuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvY2hyb21pdW0vRGF0YWJhc2VUcmFja2VyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21pdW0vRGF0YWJhc2VUcmFja2Vy
Q2hyb21pdW0uY3BwCShyZXZpc2lvbiAxNDE3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL2Nocm9taXVtL0RhdGFiYXNlVHJhY2tlckNocm9taXVtLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKICNp
bmNsdWRlICJEYXRhYmFzZUJhY2tlbmQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250
ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIlF1b3RhVHJh
Y2tlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKQEAgLTU2LDggKzU3
LDkgQEAgRGF0YWJhc2VUcmFja2VyOjpEYXRhYmFzZVRyYWNrZXIoY29uc3QgUwogICAgIFNRTGl0
ZUZpbGVTeXN0ZW06OnJlZ2lzdGVyU1FMaXRlVkZTKCk7CiB9CiAKLWJvb2wgRGF0YWJhc2VUcmFj
a2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKK2Jvb2wgRGF0YWJhc2VUcmFja2Vy
OjpjYW5Fc3RhYmxpc2hEYXRhYmFzZShEYXRhYmFzZUJhY2tlbmRDb250ZXh0KiBkYXRhYmFzZUNv
bnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5z
aWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQogeworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBkYXRhYmFzZUNvbnRleHQtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKICAgICByZXR1cm4gRGF0YWJhc2VPYnNlcnZlcjo6Y2FuRXN0YWJsaXNoRGF0
YWJhc2Uoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRl
ZFNpemUpOwogfQogCkBAIC0xNDgsMjIgKzE1MCwyNCBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6
cmVtb3ZlT3BlbkRhdGFiYXNlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNl
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKQotICAgICAgICBk
YXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhOb3RpZnlEYXRhYmFz
ZU9ic2VydmVyT25DbG9zZVRhc2s6OmNyZWF0ZShkYXRhYmFzZSkpOworICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBkYXRhYmFzZS0+ZGF0YWJhc2VD
b250ZXh0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKQorICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5wb3N0VGFzayhOb3RpZnlEYXRhYmFzZU9ic2VydmVyT25DbG9zZVRhc2s6OmNyZWF0
ZShkYXRhYmFzZSkpOwogICAgIGVsc2UKICAgICAgICAgRGF0YWJhc2VPYnNlcnZlcjo6ZGF0YWJh
c2VDbG9zZWQoZGF0YWJhc2UpOwogfQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cHJlcGFyZVRv
T3BlbkRhdGFiYXNlKERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UpCiB7Ci0gICAgQVNTRVJUKGRh
dGFiYXNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKyAg
ICBBU1NFUlQoZGF0YWJhc2UtPmRhdGFiYXNlQ29udGV4dCgpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKICAgICBEYXRhYmFzZU9ic2VydmVyOjpkYXRhYmFz
ZU9wZW5lZChkYXRhYmFzZSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpmYWlsZWRUb09w
ZW5EYXRhYmFzZShEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKQogewotICAgIGlmICghZGF0YWJh
c2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpCi0gICAgICAg
IGRhdGFiYXNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKE5vdGlmeURhdGFi
YXNlT2JzZXJ2ZXJPbkNsb3NlVGFzazo6Y3JlYXRlKGRhdGFiYXNlKSk7CisgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGRhdGFiYXNlLT5kYXRhYmFz
ZUNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpCisgICAgICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnBvc3RUYXNrKE5vdGlmeURhdGFiYXNlT2JzZXJ2ZXJPbkNsb3NlVGFzazo6Y3Jl
YXRlKGRhdGFiYXNlKSk7CiAgICAgZWxzZQogICAgICAgICBEYXRhYmFzZU9ic2VydmVyOjpkYXRh
YmFzZUNsb3NlZChkYXRhYmFzZSk7CiB9CkBAIC0xNzgsNyArMTgyLDcgQEAgdW5zaWduZWQgbG9u
ZyBsb25nIERhdGFiYXNlVHJhY2tlcjo6Z2V0TQogICAgIHJldHVybiBkYXRhYmFzZVNpemUgKyBz
cGFjZUF2YWlsYWJsZTsKIH0KIAotdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmludGVycnVwdEFsbERh
dGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
K3ZvaWQgRGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNv
bnN0IERhdGFiYXNlQmFja2VuZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgTXV0ZXhMb2NrZXIg
b3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKIApAQCAtMTk0LDcg
KzE5OCw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1cHRBbGxEYXRhYmEKICAgICAg
ICAgRGF0YWJhc2VTZXQqIGRhdGFiYXNlU2V0ID0gZGJOYW1lTWFwSXQtPnZhbHVlOwogICAgICAg
ICBEYXRhYmFzZVNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gZGF0YWJhc2VTZXQtPmVuZCgpOwog
ICAgICAgICBmb3IgKERhdGFiYXNlU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IGRhdGFiYXNlU2V0
LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGlmICgoKml0KS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpID09IGNvbnRleHQpCisgICAgICAgICAgICBpZiAoKCppdCkt
PmRhdGFiYXNlQ29udGV4dCgpID09IGNvbnRleHQpCiAgICAgICAgICAgICAgICAgKCppdCktPmlu
dGVycnVwdCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjQyLDcgKzI0Niw3IEBAIHZvaWQgRGF0
YWJhc2VUcmFja2VyOjpjbG9zZURhdGFiYXNlc0ltbWUKICAgICAvLyB0aGUgZGF0YWJhc2UgaW4g
b3VyIGNvbGxlY3Rpb24gd2hlbiBub3Qgb24gdGhlIGNvbnRleHQgdGhyZWFkICh3aGljaCBpcyBh
bHdheXMgdGhlIGNhc2UgZ2l2ZW4KICAgICAvLyBjdXJyZW50IHVzYWdlKS4KICAgICBmb3IgKERh
dGFiYXNlU2V0OjppdGVyYXRvciBpdCA9IGRhdGFiYXNlU2V0LT5iZWdpbigpOyBpdCAhPSBkYXRh
YmFzZVNldC0+ZW5kKCk7ICsraXQpCi0gICAgICAgICgqaXQpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPnBvc3RUYXNrKENsb3NlT25lRGF0YWJhc2VJbW1lZGlhdGVseVRhc2s6OmNyZWF0ZShv
cmlnaW5JZGVudGlmaWVyLCBuYW1lLCAqaXQpKTsKKyAgICAgICAgKCppdCktPmRhdGFiYXNlQ29u
dGV4dCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKENsb3NlT25lRGF0YWJh
c2VJbW1lZGlhdGVseVRhc2s6OmNyZWF0ZShvcmlnaW5JZGVudGlmaWVyLCBuYW1lLCAqaXQpKTsK
IH0KIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmNsb3NlT25lRGF0YWJhc2VJbW1lZGlhdGVseShj
b25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgRGF0YWJh
c2VCYWNrZW5kKiBkYXRhYmFzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvY2hyb21pdW0vU1FMVHJhbnNhY3Rpb25DbGllbnRDaHJvbWl1bS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1bS9TUUxUcmFu
c2FjdGlvbkNsaWVudENocm9taXVtLmNwcAkocmV2aXNpb24gMTQxNzEyKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1bS9TUUxUcmFuc2FjdGlvbkNsaWVudENo
cm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCiAKICNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmQuaCIKKyNpbmNsdWRlICJE
YXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VPYnNlcnZlci5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIApAQCAtNjIsOCArNjMsOSBAQCBw
cml2YXRlOgogCiB2b2lkIFNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRDb21taXRXcml0ZVRyYW5z
YWN0aW9uKERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UpCiB7Ci0gICAgaWYgKCFkYXRhYmFzZS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSkgewotICAgICAgICBk
YXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhOb3RpZnlEYXRhYmFz
ZUNoYW5nZWRUYXNrOjpjcmVhdGUoZGF0YWJhc2UpKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gZGF0YWJhc2UtPmRhdGFiYXNlQ29udGV4dCgp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSkgeworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5wb3N0VGFzayhOb3RpZnlEYXRhYmFzZUNoYW5nZWRUYXNrOjpjcmVhdGUoZGF0YWJhc2UpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODAsNyArODIsNyBAQCBib29sIFNRTFRyYW5z
YWN0aW9uQ2xpZW50OjpkaWRFeGNlZWRRdW90CiB7CiAgICAgLy8gQ2hyb21pdW0gZG9lcyBub3Qg
YWxsb3cgdXNlcnMgdG8gbWFudWFsbHkgY2hhbmdlIHRoZSBxdW90YSBmb3IgYW4gb3JpZ2luIChm
b3Igbm93LCBhdCBsZWFzdCkuCiAgICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcuCi0gICAgQVNTRVJU
KGRhdGFiYXNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsK
KyAgICBBU1NFUlQoZGF0YWJhc2UtPmRhdGFiYXNlQ29udGV4dCgpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZp
c2lvbiAxNDE3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjUzNTAsNiArMjUzNTAsNDIgQEAKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0
YWJhc2VcRGF0YWJhc2VCYWNrZW5kQXN5bmMuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFz
ZUJhY2tlbmRBc3luYy5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRDb250ZXh0
LmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIgorCQkJCQk+
CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3
ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4K
KwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0
YWJhc2VCYWNrZW5kU3luYy5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhc2UuY3BwIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9k
dWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhc2UuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJ
CQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJh
c2VCYXNpY1R5cGVzLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQ2FsbGJhY2suaCIKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNpb24gMTQxNzEyKQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTg1Niw2
ICsxODU2LDEwIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFi
YXNlXERhdGFiYXNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNc
d2ViZGF0YWJhc2VcRGF0YWJhc2VBdXRob3JpemVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kLmNwcCIgLz4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNr
ZW5kQXN5bmMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJk
YXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAiIC8+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNl
QmFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFi
YXNlXERhdGFiYXNlQ29udGV4dC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlTWFuYWdlci5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlU2VydmVyLmNwcCIgLz4K
QEAgLTY0MDgsNiArNjQxMiwxMSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxl
c1x3ZWJkYXRhYmFzZVxEYXRhYmFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
TW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUF1dGhvcml6ZXIuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kLmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNl
QmFja2VuZEFzeW5jLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdl
YmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZENvbnRleHQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kU3luYy5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJh
c2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2Vc
RGF0YWJhc2VCYXNpY1R5cGVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1
bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQ2FsbGJhY2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VDb250ZXh0LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlRXJyb3Iu
aCIgLz4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE0MTcxMikKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5
KQpAQCAtMTgzOSw2ICsxODM5LDE4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1
bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZC5jcHAiPgogICAgICAgPEZpbHRlcj5Nb2R1
bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZEFzeW5jLmNw
cCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJhc2U8L0ZpbHRlcj4KKyAgICA8L0Ns
Q29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2Vc
RGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRh
dGFiYXNlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZFN5bmMuY3BwIj4KKyAgICAg
IDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJh
c2UuY3BwIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgorICAg
IDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRh
YmFzZVxEYXRhYmFzZUNvbnRleHQuY3BwIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRh
YmFzZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtODQ2MCw2ICs4NDcyLDIxIEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFj
a2VuZC5oIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRh
YmFzZVxEYXRhYmFzZUJhY2tlbmRBc3luYy5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJk
YXRhYmFzZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiPgorICAg
ICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNl
QmFja2VuZFN5bmMuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJhc2U8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNc
d2ViZGF0YWJhc2VcRGF0YWJhc2VCYXNlLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRh
dGFiYXNlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFzaWNUeXBlcy5oIj4KKyAgICAgIDxG
aWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUNhbGxi
YWNrLmgiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDE3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY3Mjks
MTEgKzY3MjksMjMgQEAKIAkJRkRGNkJBRjkxMzRBNEM5ODAwODIyOTIwIC8qIEpTT2ZmbGluZUF1
ZGlvQ29tcGxldGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGREY2QkFGNzEzNEE0Qzk4MDA4MjI5MjAgLyogSlNPZmZsaW5lQXVkaW9Db21w
bGV0aW9uRXZlbnQuaCAqLzsgfTsKIAkJRkRGN0U5QzMxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVk
aW9CdWZmZXJDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGREY3RTlDMTEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxi
YWNrLmNwcCAqLzsgfTsKIAkJRkRGN0U5QzQxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZm
ZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkRGN0U5QzIxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oICov
OyB9OwotCQlGRTA5REI0OTE2OUUyRDZFMDA2MjI1NTcgLyogRGF0YWJhc2VFcnJvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwOURCNDYxNjlFMkQ2
RTAwNjIyNTU3IC8qIERhdGFiYXNlRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTExNUZBQjE2Nzk4OENEMDAyNDkxMzQgLyogQWJzdHJh
Y3REYXRhYmFzZVNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkUxMTVGQTkxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0YWJhc2VTZXJ2
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlG
RTE2Q0ZEMzE2OUQxREVEMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kQXN5bmMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxNkNGQ0YxNjlEMURF
QzAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZEFzeW5jLmNwcCAqLzsgfTsKKwkJRkUxNkNGRDQx
NjlEMURFRDAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZEFzeW5jLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE2Q0ZEMDE2OUQxREVDMDBEM0EwQzcg
LyogRGF0YWJhc2VCYWNrZW5kQXN5bmMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlGRTZGNkFBRjE2OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VC
YWNrZW5kQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTZGNkFBRDE2OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNrZW5kQ29udGV4
dC5jcHAgKi87IH07CisJCUZFNkY2QUIwMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tl
bmRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTZGNkFBRTE2OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFMTZDRkQ1
MTY5RDFERUQwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTZDRkQxMTY5RDFERUMwMEQzQTBD
NyAvKiBEYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCAqLzsgfTsKKwkJRkUxNkNGRDYxNjlEMURFRDAw
RDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZFN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTZDRkQyMTY5RDFERUMwMEQzQTBDNyAvKiBEYXRhYmFz
ZUJhY2tlbmRTeW5jLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRkVCQzVGMzExNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUJDNUYyRjE2QkQw
Q0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmNwcCAqLzsgfTsKKwkJRkVCQzVGMzIxNkJEMEND
MzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkVCQzVGMzAxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZF
MzM3MUEyMTY3QzExRDQwMEVEQjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzM3MUEwMTY3QzExRDQwMEVE
Qjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlGRTA5REI0OTE2OUUyRDZFMDA2MjI1NTcgLyogRGF0YWJh
c2VFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkUwOURCNDYxNjlFMkQ2RTAwNjIyNTU3IC8qIERhdGFiYXNlRXJyb3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTQ1NkYxODE2NzdENzRFMDA1
RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE2MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1h
bmFnZXIuY3BwICovOyB9OwogCQlGRTQ1NkYxOTE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTQ1NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVCMjZEMjgxNjdBOEYyQTAw
RkREMjZCIC8qIERhdGFiYXNlU2VydmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjI2RDI3MTY3QThGMkEwMEZERDI2QiAvKiBEYXRhYmFzZVNl
cnZlci5jcHAgKi87IH07CisJCUZFQUY2NjU0MTY3OTcwMzIwMDYyRDBDNSAvKiBEYXRhYmFzZVNl
cnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVB
RjY2NTMxNjc5NzAwNzAwNjJEMEM1IC8qIERhdGFiYXNlU2VydmVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVERUY4NDExNjc5NzEwODAwMEU0
NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkVERUY4M0YxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3Ry
YXRlZ3kuY3BwICovOyB9OworCQlGRURFRjg0MjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VT
dHJhdGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVERUY4NDAxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTZGRDQ4ODBGNjc2RTU3
MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFNkZENDg1MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGluYXRlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNkZE
NDhEMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNkZENDhCMEY2NzZFOTMwMDA5Mjg3MyAv
KiBKU0Nvb3JkaW5hdGVzLmNwcCAqLzsgfTsKIAkJRkU2RkQ0OEUwRjY3NkU5MzAwMDkyODczIC8q
IEpTQ29vcmRpbmF0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFNkZENDhDMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmggKi87IH07
CkBAIC02NzQ1LDEwICs2NzU3LDYgQEAKIAkJRkU4MERBNjYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpT
R2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi87IH07CiAJ
CUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkQwRTlDNDcyRjAw
MEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi87IH07CiAJCUZFODBEQTcyMEU5QzQ3MkYw
MDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZFMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9u
RXJyb3IuaCAqLzsgfTsKLQkJRkVBRjY2NTQxNjc5NzAzMjAwNjJEMEM1IC8qIERhdGFiYXNlU2Vy
dmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUFG
NjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyogRGF0YWJhc2VTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlGRUIyNkQyODE2N0E4RjJBMDBGREQy
NkIgLyogRGF0YWJhc2VTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkVCMjZEMjcxNjdBOEYyQTAwRkREMjZCIC8qIERhdGFiYXNlU2VydmVy
LmNwcCAqLzsgfTsKLQkJRkVERUY4NDExNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRl
Z3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVE
RUY4M0YxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwICovOyB9OwotCQlG
RURFRjg0MjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVERUY4NDAxNjc5NzEwODAwMEU0
NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlGRjk0NUVDQjE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
Rjk0NUVDOTE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5jcHAgKi87IH07CiAJCUZG
OTQ1RUNDMTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjk0NUVDQTE2MUY3RjM2MDA5NzFCQzgg
LyogUHNldWRvRWxlbWVudC5oICovOyB9OwogCQlGRkQ1Qjk3QTEzNUNDOTc4MDBENUU5MkEgLyog
UGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRkQ1Qjk3NzEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlT
dGF0ZS5jcHAgKi87IH07CkBAIC0xNDQwMSw5ICsxNDQwOSwyMSBAQAogCQlGREY3RTlDMjEzQUMy
MURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTA5REI0NjE2OUUyRDZFMDA2MjI1NTcgLyogRGF0YWJhc2VFcnJvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZUVycm9yLmg7IHBhdGgg
PSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkUxMTVGQTkxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0YWJhc2VT
ZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWJzdHJhY3REYXRhYmFz
ZVNlcnZlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2Vy
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTZDRkNGMTY5RDFERUMwMEQz
QTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBEYXRhYmFzZUJhY2tlbmRBc3luYy5jcHA7IHBhdGggPSBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFzeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkUxNkNGRDAxNjlEMURFQzAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZEFzeW5j
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlQmFja2VuZEFzeW5j
Lmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFzeW5jLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNkY2QUFEMTY5RTA1NzUwMEZDMzBBMiAvKiBE
YXRhYmFzZUJhY2tlbmRDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRkU2RjZBQUUxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFja2VuZENvbnRleHQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VCYWNrZW5kQ29udGV4
dC5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTZDRkQxMTY5RDFERUMwMEQzQTBDNyAv
KiBEYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERhdGFiYXNlQmFja2VuZFN5bmMuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkUxNkNGRDIxNjlEMURFQzAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZFN5bmMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VCYWNrZW5kU3luYy5oOyBwYXRoID0g
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFQkM1RjJGMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGF0YWJhc2VCYXNlLmNw
cDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVCQzVGMzAxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNl
QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZUJhc2UuaDsg
cGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFMzM3MUEwMTY3QzExRDQwMEVEQjc1MiAvKiBEYXRhYmFzZUJhc2lj
VHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VCYXNpY1R5
cGVzLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzaWNUeXBlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTQ1NkYxNjE2NzdENzRFMDA1RURERjkgLyog
RGF0YWJhc2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERhdGFiYXNlTWFuYWdlci5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNDU2RjE3MTY3N0Q3
NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gRGF0YWJhc2VNYW5hZ2VyLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUIyNkQyNzE2
N0E4RjJBMDBGREQyNkIgLyogRGF0YWJhc2VTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gRGF0YWJhc2VTZXJ2ZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFQUY2NjUzMTY3OTcwMDcwMDYyRDBDNSAvKiBEYXRhYmFzZVNlcnZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZVNlcnZlci5oOyBwYXRoID0gTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRURFRjgzRjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVN0cmF0ZWd5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVERUY4NDAxNjc5NzEwODAwMEU0NDRBIC8qIERh
dGFiYXNlU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJh
c2VTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTZGRDQ4NTBGNjc2
RTU3MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29vcmRpbmF0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RkQ0
ODYwRjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBDb29yZGluYXRlcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNkZE
NDhCMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ29vcmRpbmF0ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTQ0MTYsMTAgKzE0NDM2LDYgQEAKIAkJRkU4MERBNjIwRTlDNDcwMzAw
MEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNHZW9wb3NpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwREE2
RDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9zaXRpb25FcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFODBEQTZFMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJy
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQb3NpdGlvbkVycm9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFQUY2NjUzMTY3OTcwMDcwMDYyRDBDNSAv
KiBEYXRhYmFzZVNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRh
YmFzZVNlcnZlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRUIyNkQyNzE2N0E4RjJBMDBGREQyNkIg
LyogRGF0YWJhc2VTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gRGF0YWJhc2VTZXJ2ZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFREVGODNGMTY3OTcx
MDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlU3RyYXRlZ3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlGRURFRjg0MDE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZVN0cmF0ZWd5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGOTQ1RUM5MTYxRjdGMzYwMDk3MUJDOCAvKiBQ
c2V1ZG9FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBz
ZXVkb0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRjk0NUVDQTE2
MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQc2V1ZG9FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZGRDVCOTc3MTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg1MDcsNiArMTg1MjMsMTQgQEAKIAkJ
CQk5N0JDNjlFMjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VBdXRob3JpemVyLmggKi8sCiAJ
CQkJOTdCQzY5RDYxNTA1RjA3NjAwMUI3NEFDIC8qIERhdGFiYXNlQmFja2VuZC5jcHAgKi8sCiAJ
CQkJOTdCQzY5RDcxNTA1RjA3NjAwMUI3NEFDIC8qIERhdGFiYXNlQmFja2VuZC5oICovLAorCQkJ
CUZFMTZDRkNGMTY5RDFERUMwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAgKi8s
CisJCQkJRkUxNkNGRDAxNjlEMURFQzAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZEFzeW5jLmgg
Ki8sCisJCQkJRkU2RjZBQUQxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFja2VuZENvbnRl
eHQuY3BwICovLAorCQkJCUZFNkY2QUFFMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tl
bmRDb250ZXh0LmggKi8sCisJCQkJRkUxNkNGRDExNjlEMURFQzAwRDNBMEM3IC8qIERhdGFiYXNl
QmFja2VuZFN5bmMuY3BwICovLAorCQkJCUZFMTZDRkQyMTY5RDFERUMwMEQzQTBDNyAvKiBEYXRh
YmFzZUJhY2tlbmRTeW5jLmggKi8sCisJCQkJRkVCQzVGMkYxNkJEMENDMzAwNjU5QkQzIC8qIERh
dGFiYXNlQmFzZS5jcHAgKi8sCisJCQkJRkVCQzVGMzAxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFi
YXNlQmFzZS5oICovLAogCQkJCUZFMzM3MUEwMTY3QzExRDQwMEVEQjc1MiAvKiBEYXRhYmFzZUJh
c2ljVHlwZXMuaCAqLywKIAkJCQk5N0JDNjlFMzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VD
YWxsYmFjay5oICovLAogCQkJCTk3QkM2OUU0MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNh
bGxiYWNrLmlkbCAqLywKQEAgLTIzMjk1LDYgKzIzMzE5LDEwIEBACiAJCQkJOTdCQzZBMjExNTA1
RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEyNDE1
MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VBdXRob3JpemVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5N0JDNjlEQjE1MDVGMDc2MDAxQjc0QUMgLyogRGF0YWJhc2VCYWNrZW5kLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRTE2Q0ZENDE2OUQxREVEMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kQXN5
bmMuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFNkY2QUIwMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRh
YmFzZUJhY2tlbmRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTE2Q0ZENjE2OUQxREVE
MDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kU3luYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVC
QzVGMzIxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkUzMzcxQTIxNjdDMTFENDAwRURCNzUyIC8qIERhdGFiYXNlQmFzaWNUeXBlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTdCQzZBMjUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTI4MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRh
YmFzZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY5NDIsNiArMjY5NzAsMTAgQEAKIAkJ
CQk5N0JDNkEyMDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTdCQzZBMjMxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQXV0aG9yaXplci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5N0JDNjlEQTE1MDVGMDc2MDAxQjc0QUMgLyogRGF0YWJhc2VC
YWNrZW5kLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMTZDRkQzMTY5RDFERUQwMEQzQTBDNyAv
KiBEYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTZGNkFBRjE2
OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlGRTE2Q0ZENTE2OUQxREVEMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kU3luYy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlGRUJDNUYzMTE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJh
c2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QkM2QTI3MTUwNUYwODEwMDFCNzRBQyAv
KiBEYXRhYmFzZUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU0NTZGMTgxNjc3RDc0
RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRUIy
NkQyODE2N0E4RjJBMDBGREQyNkIgLyogRGF0YWJhc2VTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTQxNzEyKQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAxMy0wMi0wMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIHBzZXVkbyBiYWNrLWVuZCBkYXRhYmFzZSBjbGFzc2VzICsgYSBmZXcgc21hbGwgZml4
ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3
NTkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBz
cmMvRGF0YWJhc2VPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU9ic2Vy
dmVyOjpkYXRhYmFzZU9wZW5lZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU9ic2VydmVy
OjpkYXRhYmFzZU1vZGlmaWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlT2JzZXJ2ZXI6
OmRhdGFiYXNlQ2xvc2VkKToKKwogMjAxMy0wMi0wMiAgTWljaGFlbCBOb3JkbWFuICA8bWljaGFl
bG5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIEZpbGVTeXN0ZW0gbW9kczogQ2hh
bmdlcyB0byBzbmFwc2hvdCBmaWxlIGNyZWF0aW9uIHRvIHJlZHVjZSBkZXBlbmRlbmNpZXMgb24g
YmxvYnMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRhYmFzZU9ic2VydmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRhYmFzZU9i
c2VydmVyLmNwcAkocmV2aXNpb24gMTQxNzEyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRGF0YWJhc2VPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlICJDcm9zc1RocmVhZENvcGllci5oIgogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFz
ay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFj
a2VuZENvbnRleHQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDb21tb25Xb3JrZXJDbGllbnQuaCIKQEAg
LTE3OSwxOSArMTgwLDE5IEBAIGJvb2wgRGF0YWJhc2VPYnNlcnZlcjo6Y2FuRXN0YWJsaXNoRGF0
YWIKIAogdm9pZCBEYXRhYmFzZU9ic2VydmVyOjpkYXRhYmFzZU9wZW5lZChEYXRhYmFzZUJhY2tl
bmQqIGRhdGFiYXNlKQogewotICAgIEFTU0VSVChkYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGRhdGFiYXNlLT5kYXRhYmFz
ZUNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7
CiAgICAgV2ViRGF0YWJhc2U6Om9ic2VydmVyKCktPmRhdGFiYXNlT3BlbmVkKFdlYkRhdGFiYXNl
KGRhdGFiYXNlKSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VPYnNlcnZlcjo6ZGF0YWJhc2VNb2RpZmll
ZChEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKQogewotICAgIEFTU0VSVChkYXRhYmFzZS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGRh
dGFiYXNlLT5kYXRhYmFzZUNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0Nv
bnRleHRUaHJlYWQoKSk7CiAgICAgV2ViRGF0YWJhc2U6Om9ic2VydmVyKCktPmRhdGFiYXNlTW9k
aWZpZWQoV2ViRGF0YWJhc2UoZGF0YWJhc2UpKTsKIH0KIAogdm9pZCBEYXRhYmFzZU9ic2VydmVy
OjpkYXRhYmFzZUNsb3NlZChEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKQogewotICAgIEFTU0VS
VChkYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7
CisgICAgQVNTRVJUKGRhdGFiYXNlLT5kYXRhYmFzZUNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CiAgICAgV2ViRGF0YWJhc2U6Om9ic2VydmVy
KCktPmRhdGFiYXNlQ2xvc2VkKFdlYkRhdGFiYXNlKGRhdGFiYXNlKSk7CiB9CiAK
</data>
<flag name="commit-queue"
          id="205627"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186268</attachid>
            <date>2013-02-03 14:11:22 -0800</date>
            <delta_ts>2013-02-05 10:51:28 -0800</delta_ts>
            <desc>Revised backend classes that are friendlier for chromium.</desc>
            <filename>bug-108759.patch</filename>
            <type>text/plain</type>
            <size>101102</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTcxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExOSBAQAorMjAxMy0wMi0wMyAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlZCBiYWNrLWVuZCBk
YXRhYmFzZSBjbGFzc2VzICsgYSBmZXcgc21hbGwgZml4ZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3NTkuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gQWRkZWQgRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dCwgRGF0YWJhc2VCYWNrZW5kQXN5bmMsIGFuZCBEYXRhYmFzZUJhY2tlbmRTeW5jLgorICAg
ICAgICAgICBUaGVzZSBhcmUgYmFja2VuZHMgZm9yIERhdGFiYXNlQ29udGV4dCwgRGF0YWJhc2Us
IGFuZCBEYXRhYmFzZVN5bmMKKyAgICAgICAgICAgcmVzcGVjdGl2ZWx5LgorICAgICAgICAyLiBB
ZGRlZCBEYXRhYmFzZUJhc2UgdG8gaG9sZCBjb21tb24gY29kZSBiZXR3ZWVuIERhdGFiYXNlIGFu
ZCBEYXRhYmFzZVN5bmMuCisgICAgICAgIDMuIFJlbmFtZWQgYSBmZXcgZnVuY3Rpb25zLgorICAg
ICAgICA0LiBDbGVhbmVkIHVwIHVubmVlZGVkIGNvZGUgaW4gfkRhdGFiYXNlU3luYygpLgorICAg
ICAgICA1LiBBZGRlZCBzb21lIEZJWE1FcyBhcyByZW1pbmRlcnMgb3IgcGxhY2VzIHRvIGNsZWFu
IHVwIHdoZW4gd2UncmUgZG9uZQorICAgICAgICAgICByZWZhY3RvcmluZy4KKworICAgICAgICBO
byBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3RE
YXRhYmFzZVNlcnZlci5oOgorICAgICAgICAoQWJzdHJhY3REYXRhYmFzZVNlcnZlcik6CisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZTo6RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmJhY2tl
bmQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaDoKKyAgICAgICAg
KERhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OkRhdGFiYXNlQmFja2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6On5EYXRhYmFzZUJhY2tlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kOjppbmNyZW1lbnRhbFZhY3V1bUlm
TmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5o
OgorICAgICAgICAoRGF0YWJhc2VCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
QmFja2VuZDo6ZGF0YWJhc2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFj
a2VuZDo6c2V0RnJvbnRlbmQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VCYWNrZW5kQXN5bmMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFj
a2VuZEFzeW5jOjpEYXRhYmFzZUJhY2tlbmRBc3luYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5oOiBBZGRlZC4KKyAgICAgICAgKERhdGFiYXNl
QmFja2VuZEFzeW5jKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFj
a2VuZENvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2Vu
ZENvbnRleHQ6OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlQmFja2VuZENvbnRleHQuaDogQWRkZWQuCisgICAgICAgIChEYXRhYmFzZUJhY2tl
bmRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZENvbnRleHQ6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VCYWNrZW5kU3luYy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VC
YWNrZW5kU3luYzo6RGF0YWJhc2VCYWNrZW5kU3luYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmg6IEFkZGVkLgorICAgICAgICAoRGF0YWJhc2VC
YWNrZW5kU3luYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2Uu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFzZTo6RGF0YWJhc2VCYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFzZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhc2U6OmxvZ0Vycm9yTWVzc2FnZSk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuaDogQWRkZWQuCisgICAg
ICAgIChEYXRhYmFzZUJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6RGF0YWJh
c2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6YmFja2VuZCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaDoKKyAgICAg
ICAgKERhdGFiYXNlQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpvcGVu
RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0YWJh
c2VTeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6aGFzT3BlbkRhdGFi
YXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmludGVycnVwdEFsbERh
dGFiYXNlc0ZvckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpn
ZXRNYXhTaXplRm9yRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2Vy
Ojpsb2dFcnJvck1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VNYW5hZ2VyLmg6CisgICAgICAgIChEYXRhYmFzZU1hbmFnZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VTZXJ2ZXI6OmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VTZXJ2ZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VTeW5jOjpEYXRhYmFzZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjp+
RGF0YWJhc2VTeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlU3luYzo6YmFja2VuZCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuaDoKKyAgICAgICAg
KERhdGFiYXNlU3luYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRy
YWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpvcGVuVHJhY2tl
ckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6Y2FuRXN0YWJs
aXNoRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpoYXNFbnRy
eUZvckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6aW50ZXJy
dXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRy
YWNrZXI6OmRhdGFiYXNlTmFtZXNGb3JPcmlnaW5Ob0xvY2spOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VUcmFja2VyOjp1c2FnZUZvck9yaWdpbk5vTG9jayk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6OmlzRGVsZXRpbmdEYXRhYmFzZU9yT3JpZ2luRm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6Y2FuRGVsZXRlRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjppc0RlbGV0aW5nRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpjYW5EZWxldGVPcmlnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjppc0RlbGV0aW5nT3JpZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVjb3JkRGVsZXRpbmdPcmlnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpkb25lRGVsZXRpbmdPcmlnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmg6CisgICAgICAgIChEYXRhYmFz
ZVRyYWNrZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24u
Y3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DbGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25DbGllbnQ6OmRpZEV4Y2VlZFF1
b3RhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uU3luYy5j
cHA6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1bS9EYXRhYmFzZVRyYWNr
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmNhbkVz
dGFibGlzaERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVt
b3ZlT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cHJl
cGFyZVRvT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6
ZmFpbGVkVG9PcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2Vy
OjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlVHJhY2tlcjo6Y2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1bS9TUUxUcmFuc2FjdGlvbkNsaWVudENocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRDb21taXRXcml0
ZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQ2xpZW50Ojpk
aWRFeGNlZWRRdW90YSk6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEzLTAyLTAzICBNaWtlIFdlc3QgIDxta3dzdEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgQ2xlYW51cDogJ0V4Y2VwdGlvbkNvZGUmIGVjJywgbm90ICdF
eGNlcHRpb25Db2RlICZlYycuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTQx
NzEyKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTk1MCw2ICs5NTAsMTAgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuY3BwCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhv
cml6ZXIuY3BwCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwCisg
ICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAKKyAgICBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwCisgICAgTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmNwcAorICAgIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VCYXNlLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250
ZXh0LmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAogICAg
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0MTcxMikKKysrIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIxMDAsNiArMjEwMCwxNCBAQCB3
ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFzeW5jLmNwcCBcCisJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQu
aCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRT
eW5jLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJh
Y2tlbmRTeW5jLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VCYXNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZUJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJh
c2ljVHlwZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZUNhbGxiYWNrLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VDb250ZXh0LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDE0MTcxMikKKysrIFNv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTE0NDMsNiArMTQ0Mywx
MSBAQCBIRUFERVJTICs9IFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQXV0aG9y
aXplci5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmggXAogICAgIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmggXAorICAgIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuaCBcCisgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUJhY2tlbmRDb250ZXh0LmggXAorICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VC
YWNrZW5kU3luYy5oIFwKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5oIFwK
KyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzaWNUeXBlcy5oIFwKICAgICBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ2FsbGJhY2suaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUVycm9yLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmggXApAQCAtMzAzNyw2ICszMDQyLDEwIEBAIHVzZT8oUExVR0lOX0JBQ0tFTkRfWExJ
QikgewogZW5hYmxlPyhTUUxfREFUQUJBU0UpIHsKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAg
TW9kdWxlcy93ZWJkYXRhYmFzZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAgXAorICAgICAgICBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFzeW5jLmNwcCBcCisgICAgICAgIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAgXAorICAgICAgICBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZFN5bmMuY3BwIFwKKyAgICAgICAgTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRhc2suY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRocmVhZC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTQxNzEyKQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAwLDExICsx
MDAwLDIxIEBACiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhv
cml6ZXIuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tl
bmQuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2Vu
ZC5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFz
eW5jLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tl
bmRBc3luYy5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFj
a2VuZENvbnRleHQuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQmFja2VuZENvbnRleHQuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZUJhY2tlbmRTeW5jLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VCYXNlLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZUJhc2UuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZUJhc2ljVHlwZXMuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZUNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VD
b250ZXh0LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNv
bnRleHQuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUVycm9y
LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNw
cCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5jcHAnLAog
ICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaCcsCiAgICAg
ICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwJywKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJh
Y3REYXRhYmFzZVNlcnZlci5oCShyZXZpc2lvbiAxNDE3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsOCArMzYsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJh
c2VCYWNrZW5kOworY2xhc3MgRGF0YWJhc2VCYWNrZW5kQXN5bmM7CitjbGFzcyBEYXRhYmFzZUJh
Y2tlbmRDb250ZXh0OworY2xhc3MgRGF0YWJhc2VCYWNrZW5kU3luYzsKIGNsYXNzIERhdGFiYXNl
TWFuYWdlckNsaWVudDsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKIAogY2xhc3MgQWJzdHJhY3REYXRhYmFzZVNlcnZlciB7CkBAIC03Myw5ICs3
NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVs
eShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAw
OwogI2VuZGlmIC8vIFBMQVRGT1JNKENIUk9NSVVNKQogCi0gICAgdmlydHVhbCB2b2lkIGludGVy
cnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChj
b25zdCBEYXRhYmFzZUJhY2tlbmRDb250ZXh0KikgPSAwOwogCi0gICAgdmlydHVhbCBib29sIGNh
bkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVk
U2l6ZSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShEYXRhYmFz
ZUJhY2tlbmRDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCBzZXREYXRhYmFzZURldGFpbHMoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6
ZSkgPSAwOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIGdldE1heFNpemVGb3JEYXRh
YmFzZShjb25zdCBEYXRhYmFzZUJhY2tlbmQqKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAkocmV2aXNpb24gMTQxNzEyKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkNoYW5nZVZlcnNpb25XcmFw
cGVyLmgiCiAjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VC
YWNrZW5kQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKICNpbmNsdWRl
ICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKQEAgLTQ5
LDcgKzUwLDYgQEAKICNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgiCiAjaW5j
bHVkZSAiU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3Rh
dGVtZW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlZvaWRDYWxsYmFjay5oIgpAQCAtNjYsMTUgKzY2LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotRGF0YWJhc2U6OkRhdGFiYXNlKFBhc3NSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBk
YXRhYmFzZUNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3Rl
ZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1h
dGVkU2l6ZSkKLSAgICA6IERhdGFiYXNlQmFja2VuZChkYXRhYmFzZUNvbnRleHQsIG5hbWUsIGV4
cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIEFzeW5jRGF0YWJhc2Up
CitEYXRhYmFzZTo6RGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiBkYXRhYmFzZUNv
bnRleHQsCisgICAgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVy
c2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRT
aXplKQorICAgIDogRGF0YWJhc2VCYXNlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgLCBE
YXRhYmFzZUJhY2tlbmRBc3luYyhkYXRhYmFzZUNvbnRleHQsIG5hbWUsIGV4cGVjdGVkVmVyc2lv
biwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpCiAgICAgLCBtX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzcyhmYWxzZSkKICAgICAsIG1faXNUcmFuc2FjdGlvblF1ZXVlRW5hYmxlZCh0cnVlKQogICAg
ICwgbV9kZWxldGVkKGZhbHNlKQogewogICAgIG1fZGF0YWJhc2VUaHJlYWRTZWN1cml0eU9yaWdp
biA9IG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2luLT5pc29sYXRlZENvcHkoKTsKKyAgICBz
ZXRGcm9udGVuZCh0aGlzKTsKIAotICAgIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJl
YWRpbmcoKTsKICAgICBBU1NFUlQobV9kYXRhYmFzZUNvbnRleHQtPmRhdGFiYXNlVGhyZWFkKCkp
OwogfQogCkBAIC0xMTQsNiArMTE2LDExIEBAIERhdGFiYXNlOjp+RGF0YWJhc2UoKQogICAgIH0K
IH0KIAorUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRBc3luYz4gRGF0YWJhc2U6OmJhY2tlbmQo
KQoreworICAgIHJldHVybiB0aGlzOworfQorCiBTdHJpbmcgRGF0YWJhc2U6OnZlcnNpb24oKSBj
b25zdAogewogICAgIGlmIChtX2RlbGV0ZWQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oCShyZXZpc2lvbiAxNDE3MTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDggQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJE
YXRhYmFzZUJhY2tlbmQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRBc3luYy5oIgorI2lu
Y2x1ZGUgIkRhdGFiYXNlQmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQmFzaWNUeXBlcy5oIgog
I2luY2x1ZGUgIkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTUw
LDcgKzUxLDcgQEAgY2xhc3MgU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrOwogY2xhc3MgU1FM
VHJhbnNhY3Rpb25XcmFwcGVyOwogY2xhc3MgVm9pZENhbGxiYWNrOwogCi1jbGFzcyBEYXRhYmFz
ZSA6IHB1YmxpYyBEYXRhYmFzZUJhY2tlbmQgeworY2xhc3MgRGF0YWJhc2UgOiBwdWJsaWMgRGF0
YWJhc2VCYXNlLCBwdWJsaWMgRGF0YWJhc2VCYWNrZW5kQXN5bmMgewogcHVibGljOgogICAgIHZp
cnR1YWwgfkRhdGFiYXNlKCk7CiAKQEAgLTg3LDggKzg4LDEwIEBAIHByaXZhdGU6CiAgICAgY2xh
c3MgRGF0YWJhc2VUcmFuc2FjdGlvblRhc2s7CiAgICAgY2xhc3MgRGF0YWJhc2VUYWJsZU5hbWVz
VGFzazsKIAotICAgIERhdGFiYXNlKFBhc3NSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwKLSAgICAgICAgICAg
ICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUp
OworICAgIERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPERhdGFi
YXNlQmFja2VuZENvbnRleHQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsCisgICAgICAgIGNvbnN0IFN0
cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25l
ZCBsb25nIGVzdGltYXRlZFNpemUpOworICAgIFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQXN5
bmM+IGJhY2tlbmQoKTsKKwogICAgIHZvaWQgcnVuVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxTUUxU
cmFuc2FjdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJh
Y2s+LAogICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+LCBib29sIHJl
YWRPbmx5KTsKIApAQCAtMTEwLDYgKzExMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RlbGV0
ZWQ7CiAKICAgICBmcmllbmQgY2xhc3MgRGF0YWJhc2VNYW5hZ2VyOworICAgIGZyaWVuZCBjbGFz
cyBEYXRhYmFzZUJhY2tlbmRBc3luYzsgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gdGhlIGJh
Y2tlbmQgaGFzIGJlZW4gc3BsaXQgb3V0LgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VCYWNrZW5kLmNwcAkocmV2aXNpb24gMTQxNzEyKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzMs
OCBAQAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRlICJEYXRhYmFzZUF1dGhv
cml6ZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCisjaW5jbHVkZSAi
RGF0YWJhc2VCYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAi
RGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCkBAIC0zOSw4
ICs0Miw2IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVu
dC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q2Fs
bFN0YWNrLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgpAQCAtNTgsNyArNTksNyBAQAogLy8gPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLy8gVGhlIERhdGFiYXNlVHJhY2tl
ciBtYWludGFpbnMgYSBsaXN0IG9mIGRhdGFiYXNlcyB0aGF0IGhhdmUgYmVlbgogLy8gIm9wZW5l
ZCIgc28gdGhhdCB0aGUgY2xpZW50IGNhbiBjYWxsIGludGVycnVwdCBvciBkZWxldGUgb24gZXZl
cnkgZGF0YWJhc2UKLS8vIGFzc29jaWF0ZWQgd2l0aCBhIERhdGFiYXNlQ29udGV4dC4KKy8vIGFz
c29jaWF0ZWQgd2l0aCBhIERhdGFiYXNlQmFja2VuZENvbnRleHQuCiAvLwogLy8gV2Ugd2lsbCBv
bmx5IGNhbGwgRGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UoKSB0byBhZGQgdGhlIGRh
dGFiYXNlCiAvLyB0byB0aGUgdHJhY2tlciBhcyBvcGVuZWQgd2hlbiB3ZSd2ZSBzdWNjZWVkZWQg
aW4gb3BlbmluZyB0aGUgZGF0YWJhc2UsCkBAIC03Myw3ICs3NCw3IEBACiAvLyBUaGUgb25seSBk
YXRhYmFzZXMgaW5zdGFuY2VzIG5vdCB0cmFja2VkIGJ5IHRoZSB0cmFja2VyJ3Mgb3BlbiBkYXRh
YmFzZQogLy8gbGlzdCBhcmUgdGhlIG9uZXMgdGhhdCBoYXZlIG5vdCBiZWVuIGFkZGVkIHlldCwg
b3IgdGhlIG9uZXMgdGhhdCB3ZQogLy8gYXR0ZW1wdGVkIGFuIG9wZW4gb24gYnV0IGZhaWxlZCB0
by4gU3VjaCBpbnN0YW5jZXMgb25seSBleGlzdCBpbiB0aGUKLS8vIERhdGFiYXNlTWFuYWdlcidz
IGZhY3RvcnkgbWV0aG9kcyBmb3IgY3JlYXRpbmcgRGF0YWJhc2VCYWNrZW5kcy4KKy8vIERhdGFi
YXNlU2VydmVyJ3MgZmFjdG9yeSBtZXRob2RzIGZvciBjcmVhdGluZyBEYXRhYmFzZUJhY2tlbmRz
LgogLy8KIC8vIFRoZSBmYWN0b3J5IG1ldGhvZHMgd2lsbCBlaXRoZXIgY2FsbCBvcGVuQW5kVmVy
aWZ5VmVyc2lvbigpIG9yCiAvLyBwZXJmb3JtT3BlbkFuZFZlcmlmeSgpLiBUaGVzZSBtZXRob2Rz
IHdpbGwgYWRkIHRoZSBuZXdseSBpbnN0YW50aWF0ZWQKQEAgLTIwNCwxMCArMjA1LDkgQEAgY29u
c3QgY2hhciogRGF0YWJhc2VCYWNrZW5kOjpkYXRhYmFzZUluZgogICAgIHJldHVybiBpbmZvVGFi
bGVOYW1lOwogfQogCi1EYXRhYmFzZUJhY2tlbmQ6OkRhdGFiYXNlQmFja2VuZChQYXNzUmVmUHRy
PERhdGFiYXNlQ29udGV4dD4gZGF0YWJhc2VDb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAorRGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFzZUJh
Y2tlbmQoUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sCiAgICAg
Y29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBE
YXRhYmFzZVR5cGUgZGF0YWJhc2VUeXBlKQogICAgIDogbV9kYXRhYmFzZUNvbnRleHQoZGF0YWJh
c2VDb250ZXh0KQotICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KG1fZGF0YWJhc2VDb250
ZXh0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgLCBtX25hbWUobmFtZS5pc29sYXRl
ZENvcHkoKSkKICAgICAsIG1fZXhwZWN0ZWRWZXJzaW9uKGV4cGVjdGVkVmVyc2lvbi5pc29sYXRl
ZENvcHkoKSkKICAgICAsIG1fZGlzcGxheU5hbWUoZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkp
CkBAIC0yMTcsOCArMjE3LDcgQEAgRGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFzZUJhY2tlbmQoUGFz
c1JlZgogICAgICwgbV9uZXcoZmFsc2UpCiAgICAgLCBtX2lzU3luY0RhdGFiYXNlKGRhdGFiYXNl
VHlwZSA9PSBTeW5jRGF0YWJhc2UpCiB7Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2VDb250ZXh0LT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKLSAgICBtX2NvbnRl
eHRUaHJlYWRTZWN1cml0eU9yaWdpbiA9IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJp
dHlPcmlnaW4oKS0+aXNvbGF0ZWRDb3B5KCk7CisgICAgbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlP
cmlnaW4gPSBtX2RhdGFiYXNlQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aXNvbGF0ZWRDb3B5
KCk7CiAKICAgICBtX2RhdGFiYXNlQXV0aG9yaXplciA9IERhdGFiYXNlQXV0aG9yaXplcjo6Y3Jl
YXRlKGluZm9UYWJsZU5hbWUpOwogCkBAIC0yNDIsNyArMjQxLDggQEAgRGF0YWJhc2VCYWNrZW5k
OjpEYXRhYmFzZUJhY2tlbmQoUGFzc1JlZgogCiBEYXRhYmFzZUJhY2tlbmQ6On5EYXRhYmFzZUJh
Y2tlbmQoKQogewotICAgIEFTU0VSVCghbV9vcGVuZWQpOworICAgIGlmIChvcGVuZWQoKSkKKyAg
ICAgICAgY2xvc2VEYXRhYmFzZSgpOwogfQogCiB2b2lkIERhdGFiYXNlQmFja2VuZDo6Y2xvc2VE
YXRhYmFzZSgpCkBAIC00MjcsMTEgKzQyNyw2IEBAIGJvb2wgRGF0YWJhc2VCYWNrZW5kOjpwZXJm
b3JtT3BlbkFuZFZlcmkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogRGF0YWJhc2VCYWNrZW5kOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpOwotfQotCiBTZWN1cml0
eU9yaWdpbiogRGF0YWJhc2VCYWNrZW5kOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2luLmdldCgpOwpAQCAtNjAxLDcgKzU5
Niw3IEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kOjppbmNyZW1lbnRhbFZhY3V1bUkKICAgICAgICAg
aW50IHJlc3VsdCA9IG1fc3FsaXRlRGF0YWJhc2UucnVuSW5jcmVtZW50YWxWYWN1dW1Db21tYW5k
KCk7CiAgICAgICAgIHJlcG9ydFZhY3V1bURhdGFiYXNlUmVzdWx0KHJlc3VsdCk7CiAgICAgICAg
IGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0T2spCi0gICAgICAgICAgICBsb2dFcnJvck1lc3NhZ2Uo
Zm9ybWF0RXJyb3JNZXNzYWdlKCJlcnJvciB2YWN1dW1pbmcgZGF0YWJhc2UiLCByZXN1bHQsIG1f
c3FsaXRlRGF0YWJhc2UubGFzdEVycm9yTXNnKCkpKTsKKyAgICAgICAgICAgIG1fZnJvbnRlbmQt
PmxvZ0Vycm9yTWVzc2FnZShmb3JtYXRFcnJvck1lc3NhZ2UoImVycm9yIHZhY3V1bWluZyBkYXRh
YmFzZSIsIHJlc3VsdCwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3JNc2coKSkpOwogICAgIH0K
IH0KIApAQCAtNjE2LDExICs2MTEsNiBAQCBib29sIERhdGFiYXNlQmFja2VuZDo6aXNJbnRlcnJ1
cHRlZCgpCiAgICAgcmV0dXJuIG1fc3FsaXRlRGF0YWJhc2UuaXNJbnRlcnJ1cHRlZCgpOwogfQog
Ci12b2lkIERhdGFiYXNlQmFja2VuZDo6bG9nRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdl
KE90aGVyTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UpOwotfQotCiAj
aWYgUExBVEZPUk0oQ0hST01JVU0pCiAvLyBUaGVzZSBhcmUgdXNlZCB0byBnZW5lcmF0ZSBoaXN0
b2dyYW1zIG9mIGVycm9ycyBzZWVuIHdpdGggd2Vic3FsLgogLy8gU2VlIGFib3V0Omhpc3RvZ3Jh
bXMgaW4gY2hyb21pdW0uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmgJKHJldmlzaW9uIDE0MTcxMikKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Nyw4ICs0OCw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERhdGFiYXNlQXV0
aG9yaXplcjsKLWNsYXNzIERhdGFiYXNlQ29udGV4dDsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CitjbGFzcyBEYXRhYmFzZUJhY2tlbmRDb250ZXh0OworY2xhc3MgRGF0YWJhc2VCYXNl
OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIERhdGFiYXNlQmFja2VuZCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhYmFzZUJhY2tlbmQ+IHsKQEAgLTYxLDcgKzYyLDYg
QEAgcHVibGljOgogICAgIGJvb2wgaXNOZXcoKSBjb25zdCB7IHJldHVybiBtX25ldzsgfQogICAg
IGJvb2wgaXNTeW5jRGF0YWJhc2UoKSBjb25zdCB7IHJldHVybiBtX2lzU3luY0RhdGFiYXNlOyB9
CiAKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdp
bigpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0lkZW50aWZpZXIoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFN0cmluZyBkaXNwbGF5TmFtZSgpIGNvbnN0OwpAQCAtODgsNyArODgsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1hcmtBc0RlbGV0ZWRBbmRDbG9zZSgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbW1lZGlhdGVseSgpID0gMDsKIAotICAgIERhdGFiYXNl
Q29udGV4dCogZGF0YWJhc2VDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFzZUNvbnRl
eHQuZ2V0KCk7IH0KKyAgICBEYXRhYmFzZUJhY2tlbmRDb250ZXh0KiBkYXRhYmFzZUNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlQ29udGV4dC5nZXQoKTsgfQorICAgIHZvaWQgc2V0
RnJvbnRlbmQoRGF0YWJhc2VCYXNlKiBmcm9udGVuZCkgeyBtX2Zyb250ZW5kID0gZnJvbnRlbmQ7
IH0KIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBDaGFuZ2VWZXJzaW9uV3JhcHBlcjsK
QEAgLTEwMiw3ICsxMDMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFN5bmNEYXRhYmFzZQogICAg
IH07CiAKLSAgICBEYXRhYmFzZUJhY2tlbmQoUGFzc1JlZlB0cjxEYXRhYmFzZUNvbnRleHQ+LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAorICAgIERh
dGFiYXNlQmFja2VuZChQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAogICAgICAgICBjb25z
dCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIERhdGFi
YXNlVHlwZSk7CiAKICAgICB2b2lkIGNsb3NlRGF0YWJhc2UoKTsKQEAgLTExNyw4ICsxMTgsNiBA
QCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRDYWNoZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYpOwog
ICAgIGJvb2wgZ2V0QWN0dWFsVmVyc2lvbkZvclRyYW5zYWN0aW9uKFN0cmluZyYgdmVyc2lvbik7
CiAKLSAgICB2b2lkIGxvZ0Vycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotCiAg
ICAgdm9pZCByZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQoaW50IGVycm9yU2l0ZSwgaW50IHdlYlNx
bEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSk7CiAgICAgdm9pZCByZXBvcnRDaGFuZ2VW
ZXJzaW9uUmVzdWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxp
dGVFcnJvckNvZGUpOwogICAgIHZvaWQgcmVwb3J0U3RhcnRUcmFuc2FjdGlvblJlc3VsdChpbnQg
ZXJyb3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKTsKQEAg
LTEyOSw4ICsxMjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRhdGFi
YXNlSW5mb1RhYmxlTmFtZSgpOwogCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX2NvbnRl
eHRUaHJlYWRTZWN1cml0eU9yaWdpbjsKLSAgICBSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBtX2Rh
dGFiYXNlQ29udGV4dDsgLy8gQXNzb2NpYXRlZCB3aXRoIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC4KLSAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0OworICAgIFJlZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiBtX2RhdGFiYXNlQ29u
dGV4dDsgLy8gQXNzb2NpYXRlZCB3aXRoIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC4KIAogICAg
IFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fZXhwZWN0ZWRWZXJzaW9uOwpAQCAtMTQ4LDkg
KzE0NiwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9uZXc7CiAgICAgY29uc3QgYm9vbCBtX2lz
U3luY0RhdGFiYXNlOwogCisgICAgRGF0YWJhc2VCYXNlKiBtX2Zyb250ZW5kOwogICAgIFNRTGl0
ZURhdGFiYXNlIG1fc3FsaXRlRGF0YWJhc2U7CiAKICAgICBSZWZQdHI8RGF0YWJhc2VBdXRob3Jp
emVyPiBtX2RhdGFiYXNlQXV0aG9yaXplcjsKKworICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZVNl
cnZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5
bmMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZEFzeW5jLmgiCisKKyNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RhdGFiYXNlQmFja2VuZEFzeW5jOjpEYXRhYmFzZUJh
Y2tlbmRBc3luYyhQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGRhdGFiYXNlQ29u
dGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwg
Y29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQor
ICAgIDogRGF0YWJhc2VCYWNrZW5kKGRhdGFiYXNlQ29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJz
aW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSwgQXN5bmNEYXRhYmFzZSkKK3sKK30KKwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNF
KQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tl
bmRBc3luYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIERhdGFiYXNlQmFja2VuZEFzeW5jX2gKKyNkZWZpbmUgRGF0YWJhc2VC
YWNrZW5kQXN5bmNfaAorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkRh
dGFiYXNlQmFja2VuZC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERhdGFiYXNlU2VydmVyOworCisvLyBGSVhNRTogVGhp
cyBpbXBsZW1lbnRhdGlvbiBvZiBEYXRhYmFzZUJhY2tlbmRBc3luYyBpcyBvbmx5IGEgcGxhY2Ug
aG9sZGVyCisvLyBmb3IgdGhlIHNwbGl0IG91dCBvZiB0aGUgRGF0YWJhc2UgYmFja2VuZCB0byBi
ZSBkb25lIGxhdGVyLiBUaGlzCisvLyBwbGFjZSBob2xkZXIgaXMgbmVlZGVkIHRvIGFsbG93IG90
aGVyIGNvZGUgdGhhdCBuZWVkIHRvIHJlZmVyZW5jZSB0aGUKKy8vIERhdGFiYXNlQmFja2VuZEFz
eW5jIHRvIGRvIHNvIGJlZm9yZSB0aGUgcHJvcGVyIGJhY2tlbmQgc3BsaXQgaXMKKy8vIGF2YWls
YWJsZS4gVGhpcyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsIGltcGxlbWVudGF0
aW9uIGxhdGVyLgorCitjbGFzcyBEYXRhYmFzZUJhY2tlbmRBc3luYyA6IHB1YmxpYyBEYXRhYmFz
ZUJhY2tlbmQgeworcHJvdGVjdGVkOgorICAgIERhdGFiYXNlQmFja2VuZEFzeW5jKFBhc3NSZWZQ
dHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVk
IGxvbmcgZXN0aW1hdGVkU2l6ZSk7CisKKyAgICBmcmllbmQgY2xhc3MgRGF0YWJhc2VNYW5hZ2Vy
OyAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgb25jZSB3ZSBoYXZlIGlzb2xhdGVkIHRoaXMgdG8gdGhl
IGJhY2tlbmQuCisgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlU2VydmVyOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2Vu
ZGlmIC8vIERhdGFiYXNlQmFja2VuZEFzeW5jX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKKworI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2VjdXJpdHlPcmlnaW4qIERhdGFiYXNlQmFja2Vu
ZENvbnRleHQ6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tl
bmRDb250ZXh0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIERhdGFiYXNlQmFja2VuZENvbnRleHRfaAorI2RlZmluZSBEYXRhYmFzZUJhY2tlbmRDb250
ZXh0X2gKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZUNv
bnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OworY2xhc3MgU2VjdXJpdHlPcmlnaW47CisKKy8vIEZJWE1FOiBUaGlzIGltcGxlbWVu
dGF0aW9uIG9mIERhdGFiYXNlQmFja2VuZENvbnRleHQgaXMgb25seSBhIHBsYWNlIGhvbGRlcgor
Ly8gZm9yIHRoZSBzcGxpdCBvdXQgb2YgdGhlIERhdGFiYXNlQ29udGV4dCBiYWNrZW5kIHRvIGJl
IGRvbmUgbGF0ZXIuIFRoaXMKKy8vIHBsYWNlIGhvbGRlciBpcyBuZWVkZWQgdG8gYWxsb3cgb3Ro
ZXIgY29kZSB0aGF0IG5lZWQgdG8gcmVmZXJlbmNlIHRoZQorLy8gRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dCB0byBkbyBzbyBiZWZvcmUgdGhlIHByb3BlciBiYWNrZW5kIHNwbGl0IGlzCisvLyBhdmFp
bGFibGUuIFRoaXMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggdGhlIGFjdHVhbCBpbXBsZW1lbnRh
dGlvbiBsYXRlci4KKworY2xhc3MgRGF0YWJhc2VCYWNrZW5kQ29udGV4dCA6IHB1YmxpYyBEYXRh
YmFzZUNvbnRleHQgeworcHVibGljOgorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7IH0KKyAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0Up
CisKKyNlbmRpZiAvLyBEYXRhYmFzZUJhY2tlbmRDb250ZXh0X2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRT
eW5jLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZFN5bmMuaCIKKworI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGF0YWJhc2VCYWNrZW5kU3luYzo6RGF0YWJhc2VCYWNr
ZW5kU3luYyhQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGRhdGFiYXNlQ29udGV4
dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQorICAg
IDogRGF0YWJhc2VCYWNrZW5kKGRhdGFiYXNlQ29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9u
LCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSwgU3luY0RhdGFiYXNlKQoreworfQorCisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZFN5
bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQmFja2VuZFN5bmMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3luYy5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgRGF0YWJhc2VCYWNrZW5kU3luY19oCisjZGVmaW5lIERhdGFiYXNlQmFja2VuZFN5
bmNfaAorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkRhdGFiYXNlQmFj
a2VuZC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIERhdGFiYXNlU2VydmVyOworCisvLyBGSVhNRTogVGhpcyBpbXBsZW1l
bnRhdGlvbiBvZiBEYXRhYmFzZUJhY2tlbmRTeW5jIGlzIG9ubHkgYSBwbGFjZSBob2xkZXIKKy8v
IGZvciB0aGUgc3BsaXQgb3V0IG9mIHRoZSBEYXRhYmFzZVN5bmMgYmFja2VuZCB0byBiZSBkb25l
IGxhdGVyLiBUaGlzCisvLyBwbGFjZSBob2xkZXIgaXMgbmVlZGVkIHRvIGFsbG93IG90aGVyIGNv
ZGUgdGhhdCBuZWVkIHRvIHJlZmVyZW5jZSB0aGUKKy8vIERhdGFiYXNlQmFja2VuZFN5bmMgdG8g
ZG8gc28gYmVmb3JlIHRoZSBwcm9wZXIgYmFja2VuZCBzcGxpdCBpcworLy8gYXZhaWxhYmxlLiBU
aGlzIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gbGF0
ZXIuCisKK2NsYXNzIERhdGFiYXNlQmFja2VuZFN5bmMgOiBwdWJsaWMgRGF0YWJhc2VCYWNrZW5k
IHsKK3Byb3RlY3RlZDoKKyAgICBEYXRhYmFzZUJhY2tlbmRTeW5jKFBhc3NSZWZQdHI8RGF0YWJh
c2VCYWNrZW5kQ29udGV4dD4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBl
Y3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0
aW1hdGVkU2l6ZSk7CisKKyAgICBmcmllbmQgY2xhc3MgRGF0YWJhc2VNYW5hZ2VyOyAvLyBGSVhN
RTogcmVtb3ZlIHRoaXMgb25jZSB3ZSBoYXZlIGlzb2xhdGVkIHRoaXMgdG8gdGhlIGJhY2tlbmQu
CisgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlU2VydmVyOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIERh
dGFiYXNlQmFja2VuZFN5bmNfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNlLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYXNlLmgiCisK
KyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworRGF0YWJhc2VCYXNlOjpEYXRhYmFzZUJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KQoreworICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
RGF0YWJhc2VCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpOworfQorCit2b2lkIERhdGFiYXNlQmFz
ZTo6bG9nRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIERhdGFiYXNlQmFzZV9oCisjZGVmaW5lIERhdGFiYXNl
QmFzZV9oCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRGF0YWJhc2VC
YWNrZW5kLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKKworY2xhc3MgRGF0YWJhc2VCYXNlIHsKK3B1YmxpYzoKKyAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisgICAgdm9pZCBs
b2dFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKworcHJvdGVjdGVkOgorICAg
IERhdGFiYXNlQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKKyAgICBSZWZQdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKKwor
I2VuZGlmIC8vIERhdGFiYXNlQmFzZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCShyZXZpc2lvbiAxNDE3
MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDaHJvbWUu
aCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2lu
Y2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZU1hbmFn
ZXIuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVh
ZC5oIgpAQCAtMTA5LDcgKzExMCw3IEBAIERhdGFiYXNlQ29udGV4dDo6RGF0YWJhc2VDb250ZXh0
KFNjcmlwdEUKIAogICAgIC8vIEZvciBkZWJ1ZyBhY2NvdW50aW5nIG9ubHkuIFdlIG11c3QgZG8g
dGhpcyBiZWZvcmUgd2UgcmVnaXN0ZXIgdGhlCiAgICAgLy8gaW5zdGFuY2UuIFRoZSBhc3NlcnRp
b25zIGFzc3VtZSB0aGlzLgotICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRpZENvbnN0
cnVjdERhdGFiYXNlQ29udGV4dCgpOyAKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5k
aWRDb25zdHJ1Y3REYXRhYmFzZUNvbnRleHQoKTsKIAogICAgIERhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpLnJlZ2lzdGVyRGF0YWJhc2VDb250ZXh0KHRoaXMpOwogfQpAQCAtMTUxLDYgKzE1Miwx
NSBAQCB2b2lkIERhdGFiYXNlQ29udGV4dDo6c3RvcCgpCiAgICAgc3RvcERhdGFiYXNlcygpOwog
fQogCitQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IERhdGFiYXNlQ29udGV4dDo6
YmFja2VuZCgpCit7CisgICAgcmVmKCk7CisgICAgRGF0YWJhc2VCYWNrZW5kQ29udGV4dCogYmFj
a2VuZDsKKyAgICBiYWNrZW5kID0gcmVpbnRlcnByZXRfY2FzdDxEYXRhYmFzZUJhY2tlbmRDb250
ZXh0Kj4odGhpcyk7CisgICAgUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGJhY2tlbmRS
ZWYgPSBhZG9wdFJlZihiYWNrZW5kKTsKKyAgICByZXR1cm4gYmFja2VuZFJlZi5yZWxlYXNlKCk7
Cit9CisKIERhdGFiYXNlVGhyZWFkKiBEYXRhYmFzZUNvbnRleHQ6OmRhdGFiYXNlVGhyZWFkKCkK
IHsKICAgICBpZiAoIW1fZGF0YWJhc2VUaHJlYWQgJiYgIW1faGFzT3BlbkRhdGFiYXNlcykgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQ29udGV4dC5oCShyZXZpc2lvbiAxNDE3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICsz
OCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERhdGFiYXNlOworY2xhc3MgRGF0
YWJhc2VCYWNrZW5kQ29udGV4dDsKIGNsYXNzIERhdGFiYXNlVGFza1N5bmNocm9uaXplcjsKIGNs
YXNzIERhdGFiYXNlVGhyZWFkOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKQEAgLTUw
LDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7
CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKIAotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7IH0KKyAgICBQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGJhY2tlbmQoKTsK
ICAgICBEYXRhYmFzZVRocmVhZCogZGF0YWJhc2VUaHJlYWQoKTsKIAogICAgIHZvaWQgc2V0SGFz
T3BlbkRhdGFiYXNlcygpIHsgbV9oYXNPcGVuRGF0YWJhc2VzID0gdHJ1ZTsgfQpAQCAtNzIsNiAr
NzMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWQ7CiAgICAgYm9vbCBtX2hh
c1JlcXVlc3RlZFRlcm1pbmF0aW9uOwogCisgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlQmFja2Vu
ZENvbnRleHQ7CiAgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlTWFuYWdlcjsKIH07CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
TWFuYWdlci5jcHAJKHJldmlzaW9uIDE0MTcxMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIg
KzMwLDE2IEBACiAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQmFj
a2VuZC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZEFzeW5jLmgiCisjaW5jbHVkZSAiRGF0
YWJhc2VCYWNrZW5kQ29udGV4dC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZFN5bmMuaCIK
ICNpbmNsdWRlICJEYXRhYmFzZUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0
LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VTeW5jLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yRGF0YWJhc2VJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCkBA
IC0yMDEsMjMgKzIwNSwyNSBAQCBQYXNzUmVmUHRyPERhdGFiYXNlPiBEYXRhYmFzZU1hbmFnZXI6
Om9wCiAgICAgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFiYXNl
Q2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2ssCiAgICAgRGF0YWJhc2VFcnJvciYgZXJyb3IpCiB7
CisgICAgU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFJlZlB0
cjxEYXRhYmFzZUNvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCA9IGRhdGFiYXNlQ29udGV4dEZvcihj
b250ZXh0KTsKKyAgICBSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4gYmFja2VuZENvbnRl
eHQgPSBkYXRhYmFzZUNvbnRleHQtPmJhY2tlbmQoKTsKICAgICBBU1NFUlQoZXJyb3IgPT0gRGF0
YWJhc2VFcnJvcjo6Tm9uZSk7CiAKLSAgICBpZiAoIWNhbkVzdGFibGlzaERhdGFiYXNlKGNvbnRl
eHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKSkgeworICAgIGlmICghbV9zZXJ2
ZXItPmNhbkVzdGFibGlzaERhdGFiYXNlKGJhY2tlbmRDb250ZXh0LmdldCgpLCBuYW1lLCBkaXNw
bGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkpIHsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJEYXRh
YmFzZSAlcyBmb3Igb3JpZ2luICVzIG5vdCBhbGxvd2VkIHRvIGJlIGVzdGFibGlzaGVkIiwgbmFt
ZS5hc2NpaSgpLmRhdGEoKSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKS5h
c2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0cjxE
YXRhYmFzZT4gZGF0YWJhc2UgPSBhZG9wdFJlZihuZXcgRGF0YWJhc2UoZGF0YWJhc2VDb250ZXh0
LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKSk7Ci0K
ICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOworICAgIFJlZlB0cjxEYXRhYmFzZT4gZGF0YWJhc2Ug
PSBhZG9wdFJlZihuZXcgRGF0YWJhc2UoY29udGV4dCwgYmFja2VuZENvbnRleHQsIG5hbWUsIGV4
cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKTsKKwogICAgIGlmICgh
ZGF0YWJhc2UtPm9wZW5BbmRWZXJpZnlWZXJzaW9uKCFjcmVhdGlvbkNhbGxiYWNrLCBlcnJvciwg
ZXJyb3JNZXNzYWdlKSkgewotICAgICAgICBkYXRhYmFzZS0+bG9nRXJyb3JNZXNzYWdlKGVycm9y
TWVzc2FnZSk7CisgICAgICAgIGxvZ0Vycm9yTWVzc2FnZShjb250ZXh0LCBlcnJvck1lc3NhZ2Up
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBzZXREYXRhYmFzZURldGFpbHMoY29u
dGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUp
OworICAgIG1fc2VydmVyLT5zZXREYXRhYmFzZURldGFpbHMoY29udGV4dC0+c2VjdXJpdHlPcmln
aW4oKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOwogICAgIGRhdGFiYXNlQ29u
dGV4dC0+c2V0SGFzT3BlbkRhdGFiYXNlcygpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRPcGVuRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2UsIGNvbnRleHQtPnNlY3VyaXR5
T3JpZ2luKCktPmhvc3QoKSwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uKTsKQEAgLTIzNSwyMyArMjQx
LDI0IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBEYXRhYmFzZU1hbmFnZXIKICAgICB1bnNp
Z25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3Jl
YXRpb25DYWxsYmFjaywgRGF0YWJhc2VFcnJvciYgZXJyb3IpCiB7CiAgICAgUmVmUHRyPERhdGFi
YXNlQ29udGV4dD4gZGF0YWJhc2VDb250ZXh0ID0gZGF0YWJhc2VDb250ZXh0Rm9yKGNvbnRleHQp
OworICAgIFJlZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiBiYWNrZW5kQ29udGV4dCA9IGRh
dGFiYXNlQ29udGV4dC0+YmFja2VuZCgpOwogICAgIEFTU0VSVChjb250ZXh0LT5pc0NvbnRleHRU
aHJlYWQoKSk7CiAgICAgQVNTRVJUKGVycm9yID09IERhdGFiYXNlRXJyb3I6Ok5vbmUpOwogCi0g
ICAgaWYgKCFjYW5Fc3RhYmxpc2hEYXRhYmFzZShjb250ZXh0LCBuYW1lLCBkaXNwbGF5TmFtZSwg
ZXN0aW1hdGVkU2l6ZSkpIHsKKyAgICBpZiAoIW1fc2VydmVyLT5jYW5Fc3RhYmxpc2hEYXRhYmFz
ZShiYWNrZW5kQ29udGV4dC5nZXQoKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUp
KSB7CiAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2UgJXMgZm9yIG9yaWdpbiAlcyBu
b3QgYWxsb3dlZCB0byBiZSBlc3RhYmxpc2hlZCIsIG5hbWUuYXNjaWkoKS5kYXRhKCksIGNvbnRl
eHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBSZWZQdHI8RGF0YWJhc2VTeW5jPiBkYXRhYmFzZSA9
IGFkb3B0UmVmKG5ldyBEYXRhYmFzZVN5bmMoZGF0YWJhc2VDb250ZXh0LCBuYW1lLCBleHBlY3Rl
ZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKSk7Ci0KICAgICBTdHJpbmcgZXJy
b3JNZXNzYWdlOworICAgIFJlZlB0cjxEYXRhYmFzZVN5bmM+IGRhdGFiYXNlID0gYWRvcHRSZWYo
bmV3IERhdGFiYXNlU3luYyhjb250ZXh0LCBiYWNrZW5kQ29udGV4dCwgbmFtZSwgZXhwZWN0ZWRW
ZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkpOworCiAgICAgaWYgKCFkYXRhYmFz
ZS0+b3BlbkFuZFZlcmlmeVZlcnNpb24oIWNyZWF0aW9uQ2FsbGJhY2ssIGVycm9yLCBlcnJvck1l
c3NhZ2UpKSB7Ci0gICAgICAgIGRhdGFiYXNlLT5sb2dFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdl
KTsKKyAgICAgICAgbG9nRXJyb3JNZXNzYWdlKGNvbnRleHQsIGVycm9yTWVzc2FnZSk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHNldERhdGFiYXNlRGV0YWlscyhjb250ZXh0LT5z
ZWN1cml0eU9yaWdpbigpLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CisgICAg
bV9zZXJ2ZXItPnNldERhdGFiYXNlRGV0YWlscyhjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBu
YW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CiAKICAgICBpZiAoZGF0YWJhc2UtPmlz
TmV3KCkgJiYgY3JlYXRpb25DYWxsYmFjay5nZXQoKSkgewogICAgICAgICBMT0coU3RvcmFnZUFQ
SSwgIkludm9raW5nIHRoZSBjcmVhdGlvbiBjYWxsYmFjayBmb3IgZGF0YWJhc2UgJXBcbiIsIGRh
dGFiYXNlLmdldCgpKTsKQEAgLTI2Niw3ICsyNzMsNyBAQCBib29sIERhdGFiYXNlTWFuYWdlcjo6
aGFzT3BlbkRhdGFiYXNlcyhTCiAgICAgUmVmUHRyPERhdGFiYXNlQ29udGV4dD4gZGF0YWJhc2VD
b250ZXh0ID0gZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGb3IoY29udGV4dCk7CiAgICAgaWYgKCFk
YXRhYmFzZUNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZGF0YWJh
c2VDb250ZXh0LT5tX2hhc09wZW5EYXRhYmFzZXM7CisgICAgcmV0dXJuIGRhdGFiYXNlQ29udGV4
dC0+aGFzT3BlbkRhdGFiYXNlcygpOwogfQogCiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6c3RvcERh
dGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBEYXRhYmFzZVRhc2tTeW5j
aHJvbml6ZXIqIHN5bmNocm9uaXplcikKQEAgLTM1NSwyMiArMzYyLDE3IEBAIHZvaWQgRGF0YWJh
c2VNYW5hZ2VyOjppbnRlcnJ1cHRBbGxEYXRhYmEKIHsKICAgICBSZWZQdHI8RGF0YWJhc2VDb250
ZXh0PiBkYXRhYmFzZUNvbnRleHQgPSBleGlzdGluZ0RhdGFiYXNlQ29udGV4dEZvcihjb250ZXh0
KTsKICAgICBpZiAoZGF0YWJhc2VDb250ZXh0KQotICAgICAgICBtX3NlcnZlci0+aW50ZXJydXB0
QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb250ZXh0KTsKKyAgICAgICAgbV9zZXJ2ZXItPmludGVy
cnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoZGF0YWJhc2VDb250ZXh0LT5iYWNrZW5kKCkuZ2V0
KCkpOwogfQogCi1ib29sIERhdGFiYXNlTWFuYWdlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpCi17Ci0gICAg
cmV0dXJuIG1fc2VydmVyLT5jYW5Fc3RhYmxpc2hEYXRhYmFzZShjb250ZXh0LCBuYW1lLCBkaXNw
bGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7Ci19Ci0KLXZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzZXRE
YXRhYmFzZURldGFpbHMoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUp
Cit1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VNYW5hZ2VyOjpnZXRNYXhTaXplRm9yRGF0YWJh
c2UoY29uc3QgRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKIHsKLSAgICBtX3NlcnZlci0+c2V0
RGF0YWJhc2VEZXRhaWxzKG9yaWdpbiwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUp
OworICAgIHJldHVybiBtX3NlcnZlci0+Z2V0TWF4U2l6ZUZvckRhdGFiYXNlKGRhdGFiYXNlKTsK
IH0KIAotdW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlTWFuYWdlcjo6Z2V0TWF4U2l6ZUZvckRh
dGFiYXNlKGNvbnN0IERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UpCit2b2lkIERhdGFiYXNlTWFu
YWdlcjo6bG9nRXJyb3JNZXNzYWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICByZXR1cm4gbV9zZXJ2ZXItPmdldE1heFNpemVG
b3JEYXRhYmFzZShkYXRhYmFzZSk7CisgICAgY29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoT3Ro
ZXJNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAkocmV2aXNpb24gMTQxNzEyKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZVNl
cnZlci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQmFzaWNUeXBlcy5oIgorI2luY2x1ZGUgIkRhdGFi
YXNlRGV0YWlscy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00MCw2ICs0MSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJhY3REYXRhYmFzZVNlcnZlcjsKIGNs
YXNzIERhdGFiYXNlOworY2xhc3MgRGF0YWJhc2VCYWNrZW5kOwogY2xhc3MgRGF0YWJhc2VDYWxs
YmFjazsKIGNsYXNzIERhdGFiYXNlQ29udGV4dDsKIGNsYXNzIERhdGFiYXNlTWFuYWdlckNsaWVu
dDsKQEAgLTExMiw5ICsxMTQsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludGVycnVwdEFsbERh
dGFiYXNlc0ZvckNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCi0gICAgYm9vbCBj
YW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRl
ZFNpemUpOwotCi0gICAgdm9pZCBzZXREYXRhYmFzZURldGFpbHMoU2VjdXJpdHlPcmlnaW4qLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxv
bmcgZXN0aW1hdGVkU2l6ZSk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGdldE1heFNpemVGb3JE
YXRhYmFzZShjb25zdCBEYXRhYmFzZUJhY2tlbmQqKTsKIAogcHJpdmF0ZToKQEAgLTEyNSw2ICsx
MjQsOCBAQCBwcml2YXRlOgogICAgIC8vIGl0IGFscmVhZHkgZXhpc3QgcHJldmlvdXNseS4gT3Ro
ZXJ3aXNlLCBpdCByZXR1cm5zIDAuCiAgICAgUGFzc1JlZlB0cjxEYXRhYmFzZUNvbnRleHQ+IGV4
aXN0aW5nRGF0YWJhc2VDb250ZXh0Rm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAorICAg
IHN0YXRpYyB2b2lkIGxvZ0Vycm9yTWVzc2FnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKKwogICAgIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIqIG1fc2Vy
dmVyOwogICAgIERhdGFiYXNlTWFuYWdlckNsaWVudCogbV9jbGllbnQ7CiAgICAgYm9vbCBtX2Rh
dGFiYXNlSXNBdmFpbGFibGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlU2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcAkocmV2aXNpb24gMTQxNzEyKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
CiAKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRBc3luYy5oIgorI2luY2x1ZGUgIkRhdGFiYXNl
QmFja2VuZENvbnRleHQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRTeW5jLmgiCiAjaW5j
bHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAK
QEAgLTE0MSwxNCArMTQ0LDE0IEBAIHZvaWQgRGF0YWJhc2VTZXJ2ZXI6OmNsb3NlRGF0YWJhc2Vz
SW1tZWQKIH0KICNlbmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkKIAotdm9pZCBEYXRhYmFzZVNl
cnZlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQordm9pZCBEYXRhYmFzZVNlcnZlcjo6aW50ZXJydXB0QWxsRGF0
YWJhc2VzRm9yQ29udGV4dChjb25zdCBEYXRhYmFzZUJhY2tlbmRDb250ZXh0KiBjb250ZXh0KQog
ewogICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmludGVycnVwdEFsbERhdGFiYXNlc0Zv
ckNvbnRleHQoY29udGV4dCk7CiB9CiAKLWJvb2wgRGF0YWJhc2VTZXJ2ZXI6OmNhbkVzdGFibGlz
aERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRT
aXplKQorYm9vbCBEYXRhYmFzZVNlcnZlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2UoRGF0YWJhc2VC
YWNrZW5kQ29udGV4dCogYmFja2VuZENvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQogewotICAg
IHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5jYW5Fc3RhYmxpc2hEYXRhYmFzZShj
b250ZXh0LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CisgICAgcmV0dXJuIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNhbkVzdGFibGlzaERhdGFiYXNlKGJhY2tlbmRDb250
ZXh0LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CiB9CiAKIHZvaWQgRGF0YWJh
c2VTZXJ2ZXI6OnNldERhdGFiYXNlRGV0YWlscyhTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcg
ZXN0aW1hdGVkU2l6ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmgJKHJldmlzaW9uIDE0MTcxMikKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNjgsOSArNjgsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YWJh
c2VzSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG5hbWUpOwogI2VuZGlmIC8vIFBMQVRGT1JNKENIUk9NSVVNKQogCi0gICAgdmlydHVhbCB2
b2lkIGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOworICAgIHZpcnR1YWwgdm9pZCBpbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250
ZXh0KGNvbnN0IERhdGFiYXNlQmFja2VuZENvbnRleHQqKTsKIAotICAgIHZpcnR1YWwgYm9vbCBj
YW5Fc3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRl
ZFNpemUpOworICAgIHZpcnR1YWwgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShEYXRhYmFzZUJh
Y2tlbmRDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOwogCiAgICAgdmlydHVhbCB2b2lkIHNl
dERhdGFiYXNlRGV0YWlscyhTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKICAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3Qg
RGF0YWJhc2VCYWNrZW5kKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlU3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwCShyZXZpc2lvbiAxNDE3MTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDggQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKKyNp
bmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNr
ZW5kU3luYy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKICNpbmNsdWRlICJEYXRh
YmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKQEAgLTQ5LDE4ICs1
MSwyMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURhdGFiYXNlU3luYzo6RGF0YWJhc2VT
eW5jKFBhc3NSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVz
dGltYXRlZFNpemUpCi0gICAgOiBEYXRhYmFzZUJhY2tlbmQoZGF0YWJhc2VDb250ZXh0LCBuYW1l
LCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBTeW5jRGF0YWJh
c2UpCitEYXRhYmFzZVN5bmM6OkRhdGFiYXNlU3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+
IGRhdGFiYXNlQ29udGV4dCwKKyAgICBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
ZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25n
IGVzdGltYXRlZFNpemUpCisgICAgOiBEYXRhYmFzZUJhc2Uoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKKyAgICAsIERhdGFiYXNlQmFja2VuZFN5bmMoZGF0YWJhc2VDb250ZXh0LCBuYW1lLCBleHBl
Y3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKQogeworICAgIHNldEZyb250
ZW5kKHRoaXMpOwogfQogCiBEYXRhYmFzZVN5bmM6On5EYXRhYmFzZVN5bmMoKQogewogICAgIEFT
U0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKK30KIAot
ICAgIGlmIChvcGVuZWQoKSkKLSAgICAgICAgY2xvc2VEYXRhYmFzZSgpOworUGFzc1JlZlB0cjxE
YXRhYmFzZUJhY2tlbmRTeW5jPiBEYXRhYmFzZVN5bmM6OmJhY2tlbmQoKQoreworICAgIHJldHVy
biB0aGlzOwogfQogCiB2b2lkIERhdGFiYXNlU3luYzo6Y2hhbmdlVmVyc2lvbihjb25zdCBTdHJp
bmcmIG9sZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgbmV3VmVyc2lvbiwgUGFzc1JlZlB0cjxTUUxU
cmFuc2FjdGlvblN5bmNDYWxsYmFjaz4gY2hhbmdlVmVyc2lvbkNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJiBlYykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VTeW5jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVN5bmMuaAkocmV2aXNpb24gMTQxNzEyKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyAr
MzMsOCBAQAogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkRhdGFiYXNl
QmFja2VuZC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZFN5bmMuaCIKKyNpbmNsdWRlICJE
YXRhYmFzZUJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZUJhc2ljVHlwZXMuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNTAs
NyArNTEsNyBAQCBjbGFzcyBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjazsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwogCiAvLyBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBzaG91bGQgYmUgY3JlYXRl
ZCBhbmQgdXNlZCBvbmx5IG9uIHRoZSB3b3JrZXIncyBjb250ZXh0IHRocmVhZC4KLWNsYXNzIERh
dGFiYXNlU3luYyA6IHB1YmxpYyBEYXRhYmFzZUJhY2tlbmQgeworY2xhc3MgRGF0YWJhc2VTeW5j
IDogcHVibGljIERhdGFiYXNlQmFzZSwgcHVibGljIERhdGFiYXNlQmFja2VuZFN5bmMgewogcHVi
bGljOgogICAgIHZpcnR1YWwgfkRhdGFiYXNlU3luYygpOwogCkBAIC03Myw4ICs3NCwxMCBAQCBw
dWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIERhdGFiYXNlU3luYyhQYXNzUmVmUHRyPERh
dGFiYXNlQ29udGV4dD4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3Rl
ZFZlcnNpb24sCi0gICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVu
c2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CisgICAgRGF0YWJhc2VTeW5jKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+LCBjb25zdCBT
dHJpbmcmIG5hbWUsCisgICAgICAgIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25z
dCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOworICAg
IFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kU3luYz4gYmFja2VuZCgpOworCiAgICAgdm9pZCBy
dW5UcmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uU3luY0NhbGxiYWNrPiwgYm9v
bCByZWFkT25seSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgYm9vbCBvcGVuQW5kVmVyaWZ5VmVy
c2lvbihib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBEYXRhYmFzZUVycm9yJiwgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpOwpAQCAtODIsNiArODUsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBt
X2xhc3RFcnJvck1lc3NhZ2U7CiAKICAgICBmcmllbmQgY2xhc3MgRGF0YWJhc2VNYW5hZ2VyOwor
ICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZUJhY2tlbmRTeW5jOyAvLyBGSVhNRTogcmVtb3ZlIHRo
aXMgd2hlbiB0aGUgYmFja2VuZCBoYXMgYmVlbiBzcGxpdCBvdXQuCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVHJhY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCShyZXZpc2lvbiAxNDE3MTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDE0ICszNCwxMyBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1
ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZC5oIgotI2luY2x1
ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQu
aCIKICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhYmFzZU1hbmFn
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJPcmlnaW5RdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJQYWdlLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5IYXNoLmgiCiAjaW5jbHVkZSAiU1FM
aXRlRmlsZVN5c3RlbS5oIgpAQCAtMTA5LDI0ICsxMDgsMzYgQEAgdm9pZCBEYXRhYmFzZVRyYWNr
ZXI6Om9wZW5UcmFja2VyRGF0YWJhcwogICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxv
Y2soKSk7CiAKICAgICBpZiAobV9kYXRhYmFzZS5pc09wZW4oKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm47IC8vIEFscmVhZHkgb3Blbi4gTm90aGluZyBtb3JlIHRvIGRvLgogCisg
ICAgLy8gSWYgY3JlYXRlSWZEb2VzTm90RXhpc3QgaXMgZmFsc2UsIFNRTGl0ZUZpbGVTeXN0ZW06
OmVuc3VyZURhdGFiYXNlRmlsZUV4aXN0cygpCisgICAgLy8gd2lsbCByZXR1cm4gZmFsc2UgaWYg
dGhlIGRhdGFiYXNlIGZpbGUgZG9lcyBub3QgZXhpc3QuCisgICAgLy8gSWYgY3JlYXRlSWZEb2Vz
Tm90RXhpc3QgaXMgdHJ1ZSwgU1FMaXRlRmlsZVN5c3RlbTo6ZW5zdXJlRGF0YWJhc2VGaWxlRXhp
c3RzKCkKKyAgICAvLyB3aWxsIGF0dGVtcHQgdG8gY3JlYXRlIHRoZSBwYXRoIHRvIHRoZSBkYXRh
YmFzZSBmaWxlIGlmIGl0IGRvZXMgbm90CisgICAgLy8gZXhpc3RzIHlldC4gSXQnbGwgcmV0dXJu
IHRydWUgaWYgdGhlIHBhdGggYWxyZWFkeSBleGlzdHMsIG9yIGlmIGl0CisgICAgLy8gc3VjY2Vz
c2Z1bGx5IGNyZWF0ZXMgdGhlIHBhdGguIEVsc2UsIGl0IHdpbGwgcmV0dXJuIGZhbHNlLgogICAg
IFN0cmluZyBkYXRhYmFzZVBhdGggPSB0cmFja2VyRGF0YWJhc2VQYXRoKCk7CiAgICAgaWYgKCFT
UUxpdGVGaWxlU3lzdGVtOjplbnN1cmVEYXRhYmFzZUZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoLCBj
cmVhdGVJZkRvZXNOb3RFeGlzdCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIE9wZW4gdGhl
IGRhdGFiYXNlIHVuY29uZGl0aW9uYWxseS4gSWYgb25lIGRvZXMgbm90IGV4aXN0cyBhbHJlYWR5
LCBvcGVuCisgICAgLy8gYSBuZXcgb25lLgogICAgIGlmICghbV9kYXRhYmFzZS5vcGVuKGRhdGFi
YXNlUGF0aCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdoYXQgZG8gZG8gaGVyZT8KICAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBkYXRhYmFzZVBhdGggJXMuIiwgZGF0YWJhc2VQYXRo
LmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2RhdGFiYXNl
LmRpc2FibGVUaHJlYWRpbmdDaGVja3MoKTsKKworICAgIC8vIEVuc3VyZSB0aGF0IHRoZSAnT3Jp
Z2lucycgdGFibGUgZXhpc3RzLiBDcmVhdGUgaXQgaWYgaXQgZG9lc24ndCBleGlzdCB5ZXQuCiAg
ICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJPcmlnaW5zIikpIHsKICAgICAgICAgaWYg
KCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgT3JpZ2lucyAob3JpZ2lu
IFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHF1b3RhIElOVEVHRVIgTk9UIE5VTEwg
T04gQ09ORkxJQ1QgRkFJTCk7IikpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBhbmQgaGVyZQog
ICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIE9yaWdpbnMgdGFibGUiKTsK
ICAgICAgICAgfQogICAgIH0KKworICAgIC8vIEVuc3VyZSB0aGF0IHRoZSAnRGF0YWJhc2VzJyB0
YWJsZSBleGlzdHMuIENyZWF0ZSBpdCBpZiBpdCBkb2Vzbid0IGV4aXN0IHlldC4KICAgICBpZiAo
IW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIkRhdGFiYXNlcyIpKSB7CiAgICAgICAgIGlmICghbV9k
YXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIERhdGFiYXNlcyAoZ3VpZCBJTlRF
R0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQsIG9yaWdpbiBURVhULCBuYW1lIFRFWFQsIGRp
c3BsYXlOYW1lIFRFWFQsIGVzdGltYXRlZFNpemUgSU5URUdFUiwgcGF0aCBURVhUKTsiKSkgewog
ICAgICAgICAgICAgLy8gRklYTUU6IGFuZCBoZXJlCkBAIC0xMzUsNyArMTQ2LDcgQEAgdm9pZCBE
YXRhYmFzZVRyYWNrZXI6Om9wZW5UcmFja2VyRGF0YWJhcwogICAgIH0KIH0KIAotYm9vbCBEYXRh
YmFzZVRyYWNrZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQorYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNhbkVz
dGFibGlzaERhdGFiYXNlKERhdGFiYXNlQmFja2VuZENvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3Rp
bWF0ZWRTaXplKQogewogICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBjb250ZXh0LT5zZWN1
cml0eU9yaWdpbigpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXF1aXJlbWVudDsKQEAgLTE0
Myw3ICsxNTQsNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhCiAg
ICAgICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwogICAgICAg
ICBMb2NrZXI8T3JpZ2luUXVvdGFNYW5hZ2VyPiBxdW90YU1hbmFnZXJMb2NrZXIob3JpZ2luUXVv
dGFNYW5hZ2VyKCkpOwogCi0gICAgICAgIGlmICghY2FuQ3JlYXRlRGF0YWJhc2Uob3JpZ2luLCBu
YW1lKSkKKyAgICAgICAgaWYgKGlzRGVsZXRpbmdEYXRhYmFzZU9yT3JpZ2luRm9yKG9yaWdpbiwg
bmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgcmVjb3JkQ3JlYXRp
bmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpOwpAQCAtMTY4LDggKzE3OSw3IEBAIGJvb2wgRGF0YWJh
c2VUcmFja2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmEKIAogICAgIC8vIEdpdmUgdGhlIGNocm9tZSBj
bGllbnQgYSBjaGFuY2UgdG8gaW5jcmVhc2UgdGhlIHF1b3RhLgogICAgIC8vIERyb3AgYWxsIGxv
Y2tzIGJlZm9yZSBjYWxsaW5nIG91dDsgd2UgZG9uJ3Qga25vdyB3aGF0IHRoZXknbGwgZG8uCi0g
ICAgUmVmUHRyPERhdGFiYXNlQ29udGV4dD4gZGF0YWJhc2VDb250ZXh0ID0gRGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VDb250ZXh0Rm9yKGNvbnRleHQpOwotICAgIGRhdGFiYXNl
Q29udGV4dC0+ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKG5hbWUsIERhdGFiYXNlRGV0YWlscyhuYW1l
Lmlzb2xhdGVkQ29weSgpLCBkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSwgZXN0aW1hdGVkU2l6
ZSwgMCkpOworICAgIGNvbnRleHQtPmRhdGFiYXNlRXhjZWVkZWRRdW90YShuYW1lLCBEYXRhYmFz
ZURldGFpbHMobmFtZS5pc29sYXRlZENvcHkoKSwgZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCks
IGVzdGltYXRlZFNpemUsIDApKTsKIAogICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2Rh
dGFiYXNlR3VhcmQpOwogCkBAIC0yMDEsNyArMjExLDkgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6
Omhhc0VudHJ5Rm9yRGF0YWJhcwogICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2so
KSk7CiAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShmYWxzZSk7CiAgICAgaWYgKCFtX2RhdGFiYXNl
LmlzT3BlbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBmYWxzZTsg
Ly8gTm8gInRyYWNrZXIgZGF0YWJhc2UiLiBIZW5jZSwgbm8gZW50cnkgZm9yIHRoZSBkYXRhYmFz
ZSBvZiBpbnRlcmVzdC4KKworICAgIC8vIFdlJ3ZlIGdvdCBhIHRyYWNrZXIgZGF0YWJhc2UuIFNl
dCB1cCBhIHF1ZXJ5IHRvIGFzayBmb3IgdGhlIGRiIG9mIGludGVyZXN0OgogICAgIFNRTGl0ZVN0
YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBndWlkIEZST00gRGF0YWJhc2Vz
IFdIRVJFIG9yaWdpbj0/IEFORCBuYW1lPT87Iik7CiAKICAgICBpZiAoc3RhdGVtZW50LnByZXBh
cmUoKSAhPSBTUUxSZXN1bHRPaykKQEAgLTIyOSw3ICsyNDEsNyBAQCB2b2lkIERhdGFiYXNlVHJh
Y2tlcjo6ZGF0YWJhc2VDaGFuZ2VkKERhCiAgICAgb3JpZ2luUXVvdGFNYW5hZ2VyKCkubWFya0Rh
dGFiYXNlKGRhdGFiYXNlKTsKIH0KIAotdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmludGVycnVwdEFs
bERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKK3ZvaWQgRGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0
KGNvbnN0IERhdGFiYXNlQmFja2VuZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgVmVjdG9yPFJl
ZlB0cjxEYXRhYmFzZUJhY2tlbmQ+ID4gb3BlbkRhdGFiYXNlczsKICAgICB7CkBAIC0yNDcsNyAr
MjU5LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmludGVycnVwdEFsbERhdGFiYQogICAgICAg
ICAgICAgRGF0YWJhc2VTZXQqIGRhdGFiYXNlU2V0ID0gZGJOYW1lTWFwSXQtPnZhbHVlOwogICAg
ICAgICAgICAgRGF0YWJhc2VTZXQ6OmNvbnN0X2l0ZXJhdG9yIGRiU2V0RW5kSXQgPSBkYXRhYmFz
ZVNldC0+ZW5kKCk7CiAgICAgICAgICAgICBmb3IgKERhdGFiYXNlU2V0Ojpjb25zdF9pdGVyYXRv
ciBkYlNldEl0ID0gZGF0YWJhc2VTZXQtPmJlZ2luKCk7IGRiU2V0SXQgIT0gZGJTZXRFbmRJdDsg
KytkYlNldEl0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCgqZGJTZXRJdCktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSA9PSBjb250ZXh0KQorICAgICAgICAgICAgICAgIGlmICgoKmRiU2V0SXQp
LT5kYXRhYmFzZUNvbnRleHQoKSA9PSBjb250ZXh0KQogICAgICAgICAgICAgICAgICAgICBvcGVu
RGF0YWJhc2VzLmFwcGVuZCgqZGJTZXRJdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTM2MCwxMCArMzcyLDExIEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zKFZlY3RvcjxS
ZWYKIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZU5hbWVzRm9yT3JpZ2luTm9Mb2NrKFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4sIFZlY3RvcjxTdHJpbmc+JiByZXN1bHRWZWN0b3IpCiB7CiAg
ICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKLSAgICBvcGVuVHJhY2tlckRh
dGFiYXNlKGZhbHNlKTsKKyAgICBvcGVuVHJhY2tlckRhdGFiYXNlKGZhbHNlKTsgLy8gRG9uJ3Qg
Y3JlYXRlIG9uZSBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QuCiAgICAgaWYgKCFtX2RhdGFi
YXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICAvLyBTZXR1cCBhbiBT
UUwgcXVlcnkgdG8gZmV0Y2ggdGhlIGRhdGFiYXNlcyBmb3IgdGhlIHNwZWNpZmllZCBvcmlnaW46
CiAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIG5hbWUg
RlJPTSBEYXRhYmFzZXMgd2hlcmUgb3JpZ2luPT87Iik7CiAKICAgICBpZiAoc3RhdGVtZW50LnBy
ZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykKQEAgLTM3MSw2ICszODQsNyBAQCBib29sIERhdGFiYXNl
VHJhY2tlcjo6ZGF0YWJhc2VOYW1lc0Zvck9yCiAKICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwg
b3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAKKyAgICAvLyBFeGVjdXRlIHRoZSBxdWVy
eSBhbmQgZmV0Y2ggZWFjaCByZWxldmFudCBkYiBpbnRvIHRoZSByZXN1bHQ6CiAgICAgaW50IHJl
c3VsdDsKICAgICB3aGlsZSAoKHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCkpID09IFNRTFJlc3Vs
dFJvdykKICAgICAgICAgcmVzdWx0VmVjdG9yLmFwcGVuZChzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4
dCgwKSk7CkBAIC02MTcsNyArNjMxLDkgQEAgdW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlVHJh
Y2tlcjo6dXNhZwogICAgICAgICBvcmlnaW5RdW90YU1hbmFnZXIoKS5hZGREYXRhYmFzZShvcmln
aW4sIG5hbWVzW2ldLCBmdWxsUGF0aEZvckRhdGFiYXNlTm9Mb2NrKG9yaWdpbiwgbmFtZXNbaV0s
IGZhbHNlKSk7CiAKICAgICBpZiAoIW9yaWdpblF1b3RhTWFuYWdlcigpLnRyYWNrc09yaWdpbihv
cmlnaW4pKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIDA7IC8vIFN0aWxsIG5v
IGRiJ3MgZm9yIHRoaXMgb3JpZ2luLiBIZW5jZSwgdG90YWwgdXNhZ2UgaXMgMC4KKworICAgIC8v
IENvbXB1dGUgdGhlIHRvdGFsIGRpc2sgdXNhZ2Ugb2YgYWxsIGRiJ3MgZnJvbSB0aGUgc3BlY2lm
aWVkIG9yaWdpbjoKICAgICByZXR1cm4gb3JpZ2luUXVvdGFNYW5hZ2VyKCkuZGlza1VzYWdlKG9y
aWdpbik7CiB9CiAKQEAgLTgxOSwxMSArODM1LDExIEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpk
ZWxldGVPcmlnaW4oU2VjdXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBEYXRhYmFzZVRy
YWNrZXI6OmNhbkNyZWF0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sIGNvbnN0IFN0
cmluZyYgbmFtZSkKK2Jvb2wgRGF0YWJhc2VUcmFja2VyOjppc0RlbGV0aW5nRGF0YWJhc2VPck9y
aWdpbkZvcihTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAg
ICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKICAgICAvLyBDYW4ndCBjcmVh
dGUgYSBkYXRhYmFzZSB3aGlsZSBzb21lb25lIGVsc2UgaXMgZGVsZXRpbmcgaXQ7IHRoZXJlJ3Mg
YSByaXNrIG9mIGxlYXZpbmcgdW50cmFja2VkIGRhdGFiYXNlIGRlYnJpcyBvbiB0aGUgZGlzay4K
LSAgICByZXR1cm4gIWRlbGV0aW5nRGF0YWJhc2Uob3JpZ2luLCBuYW1lKSAmJiAhZGVsZXRpbmdP
cmlnaW4ob3JpZ2luKTsKKyAgICByZXR1cm4gaXNEZWxldGluZ0RhdGFiYXNlKG9yaWdpbiwgbmFt
ZSkgfHwgaXNEZWxldGluZ09yaWdpbihvcmlnaW4pOwogfQogCiB2b2lkIERhdGFiYXNlVHJhY2tl
cjo6cmVjb3JkQ3JlYXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBT
dHJpbmcmIG5hbWUpCkBAIC04NjgsNyArODg0LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNy
ZWF0aW5nRGF0YWJhc2UoUwogYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNhbkRlbGV0ZURhdGFiYXNl
KFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NF
UlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOwotICAgIHJldHVybiAhY3JlYXRpbmdEYXRh
YmFzZShvcmlnaW4sIG5hbWUpICYmICFkZWxldGluZ0RhdGFiYXNlKG9yaWdpbiwgbmFtZSk7Cisg
ICAgcmV0dXJuICFjcmVhdGluZ0RhdGFiYXNlKG9yaWdpbiwgbmFtZSkgJiYgIWlzRGVsZXRpbmdE
YXRhYmFzZShvcmlnaW4sIG5hbWUpOwogfQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVjb3Jk
RGVsZXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5h
bWUpCkBAIC05MDAsNyArOTE2LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRvbmVEZWxldGlu
Z0RhdGFiYQogICAgIH0KIH0KIAotYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0aW5nRGF0YWJh
c2UoU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQorYm9vbCBEYXRh
YmFzZVRyYWNrZXI6OmlzRGVsZXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBj
b25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9j
aygpKTsKICAgICBOYW1lU2V0KiBuYW1lU2V0ID0gbV9iZWluZ0RlbGV0ZWQuZ2V0KG9yaWdpbik7
CkBAIC05MTAsMTAgKzkyNiwxMCBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRpbmdEYXRh
YmFzZShTCiBib29sIERhdGFiYXNlVHJhY2tlcjo6Y2FuRGVsZXRlT3JpZ2luKFNlY3VyaXR5T3Jp
Z2luICpvcmlnaW4pCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsK
LSAgICByZXR1cm4gIShkZWxldGluZ09yaWdpbihvcmlnaW4pIHx8IG1fYmVpbmdDcmVhdGVkLmdl
dChvcmlnaW4pKTsKKyAgICByZXR1cm4gIShpc0RlbGV0aW5nT3JpZ2luKG9yaWdpbikgfHwgbV9i
ZWluZ0NyZWF0ZWQuZ2V0KG9yaWdpbikpOwogfQogCi1ib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVs
ZXRpbmdPcmlnaW4oU2VjdXJpdHlPcmlnaW4gKm9yaWdpbikKK2Jvb2wgRGF0YWJhc2VUcmFja2Vy
Ojppc0RlbGV0aW5nT3JpZ2luKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pCiB7CiAgICAgQVNTRVJU
KCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKICAgICByZXR1cm4gbV9vcmlnaW5zQmVpbmdE
ZWxldGVkLmNvbnRhaW5zKG9yaWdpbik7CkBAIC05MjIsMTQgKzkzOCwxNCBAQCBib29sIERhdGFi
YXNlVHJhY2tlcjo6ZGVsZXRpbmdPcmlnaW4oU2VjCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVj
b3JkRGVsZXRpbmdPcmlnaW4oU2VjdXJpdHlPcmlnaW4gKm9yaWdpbikKIHsKICAgICBBU1NFUlQo
IW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOwotICAgIEFTU0VSVCghZGVsZXRpbmdPcmlnaW4o
b3JpZ2luKSk7CisgICAgQVNTRVJUKCFpc0RlbGV0aW5nT3JpZ2luKG9yaWdpbikpOwogICAgIG1f
b3JpZ2luc0JlaW5nRGVsZXRlZC5hZGQob3JpZ2luLT5pc29sYXRlZENvcHkoKSk7CiB9CiAKIHZv
aWQgRGF0YWJhc2VUcmFja2VyOjpkb25lRGVsZXRpbmdPcmlnaW4oU2VjdXJpdHlPcmlnaW4gKm9y
aWdpbikKIHsKICAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOwotICAgIEFT
U0VSVChkZWxldGluZ09yaWdpbihvcmlnaW4pKTsKKyAgICBBU1NFUlQoaXNEZWxldGluZ09yaWdp
bihvcmlnaW4pKTsKICAgICBtX29yaWdpbnNCZWluZ0RlbGV0ZWQucmVtb3ZlKG9yaWdpbik7CiB9
CiAKQEAgLTk5OSw3ICsxMDE1LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFi
YXNlRmlsZQogI2lmbmRlZiBOREVCVUcKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tE
YXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwotICAgICAgICBBU1NFUlQoZGVsZXRpbmdEYXRhYmFz
ZShvcmlnaW4sIG5hbWUpIHx8IGRlbGV0aW5nT3JpZ2luKG9yaWdpbikpOworICAgICAgICBBU1NF
UlQoaXNEZWxldGluZ0RhdGFiYXNlT3JPcmlnaW5Gb3Iob3JpZ2luLCBuYW1lKSk7CiAgICAgfQog
I2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUcmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRyYWNrZXIuaAkocmV2aXNpb24gMTQxNzEyKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNyArNDUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhYmFzZUJh
Y2tlbmQ7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgRGF0YWJhc2VCYWNr
ZW5kQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBzdHJ1Y3QgU2VjdXJpdHlPcmln
aW5IYXNoOwpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgLy8gbV9kYXRhYmFzZUd1YXJk
IGFuZCBtX29wZW5EYXRhYmFzZU1hcEd1YXJkIGN1cnJlbnRseSBkb24ndCBvdmVybGFwLgogICAg
IC8vIG5vdGlmaWNhdGlvbk11dGV4KCkgaXMgY3VycmVudGx5IGluZGVwZW5kZW50IG9mIHRoZSBv
dGhlciBsb2Nrcy4KIAotICAgIGJvb2wgY2FuRXN0YWJsaXNoRGF0YWJhc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKKyAgICBib29sIGNhbkVzdGFibGlzaERh
dGFiYXNlKERhdGFiYXNlQmFja2VuZENvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CiAgICAg
dm9pZCBzZXREYXRhYmFzZURldGFpbHMoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6
ZSk7CiAgICAgU3RyaW5nIGZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QgPSB0cnVlKTsKIApAQCAt
ODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGdldE1heFNpemVG
b3JEYXRhYmFzZShjb25zdCBEYXRhYmFzZUJhY2tlbmQqKTsKICAgICB2b2lkIGRhdGFiYXNlQ2hh
bmdlZChEYXRhYmFzZUJhY2tlbmQqKTsKIAotICAgIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2Vz
Rm9yQ29udGV4dChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgdm9pZCBpbnRl
cnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IERhdGFiYXNlQmFja2VuZENvbnRleHQq
KTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBEYXRhYmFzZVRyYWNrZXIoY29uc3QgU3RyaW5n
JiBkYXRhYmFzZVBhdGgpOwpAQCAtMTU3LDE4ICsxNTcsMTggQEAgcHJpdmF0ZToKICAgICB0eXBl
ZGVmIEhhc2hTZXQ8U3RyaW5nPiBOYW1lU2V0OwogICAgIEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiwgTmFtZVNldCosIFNlY3VyaXR5T3JpZ2luSGFzaD4gbV9iZWluZ0RlbGV0ZWQ7CiAg
ICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTZWN1cml0eU9yaWdpbkhhc2g+IG1f
b3JpZ2luc0JlaW5nRGVsZXRlZDsKLSAgICBib29sIGNhbkNyZWF0ZURhdGFiYXNlKFNlY3VyaXR5
T3JpZ2luICpvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgdm9pZCByZWNvcmRDcmVh
dGluZ0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSk7
Ci0gICAgdm9pZCBkb25lQ3JlYXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBj
b25zdCBTdHJpbmcmIG5hbWUpOwotICAgIGJvb2wgY3JlYXRpbmdEYXRhYmFzZShTZWN1cml0eU9y
aWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIGJvb2wgY2FuRGVsZXRlRGF0
YWJhc2UoU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICB2
b2lkIHJlY29yZERlbGV0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKLSAgICB2b2lkIGRvbmVEZWxldGluZ0RhdGFiYXNlKFNlY3VyaXR5T3Jp
Z2luICpvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgYm9vbCBkZWxldGluZ0RhdGFi
YXNlKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgYm9v
bCBjYW5EZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4gKm9yaWdpbik7Ci0gICAgYm9vbCBkZWxl
dGluZ09yaWdpbihTZWN1cml0eU9yaWdpbiAqb3JpZ2luKTsKLSAgICB2b2lkIHJlY29yZERlbGV0
aW5nT3JpZ2luKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pOwotICAgIHZvaWQgZG9uZURlbGV0aW5n
T3JpZ2luKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pOworICAgIGJvb2wgaXNEZWxldGluZ0RhdGFi
YXNlT3JPcmlnaW5Gb3IoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAg
IHZvaWQgcmVjb3JkQ3JlYXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CisgICAgdm9pZCBkb25lQ3JlYXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbios
IGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgYm9vbCBjcmVhdGluZ0RhdGFiYXNlKFNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBib29sIGNhbkRlbGV0ZURhdGFiYXNl
KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIHJlY29yZERl
bGV0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAg
IHZvaWQgZG9uZURlbGV0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcm
IG5hbWUpOworICAgIGJvb2wgaXNEZWxldGluZ0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKKyAgICBib29sIGNhbkRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdp
biopOworICAgIGJvb2wgaXNEZWxldGluZ09yaWdpbihTZWN1cml0eU9yaWdpbiopOworICAgIHZv
aWQgcmVjb3JkRGVsZXRpbmdPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2b2lkIGRvbmVE
ZWxldGluZ09yaWdpbihTZWN1cml0eU9yaWdpbiopOwogCiAgICAgc3RhdGljIHZvaWQgc2NoZWR1
bGVGb3JOb3RpZmljYXRpb24oKTsKICAgICBzdGF0aWMgdm9pZCBub3RpZnlEYXRhYmFzZXNDaGFu
Z2VkKHZvaWQqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
VHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAxNDE3MTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRl
ICJEYXRhYmFzZUF1dGhvcml6ZXIuaCIKLSNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKKyNp
bmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJl
YWQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNs
aWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAJKHJldmlzaW9uIDE0MTcxMikKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAog
I2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZC5oIgotI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5o
IgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFz
ZU1hbmFnZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlv
bkNsaWVudDo6ZGlkRXhlY3V0ZVN0YQogCiBib29sIFNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRF
eGNlZWRRdW90YShEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKQogewotICAgIEFTU0VSVChkYXRh
YmFzZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAg
QVNTRVJUKGRhdGFiYXNlLT5kYXRhYmFzZUNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRR
dW90YSA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnF1b3RhRm9yT3JpZ2luKGRhdGFiYXNl
LT5zZWN1cml0eU9yaWdpbigpKTsKICAgICBkYXRhYmFzZS0+ZGF0YWJhc2VDb250ZXh0KCktPmRh
dGFiYXNlRXhjZWVkZWRRdW90YShkYXRhYmFzZS0+c3RyaW5nSWRlbnRpZmllcigpLCBkYXRhYmFz
ZS0+ZGV0YWlscygpKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEgPSBEYXRhYmFz
ZU1hbmFnZXI6Om1hbmFnZXIoKS5xdW90YUZvck9yaWdpbihkYXRhYmFzZS0+c2VjdXJpdHlPcmln
aW4oKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uU3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvblN5bmMuY3BwCShyZXZpc2lvbiAxNDE3MTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uU3luYy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQog
CiAjaW5jbHVkZSAiRGF0YWJhc2VBdXRob3JpemVyLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VDb250
ZXh0LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIgogI2luY2x1ZGUgIkRh
dGFiYXNlU3luYy5oIgogI2luY2x1ZGUgIlNRTEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIlNRTFJl
c3VsdFNldC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJv
bWl1bS9EYXRhYmFzZVRyYWNrZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1bS9EYXRhYmFzZVRyYWNrZXJDaHJvbWl1
bS5jcHAJKHJldmlzaW9uIDE0MTcxMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvY2hyb21pdW0vRGF0YWJhc2VUcmFja2VyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw2ICszNCw3IEBACiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAogI2luY2x1ZGUg
IkRhdGFiYXNlQmFja2VuZC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIK
ICNpbmNsdWRlICJEYXRhYmFzZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiUXVvdGFUcmFja2VyLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtNTYsOCArNTcsOSBAQCBE
YXRhYmFzZVRyYWNrZXI6OkRhdGFiYXNlVHJhY2tlcihjb25zdCBTCiAgICAgU1FMaXRlRmlsZVN5
c3RlbTo6cmVnaXN0ZXJTUUxpdGVWRlMoKTsKIH0KIAotYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNh
bkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQorYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNhbkVz
dGFibGlzaERhdGFiYXNlKERhdGFiYXNlQmFja2VuZENvbnRleHQqIGRhdGFiYXNlQ29udGV4dCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBs
b25nIGVzdGltYXRlZFNpemUpCiB7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCA9IGRhdGFiYXNlQ29udGV4dC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwogICAgIHJldHVybiBEYXRhYmFzZU9ic2VydmVyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7
CiB9CiAKQEAgLTE0OCwyMiArMTUwLDI0IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVP
cGVuRGF0YWJhc2UKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghZGF0YWJhc2UtPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpCi0gICAgICAgIGRhdGFiYXNl
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKE5vdGlmeURhdGFiYXNlT2JzZXJ2
ZXJPbkNsb3NlVGFzazo6Y3JlYXRlKGRhdGFiYXNlKSk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGRhdGFiYXNlLT5kYXRhYmFzZUNvbnRleHQo
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpCisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnBvc3RUYXNrKE5vdGlmeURhdGFiYXNlT2JzZXJ2ZXJPbkNsb3NlVGFzazo6Y3JlYXRlKGRhdGFi
YXNlKSk7CiAgICAgZWxzZQogICAgICAgICBEYXRhYmFzZU9ic2VydmVyOjpkYXRhYmFzZUNsb3Nl
ZChkYXRhYmFzZSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpwcmVwYXJlVG9PcGVuRGF0
YWJhc2UoRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKIHsKLSAgICBBU1NFUlQoZGF0YWJhc2Ut
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VS
VChkYXRhYmFzZS0+ZGF0YWJhc2VDb250ZXh0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
aXNDb250ZXh0VGhyZWFkKCkpOwogICAgIERhdGFiYXNlT2JzZXJ2ZXI6OmRhdGFiYXNlT3BlbmVk
KGRhdGFiYXNlKTsKIH0KIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmZhaWxlZFRvT3BlbkRhdGFi
YXNlKERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UpCiB7Ci0gICAgaWYgKCFkYXRhYmFzZS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSkKLSAgICAgICAgZGF0YWJh
c2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soTm90aWZ5RGF0YWJhc2VPYnNl
cnZlck9uQ2xvc2VUYXNrOjpjcmVhdGUoZGF0YWJhc2UpKTsKKyAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gZGF0YWJhc2UtPmRhdGFiYXNlQ29udGV4
dCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSkKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+cG9zdFRhc2soTm90aWZ5RGF0YWJhc2VPYnNlcnZlck9uQ2xvc2VUYXNrOjpjcmVhdGUoZGF0
YWJhc2UpKTsKICAgICBlbHNlCiAgICAgICAgIERhdGFiYXNlT2JzZXJ2ZXI6OmRhdGFiYXNlQ2xv
c2VkKGRhdGFiYXNlKTsKIH0KQEAgLTE3OCw3ICsxODIsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcg
RGF0YWJhc2VUcmFja2VyOjpnZXRNCiAgICAgcmV0dXJuIGRhdGFiYXNlU2l6ZSArIHNwYWNlQXZh
aWxhYmxlOwogfQogCi12b2lkIERhdGFiYXNlVHJhY2tlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2Vz
Rm9yQ29udGV4dChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQordm9pZCBE
YXRhYmFzZVRyYWNrZXI6OmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgRGF0
YWJhc2VCYWNrZW5kQ29udGV4dCogY29udGV4dCkKIHsKICAgICBNdXRleExvY2tlciBvcGVuRGF0
YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOwogCkBAIC0xOTQsNyArMTk4LDcg
QEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmludGVycnVwdEFsbERhdGFiYQogICAgICAgICBEYXRh
YmFzZVNldCogZGF0YWJhc2VTZXQgPSBkYk5hbWVNYXBJdC0+dmFsdWU7CiAgICAgICAgIERhdGFi
YXNlU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBkYXRhYmFzZVNldC0+ZW5kKCk7CiAgICAgICAg
IGZvciAoRGF0YWJhc2VTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZGF0YWJhc2VTZXQtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYgKCgqaXQpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgPT0gY29udGV4dCkKKyAgICAgICAgICAgIGlmICgoKml0KS0+ZGF0YWJh
c2VDb250ZXh0KCkgPT0gY29udGV4dCkKICAgICAgICAgICAgICAgICAoKml0KS0+aW50ZXJydXB0
KCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNDIsNyArMjQ2LDcgQEAgdm9pZCBEYXRhYmFzZVRy
YWNrZXI6OmNsb3NlRGF0YWJhc2VzSW1tZQogICAgIC8vIHRoZSBkYXRhYmFzZSBpbiBvdXIgY29s
bGVjdGlvbiB3aGVuIG5vdCBvbiB0aGUgY29udGV4dCB0aHJlYWQgKHdoaWNoIGlzIGFsd2F5cyB0
aGUgY2FzZSBnaXZlbgogICAgIC8vIGN1cnJlbnQgdXNhZ2UpLgogICAgIGZvciAoRGF0YWJhc2VT
ZXQ6Oml0ZXJhdG9yIGl0ID0gZGF0YWJhc2VTZXQtPmJlZ2luKCk7IGl0ICE9IGRhdGFiYXNlU2V0
LT5lbmQoKTsgKytpdCkKLSAgICAgICAgKCppdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
cG9zdFRhc2soQ2xvc2VPbmVEYXRhYmFzZUltbWVkaWF0ZWx5VGFzazo6Y3JlYXRlKG9yaWdpbklk
ZW50aWZpZXIsIG5hbWUsICppdCkpOworICAgICAgICAoKml0KS0+ZGF0YWJhc2VDb250ZXh0KCkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soQ2xvc2VPbmVEYXRhYmFzZUltbWVk
aWF0ZWx5VGFzazo6Y3JlYXRlKG9yaWdpbklkZW50aWZpZXIsIG5hbWUsICppdCkpOwogfQogCiB2
b2lkIERhdGFiYXNlVHJhY2tlcjo6Y2xvc2VPbmVEYXRhYmFzZUltbWVkaWF0ZWx5KGNvbnN0IFN0
cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBEYXRhYmFzZUJhY2tl
bmQqIGRhdGFiYXNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9j
aHJvbWl1bS9TUUxUcmFuc2FjdGlvbkNsaWVudENocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVtL1NRTFRyYW5zYWN0aW9u
Q2xpZW50Q2hyb21pdW0uY3BwCShyZXZpc2lvbiAxNDE3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVtL1NRTFRyYW5zYWN0aW9uQ2xpZW50Q2hyb21pdW0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKIAogI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZC5oIgorI2luY2x1ZGUgIkRhdGFiYXNl
QmFja2VuZENvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZU9ic2VydmVyLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCkBAIC02Miw4ICs2Myw5IEBAIHByaXZhdGU6
CiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25DbGllbnQ6OmRpZENvbW1pdFdyaXRlVHJhbnNhY3Rpb24o
RGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKIHsKLSAgICBpZiAoIWRhdGFiYXNlLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKSB7Ci0gICAgICAgIGRhdGFiYXNl
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKE5vdGlmeURhdGFiYXNlQ2hhbmdl
ZFRhc2s6OmNyZWF0ZShkYXRhYmFzZSkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBkYXRhYmFzZS0+ZGF0YWJhc2VDb250ZXh0KCktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlz
Q29udGV4dFRocmVhZCgpKSB7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RU
YXNrKE5vdGlmeURhdGFiYXNlQ2hhbmdlZFRhc2s6OmNyZWF0ZShkYXRhYmFzZSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC04MCw3ICs4Miw3IEBAIGJvb2wgU1FMVHJhbnNhY3Rpb25D
bGllbnQ6OmRpZEV4Y2VlZFF1b3QKIHsKICAgICAvLyBDaHJvbWl1bSBkb2VzIG5vdCBhbGxvdyB1
c2VycyB0byBtYW51YWxseSBjaGFuZ2UgdGhlIHF1b3RhIGZvciBhbiBvcmlnaW4gKGZvciBub3cs
IGF0IGxlYXN0KS4KICAgICAvLyBEb24ndCBkbyBhbnl0aGluZy4KLSAgICBBU1NFUlQoZGF0YWJh
c2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFT
U0VSVChkYXRhYmFzZS0+ZGF0YWJhc2VDb250ZXh0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+aXNDb250ZXh0VGhyZWFkKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDE0
MTcxMikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTM1MCw2ICsyNTM1MCw0MiBAQAogCQkJCQk+CiAJCQkJPC9GaWxl
PgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxE
YXRhYmFzZUJhY2tlbmRBc3luYy5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2Vu
ZEFzeW5jLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9k
dWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFi
YXNlXERhdGFiYXNlQmFja2VuZFN5bmMuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJh
Y2tlbmRTeW5jLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFzZS5jcHAiCisJCQkJCT4K
KwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdl
YmRhdGFiYXNlXERhdGFiYXNlQmFzZS5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxl
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhc2lj
VHlwZXMuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VDYWxsYmFjay5oIgogCQkJCQk+CiAJ
CQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNDE3MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xODU2LDYgKzE4NTYs
MTAgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0
YWJhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRh
YmFzZVxEYXRhYmFzZUF1dGhvcml6ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmQuY3BwIiAvPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRBc3lu
Yy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNl
XERhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCIgLz4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYXNlLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0
YWJhc2VDb250ZXh0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNc
d2ViZGF0YWJhc2VcRGF0YWJhc2VNYW5hZ2VyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VTZXJ2ZXIuY3BwIiAvPgpAQCAtNjQw
OCw2ICs2NDEyLDExIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRh
dGFiYXNlXERhdGFiYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVz
XHdlYmRhdGFiYXNlXERhdGFiYXNlQXV0aG9yaXplci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmQuaCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5k
QXN5bmMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJh
c2VcRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRTeW5jLmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFzZS5oIiAv
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFz
ZUJhc2ljVHlwZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2Vi
ZGF0YWJhc2VcRGF0YWJhc2VDYWxsYmFjay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUNvbnRleHQuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VFcnJvci5oIiAvPgpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTQxNzEyKQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODM5LDYgKzE4MzksMTggQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2Vi
ZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kLmNwcCI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXNcd2Vi
ZGF0YWJhc2U8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kQXN5bmMuY3BwIj4KKyAg
ICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxl
PgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFz
ZUJhY2tlbmRDb250ZXh0LmNwcCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJhc2U8
L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1v
ZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAiPgorICAgICAgPEZpbHRl
cj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFzZS5jcHAi
PgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERh
dGFiYXNlQ29udGV4dC5jcHAiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9G
aWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC04NDYwLDYgKzg0NzIsMjEgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kLmgi
PgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERh
dGFiYXNlQmFja2VuZEFzeW5jLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNl
PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZENvbnRleHQuaCI+CisgICAgICA8Rmls
dGVyPk1vZHVsZXNcd2ViZGF0YWJhc2U8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5k
U3luYy5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgorICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRh
YmFzZVxEYXRhYmFzZUJhc2UuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJhc2U8
L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1v
ZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYXNpY1R5cGVzLmgiPgorICAgICAgPEZpbHRlcj5N
b2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQ2FsbGJhY2suaCI+
CiAgICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJhc2U8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDE0MTcxMikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjcyOSwxMSArNjcy
OSwyMyBAQAogCQlGREY2QkFGOTEzNEE0Qzk4MDA4MjI5MjAgLyogSlNPZmZsaW5lQXVkaW9Db21w
bGV0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZERjZCQUY3MTM0QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25F
dmVudC5oICovOyB9OwogCQlGREY3RTlDMzEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZl
ckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZERjdFOUMxMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3Bw
ICovOyB9OwogCQlGREY3RTlDNDEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxi
YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREY3
RTlDMjEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmggKi87IH07Ci0J
CUZFMDlEQjQ5MTY5RTJENkUwMDYyMjU1NyAvKiBEYXRhYmFzZUVycm9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA5REI0NjE2OUUyRDZFMDA2MjI1
NTcgLyogRGF0YWJhc2VFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUZFMTE1RkFCMTY3OTg4Q0QwMDI0OTEzNCAvKiBBYnN0cmFjdERhdGFi
YXNlU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTExNUZBOTE2Nzk4OENEMDAyNDkxMzQgLyogQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFMTZDRkQz
MTY5RDFERUQwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE2Q0ZDRjE2OUQxREVDMDBEM0Ew
QzcgLyogRGF0YWJhc2VCYWNrZW5kQXN5bmMuY3BwICovOyB9OworCQlGRTE2Q0ZENDE2OUQxREVE
MDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kQXN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTZDRkQwMTY5RDFERUMwMEQzQTBDNyAvKiBEYXRh
YmFzZUJhY2tlbmRBc3luYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUZFNkY2QUFGMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tlbmRD
b250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFNkY2QUFEMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmNwcCAq
LzsgfTsKKwkJRkU2RjZBQjAxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFja2VuZENvbnRl
eHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNkY2
QUFFMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUxNkNGRDUxNjlEMURF
RDAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZFN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxNkNGRDExNjlEMURFQzAwRDNBMEM3IC8qIERh
dGFiYXNlQmFja2VuZFN5bmMuY3BwICovOyB9OworCQlGRTE2Q0ZENjE2OUQxREVEMDBEM0EwQzcg
LyogRGF0YWJhc2VCYWNrZW5kU3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkUxNkNGRDIxNjlEMURFQzAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2Vu
ZFN5bmMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlGRUJDNUYzMTE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQkM1RjJGMTZCRDBDQzMwMDY1
OUJEMyAvKiBEYXRhYmFzZUJhc2UuY3BwICovOyB9OworCQlGRUJDNUYzMjE2QkQwQ0MzMDA2NTlC
RDMgLyogRGF0YWJhc2VCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRUJDNUYzMDE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUzMzcxQTIx
NjdDMTFENDAwRURCNzUyIC8qIERhdGFiYXNlQmFzaWNUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMzcxQTAxNjdDMTFENDAwRURCNzUyIC8q
IERhdGFiYXNlQmFzaWNUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUZFMDlEQjQ5MTY5RTJENkUwMDYyMjU1NyAvKiBEYXRhYmFzZUVycm9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA5REI0
NjE2OUUyRDZFMDA2MjI1NTcgLyogRGF0YWJhc2VFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNDU2RjE4MTY3N0Q3NEUwMDVFRERGOSAv
KiBEYXRhYmFzZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU0NTZGMTYxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5j
cHAgKi87IH07CiAJCUZFNDU2RjE5MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE3
MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRUIyNkQyODE2N0E4RjJBMDBGREQyNkIg
LyogRGF0YWJhc2VTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkVCMjZEMjcxNjdBOEYyQTAwRkREMjZCIC8qIERhdGFiYXNlU2VydmVyLmNw
cCAqLzsgfTsKKwkJRkVBRjY2NTQxNjc5NzAzMjAwNjJEMEM1IC8qIERhdGFiYXNlU2VydmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUFGNjY1MzE2
Nzk3MDA3MDA2MkQwQzUgLyogRGF0YWJhc2VTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRURFRjg0MTE2Nzk3MTA4MDAwRTQ0NEEgLyog
RGF0YWJhc2VTdHJhdGVneS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRURFRjgzRjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5j
cHAgKi87IH07CisJCUZFREVGODQyMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURFRjg0
MDE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNkZENDg4MEY2NzZFNTcwMDA5Mjg3
MyAvKiBDb29yZGluYXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkU2RkQ0ODUwRjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2RkQ0OEQwRjY3
NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0OEIwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29v
cmRpbmF0ZXMuY3BwICovOyB9OwogCQlGRTZGRDQ4RTBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29y
ZGluYXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU2RkQ0OEMwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuaCAqLzsgfTsKQEAgLTY3
NDUsMTAgKzY3NTcsNiBAQAogCQlGRTgwREE2NjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3Np
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4
MERBNjIwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCAqLzsgfTsKIAkJRkU4MERB
NzEwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2RDBFOUM0NzJGMDAwRDZGNzUg
LyogSlNQb3NpdGlvbkVycm9yLmNwcCAqLzsgfTsKIAkJRkU4MERBNzIwRTlDNDcyRjAwMEQ2Rjc1
IC8qIEpTUG9zaXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5o
ICovOyB9OwotCQlGRUFGNjY1NDE2Nzk3MDMyMDA2MkQwQzUgLyogRGF0YWJhc2VTZXJ2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQUY2NjUzMTY3
OTcwMDcwMDYyRDBDNSAvKiBEYXRhYmFzZVNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUZFQjI2RDI4MTY3QThGMkEwMEZERDI2QiAvKiBE
YXRhYmFzZVNlcnZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRUIyNkQyNzE2N0E4RjJBMDBGREQyNkIgLyogRGF0YWJhc2VTZXJ2ZXIuY3BwICov
OyB9OwotCQlGRURFRjg0MTE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURFRjgzRjE2
Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5jcHAgKi87IH07Ci0JCUZFREVGODQy
MTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURFRjg0MDE2Nzk3MTA4MDAwRTQ0NEEgLyog
RGF0YWJhc2VTdHJhdGVneS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUZGOTQ1RUNCMTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGOTQ1RUM5
MTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmNwcCAqLzsgfTsKIAkJRkY5NDVFQ0Mx
NjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGOTQ1RUNBMTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1
ZG9FbGVtZW50LmggKi87IH07CiAJCUZGRDVCOTdBMTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlz
aWJpbGl0eVN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZGRDVCOTc3MTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmNw
cCAqLzsgfTsKQEAgLTE0NDAxLDkgKzE0NDA5LDIxIEBACiAJCUZERjdFOUMyMTNBQzIxREIwMEE1
MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFMDlEQjQ2MTY5RTJENkUwMDYyMjU1NyAvKiBEYXRhYmFzZUVycm9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlRXJyb3IuaDsgcGF0aCA9IE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRTExNUZBOTE2Nzk4OENEMDAyNDkxMzQgLyogQWJzdHJhY3REYXRhYmFzZVNlcnZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBYnN0cmFjdERhdGFiYXNlU2VydmVy
Lmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUxNkNGQ0YxNjlEMURFQzAwRDNBMEM3IC8q
IERhdGFiYXNlQmFja2VuZEFzeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERhdGFiYXNlQmFja2VuZEFzeW5jLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRTE2Q0ZEMDE2OUQxREVDMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kQXN5bmMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VCYWNrZW5kQXN5bmMuaDsgcGF0
aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU2RjZBQUQxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNl
QmFja2VuZENvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
RGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQmFja2VuZENvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
RTZGNkFBRTE2OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZUJhY2tlbmRDb250ZXh0Lmg7IHBh
dGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUxNkNGRDExNjlEMURFQzAwRDNBMEM3IC8qIERhdGFi
YXNlQmFja2VuZFN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
RGF0YWJhc2VCYWNrZW5kU3luYy5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQmFja2VuZFN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTE2Q0ZE
MjE2OUQxREVDMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kU3luYy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZUJhY2tlbmRTeW5jLmg7IHBhdGggPSBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZFN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkVCQzVGMkYxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZUJhc2UuY3BwOyBwYXRo
ID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGRUJDNUYzMDE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlQmFzZS5oOyBwYXRoID0g
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkUzMzcxQTAxNjdDMTFENDAwRURCNzUyIC8qIERhdGFiYXNlQmFzaWNUeXBlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZUJhc2ljVHlwZXMuaDsg
cGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNpY1R5cGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNDU2RjE2MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFz
ZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGF0YWJh
c2VNYW5hZ2VyLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0NTZGMTcxNjc3RDc0RTAwNUVE
REY5IC8qIERhdGFiYXNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBEYXRhYmFzZU1hbmFnZXIuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQjI2RDI3MTY3QThGMkEw
MEZERDI2QiAvKiBEYXRhYmFzZVNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBEYXRhYmFzZVNlcnZlci5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlU2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVBRjY2
NTMxNjc5NzAwNzAwNjJEMEM1IC8qIERhdGFiYXNlU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlU2VydmVyLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFREVG
ODNGMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlU3RyYXRlZ3kuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRURFRjg0MDE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VT
dHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZVN0cmF0
ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNkZENDg1MEY2NzZFNTcwMDA5
Mjg3MyAvKiBDb29yZGluYXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b29yZGluYXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTZGRDQ4NjBGNjc2
RTU3MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENv
b3JkaW5hdGVzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RkQ0OEIwRjY3
NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNDb29yZGluYXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNDQxNiwxMCArMTQ0MzYsNiBAQAogCQlGRTgwREE2MjBFOUM0NzAzMDAwRDZGNzUg
LyogSlNHZW9wb3NpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dl
b3Bvc2l0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODBEQTZEMEU5QzQ3
MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNQb3NpdGlvbkVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkVBRjY2NTMxNjc5NzAwNzAwNjJEMEM1IC8qIERhdGFi
YXNlU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlU2Vy
dmVyLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFQjI2RDI3MTY3QThGMkEwMEZERDI2QiAvKiBEYXRh
YmFzZVNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRh
YmFzZVNlcnZlci5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkVERUY4M0YxNjc5NzEwODAwMEU0
NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGF0YWJhc2VTdHJhdGVneS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUZFREVGODQwMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlU3RyYXRlZ3kuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkY5NDVFQzkxNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0Vs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHNldWRvRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGOTQ1RUNBMTYxRjdGMzYw
MDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBzZXVkb0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkZENUI5
NzcxMzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODUwNyw2ICsxODUyMywxNCBAQAogCQkJCTk3QkM2
OUUyMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUF1dGhvcml6ZXIuaCAqLywKIAkJCQk5N0JD
NjlENjE1MDVGMDc2MDAxQjc0QUMgLyogRGF0YWJhc2VCYWNrZW5kLmNwcCAqLywKIAkJCQk5N0JD
NjlENzE1MDVGMDc2MDAxQjc0QUMgLyogRGF0YWJhc2VCYWNrZW5kLmggKi8sCisJCQkJRkUxNkNG
Q0YxNjlEMURFQzAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZEFzeW5jLmNwcCAqLywKKwkJCQlG
RTE2Q0ZEMDE2OUQxREVDMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kQXN5bmMuaCAqLywKKwkJ
CQlGRTZGNkFBRDE2OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAg
Ki8sCisJCQkJRkU2RjZBQUUxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFja2VuZENvbnRl
eHQuaCAqLywKKwkJCQlGRTE2Q0ZEMTE2OUQxREVDMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5k
U3luYy5jcHAgKi8sCisJCQkJRkUxNkNGRDIxNjlEMURFQzAwRDNBMEM3IC8qIERhdGFiYXNlQmFj
a2VuZFN5bmMuaCAqLywKKwkJCQlGRUJDNUYyRjE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJhc2VC
YXNlLmNwcCAqLywKKwkJCQlGRUJDNUYzMDE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNl
LmggKi8sCiAJCQkJRkUzMzcxQTAxNjdDMTFENDAwRURCNzUyIC8qIERhdGFiYXNlQmFzaWNUeXBl
cy5oICovLAogCQkJCTk3QkM2OUUzMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNhbGxiYWNr
LmggKi8sCiAJCQkJOTdCQzY5RTQxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ2FsbGJhY2su
aWRsICovLApAQCAtMjMyOTUsNiArMjMzMTksMTAgQEAKIAkJCQk5N0JDNkEyMTE1MDVGMDgxMDAx
Qjc0QUMgLyogRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTI0MTUwNUYwODEw
MDFCNzRBQyAvKiBEYXRhYmFzZUF1dGhvcml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2
OURCMTUwNUYwNzYwMDFCNzRBQyAvKiBEYXRhYmFzZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAor
CQkJCUZFMTZDRkQ0MTY5RDFERUQwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRBc3luYy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRkU2RjZBQjAxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFj
a2VuZENvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMTZDRkQ2MTY5RDFERUQwMEQzQTBD
NyAvKiBEYXRhYmFzZUJhY2tlbmRTeW5jLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUJDNUYzMjE2
QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTMz
NzFBMjE2N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5N0JDNkEyNTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTdCQzZBMjgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjk0Miw2ICsyNjk3MCwxMCBAQAogCQkJCTk3QkM2
QTIwMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
N0JDNkEyMzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VBdXRob3JpemVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3QkM2OURBMTUwNUYwNzYwMDFCNzRBQyAvKiBEYXRhYmFzZUJhY2tlbmQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUxNkNGRDMxNjlEMURFRDAwRDNBMEM3IC8qIERhdGFi
YXNlQmFja2VuZEFzeW5jLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFNkY2QUFGMTY5RTA1NzUw
MEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUZFMTZDRkQ1MTY5RDFERUQwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUZFQkM1RjMxMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzZBMjcxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFi
YXNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTQ1NkYxODE2NzdENzRFMDA1RURE
RjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFQjI2RDI4MTY3
QThGMkEwMEZERDI2QiAvKiBEYXRhYmFzZVNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDE3MTcpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisy
MDEzLTAyLTAzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRy
b2R1Y2VkIGJhY2stZW5kIGRhdGFiYXNlIGNsYXNzZXMgKyBhIGZldyBzbWFsbCBmaXhlcy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODc1OS4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9EYXRh
YmFzZU9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlT2JzZXJ2ZXI6OmRh
dGFiYXNlT3BlbmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlT2JzZXJ2ZXI6OmRhdGFi
YXNlTW9kaWZpZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VPYnNlcnZlcjo6ZGF0YWJh
c2VDbG9zZWQpOgorCiAyMDEzLTAyLTAyICBNaWNoYWVsIE5vcmRtYW4gIDxtaWNoYWVsbkBnb29n
bGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRmlsZVN5c3RlbSBtb2RzOiBDaGFuZ2VzIHRv
IHNuYXBzaG90IGZpbGUgY3JlYXRpb24gdG8gcmVkdWNlIGRlcGVuZGVuY2llcyBvbiBibG9icy4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RhdGFiYXNlT2JzZXJ2ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RhdGFiYXNlT2JzZXJ2ZXIu
Y3BwCShyZXZpc2lvbiAxNDE3MTIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRh
YmFzZU9ic2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1
ZGUgIkNyb3NzVGhyZWFkQ29waWVyLmgiCiAjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCiAj
aW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgogI2luY2x1ZGUgIldlYkNvbW1vbldvcmtlckNsaWVudC5oIgpAQCAtMTc5LDE5
ICsxODAsMTkgQEAgYm9vbCBEYXRhYmFzZU9ic2VydmVyOjpjYW5Fc3RhYmxpc2hEYXRhYgogCiB2
b2lkIERhdGFiYXNlT2JzZXJ2ZXI6OmRhdGFiYXNlT3BlbmVkKERhdGFiYXNlQmFja2VuZCogZGF0
YWJhc2UpCiB7Ci0gICAgQVNTRVJUKGRhdGFiYXNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoZGF0YWJhc2UtPmRhdGFiYXNlQ29udGV4
dCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKICAgICBX
ZWJEYXRhYmFzZTo6b2JzZXJ2ZXIoKS0+ZGF0YWJhc2VPcGVuZWQoV2ViRGF0YWJhc2UoZGF0YWJh
c2UpKTsKIH0KIAogdm9pZCBEYXRhYmFzZU9ic2VydmVyOjpkYXRhYmFzZU1vZGlmaWVkKERhdGFi
YXNlQmFja2VuZCogZGF0YWJhc2UpCiB7Ci0gICAgQVNTRVJUKGRhdGFiYXNlLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoZGF0YWJhc2Ut
PmRhdGFiYXNlQ29udGV4dCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRo
cmVhZCgpKTsKICAgICBXZWJEYXRhYmFzZTo6b2JzZXJ2ZXIoKS0+ZGF0YWJhc2VNb2RpZmllZChX
ZWJEYXRhYmFzZShkYXRhYmFzZSkpOwogfQogCiB2b2lkIERhdGFiYXNlT2JzZXJ2ZXI6OmRhdGFi
YXNlQ2xvc2VkKERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UpCiB7Ci0gICAgQVNTRVJUKGRhdGFi
YXNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBB
U1NFUlQoZGF0YWJhc2UtPmRhdGFiYXNlQ29udGV4dCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmlzQ29udGV4dFRocmVhZCgpKTsKICAgICBXZWJEYXRhYmFzZTo6b2JzZXJ2ZXIoKS0+ZGF0
YWJhc2VDbG9zZWQoV2ViRGF0YWJhc2UoZGF0YWJhc2UpKTsKIH0KIAo=
</data>
<flag name="review"
          id="205651"
          type_id="1"
          status="-"
          setter="beidson"
    />
    <flag name="commit-queue"
          id="205647"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186531</attachid>
            <date>2013-02-04 20:25:47 -0800</date>
            <delta_ts>2013-02-05 10:51:28 -0800</delta_ts>
            <desc>Addressed Brady&apos;s comments.</desc>
            <filename>bug-108759.patch</filename>
            <type>text/plain</type>
            <size>103875</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTgzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMSBAQAorMjAxMy0wMi0wNCAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlZCBiYWNrLWVuZCBk
YXRhYmFzZSBjbGFzc2VzICsgYSBmZXcgc21hbGwgZml4ZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3NTkuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gQWRkZWQgRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dCwgRGF0YWJhc2VCYWNrZW5kQXN5bmMsIGFuZCBEYXRhYmFzZUJhY2tlbmRTeW5jLgorICAg
ICAgICAgICBUaGVzZSBhcmUgYmFja2VuZHMgZm9yIERhdGFiYXNlQ29udGV4dCwgRGF0YWJhc2Us
IGFuZCBEYXRhYmFzZVN5bmMKKyAgICAgICAgICAgcmVzcGVjdGl2ZWx5LgorICAgICAgICAyLiBB
ZGRlZCBEYXRhYmFzZUJhc2UgdG8gaG9sZCBjb21tb24gY29kZSBiZXR3ZWVuIERhdGFiYXNlIGFu
ZCBEYXRhYmFzZVN5bmMuCisgICAgICAgIDMuIFJlbmFtZWQgYSBmZXcgZnVuY3Rpb25zLgorICAg
ICAgICA0LiBDbGVhbmVkIHVwIHVubmVlZGVkIGNvZGUgaW4gfkRhdGFiYXNlU3luYygpLgorICAg
ICAgICA1LiBBZGRlZCBzb21lIEZJWE1FcyBhcyByZW1pbmRlcnMgb3IgcGxhY2VzIHRvIGNsZWFu
IHVwIHdoZW4gd2UncmUgZG9uZQorICAgICAgICAgICByZWZhY3RvcmluZy4KKyAgICAgICAgNi4g
TW92ZWQgdGhlIGNhbGxpbmcgb2YgU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRocmVhZGlu
ZygpIGZyb20gdGhlIERhdGFiYXNlCisgICAgICAgICAgIGNvbnN0cnVjdG9yIHRvIERhdGFiYXNl
TWFuYWdlcjo6b3BlbkRhdGFiYXNlKCkuIFRoaXMganVzdCBtb3ZlcyB0aGUgY2FsbAorICAgICAg
ICAgICBlYXJsaWVyIGluIHRoZSBzYW1lIGNvZGUgcGF0aC4gU3lzdGVtIGluaXRpYWxpemF0aW9u
IHdvcmsgKGkuZS4gaW5pdGlhbGl6aW5nCisgICAgICAgICAgIHNjcmlwdCB0aHJlYWRpbmcgaW4g
dGhpcyBjYXNlKSBzaG91bGQgYmUgZG9uZSBieSB0aGUgbWFuYWdlciBpbnN0ZWFkIG9mIGJ5Cisg
ICAgICAgICAgIGVhY2ggRGF0YWJhc2UgaW5zdGFuY2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2
ZXIuaDoKKyAgICAgICAgKEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6
OkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpiYWNrZW5kKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmg6CisgICAgICAgIChEYXRhYmFzZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFzZUJhY2tlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kOjp+RGF0YWJhc2VCYWNrZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6aW5jcmVtZW50YWxWYWN1dW1JZk5lZWRlZCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuaDoKKyAgICAgICAg
KERhdGFiYXNlQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OmRh
dGFiYXNlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OnNldEZy
b250ZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFz
eW5jLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRBc3luYzo6
RGF0YWJhc2VCYWNrZW5kQXN5bmMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VCYWNrZW5kQXN5bmMuaDogQWRkZWQuCisgICAgICAgIChEYXRhYmFzZUJhY2tlbmRBc3lu
Yyk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRDb250ZXh0Ojpz
ZWN1cml0eU9yaWdpbik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJh
Y2tlbmRDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoRGF0YWJhc2VCYWNrZW5kQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRDb250ZXh0OjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2Vu
ZFN5bmMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZFN5bmM6
OkRhdGFiYXNlQmFja2VuZFN5bmMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VCYWNrZW5kU3luYy5oOiBBZGRlZC4KKyAgICAgICAgKERhdGFiYXNlQmFja2VuZFN5bmMp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhc2U6OkRhdGFiYXNlQmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZUJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VCYXNlOjpsb2dFcnJvck1lc3NhZ2UpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNlLmg6IEFkZGVkLgorICAgICAgICAoRGF0YWJh
c2VCYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OkRhdGFiYXNlQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OmJhY2tlbmQpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0Lmg6CisgICAgICAgIChEYXRhYmFz
ZUNvbnRleHQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6b3BlbkRhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6b3BlbkRhdGFiYXNlU3luYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Omhhc09wZW5EYXRhYmFzZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6Z2V0TWF4U2l6ZUZv
ckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bG9nRXJyb3JN
ZXNzYWdlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5o
OgorICAgICAgICAoRGF0YWJhc2VNYW5hZ2VyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlU2VydmVy
OjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlU2VydmVyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlU3luYzo6RGF0
YWJhc2VTeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlU3luYzo6fkRhdGFiYXNlU3lu
Yyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OmJhY2tlbmQpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmg6CisgICAgICAgIChEYXRhYmFzZVN5
bmMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmNhbkVzdGFibGlzaERhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6aGFzRW50cnlGb3JEYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmludGVycnVwdEFsbERhdGFi
YXNlc0ZvckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpwb3B1
bGF0ZU9yaWdpbnNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6
OmRhdGFiYXNlTmFtZXNGb3JPcmlnaW5Ob0xvY2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VUcmFja2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZVRyYWNrZXI6OnNldERhdGFiYXNlRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZVRyYWNrZXI6OnVzYWdlRm9yT3JpZ2luTm9Mb2NrKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlVHJhY2tlcjo6c2V0UXVvdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjphZGREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6
OmRlbGV0ZU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmlzRGVs
ZXRpbmdEYXRhYmFzZU9yT3JpZ2luRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6Y2FuRGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjppc0RlbGV0aW5nRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjpjYW5EZWxldGVPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2Vy
Ojppc0RlbGV0aW5nT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6
cmVjb3JkRGVsZXRpbmdPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2Vy
Ojpkb25lRGVsZXRpbmdPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2Vy
OjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRl
bGV0ZURhdGFiYXNlRmlsZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRyYWNrZXIuaDoKKyAgICAgICAgKERhdGFiYXNlVHJhY2tlcik6CisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxU
cmFuc2FjdGlvbkNsaWVudDo6ZGlkRXhjZWVkUXVvdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25TeW5jLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRh
dGFiYXNlL2Nocm9taXVtL0RhdGFiYXNlVHJhY2tlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpyZW1vdmVPcGVuRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpwcmVwYXJlVG9PcGVuRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpmYWlsZWRUb09wZW5EYXRhYmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpjbG9zZURhdGFiYXNl
c0ltbWVkaWF0ZWx5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVtL1NR
TFRyYW5zYWN0aW9uQ2xpZW50Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJh
bnNhY3Rpb25DbGllbnQ6OmRpZENvbW1pdFdyaXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMVHJhbnNhY3Rpb25DbGllbnQ6OmRpZEV4Y2VlZFF1b3RhKToKKyAgICAgICAgKiBU
YXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTMt
MDItMDQgIENocmlzIEhvcG1hbiAgPGNqaG9wbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBN
YWtlIG1vdmVDYXJldFRvd2FyZHNXaW5kb3dQb2ludCBub3Qgc25hcCB0byB0aGUgYmVnaW5uaW5n
L2VuZCB3aGVuIG1vdmVkIGFib3ZlL2JlbG93IGVkaXRhYmxlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMTQxODIwKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTk1MCw2ICs5NTAsMTAgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwog
ICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCiAgICAgTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUJhY2tlbmQuY3BwCisgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRB
c3luYy5jcHAKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQu
Y3BwCisgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmNwcAorICAg
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNlLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VNYW5hZ2VyLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0MTgyMCkKKysr
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIw
OTksNiArMjA5OSwxNCBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCBcCiAJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFzeW5jLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3lu
Yy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2Vu
ZENvbnRleHQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQmFja2VuZENvbnRleHQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUJhc2ljVHlwZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUNhbGxiYWNrLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlz
aW9uIDE0MTgyMCkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkK
QEAgLTE0NDUsNiArMTQ0NSwxMSBAQCBIRUFERVJTICs9IFwKICAgICBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQXV0aG9yaXplci5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmggXAorICAg
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuaCBcCisgICAgTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0LmggXAorICAgIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3luYy5oIFwKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlQmFzZS5oIFwKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzaWNU
eXBlcy5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ2FsbGJhY2suaCBcCiAg
ICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUVycm9yLmggXAogICAgIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmggXApAQCAtMzAzOSw2ICszMDQ0LDEwIEBAIHVzZT8o
UExVR0lOX0JBQ0tFTkRfWExJQikgewogZW5hYmxlPyhTUUxfREFUQUJBU0UpIHsKICAgICBTT1VS
Q0VTICs9IFwKICAgICAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9DaGFuZ2VWZXJzaW9uV3JhcHBl
ci5jcHAgXAorICAgICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFzeW5j
LmNwcCBcCisgICAgICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4
dC5jcHAgXAorICAgICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZFN5bmMu
Y3BwIFwKKyAgICAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuY3BwIFwKICAg
ICAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwIFwKICAgICAgICAg
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwIFwKICAgICAgICAgTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2
aXNpb24gMTQxODIwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDAzLDExICsxMDAzLDIxIEBACiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQmFja2VuZC5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlQmFja2VuZEFzeW5jLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQuaCcsCisgICAgICAgICAgICAnTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCcsCisgICAgICAgICAgICAn
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmgnLAorICAgICAgICAgICAg
J01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNlLmNwcCcsCisgICAgICAgICAgICAnTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2ljVHlwZXMuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUVycm9yLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VNYW5hZ2VyLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZU1hbmFnZXIuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVNlcnZlci5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VTZXJ2ZXIuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5
bmMuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJh
Y3REYXRhYmFzZVNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oCShyZXZpc2lvbiAxNDE4MjApCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRGF0YWJhc2VCYWNrZW5kOworY2xhc3MgRGF0YWJhc2VCYWNrZW5kQXN5bmM7
CitjbGFzcyBEYXRhYmFzZUJhY2tlbmRDb250ZXh0OworY2xhc3MgRGF0YWJhc2VCYWNrZW5kU3lu
YzsKIGNsYXNzIERhdGFiYXNlTWFuYWdlckNsaWVudDsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgQWJzdHJhY3REYXRhYmFzZVNl
cnZlciB7CkBAIC03Myw5ICs3NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VE
YXRhYmFzZXNJbW1lZGlhdGVseShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKENIUk9NSVVNKQogCi0gICAg
dmlydHVhbCB2b2lkIGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW50ZXJydXB0QWxsRGF0
YWJhc2VzRm9yQ29udGV4dChjb25zdCBEYXRhYmFzZUJhY2tlbmRDb250ZXh0KikgPSAwOwogCi0g
ICAgdmlydHVhbCBib29sIGNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2ln
bmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5Fc3RhYmxp
c2hEYXRhYmFzZShEYXRhYmFzZUJhY2tlbmRDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhYmFzZURldGFpbHMoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVk
IGxvbmcgZXN0aW1hdGVkU2l6ZSkgPSAwOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25n
IGdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBEYXRhYmFzZUJhY2tlbmQqKSA9IDA7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAko
cmV2aXNpb24gMTQxODIwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUg
IkNoYW5nZVZlcnNpb25XcmFwcGVyLmgiCiAjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCisj
aW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2Fs
bGJhY2suaCIKICNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFz
ZU1hbmFnZXIuaCIKQEAgLTQ5LDcgKzUwLDYgQEAKICNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgpAQCAtNjYsMTUgKzY2LDE3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGF0YWJhc2U6OkRhdGFiYXNlKFBhc3NSZWZQdHI8
RGF0YWJhc2VDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVu
c2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKLSAgICA6IERhdGFiYXNlQmFja2VuZChkYXRhYmFz
ZUNvbnRleHQsIG5hbWUsIGV4cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNp
emUsIEFzeW5jRGF0YWJhc2UpCitEYXRhYmFzZTo6RGF0YWJhc2UoUGFzc1JlZlB0cjxEYXRhYmFz
ZUJhY2tlbmRDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQsCisgICAgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQorICAgIDogRGF0YWJhc2VCYXNlKGRhdGFi
YXNlQ29udGV4dC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICwgRGF0YWJhc2VCYWNr
ZW5kQXN5bmMoZGF0YWJhc2VDb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlO
YW1lLCBlc3RpbWF0ZWRTaXplKQogICAgICwgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MoZmFsc2Up
CiAgICAgLCBtX2lzVHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQodHJ1ZSkKICAgICAsIG1fZGVsZXRl
ZChmYWxzZSkKIHsKICAgICBtX2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW4gPSBtX2NvbnRl
eHRUaHJlYWRTZWN1cml0eU9yaWdpbi0+aXNvbGF0ZWRDb3B5KCk7CisgICAgc2V0RnJvbnRlbmQo
dGhpcyk7CiAKLSAgICBTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAg
ICAgQVNTRVJUKG1fZGF0YWJhc2VDb250ZXh0LT5kYXRhYmFzZVRocmVhZCgpKTsKIH0KIApAQCAt
MTE0LDYgKzExNiwxMSBAQCBEYXRhYmFzZTo6fkRhdGFiYXNlKCkKICAgICB9CiB9CiAKK1Bhc3NS
ZWZQdHI8RGF0YWJhc2VCYWNrZW5kQXN5bmM+IERhdGFiYXNlOjpiYWNrZW5kKCkKK3sKKyAgICBy
ZXR1cm4gdGhpczsKK30KKwogU3RyaW5nIERhdGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QKIHsKICAg
ICBpZiAobV9kZWxldGVkKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuaAkocmV2aXNpb24gMTQxODIwKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw4
IEBACiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiRGF0YWJhc2VCYWNr
ZW5kLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQXN5bmMuaCIKKyNpbmNsdWRlICJEYXRh
YmFzZUJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZUJhc2ljVHlwZXMuaCIKICNpbmNsdWRlICJE
YXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC01MCw3ICs1MSw3IEBA
IGNsYXNzIFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazsKIGNsYXNzIFNRTFRyYW5zYWN0aW9u
V3JhcHBlcjsKIGNsYXNzIFZvaWRDYWxsYmFjazsKIAotY2xhc3MgRGF0YWJhc2UgOiBwdWJsaWMg
RGF0YWJhc2VCYWNrZW5kIHsKK2NsYXNzIERhdGFiYXNlIDogcHVibGljIERhdGFiYXNlQmFzZSwg
cHVibGljIERhdGFiYXNlQmFja2VuZEFzeW5jIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EYXRh
YmFzZSgpOwogCkBAIC04Nyw4ICs4OCwxMCBAQCBwcml2YXRlOgogICAgIGNsYXNzIERhdGFiYXNl
VHJhbnNhY3Rpb25UYXNrOwogICAgIGNsYXNzIERhdGFiYXNlVGFibGVOYW1lc1Rhc2s7CiAKLSAg
ICBEYXRhYmFzZShQYXNzUmVmUHRyPERhdGFiYXNlQ29udGV4dD4sIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sCi0gICAgICAgICAgICAgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKKyAgICBEYXRh
YmFzZShQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+LCBjb25zdCBTdHJpbmcmIG5h
bWUsCisgICAgICAgIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcm
IGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOworICAgIFBhc3NSZWZQ
dHI8RGF0YWJhc2VCYWNrZW5kQXN5bmM+IGJhY2tlbmQoKTsKKwogICAgIHZvaWQgcnVuVHJhbnNh
Y3Rpb24oUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxTUUxU
cmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+LAogICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1Jl
ZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxTUUxUcmFuc2Fj
dGlvbldyYXBwZXI+LCBib29sIHJlYWRPbmx5KTsKIApAQCAtMTEwLDYgKzExMyw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2RlbGV0ZWQ7CiAKICAgICBmcmllbmQgY2xhc3MgRGF0YWJhc2VNYW5h
Z2VyOworICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZUJhY2tlbmRBc3luYzsgLy8gRklYTUU6IHJl
bW92ZSB0aGlzIHdoZW4gdGhlIGJhY2tlbmQgaGFzIGJlZW4gc3BsaXQgb3V0LgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmNwcAkocmV2aXNpb24gMTQxODIwKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzIsNiArMzMsOCBAQAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKICNp
bmNsdWRlICJEYXRhYmFzZUF1dGhvcml6ZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRD
b250ZXh0LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VD
b250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGF0YWJh
c2VUcmFja2VyLmgiCkBAIC0zOSw4ICs0Miw2IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNTgsNyArNTksNyBAQAogLy8g
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQog
Ly8gVGhlIERhdGFiYXNlVHJhY2tlciBtYWludGFpbnMgYSBsaXN0IG9mIGRhdGFiYXNlcyB0aGF0
IGhhdmUgYmVlbgogLy8gIm9wZW5lZCIgc28gdGhhdCB0aGUgY2xpZW50IGNhbiBjYWxsIGludGVy
cnVwdCBvciBkZWxldGUgb24gZXZlcnkgZGF0YWJhc2UKLS8vIGFzc29jaWF0ZWQgd2l0aCBhIERh
dGFiYXNlQ29udGV4dC4KKy8vIGFzc29jaWF0ZWQgd2l0aCBhIERhdGFiYXNlQmFja2VuZENvbnRl
eHQuCiAvLwogLy8gV2Ugd2lsbCBvbmx5IGNhbGwgRGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0
YWJhc2UoKSB0byBhZGQgdGhlIGRhdGFiYXNlCiAvLyB0byB0aGUgdHJhY2tlciBhcyBvcGVuZWQg
d2hlbiB3ZSd2ZSBzdWNjZWVkZWQgaW4gb3BlbmluZyB0aGUgZGF0YWJhc2UsCkBAIC03Myw3ICs3
NCw3IEBACiAvLyBUaGUgb25seSBkYXRhYmFzZXMgaW5zdGFuY2VzIG5vdCB0cmFja2VkIGJ5IHRo
ZSB0cmFja2VyJ3Mgb3BlbiBkYXRhYmFzZQogLy8gbGlzdCBhcmUgdGhlIG9uZXMgdGhhdCBoYXZl
IG5vdCBiZWVuIGFkZGVkIHlldCwgb3IgdGhlIG9uZXMgdGhhdCB3ZQogLy8gYXR0ZW1wdGVkIGFu
IG9wZW4gb24gYnV0IGZhaWxlZCB0by4gU3VjaCBpbnN0YW5jZXMgb25seSBleGlzdCBpbiB0aGUK
LS8vIERhdGFiYXNlTWFuYWdlcidzIGZhY3RvcnkgbWV0aG9kcyBmb3IgY3JlYXRpbmcgRGF0YWJh
c2VCYWNrZW5kcy4KKy8vIERhdGFiYXNlU2VydmVyJ3MgZmFjdG9yeSBtZXRob2RzIGZvciBjcmVh
dGluZyBEYXRhYmFzZUJhY2tlbmRzLgogLy8KIC8vIFRoZSBmYWN0b3J5IG1ldGhvZHMgd2lsbCBl
aXRoZXIgY2FsbCBvcGVuQW5kVmVyaWZ5VmVyc2lvbigpIG9yCiAvLyBwZXJmb3JtT3BlbkFuZFZl
cmlmeSgpLiBUaGVzZSBtZXRob2RzIHdpbGwgYWRkIHRoZSBuZXdseSBpbnN0YW50aWF0ZWQKQEAg
LTIwNCwxMCArMjA1LDkgQEAgY29uc3QgY2hhciogRGF0YWJhc2VCYWNrZW5kOjpkYXRhYmFzZUlu
ZgogICAgIHJldHVybiBpbmZvVGFibGVOYW1lOwogfQogCi1EYXRhYmFzZUJhY2tlbmQ6OkRhdGFi
YXNlQmFja2VuZChQYXNzUmVmUHRyPERhdGFiYXNlQ29udGV4dD4gZGF0YWJhc2VDb250ZXh0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAorRGF0YWJh
c2VCYWNrZW5kOjpEYXRhYmFzZUJhY2tlbmQoUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250
ZXh0PiBkYXRhYmFzZUNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBl
eHBlY3RlZFZlcnNpb24sCiAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplLCBEYXRhYmFzZVR5cGUgZGF0YWJhc2VUeXBlKQogICAgIDogbV9k
YXRhYmFzZUNvbnRleHQoZGF0YWJhc2VDb250ZXh0KQotICAgICwgbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KG1fZGF0YWJhc2VDb250ZXh0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAg
LCBtX25hbWUobmFtZS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fZXhwZWN0ZWRWZXJzaW9uKGV4
cGVjdGVkVmVyc2lvbi5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fZGlzcGxheU5hbWUoZGlzcGxh
eU5hbWUuaXNvbGF0ZWRDb3B5KCkpCkBAIC0yMTcsOCArMjE3LDcgQEAgRGF0YWJhc2VCYWNrZW5k
OjpEYXRhYmFzZUJhY2tlbmQoUGFzc1JlZgogICAgICwgbV9uZXcoZmFsc2UpCiAgICAgLCBtX2lz
U3luY0RhdGFiYXNlKGRhdGFiYXNlVHlwZSA9PSBTeW5jRGF0YWJhc2UpCiB7Ci0gICAgQVNTRVJU
KG1fZGF0YWJhc2VDb250ZXh0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRo
cmVhZCgpKTsKLSAgICBtX2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbiA9IG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aXNvbGF0ZWRDb3B5KCk7CisgICAgbV9j
b250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4gPSBtX2RhdGFiYXNlQ29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKS0+aXNvbGF0ZWRDb3B5KCk7CiAKICAgICBtX2RhdGFiYXNlQXV0aG9yaXplciA9IERh
dGFiYXNlQXV0aG9yaXplcjo6Y3JlYXRlKGluZm9UYWJsZU5hbWUpOwogCkBAIC0yNDIsNyArMjQx
LDggQEAgRGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFzZUJhY2tlbmQoUGFzc1JlZgogCiBEYXRhYmFz
ZUJhY2tlbmQ6On5EYXRhYmFzZUJhY2tlbmQoKQogewotICAgIEFTU0VSVCghbV9vcGVuZWQpOwor
ICAgIGlmIChvcGVuZWQoKSkKKyAgICAgICAgY2xvc2VEYXRhYmFzZSgpOwogfQogCiB2b2lkIERh
dGFiYXNlQmFja2VuZDo6Y2xvc2VEYXRhYmFzZSgpCkBAIC00MjcsMTEgKzQyNyw2IEBAIGJvb2wg
RGF0YWJhc2VCYWNrZW5kOjpwZXJmb3JtT3BlbkFuZFZlcmkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogRGF0YWJhc2VCYWNrZW5kOjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LmdldCgpOwotfQotCiBTZWN1cml0eU9yaWdpbiogRGF0YWJhc2VCYWNrZW5kOjpzZWN1cml0eU9y
aWdpbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2lu
LmdldCgpOwpAQCAtNjAxLDcgKzU5Niw3IEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kOjppbmNyZW1l
bnRhbFZhY3V1bUkKICAgICAgICAgaW50IHJlc3VsdCA9IG1fc3FsaXRlRGF0YWJhc2UucnVuSW5j
cmVtZW50YWxWYWN1dW1Db21tYW5kKCk7CiAgICAgICAgIHJlcG9ydFZhY3V1bURhdGFiYXNlUmVz
dWx0KHJlc3VsdCk7CiAgICAgICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0T2spCi0gICAgICAg
ICAgICBsb2dFcnJvck1lc3NhZ2UoZm9ybWF0RXJyb3JNZXNzYWdlKCJlcnJvciB2YWN1dW1pbmcg
ZGF0YWJhc2UiLCByZXN1bHQsIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yTXNnKCkpKTsKKyAg
ICAgICAgICAgIG1fZnJvbnRlbmQtPmxvZ0Vycm9yTWVzc2FnZShmb3JtYXRFcnJvck1lc3NhZ2Uo
ImVycm9yIHZhY3V1bWluZyBkYXRhYmFzZSIsIHJlc3VsdCwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSkpOwogICAgIH0KIH0KIApAQCAtNjE2LDExICs2MTEsNiBAQCBib29sIERhdGFi
YXNlQmFja2VuZDo6aXNJbnRlcnJ1cHRlZCgpCiAgICAgcmV0dXJuIG1fc3FsaXRlRGF0YWJhc2Uu
aXNJbnRlcnJ1cHRlZCgpOwogfQogCi12b2lkIERhdGFiYXNlQmFja2VuZDo6bG9nRXJyb3JNZXNz
YWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmFkZENvbnNvbGVNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsIG1lc3NhZ2UpOwotfQotCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAvLyBUaGVzZSBhcmUg
dXNlZCB0byBnZW5lcmF0ZSBoaXN0b2dyYW1zIG9mIGVycm9ycyBzZWVuIHdpdGggd2Vic3FsLgog
Ly8gU2VlIGFib3V0Omhpc3RvZ3JhbXMgaW4gY2hyb21pdW0uCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmgJKHJldmlz
aW9uIDE0MTgyMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw4ICs0OCw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIERhdGFiYXNlQXV0aG9yaXplcjsKLWNsYXNzIERhdGFiYXNlQ29udGV4dDsKLWNs
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBEYXRhYmFzZUJhY2tlbmRDb250ZXh0
OworY2xhc3MgRGF0YWJhc2VCYXNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIERh
dGFiYXNlQmFja2VuZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhYmFzZUJhY2tl
bmQ+IHsKQEAgLTYxLDcgKzYyLDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNOZXcoKSBjb25zdCB7
IHJldHVybiBtX25ldzsgfQogICAgIGJvb2wgaXNTeW5jRGF0YWJhc2UoKSBjb25zdCB7IHJldHVy
biBtX2lzU3luY0RhdGFiYXNlOyB9CiAKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmlu
Z0lkZW50aWZpZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNwbGF5TmFtZSgpIGNv
bnN0OwpAQCAtODgsNyArODgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1hcmtBc0Rl
bGV0ZWRBbmRDbG9zZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbW1lZGlhdGVseSgp
ID0gMDsKIAotICAgIERhdGFiYXNlQ29udGV4dCogZGF0YWJhc2VDb250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhYmFzZUNvbnRleHQuZ2V0KCk7IH0KKyAgICBEYXRhYmFzZUJhY2tlbmRDb250
ZXh0KiBkYXRhYmFzZUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlQ29udGV4dC5n
ZXQoKTsgfQorICAgIHZvaWQgc2V0RnJvbnRlbmQoRGF0YWJhc2VCYXNlKiBmcm9udGVuZCkgeyBt
X2Zyb250ZW5kID0gZnJvbnRlbmQ7IH0KIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBD
aGFuZ2VWZXJzaW9uV3JhcHBlcjsKQEAgLTEwMiw3ICsxMDMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIFN5bmNEYXRhYmFzZQogICAgIH07CiAKLSAgICBEYXRhYmFzZUJhY2tlbmQoUGFzc1JlZlB0
cjxEYXRhYmFzZUNvbnRleHQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhw
ZWN0ZWRWZXJzaW9uLAorICAgIERhdGFiYXNlQmFja2VuZChQYXNzUmVmUHRyPERhdGFiYXNlQmFj
a2VuZENvbnRleHQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRW
ZXJzaW9uLAogICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25n
IGVzdGltYXRlZFNpemUsIERhdGFiYXNlVHlwZSk7CiAKICAgICB2b2lkIGNsb3NlRGF0YWJhc2Uo
KTsKQEAgLTExNyw4ICsxMTgsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRDYWNoZWRWZXJz
aW9uKGNvbnN0IFN0cmluZyYpOwogICAgIGJvb2wgZ2V0QWN0dWFsVmVyc2lvbkZvclRyYW5zYWN0
aW9uKFN0cmluZyYgdmVyc2lvbik7CiAKLSAgICB2b2lkIGxvZ0Vycm9yTWVzc2FnZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOwotCiAgICAgdm9pZCByZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQoaW50
IGVycm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSk7CiAg
ICAgdm9pZCByZXBvcnRDaGFuZ2VWZXJzaW9uUmVzdWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJT
cWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpOwogICAgIHZvaWQgcmVwb3J0U3RhcnRU
cmFuc2FjdGlvblJlc3VsdChpbnQgZXJyb3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQg
c3FsaXRlRXJyb3JDb2RlKTsKQEAgLTEyOSw4ICsxMjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpOwogCiAgICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBtX2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbjsKLSAgICBSZWZQdHI8
RGF0YWJhc2VDb250ZXh0PiBtX2RhdGFiYXNlQ29udGV4dDsgLy8gQXNzb2NpYXRlZCB3aXRoIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC4KLSAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIFJlZlB0cjxEYXRhYmFzZUJhY2tlbmRD
b250ZXh0PiBtX2RhdGFiYXNlQ29udGV4dDsgLy8gQXNzb2NpYXRlZCB3aXRoIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC4KIAogICAgIFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fZXhwZWN0
ZWRWZXJzaW9uOwpAQCAtMTQ4LDkgKzE0NiwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9uZXc7
CiAgICAgY29uc3QgYm9vbCBtX2lzU3luY0RhdGFiYXNlOwogCisgICAgRGF0YWJhc2VCYXNlKiBt
X2Zyb250ZW5kOwogICAgIFNRTGl0ZURhdGFiYXNlIG1fc3FsaXRlRGF0YWJhc2U7CiAKICAgICBS
ZWZQdHI8RGF0YWJhc2VBdXRob3JpemVyPiBtX2RhdGFiYXNlQXV0aG9yaXplcjsKKworICAgIGZy
aWVuZCBjbGFzcyBEYXRhYmFzZVNlcnZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5k
QXN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2Vu
ZEFzeW5jLmgiCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRGF0YWJh
c2VCYWNrZW5kQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RhdGFiYXNlQmFj
a2VuZEFzeW5jOjpEYXRhYmFzZUJhY2tlbmRBc3luYyhQYXNzUmVmUHRyPERhdGFiYXNlQmFja2Vu
ZENvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplKQorICAgIDogRGF0YWJhc2VCYWNrZW5kKGRhdGFiYXNlQ29udGV4
dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSwgQXN5
bmNEYXRhYmFzZSkKK3sKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5k
QXN5bmMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERhdGFiYXNlQmFja2VuZEFzeW5j
X2gKKyNkZWZpbmUgRGF0YWJhc2VCYWNrZW5kQXN5bmNfaAorCisjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKKworI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERhdGFiYXNlU2Vy
dmVyOworCisvLyBGSVhNRTogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBEYXRhYmFzZUJhY2tlbmRB
c3luYyBpcyBvbmx5IGEgcGxhY2UgaG9sZGVyCisvLyBmb3IgdGhlIHNwbGl0IG91dCBvZiB0aGUg
RGF0YWJhc2UgYmFja2VuZCB0byBiZSBkb25lIGxhdGVyLiBUaGlzCisvLyBwbGFjZSBob2xkZXIg
aXMgbmVlZGVkIHRvIGFsbG93IG90aGVyIGNvZGUgdGhhdCBuZWVkIHRvIHJlZmVyZW5jZSB0aGUK
Ky8vIERhdGFiYXNlQmFja2VuZEFzeW5jIHRvIGRvIHNvIGJlZm9yZSB0aGUgcHJvcGVyIGJhY2tl
bmQgc3BsaXQgaXMKKy8vIGF2YWlsYWJsZS4gVGhpcyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCB0
aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIGxhdGVyLgorCitjbGFzcyBEYXRhYmFzZUJhY2tlbmRB
c3luYyA6IHB1YmxpYyBEYXRhYmFzZUJhY2tlbmQgeworcHJvdGVjdGVkOgorICAgIERhdGFiYXNl
QmFja2VuZEFzeW5jKFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4sIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYg
ZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CisKKyAgICBmcmllbmQg
Y2xhc3MgRGF0YWJhc2VNYW5hZ2VyOyAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgb25jZSB3ZSBoYXZl
IGlzb2xhdGVkIHRoaXMgdG8gdGhlIGJhY2tlbmQuCisgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNl
U2VydmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFNRTF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIERhdGFiYXNlQmFja2VuZEFzeW5jX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZUJhY2tlbmRDb250ZXh0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2Vu
ZENvbnRleHQuaCIKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2VjdXJpdHlP
cmlnaW4qIERhdGFiYXNlQmFja2VuZENvbnRleHQ6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFC
QVNFKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJh
Y2tlbmRDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIERhdGFiYXNlQmFja2VuZENvbnRleHRfaAorI2RlZmlu
ZSBEYXRhYmFzZUJhY2tlbmRDb250ZXh0X2gKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisK
KyNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgU2VjdXJpdHlPcmlnaW47CisKKy8v
IEZJWE1FOiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIERhdGFiYXNlQmFja2VuZENvbnRleHQgaXMg
b25seSBhIHBsYWNlIGhvbGRlcgorLy8gZm9yIHRoZSBzcGxpdCBvdXQgb2YgdGhlIERhdGFiYXNl
Q29udGV4dCBiYWNrZW5kIHRvIGJlIGRvbmUgbGF0ZXIuIFRoaXMKKy8vIHBsYWNlIGhvbGRlciBp
cyBuZWVkZWQgdG8gYWxsb3cgb3RoZXIgY29kZSB0aGF0IG5lZWQgdG8gcmVmZXJlbmNlIHRoZQor
Ly8gRGF0YWJhc2VCYWNrZW5kQ29udGV4dCB0byBkbyBzbyBiZWZvcmUgdGhlIHByb3BlciBiYWNr
ZW5kIHNwbGl0IGlzCisvLyBhdmFpbGFibGUuIFRoaXMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGgg
dGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBsYXRlci4KKworY2xhc3MgRGF0YWJhc2VCYWNrZW5k
Q29udGV4dCA6IHB1YmxpYyBEYXRhYmFzZUNvbnRleHQgeworcHVibGljOgorICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KKyAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlP
cmlnaW4oKSBjb25zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBEYXRhYmFzZUJhY2tlbmRDb250ZXh0
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNr
ZW5kU3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2Vu
ZFN5bmMuaCIKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFz
ZUJhY2tlbmRDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGF0YWJhc2VCYWNr
ZW5kU3luYzo6RGF0YWJhc2VCYWNrZW5kU3luYyhQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENv
bnRleHQ+IGRhdGFiYXNlQ29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9u
ZyBlc3RpbWF0ZWRTaXplKQorICAgIDogRGF0YWJhc2VCYWNrZW5kKGRhdGFiYXNlQ29udGV4dCwg
bmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSwgU3luY0Rh
dGFiYXNlKQoreworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShTUUxfREFUQUJBU0UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQmFja2VuZFN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZFN5bmMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3luYy5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRGF0YWJhc2VCYWNrZW5kU3luY19oCisjZGVm
aW5lIERhdGFiYXNlQmFja2VuZFN5bmNfaAorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKwor
I2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERhdGFiYXNlU2VydmVyOworCisv
LyBGSVhNRTogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBEYXRhYmFzZUJhY2tlbmRTeW5jIGlzIG9u
bHkgYSBwbGFjZSBob2xkZXIKKy8vIGZvciB0aGUgc3BsaXQgb3V0IG9mIHRoZSBEYXRhYmFzZVN5
bmMgYmFja2VuZCB0byBiZSBkb25lIGxhdGVyLiBUaGlzCisvLyBwbGFjZSBob2xkZXIgaXMgbmVl
ZGVkIHRvIGFsbG93IG90aGVyIGNvZGUgdGhhdCBuZWVkIHRvIHJlZmVyZW5jZSB0aGUKKy8vIERh
dGFiYXNlQmFja2VuZFN5bmMgdG8gZG8gc28gYmVmb3JlIHRoZSBwcm9wZXIgYmFja2VuZCBzcGxp
dCBpcworLy8gYXZhaWxhYmxlLiBUaGlzIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIHRoZSBhY3R1
YWwgaW1wbGVtZW50YXRpb24gbGF0ZXIuCisKK2NsYXNzIERhdGFiYXNlQmFja2VuZFN5bmMgOiBw
dWJsaWMgRGF0YWJhc2VCYWNrZW5kIHsKK3Byb3RlY3RlZDoKKyAgICBEYXRhYmFzZUJhY2tlbmRT
eW5jKFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4sIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5h
bWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CisKKyAgICBmcmllbmQgY2xhc3MgRGF0
YWJhc2VNYW5hZ2VyOyAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgb25jZSB3ZSBoYXZlIGlzb2xhdGVk
IHRoaXMgdG8gdGhlIGJhY2tlbmQuCisgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlU2VydmVyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRB
QkFTRSkKKworI2VuZGlmIC8vIERhdGFiYXNlQmFja2VuZFN5bmNfaApJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNlLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VC
YXNlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRGF0YWJhc2VCYXNlLmgiCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGF0YWJhc2VCYXNlOjpEYXRhYmFzZUJhc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICA6IG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KQoreworICAgIEFTU0VS
VChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKK30KKworU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogRGF0YWJhc2VCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpOwor
fQorCit2b2lkIERhdGFiYXNlQmFzZTo6bG9nRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKK3sKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdl
KE90aGVyTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
QmFzZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZUJhc2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERhdGFiYXNlQmFz
ZV9oCisjZGVmaW5lIERhdGFiYXNlQmFzZV9oCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQor
CisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xhc3MgRGF0YWJhc2VCYXNlIHsKK3B1
YmxpYzoKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3Q7CisgICAgdm9pZCBsb2dFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KTsKKworcHJvdGVjdGVkOgorICAgIERhdGFiYXNlQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CisKKyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFNRTF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIERhdGFiYXNlQmFzZV9oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRl
eHQuY3BwCShyZXZpc2lvbiAxNDE4MjApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNs
dWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKICNp
bmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRhc2suaCIKICNp
bmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgpAQCAtMTA5LDcgKzExMCw3IEBAIERhdGFiYXNlQ29u
dGV4dDo6RGF0YWJhc2VDb250ZXh0KFNjcmlwdEUKIAogICAgIC8vIEZvciBkZWJ1ZyBhY2NvdW50
aW5nIG9ubHkuIFdlIG11c3QgZG8gdGhpcyBiZWZvcmUgd2UgcmVnaXN0ZXIgdGhlCiAgICAgLy8g
aW5zdGFuY2UuIFRoZSBhc3NlcnRpb25zIGFzc3VtZSB0aGlzLgotICAgIERhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpLmRpZENvbnN0cnVjdERhdGFiYXNlQ29udGV4dCgpOyAKKyAgICBEYXRhYmFz
ZU1hbmFnZXI6Om1hbmFnZXIoKS5kaWRDb25zdHJ1Y3REYXRhYmFzZUNvbnRleHQoKTsKIAogICAg
IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnJlZ2lzdGVyRGF0YWJhc2VDb250ZXh0KHRoaXMp
OwogfQpAQCAtMTUxLDYgKzE1MiwxMiBAQCB2b2lkIERhdGFiYXNlQ29udGV4dDo6c3RvcCgpCiAg
ICAgc3RvcERhdGFiYXNlcygpOwogfQogCitQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRl
eHQ+IERhdGFiYXNlQ29udGV4dDo6YmFja2VuZCgpCit7CisgICAgRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dCogYmFja2VuZCA9IHN0YXRpY19jYXN0PERhdGFiYXNlQmFja2VuZENvbnRleHQqPih0aGlz
KTsKKyAgICByZXR1cm4gYmFja2VuZDsKK30KKwogRGF0YWJhc2VUaHJlYWQqIERhdGFiYXNlQ29u
dGV4dDo6ZGF0YWJhc2VUaHJlYWQoKQogewogICAgIGlmICghbV9kYXRhYmFzZVRocmVhZCAmJiAh
bV9oYXNPcGVuRGF0YWJhc2VzKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmgJKHJldmlzaW9uIDE0MTgyMCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRGF0YWJhc2U7CitjbGFzcyBEYXRhYmFzZUJhY2tlbmRDb250ZXh0OwogY2xhc3MgRGF0YWJh
c2VUYXNrU3luY2hyb25pemVyOwogY2xhc3MgRGF0YWJhc2VUaHJlYWQ7CiBjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OwpAQCAtNTAsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogCi0gICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIHsgcmV0dXJu
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQorICAgIFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNr
ZW5kQ29udGV4dD4gYmFja2VuZCgpOwogICAgIERhdGFiYXNlVGhyZWFkKiBkYXRhYmFzZVRocmVh
ZCgpOwogCiAgICAgdm9pZCBzZXRIYXNPcGVuRGF0YWJhc2VzKCkgeyBtX2hhc09wZW5EYXRhYmFz
ZXMgPSB0cnVlOyB9CkBAIC03Miw2ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzUmVn
aXN0ZXJlZDsKICAgICBib29sIG1faGFzUmVxdWVzdGVkVGVybWluYXRpb247CiAKKyAgICBmcmll
bmQgY2xhc3MgRGF0YWJhc2VCYWNrZW5kQ29udGV4dDsKICAgICBmcmllbmQgY2xhc3MgRGF0YWJh
c2VNYW5hZ2VyOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTQxODIwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCwxMiArMzAsMTYgQEAKIAogI2luY2x1ZGUgIkRhdGFiYXNlLmgi
CiAjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5k
QXN5bmMuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCisjaW5jbHVkZSAi
RGF0YWJhc2VCYWNrZW5kU3luYy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKICNp
bmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVN5bmMuaCIKICNp
bmNsdWRlICJEYXRhYmFzZVRhc2suaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFzZUluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCiAKQEAgLTIwMSwyMyArMjA1LDI1IEBAIFBhc3NSZWZQdHI8RGF0
YWJhc2U+IERhdGFiYXNlTWFuYWdlcjo6b3AKICAgICB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNp
emUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywKICAgICBE
YXRhYmFzZUVycm9yJiBlcnJvcikKIHsKKyAgICBTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXpl
VGhyZWFkaW5nKCk7CiAgICAgUmVmUHRyPERhdGFiYXNlQ29udGV4dD4gZGF0YWJhc2VDb250ZXh0
ID0gZGF0YWJhc2VDb250ZXh0Rm9yKGNvbnRleHQpOworICAgIFJlZlB0cjxEYXRhYmFzZUJhY2tl
bmRDb250ZXh0PiBiYWNrZW5kQ29udGV4dCA9IGRhdGFiYXNlQ29udGV4dC0+YmFja2VuZCgpOwog
ICAgIEFTU0VSVChlcnJvciA9PSBEYXRhYmFzZUVycm9yOjpOb25lKTsKIAotICAgIGlmICghY2Fu
RXN0YWJsaXNoRGF0YWJhc2UoY29udGV4dCwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNp
emUpKSB7CisgICAgaWYgKCFtX3NlcnZlci0+Y2FuRXN0YWJsaXNoRGF0YWJhc2UoYmFja2VuZENv
bnRleHQuZ2V0KCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKSkgewogICAgICAg
ICBMT0coU3RvcmFnZUFQSSwgIkRhdGFiYXNlICVzIGZvciBvcmlnaW4gJXMgbm90IGFsbG93ZWQg
dG8gYmUgZXN0YWJsaXNoZWQiLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBjb250ZXh0LT5zZWN1cml0
eU9yaWdpbigpLT50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCi0gICAgUmVmUHRyPERhdGFiYXNlPiBkYXRhYmFzZSA9IGFkb3B0UmVmKG5ldyBE
YXRhYmFzZShkYXRhYmFzZUNvbnRleHQsIG5hbWUsIGV4cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5h
bWUsIGVzdGltYXRlZFNpemUpKTsKLQogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7CisgICAgUmVm
UHRyPERhdGFiYXNlPiBkYXRhYmFzZSA9IGFkb3B0UmVmKG5ldyBEYXRhYmFzZShiYWNrZW5kQ29u
dGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkp
OworCiAgICAgaWYgKCFkYXRhYmFzZS0+b3BlbkFuZFZlcmlmeVZlcnNpb24oIWNyZWF0aW9uQ2Fs
bGJhY2ssIGVycm9yLCBlcnJvck1lc3NhZ2UpKSB7Ci0gICAgICAgIGRhdGFiYXNlLT5sb2dFcnJv
ck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgbG9nRXJyb3JNZXNzYWdlKGNvbnRleHQs
IGVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHNldERhdGFi
YXNlRGV0YWlscyhjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBuYW1lLCBkaXNwbGF5TmFtZSwg
ZXN0aW1hdGVkU2l6ZSk7CisgICAgbV9zZXJ2ZXItPnNldERhdGFiYXNlRGV0YWlscyhjb250ZXh0
LT5zZWN1cml0eU9yaWdpbigpLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CiAg
ICAgZGF0YWJhc2VDb250ZXh0LT5zZXRIYXNPcGVuRGF0YWJhc2VzKCk7CiAKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZShjb250ZXh0LCBkYXRhYmFzZSwgY29u
dGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aG9zdCgpLCBuYW1lLCBleHBlY3RlZFZlcnNpb24pOwpA
QCAtMjM1LDIzICsyNDEsMjQgQEAgUGFzc1JlZlB0cjxEYXRhYmFzZVN5bmM+IERhdGFiYXNlTWFu
YWdlcgogICAgIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFzc1JlZlB0cjxEYXRhYmFz
ZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrLCBEYXRhYmFzZUVycm9yJiBlcnJvcikKIHsKICAg
ICBSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQgPSBkYXRhYmFzZUNvbnRl
eHRGb3IoY29udGV4dCk7CisgICAgUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGJhY2tl
bmRDb250ZXh0ID0gZGF0YWJhc2VDb250ZXh0LT5iYWNrZW5kKCk7CiAgICAgQVNTRVJUKGNvbnRl
eHQtPmlzQ29udGV4dFRocmVhZCgpKTsKICAgICBBU1NFUlQoZXJyb3IgPT0gRGF0YWJhc2VFcnJv
cjo6Tm9uZSk7CiAKLSAgICBpZiAoIWNhbkVzdGFibGlzaERhdGFiYXNlKGNvbnRleHQsIG5hbWUs
IGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKSkgeworICAgIGlmICghbV9zZXJ2ZXItPmNhbkVz
dGFibGlzaERhdGFiYXNlKGJhY2tlbmRDb250ZXh0LmdldCgpLCBuYW1lLCBkaXNwbGF5TmFtZSwg
ZXN0aW1hdGVkU2l6ZSkpIHsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJEYXRhYmFzZSAlcyBm
b3Igb3JpZ2luICVzIG5vdCBhbGxvd2VkIHRvIGJlIGVzdGFibGlzaGVkIiwgbmFtZS5hc2NpaSgp
LmRhdGEoKSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKS5hc2NpaSgpLmRh
dGEoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0cjxEYXRhYmFzZVN5
bmM+IGRhdGFiYXNlID0gYWRvcHRSZWYobmV3IERhdGFiYXNlU3luYyhkYXRhYmFzZUNvbnRleHQs
IG5hbWUsIGV4cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKTsKLQog
ICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7CisgICAgUmVmUHRyPERhdGFiYXNlU3luYz4gZGF0YWJh
c2UgPSBhZG9wdFJlZihuZXcgRGF0YWJhc2VTeW5jKGJhY2tlbmRDb250ZXh0LCBuYW1lLCBleHBl
Y3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKSk7CisKICAgICBpZiAoIWRh
dGFiYXNlLT5vcGVuQW5kVmVyaWZ5VmVyc2lvbighY3JlYXRpb25DYWxsYmFjaywgZXJyb3IsIGVy
cm9yTWVzc2FnZSkpIHsKLSAgICAgICAgZGF0YWJhc2UtPmxvZ0Vycm9yTWVzc2FnZShlcnJvck1l
c3NhZ2UpOworICAgICAgICBsb2dFcnJvck1lc3NhZ2UoY29udGV4dCwgZXJyb3JNZXNzYWdlKTsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgc2V0RGF0YWJhc2VEZXRhaWxzKGNvbnRl
eHQtPnNlY3VyaXR5T3JpZ2luKCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsK
KyAgICBtX3NlcnZlci0+c2V0RGF0YWJhc2VEZXRhaWxzKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2lu
KCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKIAogICAgIGlmIChkYXRhYmFz
ZS0+aXNOZXcoKSAmJiBjcmVhdGlvbkNhbGxiYWNrLmdldCgpKSB7CiAgICAgICAgIExPRyhTdG9y
YWdlQVBJLCAiSW52b2tpbmcgdGhlIGNyZWF0aW9uIGNhbGxiYWNrIGZvciBkYXRhYmFzZSAlcFxu
IiwgZGF0YWJhc2UuZ2V0KCkpOwpAQCAtMjY2LDcgKzI3Myw3IEBAIGJvb2wgRGF0YWJhc2VNYW5h
Z2VyOjpoYXNPcGVuRGF0YWJhc2VzKFMKICAgICBSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBkYXRh
YmFzZUNvbnRleHQgPSBleGlzdGluZ0RhdGFiYXNlQ29udGV4dEZvcihjb250ZXh0KTsKICAgICBp
ZiAoIWRhdGFiYXNlQ29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBk
YXRhYmFzZUNvbnRleHQtPm1faGFzT3BlbkRhdGFiYXNlczsKKyAgICByZXR1cm4gZGF0YWJhc2VD
b250ZXh0LT5oYXNPcGVuRGF0YWJhc2VzKCk7CiB9CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpz
dG9wRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIERhdGFiYXNlVGFz
a1N5bmNocm9uaXplciogc3luY2hyb25pemVyKQpAQCAtMzU1LDIyICszNjIsMTcgQEAgdm9pZCBE
YXRhYmFzZU1hbmFnZXI6OmludGVycnVwdEFsbERhdGFiYQogewogICAgIFJlZlB0cjxEYXRhYmFz
ZUNvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCA9IGV4aXN0aW5nRGF0YWJhc2VDb250ZXh0Rm9yKGNv
bnRleHQpOwogICAgIGlmIChkYXRhYmFzZUNvbnRleHQpCi0gICAgICAgIG1fc2VydmVyLT5pbnRl
cnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnRleHQpOworICAgICAgICBtX3NlcnZlci0+
aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChkYXRhYmFzZUNvbnRleHQtPmJhY2tlbmQo
KS5nZXQoKSk7CiB9CiAKLWJvb2wgRGF0YWJhc2VNYW5hZ2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmFz
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKLXsK
LSAgICByZXR1cm4gbV9zZXJ2ZXItPmNhbkVzdGFibGlzaERhdGFiYXNlKGNvbnRleHQsIG5hbWUs
IGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKLX0KLQotdm9pZCBEYXRhYmFzZU1hbmFnZXI6
OnNldERhdGFiYXNlRGV0YWlscyhTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVk
U2l6ZSkKK3Vuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZU1hbmFnZXI6OmdldE1heFNpemVGb3JE
YXRhYmFzZShjb25zdCBEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKQogewotICAgIG1fc2VydmVy
LT5zZXREYXRhYmFzZURldGFpbHMob3JpZ2luLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVk
U2l6ZSk7CisgICAgcmV0dXJuIG1fc2VydmVyLT5nZXRNYXhTaXplRm9yRGF0YWJhc2UoZGF0YWJh
c2UpOwogfQogCi11bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VNYW5hZ2VyOjpnZXRNYXhTaXpl
Rm9yRGF0YWJhc2UoY29uc3QgRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKK3ZvaWQgRGF0YWJh
c2VNYW5hZ2VyOjpsb2dFcnJvck1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIHJldHVybiBtX3NlcnZlci0+Z2V0TWF4
U2l6ZUZvckRhdGFiYXNlKGRhdGFiYXNlKTsKKyAgICBjb250ZXh0LT5hZGRDb25zb2xlTWVzc2Fn
ZShPdGhlck1lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCShyZXZpc2lvbiAxNDE4MjApCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBYnN0cmFjdERhdGFi
YXNlU2VydmVyLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VCYXNpY1R5cGVzLmgiCisjaW5jbHVkZSAi
RGF0YWJhc2VEZXRhaWxzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTQwLDYgKzQx
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBYnN0cmFjdERhdGFiYXNlU2VydmVy
OwogY2xhc3MgRGF0YWJhc2U7CitjbGFzcyBEYXRhYmFzZUJhY2tlbmQ7CiBjbGFzcyBEYXRhYmFz
ZUNhbGxiYWNrOwogY2xhc3MgRGF0YWJhc2VDb250ZXh0OwogY2xhc3MgRGF0YWJhc2VNYW5hZ2Vy
Q2xpZW50OwpAQCAtMTEyLDkgKzExNCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW50ZXJydXB0
QWxsRGF0YWJhc2VzRm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKLSAgICBi
b29sIGNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0
aW1hdGVkU2l6ZSk7Ci0KLSAgICB2b2lkIHNldERhdGFiYXNlRGV0YWlscyhTZWN1cml0eU9yaWdp
biosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWdu
ZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZ2V0TWF4U2l6
ZUZvckRhdGFiYXNlKGNvbnN0IERhdGFiYXNlQmFja2VuZCopOwogCiBwcml2YXRlOgpAQCAtMTI1
LDYgKzEyNCw4IEBAIHByaXZhdGU6CiAgICAgLy8gaXQgYWxyZWFkeSBleGlzdCBwcmV2aW91c2x5
LiBPdGhlcndpc2UsIGl0IHJldHVybnMgMC4KICAgICBQYXNzUmVmUHRyPERhdGFiYXNlQ29udGV4
dD4gZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwog
CisgICAgc3RhdGljIHZvaWQgbG9nRXJyb3JNZXNzYWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworCiAgICAgQWJzdHJhY3REYXRhYmFzZVNlcnZlciog
bV9zZXJ2ZXI7CiAgICAgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBtX2NsaWVudDsKICAgICBib29s
IG1fZGF0YWJhc2VJc0F2YWlsYWJsZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwCShyZXZpc2lvbiAxNDE4MjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKIAorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZEFzeW5jLmgiCisjaW5jbHVkZSAiRGF0
YWJhc2VCYWNrZW5kQ29udGV4dC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZFN5bmMuaCIK
ICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0u
aD4KIApAQCAtMTQxLDE0ICsxNDQsMTQgQEAgdm9pZCBEYXRhYmFzZVNlcnZlcjo6Y2xvc2VEYXRh
YmFzZXNJbW1lZAogfQogI2VuZGlmIC8vIFBMQVRGT1JNKENIUk9NSVVNKQogCi12b2lkIERhdGFi
YXNlU2VydmVyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit2b2lkIERhdGFiYXNlU2VydmVyOjppbnRlcnJ1cHRB
bGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IERhdGFiYXNlQmFja2VuZENvbnRleHQqIGNvbnRl
eHQpCiB7CiAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuaW50ZXJydXB0QWxsRGF0YWJh
c2VzRm9yQ29udGV4dChjb250ZXh0KTsKIH0KIAotYm9vbCBEYXRhYmFzZVNlcnZlcjo6Y2FuRXN0
YWJsaXNoRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGlt
YXRlZFNpemUpCitib29sIERhdGFiYXNlU2VydmVyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZShEYXRh
YmFzZUJhY2tlbmRDb250ZXh0KiBiYWNrZW5kQ29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpCiB7
Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNhbkVzdGFibGlzaERhdGFi
YXNlKGNvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKKyAgICByZXR1
cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuY2FuRXN0YWJsaXNoRGF0YWJhc2UoYmFja2Vu
ZENvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKIH0KIAogdm9pZCBE
YXRhYmFzZVNlcnZlcjo6c2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaAkocmV2aXNpb24gMTQxODIwKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC02OCw5ICs2OCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VE
YXRhYmFzZXNJbW1lZGlhdGVseShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAjZW5kaWYgLy8gUExBVEZPUk0oQ0hST01JVU0pCiAKLSAgICB2aXJ0
dWFsIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Kik7CisgICAgdmlydHVhbCB2b2lkIGludGVycnVwdEFsbERhdGFiYXNlc0Zv
ckNvbnRleHQoY29uc3QgRGF0YWJhc2VCYWNrZW5kQ29udGV4dCopOwogCi0gICAgdmlydHVhbCBi
b29sIGNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0
aW1hdGVkU2l6ZSk7CisgICAgdmlydHVhbCBib29sIGNhbkVzdGFibGlzaERhdGFiYXNlKERhdGFi
YXNlQmFja2VuZENvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlz
cGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUp
OwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIGdldE1heFNpemVGb3JEYXRhYmFzZShj
b25zdCBEYXRhYmFzZUJhY2tlbmQqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAJKHJldmlzaW9uIDE0MTgyMCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOCBAQAogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
IAorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKKyNpbmNsdWRlICJEYXRhYmFz
ZUJhY2tlbmRTeW5jLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VDYWxsYmFjay5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgpAQCAtNDks
MTggKzUxLDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGF0YWJhc2VTeW5jOjpEYXRh
YmFzZVN5bmMoUGFzc1JlZlB0cjxEYXRhYmFzZUNvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxv
bmcgZXN0aW1hdGVkU2l6ZSkKLSAgICA6IERhdGFiYXNlQmFja2VuZChkYXRhYmFzZUNvbnRleHQs
IG5hbWUsIGV4cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIFN5bmNE
YXRhYmFzZSkKK0RhdGFiYXNlU3luYzo6RGF0YWJhc2VTeW5jKFBhc3NSZWZQdHI8RGF0YWJhc2VC
YWNrZW5kQ29udGV4dD4gZGF0YWJhc2VDb250ZXh0LAorICAgIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUs
IHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKKyAgICA6IERhdGFiYXNlQmFzZShkYXRhYmFz
ZUNvbnRleHQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAsIERhdGFiYXNlQmFja2Vu
ZFN5bmMoZGF0YWJhc2VDb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1l
LCBlc3RpbWF0ZWRTaXplKQogeworICAgIHNldEZyb250ZW5kKHRoaXMpOwogfQogCiBEYXRhYmFz
ZVN5bmM6On5EYXRhYmFzZVN5bmMoKQogewogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKK30KIAotICAgIGlmIChvcGVuZWQoKSkKLSAgICAg
ICAgY2xvc2VEYXRhYmFzZSgpOworUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRTeW5jPiBEYXRh
YmFzZVN5bmM6OmJhY2tlbmQoKQoreworICAgIHJldHVybiB0aGlzOwogfQogCiB2b2lkIERhdGFi
YXNlU3luYzo6Y2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbmcmIG9sZFZlcnNpb24sIGNvbnN0IFN0
cmluZyYgbmV3VmVyc2lvbiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4g
Y2hhbmdlVmVyc2lvbkNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuaAkocmV2aXNp
b24gMTQxODIwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsOCBAQAogCiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZC5oIgorI2luY2x1ZGUgIkRh
dGFiYXNlQmFja2VuZFN5bmMuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhc2UuaCIKICNpbmNsdWRl
ICJEYXRhYmFzZUJhc2ljVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNTAsNyArNTEsNyBAQCBjbGFzcyBTUUxUcmFu
c2FjdGlvblN5bmNDYWxsYmFjazsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiAvLyBJbnN0YW5j
ZXMgb2YgdGhpcyBjbGFzcyBzaG91bGQgYmUgY3JlYXRlZCBhbmQgdXNlZCBvbmx5IG9uIHRoZSB3
b3JrZXIncyBjb250ZXh0IHRocmVhZC4KLWNsYXNzIERhdGFiYXNlU3luYyA6IHB1YmxpYyBEYXRh
YmFzZUJhY2tlbmQgeworY2xhc3MgRGF0YWJhc2VTeW5jIDogcHVibGljIERhdGFiYXNlQmFzZSwg
cHVibGljIERhdGFiYXNlQmFja2VuZFN5bmMgewogcHVibGljOgogICAgIHZpcnR1YWwgfkRhdGFi
YXNlU3luYygpOwogCkBAIC03Myw4ICs3NCwxMCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRl
OgotICAgIERhdGFiYXNlU3luYyhQYXNzUmVmUHRyPERhdGFiYXNlQ29udGV4dD4sIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sCi0gICAgICAgICAgICAg
ICAgIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6
ZSk7CisgICAgRGF0YWJhc2VTeW5jKFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4s
IGNvbnN0IFN0cmluZyYgbmFtZSwKKyAgICAgICAgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNp
b24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6
ZSk7CisgICAgUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRTeW5jPiBiYWNrZW5kKCk7CisKICAg
ICB2b2lkIHJ1blRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJh
Y2s+LCBib29sIHJlYWRPbmx5LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBib29sIG9wZW5BbmRW
ZXJpZnlWZXJzaW9uKGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIERhdGFiYXNlRXJyb3Im
LCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CkBAIC04Miw2ICs4NSw3IEBAIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fbGFzdEVycm9yTWVzc2FnZTsKIAogICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZU1h
bmFnZXI7CisgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlQmFja2VuZFN5bmM7IC8vIEZJWE1FOiBy
ZW1vdmUgdGhpcyB3aGVuIHRoZSBiYWNrZW5kIGhhcyBiZWVuIHNwbGl0IG91dC4KIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAJKHJldmlzaW9uIDE0MTgyMCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTQgKzM0LDEzIEBACiAjaW5jbHVkZSAiQ2hyb21lLmgi
CiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kLmgi
Ci0jaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5k
Q29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFi
YXNlTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk9yaWdpblF1b3RhTWFuYWdlci5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKICNpbmNs
dWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCkBAIC0xMDQsMTUgKzEwMywyMSBAQCBTdHJpbmcgRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyRGF0YWJhc2VQCiAgICAgcmV0dXJuIFNRTGl0ZUZpbGVTeXN0
ZW06OmFwcGVuZERhdGFiYXNlRmlsZU5hbWVUb1BhdGgobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgu
aXNvbGF0ZWRDb3B5KCksICJEYXRhYmFzZXMuZGIiKTsKIH0KIAotdm9pZCBEYXRhYmFzZVRyYWNr
ZXI6Om9wZW5UcmFja2VyRGF0YWJhc2UoYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKK3ZvaWQg
RGF0YWJhc2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFiYXNlKFRyYWNrZXJDcmVhdGlvbkFjdGlv
biBjcmVhdGVBY3Rpb24pCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygp
KTsKIAogICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm47CiAKKyAg
ICAvLyBJZiBjcmVhdGVJZkRvZXNOb3RFeGlzdCBpcyBmYWxzZSwgU1FMaXRlRmlsZVN5c3RlbTo6
ZW5zdXJlRGF0YWJhc2VGaWxlRXhpc3RzKCkKKyAgICAvLyB3aWxsIHJldHVybiBmYWxzZSBpZiB0
aGUgZGF0YWJhc2UgZmlsZSBkb2VzIG5vdCBleGlzdC4KKyAgICAvLyBJZiBjcmVhdGVJZkRvZXNO
b3RFeGlzdCBpcyB0cnVlLCBTUUxpdGVGaWxlU3lzdGVtOjplbnN1cmVEYXRhYmFzZUZpbGVFeGlz
dHMoKQorICAgIC8vIHdpbGwgYXR0ZW1wdCB0byBjcmVhdGUgdGhlIHBhdGggdG8gdGhlIGRhdGFi
YXNlIGZpbGUgaWYgaXQgZG9lcyBub3QKKyAgICAvLyBleGlzdHMgeWV0LiBJdCdsbCByZXR1cm4g
dHJ1ZSBpZiB0aGUgcGF0aCBhbHJlYWR5IGV4aXN0cywgb3IgaWYgaXQKKyAgICAvLyBzdWNjZXNz
ZnVsbHkgY3JlYXRlcyB0aGUgcGF0aC4gRWxzZSwgaXQgd2lsbCByZXR1cm4gZmFsc2UuCiAgICAg
U3RyaW5nIGRhdGFiYXNlUGF0aCA9IHRyYWNrZXJEYXRhYmFzZVBhdGgoKTsKLSAgICBpZiAoIVNR
TGl0ZUZpbGVTeXN0ZW06OmVuc3VyZURhdGFiYXNlRmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgsIGNy
ZWF0ZUlmRG9lc05vdEV4aXN0KSkKKyAgICBpZiAoIVNRTGl0ZUZpbGVTeXN0ZW06OmVuc3VyZURh
dGFiYXNlRmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgsIGNyZWF0ZUFjdGlvbiA9PSBDcmVhdGVJZkRv
ZXNOb3RFeGlzdCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9kYXRhYmFzZS5vcGVu
KGRhdGFiYXNlUGF0aCkpIHsKQEAgLTEyMSwxMiArMTI2LDE0IEBAIHZvaWQgRGF0YWJhc2VUcmFj
a2VyOjpvcGVuVHJhY2tlckRhdGFiYXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Rh
dGFiYXNlLmRpc2FibGVUaHJlYWRpbmdDaGVja3MoKTsKKwogICAgIGlmICghbV9kYXRhYmFzZS50
YWJsZUV4aXN0cygiT3JpZ2lucyIpKSB7CiAgICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRl
Q29tbWFuZCgiQ1JFQVRFIFRBQkxFIE9yaWdpbnMgKG9yaWdpbiBURVhUIFVOSVFVRSBPTiBDT05G
TElDVCBSRVBMQUNFLCBxdW90YSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIp
KSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogYW5kIGhlcmUKICAgICAgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGNyZWF0ZSBPcmlnaW5zIHRhYmxlIik7CiAgICAgICAgIH0KICAgICB9CisK
ICAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIkRhdGFiYXNlcyIpKSB7CiAgICAgICAg
IGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIERhdGFiYXNlcyAo
Z3VpZCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQsIG9yaWdpbiBURVhULCBuYW1l
IFRFWFQsIGRpc3BsYXlOYW1lIFRFWFQsIGVzdGltYXRlZFNpemUgSU5URUdFUiwgcGF0aCBURVhU
KTsiKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IGFuZCBoZXJlCkBAIC0xMzUsNyArMTQyLDcg
QEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6Om9wZW5UcmFja2VyRGF0YWJhcwogICAgIH0KIH0KIAot
Ym9vbCBEYXRhYmFzZVRyYWNrZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNw
bGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQorYm9vbCBEYXRhYmFzZVRyYWNr
ZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKERhdGFiYXNlQmFja2VuZENvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplKQogewogICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBjb250
ZXh0LT5zZWN1cml0eU9yaWdpbigpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXF1aXJlbWVu
dDsKQEAgLTE0Myw3ICsxNTAsNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6Y2FuRXN0YWJsaXNo
RGF0YWJhCiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQp
OwogICAgICAgICBMb2NrZXI8T3JpZ2luUXVvdGFNYW5hZ2VyPiBxdW90YU1hbmFnZXJMb2NrZXIo
b3JpZ2luUXVvdGFNYW5hZ2VyKCkpOwogCi0gICAgICAgIGlmICghY2FuQ3JlYXRlRGF0YWJhc2Uo
b3JpZ2luLCBuYW1lKSkKKyAgICAgICAgaWYgKGlzRGVsZXRpbmdEYXRhYmFzZU9yT3JpZ2luRm9y
KG9yaWdpbiwgbmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgcmVj
b3JkQ3JlYXRpbmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpOwpAQCAtMTY4LDggKzE3NSw3IEBAIGJv
b2wgRGF0YWJhc2VUcmFja2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmEKIAogICAgIC8vIEdpdmUgdGhl
IGNocm9tZSBjbGllbnQgYSBjaGFuY2UgdG8gaW5jcmVhc2UgdGhlIHF1b3RhLgogICAgIC8vIERy
b3AgYWxsIGxvY2tzIGJlZm9yZSBjYWxsaW5nIG91dDsgd2UgZG9uJ3Qga25vdyB3aGF0IHRoZXkn
bGwgZG8uCi0gICAgUmVmUHRyPERhdGFiYXNlQ29udGV4dD4gZGF0YWJhc2VDb250ZXh0ID0gRGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VDb250ZXh0Rm9yKGNvbnRleHQpOwotICAg
IGRhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKG5hbWUsIERhdGFiYXNlRGV0
YWlscyhuYW1lLmlzb2xhdGVkQ29weSgpLCBkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSwgZXN0
aW1hdGVkU2l6ZSwgMCkpOworICAgIGNvbnRleHQtPmRhdGFiYXNlRXhjZWVkZWRRdW90YShuYW1l
LCBEYXRhYmFzZURldGFpbHMobmFtZS5pc29sYXRlZENvcHkoKSwgZGlzcGxheU5hbWUuaXNvbGF0
ZWRDb3B5KCksIGVzdGltYXRlZFNpemUsIDApKTsKIAogICAgIE11dGV4TG9ja2VyIGxvY2tEYXRh
YmFzZShtX2RhdGFiYXNlR3VhcmQpOwogCkBAIC0xOTksOSArMjA1LDEzIEBAIGJvb2wgRGF0YWJh
c2VUcmFja2VyOjpoYXNFbnRyeUZvck9yaWdpbigKIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpoYXNF
bnRyeUZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VJZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2so
KSk7Ci0gICAgb3BlblRyYWNrZXJEYXRhYmFzZShmYWxzZSk7Ci0gICAgaWYgKCFtX2RhdGFiYXNl
LmlzT3BlbigpKQorICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0ZUlmRG9lc05vdEV4
aXN0KTsKKyAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpIHsKKyAgICAgICAgLy8gTm8gInRy
YWNrZXIgZGF0YWJhc2UiLiBIZW5jZSwgbm8gZW50cnkgZm9yIHRoZSBkYXRhYmFzZSBvZiBpbnRl
cmVzdC4KICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFdlJ3ZlIGdvdCBh
IHRyYWNrZXIgZGF0YWJhc2UuIFNldCB1cCBhIHF1ZXJ5IHRvIGFzayBmb3IgdGhlIGRiIG9mIGlu
dGVyZXN0OgogICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVD
VCBndWlkIEZST00gRGF0YWJhc2VzIFdIRVJFIG9yaWdpbj0/IEFORCBuYW1lPT87Iik7CiAKICAg
ICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykKQEAgLTIyOSw3ICsyMzks
NyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VDaGFuZ2VkKERhCiAgICAgb3JpZ2lu
UXVvdGFNYW5hZ2VyKCkubWFya0RhdGFiYXNlKGRhdGFiYXNlKTsKIH0KIAotdm9pZCBEYXRhYmFz
ZVRyYWNrZXI6OmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKK3ZvaWQgRGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1cHRB
bGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IERhdGFiYXNlQmFja2VuZENvbnRleHQqIGNvbnRl
eHQpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxEYXRhYmFzZUJhY2tlbmQ+ID4gb3BlbkRhdGFiYXNl
czsKICAgICB7CkBAIC0yNDcsNyArMjU3LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmludGVy
cnVwdEFsbERhdGFiYQogICAgICAgICAgICAgRGF0YWJhc2VTZXQqIGRhdGFiYXNlU2V0ID0gZGJO
YW1lTWFwSXQtPnZhbHVlOwogICAgICAgICAgICAgRGF0YWJhc2VTZXQ6OmNvbnN0X2l0ZXJhdG9y
IGRiU2V0RW5kSXQgPSBkYXRhYmFzZVNldC0+ZW5kKCk7CiAgICAgICAgICAgICBmb3IgKERhdGFi
YXNlU2V0Ojpjb25zdF9pdGVyYXRvciBkYlNldEl0ID0gZGF0YWJhc2VTZXQtPmJlZ2luKCk7IGRi
U2V0SXQgIT0gZGJTZXRFbmRJdDsgKytkYlNldEl0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCgq
ZGJTZXRJdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBjb250ZXh0KQorICAgICAgICAg
ICAgICAgIGlmICgoKmRiU2V0SXQpLT5kYXRhYmFzZUNvbnRleHQoKSA9PSBjb250ZXh0KQogICAg
ICAgICAgICAgICAgICAgICBvcGVuRGF0YWJhc2VzLmFwcGVuZCgqZGJTZXRJdCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KQEAgLTMyOCw3ICszMzgsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tl
cjo6cG9wdWxhdGVPcmlnaW5zSWZOCiAKICAgICBtX3F1b3RhTWFwID0gYWRvcHRQdHIobmV3IFF1
b3RhTWFwKTsKIAotICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoZmFsc2UpOworICAgIG9wZW5UcmFj
a2VyRGF0YWJhc2UoRG9udENyZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAgICBpZiAoIW1fZGF0YWJh
c2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzYwLDcgKzM3MCw3IEBAIHZvaWQg
RGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zKFZlY3RvcjxSZWYKIGJvb2wgRGF0YWJhc2VUcmFja2Vy
OjpkYXRhYmFzZU5hbWVzRm9yT3JpZ2luTm9Mb2NrKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIFZl
Y3RvcjxTdHJpbmc+JiByZXN1bHRWZWN0b3IpCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlR3Vh
cmQudHJ5TG9jaygpKTsKLSAgICBvcGVuVHJhY2tlckRhdGFiYXNlKGZhbHNlKTsKKyAgICBvcGVu
VHJhY2tlckRhdGFiYXNlKERvbnRDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAgaWYgKCFtX2Rh
dGFiYXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQwNiw3ICs0MTYs
NyBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VUcmFja2VyOjpkZXRhaWxzCiAgICAgewogICAg
ICAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKIAotICAgICAg
ICBvcGVuVHJhY2tlckRhdGFiYXNlKGZhbHNlKTsKKyAgICAgICAgb3BlblRyYWNrZXJEYXRhYmFz
ZShEb250Q3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgICAgICBpZiAoIW1fZGF0YWJhc2UuaXNP
cGVuKCkpCiAgICAgICAgICAgICByZXR1cm4gRGF0YWJhc2VEZXRhaWxzKCk7CiAgICAgICAgIFNR
TGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBkaXNwbGF5TmFtZSwg
ZXN0aW1hdGVkU2l6ZSBGUk9NIERhdGFiYXNlcyBXSEVSRSBvcmlnaW49PyBBTkQgbmFtZT0/Iik7
CkBAIC00MzgsNyArNDQ4LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNldERhdGFiYXNlRGV0
YWlscwogCiAgICAgTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAK
LSAgICBvcGVuVHJhY2tlckRhdGFiYXNlKHRydWUpOworICAgIG9wZW5UcmFja2VyRGF0YWJhc2Uo
Q3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwg
IlNFTEVDVCBndWlkIEZST00gRGF0YWJhc2VzIFdIRVJFIG9yaWdpbj0/IEFORCBuYW1lPT8iKTsK
QEAgLTYxOCw2ICs2MjgsMTAgQEAgdW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlVHJhY2tlcjo6
dXNhZwogCiAgICAgaWYgKCFvcmlnaW5RdW90YU1hbmFnZXIoKS50cmFja3NPcmlnaW4ob3JpZ2lu
KSkKICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBPcmlnaW5RdW90YU1hbmFnZXI6OmRpc2tV
c2FnZSgpIG1heSByZXN1bHQgaW4gYSBkaXNrIHNjYW4gdG8gY29tcHV0ZSB0aGUKKyAgICAvLyBz
dW0gb2YgZGlzayB1c2FnZSBvZiBhbGwgZGF0YWJhc2VzIGZyb20gdGhpcyBzcGVjaWZpZWQgb3Jp
Z2luIGlmIGl0cworICAgIC8vIGNhY2hlZCB1c2FnZSB2YWx1ZSBpcyBkZXRlcm1pbmVkIHRvIGJl
IG91dGRhdGVkLgogICAgIHJldHVybiBvcmlnaW5RdW90YU1hbmFnZXIoKS5kaXNrVXNhZ2Uob3Jp
Z2luKTsKIH0KIApAQCAtNjQ5LDcgKzY2Myw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpzZXRR
dW90YShTZWN1cml0eU8KICAgICBpZiAocXVvdGFGb3JPcmlnaW5Ob0xvY2sob3JpZ2luKSA9PSBx
dW90YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgb3BlblRyYWNrZXJEYXRhYmFzZSh0cnVlKTsK
KyAgICBvcGVuVHJhY2tlckRhdGFiYXNlKENyZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAgICBpZiAo
IW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjkyLDcgKzcwNiw3
IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpzZXRRdW90YShTZWN1cml0eU8KIGJvb2wgRGF0YWJh
c2VUcmFja2VyOjphZGREYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIW1fZGF0YWJhc2VH
dWFyZC50cnlMb2NrKCkpOwotICAgIG9wZW5UcmFja2VyRGF0YWJhc2UodHJ1ZSk7CisgICAgb3Bl
blRyYWNrZXJEYXRhYmFzZShDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAgaWYgKCFtX2RhdGFi
YXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcG9wdWxhdGVPcmlnaW5z
SWZOZWVkZWQoKTsKQEAgLTczNyw3ICs3NTEsNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVs
ZXRlT3JpZ2luKFNlY3VyCiAgICAgVmVjdG9yPFN0cmluZz4gZGF0YWJhc2VOYW1lczsKICAgICB7
CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwotICAg
ICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKGZhbHNlKTsKKyAgICAgICAgb3BlblRyYWNrZXJEYXRh
YmFzZShEb250Q3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgICAgICBpZiAoIW1fZGF0YWJhc2Uu
aXNPcGVuKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTgxOSwxMSArODMzLDEx
IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmlnaW4oU2VjdXIKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNhbkNyZWF0ZURhdGFiYXNlKFNlY3Vy
aXR5T3JpZ2luICpvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgRGF0YWJhc2VUcmFj
a2VyOjppc0RlbGV0aW5nRGF0YWJhc2VPck9yaWdpbkZvcihTZWN1cml0eU9yaWdpbiAqb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5
TG9jaygpKTsKICAgICAvLyBDYW4ndCBjcmVhdGUgYSBkYXRhYmFzZSB3aGlsZSBzb21lb25lIGVs
c2UgaXMgZGVsZXRpbmcgaXQ7IHRoZXJlJ3MgYSByaXNrIG9mIGxlYXZpbmcgdW50cmFja2VkIGRh
dGFiYXNlIGRlYnJpcyBvbiB0aGUgZGlzay4KLSAgICByZXR1cm4gIWRlbGV0aW5nRGF0YWJhc2Uo
b3JpZ2luLCBuYW1lKSAmJiAhZGVsZXRpbmdPcmlnaW4ob3JpZ2luKTsKKyAgICByZXR1cm4gaXNE
ZWxldGluZ0RhdGFiYXNlKG9yaWdpbiwgbmFtZSkgfHwgaXNEZWxldGluZ09yaWdpbihvcmlnaW4p
OwogfQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVjb3JkQ3JlYXRpbmdEYXRhYmFzZShTZWN1
cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC04NjgsNyArODgyLDcg
QEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNyZWF0aW5nRGF0YWJhc2UoUwogYm9vbCBEYXRhYmFz
ZVRyYWNrZXI6OmNhbkRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sIGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkp
OwotICAgIHJldHVybiAhY3JlYXRpbmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpICYmICFkZWxldGlu
Z0RhdGFiYXNlKG9yaWdpbiwgbmFtZSk7CisgICAgcmV0dXJuICFjcmVhdGluZ0RhdGFiYXNlKG9y
aWdpbiwgbmFtZSkgJiYgIWlzRGVsZXRpbmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpOwogfQogCiB2
b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVjb3JkRGVsZXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdp
biAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC05MDAsNyArOTE0LDcgQEAgdm9pZCBE
YXRhYmFzZVRyYWNrZXI6OmRvbmVEZWxldGluZ0RhdGFiYQogICAgIH0KIH0KIAotYm9vbCBEYXRh
YmFzZVRyYWNrZXI6OmRlbGV0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwgY29u
c3QgU3RyaW5nJiBuYW1lKQorYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmlzRGVsZXRpbmdEYXRhYmFz
ZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNT
RVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKICAgICBOYW1lU2V0KiBuYW1lU2V0ID0g
bV9iZWluZ0RlbGV0ZWQuZ2V0KG9yaWdpbik7CkBAIC05MTAsMTAgKzkyNCwxMCBAQCBib29sIERh
dGFiYXNlVHJhY2tlcjo6ZGVsZXRpbmdEYXRhYmFzZShTCiBib29sIERhdGFiYXNlVHJhY2tlcjo6
Y2FuRGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pCiB7CiAgICAgQVNTRVJUKCFt
X2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKLSAgICByZXR1cm4gIShkZWxldGluZ09yaWdpbihv
cmlnaW4pIHx8IG1fYmVpbmdDcmVhdGVkLmdldChvcmlnaW4pKTsKKyAgICByZXR1cm4gIShpc0Rl
bGV0aW5nT3JpZ2luKG9yaWdpbikgfHwgbV9iZWluZ0NyZWF0ZWQuZ2V0KG9yaWdpbikpOwogfQog
Ci1ib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRpbmdPcmlnaW4oU2VjdXJpdHlPcmlnaW4gKm9y
aWdpbikKK2Jvb2wgRGF0YWJhc2VUcmFja2VyOjppc0RlbGV0aW5nT3JpZ2luKFNlY3VyaXR5T3Jp
Z2luICpvcmlnaW4pCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsK
ICAgICByZXR1cm4gbV9vcmlnaW5zQmVpbmdEZWxldGVkLmNvbnRhaW5zKG9yaWdpbik7CkBAIC05
MjIsMTQgKzkzNiwxNCBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRpbmdPcmlnaW4oU2Vj
CiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVjb3JkRGVsZXRpbmdPcmlnaW4oU2VjdXJpdHlPcmln
aW4gKm9yaWdpbikKIHsKICAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOwot
ICAgIEFTU0VSVCghZGVsZXRpbmdPcmlnaW4ob3JpZ2luKSk7CisgICAgQVNTRVJUKCFpc0RlbGV0
aW5nT3JpZ2luKG9yaWdpbikpOwogICAgIG1fb3JpZ2luc0JlaW5nRGVsZXRlZC5hZGQob3JpZ2lu
LT5pc29sYXRlZENvcHkoKSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpkb25lRGVsZXRp
bmdPcmlnaW4oU2VjdXJpdHlPcmlnaW4gKm9yaWdpbikKIHsKICAgICBBU1NFUlQoIW1fZGF0YWJh
c2VHdWFyZC50cnlMb2NrKCkpOwotICAgIEFTU0VSVChkZWxldGluZ09yaWdpbihvcmlnaW4pKTsK
KyAgICBBU1NFUlQoaXNEZWxldGluZ09yaWdpbihvcmlnaW4pKTsKICAgICBtX29yaWdpbnNCZWlu
Z0RlbGV0ZWQucmVtb3ZlKG9yaWdpbik7CiB9CiAKQEAgLTkzNyw3ICs5NTEsNyBAQCBib29sIERh
dGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2UoU2VjCiB7CiAgICAgewogICAgICAgICBNdXRl
eExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKLSAgICAgICAgb3BlblRyYWNr
ZXJEYXRhYmFzZShmYWxzZSk7CisgICAgICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0
ZUlmRG9lc05vdEV4aXN0KTsKICAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC05OTksNyArMTAxMyw3IEBAIGJvb2wgRGF0YWJh
c2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUKICNpZm5kZWYgTkRFQlVHCiAgICAgewogICAg
ICAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKLSAgICAgICAg
QVNTRVJUKGRlbGV0aW5nRGF0YWJhc2Uob3JpZ2luLCBuYW1lKSB8fCBkZWxldGluZ09yaWdpbihv
cmlnaW4pKTsKKyAgICAgICAgQVNTRVJUKGlzRGVsZXRpbmdEYXRhYmFzZU9yT3JpZ2luRm9yKG9y
aWdpbiwgbmFtZSkpOwogICAgIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmgJKHJldmlzaW9uIDE0
MTgyMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRGF0YWJhc2VCYWNrZW5kOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKK2NsYXNzIERhdGFiYXNlQmFja2VuZENvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
IAogc3RydWN0IFNlY3VyaXR5T3JpZ2luSGFzaDsKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgog
ICAgIC8vIG1fZGF0YWJhc2VHdWFyZCBhbmQgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCBjdXJyZW50
bHkgZG9uJ3Qgb3ZlcmxhcC4KICAgICAvLyBub3RpZmljYXRpb25NdXRleCgpIGlzIGN1cnJlbnRs
eSBpbmRlcGVuZGVudCBvZiB0aGUgb3RoZXIgbG9ja3MuCiAKLSAgICBib29sIGNhbkVzdGFibGlz
aERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7Cisg
ICAgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShEYXRhYmFzZUJhY2tlbmRDb250ZXh0KiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25n
IGVzdGltYXRlZFNpemUpOwogICAgIHZvaWQgc2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5T3Jp
Z2luKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNp
Z25lZCBsb25nIGVzdGltYXRlZFNpemUpOwogICAgIFN0cmluZyBmdWxsUGF0aEZvckRhdGFiYXNl
KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05v
dEV4aXN0ID0gdHJ1ZSk7CiAKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgRGF0YWJhc2VCYWNrZW5kKik7
CiAgICAgdm9pZCBkYXRhYmFzZUNoYW5nZWQoRGF0YWJhc2VCYWNrZW5kKik7CiAKLSAgICB2b2lk
IGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOworICAgIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBE
YXRhYmFzZUJhY2tlbmRDb250ZXh0Kik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRGF0YWJh
c2VUcmFja2VyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKTsKQEAgLTEyMiw3ICsxMjIsMTIg
QEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGFGb3JPcmlnaW5Ob0xvY2so
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbik7CiAKICAgICBTdHJpbmcgdHJhY2tlckRhdGFiYXNlUGF0
aCgpIGNvbnN0OwotICAgIHZvaWQgb3BlblRyYWNrZXJEYXRhYmFzZShib29sIGNyZWF0ZUlmRG9l
c05vdEV4aXN0KTsKKworICAgIGVudW0gVHJhY2tlckNyZWF0aW9uQWN0aW9uIHsKKyAgICAgICAg
RG9udENyZWF0ZUlmRG9lc05vdEV4aXN0LAorICAgICAgICBDcmVhdGVJZkRvZXNOb3RFeGlzdAor
ICAgIH07CisgICAgdm9pZCBvcGVuVHJhY2tlckRhdGFiYXNlKFRyYWNrZXJDcmVhdGlvbkFjdGlv
bik7CiAKICAgICBTdHJpbmcgb3JpZ2luUGF0aChTZWN1cml0eU9yaWdpbiopIGNvbnN0OwogCkBA
IC0xNTcsMTggKzE2MiwxOCBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaFNldDxTdHJpbmc+
IE5hbWVTZXQ7CiAgICAgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBOYW1lU2V0Kiwg
U2VjdXJpdHlPcmlnaW5IYXNoPiBtX2JlaW5nRGVsZXRlZDsKICAgICBIYXNoU2V0PFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4sIFNlY3VyaXR5T3JpZ2luSGFzaD4gbV9vcmlnaW5zQmVpbmdEZWxldGVk
OwotICAgIGJvb2wgY2FuQ3JlYXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKLSAgICB2b2lkIHJlY29yZENyZWF0aW5nRGF0YWJhc2UoU2VjdXJp
dHlPcmlnaW4gKm9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICB2b2lkIGRvbmVDcmVh
dGluZ0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSk7
Ci0gICAgYm9vbCBjcmVhdGluZ0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sIGNvbnN0
IFN0cmluZyYgbmFtZSk7Ci0gICAgYm9vbCBjYW5EZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdp
biAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIHZvaWQgcmVjb3JkRGVsZXRpbmdE
YXRhYmFzZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAg
IHZvaWQgZG9uZURlbGV0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKLSAgICBib29sIGRlbGV0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4g
Km9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBib29sIGNhbkRlbGV0ZU9yaWdpbihT
ZWN1cml0eU9yaWdpbiAqb3JpZ2luKTsKLSAgICBib29sIGRlbGV0aW5nT3JpZ2luKFNlY3VyaXR5
T3JpZ2luICpvcmlnaW4pOwotICAgIHZvaWQgcmVjb3JkRGVsZXRpbmdPcmlnaW4oU2VjdXJpdHlP
cmlnaW4gKm9yaWdpbik7Ci0gICAgdm9pZCBkb25lRGVsZXRpbmdPcmlnaW4oU2VjdXJpdHlPcmln
aW4gKm9yaWdpbik7CisgICAgYm9vbCBpc0RlbGV0aW5nRGF0YWJhc2VPck9yaWdpbkZvcihTZWN1
cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCByZWNvcmRDcmVhdGlu
Z0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lk
IGRvbmVDcmVhdGluZ0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKKyAgICBib29sIGNyZWF0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJp
bmcmIG5hbWUpOworICAgIGJvb2wgY2FuRGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBj
b25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgcmVjb3JkRGVsZXRpbmdEYXRhYmFzZShTZWN1
cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCBkb25lRGVsZXRpbmdE
YXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgYm9vbCBp
c0RlbGV0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOwor
ICAgIGJvb2wgY2FuRGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisgICAgYm9vbCBpc0Rl
bGV0aW5nT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisgICAgdm9pZCByZWNvcmREZWxldGluZ09y
aWdpbihTZWN1cml0eU9yaWdpbiopOworICAgIHZvaWQgZG9uZURlbGV0aW5nT3JpZ2luKFNlY3Vy
aXR5T3JpZ2luKik7CiAKICAgICBzdGF0aWMgdm9pZCBzY2hlZHVsZUZvck5vdGlmaWNhdGlvbigp
OwogICAgIHN0YXRpYyB2b2lkIG5vdGlmeURhdGFiYXNlc0NoYW5nZWQodm9pZCopOwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbi5jcHAJKHJldmlzaW9uIDE0MTgyMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3
IEBACiAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQXV0aG9yaXpl
ci5oIgotI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFj
a2VuZENvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2xp
ZW50LmNwcAkocmV2aXNpb24gMTQxODIwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcg
KzM0LDcgQEAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiRGF0YWJhc2VC
YWNrZW5kLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCisjaW5jbHVkZSAiRGF0YWJh
c2VCYWNrZW5kQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgpAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRFeGVjdXRl
U3RhCiAKIGJvb2wgU1FMVHJhbnNhY3Rpb25DbGllbnQ6OmRpZEV4Y2VlZFF1b3RhKERhdGFiYXNl
QmFja2VuZCogZGF0YWJhc2UpCiB7Ci0gICAgQVNTRVJUKGRhdGFiYXNlLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoZGF0YWJhc2UtPmRh
dGFiYXNlQ29udGV4dCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVh
ZCgpKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhID0gRGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4oZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luKCkp
OwogICAgIGRhdGFiYXNlLT5kYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VFeGNlZWRlZFF1b3Rh
KGRhdGFiYXNlLT5zdHJpbmdJZGVudGlmaWVyKCksIGRhdGFiYXNlLT5kZXRhaWxzKCkpOwogICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigp
LnF1b3RhRm9yT3JpZ2luKGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbigpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25TeW5jLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uU3luYy5jcHAJKHJldmlzaW9uIDE0MTgyMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25TeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NyArMzQsNyBAQAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRlICJEYXRhYmFz
ZUF1dGhvcml6ZXIuaCIKLSNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKKyNpbmNsdWRlICJE
YXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VTeW5jLmgiCiAjaW5j
bHVkZSAiU1FMRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiU1FMUmVzdWx0U2V0LmgiCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVtL0RhdGFiYXNlVHJhY2tl
ckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL2Nocm9taXVtL0RhdGFiYXNlVHJhY2tlckNocm9taXVtLmNwcAkocmV2aXNpb24gMTQx
ODIwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1bS9EYXRh
YmFzZVRyYWNrZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kLmgi
CisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNl
T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJRdW90YVRyYWNrZXIuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCkBAIC01Niw4ICs1Nyw5IEBAIERhdGFiYXNlVHJhY2tlcjo6RGF0
YWJhc2VUcmFja2VyKGNvbnN0IFMKICAgICBTUUxpdGVGaWxlU3lzdGVtOjpyZWdpc3RlclNRTGl0
ZVZGUygpOwogfQogCi1ib29sIERhdGFiYXNlVHJhY2tlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGlt
YXRlZFNpemUpCitib29sIERhdGFiYXNlVHJhY2tlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2UoRGF0
YWJhc2VCYWNrZW5kQ29udGV4dCogZGF0YWJhc2VDb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkK
IHsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0g
ZGF0YWJhc2VDb250ZXh0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgcmV0dXJuIERh
dGFiYXNlT2JzZXJ2ZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKIH0KIApAQCAtMTQ4LDIyICsx
NTAsMjQgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFzZQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKCFkYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5pc0NvbnRleHRUaHJlYWQoKSkKLSAgICAgICAgZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+cG9zdFRhc2soTm90aWZ5RGF0YWJhc2VPYnNlcnZlck9uQ2xvc2VUYXNrOjpjcmVh
dGUoZGF0YWJhc2UpKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0ID0gZGF0YWJhc2UtPmRhdGFiYXNlQ29udGV4dCgpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJl
YWQoKSkKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soTm90aWZ5RGF0
YWJhc2VPYnNlcnZlck9uQ2xvc2VUYXNrOjpjcmVhdGUoZGF0YWJhc2UpKTsKICAgICBlbHNlCiAg
ICAgICAgIERhdGFiYXNlT2JzZXJ2ZXI6OmRhdGFiYXNlQ2xvc2VkKGRhdGFiYXNlKTsKIH0KIAog
dm9pZCBEYXRhYmFzZVRyYWNrZXI6OnByZXBhcmVUb09wZW5EYXRhYmFzZShEYXRhYmFzZUJhY2tl
bmQqIGRhdGFiYXNlKQogewotICAgIEFTU0VSVChkYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGRhdGFiYXNlLT5kYXRhYmFz
ZUNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7
CiAgICAgRGF0YWJhc2VPYnNlcnZlcjo6ZGF0YWJhc2VPcGVuZWQoZGF0YWJhc2UpOwogfQogCiB2
b2lkIERhdGFiYXNlVHJhY2tlcjo6ZmFpbGVkVG9PcGVuRGF0YWJhc2UoRGF0YWJhc2VCYWNrZW5k
KiBkYXRhYmFzZSkKIHsKLSAgICBpZiAoIWRhdGFiYXNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmlzQ29udGV4dFRocmVhZCgpKQotICAgICAgICBkYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5wb3N0VGFzayhOb3RpZnlEYXRhYmFzZU9ic2VydmVyT25DbG9zZVRhc2s6OmNy
ZWF0ZShkYXRhYmFzZSkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBkYXRhYmFzZS0+ZGF0YWJhc2VDb250ZXh0KCktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRo
cmVhZCgpKQorICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhOb3RpZnlE
YXRhYmFzZU9ic2VydmVyT25DbG9zZVRhc2s6OmNyZWF0ZShkYXRhYmFzZSkpOwogICAgIGVsc2UK
ICAgICAgICAgRGF0YWJhc2VPYnNlcnZlcjo6ZGF0YWJhc2VDbG9zZWQoZGF0YWJhc2UpOwogfQpA
QCAtMTc4LDcgKzE4Miw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZVRyYWNrZXI6Omdl
dE0KICAgICByZXR1cm4gZGF0YWJhc2VTaXplICsgc3BhY2VBdmFpbGFibGU7CiB9CiAKLXZvaWQg
RGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit2b2lkIERhdGFiYXNlVHJhY2tlcjo6aW50
ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBEYXRhYmFzZUJhY2tlbmRDb250ZXh0
KiBjb250ZXh0KQogewogICAgIE11dGV4TG9ja2VyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVu
RGF0YWJhc2VNYXBHdWFyZCk7CiAKQEAgLTE5NCw3ICsxOTgsNyBAQCB2b2lkIERhdGFiYXNlVHJh
Y2tlcjo6aW50ZXJydXB0QWxsRGF0YWJhCiAgICAgICAgIERhdGFiYXNlU2V0KiBkYXRhYmFzZVNl
dCA9IGRiTmFtZU1hcEl0LT52YWx1ZTsKICAgICAgICAgRGF0YWJhc2VTZXQ6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IGRhdGFiYXNlU2V0LT5lbmQoKTsKICAgICAgICAgZm9yIChEYXRhYmFzZVNldDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBkYXRhYmFzZVNldC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgICAgICBpZiAoKCppdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBj
b250ZXh0KQorICAgICAgICAgICAgaWYgKCgqaXQpLT5kYXRhYmFzZUNvbnRleHQoKSA9PSBjb250
ZXh0KQogICAgICAgICAgICAgICAgICgqaXQpLT5pbnRlcnJ1cHQoKTsKICAgICAgICAgfQogICAg
IH0KQEAgLTI0Miw3ICsyNDYsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6Y2xvc2VEYXRhYmFz
ZXNJbW1lCiAgICAgLy8gdGhlIGRhdGFiYXNlIGluIG91ciBjb2xsZWN0aW9uIHdoZW4gbm90IG9u
IHRoZSBjb250ZXh0IHRocmVhZCAod2hpY2ggaXMgYWx3YXlzIHRoZSBjYXNlIGdpdmVuCiAgICAg
Ly8gY3VycmVudCB1c2FnZSkuCiAgICAgZm9yIChEYXRhYmFzZVNldDo6aXRlcmF0b3IgaXQgPSBk
YXRhYmFzZVNldC0+YmVnaW4oKTsgaXQgIT0gZGF0YWJhc2VTZXQtPmVuZCgpOyArK2l0KQotICAg
ICAgICAoKml0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhDbG9zZU9uZURh
dGFiYXNlSW1tZWRpYXRlbHlUYXNrOjpjcmVhdGUob3JpZ2luSWRlbnRpZmllciwgbmFtZSwgKml0
KSk7CisgICAgICAgICgqaXQpLT5kYXRhYmFzZUNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5wb3N0VGFzayhDbG9zZU9uZURhdGFiYXNlSW1tZWRpYXRlbHlUYXNrOjpjcmVhdGUo
b3JpZ2luSWRlbnRpZmllciwgbmFtZSwgKml0KSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VUcmFja2Vy
OjpjbG9zZU9uZURhdGFiYXNlSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVtL1NRTFRyYW5zYWN0
aW9uQ2xpZW50Q2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvY2hyb21pdW0vU1FMVHJhbnNhY3Rpb25DbGllbnRDaHJvbWl1bS5jcHAJ
KHJldmlzaW9uIDE0MTgyMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
Y2hyb21pdW0vU1FMVHJhbnNhY3Rpb25DbGllbnRDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAi
RGF0YWJhc2VCYWNrZW5kLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIgog
I2luY2x1ZGUgIkRhdGFiYXNlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCiAKQEAgLTYyLDggKzYzLDkgQEAgcHJpdmF0ZToKIAogdm9pZCBTUUxUcmFuc2Fj
dGlvbkNsaWVudDo6ZGlkQ29tbWl0V3JpdGVUcmFuc2FjdGlvbihEYXRhYmFzZUJhY2tlbmQqIGRh
dGFiYXNlKQogewotICAgIGlmICghZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
aXNDb250ZXh0VGhyZWFkKCkpIHsKLSAgICAgICAgZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+cG9zdFRhc2soTm90aWZ5RGF0YWJhc2VDaGFuZ2VkVGFzazo6Y3JlYXRlKGRhdGFi
YXNlKSk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCA9IGRhdGFiYXNlLT5kYXRhYmFzZUNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OworICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpIHsK
KyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soTm90aWZ5RGF0YWJhc2VD
aGFuZ2VkVGFzazo6Y3JlYXRlKGRhdGFiYXNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTgwLDcgKzgyLDcgQEAgYm9vbCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkRXhjZWVkUXVv
dAogewogICAgIC8vIENocm9taXVtIGRvZXMgbm90IGFsbG93IHVzZXJzIHRvIG1hbnVhbGx5IGNo
YW5nZSB0aGUgcXVvdGEgZm9yIGFuIG9yaWdpbiAoZm9yIG5vdywgYXQgbGVhc3QpLgogICAgIC8v
IERvbid0IGRvIGFueXRoaW5nLgotICAgIEFTU0VSVChkYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGRhdGFiYXNlLT5kYXRh
YmFzZUNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQo
KSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTQxODIwKQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI1
MzU0LDYgKzI1MzU0LDQyIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZEFzeW5j
LmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kQXN5bmMuaCIKKwkJCQkJPgor
CQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2Vi
ZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+
CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERh
dGFiYXNlQmFja2VuZENvbnRleHQuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5k
U3luYy5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZFN5bmMuaCIKKwkJCQkJ
PgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNc
d2ViZGF0YWJhc2VcRGF0YWJhc2VCYXNlLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8
RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VC
YXNlLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFzaWNUeXBlcy5oIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJk
YXRhYmFzZVxEYXRhYmFzZUNhbGxiYWNrLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHJldmlz
aW9uIDE0MTgyMCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE4NTYsNiArMTg1NiwxMCBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQXV0aG9y
aXplci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFi
YXNlXERhdGFiYXNlQmFja2VuZC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZEFzeW5jLmNwcCIgLz4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFi
YXNlXERhdGFiYXNlQmFja2VuZFN5bmMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhc2UuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUNvbnRleHQuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFz
ZU1hbmFnZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJk
YXRhYmFzZVxEYXRhYmFzZVNlcnZlci5jcHAiIC8+CkBAIC02NDA4LDYgKzY0MTIsMTEgQEAKICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2UuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJh
c2VBdXRob3JpemVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdl
YmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRBc3luYy5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRD
b250ZXh0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFi
YXNlXERhdGFiYXNlQmFja2VuZFN5bmMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYXNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFzaWNUeXBlcy5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUNh
bGxiYWNrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFi
YXNlXERhdGFiYXNlQ29udGV4dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9k
dWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUVycm9yLmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCShy
ZXZpc2lvbiAxNDE4MjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTE4MzksNiArMTgzOSwxOCBAQAog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJh
Y2tlbmQuY3BwIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJk
YXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVz
XHdlYmRhdGFiYXNlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZENvbnRleHQuY3Bw
Ij4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgorICAgIDwvQ2xD
b21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxE
YXRhYmFzZUJhY2tlbmRTeW5jLmNwcCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJh
c2U8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYXNlLmNwcCI+CisgICAgICA8RmlsdGVyPk1v
ZHVsZXNcd2ViZGF0YWJhc2U8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VDb250ZXh0LmNwcCI+
CiAgICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJhc2U8L0ZpbHRlcj4KICAgICA8L0NsQ29t
cGlsZT4KQEAgLTg0NjAsNiArODQ3MiwyMSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
TW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmQuaCI+CiAgICAgICA8RmlsdGVyPk1v
ZHVsZXNcd2ViZGF0YWJhc2U8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kQXN5bmMu
aCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJhc2U8L0ZpbHRlcj4KKyAgICA8L0Ns
SW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2Vc
RGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRh
YmFzZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRTeW5jLmgiPgorICAgICAgPEZp
bHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFzZS5o
Ij4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgorICAgIDwvQ2xJ
bmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxE
YXRhYmFzZUJhc2ljVHlwZXMuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJhc2U8
L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1v
ZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VDYWxsYmFjay5oIj4KICAgICAgIDxGaWx0ZXI+TW9k
dWxlc1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTQxODIwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NzM0LDExICs2NzM0LDIzIEBACiAJCUZERjZCQUY5
MTM0QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRGNkJBRjcxMzRBNEM5
ODAwODIyOTIwIC8qIEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmggKi87IH07CiAJCUZE
RjdFOUMzMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRGN0U5QzExM0FDMjFE
QjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAgKi87IH07CiAJCUZERjdFOUM0
MTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZERjdFOUMyMTNBQzIxREIwMEE1MUVB
QyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaCAqLzsgfTsKLQkJRkUwOURCNDkxNjlFMkQ2RTAw
NjIyNTU3IC8qIERhdGFiYXNlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMDlEQjQ2MTY5RTJENkUwMDYyMjU1NyAvKiBEYXRhYmFzZUVycm9y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUx
MTVGQUIxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTE1RkE5MTY3OTg4Q0Qw
MDI0OTEzNCAvKiBBYnN0cmFjdERhdGFiYXNlU2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUxNkNGRDMxNjlEMURFRDAwRDNBMEM3IC8q
IERhdGFiYXNlQmFja2VuZEFzeW5jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMTZDRkNGMTY5RDFERUMwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tl
bmRBc3luYy5jcHAgKi87IH07CisJCUZFMTZDRkQ0MTY5RDFERUQwMEQzQTBDNyAvKiBEYXRhYmFz
ZUJhY2tlbmRBc3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkUxNkNGRDAxNjlEMURFQzAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZEFzeW5jLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkU2RjZB
QUYxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RjZBQUQxNjlFMDU3NTAw
RkMzMEEyIC8qIERhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwICovOyB9OworCQlGRTZGNkFCMDE2
OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RjZBQUUxNjlFMDU3NTAwRkMzMEEy
IC8qIERhdGFiYXNlQmFja2VuZENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlGRTE2Q0ZENTE2OUQxREVEMDBEM0EwQzcgLyogRGF0YWJh
c2VCYWNrZW5kU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTE2Q0ZEMTE2OUQxREVDMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kU3luYy5j
cHAgKi87IH07CisJCUZFMTZDRkQ2MTY5RDFERUQwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRT
eW5jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE2
Q0ZEMjE2OUQxREVDMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kU3luYy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFQkM1RjMxMTZCRDBDQzMw
MDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkVCQzVGMkYxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFz
ZS5jcHAgKi87IH07CisJCUZFQkM1RjMyMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQkM1RjMw
MTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTMzNzFBMjE2N0MxMUQ0MDBFREI3NTIgLyog
RGF0YWJhc2VCYXNpY1R5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTMzNzFBMDE2N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUw
OURCNDkxNjlFMkQ2RTAwNjIyNTU3IC8qIERhdGFiYXNlRXJyb3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDlEQjQ2MTY5RTJENkUwMDYyMjU1NyAv
KiBEYXRhYmFzZUVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRkU0NTZGMTgxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYx
NjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJRkU0NTZG
MTkxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0NTZGMTcxNjc3RDc0RTAwNUVEREY5IC8q
IERhdGFiYXNlTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUZFQjI2RDI4MTY3QThGMkEwMEZERDI2QiAvKiBEYXRhYmFzZVNlcnZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUIyNkQy
NzE2N0E4RjJBMDBGREQyNkIgLyogRGF0YWJhc2VTZXJ2ZXIuY3BwICovOyB9OworCQlGRUFGNjY1
NDE2Nzk3MDMyMDA2MkQwQzUgLyogRGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQUY2NjUzMTY3OTcwMDcwMDYyRDBDNSAvKiBE
YXRhYmFzZVNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUZFREVGODQxMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREVGODNG
MTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCAqLzsgfTsKKwkJRkVERUY4
NDIxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREVGODQwMTY3OTcxMDgwMDBFNDQ0QSAv
KiBEYXRhYmFzZVN0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRkU2RkQ0ODgwRjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTZGRDQ4NTBG
Njc2RTU3MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTZGRDQ4RDBGNjc2RTkzMDAwOTI4NzMgLyogSlND
b29yZGluYXRlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTZGRDQ4QjBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5jcHAgKi87IH07
CiAJCUZFNkZENDhFMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTZGRDQ4QzBGNjc2RTkzMDAw
OTI4NzMgLyogSlNDb29yZGluYXRlcy5oICovOyB9OwpAQCAtNjc1MCwxMCArNjc2Miw2IEBACiAJ
CUZFODBEQTY2MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2MjBFOUM0NzAzMDAwRDZG
NzUgLyogSlNHZW9wb3NpdGlvbi5oICovOyB9OwogCQlGRTgwREE3MTBFOUM0NzJGMDAwRDZGNzUg
LyogSlNQb3NpdGlvbkVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFODBEQTZEMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3Iu
Y3BwICovOyB9OwogCQlGRTgwREE3MjBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2
RTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmggKi87IH07Ci0JCUZFQUY2NjU0
MTY3OTcwMzIwMDYyRDBDNSAvKiBEYXRhYmFzZVNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBRjY2NTMxNjc5NzAwNzAwNjJEMEM1IC8qIERh
dGFiYXNlU2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJRkVCMjZEMjgxNjdBOEYyQTAwRkREMjZCIC8qIERhdGFiYXNlU2VydmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjI2RDI3MTY3
QThGMkEwMEZERDI2QiAvKiBEYXRhYmFzZVNlcnZlci5jcHAgKi87IH07Ci0JCUZFREVGODQxMTY3
OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREVGODNGMTY3OTcxMDgwMDBFNDQ0QSAvKiBE
YXRhYmFzZVN0cmF0ZWd5LmNwcCAqLzsgfTsKLQkJRkVERUY4NDIxNjc5NzEwODAwMEU0NDRBIC8q
IERhdGFiYXNlU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFREVGODQwMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkY5NDVF
Q0IxNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkY5NDVFQzkxNjFGN0YzNjAwOTcxQkM4IC8q
IFBzZXVkb0VsZW1lbnQuY3BwICovOyB9OwogCQlGRjk0NUVDQzE2MUY3RjM2MDA5NzFCQzggLyog
UHNldWRvRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkY5NDVFQ0ExNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuaCAqLzsgfTsK
IAkJRkZENUI5N0ExMzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkZENUI5NzcxMzVD
Qzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwICovOyB9OwpAQCAtMTQ0MTAs
OSArMTQ0MTgsMjEgQEAKIAkJRkRGN0U5QzIxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZm
ZXJDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlvQnVm
ZmVyQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUwOURCNDYxNjlF
MkQ2RTAwNjIyNTU3IC8qIERhdGFiYXNlRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gRGF0YWJhc2VFcnJvci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMTE1RkE5MTY3OTg4
Q0QwMDI0OTEzNCAvKiBBYnN0cmFjdERhdGFiYXNlU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaDsgcGF0aCA9IE1vZHVsZXMv
d2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRTE2Q0ZDRjE2OUQxREVDMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kQXN5
bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGF0YWJhc2VCYWNr
ZW5kQXN5bmMuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRB
c3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTZDRkQwMTY5RDFERUMw
MEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRBc3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBEYXRhYmFzZUJhY2tlbmRBc3luYy5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRTZGNkFBRDE2OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZUJhY2tlbmRDb250
ZXh0LmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNkY2QUFFMTY5RTA1NzUwMEZD
MzBBMiAvKiBEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERhdGFiYXNlQmFja2VuZENvbnRleHQuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGRTE2Q0ZEMTE2OUQxREVDMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZUJhY2tlbmRTeW5j
LmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3luYy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTZDRkQyMTY5RDFERUMwMEQzQTBDNyAv
KiBEYXRhYmFzZUJhY2tlbmRTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERhdGFiYXNlQmFja2VuZFN5bmMuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VCYWNrZW5kU3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUJDNUYyRjE2
QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlQmFzZS5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQkM1
RjMwMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VCYXNlLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTMzNzFBMDE2
N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlQmFzaWNUeXBlcy5oOyBwYXRoID0gTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUJhc2ljVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkU0NTZGMTYxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZU1hbmFnZXIuY3BwOyBwYXRo
ID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRTQ1NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5h
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlTWFuYWdlci5o
OyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVCMjZEMjcxNjdBOEYyQTAwRkREMjZCIC8qIERhdGFiYXNl
U2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNl
U2VydmVyLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUFGNjY1MzE2Nzk3MDA3MDA2MkQwQzUg
LyogRGF0YWJhc2VTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0
YWJhc2VTZXJ2ZXIuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVERUY4M0YxNjc5NzEwODAwMEU0NDRB
IC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGF0YWJhc2VTdHJhdGVneS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFREVGODQwMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlU3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RkQ0ODUwRjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb3JkaW5hdGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNkZENDg2MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29y
ZGluYXRlcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ29vcmRpbmF0ZXMuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTZGRDQ4QjBGNjc2RTkzMDAwOTI4NzMgLyogSlND
b29yZGluYXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Nv
b3JkaW5hdGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NDI1LDEwICsx
NDQ0NSw2IEBACiAJCUZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VvcG9zaXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9z
aXRpb25FcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Bv
c2l0aW9uRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwREE2RTBF
OUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTUG9zaXRpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlGRUFGNjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyogRGF0YWJhc2VTZXJ2ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VTZXJ2ZXIuaDsgcGF0aCA9IE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRkVCMjZEMjcxNjdBOEYyQTAwRkREMjZCIC8qIERhdGFiYXNlU2VydmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlU2VydmVyLmNwcDsgcGF0
aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlGRURFRjgzRjE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJh
dGVneS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVN0
cmF0ZWd5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkVERUY4NDAxNjc5NzEw
ODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGF0YWJhc2VTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRjk0NUVDOTE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQc2V1ZG9FbGVtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkY5NDVFQ0ExNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0Vs
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHNldWRvRWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRkQ1Qjk3NzEzNUNDOTc4MDBENUU5MkEg
LyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE4NTE2LDYgKzE4NTMyLDE0IEBACiAJCQkJOTdCQzY5RTIxNTA1RjA4MTAwMUI3NEFD
IC8qIERhdGFiYXNlQXV0aG9yaXplci5oICovLAogCQkJCTk3QkM2OUQ2MTUwNUYwNzYwMDFCNzRB
QyAvKiBEYXRhYmFzZUJhY2tlbmQuY3BwICovLAogCQkJCTk3QkM2OUQ3MTUwNUYwNzYwMDFCNzRB
QyAvKiBEYXRhYmFzZUJhY2tlbmQuaCAqLywKKwkJCQlGRTE2Q0ZDRjE2OUQxREVDMDBEM0EwQzcg
LyogRGF0YWJhc2VCYWNrZW5kQXN5bmMuY3BwICovLAorCQkJCUZFMTZDRkQwMTY5RDFERUMwMEQz
QTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRBc3luYy5oICovLAorCQkJCUZFNkY2QUFEMTY5RTA1NzUw
MEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmNwcCAqLywKKwkJCQlGRTZGNkFBRTE2
OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oICovLAorCQkJCUZFMTZD
RkQxMTY5RDFERUMwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCAqLywKKwkJCQlG
RTE2Q0ZEMjE2OUQxREVDMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kU3luYy5oICovLAorCQkJ
CUZFQkM1RjJGMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuY3BwICovLAorCQkJCUZF
QkM1RjMwMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuaCAqLywKIAkJCQlGRTMzNzFB
MDE2N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmggKi8sCiAJCQkJOTdCQzY5
RTMxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ2FsbGJhY2suaCAqLywKIAkJCQk5N0JDNjlF
NDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDYWxsYmFjay5pZGwgKi8sCkBAIC0yMzMxMiw2
ICsyMzMzNiwxMCBAQAogCQkJCTk3QkM2QTIxMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzZBMjQxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNl
QXV0aG9yaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzY5REIxNTA1RjA3NjAwMUI3NEFD
IC8qIERhdGFiYXNlQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUxNkNGRDQxNjlEMURF
RDAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZEFzeW5jLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
RTZGNkFCMDE2OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkUxNkNGRDYxNjlEMURFRDAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2Vu
ZFN5bmMuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFQkM1RjMyMTZCRDBDQzMwMDY1OUJEMyAvKiBE
YXRhYmFzZUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzM3MUEyMTY3QzExRDQwMEVEQjc1
MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTI1MTUw
NUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
N0JDNkEyODE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmggaW4gSGVhZGVycyAq
LywKQEAgLTI2OTYwLDYgKzI2OTg4LDEwIEBACiAJCQkJOTdCQzZBMjAxNTA1RjA4MTAwMUI3NEFD
IC8qIERhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QkM2QTIzMTUwNUYwODEwMDFC
NzRBQyAvKiBEYXRhYmFzZUF1dGhvcml6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzY5
REExNTA1RjA3NjAwMUI3NEFDIC8qIERhdGFiYXNlQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlGRTE2Q0ZEMzE2OUQxREVEMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kQXN5bmMuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRkU2RjZBQUYxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNl
QmFja2VuZENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUxNkNGRDUxNjlEMURFRDAw
RDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZFN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkVC
QzVGMzExNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5N0JDNkEyNzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUZFNDU2RjE4MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFn
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVCMjZEMjgxNjdBOEYyQTAwRkREMjZCIC8qIERh
dGFiYXNlU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE0MTgzOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDItMDQgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZWQgYmFjay1lbmQgZGF0
YWJhc2UgY2xhc3NlcyArIGEgZmV3IHNtYWxsIGZpeGVzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NzU5LgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL0RhdGFiYXNlT2JzZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VPYnNlcnZlcjo6ZGF0YWJhc2VPcGVuZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VPYnNlcnZlcjo6ZGF0YWJhc2VNb2RpZmllZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZU9ic2VydmVyOjpkYXRhYmFzZUNsb3NlZCk6CisKIDIwMTMt
MDItMDQgIENocmlzIEhvcG1hbiAgPGNqaG9wbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBN
YWtlIG1vdmVDYXJldFRvd2FyZHNXaW5kb3dQb2ludCBub3Qgc25hcCB0byB0aGUgYmVnaW5uaW5n
L2VuZCB3aGVuIG1vdmVkIGFib3ZlL2JlbG93IGVkaXRhYmxlCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9EYXRhYmFzZU9ic2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9EYXRhYmFzZU9ic2VydmVyLmNwcAkocmV2aXNpb24gMTQxODIw
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRGF0YWJhc2VPYnNlcnZlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJDcm9zc1RocmVhZENvcGll
ci5oIgogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQmFj
a2VuZC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
ICJXZWJDb21tb25Xb3JrZXJDbGllbnQuaCIKQEAgLTE3OSwxOSArMTgwLDE5IEBAIGJvb2wgRGF0
YWJhc2VPYnNlcnZlcjo6Y2FuRXN0YWJsaXNoRGF0YWIKIAogdm9pZCBEYXRhYmFzZU9ic2VydmVy
OjpkYXRhYmFzZU9wZW5lZChEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKQogewotICAgIEFTU0VS
VChkYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7
CisgICAgQVNTRVJUKGRhdGFiYXNlLT5kYXRhYmFzZUNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CiAgICAgV2ViRGF0YWJhc2U6Om9ic2VydmVy
KCktPmRhdGFiYXNlT3BlbmVkKFdlYkRhdGFiYXNlKGRhdGFiYXNlKSk7CiB9CiAKIHZvaWQgRGF0
YWJhc2VPYnNlcnZlcjo6ZGF0YWJhc2VNb2RpZmllZChEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNl
KQogewotICAgIEFTU0VSVChkYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0Nv
bnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGRhdGFiYXNlLT5kYXRhYmFzZUNvbnRleHQoKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CiAgICAgV2ViRGF0
YWJhc2U6Om9ic2VydmVyKCktPmRhdGFiYXNlTW9kaWZpZWQoV2ViRGF0YWJhc2UoZGF0YWJhc2Up
KTsKIH0KIAogdm9pZCBEYXRhYmFzZU9ic2VydmVyOjpkYXRhYmFzZUNsb3NlZChEYXRhYmFzZUJh
Y2tlbmQqIGRhdGFiYXNlKQogewotICAgIEFTU0VSVChkYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGRhdGFiYXNlLT5kYXRh
YmFzZUNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQo
KSk7CiAgICAgV2ViRGF0YWJhc2U6Om9ic2VydmVyKCktPmRhdGFiYXNlQ2xvc2VkKFdlYkRhdGFi
YXNlKGRhdGFiYXNlKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186659</attachid>
            <date>2013-02-05 10:51:28 -0800</date>
            <delta_ts>2013-02-05 13:24:02 -0800</delta_ts>
            <desc>One more time with ~DatabaseBackend() assert put back in, and ~DatabaseBackendSync() closing its own database.</desc>
            <filename>bug-108759.patch</filename>
            <type>text/plain</type>
            <size>105087</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMyBAQAorMjAxMy0wMi0wNSAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlZCBiYWNrLWVuZCBk
YXRhYmFzZSBjbGFzc2VzICsgYSBmZXcgc21hbGwgZml4ZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3NTkuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gQWRkZWQgRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dCwgRGF0YWJhc2VCYWNrZW5kQXN5bmMsIGFuZCBEYXRhYmFzZUJhY2tlbmRTeW5jLgorICAg
ICAgICAgICBUaGVzZSBhcmUgYmFja2VuZHMgZm9yIERhdGFiYXNlQ29udGV4dCwgRGF0YWJhc2Us
IGFuZCBEYXRhYmFzZVN5bmMKKyAgICAgICAgICAgcmVzcGVjdGl2ZWx5LgorICAgICAgICAyLiBB
ZGRlZCBEYXRhYmFzZUJhc2UgdG8gaG9sZCBjb21tb24gY29kZSBiZXR3ZWVuIERhdGFiYXNlIGFu
ZCBEYXRhYmFzZVN5bmMuCisgICAgICAgIDMuIFJlbmFtZWQgYSBmZXcgZnVuY3Rpb25zLgorICAg
ICAgICA0LiBDbGVhbmVkIHVwIHVubmVlZGVkIGNvZGUgaW4gfkRhdGFiYXNlU3luYygpLgorICAg
ICAgICA1LiBBZGRlZCBzb21lIEZJWE1FcyBhcyByZW1pbmRlcnMgb3IgcGxhY2VzIHRvIGNsZWFu
IHVwIHdoZW4gd2UncmUgZG9uZQorICAgICAgICAgICByZWZhY3RvcmluZy4KKyAgICAgICAgNi4g
TW92ZWQgdGhlIGNhbGxpbmcgb2YgU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRocmVhZGlu
ZygpIGZyb20gdGhlIERhdGFiYXNlCisgICAgICAgICAgIGNvbnN0cnVjdG9yIHRvIERhdGFiYXNl
TWFuYWdlcjo6b3BlbkRhdGFiYXNlKCkuIFRoaXMganVzdCBtb3ZlcyB0aGUgY2FsbAorICAgICAg
ICAgICBlYXJsaWVyIGluIHRoZSBzYW1lIGNvZGUgcGF0aC4gU3lzdGVtIGluaXRpYWxpemF0aW9u
IHdvcmsgKGkuZS4gaW5pdGlhbGl6aW5nCisgICAgICAgICAgIHNjcmlwdCB0aHJlYWRpbmcgaW4g
dGhpcyBjYXNlKSBzaG91bGQgYmUgZG9uZSBieSB0aGUgbWFuYWdlciBpbnN0ZWFkIG9mIGJ5Cisg
ICAgICAgICAgIGVhY2ggRGF0YWJhc2UgaW5zdGFuY2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2
ZXIuaDoKKyAgICAgICAgKEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6
OkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpiYWNrZW5kKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmg6CisgICAgICAgIChEYXRhYmFzZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFzZUJhY2tlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kOjp+RGF0YWJhc2VCYWNrZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6aW5jcmVtZW50YWxWYWN1dW1JZk5lZWRlZCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuaDoKKyAgICAgICAg
KERhdGFiYXNlQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OmRh
dGFiYXNlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OnNldEZy
b250ZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFz
eW5jLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRBc3luYzo6
RGF0YWJhc2VCYWNrZW5kQXN5bmMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VCYWNrZW5kQXN5bmMuaDogQWRkZWQuCisgICAgICAgIChEYXRhYmFzZUJhY2tlbmRBc3lu
Yyk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRDb250ZXh0Ojpz
ZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRDb250ZXh0
Ojppc0NvbnRleHRUaHJlYWQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VCYWNrZW5kQ29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKERhdGFiYXNlQmFja2VuZENvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kQ29udGV4dDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJh
Y2tlbmRTeW5jLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRT
eW5jOjpEYXRhYmFzZUJhY2tlbmRTeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFj
a2VuZFN5bmM6On5EYXRhYmFzZUJhY2tlbmRTeW5jKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlQmFja2VuZFN5bmMuaDogQWRkZWQuCisgICAgICAgIChEYXRhYmFzZUJh
Y2tlbmRTeW5jKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYXNlOjpEYXRhYmFzZUJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFzZTo6bG9nRXJyb3JNZXNzYWdlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5oOiBBZGRlZC4KKyAgICAg
ICAgKERhdGFiYXNlQmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZUNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpEYXRhYmFz
ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpiYWNrZW5kKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oOgorICAgICAg
ICAoRGF0YWJhc2VDb250ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om9wZW5E
YXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFz
ZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpoYXNPcGVuRGF0YWJh
c2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6aW50ZXJydXB0QWxsRGF0
YWJhc2VzRm9yQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Omdl
dE1heFNpemVGb3JEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6
OmxvZ0Vycm9yTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZU1hbmFnZXIuaDoKKyAgICAgICAgKERhdGFiYXNlTWFuYWdlcik6CisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZVNlcnZlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZVNlcnZlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2UpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZVN5bmM6OkRhdGFiYXNlU3luYyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6On5E
YXRhYmFzZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjpiYWNrZW5kKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5oOgorICAgICAgICAo
RGF0YWJhc2VTeW5jKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJh
Y2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Om9wZW5UcmFja2Vy
RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpjYW5Fc3RhYmxp
c2hEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Omhhc0VudHJ5
Rm9yRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1
cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6cG9wdWxhdGVPcmlnaW5zSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VUcmFja2VyOjpkYXRhYmFzZU5hbWVzRm9yT3JpZ2luTm9Mb2NrKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpzZXREYXRhYmFzZURldGFpbHMpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp1c2FnZUZvck9yaWdpbk5vTG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNldFF1b3RhKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlVHJhY2tlcjo6YWRkRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VUcmFja2VyOjpkZWxldGVPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjppc0RlbGV0aW5nRGF0YWJhc2VPck9yaWdpbkZvcik6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZVRyYWNrZXI6OmNhbkRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlVHJhY2tlcjo6aXNEZWxldGluZ0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlVHJhY2tlcjo6Y2FuRGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlVHJhY2tlcjo6aXNEZWxldGluZ09yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZVRyYWNrZXI6OnJlY29yZERlbGV0aW5nT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlVHJhY2tlcjo6ZG9uZURlbGV0aW5nT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUcmFja2VyLmg6CisgICAgICAgIChEYXRhYmFzZVRyYWNrZXIpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMVHJhbnNhY3Rpb25DbGllbnQ6OmRpZEV4Y2VlZFF1b3RhKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uU3luYy5jcHA6CisgICAgICAgICogTW9k
dWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1bS9EYXRhYmFzZVRyYWNrZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlT3BlbkRhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cHJlcGFyZVRvT3BlbkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6ZmFpbGVkVG9PcGVuRGF0YWJh
c2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1cHRBbGxEYXRh
YmFzZXNGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6Y2xv
c2VEYXRhYmFzZXNJbW1lZGlhdGVseSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9j
aHJvbWl1bS9TUUxUcmFuc2FjdGlvbkNsaWVudENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRDb21taXRXcml0ZVRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRFeGNlZWRRdW90YSk6Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDEzLTAyLTA1ICBUb255IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgQ29udGludWUgbWFraW5nIFhTU0F1ZGl0b3IgdGhyZWFkIHNhZmU6IFJlbW92ZSBk
ZXBlbmRlbmN5IG9uIHBhcnNlcidzIHNvdXJjZUZvclRva2VuIGFuZCBUZXh0UmVzb3VyY2VEZWNv
ZGVyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTQxODIwKQorKysgU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTk1MCw2ICs5NTAsMTAg
QEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwCiAgICAg
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwCisgICAgTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwCisgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUJhY2tlbmRTeW5jLmNwcAorICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNl
LmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAogICAgIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHJldmlzaW9uIDE0MTgyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTIwOTksNiArMjA5OSwxNCBAQCB3ZWJjb3JlX21vZHVsZXNf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZUF1dGhvcml6ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUJhY2tlbmQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQmFja2VuZC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQmFja2VuZEFzeW5jLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQuaCBcCisJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmggXAor
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNlLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuaCBcCiAJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2ljVHlwZXMuaCBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNhbGxiYWNrLmggXAog
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcCBc
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDE0MTgyMCkKKysrIFNvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTE0NDUsNiArMTQ0NSwxMSBAQCBIRUFERVJTICs9
IFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQXV0aG9yaXplci5oIFwKICAgICBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VCYWNrZW5kLmggXAorICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNr
ZW5kQXN5bmMuaCBcCisgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250
ZXh0LmggXAorICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3luYy5oIFwK
KyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5oIFwKKyAgICBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQmFzaWNUeXBlcy5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlQ2FsbGJhY2suaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUVy
cm9yLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmggXApAQCAt
MzAzOSw2ICszMDQ0LDEwIEBAIHVzZT8oUExVR0lOX0JBQ0tFTkRfWExJQikgewogZW5hYmxlPyhT
UUxfREFUQUJBU0UpIHsKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgTW9kdWxlcy93ZWJkYXRh
YmFzZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAgXAorICAgICAgICBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQmFja2VuZEFzeW5jLmNwcCBcCisgICAgICAgIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAgXAorICAgICAgICBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQmFja2VuZFN5bmMuY3BwIFwKKyAgICAgICAgTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZUJhc2UuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZU1hbmFnZXIuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2su
Y3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgXApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTQxODIwKQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAzLDExICsxMDAzLDIxIEBACiAgICAg
ICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuaCcsCiAgICAg
ICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwJywKICAgICAg
ICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5oJywKKyAgICAgICAg
ICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEFzeW5jLmNwcCcsCisgICAg
ICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5oJywKKyAg
ICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQuY3Bw
JywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRl
eHQuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRT
eW5jLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tl
bmRTeW5jLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYXNl
LmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuaCcs
CisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2ljVHlwZXMuaCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNhbGxiYWNrLmgnLAog
ICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaCcsCiAgICAg
ICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUVycm9yLmgnLAogICAgICAgICAg
ICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCcsCisgICAgICAgICAg
ICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaCcsCiAgICAgICAgICAgICAn
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5jcHAnLAogICAgICAgICAgICAgJ01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZl
ci5oCShyZXZpc2lvbiAxNDE4MjApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYs
MTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJhc2VCYWNrZW5kOworY2xh
c3MgRGF0YWJhc2VCYWNrZW5kQXN5bmM7CitjbGFzcyBEYXRhYmFzZUJhY2tlbmRDb250ZXh0Owor
Y2xhc3MgRGF0YWJhc2VCYWNrZW5kU3luYzsKIGNsYXNzIERhdGFiYXNlTWFuYWdlckNsaWVudDsK
LWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAog
Y2xhc3MgQWJzdHJhY3REYXRhYmFzZVNlcnZlciB7CkBAIC03Myw5ICs3NSw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShjb25zdCBTdHJpbmcm
IG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogI2VuZGlmIC8vIFBM
QVRGT1JNKENIUk9NSVVNKQogCi0gICAgdmlydHVhbCB2b2lkIGludGVycnVwdEFsbERhdGFiYXNl
c0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBEYXRhYmFzZUJh
Y2tlbmRDb250ZXh0KikgPSAwOwogCi0gICAgdmlydHVhbCBib29sIGNhbkVzdGFibGlzaERhdGFi
YXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShEYXRhYmFzZUJhY2tlbmRDb250ZXh0
KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25l
ZCBsb25nIGVzdGltYXRlZFNpemUpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhYmFz
ZURldGFpbHMoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkgPSAwOwogICAgIHZp
cnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIGdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBEYXRh
YmFzZUJhY2tlbmQqKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlLmNwcAkocmV2aXNpb24gMTQxODIwKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkNoYW5nZVZlcnNpb25XcmFwcGVyLmgiCiAjaW5jbHVk
ZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5o
IgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKICNpbmNsdWRlICJEYXRhYmFzZUNvbnRl
eHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKQEAgLTQ5LDcgKzUwLDYgQEAKICNp
bmNsdWRlICJTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU1FMVHJhbnNh
Y3Rpb25FcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCi0jaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFj
ay5oIgpAQCAtNjYsMTUgKzY2LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGF0YWJh
c2U6OkRhdGFiYXNlKFBhc3NSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKLSAgICA6
IERhdGFiYXNlQmFja2VuZChkYXRhYmFzZUNvbnRleHQsIG5hbWUsIGV4cGVjdGVkVmVyc2lvbiwg
ZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIEFzeW5jRGF0YWJhc2UpCitEYXRhYmFzZTo6RGF0
YWJhc2UoUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQs
CisgICAgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwg
Y29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQor
ICAgIDogRGF0YWJhc2VCYXNlKGRhdGFiYXNlQ29udGV4dC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKQorICAgICwgRGF0YWJhc2VCYWNrZW5kQXN5bmMoZGF0YWJhc2VDb250ZXh0LCBuYW1lLCBl
eHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKQogICAgICwgbV90cmFu
c2FjdGlvbkluUHJvZ3Jlc3MoZmFsc2UpCiAgICAgLCBtX2lzVHJhbnNhY3Rpb25RdWV1ZUVuYWJs
ZWQodHJ1ZSkKICAgICAsIG1fZGVsZXRlZChmYWxzZSkKIHsKICAgICBtX2RhdGFiYXNlVGhyZWFk
U2VjdXJpdHlPcmlnaW4gPSBtX2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbi0+aXNvbGF0ZWRD
b3B5KCk7CisgICAgc2V0RnJvbnRlbmQodGhpcyk7CiAKLSAgICBTY3JpcHRDb250cm9sbGVyOjpp
bml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VDb250ZXh0LT5kYXRh
YmFzZVRocmVhZCgpKTsKIH0KIApAQCAtMTE0LDYgKzExNiwxMSBAQCBEYXRhYmFzZTo6fkRhdGFi
YXNlKCkKICAgICB9CiB9CiAKK1Bhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQXN5bmM+IERhdGFi
YXNlOjpiYWNrZW5kKCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKwogU3RyaW5nIERhdGFiYXNl
Ojp2ZXJzaW9uKCkgY29uc3QKIHsKICAgICBpZiAobV9kZWxldGVkKQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaAkocmV2aXNpb24gMTQxODIw
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw3ICszMSw4IEBACiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQog
Ci0jaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5k
QXN5bmMuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZUJh
c2ljVHlwZXMuaCIKICNpbmNsdWRlICJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CkBAIC01MCw3ICs1MSw3IEBAIGNsYXNzIFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFj
azsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uV3JhcHBlcjsKIGNsYXNzIFZvaWRDYWxsYmFjazsKIAot
Y2xhc3MgRGF0YWJhc2UgOiBwdWJsaWMgRGF0YWJhc2VCYWNrZW5kIHsKK2NsYXNzIERhdGFiYXNl
IDogcHVibGljIERhdGFiYXNlQmFzZSwgcHVibGljIERhdGFiYXNlQmFja2VuZEFzeW5jIHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5EYXRhYmFzZSgpOwogCkBAIC04Nyw4ICs4OCwxMCBAQCBwcml2
YXRlOgogICAgIGNsYXNzIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrOwogICAgIGNsYXNzIERhdGFi
YXNlVGFibGVOYW1lc1Rhc2s7CiAKLSAgICBEYXRhYmFzZShQYXNzUmVmUHRyPERhdGFiYXNlQ29u
dGV4dD4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24s
Ci0gICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBl
c3RpbWF0ZWRTaXplKTsKKyAgICBEYXRhYmFzZShQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENv
bnRleHQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsCisgICAgICAgIGNvbnN0IFN0cmluZyYgZXhwZWN0
ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGlt
YXRlZFNpemUpOworICAgIFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQXN5bmM+IGJhY2tlbmQo
KTsKKwogICAgIHZvaWQgcnVuVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNh
bGxiYWNrPiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+LAogICAgICAg
ICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFj
aywgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+LCBib29sIHJlYWRPbmx5KTsKIApA
QCAtMTEwLDYgKzExMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RlbGV0ZWQ7CiAKICAgICBm
cmllbmQgY2xhc3MgRGF0YWJhc2VNYW5hZ2VyOworICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZUJh
Y2tlbmRBc3luYzsgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gdGhlIGJhY2tlbmQgaGFzIGJl
ZW4gc3BsaXQgb3V0LgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5k
LmNwcAkocmV2aXNpb24gMTQxODIwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzMsOCBAQAogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRlICJEYXRhYmFzZUF1dGhvcml6ZXIuaCIKKyNp
bmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYXNl
LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCkBAIC0zOSw4ICs0Miw2IEBACiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1
ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCi0j
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgpAQCAtNTgsNyArNTksNyBAQAogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQogLy8gVGhlIERhdGFiYXNlVHJhY2tlciBtYWludGFpbnMg
YSBsaXN0IG9mIGRhdGFiYXNlcyB0aGF0IGhhdmUgYmVlbgogLy8gIm9wZW5lZCIgc28gdGhhdCB0
aGUgY2xpZW50IGNhbiBjYWxsIGludGVycnVwdCBvciBkZWxldGUgb24gZXZlcnkgZGF0YWJhc2UK
LS8vIGFzc29jaWF0ZWQgd2l0aCBhIERhdGFiYXNlQ29udGV4dC4KKy8vIGFzc29jaWF0ZWQgd2l0
aCBhIERhdGFiYXNlQmFja2VuZENvbnRleHQuCiAvLwogLy8gV2Ugd2lsbCBvbmx5IGNhbGwgRGF0
YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UoKSB0byBhZGQgdGhlIGRhdGFiYXNlCiAvLyB0
byB0aGUgdHJhY2tlciBhcyBvcGVuZWQgd2hlbiB3ZSd2ZSBzdWNjZWVkZWQgaW4gb3BlbmluZyB0
aGUgZGF0YWJhc2UsCkBAIC03Myw3ICs3NCw3IEBACiAvLyBUaGUgb25seSBkYXRhYmFzZXMgaW5z
dGFuY2VzIG5vdCB0cmFja2VkIGJ5IHRoZSB0cmFja2VyJ3Mgb3BlbiBkYXRhYmFzZQogLy8gbGlz
dCBhcmUgdGhlIG9uZXMgdGhhdCBoYXZlIG5vdCBiZWVuIGFkZGVkIHlldCwgb3IgdGhlIG9uZXMg
dGhhdCB3ZQogLy8gYXR0ZW1wdGVkIGFuIG9wZW4gb24gYnV0IGZhaWxlZCB0by4gU3VjaCBpbnN0
YW5jZXMgb25seSBleGlzdCBpbiB0aGUKLS8vIERhdGFiYXNlTWFuYWdlcidzIGZhY3RvcnkgbWV0
aG9kcyBmb3IgY3JlYXRpbmcgRGF0YWJhc2VCYWNrZW5kcy4KKy8vIERhdGFiYXNlU2VydmVyJ3Mg
ZmFjdG9yeSBtZXRob2RzIGZvciBjcmVhdGluZyBEYXRhYmFzZUJhY2tlbmRzLgogLy8KIC8vIFRo
ZSBmYWN0b3J5IG1ldGhvZHMgd2lsbCBlaXRoZXIgY2FsbCBvcGVuQW5kVmVyaWZ5VmVyc2lvbigp
IG9yCiAvLyBwZXJmb3JtT3BlbkFuZFZlcmlmeSgpLiBUaGVzZSBtZXRob2RzIHdpbGwgYWRkIHRo
ZSBuZXdseSBpbnN0YW50aWF0ZWQKQEAgLTIwNCwxMCArMjA1LDkgQEAgY29uc3QgY2hhciogRGF0
YWJhc2VCYWNrZW5kOjpkYXRhYmFzZUluZgogICAgIHJldHVybiBpbmZvVGFibGVOYW1lOwogfQog
Ci1EYXRhYmFzZUJhY2tlbmQ6OkRhdGFiYXNlQmFja2VuZChQYXNzUmVmUHRyPERhdGFiYXNlQ29u
dGV4dD4gZGF0YWJhc2VDb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
ZXhwZWN0ZWRWZXJzaW9uLAorRGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFzZUJhY2tlbmQoUGFzc1Jl
ZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sCiAgICAgY29uc3QgU3RyaW5n
JiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBEYXRhYmFzZVR5cGUg
ZGF0YWJhc2VUeXBlKQogICAgIDogbV9kYXRhYmFzZUNvbnRleHQoZGF0YWJhc2VDb250ZXh0KQot
ICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KG1fZGF0YWJhc2VDb250ZXh0LT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpCiAgICAgLCBtX25hbWUobmFtZS5pc29sYXRlZENvcHkoKSkKICAg
ICAsIG1fZXhwZWN0ZWRWZXJzaW9uKGV4cGVjdGVkVmVyc2lvbi5pc29sYXRlZENvcHkoKSkKICAg
ICAsIG1fZGlzcGxheU5hbWUoZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkpCkBAIC0yMTcsOCAr
MjE3LDcgQEAgRGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFzZUJhY2tlbmQoUGFzc1JlZgogICAgICwg
bV9uZXcoZmFsc2UpCiAgICAgLCBtX2lzU3luY0RhdGFiYXNlKGRhdGFiYXNlVHlwZSA9PSBTeW5j
RGF0YWJhc2UpCiB7Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2VDb250ZXh0LT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKLSAgICBtX2NvbnRleHRUaHJlYWRTZWN1
cml0eU9yaWdpbiA9IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+
aXNvbGF0ZWRDb3B5KCk7CisgICAgbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4gPSBtX2Rh
dGFiYXNlQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aXNvbGF0ZWRDb3B5KCk7CiAKICAgICBt
X2RhdGFiYXNlQXV0aG9yaXplciA9IERhdGFiYXNlQXV0aG9yaXplcjo6Y3JlYXRlKGluZm9UYWJs
ZU5hbWUpOwogCkBAIC0yNDIsNiArMjQxLDE1IEBAIERhdGFiYXNlQmFja2VuZDo6RGF0YWJhc2VC
YWNrZW5kKFBhc3NSZWYKIAogRGF0YWJhc2VCYWNrZW5kOjp+RGF0YWJhc2VCYWNrZW5kKCkKIHsK
KyAgICAvLyBTUUxpdGUgaXMgIm11bHRpLXRocmVhZCBzYWZlIiwgYnV0IGVhY2ggZGF0YWJhc2Ug
aGFuZGxlIGNhbiBvbmx5IGJlIHVzZWQKKyAgICAvLyBvbiBhIHNpbmdsZSB0aHJlYWQgYXQgYSB0
aW1lLgorICAgIC8vCisgICAgLy8gRm9yIERhdGFiYXNlQmFja2VuZEFzeW5jLCB3ZSBvcGVuIHRo
ZSBTUUxpdGUgZGF0YWJhc2Ugb24gdGhlIERhdGFiYXNlVGhyZWFkLAorICAgIC8vIGFuZCBoZW5j
ZSB3ZSBzaG91bGQgYWxzbyBjbG9zZSBpdCBvbiB0aGF0IHNhbWUgdGhyZWFkLiBUaGlzIG1lYW5z
IHRoYXQgdGhlCisgICAgLy8gU1FMaXRlIGRhdGFiYXNlIG5lZWQgdG8gYmUgY2xvc2VkIGJ5IGFu
b3RoZXIgbWVjaGFuaXNtIChzZWUKKyAgICAvLyBEYXRhYmFzZUNvbnRleHQ6OnN0b3BEYXRhYmFz
ZXMoKSkuIEJ5IHRoZSB0aW1lIHdlIGdldCBoZXJlLCB0aGUgU1FMaXRlCisgICAgLy8gZGF0YWJh
c2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNsb3NlZC4KKwogICAgIEFTU0VSVCghbV9vcGVu
ZWQpOwogfQogCkBAIC00MjcsMTEgKzQzNSw2IEBAIGJvb2wgRGF0YWJhc2VCYWNrZW5kOjpwZXJm
b3JtT3BlbkFuZFZlcmkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogRGF0YWJhc2VCYWNrZW5kOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpOwotfQotCiBTZWN1cml0
eU9yaWdpbiogRGF0YWJhc2VCYWNrZW5kOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2luLmdldCgpOwpAQCAtNjAxLDcgKzYw
NCw3IEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kOjppbmNyZW1lbnRhbFZhY3V1bUkKICAgICAgICAg
aW50IHJlc3VsdCA9IG1fc3FsaXRlRGF0YWJhc2UucnVuSW5jcmVtZW50YWxWYWN1dW1Db21tYW5k
KCk7CiAgICAgICAgIHJlcG9ydFZhY3V1bURhdGFiYXNlUmVzdWx0KHJlc3VsdCk7CiAgICAgICAg
IGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0T2spCi0gICAgICAgICAgICBsb2dFcnJvck1lc3NhZ2Uo
Zm9ybWF0RXJyb3JNZXNzYWdlKCJlcnJvciB2YWN1dW1pbmcgZGF0YWJhc2UiLCByZXN1bHQsIG1f
c3FsaXRlRGF0YWJhc2UubGFzdEVycm9yTXNnKCkpKTsKKyAgICAgICAgICAgIG1fZnJvbnRlbmQt
PmxvZ0Vycm9yTWVzc2FnZShmb3JtYXRFcnJvck1lc3NhZ2UoImVycm9yIHZhY3V1bWluZyBkYXRh
YmFzZSIsIHJlc3VsdCwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3JNc2coKSkpOwogICAgIH0K
IH0KIApAQCAtNjE2LDExICs2MTksNiBAQCBib29sIERhdGFiYXNlQmFja2VuZDo6aXNJbnRlcnJ1
cHRlZCgpCiAgICAgcmV0dXJuIG1fc3FsaXRlRGF0YWJhc2UuaXNJbnRlcnJ1cHRlZCgpOwogfQog
Ci12b2lkIERhdGFiYXNlQmFja2VuZDo6bG9nRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKLXsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdl
KE90aGVyTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UpOwotfQotCiAj
aWYgUExBVEZPUk0oQ0hST01JVU0pCiAvLyBUaGVzZSBhcmUgdXNlZCB0byBnZW5lcmF0ZSBoaXN0
b2dyYW1zIG9mIGVycm9ycyBzZWVuIHdpdGggd2Vic3FsLgogLy8gU2VlIGFib3V0Omhpc3RvZ3Jh
bXMgaW4gY2hyb21pdW0uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmgJKHJldmlzaW9uIDE0MTgyMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Nyw4ICs0OCw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERhdGFiYXNlQXV0
aG9yaXplcjsKLWNsYXNzIERhdGFiYXNlQ29udGV4dDsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CitjbGFzcyBEYXRhYmFzZUJhY2tlbmRDb250ZXh0OworY2xhc3MgRGF0YWJhc2VCYXNl
OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIERhdGFiYXNlQmFja2VuZCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhYmFzZUJhY2tlbmQ+IHsKQEAgLTYxLDcgKzYyLDYg
QEAgcHVibGljOgogICAgIGJvb2wgaXNOZXcoKSBjb25zdCB7IHJldHVybiBtX25ldzsgfQogICAg
IGJvb2wgaXNTeW5jRGF0YWJhc2UoKSBjb25zdCB7IHJldHVybiBtX2lzU3luY0RhdGFiYXNlOyB9
CiAKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdp
bigpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0lkZW50aWZpZXIoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFN0cmluZyBkaXNwbGF5TmFtZSgpIGNvbnN0OwpAQCAtODgsNyArODgsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1hcmtBc0RlbGV0ZWRBbmRDbG9zZSgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbW1lZGlhdGVseSgpID0gMDsKIAotICAgIERhdGFiYXNl
Q29udGV4dCogZGF0YWJhc2VDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFzZUNvbnRl
eHQuZ2V0KCk7IH0KKyAgICBEYXRhYmFzZUJhY2tlbmRDb250ZXh0KiBkYXRhYmFzZUNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlQ29udGV4dC5nZXQoKTsgfQorICAgIHZvaWQgc2V0
RnJvbnRlbmQoRGF0YWJhc2VCYXNlKiBmcm9udGVuZCkgeyBtX2Zyb250ZW5kID0gZnJvbnRlbmQ7
IH0KIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBDaGFuZ2VWZXJzaW9uV3JhcHBlcjsK
QEAgLTEwMiw3ICsxMDMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFN5bmNEYXRhYmFzZQogICAg
IH07CiAKLSAgICBEYXRhYmFzZUJhY2tlbmQoUGFzc1JlZlB0cjxEYXRhYmFzZUNvbnRleHQ+LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAorICAgIERh
dGFiYXNlQmFja2VuZChQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAogICAgICAgICBjb25z
dCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIERhdGFi
YXNlVHlwZSk7CiAKICAgICB2b2lkIGNsb3NlRGF0YWJhc2UoKTsKQEAgLTExNyw4ICsxMTgsNiBA
QCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRDYWNoZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYpOwog
ICAgIGJvb2wgZ2V0QWN0dWFsVmVyc2lvbkZvclRyYW5zYWN0aW9uKFN0cmluZyYgdmVyc2lvbik7
CiAKLSAgICB2b2lkIGxvZ0Vycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotCiAg
ICAgdm9pZCByZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQoaW50IGVycm9yU2l0ZSwgaW50IHdlYlNx
bEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSk7CiAgICAgdm9pZCByZXBvcnRDaGFuZ2VW
ZXJzaW9uUmVzdWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxp
dGVFcnJvckNvZGUpOwogICAgIHZvaWQgcmVwb3J0U3RhcnRUcmFuc2FjdGlvblJlc3VsdChpbnQg
ZXJyb3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKTsKQEAg
LTEyOSw4ICsxMjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRhdGFi
YXNlSW5mb1RhYmxlTmFtZSgpOwogCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX2NvbnRl
eHRUaHJlYWRTZWN1cml0eU9yaWdpbjsKLSAgICBSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBtX2Rh
dGFiYXNlQ29udGV4dDsgLy8gQXNzb2NpYXRlZCB3aXRoIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC4KLSAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0OworICAgIFJlZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiBtX2RhdGFiYXNlQ29u
dGV4dDsgLy8gQXNzb2NpYXRlZCB3aXRoIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC4KIAogICAg
IFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fZXhwZWN0ZWRWZXJzaW9uOwpAQCAtMTQ4LDkg
KzE0NiwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9uZXc7CiAgICAgY29uc3QgYm9vbCBtX2lz
U3luY0RhdGFiYXNlOwogCisgICAgRGF0YWJhc2VCYXNlKiBtX2Zyb250ZW5kOwogICAgIFNRTGl0
ZURhdGFiYXNlIG1fc3FsaXRlRGF0YWJhc2U7CiAKICAgICBSZWZQdHI8RGF0YWJhc2VBdXRob3Jp
emVyPiBtX2RhdGFiYXNlQXV0aG9yaXplcjsKKworICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZVNl
cnZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5
bmMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZEFzeW5jLmgiCisKKyNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RhdGFiYXNlQmFja2VuZEFzeW5jOjpEYXRhYmFzZUJh
Y2tlbmRBc3luYyhQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGRhdGFiYXNlQ29u
dGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwg
Y29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQor
ICAgIDogRGF0YWJhc2VCYWNrZW5kKGRhdGFiYXNlQ29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJz
aW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSwgQXN5bmNEYXRhYmFzZSkKK3sKK30KKwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNF
KQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tl
bmRBc3luYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQXN5bmMuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIERhdGFiYXNlQmFja2VuZEFzeW5jX2gKKyNkZWZpbmUgRGF0YWJhc2VC
YWNrZW5kQXN5bmNfaAorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkRh
dGFiYXNlQmFja2VuZC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERhdGFiYXNlU2VydmVyOworCisvLyBGSVhNRTogVGhp
cyBpbXBsZW1lbnRhdGlvbiBvZiBEYXRhYmFzZUJhY2tlbmRBc3luYyBpcyBvbmx5IGEgcGxhY2Ug
aG9sZGVyCisvLyBmb3IgdGhlIHNwbGl0IG91dCBvZiB0aGUgRGF0YWJhc2UgYmFja2VuZCB0byBi
ZSBkb25lIGxhdGVyLiBUaGlzCisvLyBwbGFjZSBob2xkZXIgaXMgbmVlZGVkIHRvIGFsbG93IG90
aGVyIGNvZGUgdGhhdCBuZWVkIHRvIHJlZmVyZW5jZSB0aGUKKy8vIERhdGFiYXNlQmFja2VuZEFz
eW5jIHRvIGRvIHNvIGJlZm9yZSB0aGUgcHJvcGVyIGJhY2tlbmQgc3BsaXQgaXMKKy8vIGF2YWls
YWJsZS4gVGhpcyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsIGltcGxlbWVudGF0
aW9uIGxhdGVyLgorCitjbGFzcyBEYXRhYmFzZUJhY2tlbmRBc3luYyA6IHB1YmxpYyBEYXRhYmFz
ZUJhY2tlbmQgeworcHJvdGVjdGVkOgorICAgIERhdGFiYXNlQmFja2VuZEFzeW5jKFBhc3NSZWZQ
dHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVk
IGxvbmcgZXN0aW1hdGVkU2l6ZSk7CisKKyAgICBmcmllbmQgY2xhc3MgRGF0YWJhc2VNYW5hZ2Vy
OyAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgb25jZSB3ZSBoYXZlIGlzb2xhdGVkIHRoaXMgdG8gdGhl
IGJhY2tlbmQuCisgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlU2VydmVyOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2Vu
ZGlmIC8vIERhdGFiYXNlQmFja2VuZEFzeW5jX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRDb250ZXh0
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKKworI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2VjdXJpdHlPcmlnaW4qIERhdGFiYXNlQmFja2Vu
ZENvbnRleHQ6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpOworfQorCitib29sIERhdGFiYXNlQmFj
a2VuZENvbnRleHQ6OmlzQ29udGV4dFRocmVhZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZENvbnRleHQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
QmFja2VuZENvbnRleHQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgRGF0YWJhc2VCYWNrZW5kQ29udGV4dF9oCisjZGVmaW5lIERhdGFiYXNlQmFja2Vu
ZENvbnRleHRfaAorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkRhdGFi
YXNlQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKKworLy8gRklYTUU6IFRoaXMgaW1w
bGVtZW50YXRpb24gb2YgRGF0YWJhc2VCYWNrZW5kQ29udGV4dCBpcyBvbmx5IGEgcGxhY2UgaG9s
ZGVyCisvLyBmb3IgdGhlIHNwbGl0IG91dCBvZiB0aGUgRGF0YWJhc2VDb250ZXh0IGJhY2tlbmQg
dG8gYmUgZG9uZSBsYXRlci4gVGhpcworLy8gcGxhY2UgaG9sZGVyIGlzIG5lZWRlZCB0byBhbGxv
dyBvdGhlciBjb2RlIHRoYXQgbmVlZCB0byByZWZlcmVuY2UgdGhlCisvLyBEYXRhYmFzZUJhY2tl
bmRDb250ZXh0IHRvIGRvIHNvIGJlZm9yZSB0aGUgcHJvcGVyIGJhY2tlbmQgc3BsaXQgaXMKKy8v
IGF2YWlsYWJsZS4gVGhpcyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsIGltcGxl
bWVudGF0aW9uIGxhdGVyLgorCitjbGFzcyBEYXRhYmFzZUJhY2tlbmRDb250ZXh0IDogcHVibGlj
IERhdGFiYXNlQ29udGV4dCB7CitwdWJsaWM6CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsgfQorICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0Owor
CisgICAgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBE
YXRhYmFzZUJhY2tlbmRDb250ZXh0X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRTeW5jLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNr
ZW5kU3luYy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkRhdGFiYXNlQmFja2VuZFN5bmMuaCIKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
CisKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworRGF0YWJhc2VCYWNrZW5kU3luYzo6RGF0YWJhc2VCYWNrZW5kU3luYyhQYXNzUmVm
UHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNw
bGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQorICAgIDogRGF0YWJhc2VCYWNr
ZW5kKGRhdGFiYXNlQ29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwg
ZXN0aW1hdGVkU2l6ZSwgU3luY0RhdGFiYXNlKQoreworfQorCitEYXRhYmFzZUJhY2tlbmRTeW5j
Ojp+RGF0YWJhc2VCYWNrZW5kU3luYygpCit7CisgICAgLy8gU1FMaXRlIGlzICJtdWx0aS10aHJl
YWQgc2FmZSIsIGJ1dCBlYWNoIGRhdGFiYXNlIGhhbmRsZSBjYW4gb25seSBiZSB1c2VkCisgICAg
Ly8gb24gYSBzaW5nbGUgdGhyZWFkIGF0IGEgdGltZS4KKyAgICAvLworICAgIC8vIEZvciBEYXRh
YmFzZUJhY2tlbmRTeW5jLCB3ZSBvcGVuIHRoZSBTUUxpdGUgZGF0YWJhc2Ugb24gdGhlIHNjcmlw
dCBjb250ZXh0CisgICAgLy8gdGhyZWFkLiBBbmQgaGVuY2Ugd2Ugc2hvdWxkIGFsc28gY2xvc2Ug
aXQgb24gdGhhdCBzYW1lIHRocmVhZC4gVGhpcyBtZWFucworICAgIC8vIHRoYXQgdGhlIFNRTGl0
ZSBkYXRhYmFzZSBuZWVkIHRvIGJlIGNsb3NlZCBoZXJlIGluIHRoZSBkZXN0cnVjdG9yLgorCisg
ICAgQVNTRVJUKG1fZGF0YWJhc2VDb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgaWYg
KG9wZW5lZCgpKQorICAgICAgICBjbG9zZURhdGFiYXNlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZFN5bmMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2Vu
ZFN5bmMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VCYWNrZW5kU3luYy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRGF0
YWJhc2VCYWNrZW5kU3luY19oCisjZGVmaW5lIERhdGFiYXNlQmFja2VuZFN5bmNfaAorCisjaWYg
RU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZC5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIERhdGFiYXNlU2VydmVyOworCisvLyBGSVhNRTogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBE
YXRhYmFzZUJhY2tlbmRTeW5jIGlzIG9ubHkgYSBwbGFjZSBob2xkZXIKKy8vIGZvciB0aGUgc3Bs
aXQgb3V0IG9mIHRoZSBEYXRhYmFzZVN5bmMgYmFja2VuZCB0byBiZSBkb25lIGxhdGVyLiBUaGlz
CisvLyBwbGFjZSBob2xkZXIgaXMgbmVlZGVkIHRvIGFsbG93IG90aGVyIGNvZGUgdGhhdCBuZWVk
IHRvIHJlZmVyZW5jZSB0aGUKKy8vIERhdGFiYXNlQmFja2VuZFN5bmMgdG8gZG8gc28gYmVmb3Jl
IHRoZSBwcm9wZXIgYmFja2VuZCBzcGxpdCBpcworLy8gYXZhaWxhYmxlLiBUaGlzIHNob3VsZCBi
ZSByZXBsYWNlZCB3aXRoIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gbGF0ZXIuCisKK2NsYXNz
IERhdGFiYXNlQmFja2VuZFN5bmMgOiBwdWJsaWMgRGF0YWJhc2VCYWNrZW5kIHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5EYXRhYmFzZUJhY2tlbmRTeW5jKCk7CisKK3Byb3RlY3RlZDoKKyAgICBE
YXRhYmFzZUJhY2tlbmRTeW5jKFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4sIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0
cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CisKKyAgICBm
cmllbmQgY2xhc3MgRGF0YWJhc2VNYW5hZ2VyOyAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgb25jZSB3
ZSBoYXZlIGlzb2xhdGVkIHRoaXMgdG8gdGhlIGJhY2tlbmQuCisgICAgZnJpZW5kIGNsYXNzIERh
dGFiYXNlU2VydmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIERhdGFiYXNlQmFja2VuZFN5bmNfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VCYXNlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VCYXNlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYXNlLmgiCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQorCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGF0YWJhc2VCYXNlOjpE
YXRhYmFzZUJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKKyAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KQoreworICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVh
ZCgpKTsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogRGF0YWJhc2VCYXNlOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LmdldCgpOworfQorCit2b2lkIERhdGFiYXNlQmFzZTo6bG9nRXJyb3JNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFk
ZENvbnNvbGVNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1l
c3NhZ2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
U1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlQmFzZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIERhdGFiYXNlQmFzZV9oCisjZGVmaW5lIERhdGFiYXNlQmFzZV9oCisKKyNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xhc3MgRGF0
YWJhc2VCYXNlIHsKK3B1YmxpYzoKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisgICAgdm9pZCBsb2dFcnJvck1lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKKworcHJvdGVjdGVkOgorICAgIERhdGFiYXNlQmFzZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CisKKyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4g
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIERhdGFiYXNlQmFz
ZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZUNvbnRleHQuY3BwCShyZXZpc2lvbiAxNDE4MjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVD
bGllbnQuaCIKICNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2Vu
ZENvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRh
YmFzZVRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgpAQCAtMTA5LDcgKzExMCw3
IEBAIERhdGFiYXNlQ29udGV4dDo6RGF0YWJhc2VDb250ZXh0KFNjcmlwdEUKIAogICAgIC8vIEZv
ciBkZWJ1ZyBhY2NvdW50aW5nIG9ubHkuIFdlIG11c3QgZG8gdGhpcyBiZWZvcmUgd2UgcmVnaXN0
ZXIgdGhlCiAgICAgLy8gaW5zdGFuY2UuIFRoZSBhc3NlcnRpb25zIGFzc3VtZSB0aGlzLgotICAg
IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRpZENvbnN0cnVjdERhdGFiYXNlQ29udGV4dCgp
OyAKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kaWRDb25zdHJ1Y3REYXRhYmFzZUNv
bnRleHQoKTsKIAogICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnJlZ2lzdGVyRGF0YWJh
c2VDb250ZXh0KHRoaXMpOwogfQpAQCAtMTUxLDYgKzE1MiwxMiBAQCB2b2lkIERhdGFiYXNlQ29u
dGV4dDo6c3RvcCgpCiAgICAgc3RvcERhdGFiYXNlcygpOwogfQogCitQYXNzUmVmUHRyPERhdGFi
YXNlQmFja2VuZENvbnRleHQ+IERhdGFiYXNlQ29udGV4dDo6YmFja2VuZCgpCit7CisgICAgRGF0
YWJhc2VCYWNrZW5kQ29udGV4dCogYmFja2VuZCA9IHN0YXRpY19jYXN0PERhdGFiYXNlQmFja2Vu
ZENvbnRleHQqPih0aGlzKTsKKyAgICByZXR1cm4gYmFja2VuZDsKK30KKwogRGF0YWJhc2VUaHJl
YWQqIERhdGFiYXNlQ29udGV4dDo6ZGF0YWJhc2VUaHJlYWQoKQogewogICAgIGlmICghbV9kYXRh
YmFzZVRocmVhZCAmJiAhbV9oYXNPcGVuRGF0YWJhc2VzKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmgJKHJldmlz
aW9uIDE0MTgyMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJhc2U7CitjbGFzcyBEYXRhYmFzZUJhY2tlbmRDb250ZXh0
OwogY2xhc3MgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyOwogY2xhc3MgRGF0YWJhc2VUaHJlYWQ7
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpAQCAtNTAsNyArNTEsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3RvcCgpOwogCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQorICAgIFBhc3NSZWZQ
dHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4gYmFja2VuZCgpOwogICAgIERhdGFiYXNlVGhyZWFk
KiBkYXRhYmFzZVRocmVhZCgpOwogCiAgICAgdm9pZCBzZXRIYXNPcGVuRGF0YWJhc2VzKCkgeyBt
X2hhc09wZW5EYXRhYmFzZXMgPSB0cnVlOyB9CkBAIC03Miw2ICs3Myw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2lzUmVnaXN0ZXJlZDsKICAgICBib29sIG1faGFzUmVxdWVzdGVkVGVybWluYXRp
b247CiAKKyAgICBmcmllbmQgY2xhc3MgRGF0YWJhc2VCYWNrZW5kQ29udGV4dDsKICAgICBmcmll
bmQgY2xhc3MgRGF0YWJhc2VNYW5hZ2VyOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2aXNp
b24gMTQxODIwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMiArMzAsMTYgQEAKIAogI2luY2x1
ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kLmgiCisjaW5jbHVkZSAi
RGF0YWJhc2VCYWNrZW5kQXN5bmMuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0
LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kU3luYy5oIgogI2luY2x1ZGUgIkRhdGFiYXNl
Q2FsbGJhY2suaCIKICNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJEYXRh
YmFzZVN5bmMuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRhc2suaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JEYXRhYmFzZUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKQEAgLTIwMSwyMyArMjA1LDI1IEBA
IFBhc3NSZWZQdHI8RGF0YWJhc2U+IERhdGFiYXNlTWFuYWdlcjo6b3AKICAgICB1bnNpZ25lZCBs
b25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25D
YWxsYmFjaywKICAgICBEYXRhYmFzZUVycm9yJiBlcnJvcikKIHsKKyAgICBTY3JpcHRDb250cm9s
bGVyOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgUmVmUHRyPERhdGFiYXNlQ29udGV4dD4g
ZGF0YWJhc2VDb250ZXh0ID0gZGF0YWJhc2VDb250ZXh0Rm9yKGNvbnRleHQpOworICAgIFJlZlB0
cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiBiYWNrZW5kQ29udGV4dCA9IGRhdGFiYXNlQ29udGV4
dC0+YmFja2VuZCgpOwogICAgIEFTU0VSVChlcnJvciA9PSBEYXRhYmFzZUVycm9yOjpOb25lKTsK
IAotICAgIGlmICghY2FuRXN0YWJsaXNoRGF0YWJhc2UoY29udGV4dCwgbmFtZSwgZGlzcGxheU5h
bWUsIGVzdGltYXRlZFNpemUpKSB7CisgICAgaWYgKCFtX3NlcnZlci0+Y2FuRXN0YWJsaXNoRGF0
YWJhc2UoYmFja2VuZENvbnRleHQuZ2V0KCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRT
aXplKSkgewogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIkRhdGFiYXNlICVzIGZvciBvcmlnaW4g
JXMgbm90IGFsbG93ZWQgdG8gYmUgZXN0YWJsaXNoZWQiLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBj
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVmUHRyPERhdGFiYXNlPiBkYXRhYmFzZSA9
IGFkb3B0UmVmKG5ldyBEYXRhYmFzZShkYXRhYmFzZUNvbnRleHQsIG5hbWUsIGV4cGVjdGVkVmVy
c2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpKTsKLQogICAgIFN0cmluZyBlcnJvck1l
c3NhZ2U7CisgICAgUmVmUHRyPERhdGFiYXNlPiBkYXRhYmFzZSA9IGFkb3B0UmVmKG5ldyBEYXRh
YmFzZShiYWNrZW5kQ29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwg
ZXN0aW1hdGVkU2l6ZSkpOworCiAgICAgaWYgKCFkYXRhYmFzZS0+b3BlbkFuZFZlcmlmeVZlcnNp
b24oIWNyZWF0aW9uQ2FsbGJhY2ssIGVycm9yLCBlcnJvck1lc3NhZ2UpKSB7Ci0gICAgICAgIGRh
dGFiYXNlLT5sb2dFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgbG9nRXJyb3JN
ZXNzYWdlKGNvbnRleHQsIGVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAotICAgIHNldERhdGFiYXNlRGV0YWlscyhjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBuYW1l
LCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CisgICAgbV9zZXJ2ZXItPnNldERhdGFiYXNl
RGV0YWlscyhjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0
aW1hdGVkU2l6ZSk7CiAgICAgZGF0YWJhc2VDb250ZXh0LT5zZXRIYXNPcGVuRGF0YWJhc2VzKCk7
CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZShjb250ZXh0
LCBkYXRhYmFzZSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aG9zdCgpLCBuYW1lLCBleHBl
Y3RlZFZlcnNpb24pOwpAQCAtMjM1LDIzICsyNDEsMjQgQEAgUGFzc1JlZlB0cjxEYXRhYmFzZVN5
bmM+IERhdGFiYXNlTWFuYWdlcgogICAgIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgUGFz
c1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrLCBEYXRhYmFzZUVycm9y
JiBlcnJvcikKIHsKICAgICBSZWZQdHI8RGF0YWJhc2VDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQg
PSBkYXRhYmFzZUNvbnRleHRGb3IoY29udGV4dCk7CisgICAgUmVmUHRyPERhdGFiYXNlQmFja2Vu
ZENvbnRleHQ+IGJhY2tlbmRDb250ZXh0ID0gZGF0YWJhc2VDb250ZXh0LT5iYWNrZW5kKCk7CiAg
ICAgQVNTRVJUKGNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKICAgICBBU1NFUlQoZXJyb3Ig
PT0gRGF0YWJhc2VFcnJvcjo6Tm9uZSk7CiAKLSAgICBpZiAoIWNhbkVzdGFibGlzaERhdGFiYXNl
KGNvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKSkgeworICAgIGlmICgh
bV9zZXJ2ZXItPmNhbkVzdGFibGlzaERhdGFiYXNlKGJhY2tlbmRDb250ZXh0LmdldCgpLCBuYW1l
LCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkpIHsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEks
ICJEYXRhYmFzZSAlcyBmb3Igb3JpZ2luICVzIG5vdCBhbGxvd2VkIHRvIGJlIGVzdGFibGlzaGVk
IiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJl
ZlB0cjxEYXRhYmFzZVN5bmM+IGRhdGFiYXNlID0gYWRvcHRSZWYobmV3IERhdGFiYXNlU3luYyhk
YXRhYmFzZUNvbnRleHQsIG5hbWUsIGV4cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGlt
YXRlZFNpemUpKTsKLQogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7CisgICAgUmVmUHRyPERhdGFi
YXNlU3luYz4gZGF0YWJhc2UgPSBhZG9wdFJlZihuZXcgRGF0YWJhc2VTeW5jKGJhY2tlbmRDb250
ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKSk7
CisKICAgICBpZiAoIWRhdGFiYXNlLT5vcGVuQW5kVmVyaWZ5VmVyc2lvbighY3JlYXRpb25DYWxs
YmFjaywgZXJyb3IsIGVycm9yTWVzc2FnZSkpIHsKLSAgICAgICAgZGF0YWJhc2UtPmxvZ0Vycm9y
TWVzc2FnZShlcnJvck1lc3NhZ2UpOworICAgICAgICBsb2dFcnJvck1lc3NhZ2UoY29udGV4dCwg
ZXJyb3JNZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgc2V0RGF0YWJh
c2VEZXRhaWxzKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIG5hbWUsIGRpc3BsYXlOYW1lLCBl
c3RpbWF0ZWRTaXplKTsKKyAgICBtX3NlcnZlci0+c2V0RGF0YWJhc2VEZXRhaWxzKGNvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKIAog
ICAgIGlmIChkYXRhYmFzZS0+aXNOZXcoKSAmJiBjcmVhdGlvbkNhbGxiYWNrLmdldCgpKSB7CiAg
ICAgICAgIExPRyhTdG9yYWdlQVBJLCAiSW52b2tpbmcgdGhlIGNyZWF0aW9uIGNhbGxiYWNrIGZv
ciBkYXRhYmFzZSAlcFxuIiwgZGF0YWJhc2UuZ2V0KCkpOwpAQCAtMjY2LDcgKzI3Myw3IEBAIGJv
b2wgRGF0YWJhc2VNYW5hZ2VyOjpoYXNPcGVuRGF0YWJhc2VzKFMKICAgICBSZWZQdHI8RGF0YWJh
c2VDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQgPSBleGlzdGluZ0RhdGFiYXNlQ29udGV4dEZvcihj
b250ZXh0KTsKICAgICBpZiAoIWRhdGFiYXNlQ29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiBkYXRhYmFzZUNvbnRleHQtPm1faGFzT3BlbkRhdGFiYXNlczsKKyAgICBy
ZXR1cm4gZGF0YWJhc2VDb250ZXh0LT5oYXNPcGVuRGF0YWJhc2VzKCk7CiB9CiAKIHZvaWQgRGF0
YWJhc2VNYW5hZ2VyOjpzdG9wRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIERhdGFiYXNlVGFza1N5bmNocm9uaXplciogc3luY2hyb25pemVyKQpAQCAtMzU1LDIyICsz
NjIsMTcgQEAgdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmludGVycnVwdEFsbERhdGFiYQogewogICAg
IFJlZlB0cjxEYXRhYmFzZUNvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCA9IGV4aXN0aW5nRGF0YWJh
c2VDb250ZXh0Rm9yKGNvbnRleHQpOwogICAgIGlmIChkYXRhYmFzZUNvbnRleHQpCi0gICAgICAg
IG1fc2VydmVyLT5pbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnRleHQpOworICAg
ICAgICBtX3NlcnZlci0+aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChkYXRhYmFzZUNv
bnRleHQtPmJhY2tlbmQoKS5nZXQoKSk7CiB9CiAKLWJvb2wgRGF0YWJhc2VNYW5hZ2VyOjpjYW5F
c3RhYmxpc2hEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0
aW1hdGVkU2l6ZSkKLXsKLSAgICByZXR1cm4gbV9zZXJ2ZXItPmNhbkVzdGFibGlzaERhdGFiYXNl
KGNvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKLX0KLQotdm9pZCBE
YXRhYmFzZU1hbmFnZXI6OnNldERhdGFiYXNlRGV0YWlscyhTZWN1cml0eU9yaWdpbiogb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVk
IGxvbmcgZXN0aW1hdGVkU2l6ZSkKK3Vuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZU1hbmFnZXI6
OmdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKQog
ewotICAgIG1fc2VydmVyLT5zZXREYXRhYmFzZURldGFpbHMob3JpZ2luLCBuYW1lLCBkaXNwbGF5
TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CisgICAgcmV0dXJuIG1fc2VydmVyLT5nZXRNYXhTaXplRm9y
RGF0YWJhc2UoZGF0YWJhc2UpOwogfQogCi11bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VNYW5h
Z2VyOjpnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFz
ZSkKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpsb2dFcnJvck1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIHJldHVybiBt
X3NlcnZlci0+Z2V0TWF4U2l6ZUZvckRhdGFiYXNlKGRhdGFiYXNlKTsKKyAgICBjb250ZXh0LT5h
ZGRDb25zb2xlTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBt
ZXNzYWdlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCShyZXZp
c2lvbiAxNDE4MjApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRl
ICJBYnN0cmFjdERhdGFiYXNlU2VydmVyLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VCYXNpY1R5cGVz
LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VFcnJv
ci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KQEAgLTQwLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBYnN0cmFj
dERhdGFiYXNlU2VydmVyOwogY2xhc3MgRGF0YWJhc2U7CitjbGFzcyBEYXRhYmFzZUJhY2tlbmQ7
CiBjbGFzcyBEYXRhYmFzZUNhbGxiYWNrOwogY2xhc3MgRGF0YWJhc2VDb250ZXh0OwogY2xhc3Mg
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50OwpAQCAtMTEyLDkgKzExNCw2IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CiAKLSAgICBib29sIGNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVu
c2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7Ci0KLSAgICB2b2lkIHNldERhdGFiYXNlRGV0YWls
cyhTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNw
bGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKICAgICB1bnNpZ25lZCBsb25n
IGxvbmcgZ2V0TWF4U2l6ZUZvckRhdGFiYXNlKGNvbnN0IERhdGFiYXNlQmFja2VuZCopOwogCiBw
cml2YXRlOgpAQCAtMTI1LDYgKzEyNCw4IEBAIHByaXZhdGU6CiAgICAgLy8gaXQgYWxyZWFkeSBl
eGlzdCBwcmV2aW91c2x5LiBPdGhlcndpc2UsIGl0IHJldHVybnMgMC4KICAgICBQYXNzUmVmUHRy
PERhdGFiYXNlQ29udGV4dD4gZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopOwogCisgICAgc3RhdGljIHZvaWQgbG9nRXJyb3JNZXNzYWdlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworCiAgICAgQWJzdHJhY3RE
YXRhYmFzZVNlcnZlciogbV9zZXJ2ZXI7CiAgICAgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBtX2Ns
aWVudDsKICAgICBib29sIG1fZGF0YWJhc2VJc0F2YWlsYWJsZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwCShy
ZXZpc2lvbiAxNDE4MjApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlU2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOSBAQAogCiAjaWYg
RU5BQkxFKFNRTF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZEFzeW5jLmgi
CisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIgorI2luY2x1ZGUgIkRhdGFiYXNl
QmFja2VuZFN5bmMuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlIDx3
dGYvVW51c2VkUGFyYW0uaD4KIApAQCAtMTQxLDE0ICsxNDQsMTQgQEAgdm9pZCBEYXRhYmFzZVNl
cnZlcjo6Y2xvc2VEYXRhYmFzZXNJbW1lZAogfQogI2VuZGlmIC8vIFBMQVRGT1JNKENIUk9NSVVN
KQogCi12b2lkIERhdGFiYXNlU2VydmVyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0
KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit2b2lkIERhdGFiYXNlU2Vy
dmVyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IERhdGFiYXNlQmFja2Vu
ZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuaW50
ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb250ZXh0KTsKIH0KIAotYm9vbCBEYXRhYmFz
ZVNlcnZlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNp
Z25lZCBsb25nIGVzdGltYXRlZFNpemUpCitib29sIERhdGFiYXNlU2VydmVyOjpjYW5Fc3RhYmxp
c2hEYXRhYmFzZShEYXRhYmFzZUJhY2tlbmRDb250ZXh0KiBiYWNrZW5kQ29udGV4dCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVz
dGltYXRlZFNpemUpCiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNh
bkVzdGFibGlzaERhdGFiYXNlKGNvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRT
aXplKTsKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuY2FuRXN0YWJsaXNo
RGF0YWJhc2UoYmFja2VuZENvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXpl
KTsKIH0KIAogdm9pZCBEYXRhYmFzZVNlcnZlcjo6c2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5
TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaAkocmV2aXNpb24g
MTQxODIwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNl
cnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw5ICs2OCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgY2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShjb25zdCBTdHJpbmcmIG9yaWdpbklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAjZW5kaWYgLy8gUExBVEZPUk0oQ0hST01J
VU0pCiAKLSAgICB2aXJ0dWFsIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChj
b25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgdmlydHVhbCB2b2lkIGludGVycnVw
dEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgRGF0YWJhc2VCYWNrZW5kQ29udGV4dCopOwog
Ci0gICAgdmlydHVhbCBib29sIGNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVu
c2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CisgICAgdmlydHVhbCBib29sIGNhbkVzdGFibGlz
aERhdGFiYXNlKERhdGFiYXNlQmFja2VuZENvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VEZXRhaWxzKFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25n
IGVzdGltYXRlZFNpemUpOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIGdldE1heFNp
emVGb3JEYXRhYmFzZShjb25zdCBEYXRhYmFzZUJhY2tlbmQqKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAJKHJldmlz
aW9uIDE0MTgyMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VTeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOCBAQAogCiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKKyNp
bmNsdWRlICJEYXRhYmFzZUJhY2tlbmRTeW5jLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VDYWxsYmFj
ay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlTWFu
YWdlci5oIgpAQCAtNDksMTggKzUxLDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGF0
YWJhc2VTeW5jOjpEYXRhYmFzZVN5bmMoUGFzc1JlZlB0cjxEYXRhYmFzZUNvbnRleHQ+IGRhdGFi
YXNlQ29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVy
c2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZGlzcGxheU5h
bWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKLSAgICA6IERhdGFiYXNlQmFja2VuZChk
YXRhYmFzZUNvbnRleHQsIG5hbWUsIGV4cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGlt
YXRlZFNpemUsIFN5bmNEYXRhYmFzZSkKK0RhdGFiYXNlU3luYzo6RGF0YWJhc2VTeW5jKFBhc3NS
ZWZQdHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4gZGF0YWJhc2VDb250ZXh0LAorICAgIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmlu
ZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKKyAgICA6IERhdGFi
YXNlQmFzZShkYXRhYmFzZUNvbnRleHQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAs
IERhdGFiYXNlQmFja2VuZFN5bmMoZGF0YWJhc2VDb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNp
b24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKQogeworICAgIHNldEZyb250ZW5kKHRoaXMp
OwogfQogCiBEYXRhYmFzZVN5bmM6On5EYXRhYmFzZVN5bmMoKQogewogICAgIEFTU0VSVChtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKK30KIAotICAgIGlmIChv
cGVuZWQoKSkKLSAgICAgICAgY2xvc2VEYXRhYmFzZSgpOworUGFzc1JlZlB0cjxEYXRhYmFzZUJh
Y2tlbmRTeW5jPiBEYXRhYmFzZVN5bmM6OmJhY2tlbmQoKQoreworICAgIHJldHVybiB0aGlzOwog
fQogCiB2b2lkIERhdGFiYXNlU3luYzo6Y2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbmcmIG9sZFZl
cnNpb24sIGNvbnN0IFN0cmluZyYgbmV3VmVyc2lvbiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlv
blN5bmNDYWxsYmFjaz4gY2hhbmdlVmVyc2lvbkNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVN5bmMuaAkocmV2aXNpb24gMTQxODIwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsOCBAQAog
CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZC5o
IgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZFN5bmMuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUJh
c2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZUJhc2ljVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNTAsNyArNTEsNyBA
QCBjbGFzcyBTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjazsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwogCiAvLyBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBzaG91bGQgYmUgY3JlYXRlZCBhbmQgdXNl
ZCBvbmx5IG9uIHRoZSB3b3JrZXIncyBjb250ZXh0IHRocmVhZC4KLWNsYXNzIERhdGFiYXNlU3lu
YyA6IHB1YmxpYyBEYXRhYmFzZUJhY2tlbmQgeworY2xhc3MgRGF0YWJhc2VTeW5jIDogcHVibGlj
IERhdGFiYXNlQmFzZSwgcHVibGljIERhdGFiYXNlQmFja2VuZFN5bmMgewogcHVibGljOgogICAg
IHZpcnR1YWwgfkRhdGFiYXNlU3luYygpOwogCkBAIC03Myw4ICs3NCwxMCBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIERhdGFiYXNlU3luYyhQYXNzUmVmUHRyPERhdGFiYXNlQ29u
dGV4dD4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24s
Ci0gICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxv
bmcgZXN0aW1hdGVkU2l6ZSk7CisgICAgRGF0YWJhc2VTeW5jKFBhc3NSZWZQdHI8RGF0YWJhc2VC
YWNrZW5kQ29udGV4dD4sIGNvbnN0IFN0cmluZyYgbmFtZSwKKyAgICAgICAgY29uc3QgU3RyaW5n
JiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxv
bmcgZXN0aW1hdGVkU2l6ZSk7CisgICAgUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRTeW5jPiBi
YWNrZW5kKCk7CisKICAgICB2b2lkIHJ1blRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNh
Y3Rpb25TeW5jQ2FsbGJhY2s+LCBib29sIHJlYWRPbmx5LCBFeGNlcHRpb25Db2RlJik7CiAKICAg
ICBib29sIG9wZW5BbmRWZXJpZnlWZXJzaW9uKGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2Us
IERhdGFiYXNlRXJyb3ImLCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CkBAIC04Miw2ICs4NSw3IEBA
IHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbGFzdEVycm9yTWVzc2FnZTsKIAogICAgIGZyaWVuZCBj
bGFzcyBEYXRhYmFzZU1hbmFnZXI7CisgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlQmFja2VuZFN5
bmM7IC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHRoZSBiYWNrZW5kIGhhcyBiZWVuIHNwbGl0
IG91dC4KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAJKHJl
dmlzaW9uIDE0MTgyMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUcmFja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTQgKzM0LDEzIEBACiAjaW5j
bHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRGF0
YWJhc2VCYWNrZW5kLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCisjaW5jbHVkZSAi
RGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgog
I2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGhy
ZWFkLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk9yaWdpblF1b3RhTWFuYWdl
ci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bkhhc2guaCIKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCkBAIC0xMDQsMTUgKzEwMywy
MSBAQCBTdHJpbmcgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyRGF0YWJhc2VQCiAgICAgcmV0dXJu
IFNRTGl0ZUZpbGVTeXN0ZW06OmFwcGVuZERhdGFiYXNlRmlsZU5hbWVUb1BhdGgobV9kYXRhYmFz
ZURpcmVjdG9yeVBhdGguaXNvbGF0ZWRDb3B5KCksICJEYXRhYmFzZXMuZGIiKTsKIH0KIAotdm9p
ZCBEYXRhYmFzZVRyYWNrZXI6Om9wZW5UcmFja2VyRGF0YWJhc2UoYm9vbCBjcmVhdGVJZkRvZXNO
b3RFeGlzdCkKK3ZvaWQgRGF0YWJhc2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFiYXNlKFRyYWNr
ZXJDcmVhdGlvbkFjdGlvbiBjcmVhdGVBY3Rpb24pCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNl
R3VhcmQudHJ5TG9jaygpKTsKIAogICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAg
ICByZXR1cm47CiAKKyAgICAvLyBJZiBjcmVhdGVJZkRvZXNOb3RFeGlzdCBpcyBmYWxzZSwgU1FM
aXRlRmlsZVN5c3RlbTo6ZW5zdXJlRGF0YWJhc2VGaWxlRXhpc3RzKCkKKyAgICAvLyB3aWxsIHJl
dHVybiBmYWxzZSBpZiB0aGUgZGF0YWJhc2UgZmlsZSBkb2VzIG5vdCBleGlzdC4KKyAgICAvLyBJ
ZiBjcmVhdGVJZkRvZXNOb3RFeGlzdCBpcyB0cnVlLCBTUUxpdGVGaWxlU3lzdGVtOjplbnN1cmVE
YXRhYmFzZUZpbGVFeGlzdHMoKQorICAgIC8vIHdpbGwgYXR0ZW1wdCB0byBjcmVhdGUgdGhlIHBh
dGggdG8gdGhlIGRhdGFiYXNlIGZpbGUgaWYgaXQgZG9lcyBub3QKKyAgICAvLyBleGlzdHMgeWV0
LiBJdCdsbCByZXR1cm4gdHJ1ZSBpZiB0aGUgcGF0aCBhbHJlYWR5IGV4aXN0cywgb3IgaWYgaXQK
KyAgICAvLyBzdWNjZXNzZnVsbHkgY3JlYXRlcyB0aGUgcGF0aC4gRWxzZSwgaXQgd2lsbCByZXR1
cm4gZmFsc2UuCiAgICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IHRyYWNrZXJEYXRhYmFzZVBhdGgo
KTsKLSAgICBpZiAoIVNRTGl0ZUZpbGVTeXN0ZW06OmVuc3VyZURhdGFiYXNlRmlsZUV4aXN0cyhk
YXRhYmFzZVBhdGgsIGNyZWF0ZUlmRG9lc05vdEV4aXN0KSkKKyAgICBpZiAoIVNRTGl0ZUZpbGVT
eXN0ZW06OmVuc3VyZURhdGFiYXNlRmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgsIGNyZWF0ZUFjdGlv
biA9PSBDcmVhdGVJZkRvZXNOb3RFeGlzdCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICgh
bV9kYXRhYmFzZS5vcGVuKGRhdGFiYXNlUGF0aCkpIHsKQEAgLTEyMSwxMiArMTI2LDE0IEBAIHZv
aWQgRGF0YWJhc2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFiYXMKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBtX2RhdGFiYXNlLmRpc2FibGVUaHJlYWRpbmdDaGVja3MoKTsKKwogICAgIGlm
ICghbV9kYXRhYmFzZS50YWJsZUV4aXN0cygiT3JpZ2lucyIpKSB7CiAgICAgICAgIGlmICghbV9k
YXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIE9yaWdpbnMgKG9yaWdpbiBURVhU
IFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCBxdW90YSBJTlRFR0VSIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwpOyIpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogYW5kIGhlcmUKICAgICAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBPcmlnaW5zIHRhYmxlIik7CiAgICAg
ICAgIH0KICAgICB9CisKICAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIkRhdGFiYXNl
cyIpKSB7CiAgICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRB
QkxFIERhdGFiYXNlcyAoZ3VpZCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQsIG9y
aWdpbiBURVhULCBuYW1lIFRFWFQsIGRpc3BsYXlOYW1lIFRFWFQsIGVzdGltYXRlZFNpemUgSU5U
RUdFUiwgcGF0aCBURVhUKTsiKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IGFuZCBoZXJlCkBA
IC0xMzUsNyArMTQyLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6Om9wZW5UcmFja2VyRGF0YWJh
cwogICAgIH0KIH0KIAotYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNhbkVzdGFibGlzaERhdGFiYXNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQorYm9v
bCBEYXRhYmFzZVRyYWNrZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKERhdGFiYXNlQmFja2VuZENv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5
TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQogewogICAgIFNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4gPSBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpOwogICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyByZXF1aXJlbWVudDsKQEAgLTE0Myw3ICsxNTAsNyBAQCBib29sIERhdGFiYXNlVHJhY2tl
cjo6Y2FuRXN0YWJsaXNoRGF0YWJhCiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZSht
X2RhdGFiYXNlR3VhcmQpOwogICAgICAgICBMb2NrZXI8T3JpZ2luUXVvdGFNYW5hZ2VyPiBxdW90
YU1hbmFnZXJMb2NrZXIob3JpZ2luUXVvdGFNYW5hZ2VyKCkpOwogCi0gICAgICAgIGlmICghY2Fu
Q3JlYXRlRGF0YWJhc2Uob3JpZ2luLCBuYW1lKSkKKyAgICAgICAgaWYgKGlzRGVsZXRpbmdEYXRh
YmFzZU9yT3JpZ2luRm9yKG9yaWdpbiwgbmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAgICAgcmVjb3JkQ3JlYXRpbmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpOwpAQCAtMTY4
LDggKzE3NSw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmEKIAog
ICAgIC8vIEdpdmUgdGhlIGNocm9tZSBjbGllbnQgYSBjaGFuY2UgdG8gaW5jcmVhc2UgdGhlIHF1
b3RhLgogICAgIC8vIERyb3AgYWxsIGxvY2tzIGJlZm9yZSBjYWxsaW5nIG91dDsgd2UgZG9uJ3Qg
a25vdyB3aGF0IHRoZXknbGwgZG8uCi0gICAgUmVmUHRyPERhdGFiYXNlQ29udGV4dD4gZGF0YWJh
c2VDb250ZXh0ID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VDb250ZXh0Rm9y
KGNvbnRleHQpOwotICAgIGRhdGFiYXNlQ29udGV4dC0+ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKG5h
bWUsIERhdGFiYXNlRGV0YWlscyhuYW1lLmlzb2xhdGVkQ29weSgpLCBkaXNwbGF5TmFtZS5pc29s
YXRlZENvcHkoKSwgZXN0aW1hdGVkU2l6ZSwgMCkpOworICAgIGNvbnRleHQtPmRhdGFiYXNlRXhj
ZWVkZWRRdW90YShuYW1lLCBEYXRhYmFzZURldGFpbHMobmFtZS5pc29sYXRlZENvcHkoKSwgZGlz
cGxheU5hbWUuaXNvbGF0ZWRDb3B5KCksIGVzdGltYXRlZFNpemUsIDApKTsKIAogICAgIE11dGV4
TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwogCkBAIC0xOTksOSArMjA1LDEz
IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpoYXNFbnRyeUZvck9yaWdpbigKIGJvb2wgRGF0YWJh
c2VUcmFja2VyOjpoYXNFbnRyeUZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghbV9kYXRhYmFz
ZUd1YXJkLnRyeUxvY2soKSk7Ci0gICAgb3BlblRyYWNrZXJEYXRhYmFzZShmYWxzZSk7Ci0gICAg
aWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQorICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENy
ZWF0ZUlmRG9lc05vdEV4aXN0KTsKKyAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpIHsKKyAg
ICAgICAgLy8gTm8gInRyYWNrZXIgZGF0YWJhc2UiLiBIZW5jZSwgbm8gZW50cnkgZm9yIHRoZSBk
YXRhYmFzZSBvZiBpbnRlcmVzdC4KICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IC8vIFdlJ3ZlIGdvdCBhIHRyYWNrZXIgZGF0YWJhc2UuIFNldCB1cCBhIHF1ZXJ5IHRvIGFzayBm
b3IgdGhlIGRiIG9mIGludGVyZXN0OgogICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9k
YXRhYmFzZSwgIlNFTEVDVCBndWlkIEZST00gRGF0YWJhc2VzIFdIRVJFIG9yaWdpbj0/IEFORCBu
YW1lPT87Iik7CiAKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykK
QEAgLTIyOSw3ICsyMzksNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VDaGFuZ2Vk
KERhCiAgICAgb3JpZ2luUXVvdGFNYW5hZ2VyKCkubWFya0RhdGFiYXNlKGRhdGFiYXNlKTsKIH0K
IAotdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQo
Y29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3ZvaWQgRGF0YWJhc2VUcmFj
a2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IERhdGFiYXNlQmFja2Vu
ZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxEYXRhYmFzZUJhY2tlbmQ+
ID4gb3BlbkRhdGFiYXNlczsKICAgICB7CkBAIC0yNDcsNyArMjU3LDcgQEAgdm9pZCBEYXRhYmFz
ZVRyYWNrZXI6OmludGVycnVwdEFsbERhdGFiYQogICAgICAgICAgICAgRGF0YWJhc2VTZXQqIGRh
dGFiYXNlU2V0ID0gZGJOYW1lTWFwSXQtPnZhbHVlOwogICAgICAgICAgICAgRGF0YWJhc2VTZXQ6
OmNvbnN0X2l0ZXJhdG9yIGRiU2V0RW5kSXQgPSBkYXRhYmFzZVNldC0+ZW5kKCk7CiAgICAgICAg
ICAgICBmb3IgKERhdGFiYXNlU2V0Ojpjb25zdF9pdGVyYXRvciBkYlNldEl0ID0gZGF0YWJhc2VT
ZXQtPmJlZ2luKCk7IGRiU2V0SXQgIT0gZGJTZXRFbmRJdDsgKytkYlNldEl0KSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKCgqZGJTZXRJdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBjb250
ZXh0KQorICAgICAgICAgICAgICAgIGlmICgoKmRiU2V0SXQpLT5kYXRhYmFzZUNvbnRleHQoKSA9
PSBjb250ZXh0KQogICAgICAgICAgICAgICAgICAgICBvcGVuRGF0YWJhc2VzLmFwcGVuZCgqZGJT
ZXRJdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMyOCw3ICszMzgsNyBAQCB2b2lk
IERhdGFiYXNlVHJhY2tlcjo6cG9wdWxhdGVPcmlnaW5zSWZOCiAKICAgICBtX3F1b3RhTWFwID0g
YWRvcHRQdHIobmV3IFF1b3RhTWFwKTsKIAotICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoZmFsc2Up
OworICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAg
ICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzYwLDcg
KzM3MCw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zKFZlY3RvcjxSZWYKIGJvb2wg
RGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZU5hbWVzRm9yT3JpZ2luTm9Mb2NrKFNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4sIFZlY3RvcjxTdHJpbmc+JiByZXN1bHRWZWN0b3IpCiB7CiAgICAgQVNTRVJU
KCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKLSAgICBvcGVuVHJhY2tlckRhdGFiYXNlKGZh
bHNlKTsKKyAgICBvcGVuVHJhY2tlckRhdGFiYXNlKERvbnRDcmVhdGVJZkRvZXNOb3RFeGlzdCk7
CiAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
QEAgLTQwNiw3ICs0MTYsNyBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VUcmFja2VyOjpkZXRh
aWxzCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1
YXJkKTsKIAotICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKGZhbHNlKTsKKyAgICAgICAgb3Bl
blRyYWNrZXJEYXRhYmFzZShEb250Q3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgICAgICBpZiAo
IW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgICAgICByZXR1cm4gRGF0YWJhc2VEZXRhaWxz
KCk7CiAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVD
VCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSBGUk9NIERhdGFiYXNlcyBXSEVSRSBvcmlnaW49
PyBBTkQgbmFtZT0/Iik7CkBAIC00MzgsNyArNDQ4LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6
OnNldERhdGFiYXNlRGV0YWlscwogCiAgICAgTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0
YWJhc2VHdWFyZCk7CiAKLSAgICBvcGVuVHJhY2tlckRhdGFiYXNlKHRydWUpOworICAgIG9wZW5U
cmFja2VyRGF0YWJhc2UoQ3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgIGlmICghbV9kYXRhYmFz
ZS5pc09wZW4oKSkKICAgICAgICAgcmV0dXJuOwogICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1l
bnQobV9kYXRhYmFzZSwgIlNFTEVDVCBndWlkIEZST00gRGF0YWJhc2VzIFdIRVJFIG9yaWdpbj0/
IEFORCBuYW1lPT8iKTsKQEAgLTYxOCw2ICs2MjgsMTAgQEAgdW5zaWduZWQgbG9uZyBsb25nIERh
dGFiYXNlVHJhY2tlcjo6dXNhZwogCiAgICAgaWYgKCFvcmlnaW5RdW90YU1hbmFnZXIoKS50cmFj
a3NPcmlnaW4ob3JpZ2luKSkKICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBPcmlnaW5RdW90
YU1hbmFnZXI6OmRpc2tVc2FnZSgpIG1heSByZXN1bHQgaW4gYSBkaXNrIHNjYW4gdG8gY29tcHV0
ZSB0aGUKKyAgICAvLyBzdW0gb2YgZGlzayB1c2FnZSBvZiBhbGwgZGF0YWJhc2VzIGZyb20gdGhp
cyBzcGVjaWZpZWQgb3JpZ2luIGlmIGl0cworICAgIC8vIGNhY2hlZCB1c2FnZSB2YWx1ZSBpcyBk
ZXRlcm1pbmVkIHRvIGJlIG91dGRhdGVkLgogICAgIHJldHVybiBvcmlnaW5RdW90YU1hbmFnZXIo
KS5kaXNrVXNhZ2Uob3JpZ2luKTsKIH0KIApAQCAtNjQ5LDcgKzY2Myw3IEBAIHZvaWQgRGF0YWJh
c2VUcmFja2VyOjpzZXRRdW90YShTZWN1cml0eU8KICAgICBpZiAocXVvdGFGb3JPcmlnaW5Ob0xv
Y2sob3JpZ2luKSA9PSBxdW90YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgb3BlblRyYWNrZXJE
YXRhYmFzZSh0cnVlKTsKKyAgICBvcGVuVHJhY2tlckRhdGFiYXNlKENyZWF0ZUlmRG9lc05vdEV4
aXN0KTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybjsKIApA
QCAtNjkyLDcgKzcwNiw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpzZXRRdW90YShTZWN1cml0
eU8KIGJvb2wgRGF0YWJhc2VUcmFja2VyOjphZGREYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NF
UlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOwotICAgIG9wZW5UcmFja2VyRGF0YWJhc2Uo
dHJ1ZSk7CisgICAgb3BlblRyYWNrZXJEYXRhYmFzZShDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAg
ICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
cG9wdWxhdGVPcmlnaW5zSWZOZWVkZWQoKTsKQEAgLTczNyw3ICs3NTEsNyBAQCBib29sIERhdGFi
YXNlVHJhY2tlcjo6ZGVsZXRlT3JpZ2luKFNlY3VyCiAgICAgVmVjdG9yPFN0cmluZz4gZGF0YWJh
c2VOYW1lczsKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFi
YXNlR3VhcmQpOwotICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKGZhbHNlKTsKKyAgICAgICAg
b3BlblRyYWNrZXJEYXRhYmFzZShEb250Q3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgICAgICBp
ZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTgxOSwxMSArODMzLDExIEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmlnaW4oU2Vj
dXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNhbkNyZWF0
ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jv
b2wgRGF0YWJhc2VUcmFja2VyOjppc0RlbGV0aW5nRGF0YWJhc2VPck9yaWdpbkZvcihTZWN1cml0
eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFtX2Rh
dGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKICAgICAvLyBDYW4ndCBjcmVhdGUgYSBkYXRhYmFzZSB3
aGlsZSBzb21lb25lIGVsc2UgaXMgZGVsZXRpbmcgaXQ7IHRoZXJlJ3MgYSByaXNrIG9mIGxlYXZp
bmcgdW50cmFja2VkIGRhdGFiYXNlIGRlYnJpcyBvbiB0aGUgZGlzay4KLSAgICByZXR1cm4gIWRl
bGV0aW5nRGF0YWJhc2Uob3JpZ2luLCBuYW1lKSAmJiAhZGVsZXRpbmdPcmlnaW4ob3JpZ2luKTsK
KyAgICByZXR1cm4gaXNEZWxldGluZ0RhdGFiYXNlKG9yaWdpbiwgbmFtZSkgfHwgaXNEZWxldGlu
Z09yaWdpbihvcmlnaW4pOwogfQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVjb3JkQ3JlYXRp
bmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCkBA
IC04NjgsNyArODgyLDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNyZWF0aW5nRGF0YWJhc2Uo
UwogYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNhbkRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2lu
ICpvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoIW1fZGF0YWJhc2VH
dWFyZC50cnlMb2NrKCkpOwotICAgIHJldHVybiAhY3JlYXRpbmdEYXRhYmFzZShvcmlnaW4sIG5h
bWUpICYmICFkZWxldGluZ0RhdGFiYXNlKG9yaWdpbiwgbmFtZSk7CisgICAgcmV0dXJuICFjcmVh
dGluZ0RhdGFiYXNlKG9yaWdpbiwgbmFtZSkgJiYgIWlzRGVsZXRpbmdEYXRhYmFzZShvcmlnaW4s
IG5hbWUpOwogfQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVjb3JkRGVsZXRpbmdEYXRhYmFz
ZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC05MDAsNyAr
OTE0LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRvbmVEZWxldGluZ0RhdGFiYQogICAgIH0K
IH0KIAotYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmln
aW4gKm9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQorYm9vbCBEYXRhYmFzZVRyYWNrZXI6Omlz
RGVsZXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5h
bWUpCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKICAgICBOYW1l
U2V0KiBuYW1lU2V0ID0gbV9iZWluZ0RlbGV0ZWQuZ2V0KG9yaWdpbik7CkBAIC05MTAsMTAgKzky
NCwxMCBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRpbmdEYXRhYmFzZShTCiBib29sIERh
dGFiYXNlVHJhY2tlcjo6Y2FuRGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pCiB7
CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKLSAgICByZXR1cm4gIShk
ZWxldGluZ09yaWdpbihvcmlnaW4pIHx8IG1fYmVpbmdDcmVhdGVkLmdldChvcmlnaW4pKTsKKyAg
ICByZXR1cm4gIShpc0RlbGV0aW5nT3JpZ2luKG9yaWdpbikgfHwgbV9iZWluZ0NyZWF0ZWQuZ2V0
KG9yaWdpbikpOwogfQogCi1ib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRpbmdPcmlnaW4oU2Vj
dXJpdHlPcmlnaW4gKm9yaWdpbikKK2Jvb2wgRGF0YWJhc2VUcmFja2VyOjppc0RlbGV0aW5nT3Jp
Z2luKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlR3Vh
cmQudHJ5TG9jaygpKTsKICAgICByZXR1cm4gbV9vcmlnaW5zQmVpbmdEZWxldGVkLmNvbnRhaW5z
KG9yaWdpbik7CkBAIC05MjIsMTQgKzkzNiwxNCBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVs
ZXRpbmdPcmlnaW4oU2VjCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVjb3JkRGVsZXRpbmdPcmln
aW4oU2VjdXJpdHlPcmlnaW4gKm9yaWdpbikKIHsKICAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFy
ZC50cnlMb2NrKCkpOwotICAgIEFTU0VSVCghZGVsZXRpbmdPcmlnaW4ob3JpZ2luKSk7CisgICAg
QVNTRVJUKCFpc0RlbGV0aW5nT3JpZ2luKG9yaWdpbikpOwogICAgIG1fb3JpZ2luc0JlaW5nRGVs
ZXRlZC5hZGQob3JpZ2luLT5pc29sYXRlZENvcHkoKSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VUcmFj
a2VyOjpkb25lRGVsZXRpbmdPcmlnaW4oU2VjdXJpdHlPcmlnaW4gKm9yaWdpbikKIHsKICAgICBB
U1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOwotICAgIEFTU0VSVChkZWxldGluZ09y
aWdpbihvcmlnaW4pKTsKKyAgICBBU1NFUlQoaXNEZWxldGluZ09yaWdpbihvcmlnaW4pKTsKICAg
ICBtX29yaWdpbnNCZWluZ0RlbGV0ZWQucmVtb3ZlKG9yaWdpbik7CiB9CiAKQEAgLTkzNyw3ICs5
NTEsNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2UoU2VjCiB7CiAgICAg
ewogICAgICAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKLSAg
ICAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShmYWxzZSk7CisgICAgICAgIG9wZW5UcmFja2VyRGF0
YWJhc2UoRG9udENyZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAgICAgICAgaWYgKCFtX2RhdGFiYXNl
LmlzT3BlbigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC05OTksNyArMTAxMyw3
IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUKICNpZm5kZWYgTkRF
QlVHCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1
YXJkKTsKLSAgICAgICAgQVNTRVJUKGRlbGV0aW5nRGF0YWJhc2Uob3JpZ2luLCBuYW1lKSB8fCBk
ZWxldGluZ09yaWdpbihvcmlnaW4pKTsKKyAgICAgICAgQVNTRVJUKGlzRGVsZXRpbmdEYXRhYmFz
ZU9yT3JpZ2luRm9yKG9yaWdpbiwgbmFtZSkpOwogICAgIH0KICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2Vy
LmgJKHJldmlzaW9uIDE0MTgyMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUcmFja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJhc2VCYWNrZW5kOwotY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIERhdGFiYXNlQmFja2VuZENvbnRleHQ7CiBjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKIAogc3RydWN0IFNlY3VyaXR5T3JpZ2luSGFzaDsKQEAgLTcwLDcgKzcw
LDcgQEAgcHVibGljOgogICAgIC8vIG1fZGF0YWJhc2VHdWFyZCBhbmQgbV9vcGVuRGF0YWJhc2VN
YXBHdWFyZCBjdXJyZW50bHkgZG9uJ3Qgb3ZlcmxhcC4KICAgICAvLyBub3RpZmljYXRpb25NdXRl
eCgpIGlzIGN1cnJlbnRseSBpbmRlcGVuZGVudCBvZiB0aGUgb3RoZXIgbG9ja3MuCiAKLSAgICBi
b29sIGNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0
aW1hdGVkU2l6ZSk7CisgICAgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShEYXRhYmFzZUJhY2tl
bmRDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1l
LCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOwogICAgIHZvaWQgc2V0RGF0YWJhc2VEZXRh
aWxzKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRp
c3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOwogICAgIFN0cmluZyBmdWxs
UGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29s
IGNyZWF0ZUlmRG9lc05vdEV4aXN0ID0gdHJ1ZSk7CiAKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGlj
OgogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRNYXhTaXplRm9yRGF0YWJhc2UoY29uc3QgRGF0
YWJhc2VCYWNrZW5kKik7CiAgICAgdm9pZCBkYXRhYmFzZUNoYW5nZWQoRGF0YWJhc2VCYWNrZW5k
Kik7CiAKLSAgICB2b2lkIGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9y
Q29udGV4dChjb25zdCBEYXRhYmFzZUJhY2tlbmRDb250ZXh0Kik7CiAKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgRGF0YWJhc2VUcmFja2VyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKTsKQEAg
LTEyMiw3ICsxMjIsMTIgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGFG
b3JPcmlnaW5Ob0xvY2soU2VjdXJpdHlPcmlnaW4qIG9yaWdpbik7CiAKICAgICBTdHJpbmcgdHJh
Y2tlckRhdGFiYXNlUGF0aCgpIGNvbnN0OwotICAgIHZvaWQgb3BlblRyYWNrZXJEYXRhYmFzZShi
b29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KTsKKworICAgIGVudW0gVHJhY2tlckNyZWF0aW9uQWN0
aW9uIHsKKyAgICAgICAgRG9udENyZWF0ZUlmRG9lc05vdEV4aXN0LAorICAgICAgICBDcmVhdGVJ
ZkRvZXNOb3RFeGlzdAorICAgIH07CisgICAgdm9pZCBvcGVuVHJhY2tlckRhdGFiYXNlKFRyYWNr
ZXJDcmVhdGlvbkFjdGlvbik7CiAKICAgICBTdHJpbmcgb3JpZ2luUGF0aChTZWN1cml0eU9yaWdp
biopIGNvbnN0OwogCkBAIC0xNTcsMTggKzE2MiwxOCBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYg
SGFzaFNldDxTdHJpbmc+IE5hbWVTZXQ7CiAgICAgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmln
aW4+LCBOYW1lU2V0KiwgU2VjdXJpdHlPcmlnaW5IYXNoPiBtX2JlaW5nRGVsZXRlZDsKICAgICBI
YXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNlY3VyaXR5T3JpZ2luSGFzaD4gbV9vcmln
aW5zQmVpbmdEZWxldGVkOwotICAgIGJvb2wgY2FuQ3JlYXRlRGF0YWJhc2UoU2VjdXJpdHlPcmln
aW4gKm9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICB2b2lkIHJlY29yZENyZWF0aW5n
RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAg
ICB2b2lkIGRvbmVDcmVhdGluZ0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4sIGNvbnN0
IFN0cmluZyYgbmFtZSk7Ci0gICAgYm9vbCBjcmVhdGluZ0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2lu
ICpvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgYm9vbCBjYW5EZWxldGVEYXRhYmFz
ZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIHZvaWQg
cmVjb3JkRGVsZXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBjb25zdCBTdHJp
bmcmIG5hbWUpOwotICAgIHZvaWQgZG9uZURlbGV0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4g
Km9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBib29sIGRlbGV0aW5nRGF0YWJhc2Uo
U2VjdXJpdHlPcmlnaW4gKm9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBib29sIGNh
bkRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiAqb3JpZ2luKTsKLSAgICBib29sIGRlbGV0aW5n
T3JpZ2luKFNlY3VyaXR5T3JpZ2luICpvcmlnaW4pOwotICAgIHZvaWQgcmVjb3JkRGVsZXRpbmdP
cmlnaW4oU2VjdXJpdHlPcmlnaW4gKm9yaWdpbik7Ci0gICAgdm9pZCBkb25lRGVsZXRpbmdPcmln
aW4oU2VjdXJpdHlPcmlnaW4gKm9yaWdpbik7CisgICAgYm9vbCBpc0RlbGV0aW5nRGF0YWJhc2VP
ck9yaWdpbkZvcihTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9p
ZCByZWNvcmRDcmVhdGluZ0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKKyAgICB2b2lkIGRvbmVDcmVhdGluZ0RhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKKyAgICBib29sIGNyZWF0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmln
aW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIGJvb2wgY2FuRGVsZXRlRGF0YWJhc2UoU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgcmVjb3JkRGVsZXRp
bmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9p
ZCBkb25lRGVsZXRpbmdEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFt
ZSk7CisgICAgYm9vbCBpc0RlbGV0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBT
dHJpbmcmIG5hbWUpOworICAgIGJvb2wgY2FuRGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7
CisgICAgYm9vbCBpc0RlbGV0aW5nT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisgICAgdm9pZCBy
ZWNvcmREZWxldGluZ09yaWdpbihTZWN1cml0eU9yaWdpbiopOworICAgIHZvaWQgZG9uZURlbGV0
aW5nT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CiAKICAgICBzdGF0aWMgdm9pZCBzY2hlZHVsZUZv
ck5vdGlmaWNhdGlvbigpOwogICAgIHN0YXRpYyB2b2lkIG5vdGlmeURhdGFiYXNlc0NoYW5nZWQo
dm9pZCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDE0MTgyMCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw3ICszMyw3IEBACiAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRh
dGFiYXNlQXV0aG9yaXplci5oIgotI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgorI2luY2x1
ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFRyYW5zYWN0aW9uQ2xpZW50LmNwcAkocmV2aXNpb24gMTQxODIwKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCiAjaW5j
bHVkZSAiRGF0YWJhc2VCYWNrZW5kLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCisj
aW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlTWFu
YWdlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgpAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uQ2xp
ZW50OjpkaWRFeGVjdXRlU3RhCiAKIGJvb2wgU1FMVHJhbnNhY3Rpb25DbGllbnQ6OmRpZEV4Y2Vl
ZFF1b3RhKERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UpCiB7Ci0gICAgQVNTRVJUKGRhdGFiYXNl
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NF
UlQoZGF0YWJhc2UtPmRhdGFiYXNlQ29udGV4dCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmlzQ29udGV4dFRocmVhZCgpKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3Rh
ID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4oZGF0YWJhc2UtPnNl
Y3VyaXR5T3JpZ2luKCkpOwogICAgIGRhdGFiYXNlLT5kYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJh
c2VFeGNlZWRlZFF1b3RhKGRhdGFiYXNlLT5zdHJpbmdJZGVudGlmaWVyKCksIGRhdGFiYXNlLT5k
ZXRhaWxzKCkpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSA9IERhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLnF1b3RhRm9yT3JpZ2luKGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbigp
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b25TeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uU3luYy5jcHAJKHJldmlzaW9uIDE0MTgyMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25TeW5jLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKICNp
bmNsdWRlICJEYXRhYmFzZUF1dGhvcml6ZXIuaCIKLSNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQu
aCIKKyNpbmNsdWRlICJEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJh
c2VTeW5jLmgiCiAjaW5jbHVkZSAiU1FMRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiU1FMUmVzdWx0
U2V0LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVt
L0RhdGFiYXNlVHJhY2tlckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVtL0RhdGFiYXNlVHJhY2tlckNocm9taXVtLmNw
cAkocmV2aXNpb24gMTQxODIwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9jaHJvbWl1bS9EYXRhYmFzZVRyYWNrZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiRGF0
YWJhc2VCYWNrZW5kLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkRhdGFiYXNlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJRdW90YVRyYWNrZXIuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCkBAIC01Niw4ICs1Nyw5IEBAIERhdGFi
YXNlVHJhY2tlcjo6RGF0YWJhc2VUcmFja2VyKGNvbnN0IFMKICAgICBTUUxpdGVGaWxlU3lzdGVt
OjpyZWdpc3RlclNRTGl0ZVZGUygpOwogfQogCi1ib29sIERhdGFiYXNlVHJhY2tlcjo6Y2FuRXN0
YWJsaXNoRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNp
Z25lZCBsb25nIGVzdGltYXRlZFNpemUpCitib29sIERhdGFiYXNlVHJhY2tlcjo6Y2FuRXN0YWJs
aXNoRGF0YWJhc2UoRGF0YWJhc2VCYWNrZW5kQ29udGV4dCogZGF0YWJhc2VDb250ZXh0LCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcg
ZXN0aW1hdGVkU2l6ZSkKIHsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0ID0gZGF0YWJhc2VDb250ZXh0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CiAgICAgcmV0dXJuIERhdGFiYXNlT2JzZXJ2ZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKIH0K
IApAQCAtMTQ4LDIyICsxNTAsMjQgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5E
YXRhYmFzZQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFkYXRhYmFzZS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSkKLSAgICAgICAgZGF0YWJhc2UtPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soTm90aWZ5RGF0YWJhc2VPYnNlcnZlck9u
Q2xvc2VUYXNrOjpjcmVhdGUoZGF0YWJhc2UpKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gZGF0YWJhc2UtPmRhdGFiYXNlQ29udGV4dCgpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5pc0NvbnRleHRUaHJlYWQoKSkKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9z
dFRhc2soTm90aWZ5RGF0YWJhc2VPYnNlcnZlck9uQ2xvc2VUYXNrOjpjcmVhdGUoZGF0YWJhc2Up
KTsKICAgICBlbHNlCiAgICAgICAgIERhdGFiYXNlT2JzZXJ2ZXI6OmRhdGFiYXNlQ2xvc2VkKGRh
dGFiYXNlKTsKIH0KIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnByZXBhcmVUb09wZW5EYXRhYmFz
ZShEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKQogewotICAgIEFTU0VSVChkYXRhYmFzZS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGRh
dGFiYXNlLT5kYXRhYmFzZUNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0Nv
bnRleHRUaHJlYWQoKSk7CiAgICAgRGF0YWJhc2VPYnNlcnZlcjo6ZGF0YWJhc2VPcGVuZWQoZGF0
YWJhc2UpOwogfQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZmFpbGVkVG9PcGVuRGF0YWJhc2Uo
RGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKIHsKLSAgICBpZiAoIWRhdGFiYXNlLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKQotICAgICAgICBkYXRhYmFzZS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhOb3RpZnlEYXRhYmFzZU9ic2VydmVy
T25DbG9zZVRhc2s6OmNyZWF0ZShkYXRhYmFzZSkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBkYXRhYmFzZS0+ZGF0YWJhc2VDb250ZXh0KCkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmlzQ29udGV4dFRocmVhZCgpKQorICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5w
b3N0VGFzayhOb3RpZnlEYXRhYmFzZU9ic2VydmVyT25DbG9zZVRhc2s6OmNyZWF0ZShkYXRhYmFz
ZSkpOwogICAgIGVsc2UKICAgICAgICAgRGF0YWJhc2VPYnNlcnZlcjo6ZGF0YWJhc2VDbG9zZWQo
ZGF0YWJhc2UpOwogfQpAQCAtMTc4LDcgKzE4Miw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRh
YmFzZVRyYWNrZXI6OmdldE0KICAgICByZXR1cm4gZGF0YWJhc2VTaXplICsgc3BhY2VBdmFpbGFi
bGU7CiB9CiAKLXZvaWQgRGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JD
b250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit2b2lkIERhdGFi
YXNlVHJhY2tlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBEYXRhYmFz
ZUJhY2tlbmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIE11dGV4TG9ja2VyIG9wZW5EYXRhYmFz
ZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CiAKQEAgLTE5NCw3ICsxOTgsNyBAQCB2
b2lkIERhdGFiYXNlVHJhY2tlcjo6aW50ZXJydXB0QWxsRGF0YWJhCiAgICAgICAgIERhdGFiYXNl
U2V0KiBkYXRhYmFzZVNldCA9IGRiTmFtZU1hcEl0LT52YWx1ZTsKICAgICAgICAgRGF0YWJhc2VT
ZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGRhdGFiYXNlU2V0LT5lbmQoKTsKICAgICAgICAgZm9y
IChEYXRhYmFzZVNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBkYXRhYmFzZVNldC0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoKCppdCktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSA9PSBjb250ZXh0KQorICAgICAgICAgICAgaWYgKCgqaXQpLT5kYXRhYmFzZUNv
bnRleHQoKSA9PSBjb250ZXh0KQogICAgICAgICAgICAgICAgICgqaXQpLT5pbnRlcnJ1cHQoKTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTI0Miw3ICsyNDYsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tl
cjo6Y2xvc2VEYXRhYmFzZXNJbW1lCiAgICAgLy8gdGhlIGRhdGFiYXNlIGluIG91ciBjb2xsZWN0
aW9uIHdoZW4gbm90IG9uIHRoZSBjb250ZXh0IHRocmVhZCAod2hpY2ggaXMgYWx3YXlzIHRoZSBj
YXNlIGdpdmVuCiAgICAgLy8gY3VycmVudCB1c2FnZSkuCiAgICAgZm9yIChEYXRhYmFzZVNldDo6
aXRlcmF0b3IgaXQgPSBkYXRhYmFzZVNldC0+YmVnaW4oKTsgaXQgIT0gZGF0YWJhc2VTZXQtPmVu
ZCgpOyArK2l0KQotICAgICAgICAoKml0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0
VGFzayhDbG9zZU9uZURhdGFiYXNlSW1tZWRpYXRlbHlUYXNrOjpjcmVhdGUob3JpZ2luSWRlbnRp
ZmllciwgbmFtZSwgKml0KSk7CisgICAgICAgICgqaXQpLT5kYXRhYmFzZUNvbnRleHQoKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhDbG9zZU9uZURhdGFiYXNlSW1tZWRpYXRl
bHlUYXNrOjpjcmVhdGUob3JpZ2luSWRlbnRpZmllciwgbmFtZSwgKml0KSk7CiB9CiAKIHZvaWQg
RGF0YWJhc2VUcmFja2VyOjpjbG9zZU9uZURhdGFiYXNlSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5n
JiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIERhdGFiYXNlQmFja2VuZCog
ZGF0YWJhc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9t
aXVtL1NRTFRyYW5zYWN0aW9uQ2xpZW50Q2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21pdW0vU1FMVHJhbnNhY3Rpb25DbGll
bnRDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDE0MTgyMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvY2hyb21pdW0vU1FMVHJhbnNhY3Rpb25DbGllbnRDaHJvbWl1bS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQogCiAjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VCYWNr
ZW5kQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKQEAgLTYyLDggKzYzLDkgQEAgcHJpdmF0ZToKIAog
dm9pZCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkQ29tbWl0V3JpdGVUcmFuc2FjdGlvbihEYXRh
YmFzZUJhY2tlbmQqIGRhdGFiYXNlKQogewotICAgIGlmICghZGF0YWJhc2UtPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpIHsKLSAgICAgICAgZGF0YWJhc2UtPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soTm90aWZ5RGF0YWJhc2VDaGFuZ2VkVGFz
azo6Y3JlYXRlKGRhdGFiYXNlKSk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCA9IGRhdGFiYXNlLT5kYXRhYmFzZUNvbnRleHQoKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOworICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250
ZXh0VGhyZWFkKCkpIHsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2so
Tm90aWZ5RGF0YWJhc2VDaGFuZ2VkVGFzazo6Y3JlYXRlKGRhdGFiYXNlKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTgwLDcgKzgyLDcgQEAgYm9vbCBTUUxUcmFuc2FjdGlvbkNsaWVu
dDo6ZGlkRXhjZWVkUXVvdAogewogICAgIC8vIENocm9taXVtIGRvZXMgbm90IGFsbG93IHVzZXJz
IHRvIG1hbnVhbGx5IGNoYW5nZSB0aGUgcXVvdGEgZm9yIGFuIG9yaWdpbiAoZm9yIG5vdywgYXQg
bGVhc3QpLgogICAgIC8vIERvbid0IGRvIGFueXRoaW5nLgotICAgIEFTU0VSVChkYXRhYmFzZS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJU
KGRhdGFiYXNlLT5kYXRhYmFzZUNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5p
c0NvbnRleHRUaHJlYWQoKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTQxODIw
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtp
bmcgY29weSkKQEAgLTI1MzU0LDYgKzI1MzU0LDQyIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJ
CQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFi
YXNlQmFja2VuZEFzeW5jLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kQXN5
bmMuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAiCisJCQkJ
CT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVz
XHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKKwkJCQkJPgorCQkJCTwvRmls
ZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2Vc
RGF0YWJhc2VCYWNrZW5kU3luYy5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2Vu
ZFN5bmMuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYXNlLmNwcCIKKwkJCQkJPgorCQkJ
CTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0
YWJhc2VcRGF0YWJhc2VCYXNlLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFzaWNUeXBl
cy5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUNhbGxiYWNrLmgiCiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oJKHJldmlzaW9uIDE0MTgyMCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE4NTYsNiArMTg1NiwxMCBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFz
ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNl
XERhdGFiYXNlQXV0aG9yaXplci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZC5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZEFzeW5jLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0
YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZFN5bmMuY3BwIiAvPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhc2UuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFz
ZUNvbnRleHQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJk
YXRhYmFzZVxEYXRhYmFzZU1hbmFnZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZVNlcnZlci5jcHAiIC8+CkBAIC02NDA4LDYg
KzY0MTIsMTEgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJh
c2VcRGF0YWJhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2Vi
ZGF0YWJhc2VcRGF0YWJhc2VBdXRob3JpemVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZC5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRBc3lu
Yy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxE
YXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZFN5bmMuaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYXNlLmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFz
aWNUeXBlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRh
YmFzZVxEYXRhYmFzZUNhbGxiYWNrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQ29udGV4dC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUVycm9yLmgiIC8+CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNDE4MjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTE4Mzks
NiArMTgzOSwxOCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRh
YmFzZVxEYXRhYmFzZUJhY2tlbmQuY3BwIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRh
YmFzZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAiPgorICAgICAg
PEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQmFj
a2VuZENvbnRleHQuY3BwIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmls
dGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxl
c1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRTeW5jLmNwcCI+CisgICAgICA8RmlsdGVyPk1v
ZHVsZXNcd2ViZGF0YWJhc2U8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYXNlLmNwcCI+Cisg
ICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJhc2U8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGls
ZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJh
c2VDb250ZXh0LmNwcCI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJhc2U8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTg0NjAsNiArODQ3MiwyMSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmQuaCI+CiAg
ICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJhc2U8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJh
c2VCYWNrZW5kQXN5bmMuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcd2ViZGF0YWJhc2U8L0Zp
bHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVs
ZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIj4KKyAgICAgIDxGaWx0ZXI+
TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhY2tlbmRTeW5j
LmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CisgICAgPC9D
bEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNl
XERhdGFiYXNlQmFzZS5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxl
c1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUJhc2ljVHlwZXMuaCI+CisgICAgICA8RmlsdGVyPk1vZHVs
ZXNcd2ViZGF0YWJhc2U8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VDYWxsYmFjay5oIj4KICAg
ICAgIDxGaWx0ZXI+TW9kdWxlc1x3ZWJkYXRhYmFzZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTQxODIwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NzM0LDExICs2NzM0LDIz
IEBACiAJCUZERjZCQUY5MTM0QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxpbmVBdWRpb0NvbXBsZXRp
b25FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkRGNkJBRjcxMzRBNEM5ODAwODIyOTIwIC8qIEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50
LmggKi87IH07CiAJCUZERjdFOUMzMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2Fs
bGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkRGN0U5QzExM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAgKi87
IH07CiAJCUZERjdFOUM0MTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZERjdFOUMy
MTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaCAqLzsgfTsKLQkJRkUw
OURCNDkxNjlFMkQ2RTAwNjIyNTU3IC8qIERhdGFiYXNlRXJyb3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDlEQjQ2MTY5RTJENkUwMDYyMjU1NyAv
KiBEYXRhYmFzZUVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0YWJhc2VT
ZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
MTE1RkE5MTY3OTg4Q0QwMDI0OTEzNCAvKiBBYnN0cmFjdERhdGFiYXNlU2VydmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUxNkNGRDMxNjlE
MURFRDAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZEFzeW5jLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTZDRkNGMTY5RDFERUMwMEQzQTBDNyAv
KiBEYXRhYmFzZUJhY2tlbmRBc3luYy5jcHAgKi87IH07CisJCUZFMTZDRkQ0MTY5RDFERUQwMEQz
QTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRBc3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxNkNGRDAxNjlEMURFQzAwRDNBMEM3IC8qIERhdGFiYXNl
QmFja2VuZEFzeW5jLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRkU2RjZBQUYxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFja2VuZENvbnRl
eHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2
RjZBQUQxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwICovOyB9
OworCQlGRTZGNkFCMDE2OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RjZBQUUx
NjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFja2VuZENvbnRleHQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTE2Q0ZENTE2OUQxREVEMDBE
M0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE2Q0ZEMTE2OUQxREVDMDBEM0EwQzcgLyogRGF0YWJh
c2VCYWNrZW5kU3luYy5jcHAgKi87IH07CisJCUZFMTZDRkQ2MTY5RDFERUQwMEQzQTBDNyAvKiBE
YXRhYmFzZUJhY2tlbmRTeW5jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTE2Q0ZEMjE2OUQxREVDMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kU3lu
Yy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZF
QkM1RjMxMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVCQzVGMkYxNkJEMENDMzAwNjU5QkQz
IC8qIERhdGFiYXNlQmFzZS5jcHAgKi87IH07CisJCUZFQkM1RjMyMTZCRDBDQzMwMDY1OUJEMyAv
KiBEYXRhYmFzZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFQkM1RjMwMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTMzNzFBMjE2N0Mx
MUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMzNzFBMDE2N0MxMUQ0MDBFREI3NTIgLyogRGF0
YWJhc2VCYXNpY1R5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRkUwOURCNDkxNjlFMkQ2RTAwNjIyNTU3IC8qIERhdGFiYXNlRXJyb3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDlEQjQ2MTY5
RTJENkUwMDYyMjU1NyAvKiBEYXRhYmFzZUVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU0NTZGMTgxNjc3RDc0RTAwNUVEREY5IC8qIERh
dGFiYXNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTQ1NkYxNjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAq
LzsgfTsKIAkJRkU0NTZGMTkxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0NTZGMTcxNjc3
RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFQjI2RDI4MTY3QThGMkEwMEZERDI2QiAvKiBE
YXRhYmFzZVNlcnZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRUIyNkQyNzE2N0E4RjJBMDBGREQyNkIgLyogRGF0YWJhc2VTZXJ2ZXIuY3BwICov
OyB9OworCQlGRUFGNjY1NDE2Nzk3MDMyMDA2MkQwQzUgLyogRGF0YWJhc2VTZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQUY2NjUzMTY3OTcw
MDcwMDYyRDBDNSAvKiBEYXRhYmFzZVNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFREVGODQxMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRh
YmFzZVN0cmF0ZWd5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFREVGODNGMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCAq
LzsgfTsKKwkJRkVERUY4NDIxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREVGODQwMTY3
OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2RkQ0ODgwRjY3NkU1NzAwMDkyODczIC8q
IENvb3JkaW5hdGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTZGRDQ4NTBGNjc2RTU3MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTZGRDQ4RDBGNjc2RTkz
MDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTZGRDQ4QjBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGlu
YXRlcy5jcHAgKi87IH07CiAJCUZFNkZENDhFMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5h
dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTZG
RDQ4QzBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5oICovOyB9OwpAQCAtNjc1MCwx
MCArNjc2Miw2IEBACiAJCUZFODBEQTY2MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2
MjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5oICovOyB9OwogCQlGRTgwREE3MTBF
OUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZEMEU5QzQ3MkYwMDBENkY3NSAvKiBK
U1Bvc2l0aW9uRXJyb3IuY3BwICovOyB9OwogCQlGRTgwREE3MjBFOUM0NzJGMDAwRDZGNzUgLyog
SlNQb3NpdGlvbkVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTgwREE2RTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmggKi87
IH07Ci0JCUZFQUY2NjU0MTY3OTcwMzIwMDYyRDBDNSAvKiBEYXRhYmFzZVNlcnZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBRjY2NTMxNjc5NzAw
NzAwNjJEMEM1IC8qIERhdGFiYXNlU2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRkVCMjZEMjgxNjdBOEYyQTAwRkREMjZCIC8qIERhdGFi
YXNlU2VydmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFQjI2RDI3MTY3QThGMkEwMEZERDI2QiAvKiBEYXRhYmFzZVNlcnZlci5jcHAgKi87IH07
Ci0JCUZFREVGODQxMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREVGODNGMTY3OTcx
MDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCAqLzsgfTsKLQkJRkVERUY4NDIxNjc5
NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREVGODQwMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRh
YmFzZVN0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRkY5NDVFQ0IxNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkY5NDVFQzkxNjFG
N0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuY3BwICovOyB9OwogCQlGRjk0NUVDQzE2MUY3
RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkY5NDVFQ0ExNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0Vs
ZW1lbnQuaCAqLzsgfTsKIAkJRkZENUI5N0ExMzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmls
aXR5U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkZENUI5NzcxMzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwICov
OyB9OwpAQCAtMTQ0MTAsOSArMTQ0MTgsMjEgQEAKIAkJRkRGN0U5QzIxM0FDMjFEQjAwQTUxRUFD
IC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkUwOURCNDYxNjlFMkQ2RTAwNjIyNTU3IC8qIERhdGFiYXNlRXJyb3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VFcnJvci5oOyBwYXRoID0gTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFMTE1RkE5MTY3OTg4Q0QwMDI0OTEzNCAvKiBBYnN0cmFjdERhdGFiYXNlU2VydmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaDsg
cGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTE2Q0ZDRjE2OUQxREVDMDBEM0EwQzcgLyogRGF0
YWJhc2VCYWNrZW5kQXN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gRGF0YWJhc2VCYWNrZW5kQXN5bmMuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZUJhY2tlbmRBc3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
MTZDRkQwMTY5RDFERUMwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRBc3luYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZUJhY2tlbmRBc3luYy5oOyBwYXRoID0g
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRBc3luYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRTZGNkFBRDE2OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNr
ZW5kQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRh
YmFzZUJhY2tlbmRDb250ZXh0LmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VCYWNrZW5kQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNkY2
QUFFMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlQmFja2VuZENvbnRleHQuaDsgcGF0aCA9
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRTE2Q0ZEMTE2OUQxREVDMDBEM0EwQzcgLyogRGF0YWJhc2VC
YWNrZW5kU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRh
YmFzZUJhY2tlbmRTeW5jLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VC
YWNrZW5kU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTZDRkQyMTY5
RDFERUMwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRTeW5jLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlQmFja2VuZFN5bmMuaDsgcGF0aCA9IE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGRUJDNUYyRjE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlQmFzZS5jcHA7IHBhdGggPSBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUZFQkM1RjMwMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VCYXNlLmg7IHBhdGggPSBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRTMzNzFBMDE2N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlQmFzaWNUeXBlcy5oOyBwYXRo
ID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhc2ljVHlwZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkU0NTZGMTYxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFu
YWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZU1h
bmFnZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTQ1NkYxNzE2NzdENzRFMDA1RURERjkg
LyogRGF0YWJhc2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERh
dGFiYXNlTWFuYWdlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVCMjZEMjcxNjdBOEYyQTAwRkRE
MjZCIC8qIERhdGFiYXNlU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERhdGFiYXNlU2VydmVyLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUFGNjY1MzE2
Nzk3MDA3MDA2MkQwQzUgLyogRGF0YWJhc2VTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gRGF0YWJhc2VTZXJ2ZXIuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVERUY4M0Yx
Njc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YWJhc2VTdHJhdGVneS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFREVGODQwMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0
ZWd5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlU3RyYXRlZ3ku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RkQ0ODUwRjY3NkU1NzAwMDkyODcz
IC8qIENvb3JkaW5hdGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb3Jk
aW5hdGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNkZENDg2MEY2NzZFNTcw
MDA5Mjg3MyAvKiBDb29yZGluYXRlcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ29vcmRp
bmF0ZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTZGRDQ4QjBGNjc2RTkz
MDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0Nvb3JkaW5hdGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE0NDI1LDEwICsxNDQ0NSw2IEBACiAJCUZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBK
U0dlb3Bvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VvcG9z
aXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4MERBNkQwRTlDNDcyRjAw
MEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRTgwREE2RTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9zaXRpb25FcnJvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlGRUFGNjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyogRGF0YWJhc2VT
ZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VTZXJ2ZXIu
aDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkVCMjZEMjcxNjdBOEYyQTAwRkREMjZCIC8qIERhdGFiYXNl
U2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNl
U2VydmVyLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRURFRjgzRjE2Nzk3MTA4MDAwRTQ0NEEg
LyogRGF0YWJhc2VTdHJhdGVneS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEYXRhYmFzZVN0cmF0ZWd5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RkVERUY4NDAxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRjk0NUVDOTE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQc2V1ZG9FbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkY5NDVFQ0ExNjFGN0YzNjAwOTcx
QkM4IC8qIFBzZXVkb0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHNldWRvRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRkQ1Qjk3NzEz
NUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NTE2LDYgKzE4NTMyLDE0IEBACiAJCQkJOTdCQzY5RTIx
NTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQXV0aG9yaXplci5oICovLAogCQkJCTk3QkM2OUQ2
MTUwNUYwNzYwMDFCNzRBQyAvKiBEYXRhYmFzZUJhY2tlbmQuY3BwICovLAogCQkJCTk3QkM2OUQ3
MTUwNUYwNzYwMDFCNzRBQyAvKiBEYXRhYmFzZUJhY2tlbmQuaCAqLywKKwkJCQlGRTE2Q0ZDRjE2
OUQxREVDMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kQXN5bmMuY3BwICovLAorCQkJCUZFMTZD
RkQwMTY5RDFERUMwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRBc3luYy5oICovLAorCQkJCUZF
NkY2QUFEMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmNwcCAqLywK
KwkJCQlGRTZGNkFBRTE2OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5o
ICovLAorCQkJCUZFMTZDRkQxMTY5RDFERUMwMEQzQTBDNyAvKiBEYXRhYmFzZUJhY2tlbmRTeW5j
LmNwcCAqLywKKwkJCQlGRTE2Q0ZEMjE2OUQxREVDMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5k
U3luYy5oICovLAorCQkJCUZFQkM1RjJGMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2Uu
Y3BwICovLAorCQkJCUZFQkM1RjMwMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuaCAq
LywKIAkJCQlGRTMzNzFBMDE2N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmgg
Ki8sCiAJCQkJOTdCQzY5RTMxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ2FsbGJhY2suaCAq
LywKIAkJCQk5N0JDNjlFNDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDYWxsYmFjay5pZGwg
Ki8sCkBAIC0yMzMxMiw2ICsyMzMzNiwxMCBAQAogCQkJCTk3QkM2QTIxMTUwNUYwODEwMDFCNzRB
QyAvKiBEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzZBMjQxNTA1RjA4MTAwMUI3
NEFDIC8qIERhdGFiYXNlQXV0aG9yaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzY5REIx
NTA1RjA3NjAwMUI3NEFDIC8qIERhdGFiYXNlQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RkUxNkNGRDQxNjlEMURFRDAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZEFzeW5jLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGRTZGNkFCMDE2OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNrZW5k
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUxNkNGRDYxNjlEMURFRDAwRDNBMEM3IC8q
IERhdGFiYXNlQmFja2VuZFN5bmMuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFQkM1RjMyMTZCRDBD
QzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzM3MUEy
MTY3QzExRDQwMEVEQjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3QkM2QTI1MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5N0JDNkEyODE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0
LmggaW4gSGVhZGVycyAqLywKQEAgLTI2OTYwLDYgKzI2OTg4LDEwIEBACiAJCQkJOTdCQzZBMjAx
NTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QkM2
QTIzMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUF1dGhvcml6ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTdCQzY5REExNTA1RjA3NjAwMUI3NEFDIC8qIERhdGFiYXNlQmFja2VuZC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlGRTE2Q0ZEMzE2OUQxREVEMDBEM0EwQzcgLyogRGF0YWJhc2VC
YWNrZW5kQXN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU2RjZBQUYxNjlFMDU3NTAwRkMz
MEEyIC8qIERhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUx
NkNGRDUxNjlEMURFRDAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZFN5bmMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRkVCQzVGMzExNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5N0JDNkEyNzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VD
b250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNDU2RjE4MTY3N0Q3NEUwMDVFRERGOSAv
KiBEYXRhYmFzZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVCMjZEMjgxNjdBOEYy
QTAwRkREMjZCIC8qIERhdGFiYXNlU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTkwMCkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMt
MDItMDUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVj
ZWQgYmFjay1lbmQgZGF0YWJhc2UgY2xhc3NlcyArIGEgZmV3IHNtYWxsIGZpeGVzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NzU5LgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL0RhdGFiYXNl
T2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VPYnNlcnZlcjo6ZGF0YWJh
c2VPcGVuZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VPYnNlcnZlcjo6ZGF0YWJhc2VN
b2RpZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU9ic2VydmVyOjpkYXRhYmFzZUNs
b3NlZCk6CisKIDIwMTMtMDItMDUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDE4OTYuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRhYmFzZU9ic2VydmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRhYmFzZU9ic2VydmVyLmNwcAko
cmV2aXNpb24gMTQxODIwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRGF0YWJhc2VP
YnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJD
cm9zc1RocmVhZENvcGllci5oIgogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1
ZGUgIkRhdGFiYXNlQmFja2VuZC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlICJXZWJDb21tb25Xb3JrZXJDbGllbnQuaCIKQEAgLTE3OSwxOSArMTgw
LDE5IEBAIGJvb2wgRGF0YWJhc2VPYnNlcnZlcjo6Y2FuRXN0YWJsaXNoRGF0YWIKIAogdm9pZCBE
YXRhYmFzZU9ic2VydmVyOjpkYXRhYmFzZU9wZW5lZChEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNl
KQogewotICAgIEFTU0VSVChkYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0Nv
bnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGRhdGFiYXNlLT5kYXRhYmFzZUNvbnRleHQoKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CiAgICAgV2ViRGF0
YWJhc2U6Om9ic2VydmVyKCktPmRhdGFiYXNlT3BlbmVkKFdlYkRhdGFiYXNlKGRhdGFiYXNlKSk7
CiB9CiAKIHZvaWQgRGF0YWJhc2VPYnNlcnZlcjo6ZGF0YWJhc2VNb2RpZmllZChEYXRhYmFzZUJh
Y2tlbmQqIGRhdGFiYXNlKQogewotICAgIEFTU0VSVChkYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGRhdGFiYXNlLT5kYXRh
YmFzZUNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQo
KSk7CiAgICAgV2ViRGF0YWJhc2U6Om9ic2VydmVyKCktPmRhdGFiYXNlTW9kaWZpZWQoV2ViRGF0
YWJhc2UoZGF0YWJhc2UpKTsKIH0KIAogdm9pZCBEYXRhYmFzZU9ic2VydmVyOjpkYXRhYmFzZUNs
b3NlZChEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKQogewotICAgIEFTU0VSVChkYXRhYmFzZS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJU
KGRhdGFiYXNlLT5kYXRhYmFzZUNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5p
c0NvbnRleHRUaHJlYWQoKSk7CiAgICAgV2ViRGF0YWJhc2U6Om9ic2VydmVyKCktPmRhdGFiYXNl
Q2xvc2VkKFdlYkRhdGFiYXNlKGRhdGFiYXNlKSk7CiB9CiAK
</data>
<flag name="review"
          id="206191"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>