<?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>35530</bug_id>
          
          <creation_ts>2010-03-01 08:55:46 -0800</creation_ts>
          <short_desc>Enum value FORWARD, BACKWARD, RIGHT, LEFT are causing macro conflicts.</short_desc>
          <delta_ts>2010-06-01 07:19:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Lyon Chen">lyon.chen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>liachen</cc>
    
    <cc>ojan</cc>
    
    <cc>staikos</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>194715</commentid>
    <comment_count>0</comment_count>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-03-01 08:55:46 -0800</bug_when>
    <thetext>Enum value FORWARD, BACKWARD, RIGHT, LEFT of EDirection in SelectionController will cause compile error if any of them is defined as MACRO before. Undefine all of them ahead of EDirection declaration remove potential conflict.

undef FORWARD
undef BACKWARD
undef RIGHT
undef LEFT

Of course this doesn&apos;t really remove the conflict, so maybe we should use (EForward, EBackward, ERight, ELeft) for EDirection values instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194717</commentid>
    <comment_count>1</comment_count>
      <attachid>49727</attachid>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-03-01 09:03:32 -0800</bug_when>
    <thetext>Created attachment 49727
Simple fix for bug 35530.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194813</commentid>
    <comment_count>2</comment_count>
      <attachid>49727</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-01 14:06:23 -0800</bug_when>
    <thetext>Comment on attachment 49727
Simple fix for bug 35530.

A change like this needs a comment. Having these #undef at the top of the file with no comment is not good.

The extra blank line before the class definition is not wanted.

A better change would be to change these identifiers. There&apos;s no reason to use all capitals for these. While the #undef will work it&apos;s probably not a major project to simply change these to use normal mixed case as per the WebKit coding guidelines.

review- because there needs to be a comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194827</commentid>
    <comment_count>3</comment_count>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-03-01 14:28:01 -0800</bug_when>
    <thetext>OK, will change these enumeration define instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194926</commentid>
    <comment_count>4</comment_count>
      <attachid>49776</attachid>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-03-01 21:21:17 -0800</bug_when>
    <thetext>Created attachment 49776
WebCore patch for bug 35530.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194927</commentid>
    <comment_count>5</comment_count>
      <attachid>49777</attachid>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-03-01 21:22:10 -0800</bug_when>
    <thetext>Created attachment 49777
WebKit/qt patch for bug 35530.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194928</commentid>
    <comment_count>6</comment_count>
      <attachid>49778</attachid>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-03-01 21:22:55 -0800</bug_when>
    <thetext>Created attachment 49778
WebKit/haiku patch for bug 35530.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194929</commentid>
    <comment_count>7</comment_count>
      <attachid>49779</attachid>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-03-01 21:23:29 -0800</bug_when>
    <thetext>Created attachment 49779
WebKit/chromium patch for bug 35530.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194930</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-01 21:27:56 -0800</bug_when>
    <thetext>Attachment 49776 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/editing/SelectionController.cpp:243:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
WebCore/editing/SelectionController.cpp:609:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
WebCore/editing/SelectionController.cpp:645:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
WebCore/editing/SelectionController.cpp:707:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
WebCore/editing/SelectionController.cpp:749:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
WebCore/editing/Editor.cpp:244:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 6 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194933</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-01 21:30:21 -0800</bug_when>
    <thetext>Attachment 49779 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/320509</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194935</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-01 21:41:00 -0800</bug_when>
    <thetext>Attachment 49776 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/321431</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194940</commentid>
    <comment_count>11</comment_count>
      <attachid>49780</attachid>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-03-01 21:59:54 -0800</bug_when>
    <thetext>Created attachment 49780
Combined patch for bug 35530.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194941</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-01 22:06:23 -0800</bug_when>
    <thetext>Attachment 49780 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/editing/Editor.cpp:244:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195067</commentid>
    <comment_count>13</comment_count>
      <attachid>49807</attachid>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-03-02 09:16:23 -0800</bug_when>
    <thetext>Created attachment 49807
Combined patch for bug 35530, with style issue fixed.

This patch also include many coding style fix for files related to this bug, to pass coding style check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195072</commentid>
    <comment_count>14</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2010-03-02 09:34:55 -0800</bug_when>
    <thetext>Sorry to be a pain but is it possible to separate the style changes from the actual patch?  They could go in separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195076</commentid>
    <comment_count>15</comment_count>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-03-02 09:52:56 -0800</bug_when>
    <thetext>George, that will mean 2 patches for this one bug, is that fine? If it&apos;s fine I can do it. Or should I open a new bug just for the coding style change? (Personally I prefer not open a new bug).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195106</commentid>
    <comment_count>16</comment_count>
      <attachid>49807</attachid>
    <who name="George Staikos">staikos</who>
    <bug_when>2010-03-02 10:40:13 -0800</bug_when>
    <thetext>Comment on attachment 49807
Combined patch for bug 35530, with style issue fixed.

I guess it&apos;s fine as-is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195250</commentid>
    <comment_count>17</comment_count>
      <attachid>49807</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-02 14:40:37 -0800</bug_when>
    <thetext>Comment on attachment 49807
Combined patch for bug 35530, with style issue fixed.

Rejecting patch 49807 from commit-queue.

Unexpected failure when landing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--no-update&apos;, &apos;--parent-command=commit-queue&apos;, &apos;--build-style=both&apos;, &apos;--quiet&apos;, &apos;49807&apos;]&quot; exit_code: 1
Last 500 characters of output:
ebkitpy/statusserver.py&quot;, line 87, in update_status
    return NetworkTransaction().run(lambda: self._post_to_server(queue_name, status, patch, results_file))
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/networktransaction.py&quot;, line 52, in run
    self._check_for_timeout()
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/networktransaction.py&quot;, line 58, in _check_for_timeout
    raise NetworkTimeout()
webkitpy.networktransaction.NetworkTimeout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195363</commentid>
    <comment_count>18</comment_count>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-03-02 20:09:39 -0800</bug_when>
    <thetext>File a bug against webkit-patch? Is this what supposed to be done?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195374</commentid>
    <comment_count>19</comment_count>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-03-02 20:55:26 -0800</bug_when>
    <thetext>As error info shown below, isn&apos;t this just a network timeout?

line 52, in run
    self._check_for_timeout()
  File
&quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/networktransaction.py&quot;,
line 58, in _check_for_timeout
    raise NetworkTimeout()
webkitpy.networktransaction.NetworkTimeout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195378</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-02 21:50:30 -0800</bug_when>
    <thetext>Eric: Is this related to my recent change to the network timeout code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196575</commentid>
    <comment_count>21</comment_count>
      <attachid>49807</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-05 12:14:38 -0800</bug_when>
    <thetext>Comment on attachment 49807
Combined patch for bug 35530, with style issue fixed.

Not sure, but lets try again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196848</commentid>
    <comment_count>22</comment_count>
      <attachid>49807</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-05 19:12:07 -0800</bug_when>
    <thetext>Comment on attachment 49807
Combined patch for bug 35530, with style issue fixed.

Rejecting patch 49807 from commit-queue.

Unexpected failure when landing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--no-update&apos;, &apos;--parent-command=commit-queue&apos;, &apos;--build-style=both&apos;, &apos;--quiet&apos;, &apos;49807&apos;]&quot; exit_code: 1
Last 500 characters of output:
ebkitpy/statusserver.py&quot;, line 87, in update_status
    return NetworkTransaction().run(lambda: self._post_to_server(queue_name, status, patch, results_file))
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/networktransaction.py&quot;, line 52, in run
    self._check_for_timeout()
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/networktransaction.py&quot;, line 58, in _check_for_timeout
    raise NetworkTimeout()
webkitpy.networktransaction.NetworkTimeout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196850</commentid>
    <comment_count>23</comment_count>
      <attachid>49807</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-05 19:23:49 -0800</bug_when>
    <thetext>Comment on attachment 49807
Combined patch for bug 35530, with style issue fixed.

We don&apos;t know what&apos;s causing this yet.  Adam added this code recently.  We&apos;ll figure it out. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196851</commentid>
    <comment_count>24</comment_count>
      <attachid>49807</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-05 19:25:47 -0800</bug_when>
    <thetext>Comment on attachment 49807
Combined patch for bug 35530, with style issue fixed.

It&apos;s hitting an error due to the failure log being too large.  This must be breaking Mac somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203751</commentid>
    <comment_count>25</comment_count>
      <attachid>49807</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-24 20:08:43 -0700</bug_when>
    <thetext>Comment on attachment 49807
Combined patch for bug 35530, with style issue fixed.

Lyon isn&apos;t a committer.  So it seems that the cq- is effectively the same as an r-.  Please revise and resubmit this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204404</commentid>
    <comment_count>26</comment_count>
      <attachid>51713</attachid>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-03-25 21:36:20 -0700</bug_when>
    <thetext>Created attachment 51713
Coding style patch.

This is a pre-patch, it fixes the coding style issues in files to be changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204607</commentid>
    <comment_count>27</comment_count>
      <attachid>51746</attachid>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-03-26 09:08:10 -0700</bug_when>
    <thetext>Created attachment 51746
Patch for bug 35530.

This is the real change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204609</commentid>
    <comment_count>28</comment_count>
      <attachid>51713</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-26 09:15:13 -0700</bug_when>
    <thetext>Comment on attachment 51713
Coding style patch.

&gt;  #include &quot;AXObjectCache.h&quot;
&gt;  #include &quot;ApplyStyleCommand.h&quot;
&gt; -#include &quot;CharacterNames.h&quot;
&gt; -#include &quot;CompositionEvent.h&quot;
&gt; -#include &quot;CreateLinkCommand.h&quot;
&gt;  #include &quot;CSSComputedStyleDeclaration.h&quot;
&gt;  #include &quot;CSSMutableStyleDeclaration.h&quot;
&gt;  #include &quot;CSSProperty.h&quot;
&gt;  #include &quot;CSSPropertyNames.h&quot;
&gt;  #include &quot;CSSValueKeywords.h&quot;
&gt; +#include &quot;CharacterNames.h&quot;
&gt;  #include &quot;ClipboardEvent.h&quot;
&gt; +#include &quot;CompositionEvent.h&quot;
&gt; +#include &quot;CreateLinkCommand.h&quot;
&gt;  #include &quot;DeleteButtonController.h&quot;
&gt;  #include &quot;DeleteSelectionCommand.h&quot;
&gt;  #include &quot;DocLoader.h&quot;

This is incorrect. The coding style specifies:

    &quot;#include statements should be in sorted order (case sensitive, as done by the command-line sort tool or the Xcode sort selection command).&quot;

You have changed them from case sensitive sort order to a different sort order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204611</commentid>
    <comment_count>29</comment_count>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-03-26 09:19:52 -0700</bug_when>
    <thetext>Hmmm, so the current check-webkit-style has bug? It give me zero error for all files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204618</commentid>
    <comment_count>30</comment_count>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-03-26 09:29:12 -0700</bug_when>
    <thetext>Darin, checked again, could not find what&apos;s wrong. Could you please let me know which line of change in Editor.cpp is in wrong sort order?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228299</commentid>
    <comment_count>31</comment_count>
      <attachid>51713</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-05-20 03:31:40 -0700</bug_when>
    <thetext>Comment on attachment 51713
Coding style patch.

(In reply to comment #30)
&gt; Darin, checked again, could not find what&apos;s wrong. Could you please let me know which line of change in Editor.cpp is in wrong sort order?

I think your change is correct.


WebCore/ChangeLog:5
 +          Enum value FORWARD, BACKWARD, RIGHT, LEFT are causing macro conflicts.
 +          https://bugs.webkit.org/show_bug.cgi?id=35530
This 1-line description doesn&apos;t represent the change.


WebCore/ChangeLog:8
 +          No new tests. (OOPS!)
Remove this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231462</commentid>
    <comment_count>32</comment_count>
      <attachid>51746</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-27 14:19:22 -0700</bug_when>
    <thetext>Comment on attachment 51746
Patch for bug 35530.

Ugh. Sorry, my comment got lost with my r-. Anyways, the code changes look good here. r- for the changelog issues in comment 30.

Sorry for the long wait on review. I can r+ this quickly once the changelog issues are resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231464</commentid>
    <comment_count>33</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-27 14:20:11 -0700</bug_when>
    <thetext>Ugh. By comment 30, I obviously mean 31.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231467</commentid>
    <comment_count>34</comment_count>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2010-05-27 14:24:01 -0700</bug_when>
    <thetext>Thanks, Ojan, will update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231470</commentid>
    <comment_count>35</comment_count>
      <attachid>51713</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-27 14:40:54 -0700</bug_when>
    <thetext>Comment on attachment 51713
Coding style patch.

Sorry you had to wait so long to get a followup review here. I ran the includes in question through sort and it looks like what you have is correct. So, I can r+ this once you fix the ChangeLog descriptions and update this patch to tip of tree.

WebCore/ChangeLog:8
 +          No new tests. (OOPS!)
Please remove this line and add a line explaining that these are style cleanups in preparation for fixing bug 35530.

WebKit/qt/ChangeLog:7
 +  
Please add a line explaining that these are style cleanups in preparation for fixing bug 35530.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232187</commentid>
    <comment_count>36</comment_count>
      <attachid>57420</attachid>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2010-05-30 09:55:14 -0700</bug_when>
    <thetext>Created attachment 57420
Cleanup patch for 35530</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232188</commentid>
    <comment_count>37</comment_count>
      <attachid>57421</attachid>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2010-05-30 09:55:59 -0700</bug_when>
    <thetext>Created attachment 57421
Patch for bug 35530.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232194</commentid>
    <comment_count>38</comment_count>
      <attachid>57421</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-30 11:06:48 -0700</bug_when>
    <thetext>Comment on attachment 57421
Patch for bug 35530.

These are fine except for the &quot;E&quot; prefix. They should be &quot;DirectionForward&quot; not &quot;EDirectionForward&quot;. I know the enums currently have names with &quot;E&quot; prefixes, but it&apos;s not our standard coding style and pretty ugly!

I&apos;m going to say r=me assuming this doesn&apos;t break the build, but I don&apos;t like all that &quot;E&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232204</commentid>
    <comment_count>39</comment_count>
      <attachid>57424</attachid>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2010-05-30 11:21:59 -0700</bug_when>
    <thetext>Created attachment 57424
Patch for bug 35530 with the &quot;E&quot; in all enumeration values removed.

Hi, Darin, I removed the &quot;E&quot; prefix in all these 6 changed enumeration values in the new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232206</commentid>
    <comment_count>40</comment_count>
      <attachid>57424</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-30 11:24:33 -0700</bug_when>
    <thetext>Comment on attachment 57424
Patch for bug 35530 with the &quot;E&quot; in all enumeration values removed.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232222</commentid>
    <comment_count>41</comment_count>
      <attachid>57420</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-05-30 15:26:45 -0700</bug_when>
    <thetext>Comment on attachment 57420
Cleanup patch for 35530

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232231</commentid>
    <comment_count>42</comment_count>
      <attachid>57420</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-30 17:52:07 -0700</bug_when>
    <thetext>Comment on attachment 57420
Cleanup patch for 35530

Clearing flags on attachment: 57420

Committed r60421: &lt;http://trac.webkit.org/changeset/60421&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232348</commentid>
    <comment_count>43</comment_count>
      <attachid>57424</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-05-31 06:54:53 -0700</bug_when>
    <thetext>Comment on attachment 57424
Patch for bug 35530 with the &quot;E&quot; in all enumeration values removed.

Set cq+, on Lyons request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232360</commentid>
    <comment_count>44</comment_count>
      <attachid>57424</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-31 07:30:50 -0700</bug_when>
    <thetext>Comment on attachment 57424
Patch for bug 35530 with the &quot;E&quot; in all enumeration values removed.

Rejecting patch 57424 from commit-queue.

Unexpected failure when landing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--build&apos;, &apos;--non-interactive&apos;, &apos;--ignore-builders&apos;, &apos;--build-style=both&apos;, &apos;--quiet&apos;, 57424, &apos;--test&apos;, &apos;--parent-command=commit-queue&apos;, &apos;--no-update&apos;]&quot; exit_code: 1
Last 500 characters of output:
date_status
    return NetworkTransaction().run(lambda: self._post_status_to_server(queue_name, status, patch, results_file))
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/common/net/networktransaction.py&quot;, line 56, in run
    self._check_for_timeout()
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/common/net/networktransaction.py&quot;, line 63, in _check_for_timeout
    raise NetworkTimeout()
webkitpy.common.net.networktransaction.NetworkTimeout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232446</commentid>
    <comment_count>45</comment_count>
      <attachid>57424</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-31 10:28:19 -0700</bug_when>
    <thetext>Comment on attachment 57424
Patch for bug 35530 with the &quot;E&quot; in all enumeration values removed.

The NetworkTimeout error often means that it&apos;s trying to upload a failure log which is too large for the server.  Which means this patch probably fails on Mac.

Looks like it also fails to apply for the stylebot.  We&apos;ll try again just to make sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232517</commentid>
    <comment_count>46</comment_count>
      <attachid>57424</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-31 14:18:40 -0700</bug_when>
    <thetext>Comment on attachment 57424
Patch for bug 35530 with the &quot;E&quot; in all enumeration values removed.

Rejecting patch 57424 from commit-queue.

Unexpected failure when landing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--build&apos;, &apos;--non-interactive&apos;, &apos;--ignore-builders&apos;, &apos;--build-style=both&apos;, &apos;--quiet&apos;, 57424, &apos;--test&apos;, &apos;--parent-command=commit-queue&apos;, &apos;--no-update&apos;]&quot; exit_code: 1
Last 500 characters of output:
date_status
    return NetworkTransaction().run(lambda: self._post_status_to_server(queue_name, status, patch, results_file))
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/common/net/networktransaction.py&quot;, line 56, in run
    self._check_for_timeout()
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/common/net/networktransaction.py&quot;, line 63, in _check_for_timeout
    raise NetworkTimeout()
webkitpy.common.net.networktransaction.NetworkTimeout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232545</commentid>
    <comment_count>47</comment_count>
      <attachid>57501</attachid>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2010-05-31 17:35:01 -0700</bug_when>
    <thetext>Created attachment 57501
Patch updated to 108b044c

Updated to commit till 108b044c.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232546</commentid>
    <comment_count>48</comment_count>
      <attachid>57501</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-05-31 17:39:07 -0700</bug_when>
    <thetext>Comment on attachment 57501
Patch updated to 108b044c

The diff for WebCore/ChangeLog is not a good format.  Please make a patch with the latest revision of WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232553</commentid>
    <comment_count>49</comment_count>
      <attachid>57503</attachid>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2010-05-31 17:52:57 -0700</bug_when>
    <thetext>Created attachment 57503
Patch regenerated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232600</commentid>
    <comment_count>50</comment_count>
      <attachid>57503</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-05-31 20:30:20 -0700</bug_when>
    <thetext>Comment on attachment 57503
Patch regenerated.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232602</commentid>
    <comment_count>51</comment_count>
      <attachid>57503</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-31 21:03:25 -0700</bug_when>
    <thetext>Comment on attachment 57503
Patch regenerated.

Rejecting patch 57503 from commit-queue.

Unexpected failure when landing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--build&apos;, &apos;--non-interactive&apos;, &apos;--ignore-builders&apos;, &apos;--build-style=both&apos;, &apos;--quiet&apos;, 57503, &apos;--test&apos;, &apos;--parent-command=commit-queue&apos;, &apos;--no-update&apos;]&quot; exit_code: 1
Last 500 characters of output:
date_status
    return NetworkTransaction().run(lambda: self._post_status_to_server(queue_name, status, patch, results_file))
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/common/net/networktransaction.py&quot;, line 56, in run
    self._check_for_timeout()
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/common/net/networktransaction.py&quot;, line 63, in _check_for_timeout
    raise NetworkTimeout()
webkitpy.common.net.networktransaction.NetworkTimeout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232604</commentid>
    <comment_count>52</comment_count>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2010-05-31 21:12:54 -0700</bug_when>
    <thetext>Already reported a bug (https://bugs.webkit.org/show_bug.cgi?id=39954) for this patch landing error, and this is at least the 3rd time, not sure what to do anymore. Before the patch landing script issues are fixed, I don&apos;t see I have any choice but giving up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232614</commentid>
    <comment_count>53</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-31 21:46:27 -0700</bug_when>
    <thetext>This patch breaks mac.  But the error report is too large to upload.  that&apos;s why the commit-bot is failing.  someone will have to test this on mac manually to get you the error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232630</commentid>
    <comment_count>54</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-05-31 23:12:01 -0700</bug_when>
    <thetext>The error was:

WebKit/mac/WebView/WebTextCompletionController.mm: In function ‘void -[WebTextCompletionController doCompletion](WebTextCompletionController*, objc_selector*)’:
WebKit/mac/WebView/WebTextCompletionController.mm:175: error: ‘EXTEND’ is not a member of ‘WebCore::SelectionController’
WebKit/mac/WebView/WebTextCompletionController.mm:176: error: ‘BACKWARD’ is not a member of ‘WebCore::SelectionController’

ok, I&apos;ll land the patch with a fix for the above error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232631</commentid>
    <comment_count>55</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-05-31 23:13:42 -0700</bug_when>
    <thetext>Committed r60463: &lt;http://trac.webkit.org/changeset/60463&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232735</commentid>
    <comment_count>56</comment_count>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2010-06-01 07:19:04 -0700</bug_when>
    <thetext>Thanks, Kent. Now I know why I failed at Mac build, because when I did a global search, I forgot to search for .m/.mm files!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49727</attachid>
            <date>2010-03-01 09:03:32 -0800</date>
            <delta_ts>2010-03-01 21:21:17 -0800</delta_ts>
            <desc>Simple fix for bug 35530.</desc>
            <filename>35350.patch</filename>
            <type>text/plain</type>
            <size>1081</size>
            <attacher name="Lyon Chen">lyon.chen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmFkZTU1YS4uMTk5NTZhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wMy0wMSAgTHlvbiBDaGVuICA8
bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEVudW0gdmFsdWUgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBMRUZUIGFyZSBj
YXVzaW5nIG1hY3JvIGNvbmZsaWN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM1NTMwCisKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRy
b2xsZXIuaDoKKwogMjAxMC0wMS0xMyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oIGIvV2ViQ29yZS9lZGl0aW5n
L1NlbGVjdGlvbkNvbnRyb2xsZXIuaAppbmRleCA3Y2FkNDM1Li40YjMxOGM4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvZWRp
dGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgKQEAgLTMyLDYgKzMyLDExIEBACiAjaW5jbHVkZSAi
VmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCisjdW5k
ZWYgRk9SV0FSRAorI3VuZGVmIEJBQ0tXQVJECisjdW5kZWYgUklHSFQKKyN1bmRlZiBMRUZUCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJhbWU7CkBAIC0zOSw2ICs0NCw3IEBAIGNs
YXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFZpc2libGVQ
b3NpdGlvbjsKIAorCiBjbGFzcyBTZWxlY3Rpb25Db250cm9sbGVyIDogcHVibGljIE5vbmNvcHlh
YmxlIHsKIHB1YmxpYzoKICAgICBlbnVtIEVBbHRlcmF0aW9uIHsgTU9WRSwgRVhURU5EIH07Cg==
</data>
<flag name="review"
          id="32671"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49776</attachid>
            <date>2010-03-01 21:21:17 -0800</date>
            <delta_ts>2010-03-01 21:59:54 -0800</delta_ts>
            <desc>WebCore patch for bug 35530.</desc>
            <filename>35530_webcore.patch</filename>
            <type>text/plain</type>
            <size>45296</size>
            <attacher name="Lyon Chen">lyon.chen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzgzZDY3OS4uYWRjY2U0ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MCBAQAorMjAxMC0wMy0wMSAgTHlvbiBDaGVuICA8
bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEVudW0gdmFsdWUgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBMRUZUIGFyZSBj
YXVzaW5nIG1hY3JvIGNvbmZsaWN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM1NTMwCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBvc2l0
aW9uUmFuZ2VGb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmRvQVhSYW5nZUZvckxpbmUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvUG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3Jh
bW1hckluUmFuZ2VzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3Rlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZURlbGV0ZVRvRW5kT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVU
b0VuZE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVXb3JkQmFj
a3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVdvcmRGb3J3YXJkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVGb3J3YXJkRGVsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVCYWNr
d2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZURv
d24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRm9yd2FyZCk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhlY3V0ZU1vdmVMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlTGVm
dEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVBhZ2VE
b3duKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYWdlVXApOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZU1vdmVSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92
ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
VG9CZWdpbm5pbmdPZkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9C
ZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlQW5kTW9kaWZ5
U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5
U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlQW5kTW9kaWZ5
U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGgpOgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRN
b2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYXJhZ3JhcGhG
b3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
VXApOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlV29yZEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhlY3V0ZU1vdmVXb3JkTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92
ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVN
b3ZlV29yZFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0QW5k
TW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5k
T2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lQW5k
TW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9SaWdodEVu
ZE9mTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmVB
bmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjp3aWxsQmVNb2Rp
ZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnkpOgor
ICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6KToKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3Nl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJl
c3NlZCk6CisgICAgICAgICogcGFnZS9ET01TZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NU2VsZWN0aW9uOjptb2RpZnkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9u
OjpkZWxldGVGcm9tRG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25N
b3ZlbWVudCk6CisKIDIwMTAtMDMtMDEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCBhYWEy
OGFlLi42YTVmMGQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0yMTYzLDcgKzIxNjMsNyBAQCBWaXNpYmxlUG9zaXRp
b25SYW5nZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZUZv
ckxpbmUodW5zaQogICAgIC8vIHdpbGwgYmUgYSBjYXJldCBhdCB2aXNpYmxlUG9zLgogICAgIFNl
bGVjdGlvbkNvbnRyb2xsZXIgc2VsZWN0aW9uOwogICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbih2aXNpYmxlUG9zKSk7Ci0gICAgc2VsZWN0aW9uLm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCBMaW5l
Qm91bmRhcnkpOworICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQsIExpbmVC
b3VuZGFyeSk7CiAgICAgCiAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKHNlbGVjdGlv
bi5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSwgc2VsZWN0aW9uLnNlbGVjdGlvbigpLnZpc2li
bGVFbmQoKSk7CiB9CkBAIC0yMzc1LDggKzIzNzUsOCBAQCBQbGFpblRleHRSYW5nZSBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojpkb0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkIGxpbmVOdW1iZXIp
CiAgICAgLy8gd2lsbCBiZSBhIGNhcmV0IGF0IHZpc2libGVQb3MuCiAgICAgU2VsZWN0aW9uQ29u
dHJvbGxlciBzZWxlY3Rpb247CiAgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlvbihWaXNpYmxlU2Vs
ZWN0aW9uKHZpc2libGVQb3MpKTsKLSAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVGVCwgTGluZUJvdW5kYXJ5KTsK
LSAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6UklHSFQsIExpbmVCb3VuZGFyeSk7CisgICAgc2VsZWN0aW9uLm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpEaXJlY3Rpb25MZWZ0LCBMaW5lQm91bmRhcnkpOworICAgIHNlbGVjdGlvbi5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6RGlyZWN0aW9uUmlnaHQsIExpbmVCb3VuZGFyeSk7CiAgICAgCiAgICAgLy8gY2FsY3VsYXRl
IHRoZSBpbmRpY2VzIGZvciB0aGUgc2VsZWN0aW9uIHN0YXJ0IGFuZCBlbmQKICAgICBWaXNpYmxl
UG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5zZWxlY3Rpb24oKS52aXNpYmxlU3Rh
cnQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTA2MWRkMi4uMmFjNzNjNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTI0MSwxMiArMjQxLDEyIEBAIGJvb2wgRWRpdG9yOjpkZWxldGVXaXRoRGlyZWN0aW9uKFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb24gZGlyZWN0aW9uLCBUZXh0CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgeyAgICAgICAgCiAgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAg
ICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQ6Ci0gICAgICAgICAgICBj
YXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hUOgorICAgICAgICAgICAgY2FzZSBTZWxlY3Rp
b25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkOgorICAgICAgICAgICAgY2FzZSBTZWxlY3Rp
b25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdodDoKICAgICAgICAgICAgICAgICBUeXBpbmdDb21t
YW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChtX2ZyYW1lLT5kb2N1bWVudCgpLCBjYW5TbWFy
dENvcHlPckRlbGV0ZSgpLCBncmFudWxhcml0eSwga2lsbFJpbmcpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRDoK
LSAgICAgICAgICAgIGNhc2UgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVGVDoKKyAgICAgICAgICAg
IGNhc2UgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQ6CisgICAgICAgICAg
ICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkxlZnQ6CiAgICAgICAgICAgICAg
ICAgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChtX2ZyYW1lLT5kb2N1bWVudCgpLCBj
YW5TbWFydENvcHlPckRlbGV0ZSgpLCBncmFudWxhcml0eSwga2lsbFJpbmcpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMjU4LDcgKzIyNTgsNyBAQCB2b2lkIEVkaXRv
cjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Qb3NpdGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24gJnApCiAKICAgICAgICAgLy8gUmVzZXQgdGhlIGNoYXJldCBvbmUgY2hhcmFjdGVyIGZ1
cnRoZXIuCiAgICAgICAgIGZyYW1lKCktPnNlbGVjdGlvbigpLT5tb3ZlVG8oZnJhbWUoKS0+c2Vs
ZWN0aW9uKCktPmVuZCgpKTsKLSAgICAgICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPm1vZGlmeShT
ZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBD
aGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgIGZyYW1lKCktPnNlbGVjdGlvbigpLT5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkRpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICB9CiAKICAg
ICBpZiAoIWlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQpAQCAtMjU0NywxMSArMjU0NywxMSBA
QCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhi
b29sIG1hcmtTcGVsbGluZywgUmFuZ2UqCiAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVj
dGlvblJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShwYXJhZ3JhcGhSYW5nZS5nZXQoKSwg
MCwgc2VsZWN0aW9uT2Zmc2V0KTsKICAgICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5t
b3ZlVG8oc2VsZWN0aW9uUmFuZ2UtPmVuZFBvc2l0aW9uKCksIERPV05TVFJFQU0pOwogICAgICAg
ICAgICAgaWYgKGFkanVzdFNlbGVjdGlvbkZvclBhcmFncmFwaEJvdW5kYXJpZXMpCi0gICAgICAg
ICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVy
OjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0
eSk7CisgICAgICAgICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0
aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gSWYgdGhpcyBmYWlscyBmb3IgYW55IHJlYXNvbiwgdGhlIGZhbGxiYWNrIGlz
IHRvIGdvIG9uZSBwb3NpdGlvbiBiZXlvbmQgdGhlIGxhc3QgcmVwbGFjZW1lbnQKICAgICAgICAg
ICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb3ZlVG8obV9mcmFtZS0+c2VsZWN0aW9uKCktPmVu
ZCgpKTsKLSAgICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hhcmFjdGVy
R3JhbnVsYXJpdHkpOworICAgICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShT
ZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogICAgICAgICB9CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDQzN2Q1ODQuLjBmM2U1N2MgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTMyMiwzMiArMzIyLDMyIEBAIHN0YXRpYyBi
b29sIGV4ZWN1dGVEZWxldGUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2Ugc291cmNlLCBjb25zCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2FyZChGcmFt
ZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJv
bGxlcjo6QkFDS1dBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAg
ZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkRpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlQmFja3dhcmRC
eURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgTE9HX0VSUk9SKCJEZWxldGVC
YWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlciBpcyBub3QgaW1wbGVtZW50ZWQs
IGRvaW5nIERlbGV0ZUJhY2t3YXJkIGluc3RlYWQiKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRl
bGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIENoYXJhY3Rl
ckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVX
aXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBDaGFy
YWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlRm9yd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCkt
PmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hhcmFj
dGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0
ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKEZyYW1lKiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1l
LT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNL
V0FSRCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5k
ZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJk
LCBMaW5lQm91bmRhcnksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3Rh
dGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgoRnJhbWUqIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJh
bWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJB
Q0tXQVJELCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0
b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25C
YWNrd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMzU1LDcgKzM1NSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb0Vu
ZE9mTGluZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwKIHsKICAg
ICAvLyBEZXNwaXRlIGl0cyBuYW1lLCB0aGlzIGNvbW1hbmQgc2hvdWxkIGRlbGV0ZSB0aGUgbmV3
bGluZSBhdCB0aGUgZW5kIG9mCiAgICAgLy8gYSBwYXJhZ3JhcGggaWYgeW91IGFyZSBhdCB0aGUg
ZW5kIG9mIGEgcGFyYWdyYXBoIChsaWtlIERlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgpLgotICAgIGZy
YW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpG
T1JXQVJELCBMaW5lQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkt
PmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2Fy
ZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTM2Myw3ICszNjMsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9FbmRPZlBhcmFncmFw
aChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdQogewogICAgIC8vIERlc3Bp
dGUgaXRzIG5hbWUsIHRoaXMgY29tbWFuZCBzaG91bGQgZGVsZXRlIHRoZSBuZXdsaW5lIGF0IHRo
ZSBlbmQgb2YKICAgICAvLyBhIHBhcmFncmFwaCBpZiB5b3UgYXJlIGF0IHRoZSBlbmQgb2YgYSBw
YXJhZ3JhcGguCi0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7
CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM4NCwxMyArMzg0LDEzIEBAIHN0YXRpYyBib29s
IGV4ZWN1dGVEZWxldGVUb01hcmsoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2UsIGNvbnN0CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVXb3JkQmFja3dhcmQoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkJBQ0tXQVJELCBXb3JkR3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFt
ZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVy
biB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEZvcndhcmQoRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkZPUldBUkQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5l
ZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25Gb3J3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtNDM3LDcgKzQzNyw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVGb3J3YXJkRGVs
ZXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjCiB7CiAg
ICAgc3dpdGNoIChzb3VyY2UpIHsKICAgICAgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJp
bmRpbmc6Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24o
U2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNl
LCB0cnVlKTsKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlv
bihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxh
cml0eSwgZmFsc2UsIHRydWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNh
c2UgQ29tbWFuZEZyb21ET006CiAgICAgICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlcklu
dGVyZmFjZToKQEAgLTU5NSw0OSArNTk1LDQ5IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4
dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpCiAK
IHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlQmFja3dhcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6QkFDS1dBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5
LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVC
YWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJB
Q0tXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0
cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVEb3du
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIExpbmVHcmFudWxhcml0eSwgdHJ1
ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIExp
bmVHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0
aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkZPUldBUkQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgTGluZUdyYW51bGFyaXR5LCB0cnVl
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVGb3J3YXJk
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5
LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2Fy
ZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
ZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7
CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZUxlZnQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVGVCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpEaXJlY3Rpb25MZWZ0LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlTGVmdEFuZE1vZGlmeVNlbGVjdGlv
bihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVy
OjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQsIENoYXJhY3RlckdyYW51bGFyaXR5
LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0
LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTY0Niw3ICs2NDYsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhZ2VEb3duKEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdAogICAgIGludCBkaXN0YW5j
ZSA9IHZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UoZnJhbWUpOwogICAgIGlmICghZGlzdGFuY2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgZGlzdGFuY2UsIHRydWUpOworICAgIHJldHVy
biBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0
aW9uTW92ZSwgZGlzdGFuY2UsIHRydWUpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBh
Z2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQpAQCAtNjU0LDcgKzY1NCw3IEBAIHN0YXRpYyBib29s
IGV4ZWN1dGVNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvCiAgICAgaW50IGRpc3RhbmNlID0gdmVydGljYWxTY3JvbGxEaXN0YW5jZShm
cmFtZSk7CiAgICAgaWYgKCFkaXN0YW5jZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRF
TkQsIGRpc3RhbmNlLCB0cnVlKTsKKyAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgZGlzdGFuY2UsIHRydWUp
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhZ2VVcChGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKQEAgLTY2Miw3ICs2NjIsNyBA
QCBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhZ2VVcChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgUwogICAgIGludCBkaXN0YW5jZSA9IHZlcnRpY2FsU2Ny
b2xsRGlzdGFuY2UoZnJhbWUpOwogICAgIGlmICghZGlzdGFuY2UpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6TU9WRSwgLWRpc3RhbmNlLCB0cnVlKTsKKyAgICByZXR1cm4gZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIC1kaXN0
YW5jZSwgdHJ1ZSk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFnZVVwQW5kTW9kaWZ5
U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25z
dCBTdHJpbmcmKQpAQCAtNjcwLDIxMCArNjcwLDIxMCBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTW92
ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bQogICAgIGludCBkaXN0YW5jZSA9IHZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UoZnJhbWUpOwogICAg
IGlmICghZGlzdGFuY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZnJhbWUt
PnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCAtZGlzdGFu
Y2UsIHRydWUpOworICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCAtZGlzdGFuY2UsIHRydWUpOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZVJpZ2h0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJ
R0hULCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUmlnaHRBbmRNb2Rp
ZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpSSUdIVCwgQ2hhcmFjdGVy
R3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRp
cmVjdGlvblJpZ2h0LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50KEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1P
VkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVl
KTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpB
bHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIERv
Y3VtZW50Qm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbihGcmFt
ZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRF
TkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVl
KTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpB
bHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwg
RG9jdW1lbnRCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkxpbmUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6QkFDS1dBUkQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZMaW5l
QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQs
IExpbmVCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
RGlyZWN0aW9uQmFja3dhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaChGcmFt
ZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZF
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUp
OworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgUGFy
YWdyYXBoQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24oRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhU
RU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgUGFyYWdyYXBoQm91bmRhcnksIHRy
dWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJk
LCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlKEZyYW1lKiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5z
ZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkJBQ0tXQVJELCBTZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIFNlbnRlbmNlQm91bmRhcnks
IHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRv
QmVnaW5uaW5nT2ZTZW50ZW5jZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkJBQ0tXQVJELCBTZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5k
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgU2VudGVuY2VCb3VuZGFy
eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3Zl
VG9FbmRPZkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVj
dGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIERvY3Vt
ZW50Qm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJl
Y3Rpb25Gb3J3YXJkLCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxl
Y3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0
cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJv
bGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBEb2N1bWVudEJvdW5k
YXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25G
b3J3YXJkLCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mU2VudGVuY2UoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6Rk9SV0FSRCwgU2VudGVuY2VCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFNlbnRlbmNlQm91bmRhcnksIHRy
dWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5k
T2ZTZW50ZW5jZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkZPUldBUkQsIFNlbnRlbmNlQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFNlbnRlbmNlQm91bmRhcnksIHRydWUpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZMaW5l
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7
CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIExpbmVC
b3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1
dGVNb3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250
cm9sbGVyOjpGT1JXQVJELCBMaW5lQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZlBhcmFn
cmFwaChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3Ry
aW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBQYXJhZ3JhcGhCb3VuZGFy
eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJv
bGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndh
cmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3Rh
dGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVY
VEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgUGFyYWdyYXBoQm91bmRhcnksIHRy
dWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQs
IFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVQYXJhZ3JhcGhCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFt
ZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRF
TkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBQYXJhZ3JhcGhHcmFudWxhcml0eSwg
dHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dh
cmQsIFBhcmFncmFwaEdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9u
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgUGFyYWdyYXBoR3JhbnVsYXJp
dHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZv
cndhcmQsIFBhcmFncmFwaEdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVVcChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpC
QUNLV0FSRCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVXBBbmRNb2RpZnlTZWxl
Y3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0
cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJv
bGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgTGluZUdyYW51bGFy
aXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25C
YWNrd2FyZCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkQmFja3dhcmQoRnJhbWUqIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6QkFDS1dBUkQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUp
OwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRCYWNr
d2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tX
QVJELCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRGb3J3YXJkKEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7Cisg
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFdvcmRHcmFu
dWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1
dGVNb3ZlV29yZEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250
cm9sbGVyOjpGT1JXQVJELCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZExl
ZnQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVGVCwgV29yZEdyYW51bGFyaXR5LCB0cnVl
KTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpB
bHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgV29yZEdy
YW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhl
Y3V0ZU1vdmVXb3JkTGVmdEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0
aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkxFRlQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkUmlnaHQoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9W
RSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6UklHSFQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7Cisg
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0LCBXb3JkR3JhbnVs
YXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
TW92ZVdvcmRSaWdodEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OlJJR0hULCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0LCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAg
IHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGlu
ZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVy
OjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpMRUZULCBMaW5lQm91bmRhcnksIHRydWUpOwor
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVy
YXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCBMaW5lQm91bmRh
cnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92
ZVRvTGVmdEVuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0
aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkxFRlQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb1JpZ2h0RW5kT2ZMaW5lKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1P
VkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCBMaW5lQm91bmRhcnksIHRydWUpOworICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdodCwgTGluZUJvdW5kYXJ5
LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVU
b1JpZ2h0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6UklHSFQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250
cm9sbGVyLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAppbmRl
eCAyNTk4MmQ0Li4yNTE4ZWU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9u
Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIu
Y3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpub2RlV2ls
bEJlUmVtb3ZlZChOb2RlICpub2RlKQogCiB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OndpbGxC
ZU1vZGlmaWVkKEVBbHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAg
ICBpZiAoYWx0ZXIgIT0gRVhURU5EKQorICAgIGlmIChhbHRlciAhPSBBbHRlcmF0aW9uRXh0ZW5k
KQogICAgICAgICByZXR1cm47CiAgICAgaWYgKG1fbGFzdENoYW5nZVdhc0hvcml6b250YWxFeHRl
bnNpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTI0MCwxMyArMjQwLDEzIEBAIHZvaWQgU2VsZWN0
aW9uQ29udHJvbGxlcjo6d2lsbEJlTW9kaWZpZWQoRUFsdGVyYXRpb24gYWx0ZXIsIEVEaXJlY3Rp
b24gZGlyZWN0aW9uCiAgICAgUG9zaXRpb24gZW5kID0gbV9zZWxlY3Rpb24uZW5kKCk7CiAgICAg
Ly8gRklYTUU6IFRoaXMgaXMgcHJvYmFibHkgbm90IGNvcnJlY3QgZm9yIHJpZ2h0IGFuZCBsZWZ0
IHdoZW4gdGhlIGRpcmVjdGlvbiBpcyBSVEwuCiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAg
ICAgICAgY2FzZSBSSUdIVDoKLSAgICAgICAgY2FzZSBGT1JXQVJEOgorICAgICAgICBjYXNlIERp
cmVjdGlvblJpZ2h0OgorICAgICAgICBjYXNlIERpcmVjdGlvbkZvcndhcmQ6CiAgICAgICAgICAg
ICBtX3NlbGVjdGlvbi5zZXRCYXNlKHN0YXJ0KTsKICAgICAgICAgICAgIG1fc2VsZWN0aW9uLnNl
dEV4dGVudChlbmQpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTEVGVDoKLSAg
ICAgICAgY2FzZSBCQUNLV0FSRDoKKyAgICAgICAgY2FzZSBEaXJlY3Rpb25MZWZ0OgorICAgICAg
ICBjYXNlIERpcmVjdGlvbkJhY2t3YXJkOgogICAgICAgICAgICAgbV9zZWxlY3Rpb24uc2V0QmFz
ZShlbmQpOwogICAgICAgICAgICAgbV9zZWxlY3Rpb24uc2V0RXh0ZW50KHN0YXJ0KTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtNjA2LDI2ICs2MDYsMjYgQEAgYm9vbCBTZWxlY3Rpb25Db250cm9s
bGVyOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0ZXIsIEVEaXJlY3Rpb24gZGlyLCBUZXh0R3JhbnVs
YXIKIAogICAgIFZpc2libGVQb3NpdGlvbiBwb3M7CiAgICAgc3dpdGNoIChkaXIpIHsKLSAgICAg
ICAgY2FzZSBSSUdIVDoKLSAgICAgICAgICAgIGlmIChhbHRlciA9PSBNT1ZFKQorICAgICAgICBj
YXNlIERpcmVjdGlvblJpZ2h0OgorICAgICAgICAgICAgaWYgKGFsdGVyID09IEFsdGVyYXRpb25N
b3ZlKQogICAgICAgICAgICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ1JpZ2h0KGdyYW51bGFyaXR5
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRp
bmdSaWdodChncmFudWxhcml0eSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBG
T1JXQVJEOgotICAgICAgICAgICAgaWYgKGFsdGVyID09IEVYVEVORCkKKyAgICAgICAgY2FzZSBE
aXJlY3Rpb25Gb3J3YXJkOgorICAgICAgICAgICAgaWYgKGFsdGVyID09IEFsdGVyYXRpb25FeHRl
bmQpCiAgICAgICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFudWxh
cml0eSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcG9zID0gbW9kaWZ5TW92
aW5nRm9yd2FyZChncmFudWxhcml0eSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBMRUZUOgotICAgICAgICAgICAgaWYgKGFsdGVyID09IE1PVkUpCisgICAgICAgIGNhc2UgRGly
ZWN0aW9uTGVmdDoKKyAgICAgICAgICAgIGlmIChhbHRlciA9PSBBbHRlcmF0aW9uTW92ZSkKICAg
ICAgICAgICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdMZWZ0KGdyYW51bGFyaXR5KTsKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdMZWZ0KGdy
YW51bGFyaXR5KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJBQ0tXQVJEOgot
ICAgICAgICAgICAgaWYgKGFsdGVyID09IEVYVEVORCkKKyAgICAgICAgY2FzZSBEaXJlY3Rpb25C
YWNrd2FyZDoKKyAgICAgICAgICAgIGlmIChhbHRlciA9PSBBbHRlcmF0aW9uRXh0ZW5kKQogICAg
ICAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdCYWNr
d2FyZChncmFudWxhcml0eSk7CkBAIC02NDIsMTAgKzY0MiwxMCBAQCBib29sIFNlbGVjdGlvbkNv
bnRyb2xsZXI6Om1vZGlmeShFQWx0ZXJhdGlvbiBhbHRlciwgRURpcmVjdGlvbiBkaXIsIFRleHRH
cmFudWxhcgogICAgIGludCB4ID0geFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKFNUQVJU
KTsKIAogICAgIHN3aXRjaCAoYWx0ZXIpIHsKLSAgICAgICAgY2FzZSBNT1ZFOgorICAgICAgICBj
YXNlIEFsdGVyYXRpb25Nb3ZlOgogICAgICAgICAgICAgbW92ZVRvKHBvcywgdXNlclRyaWdnZXJl
ZCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFWFRFTkQ6CisgICAgICAgIGNh
c2UgQWx0ZXJhdGlvbkV4dGVuZDoKICAgICAgICAgICAgIHNldEV4dGVudChwb3MsIHVzZXJUcmln
Z2VyZWQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNjU4LDEzICs2NTgsMTMgQEAg
Ym9vbCBTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0ZXIsIEVEaXJl
Y3Rpb24gZGlyLCBUZXh0R3JhbnVsYXIKICAgICAgICAgLy8gTk9URTogVGhlIG9uZSBleGNlcHRp
b24gaXMgdGhhdCB3ZSBuZWVkIHRvIGtlZXAgd29yZCBncmFudWxhcml0eSB0bwogICAgICAgICAv
LyBwcmVzZXJ2ZSBzbWFydCBkZWxldGUgYmVoYXZpb3Igd2hlbiBleHRlbmRpbmcgYnkgd29yZCAo
ZS5nLiBkb3VibGUtY2xpY2spLAogICAgICAgICAvLyB0aGVuIHNoaWZ0LW9wdGlvbi1yaWdodCBh
cnJvdywgdGhlbiBkZWxldGUgbmVlZHMgdG8gc21hcnQgZGVsZXRlLCBwZXIgVGV4dEVkaXQuCi0g
ICAgICAgIGlmICghKGFsdGVyID09IEVYVEVORCAmJiBncmFudWxhcml0eSA9PSBXb3JkR3JhbnVs
YXJpdHkgJiYgbV9mcmFtZS0+c2VsZWN0aW9uR3JhbnVsYXJpdHkoKSA9PSBXb3JkR3JhbnVsYXJp
dHkpKQorICAgICAgICBpZiAoIShhbHRlciA9PSBBbHRlcmF0aW9uRXh0ZW5kICYmIGdyYW51bGFy
aXR5ID09IFdvcmRHcmFudWxhcml0eSAmJiBtX2ZyYW1lLT5zZWxlY3Rpb25HcmFudWxhcml0eSgp
ID09IFdvcmRHcmFudWxhcml0eSkpCiAgICAgICAgICAgICBtX2ZyYW1lLT5zZXRTZWxlY3Rpb25H
cmFudWxhcml0eShDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAgfQogCiAgICAgc2V0TmVlZHNM
YXlvdXQoKTsKIAotICAgIG1fbGFzdENoYW5nZVdhc0hvcml6b250YWxFeHRlbnNpb24gPSBhbHRl
ciA9PSBFWFRFTkQ7CisgICAgbV9sYXN0Q2hhbmdlV2FzSG9yaXpvbnRhbEV4dGVuc2lvbiA9IGFs
dGVyID09IEFsdGVyYXRpb25FeHRlbmQ7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTY5OSwx
NyArNjk5LDE3IEBAIGJvb2wgU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9u
IGFsdGVyLCBpbnQgdmVydGljYWxEaXN0YW5jZSwgYm9vbCB1CiAgICAgaWYgKHVwKQogICAgICAg
ICB2ZXJ0aWNhbERpc3RhbmNlID0gLXZlcnRpY2FsRGlzdGFuY2U7CiAKLSAgICB3aWxsQmVNb2Rp
ZmllZChhbHRlciwgdXAgPyBCQUNLV0FSRCA6IEZPUldBUkQpOworICAgIHdpbGxCZU1vZGlmaWVk
KGFsdGVyLCB1cCA/IERpcmVjdGlvbkJhY2t3YXJkIDogRGlyZWN0aW9uRm9yd2FyZCk7CiAKICAg
ICBWaXNpYmxlUG9zaXRpb24gcG9zOwogICAgIGludCB4UG9zID0gMDsKICAgICBzd2l0Y2ggKGFs
dGVyKSB7Ci0gICAgICAgIGNhc2UgTU9WRToKKyAgICAgICAgY2FzZSBBbHRlcmF0aW9uTW92ZToK
ICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbih1cCA/IG1fc2VsZWN0aW9uLnN0YXJ0
KCkgOiBtX3NlbGVjdGlvbi5lbmQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgICAg
ICAgICB4UG9zID0geFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKHVwID8gU1RBUlQgOiBF
TkQpOwogICAgICAgICAgICAgbV9zZWxlY3Rpb24uc2V0QWZmaW5pdHkodXAgPyBVUFNUUkVBTSA6
IERPV05TVFJFQU0pOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVhURU5EOgor
ICAgICAgICBjYXNlIEFsdGVyYXRpb25FeHRlbmQ6CiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxl
UG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwog
ICAgICAgICAgICAgeFBvcyA9IHhQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbihFWFRFTlQp
OwogICAgICAgICAgICAgbV9zZWxlY3Rpb24uc2V0QWZmaW5pdHkoRE9XTlNUUkVBTSk7CkBAIC03
NDYsMTAgKzc0NiwxMCBAQCBib29sIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeShFQWx0ZXJh
dGlvbiBhbHRlciwgaW50IHZlcnRpY2FsRGlzdGFuY2UsIGJvb2wgdQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBzd2l0Y2ggKGFsdGVyKSB7Ci0gICAgICAgIGNhc2UgTU9WRToKKyAgICAg
ICAgY2FzZSBBbHRlcmF0aW9uTW92ZToKICAgICAgICAgICAgIG1vdmVUbyhyZXN1bHQsIHVzZXJU
cmlnZ2VyZWQpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVhURU5EOgorICAg
ICAgICBjYXNlIEFsdGVyYXRpb25FeHRlbmQ6CiAgICAgICAgICAgICBzZXRFeHRlbnQocmVzdWx0
LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTc1Nyw3ICs3
NTcsNyBAQCBib29sIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeShFQWx0ZXJhdGlvbiBhbHRl
ciwgaW50IHZlcnRpY2FsRGlzdGFuY2UsIGJvb2wgdQogICAgIGlmICh1c2VyVHJpZ2dlcmVkKQog
ICAgICAgICBtX2ZyYW1lLT5zZXRTZWxlY3Rpb25HcmFudWxhcml0eShDaGFyYWN0ZXJHcmFudWxh
cml0eSk7CiAKLSAgICBtX2xhc3RDaGFuZ2VXYXNIb3Jpem9udGFsRXh0ZW5zaW9uID0gYWx0ZXIg
PT0gRVhURU5EOworICAgIG1fbGFzdENoYW5nZVdhc0hvcml6b250YWxFeHRlbnNpb24gPSBhbHRl
ciA9PSBBbHRlcmF0aW9uRXh0ZW5kOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oIGIvV2ViQ29yZS9lZGl0aW5n
L1NlbGVjdGlvbkNvbnRyb2xsZXIuaAppbmRleCA2ODQ5Y2I2Li4xMjk1NDAzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvZWRp
dGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgKQEAgLTM5LDEwICszOSwxMSBAQCBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247
CiAKKwogY2xhc3MgU2VsZWN0aW9uQ29udHJvbGxlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBw
dWJsaWM6Ci0gICAgZW51bSBFQWx0ZXJhdGlvbiB7IE1PVkUsIEVYVEVORCB9OwotICAgIGVudW0g
RURpcmVjdGlvbiB7IEZPUldBUkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVCB9OworICAgIGVudW0g
RUFsdGVyYXRpb24geyBBbHRlcmF0aW9uTW92ZSwgQWx0ZXJhdGlvbkV4dGVuZCB9OworICAgIGVu
dW0gRURpcmVjdGlvbiB7IERpcmVjdGlvbkZvcndhcmQsIERpcmVjdGlvbkJhY2t3YXJkLCBEaXJl
Y3Rpb25SaWdodCwgRGlyZWN0aW9uTGVmdCB9OwogCiAgICAgU2VsZWN0aW9uQ29udHJvbGxlcihG
cmFtZSogPSAwLCBib29sIGlzRHJhZ0NhcmV0Q29udHJvbGxlciA9IGZhbHNlKTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5n
L1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IDFjOWRiOTAuLjFjOGE2MDEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVHlw
aW5nQ29tbWFuZC5jcHAKQEAgLTQzMiw5ICs0MzIsOSBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRl
bGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5n
KQogCiAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyIHNlbGVjdGlvbjsKICAgICAgICAg
ICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkpOwotICAgICAgICAg
ICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBncmFudWxhcml0eSk7CisgICAgICAgICAgICBzZWxlY3Rp
b24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBncmFudWxhcml0eSk7CiAgICAgICAgICAg
ICBpZiAoa2lsbFJpbmcgJiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBncmFudWxhcml0eSAhPSBD
aGFyYWN0ZXJHcmFudWxhcml0eSkgCi0gICAgICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShT
ZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJE
LCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7IAorICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLnBy
ZXZpb3VzKHRydWUpLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gV2hlbiB0aGUgY2Fy
ZXQgaXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBlZGl0YWJsZSBhcmVhIGluIGFuIGVtcHR5IGxpc3Qg
aXRlbSwgYnJlYWsgb3V0IG9mIHRoZSBsaXN0IGl0ZW0uCkBAIC00NjAsNyArNDYwLDcgQEAgdm9p
ZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSwgYm9vbCBraWxsUmluZykKICAgICAgICAgICAgICAgICBpZiAoaXNMYXN0UG9zaXRpb25C
ZWZvcmVUYWJsZSh2aXNpYmxlU3RhcnQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICAgICAgLy8gRXh0ZW5kIHRoZSBzZWxlY3Rpb24gYmFja3dhcmQgaW50byB0aGUg
bGFzdCBjZWxsLCB0aGVuIGRlbGV0aW9uIHdpbGwgaGFuZGxlIHRoZSBtb3ZlLgotICAgICAgICAg
ICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgZ3JhbnVsYXJpdHkpOworICAgICAgICAgICAgICAg
IHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIGdyYW51bGFyaXR5KTsKICAg
ICAgICAgICAgIC8vIElmIHRoZSBjYXJldCBpcyBqdXN0IGFmdGVyIGEgdGFibGUsIHNlbGVjdCB0
aGUgdGFibGUgYW5kIGRvbid0IGRlbGV0ZSBhbnl0aGluZy4KICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoTm9kZSogdGFibGUgPSBpc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKHZpc2libGVTdGFydCkp
IHsKICAgICAgICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihQ
b3NpdGlvbih0YWJsZSwgMCksIGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCksIERPV05TVFJFQU0p
KTsKQEAgLTUyNiw5ICs1MjYsOSBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVL
ZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraQogICAgICAgICAg
ICAgLy8gcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9yIGF0IHRoZSBzdGFydCBvZiBhIGRvY3VtZW50
LgogICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlciBzZWxlY3Rpb247CiAgICAgICAgICAg
ICBzZWxlY3Rpb24uc2V0U2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpKTsKLSAgICAgICAgICAg
IHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25D
b250cm9sbGVyOjpGT1JXQVJELCBncmFudWxhcml0eSk7CisgICAgICAgICAgICBzZWxlY3Rpb24u
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIGdyYW51bGFyaXR5KTsKICAgICAgICAgICAgIGlm
IChraWxsUmluZyAmJiBzZWxlY3Rpb24uaXNDYXJldCgpICYmIGdyYW51bGFyaXR5ICE9IENoYXJh
Y3RlckdyYW51bGFyaXR5KSAKLSAgICAgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHkpOyAKKyAgICAgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkRpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgUG9zaXRpb24gZG93bnN0cmVhbUVuZCA9IGVuZGluZ1NlbGVjdGlvbigpLmVu
ZCgpLmRvd25zdHJlYW0oKTsKICAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlRW5k
ID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpOwpAQCAtNTQzLDcgKzU0Myw3IEBAIHZv
aWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5
IGdyYW51bGFyaXR5LCBib29sIGtpCiAKICAgICAgICAgICAgIC8vIGRlbGV0aW5nIHRvIGVuZCBv
ZiBwYXJhZ3JhcGggd2hlbiBhdCBlbmQgb2YgcGFyYWdyYXBoIG5lZWRzIHRvIG1lcmdlIHRoZSBu
ZXh0IHBhcmFncmFwaCAoaWYgYW55KQogICAgICAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFBh
cmFncmFwaEJvdW5kYXJ5ICYmIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0NhcmV0KCkgJiYgaXNF
bmRPZlBhcmFncmFwaChzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpKSkKLSAgICAg
ICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAg
ICAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFj
dGVyR3JhbnVsYXJpdHkpOwogCiAgICAgICAgICAgICBzZWxlY3Rpb25Ub0RlbGV0ZSA9IHNlbGVj
dGlvbi5zZWxlY3Rpb24oKTsKICAgICAgICAgICAgIGlmICghc3RhcnRpbmdTZWxlY3Rpb24oKS5p
c1JhbmdlKCkgfHwgc2VsZWN0aW9uVG9EZWxldGUuYmFzZSgpICE9IHN0YXJ0aW5nU2VsZWN0aW9u
KCkuc3RhcnQoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwIGIv
V2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKaW5kZXggMGQyMWM1Ni4uMjQyZjFmOSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9wYWdl
L0RPTVNlbGVjdGlvbi5jcHAKQEAgLTI2OCwyMSArMjY4LDIxIEBAIHZvaWQgRE9NU2VsZWN0aW9u
Ojptb2RpZnkoY29uc3QgU3RyaW5nJiBhbHRlclN0cmluZywgY29uc3QgU3RyaW5nJiBkaXJlY3Rp
b25TdHJpCiAKICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbiBhbHRlcjsKICAg
ICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYWx0ZXJTdHJpbmcsICJleHRlbmQiKSkKLSAgICAgICAg
YWx0ZXIgPSBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQ7CisgICAgICAgIGFsdGVyID0gU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZDsKICAgICBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShhbHRlclN0cmluZywgIm1vdmUiKSkKLSAgICAgICAgYWx0ZXIgPSBTZWxlY3Rp
b25Db250cm9sbGVyOjpNT1ZFOworICAgICAgICBhbHRlciA9IFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25Nb3ZlOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2VsZWN0
aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGRpcmVjdGlvblN0cmluZywgImZvcndhcmQiKSkKLSAgICAgICAgZGlyZWN0aW9uID0g
U2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRDsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0
aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZDsKICAgICBlbHNlIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShkaXJlY3Rpb25TdHJpbmcsICJiYWNrd2FyZCIpKQotICAgICAgICBkaXJlY3Rpb24g
PSBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRDsKKyAgICAgICAgZGlyZWN0aW9uID0gU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UoZGlyZWN0aW9uU3RyaW5nLCAibGVmdCIpKQotICAgICAgICBkaXJlY3Rpb24g
PSBTZWxlY3Rpb25Db250cm9sbGVyOjpMRUZUOworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rp
b25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0OwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGRpcmVjdGlvblN0cmluZywgInJpZ2h0IikpCi0gICAgICAgIGRpcmVjdGlvbiA9IFNlbGVj
dGlvbkNvbnRyb2xsZXI6OlJJR0hUOworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25SaWdodDsKICAgICBlbHNlCiAgICAgICAgIHJldHVybjsKIApAQCAt
NDEwLDcgKzQxMCw3IEBAIHZvaWQgRE9NU2VsZWN0aW9uOjpkZWxldGVGcm9tRG9jdW1lbnQoKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaXNDb2xsYXBzZWQoKSkKLSAgICAgICAgc2VsZWN0
aW9uLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9s
bGVyOjpCQUNLV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICBzZWxlY3Rpb24t
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25D
b250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogCiAg
ICAgUmVmUHRyPFJhbmdlPiBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLT5zZWxlY3Rpb24oKS50
b05vcm1hbGl6ZWRSYW5nZSgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDkzZmM1YmQuLmRm
M2FlM2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yMTQxLDE5ICsyMTQxLDE5IEBAIHZvaWQg
RXZlbnRIYW5kbGVyOjpoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtZW50KEtleWJvYXJkRXZl
bnQqIGV2ZW50KQogICAgIGJvb2wgaXNDb21tYW5kZWQgPSBldmVudC0+Z2V0TW9kaWZpZXJTdGF0
ZSgiTWV0YSIpOwogICAgIAogICAgIGlmIChrZXkgPT0gIlVwIikgewotICAgICAgICBtX2ZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6
RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
QkFDS1dBUkQsIChpc0NvbW1hbmRlZCkgPyBEb2N1bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFy
aXR5LCB0cnVlKTsKKyAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeSgoaXNTaGlm
dGVkKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25D
b250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9u
QmFja3dhcmQsIChpc0NvbW1hbmRlZCkgPyBEb2N1bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFy
aXR5LCB0cnVlKTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQog
ICAgIGVsc2UgaWYgKGtleSA9PSAiRG93biIpIHsgCi0gICAgICAgIG1fZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBT
ZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCAo
aXNDb21tYW5kZWQpID8gRG9jdW1lbnRCb3VuZGFyeSA6IExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7
CisgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIChp
c0NvbW1hbmRlZCkgPyBEb2N1bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5LCB0cnVlKTsK
ICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogICAgIGVsc2UgaWYg
KGtleSA9PSAiTGVmdCIpIHsKLSAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeSgo
aXNTaGlmdGVkKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRy
b2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQsIChpc0NvbW1hbmRlZCkgPyBM
aW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJH
cmFudWxhcml0eSwgdHJ1ZSk7CisgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnko
KGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kIDogU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRp
cmVjdGlvbkxlZnQsIChpc0NvbW1hbmRlZCkgPyBMaW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkg
PyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgICAg
IGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KICAgICBlbHNlIGlmIChrZXkgPT0g
IlJpZ2h0IikgewotICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0
ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6
TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6UklHSFQsIChpc0NvbW1hbmRlZCkgPyBMaW5lQm91
bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxh
cml0eSwgdHJ1ZSk7CisgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoKGlzU2hp
ZnRlZCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9u
Q29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlv
blJpZ2h0LCAoaXNDb21tYW5kZWQpID8gTGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gV29y
ZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOwogICAgICAgICBldmVu
dC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9ICAgIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49777</attachid>
            <date>2010-03-01 21:22:10 -0800</date>
            <delta_ts>2010-03-01 21:59:54 -0800</delta_ts>
            <desc>WebKit/qt patch for bug 35530.</desc>
            <filename>35530_webkit_qt.patch</filename>
            <type>text/plain</type>
            <size>1524</size>
            <attacher name="Lyon Chen">lyon.chen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmlu
ZGV4IDUyN2M4YjkuLjU4ZmU5NzMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEwLTAzLTAxICBMeW9u
IENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRW51bSB2YWx1ZSBGT1JXQVJELCBCQUNLV0FSRCwgUklHSFQsIExF
RlQgYXJlIGNhdXNpbmcgbWFjcm8gY29uZmxpY3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU1MzAKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojpo
YW5kbGVLZXlib2FyZEV2ZW50KToKKwogMjAxMC0wMy0wMSAgSmFrb2IgUGV0c292aXRzICA8anBl
dHNvdml0c0ByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYg
LS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwIGIvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAppbmRleCA5MGViYjFkLi42
ZTYwNWI0IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAK
QEAgLTM5NywxMSArMzk3LDExIEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJk
RXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAjZW5k
aWYKICAgICAgICAgICAgIGNhc2UgVktfQkFDSzoKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQs
CisgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVktfREVMRVRFOgotICAgICAgICAgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpG
T1JXQVJELAorICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVj
dGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVktfTEVGVDoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49778</attachid>
            <date>2010-03-01 21:22:55 -0800</date>
            <delta_ts>2010-03-01 21:59:54 -0800</delta_ts>
            <desc>WebKit/haiku patch for bug 35530.</desc>
            <filename>35530_webkit_haiku.patch</filename>
            <type>text/plain</type>
            <size>4165</size>
            <attacher name="Lyon Chen">lyon.chen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cgYi9XZWJLaXQvaGFpa3UvQ2hhbmdl
TG9nCmluZGV4IDRjMzdiYWUuLmUxMzI5MGMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEw
LTAzLTAxICBMeW9uIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW51bSB2YWx1ZSBGT1JXQVJELCBCQUNLV0FS
RCwgUklHSFQsIExFRlQgYXJlIGNhdXNpbmcgbWFjcm8gY29uZmxpY3RzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU1MzAKKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudEhhaWt1OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKwogMjAxMC0wMi0yMyAgU3Rl
dmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50SGFpa3UuY3BwIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEhhaWt1LmNwcAppbmRleCBhNTFlMzYxLi5jYWQyM2NiIDEwMDY0NAotLS0gYS9XZWJLaXQv
aGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuY3BwCisrKyBiL1dlYktpdC9o
YWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHAKQEAgLTI1NCwzNiArMjU0
LDM2IEBAIHZvaWQgRWRpdG9yQ2xpZW50SGFpa3U6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9h
cmRFdmVudCogZXZlbnQpCiAgICAgaWYgKHN0YXJ0LT5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7CiAg
ICAgICAgIHN3aXRjaChrZXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7CiAgICAgICAg
IGNhc2UgVktfQkFDSzoKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERp
cmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwKKyAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJl
Y3Rpb25CYWNrd2FyZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrZXZlbnQtPmN0cmxLZXkoKSA/IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3Rlckdy
YW51bGFyaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZhbHNlLCB0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZLX0RF
TEVURToKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihT
ZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELAorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndh
cmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V2
ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwg
dHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWS19MRUZUOgotICAgICAg
ICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V2ZW50LT5zaGlmdEtleSgpID8gU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkxFRlQsCisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXZlbnQtPnNo
aWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V2ZW50LT5jdHJsS2V5KCkgPyBXb3Jk
R3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgVktfUklHSFQ6Ci0gICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXZl
bnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25D
b250cm9sbGVyOjpNT1ZFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2VsZWN0aW9uQ29udHJvbGxlcjo6UklHSFQsCisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShrZXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRl
cmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpE
aXJlY3Rpb25SaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtl
dmVudC0+Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZLX1VQOgotICAgICAgICAgICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoa2V2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6
RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELAorICAgICAg
ICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V2ZW50LT5zaGlmdEtleSgpID8gU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25Nb3ZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrZXZlbnQtPmN0cmxLZXkoKSA/IFBhcmFncmFwaEdyYW51
bGFyaXR5IDogTGluZUdyYW51bGFyaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWS19ET1dO
OgotICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V2ZW50LT5zaGlmdEtl
eSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6
TU9WRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkZPUldBUkQsCisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlm
eShrZXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0
ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25G
b3J3YXJkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V2ZW50LT5j
dHJsS2V5KCkgPyBQYXJhZ3JhcGhHcmFudWxhcml0eSA6IExpbmVHcmFudWxhcml0eSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOwogICAgICAgICAgICAgYnJl
YWs7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49779</attachid>
            <date>2010-03-01 21:23:29 -0800</date>
            <delta_ts>2010-03-01 21:59:54 -0800</delta_ts>
            <desc>WebKit/chromium patch for bug 35530.</desc>
            <filename>35530_webkit_chromium.patch</filename>
            <type>text/plain</type>
            <size>1586</size>
            <attacher name="Lyon Chen">lyon.chen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDFjOTY1NDIuLjQyOGMyMmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDEwLTAzLTAxICBMeW9uIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW51bSB2YWx1ZSBGT1JX
QVJELCBCQUNLV0FSRCwgUklHSFQsIExFRlQgYXJlIGNhdXNpbmcgbWFjcm8gY29uZmxpY3RzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU1MzAKKwor
ICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUltcGw6OmV4ZWN1dGVDb21tYW5kKToKKwogMjAxMC0wMy0wMSAgSmFrb2IgUGV0c292aXRzICA8
anBldHNvdml0c0ByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggNzVkMWNlOC4uYmI2YTcxMSAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtOTgyLDExICs5ODIsMTEgQEAgYm9v
bCBXZWJGcmFtZUltcGw6OmV4ZWN1dGVDb21tYW5kKGNvbnN0IFdlYlN0cmluZyYgbmFtZSkKICAg
ICAvLyBzdXBwb3J0LgogICAgIGlmIChjb21tYW5kID09ICJEZWxldGVUb0VuZE9mUGFyYWdyYXBo
IikgewogICAgICAgICBFZGl0b3IqIGVkaXRvciA9IGZyYW1lKCktPmVkaXRvcigpOwotICAgICAg
ICBpZiAoIWVkaXRvci0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpG
T1JXQVJELAorICAgICAgICBpZiAoIWVkaXRvci0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rp
b25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQYXJhZ3JhcGhCb3VuZGFyeSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmFsc2UpKSB7Ci0gICAgICAgICAgICBlZGl0b3ItPmRlbGV0ZVdpdGhEaXJl
Y3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwKKyAgICAgICAgICAgIGVkaXRvci0+
ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJhY3RlckdyYW51
bGFyaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49780</attachid>
            <date>2010-03-01 21:59:54 -0800</date>
            <delta_ts>2010-03-02 09:16:23 -0800</delta_ts>
            <desc>Combined patch for bug 35530.</desc>
            <filename>35530.patch</filename>
            <type>text/plain</type>
            <size>53666</size>
            <attacher name="Lyon Chen">lyon.chen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzgzZDY3OS4uY2JmNmRlMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4OSBAQAorMjAxMC0wMy0wMSAgTHlvbiBDaGVuICA8
bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQgYnVnIFVSTCAoT09QUyEpCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRvQVhSYW5nZUZvckxpbmUp
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6ZGVsZXRlV2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtN
aXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURl
bGV0ZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVCYWNrd2FyZEJ5
RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRl
RGVsZXRlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlVG9CZWdpbm5p
bmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQ
YXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVRvRW5kT2ZMaW5lKToK
KyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb0VuZE9mUGFyYWdyYXBoKToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVXb3JkQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZURlbGV0ZVdvcmRGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVG
b3J3YXJkRGVsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlQmFja3dhcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZURvd24pOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZU1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUZvcndhcmRB
bmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVMZWZ0KToK
KyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlTGVmdEFuZE1vZGlmeVNlbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVBhZ2VEb3duKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVQYWdlVXApOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYWdl
VXBBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVSaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9k
aWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdP
ZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGluZUFu
ZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVnaW5u
aW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmlu
Z09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1
dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVN
b3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1v
dmVUb0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVXApOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZU1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlTW92ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRC
YWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92
ZVdvcmRGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEZvcndhcmRB
bmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkTGVm
dCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9mTGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAg
ICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3Rpb25Db250cm9sbGVyOjp3aWxsQmVNb2RpZmllZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnkpOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0
aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6
KToKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpU
eXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZCk6CisgICAgICAgICogcGFnZS9E
T01TZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjptb2RpZnkp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpkZWxldGVGcm9tRG9jdW1lbnQpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudCk6CisKIDIwMTAtMDMtMDEg
IE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBH
YXZpbiBCYXJyYWNsb3VnaC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCBhYWEyOGFlLi42YTVmMGQ0IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysr
IGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBA
IC0yMTYzLDcgKzIxNjMsNyBAQCBWaXNpYmxlUG9zaXRpb25SYW5nZSBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUodW5zaQogICAgIC8vIHdpbGwg
YmUgYSBjYXJldCBhdCB2aXNpYmxlUG9zLgogICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIgc2VsZWN0
aW9uOwogICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbih2aXNpYmxl
UG9zKSk7Ci0gICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCBMaW5lQm91bmRhcnkpOworICAgIHNlbGVjdGlv
bi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQsIExpbmVCb3VuZGFyeSk7CiAgICAgCiAgICAgcmV0
dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKHNlbGVjdGlvbi5zZWxlY3Rpb24oKS52aXNpYmxlU3Rh
cnQoKSwgc2VsZWN0aW9uLnNlbGVjdGlvbigpLnZpc2libGVFbmQoKSk7CiB9CkBAIC0yMzc1LDgg
KzIzNzUsOCBAQCBQbGFpblRleHRSYW5nZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpkb0FY
UmFuZ2VGb3JMaW5lKHVuc2lnbmVkIGxpbmVOdW1iZXIpCiAgICAgLy8gd2lsbCBiZSBhIGNhcmV0
IGF0IHZpc2libGVQb3MuCiAgICAgU2VsZWN0aW9uQ29udHJvbGxlciBzZWxlY3Rpb247CiAgICAg
c2VsZWN0aW9uLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHZpc2libGVQb3MpKTsKLSAg
ICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6TEVGVCwgTGluZUJvdW5kYXJ5KTsKLSAgICBzZWxlY3Rpb24ubW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6UklHSFQsIExp
bmVCb3VuZGFyeSk7CisgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpB
bHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCBMaW5l
Qm91bmRhcnkpOworICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQsIExpbmVC
b3VuZGFyeSk7CiAgICAgCiAgICAgLy8gY2FsY3VsYXRlIHRoZSBpbmRpY2VzIGZvciB0aGUgc2Vs
ZWN0aW9uIHN0YXJ0IGFuZCBlbmQKICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9
IHNlbGVjdGlvbi5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXgg
MTA2MWRkMi4uMmFjNzNjNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
KysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTI0MSwxMiArMjQxLDEyIEBAIGJv
b2wgRWRpdG9yOjpkZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBUZXh0CiAgICAgICAgIH0KICAgICB9IGVsc2UgeyAgICAgICAgCiAg
ICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgICAgICAgICBjYXNlIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkZPUldBUkQ6Ci0gICAgICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OlJJR0hUOgorICAgICAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25G
b3J3YXJkOgorICAgICAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25S
aWdodDoKICAgICAgICAgICAgICAgICBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJl
c3NlZChtX2ZyYW1lLT5kb2N1bWVudCgpLCBjYW5TbWFydENvcHlPckRlbGV0ZSgpLCBncmFudWxh
cml0eSwga2lsbFJpbmcpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRDoKLSAgICAgICAgICAgIGNhc2UgU2VsZWN0
aW9uQ29udHJvbGxlcjo6TEVGVDoKKyAgICAgICAgICAgIGNhc2UgU2VsZWN0aW9uQ29udHJvbGxl
cjo6RGlyZWN0aW9uQmFja3dhcmQ6CisgICAgICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkRpcmVjdGlvbkxlZnQ6CiAgICAgICAgICAgICAgICAgVHlwaW5nQ29tbWFuZDo6ZGVsZXRl
S2V5UHJlc3NlZChtX2ZyYW1lLT5kb2N1bWVudCgpLCBjYW5TbWFydENvcHlPckRlbGV0ZSgpLCBn
cmFudWxhcml0eSwga2lsbFJpbmcpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CkBAIC0yMjU4LDcgKzIyNTgsNyBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVy
VHlwaW5nVG9Qb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24gJnApCiAKICAgICAgICAgLy8g
UmVzZXQgdGhlIGNoYXJldCBvbmUgY2hhcmFjdGVyIGZ1cnRoZXIuCiAgICAgICAgIGZyYW1lKCkt
PnNlbGVjdGlvbigpLT5tb3ZlVG8oZnJhbWUoKS0+c2VsZWN0aW9uKCktPmVuZCgpKTsKLSAgICAg
ICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZF
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7Cisg
ICAgICAgIGZyYW1lKCktPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIENo
YXJhY3RlckdyYW51bGFyaXR5KTsKICAgICB9CiAKICAgICBpZiAoIWlzR3JhbW1hckNoZWNraW5n
RW5hYmxlZCgpKQpAQCAtMjU0NywxMSArMjU0NywxMSBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1p
c3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhib29sIG1hcmtTcGVsbGluZywgUmFuZ2Uq
CiAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvblJhbmdlID0gVGV4dEl0ZXJhdG9y
OjpzdWJyYW5nZShwYXJhZ3JhcGhSYW5nZS5nZXQoKSwgMCwgc2VsZWN0aW9uT2Zmc2V0KTsKICAg
ICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb3ZlVG8oc2VsZWN0aW9uUmFuZ2UtPmVu
ZFBvc2l0aW9uKCksIERPV05TVFJFQU0pOwogICAgICAgICAgICAgaWYgKGFkanVzdFNlbGVjdGlv
bkZvclBhcmFncmFwaEJvdW5kYXJpZXMpCi0gICAgICAgICAgICAgICAgbV9mcmFtZS0+c2VsZWN0
aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgICAgICAgICAgbV9m
cmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9u
TW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gSWYgdGhpcyBmYWls
cyBmb3IgYW55IHJlYXNvbiwgdGhlIGZhbGxiYWNrIGlzIHRvIGdvIG9uZSBwb3NpdGlvbiBiZXlv
bmQgdGhlIGxhc3QgcmVwbGFjZW1lbnQKICAgICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigp
LT5tb3ZlVG8obV9mcmFtZS0+c2VsZWN0aW9uKCktPmVuZCgpKTsKLSAgICAgICAgICAgIG1fZnJh
bWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICAg
ICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRl
cmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFj
dGVyR3JhbnVsYXJpdHkpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1h
bmQuY3BwCmluZGV4IDQzN2Q1ODQuLjBmM2U1N2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5j
cHAKQEAgLTMyMiwzMiArMzIyLDMyIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGUoRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zCiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRl
bGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIENoYXJhY3Rl
ckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVX
aXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBDaGFy
YWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlQmFja3dhcmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFy
YWN0ZXIoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0
cmluZyYpCiB7CiAgICAgTE9HX0VSUk9SKCJEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2
aW91c0NoYXJhY3RlciBpcyBub3QgaW1wbGVtZW50ZWQsIGRvaW5nIERlbGV0ZUJhY2t3YXJkIGlu
c3RlYWQiKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0
aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1
ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2Us
IHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRl
Rm9yd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0
cnVlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNl
LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0
ZVRvQmVnaW5uaW5nT2ZMaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERp
cmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgTGluZUJvdW5kYXJ5LCB0cnVl
LCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIHRydWUsIGZh
bHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRv
QmVnaW5uaW5nT2ZQYXJhZ3JhcGgoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRo
RGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBQYXJhZ3JhcGhCb3VuZGFy
eSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlv
bihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgUGFyYWdyYXBoQm91bmRh
cnksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzU1LDcgKzM1NSw3
IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb0VuZE9mTGluZShGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwKIHsKICAgICAvLyBEZXNwaXRlIGl0cyBuYW1lLCB0
aGlzIGNvbW1hbmQgc2hvdWxkIGRlbGV0ZSB0aGUgbmV3bGluZSBhdCB0aGUgZW5kIG9mCiAgICAg
Ly8gYSBwYXJhZ3JhcGggaWYgeW91IGFyZSBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoIChsaWtl
IERlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgpLgotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0
aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBMaW5lQm91bmRhcnksIHRy
dWUsIGZhbHNlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBm
YWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM2Myw3ICszNjMsNyBAQCBzdGF0aWMg
Ym9vbCBleGVjdXRlRGVsZXRlVG9FbmRPZlBhcmFncmFwaChGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdQogewogICAgIC8vIERlc3BpdGUgaXRzIG5hbWUsIHRoaXMgY29tbWFu
ZCBzaG91bGQgZGVsZXRlIHRoZSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YKICAgICAvLyBhIHBhcmFn
cmFwaCBpZiB5b3UgYXJlIGF0IHRoZSBlbmQgb2YgYSBwYXJhZ3JhcGguCi0gICAgZnJhbWUtPmVk
aXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQs
IFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5k
ZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQs
IFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTM4NCwxMyArMzg0LDEzIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb01hcmsoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVEZWxldGVXb3JkQmFja3dhcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5k
ZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBXb3JkR3Jh
bnVsYXJpdHksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhE
aXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFu
dWxhcml0eSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlRGVsZXRlV29yZEZvcndhcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxl
dGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIFdvcmRHcmFudWxh
cml0eSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVj
dGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBXb3JkR3JhbnVsYXJp
dHksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDM3LDcgKzQzNyw3
IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVGb3J3YXJkRGVsZXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjCiB7CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKICAg
ICAgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6Ci0gICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9S
V0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpE
aXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAg
ICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToKQEAgLTU5NSw0OSArNTk1
LDQ5IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRv
TGVmdChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3Zl
QmFja3dhcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIENoYXJhY3Rlckdy
YW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0
aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlv
bihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVy
OjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBDaGFyYWN0ZXJHcmFudWxh
cml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9u
QmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVEb3duKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkZPUldBUkQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlRG93bkFuZE1vZGlm
eVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25D
b250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIExpbmVHcmFu
dWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0
aW9uRm9yd2FyZCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVGb3J3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHks
IHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUZv
cndhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JX
QVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUp
OwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUxlZnQoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9W
RSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVGVCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUp
OworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCBDaGFyYWN0
ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVNb3ZlTGVmdEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0
aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkxFRlQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwg
dHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTY0Niw3ICs2NDYsNyBAQCBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZVBhZ2VEb3duKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdAogICAgIGludCBkaXN0YW5jZSA9IHZlcnRpY2FsU2Nyb2xsRGlzdGFu
Y2UoZnJhbWUpOwogICAgIGlmICghZGlzdGFuY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
TU9WRSwgZGlzdGFuY2UsIHRydWUpOworICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgZGlzdGFuY2UsIHRydWUp
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9u
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQpAQCAtNjU0LDcgKzY1NCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFnZURvd25BbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvCiAgICAgaW50IGRp
c3RhbmNlID0gdmVydGljYWxTY3JvbGxEaXN0YW5jZShmcmFtZSk7CiAgICAgaWYgKCFkaXN0YW5j
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIGRpc3RhbmNlLCB0cnVlKTsKKyAg
ICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbkV4dGVuZCwgZGlzdGFuY2UsIHRydWUpOwogfQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlTW92ZVBhZ2VVcChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwg
Y29uc3QgU3RyaW5nJikKQEAgLTY2Miw3ICs2NjIsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTW92
ZVBhZ2VVcChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
UwogICAgIGludCBkaXN0YW5jZSA9IHZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UoZnJhbWUpOwogICAg
IGlmICghZGlzdGFuY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZnJhbWUt
PnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgLWRpc3RhbmNl
LCB0cnVlKTsKKyAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIC1kaXN0YW5jZSwgdHJ1ZSk7CiB9CiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQpAQCAtNjcwLDIxMCAr
NjcwLDIxMCBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlv
bihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbQogICAgIGludCBkaXN0YW5jZSA9IHZl
cnRpY2FsU2Nyb2xsRGlzdGFuY2UoZnJhbWUpOwogICAgIGlmICghZGlzdGFuY2UpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCAtZGlzdGFuY2UsIHRydWUpOworICAgIHJldHVybiBm
cmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9u
RXh0ZW5kLCAtZGlzdGFuY2UsIHRydWUpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVJp
Z2h0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJp
bmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCBDaGFyYWN0ZXJHcmFudWxhcml0
eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJv
bGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0
LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVNb3ZlUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJh
bWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpSSUdIVCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOworICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0LCBDaGFyYWN0ZXJH
cmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkJBQ0tXQVJELCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIERvY3VtZW50Qm91bmRhcnksIHRydWUpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5n
T2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkJBQ0tXQVJELCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rp
b25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwgdHJ1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5p
bmdPZkxpbmUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIExpbmVCb3VuZGFy
eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJv
bGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3
YXJkLCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVO
RCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7Cisg
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIExpbmVC
b3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1
dGVNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpC
QUNLV0FSRCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25D
b250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5n
T2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVy
OjpCQUNLV0FSRCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdp
bm5pbmdPZlNlbnRlbmNlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVj
dGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBTZW50
ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uQmFja3dhcmQsIFNlbnRlbmNlQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVl
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZTZW50ZW5jZUFuZE1v
ZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwg
Y29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBTZW50
ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpE
aXJlY3Rpb25CYWNrd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50KEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIERvY3VtZW50Qm91bmRhcnksIHRydWUpOworICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBEb2N1bWVudEJv
dW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZU1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25D
b250cm9sbGVyOjpGT1JXQVJELCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5k
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBEb2N1bWVudEJvdW5kYXJ5
LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVU
b0VuZE9mU2VudGVuY2UoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgU2VudGVu
Y2VCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVj
dGlvbkZvcndhcmQsIFNlbnRlbmNlQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZTZW50ZW5jZUFuZE1vZGlmeVNlbGVj
dGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3Ry
aW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIFNlbnRlbmNlQm91bmRh
cnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZv
cndhcmQsIFNlbnRlbmNlQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZMaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkZPUldBUkQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmVBbmRNb2Rp
ZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBMaW5lQm91
bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlv
bkZvcndhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZlBhcmFncmFwaChGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250
cm9sbGVyOjpGT1JXQVJELCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0
cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0Vu
ZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6Rk9SV0FSRCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVl
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYXJhZ3Jh
cGhCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkJBQ0tXQVJELCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEdyYW51bGFyaXR5
LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQ
YXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6Rk9SV0FSRCwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5z
ZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEdyYW51bGFy
aXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVVcChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3Ry
aW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgTGluZUdyYW51bGFyaXR5
LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dh
cmQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25D
b250cm9sbGVyOjpCQUNLV0FSRCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5k
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUdyYW51bGFyaXR5
LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVX
b3JkQmFja3dhcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIFdvcmRHcmFu
dWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlv
bkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihG
cmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpF
WFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBXb3JkR3JhbnVsYXJpdHksIHRy
dWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJk
LCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZVdvcmRGb3J3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZP
UldBUkQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZEZvcndhcmRBbmRNb2Rp
ZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBXb3JkR3Jh
bnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVj
dGlvbkZvcndhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZExlZnQoRnJhbWUqIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6TEVGVCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkTGVmdEFuZE1vZGlm
eVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25D
b250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQsIFdvcmRHcmFudWxh
cml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9u
TGVmdCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3Rh
dGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkUmlnaHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
UklHSFQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkRpcmVjdGlvblJpZ2h0LCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVy
biB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRSaWdodEFuZE1vZGlmeVNl
bGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCBXb3JkR3JhbnVsYXJp
dHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJp
Z2h0LCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGluZShGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0
aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpMRUZULCBMaW5lQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGluZUFuZE1vZGlm
eVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25D
b250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQsIExpbmVCb3VuZGFy
eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJv
bGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVm
dCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVUb1JpZ2h0RW5kT2ZMaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OlJJR0hULCBMaW5lQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpEaXJlY3Rpb25SaWdodCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb1JpZ2h0RW5kT2ZMaW5lQW5kTW9kaWZ5
U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25z
dCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6UklHSFQsIExpbmVCb3VuZGFy
eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJv
bGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmln
aHQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcCBiL1dlYkNvcmUvZWRp
dGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAppbmRleCAyNTk4MmQ0Li5lODQ2MjRjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvV2Vi
Q29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAg
dm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpub2RlV2lsbEJlUmVtb3ZlZChOb2RlICpub2RlKQog
CiB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OndpbGxCZU1vZGlmaWVkKEVBbHRlcmF0aW9uIGFs
dGVyLCBFRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAgICBpZiAoYWx0ZXIgIT0gRVhURU5EKQor
ICAgIGlmIChhbHRlciAhPSBBbHRlcmF0aW9uRXh0ZW5kKQogICAgICAgICByZXR1cm47CiAgICAg
aWYgKG1fbGFzdENoYW5nZVdhc0hvcml6b250YWxFeHRlbnNpb24pCiAgICAgICAgIHJldHVybjsK
QEAgLTI0MCwxNiArMjQwLDE2IEBAIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6d2lsbEJlTW9k
aWZpZWQoRUFsdGVyYXRpb24gYWx0ZXIsIEVEaXJlY3Rpb24gZGlyZWN0aW9uCiAgICAgUG9zaXRp
b24gZW5kID0gbV9zZWxlY3Rpb24uZW5kKCk7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgcHJvYmFi
bHkgbm90IGNvcnJlY3QgZm9yIHJpZ2h0IGFuZCBsZWZ0IHdoZW4gdGhlIGRpcmVjdGlvbiBpcyBS
VEwuCiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICAgICAgY2FzZSBSSUdIVDoKLSAgICAg
ICAgY2FzZSBGT1JXQVJEOgotICAgICAgICAgICAgbV9zZWxlY3Rpb24uc2V0QmFzZShzdGFydCk7
Ci0gICAgICAgICAgICBtX3NlbGVjdGlvbi5zZXRFeHRlbnQoZW5kKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIExFRlQ6Ci0gICAgICAgIGNhc2UgQkFDS1dBUkQ6Ci0gICAgICAg
ICAgICBtX3NlbGVjdGlvbi5zZXRCYXNlKGVuZCk7Ci0gICAgICAgICAgICBtX3NlbGVjdGlvbi5z
ZXRFeHRlbnQoc3RhcnQpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEaXJlY3Rpb25S
aWdodDoKKyAgICBjYXNlIERpcmVjdGlvbkZvcndhcmQ6CisgICAgICAgIG1fc2VsZWN0aW9uLnNl
dEJhc2Uoc3RhcnQpOworICAgICAgICBtX3NlbGVjdGlvbi5zZXRFeHRlbnQoZW5kKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBEaXJlY3Rpb25MZWZ0OgorICAgIGNhc2UgRGlyZWN0aW9uQmFj
a3dhcmQ6CisgICAgICAgIG1fc2VsZWN0aW9uLnNldEJhc2UoZW5kKTsKKyAgICAgICAgbV9zZWxl
Y3Rpb24uc2V0RXh0ZW50KHN0YXJ0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC02
MDYsMzAgKzYwNiwzMCBAQCBib29sIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeShFQWx0ZXJh
dGlvbiBhbHRlciwgRURpcmVjdGlvbiBkaXIsIFRleHRHcmFudWxhcgogCiAgICAgVmlzaWJsZVBv
c2l0aW9uIHBvczsKICAgICBzd2l0Y2ggKGRpcikgewotICAgICAgICBjYXNlIFJJR0hUOgotICAg
ICAgICAgICAgaWYgKGFsdGVyID09IE1PVkUpCi0gICAgICAgICAgICAgICAgcG9zID0gbW9kaWZ5
TW92aW5nUmlnaHQoZ3JhbnVsYXJpdHkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ1JpZ2h0KGdyYW51bGFyaXR5KTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEZPUldBUkQ6Ci0gICAgICAgICAgICBpZiAoYWx0ZXIgPT0g
RVhURU5EKQotICAgICAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3Jh
bnVsYXJpdHkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBvcyA9IG1vZGlm
eU1vdmluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgTEVGVDoKLSAgICAgICAgICAgIGlmIChhbHRlciA9PSBNT1ZFKQotICAgICAgICAgICAg
ICAgIHBvcyA9IG1vZGlmeU1vdmluZ0xlZnQoZ3JhbnVsYXJpdHkpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0xlZnQoZ3JhbnVsYXJpdHkp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQkFDS1dBUkQ6Ci0gICAgICAgICAg
ICBpZiAoYWx0ZXIgPT0gRVhURU5EKQotICAgICAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVu
ZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdCYWNrd2FyZChncmFudWxhcml0eSk7Ci0gICAgICAgICAg
ICBicmVhazsKKyAgICBjYXNlIERpcmVjdGlvblJpZ2h0OgorICAgICAgICBpZiAoYWx0ZXIgPT0g
QWx0ZXJhdGlvbk1vdmUpCisgICAgICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdSaWdodChncmFu
dWxhcml0eSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGlu
Z1JpZ2h0KGdyYW51bGFyaXR5KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEaXJlY3Rpb25G
b3J3YXJkOgorICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJhdGlvbkV4dGVuZCkKKyAgICAgICAg
ICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEaXJlY3Rpb25MZWZ0OgorICAgICAgICBpZiAoYWx0
ZXIgPT0gQWx0ZXJhdGlvbk1vdmUpCisgICAgICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdMZWZ0
KGdyYW51bGFyaXR5KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0
ZW5kaW5nTGVmdChncmFudWxhcml0eSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRGlyZWN0
aW9uQmFja3dhcmQ6CisgICAgICAgIGlmIChhbHRlciA9PSBBbHRlcmF0aW9uRXh0ZW5kKQorICAg
ICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdCYWNrd2FyZChncmFudWxh
cml0eSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGlmIChwb3MuaXNOdWxsKCkpCkBA
IC02NDIsMTIgKzY0MiwxMiBAQCBib29sIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeShFQWx0
ZXJhdGlvbiBhbHRlciwgRURpcmVjdGlvbiBkaXIsIFRleHRHcmFudWxhcgogICAgIGludCB4ID0g
eFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKFNUQVJUKTsKIAogICAgIHN3aXRjaCAoYWx0
ZXIpIHsKLSAgICAgICAgY2FzZSBNT1ZFOgotICAgICAgICAgICAgbW92ZVRvKHBvcywgdXNlclRy
aWdnZXJlZCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFWFRFTkQ6Ci0gICAg
ICAgICAgICBzZXRFeHRlbnQocG9zLCB1c2VyVHJpZ2dlcmVkKTsKLSAgICAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQWx0ZXJhdGlvbk1vdmU6CisgICAgICAgIG1vdmVUbyhwb3MsIHVzZXJUcmln
Z2VyZWQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFsdGVyYXRpb25FeHRlbmQ6CisgICAg
ICAgIHNldEV4dGVudChwb3MsIHVzZXJUcmlnZ2VyZWQpOworICAgICAgICBicmVhazsKICAgICB9
CiAgICAgCiAgICAgaWYgKGdyYW51bGFyaXR5ID09IExpbmVHcmFudWxhcml0eSB8fCBncmFudWxh
cml0eSA9PSBQYXJhZ3JhcGhHcmFudWxhcml0eSkKQEAgLTY1OCwxMyArNjU4LDEzIEBAIGJvb2wg
U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9u
IGRpciwgVGV4dEdyYW51bGFyCiAgICAgICAgIC8vIE5PVEU6IFRoZSBvbmUgZXhjZXB0aW9uIGlz
IHRoYXQgd2UgbmVlZCB0byBrZWVwIHdvcmQgZ3JhbnVsYXJpdHkgdG8KICAgICAgICAgLy8gcHJl
c2VydmUgc21hcnQgZGVsZXRlIGJlaGF2aW9yIHdoZW4gZXh0ZW5kaW5nIGJ5IHdvcmQgKGUuZy4g
ZG91YmxlLWNsaWNrKSwKICAgICAgICAgLy8gdGhlbiBzaGlmdC1vcHRpb24tcmlnaHQgYXJyb3cs
IHRoZW4gZGVsZXRlIG5lZWRzIHRvIHNtYXJ0IGRlbGV0ZSwgcGVyIFRleHRFZGl0LgotICAgICAg
ICBpZiAoIShhbHRlciA9PSBFWFRFTkQgJiYgZ3JhbnVsYXJpdHkgPT0gV29yZEdyYW51bGFyaXR5
ICYmIG1fZnJhbWUtPnNlbGVjdGlvbkdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5KSkK
KyAgICAgICAgaWYgKCEoYWx0ZXIgPT0gQWx0ZXJhdGlvbkV4dGVuZCAmJiBncmFudWxhcml0eSA9
PSBXb3JkR3JhbnVsYXJpdHkgJiYgbV9mcmFtZS0+c2VsZWN0aW9uR3JhbnVsYXJpdHkoKSA9PSBX
b3JkR3JhbnVsYXJpdHkpKQogICAgICAgICAgICAgbV9mcmFtZS0+c2V0U2VsZWN0aW9uR3JhbnVs
YXJpdHkoQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogICAgIH0KIAogICAgIHNldE5lZWRzTGF5b3V0
KCk7CiAKLSAgICBtX2xhc3RDaGFuZ2VXYXNIb3Jpem9udGFsRXh0ZW5zaW9uID0gYWx0ZXIgPT0g
RVhURU5EOworICAgIG1fbGFzdENoYW5nZVdhc0hvcml6b250YWxFeHRlbnNpb24gPSBhbHRlciA9
PSBBbHRlcmF0aW9uRXh0ZW5kOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC02OTksMjEgKzY5
OSwyMSBAQCBib29sIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeShFQWx0ZXJhdGlvbiBhbHRl
ciwgaW50IHZlcnRpY2FsRGlzdGFuY2UsIGJvb2wgdQogICAgIGlmICh1cCkKICAgICAgICAgdmVy
dGljYWxEaXN0YW5jZSA9IC12ZXJ0aWNhbERpc3RhbmNlOwogCi0gICAgd2lsbEJlTW9kaWZpZWQo
YWx0ZXIsIHVwID8gQkFDS1dBUkQgOiBGT1JXQVJEKTsKKyAgICB3aWxsQmVNb2RpZmllZChhbHRl
ciwgdXAgPyBEaXJlY3Rpb25CYWNrd2FyZCA6IERpcmVjdGlvbkZvcndhcmQpOwogCiAgICAgVmlz
aWJsZVBvc2l0aW9uIHBvczsKICAgICBpbnQgeFBvcyA9IDA7CiAgICAgc3dpdGNoIChhbHRlcikg
ewotICAgICAgICBjYXNlIE1PVkU6Ci0gICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24o
dXAgPyBtX3NlbGVjdGlvbi5zdGFydCgpIDogbV9zZWxlY3Rpb24uZW5kKCksIG1fc2VsZWN0aW9u
LmFmZmluaXR5KCkpOwotICAgICAgICAgICAgeFBvcyA9IHhQb3NGb3JWZXJ0aWNhbEFycm93TmF2
aWdhdGlvbih1cCA/IFNUQVJUIDogRU5EKTsKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uLnNldEFm
ZmluaXR5KHVwID8gVVBTVFJFQU0gOiBET1dOU1RSRUFNKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEVYVEVORDoKLSAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbiht
X3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7Ci0gICAgICAgICAg
ICB4UG9zID0geFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKEVYVEVOVCk7Ci0gICAgICAg
ICAgICBtX3NlbGVjdGlvbi5zZXRBZmZpbml0eShET1dOU1RSRUFNKTsKLSAgICAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQWx0ZXJhdGlvbk1vdmU6CisgICAgICAgIHBvcyA9IFZpc2libGVQb3Np
dGlvbih1cCA/IG1fc2VsZWN0aW9uLnN0YXJ0KCkgOiBtX3NlbGVjdGlvbi5lbmQoKSwgbV9zZWxl
Y3Rpb24uYWZmaW5pdHkoKSk7CisgICAgICAgIHhQb3MgPSB4UG9zRm9yVmVydGljYWxBcnJvd05h
dmlnYXRpb24odXAgPyBTVEFSVCA6IEVORCk7CisgICAgICAgIG1fc2VsZWN0aW9uLnNldEFmZmlu
aXR5KHVwID8gVVBTVFJFQU0gOiBET1dOU1RSRUFNKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBBbHRlcmF0aW9uRXh0ZW5kOgorICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxl
Y3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOworICAgICAgICB4UG9zID0g
eFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKEVYVEVOVCk7CisgICAgICAgIG1fc2VsZWN0
aW9uLnNldEFmZmluaXR5KERPV05TVFJFQU0pOworICAgICAgICBicmVhazsKICAgICB9CiAKICAg
ICBpbnQgc3RhcnRZOwpAQCAtNzQ2LDE4ICs3NDYsMTggQEAgYm9vbCBTZWxlY3Rpb25Db250cm9s
bGVyOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0ZXIsIGludCB2ZXJ0aWNhbERpc3RhbmNlLCBib29s
IHUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3dpdGNoIChhbHRlcikgewotICAgICAg
ICBjYXNlIE1PVkU6Ci0gICAgICAgICAgICBtb3ZlVG8ocmVzdWx0LCB1c2VyVHJpZ2dlcmVkKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVYVEVORDoKLSAgICAgICAgICAgIHNl
dEV4dGVudChyZXN1bHQsIHVzZXJUcmlnZ2VyZWQpOwotICAgICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBbHRlcmF0aW9uTW92ZToKKyAgICAgICAgbW92ZVRvKHJlc3VsdCwgdXNlclRyaWdnZXJl
ZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWx0ZXJhdGlvbkV4dGVuZDoKKyAgICAgICAg
c2V0RXh0ZW50KHJlc3VsdCwgdXNlclRyaWdnZXJlZCk7CisgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIGlmICh1c2VyVHJpZ2dlcmVkKQogICAgICAgICBtX2ZyYW1lLT5zZXRTZWxlY3Rpb25H
cmFudWxhcml0eShDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKLSAgICBtX2xhc3RDaGFuZ2VXYXNI
b3Jpem9udGFsRXh0ZW5zaW9uID0gYWx0ZXIgPT0gRVhURU5EOworICAgIG1fbGFzdENoYW5nZVdh
c0hvcml6b250YWxFeHRlbnNpb24gPSBhbHRlciA9PSBBbHRlcmF0aW9uRXh0ZW5kOwogCiAgICAg
cmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29u
dHJvbGxlci5oIGIvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaAppbmRleCA2
ODQ5Y2I2Li4xMjk1NDAzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29u
dHJvbGxlci5oCisrKyBiL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgKQEAg
LTM5LDEwICszOSwxMSBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBSZW5kZXJPYmpl
Y3Q7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CiAKKwogY2xhc3MgU2VsZWN0aW9uQ29udHJvbGxl
ciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0gICAgZW51bSBFQWx0ZXJhdGlvbiB7
IE1PVkUsIEVYVEVORCB9OwotICAgIGVudW0gRURpcmVjdGlvbiB7IEZPUldBUkQsIEJBQ0tXQVJE
LCBSSUdIVCwgTEVGVCB9OworICAgIGVudW0gRUFsdGVyYXRpb24geyBBbHRlcmF0aW9uTW92ZSwg
QWx0ZXJhdGlvbkV4dGVuZCB9OworICAgIGVudW0gRURpcmVjdGlvbiB7IERpcmVjdGlvbkZvcndh
cmQsIERpcmVjdGlvbkJhY2t3YXJkLCBEaXJlY3Rpb25SaWdodCwgRGlyZWN0aW9uTGVmdCB9Owog
CiAgICAgU2VsZWN0aW9uQ29udHJvbGxlcihGcmFtZSogPSAwLCBib29sIGlzRHJhZ0NhcmV0Q29u
dHJvbGxlciA9IGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0Nv
bW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IDFjOWRi
OTAuLjFjOGE2MDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNw
cAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAgLTQzMiw5ICs0MzIs
OSBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5
IGdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5nKQogCiAgICAgICAgICAgICBTZWxlY3Rpb25Db250
cm9sbGVyIHNlbGVjdGlvbjsKICAgICAgICAgICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24oZW5k
aW5nU2VsZWN0aW9uKCkpOwotICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25D
b250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBncmFudWxh
cml0eSk7CisgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJk
LCBncmFudWxhcml0eSk7CiAgICAgICAgICAgICBpZiAoa2lsbFJpbmcgJiYgc2VsZWN0aW9uLmlz
Q2FyZXQoKSAmJiBncmFudWxhcml0eSAhPSBDaGFyYWN0ZXJHcmFudWxhcml0eSkgCi0gICAgICAg
ICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7IAorICAg
ICAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIENoYXJh
Y3RlckdyYW51bGFyaXR5KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGVuZGluZ1Nl
bGVjdGlvbigpLnZpc2libGVTdGFydCgpLnByZXZpb3VzKHRydWUpLmlzTnVsbCgpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gV2hlbiB0aGUgY2FyZXQgaXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBlZGl0
YWJsZSBhcmVhIGluIGFuIGVtcHR5IGxpc3QgaXRlbSwgYnJlYWsgb3V0IG9mIHRoZSBsaXN0IGl0
ZW0uCkBAIC00NjAsNyArNDYwLDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVz
c2VkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraWxsUmluZykKICAgICAgICAg
ICAgICAgICBpZiAoaXNMYXN0UG9zaXRpb25CZWZvcmVUYWJsZSh2aXNpYmxlU3RhcnQpKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgLy8gRXh0ZW5kIHRoZSBz
ZWxlY3Rpb24gYmFja3dhcmQgaW50byB0aGUgbGFzdCBjZWxsLCB0aGVuIGRlbGV0aW9uIHdpbGwg
aGFuZGxlIHRoZSBtb3ZlLgotICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgZ3Jh
bnVsYXJpdHkpOworICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9u
QmFja3dhcmQsIGdyYW51bGFyaXR5KTsKICAgICAgICAgICAgIC8vIElmIHRoZSBjYXJldCBpcyBq
dXN0IGFmdGVyIGEgdGFibGUsIHNlbGVjdCB0aGUgdGFibGUgYW5kIGRvbid0IGRlbGV0ZSBhbnl0
aGluZy4KICAgICAgICAgICAgIH0gZWxzZSBpZiAoTm9kZSogdGFibGUgPSBpc0ZpcnN0UG9zaXRp
b25BZnRlclRhYmxlKHZpc2libGVTdGFydCkpIHsKICAgICAgICAgICAgICAgICBzZXRFbmRpbmdT
ZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihQb3NpdGlvbih0YWJsZSwgMCksIGVuZGluZ1NlbGVj
dGlvbigpLnN0YXJ0KCksIERPV05TVFJFQU0pKTsKQEAgLTUyNiw5ICs1MjYsOSBAQCB2b2lkIFR5
cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFu
dWxhcml0eSwgYm9vbCBraQogICAgICAgICAgICAgLy8gcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9y
IGF0IHRoZSBzdGFydCBvZiBhIGRvY3VtZW50LgogICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJv
bGxlciBzZWxlY3Rpb247CiAgICAgICAgICAgICBzZWxlY3Rpb24uc2V0U2VsZWN0aW9uKGVuZGlu
Z1NlbGVjdGlvbigpKTsKLSAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBncmFudWxhcml0
eSk7CisgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIGdy
YW51bGFyaXR5KTsKICAgICAgICAgICAgIGlmIChraWxsUmluZyAmJiBzZWxlY3Rpb24uaXNDYXJl
dCgpICYmIGdyYW51bGFyaXR5ICE9IENoYXJhY3RlckdyYW51bGFyaXR5KSAKLSAgICAgICAgICAg
ICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOyAKKyAgICAgICAg
ICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25F
eHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIENoYXJhY3Rlckdy
YW51bGFyaXR5KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUG9zaXRpb24gZG93bnN0cmVh
bUVuZCA9IGVuZGluZ1NlbGVjdGlvbigpLmVuZCgpLmRvd25zdHJlYW0oKTsKICAgICAgICAgICAg
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlRW5kID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVu
ZCgpOwpAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0
ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpCiAKICAgICAg
ICAgICAgIC8vIGRlbGV0aW5nIHRvIGVuZCBvZiBwYXJhZ3JhcGggd2hlbiBhdCBlbmQgb2YgcGFy
YWdyYXBoIG5lZWRzIHRvIG1lcmdlIHRoZSBuZXh0IHBhcmFncmFwaCAoaWYgYW55KQogICAgICAg
ICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFBhcmFncmFwaEJvdW5kYXJ5ICYmIHNlbGVjdGlvbi5z
ZWxlY3Rpb24oKS5pc0NhcmV0KCkgJiYgaXNFbmRPZlBhcmFncmFwaChzZWxlY3Rpb24uc2VsZWN0
aW9uKCkudmlzaWJsZUVuZCgpKSkKLSAgICAgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwg
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogCiAgICAgICAgICAg
ICBzZWxlY3Rpb25Ub0RlbGV0ZSA9IHNlbGVjdGlvbi5zZWxlY3Rpb24oKTsKICAgICAgICAgICAg
IGlmICghc3RhcnRpbmdTZWxlY3Rpb24oKS5pc1JhbmdlKCkgfHwgc2VsZWN0aW9uVG9EZWxldGUu
YmFzZSgpICE9IHN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwIGIvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAK
aW5kZXggMGQyMWM1Ni4uMjQyZjFmOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVNlbGVj
dGlvbi5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKQEAgLTI2OCwyMSAr
MjY4LDIxIEBAIHZvaWQgRE9NU2VsZWN0aW9uOjptb2RpZnkoY29uc3QgU3RyaW5nJiBhbHRlclN0
cmluZywgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpCiAKICAgICBTZWxlY3Rpb25Db250cm9s
bGVyOjpFQWx0ZXJhdGlvbiBhbHRlcjsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYWx0ZXJT
dHJpbmcsICJleHRlbmQiKSkKLSAgICAgICAgYWx0ZXIgPSBTZWxlY3Rpb25Db250cm9sbGVyOjpF
WFRFTkQ7CisgICAgICAgIGFsdGVyID0gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4
dGVuZDsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhbHRlclN0cmluZywgIm1vdmUi
KSkKLSAgICAgICAgYWx0ZXIgPSBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFOworICAgICAgICBh
bHRlciA9IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlOwogICAgIGVsc2UKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbiBkaXJl
Y3Rpb247CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpcmVjdGlvblN0cmluZywgImZvcndh
cmQiKSkKLSAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRDsK
KyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2Fy
ZDsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXJlY3Rpb25TdHJpbmcsICJiYWNr
d2FyZCIpKQotICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FS
RDsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFj
a3dhcmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGlyZWN0aW9uU3RyaW5nLCAi
bGVmdCIpKQotICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25Db250cm9sbGVyOjpMRUZUOwor
ICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0Owog
ICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpcmVjdGlvblN0cmluZywgInJpZ2h0Iikp
Ci0gICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hUOworICAgICAg
ICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdodDsKICAgICBl
bHNlCiAgICAgICAgIHJldHVybjsKIApAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQgRE9NU2VsZWN0
aW9uOjpkZWxldGVGcm9tRG9jdW1lbnQoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaXND
b2xsYXBzZWQoKSkKLSAgICAgICAgc2VsZWN0aW9uLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgQ2hhcmFjdGVyR3JhbnVs
YXJpdHkpOworICAgICAgICBzZWxlY3Rpb24tPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpB
bHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwg
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogCiAgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3RlZFJhbmdl
ID0gc2VsZWN0aW9uLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IDkzZmM1YmQuLmRmM2FlM2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBA
IC0yMTQxLDE5ICsyMTQxLDE5IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpoYW5kbGVLZXlib2FyZFNl
bGVjdGlvbk1vdmVtZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIGJvb2wgaXNDb21tYW5k
ZWQgPSBldmVudC0+Z2V0TW9kaWZpZXJTdGF0ZSgiTWV0YSIpOwogICAgIAogICAgIGlmIChrZXkg
PT0gIlVwIikgewotICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0
ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6
TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIChpc0NvbW1hbmRlZCkgPyBEb2N1
bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICAgICAgbV9mcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeSgoaXNTaGlmdGVkKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIChpc0NvbW1hbmRlZCkgPyBEb2N1
bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKICAgICAgICAgZXZlbnQtPnNl
dERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogICAgIGVsc2UgaWYgKGtleSA9PSAiRG93biIpIHsg
Ci0gICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxl
Y3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCAoaXNDb21tYW5kZWQpID8gRG9jdW1lbnRCb3VuZGFy
eSA6IExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0
ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIChpc0NvbW1hbmRlZCkgPyBEb2N1bWVudEJvdW5kYXJ5
IDogTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5k
bGVkKCk7CiAgICAgfQogICAgIGVsc2UgaWYgKGtleSA9PSAiTGVmdCIpIHsKLSAgICAgICAgbV9m
cmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeSgoaXNTaGlmdGVkKSA/IFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkxFRlQsIChpc0NvbW1hbmRlZCkgPyBMaW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBX
b3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgICAgIG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1v
dmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkxlZnQsIChpc0NvbW1hbmRlZCkgPyBM
aW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJH
cmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwog
ICAgIH0KICAgICBlbHNlIGlmIChrZXkgPT0gIlJpZ2h0IikgewotICAgICAgICBtX2ZyYW1lLT5z
ZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhU
RU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6UklH
SFQsIChpc0NvbW1hbmRlZCkgPyBMaW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBXb3JkR3Jh
bnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgICAgIG1fZnJhbWUt
PnNlbGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpB
bHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0LCAoaXNDb21tYW5kZWQpID8gTGluZUJv
dW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVs
YXJpdHksIHRydWUpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9
ICAgIAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMWM5NjU0Mi4uYTgzMTgyZSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTAtMDMtMDEgIEx5b24gQ2hlbiAgPGxpYWNoZW5AcmltLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIGEg
c2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICogc3JjL1dl
YkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZXhlY3V0ZUNv
bW1hbmQpOgorCiAyMDEwLTAzLTAxICBKYWtvYiBQZXRzb3ZpdHMgIDxqcGV0c292aXRzQHJpbS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RnJhbWVJbXBsLmNwcAppbmRleCA3NWQxY2U4Li5iYjZhNzExIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGcmFtZUltcGwuY3BwCkBAIC05ODIsMTEgKzk4MiwxMSBAQCBib29sIFdlYkZyYW1lSW1wbDo6
ZXhlY3V0ZUNvbW1hbmQoY29uc3QgV2ViU3RyaW5nJiBuYW1lKQogICAgIC8vIHN1cHBvcnQuCiAg
ICAgaWYgKGNvbW1hbmQgPT0gIkRlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgiKSB7CiAgICAgICAgIEVk
aXRvciogZWRpdG9yID0gZnJhbWUoKS0+ZWRpdG9yKCk7Ci0gICAgICAgIGlmICghZWRpdG9yLT5k
ZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsCisgICAgICAg
IGlmICghZWRpdG9yLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRp
cmVjdGlvbkZvcndhcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBhcmFncmFwaEJvdW5kYXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxz
ZSkpIHsKLSAgICAgICAgICAgIGVkaXRvci0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25D
b250cm9sbGVyOjpGT1JXQVJELAorICAgICAgICAgICAgZWRpdG9yLT5kZWxldGVXaXRoRGlyZWN0
aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyR3JhbnVsYXJpdHksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3Uv
Q2hhbmdlTG9nIGIvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwppbmRleCA0YzM3YmFlLi41MmM3ZGM1
IDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9oYWlrdS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wMy0wMSAgTHlvbiBDaGVuICA8bGlhY2hl
bkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQgYnVnIFVSTCAoT09QUyEpCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisKIDIwMTAtMDIt
MjMgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRIYWlrdS5jcHAKaW5kZXggYTUxZTM2MS4uY2FkMjNjYiAxMDA2NDQKLS0tIGEv
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcAorKysgYi9X
ZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuY3BwCkBAIC0yNTQs
MzYgKzI1NCwzNiBAQCB2b2lkIEVkaXRvckNsaWVudEhhaWt1OjpoYW5kbGVLZXlib2FyZEV2ZW50
KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIGlmIChzdGFydC0+aXNDb250ZW50RWRpdGFibGUo
KSkgewogICAgICAgICBzd2l0Y2goa2V2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewog
ICAgICAgICBjYXNlIFZLX0JBQ0s6Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0
ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsCisgICAgICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxl
cjo6RGlyZWN0aW9uQmFja3dhcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAga2V2ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFy
YWN0ZXJHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJl
Y3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwKKyAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25Gb3J3YXJkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGtldmVudC0+Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVs
YXJpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmFsc2UsIHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVktfTEVGVDoK
LSAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+c2hpZnRLZXko
KSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1P
VkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250
cm9sbGVyOjpMRUZULAorICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V2
ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtldmVudC0+Y3RybEtleSgp
ID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFZLX1JJR0hUOgotICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
Znkoa2V2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULAorICAgICAgICAgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoa2V2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxl
cjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3Zl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJv
bGxlcjo6RGlyZWN0aW9uUmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrZXZlbnQtPmN0cmxLZXkoKSA/IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51
bGFyaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwK
KyAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+c2hpZnRLZXko
KSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V2ZW50LT5jdHJsS2V5KCkgPyBQYXJhZ3Jh
cGhHcmFudWxhcml0eSA6IExpbmVHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
VktfRE9XTjoKLSAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+
c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRy
b2xsZXI6Ok1PVkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxl
Y3Rpb25Db250cm9sbGVyOjpGT1JXQVJELAorICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoa2V2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uRm9yd2FyZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtl
dmVudC0+Y3RybEtleSgpID8gUGFyYWdyYXBoR3JhbnVsYXJpdHkgOiBMaW5lR3JhbnVsYXJpdHks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKICAgICAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9D
aGFuZ2VMb2cKaW5kZXggNTI3YzhiOS4uZjI0MWViYSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0No
YW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAt
MDMtMDEgIEx5b24gQ2hlbiAgPGxpYWNoZW5AcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5k
IGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJk
RXZlbnQpOgorCiAyMDEwLTAzLTAxICBKYWtvYiBQZXRzb3ZpdHMgIDxqcGV0c292aXRzQHJpbS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCmluZGV4IDkwZWJiMWQuLjZlNjA1YjQgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKKysrIGIv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcApAQCAtMzk3LDExICsz
OTcsMTEgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2Fy
ZEV2ZW50KiBldmVudCkKICAgICAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAgICAg
ICAgY2FzZSBWS19CQUNLOgotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRl
V2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwKKyAgICAgICAgICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJv
bGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0
ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsCisgICAg
ICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICBD
aGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBWS19MRUZUOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49807</attachid>
            <date>2010-03-02 09:16:23 -0800</date>
            <delta_ts>2010-03-26 09:08:10 -0700</delta_ts>
            <desc>Combined patch for bug 35530, with style issue fixed.</desc>
            <filename>35530.patch</filename>
            <type>text/plain</type>
            <size>132803</size>
            <attacher name="Lyon Chen">lyon.chen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzgzZDY3OS4uNzI5MmFmNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzUgQEAKKzIwMTAtMDMtMDIgIEx5b24gQ2hlbiAg
PGxpYWNoZW5AcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFbnVtIHZhbHVlIEZPUldBUkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVCBhcmUg
Y2F1c2luZyBtYWNybyBjb25mbGljdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNTUzMAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpkb0FYUmFuZ2VGb3JMaW5lKToKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRlbGV0
ZVdpdGhEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpmb250Rm9yU2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OmFwcGx5UGFyYWdyYXBoU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjphcHBseVN0eWxlVG9TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjphcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6dHJp
U3RhdGVPZlN0eWxlSW5Db21wdXRlZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
c2VsZWN0aW9uU3RhcnRIYXNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVj
dGlvbkhhc1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjppZ25vcmVTcGVsbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmxlYXJuU3BlbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEZpcnN0TWlzc3Bl
bGxpbmdJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGaXJzdEdyYW1tYXJEZXRhaWxJ
blJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGaXJzdEJhZEdyYW1tYXJJblJhbmdlKToK
KyAgICAgICAgKFdlYkNvcmU6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFySW5SYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmlzU2VsZWN0aW9uTWlzc3BlbGxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjppc1JhbmdlVW5ncmFtbWF0aWNhbCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1Bvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmFwcGx5Q29tbWFuZFRvRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZVRvZ2dsZVN0eWxlSW5MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVBcHBseVBhcmFn
cmFwaFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGUpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1
dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3Rlcik6CisgICAgICAg
IChXZWJDb3JlOjpleGVjdXRlRGVsZXRlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURl
bGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURl
bGV0ZVRvRW5kT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb0VuZE9m
UGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVXb3JkQmFja3dhcmQp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVdvcmRGb3J3YXJkKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVGb3J3YXJkRGVsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1
dGVJbnNlcnRMaW5lQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVCYWNrd2Fy
ZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRG93bik6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRm9y
d2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUxl
ZnQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUGFnZURvd24pOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhlY3V0ZU1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlTW92ZVBhZ2VVcCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92
ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92
ZVJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUmlnaHRBbmRNb2RpZnlTZWxl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mRG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRB
bmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lu
bmluZ09mTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZM
aW5lQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9C
ZWdpbm5pbmdPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVn
aW5uaW5nT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mU2VudGVuY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mU2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhlY3V0ZU1vdmVQYXJhZ3JhcGhCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVBhcmFncmFwaEZvcndhcmRBbmRNb2RpZnlTZWxl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVVcCk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlV29yZEJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
V29yZEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1
dGVNb3ZlV29yZEZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkRm9y
d2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdv
cmRMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZExlZnRBbmRNb2RpZnlT
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkUmlnaHQpOgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0xlZnRFbmRPZkxpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0xlZnRFbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb1JpZ2h0RW5kT2ZMaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpzdXBwb3J0ZWRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpl
bmFibGVkRGVsZXRlKToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6d2lsbEJlTW9kaWZpZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5RXh0ZW5kaW5n
UmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5RXh0
ZW5kaW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpt
b2RpZnlNb3ZpbmdSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVy
Ojptb2RpZnlNb3ZpbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRy
b2xsZXI6Om1vZGlmeUV4dGVuZGluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9u
Q29udHJvbGxlcjo6bW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5TW92aW5nTGVmdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnlNb3ZpbmdCYWNrd2FyZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnkpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uQ29udHJvbGxlcjo6eFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OmRlYnVnUmVuZGVyZXIpOgorICAg
ICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uQ29udHJvbGxlcjo6KToKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZCk6
CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3Nl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWspOgor
ICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9y
SW5RdW90ZWRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omluc2Vy
dFBhcmFncmFwaFNlcGFyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpk
b0FwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6dXBkYXRlUHJlc2VydmVzVHlwaW5nU3R5
bGUpOgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVNlbGVjdGlvbjo6bW9kaWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6
ZGVsZXRlRnJvbURvY3VtZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VsZWN0Q3Vyc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y2FuSGFuZGxlRHJhZ0FuZERyb3BGb3JUYXJnZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1v
dmVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisK
IDIwMTAtMDMtMDEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCBhYWEyOGFlLi42YTVmMGQ0
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAKKysrIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCkBAIC0yMTYzLDcgKzIxNjMsNyBAQCBWaXNpYmxlUG9zaXRpb25SYW5nZSBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUodW5zaQog
ICAgIC8vIHdpbGwgYmUgYSBjYXJldCBhdCB2aXNpYmxlUG9zLgogICAgIFNlbGVjdGlvbkNvbnRy
b2xsZXIgc2VsZWN0aW9uOwogICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVj
dGlvbih2aXNpYmxlUG9zKSk7Ci0gICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCBMaW5lQm91bmRhcnkpOwor
ICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVu
ZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQsIExpbmVCb3VuZGFyeSk7CiAg
ICAgCiAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKHNlbGVjdGlvbi5zZWxlY3Rpb24o
KS52aXNpYmxlU3RhcnQoKSwgc2VsZWN0aW9uLnNlbGVjdGlvbigpLnZpc2libGVFbmQoKSk7CiB9
CkBAIC0yMzc1LDggKzIzNzUsOCBAQCBQbGFpblRleHRSYW5nZSBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojpkb0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkIGxpbmVOdW1iZXIpCiAgICAgLy8gd2ls
bCBiZSBhIGNhcmV0IGF0IHZpc2libGVQb3MuCiAgICAgU2VsZWN0aW9uQ29udHJvbGxlciBzZWxl
Y3Rpb247CiAgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHZpc2li
bGVQb3MpKTsKLSAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVO
RCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVGVCwgTGluZUJvdW5kYXJ5KTsKLSAgICBzZWxlY3Rp
b24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6UklHSFQsIExpbmVCb3VuZGFyeSk7CisgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25D
b250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25MZWZ0LCBMaW5lQm91bmRhcnkpOworICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9u
UmlnaHQsIExpbmVCb3VuZGFyeSk7CiAgICAgCiAgICAgLy8gY2FsY3VsYXRlIHRoZSBpbmRpY2Vz
IGZvciB0aGUgc2VsZWN0aW9uIHN0YXJ0IGFuZCBlbmQKICAgICBWaXNpYmxlUG9zaXRpb24gc3Rh
cnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKaW5kZXggMTA2MWRkMi4uYTMxZDc5MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTI0MSwxNCAr
MjQxLDE0IEBAIGJvb2wgRWRpdG9yOjpkZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkVEaXJlY3Rpb24gZGlyZWN0aW9uLCBUZXh0CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
eyAgICAgICAgCiAgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgICAgICAgICBjYXNl
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQ6Ci0gICAgICAgICAgICBjYXNlIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OlJJR0hUOgotICAgICAgICAgICAgICAgIFR5cGluZ0NvbW1hbmQ6OmZvcndh
cmREZWxldGVLZXlQcmVzc2VkKG1fZnJhbWUtPmRvY3VtZW50KCksIGNhblNtYXJ0Q29weU9yRGVs
ZXRlKCksIGdyYW51bGFyaXR5LCBraWxsUmluZyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJEOgotICAgICAgICAg
ICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpMRUZUOgotICAgICAgICAgICAgICAgIFR5cGlu
Z0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQobV9mcmFtZS0+ZG9jdW1lbnQoKSwgY2FuU21hcnRD
b3B5T3JEZWxldGUoKSwgZ3JhbnVsYXJpdHksIGtpbGxSaW5nKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJk
OgorICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0OgorICAg
ICAgICAgICAgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQobV9mcmFtZS0+
ZG9jdW1lbnQoKSwgY2FuU21hcnRDb3B5T3JEZWxldGUoKSwgZ3JhbnVsYXJpdHksIGtpbGxSaW5n
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkRpcmVjdGlvbkJhY2t3YXJkOgorICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRp
cmVjdGlvbkxlZnQ6CisgICAgICAgICAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2Vk
KG1fZnJhbWUtPmRvY3VtZW50KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCksIGdyYW51bGFyaXR5
LCBraWxsUmluZyk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICByZXZl
YWxTZWxlY3Rpb25BZnRlckVkaXRpbmdPcGVyYXRpb24oKTsKICAgICB9CkBAIC00MTcsNyArNDE3
LDcgQEAgY29uc3QgU2ltcGxlRm9udERhdGEqIEVkaXRvcjo6Zm9udEZvclNlbGVjdGlvbihib29s
JiBoYXNNdWx0aXBsZUZvbnRzKSBjb25zdAogICAgICAgICBpZiAobm9kZVRvUmVtb3ZlKSB7CiAg
ICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgICAgICAgICAgbm9kZVRvUmVtb3ZlLT5y
ZW1vdmUoZWMpOwotICAgICAgICAgICAgQVNTRVJUKGVjID09IDApOworICAgICAgICAgICAgQVNT
RVJUKCFlYyk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNDMyLDcg
KzQzMiw3IEBAIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBFZGl0b3I6OmZvbnRGb3JTZWxlY3Rpb24o
Ym9vbCYgaGFzTXVsdGlwbGVGb250cykgY29uc3QKICAgICAgICAgLy8gSW4gdGhlIGxvb3AgYmVs
b3csIG4gc2hvdWxkIGV2ZW50dWFsbHkgbWF0Y2ggcGFzdEVuZCBhbmQgbm90IGJlY29tZSBuaWws
IGJ1dCB3ZSd2ZSBzZWVuIGF0IGxlYXN0IG9uZQogICAgICAgICAvLyB1bnJlcHJvZHVjaWJsZSBj
YXNlIHdoZXJlIHRoaXMgZGlkbid0IGhhcHBlbiwgc28gY2hlY2sgZm9yIG5pbCBhbHNvLgogICAg
ICAgICBmb3IgKE5vZGUqIG4gPSBzdGFydE5vZGU7IG4gJiYgbiAhPSBwYXN0RW5kOyBuID0gbi0+
dHJhdmVyc2VOZXh0Tm9kZSgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJPYmplY3QgKnJlbmRlcmVy
ID0gbi0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBu
LT5yZW5kZXJlcigpOwogICAgICAgICAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBcmUgdGhlcmUgYW55IG5vZGUgdHlw
ZXMgdGhhdCBoYXZlIHJlbmRlcmVycywgYnV0IHRoYXQgd2Ugc2hvdWxkIGJlIHNraXBwaW5nPwpA
QCAtNzE3LDE2ICs3MTcsMTYgQEAgYm9vbCBFZGl0b3I6OmRpc3BhdGNoQ1BQRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nICZldmVudFR5cGUsIENsaXBib2FyZEFjY2Vzc1BvbGkKIHZvaWQgRWRpdG9y
OjphcHBseVN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBFZGl0QWN0aW9uIGVkaXRp
bmdBY3Rpb24pCiB7CiAgICAgc3dpdGNoIChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9u
VHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxlY3Rpb246Ci0g
ICAgICAgICAgICAvLyBkbyBub3RoaW5nCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBWaXNpYmxlU2VsZWN0aW9uOjpDYXJldFNlbGVjdGlvbjoKLSAgICAgICAgICAgIG1fZnJhbWUt
PmNvbXB1dGVBbmRTZXRUeXBpbmdTdHlsZShzdHlsZSwgZWRpdGluZ0FjdGlvbik7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpSYW5nZVNlbGVjdGlv
bjoKLSAgICAgICAgICAgIGlmIChzdHlsZSkKLSAgICAgICAgICAgICAgICBhcHBseUNvbW1hbmQo
QXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShtX2ZyYW1lLT5kb2N1bWVudCgpLCBzdHlsZSwgZWRp
dGluZ0FjdGlvbikpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaXNpYmxlU2VsZWN0
aW9uOjpOb1NlbGVjdGlvbjoKKyAgICAgICAgLy8gZG8gbm90aGluZworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OkNhcmV0U2VsZWN0aW9uOgorICAgICAgICBtX2Zy
YW1lLT5jb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUoc3R5bGUsIGVkaXRpbmdBY3Rpb24pOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OlJhbmdlU2VsZWN0aW9uOgor
ICAgICAgICBpZiAoc3R5bGUpCisgICAgICAgICAgICBhcHBseUNvbW1hbmQoQXBwbHlTdHlsZUNv
bW1hbmQ6OmNyZWF0ZShtX2ZyYW1lLT5kb2N1bWVudCgpLCBzdHlsZSwgZWRpdGluZ0FjdGlvbikp
OworICAgICAgICBicmVhazsKICAgICB9CiB9CiAgICAgCkBAIC03MzgsMjAgKzczOCwyMCBAQCBi
b29sIEVkaXRvcjo6c2hvdWxkQXBwbHlTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwg
UmFuZ2UqIHJhbmdlKQogdm9pZCBFZGl0b3I6OmFwcGx5UGFyYWdyYXBoU3R5bGUoQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbikKIHsKICAgICBzd2l0
Y2ggKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb25UeXBlKCkpIHsKLSAgICAgICAgY2Fz
ZSBWaXNpYmxlU2VsZWN0aW9uOjpOb1NlbGVjdGlvbjoKLSAgICAgICAgICAgIC8vIGRvIG5vdGhp
bmcKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OkNh
cmV0U2VsZWN0aW9uOgotICAgICAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OlJhbmdlU2VsZWN0
aW9uOgotICAgICAgICAgICAgaWYgKHN0eWxlKQotICAgICAgICAgICAgICAgIGFwcGx5Q29tbWFu
ZChBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIHN0eWxlLCBl
ZGl0aW5nQWN0aW9uLCBBcHBseVN0eWxlQ29tbWFuZDo6Rm9yY2VCbG9ja1Byb3BlcnRpZXMpKTsK
LSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxlY3Rp
b246CisgICAgICAgIC8vIGRvIG5vdGhpbmcKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaXNp
YmxlU2VsZWN0aW9uOjpDYXJldFNlbGVjdGlvbjoKKyAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246
OlJhbmdlU2VsZWN0aW9uOgorICAgICAgICBpZiAoc3R5bGUpCisgICAgICAgICAgICBhcHBseUNv
bW1hbmQoQXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShtX2ZyYW1lLT5kb2N1bWVudCgpLCBzdHls
ZSwgZWRpdGluZ0FjdGlvbiwgQXBwbHlTdHlsZUNvbW1hbmQ6OkZvcmNlQmxvY2tQcm9wZXJ0aWVz
KSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAogdm9pZCBFZGl0b3I6OmFwcGx5U3R5bGVU
b1NlbGVjdGlvbihDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgRWRpdEFjdGlvbiBlZGl0aW5n
QWN0aW9uKQogewotICAgIGlmICghc3R5bGUgfHwgc3R5bGUtPmxlbmd0aCgpID09IDAgfHwgIWNh
bkVkaXRSaWNobHkoKSkKKyAgICBpZiAoIXN0eWxlIHx8ICFzdHlsZS0+bGVuZ3RoKCkgfHwgIWNh
bkVkaXRSaWNobHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGNsaWVudCgpICYmIGNs
aWVudCgpLT5zaG91bGRBcHBseVN0eWxlKHN0eWxlLCBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dG9O
b3JtYWxpemVkUmFuZ2UoKS5nZXQoKSkpCkBAIC03NjAsNyArNzYwLDcgQEAgdm9pZCBFZGl0b3I6
OmFwcGx5U3R5bGVUb1NlbGVjdGlvbihDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgRWRpdEFj
dGlvbiBlZGl0aW4KIAogdm9pZCBFZGl0b3I6OmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlv
bihDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKQog
ewotICAgIGlmICghc3R5bGUgfHwgc3R5bGUtPmxlbmd0aCgpID09IDAgfHwgIWNhbkVkaXRSaWNo
bHkoKSkKKyAgICBpZiAoIXN0eWxlIHx8ICFzdHlsZS0+bGVuZ3RoKCkgfHwgIWNhbkVkaXRSaWNo
bHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChjbGllbnQoKSAmJiBjbGllbnQo
KS0+c2hvdWxkQXBwbHlTdHlsZShzdHlsZSwgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFs
aXplZFJhbmdlKCkuZ2V0KCkpKQpAQCAtNzg2LDcgKzc4Niw3IEBAIHN0YXRpYyBUcmlTdGF0ZSB0
cmlTdGF0ZU9mU3R5bGVJbkNvbXB1dGVkU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogZGVzaXJl
ZFN0eWxlCiAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBkaWZmID0gZ2V0
UHJvcGVydGllc05vdEluQ29tcHV0ZWRTdHlsZShkZXNpcmVkU3R5bGUsIGNvbXB1dGVkU3R5bGUp
OwogCiAgICAgaWYgKGlnbm9yZVRleHRPbmx5UHJvcGVydGllcykKLSAgICAgICAgZGlmZi0+cmVt
b3ZlUHJvcGVydGllc0luU2V0KHRleHRPbmx5UHJvcGVydGllcywgc2l6ZW9mKHRleHRPbmx5UHJv
cGVydGllcykvc2l6ZW9mKHRleHRPbmx5UHJvcGVydGllc1swXSkpOworICAgICAgICBkaWZmLT5y
ZW1vdmVQcm9wZXJ0aWVzSW5TZXQodGV4dE9ubHlQcm9wZXJ0aWVzLCBzaXplb2YodGV4dE9ubHlQ
cm9wZXJ0aWVzKSAvIHNpemVvZih0ZXh0T25seVByb3BlcnRpZXNbMF0pKTsKIAogICAgIGlmICgh
ZGlmZi0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CkBAIC04MDUsNyAr
ODA1LDcgQEAgYm9vbCBFZGl0b3I6OnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUoQ1NTU3R5bGVEZWNs
YXJhdGlvbiogc3R5bGUpIGNvbnN0CiAgICAgaWYgKG5vZGVUb1JlbW92ZSkgewogICAgICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgbm9kZVRvUmVtb3ZlLT5yZW1vdmUoZWMpOwot
ICAgICAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgICAgIEFTU0VSVCghZWMpOwogICAgIH0KICAg
ICByZXR1cm4gc3RhdGUgPT0gVHJ1ZVRyaVN0YXRlOwogfQpAQCAtODIzLDcgKzgyMyw3IEBAIFRy
aVN0YXRlIEVkaXRvcjo6c2VsZWN0aW9uSGFzU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5
bGUpIGNvbnN0CiAgICAgICAgIGlmIChub2RlVG9SZW1vdmUpIHsKICAgICAgICAgICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgICAgICAgICAgbm9kZVRvUmVtb3ZlLT5yZW1vdmUoZWMpOwot
ICAgICAgICAgICAgQVNTRVJUKGVjID09IDApOworICAgICAgICAgICAgQVNTRVJUKCFlYyk7CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX2ZyYW1l
LT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5ub2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJz
ZU5leHROb2RlKCkpIHsKQEAgLTEwNTEsNyArMTA1MSw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZSgp
CiB7CiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIGlmICh0cnlESFRNTFBh
c3RlKCkpCi0gICAgICAgIHJldHVybjsgICAgIC8vIERIVE1MIGRpZCB0aGUgd2hvbGUgb3BlcmF0
aW9uCisgICAgICAgIHJldHVybjsgLy8gREhUTUwgZGlkIHRoZSB3aG9sZSBvcGVyYXRpb24KICAg
ICBpZiAoIWNhblBhc3RlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBEb2NMb2FkZXIqIGxvYWRl
ciA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvY0xvYWRlcigpOwpAQCAtMTQ4Myw3ICsxNDgzLDcg
QEAgdm9pZCBFZGl0b3I6Omlnbm9yZVNwZWxsaW5nKCkKICAgICAgICAgZnJhbWUoKS0+ZG9jdW1l
bnQoKS0+cmVtb3ZlTWFya2VycyhzZWxlY3RlZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6
U3BlbGxpbmcpOwogCiAgICAgU3RyaW5nIHRleHQgPSBmcmFtZSgpLT5zZWxlY3RlZFRleHQoKTsK
LSAgICBBU1NFUlQodGV4dC5sZW5ndGgoKSAhPSAwKTsKKyAgICBBU1NFUlQodGV4dC5sZW5ndGgo
KSk7CiAgICAgY2xpZW50KCktPmlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQodGV4dCk7CiB9CiAK
QEAgLTE0OTYsNyArMTQ5Niw3IEBAIHZvaWQgRWRpdG9yOjpsZWFyblNwZWxsaW5nKCkKICAgICAv
LyBsZWFybmVkIHdvcmQsIHNlZSA8cmRhcjovL3Byb2JsZW0vNTM5NjA3Mj4uCiAKICAgICBTdHJp
bmcgdGV4dCA9IGZyYW1lKCktPnNlbGVjdGVkVGV4dCgpOwotICAgIEFTU0VSVCh0ZXh0Lmxlbmd0
aCgpICE9IDApOworICAgIEFTU0VSVCh0ZXh0Lmxlbmd0aCgpKTsKICAgICBjbGllbnQoKS0+bGVh
cm5Xb3JkKHRleHQpOwogfQogCkBAIC0xNTI3LDcgKzE1MjcsNyBAQCBzdGF0aWMgU3RyaW5nIGZp
bmRGaXJzdE1pc3NwZWxsaW5nSW5SYW5nZShFZGl0b3JDbGllbnQqIGNsaWVudCwgUmFuZ2UqIHNl
YXJjaFJhbgogICAgICAgICAgICAgLy8gbW9yZSByb2J1c3QgYWdhaW5zdCBiYWQgaW5wdXQgb24g
cmVsZWFzZSBidWlsZHMuCiAgICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxpbmdMZW5ndGggPj0g
MCk7CiAgICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxpbmdMb2NhdGlvbiA+PSAtMSk7Ci0gICAg
ICAgICAgICBBU1NFUlQobWlzc3BlbGxpbmdMZW5ndGggPT0gMCB8fCBtaXNzcGVsbGluZ0xvY2F0
aW9uID49IDApOworICAgICAgICAgICAgQVNTRVJUKCFtaXNzcGVsbGluZ0xlbmd0aCB8fCBtaXNz
cGVsbGluZ0xvY2F0aW9uID49IDApOwogICAgICAgICAgICAgQVNTRVJUKG1pc3NwZWxsaW5nTG9j
YXRpb24gPCBsZW4pOwogICAgICAgICAgICAgQVNTRVJUKG1pc3NwZWxsaW5nTGVuZ3RoIDw9IGxl
bik7CiAgICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5n
TGVuZ3RoIDw9IGxlbik7CkBAIC0xNTQ3LDcgKzE1NDcsNyBAQCBzdGF0aWMgU3RyaW5nIGZpbmRG
aXJzdE1pc3NwZWxsaW5nSW5SYW5nZShFZGl0b3JDbGllbnQqIGNsaWVudCwgUmFuZ2UqIHNlYXJj
aFJhbgogICAgICAgICAgICAgICAgIC8vIFN0b3JlIG1hcmtlciBmb3IgbWlzc3BlbGxlZCB3b3Jk
LgogICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICAgICAgICAg
IG1pc3NwZWxsaW5nUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKGVjKS0+ZG9jdW1lbnQoKS0+YWRkTWFy
a2VyKG1pc3NwZWxsaW5nUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7Ci0g
ICAgICAgICAgICAgICAgQVNTRVJUKGVjID09IDApOworICAgICAgICAgICAgICAgIEFTU0VSVCgh
ZWMpOwogCiAgICAgICAgICAgICAgICAgLy8gQmFpbCBvdXQgaWYgd2UncmUgbWFya2luZyBvbmx5
IHRoZSBmaXJzdCBtaXNzcGVsbGluZywgYW5kIG5vdCBhbGwgaW5zdGFuY2VzLgogICAgICAgICAg
ICAgICAgIGlmICghbWFya0FsbCkKQEAgLTE2MTAsNyArMTYxMCw3IEBAIHN0YXRpYyBpbnQgZmlu
ZEZpcnN0R3JhbW1hckRldGFpbEluUmFuZ2UoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBn
cmFtbWFyRGV0CiAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGJhZEdyYW1tYXJSYW5nZSA9IFRl
eHRJdGVyYXRvcjo6c3VicmFuZ2Uoc2VhcmNoUmFuZ2UsIGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlv
biAtIHN0YXJ0T2Zmc2V0ICsgZGV0YWlsLT5sb2NhdGlvbiwgZGV0YWlsLT5sZW5ndGgpOwogICAg
ICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgICAgICBiYWRHcmFtbWFyUmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKGVjKS0+ZG9jdW1lbnQoKS0+YWRkTWFya2VyKGJhZEdyYW1tYXJS
YW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsIGRldGFpbC0+dXNlckRlc2NyaXB0
aW9uKTsKLSAgICAgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICAgICAgICAgIEFTU0VSVCgh
ZWMpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBSZW1lbWJlciB0aGlzIGRldGFp
bCBvbmx5IGlmIGl0J3MgZWFybGllciB0aGFuIG91ciBjdXJyZW50IGNhbmRpZGF0ZSAodGhlIGRl
dGFpbHMgYXJlbid0IGluIGEgZ3VhcmFudGVlZCBvcmRlcikKQEAgLTE2NTYsNyArMTY1Niw3IEBA
IHN0YXRpYyBTdHJpbmcgZmluZEZpcnN0QmFkR3JhbW1hckluUmFuZ2UoRWRpdG9yQ2xpZW50KiBj
bGllbnQsIFJhbmdlKiBzZWFyY2hSYW5nCiAgICAgICAgIGludCBiYWRHcmFtbWFyUGhyYXNlTGVu
Z3RoID0gMDsKICAgICAgICAgY2xpZW50LT5jaGVja0dyYW1tYXJPZlN0cmluZyhwYXJhZ3JhcGhT
dHJpbmcuY2hhcmFjdGVycygpICsgc3RhcnRPZmZzZXQsIHBhcmFncmFwaFN0cmluZy5sZW5ndGgo
KSAtIHN0YXJ0T2Zmc2V0LCBncmFtbWFyRGV0YWlscywgJmJhZEdyYW1tYXJQaHJhc2VMb2NhdGlv
biwgJmJhZEdyYW1tYXJQaHJhc2VMZW5ndGgpOwogICAgICAgICAKLSAgICAgICAgaWYgKGJhZEdy
YW1tYXJQaHJhc2VMZW5ndGggPT0gMCkgeworICAgICAgICBpZiAoIWJhZEdyYW1tYXJQaHJhc2VM
ZW5ndGgpIHsKICAgICAgICAgICAgIEFTU0VSVChiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gPT0g
LTEpOwogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICB9CkBAIC0xNzU4LDcg
KzE3NTgsNyBAQCBzdGF0aWMgU3RyaW5nIGZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFy
SW5SYW5nZShFZGl0b3JDbGllbnQqIGNsaWVudCwgUmFuZwogICAgICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKHJlc3VsdC0+bGVuZ3RoID4gMCAmJiByZXN1bHQtPmxvY2F0aW9uID49IDApOwog
ICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxpbmdMb2NhdGlvbiA9IHJlc3VsdC0+bG9jYXRp
b247CiAgICAgICAgICAgICAgICAgICAgICAgICBtaXNzcGVsbGVkV29yZCA9IHBhcmFncmFwaFN0
cmluZy5zdWJzdHJpbmcocmVzdWx0LT5sb2NhdGlvbiwgcmVzdWx0LT5sZW5ndGgpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKG1pc3NwZWxsZWRXb3JkLmxlbmd0aCgpICE9IDApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1pc3NwZWxsZWRXb3JkLmxlbmd0aCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGNoZWNrR3JhbW1hciAmJiByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUdy
YW1tYXIgJiYgcmVzdWx0LT5sb2NhdGlvbiA8IGN1cnJlbnRFbmRPZmZzZXQgJiYgcmVzdWx0LT5s
b2NhdGlvbiArIHJlc3VsdC0+bGVuZ3RoID4gY3VycmVudFN0YXJ0T2Zmc2V0KSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGggPiAwICYmIHJlc3VsdC0+bG9j
YXRpb24gPj0gMCk7CkBAIC0xNzc4LDcgKzE3NzgsNyBAQCBzdGF0aWMgU3RyaW5nIGZpbmRGaXJz
dE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFySW5SYW5nZShFZGl0b3JDbGllbnQqIGNsaWVudCwgUmFu
ZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9IHJl
c3VsdC0+bG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0R3JhbW1hckRl
dGFpbCA9IHJlc3VsdC0+ZGV0YWlsc1tncmFtbWFyRGV0YWlsSW5kZXhdOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJhZEdyYW1tYXJQaHJhc2UgPSBwYXJhZ3JhcGhTdHJpbmcuc3Vic3Ry
aW5nKHJlc3VsdC0+bG9jYXRpb24sIHJlc3VsdC0+bGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoYmFkR3JhbW1hclBocmFzZS5sZW5ndGgoKSAhPSAwKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmFkR3JhbW1hclBocmFzZS5sZW5ndGgoKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9CkBAIC0xODU2LDcgKzE4NTYsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRv
TmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgIAogICAg
ICAgICBQb3NpdGlvbiByYW5nZUNvbXBsaWFudFBvc2l0aW9uID0gcmFuZ2VDb21wbGlhbnRFcXVp
dmFsZW50KHBvc2l0aW9uKTsKICAgICAgICAgc3BlbGxpbmdTZWFyY2hSYW5nZS0+c2V0U3RhcnQo
cmFuZ2VDb21wbGlhbnRQb3NpdGlvbi5ub2RlKCksIHJhbmdlQ29tcGxpYW50UG9zaXRpb24uZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZWMpOwotICAgICAgICBzdGFydGVkV2l0aFNlbGVjdGlv
biA9IGZhbHNlOyAgIC8vIHdvbid0IG5lZWQgdG8gd3JhcAorICAgICAgICBzdGFydGVkV2l0aFNl
bGVjdGlvbiA9IGZhbHNlOyAvLyB3b24ndCBuZWVkIHRvIHdyYXAKICAgICB9CiAgICAgCiAgICAg
Ly8gdG9wTm9kZSBkZWZpbmVzIHRoZSB3aG9sZSByYW5nZSB3ZSB3YW50IHRvIG9wZXJhdGUgb24g
CkBAIC0xODc0LDcgKzE4NzQsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxs
aW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgfQogICAgIAogICAgIGlmIChzcGVs
bGluZ1NlYXJjaFJhbmdlLT5jb2xsYXBzZWQoZWMpKQotICAgICAgICByZXR1cm47ICAgICAgIC8v
IG5vdGhpbmcgdG8gc2VhcmNoIGluCisgICAgICAgIHJldHVybjsgLy8gbm90aGluZyB0byBzZWFy
Y2ggaW4KICAgICAKICAgICAvLyBHZXQgdGhlIHNwZWxsIGNoZWNrZXIgaWYgaXQgaXMgYXZhaWxh
YmxlCiAgICAgaWYgKCFjbGllbnQoKSkKQEAgLTE4ODMsNyArMTg4Myw3IEBAIHZvaWQgRWRpdG9y
OjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAg
ICAvLyBXZSBnbyB0byB0aGUgZW5kIG9mIG91ciBmaXJzdCByYW5nZSBpbnN0ZWFkIG9mIHRoZSBz
dGFydCBvZiBpdCwganVzdCB0byBiZSBzdXJlCiAgICAgLy8gd2UgZG9uJ3QgZ2V0IGZvaWxlZCBi
eSBhbnkgd29yZCBib3VuZGFyeSBwcm9ibGVtcyBhdCB0aGUgc3RhcnQuICBJdCBtZWFucyB3ZSBt
aWdodAogICAgIC8vIGRvIGEgdGlueSBiaXQgbW9yZSBzZWFyY2hpbmcuCi0gICAgTm9kZSAqc2Vh
cmNoRW5kTm9kZUFmdGVyV3JhcCA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmVuZENvbnRhaW5lcihl
Yyk7CisgICAgTm9kZSogc2VhcmNoRW5kTm9kZUFmdGVyV3JhcCA9IHNwZWxsaW5nU2VhcmNoUmFu
Z2UtPmVuZENvbnRhaW5lcihlYyk7CiAgICAgaW50IHNlYXJjaEVuZE9mZnNldEFmdGVyV3JhcCA9
IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmVuZE9mZnNldChlYyk7CiAgICAgCiAgICAgaW50IG1pc3Nw
ZWxsaW5nT2Zmc2V0ID0gMDsKQEAgLTE5OTYsNyArMTk5Niw3IEBAIGJvb2wgRWRpdG9yOjppc1Nl
bGVjdGlvbk1pc3NwZWxsZWQoKQogewogICAgIFN0cmluZyBzZWxlY3RlZFN0cmluZyA9IGZyYW1l
KCktPnNlbGVjdGVkVGV4dCgpOwogICAgIGludCBsZW5ndGggPSBzZWxlY3RlZFN0cmluZy5sZW5n
dGgoKTsKLSAgICBpZiAobGVuZ3RoID09IDApCisgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmICghY2xpZW50KCkpCkBAIC0yMDQ5LDcgKzIwNDksNyBAQCBz
dGF0aWMgYm9vbCBpc1JhbmdlVW5ncmFtbWF0aWNhbChFZGl0b3JDbGllbnQqIGNsaWVudCwgUmFu
Z2UgKnJhbmdlLCBWZWN0b3I8U3RyaQogICAgIEFTU0VSVChncmFtbWFyRGV0YWlsLmxvY2F0aW9u
ID49IDAgJiYgZ3JhbW1hckRldGFpbC5sZW5ndGggPiAwKTsKICAgICAKICAgICAvLyBCYWQgZ3Jh
bW1hciwgYnV0IHN0YXJ0IG9mIGRldGFpbCAoZS5nLiB1bmdyYW1tYXRpY2FsIHdvcmQpIGRvZXNu
J3QgbWF0Y2ggc3RhcnQgb2YgcmFuZ2UKLSAgICBpZiAoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiAr
IGdyYW1tYXJQaHJhc2VPZmZzZXQgIT0gMCkKKyAgICBpZiAoZ3JhbW1hckRldGFpbC5sb2NhdGlv
biArIGdyYW1tYXJQaHJhc2VPZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAg
ICAvLyBCYWQgZ3JhbW1hciBhdCBzdGFydCBvZiByYW5nZSwgYnV0IGVuZCBvZiBiYWQgZ3JhbW1h
ciBpcyBiZWZvcmUgb3IgYWZ0ZXIgZW5kIG9mIHJhbmdlCkBAIC0yMDkxLDcgKzIwOTEsNyBAQCBW
ZWN0b3I8U3RyaW5nPiBFZGl0b3I6Omd1ZXNzZXNGb3JVbmdyYW1tYXRpY2FsU2VsZWN0aW9uKCkK
IFZlY3RvcjxTdHJpbmc+IEVkaXRvcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRTZWxlY3Rpb24oKQog
ewogICAgIFN0cmluZyBzZWxlY3RlZFN0cmluZyA9IGZyYW1lKCktPnNlbGVjdGVkVGV4dCgpOwot
ICAgIEFTU0VSVChzZWxlY3RlZFN0cmluZy5sZW5ndGgoKSAhPSAwKTsKKyAgICBBU1NFUlQoc2Vs
ZWN0ZWRTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gZ3Vlc3NlczsKICAg
ICBpZiAoY2xpZW50KCkpCkBAIC0yMTE2LDcgKzIxMTYsNyBAQCBzdGF0aWMgVmVjdG9yPFN0cmlu
Zz4gZ3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZShFZGl0b3JDbGllbnQq
IGNsaQogICAgIFN0cmluZyBwYXJhZ3JhcGhTdHJpbmc7CiAgICAgUmVmUHRyPFJhbmdlPiBwYXJh
Z3JhcGhSYW5nZSA9IHBhcmFncmFwaEFsaWduZWRSYW5nZUZvclJhbmdlKHJhbmdlLCByYW5nZVN0
YXJ0T2Zmc2V0LCBwYXJhZ3JhcGhTdHJpbmcpOwogICAgIGludCByYW5nZUxlbmd0aCA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UpOwotICAgIGlmIChyYW5nZUxlbmd0aCA9PSAwIHx8
IHBhcmFncmFwaFN0cmluZy5sZW5ndGgoKSA9PSAwKQorICAgIGlmICghcmFuZ2VMZW5ndGggfHwg
IXBhcmFncmFwaFN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGd1ZXNzZXM7CiAKICAg
ICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwpAQCAtMjEyNyw3ICsyMTI3LDcg
QEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRp
Y2FsUmFuZ2UoRWRpdG9yQ2xpZW50KiBjbGkKICAgICAgICAgY29uc3QgVGV4dENoZWNraW5nUmVz
dWx0KiByZXN1bHQgPSAmcmVzdWx0c1tpXTsKICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgcmVzdWx0LT5sb2NhdGlvbiA9PSByYW5nZVN0YXJ0
T2Zmc2V0ICYmIHJlc3VsdC0+bGVuZ3RoID09IHJhbmdlTGVuZ3RoKSB7CiAgICAgICAgICAgICBT
dHJpbmcgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGhTdHJpbmcuc3Vic3RyaW5nKHJhbmdlU3Rh
cnRPZmZzZXQsIHJhbmdlTGVuZ3RoKTsKLSAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGVkV29y
ZC5sZW5ndGgoKSAhPSAwKTsKKyAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGVkV29yZC5sZW5n
dGgoKSk7CiAgICAgICAgICAgICBjbGllbnQtPmdldEd1ZXNzZXNGb3JXb3JkKG1pc3NwZWxsZWRX
b3JkLCBndWVzc2VzKTsKICAgICAgICAgICAgIGNsaWVudC0+dXBkYXRlU3BlbGxpbmdVSVdpdGhN
aXNzcGVsbGVkV29yZChtaXNzcGVsbGVkV29yZCk7CiAgICAgICAgICAgICBtaXNzcGVsbGVkID0g
dHJ1ZTsKQEAgLTIxNDYsNyArMjE0Niw3IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBndWVzc2Vz
Rm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKEVkaXRvckNsaWVudCogY2xpCiAgICAg
ICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+bGVuZ3RoID4gMCAmJiBkZXRhaWwtPmxvY2F0aW9u
ID49IDApOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQtPmxvY2F0aW9uICsgZGV0YWlsLT5s
b2NhdGlvbiA9PSByYW5nZVN0YXJ0T2Zmc2V0ICYmIGRldGFpbC0+bGVuZ3RoID09IHJhbmdlTGVu
Z3RoKSB7CiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBiYWRHcmFtbWFyUGhyYXNlID0gcGFy
YWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyZXN1bHQtPmxvY2F0aW9uLCByZXN1bHQtPmxlbmd0aCk7
Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChiYWRHcmFtbWFyUGhyYXNlLmxlbmd0aCgpICE9
IDApOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmFkR3JhbW1hclBocmFzZS5sZW5ndGgo
KSk7CiAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBkZXRhaWwt
Pmd1ZXNzZXMuc2l6ZSgpOyBrKyspCiAgICAgICAgICAgICAgICAgICAgICAgICBndWVzc2VzLmFw
cGVuZChkZXRhaWwtPmd1ZXNzZXNba10pOwogICAgICAgICAgICAgICAgICAgICBjbGllbnQtPnVw
ZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhiYWRHcmFtbWFyUGhyYXNlLCAqZGV0YWls
KTsKQEAgLTIyMjQsOSArMjIyNCw4IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0
ZXJUeXBpbmdUb1Bvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmcCkKICAgICBpZiAobWFy
a0dyYW1tYXIpIHsKICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3RlZFNlbnRlbmNlID0g
VmlzaWJsZVNlbGVjdGlvbihzdGFydE9mU2VudGVuY2UocCksIGVuZE9mU2VudGVuY2UocCkpOwog
ICAgICAgICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRydWUsIGFk
amFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgdHJ1ZSwgc2VsZWN0ZWRTZW50
ZW5jZS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBwZXJmb3JtVGV4dENoZWNraW5nUmVwbGFj
ZW1lbnRzKTsKLSAgICB9IGVsc2UgeworICAgIH0gZWxzZQogICAgICAgICBtYXJrQWxsTWlzc3Bl
bGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKG1hcmtTcGVsbGluZywgYWRqYWNlbnRXb3Jkcy50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmYWxzZSwgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6
ZWRSYW5nZSgpLmdldCgpLCBwZXJmb3JtVGV4dENoZWNraW5nUmVwbGFjZW1lbnRzKTsKLSAgICB9
CiAjZWxzZQogICAgIGlmICghaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjIzNiw3ICsyMjM1LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNz
cGVsbGluZ3NBZnRlclR5cGluZ1RvUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uICZwKQog
ICAgIG1hcmtNaXNzcGVsbGluZ3MoVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mV29yZChwLCBMZWZ0
V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZChwLCBSaWdodFdvcmRJZk9uQm91bmRhcnkpKSwg
bWlzc3BlbGxpbmdSYW5nZSk7CiAKICAgICAvLyBBdXRvY29ycmVjdCB0aGUgbWlzc3BlbGxlZCB3
b3JkLgotICAgIGlmIChtaXNzcGVsbGluZ1JhbmdlID09IDApCisgICAgaWYgKCFtaXNzcGVsbGlu
Z1JhbmdlKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gR2V0IHRoZSBtaXNzcGVsbGVk
IHdvcmQuCkBAIC0yMjU4LDcgKzIyNTcsNyBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5n
c0FmdGVyVHlwaW5nVG9Qb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24gJnApCiAKICAgICAg
ICAgLy8gUmVzZXQgdGhlIGNoYXJldCBvbmUgY2hhcmFjdGVyIGZ1cnRoZXIuCiAgICAgICAgIGZy
YW1lKCktPnNlbGVjdGlvbigpLT5tb3ZlVG8oZnJhbWUoKS0+c2VsZWN0aW9uKCktPmVuZCgpKTsK
LSAgICAgICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVy
OjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0
eSk7CisgICAgICAgIGZyYW1lKCktPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJv
bGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndh
cmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICB9CiAKICAgICBpZiAoIWlzR3JhbW1hckNo
ZWNraW5nRW5hYmxlZCgpKQpAQCAtMjQwNSw5ICsyNDA0LDkgQEAgdm9pZCBFZGl0b3I6Om1hcmtB
bGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoYm9vbCBtYXJrU3BlbGxpbmcsIFJh
bmdlKgogICAgICAgICBSZWZQdHI8UmFuZ2U+IG9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KHBhcmFncmFwaFJhbmdlLT5zdGFydENvbnRhaW5lcihlYyktPmRvY3VtZW50KCksIHBhcmFncmFw
aFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIHNwZWxsaW5nUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7
CiAgICAgICAgIHNwZWxsaW5nUmFuZ2VTdGFydE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VM
ZW5ndGgob2Zmc2V0QXNSYW5nZS5nZXQoKSk7CiAgICAgICAgIGdyYW1tYXJSYW5nZUVuZE9mZnNl
dCA9IGdyYW1tYXJSYW5nZVN0YXJ0T2Zmc2V0ICsgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChn
cmFtbWFyUmFuZ2UpOwotICAgIH0gZWxzZSB7CisgICAgfSBlbHNlCiAgICAgICAgIHBhcmFncmFw
aFJhbmdlID0gcGFyYWdyYXBoQWxpZ25lZFJhbmdlRm9yUmFuZ2Uoc3BlbGxpbmdSYW5nZSwgc3Bl
bGxpbmdSYW5nZVN0YXJ0T2Zmc2V0LCBwYXJhZ3JhcGhTdHJpbmcpOwotICAgIH0KKwogICAgIHNw
ZWxsaW5nUmFuZ2VFbmRPZmZzZXQgPSBzcGVsbGluZ1JhbmdlU3RhcnRPZmZzZXQgKyBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKHNwZWxsaW5nUmFuZ2UpOwogICAgIHBhcmFncmFwaExlbmd0aCA9
IHBhcmFncmFwaFN0cmluZy5sZW5ndGgoKTsKICAgICBpZiAocGFyYWdyYXBoTGVuZ3RoIDw9IDAg
fHwgKHNwZWxsaW5nUmFuZ2VTdGFydE9mZnNldCA+PSBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ICYm
ICghbWFya0dyYW1tYXIgfHwgZ3JhbW1hclJhbmdlU3RhcnRPZmZzZXQgPj0gZ3JhbW1hclJhbmdl
RW5kT2Zmc2V0KSkpCkBAIC0yNDY4LDggKzI0NjcsOCBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1p
c3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhib29sIG1hcmtTcGVsbGluZywgUmFuZ2Uq
CiAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJSYW5nZS0+c3RhcnRDb250YWluZXIoZWMpLT5k
b2N1bWVudCgpLT5hZGRNYXJrZXIoYmFkR3JhbW1hclJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtl
cjo6R3JhbW1hciwgZGV0YWlsLT51c2VyRGVzY3JpcHRpb24pOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChwZXJmb3JtVGV4dENoZWNraW5nUmVw
bGFjZW1lbnRzICYmIHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoIDw9IHNwZWxsaW5nUmFu
Z2VFbmRPZmZzZXQgJiYgcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPj0gc3BlbGxpbmdS
YW5nZVN0YXJ0T2Zmc2V0ICYmCi0gICAgICAgICAgICAgICAgICAgIChyZXN1bHQtPnR5cGUgPT0g
VGV4dENoZWNraW5nVHlwZUxpbmsKKyAgICAgICAgfSBlbHNlIGlmIChwZXJmb3JtVGV4dENoZWNr
aW5nUmVwbGFjZW1lbnRzICYmIHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoIDw9IHNwZWxs
aW5nUmFuZ2VFbmRPZmZzZXQgJiYgcmVzdWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPj0gc3Bl
bGxpbmdSYW5nZVN0YXJ0T2Zmc2V0CisgICAgICAgICAgICAgICAgICAgICYmIChyZXN1bHQtPnR5
cGUgPT0gVGV4dENoZWNraW5nVHlwZUxpbmsKICAgICAgICAgICAgICAgICAgICAgfHwgcmVzdWx0
LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVRdW90ZQogICAgICAgICAgICAgICAgICAgICB8fCBy
ZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZURhc2gKICAgICAgICAgICAgICAgICAgICAg
fHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudApAQCAtMjUxMSw5
ICsyNTEwLDggQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFy
SW5SYW5nZXMoYm9vbCBtYXJrU3BlbGxpbmcsIFJhbmdlKgogICAgICAgICAgICAgICAgIGlmICht
X2ZyYW1lLT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uVG9SZXBsYWNlKSkgewogICAg
ICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKHNlbGVj
dGlvblRvUmVwbGFjZSk7CiAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0
cnVlOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgIGRvUmVwbGFjZW1lbnQgPSBmYWxzZTsKLSAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZG9SZXBsYWNlbWVudCkgewogICAg
ICAgICAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUxpbmspIHsK
QEAgLTI1NDcsMTEgKzI1NDUsMTEgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFySW5SYW5nZXMoYm9vbCBtYXJrU3BlbGxpbmcsIFJhbmdlKgogICAgICAgICAg
ICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2Uo
cGFyYWdyYXBoUmFuZ2UuZ2V0KCksIDAsIHNlbGVjdGlvbk9mZnNldCk7CiAgICAgICAgICAgICBt
X2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW92ZVRvKHNlbGVjdGlvblJhbmdlLT5lbmRQb3NpdGlvbigp
LCBET1dOU1RSRUFNKTsKICAgICAgICAgICAgIGlmIChhZGp1c3RTZWxlY3Rpb25Gb3JQYXJhZ3Jh
cGhCb3VuZGFyaWVzKQotICAgICAgICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FS
RCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgICAgIG1fZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIElmIHRoaXMgZmFpbHMgZm9yIGFueSBy
ZWFzb24sIHRoZSBmYWxsYmFjayBpcyB0byBnbyBvbmUgcG9zaXRpb24gYmV5b25kIHRoZSBsYXN0
IHJlcGxhY2VtZW50CiAgICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW92ZVRvKG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQoKSk7Ci0gICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIG1fZnJhbWUt
PnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFy
aXR5KTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3JDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRl
eCA0MzdkNTg0Li44NDE5NWI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC05Nywx
MyArOTcsMTMgQEAgc3RhdGljIGJvb2wgYXBwbHlDb21tYW5kVG9GcmFtZShGcmFtZSogZnJhbWUs
IEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWMKIHsKICAgICAvLyBGSVhNRTogV2Ug
ZG9uJ3QgY2FsbCBzaG91bGRBcHBseVN0eWxlIHdoZW4gdGhlIHNvdXJjZSBpcyBET007IGlzIHRo
ZXJlIGEgZ29vZCByZWFzb24gZm9yIHRoYXQ/CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKLSAgICAg
ICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6Ci0gICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmFwcGx5U3R5bGVUb1NlbGVjdGlvbihzdHlsZSwgYWN0aW9uKTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgotICAgICAgICBj
YXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6Ci0gICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmFwcGx5U3R5bGUoc3R5bGUpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6CisgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+YXBwbHlTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLCBhY3Rpb24pOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgorICAgIGNhc2UgQ29tbWFuZEZyb21E
T01XaXRoVXNlckludGVyZmFjZToKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseVN0eWxl
KHN0eWxlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTE0MywxNSArMTQzLDE1IEBAIHN0YXRpYyBi
b29sIGV4ZWN1dGVUb2dnbGVTdHlsZUluTGlzdChGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRT
b3VyY2Ugc291cmNlLCBFCiAgICAgfSBlbHNlIGlmIChzZWxlY3RlZENTU1ZhbHVlLT5jc3NUZXh0
KCkgPT0gIm5vbmUiKQogICAgICAgICBuZXdTdHlsZSA9IHZhbHVlLT5jc3NUZXh0KCk7CiAKLSAg
ICBBU1NFUlQoZWMgPT0gMCk7CisgICAgQVNTRVJUKCFlYyk7CiAgICAgaWYgKG5vZGVUb1JlbW92
ZSkgewogICAgICAgICBub2RlVG9SZW1vdmUtPnJlbW92ZShlYyk7Ci0gICAgICAgIEFTU0VSVChl
YyA9PSAwKTsKKyAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFdl
IHNob3VsZG4ndCBiZSBoYXZpbmcgdG8gY29udmVydCBuZXcgc3R5bGUgaW50byB0ZXh0LiAgV2Ug
c2hvdWxkIGhhdmUgc2V0UHJvcGVydHlDU1NWYWx1ZS4KICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24+IG5ld011dGFibGVTdHlsZSA9IENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjpjcmVhdGUoKTsKLSAgICBuZXdNdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5
SUQsIG5ld1N0eWxlLGVjKTsKKyAgICBuZXdNdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KHByb3Bl
cnR5SUQsIG5ld1N0eWxlLCBlYyk7CiAgICAgcmV0dXJuIGFwcGx5Q29tbWFuZFRvRnJhbWUoZnJh
bWUsIHNvdXJjZSwgYWN0aW9uLCBuZXdNdXRhYmxlU3R5bGUuZ2V0KCkpOwogfQogCkBAIC0xODAs
MTMgKzE4MCwxMyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHlsZShGcmFt
ZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLAogICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eShwcm9wZXJ0eUlELCBwcm9wZXJ0eVZhbHVlKTsKICAgICAvLyBGSVhNRTogV2UgZG9uJ3Qg
Y2FsbCBzaG91bGRBcHBseVN0eWxlIHdoZW4gdGhlIHNvdXJjZSBpcyBET007IGlzIHRoZXJlIGEg
Z29vZCByZWFzb24gZm9yIHRoYXQ/CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKLSAgICAgICAgY2Fz
ZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgYWN0aW9uKTsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgot
ICAgICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6Ci0gICAgICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5UGFyYWdyYXBoU3R5bGUoc3R5bGUuZ2V0KCkpOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRp
bmc6CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0
aW9uKHN0eWxlLmdldCgpLCBhY3Rpb24pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNl
IENvbW1hbmRGcm9tRE9NOgorICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFj
ZToKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLmdl
dCgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTMwNSwxNiArMzA1LDE2IEBAIHN0YXRpYyBib29s
IGV4ZWN1dGVDdXQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlKEZyYW1lKiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBz
d2l0Y2ggKHNvdXJjZSkgewotICAgICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGlu
ZzoKLSAgICAgICAgICAgIC8vIERvZXNuJ3QgbW9kaWZ5IHRoZSB0ZXh0IGlmIHRoZSBjdXJyZW50
IHNlbGVjdGlvbiBpc24ndCBhIHJhbmdlLgotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5w
ZXJmb3JtRGVsZXRlKCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBD
b21tYW5kRnJvbURPTToKLSAgICAgICAgY2FzZSBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJm
YWNlOgotICAgICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlzIGEgY2FyZXQs
IGRlbGV0ZSB0aGUgcHJlY2VkaW5nIGNoYXJhY3Rlci4gSUUgcGVyZm9ybXMgZm9yd2FyZERlbGV0
ZSwgYnV0IHdlIGN1cnJlbnRseSBzaWRlIHdpdGggRmlyZWZveC4KLSAgICAgICAgICAgIC8vIERv
ZXNuJ3Qgc2Nyb2xsIHRvIG1ha2UgdGhlIHNlbGVjdGlvbiB2aXNpYmxlLCBvciBtb2RpZnkgdGhl
IGtpbGwgcmluZyAodGhpcyB0aW1lLCBzaWRpbmcgd2l0aCBJRSwgbm90IEZpcmVmb3gpLgotICAg
ICAgICAgICAgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChmcmFtZS0+ZG9jdW1lbnQo
KSwgZnJhbWUtPnNlbGVjdGlvbkdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5KTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5k
aW5nOgorICAgICAgICAvLyBEb2Vzbid0IG1vZGlmeSB0aGUgdGV4dCBpZiB0aGUgY3VycmVudCBz
ZWxlY3Rpb24gaXNuJ3QgYSByYW5nZS4KKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5wZXJmb3Jt
RGVsZXRlKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQ29tbWFuZEZyb21ET006
CisgICAgY2FzZSBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgorICAgICAgICAvLyBJ
ZiB0aGUgY3VycmVudCBzZWxlY3Rpb24gaXMgYSBjYXJldCwgZGVsZXRlIHRoZSBwcmVjZWRpbmcg
Y2hhcmFjdGVyLiBJRSBwZXJmb3JtcyBmb3J3YXJkRGVsZXRlLCBidXQgd2UgY3VycmVudGx5IHNp
ZGUgd2l0aCBGaXJlZm94LgorICAgICAgICAvLyBEb2Vzbid0IHNjcm9sbCB0byBtYWtlIHRoZSBz
ZWxlY3Rpb24gdmlzaWJsZSwgb3IgbW9kaWZ5IHRoZSBraWxsIHJpbmcgKHRoaXMgdGltZSwgc2lk
aW5nIHdpdGggSUUsIG5vdCBGaXJlZm94KS4KKyAgICAgICAgVHlwaW5nQ29tbWFuZDo6ZGVsZXRl
S2V5UHJlc3NlZChmcmFtZS0+ZG9jdW1lbnQoKSwgZnJhbWUtPnNlbGVjdGlvbkdyYW51bGFyaXR5
KCkgPT0gV29yZEdyYW51bGFyaXR5KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTMyMiwzMiArMzIy
LDMyIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxl
dGVCYWNrd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24o
U2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxz
ZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwg
ZmFsc2UsIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
RGVsZXRlQmFja3dhcmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIoRnJhbWUqIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgTE9H
X0VSUk9SKCJEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlciBpcyBu
b3QgaW1wbGVtZW50ZWQsIGRvaW5nIERlbGV0ZUJhY2t3YXJkIGluc3RlYWQiKTsKLSAgICBmcmFt
ZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFD
S1dBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVk
aXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlv
bkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwogICAgIHJldHVy
biB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlRm9yd2FyZChGcmFtZSogZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBm
cmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6
Rk9SV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKKyAgICBmcmFtZS0+
ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0
aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5l
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25D
b250cm9sbGVyOjpCQUNLV0FSRCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJh
bWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRp
cmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3Jh
cGgoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwor
ICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9s
bGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzU1LDcgKzM1NSw3IEBAIHN0YXRpYyBib29sIGV4
ZWN1dGVEZWxldGVUb0VuZE9mTGluZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwKIHsKICAgICAvLyBEZXNwaXRlIGl0cyBuYW1lLCB0aGlzIGNvbW1hbmQgc2hvdWxk
IGRlbGV0ZSB0aGUgbmV3bGluZSBhdCB0aGUgZW5kIG9mCiAgICAgLy8gYSBwYXJhZ3JhcGggaWYg
eW91IGFyZSBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoIChsaWtlIERlbGV0ZVRvRW5kT2ZQYXJh
Z3JhcGgpLgotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rp
b25Db250cm9sbGVyOjpGT1JXQVJELCBMaW5lQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6
RGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTM2Myw3ICszNjMsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRl
VG9FbmRPZlBhcmFncmFwaChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdQog
ewogICAgIC8vIERlc3BpdGUgaXRzIG5hbWUsIHRoaXMgY29tbWFuZCBzaG91bGQgZGVsZXRlIHRo
ZSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YKICAgICAvLyBhIHBhcmFncmFwaCBpZiB5b3UgYXJlIGF0
IHRoZSBlbmQgb2YgYSBwYXJhZ3JhcGguCi0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRo
RGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIFBhcmFncmFwaEJvdW5kYXJ5
LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9u
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEJvdW5kYXJ5
LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM4NCwxMyArMzg0LDEz
IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb01hcmsoRnJhbWUqIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVX
b3JkQmFja3dhcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9u
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBXb3JkR3JhbnVsYXJpdHksIHRydWUsIGZh
bHNlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFs
c2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlV29y
ZEZvcndhcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2Up
OworICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDM2LDE2ICs0MzYsMTYgQEAgc3RhdGljIGJvb2wg
ZXhlY3V0ZUZvcm1hdEJsb2NrKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdAogc3RhdGljIGJvb2wgZXhlY3V0ZUZvcndhcmREZWxldGUoRnJhbWUqIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zdCBTdHJpbmcmKQogewog
ICAgIHN3aXRjaCAoc291cmNlKSB7Ci0gICAgICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlC
aW5kaW5nOgotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9u
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxz
ZSwgdHJ1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBDb21tYW5k
RnJvbURPTToKLSAgICAgICAgY2FzZSBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgot
ICAgICAgICAgICAgLy8gRG9lc24ndCBzY3JvbGwgdG8gbWFrZSB0aGUgc2VsZWN0aW9uIHZpc2li
bGUsIG9yIG1vZGlmeSB0aGUga2lsbCByaW5nLgotICAgICAgICAgICAgLy8gRm9yd2FyZERlbGV0
ZSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gSUUgb3IgRmlyZWZveCwgc28gdGhpcyBiZWhhdmlvciBp
cyBvbmx5IG5lZWRlZCBmb3IKLSAgICAgICAgICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkg
d2l0aCBvdXJzZWx2ZXMsIGFuZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBEZWxldGUuCi0gICAgICAg
ICAgICBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChmcmFtZS0+ZG9jdW1l
bnQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIENvbW1hbmRGcm9tTWVu
dU9yS2V5QmluZGluZzoKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0
aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51
bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQ29t
bWFuZEZyb21ET006CisgICAgY2FzZSBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgor
ICAgICAgICAvLyBEb2Vzbid0IHNjcm9sbCB0byBtYWtlIHRoZSBzZWxlY3Rpb24gdmlzaWJsZSwg
b3IgbW9kaWZ5IHRoZSBraWxsIHJpbmcuCisgICAgICAgIC8vIEZvcndhcmREZWxldGUgaXMgbm90
IGltcGxlbWVudGVkIGluIElFIG9yIEZpcmVmb3gsIHNvIHRoaXMgYmVoYXZpb3IgaXMgb25seSBu
ZWVkZWQgZm9yCisgICAgICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBvdXJzZWx2
ZXMsIGFuZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBEZWxldGUuCisgICAgICAgIFR5cGluZ0NvbW1h
bmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKGZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBmYWxzZTsKQEAgLTQ5MiwxNSArNDkyLDE1IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRJ
bWFnZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QKIHN0
YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRMaW5lQnJlYWsoRnJhbWUqIGZyYW1lLCBFdmVudCogZXZl
bnQsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIHN3
aXRjaCAoc291cmNlKSB7Ci0gICAgICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5n
OgotICAgICAgICAgICAgcmV0dXJuIHRhcmdldEZyYW1lKGZyYW1lLCBldmVudCktPmV2ZW50SGFu
ZGxlcigpLT5oYW5kbGVUZXh0SW5wdXRFdmVudCgiXG4iLCBldmVudCwgdHJ1ZSk7Ci0gICAgICAg
IGNhc2UgQ29tbWFuZEZyb21ET006Ci0gICAgICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNl
ckludGVyZmFjZToKLSAgICAgICAgICAgIC8vIERvZXNuJ3Qgc2Nyb2xsIHRvIG1ha2UgdGhlIHNl
bGVjdGlvbiB2aXNpYmxlLCBvciBtb2RpZnkgdGhlIGtpbGwgcmluZy4KLSAgICAgICAgICAgIC8v
IEluc2VydExpbmVCcmVhayBpcyBub3QgaW1wbGVtZW50ZWQgaW4gSUUgb3IgRmlyZWZveCwgc28g
dGhpcyBiZWhhdmlvciBpcyBvbmx5IG5lZWRlZCBmb3IKLSAgICAgICAgICAgIC8vIGJhY2t3YXJk
IGNvbXBhdGliaWxpdHkgd2l0aCBvdXJzZWx2ZXMsIGFuZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBv
dGhlciBjb21tYW5kcy4KLSAgICAgICAgICAgIFR5cGluZ0NvbW1hbmQ6Omluc2VydExpbmVCcmVh
ayhmcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNl
IENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKKyAgICAgICAgcmV0dXJuIHRhcmdldEZyYW1l
KGZyYW1lLCBldmVudCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUZXh0SW5wdXRFdmVudCgiXG4i
LCBldmVudCwgdHJ1ZSk7CisgICAgY2FzZSBDb21tYW5kRnJvbURPTToKKyAgICBjYXNlIENvbW1h
bmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6CisgICAgICAgIC8vIERvZXNuJ3Qgc2Nyb2xsIHRv
IG1ha2UgdGhlIHNlbGVjdGlvbiB2aXNpYmxlLCBvciBtb2RpZnkgdGhlIGtpbGwgcmluZy4KKyAg
ICAgICAgLy8gSW5zZXJ0TGluZUJyZWFrIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiBJRSBvciBGaXJl
Zm94LCBzbyB0aGlzIGJlaGF2aW9yIGlzIG9ubHkgbmVlZGVkIGZvcgorICAgICAgICAvLyBiYWNr
d2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb3Vyc2VsdmVzLCBhbmQgZm9yIGNvbnNpc3RlbmN5IHdp
dGggb3RoZXIgY29tbWFuZHMuCisgICAgICAgIFR5cGluZ0NvbW1hbmQ6Omluc2VydExpbmVCcmVh
ayhmcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC01OTUsNDkgKzU5NSw0
OSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xl
ZnQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUJh
Y2t3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRy
b2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlv
bkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24o
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJp
dHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJh
Y2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlRG93bihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpGT1JXQVJELCBMaW5lR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25D
b250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lR3JhbnVsYXJpdHksIHRydWUpOwogICAg
IHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZURvd25BbmRNb2RpZnlT
ZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBMaW5lR3JhbnVs
YXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlv
bkZvcndhcmQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
IHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlRm9yd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0
cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVGb3J3
YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FS
RCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVMZWZ0KEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsK
KyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRl
cmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgQ2hhcmFjdGVy
R3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBl
eGVjdXRlTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9s
bGVyOjpMRUZULCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRy
dWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02NDYsNyArNjQ2LDcgQEAgc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVQYWdlRG93bihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwgY29uc3QKICAgICBpbnQgZGlzdGFuY2UgPSB2ZXJ0aWNhbFNjcm9sbERpc3RhbmNl
KGZyYW1lKTsKICAgICBpZiAoIWRpc3RhbmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1P
VkUsIGRpc3RhbmNlLCB0cnVlKTsKKyAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIGRpc3RhbmNlLCB0cnVlKTsK
IH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbihG
cmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
QEAgLTY1NCw3ICs2NTQsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhZ2VEb3duQW5kTW9k
aWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDbwogICAgIGludCBkaXN0
YW5jZSA9IHZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UoZnJhbWUpOwogICAgIGlmICghZGlzdGFuY2Up
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBkaXN0YW5jZSwgdHJ1ZSk7CisgICAg
cmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25FeHRlbmQsIGRpc3RhbmNlLCB0cnVlKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZU1vdmVQYWdlVXAoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCkBAIC02NjIsNyArNjYyLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQ
YWdlVXAoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFMK
ICAgICBpbnQgZGlzdGFuY2UgPSB2ZXJ0aWNhbFNjcm9sbERpc3RhbmNlKGZyYW1lKTsKICAgICBp
ZiAoIWRpc3RhbmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGZyYW1lLT5z
ZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIC1kaXN0YW5jZSwg
dHJ1ZSk7CisgICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCAtZGlzdGFuY2UsIHRydWUpOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKQEAgLTY3MCwyMTAgKzY3
MCwyMTAgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24o
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW0KICAgICBpbnQgZGlzdGFuY2UgPSB2ZXJ0
aWNhbFNjcm9sbERpc3RhbmNlKGZyYW1lKTsKICAgICBpZiAoIWRpc3RhbmNlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgLWRpc3RhbmNlLCB0cnVlKTsKKyAgICByZXR1cm4gZnJh
bWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4
dGVuZCwgLWRpc3RhbmNlLCB0cnVlKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVSaWdo
dChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVy
OjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpSSUdIVCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHks
IHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdodCwg
Q2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6UklHSFQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBm
cmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9u
RXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdodCwgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpC
QUNLV0FSRCwgRG9jdW1lbnRCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09m
RG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpC
QUNLV0FSRCwgRG9jdW1lbnRCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIERvY3VtZW50Qm91bmRhcnksIHRydWUpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5n
T2ZMaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRy
b2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBMaW5lQm91bmRhcnks
IHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2Fy
ZCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSog
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBMaW5lQm91bmRhcnksIHRydWUpOworICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91
bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
TW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFD
S1dBUkQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09m
UGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
QkFDS1dBUkQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rp
b25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUp
OwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5u
aW5nT2ZTZW50ZW5jZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwg
Y29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgU2VudGVu
Y2VCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVj
dGlvbkJhY2t3YXJkLCBTZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2VBbmRNb2Rp
ZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgU2VudGVu
Y2VCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uQmFja3dhcmQsIFNlbnRlbmNlQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVl
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZEb2N1bWVudChGcmFtZSogZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBm
cmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVlKTsKKyAgICBm
cmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9u
TW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgRG9jdW1lbnRCb3Vu
ZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVN
b3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6Rk9SV0FSRCwgRG9jdW1lbnRCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwg
dHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9F
bmRPZlNlbnRlbmNlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIFNlbnRlbmNl
Qm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25Gb3J3YXJkLCBTZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mU2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rp
b24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBTZW50ZW5jZUJvdW5kYXJ5
LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3
YXJkLCBTZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3Rh
dGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mTGluZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpGT1JXQVJELCBMaW5lQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJldHVy
biB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5
U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25z
dCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgTGluZUJvdW5k
YXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25G
b3J3YXJkLCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGgoRnJhbWUqIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6Rk9SV0FSRCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRP
ZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkZPUldBUkQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rp
b25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFyYWdyYXBo
QmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpC
QUNLV0FSRCwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhHcmFudWxhcml0eSwg
dHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFy
YWdyYXBoRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkZPUldBUkQsIFBhcmFncmFwaEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBQYXJhZ3JhcGhHcmFudWxhcml0
eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3Zl
VXAoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIExpbmVHcmFudWxhcml0eSwg
dHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJk
LCBMaW5lR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QkFDS1dBUkQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIExpbmVHcmFudWxhcml0eSwg
dHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29y
ZEJhY2t3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25z
dCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBXb3JkR3JhbnVs
YXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25C
YWNrd2FyZCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhU
RU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgV29yZEdyYW51bGFyaXR5LCB0cnVl
KTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpB
bHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwg
V29yZEdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVXb3JkRm9yd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JX
QVJELCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVy
biB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5
U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25z
dCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgV29yZEdyYW51
bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25D
b250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25Gb3J3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRMZWZ0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkxFRlQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkRpcmVjdGlvbkxlZnQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZExlZnRBbmRNb2RpZnlT
ZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpMRUZULCBXb3JkR3JhbnVsYXJp
dHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkxl
ZnQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVNb3ZlV29yZFJpZ2h0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJ
R0hULCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpEaXJlY3Rpb25SaWdodCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkUmlnaHRBbmRNb2RpZnlTZWxl
Y3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0
cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJv
bGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpSSUdIVCwgV29yZEdyYW51bGFyaXR5
LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdo
dCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVUb0xlZnRFbmRPZkxpbmUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6TEVGVCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6RGlyZWN0aW9uTGVmdCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0xlZnRFbmRPZkxpbmVBbmRNb2RpZnlT
ZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpMRUZULCBMaW5lQm91bmRhcnks
IHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkxlZnQs
IExpbmVCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9mTGluZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpS
SUdIVCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6RGlyZWN0aW9uUmlnaHQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9mTGluZUFuZE1vZGlmeVNl
bGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCBMaW5lQm91bmRhcnks
IHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0
LCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDcyLDEz
ICsxMDcyLDEzIEBAIHN0YXRpYyBib29sIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nKEZy
YW1lKiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UpCiBzdGF0aWMgYm9vbCBzdXBwb3J0ZWRQ
YXN0ZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlKQogewogICAgIHN3
aXRjaCAoc291cmNlKSB7Ci0gICAgICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5n
OgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGNhc2UgQ29tbWFuZEZyb21ET006
Ci0gICAgICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZTogewotICAgICAg
ICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZnJhbWUgPyBmcmFtZS0+c2V0dGluZ3MoKSA6IDA7
Ci0gICAgICAgICAgICByZXR1cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmlzRE9NUGFzdGVBbGxv
d2VkKCk7Ci0gICAgICAgIH0KKyAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBDb21tYW5kRnJvbURPTToKKyAgICBjYXNl
IENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6IHsKKyAgICAgICAgU2V0dGluZ3MqIHNl
dHRpbmdzID0gZnJhbWUgPyBmcmFtZS0+c2V0dGluZ3MoKSA6IDA7CisgICAgICAgIHJldHVybiBz
ZXR0aW5ncyAmJiBzZXR0aW5ncy0+aXNET01QYXN0ZUFsbG93ZWQoKTsKKyAgICB9CiAgICAgfQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTExMzcsMTQg
KzExMzcsMTQgQEAgc3RhdGljIGJvb2wgZW5hYmxlZEN1dChGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSkKIHN0YXRpYyBib29sIGVuYWJsZWREZWxldGUoRnJhbWUqIGZy
YW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlKQogewogICAgIHN3
aXRjaCAoc291cmNlKSB7Ci0gICAgICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5n
OgotICAgICAgICAgICAgLy8gIkRlbGV0ZSIgZnJvbSBtZW51IG9ubHkgYWZmZWN0cyBzZWxlY3Rl
ZCByYW5nZSwganVzdCBsaWtlIEN1dCBidXQgd2l0aG91dCBhZmZlY3RpbmcgcGFzdGVib2FyZAot
ICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuREhUTUxDdXQoKSB8fCBmcmFt
ZS0+ZWRpdG9yKCktPmNhbkN1dCgpOwotICAgICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgotICAg
ICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6Ci0gICAgICAgICAgICAv
LyAiRGVsZXRlIiBmcm9tIERPTSBpcyBsaWtlIGRlbGV0ZS9iYWNrc3BhY2Uga2V5cHJlc3MsIGFm
ZmVjdHMgc2VsZWN0ZWQgcmFuZ2UgaWYgbm9uLWVtcHR5LAotICAgICAgICAgICAgLy8gb3RoZXJ3
aXNlIHJlbW92ZXMgYSBjaGFyYWN0ZXIKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9y
KCktPnNlbGVjdGlvbkZvckNvbW1hbmQoZXZlbnQpLmlzQ29udGVudEVkaXRhYmxlKCk7CisgICAg
Y2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6CisgICAgICAgIC8vICJEZWxldGUiIGZy
b20gbWVudSBvbmx5IGFmZmVjdHMgc2VsZWN0ZWQgcmFuZ2UsIGp1c3QgbGlrZSBDdXQgYnV0IHdp
dGhvdXQgYWZmZWN0aW5nIHBhc3RlYm9hcmQKKyAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3Io
KS0+Y2FuREhUTUxDdXQoKSB8fCBmcmFtZS0+ZWRpdG9yKCktPmNhbkN1dCgpOworICAgIGNhc2Ug
Q29tbWFuZEZyb21ET006CisgICAgY2FzZSBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNl
OgorICAgICAgICAvLyAiRGVsZXRlIiBmcm9tIERPTSBpcyBsaWtlIGRlbGV0ZS9iYWNrc3BhY2Ug
a2V5cHJlc3MsIGFmZmVjdHMgc2VsZWN0ZWQgcmFuZ2UgaWYgbm9uLWVtcHR5LAorICAgICAgICAv
LyBvdGhlcndpc2UgcmVtb3ZlcyBhIGNoYXJhY3RlcgorICAgICAgICByZXR1cm4gZnJhbWUtPmVk
aXRvcigpLT5zZWxlY3Rpb25Gb3JDb21tYW5kKGV2ZW50KS5pc0NvbnRlbnRFZGl0YWJsZSgpOwog
ICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAgYi9XZWJDb3Jl
L2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMjU5ODJkNC4uMDNjYjRhZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBi
L1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcApAQCAtMzMsOCArMzMsOCBA
QAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiRmxvYXRRdWFkLmgiCisjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om5vZGVXaWxs
QmVSZW1vdmVkKE5vZGUgKm5vZGUpCiAKIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6d2lsbEJl
TW9kaWZpZWQoRUFsdGVyYXRpb24gYWx0ZXIsIEVEaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAg
IGlmIChhbHRlciAhPSBFWFRFTkQpCisgICAgaWYgKGFsdGVyICE9IEFsdGVyYXRpb25FeHRlbmQp
CiAgICAgICAgIHJldHVybjsKICAgICBpZiAobV9sYXN0Q2hhbmdlV2FzSG9yaXpvbnRhbEV4dGVu
c2lvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMjQwLDE2ICsyNDAsMTYgQEAgdm9pZCBTZWxlY3Rp
b25Db250cm9sbGVyOjp3aWxsQmVNb2RpZmllZChFQWx0ZXJhdGlvbiBhbHRlciwgRURpcmVjdGlv
biBkaXJlY3Rpb24KICAgICBQb3NpdGlvbiBlbmQgPSBtX3NlbGVjdGlvbi5lbmQoKTsKICAgICAv
LyBGSVhNRTogVGhpcyBpcyBwcm9iYWJseSBub3QgY29ycmVjdCBmb3IgcmlnaHQgYW5kIGxlZnQg
d2hlbiB0aGUgZGlyZWN0aW9uIGlzIFJUTC4KICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAg
ICAgICBjYXNlIFJJR0hUOgotICAgICAgICBjYXNlIEZPUldBUkQ6Ci0gICAgICAgICAgICBtX3Nl
bGVjdGlvbi5zZXRCYXNlKHN0YXJ0KTsKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uLnNldEV4dGVu
dChlbmQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTEVGVDoKLSAgICAgICAg
Y2FzZSBCQUNLV0FSRDoKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uLnNldEJhc2UoZW5kKTsKLSAg
ICAgICAgICAgIG1fc2VsZWN0aW9uLnNldEV4dGVudChzdGFydCk7Ci0gICAgICAgICAgICBicmVh
azsKKyAgICBjYXNlIERpcmVjdGlvblJpZ2h0OgorICAgIGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoK
KyAgICAgICAgbV9zZWxlY3Rpb24uc2V0QmFzZShzdGFydCk7CisgICAgICAgIG1fc2VsZWN0aW9u
LnNldEV4dGVudChlbmQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIERpcmVjdGlvbkxlZnQ6
CisgICAgY2FzZSBEaXJlY3Rpb25CYWNrd2FyZDoKKyAgICAgICAgbV9zZWxlY3Rpb24uc2V0QmFz
ZShlbmQpOworICAgICAgICBtX3NlbGVjdGlvbi5zZXRFeHRlbnQoc3RhcnQpOworICAgICAgICBi
cmVhazsKICAgICB9CiB9CiAKQEAgLTMwMiwyNyArMzAyLDI3IEBAIFZpc2libGVQb3NpdGlvbiBT
ZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnlFeHRlbmRpbmdSaWdodChUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsCiAgICAgLy8gaXQgZXh0ZW5kcyBmb3J3YXJkIGxvZ2ljYWxseSBpZiB0aGUgZW5jbG9z
aW5nIGJsb2NrIGlzIExUUiBkaXJlY3Rpb24sCiAgICAgLy8gYnV0IGl0IGV4dGVuZHMgYmFja3dh
cmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxvY2sgaXMgUlRMIGRpcmVjdGlvbi4KICAg
ICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJp
dHk6Ci0gICAgICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUikK
LSAgICAgICAgICAgICAgICBwb3MgPSBwb3MubmV4dCh0cnVlKTsgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKHRydWUp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAg
ICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpCi0gICAgICAg
ICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbihwb3MpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcyk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAgICAgICBj
YXNlIExpbmVHcmFudWxhcml0eToKLSAgICAgICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToK
LSAgICAgICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgICAgICBjYXNlIExpbmVCb3VuZGFy
eToKLSAgICAgICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICAgICAgY2FzZSBEb2N1bWVu
dEJvdW5kYXJ5OgotICAgICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBhbGwgb2YgdGhlIGFi
b3ZlPwotICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFudWxhcml0
eSk7CisgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICAgICAgaWYgKGRpcmVjdGlv
bk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpCisgICAgICAgICAgICBwb3MgPSBwb3MubmV4dCh0
cnVlKTsgICAgICAgICAgICAgICAgCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBvcyA9IHBv
cy5wcmV2aW91cyh0cnVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXb3JkR3JhbnVsYXJp
dHk6CisgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKQorICAg
ICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbihwb3MpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6
CisgICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFNlbnRlbmNlQm91bmRh
cnk6CisgICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToK
KyAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQg
YWxsIG9mIHRoZSBhYm92ZT8KKyAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChn
cmFudWxhcml0eSk7CiAgICAgfQogICAgIHJldHVybiBwb3M7CiB9CkBAIC0zMzEsMzcgKzMzMSwz
NyBAQCBWaXNpYmxlUG9zaXRpb24gU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5RXh0ZW5kaW5n
Rm9yd2FyZChUZXh0R3JhbnVsYXJpdHkgZ3JhbgogewogICAgIFZpc2libGVQb3NpdGlvbiBwb3Mo
bV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgIHN3aXRj
aCAoZ3JhbnVsYXJpdHkpIHsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKLSAg
ICAgICAgICAgIHBvcyA9IHBvcy5uZXh0KHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAgICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3Np
dGlvbihwb3MpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2VudGVuY2VHcmFu
dWxhcml0eToKLSAgICAgICAgICAgIHBvcyA9IG5leHRTZW50ZW5jZVBvc2l0aW9uKHBvcyk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6Ci0gICAgICAg
ICAgICBwb3MgPSBuZXh0TGluZVBvc2l0aW9uKHBvcywgeFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZp
Z2F0aW9uKEVYVEVOVCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGFyYWdy
YXBoR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBwb3MgPSBuZXh0UGFyYWdyYXBoUG9zaXRpb24o
cG9zLCB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oRVhURU5UKSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgICAgICAgICAgcG9z
ID0gZW5kT2ZTZW50ZW5jZShlbmRGb3JQbGF0Zm9ybSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIExpbmVCb3VuZGFyeToKLSAgICAgICAgICAgIHBvcyA9IGxvZ2ljYWxFbmRP
ZkxpbmUoZW5kRm9yUGxhdGZvcm0oKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICAgICAgICAgIHBvcyA9IGVuZE9mUGFyYWdyYXBoKGVu
ZEZvclBsYXRmb3JtKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRG9jdW1l
bnRCb3VuZGFyeToKLSAgICAgICAgICAgIHBvcyA9IGVuZEZvclBsYXRmb3JtKCk7Ci0gICAgICAg
ICAgICBpZiAoaXNFZGl0YWJsZVBvc2l0aW9uKHBvcy5kZWVwRXF1aXZhbGVudCgpKSkKLSAgICAg
ICAgICAgICAgICBwb3MgPSBlbmRPZkVkaXRhYmxlQ29udGVudChwb3MpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIHBvcyA9IGVuZE9mRG9jdW1lbnQocG9zKTsKLSAgICAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6CisgICAgICAgIHBvcyA9
IHBvcy5uZXh0KHRydWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdvcmRHcmFudWxhcml0
eToKKyAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbihwb3MpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgICAgIHBvcyA9IG5leHRTZW50ZW5j
ZVBvc2l0aW9uKHBvcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGluZUdyYW51bGFyaXR5
OgorICAgICAgICBwb3MgPSBuZXh0TGluZVBvc2l0aW9uKHBvcywgeFBvc0ZvclZlcnRpY2FsQXJy
b3dOYXZpZ2F0aW9uKEVYVEVOVCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBhcmFncmFw
aEdyYW51bGFyaXR5OgorICAgICAgICBwb3MgPSBuZXh0UGFyYWdyYXBoUG9zaXRpb24ocG9zLCB4
UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oRVhURU5UKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKKyAgICAgICAgcG9zID0gZW5kT2ZTZW50ZW5jZShl
bmRGb3JQbGF0Zm9ybSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaW5lQm91bmRhcnk6
CisgICAgICAgIHBvcyA9IGxvZ2ljYWxFbmRPZkxpbmUoZW5kRm9yUGxhdGZvcm0oKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CisgICAgICAgIHBvcyA9IGVu
ZE9mUGFyYWdyYXBoKGVuZEZvclBsYXRmb3JtKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IERvY3VtZW50Qm91bmRhcnk6CisgICAgICAgIHBvcyA9IGVuZEZvclBsYXRmb3JtKCk7CisgICAg
ICAgIGlmIChpc0VkaXRhYmxlUG9zaXRpb24ocG9zLmRlZXBFcXVpdmFsZW50KCkpKQorICAgICAg
ICAgICAgcG9zID0gZW5kT2ZFZGl0YWJsZUNvbnRlbnQocG9zKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcG9zID0gZW5kT2ZEb2N1bWVudChwb3MpOworICAgICAgICBicmVhazsKICAgICB9
CiAgICAgCiAgICAgcmV0dXJuIHBvczsKQEAgLTM3MSwyMyArMzcxLDIzIEBAIFZpc2libGVQb3Np
dGlvbiBTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnlNb3ZpbmdSaWdodChUZXh0R3JhbnVsYXJp
dHkgZ3JhbnVsYXJpCiB7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICBzd2l0Y2ggKGdy
YW51bGFyaXR5KSB7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6Ci0gICAgICAg
ICAgICBpZiAoaXNSYW5nZSgpKSAKLSAgICAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRp
b24obV9zZWxlY3Rpb24uZW5kKCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlv
bi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkucmlnaHQodHJ1ZSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgICAgIGNhc2Ug
U2VudGVuY2VHcmFudWxhcml0eToKLSAgICAgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6Ci0gICAg
ICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgICAgIGNhc2UgU2VudGVuY2VCb3Vu
ZGFyeToKLSAgICAgICAgY2FzZSBMaW5lQm91bmRhcnk6Ci0gICAgICAgIGNhc2UgUGFyYWdyYXBo
Qm91bmRhcnk6Ci0gICAgICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgYWxsIG9mIHRoZSBhYm92ZS4KLSAgICAgICAgICAgIHBvcyA9IG1v
ZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOwotICAgICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICAgICAgaWYgKGlzUmFuZ2UoKSkgCisgICAg
ICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZW5kKCksIG1fc2VsZWN0
aW9uLmFmZmluaXR5KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwb3MgPSBWaXNpYmxl
UG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLnJp
Z2h0KHRydWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAg
ICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6Cisg
ICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6
CisgICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKKyAg
ICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgYWxs
IG9mIHRoZSBhYm92ZS4KKyAgICAgICAgcG9zID0gbW9kaWZ5TW92aW5nRm9yd2FyZChncmFudWxh
cml0eSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gcG9zOwogfQpAQCAtMzk3
LDQ2ICszOTcsNDYgQEAgVmlzaWJsZVBvc2l0aW9uIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlm
eU1vdmluZ0ZvcndhcmQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGEKICAgICBWaXNpYmxlUG9zaXRp
b24gcG9zOwogICAgIC8vIEZJWE1FOiBTdGF5IGluIGVkaXRhYmxlIGNvbnRlbnQgZm9yIHRoZSBs
ZXNzIGNvbW1vbiBncmFudWxhcml0aWVzLgogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAg
ICAgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKLSAgICAgICAgICAgIGlmIChpc1Jhbmdl
KCkpIAotICAgICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5l
bmQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3Nl
bGVjdGlvbi5hZmZpbml0eSgpKS5uZXh0KHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAgICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3Np
dGlvbihWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFm
ZmluaXR5KCkpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNlbnRlbmNlR3Jh
bnVsYXJpdHk6Ci0gICAgICAgICAgICBwb3MgPSBuZXh0U2VudGVuY2VQb3NpdGlvbihWaXNpYmxl
UG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIExpbmVHcmFudWxhcml0eTogewotICAg
ICAgICAgICAgLy8gZG93bi1hcnJvd2luZyBmcm9tIGEgcmFuZ2Ugc2VsZWN0aW9uIHRoYXQgZW5k
cyBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lIG5lZWRzCi0gICAgICAgICAgICAvLyB0byBsZWF2ZSB0
aGUgc2VsZWN0aW9uIGF0IHRoYXQgbGluZSBzdGFydCAobm8gbmVlZCB0byBjYWxsIG5leHRMaW5l
UG9zaXRpb24hKQotICAgICAgICAgICAgcG9zID0gZW5kRm9yUGxhdGZvcm0oKTsKLSAgICAgICAg
ICAgIGlmICghaXNSYW5nZSgpIHx8ICFpc1N0YXJ0T2ZMaW5lKHBvcykpCi0gICAgICAgICAgICAg
ICAgcG9zID0gbmV4dExpbmVQb3NpdGlvbihwb3MsIHhQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdh
dGlvbihTVEFSVCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICAgICAgICAgIHBvcyA9IG5leHRQYXJhZ3JhcGhQ
b3NpdGlvbihlbmRGb3JQbGF0Zm9ybSgpLCB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24o
U1RBUlQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNlbnRlbmNlQm91bmRh
cnk6Ci0gICAgICAgICAgICBwb3MgPSBlbmRPZlNlbnRlbmNlKGVuZEZvclBsYXRmb3JtKCkpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTGluZUJvdW5kYXJ5OgotICAgICAgICAg
ICAgcG9zID0gbG9naWNhbEVuZE9mTGluZShlbmRGb3JQbGF0Zm9ybSgpKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgotICAgICAgICAgICAgcG9z
ID0gZW5kT2ZQYXJhZ3JhcGgoZW5kRm9yUGxhdGZvcm0oKSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgotICAgICAgICAgICAgcG9zID0gZW5kRm9y
UGxhdGZvcm0oKTsKLSAgICAgICAgICAgIGlmIChpc0VkaXRhYmxlUG9zaXRpb24ocG9zLmRlZXBF
cXVpdmFsZW50KCkpKQotICAgICAgICAgICAgICAgIHBvcyA9IGVuZE9mRWRpdGFibGVDb250ZW50
KHBvcyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcG9zID0gZW5kT2ZEb2N1
bWVudChwb3MpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKKyAgICBjYXNlIENo
YXJhY3RlckdyYW51bGFyaXR5OgorICAgICAgICBpZiAoaXNSYW5nZSgpKSAKKyAgICAgICAgICAg
IHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5lbmQoKSwgbV9zZWxlY3Rpb24uYWZm
aW5pdHkoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlv
bihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkubmV4dCh0cnVl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgICAgIHBv
cyA9IG5leHRXb3JkUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgp
LCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2Vu
dGVuY2VHcmFudWxhcml0eToKKyAgICAgICAgcG9zID0gbmV4dFNlbnRlbmNlUG9zaXRpb24oVmlz
aWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgp
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OiB7CisgICAgICAg
IC8vIGRvd24tYXJyb3dpbmcgZnJvbSBhIHJhbmdlIHNlbGVjdGlvbiB0aGF0IGVuZHMgYXQgdGhl
IHN0YXJ0IG9mIGEgbGluZSBuZWVkcworICAgICAgICAvLyB0byBsZWF2ZSB0aGUgc2VsZWN0aW9u
IGF0IHRoYXQgbGluZSBzdGFydCAobm8gbmVlZCB0byBjYWxsIG5leHRMaW5lUG9zaXRpb24hKQor
ICAgICAgICBwb3MgPSBlbmRGb3JQbGF0Zm9ybSgpOworICAgICAgICBpZiAoIWlzUmFuZ2UoKSB8
fCAhaXNTdGFydE9mTGluZShwb3MpKQorICAgICAgICAgICAgcG9zID0gbmV4dExpbmVQb3NpdGlv
bihwb3MsIHhQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbihTVEFSVCkpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICAgICAgcG9z
ID0gbmV4dFBhcmFncmFwaFBvc2l0aW9uKGVuZEZvclBsYXRmb3JtKCksIHhQb3NGb3JWZXJ0aWNh
bEFycm93TmF2aWdhdGlvbihTVEFSVCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNlbnRl
bmNlQm91bmRhcnk6CisgICAgICAgIHBvcyA9IGVuZE9mU2VudGVuY2UoZW5kRm9yUGxhdGZvcm0o
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgICAgICBwb3Mg
PSBsb2dpY2FsRW5kT2ZMaW5lKGVuZEZvclBsYXRmb3JtKCkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgorICAgICAgICBwb3MgPSBlbmRPZlBhcmFncmFwaChl
bmRGb3JQbGF0Zm9ybSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEb2N1bWVudEJvdW5k
YXJ5OgorICAgICAgICBwb3MgPSBlbmRGb3JQbGF0Zm9ybSgpOworICAgICAgICBpZiAoaXNFZGl0
YWJsZVBvc2l0aW9uKHBvcy5kZWVwRXF1aXZhbGVudCgpKSkKKyAgICAgICAgICAgIHBvcyA9IGVu
ZE9mRWRpdGFibGVDb250ZW50KHBvcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBvcyA9
IGVuZE9mRG9jdW1lbnQocG9zKTsKKyAgICAgICAgYnJlYWs7CisKICAgICB9CiAgICAgcmV0dXJu
IHBvczsKIH0KQEAgLTQ1MSwyNiArNDUxLDI2IEBAIFZpc2libGVQb3NpdGlvbiBTZWxlY3Rpb25D
b250cm9sbGVyOjptb2RpZnlFeHRlbmRpbmdMZWZ0KFRleHRHcmFudWxhcml0eSBncmFudWxhCiAg
ICAgLy8gaXQgZXh0ZW5kcyBiYWNrd2FyZCBsb2dpY2FsbHkgaWYgdGhlIGVuY2xvc2luZyBibG9j
ayBpcyBMVFIgZGlyZWN0aW9uLAogICAgIC8vIGJ1dCBpdCBleHRlbmRzIGZvcndhcmQgbG9naWNh
bGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxvY2sgaXMgUlRMIGRpcmVjdGlvbi4KICAgICBzd2l0Y2gg
KGdyYW51bGFyaXR5KSB7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6Ci0gICAg
ICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUikKLSAgICAgICAg
ICAgICAgICBwb3MgPSBwb3MucHJldmlvdXModHJ1ZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcG9zID0gcG9zLm5leHQodHJ1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBpZiAoZGlyZWN0aW9uT2ZF
bmNsb3NpbmdCbG9jaygpID09IExUUikKLSAgICAgICAgICAgICAgICBwb3MgPSBwcmV2aW91c1dv
cmRQb3NpdGlvbihwb3MpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBvcyA9
IG5leHRXb3JkUG9zaXRpb24ocG9zKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAg
ICAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAgICAgICBjYXNlIFNlbnRlbmNlQm91
bmRhcnk6Ci0gICAgICAgIGNhc2UgTGluZUJvdW5kYXJ5OgotICAgICAgICBjYXNlIFBhcmFncmFw
aEJvdW5kYXJ5OgotICAgICAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6Ci0gICAgICAgICAgICBw
b3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSk7CisgICAgY2FzZSBDaGFy
YWN0ZXJHcmFudWxhcml0eToKKyAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2so
KSA9PSBMVFIpCisgICAgICAgICAgICBwb3MgPSBwb3MucHJldmlvdXModHJ1ZSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHBvcyA9IHBvcy5uZXh0KHRydWUpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9z
aW5nQmxvY2soKSA9PSBMVFIpCisgICAgICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlv
bihwb3MpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9u
KHBvcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKKyAg
ICBjYXNlIExpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5Ogor
ICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKKyAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBj
YXNlIFBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICAg
ICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwogICAgIH0KICAg
ICByZXR1cm4gcG9zOwogfQpAQCAtNDg0LDM3ICs0ODQsMzcgQEAgVmlzaWJsZVBvc2l0aW9uIFNl
bGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKFRleHRHcmFudWxhcml0
eSBncmEKICAgICAvLyBJdCB3YXMgZG9uZSBoZXJlIGluc3RlYWQgb2YgaW4gVmlzaWJsZVBvc2l0
aW9uIGJlY2F1c2Ugd2Ugd2FudCBWUHMgdG8gaXRlcmF0ZQogICAgIC8vIG92ZXIgZXZlcnl0aGlu
Zy4KICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHk6Ci0gICAgICAgICAgICBwb3MgPSBwb3MucHJldmlvdXModHJ1ZSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBw
b3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKLSAgICAgICAgICAgIHBvcyA9IHByZXZpb3Vz
U2VudGVuY2VQb3NpdGlvbihwb3MpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
TGluZUdyYW51bGFyaXR5OgotICAgICAgICAgICAgcG9zID0gcHJldmlvdXNMaW5lUG9zaXRpb24o
cG9zLCB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oRVhURU5UKSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICAgICAgICAg
IHBvcyA9IHByZXZpb3VzUGFyYWdyYXBoUG9zaXRpb24ocG9zLCB4UG9zRm9yVmVydGljYWxBcnJv
d05hdmlnYXRpb24oRVhURU5UKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBT
ZW50ZW5jZUJvdW5kYXJ5OgotICAgICAgICAgICAgcG9zID0gc3RhcnRPZlNlbnRlbmNlKHN0YXJ0
Rm9yUGxhdGZvcm0oKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBMaW5lQm91
bmRhcnk6Ci0gICAgICAgICAgICBwb3MgPSBsb2dpY2FsU3RhcnRPZkxpbmUoc3RhcnRGb3JQbGF0
Zm9ybSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBhcmFncmFwaEJvdW5k
YXJ5OgotICAgICAgICAgICAgcG9zID0gc3RhcnRPZlBhcmFncmFwaChzdGFydEZvclBsYXRmb3Jt
KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToK
LSAgICAgICAgICAgIHBvcyA9IHN0YXJ0Rm9yUGxhdGZvcm0oKTsKLSAgICAgICAgICAgIGlmIChp
c0VkaXRhYmxlUG9zaXRpb24ocG9zLmRlZXBFcXVpdmFsZW50KCkpKQotICAgICAgICAgICAgICAg
IHBvcyA9IHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQocG9zKTsKLSAgICAgICAgICAgIGVsc2UgCi0g
ICAgICAgICAgICAgICAgcG9zID0gc3RhcnRPZkRvY3VtZW50KHBvcyk7Ci0gICAgICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgICAgICBwb3MgPSBwb3Mu
cHJldmlvdXModHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV29yZEdyYW51bGFyaXR5
OgorICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgICAgIHBvcyA9IHByZXZpb3Vz
U2VudGVuY2VQb3NpdGlvbihwb3MpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpbmVHcmFu
dWxhcml0eToKKyAgICAgICAgcG9zID0gcHJldmlvdXNMaW5lUG9zaXRpb24ocG9zLCB4UG9zRm9y
VmVydGljYWxBcnJvd05hdmlnYXRpb24oRVhURU5UKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgICAgIHBvcyA9IHByZXZpb3VzUGFyYWdyYXBo
UG9zaXRpb24ocG9zLCB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oRVhURU5UKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKKyAgICAgICAgcG9zID0g
c3RhcnRPZlNlbnRlbmNlKHN0YXJ0Rm9yUGxhdGZvcm0oKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgTGluZUJvdW5kYXJ5OgorICAgICAgICBwb3MgPSBsb2dpY2FsU3RhcnRPZkxpbmUoc3Rh
cnRGb3JQbGF0Zm9ybSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQYXJhZ3JhcGhCb3Vu
ZGFyeToKKyAgICAgICAgcG9zID0gc3RhcnRPZlBhcmFncmFwaChzdGFydEZvclBsYXRmb3JtKCkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgICAgIHBv
cyA9IHN0YXJ0Rm9yUGxhdGZvcm0oKTsKKyAgICAgICAgaWYgKGlzRWRpdGFibGVQb3NpdGlvbihw
b3MuZGVlcEVxdWl2YWxlbnQoKSkpCisgICAgICAgICAgICBwb3MgPSBzdGFydE9mRWRpdGFibGVD
b250ZW50KHBvcyk7CisgICAgICAgIGVsc2UgCisgICAgICAgICAgICBwb3MgPSBzdGFydE9mRG9j
dW1lbnQocG9zKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBwb3M7CiB9CkBA
IC01MjMsMjMgKzUyMywyMyBAQCBWaXNpYmxlUG9zaXRpb24gU2VsZWN0aW9uQ29udHJvbGxlcjo6
bW9kaWZ5TW92aW5nTGVmdChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdAogewogICAgIFZpc2li
bGVQb3NpdGlvbiBwb3M7CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgICAgICBjYXNl
IENoYXJhY3RlckdyYW51bGFyaXR5OgotICAgICAgICAgICAgaWYgKGlzUmFuZ2UoKSkgCi0gICAg
ICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLnN0YXJ0KCksIG1f
c2VsZWN0aW9uLmFmZmluaXR5KCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24u
YWZmaW5pdHkoKSkubGVmdCh0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFdvcmRHcmFudWxhcml0eToKLSAgICAgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAg
ICAgICBjYXNlIExpbmVHcmFudWxhcml0eToKLSAgICAgICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxh
cml0eToKLSAgICAgICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgICAgICBjYXNlIExpbmVC
b3VuZGFyeToKLSAgICAgICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICAgICAgY2FzZSBE
b2N1bWVudEJvdW5kYXJ5OgotICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBhbGwgb2Yg
dGhlIGFib3ZlLgotICAgICAgICAgICAgcG9zID0gbW9kaWZ5TW92aW5nQmFja3dhcmQoZ3JhbnVs
YXJpdHkpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0
eToKKyAgICAgICAgaWYgKGlzUmFuZ2UoKSkgCisgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9z
aXRpb24obV9zZWxlY3Rpb24uc3RhcnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5l
eHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkubGVmdCh0cnVlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFy
aXR5OgorICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVs
YXJpdHk6CisgICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgTGluZUJvdW5kYXJ5
OgorICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5
OgorICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbCBvZiB0aGUgYWJvdmUuCisgICAgICAg
IHBvcyA9IG1vZGlmeU1vdmluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIHJldHVybiBwb3M7CiB9CkBAIC01NDgsNDAgKzU0OCw0MCBAQCBWaXNpYmxl
UG9zaXRpb24gU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5TW92aW5nQmFja3dhcmQoVGV4dEdy
YW51bGFyaXR5IGdyYW51bAogewogICAgIFZpc2libGVQb3NpdGlvbiBwb3M7CiAgICAgc3dpdGNo
IChncmFudWxhcml0eSkgewotICAgICAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgotICAg
ICAgICAgICAgaWYgKGlzUmFuZ2UoKSkgCi0gICAgICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBv
c2l0aW9uKG1fc2VsZWN0aW9uLnN0YXJ0KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3Nl
bGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkucHJldmlvdXModHJ1ZSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAg
ICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihWaXNpYmxlUG9zaXRpb24obV9zZWxl
Y3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBwb3Mg
PSBwcmV2aW91c1NlbnRlbmNlUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4
dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBwb3MgPSBwcmV2aW91c0xp
bmVQb3NpdGlvbihzdGFydEZvclBsYXRmb3JtKCksIHhQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdh
dGlvbihTVEFSVCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGFyYWdyYXBo
R3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBwb3MgPSBwcmV2aW91c1BhcmFncmFwaFBvc2l0aW9u
KHN0YXJ0Rm9yUGxhdGZvcm0oKSwgeFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKFNUQVJU
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5Ogot
ICAgICAgICAgICAgcG9zID0gc3RhcnRPZlNlbnRlbmNlKHN0YXJ0Rm9yUGxhdGZvcm0oKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBMaW5lQm91bmRhcnk6Ci0gICAgICAgICAg
ICBwb3MgPSBsb2dpY2FsU3RhcnRPZkxpbmUoc3RhcnRGb3JQbGF0Zm9ybSgpKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgotICAgICAgICAgICAg
cG9zID0gc3RhcnRPZlBhcmFncmFwaChzdGFydEZvclBsYXRmb3JtKCkpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKLSAgICAgICAgICAgIHBvcyA9
IHN0YXJ0Rm9yUGxhdGZvcm0oKTsKLSAgICAgICAgICAgIGlmIChpc0VkaXRhYmxlUG9zaXRpb24o
cG9zLmRlZXBFcXVpdmFsZW50KCkpKQotICAgICAgICAgICAgICAgIHBvcyA9IHN0YXJ0T2ZFZGl0
YWJsZUNvbnRlbnQocG9zKTsKLSAgICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICAgICAgcG9z
ID0gc3RhcnRPZkRvY3VtZW50KHBvcyk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENo
YXJhY3RlckdyYW51bGFyaXR5OgorICAgICAgICBpZiAoaXNSYW5nZSgpKSAKKyAgICAgICAgICAg
IHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5zdGFydCgpLCBtX3NlbGVjdGlvbi5h
ZmZpbml0eSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0
aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKS5wcmV2aW91
cyh0cnVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAg
ICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlv
bi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgICAgIHBvcyA9IHByZXZpb3VzU2VudGVu
Y2VQb3NpdGlvbihWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0
aW9uLmFmZmluaXR5KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaW5lR3JhbnVsYXJp
dHk6CisgICAgICAgIHBvcyA9IHByZXZpb3VzTGluZVBvc2l0aW9uKHN0YXJ0Rm9yUGxhdGZvcm0o
KSwgeFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKFNUQVJUKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgICAgIHBvcyA9IHByZXZpb3Vz
UGFyYWdyYXBoUG9zaXRpb24oc3RhcnRGb3JQbGF0Zm9ybSgpLCB4UG9zRm9yVmVydGljYWxBcnJv
d05hdmlnYXRpb24oU1RBUlQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTZW50ZW5jZUJv
dW5kYXJ5OgorICAgICAgICBwb3MgPSBzdGFydE9mU2VudGVuY2Uoc3RhcnRGb3JQbGF0Zm9ybSgp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAgICAgIHBvcyA9
IGxvZ2ljYWxTdGFydE9mTGluZShzdGFydEZvclBsYXRmb3JtKCkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgorICAgICAgICBwb3MgPSBzdGFydE9mUGFyYWdy
YXBoKHN0YXJ0Rm9yUGxhdGZvcm0oKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRG9jdW1l
bnRCb3VuZGFyeToKKyAgICAgICAgcG9zID0gc3RhcnRGb3JQbGF0Zm9ybSgpOworICAgICAgICBp
ZiAoaXNFZGl0YWJsZVBvc2l0aW9uKHBvcy5kZWVwRXF1aXZhbGVudCgpKSkKKyAgICAgICAgICAg
IHBvcyA9IHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQocG9zKTsKKyAgICAgICAgZWxzZSAKKyAgICAg
ICAgICAgIHBvcyA9IHN0YXJ0T2ZEb2N1bWVudChwb3MpOworICAgICAgICBicmVhazsKICAgICB9
CiAgICAgcmV0dXJuIHBvczsKIH0KQEAgLTYwNiwzMCArNjA2LDMwIEBAIGJvb2wgU2VsZWN0aW9u
Q29udHJvbGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpciwgVGV4
dEdyYW51bGFyCiAKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zOwogICAgIHN3aXRjaCAoZGlyKSB7
Ci0gICAgICAgIGNhc2UgUklHSFQ6Ci0gICAgICAgICAgICBpZiAoYWx0ZXIgPT0gTU9WRSkKLSAg
ICAgICAgICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdSaWdodChncmFudWxhcml0eSk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nUmlnaHQo
Z3JhbnVsYXJpdHkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRk9SV0FSRDoK
LSAgICAgICAgICAgIGlmIChhbHRlciA9PSBFWFRFTkQpCi0gICAgICAgICAgICAgICAgcG9zID0g
bW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFudWxhcml0eSk7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgcG9zID0gbW9kaWZ5TW92aW5nRm9yd2FyZChncmFudWxhcml0eSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBMRUZUOgotICAgICAgICAgICAgaWYgKGFs
dGVyID09IE1PVkUpCi0gICAgICAgICAgICAgICAgcG9zID0gbW9kaWZ5TW92aW5nTGVmdChncmFu
dWxhcml0eSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcG9zID0gbW9kaWZ5
RXh0ZW5kaW5nTGVmdChncmFudWxhcml0eSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBCQUNLV0FSRDoKLSAgICAgICAgICAgIGlmIChhbHRlciA9PSBFWFRFTkQpCi0gICAgICAg
ICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0JhY2t3YXJk
KGdyYW51bGFyaXR5KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgRGlyZWN0aW9uUmln
aHQ6CisgICAgICAgIGlmIChhbHRlciA9PSBBbHRlcmF0aW9uTW92ZSkKKyAgICAgICAgICAgIHBv
cyA9IG1vZGlmeU1vdmluZ1JpZ2h0KGdyYW51bGFyaXR5KTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nUmlnaHQoZ3JhbnVsYXJpdHkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIERpcmVjdGlvbkZvcndhcmQ6CisgICAgICAgIGlmIChhbHRlciA9PSBB
bHRlcmF0aW9uRXh0ZW5kKQorICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2Fy
ZChncmFudWxhcml0eSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBvcyA9IG1vZGlmeU1v
dmluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIERpcmVj
dGlvbkxlZnQ6CisgICAgICAgIGlmIChhbHRlciA9PSBBbHRlcmF0aW9uTW92ZSkKKyAgICAgICAg
ICAgIHBvcyA9IG1vZGlmeU1vdmluZ0xlZnQoZ3JhbnVsYXJpdHkpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdMZWZ0KGdyYW51bGFyaXR5KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBEaXJlY3Rpb25CYWNrd2FyZDoKKyAgICAgICAgaWYgKGFsdGVy
ID09IEFsdGVyYXRpb25FeHRlbmQpCisgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdC
YWNrd2FyZChncmFudWxhcml0eSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBvcyA9IG1v
ZGlmeU1vdmluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQog
CiAgICAgaWYgKHBvcy5pc051bGwoKSkKQEAgLTY0MiwxMiArNjQyLDEyIEBAIGJvb2wgU2VsZWN0
aW9uQ29udHJvbGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpciwg
VGV4dEdyYW51bGFyCiAgICAgaW50IHggPSB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24o
U1RBUlQpOwogCiAgICAgc3dpdGNoIChhbHRlcikgewotICAgICAgICBjYXNlIE1PVkU6Ci0gICAg
ICAgICAgICBtb3ZlVG8ocG9zLCB1c2VyVHJpZ2dlcmVkKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEVYVEVORDoKLSAgICAgICAgICAgIHNldEV4dGVudChwb3MsIHVzZXJUcmln
Z2VyZWQpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbHRlcmF0aW9uTW92ZToKKyAg
ICAgICAgbW92ZVRvKHBvcywgdXNlclRyaWdnZXJlZCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQWx0ZXJhdGlvbkV4dGVuZDoKKyAgICAgICAgc2V0RXh0ZW50KHBvcywgdXNlclRyaWdnZXJl
ZCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0g
TGluZUdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IFBhcmFncmFwaEdyYW51bGFyaXR5KQpA
QCAtNjU4LDEzICs2NTgsMTMgQEAgYm9vbCBTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnkoRUFs
dGVyYXRpb24gYWx0ZXIsIEVEaXJlY3Rpb24gZGlyLCBUZXh0R3JhbnVsYXIKICAgICAgICAgLy8g
Tk9URTogVGhlIG9uZSBleGNlcHRpb24gaXMgdGhhdCB3ZSBuZWVkIHRvIGtlZXAgd29yZCBncmFu
dWxhcml0eSB0bwogICAgICAgICAvLyBwcmVzZXJ2ZSBzbWFydCBkZWxldGUgYmVoYXZpb3Igd2hl
biBleHRlbmRpbmcgYnkgd29yZCAoZS5nLiBkb3VibGUtY2xpY2spLAogICAgICAgICAvLyB0aGVu
IHNoaWZ0LW9wdGlvbi1yaWdodCBhcnJvdywgdGhlbiBkZWxldGUgbmVlZHMgdG8gc21hcnQgZGVs
ZXRlLCBwZXIgVGV4dEVkaXQuCi0gICAgICAgIGlmICghKGFsdGVyID09IEVYVEVORCAmJiBncmFu
dWxhcml0eSA9PSBXb3JkR3JhbnVsYXJpdHkgJiYgbV9mcmFtZS0+c2VsZWN0aW9uR3JhbnVsYXJp
dHkoKSA9PSBXb3JkR3JhbnVsYXJpdHkpKQorICAgICAgICBpZiAoIShhbHRlciA9PSBBbHRlcmF0
aW9uRXh0ZW5kICYmIGdyYW51bGFyaXR5ID09IFdvcmRHcmFudWxhcml0eSAmJiBtX2ZyYW1lLT5z
ZWxlY3Rpb25HcmFudWxhcml0eSgpID09IFdvcmRHcmFudWxhcml0eSkpCiAgICAgICAgICAgICBt
X2ZyYW1lLT5zZXRTZWxlY3Rpb25HcmFudWxhcml0eShDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAg
ICAgfQogCiAgICAgc2V0TmVlZHNMYXlvdXQoKTsKIAotICAgIG1fbGFzdENoYW5nZVdhc0hvcml6
b250YWxFeHRlbnNpb24gPSBhbHRlciA9PSBFWFRFTkQ7CisgICAgbV9sYXN0Q2hhbmdlV2FzSG9y
aXpvbnRhbEV4dGVuc2lvbiA9IGFsdGVyID09IEFsdGVyYXRpb25FeHRlbmQ7CiAKICAgICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTY4MSw3ICs2ODEsNyBAQCBzdGF0aWMgYm9vbCBhYnNvbHV0ZUNhcmV0
WShjb25zdCBWaXNpYmxlUG9zaXRpb24gJmMsIGludCAmeSkKIAogYm9vbCBTZWxlY3Rpb25Db250
cm9sbGVyOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0ZXIsIGludCB2ZXJ0aWNhbERpc3RhbmNlLCBi
b29sIHVzZXJUcmlnZ2VyZWQpCiB7Ci0gICAgaWYgKHZlcnRpY2FsRGlzdGFuY2UgPT0gMCkKKyAg
ICBpZiAoIXZlcnRpY2FsRGlzdGFuY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
ICh1c2VyVHJpZ2dlcmVkKSB7CkBAIC02OTksMjEgKzY5OSwyMSBAQCBib29sIFNlbGVjdGlvbkNv
bnRyb2xsZXI6Om1vZGlmeShFQWx0ZXJhdGlvbiBhbHRlciwgaW50IHZlcnRpY2FsRGlzdGFuY2Us
IGJvb2wgdQogICAgIGlmICh1cCkKICAgICAgICAgdmVydGljYWxEaXN0YW5jZSA9IC12ZXJ0aWNh
bERpc3RhbmNlOwogCi0gICAgd2lsbEJlTW9kaWZpZWQoYWx0ZXIsIHVwID8gQkFDS1dBUkQgOiBG
T1JXQVJEKTsKKyAgICB3aWxsQmVNb2RpZmllZChhbHRlciwgdXAgPyBEaXJlY3Rpb25CYWNrd2Fy
ZCA6IERpcmVjdGlvbkZvcndhcmQpOwogCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICBp
bnQgeFBvcyA9IDA7CiAgICAgc3dpdGNoIChhbHRlcikgewotICAgICAgICBjYXNlIE1PVkU6Ci0g
ICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24odXAgPyBtX3NlbGVjdGlvbi5zdGFydCgp
IDogbV9zZWxlY3Rpb24uZW5kKCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwotICAgICAgICAg
ICAgeFBvcyA9IHhQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbih1cCA/IFNUQVJUIDogRU5E
KTsKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uLnNldEFmZmluaXR5KHVwID8gVVBTVFJFQU0gOiBE
T1dOU1RSRUFNKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVYVEVORDoKLSAg
ICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9z
ZWxlY3Rpb24uYWZmaW5pdHkoKSk7Ci0gICAgICAgICAgICB4UG9zID0geFBvc0ZvclZlcnRpY2Fs
QXJyb3dOYXZpZ2F0aW9uKEVYVEVOVCk7Ci0gICAgICAgICAgICBtX3NlbGVjdGlvbi5zZXRBZmZp
bml0eShET1dOU1RSRUFNKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWx0ZXJhdGlv
bk1vdmU6CisgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbih1cCA/IG1fc2VsZWN0aW9uLnN0
YXJ0KCkgOiBtX3NlbGVjdGlvbi5lbmQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CisgICAg
ICAgIHhQb3MgPSB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24odXAgPyBTVEFSVCA6IEVO
RCk7CisgICAgICAgIG1fc2VsZWN0aW9uLnNldEFmZmluaXR5KHVwID8gVVBTVFJFQU0gOiBET1dO
U1RSRUFNKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbHRlcmF0aW9uRXh0ZW5kOgorICAg
ICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0
aW9uLmFmZmluaXR5KCkpOworICAgICAgICB4UG9zID0geFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZp
Z2F0aW9uKEVYVEVOVCk7CisgICAgICAgIG1fc2VsZWN0aW9uLnNldEFmZmluaXR5KERPV05TVFJF
QU0pOworICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpbnQgc3RhcnRZOwpAQCAtNzQ2LDE4
ICs3NDYsMTggQEAgYm9vbCBTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnkoRUFsdGVyYXRpb24g
YWx0ZXIsIGludCB2ZXJ0aWNhbERpc3RhbmNlLCBib29sIHUKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgc3dpdGNoIChhbHRlcikgewotICAgICAgICBjYXNlIE1PVkU6Ci0gICAgICAgICAg
ICBtb3ZlVG8ocmVzdWx0LCB1c2VyVHJpZ2dlcmVkKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEVYVEVORDoKLSAgICAgICAgICAgIHNldEV4dGVudChyZXN1bHQsIHVzZXJUcmln
Z2VyZWQpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbHRlcmF0aW9uTW92ZToKKyAg
ICAgICAgbW92ZVRvKHJlc3VsdCwgdXNlclRyaWdnZXJlZCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQWx0ZXJhdGlvbkV4dGVuZDoKKyAgICAgICAgc2V0RXh0ZW50KHJlc3VsdCwgdXNlclRy
aWdnZXJlZCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGlmICh1c2VyVHJpZ2dlcmVk
KQogICAgICAgICBtX2ZyYW1lLT5zZXRTZWxlY3Rpb25HcmFudWxhcml0eShDaGFyYWN0ZXJHcmFu
dWxhcml0eSk7CiAKLSAgICBtX2xhc3RDaGFuZ2VXYXNIb3Jpem9udGFsRXh0ZW5zaW9uID0gYWx0
ZXIgPT0gRVhURU5EOworICAgIG1fbGFzdENoYW5nZVdhc0hvcml6b250YWxFeHRlbnNpb24gPSBh
bHRlciA9PSBBbHRlcmF0aW9uRXh0ZW5kOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC03ODEs
MjEgKzc4MSwyMSBAQCBpbnQgU2VsZWN0aW9uQ29udHJvbGxlcjo6eFBvc0ZvclZlcnRpY2FsQXJy
b3dOYXZpZ2F0aW9uKEVQb3NpdGlvblR5cGUgdHlwZSkKIAogICAgIFBvc2l0aW9uIHBvczsKICAg
ICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBTVEFSVDoKLSAgICAgICAgICAgIHBvcyA9
IG1fc2VsZWN0aW9uLnN0YXJ0KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBF
TkQ6Ci0gICAgICAgICAgICBwb3MgPSBtX3NlbGVjdGlvbi5lbmQoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIEJBU0U6Ci0gICAgICAgICAgICBwb3MgPSBtX3NlbGVjdGlvbi5i
YXNlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFWFRFTlQ6Ci0gICAgICAg
ICAgICBwb3MgPSBtX3NlbGVjdGlvbi5leHRlbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgU1RBUlQ6CisgICAgICAgIHBvcyA9IG1fc2VsZWN0aW9uLnN0YXJ0KCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgRU5EOgorICAgICAgICBwb3MgPSBtX3NlbGVjdGlvbi5lbmQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCQVNFOgorICAgICAgICBwb3MgPSBtX3NlbGVjdGlv
bi5iYXNlKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRVhURU5UOgorICAgICAgICBwb3Mg
PSBtX3NlbGVjdGlvbi5leHRlbnQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgRnJh
bWUgKmZyYW1lID0gcG9zLm5vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBGcmFtZSog
ZnJhbWUgPSBwb3Mubm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybiB4OwogICAgICAgICAKQEAgLTgwNSw4ICs4MDUsNyBAQCBpbnQgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6eFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKEVQb3NpdGlv
blR5cGUgdHlwZSkKICAgICAgICAgLy8gYWZ0ZXIgdGhlIHNlbGVjdGlvbiBpcyBjcmVhdGVkIGFu
ZCBiZWZvcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuCiAgICAgICAgIHggPSB2aXNpYmxlUG9z
aXRpb24uaXNOb3ROdWxsKCkgPyB2aXNpYmxlUG9zaXRpb24ueE9mZnNldEZvclZlcnRpY2FsTmF2
aWdhdGlvbigpIDogMDsKICAgICAgICAgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24g
PSB4OwotICAgIH0KLSAgICBlbHNlCisgICAgfSBlbHNlCiAgICAgICAgIHggPSBtX3hQb3NGb3JW
ZXJ0aWNhbEFycm93TmF2aWdhdGlvbjsKICAgICAgICAgCiAgICAgcmV0dXJuIHg7CkBAIC0xMDQw
LDEyICsxMDM5LDExIEBAIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6cGFpbnRDYXJldChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGludCB0eCwgaW50IHR5LCBjCiB2b2lkIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OmRlYnVnUmVuZGVyZXIoUmVuZGVyT2JqZWN0ICpyLCBib29sIHNlbGVjdGVkKSBj
b25zdAogewogICAgIGlmIChyLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSkgewotICAgICAgICBF
bGVtZW50ICplbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCAqPihyLT5ub2RlKCkpOworICAg
ICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCAqPihyLT5ub2RlKCkp
OwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzJXNcbiIsIHNlbGVjdGVkID8gIj09PiAiIDog
IiAgICAiLCBlbGVtZW50LT5sb2NhbE5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAg
ICB9Ci0gICAgZWxzZSBpZiAoci0+aXNUZXh0KCkpIHsKKyAgICB9IGVsc2UgaWYgKHItPmlzVGV4
dCgpKSB7CiAgICAgICAgIFJlbmRlclRleHQqIHRleHRSZW5kZXJlciA9IHRvUmVuZGVyVGV4dChy
KTsKLSAgICAgICAgaWYgKHRleHRSZW5kZXJlci0+dGV4dExlbmd0aCgpID09IDAgfHwgIXRleHRS
ZW5kZXJlci0+Zmlyc3RUZXh0Qm94KCkpIHsKKyAgICAgICAgaWYgKCF0ZXh0UmVuZGVyZXItPnRl
eHRMZW5ndGgoKSB8fCAhdGV4dFJlbmRlcmVyLT5maXJzdFRleHRCb3goKSkgewogICAgICAgICAg
ICAgZnByaW50ZihzdGRlcnIsICIlcyN0ZXh0IChlbXB0eSlcbiIsIHNlbGVjdGVkID8gIj09PiAi
IDogIiAgICAiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTA2MSw3ICsx
MDU5LDcgQEAgdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpkZWJ1Z1JlbmRlcmVyKFJlbmRlck9i
amVjdCAqciwgYm9vbCBzZWxlY3RlZCkgY29uc3QKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBt
X3NlbGVjdGlvbi5lbmQoKS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaW50IHBvczsKLSAgICAgICAgICAgIElubGluZVRleHRCb3ggKmJv
eCA9IHRleHRSZW5kZXJlci0+ZmluZE5leHRJbmxpbmVUZXh0Qm94KG9mZnNldCwgcG9zKTsKKyAg
ICAgICAgICAgIElubGluZVRleHRCb3gqIGJveCA9IHRleHRSZW5kZXJlci0+ZmluZE5leHRJbmxp
bmVUZXh0Qm94KG9mZnNldCwgcG9zKTsKICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnN1YnN0cmlu
Zyhib3gtPnN0YXJ0KCksIGJveC0+bGVuKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBT
dHJpbmcgc2hvdzsKQEAgLTEwOTksOCArMTA5Nyw3IEBAIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxl
cjo6ZGVidWdSZW5kZXJlcihSZW5kZXJPYmplY3QgKnIsIGJvb2wgc2VsZWN0ZWQpIGNvbnN0CiAg
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNhcmV0OyBpKyspCiAgICAgICAgICAgICAg
ICAgZnByaW50ZihzdGRlcnIsICIgIik7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIl5c
biIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgaWYgKChpbnQpdGV4dC5sZW5ndGgoKSA+IG1heCkKICAgICAgICAgICAgICAgICB0ZXh0
ID0gdGV4dC5sZWZ0KG1heCAtIDMpICsgIi4uLiI7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oIGIvV2ViQ29yZS9lZGl0
aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaAppbmRleCA2ODQ5Y2I2Li4xMjk1NDAzIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUv
ZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgKQEAgLTM5LDEwICszOSwxMSBAQCBjbGFzcyBH
cmFwaGljc0NvbnRleHQ7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBWaXNpYmxlUG9zaXRp
b247CiAKKwogY2xhc3MgU2VsZWN0aW9uQ29udHJvbGxlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7
CiBwdWJsaWM6Ci0gICAgZW51bSBFQWx0ZXJhdGlvbiB7IE1PVkUsIEVYVEVORCB9OwotICAgIGVu
dW0gRURpcmVjdGlvbiB7IEZPUldBUkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVCB9OworICAgIGVu
dW0gRUFsdGVyYXRpb24geyBBbHRlcmF0aW9uTW92ZSwgQWx0ZXJhdGlvbkV4dGVuZCB9OworICAg
IGVudW0gRURpcmVjdGlvbiB7IERpcmVjdGlvbkZvcndhcmQsIERpcmVjdGlvbkJhY2t3YXJkLCBE
aXJlY3Rpb25SaWdodCwgRGlyZWN0aW9uTGVmdCB9OwogCiAgICAgU2VsZWN0aW9uQ29udHJvbGxl
cihGcmFtZSogPSAwLCBib29sIGlzRHJhZ0NhcmV0Q29udHJvbGxlciA9IGZhbHNlKTsKIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0
aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IDFjOWRiOTAuLjIxMTViNjcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcv
VHlwaW5nQ29tbWFuZC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpk
ZWxldGVLZXlQcmVzc2VkKERvY3VtZW50ICpkb2N1bWVudCwgYm9vbCBzbWFydERlbGV0ZSwgVGV4
dEcKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIAotICAgIEZyYW1lICpmcmFtZSA9IGRv
Y3VtZW50LT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwog
ICAgIEFTU0VSVChmcmFtZSk7CiAgICAgCiAgICAgRWRpdENvbW1hbmQqIGxhc3RFZGl0Q29tbWFu
ZCA9IGZyYW1lLT5lZGl0b3IoKS0+bGFzdEVkaXRDb21tYW5kKCk7CkBAIC0xMDUsNyArMTA1LDcg
QEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChEb2N1bWVudCAq
ZG9jdW1lbnQsIGJvb2wgc21hcnREZWxldGUKICAgICAvLyBGSVhNRTogRm9yd2FyZCBkZWxldGUg
aW4gVGV4dEVkaXQgYXBwZWFycyB0byBvcGVuIGFuZCBjbG9zZSBhIG5ldyB0eXBpbmcgY29tbWFu
ZC4KICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIAotICAgIEZyYW1lICpmcmFtZSA9IGRvY3Vt
ZW50LT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwogICAg
IEFTU0VSVChmcmFtZSk7CiAgICAgCiAgICAgRWRpdENvbW1hbmQqIGxhc3RFZGl0Q29tbWFuZCA9
IGZyYW1lLT5lZGl0b3IoKS0+bGFzdEVkaXRDb21tYW5kKCk7CkBAIC0xODcsNyArMTg3LDcgQEAg
dm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWsoRG9jdW1lbnQgKmRvY3VtZW50KQog
ewogICAgIEFTU0VSVChkb2N1bWVudCk7CiAgICAgCi0gICAgRnJhbWUgKmZyYW1lID0gZG9jdW1l
bnQtPmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CiAgICAg
QVNTRVJUKGZyYW1lKTsKICAgICAKICAgICBFZGl0Q29tbWFuZCogbGFzdEVkaXRDb21tYW5kID0g
ZnJhbWUtPmVkaXRvcigpLT5sYXN0RWRpdENvbW1hbmQoKTsKQEAgLTIwMyw3ICsyMDMsNyBAQCB2
b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVu
dChEb2N1bWVudCAqZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKICAgICAKLSAg
ICBGcmFtZSAqZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBk
b2N1bWVudC0+ZnJhbWUoKTsKICAgICBBU1NFUlQoZnJhbWUpOwogICAgIAogICAgIEVkaXRDb21t
YW5kKiBsYXN0RWRpdENvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmxhc3RFZGl0Q29tbWFuZCgp
OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFyYWdyYXBo
U2VwYXJhdG9yKERvY3VtZW50ICpkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwog
ICAgIAotICAgIEZyYW1lICpmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOworICAgIEZyYW1lKiBm
cmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwogICAgIEFTU0VSVChmcmFtZSk7CiAgICAgCiAgICAg
RWRpdENvbW1hbmQqIGxhc3RFZGl0Q29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+bGFzdEVkaXRD
b21tYW5kKCk7CkBAIC0yNTIsMjcgKzI1MiwyNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRvQXBw
bHkoKQogICAgICAgICAgICAgbV9vcGVuZWRCeUJhY2t3YXJkRGVsZXRlID0gdHJ1ZTsKIAogICAg
IHN3aXRjaCAobV9jb21tYW5kVHlwZSkgewotICAgICAgICBjYXNlIERlbGV0ZVNlbGVjdGlvbjoK
LSAgICAgICAgICAgIGRlbGV0ZVNlbGVjdGlvbihtX3NtYXJ0RGVsZXRlKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgY2FzZSBEZWxldGVLZXk6Ci0gICAgICAgICAgICBkZWxldGVLZXlQ
cmVzc2VkKG1fZ3JhbnVsYXJpdHksIG1fa2lsbFJpbmcpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBjYXNlIEZvcndhcmREZWxldGVLZXk6Ci0gICAgICAgICAgICBmb3J3YXJkRGVsZXRl
S2V5UHJlc3NlZChtX2dyYW51bGFyaXR5LCBtX2tpbGxSaW5nKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgY2FzZSBJbnNlcnRMaW5lQnJlYWs6Ci0gICAgICAgICAgICBpbnNlcnRMaW5l
QnJlYWsoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBJbnNlcnRQYXJhZ3Jh
cGhTZXBhcmF0b3I6Ci0gICAgICAgICAgICBpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IoKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJ
blF1b3RlZENvbnRlbnQ6Ci0gICAgICAgICAgICBpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1
b3RlZENvbnRlbnQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBJbnNlcnRU
ZXh0OgotICAgICAgICAgICAgaW5zZXJ0VGV4dChtX3RleHRUb0luc2VydCwgbV9zZWxlY3RJbnNl
cnRlZFRleHQpOwotICAgICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRGVsZXRlU2VsZWN0aW9u
OgorICAgICAgICBkZWxldGVTZWxlY3Rpb24obV9zbWFydERlbGV0ZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIERlbGV0ZUtleToKKyAgICAgICAgZGVsZXRlS2V5UHJlc3NlZChtX2dyYW51
bGFyaXR5LCBtX2tpbGxSaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRm9yd2FyZERl
bGV0ZUtleToKKyAgICAgICAgZm9yd2FyZERlbGV0ZUtleVByZXNzZWQobV9ncmFudWxhcml0eSwg
bV9raWxsUmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEluc2VydExpbmVCcmVhazoK
KyAgICAgICAgaW5zZXJ0TGluZUJyZWFrKCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIElu
c2VydFBhcmFncmFwaFNlcGFyYXRvcjoKKyAgICAgICAgaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9y
KCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEluc2VydFBhcmFncmFwaFNlcGFyYXRvcklu
UXVvdGVkQ29udGVudDoKKyAgICAgICAgaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRD
b250ZW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEluc2VydFRleHQ6CisgICAgICAg
IGluc2VydFRleHQobV90ZXh0VG9JbnNlcnQsIG1fc2VsZWN0SW5zZXJ0ZWRUZXh0KTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzQwLDEz
ICszNDAsMTIgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KGNvbnN0IFN0cmluZyAm
dGV4dCwgYm9vbCBzZWxlY3RJbnNlcnRlZFRleHQpCiAgICAgICAgIGluc2VydFBhcmFncmFwaFNl
cGFyYXRvcigpOwogICAgICAgICBvZmZzZXQgPSBuZXdsaW5lICsgMTsKICAgICB9Ci0gICAgaWYg
KG9mZnNldCA9PSAwKQorICAgIGlmICghb2Zmc2V0KQogICAgICAgICBpbnNlcnRUZXh0UnVuV2l0
aG91dE5ld2xpbmVzKHRleHQsIHNlbGVjdEluc2VydGVkVGV4dCk7CiAgICAgZWxzZSB7CiAgICAg
ICAgIGludCBsZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOwotICAgICAgICBpZiAobGVuZ3RoICE9IG9m
ZnNldCkgeworICAgICAgICBpZiAobGVuZ3RoICE9IG9mZnNldCkKICAgICAgICAgICAgIGluc2Vy
dFRleHRSdW5XaXRob3V0TmV3bGluZXModGV4dC5zdWJzdHJpbmcob2Zmc2V0LCBsZW5ndGggLSBv
ZmZzZXQpLCBzZWxlY3RJbnNlcnRlZFRleHQpOwotICAgICAgICB9CiAgICAgfQogfQogCkBAIC00
MTgsNzUgKzQxNyw3NSBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4
dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5nKQogICAgIFZpc2libGVTZWxl
Y3Rpb24gc2VsZWN0aW9uQWZ0ZXJVbmRvOwogICAgIAogICAgIHN3aXRjaCAoZW5kaW5nU2VsZWN0
aW9uKCkuc2VsZWN0aW9uVHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6
UmFuZ2VTZWxlY3Rpb246Ci0gICAgICAgICAgICBzZWxlY3Rpb25Ub0RlbGV0ZSA9IGVuZGluZ1Nl
bGVjdGlvbigpOwotICAgICAgICAgICAgc2VsZWN0aW9uQWZ0ZXJVbmRvID0gc2VsZWN0aW9uVG9E
ZWxldGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9u
OjpDYXJldFNlbGVjdGlvbjogewotICAgICAgICAgICAgLy8gQWZ0ZXIgYnJlYWtpbmcgb3V0IG9m
IGFuIGVtcHR5IG1haWwgYmxvY2txdW90ZSwgd2Ugc3RpbGwgd2FudCBjb250aW51ZSB3aXRoIHRo
ZSBkZWxldGlvbgotICAgICAgICAgICAgLy8gc28gYWN0dWFsIGNvbnRlbnQgd2lsbCBnZXQgZGVs
ZXRlZCwgYW5kIG5vdCBqdXN0IHRoZSBxdW90ZSBzdHlsZS4KLSAgICAgICAgICAgIGlmIChicmVh
a091dE9mRW1wdHlNYWlsQmxvY2txdW90ZWRQYXJhZ3JhcGgoKSkKLSAgICAgICAgICAgICAgICB0
eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQoRGVsZXRlS2V5KTsKKyAgICBjYXNlIFZpc2libGVTZWxl
Y3Rpb246OlJhbmdlU2VsZWN0aW9uOgorICAgICAgICBzZWxlY3Rpb25Ub0RlbGV0ZSA9IGVuZGlu
Z1NlbGVjdGlvbigpOworICAgICAgICBzZWxlY3Rpb25BZnRlclVuZG8gPSBzZWxlY3Rpb25Ub0Rl
bGV0ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpDYXJldFNl
bGVjdGlvbjogeworICAgICAgICAvLyBBZnRlciBicmVha2luZyBvdXQgb2YgYW4gZW1wdHkgbWFp
bCBibG9ja3F1b3RlLCB3ZSBzdGlsbCB3YW50IGNvbnRpbnVlIHdpdGggdGhlIGRlbGV0aW9uCisg
ICAgICAgIC8vIHNvIGFjdHVhbCBjb250ZW50IHdpbGwgZ2V0IGRlbGV0ZWQsIGFuZCBub3QganVz
dCB0aGUgcXVvdGUgc3R5bGUuCisgICAgICAgIGlmIChicmVha091dE9mRW1wdHlNYWlsQmxvY2tx
dW90ZWRQYXJhZ3JhcGgoKSkKKyAgICAgICAgICAgIHR5cGluZ0FkZGVkVG9PcGVuQ29tbWFuZChE
ZWxldGVLZXkpOworICAgIAorICAgICAgICBtX3NtYXJ0RGVsZXRlID0gZmFsc2U7CisKKyAgICAg
ICAgU2VsZWN0aW9uQ29udHJvbGxlciBzZWxlY3Rpb247CisgICAgICAgIHNlbGVjdGlvbi5zZXRT
ZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkpOworICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkRpcmVjdGlvbkJhY2t3YXJkLCBncmFudWxhcml0eSk7CisgICAgICAgIGlmIChraWxsUmluZyAm
JiBzZWxlY3Rpb24uaXNDYXJldCgpICYmIGdyYW51bGFyaXR5ICE9IENoYXJhY3RlckdyYW51bGFy
aXR5KSAKKyAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQs
IENoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICAgICAgCi0gICAgICAgICAgICBtX3NtYXJ0RGVs
ZXRlID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIgc2VsZWN0aW9u
OwotICAgICAgICAgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKSk7
Ci0gICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVO
RCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIGdyYW51bGFyaXR5KTsKLSAgICAgICAg
ICAgIGlmIChraWxsUmluZyAmJiBzZWxlY3Rpb24uaXNDYXJldCgpICYmIGdyYW51bGFyaXR5ICE9
IENoYXJhY3RlckdyYW51bGFyaXR5KSAKLSAgICAgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dB
UkQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsgCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlm
IChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKS5wcmV2aW91cyh0cnVlKS5pc051bGwo
KSkgewotICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGNhcmV0IGlzIGF0IHRoZSBzdGFydCBv
ZiB0aGUgZWRpdGFibGUgYXJlYSBpbiBhbiBlbXB0eSBsaXN0IGl0ZW0sIGJyZWFrIG91dCBvZiB0
aGUgbGlzdCBpdGVtLgotICAgICAgICAgICAgICAgIGlmIChicmVha091dE9mRW1wdHlMaXN0SXRl
bSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGluZ0FkZGVkVG9PcGVuQ29tbWFuZChEZWxl
dGVLZXkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlcmUgYXJlIG5vIHZpc2libGUgcG9zaXRpb25zIGlu
IHRoZSBlZGl0aW5nIHJvb3QsIGRlbGV0ZSBpdHMgZW50aXJlIGNvbnRlbnRzLgotICAgICAgICAg
ICAgICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKS5uZXh0KHRydWUpLmlz
TnVsbCgpICYmIG1ha2VFZGl0YWJsZVJvb3RFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHR5cGluZ0FkZGVkVG9PcGVuQ29tbWFuZChEZWxldGVLZXkpOwotICAgICAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVN0YXJ0KGVuZGluZ1NlbGVjdGlv
bigpLnZpc2libGVTdGFydCgpKTsKLSAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBjYXJldCBz
ZWxlY3Rpb24gb24gYW4gZW1wdHkgY2VsbCwgd2UgaGF2ZSBub3RoaW5nIHRvIGRvLgotICAgICAg
ICAgICAgaWYgKGlzRW1wdHlUYWJsZUNlbGwodmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCku
bm9kZSgpKSkKKyAgICAgICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLnBy
ZXZpb3VzKHRydWUpLmlzTnVsbCgpKSB7CisgICAgICAgICAgICAvLyBXaGVuIHRoZSBjYXJldCBp
cyBhdCB0aGUgc3RhcnQgb2YgdGhlIGVkaXRhYmxlIGFyZWEgaW4gYW4gZW1wdHkgbGlzdCBpdGVt
LCBicmVhayBvdXQgb2YgdGhlIGxpc3QgaXRlbS4KKyAgICAgICAgICAgIGlmIChicmVha091dE9m
RW1wdHlMaXN0SXRlbSgpKSB7CisgICAgICAgICAgICAgICAgdHlwaW5nQWRkZWRUb09wZW5Db21t
YW5kKERlbGV0ZUtleSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAv
LyBJZiB0aGUgY2FyZXQgaXMgYXQgdGhlIHN0YXJ0IG9mIGEgcGFyYWdyYXBoIGFmdGVyIGEgdGFi
bGUsIG1vdmUgY29udGVudCBpbnRvIHRoZSBsYXN0IHRhYmxlIGNlbGwuCi0gICAgICAgICAgICBp
ZiAoaXNTdGFydE9mUGFyYWdyYXBoKHZpc2libGVTdGFydCkgJiYgaXNGaXJzdFBvc2l0aW9uQWZ0
ZXJUYWJsZSh2aXNpYmxlU3RhcnQucHJldmlvdXModHJ1ZSkpKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gVW5sZXNzIHRoZSBjYXJldCBpcyBqdXN0IGJlZm9yZSBhIHRhYmxlLiAgV2UgZG9uJ3Qgd2Fu
dCB0byBtb3ZlIGEgdGFibGUgaW50byB0aGUgbGFzdCB0YWJsZSBjZWxsLgotICAgICAgICAgICAg
ICAgIGlmIChpc0xhc3RQb3NpdGlvbkJlZm9yZVRhYmxlKHZpc2libGVTdGFydCkpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAvLyBFeHRlbmQgdGhlIHNlbGVj
dGlvbiBiYWNrd2FyZCBpbnRvIHRoZSBsYXN0IGNlbGwsIHRoZW4gZGVsZXRpb24gd2lsbCBoYW5k
bGUgdGhlIG1vdmUuCi0gICAgICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25D
b250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBncmFudWxh
cml0eSk7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgY2FyZXQgaXMganVzdCBhZnRlciBhIHRhYmxl
LCBzZWxlY3QgdGhlIHRhYmxlIGFuZCBkb24ndCBkZWxldGUgYW55dGhpbmcuCi0gICAgICAgICAg
ICB9IGVsc2UgaWYgKE5vZGUqIHRhYmxlID0gaXNGaXJzdFBvc2l0aW9uQWZ0ZXJUYWJsZSh2aXNp
YmxlU3RhcnQpKSB7Ci0gICAgICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVT
ZWxlY3Rpb24oUG9zaXRpb24odGFibGUsIDApLCBlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLCBE
T1dOU1RSRUFNKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBXaGVuIHRoZXJlIGFy
ZSBubyB2aXNpYmxlIHBvc2l0aW9ucyBpbiB0aGUgZWRpdGluZyByb290LCBkZWxldGUgaXRzIGVu
dGlyZSBjb250ZW50cy4KKyAgICAgICAgICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxl
U3RhcnQoKS5uZXh0KHRydWUpLmlzTnVsbCgpICYmIG1ha2VFZGl0YWJsZVJvb3RFbXB0eSgpKSB7
CiAgICAgICAgICAgICAgICAgdHlwaW5nQWRkZWRUb09wZW5Db21tYW5kKERlbGV0ZUtleSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVN0YXJ0KGVuZGluZ1NlbGVjdGlvbigp
LnZpc2libGVTdGFydCgpKTsKKyAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIGNhcmV0IHNlbGVjdGlv
biBvbiBhbiBlbXB0eSBjZWxsLCB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8uCisgICAgICAgIGlmIChp
c0VtcHR5VGFibGVDZWxsKHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKSkpCisg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHNlbGVjdGlvblRvRGVsZXRlID0gc2Vs
ZWN0aW9uLnNlbGVjdGlvbigpOworICAgICAgICAvLyBJZiB0aGUgY2FyZXQgaXMgYXQgdGhlIHN0
YXJ0IG9mIGEgcGFyYWdyYXBoIGFmdGVyIGEgdGFibGUsIG1vdmUgY29udGVudCBpbnRvIHRoZSBs
YXN0IHRhYmxlIGNlbGwuCisgICAgICAgIGlmIChpc1N0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJsZVN0
YXJ0KSAmJiBpc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKHZpc2libGVTdGFydC5wcmV2aW91cyh0
cnVlKSkpIHsKKyAgICAgICAgICAgIC8vIFVubGVzcyB0aGUgY2FyZXQgaXMganVzdCBiZWZvcmUg
YSB0YWJsZS4gIFdlIGRvbid0IHdhbnQgdG8gbW92ZSBhIHRhYmxlIGludG8gdGhlIGxhc3QgdGFi
bGUgY2VsbC4KKyAgICAgICAgICAgIGlmIChpc0xhc3RQb3NpdGlvbkJlZm9yZVRhYmxlKHZpc2li
bGVTdGFydCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgLy8gRXh0ZW5k
IHRoZSBzZWxlY3Rpb24gYmFja3dhcmQgaW50byB0aGUgbGFzdCBjZWxsLCB0aGVuIGRlbGV0aW9u
IHdpbGwgaGFuZGxlIHRoZSBtb3ZlLgorICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpE
aXJlY3Rpb25CYWNrd2FyZCwgZ3JhbnVsYXJpdHkpOworICAgICAgICAvLyBJZiB0aGUgY2FyZXQg
aXMganVzdCBhZnRlciBhIHRhYmxlLCBzZWxlY3QgdGhlIHRhYmxlIGFuZCBkb24ndCBkZWxldGUg
YW55dGhpbmcuCisgICAgICAgIH0gZWxzZSBpZiAoTm9kZSogdGFibGUgPSBpc0ZpcnN0UG9zaXRp
b25BZnRlclRhYmxlKHZpc2libGVTdGFydCkpIHsKKyAgICAgICAgICAgIHNldEVuZGluZ1NlbGVj
dGlvbihWaXNpYmxlU2VsZWN0aW9uKFBvc2l0aW9uKHRhYmxlLCAwKSwgZW5kaW5nU2VsZWN0aW9u
KCkuc3RhcnQoKSwgRE9XTlNUUkVBTSkpOworICAgICAgICAgICAgdHlwaW5nQWRkZWRUb09wZW5D
b21tYW5kKERlbGV0ZUtleSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAg
ICAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IENoYXJhY3RlckdyYW51bGFyaXR5ICYmIHNlbGVj
dGlvblRvRGVsZXRlLmVuZCgpLm5vZGUoKSA9PSBzZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgpLm5v
ZGUoKSAmJiBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgp
IC0gc2VsZWN0aW9uVG9EZWxldGUuc3RhcnQoKS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID4g
MSkgewotICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBVbmljb2RlIGNv
ZGUgcG9pbnRzIHRvIGJlIGRlbGV0ZWQsIGFkanVzdCB0aGUgcmFuZ2UgdG8gbWF0Y2ggcGxhdGZv
cm0gY29udmVudGlvbnMuCi0gICAgICAgICAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUuc2V0V2l0
aG91dFZhbGlkYXRpb24oc2VsZWN0aW9uVG9EZWxldGUuZW5kKCksIHNlbGVjdGlvblRvRGVsZXRl
LmVuZCgpLnByZXZpb3VzKEJhY2t3YXJkRGVsZXRpb24pKTsKLSAgICAgICAgICAgIH0KKyAgICAg
ICAgc2VsZWN0aW9uVG9EZWxldGUgPSBzZWxlY3Rpb24uc2VsZWN0aW9uKCk7CiAKLSAgICAgICAg
ICAgIGlmICghc3RhcnRpbmdTZWxlY3Rpb24oKS5pc1JhbmdlKCkgfHwgc2VsZWN0aW9uVG9EZWxl
dGUuYmFzZSgpICE9IHN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSkKLSAgICAgICAgICAgICAg
ICBzZWxlY3Rpb25BZnRlclVuZG8gPSBzZWxlY3Rpb25Ub0RlbGV0ZTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAvLyBJdCdzIGEgbGl0dGxlIHRyaWNreSB0byBjb21wdXRlIHdo
YXQgdGhlIHN0YXJ0aW5nIHNlbGVjdGlvbiB3b3VsZCBoYXZlIGJlZW4gaW4gdGhlIG9yaWdpbmFs
IGRvY3VtZW50LgotICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IGxldCB0aGUgVmlzaWJsZVNl
bGVjdGlvbiBjbGFzcydzIHZhbGlkYXRpb24ga2ljayBpbiBvciBpdCdsbCBhZGp1c3QgZm9yIHVz
IGJhc2VkIG9uCi0gICAgICAgICAgICAgICAgLy8gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGRv
Y3VtZW50IGFuZCB3ZSdsbCBnZXQgdGhlIHdyb25nIHJlc3VsdC4KLSAgICAgICAgICAgICAgICBz
ZWxlY3Rpb25BZnRlclVuZG8uc2V0V2l0aG91dFZhbGlkYXRpb24oc3RhcnRpbmdTZWxlY3Rpb24o
KS5lbmQoKSwgc2VsZWN0aW9uVG9EZWxldGUuZXh0ZW50KCkpOwotICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGlmIChncmFudWxhcml0eSA9PSBDaGFyYWN0ZXJHcmFudWxhcml0eSAmJiBzZWxl
Y3Rpb25Ub0RlbGV0ZS5lbmQoKS5ub2RlKCkgPT0gc2VsZWN0aW9uVG9EZWxldGUuc3RhcnQoKS5u
b2RlKCkgJiYgc2VsZWN0aW9uVG9EZWxldGUuZW5kKCkuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSAtIHNlbGVjdGlvblRvRGVsZXRlLnN0YXJ0KCkuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+
IDEpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBVbmljb2RlIGNvZGUg
cG9pbnRzIHRvIGJlIGRlbGV0ZWQsIGFkanVzdCB0aGUgcmFuZ2UgdG8gbWF0Y2ggcGxhdGZvcm0g
Y29udmVudGlvbnMuCisgICAgICAgICAgICBzZWxlY3Rpb25Ub0RlbGV0ZS5zZXRXaXRob3V0VmFs
aWRhdGlvbihzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKSwgc2VsZWN0aW9uVG9EZWxldGUuZW5kKCku
cHJldmlvdXMoQmFja3dhcmREZWxldGlvbikpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgVmlz
aWJsZVNlbGVjdGlvbjo6Tm9TZWxlY3Rpb246Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmICghc3RhcnRpbmdTZWxlY3Rp
b24oKS5pc1JhbmdlKCkgfHwgc2VsZWN0aW9uVG9EZWxldGUuYmFzZSgpICE9IHN0YXJ0aW5nU2Vs
ZWN0aW9uKCkuc3RhcnQoKSkKKyAgICAgICAgICAgIHNlbGVjdGlvbkFmdGVyVW5kbyA9IHNlbGVj
dGlvblRvRGVsZXRlOworICAgICAgICBlbHNlCisgICAgICAgICAgICAvLyBJdCdzIGEgbGl0dGxl
IHRyaWNreSB0byBjb21wdXRlIHdoYXQgdGhlIHN0YXJ0aW5nIHNlbGVjdGlvbiB3b3VsZCBoYXZl
IGJlZW4gaW4gdGhlIG9yaWdpbmFsIGRvY3VtZW50LgorICAgICAgICAgICAgLy8gV2UgY2FuJ3Qg
bGV0IHRoZSBWaXNpYmxlU2VsZWN0aW9uIGNsYXNzJ3MgdmFsaWRhdGlvbiBraWNrIGluIG9yIGl0
J2xsIGFkanVzdCBmb3IgdXMgYmFzZWQgb24KKyAgICAgICAgICAgIC8vIHRoZSBjdXJyZW50IHN0
YXRlIG9mIHRoZSBkb2N1bWVudCBhbmQgd2UnbGwgZ2V0IHRoZSB3cm9uZyByZXN1bHQuCisgICAg
ICAgICAgICBzZWxlY3Rpb25BZnRlclVuZG8uc2V0V2l0aG91dFZhbGlkYXRpb24oc3RhcnRpbmdT
ZWxlY3Rpb24oKS5lbmQoKSwgc2VsZWN0aW9uVG9EZWxldGUuZXh0ZW50KCkpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpOb1NlbGVjdGlvbjoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAK
ICAgICBBU1NFUlQoIXNlbGVjdGlvblRvRGVsZXRlLmlzTm9uZSgpKTsKQEAgLTUxNCw2MiArNTEz
LDYyIEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxl
Y3Rpb25BZnRlclVuZG87CiAKICAgICBzd2l0Y2ggKGVuZGluZ1NlbGVjdGlvbigpLnNlbGVjdGlv
blR5cGUoKSkgewotICAgICAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OlJhbmdlU2VsZWN0aW9u
OgotICAgICAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUgPSBlbmRpbmdTZWxlY3Rpb24oKTsKLSAg
ICAgICAgICAgIHNlbGVjdGlvbkFmdGVyVW5kbyA9IHNlbGVjdGlvblRvRGVsZXRlOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Q2FyZXRTZWxlY3Rp
b246IHsKLSAgICAgICAgICAgIG1fc21hcnREZWxldGUgPSBmYWxzZTsKLQotICAgICAgICAgICAg
Ly8gSGFuZGxlIGRlbGV0ZSBhdCBiZWdpbm5pbmctb2YtYmxvY2sgY2FzZS4KLSAgICAgICAgICAg
IC8vIERvIG5vdGhpbmcgaW4gdGhlIGNhc2UgdGhhdCB0aGUgY2FyZXQgaXMgYXQgdGhlIHN0YXJ0
IG9mIGEKLSAgICAgICAgICAgIC8vIHJvb3QgZWRpdGFibGUgZWxlbWVudCBvciBhdCB0aGUgc3Rh
cnQgb2YgYSBkb2N1bWVudC4KLSAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIgc2VsZWN0
aW9uOwotICAgICAgICAgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24o
KSk7Ci0gICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVY
VEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgZ3JhbnVsYXJpdHkpOwotICAgICAg
ICAgICAgaWYgKGtpbGxSaW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgZ3JhbnVsYXJpdHkg
IT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpIAotICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JX
QVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7IAotICAgICAgICAgICAgCi0gICAgICAgICAgICBQ
b3NpdGlvbiBkb3duc3RyZWFtRW5kID0gZW5kaW5nU2VsZWN0aW9uKCkuZW5kKCkuZG93bnN0cmVh
bSgpOwotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQgPSBlbmRpbmdTZWxl
Y3Rpb24oKS52aXNpYmxlRW5kKCk7Ci0gICAgICAgICAgICBpZiAodmlzaWJsZUVuZCA9PSBlbmRP
ZlBhcmFncmFwaCh2aXNpYmxlRW5kKSkKLSAgICAgICAgICAgICAgICBkb3duc3RyZWFtRW5kID0g
dmlzaWJsZUVuZC5uZXh0KHRydWUpLmRlZXBFcXVpdmFsZW50KCkuZG93bnN0cmVhbSgpOwotICAg
ICAgICAgICAgLy8gV2hlbiBkZWxldGluZyB0YWJsZXM6IFNlbGVjdCB0aGUgdGFibGUgZmlyc3Qs
IHRoZW4gcGVyZm9ybSB0aGUgZGVsZXRpb24KLSAgICAgICAgICAgIGlmIChkb3duc3RyZWFtRW5k
Lm5vZGUoKSAmJiBkb3duc3RyZWFtRW5kLm5vZGUoKS0+cmVuZGVyZXIoKSAmJiBkb3duc3RyZWFt
RW5kLm5vZGUoKS0+cmVuZGVyZXIoKS0+aXNUYWJsZSgpICYmIGRvd25zdHJlYW1FbmQuZGVwcmVj
YXRlZEVkaXRpbmdPZmZzZXQoKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgc2V0RW5kaW5nU2Vs
ZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkuZW5kKCksIGxhc3REZWVw
RWRpdGluZ1Bvc2l0aW9uRm9yTm9kZShkb3duc3RyZWFtRW5kLm5vZGUoKSksIERPV05TVFJFQU0p
KTsKLSAgICAgICAgICAgICAgICB0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQoRm9yd2FyZERlbGV0
ZUtleSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgIGNhc2Ug
VmlzaWJsZVNlbGVjdGlvbjo6UmFuZ2VTZWxlY3Rpb246CisgICAgICAgIHNlbGVjdGlvblRvRGVs
ZXRlID0gZW5kaW5nU2VsZWN0aW9uKCk7CisgICAgICAgIHNlbGVjdGlvbkFmdGVyVW5kbyA9IHNl
bGVjdGlvblRvRGVsZXRlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpc2libGVTZWxlY3Rp
b246OkNhcmV0U2VsZWN0aW9uOiB7CisgICAgICAgIG1fc21hcnREZWxldGUgPSBmYWxzZTsKKwor
ICAgICAgICAvLyBIYW5kbGUgZGVsZXRlIGF0IGJlZ2lubmluZy1vZi1ibG9jayBjYXNlLgorICAg
ICAgICAvLyBEbyBub3RoaW5nIGluIHRoZSBjYXNlIHRoYXQgdGhlIGNhcmV0IGlzIGF0IHRoZSBz
dGFydCBvZiBhCisgICAgICAgIC8vIHJvb3QgZWRpdGFibGUgZWxlbWVudCBvciBhdCB0aGUgc3Rh
cnQgb2YgYSBkb2N1bWVudC4KKyAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlciBzZWxlY3Rpb247
CisgICAgICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkpOworICAg
ICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRl
bmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIGdyYW51bGFyaXR5KTsK
KyAgICAgICAgaWYgKGtpbGxSaW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgZ3JhbnVsYXJp
dHkgIT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpIAorICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgIAor
ICAgICAgICBQb3NpdGlvbiBkb3duc3RyZWFtRW5kID0gZW5kaW5nU2VsZWN0aW9uKCkuZW5kKCku
ZG93bnN0cmVhbSgpOworICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZUVuZCA9IGVuZGlu
Z1NlbGVjdGlvbigpLnZpc2libGVFbmQoKTsKKyAgICAgICAgaWYgKHZpc2libGVFbmQgPT0gZW5k
T2ZQYXJhZ3JhcGgodmlzaWJsZUVuZCkpCisgICAgICAgICAgICBkb3duc3RyZWFtRW5kID0gdmlz
aWJsZUVuZC5uZXh0KHRydWUpLmRlZXBFcXVpdmFsZW50KCkuZG93bnN0cmVhbSgpOworICAgICAg
ICAvLyBXaGVuIGRlbGV0aW5nIHRhYmxlczogU2VsZWN0IHRoZSB0YWJsZSBmaXJzdCwgdGhlbiBw
ZXJmb3JtIHRoZSBkZWxldGlvbgorICAgICAgICBpZiAoZG93bnN0cmVhbUVuZC5ub2RlKCkgJiYg
ZG93bnN0cmVhbUVuZC5ub2RlKCktPnJlbmRlcmVyKCkgJiYgZG93bnN0cmVhbUVuZC5ub2RlKCkt
PnJlbmRlcmVyKCktPmlzVGFibGUoKSAmJiAhZG93bnN0cmVhbUVuZC5kZXByZWNhdGVkRWRpdGlu
Z09mZnNldCgpKSB7CisgICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVj
dGlvbihlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKSwgbGFzdERlZXBFZGl0aW5nUG9zaXRpb25Gb3JO
b2RlKGRvd25zdHJlYW1FbmQubm9kZSgpKSwgRE9XTlNUUkVBTSkpOworICAgICAgICAgICAgdHlw
aW5nQWRkZWRUb09wZW5Db21tYW5kKEZvcndhcmREZWxldGVLZXkpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIGRlbGV0aW5nIHRvIGVuZCBvZiBwYXJh
Z3JhcGggd2hlbiBhdCBlbmQgb2YgcGFyYWdyYXBoIG5lZWRzIHRvIG1lcmdlIHRoZSBuZXh0IHBh
cmFncmFwaCAoaWYgYW55KQotICAgICAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFBhcmFncmFw
aEJvdW5kYXJ5ICYmIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0NhcmV0KCkgJiYgaXNFbmRPZlBh
cmFncmFwaChzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpKSkKLSAgICAgICAgICAg
ICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICAv
LyBkZWxldGluZyB0byBlbmQgb2YgcGFyYWdyYXBoIHdoZW4gYXQgZW5kIG9mIHBhcmFncmFwaCBu
ZWVkcyB0byBtZXJnZSB0aGUgbmV4dCBwYXJhZ3JhcGggKGlmIGFueSkKKyAgICAgICAgaWYgKGdy
YW51bGFyaXR5ID09IFBhcmFncmFwaEJvdW5kYXJ5ICYmIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5p
c0NhcmV0KCkgJiYgaXNFbmRPZlBhcmFncmFwaChzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJs
ZUVuZCgpKSkKKyAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2Fy
ZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogCi0gICAgICAgICAgICBzZWxlY3Rpb25Ub0RlbGV0
ZSA9IHNlbGVjdGlvbi5zZWxlY3Rpb24oKTsKLSAgICAgICAgICAgIGlmICghc3RhcnRpbmdTZWxl
Y3Rpb24oKS5pc1JhbmdlKCkgfHwgc2VsZWN0aW9uVG9EZWxldGUuYmFzZSgpICE9IHN0YXJ0aW5n
U2VsZWN0aW9uKCkuc3RhcnQoKSkKLSAgICAgICAgICAgICAgICBzZWxlY3Rpb25BZnRlclVuZG8g
PSBzZWxlY3Rpb25Ub0RlbGV0ZTsKKyAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUgPSBzZWxlY3Rp
b24uc2VsZWN0aW9uKCk7CisgICAgICAgIGlmICghc3RhcnRpbmdTZWxlY3Rpb24oKS5pc1Jhbmdl
KCkgfHwgc2VsZWN0aW9uVG9EZWxldGUuYmFzZSgpICE9IHN0YXJ0aW5nU2VsZWN0aW9uKCkuc3Rh
cnQoKSkKKyAgICAgICAgICAgIHNlbGVjdGlvbkFmdGVyVW5kbyA9IHNlbGVjdGlvblRvRGVsZXRl
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIEl0J3MgYSBsaXR0bGUgdHJpY2t5IHRv
IGNvbXB1dGUgd2hhdCB0aGUgc3RhcnRpbmcgc2VsZWN0aW9uIHdvdWxkIGhhdmUgYmVlbiBpbiB0
aGUgb3JpZ2luYWwgZG9jdW1lbnQuCisgICAgICAgICAgICAvLyBXZSBjYW4ndCBsZXQgdGhlIFZp
c2libGVTZWxlY3Rpb24gY2xhc3MncyB2YWxpZGF0aW9uIGtpY2sgaW4gb3IgaXQnbGwgYWRqdXN0
IGZvciB1cyBiYXNlZCBvbgorICAgICAgICAgICAgLy8gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhl
IGRvY3VtZW50IGFuZCB3ZSdsbCBnZXQgdGhlIHdyb25nIHJlc3VsdC4KKyAgICAgICAgICAgIFBv
c2l0aW9uIGV4dGVudCA9IHN0YXJ0aW5nU2VsZWN0aW9uKCkuZW5kKCk7CisgICAgICAgICAgICBp
ZiAoZXh0ZW50Lm5vZGUoKSAhPSBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5ub2RlKCkpCisgICAg
ICAgICAgICAgICAgZXh0ZW50ID0gc2VsZWN0aW9uVG9EZWxldGUuZXh0ZW50KCk7CiAgICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBJdCdzIGEgbGl0dGxlIHRyaWNreSB0byBj
b21wdXRlIHdoYXQgdGhlIHN0YXJ0aW5nIHNlbGVjdGlvbiB3b3VsZCBoYXZlIGJlZW4gaW4gdGhl
IG9yaWdpbmFsIGRvY3VtZW50LgotICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IGxldCB0aGUg
VmlzaWJsZVNlbGVjdGlvbiBjbGFzcydzIHZhbGlkYXRpb24ga2ljayBpbiBvciBpdCdsbCBhZGp1
c3QgZm9yIHVzIGJhc2VkIG9uCi0gICAgICAgICAgICAgICAgLy8gdGhlIGN1cnJlbnQgc3RhdGUg
b2YgdGhlIGRvY3VtZW50IGFuZCB3ZSdsbCBnZXQgdGhlIHdyb25nIHJlc3VsdC4KLSAgICAgICAg
ICAgICAgICBQb3NpdGlvbiBleHRlbnQgPSBzdGFydGluZ1NlbGVjdGlvbigpLmVuZCgpOwotICAg
ICAgICAgICAgICAgIGlmIChleHRlbnQubm9kZSgpICE9IHNlbGVjdGlvblRvRGVsZXRlLmVuZCgp
Lm5vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgZXh0ZW50ID0gc2VsZWN0aW9uVG9EZWxldGUu
ZXh0ZW50KCk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlu
dCBleHRyYUNoYXJhY3RlcnM7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25Ub0Rl
bGV0ZS5zdGFydCgpLm5vZGUoKSA9PSBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5ub2RlKCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBleHRyYUNoYXJhY3RlcnMgPSBzZWxlY3Rpb25Ub0RlbGV0
ZS5lbmQoKS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIC0gc2VsZWN0aW9uVG9EZWxldGUuc3Rh
cnQoKS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwotICAgICAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYUNoYXJhY3RlcnMgPSBzZWxlY3Rpb25Ub0Rl
bGV0ZS5lbmQoKS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwotICAgICAgICAgICAgICAgICAg
ICBleHRlbnQgPSBQb3NpdGlvbihleHRlbnQubm9kZSgpLCBleHRlbnQuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSArIGV4dHJhQ2hhcmFjdGVycyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIHNlbGVjdGlvbkFmdGVyVW5kby5zZXRXaXRob3V0VmFsaWRhdGlvbihzdGFydGlu
Z1NlbGVjdGlvbigpLnN0YXJ0KCksIGV4dGVudCk7CisgICAgICAgICAgICAgICAgaW50IGV4dHJh
Q2hhcmFjdGVyczsKKyAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uVG9EZWxldGUuc3RhcnQo
KS5ub2RlKCkgPT0gc2VsZWN0aW9uVG9EZWxldGUuZW5kKCkubm9kZSgpKQorICAgICAgICAgICAg
ICAgICAgICBleHRyYUNoYXJhY3RlcnMgPSBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpIC0gc2VsZWN0aW9uVG9EZWxldGUuc3RhcnQoKS5kZXByZWNhdGVk
RWRpdGluZ09mZnNldCgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgZXh0cmFDaGFyYWN0ZXJzID0gc2VsZWN0aW9uVG9EZWxldGUuZW5kKCkuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKTsKKyAgICAgICAgICAgICAgICBleHRlbnQgPSBQb3NpdGlvbihleHRlbnQu
bm9kZSgpLCBleHRlbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSArIGV4dHJhQ2hhcmFjdGVy
cyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHNlbGVj
dGlvbkFmdGVyVW5kby5zZXRXaXRob3V0VmFsaWRhdGlvbihzdGFydGluZ1NlbGVjdGlvbigpLnN0
YXJ0KCksIGV4dGVudCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9u
OjpOb1NlbGVjdGlvbjoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFZpc2libGVTZWxl
Y3Rpb246Ok5vU2VsZWN0aW9uOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIAogICAgIEFTU0VSVCghc2VsZWN0aW9uVG9EZWxldGUuaXNO
b25lKCkpOwpAQCAtNTk3LDE3ICs1OTYsMTcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVT
ZWxlY3Rpb24oYm9vbCBzbWFydERlbGV0ZSkKIHZvaWQgVHlwaW5nQ29tbWFuZDo6dXBkYXRlUHJl
c2VydmVzVHlwaW5nU3R5bGUoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUpCiB7CiAgICAgc3dp
dGNoIChjb21tYW5kVHlwZSkgewotICAgICAgICBjYXNlIERlbGV0ZVNlbGVjdGlvbjoKLSAgICAg
ICAgY2FzZSBEZWxldGVLZXk6Ci0gICAgICAgIGNhc2UgRm9yd2FyZERlbGV0ZUtleToKLSAgICAg
ICAgY2FzZSBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3I6Ci0gICAgICAgIGNhc2UgSW5zZXJ0TGlu
ZUJyZWFrOgotICAgICAgICAgICAgbV9wcmVzZXJ2ZXNUeXBpbmdTdHlsZSA9IHRydWU7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5R
dW90ZWRDb250ZW50OgotICAgICAgICBjYXNlIEluc2VydFRleHQ6Ci0gICAgICAgICAgICBtX3By
ZXNlcnZlc1R5cGluZ1N0eWxlID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBEZWxldGVTZWxlY3Rpb246CisgICAgY2FzZSBEZWxldGVLZXk6CisgICAgY2FzZSBGb3J3YXJk
RGVsZXRlS2V5OgorICAgIGNhc2UgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yOgorICAgIGNhc2Ug
SW5zZXJ0TGluZUJyZWFrOgorICAgICAgICBtX3ByZXNlcnZlc1R5cGluZ1N0eWxlID0gdHJ1ZTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90
ZWRDb250ZW50OgorICAgIGNhc2UgSW5zZXJ0VGV4dDoKKyAgICAgICAgbV9wcmVzZXJ2ZXNUeXBp
bmdTdHlsZSA9IGZhbHNlOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIG1fcHJlc2VydmVzVHlwaW5nU3R5bGUgPSBmYWxzZTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwIGIvV2ViQ29yZS9wYWdlL0RPTVNlbGVj
dGlvbi5jcHAKaW5kZXggMGQyMWM1Ni4uMjQyZjFmOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L0RPTVNlbGVjdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKQEAg
LTI2OCwyMSArMjY4LDIxIEBAIHZvaWQgRE9NU2VsZWN0aW9uOjptb2RpZnkoY29uc3QgU3RyaW5n
JiBhbHRlclN0cmluZywgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpCiAKICAgICBTZWxlY3Rp
b25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbiBhbHRlcjsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoYWx0ZXJTdHJpbmcsICJleHRlbmQiKSkKLSAgICAgICAgYWx0ZXIgPSBTZWxlY3Rpb25Db250
cm9sbGVyOjpFWFRFTkQ7CisgICAgICAgIGFsdGVyID0gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbkV4dGVuZDsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhbHRlclN0cmlu
ZywgIm1vdmUiKSkKLSAgICAgICAgYWx0ZXIgPSBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFOwor
ICAgICAgICBhbHRlciA9IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlOwogICAg
IGVsc2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVj
dGlvbiBkaXJlY3Rpb247CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpcmVjdGlvblN0cmlu
ZywgImZvcndhcmQiKSkKLSAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uQ29udHJvbGxlcjo6
Rk9SV0FSRDsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0
aW9uRm9yd2FyZDsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXJlY3Rpb25TdHJp
bmcsICJiYWNrd2FyZCIpKQotICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25Db250cm9sbGVy
OjpCQUNLV0FSRDsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uQmFja3dhcmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGlyZWN0aW9u
U3RyaW5nLCAibGVmdCIpKQotICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25Db250cm9sbGVy
OjpMRUZUOworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25MZWZ0OwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpcmVjdGlvblN0cmluZywg
InJpZ2h0IikpCi0gICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hU
OworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdo
dDsKICAgICBlbHNlCiAgICAgICAgIHJldHVybjsKIApAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQg
RE9NU2VsZWN0aW9uOjpkZWxldGVGcm9tRG9jdW1lbnQoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoaXNDb2xsYXBzZWQoKSkKLSAgICAgICAgc2VsZWN0aW9uLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgQ2hhcmFj
dGVyR3JhbnVsYXJpdHkpOworICAgICAgICBzZWxlY3Rpb24tPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25C
YWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogCiAgICAgUmVmUHRyPFJhbmdlPiBzZWxl
Y3RlZFJhbmdlID0gc2VsZWN0aW9uLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDkzZmM1YmQuLjdhNWI5NWMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCkBAIC02MjAsNyArNjIwLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNl
UmVsZWFzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGUKICAgICAg
ICAgICAgICYmIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5pc1JhbmdlKCkKICAgICAgICAgICAgICYm
IGV2ZW50LmV2ZW50KCkuYnV0dG9uKCkgIT0gUmlnaHRCdXR0b24pIHsKICAgICAgICAgVmlzaWJs
ZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb247Ci0gICAgICAgIE5vZGUgKm5vZGUgPSBldmVudC50YXJn
ZXROb2RlKCk7CisgICAgICAgIE5vZGUqIG5vZGUgPSBldmVudC50YXJnZXROb2RlKCk7CiAgICAg
ICAgIGJvb2wgY2FyZXRCcm93c2luZyA9IG1fZnJhbWUtPnNldHRpbmdzKCktPmNhcmV0QnJvd3Np
bmdFbmFibGVkKCk7CiAgICAgICAgIGlmIChub2RlICYmIChjYXJldEJyb3dzaW5nIHx8IG5vZGUt
PmlzQ29udGVudEVkaXRhYmxlKCkpICYmIG5vZGUtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAg
IFZpc2libGVQb3NpdGlvbiBwb3MgPSBub2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50
KGV2ZW50LmxvY2FsUG9pbnQoKSk7CkBAIC0xMDE2LDExNyArMTAxNiwxMTcgQEAgQ3Vyc29yIEV2
ZW50SGFuZGxlcjo6c2VsZWN0Q3Vyc29yKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIGV2ZW50LCBTY3IKICAgICB9CiAKICAgICBzd2l0Y2ggKHN0eWxlID8gc3R5bGUtPmN1cnNv
cigpIDogQ1VSU09SX0FVVE8pIHsKLSAgICAgICAgY2FzZSBDVVJTT1JfQVVUTzogewotICAgICAg
ICAgICAgYm9vbCBlZGl0YWJsZSA9IChub2RlICYmIG5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkp
OwotICAgICAgICAgICAgYm9vbCBlZGl0YWJsZUxpbmtFbmFibGVkID0gZmFsc2U7Ci0KLSAgICAg
ICAgICAgIC8vIElmIHRoZSBsaW5rIGlzIGVkaXRhYmxlLCB0aGVuIHdlIG5lZWQgdG8gY2hlY2sg
dGhlIHNldHRpbmdzIHRvIHNlZSB3aGV0aGVyIG9yIG5vdCB0aGUgbGluayBzaG91bGQgYmUgZm9s
bG93ZWQKLSAgICAgICAgICAgIGlmIChlZGl0YWJsZSkgewotICAgICAgICAgICAgICAgIEFTU0VS
VChtX2ZyYW1lLT5zZXR0aW5ncygpKTsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fZnJhbWUt
PnNldHRpbmdzKCktPmVkaXRhYmxlTGlua0JlaGF2aW9yKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBFZGl0YWJsZUxpbmtEZWZhdWx0
QmVoYXZpb3I6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgRWRpdGFibGVMaW5rQWx3YXlzTGl2
ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlTGlua0VuYWJsZWQgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBFZGl0YWJsZUxpbmtOZXZlckxpdmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBlZGl0YWJs
ZUxpbmtFbmFibGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICAgICAgICAgICAgICBjYXNlIEVkaXRhYmxlTGlua0xpdmVXaGVuTm90Rm9jdXNlZDoK
LSAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlTGlua0VuYWJsZWQgPSBub2RlSXNOb3RC
ZWluZ0VkaXRlZChub2RlLCBtX2ZyYW1lKSB8fCBldmVudC5ldmVudCgpLnNoaWZ0S2V5KCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgRWRpdGFibGVMaW5rT25seUxpdmVXaXRoU2hpZnRLZXk6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZUxpbmtFbmFibGVkID0gZXZlbnQuZXZlbnQo
KS5zaGlmdEtleSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQorICAgIGNhc2UgQ1VSU09SX0FVVE86IHsKKyAgICAgICAg
Ym9vbCBlZGl0YWJsZSA9IChub2RlICYmIG5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkpOworICAg
ICAgICBib29sIGVkaXRhYmxlTGlua0VuYWJsZWQgPSBmYWxzZTsKKworICAgICAgICAvLyBJZiB0
aGUgbGluayBpcyBlZGl0YWJsZSwgdGhlbiB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBzZXR0aW5ncyB0
byBzZWUgd2hldGhlciBvciBub3QgdGhlIGxpbmsgc2hvdWxkIGJlIGZvbGxvd2VkCisgICAgICAg
IGlmIChlZGl0YWJsZSkgeworICAgICAgICAgICAgQVNTRVJUKG1fZnJhbWUtPnNldHRpbmdzKCkp
OworICAgICAgICAgICAgc3dpdGNoIChtX2ZyYW1lLT5zZXR0aW5ncygpLT5lZGl0YWJsZUxpbmtC
ZWhhdmlvcigpKSB7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY2FzZSBFZGl0
YWJsZUxpbmtEZWZhdWx0QmVoYXZpb3I6CisgICAgICAgICAgICBjYXNlIEVkaXRhYmxlTGlua0Fs
d2F5c0xpdmU6CisgICAgICAgICAgICAgICAgZWRpdGFibGVMaW5rRW5hYmxlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgRWRpdGFibGVMaW5rTmV2
ZXJMaXZlOgorICAgICAgICAgICAgICAgIGVkaXRhYmxlTGlua0VuYWJsZWQgPSBmYWxzZTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBFZGl0YWJsZUxpbmtMaXZl
V2hlbk5vdEZvY3VzZWQ6CisgICAgICAgICAgICAgICAgZWRpdGFibGVMaW5rRW5hYmxlZCA9IG5v
ZGVJc05vdEJlaW5nRWRpdGVkKG5vZGUsIG1fZnJhbWUpIHx8IGV2ZW50LmV2ZW50KCkuc2hpZnRL
ZXkoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICAgICAg
aWYgKChldmVudC5pc092ZXJMaW5rKCkgfHwgaXNTdWJtaXRJbWFnZShub2RlKSkgJiYgKCFlZGl0
YWJsZSB8fCBlZGl0YWJsZUxpbmtFbmFibGVkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gaGFu
ZEN1cnNvcigpOwotICAgICAgICAgICAgYm9vbCBpblJlc2l6ZXIgPSBmYWxzZTsKLSAgICAgICAg
ICAgIGlmIChyZW5kZXJlcikgewotICAgICAgICAgICAgICAgIGlmIChSZW5kZXJMYXllciogbGF5
ZXIgPSByZW5kZXJlci0+ZW5jbG9zaW5nTGF5ZXIoKSkgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgaW5SZXNpemVyID0gbGF5ZXItPmlzUG9pbnRJblJlc2l6ZUNvbnRyb2wodmlldy0+d2lu
ZG93VG9Db250ZW50cyhldmVudC5ldmVudCgpLnBvcygpKSk7Ci0gICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgY2FzZSBFZGl0YWJsZUxpbmtPbmx5TGl2ZVdpdGhTaGlmdEtleToKKyAgICAg
ICAgICAgICAgICBlZGl0YWJsZUxpbmtFbmFibGVkID0gZXZlbnQuZXZlbnQoKS5zaGlmdEtleSgp
OworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KChlZGl0YWJsZSB8fCAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzVGV4dCgpICYmIG5vZGUtPmNh
blN0YXJ0U2VsZWN0aW9uKCkpKSAmJiAhaW5SZXNpemVyICYmICFzY3JvbGxiYXIpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGlCZWFtQ3Vyc29yKCk7Ci0gICAgICAgICAgICByZXR1cm4gcG9pbnRl
ckN1cnNvcigpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1VSU09SX0NST1NTOgotICAgICAg
ICAgICAgcmV0dXJuIGNyb3NzQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX1BPSU5URVI6
CisgICAgICAgIAorICAgICAgICBpZiAoKGV2ZW50LmlzT3ZlckxpbmsoKSB8fCBpc1N1Ym1pdElt
YWdlKG5vZGUpKSAmJiAoIWVkaXRhYmxlIHx8IGVkaXRhYmxlTGlua0VuYWJsZWQpKQogICAgICAg
ICAgICAgcmV0dXJuIGhhbmRDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1JfTU9WRToKLSAg
ICAgICAgICAgIHJldHVybiBtb3ZlQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX0FMTF9T
Q1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gbW92ZUN1cnNvcigpOwotICAgICAgICBjYXNlIENV
UlNPUl9FX1JFU0laRToKLSAgICAgICAgICAgIHJldHVybiBlYXN0UmVzaXplQ3Vyc29yKCk7Ci0g
ICAgICAgIGNhc2UgQ1VSU09SX1dfUkVTSVpFOgotICAgICAgICAgICAgcmV0dXJuIHdlc3RSZXNp
emVDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1JfTl9SRVNJWkU6Ci0gICAgICAgICAgICBy
ZXR1cm4gbm9ydGhSZXNpemVDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1JfU19SRVNJWkU6
Ci0gICAgICAgICAgICByZXR1cm4gc291dGhSZXNpemVDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBD
VVJTT1JfTkVfUkVTSVpFOgotICAgICAgICAgICAgcmV0dXJuIG5vcnRoRWFzdFJlc2l6ZUN1cnNv
cigpOwotICAgICAgICBjYXNlIENVUlNPUl9TV19SRVNJWkU6Ci0gICAgICAgICAgICByZXR1cm4g
c291dGhXZXN0UmVzaXplQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX05XX1JFU0laRToK
LSAgICAgICAgICAgIHJldHVybiBub3J0aFdlc3RSZXNpemVDdXJzb3IoKTsKLSAgICAgICAgY2Fz
ZSBDVVJTT1JfU0VfUkVTSVpFOgotICAgICAgICAgICAgcmV0dXJuIHNvdXRoRWFzdFJlc2l6ZUN1
cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9OU19SRVNJWkU6Ci0gICAgICAgICAgICByZXR1
cm4gbm9ydGhTb3V0aFJlc2l6ZUN1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9FV19SRVNJ
WkU6Ci0gICAgICAgICAgICByZXR1cm4gZWFzdFdlc3RSZXNpemVDdXJzb3IoKTsKLSAgICAgICAg
Y2FzZSBDVVJTT1JfTkVTV19SRVNJWkU6Ci0gICAgICAgICAgICByZXR1cm4gbm9ydGhFYXN0U291
dGhXZXN0UmVzaXplQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX05XU0VfUkVTSVpFOgot
ICAgICAgICAgICAgcmV0dXJuIG5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNvcigpOwotICAg
ICAgICBjYXNlIENVUlNPUl9DT0xfUkVTSVpFOgotICAgICAgICAgICAgcmV0dXJuIGNvbHVtblJl
c2l6ZUN1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9ST1dfUkVTSVpFOgotICAgICAgICAg
ICAgcmV0dXJuIHJvd1Jlc2l6ZUN1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9URVhUOgor
ICAgICAgICBib29sIGluUmVzaXplciA9IGZhbHNlOworICAgICAgICBpZiAocmVuZGVyZXIpIHsK
KyAgICAgICAgICAgIGlmIChSZW5kZXJMYXllciogbGF5ZXIgPSByZW5kZXJlci0+ZW5jbG9zaW5n
TGF5ZXIoKSkgeworICAgICAgICAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1l
LT52aWV3KCkpCisgICAgICAgICAgICAgICAgICAgIGluUmVzaXplciA9IGxheWVyLT5pc1BvaW50
SW5SZXNpemVDb250cm9sKHZpZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQuZXZlbnQoKS5wb3Mo
KSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICgoZWRpdGFibGUgfHwg
KHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc1RleHQoKSAmJiBub2RlLT5jYW5TdGFydFNlbGVjdGlv
bigpKSkgJiYgIWluUmVzaXplciAmJiAhc2Nyb2xsYmFyKQogICAgICAgICAgICAgcmV0dXJuIGlC
ZWFtQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX1dBSVQ6Ci0gICAgICAgICAgICByZXR1
cm4gd2FpdEN1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9IRUxQOgotICAgICAgICAgICAg
cmV0dXJuIGhlbHBDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1JfVkVSVElDQUxfVEVYVDoK
LSAgICAgICAgICAgIHJldHVybiB2ZXJ0aWNhbFRleHRDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBD
VVJTT1JfQ0VMTDoKLSAgICAgICAgICAgIHJldHVybiBjZWxsQ3Vyc29yKCk7Ci0gICAgICAgIGNh
c2UgQ1VSU09SX0NPTlRFWFRfTUVOVToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0TWVudUN1
cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9QUk9HUkVTUzoKLSAgICAgICAgICAgIHJldHVy
biBwcm9ncmVzc0N1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9OT19EUk9QOgotICAgICAg
ICAgICAgcmV0dXJuIG5vRHJvcEN1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9BTElBUzoK
LSAgICAgICAgICAgIHJldHVybiBhbGlhc0N1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9D
T1BZOgotICAgICAgICAgICAgcmV0dXJuIGNvcHlDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJT
T1JfTk9ORToKLSAgICAgICAgICAgIHJldHVybiBub25lQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2Ug
Q1VSU09SX05PVF9BTExPV0VEOgotICAgICAgICAgICAgcmV0dXJuIG5vdEFsbG93ZWRDdXJzb3Io
KTsKLSAgICAgICAgY2FzZSBDVVJTT1JfREVGQVVMVDoKLSAgICAgICAgICAgIHJldHVybiBwb2lu
dGVyQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX1dFQktJVF9aT09NX0lOOgotICAgICAg
ICAgICAgcmV0dXJuIHpvb21JbkN1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9XRUJLSVRf
Wk9PTV9PVVQ6Ci0gICAgICAgICAgICByZXR1cm4gem9vbU91dEN1cnNvcigpOwotICAgICAgICBj
YXNlIENVUlNPUl9XRUJLSVRfR1JBQjoKLSAgICAgICAgICAgIHJldHVybiBncmFiQ3Vyc29yKCk7
Ci0gICAgICAgIGNhc2UgQ1VSU09SX1dFQktJVF9HUkFCQklORzoKLSAgICAgICAgICAgIHJldHVy
biBncmFiYmluZ0N1cnNvcigpOworICAgICAgICByZXR1cm4gcG9pbnRlckN1cnNvcigpOworICAg
IH0KKyAgICBjYXNlIENVUlNPUl9DUk9TUzoKKyAgICAgICAgcmV0dXJuIGNyb3NzQ3Vyc29yKCk7
CisgICAgY2FzZSBDVVJTT1JfUE9JTlRFUjoKKyAgICAgICAgcmV0dXJuIGhhbmRDdXJzb3IoKTsK
KyAgICBjYXNlIENVUlNPUl9NT1ZFOgorICAgICAgICByZXR1cm4gbW92ZUN1cnNvcigpOworICAg
IGNhc2UgQ1VSU09SX0FMTF9TQ1JPTEw6CisgICAgICAgIHJldHVybiBtb3ZlQ3Vyc29yKCk7Cisg
ICAgY2FzZSBDVVJTT1JfRV9SRVNJWkU6CisgICAgICAgIHJldHVybiBlYXN0UmVzaXplQ3Vyc29y
KCk7CisgICAgY2FzZSBDVVJTT1JfV19SRVNJWkU6CisgICAgICAgIHJldHVybiB3ZXN0UmVzaXpl
Q3Vyc29yKCk7CisgICAgY2FzZSBDVVJTT1JfTl9SRVNJWkU6CisgICAgICAgIHJldHVybiBub3J0
aFJlc2l6ZUN1cnNvcigpOworICAgIGNhc2UgQ1VSU09SX1NfUkVTSVpFOgorICAgICAgICByZXR1
cm4gc291dGhSZXNpemVDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9ORV9SRVNJWkU6CisgICAg
ICAgIHJldHVybiBub3J0aEVhc3RSZXNpemVDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9TV19S
RVNJWkU6CisgICAgICAgIHJldHVybiBzb3V0aFdlc3RSZXNpemVDdXJzb3IoKTsKKyAgICBjYXNl
IENVUlNPUl9OV19SRVNJWkU6CisgICAgICAgIHJldHVybiBub3J0aFdlc3RSZXNpemVDdXJzb3Io
KTsKKyAgICBjYXNlIENVUlNPUl9TRV9SRVNJWkU6CisgICAgICAgIHJldHVybiBzb3V0aEVhc3RS
ZXNpemVDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9OU19SRVNJWkU6CisgICAgICAgIHJldHVy
biBub3J0aFNvdXRoUmVzaXplQ3Vyc29yKCk7CisgICAgY2FzZSBDVVJTT1JfRVdfUkVTSVpFOgor
ICAgICAgICByZXR1cm4gZWFzdFdlc3RSZXNpemVDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9O
RVNXX1JFU0laRToKKyAgICAgICAgcmV0dXJuIG5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZUN1cnNv
cigpOworICAgIGNhc2UgQ1VSU09SX05XU0VfUkVTSVpFOgorICAgICAgICByZXR1cm4gbm9ydGhX
ZXN0U291dGhFYXN0UmVzaXplQ3Vyc29yKCk7CisgICAgY2FzZSBDVVJTT1JfQ09MX1JFU0laRToK
KyAgICAgICAgcmV0dXJuIGNvbHVtblJlc2l6ZUN1cnNvcigpOworICAgIGNhc2UgQ1VSU09SX1JP
V19SRVNJWkU6CisgICAgICAgIHJldHVybiByb3dSZXNpemVDdXJzb3IoKTsKKyAgICBjYXNlIENV
UlNPUl9URVhUOgorICAgICAgICByZXR1cm4gaUJlYW1DdXJzb3IoKTsKKyAgICBjYXNlIENVUlNP
Ul9XQUlUOgorICAgICAgICByZXR1cm4gd2FpdEN1cnNvcigpOworICAgIGNhc2UgQ1VSU09SX0hF
TFA6CisgICAgICAgIHJldHVybiBoZWxwQ3Vyc29yKCk7CisgICAgY2FzZSBDVVJTT1JfVkVSVElD
QUxfVEVYVDoKKyAgICAgICAgcmV0dXJuIHZlcnRpY2FsVGV4dEN1cnNvcigpOworICAgIGNhc2Ug
Q1VSU09SX0NFTEw6CisgICAgICAgIHJldHVybiBjZWxsQ3Vyc29yKCk7CisgICAgY2FzZSBDVVJT
T1JfQ09OVEVYVF9NRU5VOgorICAgICAgICByZXR1cm4gY29udGV4dE1lbnVDdXJzb3IoKTsKKyAg
ICBjYXNlIENVUlNPUl9QUk9HUkVTUzoKKyAgICAgICAgcmV0dXJuIHByb2dyZXNzQ3Vyc29yKCk7
CisgICAgY2FzZSBDVVJTT1JfTk9fRFJPUDoKKyAgICAgICAgcmV0dXJuIG5vRHJvcEN1cnNvcigp
OworICAgIGNhc2UgQ1VSU09SX0FMSUFTOgorICAgICAgICByZXR1cm4gYWxpYXNDdXJzb3IoKTsK
KyAgICBjYXNlIENVUlNPUl9DT1BZOgorICAgICAgICByZXR1cm4gY29weUN1cnNvcigpOworICAg
IGNhc2UgQ1VSU09SX05PTkU6CisgICAgICAgIHJldHVybiBub25lQ3Vyc29yKCk7CisgICAgY2Fz
ZSBDVVJTT1JfTk9UX0FMTE9XRUQ6CisgICAgICAgIHJldHVybiBub3RBbGxvd2VkQ3Vyc29yKCk7
CisgICAgY2FzZSBDVVJTT1JfREVGQVVMVDoKKyAgICAgICAgcmV0dXJuIHBvaW50ZXJDdXJzb3Io
KTsKKyAgICBjYXNlIENVUlNPUl9XRUJLSVRfWk9PTV9JTjoKKyAgICAgICAgcmV0dXJuIHpvb21J
bkN1cnNvcigpOworICAgIGNhc2UgQ1VSU09SX1dFQktJVF9aT09NX09VVDoKKyAgICAgICAgcmV0
dXJuIHpvb21PdXRDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9XRUJLSVRfR1JBQjoKKyAgICAg
ICAgcmV0dXJuIGdyYWJDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9XRUJLSVRfR1JBQkJJTkc6
CisgICAgICAgIHJldHVybiBncmFiYmluZ0N1cnNvcigpOwogICAgIH0KICAgICByZXR1cm4gcG9p
bnRlckN1cnNvcigpOwogfQpAQCAtMTUyMywxNSArMTUyMywxNSBAQCBib29sIEV2ZW50SGFuZGxl
cjo6Y2FuSGFuZGxlRHJhZ0FuZERyb3BGb3JUYXJnZXQoRHJhZ0FuZERyb3BIYW5kbGVUeXBlIHR5
cGUsIE5vZAogICAgICAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVt
ZW50QmFzZSo+KHRhcmdldCktPmNvbnRlbnRGcmFtZSgpOwogICAgICAgICBpZiAoZnJhbWUpIHsK
ICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICAgICAgICAgIGNhc2UgVXBkYXRl
RHJhZ0FuZERyb3A6Ci0gICAgICAgICAgICAgICAgICAgIHdhc0FjY2VwdGVkID0gZnJhbWUtPmV2
ZW50SGFuZGxlcigpLT51cGRhdGVEcmFnQW5kRHJvcChldmVudCwgY2xpcGJvYXJkKTsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDYW5jZWxEcmFnQW5k
RHJvcDoKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5jYW5jZWxE
cmFnQW5kRHJvcChldmVudCwgY2xpcGJvYXJkKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSBQZXJmb3JtRHJhZ0FuZERyb3A6Ci0gICAgICAgICAgICAg
ICAgICAgIHdhc0FjY2VwdGVkID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5wZXJmb3JtRHJhZ0Fu
ZERyb3AoZXZlbnQsIGNsaXBib2FyZCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBVcGRhdGVEcmFnQW5kRHJvcDoKKyAgICAgICAgICAgICAgICB3YXNBY2Nl
cHRlZCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+dXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIGNs
aXBib2FyZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENhbmNl
bERyYWdBbmREcm9wOgorICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+Y2Fu
Y2VsRHJhZ0FuZERyb3AoZXZlbnQsIGNsaXBib2FyZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIFBlcmZvcm1EcmFnQW5kRHJvcDoKKyAgICAgICAgICAgICAgICB3
YXNBY2NlcHRlZCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+cGVyZm9ybURyYWdBbmREcm9wKGV2
ZW50LCBjbGlwYm9hcmQpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfSBlbHNlCkBAIC0yMTQxLDE5ICsyMTQxLDE2IEBAIHZvaWQgRXZlbnRI
YW5kbGVyOjpoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtZW50KEtleWJvYXJkRXZlbnQqIGV2
ZW50KQogICAgIGJvb2wgaXNDb21tYW5kZWQgPSBldmVudC0+Z2V0TW9kaWZpZXJTdGF0ZSgiTWV0
YSIpOwogICAgIAogICAgIGlmIChrZXkgPT0gIlVwIikgewotICAgICAgICBtX2ZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5E
IDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dB
UkQsIChpc0NvbW1hbmRlZCkgPyBEb2N1bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5LCB0
cnVlKTsKKyAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeSgoaXNTaGlmdGVkKSA/
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dh
cmQsIChpc0NvbW1hbmRlZCkgPyBEb2N1bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5LCB0
cnVlKTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0gICAgfQotICAgIGVs
c2UgaWYgKGtleSA9PSAiRG93biIpIHsgCi0gICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rp
b25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCAoaXNDb21t
YW5kZWQpID8gRG9jdW1lbnRCb3VuZGFyeSA6IExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAg
fSBlbHNlIGlmIChrZXkgPT0gIkRvd24iKSB7IAorICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4
dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCAoaXNDb21tYW5kZWQpID8gRG9jdW1lbnRCb3VuZGFy
eSA6IExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFu
ZGxlZCgpOwotICAgIH0KLSAgICBlbHNlIGlmIChrZXkgPT0gIkxlZnQiKSB7Ci0gICAgICAgIG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9s
bGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpMRUZULCAoaXNDb21tYW5kZWQpID8gTGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8g
V29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOworICAgIH0gZWxz
ZSBpZiAoa2V5ID09ICJMZWZ0IikgeworICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpEaXJlY3Rpb25MZWZ0LCAoaXNDb21tYW5kZWQpID8gTGluZUJvdW5kYXJ5IDogKGlzT3B0aW9u
ZWQpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOwogICAg
ICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoa2V5
ID09ICJSaWdodCIpIHsKLSAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeSgoaXNT
aGlmdGVkKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xs
ZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCAoaXNDb21tYW5kZWQpID8gTGlu
ZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3Jh
bnVsYXJpdHksIHRydWUpOworICAgIH0gZWxzZSBpZiAoa2V5ID09ICJSaWdodCIpIHsKKyAgICAg
ICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeSgoaXNTaGlmdGVkKSA/IFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0
aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQsIChpc0NvbW1hbmRl
ZCkgPyBMaW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFy
YWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOwogICAgIH0gICAgCiB9CkBAIC0yMjU5LDcgKzIyNTYsNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkK
ICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcgJiYgIWRyYWdTdGF0ZSgpLm1fZHJhZ1Ny
YykgewogICAgICAgICBhbGxvd0RIVE1MRHJhZyhkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURI
VE1MLCBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZVVBKTsKICAgICAgICAgaWYgKCFkcmFnU3Rh
dGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MICYmICFkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZVVB
KQotICAgICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsgICAgIC8vIG5v
IGVsZW1lbnQgaXMgZHJhZ2dhYmxlCisgICAgICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJh
ZyA9IGZhbHNlOyAvLyBubyBlbGVtZW50IGlzIGRyYWdnYWJsZQogICAgIH0KIAogICAgIGlmICht
X21vdXNlRG93bk1heVN0YXJ0RHJhZyAmJiAhZHJhZ1N0YXRlKCkubV9kcmFnU3JjKSB7CkBAIC0y
Mjc1LDcgKzIyNzIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3Vz
ZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKICAgICAgICAgICAgIGRyYWdTdGF0ZSgp
Lm1fZHJhZ1NyYyA9IDA7CiAgICAgICAgIAogICAgICAgICBpZiAoIWRyYWdTdGF0ZSgpLm1fZHJh
Z1NyYykKLSAgICAgICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gZmFsc2U7ICAgICAv
LyBubyBlbGVtZW50IGlzIGRyYWdnYWJsZQorICAgICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFy
dERyYWcgPSBmYWxzZTsgLy8gbm8gZWxlbWVudCBpcyBkcmFnZ2FibGUKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAvLyByZW1lbWJlciBzb21lIGZhY3RzIGFib3V0IHRoaXMgc291cmNlLCB3
aGlsZSB3ZSBoYXZlIGEgSGl0VGVzdFJlc3VsdCBoYW5keQogICAgICAgICAgICAgbm9kZSA9IHJl
c3VsdC5VUkxFbGVtZW50KCk7CkBAIC0yMzE1LDggKzIzMTIsOCBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkK
ICAgICAKICAgICBEcmFnT3BlcmF0aW9uIHNyY09wID0gRHJhZ09wZXJhdGlvbk5vbmU7ICAgICAg
CiAgICAgCi0gICAgZnJlZUNsaXBib2FyZCgpOyAgICAvLyB3b3VsZCBvbmx5IGhhcHBlbiBpZiB3
ZSBtaXNzZWQgYSBkcmFnRW5kLiAgRG8gaXQgYW55d2F5LCBqdXN0Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyB0byBtYWtlIHN1cmUgaXQgZ2V0cyBudW1iaWZpZWQKKyAgICBmcmVlQ2xpcGJv
YXJkKCk7IC8vIHdvdWxkIG9ubHkgaGFwcGVuIGlmIHdlIG1pc3NlZCBhIGRyYWdFbmQuICBEbyBp
dCBhbnl3YXksIGp1c3QKKyAgICAgICAgICAgICAgICAgICAgIC8vIHRvIG1ha2Ugc3VyZSBpdCBn
ZXRzIG51bWJpZmllZAogICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ0NsaXBib2FyZCA9IGNyZWF0ZURy
YWdnaW5nQ2xpcGJvYXJkKCk7ICAKICAgICAKICAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3Jj
TWF5QmVESFRNTCkgewpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMWM5NjU0Mi4uYjg1MTJhMCAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDMtMDIgIEx5b24gQ2hlbiAgPGxpYWNoZW5Acmlt
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
bnVtIHZhbHVlIEZPUldBUkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVCBhcmUgY2F1c2luZyBtYWNy
byBjb25mbGljdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNTUzMAorCisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZXhlY3V0ZUNvbW1hbmQpOgorCiAyMDEwLTAzLTAxICBKYWtv
YiBQZXRzb3ZpdHMgIDxqcGV0c292aXRzQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCA3NWQxY2U4
Li5iYjZhNzExIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5j
cHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC05ODIsMTEg
Kzk4MiwxMSBAQCBib29sIFdlYkZyYW1lSW1wbDo6ZXhlY3V0ZUNvbW1hbmQoY29uc3QgV2ViU3Ry
aW5nJiBuYW1lKQogICAgIC8vIHN1cHBvcnQuCiAgICAgaWYgKGNvbW1hbmQgPT0gIkRlbGV0ZVRv
RW5kT2ZQYXJhZ3JhcGgiKSB7CiAgICAgICAgIEVkaXRvciogZWRpdG9yID0gZnJhbWUoKS0+ZWRp
dG9yKCk7Ci0gICAgICAgIGlmICghZWRpdG9yLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkZPUldBUkQsCisgICAgICAgIGlmICghZWRpdG9yLT5kZWxldGVXaXRoRGly
ZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFncmFwaEJvdW5kYXJ5LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpIHsKLSAgICAgICAgICAgIGVkaXRvci0+
ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELAorICAgICAg
ICAgICAgZWRpdG9yLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRp
cmVjdGlvbkZvcndhcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q2hhcmFjdGVyR3JhbnVsYXJpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxz
ZSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nIGIvV2ViS2l0L2hhaWt1L0No
YW5nZUxvZwppbmRleCA0YzM3YmFlLi5iMmZlZGY3IDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3Uv
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxMC0wMy0wMiAgTHlvbiBDaGVuICA8bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVudW0gdmFsdWUgRk9SV0FSRCwgQkFD
S1dBUkQsIFJJR0hULCBMRUZUIGFyZSBjYXVzaW5nIG1hY3JvIGNvbmZsaWN0cy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NTMwCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRIYWlrdTo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisKIDIwMTAtMDItMjMg
IFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEhhaWt1LmNwcCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRIYWlrdS5jcHAKaW5kZXggYTUxZTM2MS4uY2FkMjNjYiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcAorKysgYi9XZWJL
aXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuY3BwCkBAIC0yNTQsMzYg
KzI1NCwzNiBAQCB2b2lkIEVkaXRvckNsaWVudEhhaWt1OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtl
eWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIGlmIChzdGFydC0+aXNDb250ZW50RWRpdGFibGUoKSkg
ewogICAgICAgICBzd2l0Y2goa2V2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewogICAg
ICAgICBjYXNlIFZLX0JBQ0s6Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdp
dGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsCisgICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6
RGlyZWN0aW9uQmFja3dhcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga2V2ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0
ZXJHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBW
S19ERUxFVEU6Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rp
b24oU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25G
b3J3YXJkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGtldmVudC0+Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJp
dHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFs
c2UsIHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVktfTEVGVDoKLSAg
ICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+c2hpZnRLZXkoKSA/
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9s
bGVyOjpMRUZULAorICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V2ZW50
LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtldmVudC0+Y3RybEtleSgpID8g
V29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFZLX1JJR0hUOgotICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnko
a2V2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0
aW9uQ29udHJvbGxlcjo6TU9WRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULAorICAgICAgICAgICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoa2V2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxl
cjo6RGlyZWN0aW9uUmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrZXZlbnQtPmN0cmxLZXkoKSA/IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFy
aXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIGZyYW1lLT5z
ZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwKKyAg
ICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+c2hpZnRLZXkoKSA/
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uTW92ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAga2V2ZW50LT5jdHJsS2V5KCkgPyBQYXJhZ3JhcGhH
cmFudWxhcml0eSA6IExpbmVHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVktf
RE9XTjoKLSAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+c2hp
ZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xs
ZXI6Ok1PVkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Rp
b25Db250cm9sbGVyOjpGT1JXQVJELAorICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoa2V2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlv
bkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0
aW9uRm9yd2FyZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtldmVu
dC0+Y3RybEtleSgpID8gUGFyYWdyYXBoR3JhbnVsYXJpdHkgOiBMaW5lR3JhbnVsYXJpdHksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKICAgICAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFu
Z2VMb2cKaW5kZXggNTI3YzhiOS4uMDNkYzFlYyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5n
ZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDMt
MDIgIEx5b24gQ2hlbiAgPGxpYWNoZW5AcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbnVtIHZhbHVlIEZPUldBUkQsIEJBQ0tXQVJELCBS
SUdIVCwgTEVGVCBhcmUgY2F1c2luZyBtYWNybyBjb25mbGljdHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTUzMAorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorCiAyMDEwLTAzLTAxICBKYWtvYiBQZXRzb3Zp
dHMgIDxqcGV0c292aXRzQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0
aC4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5j
cHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCmluZGV4IDkw
ZWJiMWQuLjZlNjA1YjQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFF0LmNwcApAQCAtMzk3LDExICszOTcsMTEgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxl
S2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgICAgICAgICBicmVh
azsKICNlbmRpZgogICAgICAgICAgICAgY2FzZSBWS19CQUNLOgotICAgICAgICAgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpC
QUNLV0FSRCwKKyAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJl
Y3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkZPUldBUkQsCisgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVX
aXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19MRUZUOgo=
</data>
<flag name="review"
          id="32787"
          type_id="1"
          status="-"
          setter="eric"
    />
    <flag name="commit-queue"
          id="32799"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51713</attachid>
            <date>2010-03-25 21:36:20 -0700</date>
            <delta_ts>2010-05-31 23:15:13 -0700</delta_ts>
            <desc>Coding style patch.</desc>
            <filename>35530_pre.patch</filename>
            <type>text/plain</type>
            <size>119328</size>
            <attacher name="Lyon Chen">lyon.chen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTMwYTY4NS4uNDYwYWQwYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OCBAQAorMjAxMC0wMy0yNSAgTHlvbiBDaGVuICA8
bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEVudW0gdmFsdWUgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBMRUZUIGFyZSBj
YXVzaW5nIG1hY3JvIGNvbmZsaWN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM1NTMwCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYVJvbGVIYXNQ
cmVzZW50YXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRlbGV0ZVdpdGhEaXJlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6YXBwbHlTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFwcGx5UGFyYWdy
YXBoU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphcHBseVN0eWxlVG9TZWxlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphcHBseVBhcmFncmFwaFN0eWxlVG9TZWxl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6dHJpU3RhdGVPZlN0eWxlSW5Db21wdXRlZFN0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uU3RhcnRIYXNTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbkhhc1N0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6cGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppZ25vcmVT
cGVsbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmxlYXJuU3BlbGxpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6ZmluZEZpcnN0TWlzc3BlbGxpbmdJblJhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OmZpbmRGaXJzdEdyYW1tYXJEZXRhaWxJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbmRGaXJzdEJhZEdyYW1tYXJJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGaXJz
dE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFySW5SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmlzU2VsZWN0aW9uTWlzc3BlbGxlZCk6CisgICAgICAgIChXZWJDb3JlOjppc1JhbmdlVW5ncmFt
bWF0aWNhbCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omd1ZXNzZXNGb3JNaXNzcGVsbGVk
U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdy
YW1tYXRpY2FsUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxp
bmdzQWZ0ZXJUeXBpbmdUb1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFy
a0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyk6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5Q29tbWFuZFRvRnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVRvZ2dsZVN0eWxlSW5MaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVBcHBseVBhcmFncmFwaFN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVEZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUZvcndhcmREZWxl
dGUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUluc2VydExpbmVCcmVhayk6CisgICAgICAg
IChXZWJDb3JlOjpzdXBwb3J0ZWRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjplbmFibGVkRGVs
ZXRlKToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5RXh0ZW5kaW5nUmlnaHQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5RXh0ZW5kaW5nRm9y
d2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnlNb3Zp
bmdSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnlN
b3ZpbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om1v
ZGlmeUV4dGVuZGluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxl
cjo6bW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9u
Q29udHJvbGxlcjo6bW9kaWZ5TW92aW5nTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rp
b25Db250cm9sbGVyOjptb2RpZnlNb3ZpbmdCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnkpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9u
Q29udHJvbGxlcjo6eFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OmRlYnVnUmVuZGVyZXIpOgorICAgICAgICAqIGVk
aXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5k
OjpkZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmZv
cndhcmREZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6
Omluc2VydExpbmVCcmVhayk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNl
cnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
VHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlR5cGluZ0NvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29t
bWFuZDo6aW5zZXJ0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjp1cGRh
dGVQcmVzZXJ2ZXNUeXBpbmdTdHlsZSk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdEN1cnNvcik6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbkhhbmRsZURyYWdBbmREcm9wRm9yVGFyZ2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hNb3VzZUV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1v
dmVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisK
IDIwMTAtMDMtMjUgIERyZXcgV2lsc29uICA8YXR3aWxzb25AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hhcGluLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGMyOGE2NTIuLjA0MDk4N2Qg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcAorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAKQEAgLTI3OTUsNyArMjc5NSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6YXJpYVJvbGVIYXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3QKICAgICBjYXNl
IFNsaWRlclJvbGU6CiAgICAgY2FzZSBJbWFnZVJvbGU6CiAgICAgY2FzZSBQcm9ncmVzc0luZGlj
YXRvclJvbGU6Ci0gICAgLy9jYXNlIFNlcGFyYXRvclJvbGU6CisgICAgLy8gY2FzZSBTZXBhcmF0
b3JSb2xlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDEwNjFkZDIuLjMwZjYzMzQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCkBAIC0yOSwxNSArMjksMTUgQEAKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNp
bmNsdWRlICJBcHBseVN0eWxlQ29tbWFuZC5oIgotI2luY2x1ZGUgIkNoYXJhY3Rlck5hbWVzLmgi
Ci0jaW5jbHVkZSAiQ29tcG9zaXRpb25FdmVudC5oIgotI2luY2x1ZGUgIkNyZWF0ZUxpbmtDb21t
YW5kLmgiCiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVk
ZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5o
IgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdv
cmRzLmgiCisjaW5jbHVkZSAiQ2hhcmFjdGVyTmFtZXMuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRF
dmVudC5oIgorI2luY2x1ZGUgIkNvbXBvc2l0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJDcmVhdGVM
aW5rQ29tbWFuZC5oIgogI2luY2x1ZGUgIkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJEZWxldGVTZWxlY3Rpb25Db21tYW5kLmgiCiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCkBA
IC0yNDEsMTQgKzI0MSwxNCBAQCBib29sIEVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxl
Y3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uIGRpcmVjdGlvbiwgVGV4dAogICAgICAgICB9CiAg
ICAgfSBlbHNlIHsgICAgICAgIAogICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAg
ICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJEOgotICAgICAgICAgICAgY2Fz
ZSBTZWxlY3Rpb25Db250cm9sbGVyOjpSSUdIVDoKLSAgICAgICAgICAgICAgICBUeXBpbmdDb21t
YW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChtX2ZyYW1lLT5kb2N1bWVudCgpLCBjYW5TbWFy
dENvcHlPckRlbGV0ZSgpLCBncmFudWxhcml0eSwga2lsbFJpbmcpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRDoK
LSAgICAgICAgICAgIGNhc2UgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVGVDoKLSAgICAgICAgICAg
ICAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKG1fZnJhbWUtPmRvY3VtZW50KCks
IGNhblNtYXJ0Q29weU9yRGVsZXRlKCksIGdyYW51bGFyaXR5LCBraWxsUmluZyk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FS
RDoKKyAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpSSUdIVDoKKyAgICAgICAgICAg
IFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKG1fZnJhbWUtPmRvY3VtZW50
KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCksIGdyYW51bGFyaXR5LCBraWxsUmluZyk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FS
RDoKKyAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpMRUZUOgorICAgICAgICAgICAg
VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChtX2ZyYW1lLT5kb2N1bWVudCgpLCBjYW5T
bWFydENvcHlPckRlbGV0ZSgpLCBncmFudWxhcml0eSwga2lsbFJpbmcpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgcmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3Bl
cmF0aW9uKCk7CiAgICAgfQpAQCAtNDE3LDcgKzQxNyw3IEBAIGNvbnN0IFNpbXBsZUZvbnREYXRh
KiBFZGl0b3I6OmZvbnRGb3JTZWxlY3Rpb24oYm9vbCYgaGFzTXVsdGlwbGVGb250cykgY29uc3QK
ICAgICAgICAgaWYgKG5vZGVUb1JlbW92ZSkgewogICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBl
YzsKICAgICAgICAgICAgIG5vZGVUb1JlbW92ZS0+cmVtb3ZlKGVjKTsKLSAgICAgICAgICAgIEFT
U0VSVChlYyA9PSAwKTsKKyAgICAgICAgICAgIEFTU0VSVCghZWMpOwogICAgICAgICB9CiAKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTQzMiw3ICs0MzIsNyBAQCBjb25zdCBTaW1wbGVGb250
RGF0YSogRWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKGJvb2wmIGhhc011bHRpcGxlRm9udHMpIGNv
bnN0CiAgICAgICAgIC8vIEluIHRoZSBsb29wIGJlbG93LCBuIHNob3VsZCBldmVudHVhbGx5IG1h
dGNoIHBhc3RFbmQgYW5kIG5vdCBiZWNvbWUgbmlsLCBidXQgd2UndmUgc2VlbiBhdCBsZWFzdCBv
bmUKICAgICAgICAgLy8gdW5yZXByb2R1Y2libGUgY2FzZSB3aGVyZSB0aGlzIGRpZG4ndCBoYXBw
ZW4sIHNvIGNoZWNrIGZvciBuaWwgYWxzby4KICAgICAgICAgZm9yIChOb2RlKiBuID0gc3RhcnRO
b2RlOyBuICYmIG4gIT0gcGFzdEVuZDsgbiA9IG4tPnRyYXZlcnNlTmV4dE5vZGUoKSkgewotICAg
ICAgICAgICAgUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IG4tPnJlbmRlcmVyKCk7CisgICAgICAg
ICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbi0+cmVuZGVyZXIoKTsKICAgICAgICAgICAg
IGlmICghcmVuZGVyZXIpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAv
LyBGSVhNRTogQXJlIHRoZXJlIGFueSBub2RlIHR5cGVzIHRoYXQgaGF2ZSByZW5kZXJlcnMsIGJ1
dCB0aGF0IHdlIHNob3VsZCBiZSBza2lwcGluZz8KQEAgLTcxNywxNiArNzE3LDE2IEBAIGJvb2wg
RWRpdG9yOjpkaXNwYXRjaENQUEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyAmZXZlbnRUeXBlLCBD
bGlwYm9hcmRBY2Nlc3NQb2xpCiB2b2lkIEVkaXRvcjo6YXBwbHlTdHlsZShDU1NTdHlsZURlY2xh
cmF0aW9uKiBzdHlsZSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKQogewogICAgIHN3aXRjaCAo
bV9mcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvblR5cGUoKSkgewotICAgICAgICBjYXNlIFZp
c2libGVTZWxlY3Rpb246Ok5vU2VsZWN0aW9uOgotICAgICAgICAgICAgLy8gZG8gbm90aGluZwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Q2FyZXRT
ZWxlY3Rpb246Ci0gICAgICAgICAgICBtX2ZyYW1lLT5jb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUo
c3R5bGUsIGVkaXRpbmdBY3Rpb24pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
VmlzaWJsZVNlbGVjdGlvbjo6UmFuZ2VTZWxlY3Rpb246Ci0gICAgICAgICAgICBpZiAoc3R5bGUp
Ci0gICAgICAgICAgICAgICAgYXBwbHlDb21tYW5kKEFwcGx5U3R5bGVDb21tYW5kOjpjcmVhdGUo
bV9mcmFtZS0+ZG9jdW1lbnQoKSwgc3R5bGUsIGVkaXRpbmdBY3Rpb24pKTsKLSAgICAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxlY3Rpb246CisgICAgICAg
IC8vIGRvIG5vdGhpbmcKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9u
OjpDYXJldFNlbGVjdGlvbjoKKyAgICAgICAgbV9mcmFtZS0+Y29tcHV0ZUFuZFNldFR5cGluZ1N0
eWxlKHN0eWxlLCBlZGl0aW5nQWN0aW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaXNp
YmxlU2VsZWN0aW9uOjpSYW5nZVNlbGVjdGlvbjoKKyAgICAgICAgaWYgKHN0eWxlKQorICAgICAg
ICAgICAgYXBwbHlDb21tYW5kKEFwcGx5U3R5bGVDb21tYW5kOjpjcmVhdGUobV9mcmFtZS0+ZG9j
dW1lbnQoKSwgc3R5bGUsIGVkaXRpbmdBY3Rpb24pKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQog
fQogICAgIApAQCAtNzM4LDIwICs3MzgsMjAgQEAgYm9vbCBFZGl0b3I6OnNob3VsZEFwcGx5U3R5
bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIFJhbmdlKiByYW5nZSkKIHZvaWQgRWRpdG9y
OjphcHBseVBhcmFncmFwaFN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBFZGl0QWN0
aW9uIGVkaXRpbmdBY3Rpb24pCiB7CiAgICAgc3dpdGNoIChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+
c2VsZWN0aW9uVHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxl
Y3Rpb246Ci0gICAgICAgICAgICAvLyBkbyBub3RoaW5nCi0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpDYXJldFNlbGVjdGlvbjoKLSAgICAgICAgY2Fz
ZSBWaXNpYmxlU2VsZWN0aW9uOjpSYW5nZVNlbGVjdGlvbjoKLSAgICAgICAgICAgIGlmIChzdHls
ZSkKLSAgICAgICAgICAgICAgICBhcHBseUNvbW1hbmQoQXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0
ZShtX2ZyYW1lLT5kb2N1bWVudCgpLCBzdHlsZSwgZWRpdGluZ0FjdGlvbiwgQXBwbHlTdHlsZUNv
bW1hbmQ6OkZvcmNlQmxvY2tQcm9wZXJ0aWVzKSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBj
YXNlIFZpc2libGVTZWxlY3Rpb246Ok5vU2VsZWN0aW9uOgorICAgICAgICAvLyBkbyBub3RoaW5n
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Q2FyZXRTZWxlY3Rp
b246CisgICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpSYW5nZVNlbGVjdGlvbjoKKyAgICAgICAg
aWYgKHN0eWxlKQorICAgICAgICAgICAgYXBwbHlDb21tYW5kKEFwcGx5U3R5bGVDb21tYW5kOjpj
cmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQoKSwgc3R5bGUsIGVkaXRpbmdBY3Rpb24sIEFwcGx5U3R5
bGVDb21tYW5kOjpGb3JjZUJsb2NrUHJvcGVydGllcykpOworICAgICAgICBicmVhazsKICAgICB9
CiB9CiAKIHZvaWQgRWRpdG9yOjphcHBseVN0eWxlVG9TZWxlY3Rpb24oQ1NTU3R5bGVEZWNsYXJh
dGlvbiogc3R5bGUsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbikKIHsKLSAgICBpZiAoIXN0eWxl
IHx8IHN0eWxlLT5sZW5ndGgoKSA9PSAwIHx8ICFjYW5FZGl0UmljaGx5KCkpCisgICAgaWYgKCFz
dHlsZSB8fCAhc3R5bGUtPmxlbmd0aCgpIHx8ICFjYW5FZGl0UmljaGx5KCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChjbGllbnQoKSAmJiBjbGllbnQoKS0+c2hvdWxkQXBwbHlTdHlsZShz
dHlsZSwgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpKQpA
QCAtNzYwLDcgKzc2MCw3IEBAIHZvaWQgRWRpdG9yOjphcHBseVN0eWxlVG9TZWxlY3Rpb24oQ1NT
U3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIEVkaXRBY3Rpb24gZWRpdGluCiAKIHZvaWQgRWRpdG9y
OjphcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rpb24oQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5
bGUsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbikKIHsKLSAgICBpZiAoIXN0eWxlIHx8IHN0eWxl
LT5sZW5ndGgoKSA9PSAwIHx8ICFjYW5FZGl0UmljaGx5KCkpCisgICAgaWYgKCFzdHlsZSB8fCAh
c3R5bGUtPmxlbmd0aCgpIHx8ICFjYW5FZGl0UmljaGx5KCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICBpZiAoY2xpZW50KCkgJiYgY2xpZW50KCktPnNob3VsZEFwcGx5U3R5bGUoc3R5bGUs
IG1fZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKSkKQEAgLTc4
NiwxMSArNzg2LDExIEBAIHN0YXRpYyBUcmlTdGF0ZSB0cmlTdGF0ZU9mU3R5bGVJbkNvbXB1dGVk
U3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogZGVzaXJlZFN0eWxlCiAgICAgUmVmUHRyPENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uPiBkaWZmID0gZ2V0UHJvcGVydGllc05vdEluQ29tcHV0ZWRT
dHlsZShkZXNpcmVkU3R5bGUsIGNvbXB1dGVkU3R5bGUpOwogCiAgICAgaWYgKGlnbm9yZVRleHRP
bmx5UHJvcGVydGllcykKLSAgICAgICAgZGlmZi0+cmVtb3ZlUHJvcGVydGllc0luU2V0KHRleHRP
bmx5UHJvcGVydGllcywgc2l6ZW9mKHRleHRPbmx5UHJvcGVydGllcykvc2l6ZW9mKHRleHRPbmx5
UHJvcGVydGllc1swXSkpOworICAgICAgICBkaWZmLT5yZW1vdmVQcm9wZXJ0aWVzSW5TZXQodGV4
dE9ubHlQcm9wZXJ0aWVzLCBzaXplb2YodGV4dE9ubHlQcm9wZXJ0aWVzKSAvIHNpemVvZih0ZXh0
T25seVByb3BlcnRpZXNbMF0pKTsKIAogICAgIGlmICghZGlmZi0+bGVuZ3RoKCkpCiAgICAgICAg
IHJldHVybiBUcnVlVHJpU3RhdGU7Ci0gICAgZWxzZSBpZiAoZGlmZi0+bGVuZ3RoKCkgPT0gZGVz
aXJlZFN0eWxlLT5sZW5ndGgoKSkKKyAgICBpZiAoZGlmZi0+bGVuZ3RoKCkgPT0gZGVzaXJlZFN0
eWxlLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CiAgICAgcmV0dXJu
IE1peGVkVHJpU3RhdGU7CiB9CkBAIC04MDUsNyArODA1LDcgQEAgYm9vbCBFZGl0b3I6OnNlbGVj
dGlvblN0YXJ0SGFzU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0CiAgICAg
aWYgKG5vZGVUb1JlbW92ZSkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAg
ICAgbm9kZVRvUmVtb3ZlLT5yZW1vdmUoZWMpOwotICAgICAgICBBU1NFUlQoZWMgPT0gMCk7Cisg
ICAgICAgIEFTU0VSVCghZWMpOwogICAgIH0KICAgICByZXR1cm4gc3RhdGUgPT0gVHJ1ZVRyaVN0
YXRlOwogfQpAQCAtODIzLDcgKzgyMyw3IEBAIFRyaVN0YXRlIEVkaXRvcjo6c2VsZWN0aW9uSGFz
U3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0CiAgICAgICAgIGlmIChub2Rl
VG9SZW1vdmUpIHsKICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICAg
ICAgbm9kZVRvUmVtb3ZlLT5yZW1vdmUoZWMpOwotICAgICAgICAgICAgQVNTRVJUKGVjID09IDAp
OworICAgICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAg
ICAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5ub2Rl
KCk7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKQEAgLTEwNTEsNyAr
MTA1MSw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZSgpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUtPmRv
Y3VtZW50KCkpOwogICAgIGlmICh0cnlESFRNTFBhc3RlKCkpCi0gICAgICAgIHJldHVybjsgICAg
IC8vIERIVE1MIGRpZCB0aGUgd2hvbGUgb3BlcmF0aW9uCisgICAgICAgIHJldHVybjsgLy8gREhU
TUwgZGlkIHRoZSB3aG9sZSBvcGVyYXRpb24KICAgICBpZiAoIWNhblBhc3RlKCkpCiAgICAgICAg
IHJldHVybjsKICAgICBEb2NMb2FkZXIqIGxvYWRlciA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmRv
Y0xvYWRlcigpOwpAQCAtMTQ4Myw3ICsxNDgzLDcgQEAgdm9pZCBFZGl0b3I6Omlnbm9yZVNwZWxs
aW5nKCkKICAgICAgICAgZnJhbWUoKS0+ZG9jdW1lbnQoKS0+cmVtb3ZlTWFya2VycyhzZWxlY3Rl
ZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpOwogCiAgICAgU3RyaW5nIHRl
eHQgPSBmcmFtZSgpLT5zZWxlY3RlZFRleHQoKTsKLSAgICBBU1NFUlQodGV4dC5sZW5ndGgoKSAh
PSAwKTsKKyAgICBBU1NFUlQodGV4dC5sZW5ndGgoKSk7CiAgICAgY2xpZW50KCktPmlnbm9yZVdv
cmRJblNwZWxsRG9jdW1lbnQodGV4dCk7CiB9CiAKQEAgLTE0OTYsNyArMTQ5Niw3IEBAIHZvaWQg
RWRpdG9yOjpsZWFyblNwZWxsaW5nKCkKICAgICAvLyBsZWFybmVkIHdvcmQsIHNlZSA8cmRhcjov
L3Byb2JsZW0vNTM5NjA3Mj4uCiAKICAgICBTdHJpbmcgdGV4dCA9IGZyYW1lKCktPnNlbGVjdGVk
VGV4dCgpOwotICAgIEFTU0VSVCh0ZXh0Lmxlbmd0aCgpICE9IDApOworICAgIEFTU0VSVCh0ZXh0
Lmxlbmd0aCgpKTsKICAgICBjbGllbnQoKS0+bGVhcm5Xb3JkKHRleHQpOwogfQogCkBAIC0xNTI3
LDcgKzE1MjcsNyBAQCBzdGF0aWMgU3RyaW5nIGZpbmRGaXJzdE1pc3NwZWxsaW5nSW5SYW5nZShF
ZGl0b3JDbGllbnQqIGNsaWVudCwgUmFuZ2UqIHNlYXJjaFJhbgogICAgICAgICAgICAgLy8gbW9y
ZSByb2J1c3QgYWdhaW5zdCBiYWQgaW5wdXQgb24gcmVsZWFzZSBidWlsZHMuCiAgICAgICAgICAg
ICBBU1NFUlQobWlzc3BlbGxpbmdMZW5ndGggPj0gMCk7CiAgICAgICAgICAgICBBU1NFUlQobWlz
c3BlbGxpbmdMb2NhdGlvbiA+PSAtMSk7Ci0gICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxpbmdM
ZW5ndGggPT0gMCB8fCBtaXNzcGVsbGluZ0xvY2F0aW9uID49IDApOworICAgICAgICAgICAgQVNT
RVJUKCFtaXNzcGVsbGluZ0xlbmd0aCB8fCBtaXNzcGVsbGluZ0xvY2F0aW9uID49IDApOwogICAg
ICAgICAgICAgQVNTRVJUKG1pc3NwZWxsaW5nTG9jYXRpb24gPCBsZW4pOwogICAgICAgICAgICAg
QVNTRVJUKG1pc3NwZWxsaW5nTGVuZ3RoIDw9IGxlbik7CiAgICAgICAgICAgICBBU1NFUlQobWlz
c3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoIDw9IGxlbik7CkBAIC0xNTQ3LDcg
KzE1NDcsNyBAQCBzdGF0aWMgU3RyaW5nIGZpbmRGaXJzdE1pc3NwZWxsaW5nSW5SYW5nZShFZGl0
b3JDbGllbnQqIGNsaWVudCwgUmFuZ2UqIHNlYXJjaFJhbgogICAgICAgICAgICAgICAgIC8vIFN0
b3JlIG1hcmtlciBmb3IgbWlzc3BlbGxlZCB3b3JkLgogICAgICAgICAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgICAgICAgICAgICAgIG1pc3NwZWxsaW5nUmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKGVjKS0+ZG9jdW1lbnQoKS0+YWRkTWFya2VyKG1pc3NwZWxsaW5nUmFuZ2UuZ2V0KCks
IERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGVjID09
IDApOworICAgICAgICAgICAgICAgIEFTU0VSVCghZWMpOwogCiAgICAgICAgICAgICAgICAgLy8g
QmFpbCBvdXQgaWYgd2UncmUgbWFya2luZyBvbmx5IHRoZSBmaXJzdCBtaXNzcGVsbGluZywgYW5k
IG5vdCBhbGwgaW5zdGFuY2VzLgogICAgICAgICAgICAgICAgIGlmICghbWFya0FsbCkKQEAgLTE2
MTAsNyArMTYxMCw3IEBAIHN0YXRpYyBpbnQgZmluZEZpcnN0R3JhbW1hckRldGFpbEluUmFuZ2Uo
Y29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBncmFtbWFyRGV0CiAgICAgICAgICAgICBSZWZQ
dHI8UmFuZ2U+IGJhZEdyYW1tYXJSYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2Uoc2VhcmNo
UmFuZ2UsIGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiAtIHN0YXJ0T2Zmc2V0ICsgZGV0YWlsLT5s
b2NhdGlvbiwgZGV0YWlsLT5sZW5ndGgpOwogICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgICAgICAgICBiYWRHcmFtbWFyUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKGVjKS0+ZG9j
dW1lbnQoKS0+YWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6
OkdyYW1tYXIsIGRldGFpbC0+dXNlckRlc2NyaXB0aW9uKTsKLSAgICAgICAgICAgIEFTU0VSVChl
YyA9PSAwKTsKKyAgICAgICAgICAgIEFTU0VSVCghZWMpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICAvLyBSZW1lbWJlciB0aGlzIGRldGFpbCBvbmx5IGlmIGl0J3MgZWFybGllciB0aGFu
IG91ciBjdXJyZW50IGNhbmRpZGF0ZSAodGhlIGRldGFpbHMgYXJlbid0IGluIGEgZ3VhcmFudGVl
ZCBvcmRlcikKQEAgLTE2NTYsNyArMTY1Niw3IEBAIHN0YXRpYyBTdHJpbmcgZmluZEZpcnN0QmFk
R3JhbW1hckluUmFuZ2UoRWRpdG9yQ2xpZW50KiBjbGllbnQsIFJhbmdlKiBzZWFyY2hSYW5nCiAg
ICAgICAgIGludCBiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoID0gMDsKICAgICAgICAgY2xpZW50LT5j
aGVja0dyYW1tYXJPZlN0cmluZyhwYXJhZ3JhcGhTdHJpbmcuY2hhcmFjdGVycygpICsgc3RhcnRP
ZmZzZXQsIHBhcmFncmFwaFN0cmluZy5sZW5ndGgoKSAtIHN0YXJ0T2Zmc2V0LCBncmFtbWFyRGV0
YWlscywgJmJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgJmJhZEdyYW1tYXJQaHJhc2VMZW5ndGgp
OwogICAgICAgICAKLSAgICAgICAgaWYgKGJhZEdyYW1tYXJQaHJhc2VMZW5ndGggPT0gMCkgewor
ICAgICAgICBpZiAoIWJhZEdyYW1tYXJQaHJhc2VMZW5ndGgpIHsKICAgICAgICAgICAgIEFTU0VS
VChiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gPT0gLTEpOwogICAgICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogICAgICAgICB9CkBAIC0xNzU4LDEzICsxNzU4LDE2IEBAIHN0YXRpYyBTdHJpbmcg
ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXJJblJhbmdlKEVkaXRvckNsaWVudCogY2xp
ZW50LCBSYW5nCiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGgg
PiAwICYmIHJlc3VsdC0+bG9jYXRpb24gPj0gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBz
cGVsbGluZ0xvY2F0aW9uID0gcmVzdWx0LT5sb2NhdGlvbjsKICAgICAgICAgICAgICAgICAgICAg
ICAgIG1pc3NwZWxsZWRXb3JkID0gcGFyYWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyZXN1bHQtPmxv
Y2F0aW9uLCByZXN1bHQtPmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
bWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkgIT0gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQobWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hlY2tHcmFtbWFyICYmIHJl
c3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciAmJiByZXN1bHQtPmxvY2F0aW9u
IDwgY3VycmVudEVuZE9mZnNldCAmJiByZXN1bHQtPmxvY2F0aW9uICsgcmVzdWx0LT5sZW5ndGgg
PiBjdXJyZW50U3RhcnRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgcmVzdWx0LT50eXBlID09IFRleHRDaGVj
a2luZ1R5cGVHcmFtbWFyICYmIHJlc3VsdC0+bG9jYXRpb24gPCBjdXJyZW50RW5kT2Zmc2V0ICYm
IHJlc3VsdC0+bG9jYXRpb24gKyByZXN1bHQtPmxlbmd0aCA+IGN1cnJlbnRTdGFydE9mZnNldCkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC0+bGVuZ3RoID4gMCAmJiBy
ZXN1bHQtPmxvY2F0aW9uID49IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgY2Fu
J3Qgc3RvcCBhZnRlciB0aGUgZmlyc3QgZ3JhbW1hciByZXN1bHQsIHNpbmNlIHRoZXJlIG1pZ2h0
IHN0aWxsIGJlIGEgc3BlbGxpbmcgcmVzdWx0IGFmdGVyCiAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBpdCBiZWdpbnMgYnV0IGJlZm9yZSB0aGUgZmlyc3QgZGV0YWlsIGluIGl0LCBidXQgd2Ug
Y2FuIHN0b3AgaWYgd2UgZmluZCBhIHNlY29uZCBncmFtbWFyIHJlc3VsdC4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChmb3VuZEdyYW1tYXIpIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGZvdW5kR3JhbW1hcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCByZXN1
bHQtPmRldGFpbHMuc2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHcmFtbWFyRGV0YWlsKiBkZXRhaWwgPSAmcmVzdWx0LT5kZXRhaWxzW2pdOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwtPmxlbmd0aCA+IDAgJiYgZGV0YWls
LT5sb2NhdGlvbiA+PSAwKTsKQEAgLTE3NzgsNyArMTc4MSw3IEBAIHN0YXRpYyBTdHJpbmcgZmlu
ZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXJJblJhbmdlKEVkaXRvckNsaWVudCogY2xpZW50
LCBSYW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hclBocmFzZUxvY2F0aW9u
ID0gcmVzdWx0LT5sb2NhdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRHcmFt
bWFyRGV0YWlsID0gcmVzdWx0LT5kZXRhaWxzW2dyYW1tYXJEZXRhaWxJbmRleF07CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaFN0cmluZy5z
dWJzdHJpbmcocmVzdWx0LT5sb2NhdGlvbiwgcmVzdWx0LT5sZW5ndGgpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChiYWRHcmFtbWFyUGhyYXNlLmxlbmd0aCgpICE9IDApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChiYWRHcmFtbWFyUGhyYXNlLmxlbmd0
aCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIH0KQEAgLTE3OTMsNyArMTc5Niw5IEBAIHN0YXRpYyBTdHJpbmcgZmlu
ZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXJJblJhbmdlKEVkaXRvckNsaWVudCogY2xpZW50
LCBSYW5nCiAgICAgICAgICAgICAgICAgICAgIG91dEZpcnN0Rm91bmRPZmZzZXQgPSBzcGVsbGlu
Z09mZnNldDsKICAgICAgICAgICAgICAgICAgICAgZmlyc3RGb3VuZEl0ZW0gPSBtaXNzcGVsbGVk
V29yZDsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChjaGVja0dyYW1tYXIgJiYgIWJhZEdyYW1tYXJQaHJhc2UuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiAhYmFk
R3JhbW1hclBocmFzZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IGdyYW1t
YXJQaHJhc2VPZmZzZXQgPSBncmFtbWFyUGhyYXNlTG9jYXRpb24gLSBjdXJyZW50U3RhcnRPZmZz
ZXQ7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZmlyc3RJdGVyYXRpb24pIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJh
bmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKGVjKS0+ZG9jdW1lbnQo
KSwgc2VhcmNoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKSk7CkBAIC0xODU2LDcgKzE4NjEsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4
dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgIAogICAgICAg
ICBQb3NpdGlvbiByYW5nZUNvbXBsaWFudFBvc2l0aW9uID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFs
ZW50KHBvc2l0aW9uKTsKICAgICAgICAgc3BlbGxpbmdTZWFyY2hSYW5nZS0+c2V0U3RhcnQocmFu
Z2VDb21wbGlhbnRQb3NpdGlvbi5ub2RlKCksIHJhbmdlQ29tcGxpYW50UG9zaXRpb24uZGVwcmVj
YXRlZEVkaXRpbmdPZmZzZXQoKSwgZWMpOwotICAgICAgICBzdGFydGVkV2l0aFNlbGVjdGlvbiA9
IGZhbHNlOyAgIC8vIHdvbid0IG5lZWQgdG8gd3JhcAorICAgICAgICBzdGFydGVkV2l0aFNlbGVj
dGlvbiA9IGZhbHNlOyAvLyB3b24ndCBuZWVkIHRvIHdyYXAKICAgICB9CiAgICAgCiAgICAgLy8g
dG9wTm9kZSBkZWZpbmVzIHRoZSB3aG9sZSByYW5nZSB3ZSB3YW50IHRvIG9wZXJhdGUgb24gCkBA
IC0xODY4LDEzICsxODczLDEzIEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxp
bmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAvLyBhdCBhIHdvcmQgYm91bmRhcnku
IEdvaW5nIGJhY2sgYnkgb25lIGNoYXIgYW5kIHRoZW4gZm9yd2FyZCBieSBhIHdvcmQgZG9lcyB0
aGUgdHJpY2suCiAgICAgaWYgKHN0YXJ0ZWRXaXRoU2VsZWN0aW9uKSB7CiAgICAgICAgIFZpc2li
bGVQb3NpdGlvbiBvbmVCZWZvcmVTdGFydCA9IHN0YXJ0VmlzaWJsZVBvc2l0aW9uKHNwZWxsaW5n
U2VhcmNoUmFuZ2UuZ2V0KCksIERPV05TVFJFQU0pLnByZXZpb3VzKCk7Ci0gICAgICAgIGlmIChv
bmVCZWZvcmVTdGFydC5pc05vdE51bGwoKSkgeworICAgICAgICBpZiAob25lQmVmb3JlU3RhcnQu
aXNOb3ROdWxsKCkpCiAgICAgICAgICAgICBzZXRTdGFydChzcGVsbGluZ1NlYXJjaFJhbmdlLmdl
dCgpLCBlbmRPZldvcmQob25lQmVmb3JlU3RhcnQpKTsKLSAgICAgICAgfSAvLyBlbHNlIHdlIHdl
cmUgYWxyZWFkeSBhdCB0aGUgc3RhcnQgb2YgdGhlIGVkaXRhYmxlIG5vZGUKKyAgICAgICAgLy8g
ZWxzZSB3ZSB3ZXJlIGFscmVhZHkgYXQgdGhlIHN0YXJ0IG9mIHRoZSBlZGl0YWJsZSBub2RlCiAg
ICAgfQogICAgIAogICAgIGlmIChzcGVsbGluZ1NlYXJjaFJhbmdlLT5jb2xsYXBzZWQoZWMpKQot
ICAgICAgICByZXR1cm47ICAgICAgIC8vIG5vdGhpbmcgdG8gc2VhcmNoIGluCisgICAgICAgIHJl
dHVybjsgLy8gbm90aGluZyB0byBzZWFyY2ggaW4KICAgICAKICAgICAvLyBHZXQgdGhlIHNwZWxs
IGNoZWNrZXIgaWYgaXQgaXMgYXZhaWxhYmxlCiAgICAgaWYgKCFjbGllbnQoKSkKQEAgLTE4ODMs
NyArMTg4OCw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBz
dGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAvLyBXZSBnbyB0byB0aGUgZW5kIG9mIG91ciBmaXJz
dCByYW5nZSBpbnN0ZWFkIG9mIHRoZSBzdGFydCBvZiBpdCwganVzdCB0byBiZSBzdXJlCiAgICAg
Ly8gd2UgZG9uJ3QgZ2V0IGZvaWxlZCBieSBhbnkgd29yZCBib3VuZGFyeSBwcm9ibGVtcyBhdCB0
aGUgc3RhcnQuICBJdCBtZWFucyB3ZSBtaWdodAogICAgIC8vIGRvIGEgdGlueSBiaXQgbW9yZSBz
ZWFyY2hpbmcuCi0gICAgTm9kZSAqc2VhcmNoRW5kTm9kZUFmdGVyV3JhcCA9IHNwZWxsaW5nU2Vh
cmNoUmFuZ2UtPmVuZENvbnRhaW5lcihlYyk7CisgICAgTm9kZSogc2VhcmNoRW5kTm9kZUFmdGVy
V3JhcCA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmVuZENvbnRhaW5lcihlYyk7CiAgICAgaW50IHNl
YXJjaEVuZE9mZnNldEFmdGVyV3JhcCA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmVuZE9mZnNldChl
Yyk7CiAgICAgCiAgICAgaW50IG1pc3NwZWxsaW5nT2Zmc2V0ID0gMDsKQEAgLTE5OTYsNyArMjAw
MSw3IEBAIGJvb2wgRWRpdG9yOjppc1NlbGVjdGlvbk1pc3NwZWxsZWQoKQogewogICAgIFN0cmlu
ZyBzZWxlY3RlZFN0cmluZyA9IGZyYW1lKCktPnNlbGVjdGVkVGV4dCgpOwogICAgIGludCBsZW5n
dGggPSBzZWxlY3RlZFN0cmluZy5sZW5ndGgoKTsKLSAgICBpZiAobGVuZ3RoID09IDApCisgICAg
aWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghY2xpZW50KCkp
CkBAIC0yMDQ5LDcgKzIwNTQsNyBAQCBzdGF0aWMgYm9vbCBpc1JhbmdlVW5ncmFtbWF0aWNhbChF
ZGl0b3JDbGllbnQqIGNsaWVudCwgUmFuZ2UgKnJhbmdlLCBWZWN0b3I8U3RyaQogICAgIEFTU0VS
VChncmFtbWFyRGV0YWlsLmxvY2F0aW9uID49IDAgJiYgZ3JhbW1hckRldGFpbC5sZW5ndGggPiAw
KTsKICAgICAKICAgICAvLyBCYWQgZ3JhbW1hciwgYnV0IHN0YXJ0IG9mIGRldGFpbCAoZS5nLiB1
bmdyYW1tYXRpY2FsIHdvcmQpIGRvZXNuJ3QgbWF0Y2ggc3RhcnQgb2YgcmFuZ2UKLSAgICBpZiAo
Z3JhbW1hckRldGFpbC5sb2NhdGlvbiArIGdyYW1tYXJQaHJhc2VPZmZzZXQgIT0gMCkKKyAgICBp
ZiAoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiArIGdyYW1tYXJQaHJhc2VPZmZzZXQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBCYWQgZ3JhbW1hciBhdCBzdGFydCBvZiByYW5n
ZSwgYnV0IGVuZCBvZiBiYWQgZ3JhbW1hciBpcyBiZWZvcmUgb3IgYWZ0ZXIgZW5kIG9mIHJhbmdl
CkBAIC0yMDkxLDcgKzIwOTYsNyBAQCBWZWN0b3I8U3RyaW5nPiBFZGl0b3I6Omd1ZXNzZXNGb3JV
bmdyYW1tYXRpY2FsU2VsZWN0aW9uKCkKIFZlY3RvcjxTdHJpbmc+IEVkaXRvcjo6Z3Vlc3Nlc0Zv
ck1pc3NwZWxsZWRTZWxlY3Rpb24oKQogewogICAgIFN0cmluZyBzZWxlY3RlZFN0cmluZyA9IGZy
YW1lKCktPnNlbGVjdGVkVGV4dCgpOwotICAgIEFTU0VSVChzZWxlY3RlZFN0cmluZy5sZW5ndGgo
KSAhPSAwKTsKKyAgICBBU1NFUlQoc2VsZWN0ZWRTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgVmVj
dG9yPFN0cmluZz4gZ3Vlc3NlczsKICAgICBpZiAoY2xpZW50KCkpCkBAIC0yMTE2LDcgKzIxMjEs
NyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZ3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1h
dGljYWxSYW5nZShFZGl0b3JDbGllbnQqIGNsaQogICAgIFN0cmluZyBwYXJhZ3JhcGhTdHJpbmc7
CiAgICAgUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhSYW5nZSA9IHBhcmFncmFwaEFsaWduZWRSYW5n
ZUZvclJhbmdlKHJhbmdlLCByYW5nZVN0YXJ0T2Zmc2V0LCBwYXJhZ3JhcGhTdHJpbmcpOwogICAg
IGludCByYW5nZUxlbmd0aCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UpOwotICAg
IGlmIChyYW5nZUxlbmd0aCA9PSAwIHx8IHBhcmFncmFwaFN0cmluZy5sZW5ndGgoKSA9PSAwKQor
ICAgIGlmICghcmFuZ2VMZW5ndGggfHwgIXBhcmFncmFwaFN0cmluZy5sZW5ndGgoKSkKICAgICAg
ICAgcmV0dXJuIGd1ZXNzZXM7CiAKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1
bHRzOwpAQCAtMjEyNyw3ICsyMTMyLDcgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGd1ZXNzZXNG
b3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UoRWRpdG9yQ2xpZW50KiBjbGkKICAgICAg
ICAgY29uc3QgVGV4dENoZWNraW5nUmVzdWx0KiByZXN1bHQgPSAmcmVzdWx0c1tpXTsKICAgICAg
ICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgcmVzdWx0
LT5sb2NhdGlvbiA9PSByYW5nZVN0YXJ0T2Zmc2V0ICYmIHJlc3VsdC0+bGVuZ3RoID09IHJhbmdl
TGVuZ3RoKSB7CiAgICAgICAgICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGhT
dHJpbmcuc3Vic3RyaW5nKHJhbmdlU3RhcnRPZmZzZXQsIHJhbmdlTGVuZ3RoKTsKLSAgICAgICAg
ICAgIEFTU0VSVChtaXNzcGVsbGVkV29yZC5sZW5ndGgoKSAhPSAwKTsKKyAgICAgICAgICAgIEFT
U0VSVChtaXNzcGVsbGVkV29yZC5sZW5ndGgoKSk7CiAgICAgICAgICAgICBjbGllbnQtPmdldEd1
ZXNzZXNGb3JXb3JkKG1pc3NwZWxsZWRXb3JkLCBndWVzc2VzKTsKICAgICAgICAgICAgIGNsaWVu
dC0+dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChtaXNzcGVsbGVkV29yZCk7CiAg
ICAgICAgICAgICBtaXNzcGVsbGVkID0gdHJ1ZTsKQEAgLTIxNDYsNyArMjE1MSw3IEBAIHN0YXRp
YyBWZWN0b3I8U3RyaW5nPiBndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdl
KEVkaXRvckNsaWVudCogY2xpCiAgICAgICAgICAgICAgICAgQVNTRVJUKGRldGFpbC0+bGVuZ3Ro
ID4gMCAmJiBkZXRhaWwtPmxvY2F0aW9uID49IDApOwogICAgICAgICAgICAgICAgIGlmIChyZXN1
bHQtPmxvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiA9PSByYW5nZVN0YXJ0T2Zmc2V0ICYmIGRl
dGFpbC0+bGVuZ3RoID09IHJhbmdlTGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgIFN0cmlu
ZyBiYWRHcmFtbWFyUGhyYXNlID0gcGFyYWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyZXN1bHQtPmxv
Y2F0aW9uLCByZXN1bHQtPmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChiYWRH
cmFtbWFyUGhyYXNlLmxlbmd0aCgpICE9IDApOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
YmFkR3JhbW1hclBocmFzZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgayA9IDA7IGsgPCBkZXRhaWwtPmd1ZXNzZXMuc2l6ZSgpOyBrKyspCiAgICAgICAgICAg
ICAgICAgICAgICAgICBndWVzc2VzLmFwcGVuZChkZXRhaWwtPmd1ZXNzZXNba10pOwogICAgICAg
ICAgICAgICAgICAgICBjbGllbnQtPnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhi
YWRHcmFtbWFyUGhyYXNlLCAqZGV0YWlsKTsKQEAgLTIyMzYsNyArMjI0MSw3IEBAIHZvaWQgRWRp
dG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1Bvc2l0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiAmcCkKICAgICBtYXJrTWlzc3BlbGxpbmdzKFZpc2libGVTZWxlY3Rpb24oc3RhcnRP
ZldvcmQocCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpLCBlbmRPZldvcmQocCwgUmlnaHRXb3JkSWZP
bkJvdW5kYXJ5KSksIG1pc3NwZWxsaW5nUmFuZ2UpOwogCiAgICAgLy8gQXV0b2NvcnJlY3QgdGhl
IG1pc3NwZWxsZWQgd29yZC4KLSAgICBpZiAobWlzc3BlbGxpbmdSYW5nZSA9PSAwKQorICAgIGlm
ICghbWlzc3BlbGxpbmdSYW5nZSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIEdldCB0
aGUgbWlzc3BlbGxlZCB3b3JkLgpAQCAtMjQ2OCw4ICsyNDczLDggQEAgdm9pZCBFZGl0b3I6Om1h
cmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoYm9vbCBtYXJrU3BlbGxpbmcs
IFJhbmdlKgogICAgICAgICAgICAgICAgICAgICBncmFtbWFyUmFuZ2UtPnN0YXJ0Q29udGFpbmVy
KGVjKS0+ZG9jdW1lbnQoKS0+YWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZS5nZXQoKSwgRG9jdW1l
bnRNYXJrZXI6OkdyYW1tYXIsIGRldGFpbC0+dXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAocGVyZm9ybVRleHRDaGVj
a2luZ1JlcGxhY2VtZW50cyAmJiByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8PSBzcGVs
bGluZ1JhbmdlRW5kT2Zmc2V0ICYmIHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoID49IHNw
ZWxsaW5nUmFuZ2VTdGFydE9mZnNldCAmJgotICAgICAgICAgICAgICAgICAgICAocmVzdWx0LT50
eXBlID09IFRleHRDaGVja2luZ1R5cGVMaW5rCisgICAgICAgIH0gZWxzZSBpZiAocGVyZm9ybVRl
eHRDaGVja2luZ1JlcGxhY2VtZW50cyAmJiByZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8
PSBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ICYmIHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3Ro
ID49IHNwZWxsaW5nUmFuZ2VTdGFydE9mZnNldAorICAgICAgICAgICAgICAgICAgICAmJiAocmVz
dWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVMaW5rCiAgICAgICAgICAgICAgICAgICAgIHx8
IHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlUXVvdGUKICAgICAgICAgICAgICAgICAg
ICAgfHwgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVEYXNoCiAgICAgICAgICAgICAg
ICAgICAgIHx8IHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCAzNGZhNDZkLi44NGQ1NzMxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkVkaXRvci5oIgogCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgi
CiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCkBAIC0zNSw3ICszNiw2
IEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ3JlYXRlTGlua0NvbW1hbmQuaCIK
ICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCi0jaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5j
bHVkZSAiRWRpdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVu
dEhhbmRsZXIuaCIKQEAgLTk3LDEzICs5NywxMyBAQCBzdGF0aWMgYm9vbCBhcHBseUNvbW1hbmRU
b0ZyYW1lKEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBYwog
ewogICAgIC8vIEZJWE1FOiBXZSBkb24ndCBjYWxsIHNob3VsZEFwcGx5U3R5bGUgd2hlbiB0aGUg
c291cmNlIGlzIERPTTsgaXMgdGhlcmUgYSBnb29kIHJlYXNvbiBmb3IgdGhhdD8KICAgICBzd2l0
Y2ggKHNvdXJjZSkgewotICAgICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoK
LSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZVRvU2VsZWN0aW9uKHN0eWxl
LCBhY3Rpb24pOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGNhc2UgQ29tbWFu
ZEZyb21ET006Ci0gICAgICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToK
LSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZShzdHlsZSk7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseVN0eWxlVG9TZWxlY3Rpb24oc3R5bGUsIGFj
dGlvbik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQ29tbWFuZEZyb21ET006Cisg
ICAgY2FzZSBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgorICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmFwcGx5U3R5bGUoc3R5bGUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQzLDE1
ICsxNDMsMTUgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVRvZ2dsZVN0eWxlSW5MaXN0KEZyYW1lKiBm
cmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEUKICAgICB9IGVsc2UgaWYgKHNlbGVj
dGVkQ1NTVmFsdWUtPmNzc1RleHQoKSA9PSAibm9uZSIpCiAgICAgICAgIG5ld1N0eWxlID0gdmFs
dWUtPmNzc1RleHQoKTsKIAotICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICBBU1NFUlQoIWVjKTsK
ICAgICBpZiAobm9kZVRvUmVtb3ZlKSB7CiAgICAgICAgIG5vZGVUb1JlbW92ZS0+cmVtb3ZlKGVj
KTsKLSAgICAgICAgQVNTRVJUKGVjID09IDApOworICAgICAgICBBU1NFUlQoIWVjKTsKICAgICB9
CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGhhdmluZyB0byBjb252ZXJ0IG5ldyBz
dHlsZSBpbnRvIHRleHQuICBXZSBzaG91bGQgaGF2ZSBzZXRQcm9wZXJ0eUNTU1ZhbHVlLgogICAg
IFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbmV3TXV0YWJsZVN0eWxlID0gQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOwotICAgIG5ld011dGFibGVTdHlsZS0+
c2V0UHJvcGVydHkocHJvcGVydHlJRCwgbmV3U3R5bGUsZWMpOworICAgIG5ld011dGFibGVTdHls
ZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgbmV3U3R5bGUsIGVjKTsKICAgICByZXR1cm4gYXBw
bHlDb21tYW5kVG9GcmFtZShmcmFtZSwgc291cmNlLCBhY3Rpb24sIG5ld011dGFibGVTdHlsZS5n
ZXQoKSk7CiB9CiAKQEAgLTE4MCwxMyArMTgwLDEzIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVBcHBs
eVBhcmFncmFwaFN0eWxlKEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2Us
CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIHByb3BlcnR5VmFsdWUpOwogICAg
IC8vIEZJWE1FOiBXZSBkb24ndCBjYWxsIHNob3VsZEFwcGx5U3R5bGUgd2hlbiB0aGUgc291cmNl
IGlzIERPTTsgaXMgdGhlcmUgYSBnb29kIHJlYXNvbiBmb3IgdGhhdD8KICAgICBzd2l0Y2ggKHNv
dXJjZSkgewotICAgICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKLSAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9uKHN0
eWxlLmdldCgpLCBhY3Rpb24pOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGNh
c2UgQ29tbWFuZEZyb21ET006Ci0gICAgICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlcklu
dGVyZmFjZToKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlQYXJhZ3JhcGhTdHls
ZShzdHlsZS5nZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIENvbW1h
bmRGcm9tTWVudU9yS2V5QmluZGluZzoKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseVBh
cmFncmFwaFN0eWxlVG9TZWxlY3Rpb24oc3R5bGUuZ2V0KCksIGFjdGlvbik7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGNhc2UgQ29tbWFuZEZyb21ET006CisgICAgY2FzZSBDb21tYW5kRnJv
bURPTVdpdGhVc2VySW50ZXJmYWNlOgorICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5UGFy
YWdyYXBoU3R5bGUoc3R5bGUuZ2V0KCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzA1LDE2ICsz
MDUsMTYgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUN1dChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxl
dGUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25z
dCBTdHJpbmcmKQogewogICAgIHN3aXRjaCAoc291cmNlKSB7Ci0gICAgICAgIGNhc2UgQ29tbWFu
ZEZyb21NZW51T3JLZXlCaW5kaW5nOgotICAgICAgICAgICAgLy8gRG9lc24ndCBtb2RpZnkgdGhl
IHRleHQgaWYgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlzbid0IGEgcmFuZ2UuCi0gICAgICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPnBlcmZvcm1EZWxldGUoKTsKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgotICAgICAgICBjYXNlIENvbW1hbmRG
cm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6Ci0gICAgICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBz
ZWxlY3Rpb24gaXMgYSBjYXJldCwgZGVsZXRlIHRoZSBwcmVjZWRpbmcgY2hhcmFjdGVyLiBJRSBw
ZXJmb3JtcyBmb3J3YXJkRGVsZXRlLCBidXQgd2UgY3VycmVudGx5IHNpZGUgd2l0aCBGaXJlZm94
LgotICAgICAgICAgICAgLy8gRG9lc24ndCBzY3JvbGwgdG8gbWFrZSB0aGUgc2VsZWN0aW9uIHZp
c2libGUsIG9yIG1vZGlmeSB0aGUga2lsbCByaW5nICh0aGlzIHRpbWUsIHNpZGluZyB3aXRoIElF
LCBub3QgRmlyZWZveCkuCi0gICAgICAgICAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVz
c2VkKGZyYW1lLT5kb2N1bWVudCgpLCBmcmFtZS0+c2VsZWN0aW9uR3JhbnVsYXJpdHkoKSA9PSBX
b3JkR3JhbnVsYXJpdHkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBDb21t
YW5kRnJvbU1lbnVPcktleUJpbmRpbmc6CisgICAgICAgIC8vIERvZXNuJ3QgbW9kaWZ5IHRoZSB0
ZXh0IGlmIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBpc24ndCBhIHJhbmdlLgorICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPnBlcmZvcm1EZWxldGUoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
Y2FzZSBDb21tYW5kRnJvbURPTToKKyAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRl
cmZhY2U6CisgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBpcyBhIGNhcmV0LCBk
ZWxldGUgdGhlIHByZWNlZGluZyBjaGFyYWN0ZXIuIElFIHBlcmZvcm1zIGZvcndhcmREZWxldGUs
IGJ1dCB3ZSBjdXJyZW50bHkgc2lkZSB3aXRoIEZpcmVmb3guCisgICAgICAgIC8vIERvZXNuJ3Qg
c2Nyb2xsIHRvIG1ha2UgdGhlIHNlbGVjdGlvbiB2aXNpYmxlLCBvciBtb2RpZnkgdGhlIGtpbGwg
cmluZyAodGhpcyB0aW1lLCBzaWRpbmcgd2l0aCBJRSwgbm90IEZpcmVmb3gpLgorICAgICAgICBU
eXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKGZyYW1lLT5kb2N1bWVudCgpLCBmcmFtZS0+
c2VsZWN0aW9uR3JhbnVsYXJpdHkoKSA9PSBXb3JkR3JhbnVsYXJpdHkpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtNDM2LDE2ICs0MzYsMTYgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUZvcm1hdEJsb2Nr
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdAogc3RhdGlj
IGJvb2wgZXhlY3V0ZUZvcndhcmREZWxldGUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2Ugc291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIHN3aXRjaCAoc291cmNl
KSB7Ci0gICAgICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5nOgotICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBDb21tYW5kRnJvbURPTToKLSAgICAgICAg
Y2FzZSBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgotICAgICAgICAgICAgLy8gRG9l
c24ndCBzY3JvbGwgdG8gbWFrZSB0aGUgc2VsZWN0aW9uIHZpc2libGUsIG9yIG1vZGlmeSB0aGUg
a2lsbCByaW5nLgotICAgICAgICAgICAgLy8gRm9yd2FyZERlbGV0ZSBpcyBub3QgaW1wbGVtZW50
ZWQgaW4gSUUgb3IgRmlyZWZveCwgc28gdGhpcyBiZWhhdmlvciBpcyBvbmx5IG5lZWRlZCBmb3IK
LSAgICAgICAgICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBvdXJzZWx2ZXMsIGFu
ZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBEZWxldGUuCi0gICAgICAgICAgICBUeXBpbmdDb21tYW5k
Ojpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChmcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKKyAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQ29tbWFuZEZyb21ET006CisgICAgY2FzZSBDb21t
YW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgorICAgICAgICAvLyBEb2Vzbid0IHNjcm9sbCB0
byBtYWtlIHRoZSBzZWxlY3Rpb24gdmlzaWJsZSwgb3IgbW9kaWZ5IHRoZSBraWxsIHJpbmcuCisg
ICAgICAgIC8vIEZvcndhcmREZWxldGUgaXMgbm90IGltcGxlbWVudGVkIGluIElFIG9yIEZpcmVm
b3gsIHNvIHRoaXMgYmVoYXZpb3IgaXMgb25seSBuZWVkZWQgZm9yCisgICAgICAgIC8vIGJhY2t3
YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBvdXJzZWx2ZXMsIGFuZCBmb3IgY29uc2lzdGVuY3kgd2l0
aCBEZWxldGUuCisgICAgICAgIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2Vk
KGZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTQ5MiwxNSArNDkyLDE1
IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRJbWFnZShGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QKIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRMaW5l
QnJlYWsoRnJhbWUqIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291
cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIHN3aXRjaCAoc291cmNlKSB7Ci0gICAgICAgIGNh
c2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5nOgotICAgICAgICAgICAgcmV0dXJuIHRhcmdl
dEZyYW1lKGZyYW1lLCBldmVudCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUZXh0SW5wdXRFdmVu
dCgiXG4iLCBldmVudCwgdHJ1ZSk7Ci0gICAgICAgIGNhc2UgQ29tbWFuZEZyb21ET006Ci0gICAg
ICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToKLSAgICAgICAgICAgIC8v
IERvZXNuJ3Qgc2Nyb2xsIHRvIG1ha2UgdGhlIHNlbGVjdGlvbiB2aXNpYmxlLCBvciBtb2RpZnkg
dGhlIGtpbGwgcmluZy4KLSAgICAgICAgICAgIC8vIEluc2VydExpbmVCcmVhayBpcyBub3QgaW1w
bGVtZW50ZWQgaW4gSUUgb3IgRmlyZWZveCwgc28gdGhpcyBiZWhhdmlvciBpcyBvbmx5IG5lZWRl
ZCBmb3IKLSAgICAgICAgICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBvdXJzZWx2
ZXMsIGFuZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBjb21tYW5kcy4KLSAgICAgICAgICAg
IFR5cGluZ0NvbW1hbmQ6Omluc2VydExpbmVCcmVhayhmcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGlu
ZzoKKyAgICAgICAgcmV0dXJuIHRhcmdldEZyYW1lKGZyYW1lLCBldmVudCktPmV2ZW50SGFuZGxl
cigpLT5oYW5kbGVUZXh0SW5wdXRFdmVudCgiXG4iLCBldmVudCwgdHJ1ZSk7CisgICAgY2FzZSBD
b21tYW5kRnJvbURPTToKKyAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6
CisgICAgICAgIC8vIERvZXNuJ3Qgc2Nyb2xsIHRvIG1ha2UgdGhlIHNlbGVjdGlvbiB2aXNpYmxl
LCBvciBtb2RpZnkgdGhlIGtpbGwgcmluZy4KKyAgICAgICAgLy8gSW5zZXJ0TGluZUJyZWFrIGlz
IG5vdCBpbXBsZW1lbnRlZCBpbiBJRSBvciBGaXJlZm94LCBzbyB0aGlzIGJlaGF2aW9yIGlzIG9u
bHkgbmVlZGVkIGZvcgorICAgICAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb3Vy
c2VsdmVzLCBhbmQgZm9yIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgY29tbWFuZHMuCisgICAgICAg
IFR5cGluZ0NvbW1hbmQ6Omluc2VydExpbmVCcmVhayhmcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xMDcyLDEzICsxMDcyLDEzIEBAIHN0YXRpYyBib29sIHN1cHBvcnRl
ZEZyb21NZW51T3JLZXlCaW5kaW5nKEZyYW1lKiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2Up
CiBzdGF0aWMgYm9vbCBzdXBwb3J0ZWRQYXN0ZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRT
b3VyY2Ugc291cmNlKQogewogICAgIHN3aXRjaCAoc291cmNlKSB7Ci0gICAgICAgIGNhc2UgQ29t
bWFuZEZyb21NZW51T3JLZXlCaW5kaW5nOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIGNhc2UgQ29tbWFuZEZyb21ET006Ci0gICAgICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRo
VXNlckludGVyZmFjZTogewotICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZnJhbWUg
PyBmcmFtZS0+c2V0dGluZ3MoKSA6IDA7Ci0gICAgICAgICAgICByZXR1cm4gc2V0dGluZ3MgJiYg
c2V0dGluZ3MtPmlzRE9NUGFzdGVBbGxvd2VkKCk7Ci0gICAgICAgIH0KKyAgICBjYXNlIENvbW1h
bmRGcm9tTWVudU9yS2V5QmluZGluZzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBD
b21tYW5kRnJvbURPTToKKyAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6
IHsKKyAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZnJhbWUgPyBmcmFtZS0+c2V0dGluZ3Mo
KSA6IDA7CisgICAgICAgIHJldHVybiBzZXR0aW5ncyAmJiBzZXR0aW5ncy0+aXNET01QYXN0ZUFs
bG93ZWQoKTsKKyAgICB9CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTExMzcsMTQgKzExMzcsMTQgQEAgc3RhdGljIGJvb2wgZW5hYmxlZEN1
dChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSkKIHN0YXRpYyBib29s
IGVuYWJsZWREZWxldGUoRnJhbWUqIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRT
b3VyY2Ugc291cmNlKQogewogICAgIHN3aXRjaCAoc291cmNlKSB7Ci0gICAgICAgIGNhc2UgQ29t
bWFuZEZyb21NZW51T3JLZXlCaW5kaW5nOgotICAgICAgICAgICAgLy8gIkRlbGV0ZSIgZnJvbSBt
ZW51IG9ubHkgYWZmZWN0cyBzZWxlY3RlZCByYW5nZSwganVzdCBsaWtlIEN1dCBidXQgd2l0aG91
dCBhZmZlY3RpbmcgcGFzdGVib2FyZAotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3Io
KS0+Y2FuREhUTUxDdXQoKSB8fCBmcmFtZS0+ZWRpdG9yKCktPmNhbkN1dCgpOwotICAgICAgICBj
YXNlIENvbW1hbmRGcm9tRE9NOgotICAgICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJ
bnRlcmZhY2U6Ci0gICAgICAgICAgICAvLyAiRGVsZXRlIiBmcm9tIERPTSBpcyBsaWtlIGRlbGV0
ZS9iYWNrc3BhY2Uga2V5cHJlc3MsIGFmZmVjdHMgc2VsZWN0ZWQgcmFuZ2UgaWYgbm9uLWVtcHR5
LAotICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHJlbW92ZXMgYSBjaGFyYWN0ZXIKLSAgICAgICAg
ICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkZvckNvbW1hbmQoZXZlbnQpLmlz
Q29udGVudEVkaXRhYmxlKCk7CisgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6
CisgICAgICAgIC8vICJEZWxldGUiIGZyb20gbWVudSBvbmx5IGFmZmVjdHMgc2VsZWN0ZWQgcmFu
Z2UsIGp1c3QgbGlrZSBDdXQgYnV0IHdpdGhvdXQgYWZmZWN0aW5nIHBhc3RlYm9hcmQKKyAgICAg
ICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuREhUTUxDdXQoKSB8fCBmcmFtZS0+ZWRpdG9y
KCktPmNhbkN1dCgpOworICAgIGNhc2UgQ29tbWFuZEZyb21ET006CisgICAgY2FzZSBDb21tYW5k
RnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgorICAgICAgICAvLyAiRGVsZXRlIiBmcm9tIERPTSBp
cyBsaWtlIGRlbGV0ZS9iYWNrc3BhY2Uga2V5cHJlc3MsIGFmZmVjdHMgc2VsZWN0ZWQgcmFuZ2Ug
aWYgbm9uLWVtcHR5LAorICAgICAgICAvLyBvdGhlcndpc2UgcmVtb3ZlcyBhIGNoYXJhY3Rlcgor
ICAgICAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25Gb3JDb21tYW5kKGV2ZW50
KS5pc0NvbnRlbnRFZGl0YWJsZSgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjkyLDcgKzEyOTIsMTAgQEAgc3RhdGljIFN0cmluZyB2
YWx1ZUZvcmVDb2xvcihGcmFtZSogZnJhbWUsIEV2ZW50KikKIAogLy8gTWFwIG9mIGZ1bmN0aW9u
cwogCi1zdHJ1Y3QgQ29tbWFuZEVudHJ5IHsgY29uc3QgY2hhciogbmFtZTsgRWRpdG9ySW50ZXJu
YWxDb21tYW5kIGNvbW1hbmQ7IH07CitzdHJ1Y3QgQ29tbWFuZEVudHJ5IHsKKyAgICBjb25zdCBj
aGFyKiBuYW1lOworICAgIEVkaXRvckludGVybmFsQ29tbWFuZCBjb21tYW5kOworfTsKIAogc3Rh
dGljIGNvbnN0IENvbW1hbmRNYXAmIGNyZWF0ZUNvbW1hbmRNYXAoKQogewpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9lZGl0aW5n
L1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDFkZDg0NmQuLmUwNjI1MjEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAorKysgYi9XZWJDb3Jl
L2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKQEAgLTMzLDggKzMzLDggQEAKICNpbmNs
dWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZs
b2F0UXVhZC5oIgorI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBAIC0z
MjQsMjcgKzMyNCwyNyBAQCBWaXNpYmxlUG9zaXRpb24gU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9k
aWZ5RXh0ZW5kaW5nUmlnaHQoVGV4dEdyYW51bGFyaXR5IGdyYW51bAogICAgIC8vIGl0IGV4dGVu
ZHMgZm9yd2FyZCBsb2dpY2FsbHkgaWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBMVFIgZGlyZWN0
aW9uLAogICAgIC8vIGJ1dCBpdCBleHRlbmRzIGJhY2t3YXJkIGxvZ2ljYWxseSBpZiB0aGUgZW5j
bG9zaW5nIGJsb2NrIGlzIFJUTCBkaXJlY3Rpb24uCiAgICAgc3dpdGNoIChncmFudWxhcml0eSkg
ewotICAgICAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgotICAgICAgICAgICAgaWYgKGRp
cmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpCi0gICAgICAgICAgICAgICAgcG9zID0g
cG9zLm5leHQodHJ1ZSk7ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHBvcyA9IHBvcy5wcmV2aW91cyh0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKLSAgICAgICAgICAgIGlmIChkaXJlY3Rpb25P
ZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKQotICAgICAgICAgICAgICAgIHBvcyA9IG5leHRXb3Jk
UG9zaXRpb24ocG9zKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBwb3MgPSBw
cmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgU2VudGVuY2VHcmFudWxhcml0eToKLSAgICAgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6Ci0g
ICAgICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgICAgIGNhc2UgU2VudGVuY2VC
b3VuZGFyeToKLSAgICAgICAgY2FzZSBMaW5lQm91bmRhcnk6Ci0gICAgICAgIGNhc2UgUGFyYWdy
YXBoQm91bmRhcnk6Ci0gICAgICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKLSAgICAgICAgICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQgYWxsIG9mIHRoZSBhYm92ZT8KLSAgICAgICAgICAgIHBvcyA9
IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOworICAgIGNhc2UgQ2hhcmFjdGVy
R3JhbnVsYXJpdHk6CisgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0g
TFRSKQorICAgICAgICAgICAgcG9zID0gcG9zLm5leHQodHJ1ZSk7ICAgICAgICAgICAgICAgIAor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBwb3MgPSBwb3MucHJldmlvdXModHJ1ZSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorICAgICAgICBpZiAoZGlyZWN0
aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUikKKyAgICAgICAgICAgIHBvcyA9IG5leHRXb3Jk
UG9zaXRpb24ocG9zKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcG9zID0gcHJldmlvdXNX
b3JkUG9zaXRpb24ocG9zKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTZW50ZW5jZUdyYW51
bGFyaXR5OgorICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgUGFyYWdyYXBoR3Jh
bnVsYXJpdHk6CisgICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgTGluZUJvdW5k
YXJ5OgorICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2FzZSBEb2N1bWVudEJvdW5k
YXJ5OgorICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50IGFsbCBvZiB0aGUgYWJvdmU/CisgICAg
ICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOwogICAgIH0KICAg
ICByZXR1cm4gcG9zOwogfQpAQCAtMzUzLDM5ICszNTMsMzkgQEAgVmlzaWJsZVBvc2l0aW9uIFNl
bGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoVGV4dEdyYW51bGFyaXR5
IGdyYW4KIHsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBt
X3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAg
ICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBwb3MgPSBwb3MubmV4
dCh0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdvcmRHcmFudWxhcml0
eToKLSAgICAgICAgICAgIHBvcyA9IG5leHRXb3JkUG9zaXRpb24ocG9zKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBw
b3MgPSBuZXh0U2VudGVuY2VQb3NpdGlvbihwb3MpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgICAgICAgICAgcG9zID0gbmV4dExpbmVQb3Np
dGlvbihwb3MsIHhQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbihFWFRFTlQpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAgICAg
ICAgICAgcG9zID0gbmV4dFBhcmFncmFwaFBvc2l0aW9uKHBvcywgeFBvc0ZvclZlcnRpY2FsQXJy
b3dOYXZpZ2F0aW9uKEVYVEVOVCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
U2VudGVuY2VCb3VuZGFyeToKLSAgICAgICAgICAgIHBvcyA9IGVuZE9mU2VudGVuY2UoZW5kRm9y
UGxhdGZvcm0oKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBMaW5lQm91bmRh
cnk6Ci0gICAgICAgICAgICBwb3MgPSBlbmRGb3JQbGF0Zm9ybSgpOwotICAgICAgICAgICAgcG9z
LnNldEFmZmluaXR5KFVQU1RSRUFNKTsKLSAgICAgICAgICAgIHBvcyA9IGxvZ2ljYWxFbmRPZkxp
bmUocG9zKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBhcmFncmFwaEJvdW5k
YXJ5OgotICAgICAgICAgICAgcG9zID0gZW5kT2ZQYXJhZ3JhcGgoZW5kRm9yUGxhdGZvcm0oKSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgotICAg
ICAgICAgICAgcG9zID0gZW5kRm9yUGxhdGZvcm0oKTsKLSAgICAgICAgICAgIGlmIChpc0VkaXRh
YmxlUG9zaXRpb24ocG9zLmRlZXBFcXVpdmFsZW50KCkpKQotICAgICAgICAgICAgICAgIHBvcyA9
IGVuZE9mRWRpdGFibGVDb250ZW50KHBvcyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgcG9zID0gZW5kT2ZEb2N1bWVudChwb3MpOwotICAgICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICAgICAgcG9zID0gcG9zLm5leHQodHJ1ZSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorICAgICAgICBwb3Mg
PSBuZXh0V29yZFBvc2l0aW9uKHBvcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2VudGVu
Y2VHcmFudWxhcml0eToKKyAgICAgICAgcG9zID0gbmV4dFNlbnRlbmNlUG9zaXRpb24ocG9zKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAgICAgIHBvcyA9
IG5leHRMaW5lUG9zaXRpb24ocG9zLCB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oRVhU
RU5UKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Cisg
ICAgICAgIHBvcyA9IG5leHRQYXJhZ3JhcGhQb3NpdGlvbihwb3MsIHhQb3NGb3JWZXJ0aWNhbEFy
cm93TmF2aWdhdGlvbihFWFRFTlQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTZW50ZW5j
ZUJvdW5kYXJ5OgorICAgICAgICBwb3MgPSBlbmRPZlNlbnRlbmNlKGVuZEZvclBsYXRmb3JtKCkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICAgICAgcG9zID0g
ZW5kRm9yUGxhdGZvcm0oKTsKKyAgICAgICAgcG9zLnNldEFmZmluaXR5KFVQU1RSRUFNKTsKKyAg
ICAgICAgcG9zID0gbG9naWNhbEVuZE9mTGluZShwb3MpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBhcmFncmFwaEJvdW5kYXJ5OgorICAgICAgICBwb3MgPSBlbmRPZlBhcmFncmFwaChlbmRG
b3JQbGF0Zm9ybSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5
OgorICAgICAgICBwb3MgPSBlbmRGb3JQbGF0Zm9ybSgpOworICAgICAgICBpZiAoaXNFZGl0YWJs
ZVBvc2l0aW9uKHBvcy5kZWVwRXF1aXZhbGVudCgpKSkKKyAgICAgICAgICAgIHBvcyA9IGVuZE9m
RWRpdGFibGVDb250ZW50KHBvcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBvcyA9IGVu
ZE9mRG9jdW1lbnQocG9zKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAogICAgIHJldHVy
biBwb3M7CkBAIC0zOTUsMjMgKzM5NSwyMyBAQCBWaXNpYmxlUG9zaXRpb24gU2VsZWN0aW9uQ29u
dHJvbGxlcjo6bW9kaWZ5TW92aW5nUmlnaHQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaQogewog
ICAgIFZpc2libGVQb3NpdGlvbiBwb3M7CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAg
ICAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgotICAgICAgICAgICAgaWYgKGlzUmFuZ2Uo
KSkgCi0gICAgICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmVu
ZCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2Vs
ZWN0aW9uLmFmZmluaXR5KCkpLnJpZ2h0KHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAgICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJp
dHk6Ci0gICAgICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgICAgICBjYXNlIFBhcmFncmFw
aEdyYW51bGFyaXR5OgotICAgICAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6Ci0gICAgICAgIGNh
c2UgTGluZUJvdW5kYXJ5OgotICAgICAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgotICAgICAg
ICBjYXNlIERvY3VtZW50Qm91bmRhcnk6Ci0gICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IGFsbCBvZiB0aGUgYWJvdmUuCi0gICAgICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdGb3J3YXJk
KGdyYW51bGFyaXR5KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHk6CisgICAgICAgIGlmIChpc1JhbmdlKCkpIAorICAgICAgICAgICAgcG9zID0gVmlz
aWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmVuZCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0
aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKS5yaWdodCh0cnVlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBTZW50ZW5jZUdy
YW51bGFyaXR5OgorICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgUGFyYWdyYXBo
R3JhbnVsYXJpdHk6CisgICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgTGluZUJv
dW5kYXJ5OgorICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2FzZSBEb2N1bWVudEJv
dW5kYXJ5OgorICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbCBvZiB0aGUgYWJvdmUuCisg
ICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOworICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgcmV0dXJuIHBvczsKIH0KQEAgLTQyMSw0NiArNDIxLDQ2IEBAIFZp
c2libGVQb3NpdGlvbiBTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnlNb3ZpbmdGb3J3YXJkKFRl
eHRHcmFudWxhcml0eSBncmFudWxhCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICAvLyBG
SVhNRTogU3RheSBpbiBlZGl0YWJsZSBjb250ZW50IGZvciB0aGUgbGVzcyBjb21tb24gZ3JhbnVs
YXJpdGllcy4KICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgICAgIGNhc2UgQ2hhcmFj
dGVyR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBpZiAoaXNSYW5nZSgpKSAKLSAgICAgICAgICAg
ICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZW5kKCksIG1fc2VsZWN0aW9u
LmFmZmluaXR5KCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBvcyA9IFZp
c2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHko
KSkubmV4dCh0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdvcmRHcmFu
dWxhcml0eToKLSAgICAgICAgICAgIHBvcyA9IG5leHRXb3JkUG9zaXRpb24oVmlzaWJsZVBvc2l0
aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAgICAg
ICAgICAgcG9zID0gbmV4dFNlbnRlbmNlUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0
aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6IHsKLSAgICAgICAgICAgIC8vIGRvd24t
YXJyb3dpbmcgZnJvbSBhIHJhbmdlIHNlbGVjdGlvbiB0aGF0IGVuZHMgYXQgdGhlIHN0YXJ0IG9m
IGEgbGluZSBuZWVkcwotICAgICAgICAgICAgLy8gdG8gbGVhdmUgdGhlIHNlbGVjdGlvbiBhdCB0
aGF0IGxpbmUgc3RhcnQgKG5vIG5lZWQgdG8gY2FsbCBuZXh0TGluZVBvc2l0aW9uISkKLSAgICAg
ICAgICAgIHBvcyA9IGVuZEZvclBsYXRmb3JtKCk7Ci0gICAgICAgICAgICBpZiAoIWlzUmFuZ2Uo
KSB8fCAhaXNTdGFydE9mTGluZShwb3MpKQotICAgICAgICAgICAgICAgIHBvcyA9IG5leHRMaW5l
UG9zaXRpb24ocG9zLCB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oU1RBUlQpKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVs
YXJpdHk6Ci0gICAgICAgICAgICBwb3MgPSBuZXh0UGFyYWdyYXBoUG9zaXRpb24oZW5kRm9yUGxh
dGZvcm0oKSwgeFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKFNUQVJUKSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgICAgICAgICAg
cG9zID0gZW5kT2ZTZW50ZW5jZShlbmRGb3JQbGF0Zm9ybSgpKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIExpbmVCb3VuZGFyeToKLSAgICAgICAgICAgIHBvcyA9IGxvZ2ljYWxF
bmRPZkxpbmUoZW5kRm9yUGxhdGZvcm0oKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICAgICAgICAgIHBvcyA9IGVuZE9mUGFyYWdyYXBo
KGVuZEZvclBsYXRmb3JtKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRG9j
dW1lbnRCb3VuZGFyeToKLSAgICAgICAgICAgIHBvcyA9IGVuZEZvclBsYXRmb3JtKCk7Ci0gICAg
ICAgICAgICBpZiAoaXNFZGl0YWJsZVBvc2l0aW9uKHBvcy5kZWVwRXF1aXZhbGVudCgpKSkKLSAg
ICAgICAgICAgICAgICBwb3MgPSBlbmRPZkVkaXRhYmxlQ29udGVudChwb3MpOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIHBvcyA9IGVuZE9mRG9jdW1lbnQocG9zKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCisgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0
eToKKyAgICAgICAgaWYgKGlzUmFuZ2UoKSkgCisgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9z
aXRpb24obV9zZWxlY3Rpb24uZW5kKCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0
ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLm5leHQodHJ1ZSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0
aW9uKFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZm
aW5pdHkoKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6
CisgICAgICAgIHBvcyA9IG5leHRTZW50ZW5jZVBvc2l0aW9uKFZpc2libGVQb3NpdGlvbihtX3Nl
bGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIExpbmVHcmFudWxhcml0eTogeworICAgICAgICAvLyBkb3duLWFycm93aW5n
IGZyb20gYSByYW5nZSBzZWxlY3Rpb24gdGhhdCBlbmRzIGF0IHRoZSBzdGFydCBvZiBhIGxpbmUg
bmVlZHMKKyAgICAgICAgLy8gdG8gbGVhdmUgdGhlIHNlbGVjdGlvbiBhdCB0aGF0IGxpbmUgc3Rh
cnQgKG5vIG5lZWQgdG8gY2FsbCBuZXh0TGluZVBvc2l0aW9uISkKKyAgICAgICAgcG9zID0gZW5k
Rm9yUGxhdGZvcm0oKTsKKyAgICAgICAgaWYgKCFpc1JhbmdlKCkgfHwgIWlzU3RhcnRPZkxpbmUo
cG9zKSkKKyAgICAgICAgICAgIHBvcyA9IG5leHRMaW5lUG9zaXRpb24ocG9zLCB4UG9zRm9yVmVy
dGljYWxBcnJvd05hdmlnYXRpb24oU1RBUlQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgICAgIHBvcyA9IG5leHRQYXJhZ3JhcGhQ
b3NpdGlvbihlbmRGb3JQbGF0Zm9ybSgpLCB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24o
U1RBUlQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgorICAg
ICAgICBwb3MgPSBlbmRPZlNlbnRlbmNlKGVuZEZvclBsYXRmb3JtKCkpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICAgICAgcG9zID0gbG9naWNhbEVuZE9mTGlu
ZShlbmRGb3JQbGF0Zm9ybSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQYXJhZ3JhcGhC
b3VuZGFyeToKKyAgICAgICAgcG9zID0gZW5kT2ZQYXJhZ3JhcGgoZW5kRm9yUGxhdGZvcm0oKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICAgICAgcG9z
ID0gZW5kRm9yUGxhdGZvcm0oKTsKKyAgICAgICAgaWYgKGlzRWRpdGFibGVQb3NpdGlvbihwb3Mu
ZGVlcEVxdWl2YWxlbnQoKSkpCisgICAgICAgICAgICBwb3MgPSBlbmRPZkVkaXRhYmxlQ29udGVu
dChwb3MpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwb3MgPSBlbmRPZkRvY3VtZW50KHBv
cyk7CisgICAgICAgIGJyZWFrOworICAgICAgICAKICAgICB9CiAgICAgcmV0dXJuIHBvczsKIH0K
QEAgLTQ3NSwyNiArNDc1LDI2IEBAIFZpc2libGVQb3NpdGlvbiBTZWxlY3Rpb25Db250cm9sbGVy
Ojptb2RpZnlFeHRlbmRpbmdMZWZ0KFRleHRHcmFudWxhcml0eSBncmFudWxhCiAgICAgLy8gaXQg
ZXh0ZW5kcyBiYWNrd2FyZCBsb2dpY2FsbHkgaWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBMVFIg
ZGlyZWN0aW9uLAogICAgIC8vIGJ1dCBpdCBleHRlbmRzIGZvcndhcmQgbG9naWNhbGx5IGlmIHRo
ZSBlbmNsb3NpbmcgYmxvY2sgaXMgUlRMIGRpcmVjdGlvbi4KICAgICBzd2l0Y2ggKGdyYW51bGFy
aXR5KSB7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBp
ZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUikKLSAgICAgICAgICAgICAgICBw
b3MgPSBwb3MucHJldmlvdXModHJ1ZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgcG9zID0gcG9zLm5leHQodHJ1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdC
bG9jaygpID09IExUUikKLSAgICAgICAgICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlv
bihwb3MpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBvcyA9IG5leHRXb3Jk
UG9zaXRpb24ocG9zKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNlbnRlbmNl
R3JhbnVsYXJpdHk6Ci0gICAgICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgICAgICBjYXNl
IFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAgICAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6Ci0g
ICAgICAgIGNhc2UgTGluZUJvdW5kYXJ5OgotICAgICAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5
OgotICAgICAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6Ci0gICAgICAgICAgICBwb3MgPSBtb2Rp
ZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSk7CisgICAgY2FzZSBDaGFyYWN0ZXJHcmFu
dWxhcml0eToKKyAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIp
CisgICAgICAgICAgICBwb3MgPSBwb3MucHJldmlvdXModHJ1ZSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHBvcyA9IHBvcy5uZXh0KHRydWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFdvcmRHcmFudWxhcml0eToKKyAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2so
KSA9PSBMVFIpCisgICAgICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uKHBvcyk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNlIExp
bmVHcmFudWxhcml0eToKKyAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2Ug
U2VudGVuY2VCb3VuZGFyeToKKyAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBjYXNlIFBhcmFn
cmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICAgICAgcG9zID0g
bW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwogICAgIH0KICAgICByZXR1cm4g
cG9zOwogfQpAQCAtNTA4LDM3ICs1MDgsMzcgQEAgVmlzaWJsZVBvc2l0aW9uIFNlbGVjdGlvbkNv
bnRyb2xsZXI6Om1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKFRleHRHcmFudWxhcml0eSBncmEKICAg
ICAvLyBJdCB3YXMgZG9uZSBoZXJlIGluc3RlYWQgb2YgaW4gVmlzaWJsZVBvc2l0aW9uIGJlY2F1
c2Ugd2Ugd2FudCBWUHMgdG8gaXRlcmF0ZQogICAgIC8vIG92ZXIgZXZlcnl0aGluZy4KICAgICBz
d2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6
Ci0gICAgICAgICAgICBwb3MgPSBwb3MucHJldmlvdXModHJ1ZSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBwb3MgPSBwcmV2
aW91c1dvcmRQb3NpdGlvbihwb3MpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
U2VudGVuY2VHcmFudWxhcml0eToKLSAgICAgICAgICAgIHBvcyA9IHByZXZpb3VzU2VudGVuY2VQ
b3NpdGlvbihwb3MpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTGluZUdyYW51
bGFyaXR5OgotICAgICAgICAgICAgcG9zID0gcHJldmlvdXNMaW5lUG9zaXRpb24ocG9zLCB4UG9z
Rm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oRVhURU5UKSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICAgICAgICAgIHBvcyA9IHBy
ZXZpb3VzUGFyYWdyYXBoUG9zaXRpb24ocG9zLCB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRp
b24oRVhURU5UKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTZW50ZW5jZUJv
dW5kYXJ5OgotICAgICAgICAgICAgcG9zID0gc3RhcnRPZlNlbnRlbmNlKHN0YXJ0Rm9yUGxhdGZv
cm0oKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBMaW5lQm91bmRhcnk6Ci0g
ICAgICAgICAgICBwb3MgPSBsb2dpY2FsU3RhcnRPZkxpbmUoc3RhcnRGb3JQbGF0Zm9ybSgpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgotICAg
ICAgICAgICAgcG9zID0gc3RhcnRPZlBhcmFncmFwaChzdGFydEZvclBsYXRmb3JtKCkpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKLSAgICAgICAg
ICAgIHBvcyA9IHN0YXJ0Rm9yUGxhdGZvcm0oKTsKLSAgICAgICAgICAgIGlmIChpc0VkaXRhYmxl
UG9zaXRpb24ocG9zLmRlZXBFcXVpdmFsZW50KCkpKQotICAgICAgICAgICAgICAgIHBvcyA9IHN0
YXJ0T2ZFZGl0YWJsZUNvbnRlbnQocG9zKTsKLSAgICAgICAgICAgIGVsc2UgCi0gICAgICAgICAg
ICAgICAgcG9zID0gc3RhcnRPZkRvY3VtZW50KHBvcyk7Ci0gICAgICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgICAgICBwb3MgPSBwb3MucHJldmlvdXMo
dHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorICAgICAg
ICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgICAgIHBvcyA9IHByZXZpb3VzU2VudGVuY2VQ
b3NpdGlvbihwb3MpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpbmVHcmFudWxhcml0eToK
KyAgICAgICAgcG9zID0gcHJldmlvdXNMaW5lUG9zaXRpb24ocG9zLCB4UG9zRm9yVmVydGljYWxB
cnJvd05hdmlnYXRpb24oRVhURU5UKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGFyYWdy
YXBoR3JhbnVsYXJpdHk6CisgICAgICAgIHBvcyA9IHByZXZpb3VzUGFyYWdyYXBoUG9zaXRpb24o
cG9zLCB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oRVhURU5UKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKKyAgICAgICAgcG9zID0gc3RhcnRPZlNl
bnRlbmNlKHN0YXJ0Rm9yUGxhdGZvcm0oKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGlu
ZUJvdW5kYXJ5OgorICAgICAgICBwb3MgPSBsb2dpY2FsU3RhcnRPZkxpbmUoc3RhcnRGb3JQbGF0
Zm9ybSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKKyAg
ICAgICAgcG9zID0gc3RhcnRPZlBhcmFncmFwaChzdGFydEZvclBsYXRmb3JtKCkpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgICAgIHBvcyA9IHN0YXJ0
Rm9yUGxhdGZvcm0oKTsKKyAgICAgICAgaWYgKGlzRWRpdGFibGVQb3NpdGlvbihwb3MuZGVlcEVx
dWl2YWxlbnQoKSkpCisgICAgICAgICAgICBwb3MgPSBzdGFydE9mRWRpdGFibGVDb250ZW50KHBv
cyk7CisgICAgICAgIGVsc2UgCisgICAgICAgICAgICBwb3MgPSBzdGFydE9mRG9jdW1lbnQocG9z
KTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBwb3M7CiB9CkBAIC01NDcsMjMg
KzU0NywyMyBAQCBWaXNpYmxlUG9zaXRpb24gU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5TW92
aW5nTGVmdChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdAogewogICAgIFZpc2libGVQb3NpdGlv
biBwb3M7CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgICAgICBjYXNlIENoYXJhY3Rl
ckdyYW51bGFyaXR5OgotICAgICAgICAgICAgaWYgKGlzUmFuZ2UoKSkgCi0gICAgICAgICAgICAg
ICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLnN0YXJ0KCksIG1fc2VsZWN0aW9u
LmFmZmluaXR5KCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBvcyA9IFZp
c2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHko
KSkubGVmdCh0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdvcmRHcmFu
dWxhcml0eToKLSAgICAgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAgICAgICBjYXNl
IExpbmVHcmFudWxhcml0eToKLSAgICAgICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAg
ICAgICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgICAgICBjYXNlIExpbmVCb3VuZGFyeToK
LSAgICAgICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICAgICAgY2FzZSBEb2N1bWVudEJv
dW5kYXJ5OgotICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBhbGwgb2YgdGhlIGFib3Zl
LgotICAgICAgICAgICAgcG9zID0gbW9kaWZ5TW92aW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwot
ICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICAg
ICAgaWYgKGlzUmFuZ2UoKSkgCisgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9z
ZWxlY3Rpb24uc3RhcnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwg
bV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkubGVmdCh0cnVlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgorICAg
IGNhc2UgTGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Cisg
ICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNh
c2UgUGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbCBvZiB0aGUgYWJvdmUuCisgICAgICAgIHBvcyA9IG1v
ZGlmeU1vdmluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIHJldHVybiBwb3M7CiB9CkBAIC01NzIsNDAgKzU3Miw0MCBAQCBWaXNpYmxlUG9zaXRpb24g
U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5TW92aW5nQmFja3dhcmQoVGV4dEdyYW51bGFyaXR5
IGdyYW51bAogewogICAgIFZpc2libGVQb3NpdGlvbiBwb3M7CiAgICAgc3dpdGNoIChncmFudWxh
cml0eSkgewotICAgICAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgotICAgICAgICAgICAg
aWYgKGlzUmFuZ2UoKSkgCi0gICAgICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1f
c2VsZWN0aW9uLnN0YXJ0KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5l
eHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkucHJldmlvdXModHJ1ZSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBw
b3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0
ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBwb3MgPSBwcmV2aW91
c1NlbnRlbmNlUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBt
X3NlbGVjdGlvbi5hZmZpbml0eSgpKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBMaW5lR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBwb3MgPSBwcmV2aW91c0xpbmVQb3NpdGlv
bihzdGFydEZvclBsYXRmb3JtKCksIHhQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbihTVEFS
VCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJp
dHk6Ci0gICAgICAgICAgICBwb3MgPSBwcmV2aW91c1BhcmFncmFwaFBvc2l0aW9uKHN0YXJ0Rm9y
UGxhdGZvcm0oKSwgeFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKFNUQVJUKSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgICAgICAg
ICAgcG9zID0gc3RhcnRPZlNlbnRlbmNlKHN0YXJ0Rm9yUGxhdGZvcm0oKSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBMaW5lQm91bmRhcnk6Ci0gICAgICAgICAgICBwb3MgPSBs
b2dpY2FsU3RhcnRPZkxpbmUoc3RhcnRGb3JQbGF0Zm9ybSgpKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgotICAgICAgICAgICAgcG9zID0gc3Rh
cnRPZlBhcmFncmFwaChzdGFydEZvclBsYXRmb3JtKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKLSAgICAgICAgICAgIHBvcyA9IHN0YXJ0Rm9y
UGxhdGZvcm0oKTsKLSAgICAgICAgICAgIGlmIChpc0VkaXRhYmxlUG9zaXRpb24ocG9zLmRlZXBF
cXVpdmFsZW50KCkpKQotICAgICAgICAgICAgICAgIHBvcyA9IHN0YXJ0T2ZFZGl0YWJsZUNvbnRl
bnQocG9zKTsKLSAgICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICAgICAgcG9zID0gc3RhcnRP
ZkRvY3VtZW50KHBvcyk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENoYXJhY3Rlckdy
YW51bGFyaXR5OgorICAgICAgICBpZiAoaXNSYW5nZSgpKSAKKyAgICAgICAgICAgIHBvcyA9IFZp
c2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5zdGFydCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2Vs
ZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKS5wcmV2aW91cyh0cnVlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgICAgIHBvcyA9
IHByZXZpb3VzV29yZFBvc2l0aW9uKFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQo
KSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNl
bnRlbmNlR3JhbnVsYXJpdHk6CisgICAgICAgIHBvcyA9IHByZXZpb3VzU2VudGVuY2VQb3NpdGlv
bihWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmlu
aXR5KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAg
ICAgIHBvcyA9IHByZXZpb3VzTGluZVBvc2l0aW9uKHN0YXJ0Rm9yUGxhdGZvcm0oKSwgeFBvc0Zv
clZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKFNUQVJUKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgICAgIHBvcyA9IHByZXZpb3VzUGFyYWdyYXBo
UG9zaXRpb24oc3RhcnRGb3JQbGF0Zm9ybSgpLCB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRp
b24oU1RBUlQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5Ogor
ICAgICAgICBwb3MgPSBzdGFydE9mU2VudGVuY2Uoc3RhcnRGb3JQbGF0Zm9ybSgpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAgICAgIHBvcyA9IGxvZ2ljYWxT
dGFydE9mTGluZShzdGFydEZvclBsYXRmb3JtKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBhcmFncmFwaEJvdW5kYXJ5OgorICAgICAgICBwb3MgPSBzdGFydE9mUGFyYWdyYXBoKHN0YXJ0
Rm9yUGxhdGZvcm0oKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFy
eToKKyAgICAgICAgcG9zID0gc3RhcnRGb3JQbGF0Zm9ybSgpOworICAgICAgICBpZiAoaXNFZGl0
YWJsZVBvc2l0aW9uKHBvcy5kZWVwRXF1aXZhbGVudCgpKSkKKyAgICAgICAgICAgIHBvcyA9IHN0
YXJ0T2ZFZGl0YWJsZUNvbnRlbnQocG9zKTsKKyAgICAgICAgZWxzZSAKKyAgICAgICAgICAgIHBv
cyA9IHN0YXJ0T2ZEb2N1bWVudChwb3MpOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0
dXJuIHBvczsKIH0KQEAgLTYyNywzMCArNjI3LDMwIEBAIGJvb2wgU2VsZWN0aW9uQ29udHJvbGxl
cjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpciwgVGV4dEdyYW51bGFy
CiAKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zOwogICAgIHN3aXRjaCAoZGlyKSB7Ci0gICAgICAg
IGNhc2UgUklHSFQ6Ci0gICAgICAgICAgICBpZiAoYWx0ZXIgPT0gTU9WRSkKLSAgICAgICAgICAg
ICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdSaWdodChncmFudWxhcml0eSk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nUmlnaHQoZ3JhbnVsYXJp
dHkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRk9SV0FSRDoKLSAgICAgICAg
ICAgIGlmIChhbHRlciA9PSBFWFRFTkQpCi0gICAgICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0
ZW5kaW5nRm9yd2FyZChncmFudWxhcml0eSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgcG9zID0gbW9kaWZ5TW92aW5nRm9yd2FyZChncmFudWxhcml0eSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBMRUZUOgotICAgICAgICAgICAgaWYgKGFsdGVyID09IE1P
VkUpCi0gICAgICAgICAgICAgICAgcG9zID0gbW9kaWZ5TW92aW5nTGVmdChncmFudWxhcml0eSk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5n
TGVmdChncmFudWxhcml0eSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCQUNL
V0FSRDoKLSAgICAgICAgICAgIGlmIChhbHRlciA9PSBFWFRFTkQpCi0gICAgICAgICAgICAgICAg
cG9zID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0JhY2t3YXJkKGdyYW51bGFy
aXR5KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUklHSFQ6CisgICAgICAgIGlmIChh
bHRlciA9PSBNT1ZFKQorICAgICAgICAgICAgcG9zID0gbW9kaWZ5TW92aW5nUmlnaHQoZ3JhbnVs
YXJpdHkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdS
aWdodChncmFudWxhcml0eSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRk9SV0FSRDoKKyAg
ICAgICAgaWYgKGFsdGVyID09IEVYVEVORCkKKyAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVu
ZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwb3Mg
PSBtb2RpZnlNb3ZpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBMRUZUOgorICAgICAgICBpZiAoYWx0ZXIgPT0gTU9WRSkKKyAgICAgICAgICAgIHBvcyA9
IG1vZGlmeU1vdmluZ0xlZnQoZ3JhbnVsYXJpdHkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdMZWZ0KGdyYW51bGFyaXR5KTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBCQUNLV0FSRDoKKyAgICAgICAgaWYgKGFsdGVyID09IEVYVEVORCkKKyAgICAg
ICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcG9zID0gbW9kaWZ5TW92aW5nQmFja3dhcmQoZ3JhbnVsYXJp
dHkpOworICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpZiAocG9zLmlzTnVsbCgpKQpAQCAt
NjYzLDEyICs2NjMsMTIgQEAgYm9vbCBTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnkoRUFsdGVy
YXRpb24gYWx0ZXIsIEVEaXJlY3Rpb24gZGlyLCBUZXh0R3JhbnVsYXIKICAgICBpbnQgeCA9IHhQ
b3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbihTVEFSVCk7CiAKICAgICBzd2l0Y2ggKGFsdGVy
KSB7Ci0gICAgICAgIGNhc2UgTU9WRToKLSAgICAgICAgICAgIG1vdmVUbyhwb3MsIHVzZXJUcmln
Z2VyZWQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVhURU5EOgotICAgICAg
ICAgICAgc2V0RXh0ZW50KHBvcywgdXNlclRyaWdnZXJlZCk7Ci0gICAgICAgICAgICBicmVhazsK
KyAgICBjYXNlIE1PVkU6CisgICAgICAgIG1vdmVUbyhwb3MsIHVzZXJUcmlnZ2VyZWQpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEVYVEVORDoKKyAgICAgICAgc2V0RXh0ZW50KHBvcywgdXNl
clRyaWdnZXJlZCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKICAgICBpZiAoZ3JhbnVs
YXJpdHkgPT0gTGluZUdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IFBhcmFncmFwaEdyYW51
bGFyaXR5KQpAQCAtNjk3LDcgKzY5Nyw3IEBAIHN0YXRpYyBib29sIGFic29sdXRlQ2FyZXRZKGNv
bnN0IFZpc2libGVQb3NpdGlvbiAmYywgaW50ICZ5KQogCiBib29sIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6Om1vZGlmeShFQWx0ZXJhdGlvbiBhbHRlciwgaW50IHZlcnRpY2FsRGlzdGFuY2UsIGJvb2wg
dXNlclRyaWdnZXJlZCkKIHsKLSAgICBpZiAodmVydGljYWxEaXN0YW5jZSA9PSAwKQorICAgIGlm
ICghdmVydGljYWxEaXN0YW5jZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHVz
ZXJUcmlnZ2VyZWQpIHsKQEAgLTcyMCwxNiArNzIwLDE2IEBAIGJvb2wgU2VsZWN0aW9uQ29udHJv
bGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBpbnQgdmVydGljYWxEaXN0YW5jZSwgYm9v
bCB1CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICBpbnQgeFBvcyA9IDA7CiAgICAgc3dp
dGNoIChhbHRlcikgewotICAgICAgICBjYXNlIE1PVkU6Ci0gICAgICAgICAgICBwb3MgPSBWaXNp
YmxlUG9zaXRpb24odXAgPyBtX3NlbGVjdGlvbi5zdGFydCgpIDogbV9zZWxlY3Rpb24uZW5kKCks
IG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwotICAgICAgICAgICAgeFBvcyA9IHhQb3NGb3JWZXJ0
aWNhbEFycm93TmF2aWdhdGlvbih1cCA/IFNUQVJUIDogRU5EKTsKLSAgICAgICAgICAgIG1fc2Vs
ZWN0aW9uLnNldEFmZmluaXR5KHVwID8gVVBTVFJFQU0gOiBET1dOU1RSRUFNKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVYVEVORDoKLSAgICAgICAgICAgIHBvcyA9IFZpc2li
bGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7
Ci0gICAgICAgICAgICB4UG9zID0geFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKEVYVEVO
VCk7Ci0gICAgICAgICAgICBtX3NlbGVjdGlvbi5zZXRBZmZpbml0eShET1dOU1RSRUFNKTsKLSAg
ICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTU9WRToKKyAgICAgICAgcG9zID0gVmlzaWJsZVBv
c2l0aW9uKHVwID8gbV9zZWxlY3Rpb24uc3RhcnQoKSA6IG1fc2VsZWN0aW9uLmVuZCgpLCBtX3Nl
bGVjdGlvbi5hZmZpbml0eSgpKTsKKyAgICAgICAgeFBvcyA9IHhQb3NGb3JWZXJ0aWNhbEFycm93
TmF2aWdhdGlvbih1cCA/IFNUQVJUIDogRU5EKTsKKyAgICAgICAgbV9zZWxlY3Rpb24uc2V0QWZm
aW5pdHkodXAgPyBVUFNUUkVBTSA6IERPV05TVFJFQU0pOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEVYVEVORDoKKyAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4
dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKKyAgICAgICAgeFBvcyA9IHhQb3NGb3JW
ZXJ0aWNhbEFycm93TmF2aWdhdGlvbihFWFRFTlQpOworICAgICAgICBtX3NlbGVjdGlvbi5zZXRB
ZmZpbml0eShET1dOU1RSRUFNKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaW50IHN0
YXJ0WTsKQEAgLTc2MiwxMiArNzYyLDEyIEBAIGJvb2wgU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9k
aWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBpbnQgdmVydGljYWxEaXN0YW5jZSwgYm9vbCB1CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRjaCAoYWx0ZXIpIHsKLSAgICAgICAgY2FzZSBN
T1ZFOgotICAgICAgICAgICAgbW92ZVRvKHJlc3VsdCwgdXNlclRyaWdnZXJlZCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFWFRFTkQ6Ci0gICAgICAgICAgICBzZXRFeHRlbnQo
cmVzdWx0LCB1c2VyVHJpZ2dlcmVkKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTU9W
RToKKyAgICAgICAgbW92ZVRvKHJlc3VsdCwgdXNlclRyaWdnZXJlZCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRVhURU5EOgorICAgICAgICBzZXRFeHRlbnQocmVzdWx0LCB1c2VyVHJpZ2dl
cmVkKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKHVzZXJUcmlnZ2VyZWQpCkBA
IC03ODcsMjEgKzc4NywyMSBAQCBpbnQgU2VsZWN0aW9uQ29udHJvbGxlcjo6eFBvc0ZvclZlcnRp
Y2FsQXJyb3dOYXZpZ2F0aW9uKEVQb3NpdGlvblR5cGUgdHlwZSkKIAogICAgIFBvc2l0aW9uIHBv
czsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBTVEFSVDoKLSAgICAgICAgICAg
IHBvcyA9IG1fc2VsZWN0aW9uLnN0YXJ0KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBFTkQ6Ci0gICAgICAgICAgICBwb3MgPSBtX3NlbGVjdGlvbi5lbmQoKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJBU0U6Ci0gICAgICAgICAgICBwb3MgPSBtX3NlbGVj
dGlvbi5iYXNlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFWFRFTlQ6Ci0g
ICAgICAgICAgICBwb3MgPSBtX3NlbGVjdGlvbi5leHRlbnQoKTsKLSAgICAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU1RBUlQ6CisgICAgICAgIHBvcyA9IG1fc2VsZWN0aW9uLnN0YXJ0KCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRU5EOgorICAgICAgICBwb3MgPSBtX3NlbGVjdGlvbi5l
bmQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCQVNFOgorICAgICAgICBwb3MgPSBtX3Nl
bGVjdGlvbi5iYXNlKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRVhURU5UOgorICAgICAg
ICBwb3MgPSBtX3NlbGVjdGlvbi5leHRlbnQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCi0g
ICAgRnJhbWUgKmZyYW1lID0gcG9zLm5vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBG
cmFtZSogZnJhbWUgPSBwb3Mubm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybiB4OwogICAgICAgICAKQEAgLTgxMSw4ICs4MTEsNyBAQCBp
bnQgU2VsZWN0aW9uQ29udHJvbGxlcjo6eFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKEVQ
b3NpdGlvblR5cGUgdHlwZSkKICAgICAgICAgLy8gYWZ0ZXIgdGhlIHNlbGVjdGlvbiBpcyBjcmVh
dGVkIGFuZCBiZWZvcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuCiAgICAgICAgIHggPSB2aXNp
YmxlUG9zaXRpb24uaXNOb3ROdWxsKCkgPyB2aXNpYmxlUG9zaXRpb24ueE9mZnNldEZvclZlcnRp
Y2FsTmF2aWdhdGlvbigpIDogMDsKICAgICAgICAgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmln
YXRpb24gPSB4OwotICAgIH0KLSAgICBlbHNlCisgICAgfSBlbHNlCiAgICAgICAgIHggPSBtX3hQ
b3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbjsKICAgICAgICAgCiAgICAgcmV0dXJuIHg7CkBA
IC0xMDU3LDEyICsxMDU2LDExIEBAIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6cGFpbnRDYXJl
dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGludCB0eCwgaW50IHR5LCBjCiB2b2lkIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OmRlYnVnUmVuZGVyZXIoUmVuZGVyT2JqZWN0ICpyLCBib29sIHNlbGVj
dGVkKSBjb25zdAogewogICAgIGlmIChyLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSkgewotICAg
ICAgICBFbGVtZW50ICplbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCAqPihyLT5ub2RlKCkp
OworICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCAqPihyLT5u
b2RlKCkpOwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzJXNcbiIsIHNlbGVjdGVkID8gIj09
PiAiIDogIiAgICAiLCBlbGVtZW50LT5sb2NhbE5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoci0+aXNUZXh0KCkpIHsKKyAgICB9IGVsc2UgaWYgKHIt
PmlzVGV4dCgpKSB7CiAgICAgICAgIFJlbmRlclRleHQqIHRleHRSZW5kZXJlciA9IHRvUmVuZGVy
VGV4dChyKTsKLSAgICAgICAgaWYgKHRleHRSZW5kZXJlci0+dGV4dExlbmd0aCgpID09IDAgfHwg
IXRleHRSZW5kZXJlci0+Zmlyc3RUZXh0Qm94KCkpIHsKKyAgICAgICAgaWYgKCF0ZXh0UmVuZGVy
ZXItPnRleHRMZW5ndGgoKSB8fCAhdGV4dFJlbmRlcmVyLT5maXJzdFRleHRCb3goKSkgewogICAg
ICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyN0ZXh0IChlbXB0eSlcbiIsIHNlbGVjdGVkID8g
Ij09PiAiIDogIiAgICAiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTA3
OCw3ICsxMDc2LDcgQEAgdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpkZWJ1Z1JlbmRlcmVyKFJl
bmRlck9iamVjdCAqciwgYm9vbCBzZWxlY3RlZCkgY29uc3QKICAgICAgICAgICAgICAgICBvZmZz
ZXQgPSBtX3NlbGVjdGlvbi5lbmQoKS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgaW50IHBvczsKLSAgICAgICAgICAgIElubGluZVRleHRC
b3ggKmJveCA9IHRleHRSZW5kZXJlci0+ZmluZE5leHRJbmxpbmVUZXh0Qm94KG9mZnNldCwgcG9z
KTsKKyAgICAgICAgICAgIElubGluZVRleHRCb3gqIGJveCA9IHRleHRSZW5kZXJlci0+ZmluZE5l
eHRJbmxpbmVUZXh0Qm94KG9mZnNldCwgcG9zKTsKICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnN1
YnN0cmluZyhib3gtPnN0YXJ0KCksIGJveC0+bGVuKCkpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBTdHJpbmcgc2hvdzsKQEAgLTEwODksMjIgKzEwODcsMTYgQEAgdm9pZCBTZWxlY3Rpb25D
b250cm9sbGVyOjpkZWJ1Z1JlbmRlcmVyKFJlbmRlck9iamVjdCAqciwgYm9vbCBzZWxlY3RlZCkg
Y29uc3QKICAgICAgICAgICAgIGlmICh0ZXh0TGVuZ3RoIDwgbWF4KSB7CiAgICAgICAgICAgICAg
ICAgc2hvdyA9IHRleHQ7CiAgICAgICAgICAgICAgICAgY2FyZXQgPSBwb3M7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIHRvbyBmZXcgY2hhcmFjdGVycyB0byBs
ZWZ0Ci0gICAgICAgICAgICBlbHNlIGlmIChwb3MgLSBtaWQgPCAwKSB7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKHBvcyAtIG1pZCA8IDApIHsKKyAgICAgICAgICAgICAgICAvLyB0b28gZmV3IGNo
YXJhY3RlcnMgdG8gbGVmdAogICAgICAgICAgICAgICAgIHNob3cgPSB0ZXh0LmxlZnQobWF4IC0g
MykgKyAiLi4uIjsKICAgICAgICAgICAgICAgICBjYXJldCA9IHBvczsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gZW5vdWdoIGNoYXJhY3RlcnMgb24gZWFjaCBz
aWRlCi0gICAgICAgICAgICBlbHNlIGlmIChwb3MgLSBtaWQgPj0gMCAmJiBwb3MgKyBtaWQgPD0g
dGV4dExlbmd0aCkgeworICAgICAgICAgICAgfSBlbHNlIGlmIChwb3MgLSBtaWQgPj0gMCAmJiBw
b3MgKyBtaWQgPD0gdGV4dExlbmd0aCkgeworICAgICAgICAgICAgICAgIC8vIGVub3VnaCBjaGFy
YWN0ZXJzIG9uIGVhY2ggc2lkZQogICAgICAgICAgICAgICAgIHNob3cgPSAiLi4uIiArIHRleHQu
c3Vic3RyaW5nKHBvcyAtIG1pZCArIDMsIG1heCAtIDYpICsgIi4uLiI7CiAgICAgICAgICAgICAg
ICAgY2FyZXQgPSBtaWQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IC8vIHRvbyBmZXcgY2hhcmFjdGVycyBvbiByaWdodAotICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIHRvbyBmZXcgY2hhcmFjdGVycyBv
biByaWdodAogICAgICAgICAgICAgICAgIHNob3cgPSAiLi4uIiArIHRleHQucmlnaHQobWF4IC0g
Myk7CiAgICAgICAgICAgICAgICAgY2FyZXQgPSBwb3MgLSAodGV4dExlbmd0aCAtIHNob3cubGVu
Z3RoKCkpOwogICAgICAgICAgICAgfQpAQCAtMTExNiw4ICsxMTA4LDcgQEAgdm9pZCBTZWxlY3Rp
b25Db250cm9sbGVyOjpkZWJ1Z1JlbmRlcmVyKFJlbmRlck9iamVjdCAqciwgYm9vbCBzZWxlY3Rl
ZCkgY29uc3QKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2FyZXQ7IGkrKykKICAg
ICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAiKTsKICAgICAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiXlxuIik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7CisgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBpZiAoKGludCl0ZXh0Lmxlbmd0aCgpID4gbWF4KQogICAgICAgICAg
ICAgICAgIHRleHQgPSB0ZXh0LmxlZnQobWF4IC0gMykgKyAiLi4uIjsKICAgICAgICAgICAgIGVs
c2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1dlYkNv
cmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCAxYzlkYjkwLi4xM2FlZjZiIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9l
ZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgVHlwaW5nQ29t
bWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChEb2N1bWVudCAqZG9jdW1lbnQsIGJvb2wgc21hcnREZWxl
dGUsIFRleHRHCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKICAgICAKLSAgICBGcmFtZSAqZnJh
bWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJh
bWUoKTsKICAgICBBU1NFUlQoZnJhbWUpOwogICAgIAogICAgIEVkaXRDb21tYW5kKiBsYXN0RWRp
dENvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmxhc3RFZGl0Q29tbWFuZCgpOwpAQCAtMTA1LDcg
KzEwNSw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoRG9j
dW1lbnQgKmRvY3VtZW50LCBib29sIHNtYXJ0RGVsZXRlCiAgICAgLy8gRklYTUU6IEZvcndhcmQg
ZGVsZXRlIGluIFRleHRFZGl0IGFwcGVhcnMgdG8gb3BlbiBhbmQgY2xvc2UgYSBuZXcgdHlwaW5n
IGNvbW1hbmQuCiAgICAgQVNTRVJUKGRvY3VtZW50KTsKICAgICAKLSAgICBGcmFtZSAqZnJhbWUg
PSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUo
KTsKICAgICBBU1NFUlQoZnJhbWUpOwogICAgIAogICAgIEVkaXRDb21tYW5kKiBsYXN0RWRpdENv
bW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmxhc3RFZGl0Q29tbWFuZCgpOwpAQCAtMTg3LDcgKzE4
Nyw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0TGluZUJyZWFrKERvY3VtZW50ICpkb2N1
bWVudCkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIAotICAgIEZyYW1lICpmcmFtZSA9
IGRvY3VtZW50LT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgp
OwogICAgIEFTU0VSVChmcmFtZSk7CiAgICAgCiAgICAgRWRpdENvbW1hbmQqIGxhc3RFZGl0Q29t
bWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+bGFzdEVkaXRDb21tYW5kKCk7CkBAIC0yMDMsNyArMjAz
LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3Rl
ZENvbnRlbnQoRG9jdW1lbnQgKmRvY3VtZW50KQogewogICAgIEFTU0VSVChkb2N1bWVudCk7CiAg
ICAgCi0gICAgRnJhbWUgKmZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CisgICAgRnJhbWUqIGZy
YW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CiAgICAgQVNTRVJUKGZyYW1lKTsKICAgICAKICAgICBF
ZGl0Q29tbWFuZCogbGFzdEVkaXRDb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5sYXN0RWRpdENv
bW1hbmQoKTsKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFBh
cmFncmFwaFNlcGFyYXRvcihEb2N1bWVudCAqZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGRvY3Vt
ZW50KTsKICAgICAKLSAgICBGcmFtZSAqZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBG
cmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKICAgICBBU1NFUlQoZnJhbWUpOwogICAg
IAogICAgIEVkaXRDb21tYW5kKiBsYXN0RWRpdENvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmxh
c3RFZGl0Q29tbWFuZCgpOwpAQCAtMjUyLDI3ICsyNTIsMjcgQEAgdm9pZCBUeXBpbmdDb21tYW5k
Ojpkb0FwcGx5KCkKICAgICAgICAgICAgIG1fb3BlbmVkQnlCYWNrd2FyZERlbGV0ZSA9IHRydWU7
CiAKICAgICBzd2l0Y2ggKG1fY29tbWFuZFR5cGUpIHsKLSAgICAgICAgY2FzZSBEZWxldGVTZWxl
Y3Rpb246Ci0gICAgICAgICAgICBkZWxldGVTZWxlY3Rpb24obV9zbWFydERlbGV0ZSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgRGVsZXRlS2V5OgotICAgICAgICAgICAgZGVs
ZXRlS2V5UHJlc3NlZChtX2dyYW51bGFyaXR5LCBtX2tpbGxSaW5nKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgY2FzZSBGb3J3YXJkRGVsZXRlS2V5OgotICAgICAgICAgICAgZm9yd2Fy
ZERlbGV0ZUtleVByZXNzZWQobV9ncmFudWxhcml0eSwgbV9raWxsUmluZyk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGNhc2UgSW5zZXJ0TGluZUJyZWFrOgotICAgICAgICAgICAgaW5z
ZXJ0TGluZUJyZWFrKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgSW5zZXJ0
UGFyYWdyYXBoU2VwYXJhdG9yOgotICAgICAgICAgICAgaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9y
KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgSW5zZXJ0UGFyYWdyYXBoU2Vw
YXJhdG9ySW5RdW90ZWRDb250ZW50OgotICAgICAgICAgICAgaW5zZXJ0UGFyYWdyYXBoU2VwYXJh
dG9ySW5RdW90ZWRDb250ZW50KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2Ug
SW5zZXJ0VGV4dDoKLSAgICAgICAgICAgIGluc2VydFRleHQobV90ZXh0VG9JbnNlcnQsIG1fc2Vs
ZWN0SW5zZXJ0ZWRUZXh0KTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIERlbGV0ZVNl
bGVjdGlvbjoKKyAgICAgICAgZGVsZXRlU2VsZWN0aW9uKG1fc21hcnREZWxldGUpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBEZWxldGVLZXk6CisgICAgICAgIGRlbGV0ZUtleVByZXNzZWQo
bV9ncmFudWxhcml0eSwgbV9raWxsUmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZv
cndhcmREZWxldGVLZXk6CisgICAgICAgIGZvcndhcmREZWxldGVLZXlQcmVzc2VkKG1fZ3JhbnVs
YXJpdHksIG1fa2lsbFJpbmcpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBJbnNlcnRMaW5l
QnJlYWs6CisgICAgICAgIGluc2VydExpbmVCcmVhaygpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3I6CisgICAgICAgIGluc2VydFBhcmFncmFwaFNl
cGFyYXRvcigpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBJbnNlcnRQYXJhZ3JhcGhTZXBh
cmF0b3JJblF1b3RlZENvbnRlbnQ6CisgICAgICAgIGluc2VydFBhcmFncmFwaFNlcGFyYXRvcklu
UXVvdGVkQ29udGVudCgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBJbnNlcnRUZXh0Ogor
ICAgICAgICBpbnNlcnRUZXh0KG1fdGV4dFRvSW5zZXJ0LCBtX3NlbGVjdEluc2VydGVkVGV4dCk7
CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAg
LTM0MCwxMyArMzQwLDEyIEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChjb25zdCBT
dHJpbmcgJnRleHQsIGJvb2wgc2VsZWN0SW5zZXJ0ZWRUZXh0KQogICAgICAgICBpbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3IoKTsKICAgICAgICAgb2Zmc2V0ID0gbmV3bGluZSArIDE7CiAgICAgfQot
ICAgIGlmIChvZmZzZXQgPT0gMCkKKyAgICBpZiAoIW9mZnNldCkKICAgICAgICAgaW5zZXJ0VGV4
dFJ1bldpdGhvdXROZXdsaW5lcyh0ZXh0LCBzZWxlY3RJbnNlcnRlZFRleHQpOwogICAgIGVsc2Ug
ewogICAgICAgICBpbnQgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKLSAgICAgICAgaWYgKGxlbmd0
aCAhPSBvZmZzZXQpIHsKKyAgICAgICAgaWYgKGxlbmd0aCAhPSBvZmZzZXQpCiAgICAgICAgICAg
ICBpbnNlcnRUZXh0UnVuV2l0aG91dE5ld2xpbmVzKHRleHQuc3Vic3RyaW5nKG9mZnNldCwgbGVu
Z3RoIC0gb2Zmc2V0KSwgc2VsZWN0SW5zZXJ0ZWRUZXh0KTsKLSAgICAgICAgfQogICAgIH0KIH0K
IApAQCAtNDE4LDc1ICs0MTcsNzUgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVz
c2VkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraWxsUmluZykKICAgICBWaXNp
YmxlU2VsZWN0aW9uIHNlbGVjdGlvbkFmdGVyVW5kbzsKICAgICAKICAgICBzd2l0Y2ggKGVuZGlu
Z1NlbGVjdGlvbigpLnNlbGVjdGlvblR5cGUoKSkgewotICAgICAgICBjYXNlIFZpc2libGVTZWxl
Y3Rpb246OlJhbmdlU2VsZWN0aW9uOgotICAgICAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUgPSBl
bmRpbmdTZWxlY3Rpb24oKTsKLSAgICAgICAgICAgIHNlbGVjdGlvbkFmdGVyVW5kbyA9IHNlbGVj
dGlvblRvRGVsZXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVmlzaWJsZVNl
bGVjdGlvbjo6Q2FyZXRTZWxlY3Rpb246IHsKLSAgICAgICAgICAgIC8vIEFmdGVyIGJyZWFraW5n
IG91dCBvZiBhbiBlbXB0eSBtYWlsIGJsb2NrcXVvdGUsIHdlIHN0aWxsIHdhbnQgY29udGludWUg
d2l0aCB0aGUgZGVsZXRpb24KLSAgICAgICAgICAgIC8vIHNvIGFjdHVhbCBjb250ZW50IHdpbGwg
Z2V0IGRlbGV0ZWQsIGFuZCBub3QganVzdCB0aGUgcXVvdGUgc3R5bGUuCi0gICAgICAgICAgICBp
ZiAoYnJlYWtPdXRPZkVtcHR5TWFpbEJsb2NrcXVvdGVkUGFyYWdyYXBoKCkpCi0gICAgICAgICAg
ICAgICAgdHlwaW5nQWRkZWRUb09wZW5Db21tYW5kKERlbGV0ZUtleSk7Ci0gICAgICAgIAotICAg
ICAgICAgICAgbV9zbWFydERlbGV0ZSA9IGZhbHNlOworICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlv
bjo6UmFuZ2VTZWxlY3Rpb246CisgICAgICAgIHNlbGVjdGlvblRvRGVsZXRlID0gZW5kaW5nU2Vs
ZWN0aW9uKCk7CisgICAgICAgIHNlbGVjdGlvbkFmdGVyVW5kbyA9IHNlbGVjdGlvblRvRGVsZXRl
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OkNhcmV0U2VsZWN0
aW9uOiB7CisgICAgICAgIC8vIEFmdGVyIGJyZWFraW5nIG91dCBvZiBhbiBlbXB0eSBtYWlsIGJs
b2NrcXVvdGUsIHdlIHN0aWxsIHdhbnQgY29udGludWUgd2l0aCB0aGUgZGVsZXRpb24KKyAgICAg
ICAgLy8gc28gYWN0dWFsIGNvbnRlbnQgd2lsbCBnZXQgZGVsZXRlZCwgYW5kIG5vdCBqdXN0IHRo
ZSBxdW90ZSBzdHlsZS4KKyAgICAgICAgaWYgKGJyZWFrT3V0T2ZFbXB0eU1haWxCbG9ja3F1b3Rl
ZFBhcmFncmFwaCgpKQorICAgICAgICAgICAgdHlwaW5nQWRkZWRUb09wZW5Db21tYW5kKERlbGV0
ZUtleSk7CisgICAgCisgICAgICAgIG1fc21hcnREZWxldGUgPSBmYWxzZTsKIAotICAgICAgICAg
ICAgU2VsZWN0aW9uQ29udHJvbGxlciBzZWxlY3Rpb247Ci0gICAgICAgICAgICBzZWxlY3Rpb24u
c2V0U2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpKTsKLSAgICAgICAgICAgIHNlbGVjdGlvbi5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpC
QUNLV0FSRCwgZ3JhbnVsYXJpdHkpOwotICAgICAgICAgICAgaWYgKGtpbGxSaW5nICYmIHNlbGVj
dGlvbi5pc0NhcmV0KCkgJiYgZ3JhbnVsYXJpdHkgIT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpIAot
ICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhU
RU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkp
OyAKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLnZpc2li
bGVTdGFydCgpLnByZXZpb3VzKHRydWUpLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8g
V2hlbiB0aGUgY2FyZXQgaXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBlZGl0YWJsZSBhcmVhIGluIGFu
IGVtcHR5IGxpc3QgaXRlbSwgYnJlYWsgb3V0IG9mIHRoZSBsaXN0IGl0ZW0uCi0gICAgICAgICAg
ICAgICAgaWYgKGJyZWFrT3V0T2ZFbXB0eUxpc3RJdGVtKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgdHlwaW5nQWRkZWRUb09wZW5Db21tYW5kKERlbGV0ZUtleSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLy8gV2hlbiB0
aGVyZSBhcmUgbm8gdmlzaWJsZSBwb3NpdGlvbnMgaW4gdGhlIGVkaXRpbmcgcm9vdCwgZGVsZXRl
IGl0cyBlbnRpcmUgY29udGVudHMuCi0gICAgICAgICAgICAgICAgaWYgKGVuZGluZ1NlbGVjdGlv
bigpLnZpc2libGVTdGFydCgpLm5leHQodHJ1ZSkuaXNOdWxsKCkgJiYgbWFrZUVkaXRhYmxlUm9v
dEVtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgdHlwaW5nQWRkZWRUb09wZW5Db21tYW5k
KERlbGV0ZUtleSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlU3RhcnQoZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpOwotICAg
ICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIGNhcmV0IHNlbGVjdGlvbiBvbiBhbiBlbXB0eSBjZWxs
LCB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8uCi0gICAgICAgICAgICBpZiAoaXNFbXB0eVRhYmxlQ2Vs
bCh2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkpKQorICAgICAgICBTZWxlY3Rp
b25Db250cm9sbGVyIHNlbGVjdGlvbjsKKyAgICAgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlvbihl
bmRpbmdTZWxlY3Rpb24oKSk7CisgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgZ3JhbnVsYXJp
dHkpOworICAgICAgICBpZiAoa2lsbFJpbmcgJiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBncmFu
dWxhcml0eSAhPSBDaGFyYWN0ZXJHcmFudWxhcml0eSkgCisgICAgICAgICAgICBzZWxlY3Rpb24u
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
QkFDS1dBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsgCisgICAgICAgIAorICAgICAgICBpZiAo
ZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkucHJldmlvdXModHJ1ZSkuaXNOdWxsKCkp
IHsKKyAgICAgICAgICAgIC8vIFdoZW4gdGhlIGNhcmV0IGlzIGF0IHRoZSBzdGFydCBvZiB0aGUg
ZWRpdGFibGUgYXJlYSBpbiBhbiBlbXB0eSBsaXN0IGl0ZW0sIGJyZWFrIG91dCBvZiB0aGUgbGlz
dCBpdGVtLgorICAgICAgICAgICAgaWYgKGJyZWFrT3V0T2ZFbXB0eUxpc3RJdGVtKCkpIHsKKyAg
ICAgICAgICAgICAgICB0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQoRGVsZXRlS2V5KTsKICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIC8vIElmIHRoZSBjYXJldCBpcyBhdCB0
aGUgc3RhcnQgb2YgYSBwYXJhZ3JhcGggYWZ0ZXIgYSB0YWJsZSwgbW92ZSBjb250ZW50IGludG8g
dGhlIGxhc3QgdGFibGUgY2VsbC4KLSAgICAgICAgICAgIGlmIChpc1N0YXJ0T2ZQYXJhZ3JhcGgo
dmlzaWJsZVN0YXJ0KSAmJiBpc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKHZpc2libGVTdGFydC5w
cmV2aW91cyh0cnVlKSkpIHsKLSAgICAgICAgICAgICAgICAvLyBVbmxlc3MgdGhlIGNhcmV0IGlz
IGp1c3QgYmVmb3JlIGEgdGFibGUuICBXZSBkb24ndCB3YW50IHRvIG1vdmUgYSB0YWJsZSBpbnRv
IHRoZSBsYXN0IHRhYmxlIGNlbGwuCi0gICAgICAgICAgICAgICAgaWYgKGlzTGFzdFBvc2l0aW9u
QmVmb3JlVGFibGUodmlzaWJsZVN0YXJ0KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgICAgIC8vIEV4dGVuZCB0aGUgc2VsZWN0aW9uIGJhY2t3YXJkIGludG8gdGhl
IGxhc3QgY2VsbCwgdGhlbiBkZWxldGlvbiB3aWxsIGhhbmRsZSB0aGUgbW92ZS4KLSAgICAgICAg
ICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIGdyYW51bGFyaXR5KTsKLSAgICAgICAgICAgIC8v
IElmIHRoZSBjYXJldCBpcyBqdXN0IGFmdGVyIGEgdGFibGUsIHNlbGVjdCB0aGUgdGFibGUgYW5k
IGRvbid0IGRlbGV0ZSBhbnl0aGluZy4KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoTm9kZSogdGFi
bGUgPSBpc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKHZpc2libGVTdGFydCkpIHsKLSAgICAgICAg
ICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihQb3NpdGlvbih0YWJs
ZSwgMCksIGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCksIERPV05TVFJFQU0pKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC8vIFdoZW4gdGhlcmUgYXJlIG5vIHZpc2libGUgcG9zaXRpb25z
IGluIHRoZSBlZGl0aW5nIHJvb3QsIGRlbGV0ZSBpdHMgZW50aXJlIGNvbnRlbnRzLgorICAgICAg
ICAgICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLm5leHQodHJ1ZSkuaXNO
dWxsKCkgJiYgbWFrZUVkaXRhYmxlUm9vdEVtcHR5KCkpIHsKICAgICAgICAgICAgICAgICB0eXBp
bmdBZGRlZFRvT3BlbkNvbW1hbmQoRGVsZXRlS2V5KTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlU3RhcnQoZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpOworICAg
ICAgICAvLyBJZiB3ZSBoYXZlIGEgY2FyZXQgc2VsZWN0aW9uIG9uIGFuIGVtcHR5IGNlbGwsIHdl
IGhhdmUgbm90aGluZyB0byBkby4KKyAgICAgICAgaWYgKGlzRW1wdHlUYWJsZUNlbGwodmlzaWJs
ZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKSkKKyAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUgPSBzZWxlY3Rpb24uc2VsZWN0aW9uKCk7Cisg
ICAgICAgIC8vIElmIHRoZSBjYXJldCBpcyBhdCB0aGUgc3RhcnQgb2YgYSBwYXJhZ3JhcGggYWZ0
ZXIgYSB0YWJsZSwgbW92ZSBjb250ZW50IGludG8gdGhlIGxhc3QgdGFibGUgY2VsbC4KKyAgICAg
ICAgaWYgKGlzU3RhcnRPZlBhcmFncmFwaCh2aXNpYmxlU3RhcnQpICYmIGlzRmlyc3RQb3NpdGlv
bkFmdGVyVGFibGUodmlzaWJsZVN0YXJ0LnByZXZpb3VzKHRydWUpKSkgeworICAgICAgICAgICAg
Ly8gVW5sZXNzIHRoZSBjYXJldCBpcyBqdXN0IGJlZm9yZSBhIHRhYmxlLiAgV2UgZG9uJ3Qgd2Fu
dCB0byBtb3ZlIGEgdGFibGUgaW50byB0aGUgbGFzdCB0YWJsZSBjZWxsLgorICAgICAgICAgICAg
aWYgKGlzTGFzdFBvc2l0aW9uQmVmb3JlVGFibGUodmlzaWJsZVN0YXJ0KSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAvLyBFeHRlbmQgdGhlIHNlbGVjdGlvbiBiYWNrd2Fy
ZCBpbnRvIHRoZSBsYXN0IGNlbGwsIHRoZW4gZGVsZXRpb24gd2lsbCBoYW5kbGUgdGhlIG1vdmUu
CisgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVO
RCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIGdyYW51bGFyaXR5KTsKKyAgICAgICAg
Ly8gSWYgdGhlIGNhcmV0IGlzIGp1c3QgYWZ0ZXIgYSB0YWJsZSwgc2VsZWN0IHRoZSB0YWJsZSBh
bmQgZG9uJ3QgZGVsZXRlIGFueXRoaW5nLgorICAgICAgICB9IGVsc2UgaWYgKE5vZGUqIHRhYmxl
ID0gaXNGaXJzdFBvc2l0aW9uQWZ0ZXJUYWJsZSh2aXNpYmxlU3RhcnQpKSB7CisgICAgICAgICAg
ICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihQb3NpdGlvbih0YWJsZSwgMCks
IGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCksIERPV05TVFJFQU0pKTsKKyAgICAgICAgICAgIHR5
cGluZ0FkZGVkVG9PcGVuQ29tbWFuZChEZWxldGVLZXkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChncmFudWxhcml0eSA9PSBDaGFyYWN0ZXJHcmFu
dWxhcml0eSAmJiBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5ub2RlKCkgPT0gc2VsZWN0aW9uVG9E
ZWxldGUuc3RhcnQoKS5ub2RlKCkgJiYgc2VsZWN0aW9uVG9EZWxldGUuZW5kKCkuZGVwcmVjYXRl
ZEVkaXRpbmdPZmZzZXQoKSAtIHNlbGVjdGlvblRvRGVsZXRlLnN0YXJ0KCkuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKSA+IDEpIHsKLSAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbXVs
dGlwbGUgVW5pY29kZSBjb2RlIHBvaW50cyB0byBiZSBkZWxldGVkLCBhZGp1c3QgdGhlIHJhbmdl
IHRvIG1hdGNoIHBsYXRmb3JtIGNvbnZlbnRpb25zLgotICAgICAgICAgICAgICAgIHNlbGVjdGlv
blRvRGVsZXRlLnNldFdpdGhvdXRWYWxpZGF0aW9uKHNlbGVjdGlvblRvRGVsZXRlLmVuZCgpLCBz
ZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5wcmV2aW91cyhCYWNrd2FyZERlbGV0aW9uKSk7Ci0gICAg
ICAgICAgICB9CisgICAgICAgIHNlbGVjdGlvblRvRGVsZXRlID0gc2VsZWN0aW9uLnNlbGVjdGlv
bigpOwogCi0gICAgICAgICAgICBpZiAoIXN0YXJ0aW5nU2VsZWN0aW9uKCkuaXNSYW5nZSgpIHx8
IHNlbGVjdGlvblRvRGVsZXRlLmJhc2UoKSAhPSBzdGFydGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkp
Ci0gICAgICAgICAgICAgICAgc2VsZWN0aW9uQWZ0ZXJVbmRvID0gc2VsZWN0aW9uVG9EZWxldGU7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgLy8gSXQncyBhIGxpdHRsZSB0cmlj
a3kgdG8gY29tcHV0ZSB3aGF0IHRoZSBzdGFydGluZyBzZWxlY3Rpb24gd291bGQgaGF2ZSBiZWVu
IGluIHRoZSBvcmlnaW5hbCBkb2N1bWVudC4KLSAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBs
ZXQgdGhlIFZpc2libGVTZWxlY3Rpb24gY2xhc3MncyB2YWxpZGF0aW9uIGtpY2sgaW4gb3IgaXQn
bGwgYWRqdXN0IGZvciB1cyBiYXNlZCBvbgotICAgICAgICAgICAgICAgIC8vIHRoZSBjdXJyZW50
IHN0YXRlIG9mIHRoZSBkb2N1bWVudCBhbmQgd2UnbGwgZ2V0IHRoZSB3cm9uZyByZXN1bHQuCi0g
ICAgICAgICAgICAgICAgc2VsZWN0aW9uQWZ0ZXJVbmRvLnNldFdpdGhvdXRWYWxpZGF0aW9uKHN0
YXJ0aW5nU2VsZWN0aW9uKCkuZW5kKCksIHNlbGVjdGlvblRvRGVsZXRlLmV4dGVudCgpKTsKLSAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gQ2hhcmFjdGVyR3Jh
bnVsYXJpdHkgJiYgc2VsZWN0aW9uVG9EZWxldGUuZW5kKCkubm9kZSgpID09IHNlbGVjdGlvblRv
RGVsZXRlLnN0YXJ0KCkubm9kZSgpICYmIHNlbGVjdGlvblRvRGVsZXRlLmVuZCgpLmRlcHJlY2F0
ZWRFZGl0aW5nT2Zmc2V0KCkgLSBzZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgpLmRlcHJlY2F0ZWRF
ZGl0aW5nT2Zmc2V0KCkgPiAxKSB7CisgICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbXVsdGlw
bGUgVW5pY29kZSBjb2RlIHBvaW50cyB0byBiZSBkZWxldGVkLCBhZGp1c3QgdGhlIHJhbmdlIHRv
IG1hdGNoIHBsYXRmb3JtIGNvbnZlbnRpb25zLgorICAgICAgICAgICAgc2VsZWN0aW9uVG9EZWxl
dGUuc2V0V2l0aG91dFZhbGlkYXRpb24oc2VsZWN0aW9uVG9EZWxldGUuZW5kKCksIHNlbGVjdGlv
blRvRGVsZXRlLmVuZCgpLnByZXZpb3VzKEJhY2t3YXJkRGVsZXRpb24pKTsKICAgICAgICAgfQot
ICAgICAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246Ok5vU2VsZWN0aW9uOgotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAo
IXN0YXJ0aW5nU2VsZWN0aW9uKCkuaXNSYW5nZSgpIHx8IHNlbGVjdGlvblRvRGVsZXRlLmJhc2Uo
KSAhPSBzdGFydGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkpCisgICAgICAgICAgICBzZWxlY3Rpb25B
ZnRlclVuZG8gPSBzZWxlY3Rpb25Ub0RlbGV0ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
Ly8gSXQncyBhIGxpdHRsZSB0cmlja3kgdG8gY29tcHV0ZSB3aGF0IHRoZSBzdGFydGluZyBzZWxl
Y3Rpb24gd291bGQgaGF2ZSBiZWVuIGluIHRoZSBvcmlnaW5hbCBkb2N1bWVudC4KKyAgICAgICAg
ICAgIC8vIFdlIGNhbid0IGxldCB0aGUgVmlzaWJsZVNlbGVjdGlvbiBjbGFzcydzIHZhbGlkYXRp
b24ga2ljayBpbiBvciBpdCdsbCBhZGp1c3QgZm9yIHVzIGJhc2VkIG9uCisgICAgICAgICAgICAv
LyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgZG9jdW1lbnQgYW5kIHdlJ2xsIGdldCB0aGUgd3Jv
bmcgcmVzdWx0LgorICAgICAgICAgICAgc2VsZWN0aW9uQWZ0ZXJVbmRvLnNldFdpdGhvdXRWYWxp
ZGF0aW9uKHN0YXJ0aW5nU2VsZWN0aW9uKCkuZW5kKCksIHNlbGVjdGlvblRvRGVsZXRlLmV4dGVu
dCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6
Tm9TZWxlY3Rpb246CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVh
azsKICAgICB9CiAgICAgCiAgICAgQVNTRVJUKCFzZWxlY3Rpb25Ub0RlbGV0ZS5pc05vbmUoKSk7
CkBAIC01MTQsNjIgKzUxMyw2MiBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVL
ZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraQogICAgIFZpc2li
bGVTZWxlY3Rpb24gc2VsZWN0aW9uQWZ0ZXJVbmRvOwogCiAgICAgc3dpdGNoIChlbmRpbmdTZWxl
Y3Rpb24oKS5zZWxlY3Rpb25UeXBlKCkpIHsKLSAgICAgICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9u
OjpSYW5nZVNlbGVjdGlvbjoKLSAgICAgICAgICAgIHNlbGVjdGlvblRvRGVsZXRlID0gZW5kaW5n
U2VsZWN0aW9uKCk7Ci0gICAgICAgICAgICBzZWxlY3Rpb25BZnRlclVuZG8gPSBzZWxlY3Rpb25U
b0RlbGV0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZpc2libGVTZWxlY3Rp
b246OkNhcmV0U2VsZWN0aW9uOiB7Ci0gICAgICAgICAgICBtX3NtYXJ0RGVsZXRlID0gZmFsc2U7
Ci0KLSAgICAgICAgICAgIC8vIEhhbmRsZSBkZWxldGUgYXQgYmVnaW5uaW5nLW9mLWJsb2NrIGNh
c2UuCi0gICAgICAgICAgICAvLyBEbyBub3RoaW5nIGluIHRoZSBjYXNlIHRoYXQgdGhlIGNhcmV0
IGlzIGF0IHRoZSBzdGFydCBvZiBhCi0gICAgICAgICAgICAvLyByb290IGVkaXRhYmxlIGVsZW1l
bnQgb3IgYXQgdGhlIHN0YXJ0IG9mIGEgZG9jdW1lbnQuCi0gICAgICAgICAgICBTZWxlY3Rpb25D
b250cm9sbGVyIHNlbGVjdGlvbjsKLSAgICAgICAgICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24o
ZW5kaW5nU2VsZWN0aW9uKCkpOwotICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIGdyYW51
bGFyaXR5KTsKLSAgICAgICAgICAgIGlmIChraWxsUmluZyAmJiBzZWxlY3Rpb24uaXNDYXJldCgp
ICYmIGdyYW51bGFyaXR5ICE9IENoYXJhY3RlckdyYW51bGFyaXR5KSAKLSAgICAgICAgICAgICAg
ICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOyAKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgUG9zaXRpb24gZG93bnN0cmVhbUVuZCA9IGVuZGluZ1NlbGVjdGlvbigp
LmVuZCgpLmRvd25zdHJlYW0oKTsKLSAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxl
RW5kID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpOwotICAgICAgICAgICAgaWYgKHZp
c2libGVFbmQgPT0gZW5kT2ZQYXJhZ3JhcGgodmlzaWJsZUVuZCkpCi0gICAgICAgICAgICAgICAg
ZG93bnN0cmVhbUVuZCA9IHZpc2libGVFbmQubmV4dCh0cnVlKS5kZWVwRXF1aXZhbGVudCgpLmRv
d25zdHJlYW0oKTsKLSAgICAgICAgICAgIC8vIFdoZW4gZGVsZXRpbmcgdGFibGVzOiBTZWxlY3Qg
dGhlIHRhYmxlIGZpcnN0LCB0aGVuIHBlcmZvcm0gdGhlIGRlbGV0aW9uCi0gICAgICAgICAgICBp
ZiAoZG93bnN0cmVhbUVuZC5ub2RlKCkgJiYgZG93bnN0cmVhbUVuZC5ub2RlKCktPnJlbmRlcmVy
KCkgJiYgZG93bnN0cmVhbUVuZC5ub2RlKCktPnJlbmRlcmVyKCktPmlzVGFibGUoKSAmJiBkb3du
c3RyZWFtRW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPT0gMCkgewotICAgICAgICAgICAg
ICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigp
LmVuZCgpLCBsYXN0RGVlcEVkaXRpbmdQb3NpdGlvbkZvck5vZGUoZG93bnN0cmVhbUVuZC5ub2Rl
KCkpLCBET1dOU1RSRUFNKSk7Ci0gICAgICAgICAgICAgICAgdHlwaW5nQWRkZWRUb09wZW5Db21t
YW5kKEZvcndhcmREZWxldGVLZXkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KKyAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OlJhbmdlU2VsZWN0aW9uOgorICAgICAg
ICBzZWxlY3Rpb25Ub0RlbGV0ZSA9IGVuZGluZ1NlbGVjdGlvbigpOworICAgICAgICBzZWxlY3Rp
b25BZnRlclVuZG8gPSBzZWxlY3Rpb25Ub0RlbGV0ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBWaXNpYmxlU2VsZWN0aW9uOjpDYXJldFNlbGVjdGlvbjogeworICAgICAgICBtX3NtYXJ0RGVs
ZXRlID0gZmFsc2U7CisKKyAgICAgICAgLy8gSGFuZGxlIGRlbGV0ZSBhdCBiZWdpbm5pbmctb2Yt
YmxvY2sgY2FzZS4KKyAgICAgICAgLy8gRG8gbm90aGluZyBpbiB0aGUgY2FzZSB0aGF0IHRoZSBj
YXJldCBpcyBhdCB0aGUgc3RhcnQgb2YgYQorICAgICAgICAvLyByb290IGVkaXRhYmxlIGVsZW1l
bnQgb3IgYXQgdGhlIHN0YXJ0IG9mIGEgZG9jdW1lbnQuCisgICAgICAgIFNlbGVjdGlvbkNvbnRy
b2xsZXIgc2VsZWN0aW9uOworICAgICAgICBzZWxlY3Rpb24uc2V0U2VsZWN0aW9uKGVuZGluZ1Nl
bGVjdGlvbigpKTsKKyAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVy
OjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIGdyYW51bGFyaXR5KTsKKyAg
ICAgICAgaWYgKGtpbGxSaW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgZ3JhbnVsYXJpdHkg
IT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpIAorICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShT
ZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQs
IENoYXJhY3RlckdyYW51bGFyaXR5KTsgCisgICAgICAgIAorICAgICAgICBQb3NpdGlvbiBkb3du
c3RyZWFtRW5kID0gZW5kaW5nU2VsZWN0aW9uKCkuZW5kKCkuZG93bnN0cmVhbSgpOworICAgICAg
ICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZUVuZCA9IGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVF
bmQoKTsKKyAgICAgICAgaWYgKHZpc2libGVFbmQgPT0gZW5kT2ZQYXJhZ3JhcGgodmlzaWJsZUVu
ZCkpCisgICAgICAgICAgICBkb3duc3RyZWFtRW5kID0gdmlzaWJsZUVuZC5uZXh0KHRydWUpLmRl
ZXBFcXVpdmFsZW50KCkuZG93bnN0cmVhbSgpOworICAgICAgICAvLyBXaGVuIGRlbGV0aW5nIHRh
YmxlczogU2VsZWN0IHRoZSB0YWJsZSBmaXJzdCwgdGhlbiBwZXJmb3JtIHRoZSBkZWxldGlvbgor
ICAgICAgICBpZiAoZG93bnN0cmVhbUVuZC5ub2RlKCkgJiYgZG93bnN0cmVhbUVuZC5ub2RlKCkt
PnJlbmRlcmVyKCkgJiYgZG93bnN0cmVhbUVuZC5ub2RlKCktPnJlbmRlcmVyKCktPmlzVGFibGUo
KSAmJiAhZG93bnN0cmVhbUVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKSB7CisgICAgICAg
ICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24o
KS5lbmQoKSwgbGFzdERlZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKGRvd25zdHJlYW1FbmQubm9k
ZSgpKSwgRE9XTlNUUkVBTSkpOworICAgICAgICAgICAgdHlwaW5nQWRkZWRUb09wZW5Db21tYW5k
KEZvcndhcmREZWxldGVLZXkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAg
ICAgICAgICAgIC8vIGRlbGV0aW5nIHRvIGVuZCBvZiBwYXJhZ3JhcGggd2hlbiBhdCBlbmQgb2Yg
cGFyYWdyYXBoIG5lZWRzIHRvIG1lcmdlIHRoZSBuZXh0IHBhcmFncmFwaCAoaWYgYW55KQotICAg
ICAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFBhcmFncmFwaEJvdW5kYXJ5ICYmIHNlbGVjdGlv
bi5zZWxlY3Rpb24oKS5pc0NhcmV0KCkgJiYgaXNFbmRPZlBhcmFncmFwaChzZWxlY3Rpb24uc2Vs
ZWN0aW9uKCkudmlzaWJsZUVuZCgpKSkKLSAgICAgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FS
RCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICAvLyBkZWxldGluZyB0byBlbmQgb2Yg
cGFyYWdyYXBoIHdoZW4gYXQgZW5kIG9mIHBhcmFncmFwaCBuZWVkcyB0byBtZXJnZSB0aGUgbmV4
dCBwYXJhZ3JhcGggKGlmIGFueSkKKyAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFBhcmFncmFw
aEJvdW5kYXJ5ICYmIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0NhcmV0KCkgJiYgaXNFbmRPZlBh
cmFncmFwaChzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpKSkKKyAgICAgICAgICAg
IHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25D
b250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKLSAgICAgICAgICAg
IHNlbGVjdGlvblRvRGVsZXRlID0gc2VsZWN0aW9uLnNlbGVjdGlvbigpOwotICAgICAgICAgICAg
aWYgKCFzdGFydGluZ1NlbGVjdGlvbigpLmlzUmFuZ2UoKSB8fCBzZWxlY3Rpb25Ub0RlbGV0ZS5i
YXNlKCkgIT0gc3RhcnRpbmdTZWxlY3Rpb24oKS5zdGFydCgpKQotICAgICAgICAgICAgICAgIHNl
bGVjdGlvbkFmdGVyVW5kbyA9IHNlbGVjdGlvblRvRGVsZXRlOworICAgICAgICBzZWxlY3Rpb25U
b0RlbGV0ZSA9IHNlbGVjdGlvbi5zZWxlY3Rpb24oKTsKKyAgICAgICAgaWYgKCFzdGFydGluZ1Nl
bGVjdGlvbigpLmlzUmFuZ2UoKSB8fCBzZWxlY3Rpb25Ub0RlbGV0ZS5iYXNlKCkgIT0gc3RhcnRp
bmdTZWxlY3Rpb24oKS5zdGFydCgpKQorICAgICAgICAgICAgc2VsZWN0aW9uQWZ0ZXJVbmRvID0g
c2VsZWN0aW9uVG9EZWxldGU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gSXQncyBh
IGxpdHRsZSB0cmlja3kgdG8gY29tcHV0ZSB3aGF0IHRoZSBzdGFydGluZyBzZWxlY3Rpb24gd291
bGQgaGF2ZSBiZWVuIGluIHRoZSBvcmlnaW5hbCBkb2N1bWVudC4KKyAgICAgICAgICAgIC8vIFdl
IGNhbid0IGxldCB0aGUgVmlzaWJsZVNlbGVjdGlvbiBjbGFzcydzIHZhbGlkYXRpb24ga2ljayBp
biBvciBpdCdsbCBhZGp1c3QgZm9yIHVzIGJhc2VkIG9uCisgICAgICAgICAgICAvLyB0aGUgY3Vy
cmVudCBzdGF0ZSBvZiB0aGUgZG9jdW1lbnQgYW5kIHdlJ2xsIGdldCB0aGUgd3JvbmcgcmVzdWx0
LgorICAgICAgICAgICAgUG9zaXRpb24gZXh0ZW50ID0gc3RhcnRpbmdTZWxlY3Rpb24oKS5lbmQo
KTsKKyAgICAgICAgICAgIGlmIChleHRlbnQubm9kZSgpICE9IHNlbGVjdGlvblRvRGVsZXRlLmVu
ZCgpLm5vZGUoKSkKKyAgICAgICAgICAgICAgICBleHRlbnQgPSBzZWxlY3Rpb25Ub0RlbGV0ZS5l
eHRlbnQoKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIC8vIEl0J3MgYSBs
aXR0bGUgdHJpY2t5IHRvIGNvbXB1dGUgd2hhdCB0aGUgc3RhcnRpbmcgc2VsZWN0aW9uIHdvdWxk
IGhhdmUgYmVlbiBpbiB0aGUgb3JpZ2luYWwgZG9jdW1lbnQuCi0gICAgICAgICAgICAgICAgLy8g
V2UgY2FuJ3QgbGV0IHRoZSBWaXNpYmxlU2VsZWN0aW9uIGNsYXNzJ3MgdmFsaWRhdGlvbiBraWNr
IGluIG9yIGl0J2xsIGFkanVzdCBmb3IgdXMgYmFzZWQgb24KLSAgICAgICAgICAgICAgICAvLyB0
aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgZG9jdW1lbnQgYW5kIHdlJ2xsIGdldCB0aGUgd3Jvbmcg
cmVzdWx0LgotICAgICAgICAgICAgICAgIFBvc2l0aW9uIGV4dGVudCA9IHN0YXJ0aW5nU2VsZWN0
aW9uKCkuZW5kKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGV4dGVudC5ub2RlKCkgIT0gc2VsZWN0
aW9uVG9EZWxldGUuZW5kKCkubm9kZSgpKQotICAgICAgICAgICAgICAgICAgICBleHRlbnQgPSBz
ZWxlY3Rpb25Ub0RlbGV0ZS5leHRlbnQoKTsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgaW50IGV4dHJhQ2hhcmFjdGVyczsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHNlbGVjdGlvblRvRGVsZXRlLnN0YXJ0KCkubm9kZSgpID09IHNlbGVjdGlvblRvRGVsZXRl
LmVuZCgpLm5vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhQ2hhcmFjdGVycyA9
IHNlbGVjdGlvblRvRGVsZXRlLmVuZCgpLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgLSBzZWxl
Y3Rpb25Ub0RlbGV0ZS5zdGFydCgpLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhQ2hhcmFjdGVy
cyA9IHNlbGVjdGlvblRvRGVsZXRlLmVuZCgpLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGV4dGVudCA9IFBvc2l0aW9uKGV4dGVudC5ub2RlKCksIGV4dGVu
dC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpICsgZXh0cmFDaGFyYWN0ZXJzKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2VsZWN0aW9uQWZ0ZXJVbmRvLnNldFdpdGhvdXRW
YWxpZGF0aW9uKHN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgZXh0ZW50KTsKKyAgICAgICAg
ICAgICAgICBpbnQgZXh0cmFDaGFyYWN0ZXJzOworICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rp
b25Ub0RlbGV0ZS5zdGFydCgpLm5vZGUoKSA9PSBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5ub2Rl
KCkpCisgICAgICAgICAgICAgICAgICAgIGV4dHJhQ2hhcmFjdGVycyA9IHNlbGVjdGlvblRvRGVs
ZXRlLmVuZCgpLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgLSBzZWxlY3Rpb25Ub0RlbGV0ZS5z
dGFydCgpLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBleHRyYUNoYXJhY3RlcnMgPSBzZWxlY3Rpb25Ub0RlbGV0ZS5l
bmQoKS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOworICAgICAgICAgICAgICAgIGV4dGVudCA9
IFBvc2l0aW9uKGV4dGVudC5ub2RlKCksIGV4dGVudC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgp
ICsgZXh0cmFDaGFyYWN0ZXJzKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgc2VsZWN0aW9uQWZ0ZXJVbmRvLnNldFdpdGhvdXRWYWxpZGF0aW9uKHN0YXJ0
aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgZXh0ZW50KTsKICAgICAgICAgfQotICAgICAgICBjYXNl
IFZpc2libGVTZWxlY3Rpb246Ok5vU2VsZWN0aW9uOgotICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxlY3Rpb246CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgCiAgICAgQVNTRVJUKCFzZWxl
Y3Rpb25Ub0RlbGV0ZS5pc05vbmUoKSk7CkBAIC01OTcsMTcgKzU5NiwxNyBAQCB2b2lkIFR5cGlu
Z0NvbW1hbmQ6OmRlbGV0ZVNlbGVjdGlvbihib29sIHNtYXJ0RGVsZXRlKQogdm9pZCBUeXBpbmdD
b21tYW5kOjp1cGRhdGVQcmVzZXJ2ZXNUeXBpbmdTdHlsZShFVHlwaW5nQ29tbWFuZCBjb21tYW5k
VHlwZSkKIHsKICAgICBzd2l0Y2ggKGNvbW1hbmRUeXBlKSB7Ci0gICAgICAgIGNhc2UgRGVsZXRl
U2VsZWN0aW9uOgotICAgICAgICBjYXNlIERlbGV0ZUtleToKLSAgICAgICAgY2FzZSBGb3J3YXJk
RGVsZXRlS2V5OgotICAgICAgICBjYXNlIEluc2VydFBhcmFncmFwaFNlcGFyYXRvcjoKLSAgICAg
ICAgY2FzZSBJbnNlcnRMaW5lQnJlYWs6Ci0gICAgICAgICAgICBtX3ByZXNlcnZlc1R5cGluZ1N0
eWxlID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBJbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQ6Ci0gICAgICAgIGNhc2UgSW5zZXJ0VGV4dDoK
LSAgICAgICAgICAgIG1fcHJlc2VydmVzVHlwaW5nU3R5bGUgPSBmYWxzZTsKLSAgICAgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIERlbGV0ZVNlbGVjdGlvbjoKKyAgICBjYXNlIERlbGV0ZUtleToK
KyAgICBjYXNlIEZvcndhcmREZWxldGVLZXk6CisgICAgY2FzZSBJbnNlcnRQYXJhZ3JhcGhTZXBh
cmF0b3I6CisgICAgY2FzZSBJbnNlcnRMaW5lQnJlYWs6CisgICAgICAgIG1fcHJlc2VydmVzVHlw
aW5nU3R5bGUgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBJbnNlcnRQYXJhZ3Jh
cGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQ6CisgICAgY2FzZSBJbnNlcnRUZXh0OgorICAgICAg
ICBtX3ByZXNlcnZlc1R5cGluZ1N0eWxlID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgbV9wcmVzZXJ2ZXNUeXBpbmdTdHlsZSA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA2NTY2ZjhhLi5lOTI3OGFjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcApAQCAtNDE1LDggKzQxNSw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZVByZXNzRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZl
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAjaWYgRU5BQkxFKFNWRykKLSAgICBpZiAobV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpICYmCi0gICAgICAgc3RhdGljX2Nhc3Q8U1ZH
RG9jdW1lbnQqPihtX2ZyYW1lLT5kb2N1bWVudCgpKS0+em9vbUFuZFBhbkVuYWJsZWQoKSkgewor
ICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5pc1NWR0RvY3VtZW50KCkKKyAgICAgICAgJiYg
c3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihtX2ZyYW1lLT5kb2N1bWVudCgpKS0+em9vbUFuZFBh
bkVuYWJsZWQoKSkgewogICAgICAgICBpZiAoZXZlbnQuZXZlbnQoKS5zaGlmdEtleSgpICYmIHNp
bmdsZUNsaWNrKSB7CiAgICAgICAgICAgICBtX3N2Z1BhbiA9IHRydWU7CiAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KG1fZnJhbWUtPmRvY3VtZW50KCkpLT5zdGFydFBhbihl
dmVudC5ldmVudCgpLnBvcygpKTsKQEAgLTQ0OSw4ICs0NDksOCBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIGV2ZQogICAgIGVsc2UKICAgICAgICAgc3dhbGxvd0V2ZW50ID0gaGFuZGxlTW91c2VQcmVz
c0V2ZW50U2luZ2xlQ2xpY2soZXZlbnQpOwogICAgIAotICAgIG1fbW91c2VEb3duTWF5U3RhcnRB
dXRvc2Nyb2xsID0gbV9tb3VzZURvd25NYXlTdGFydFNlbGVjdCB8fCAKLSAgICAgICAgKG1fbW91
c2VQcmVzc05vZGUgJiYgbV9tb3VzZVByZXNzTm9kZS0+cmVuZGVyQm94KCkgJiYgbV9tb3VzZVBy
ZXNzTm9kZS0+cmVuZGVyQm94KCktPmNhbkJlUHJvZ3JhbWF0aWNhbGx5U2Nyb2xsZWQodHJ1ZSkp
OworICAgIG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsID0gbV9tb3VzZURvd25NYXlTdGFy
dFNlbGVjdAorICAgICAgICB8fCAobV9tb3VzZVByZXNzTm9kZSAmJiBtX21vdXNlUHJlc3NOb2Rl
LT5yZW5kZXJCb3goKSAmJiBtX21vdXNlUHJlc3NOb2RlLT5yZW5kZXJCb3goKS0+Y2FuQmVQcm9n
cmFtYXRpY2FsbHlTY3JvbGxlZCh0cnVlKSk7CiAKICAgICByZXR1cm4gc3dhbGxvd0V2ZW50Owog
fQpAQCAtNjQzLDcgKzY0Myw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVh
c2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBlCiAgICAgICAgICAg
ICAmJiBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpCiAgICAgICAgICAgICAmJiBldmVu
dC5ldmVudCgpLmJ1dHRvbigpICE9IFJpZ2h0QnV0dG9uKSB7CiAgICAgICAgIFZpc2libGVTZWxl
Y3Rpb24gbmV3U2VsZWN0aW9uOwotICAgICAgICBOb2RlICpub2RlID0gZXZlbnQudGFyZ2V0Tm9k
ZSgpOworICAgICAgICBOb2RlKiBub2RlID0gZXZlbnQudGFyZ2V0Tm9kZSgpOwogICAgICAgICBi
b29sIGNhcmV0QnJvd3NpbmcgPSBtX2ZyYW1lLT5zZXR0aW5ncygpLT5jYXJldEJyb3dzaW5nRW5h
YmxlZCgpOwogICAgICAgICBpZiAobm9kZSAmJiAoY2FyZXRCcm93c2luZyB8fCBub2RlLT5pc0Nv
bnRlbnRFZGl0YWJsZSgpKSAmJiBub2RlLT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICBWaXNp
YmxlUG9zaXRpb24gcG9zID0gbm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChldmVu
dC5sb2NhbFBvaW50KCkpOwpAQCAtNzY0LDcgKzc2NCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1
cGRhdGVQYW5TY3JvbGxTdGF0ZSgpCiAgICAgICAgIHZpZXctPnNldEN1cnNvcihtaWRkbGVQYW5u
aW5nQ3Vyc29yKCkpOwogfQogCi0jZW5kaWYgIC8vIEVOQUJMRShQQU5fU0NST0xMSU5HKQorI2Vu
ZGlmIC8vIEVOQUJMRShQQU5fU0NST0xMSU5HKQogCiBSZW5kZXJPYmplY3QqIEV2ZW50SGFuZGxl
cjo6YXV0b3Njcm9sbFJlbmRlcmVyKCkgY29uc3QKIHsKQEAgLTEwMzksMTE3ICsxMDM5LDExNyBA
QCBDdXJzb3IgRXZlbnRIYW5kbGVyOjpzZWxlY3RDdXJzb3IoY29uc3QgTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cyYgZXZlbnQsIFNjcgogICAgIH0KIAogICAgIHN3aXRjaCAoc3R5bGUgPyBz
dHlsZS0+Y3Vyc29yKCkgOiBDVVJTT1JfQVVUTykgewotICAgICAgICBjYXNlIENVUlNPUl9BVVRP
OiB7Ci0gICAgICAgICAgICBib29sIGVkaXRhYmxlID0gKG5vZGUgJiYgbm9kZS0+aXNDb250ZW50
RWRpdGFibGUoKSk7Ci0gICAgICAgICAgICBib29sIGVkaXRhYmxlTGlua0VuYWJsZWQgPSBmYWxz
ZTsKLQotICAgICAgICAgICAgLy8gSWYgdGhlIGxpbmsgaXMgZWRpdGFibGUsIHRoZW4gd2UgbmVl
ZCB0byBjaGVjayB0aGUgc2V0dGluZ3MgdG8gc2VlIHdoZXRoZXIgb3Igbm90IHRoZSBsaW5rIHNo
b3VsZCBiZSBmb2xsb3dlZAotICAgICAgICAgICAgaWYgKGVkaXRhYmxlKSB7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKG1fZnJhbWUtPnNldHRpbmdzKCkpOwotICAgICAgICAgICAgICAgIHN3aXRj
aCAobV9mcmFtZS0+c2V0dGluZ3MoKS0+ZWRpdGFibGVMaW5rQmVoYXZpb3IoKSkgewotICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBjYXNlIEVkaXRhYmxl
TGlua0RlZmF1bHRCZWhhdmlvcjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBFZGl0YWJsZUxp
bmtBbHdheXNMaXZlOgotICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGVMaW5rRW5hYmxl
ZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAg
ICAgICAgICBjYXNlIEVkaXRhYmxlTGlua05ldmVyTGl2ZToKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGVkaXRhYmxlTGlua0VuYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgRWRpdGFibGVMaW5rTGl2ZVdoZW5O
b3RGb2N1c2VkOgotICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGVMaW5rRW5hYmxlZCA9
IG5vZGVJc05vdEJlaW5nRWRpdGVkKG5vZGUsIG1fZnJhbWUpIHx8IGV2ZW50LmV2ZW50KCkuc2hp
ZnRLZXkoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBFZGl0YWJsZUxpbmtPbmx5TGl2ZVdpdGhT
aGlmdEtleToKLSAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlTGlua0VuYWJsZWQgPSBl
dmVudC5ldmVudCgpLnNoaWZ0S2V5KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAgY2FzZSBDVVJTT1JfQVVUTzog
eworICAgICAgICBib29sIGVkaXRhYmxlID0gKG5vZGUgJiYgbm9kZS0+aXNDb250ZW50RWRpdGFi
bGUoKSk7CisgICAgICAgIGJvb2wgZWRpdGFibGVMaW5rRW5hYmxlZCA9IGZhbHNlOworCisgICAg
ICAgIC8vIElmIHRoZSBsaW5rIGlzIGVkaXRhYmxlLCB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgdGhl
IHNldHRpbmdzIHRvIHNlZSB3aGV0aGVyIG9yIG5vdCB0aGUgbGluayBzaG91bGQgYmUgZm9sbG93
ZWQKKyAgICAgICAgaWYgKGVkaXRhYmxlKSB7CisgICAgICAgICAgICBBU1NFUlQobV9mcmFtZS0+
c2V0dGluZ3MoKSk7CisgICAgICAgICAgICBzd2l0Y2ggKG1fZnJhbWUtPnNldHRpbmdzKCktPmVk
aXRhYmxlTGlua0JlaGF2aW9yKCkpIHsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBjYXNlIEVkaXRhYmxlTGlua0RlZmF1bHRCZWhhdmlvcjoKKyAgICAgICAgICAgIGNhc2UgRWRp
dGFibGVMaW5rQWx3YXlzTGl2ZToKKyAgICAgICAgICAgICAgICBlZGl0YWJsZUxpbmtFbmFibGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBFZGl0
YWJsZUxpbmtOZXZlckxpdmU6CisgICAgICAgICAgICAgICAgZWRpdGFibGVMaW5rRW5hYmxlZCA9
IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIEVkaXRh
YmxlTGlua0xpdmVXaGVuTm90Rm9jdXNlZDoKKyAgICAgICAgICAgICAgICBlZGl0YWJsZUxpbmtF
bmFibGVkID0gbm9kZUlzTm90QmVpbmdFZGl0ZWQobm9kZSwgbV9mcmFtZSkgfHwgZXZlbnQuZXZl
bnQoKS5zaGlmdEtleSgpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBpZiAoKGV2ZW50LmlzT3ZlckxpbmsoKSB8fCBpc1N1Ym1pdEltYWdlKG5vZGUp
KSAmJiAoIWVkaXRhYmxlIHx8IGVkaXRhYmxlTGlua0VuYWJsZWQpKQotICAgICAgICAgICAgICAg
IHJldHVybiBoYW5kQ3Vyc29yKCk7Ci0gICAgICAgICAgICBib29sIGluUmVzaXplciA9IGZhbHNl
OwotICAgICAgICAgICAgaWYgKHJlbmRlcmVyKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFJlbmRl
ckxheWVyKiBsYXllciA9IHJlbmRlcmVyLT5lbmNsb3NpbmdMYXllcigpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBpblJlc2l6ZXIgPSBsYXllci0+aXNQb2ludEluUmVzaXplQ29udHJv
bCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LmV2ZW50KCkucG9zKCkpKTsKLSAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEVkaXRhYmxlTGlua09ubHlMaXZlV2l0aFNoaWZ0
S2V5OgorICAgICAgICAgICAgICAgIGVkaXRhYmxlTGlua0VuYWJsZWQgPSBldmVudC5ldmVudCgp
LnNoaWZ0S2V5KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAoKGVkaXRhYmxlIHx8IChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNUZXh0KCkg
JiYgbm9kZS0+Y2FuU3RhcnRTZWxlY3Rpb24oKSkpICYmICFpblJlc2l6ZXIgJiYgIXNjcm9sbGJh
cikKLSAgICAgICAgICAgICAgICByZXR1cm4gaUJlYW1DdXJzb3IoKTsKLSAgICAgICAgICAgIHJl
dHVybiBwb2ludGVyQ3Vyc29yKCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBDVVJTT1JfQ1JP
U1M6Ci0gICAgICAgICAgICByZXR1cm4gY3Jvc3NDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJT
T1JfUE9JTlRFUjoKKyAgICAgICAgCisgICAgICAgIGlmICgoZXZlbnQuaXNPdmVyTGluaygpIHx8
IGlzU3VibWl0SW1hZ2Uobm9kZSkpICYmICghZWRpdGFibGUgfHwgZWRpdGFibGVMaW5rRW5hYmxl
ZCkpCiAgICAgICAgICAgICByZXR1cm4gaGFuZEN1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNP
Ul9NT1ZFOgotICAgICAgICAgICAgcmV0dXJuIG1vdmVDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBD
VVJTT1JfQUxMX1NDUk9MTDoKLSAgICAgICAgICAgIHJldHVybiBtb3ZlQ3Vyc29yKCk7Ci0gICAg
ICAgIGNhc2UgQ1VSU09SX0VfUkVTSVpFOgotICAgICAgICAgICAgcmV0dXJuIGVhc3RSZXNpemVD
dXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1JfV19SRVNJWkU6Ci0gICAgICAgICAgICByZXR1
cm4gd2VzdFJlc2l6ZUN1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9OX1JFU0laRToKLSAg
ICAgICAgICAgIHJldHVybiBub3J0aFJlc2l6ZUN1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNP
Ul9TX1JFU0laRToKLSAgICAgICAgICAgIHJldHVybiBzb3V0aFJlc2l6ZUN1cnNvcigpOwotICAg
ICAgICBjYXNlIENVUlNPUl9ORV9SRVNJWkU6Ci0gICAgICAgICAgICByZXR1cm4gbm9ydGhFYXN0
UmVzaXplQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX1NXX1JFU0laRToKLSAgICAgICAg
ICAgIHJldHVybiBzb3V0aFdlc3RSZXNpemVDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1Jf
TldfUkVTSVpFOgotICAgICAgICAgICAgcmV0dXJuIG5vcnRoV2VzdFJlc2l6ZUN1cnNvcigpOwot
ICAgICAgICBjYXNlIENVUlNPUl9TRV9SRVNJWkU6Ci0gICAgICAgICAgICByZXR1cm4gc291dGhF
YXN0UmVzaXplQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX05TX1JFU0laRToKLSAgICAg
ICAgICAgIHJldHVybiBub3J0aFNvdXRoUmVzaXplQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VS
U09SX0VXX1JFU0laRToKLSAgICAgICAgICAgIHJldHVybiBlYXN0V2VzdFJlc2l6ZUN1cnNvcigp
OwotICAgICAgICBjYXNlIENVUlNPUl9ORVNXX1JFU0laRToKLSAgICAgICAgICAgIHJldHVybiBu
b3J0aEVhc3RTb3V0aFdlc3RSZXNpemVDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1JfTldT
RV9SRVNJWkU6Ci0gICAgICAgICAgICByZXR1cm4gbm9ydGhXZXN0U291dGhFYXN0UmVzaXplQ3Vy
c29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX0NPTF9SRVNJWkU6Ci0gICAgICAgICAgICByZXR1
cm4gY29sdW1uUmVzaXplQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX1JPV19SRVNJWkU6
Ci0gICAgICAgICAgICByZXR1cm4gcm93UmVzaXplQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VS
U09SX1RFWFQ6CisgICAgICAgIGJvb2wgaW5SZXNpemVyID0gZmFsc2U7CisgICAgICAgIGlmIChy
ZW5kZXJlcikgeworICAgICAgICAgICAgaWYgKFJlbmRlckxheWVyKiBsYXllciA9IHJlbmRlcmVy
LT5lbmNsb3NpbmdMYXllcigpKSB7CisgICAgICAgICAgICAgICAgaWYgKEZyYW1lVmlldyogdmll
dyA9IG1fZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgICAgICAgICAgICAgaW5SZXNpemVyID0gbGF5
ZXItPmlzUG9pbnRJblJlc2l6ZUNvbnRyb2wodmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5l
dmVudCgpLnBvcygpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKChl
ZGl0YWJsZSB8fCAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzVGV4dCgpICYmIG5vZGUtPmNhblN0
YXJ0U2VsZWN0aW9uKCkpKSAmJiAhaW5SZXNpemVyICYmICFzY3JvbGxiYXIpCiAgICAgICAgICAg
ICByZXR1cm4gaUJlYW1DdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1JfV0FJVDoKLSAgICAg
ICAgICAgIHJldHVybiB3YWl0Q3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX0hFTFA6Ci0g
ICAgICAgICAgICByZXR1cm4gaGVscEN1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9WRVJU
SUNBTF9URVhUOgotICAgICAgICAgICAgcmV0dXJuIHZlcnRpY2FsVGV4dEN1cnNvcigpOwotICAg
ICAgICBjYXNlIENVUlNPUl9DRUxMOgotICAgICAgICAgICAgcmV0dXJuIGNlbGxDdXJzb3IoKTsK
LSAgICAgICAgY2FzZSBDVVJTT1JfQ09OVEVYVF9NRU5VOgotICAgICAgICAgICAgcmV0dXJuIGNv
bnRleHRNZW51Q3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX1BST0dSRVNTOgotICAgICAg
ICAgICAgcmV0dXJuIHByb2dyZXNzQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX05PX0RS
T1A6Ci0gICAgICAgICAgICByZXR1cm4gbm9Ecm9wQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VS
U09SX0FMSUFTOgotICAgICAgICAgICAgcmV0dXJuIGFsaWFzQ3Vyc29yKCk7Ci0gICAgICAgIGNh
c2UgQ1VSU09SX0NPUFk6Ci0gICAgICAgICAgICByZXR1cm4gY29weUN1cnNvcigpOwotICAgICAg
ICBjYXNlIENVUlNPUl9OT05FOgotICAgICAgICAgICAgcmV0dXJuIG5vbmVDdXJzb3IoKTsKLSAg
ICAgICAgY2FzZSBDVVJTT1JfTk9UX0FMTE9XRUQ6Ci0gICAgICAgICAgICByZXR1cm4gbm90QWxs
b3dlZEN1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9ERUZBVUxUOgotICAgICAgICAgICAg
cmV0dXJuIHBvaW50ZXJDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1JfV0VCS0lUX1pPT01f
SU46Ci0gICAgICAgICAgICByZXR1cm4gem9vbUluQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VS
U09SX1dFQktJVF9aT09NX09VVDoKLSAgICAgICAgICAgIHJldHVybiB6b29tT3V0Q3Vyc29yKCk7
Ci0gICAgICAgIGNhc2UgQ1VSU09SX1dFQktJVF9HUkFCOgotICAgICAgICAgICAgcmV0dXJuIGdy
YWJDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1JfV0VCS0lUX0dSQUJCSU5HOgotICAgICAg
ICAgICAgcmV0dXJuIGdyYWJiaW5nQ3Vyc29yKCk7CisgICAgICAgIHJldHVybiBwb2ludGVyQ3Vy
c29yKCk7CisgICAgfQorICAgIGNhc2UgQ1VSU09SX0NST1NTOgorICAgICAgICByZXR1cm4gY3Jv
c3NDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9QT0lOVEVSOgorICAgICAgICByZXR1cm4gaGFu
ZEN1cnNvcigpOworICAgIGNhc2UgQ1VSU09SX01PVkU6CisgICAgICAgIHJldHVybiBtb3ZlQ3Vy
c29yKCk7CisgICAgY2FzZSBDVVJTT1JfQUxMX1NDUk9MTDoKKyAgICAgICAgcmV0dXJuIG1vdmVD
dXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9FX1JFU0laRToKKyAgICAgICAgcmV0dXJuIGVhc3RS
ZXNpemVDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9XX1JFU0laRToKKyAgICAgICAgcmV0dXJu
IHdlc3RSZXNpemVDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9OX1JFU0laRToKKyAgICAgICAg
cmV0dXJuIG5vcnRoUmVzaXplQ3Vyc29yKCk7CisgICAgY2FzZSBDVVJTT1JfU19SRVNJWkU6Cisg
ICAgICAgIHJldHVybiBzb3V0aFJlc2l6ZUN1cnNvcigpOworICAgIGNhc2UgQ1VSU09SX05FX1JF
U0laRToKKyAgICAgICAgcmV0dXJuIG5vcnRoRWFzdFJlc2l6ZUN1cnNvcigpOworICAgIGNhc2Ug
Q1VSU09SX1NXX1JFU0laRToKKyAgICAgICAgcmV0dXJuIHNvdXRoV2VzdFJlc2l6ZUN1cnNvcigp
OworICAgIGNhc2UgQ1VSU09SX05XX1JFU0laRToKKyAgICAgICAgcmV0dXJuIG5vcnRoV2VzdFJl
c2l6ZUN1cnNvcigpOworICAgIGNhc2UgQ1VSU09SX1NFX1JFU0laRToKKyAgICAgICAgcmV0dXJu
IHNvdXRoRWFzdFJlc2l6ZUN1cnNvcigpOworICAgIGNhc2UgQ1VSU09SX05TX1JFU0laRToKKyAg
ICAgICAgcmV0dXJuIG5vcnRoU291dGhSZXNpemVDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9F
V19SRVNJWkU6CisgICAgICAgIHJldHVybiBlYXN0V2VzdFJlc2l6ZUN1cnNvcigpOworICAgIGNh
c2UgQ1VSU09SX05FU1dfUkVTSVpFOgorICAgICAgICByZXR1cm4gbm9ydGhFYXN0U291dGhXZXN0
UmVzaXplQ3Vyc29yKCk7CisgICAgY2FzZSBDVVJTT1JfTldTRV9SRVNJWkU6CisgICAgICAgIHJl
dHVybiBub3J0aFdlc3RTb3V0aEVhc3RSZXNpemVDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9D
T0xfUkVTSVpFOgorICAgICAgICByZXR1cm4gY29sdW1uUmVzaXplQ3Vyc29yKCk7CisgICAgY2Fz
ZSBDVVJTT1JfUk9XX1JFU0laRToKKyAgICAgICAgcmV0dXJuIHJvd1Jlc2l6ZUN1cnNvcigpOwor
ICAgIGNhc2UgQ1VSU09SX1RFWFQ6CisgICAgICAgIHJldHVybiBpQmVhbUN1cnNvcigpOworICAg
IGNhc2UgQ1VSU09SX1dBSVQ6CisgICAgICAgIHJldHVybiB3YWl0Q3Vyc29yKCk7CisgICAgY2Fz
ZSBDVVJTT1JfSEVMUDoKKyAgICAgICAgcmV0dXJuIGhlbHBDdXJzb3IoKTsKKyAgICBjYXNlIENV
UlNPUl9WRVJUSUNBTF9URVhUOgorICAgICAgICByZXR1cm4gdmVydGljYWxUZXh0Q3Vyc29yKCk7
CisgICAgY2FzZSBDVVJTT1JfQ0VMTDoKKyAgICAgICAgcmV0dXJuIGNlbGxDdXJzb3IoKTsKKyAg
ICBjYXNlIENVUlNPUl9DT05URVhUX01FTlU6CisgICAgICAgIHJldHVybiBjb250ZXh0TWVudUN1
cnNvcigpOworICAgIGNhc2UgQ1VSU09SX1BST0dSRVNTOgorICAgICAgICByZXR1cm4gcHJvZ3Jl
c3NDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9OT19EUk9QOgorICAgICAgICByZXR1cm4gbm9E
cm9wQ3Vyc29yKCk7CisgICAgY2FzZSBDVVJTT1JfQUxJQVM6CisgICAgICAgIHJldHVybiBhbGlh
c0N1cnNvcigpOworICAgIGNhc2UgQ1VSU09SX0NPUFk6CisgICAgICAgIHJldHVybiBjb3B5Q3Vy
c29yKCk7CisgICAgY2FzZSBDVVJTT1JfTk9ORToKKyAgICAgICAgcmV0dXJuIG5vbmVDdXJzb3Io
KTsKKyAgICBjYXNlIENVUlNPUl9OT1RfQUxMT1dFRDoKKyAgICAgICAgcmV0dXJuIG5vdEFsbG93
ZWRDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9ERUZBVUxUOgorICAgICAgICByZXR1cm4gcG9p
bnRlckN1cnNvcigpOworICAgIGNhc2UgQ1VSU09SX1dFQktJVF9aT09NX0lOOgorICAgICAgICBy
ZXR1cm4gem9vbUluQ3Vyc29yKCk7CisgICAgY2FzZSBDVVJTT1JfV0VCS0lUX1pPT01fT1VUOgor
ICAgICAgICByZXR1cm4gem9vbU91dEN1cnNvcigpOworICAgIGNhc2UgQ1VSU09SX1dFQktJVF9H
UkFCOgorICAgICAgICByZXR1cm4gZ3JhYkN1cnNvcigpOworICAgIGNhc2UgQ1VSU09SX1dFQktJ
VF9HUkFCQklORzoKKyAgICAgICAgcmV0dXJuIGdyYWJiaW5nQ3Vyc29yKCk7CiAgICAgfQogICAg
IHJldHVybiBwb2ludGVyQ3Vyc29yKCk7CiB9CkBAIC0xNTQ5LDE1ICsxNTQ5LDE1IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpjYW5IYW5kbGVEcmFnQW5kRHJvcEZvclRhcmdldChEcmFnQW5kRHJvcEhh
bmRsZVR5cGUgdHlwZSwgTm9kCiAgICAgICAgIEZyYW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PEhU
TUxGcmFtZUVsZW1lbnRCYXNlKj4odGFyZ2V0KS0+Y29udGVudEZyYW1lKCk7CiAgICAgICAgIGlm
IChmcmFtZSkgewogICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBVcGRhdGVEcmFnQW5kRHJvcDoKLSAgICAgICAgICAgICAgICAgICAgd2FzQWNjZXB0ZWQg
PSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBjbGlwYm9h
cmQpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENh
bmNlbERyYWdBbmREcm9wOgotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPmNhbmNlbERyYWdBbmREcm9wKGV2ZW50LCBjbGlwYm9hcmQpOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIFBlcmZvcm1EcmFnQW5kRHJvcDoKLSAg
ICAgICAgICAgICAgICAgICAgd2FzQWNjZXB0ZWQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnBl
cmZvcm1EcmFnQW5kRHJvcChldmVudCwgY2xpcGJvYXJkKTsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIFVwZGF0ZURyYWdBbmREcm9wOgorICAgICAgICAgICAg
ICAgIHdhc0FjY2VwdGVkID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT51cGRhdGVEcmFnQW5kRHJv
cChldmVudCwgY2xpcGJvYXJkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgQ2FuY2VsRHJhZ0FuZERyb3A6CisgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5jYW5jZWxEcmFnQW5kRHJvcChldmVudCwgY2xpcGJvYXJkKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUGVyZm9ybURyYWdBbmREcm9wOgorICAgICAg
ICAgICAgICAgIHdhc0FjY2VwdGVkID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5wZXJmb3JtRHJh
Z0FuZERyb3AoZXZlbnQsIGNsaXBib2FyZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UKQEAgLTE3OTUsOSArMTc5NSw5IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIE5vZGUqIHRhcmdlCiAgICAgICAgICAgICAgICAgLy8gd2lsbCBzZXQgYSBzZWxl
Y3Rpb24gaW5zaWRlIGl0LCB3aGljaCB3aWxsIGNhbGwgc2V0Rm9jdXNlTm9kZUlmTmVlZGVkLgog
ICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICAgICAgICAgIE5v
ZGUqIG4gPSBub2RlLT5pc1NoYWRvd05vZGUoKSA/IG5vZGUtPnNoYWRvd1BhcmVudE5vZGUoKSA6
IG5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5pc1Jhbmdl
KCkgJiYgCi0gICAgICAgICAgICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1h
bGl6ZWRSYW5nZSgpLT5jb21wYXJlTm9kZShuLCBlYykgPT0gUmFuZ2U6Ok5PREVfSU5TSURFICYm
Ci0gICAgICAgICAgICAgICAgICAgIG4tPmlzRGVzY2VuZGFudE9mKG1fZnJhbWUtPmRvY3VtZW50
KCktPmZvY3VzZWROb2RlKCkpKQorICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+aXNSYW5nZSgpCisgICAgICAgICAgICAgICAgICAgICYmIG1fZnJhbWUtPnNlbGVjdGlv
bigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLT5jb21wYXJlTm9kZShuLCBlYykgPT0gUmFuZ2U6Ok5P
REVfSU5TSURFCisgICAgICAgICAgICAgICAgICAgICYmIG4tPmlzRGVzY2VuZGFudE9mKG1fZnJh
bWUtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTk0MCwxMSArMTk0MCwxMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51
RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgcHJvYmFibHkgYmUgY29uZmlndXJhYmxlIGJ5IGVtYmVkZGVycy4gQ29uc2lkZXIg
bWFraW5nIGl0IGEgV2ViUHJlZmVyZW5jZXMgc2V0dGluZy4KICAgICAvLyBTZWU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3OQogI2lmICFQTEFURk9STShHVEsp
ICYmICFQTEFURk9STShDSFJPTUlVTSkKLSAgICBpZiAoIW1fZnJhbWUtPnNlbGVjdGlvbigpLT5j
b250YWlucyh2aWV3cG9ydFBvcykgJiYgCisgICAgaWYgKCFtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+
Y29udGFpbnModmlld3BvcnRQb3MpCiAgICAgICAgIC8vIEZJWE1FOiBJbiB0aGUgZWRpdGFibGUg
Y2FzZSwgd29yZCBzZWxlY3Rpb24gc29tZXRpbWVzIHNlbGVjdHMgY29udGVudCB0aGF0IGlzbid0
IHVuZGVybmVhdGggdGhlIG1vdXNlLgogICAgICAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIGlzIG5v
bi1lZGl0YWJsZSwgd2UgZG8gd29yZCBzZWxlY3Rpb24gdG8gbWFrZSBpdCBlYXNpZXIgdG8gdXNl
IHRoZSBjb250ZXh0dWFsIG1lbnUgaXRlbXMKICAgICAgICAgLy8gYXZhaWxhYmxlIGZvciB0ZXh0
IHNlbGVjdGlvbnMuICBCdXQgb25seSBpZiB3ZSdyZSBhYm92ZSB0ZXh0LgotICAgICAgICAobV9m
cmFtZS0+c2VsZWN0aW9uKCktPmlzQ29udGVudEVkaXRhYmxlKCkgfHwgKG1ldi50YXJnZXROb2Rl
KCkgJiYgbWV2LnRhcmdldE5vZGUoKS0+aXNUZXh0Tm9kZSgpKSkpIHsKKyAgICAgICAgJiYgKG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT5pc0NvbnRlbnRFZGl0YWJsZSgpIHx8IChtZXYudGFyZ2V0Tm9k
ZSgpICYmIG1ldi50YXJnZXROb2RlKCktPmlzVGV4dE5vZGUoKSkpKSB7CiAgICAgICAgIG1fbW91
c2VEb3duTWF5U3RhcnRTZWxlY3QgPSB0cnVlOyAvLyBjb250ZXh0IG1lbnUgZXZlbnRzIGFyZSBh
bHdheXMgYWxsb3dlZCB0byBwZXJmb3JtIGEgc2VsZWN0aW9uCiAgICAgICAgIHNlbGVjdENsb3Nl
c3RXb3JkT3JMaW5rRnJvbU1vdXNlRXZlbnQobWV2KTsKICAgICB9CkBAIC0yMjE0LDE2ICsyMjE0
LDEzIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtZW50
KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIGlmIChrZXkgPT0gIlVwIikgewogICAgICAgICBt
X2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJv
bGxlcjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6QkFDS1dBUkQsIChpc0NvbW1hbmRlZCkgPyBEb2N1bWVudEJvdW5kYXJ5IDogTGluZUdy
YW51bGFyaXR5LCB0cnVlKTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0g
ICAgfQotICAgIGVsc2UgaWYgKGtleSA9PSAiRG93biIpIHsgCisgICAgfSBlbHNlIGlmIChrZXkg
PT0gIkRvd24iKSB7IAogICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1No
aWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxl
cjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgKGlzQ29tbWFuZGVkKSA/IERv
Y3VtZW50Qm91bmRhcnkgOiBMaW5lR3JhbnVsYXJpdHksIHRydWUpOwogICAgICAgICBldmVudC0+
c2V0RGVmYXVsdEhhbmRsZWQoKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJMZWZ0Iikg
eworICAgIH0gZWxzZSBpZiAoa2V5ID09ICJMZWZ0IikgewogICAgICAgICBtX2ZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5E
IDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVGVCwg
KGlzQ29tbWFuZGVkKSA/IExpbmVCb3VuZGFyeSA6IChpc09wdGlvbmVkKSA/IFdvcmRHcmFudWxh
cml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICAgICAgZXZlbnQtPnNldERl
ZmF1bHRIYW5kbGVkKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGtleSA9PSAiUmlnaHQiKSB7Cisg
ICAgfSBlbHNlIGlmIChrZXkgPT0gIlJpZ2h0IikgewogICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDog
U2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6UklHSFQsIChp
c0NvbW1hbmRlZCkgPyBMaW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBXb3JkR3JhbnVsYXJp
dHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZh
dWx0SGFuZGxlZCgpOwogICAgIH0gICAgCkBAIC0yMzU2LDcgKzIzNTMsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBl
dmVudCkKICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcgJiYgIWRyYWdTdGF0ZSgpLm1f
ZHJhZ1NyYykgewogICAgICAgICBhbGxvd0RIVE1MRHJhZyhkcmFnU3RhdGUoKS5tX2RyYWdTcmNN
YXlCZURIVE1MLCBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZVVBKTsKICAgICAgICAgaWYgKCFk
cmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MICYmICFkcmFnU3RhdGUoKS5tX2RyYWdTcmNN
YXlCZVVBKQotICAgICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsgICAg
IC8vIG5vIGVsZW1lbnQgaXMgZHJhZ2dhYmxlCisgICAgICAgICAgICBtX21vdXNlRG93bk1heVN0
YXJ0RHJhZyA9IGZhbHNlOyAvLyBubyBlbGVtZW50IGlzIGRyYWdnYWJsZQogICAgIH0KIAogICAg
IGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJhZyAmJiAhZHJhZ1N0YXRlKCkubV9kcmFnU3JjKSB7
CkBAIC0yMzcyLDcgKzIzNjksNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25z
dCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKICAgICAgICAgICAgIGRyYWdT
dGF0ZSgpLm1fZHJhZ1NyYyA9IDA7CiAgICAgICAgIAogICAgICAgICBpZiAoIWRyYWdTdGF0ZSgp
Lm1fZHJhZ1NyYykKLSAgICAgICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gZmFsc2U7
ICAgICAvLyBubyBlbGVtZW50IGlzIGRyYWdnYWJsZQorICAgICAgICAgICAgbV9tb3VzZURvd25N
YXlTdGFydERyYWcgPSBmYWxzZTsgLy8gbm8gZWxlbWVudCBpcyBkcmFnZ2FibGUKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAvLyByZW1lbWJlciBzb21lIGZhY3RzIGFib3V0IHRoaXMgc291
cmNlLCB3aGlsZSB3ZSBoYXZlIGEgSGl0VGVzdFJlc3VsdCBoYW5keQogICAgICAgICAgICAgbm9k
ZSA9IHJlc3VsdC5VUkxFbGVtZW50KCk7CkBAIC0yNDEyLDggKzI0MDksOCBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBl
dmVudCkKICAgICAKICAgICBEcmFnT3BlcmF0aW9uIHNyY09wID0gRHJhZ09wZXJhdGlvbk5vbmU7
ICAgICAgCiAgICAgCi0gICAgZnJlZUNsaXBib2FyZCgpOyAgICAvLyB3b3VsZCBvbmx5IGhhcHBl
biBpZiB3ZSBtaXNzZWQgYSBkcmFnRW5kLiAgRG8gaXQgYW55d2F5LCBqdXN0Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyB0byBtYWtlIHN1cmUgaXQgZ2V0cyBudW1iaWZpZWQKKyAgICBmcmVl
Q2xpcGJvYXJkKCk7IC8vIHdvdWxkIG9ubHkgaGFwcGVuIGlmIHdlIG1pc3NlZCBhIGRyYWdFbmQu
ICBEbyBpdCBhbnl3YXksIGp1c3QKKyAgICAgICAgICAgICAgICAgICAgIC8vIHRvIG1ha2Ugc3Vy
ZSBpdCBnZXRzIG51bWJpZmllZAogICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ0NsaXBib2FyZCA9IGNy
ZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKCk7ICAKICAgICAKICAgICBpZiAoZHJhZ1N0YXRlKCkubV9k
cmFnU3JjTWF5QmVESFRNTCkgewpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYjRmMzhjYS4uZThiOTk4OSAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDMtMjUgIEx5b24gQ2hlbiAgPGxpYWNo
ZW5AcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBFbnVtIHZhbHVlIEZPUldBUkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVCBhcmUgY2F1c2lu
ZyBtYWNybyBjb25mbGljdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNTUzMAorCisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZmluZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lSW1wbDo6c2NvcGVTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJ
bXBsOjpjcmVhdGVDaGlsZEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpz
aG91bGRTY29wZU1hdGNoZXMpOgorCiAyMDEwLTAzLTI1ICBEcmV3IFdpbHNvbiAgPGF0d2lsc29u
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOYXRlIENoYXBpbi4KZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCA5ODJiNDM0Li5lODFlOTgyIDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC03NSwyMSArNzUsMjAgQEAKICNpbmNsdWRl
ICJDaHJvbWl1bUJyaWRnZS5oIgogI2luY2x1ZGUgIkNsaXBib2FyZFV0aWxpdGllc0Nocm9taXVt
LmgiCiAjaW5jbHVkZSAiQ29uc29sZS5oIgorI2luY2x1ZGUgIkRPTVV0aWxpdGllc1ByaXZhdGUu
aCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIgLy8gT25seSBuZWVkZWQgZm9yIFJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kLmggOigKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50TWFya2VyLmgiCi0jaW5jbHVkZSAiRE9NVXRpbGl0aWVzUHJpdmF0ZS5oIgotI2luY2x1
ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkV2ZW50SGFu
ZGxlci5oIgogI2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRl
ICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgpAQCAtOTcsOCArOTYsOCBAQAogI2luY2x1ZGUg
IkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTGlua0VsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckNvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIlBsdWdpbkRv
Y3VtZW50LmgiCkBAIC0xMTMsOCArMTEyLDggQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCi0jaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5o
IgorI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2tpYVV0aWxzLmgiCkBA
IC0xNDEsNiArMTQwLDcgQEAKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKICNpbmNsdWRlICJXZWJW
aWV3SW1wbC5oIgogI2luY2x1ZGUgIlhQYXRoUmVzdWx0LmgiCisjaW5jbHVkZSAibWFya3VwLmgi
CiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBA
IC0xMjc4LDcgKzEyNzgsNyBAQCBib29sIFdlYkZyYW1lSW1wbDo6ZmluZChpbnQgaWRlbnRpZmll
ciwKICAgICBpZiAoIW9wdGlvbnMuZmluZE5leHQpCiAgICAgICAgIGZyYW1lKCktPnBhZ2UoKS0+
dW5tYXJrQWxsVGV4dE1hdGNoZXMoKTsKICAgICBlbHNlCi0gICAgICAgIHNldE1hcmtlckFjdGl2
ZShtX2FjdGl2ZU1hdGNoLmdldCgpLCBmYWxzZSk7ICAvLyBBY3RpdmUgbWF0Y2ggaXMgY2hhbmdp
bmcuCisgICAgICAgIHNldE1hcmtlckFjdGl2ZShtX2FjdGl2ZU1hdGNoLmdldCgpLCBmYWxzZSk7
IC8vIEFjdGl2ZSBtYXRjaCBpcyBjaGFuZ2luZy4KIAogICAgIC8vIFN0YXJ0cyB0aGUgc2VhcmNo
IGZyb20gdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgogICAgIGJvb2wgc3RhcnRJblNlbGVjdGlvbiA9
IHRydWU7CkBAIC0xMzE4LDcgKzEzMTgsNyBAQCBib29sIFdlYkZyYW1lSW1wbDo6ZmluZChpbnQg
aWRlbnRpZmllciwKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBtX2FjdGl2ZU1hdGNoID0g
bmV3U2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgICAgICAgICBjdXJyU2VsZWN0
aW9uUmVjdCA9IG1fYWN0aXZlTWF0Y2gtPmJvdW5kaW5nQm94KCk7Ci0gICAgICAgICAgICBzZXRN
YXJrZXJBY3RpdmUobV9hY3RpdmVNYXRjaC5nZXQoKSwgdHJ1ZSk7ICAvLyBBY3RpdmUuCisgICAg
ICAgICAgICBzZXRNYXJrZXJBY3RpdmUobV9hY3RpdmVNYXRjaC5nZXQoKSwgdHJ1ZSk7IC8vIEFj
dGl2ZS4KICAgICAgICAgICAgIC8vIFdlYktpdCBkcmF3cyB0aGUgaGlnaGxpZ2h0aW5nIGZvciBh
bGwgbWF0Y2hlcy4KICAgICAgICAgICAgIGV4ZWN1dGVDb21tYW5kKFdlYlN0cmluZzo6ZnJvbVVU
RjgoIlVuc2VsZWN0IikpOwogICAgICAgICB9CkBAIC0xNDEwLDcgKzE0MTAsNyBAQCB2b2lkIFdl
YkZyYW1lSW1wbDo6c2NvcGVTdHJpbmdNYXRjaGVzKGludCBpZGVudGlmaWVyLAogICAgICAgICAg
ICAgaWRlbnRpZmllciwKICAgICAgICAgICAgIHNlYXJjaFRleHQsCiAgICAgICAgICAgICBvcHRp
b25zLAotICAgICAgICAgICAgZmFsc2UpOyAgLy8gZmFsc2U9d2UganVzdCByZXNldCwgc28gZG9u
J3QgZG8gaXQgYWdhaW4uCisgICAgICAgICAgICBmYWxzZSk7IC8vIGZhbHNlPXdlIGp1c3QgcmVz
ZXQsIHNvIGRvbid0IGRvIGl0IGFnYWluLgogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0x
NDI0LDcgKzE0MjQsNyBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6c2NvcGVTdHJpbmdNYXRjaGVzKGlu
dCBpZGVudGlmaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yZXN1bWVTY29w
aW5nRnJvbVJhbmdlLT5zdGFydE9mZnNldChlYzIpICsgMSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVjKTsKICAgICAgICAgaWYgKGVjIHx8IGVjMikgewotICAgICAgICAgICAgaWYg
KGVjMikgIC8vIEEgbm9uLXplcm8gfGVjfCBoYXBwZW5zIHdoZW4gbmF2aWdhdGluZyBkdXJpbmcg
c2VhcmNoLgorICAgICAgICAgICAgaWYgKGVjMikgLy8gQSBub24temVybyB8ZWN8IGhhcHBlbnMg
d2hlbiBuYXZpZ2F0aW5nIGR1cmluZyBzZWFyY2guCiAgICAgICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE0MzMsNyAr
MTQzMyw3IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpzY29wZVN0cmluZ01hdGNoZXMoaW50IGlkZW50
aWZpZXIsCiAgICAgLy8gVGhpcyB0aW1lb3V0IGNvbnRyb2xzIGhvdyBsb25nIHdlIHNjb3BlIGJl
Zm9yZSByZWxlYXNpbmcgY29udHJvbC4gIFRoaXMKICAgICAvLyB2YWx1ZSBkb2VzIG5vdCBwcmV2
ZW50IHVzIGZyb20gcnVubmluZyBmb3IgbG9uZ2VyIHRoYW4gdGhpcywgYnV0IGl0IGlzCiAgICAg
Ly8gcGVyaW9kaWNhbGx5IGNoZWNrZWQgdG8gc2VlIGlmIHdlIGhhdmUgZXhjZWVkZWQgb3VyIGFs
bG9jYXRlZCB0aW1lLgotICAgIGNvbnN0IGRvdWJsZSBtYXhTY29waW5nRHVyYXRpb24gPSAwLjE7
ICAvLyBzZWNvbmRzCisgICAgY29uc3QgZG91YmxlIG1heFNjb3BpbmdEdXJhdGlvbiA9IDAuMTsg
Ly8gc2Vjb25kcwogCiAgICAgaW50IG1hdGNoQ291bnQgPSAwOwogICAgIGJvb2wgdGltZWRPdXQg
PSBmYWxzZTsKQEAgLTE1NDAsOCArMTU0MCw4IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpzY29wZVN0
cmluZ01hdGNoZXMoaW50IGlkZW50aWZpZXIsCiAgICAgICAgICAgICBpZGVudGlmaWVyLAogICAg
ICAgICAgICAgc2VhcmNoVGV4dCwKICAgICAgICAgICAgIG9wdGlvbnMsCi0gICAgICAgICAgICBm
YWxzZSk7ICAvLyBkb24ndCByZXNldC4KLSAgICAgICAgcmV0dXJuOyAgLy8gRG9uZSBmb3Igbm93
LCByZXN1bWUgd29yayBsYXRlci4KKyAgICAgICAgICAgIGZhbHNlKTsgLy8gZG9uJ3QgcmVzZXQu
CisgICAgICAgIHJldHVybjsgLy8gRG9uZSBmb3Igbm93LCByZXN1bWUgd29yayBsYXRlci4KICAg
ICB9CiAKICAgICAvLyBUaGlzIGZyYW1lIGhhcyBubyBmdXJ0aGVyIHNjb3BpbmcgbGVmdCwgc28g
aXQgaXMgZG9uZS4gT3RoZXIgZnJhbWVzIG1pZ2h0LApAQCAtMTczMSw3ICsxNzMxLDcgQEAgUGFz
c1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVJbXBsOjpjcmVhdGVDaGlsZEZyYW1lKAogICAgIC8vIGl0
IGlzIG5lY2Vzc2FyeSB0byBjaGVjayB0aGUgdmFsdWUgYWZ0ZXIgY2FsbGluZyBpbml0KCkgYW5k
CiAgICAgLy8gcmV0dXJuIHdpdGhvdXQgbG9hZGluZyBVUkwuCiAgICAgLy8gKGI6NzkxNjEyKQot
ICAgIGNoaWxkRnJhbWUtPmluaXQoKTsgICAgICAvLyBjcmVhdGUgYW4gZW1wdHkgZG9jdW1lbnQK
KyAgICBjaGlsZEZyYW1lLT5pbml0KCk7IC8vIGNyZWF0ZSBhbiBlbXB0eSBkb2N1bWVudAogICAg
IGlmICghY2hpbGRGcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAK
QEAgLTIwNTAsNyArMjA1MCw3IEBAIGJvb2wgV2ViRnJhbWVJbXBsOjpzaG91bGRTY29wZU1hdGNo
ZXMoY29uc3QgU3RyaW5nJiBzZWFyY2hUZXh0KQogICAgICAgICAgICAgc2VhcmNoVGV4dC5zdWJz
dHJpbmcoMCwgbV9sYXN0U2VhcmNoU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAgICBpZiAocHJl
dmlvdXNTZWFyY2hQcmVmaXggPT0gbV9sYXN0U2VhcmNoU3RyaW5nKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOyAgLy8gRG9uJ3Qgc2VhcmNoIHRoaXMgZnJhbWUsIGl0IHdpbGwgYmUgZnJ1aXRs
ZXNzLgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBEb24ndCBzZWFyY2ggdGhpcyBmcmFt
ZSwgaXQgd2lsbCBiZSBmcnVpdGxlc3MuCiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nIGIvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpp
bmRleCAzNzYwNWJhLi45NjViZGRkIDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9n
CisrKyBiL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wMy0y
NSAgTHlvbiBDaGVuICA8bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEVudW0gdmFsdWUgRk9SV0FSRCwgQkFDS1dBUkQsIFJJ
R0hULCBMRUZUIGFyZSBjYXVzaW5nIG1hY3JvIGNvbmZsaWN0cy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NTMwCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRIYWlrdTo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisKIDIwMTAtMDMtMjQgIEtlbnQgVGFt
dXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEhhaWt1LmNwcCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlr
dS5jcHAKaW5kZXggYTUxZTM2MS4uNDdjNjM2NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcAorKysgYi9XZWJLaXQvaGFpa3UvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuY3BwCkBAIC0zOCwxMSArMzgsMTAgQEAKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIktleWJvYXJkQ29kZXMuaCIKICNpbmNsdWRlICJL
ZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAKLSNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgotCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjUyLDcgKzI1
MSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50SGFpa3U6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9h
cmRFdmVudCogZXZlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChzdGFydC0+aXNDb250
ZW50RWRpdGFibGUoKSkgewotICAgICAgICBzd2l0Y2goa2V2ZW50LT53aW5kb3dzVmlydHVhbEtl
eUNvZGUoKSkgeworICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2Rl
KCkpIHsKICAgICAgICAgY2FzZSBWS19CQUNLOgogICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtldmVudC0+Y3Ry
bEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksCkBAIC0yODcs
MTAgKzI4NiwxMCBAQCB2b2lkIEVkaXRvckNsaWVudEhhaWt1OjpoYW5kbGVLZXlib2FyZEV2ZW50
KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga2V2ZW50LT5jdHJsS2V5KCkgPyBQYXJhZ3JhcGhHcmFudWxhcml0eSA6IExpbmVHcmFu
dWxhcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOwog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVktfUFJJT1I6ICAvLyBQYWdlVXAKKyAg
ICAgICAgY2FzZSBWS19QUklPUjogLy8gUGFnZVVwCiAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoIk1vdmVVcEJ5UGFnZUFuZE1vZGlmeUNhcmV0Iik7CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBWS19ORVhUOiAgLy8gUGFnZURvd24KKyAgICAgICAgY2FzZSBW
S19ORVhUOiAvLyBQYWdlRG93bgogICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5k
KCJNb3ZlRG93bkJ5UGFnZUFuZE1vZGlmeUNhcmV0Iik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBWS19SRVRVUk46CkBAIC0zMzYsNyArMzM1LDggQEAgdm9pZCBFZGl0b3JDbGll
bnRIYWlrdTo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHJldHVybjsKKyAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAg
ICAgIHN3aXRjaCAoa2V2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewpAQCAtMzQ2LDEw
ICszNDYsMTAgQEAgdm9pZCBFZGl0b3JDbGllbnRIYWlrdTo6aGFuZGxlS2V5Ym9hcmRFdmVudChL
ZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgY2FzZSBWS19ET1dOOgogICAgICAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlRG93biIpOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgVktfUFJJT1I6ICAvLyBQYWdlVXAKKyAgICAgICAgY2FzZSBWS19QUklP
UjogLy8gUGFnZVVwCiAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVV
cEJ5UGFnZUFuZE1vZGlmeUNhcmV0Iik7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBWS19ORVhUOiAgLy8gUGFnZURvd24KKyAgICAgICAgY2FzZSBWS19ORVhUOiAvLyBQYWdlRG93
bgogICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlRG93bkJ5UGFnZUFu
ZE1vZGlmeUNhcmV0Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWS19IT01F
OgpAQCAtMzYyLDE3ICszNjIsMTggQEAgdm9pZCBFZGl0b3JDbGllbnRIYWlrdTo6aGFuZGxlS2V5
Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgaWYgKGtldmVudC0+Y3RybEtleSgpKSB7Ci0gICAg
ICAgICAgICAgICAgc3dpdGNoKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSBWS19BOgotICAgICAgICAgICAgICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5jb21tYW5kKCJTZWxlY3RBbGwiKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIFZLX0M6IGNhc2UgVktfWDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiQ29weSIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgc3dp
dGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBWS19BOgorICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQo
IlNlbGVjdEFsbCIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIFZLX0M6IGNhc2UgVktfWDoKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5jb21tYW5kKCJDb3B5Iik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgcmV0dXJuOworICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogICAgIGV2ZW50LT5z
ZXREZWZhdWx0SGFuZGxlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dl
YktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggODNiYTQ4Yy4uY2JlMGRhOCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTAtMDMtMjUgIEx5b24gQ2hlbiAgPGxpYWNoZW5AcmltLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbnVtIHZhbHVlIEZPUldBUkQs
IEJBQ0tXQVJELCBSSUdIVCwgTEVGVCBhcmUgY2F1c2luZyBtYWNybyBjb25mbGljdHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTUzMAorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8pOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorCiAyMDEwLTAzLTI1
ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50UXQuY3BwCmluZGV4IDBjZTYzODMuLmNlYjRlMWQgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKKysrIGIvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcApAQCAtMzEsOSArMzEsNiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVkaXRvckNsaWVudFF0LmgiCiAKLSNpbmNs
dWRlICJxd2VicGFnZS5oIgotI2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIKLQogI2luY2x1ZGUgIkNT
U1N0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVk
aXRDb21tYW5kUXQuaCIKQEAgLTQ3LDE0ICs0NCwxNiBAQAogI2luY2x1ZGUgIktleWJvYXJkRXZl
bnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5j
bHVkZSAiUVdlYlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogCi0jaW5jbHVkZSA8
c3RkaW8uaD4KKyNpbmNsdWRlICJxd2VicGFnZS5oIgorI2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIK
IAogI2luY2x1ZGUgPFFVbmRvU3RhY2s+CisjaW5jbHVkZSA8c3RkaW8uaD4KKwogI2RlZmluZSBt
ZXRob2REZWJ1ZygpIHFEZWJ1ZygiRWRpdG9yQ2xpZW50UXQ6ICVzIiwgX19GVU5DVElPTl9fKTsK
IAogc3RhdGljIGJvb2wgZHVtcEVkaXRpbmdDYWxsYmFja3MgPSBmYWxzZTsKQEAgLTI1Nyw5ICsy
NTYsOCBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZAogewogI2lmbmRlZiBRVF9OT19VTkRPU1RB
Q0sKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmQtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAobV9pblVuZG9SZWRvIHx8IChmcmFtZSAm
JiAhZnJhbWUtPmVkaXRvcigpLT5sYXN0RWRpdENvbW1hbmQoKSAvKiBIQUNLISEgRG9uJ3QgcmVj
cmVhdGUgdW5kb3MgKi8pKSB7CisgICAgaWYgKG1faW5VbmRvUmVkbyB8fCAoZnJhbWUgJiYgIWZy
YW1lLT5lZGl0b3IoKS0+bGFzdEVkaXRDb21tYW5kKCkgLyogSEFDSyEhIERvbid0IHJlY3JlYXRl
IHVuZG9zICovKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBtX3BhZ2UtPnVuZG9TdGFj
aygpLT5wdXNoKG5ldyBFZGl0Q29tbWFuZFF0KGNtZCkpOwogI2VuZGlmIC8vIFFUX05PX1VORE9T
VEFDSwogfQpAQCAtMzg0LDExOCArMzgyLDEyMCBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5k
bGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICB9IGVsc2UKICNl
bmRpZiAvLyBRVF9OT19TSE9SVENVVAogICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1Zp
cnR1YWxLZXlDb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgVktfQkFDSzoKLSAgICAgICAgICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJv
bGxlcjo6QkFDS1dBUkQsCi0gICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJHcmFudWxh
cml0eSwgZmFsc2UsIHRydWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVX
aXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19MRUZUOgotICAgICAgICAgICAgICAg
IGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZCgiTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0g
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PmNvbW1hbmQoIk1vdmVMZWZ0IikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5z
aGlmdEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQo
Ik1vdmVSaWdodEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92
ZVJpZ2h0IikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBWS19VUDoKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAg
ICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVVcEFuZE1vZGlm
eVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVVwIikuZXhlY3V0ZSgpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19ET1dOOgotICAgICAg
ICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVj
dXRlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVEb3duIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19QUklPUjogIC8vIFBhZ2VVcAotICAgICAgICAg
ICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1
dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VVcCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVktfTkVYVDogIC8vIFBhZ2VEb3duCi0gICAgICAg
ICAgICAgICAgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iKS5l
eGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVQYWdlRG93biIpLmV4ZWN1dGUoKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVktfVEFCOgotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgaWYgKGtldmVu
dC0+dHlwZSgpICE9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93biAmJiAha2V2ZW50LT5j
dHJsS2V5KCkKKyAgICAgICAgY2FzZSBWS19CQUNLOgorICAgICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELAor
ICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVktfREVMRVRFOgorICAgICAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkZPUldBUkQsCisgICAgICAgICAgICAgICAgICAgIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxz
ZSwgdHJ1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWS19MRUZUOgorICAg
ICAgICAgICAgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKKyAgICAgICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29t
bWFuZCgiTW92ZUxlZnQiKS5leGVjdXRlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBWS19SSUdIVDoKKyAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCisgICAg
ICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUmlnaHRBbmRNb2RpZnlT
ZWxlY3Rpb24iKS5leGVjdXRlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUmlnaHQiKS5leGVjdXRlKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWS19VUDoKKyAgICAgICAgICAgIGlmIChrZXZlbnQt
PnNoaWZ0S2V5KCkpCisgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJN
b3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVXAiKS5leGVjdXRl
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWS19ET1dOOgorICAgICAgICAg
ICAgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKKyAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoIk1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgi
TW92ZURvd24iKS5leGVjdXRlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBW
S19QUklPUjogLy8gUGFnZVVwCisgICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQor
ICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VVcEFuZE1v
ZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVQYWdlVXAiKS5leGVjdXRlKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWS19ORVhUOiAvLyBQYWdlRG93bgorICAg
ICAgICAgICAgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKKyAgICAgICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1
dGUoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PmNvbW1hbmQoIk1vdmVQYWdlRG93biIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFZLX1RBQjoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIGlmIChrZXZlbnQtPnR5cGUoKSAhPSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OktleURvd24gJiYgIWtldmVudC0+Y3RybEtleSgpCiAjaWZuZGVmIFFfV1NfTUFDCi0gICAg
ICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gZXhjbHVkZSBjaGVja2luZyBmb3IgQWx0IGJl
Y2F1c2UgaXQgaXMganVzdCBhIGRpZmZlcmVudCBTaGlmdAotICAgICAgICAgICAgICAgICAgICAm
JiAha2V2ZW50LT5hbHRLZXkoKQorICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gZXhjbHVk
ZSBjaGVja2luZyBmb3IgQWx0IGJlY2F1c2UgaXQgaXMganVzdCBhIGRpZmZlcmVudCBTaGlmdAor
ICAgICAgICAgICAgICAgICYmICFrZXZlbnQtPmFsdEtleSgpCiAjZW5kaWYKLSAgICAgICAgICAg
ICAgICAgICAgJiYgIWtldmVudC0+dGV4dCgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoa2V2ZW50LT50ZXh0KCksIGV2ZW50KTsK
LSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtldmVudC0+Y3RybEtleSgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAoa2V2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWS19BOgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBWS19COgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+Y29tbWFuZCgiVG9nZ2xlQm9sZCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVktfSToKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlRvZ2dsZUl0
YWxpYyIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gY2F0Y2ggY29tYmluYXRpb24gQWx0R3Ira2V5IG9yIEN0cmwrQWx0K2tleQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPnR5cGUoKSAhPSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OktleURvd24gJiYga2V2ZW50LT5hbHRLZXkoKSAmJiAha2V2ZW50LT50ZXh0KCku
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+aW5zZXJ0VGV4dChrZXZlbnQtPnRleHQoKSwgZXZlbnQpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICYmICFr
ZXZlbnQtPnRleHQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmluc2VydFRleHQoa2V2ZW50LT50ZXh0KCksIGV2ZW50KTsKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAoa2V2ZW50LT5jdHJsS2V5KCkpIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGtldmVu
dC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFZLX0E6
CisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiU2VsZWN0QWxs
IikuZXhlY3V0ZSgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIFZLX0I6CisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFu
ZCgiVG9nZ2xlQm9sZCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBWS19JOgorICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoIlRvZ2dsZUl0YWxpYyIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgLy8gY2F0Y2ggY29tYmluYXRpb24gQWx0R3Ira2V5IG9yIEN0cmwrQWx0K2tleQorICAgICAg
ICAgICAgICAgICAgICBpZiAoa2V2ZW50LT50eXBlKCkgIT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpLZXlEb3duICYmIGtldmVudC0+YWx0S2V5KCkgJiYgIWtldmVudC0+dGV4dCgpLmlzRW1wdHko
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0
KGtldmVudC0+dGV4dCgpLCBldmVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSByZXR1cm47Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
ewogI2lmbmRlZiBRVF9OT19TSE9SVENVVAotICAgICAgICBpZiAoa2V2ZW50LT5xdEV2ZW50KCkg
PT0gUUtleVNlcXVlbmNlOjpDb3B5KSB7CisgICAgICAgIGlmIChrZXZlbnQtPnF0RXZlbnQoKSA9
PSBRS2V5U2VxdWVuY2U6OkNvcHkpCiAgICAgICAgICAgICBtX3BhZ2UtPnRyaWdnZXJBY3Rpb24o
UVdlYlBhZ2U6OkNvcHkpOwotICAgICAgICB9IGVsc2UKKyAgICAgICAgZWxzZQogI2VuZGlmIC8v
IFFUX05PX1NIT1JUQ1VUCiAgICAgICAgIHN3aXRjaCAoa2V2ZW50LT53aW5kb3dzVmlydHVhbEtl
eUNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVVcCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVktfRE9XTjoKLSAgICAgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVEb3duIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19QUklPUjogIC8vIFBhZ2VVcAotICAgICAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VVcCIpLmV4ZWN1dGUo
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVktfTkVYVDogIC8v
IFBhZ2VEb3duCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3Zl
UGFnZURvd24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICAgICAgaWYgKGtldmVudC0+Y3RybEtleSgpKQot
ICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0JlZ2lu
bmluZ09mRG9jdW1lbnQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIFZLX0VORDoKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5jdHJsS2V5
KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRv
RW5kT2ZEb2N1bWVudCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgaWYgKGtldmVudC0+Y3RybEtleSgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoa2V2ZW50LT53aW5kb3dzVmlydHVhbEtleUNv
ZGUoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWS19BOgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiU2VsZWN0QWxsIikuZXhl
Y3V0ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgcmV0dXJuOwor
ICAgICAgICBjYXNlIFZLX1VQOgorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5k
KCJNb3ZlVXAiKS5leGVjdXRlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBW
S19ET1dOOgorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlRG93biIp
LmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZLX1BSSU9SOiAv
LyBQYWdlVXAKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VV
cCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZLX05FWFQ6
IC8vIFBhZ2VEb3duCisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVQ
YWdlRG93biIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZL
X0hPTUU6CisgICAgICAgICAgICBpZiAoa2V2ZW50LT5jdHJsS2V5KCkpCisgICAgICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50Iiku
ZXhlY3V0ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVktfRU5EOgorICAg
ICAgICAgICAgaWYgKGtldmVudC0+Y3RybEtleSgpKQorICAgICAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvRW5kT2ZEb2N1bWVudCIpLmV4ZWN1dGUoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKGtldmVudC0+
Y3RybEtleSgpKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0
dWFsS2V5Q29kZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBWS19BOgorICAgICAgICAgICAg
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KICAgICBl
dmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
</data>
<flag name="review"
          id="35035"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51746</attachid>
            <date>2010-03-26 09:08:10 -0700</date>
            <delta_ts>2010-05-31 23:15:31 -0700</delta_ts>
            <desc>Patch for bug 35530.</desc>
            <filename>35530.patch</filename>
            <type>text/plain</type>
            <size>51339</size>
            <attacher name="Lyon Chen">lyon.chen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDYwYWQwYi4uMjM4YTdlYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MCBAQAorMjAxMC0wMy0yNiAgTHlvbiBDaGVuICA8
bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEVudW0gdmFsdWUgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBMRUZUIGFyZSBj
YXVzaW5nIG1hY3JvIGNvbmZsaWN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM1NTMwCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBvc2l0
aW9uUmFuZ2VGb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmRvQVhSYW5nZUZvckxpbmUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvUG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3Jh
bW1hckluUmFuZ2VzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3Rlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZURlbGV0ZVRvRW5kT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVU
b0VuZE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVXb3JkQmFj
a3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVdvcmRGb3J3YXJkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVGb3J3YXJkRGVsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVCYWNr
d2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZURv
d24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRm9yd2FyZCk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhlY3V0ZU1vdmVMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlTGVm
dEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVBhZ2VE
b3duKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYWdlVXApOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZU1vdmVSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92
ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
VG9CZWdpbm5pbmdPZkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9C
ZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlQW5kTW9kaWZ5
U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5
U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlQW5kTW9kaWZ5
U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGgpOgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRN
b2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYXJhZ3JhcGhG
b3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
VXApOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlV29yZEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhlY3V0ZU1vdmVXb3JkTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92
ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVN
b3ZlV29yZFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0QW5k
TW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5k
T2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lQW5k
TW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9SaWdodEVu
ZE9mTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmVB
bmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjp3aWxsQmVNb2Rp
ZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnkpOgor
ICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6KToKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3Nl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJl
c3NlZCk6CisgICAgICAgICogcGFnZS9ET01TZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NU2VsZWN0aW9uOjptb2RpZnkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9u
OjpkZWxldGVGcm9tRG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25N
b3ZlbWVudCk6CisKIDIwMTAtMDMtMjUgIEx5b24gQ2hlbiAgPGxpYWNoZW5AcmltLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCAwNDA5ODdkLi43
ZGQyYWRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCkBAIC0yMTc4LDcgKzIxNzgsNyBAQCBWaXNpYmxlUG9zaXRpb25SYW5n
ZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUo
dW5zaQogICAgIC8vIHdpbGwgYmUgYSBjYXJldCBhdCB2aXNpYmxlUG9zLgogICAgIFNlbGVjdGlv
bkNvbnRyb2xsZXIgc2VsZWN0aW9uOwogICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24oVmlzaWJs
ZVNlbGVjdGlvbih2aXNpYmxlUG9zKSk7Ci0gICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25D
b250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCBMaW5lQm91bmRh
cnkpOworICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlv
bkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQsIExpbmVCb3VuZGFy
eSk7CiAgICAgCiAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKHNlbGVjdGlvbi5zZWxl
Y3Rpb24oKS52aXNpYmxlU3RhcnQoKSwgc2VsZWN0aW9uLnNlbGVjdGlvbigpLnZpc2libGVFbmQo
KSk7CiB9CkBAIC0yMzkwLDggKzIzOTAsOCBAQCBQbGFpblRleHRSYW5nZSBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojpkb0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkIGxpbmVOdW1iZXIpCiAgICAg
Ly8gd2lsbCBiZSBhIGNhcmV0IGF0IHZpc2libGVQb3MuCiAgICAgU2VsZWN0aW9uQ29udHJvbGxl
ciBzZWxlY3Rpb247CiAgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
KHZpc2libGVQb3MpKTsKLSAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVGVCwgTGluZUJvdW5kYXJ5KTsKLSAgICBz
ZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6UklHSFQsIExpbmVCb3VuZGFyeSk7CisgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpE
aXJlY3Rpb25MZWZ0LCBMaW5lQm91bmRhcnkpOworICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uUmlnaHQsIExpbmVCb3VuZGFyeSk7CiAgICAgCiAgICAgLy8gY2FsY3VsYXRlIHRoZSBp
bmRpY2VzIGZvciB0aGUgc2VsZWN0aW9uIHN0YXJ0IGFuZCBlbmQKICAgICBWaXNpYmxlUG9zaXRp
b24gc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKaW5kZXggMzBmNjMzNC4uZTY5ZjMxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTI0
MSwxMiArMjQxLDEyIEBAIGJvb2wgRWRpdG9yOjpkZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkVEaXJlY3Rpb24gZGlyZWN0aW9uLCBUZXh0CiAgICAgICAgIH0KICAgICB9
IGVsc2UgeyAgICAgICAgCiAgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgICAgIGNh
c2UgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRDoKLSAgICAgICAgY2FzZSBTZWxlY3Rpb25D
b250cm9sbGVyOjpSSUdIVDoKKyAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJl
Y3Rpb25Gb3J3YXJkOgorICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlv
blJpZ2h0OgogICAgICAgICAgICAgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNz
ZWQobV9mcmFtZS0+ZG9jdW1lbnQoKSwgY2FuU21hcnRDb3B5T3JEZWxldGUoKSwgZ3JhbnVsYXJp
dHksIGtpbGxSaW5nKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkJBQ0tXQVJEOgotICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkxFRlQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dh
cmQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdDoKICAg
ICAgICAgICAgIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQobV9mcmFtZS0+ZG9jdW1l
bnQoKSwgY2FuU21hcnRDb3B5T3JEZWxldGUoKSwgZ3JhbnVsYXJpdHksIGtpbGxSaW5nKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMjYzLDcgKzIyNjMsNyBAQCB2b2lkIEVk
aXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Qb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24gJnApCiAKICAgICAgICAgLy8gUmVzZXQgdGhlIGNoYXJldCBvbmUgY2hhcmFjdGVy
IGZ1cnRoZXIuCiAgICAgICAgIGZyYW1lKCktPnNlbGVjdGlvbigpLT5tb3ZlVG8oZnJhbWUoKS0+
c2VsZWN0aW9uKCktPmVuZCgpKTsKLSAgICAgICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJE
LCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgIGZyYW1lKCktPnNlbGVjdGlvbigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICB9CiAK
ICAgICBpZiAoIWlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQpAQCAtMjU1MiwxMSArMjU1Miwx
MSBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdl
cyhib29sIG1hcmtTcGVsbGluZywgUmFuZ2UqCiAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNl
bGVjdGlvblJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShwYXJhZ3JhcGhSYW5nZS5nZXQo
KSwgMCwgc2VsZWN0aW9uT2Zmc2V0KTsKICAgICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigp
LT5tb3ZlVG8oc2VsZWN0aW9uUmFuZ2UtPmVuZFBvc2l0aW9uKCksIERPV05TVFJFQU0pOwogICAg
ICAgICAgICAgaWYgKGFkanVzdFNlbGVjdGlvbkZvclBhcmFncmFwaEJvdW5kYXJpZXMpCi0gICAg
ICAgICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxh
cml0eSk7CisgICAgICAgICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgLy8gSWYgdGhpcyBmYWlscyBmb3IgYW55IHJlYXNvbiwgdGhlIGZhbGxiYWNr
IGlzIHRvIGdvIG9uZSBwb3NpdGlvbiBiZXlvbmQgdGhlIGxhc3QgcmVwbGFjZW1lbnQKICAgICAg
ICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb3ZlVG8obV9mcmFtZS0+c2VsZWN0aW9uKCkt
PmVuZCgpKTsKLSAgICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hhcmFj
dGVyR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogICAgICAgICB9CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDg0ZDU3MzEuLjExOTc2OGMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTMyMiwzMiArMzIyLDMyIEBAIHN0YXRp
YyBib29sIGV4ZWN1dGVEZWxldGUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2Ugc291cmNlLCBjb25zCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2FyZChG
cmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QkFDS1dBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7Cisg
ICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUp
OwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlQmFja3dh
cmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgTE9HX0VSUk9SKCJEZWxl
dGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlciBpcyBub3QgaW1wbGVtZW50
ZWQsIGRvaW5nIERlbGV0ZUJhY2t3YXJkIGluc3RlYWQiKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCkt
PmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIENoYXJh
Y3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxl
dGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBD
aGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlRm9yd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9y
KCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRl
bGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwg
Q2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKEZyYW1lKiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZy
YW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpC
QUNLV0FSRCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigp
LT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3
YXJkLCBMaW5lQm91bmRhcnksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
ZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkJBQ0tXQVJELCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5l
ZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25CYWNrd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtMzU1LDcgKzM1NSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVU
b0VuZE9mTGluZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwKIHsK
ICAgICAvLyBEZXNwaXRlIGl0cyBuYW1lLCB0aGlzIGNvbW1hbmQgc2hvdWxkIGRlbGV0ZSB0aGUg
bmV3bGluZSBhdCB0aGUgZW5kIG9mCiAgICAgLy8gYSBwYXJhZ3JhcGggaWYgeW91IGFyZSBhdCB0
aGUgZW5kIG9mIGEgcGFyYWdyYXBoIChsaWtlIERlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgpLgotICAg
IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVy
OjpGT1JXQVJELCBMaW5lQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS0+ZWRpdG9y
KCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9y
d2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTM2Myw3ICszNjMsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9FbmRPZlBhcmFn
cmFwaChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdQogewogICAgIC8vIERl
c3BpdGUgaXRzIG5hbWUsIHRoaXMgY29tbWFuZCBzaG91bGQgZGVsZXRlIHRoZSBuZXdsaW5lIGF0
IHRoZSBlbmQgb2YKICAgICAvLyBhIHBhcmFncmFwaCBpZiB5b3UgYXJlIGF0IHRoZSBlbmQgb2Yg
YSBwYXJhZ3JhcGguCi0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxz
ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxz
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM4NCwxMyArMzg0LDEzIEBAIHN0YXRpYyBi
b29sIGV4ZWN1dGVEZWxldGVUb01hcmsoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVXb3JkQmFja3dhcmQo
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkJBQ0tXQVJELCBXb3JkR3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6
RGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEZvcndhcmQoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkZPUldBUkQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1l
LT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJl
Y3Rpb25Gb3J3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtNDM3LDcgKzQzNyw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVGb3J3YXJk
RGVsZXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjCiB7
CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5Qmlu
ZGluZzoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1
ZSk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rp
b25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFs
c2UsIHRydWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENvbW1hbmRGcm9tRE9N
OgogICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToKQEAgLTU5NSw0OSAr
NTk1LDQ5IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdo
dFRvTGVmdChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVN
b3ZlQmFja3dhcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIENoYXJhY3Rl
ckdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVj
dGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3Ry
aW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0
aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVEb3duKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkZPUldBUkQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlRG93bkFuZE1v
ZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwg
Y29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIExpbmVH
cmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uRm9yd2FyZCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVGb3J3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJp
dHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92
ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpG
T1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRy
dWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUxlZnQo
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVGVCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRy
dWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCBDaGFy
YWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVNb3ZlTGVmdEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkxFRlQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5k
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCBDaGFyYWN0ZXJHcmFudWxhcml0
eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTY0Niw3ICs2NDYsNyBAQCBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVBhZ2VEb3duKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdAogICAgIGludCBkaXN0YW5jZSA9IHZlcnRpY2FsU2Nyb2xsRGlz
dGFuY2UoZnJhbWUpOwogICAgIGlmICghZGlzdGFuY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6TU9WRSwgZGlzdGFuY2UsIHRydWUpOworICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgZGlzdGFuY2UsIHRy
dWUpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0
aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJp
bmcmKQpAQCAtNjU0LDcgKzY1NCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFnZURvd25B
bmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvCiAgICAgaW50
IGRpc3RhbmNlID0gdmVydGljYWxTY3JvbGxEaXN0YW5jZShmcmFtZSk7CiAgICAgaWYgKCFkaXN0
YW5jZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIGRpc3RhbmNlLCB0cnVlKTsK
KyAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6QWx0ZXJhdGlvbkV4dGVuZCwgZGlzdGFuY2UsIHRydWUpOwogfQogCiBzdGF0aWMgYm9vbCBl
eGVjdXRlTW92ZVBhZ2VVcChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKQEAgLTY2Miw3ICs2NjIsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRl
TW92ZVBhZ2VVcChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgUwogICAgIGludCBkaXN0YW5jZSA9IHZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UoZnJhbWUpOwog
ICAgIGlmICghZGlzdGFuY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZnJh
bWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgLWRpc3Rh
bmNlLCB0cnVlKTsKKyAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIC1kaXN0YW5jZSwgdHJ1ZSk7CiB9CiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQpAQCAtNjcwLDIx
MCArNjcwLDIxMCBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVj
dGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbQogICAgIGludCBkaXN0YW5jZSA9
IHZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UoZnJhbWUpOwogICAgIGlmICghZGlzdGFuY2UpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCAtZGlzdGFuY2UsIHRydWUpOworICAgIHJldHVy
biBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0
aW9uRXh0ZW5kLCAtZGlzdGFuY2UsIHRydWUpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92
ZVJpZ2h0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRy
b2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCBDaGFyYWN0ZXJHcmFudWxh
cml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJp
Z2h0LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
IHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
ZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpSSUdIVCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOwor
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVy
YXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0LCBDaGFyYWN0
ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkJBQ0tXQVJELCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0
aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIERvY3VtZW50Qm91bmRhcnksIHRydWUp
OwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5u
aW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkJBQ0tXQVJELCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0
aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwgdHJ1
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdp
bm5pbmdPZkxpbmUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIExpbmVCb3Vu
ZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJh
Y2t3YXJkLCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVY
VEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7
CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIExp
bmVCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpCQUNLV0FSRCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rp
b25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUp
OwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5u
aW5nT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9s
bGVyOjpCQUNLV0FSRCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwg
dHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9C
ZWdpbm5pbmdPZlNlbnRlbmNlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBT
ZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShT
ZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
RGlyZWN0aW9uQmFja3dhcmQsIFNlbnRlbmNlQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZTZW50ZW5jZUFu
ZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBT
ZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShT
ZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpEaXJlY3Rpb25CYWNrd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50KEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIERvY3VtZW50Qm91bmRhcnksIHRydWUpOwor
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVy
YXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBEb2N1bWVu
dEJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhl
Y3V0ZU1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUt
PnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rp
b25Db250cm9sbGVyOjpGT1JXQVJELCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFt
ZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0
ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBEb2N1bWVudEJvdW5k
YXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVUb0VuZE9mU2VudGVuY2UoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgU2Vu
dGVuY2VCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRp
cmVjdGlvbkZvcndhcmQsIFNlbnRlbmNlQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVl
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZTZW50ZW5jZUFuZE1vZGlmeVNl
bGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIFNlbnRlbmNlQm91
bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlv
bkZvcndhcmQsIFNlbnRlbmNlQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZMaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkZPUldBUkQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmVBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBMaW5l
Qm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVj
dGlvbkZvcndhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
IHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZlBhcmFncmFwaChGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25D
b250cm9sbGVyOjpGT1JXQVJELCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUt
PnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEJvdW5kYXJ5
LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVU
b0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6Rk9SV0FSRCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0
cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYXJh
Z3JhcGhCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkJBQ0tXQVJELCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEdyYW51bGFy
aXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6Rk9SV0FSRCwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRl
bmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEdyYW51
bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZU1vdmVVcChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgTGluZUdyYW51bGFy
aXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFj
a3dhcmQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUt
PnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rp
b25Db250cm9sbGVyOjpCQUNLV0FSRCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFt
ZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0
ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUdyYW51bGFy
aXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVXb3JkQmFja3dhcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIFdvcmRH
cmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVj
dGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlv
bihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVy
OjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBXb3JkR3JhbnVsYXJpdHks
IHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3
YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRGb3J3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkZPUldBUkQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZEZvcndhcmRBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBXb3Jk
R3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRp
cmVjdGlvbkZvcndhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZExlZnQoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6TEVGVCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0
aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkTGVmdEFuZE1v
ZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwg
Y29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQsIFdvcmRHcmFu
dWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0
aW9uTGVmdCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkUmlnaHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6UklHSFQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0LCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRSaWdodEFuZE1vZGlm
eVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25D
b250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCBXb3JkR3JhbnVs
YXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlv
blJpZ2h0LCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGluZShGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250
cm9sbGVyOjpMRUZULCBMaW5lQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25D
b250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJldHVy
biB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGluZUFuZE1v
ZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwg
Y29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQsIExpbmVCb3Vu
ZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9u
TGVmdCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVUb1JpZ2h0RW5kT2ZMaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OlJJR0hULCBMaW5lQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25SaWdodCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb1JpZ2h0RW5kT2ZMaW5lQW5kTW9k
aWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6UklHSFQsIExpbmVCb3Vu
ZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9u
UmlnaHQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcCBiL1dlYkNvcmUv
ZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAppbmRleCBlMDYyNTIxLi4wOTEwYWUyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKKysrIGIv
V2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0yNDEsNyArMjQxLDcg
QEAgdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpzZXRJc0RpcmVjdGlvbmFsKGJvb2wgaXNEaXJl
Y3Rpb25hbCkKIAogdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjp3aWxsQmVNb2RpZmllZChFQWx0
ZXJhdGlvbiBhbHRlciwgRURpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0gICAgaWYgKGFsdGVyICE9
IEVYVEVORCkKKyAgICBpZiAoYWx0ZXIgIT0gQWx0ZXJhdGlvbkV4dGVuZCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgUG9zaXRpb24gc3RhcnQgPSBtX3NlbGVjdGlvbi5zdGFydCgpOwpAQCAtMjYx
LDEzICsyNjEsMTMgQEAgdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjp3aWxsQmVNb2RpZmllZChF
QWx0ZXJhdGlvbiBhbHRlciwgRURpcmVjdGlvbiBkaXJlY3Rpb24KICAgICB9IGVsc2UgewogICAg
ICAgICAvLyBGSVhNRTogVGhpcyBpcyBwcm9iYWJseSBub3QgY29ycmVjdCBmb3IgcmlnaHQgYW5k
IGxlZnQgd2hlbiB0aGUgZGlyZWN0aW9uIGlzIFJUTC4KICAgICAgICAgc3dpdGNoIChkaXJlY3Rp
b24pIHsKLSAgICAgICAgY2FzZSBSSUdIVDoKLSAgICAgICAgY2FzZSBGT1JXQVJEOgorICAgICAg
ICBjYXNlIERpcmVjdGlvblJpZ2h0OgorICAgICAgICBjYXNlIERpcmVjdGlvbkZvcndhcmQ6CiAg
ICAgICAgICAgICBtX3NlbGVjdGlvbi5zZXRCYXNlKHN0YXJ0KTsKICAgICAgICAgICAgIG1fc2Vs
ZWN0aW9uLnNldEV4dGVudChlbmQpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
TEVGVDoKLSAgICAgICAgY2FzZSBCQUNLV0FSRDoKKyAgICAgICAgY2FzZSBEaXJlY3Rpb25MZWZ0
OgorICAgICAgICBjYXNlIERpcmVjdGlvbkJhY2t3YXJkOgogICAgICAgICAgICAgbV9zZWxlY3Rp
b24uc2V0QmFzZShlbmQpOwogICAgICAgICAgICAgbV9zZWxlY3Rpb24uc2V0RXh0ZW50KHN0YXJ0
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjI3LDI2ICs2MjcsMjYgQEAgYm9vbCBTZWxlY3Rp
b25Db250cm9sbGVyOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0ZXIsIEVEaXJlY3Rpb24gZGlyLCBU
ZXh0R3JhbnVsYXIKIAogICAgIFZpc2libGVQb3NpdGlvbiBwb3M7CiAgICAgc3dpdGNoIChkaXIp
IHsKLSAgICBjYXNlIFJJR0hUOgotICAgICAgICBpZiAoYWx0ZXIgPT0gTU9WRSkKKyAgICBjYXNl
IERpcmVjdGlvblJpZ2h0OgorICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJhdGlvbk1vdmUpCiAg
ICAgICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdSaWdodChncmFudWxhcml0eSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ1JpZ2h0KGdyYW51bGFyaXR5
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGT1JXQVJEOgotICAgICAgICBpZiAoYWx0ZXIg
PT0gRVhURU5EKQorICAgIGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKKyAgICAgICAgaWYgKGFsdGVy
ID09IEFsdGVyYXRpb25FeHRlbmQpCiAgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdG
b3J3YXJkKGdyYW51bGFyaXR5KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zID0gbW9k
aWZ5TW92aW5nRm9yd2FyZChncmFudWxhcml0eSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TEVGVDoKLSAgICAgICAgaWYgKGFsdGVyID09IE1PVkUpCisgICAgY2FzZSBEaXJlY3Rpb25MZWZ0
OgorICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJhdGlvbk1vdmUpCiAgICAgICAgICAgICBwb3Mg
PSBtb2RpZnlNb3ZpbmdMZWZ0KGdyYW51bGFyaXR5KTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nTGVmdChncmFudWxhcml0eSk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQkFDS1dBUkQ6Ci0gICAgICAgIGlmIChhbHRlciA9PSBFWFRFTkQpCisgICAg
Y2FzZSBEaXJlY3Rpb25CYWNrd2FyZDoKKyAgICAgICAgaWYgKGFsdGVyID09IEFsdGVyYXRpb25F
eHRlbmQpCiAgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxh
cml0eSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0JhY2t3
YXJkKGdyYW51bGFyaXR5KTsKQEAgLTY2MywxMCArNjYzLDEwIEBAIGJvb2wgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpciwgVGV4dEdy
YW51bGFyCiAgICAgaW50IHggPSB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oU1RBUlQp
OwogCiAgICAgc3dpdGNoIChhbHRlcikgewotICAgIGNhc2UgTU9WRToKKyAgICBjYXNlIEFsdGVy
YXRpb25Nb3ZlOgogICAgICAgICBtb3ZlVG8ocG9zLCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBFWFRFTkQ6CisgICAgY2FzZSBBbHRlcmF0aW9uRXh0ZW5kOgogICAg
ICAgICBzZXRFeHRlbnQocG9zLCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtNjgwLDcgKzY4MCw3IEBAIGJvb2wgU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5KEVB
bHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpciwgVGV4dEdyYW51bGFyCiAKICAgICBzZXRO
ZWVkc0xheW91dCgpOwogCi0gICAgc2V0SXNEaXJlY3Rpb25hbChhbHRlciA9PSBFWFRFTkQpOwor
ICAgIHNldElzRGlyZWN0aW9uYWwoYWx0ZXIgPT0gQWx0ZXJhdGlvbkV4dGVuZCk7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTcxNSwxNyArNzE1LDE3IEBAIGJvb2wgU2VsZWN0aW9uQ29udHJv
bGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBpbnQgdmVydGljYWxEaXN0YW5jZSwgYm9v
bCB1CiAgICAgaWYgKHVwKQogICAgICAgICB2ZXJ0aWNhbERpc3RhbmNlID0gLXZlcnRpY2FsRGlz
dGFuY2U7CiAKLSAgICB3aWxsQmVNb2RpZmllZChhbHRlciwgdXAgPyBCQUNLV0FSRCA6IEZPUldB
UkQpOworICAgIHdpbGxCZU1vZGlmaWVkKGFsdGVyLCB1cCA/IERpcmVjdGlvbkJhY2t3YXJkIDog
RGlyZWN0aW9uRm9yd2FyZCk7CiAKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zOwogICAgIGludCB4
UG9zID0gMDsKICAgICBzd2l0Y2ggKGFsdGVyKSB7Ci0gICAgY2FzZSBNT1ZFOgorICAgIGNhc2Ug
QWx0ZXJhdGlvbk1vdmU6CiAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbih1cCA/IG1fc2Vs
ZWN0aW9uLnN0YXJ0KCkgOiBtX3NlbGVjdGlvbi5lbmQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHko
KSk7CiAgICAgICAgIHhQb3MgPSB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24odXAgPyBT
VEFSVCA6IEVORCk7CiAgICAgICAgIG1fc2VsZWN0aW9uLnNldEFmZmluaXR5KHVwID8gVVBTVFJF
QU0gOiBET1dOU1RSRUFNKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFWFRFTkQ6CisgICAg
Y2FzZSBBbHRlcmF0aW9uRXh0ZW5kOgogICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9z
ZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgICAgICB4UG9z
ID0geFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKEVYVEVOVCk7CiAgICAgICAgIG1fc2Vs
ZWN0aW9uLnNldEFmZmluaXR5KERPV05TVFJFQU0pOwpAQCAtNzYyLDEwICs3NjIsMTAgQEAgYm9v
bCBTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0ZXIsIGludCB2ZXJ0
aWNhbERpc3RhbmNlLCBib29sIHUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3dpdGNo
IChhbHRlcikgewotICAgIGNhc2UgTU9WRToKKyAgICBjYXNlIEFsdGVyYXRpb25Nb3ZlOgogICAg
ICAgICBtb3ZlVG8ocmVzdWx0LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBFWFRFTkQ6CisgICAgY2FzZSBBbHRlcmF0aW9uRXh0ZW5kOgogICAgICAgICBzZXRFeHRl
bnQocmVzdWx0LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNzcz
LDcgKzc3Myw3IEBAIGJvb2wgU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9u
IGFsdGVyLCBpbnQgdmVydGljYWxEaXN0YW5jZSwgYm9vbCB1CiAgICAgaWYgKHVzZXJUcmlnZ2Vy
ZWQpCiAgICAgICAgIG1fZ3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eTsKIAotICAg
IHNldElzRGlyZWN0aW9uYWwoYWx0ZXIgPT0gRVhURU5EKTsKKyAgICBzZXRJc0RpcmVjdGlvbmFs
KGFsdGVyID09IEFsdGVyYXRpb25FeHRlbmQpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oIGIvV2ViQ29yZS9l
ZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaAppbmRleCAzN2U3YzBkLi43MzU1YmYzIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oCisrKyBiL1dlYkNv
cmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgKQEAgLTQyLDggKzQyLDggQEAgY2xhc3Mg
VmlzaWJsZVBvc2l0aW9uOwogCiBjbGFzcyBTZWxlY3Rpb25Db250cm9sbGVyIDogcHVibGljIE5v
bmNvcHlhYmxlIHsKIHB1YmxpYzoKLSAgICBlbnVtIEVBbHRlcmF0aW9uIHsgTU9WRSwgRVhURU5E
IH07Ci0gICAgZW51bSBFRGlyZWN0aW9uIHsgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBMRUZU
IH07CisgICAgZW51bSBFQWx0ZXJhdGlvbiB7IEFsdGVyYXRpb25Nb3ZlLCBBbHRlcmF0aW9uRXh0
ZW5kIH07CisgICAgZW51bSBFRGlyZWN0aW9uIHsgRGlyZWN0aW9uRm9yd2FyZCwgRGlyZWN0aW9u
QmFja3dhcmQsIERpcmVjdGlvblJpZ2h0LCBEaXJlY3Rpb25MZWZ0IH07CiAKICAgICBTZWxlY3Rp
b25Db250cm9sbGVyKEZyYW1lKiA9IDAsIGJvb2wgaXNEcmFnQ2FyZXRDb250cm9sbGVyID0gZmFs
c2UpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9X
ZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKaW5kZXggMTNhZWY2Yi4uM2ZmOWViYSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCisrKyBiL1dlYkNv
cmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAtNDMxLDkgKzQzMSw5IEBAIHZvaWQgVHlw
aW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHks
IGJvb2wga2lsbFJpbmcpCiAKICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlciBzZWxlY3Rpb247
CiAgICAgICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkpOwotICAg
ICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIGdyYW51bGFyaXR5KTsKKyAgICAgICAgc2VsZWN0aW9u
Lm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25D
b250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgZ3JhbnVsYXJpdHkpOwogICAgICAgICBpZiAo
a2lsbFJpbmcgJiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBncmFudWxhcml0eSAhPSBDaGFyYWN0
ZXJHcmFudWxhcml0eSkgCi0gICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIENoYXJhY3Rl
ckdyYW51bGFyaXR5KTsgCisgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlv
bkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7IAogICAgICAgICAKICAgICAgICAgaWYg
KGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLnByZXZpb3VzKHRydWUpLmlzTnVsbCgp
KSB7CiAgICAgICAgICAgICAvLyBXaGVuIHRoZSBjYXJldCBpcyBhdCB0aGUgc3RhcnQgb2YgdGhl
IGVkaXRhYmxlIGFyZWEgaW4gYW4gZW1wdHkgbGlzdCBpdGVtLCBicmVhayBvdXQgb2YgdGhlIGxp
c3QgaXRlbS4KQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtl
eVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5nKQogICAg
ICAgICAgICAgaWYgKGlzTGFzdFBvc2l0aW9uQmVmb3JlVGFibGUodmlzaWJsZVN0YXJ0KSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAvLyBFeHRlbmQgdGhlIHNlbGVjdGlv
biBiYWNrd2FyZCBpbnRvIHRoZSBsYXN0IGNlbGwsIHRoZW4gZGVsZXRpb24gd2lsbCBoYW5kbGUg
dGhlIG1vdmUuCi0gICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIGdyYW51bGFyaXR5KTsK
KyAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIGdyYW51
bGFyaXR5KTsKICAgICAgICAgLy8gSWYgdGhlIGNhcmV0IGlzIGp1c3QgYWZ0ZXIgYSB0YWJsZSwg
c2VsZWN0IHRoZSB0YWJsZSBhbmQgZG9uJ3QgZGVsZXRlIGFueXRoaW5nLgogICAgICAgICB9IGVs
c2UgaWYgKE5vZGUqIHRhYmxlID0gaXNGaXJzdFBvc2l0aW9uQWZ0ZXJUYWJsZSh2aXNpYmxlU3Rh
cnQpKSB7CiAgICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihQ
b3NpdGlvbih0YWJsZSwgMCksIGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCksIERPV05TVFJFQU0p
KTsKQEAgLTUyNSw5ICs1MjUsOSBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVL
ZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraQogICAgICAgICAv
LyByb290IGVkaXRhYmxlIGVsZW1lbnQgb3IgYXQgdGhlIHN0YXJ0IG9mIGEgZG9jdW1lbnQuCiAg
ICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIgc2VsZWN0aW9uOwogICAgICAgICBzZWxlY3Rpb24u
c2V0U2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpKTsKLSAgICAgICAgc2VsZWN0aW9uLm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldB
UkQsIGdyYW51bGFyaXR5KTsKKyAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25G
b3J3YXJkLCBncmFudWxhcml0eSk7CiAgICAgICAgIGlmIChraWxsUmluZyAmJiBzZWxlY3Rpb24u
aXNDYXJldCgpICYmIGdyYW51bGFyaXR5ICE9IENoYXJhY3RlckdyYW51bGFyaXR5KSAKLSAgICAg
ICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7IAorICAgICAg
ICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0
ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSk7IAogICAgICAgICAKICAgICAgICAgUG9zaXRpb24gZG93bnN0cmVhbUVuZCA9IGVu
ZGluZ1NlbGVjdGlvbigpLmVuZCgpLmRvd25zdHJlYW0oKTsKICAgICAgICAgVmlzaWJsZVBvc2l0
aW9uIHZpc2libGVFbmQgPSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlRW5kKCk7CkBAIC01NDIs
NyArNTQyLDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2kKIAogICAgICAgICAvLyBkZWxldGlu
ZyB0byBlbmQgb2YgcGFyYWdyYXBoIHdoZW4gYXQgZW5kIG9mIHBhcmFncmFwaCBuZWVkcyB0byBt
ZXJnZSB0aGUgbmV4dCBwYXJhZ3JhcGggKGlmIGFueSkKICAgICAgICAgaWYgKGdyYW51bGFyaXR5
ID09IFBhcmFncmFwaEJvdW5kYXJ5ICYmIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0NhcmV0KCkg
JiYgaXNFbmRPZlBhcmFncmFwaChzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpKSkK
LSAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5E
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7Cisg
ICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIENoYXJhY3Rl
ckdyYW51bGFyaXR5KTsKIAogICAgICAgICBzZWxlY3Rpb25Ub0RlbGV0ZSA9IHNlbGVjdGlvbi5z
ZWxlY3Rpb24oKTsKICAgICAgICAgaWYgKCFzdGFydGluZ1NlbGVjdGlvbigpLmlzUmFuZ2UoKSB8
fCBzZWxlY3Rpb25Ub0RlbGV0ZS5iYXNlKCkgIT0gc3RhcnRpbmdTZWxlY3Rpb24oKS5zdGFydCgp
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAgYi9XZWJDb3JlL3Bh
Z2UvRE9NU2VsZWN0aW9uLmNwcAppbmRleCAxMmFlNTlkLi42MTMxNzMzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0
aW9uLmNwcApAQCAtMjY4LDIxICsyNjgsMjEgQEAgdm9pZCBET01TZWxlY3Rpb246Om1vZGlmeShj
b25zdCBTdHJpbmcmIGFsdGVyU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvblN0cmkKIAog
ICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVBbHRlcmF0aW9uIGFsdGVyOwogICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShhbHRlclN0cmluZywgImV4dGVuZCIpKQotICAgICAgICBhbHRlciA9IFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORDsKKyAgICAgICAgYWx0ZXIgPSBTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KGFsdGVyU3RyaW5nLCAibW92ZSIpKQotICAgICAgICBhbHRlciA9IFNlbGVjdGlvbkNvbnRyb2xs
ZXI6Ok1PVkU7CisgICAgICAgIGFsdGVyID0gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlv
bk1vdmU7CiAgICAgZWxzZQogICAgICAgICByZXR1cm47CiAKICAgICBTZWxlY3Rpb25Db250cm9s
bGVyOjpFRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGly
ZWN0aW9uU3RyaW5nLCAiZm9yd2FyZCIpKQotICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25D
b250cm9sbGVyOjpGT1JXQVJEOworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25Db250cm9s
bGVyOjpEaXJlY3Rpb25Gb3J3YXJkOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRp
cmVjdGlvblN0cmluZywgImJhY2t3YXJkIikpCi0gICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkJBQ0tXQVJEOworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZDsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShkaXJlY3Rpb25TdHJpbmcsICJsZWZ0IikpCi0gICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkxFRlQ7CisgICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkRpcmVjdGlvbkxlZnQ7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGlyZWN0
aW9uU3RyaW5nLCAicmlnaHQiKSkKLSAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uQ29udHJv
bGxlcjo6UklHSFQ7CisgICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRp
cmVjdGlvblJpZ2h0OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuOwogCkBAIC00MDksNyArNDA5
LDcgQEAgdm9pZCBET01TZWxlY3Rpb246OmRlbGV0ZUZyb21Eb2N1bWVudCgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChpc0NvbGxhcHNlZCgpKQotICAgICAgICBzZWxlY3Rpb24tPm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tX
QVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgIHNlbGVjdGlvbi0+bW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkRpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICBSZWZQdHI8
UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rpb24tPnNlbGVjdGlvbigpLnRvTm9ybWFsaXpl
ZFJhbmdlKCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZTkyNzhhYy4uYTA4NDYxZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKQEAgLTIyMTIsMTYgKzIyMTIsMTYgQEAgdm9pZCBFdmVudEhhbmRs
ZXI6OmhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQp
CiAgICAgYm9vbCBpc0NvbW1hbmRlZCA9IGV2ZW50LT5nZXRNb2RpZmllclN0YXRlKCJNZXRhIik7
CiAgICAgCiAgICAgaWYgKGtleSA9PSAiVXAiKSB7Ci0gICAgICAgIG1fZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBT
ZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwg
KGlzQ29tbWFuZGVkKSA/IERvY3VtZW50Qm91bmRhcnkgOiBMaW5lR3JhbnVsYXJpdHksIHRydWUp
OworICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwg
KGlzQ29tbWFuZGVkKSA/IERvY3VtZW50Qm91bmRhcnkgOiBMaW5lR3JhbnVsYXJpdHksIHRydWUp
OwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9IGVsc2UgaWYgKGtl
eSA9PSAiRG93biIpIHsgCi0gICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoKGlz
U2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9s
bGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCAoaXNDb21tYW5kZWQpID8g
RG9jdW1lbnRCb3VuZGFyeSA6IExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgICAgIG1fZnJh
bWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9sbGVy
OjpBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIChpc0NvbW1hbmRlZCkgPyBE
b2N1bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKICAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfSBlbHNlIGlmIChrZXkgPT0gIkxlZnQiKSB7Ci0g
ICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rp
b25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rp
b25Db250cm9sbGVyOjpMRUZULCAoaXNDb21tYW5kZWQpID8gTGluZUJvdW5kYXJ5IDogKGlzT3B0
aW9uZWQpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOwor
ICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCAoaXNDb21t
YW5kZWQpID8gTGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gV29yZEdyYW51bGFyaXR5IDog
Q2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhh
bmRsZWQoKTsKICAgICB9IGVsc2UgaWYgKGtleSA9PSAiUmlnaHQiKSB7Ci0gICAgICAgIG1fZnJh
bWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9sbGVy
OjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpSSUdIVCwgKGlzQ29tbWFuZGVkKSA/IExpbmVCb3VuZGFyeSA6IChpc09wdGlvbmVkKSA/IFdv
cmRHcmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICAgICAgbV9m
cmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeSgoaXNTaGlmdGVkKSA/IFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92
ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQsIChpc0NvbW1hbmRlZCkgPyBM
aW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJH
cmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwog
ICAgIH0gICAgCiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBlOGI5OTg5Li5jYTRjY2M5IDEwMDY0NAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wMy0yNiAgTHlvbiBDaGVuICA8bGlhY2hlbkByaW0u
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVu
dW0gdmFsdWUgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBMRUZUIGFyZSBjYXVzaW5nIG1hY3Jv
IGNvbmZsaWN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM1NTMwCisKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVJbXBsOjpleGVjdXRlQ29tbWFuZCk6CisKIDIwMTAtMDMtMjUgIEx5b24g
Q2hlbiAgPGxpYWNoZW5AcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCBlODFlOTgyLi4yYThh
M2NkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC0xMDg4LDExICsxMDg4
LDExIEBAIGJvb2wgV2ViRnJhbWVJbXBsOjpleGVjdXRlQ29tbWFuZChjb25zdCBXZWJTdHJpbmcm
IG5hbWUpCiAgICAgLy8gc3VwcG9ydC4KICAgICBpZiAoY29tbWFuZCA9PSAiRGVsZXRlVG9FbmRP
ZlBhcmFncmFwaCIpIHsKICAgICAgICAgRWRpdG9yKiBlZGl0b3IgPSBmcmFtZSgpLT5lZGl0b3Io
KTsKLSAgICAgICAgaWYgKCFlZGl0b3ItPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29u
dHJvbGxlcjo6Rk9SV0FSRCwKKyAgICAgICAgaWYgKCFlZGl0b3ItPmRlbGV0ZVdpdGhEaXJlY3Rp
b24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYWdyYXBoQm91bmRhcnksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkgewotICAgICAgICAgICAgZWRpdG9yLT5kZWxl
dGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsCisgICAgICAgICAg
ICBlZGl0b3ItPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0
aW9uRm9yd2FyZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFy
YWN0ZXJHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsK
ZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cgYi9XZWJLaXQvaGFpa3UvQ2hhbmdl
TG9nCmluZGV4IDk2NWJkZGQuLjJlMzdhYjQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEw
LTAzLTI2ICBMeW9uIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW51bSB2YWx1ZSBGT1JXQVJELCBCQUNLV0FS
RCwgUklHSFQsIExFRlQgYXJlIGNhdXNpbmcgbWFjcm8gY29uZmxpY3RzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU1MzAKKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudEhhaWt1OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKwogMjAxMC0wMy0yNSAgTHlv
biBDaGVuICA8bGlhY2hlbkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEhhaWt1LmNwcCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRI
YWlrdS5jcHAKaW5kZXggNDdjNjM2NC4uOWJmOWY5YyAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcAorKysgYi9XZWJLaXQvaGFpa3Uv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuY3BwCkBAIC0yNTMsMzYgKzI1MywzNiBA
QCB2b2lkIEVkaXRvckNsaWVudEhhaWt1OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZl
bnQqIGV2ZW50KQogICAgIGlmIChzdGFydC0+aXNDb250ZW50RWRpdGFibGUoKSkgewogICAgICAg
ICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKICAgICAgICAgY2Fz
ZSBWS19CQUNLOgotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0
aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELAorICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlv
bkJhY2t3YXJkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGtldmVudC0+Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVs
YXJpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmFsc2UsIHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVktfREVMRVRF
OgotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsCisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRl
bGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXZlbnQt
PmN0cmxLZXkoKSA/IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCB0cnVl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZLX0xFRlQ6Ci0gICAgICAgICAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rp
b25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVG
VCwKKyAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+c2hpZnRL
ZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25D
b250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkxlZnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXZlbnQtPmN0cmxLZXkoKSA/IFdvcmRHcmFu
dWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBW
S19SSUdIVDoKLSAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+
c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRy
b2xsZXI6Ok1PVkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxl
Y3Rpb25Db250cm9sbGVyOjpSSUdIVCwKKyAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KGtldmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVj
dGlvblJpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V2ZW50
LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVktfVVA6Ci0gICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShrZXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRF
TkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsCisgICAgICAgICAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rp
b25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbk1vdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxl
Y3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtldmVudC0+Y3RybEtleSgpID8gUGFyYWdyYXBoR3JhbnVsYXJp
dHkgOiBMaW5lR3JhbnVsYXJpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZLX0RPV046Ci0g
ICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXZlbnQtPnNoaWZ0S2V5KCkg
PyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZF
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJv
bGxlcjo6Rk9SV0FSRCwKKyAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtl
dmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQg
OiBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndh
cmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXZlbnQtPmN0cmxL
ZXkoKSA/IFBhcmFncmFwaEdyYW51bGFyaXR5IDogTGluZUdyYW51bGFyaXR5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmlu
ZGV4IGNiZTBkYTguLmQxYTFjYzUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEwLTAzLTI2ICBMeW9u
IENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRW51bSB2YWx1ZSBGT1JXQVJELCBCQUNLV0FSRCwgUklHSFQsIExF
RlQgYXJlIGNhdXNpbmcgbWFjcm8gY29uZmxpY3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU1MzAKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojpo
YW5kbGVLZXlib2FyZEV2ZW50KToKKwogMjAxMC0wMy0yNSAgTHlvbiBDaGVuICA8bGlhY2hlbkBy
aW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcCBiL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKaW5kZXggY2ViNGUxZC4uYjJjNzll
YiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNw
cAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCkBAIC0z
ODMsMTEgKzM4MywxMSBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50
KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogI2VuZGlmIC8vIFFUX05PX1NIT1JUQ1VUCiAgICAgICAg
IHN3aXRjaCAoa2V2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewogICAgICAgICBjYXNl
IFZLX0JBQ0s6Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rp
b24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsCisgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9u
QmFja3dhcmQsCiAgICAgICAgICAgICAgICAgICAgIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxz
ZSwgdHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0g
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9u
Q29udHJvbGxlcjo6Rk9SV0FSRCwKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRl
V2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLAogICAg
ICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVktfTEVGVDoK
</data>
<flag name="review"
          id="35081"
          type_id="1"
          status="-"
          setter="ojan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57420</attachid>
            <date>2010-05-30 09:55:14 -0700</date>
            <delta_ts>2010-05-30 17:52:07 -0700</delta_ts>
            <desc>Cleanup patch for 35530</desc>
            <filename>35530_cleanup.patch</filename>
            <type>text/plain</type>
            <size>125698</size>
            <attacher name="Lyon Chen">liachen</attacher>
            
              <data encoding="base64">RnJvbSA1M2QzNTU4Njc1OWU2ODZjZTVlMTNhZGIyMjZiYmY1MGRkMWJhM2ViIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMeW9uIENoZW4gPGxpYWNoZW5AcmltLmNvbT4KRGF0ZTogU2F0
LCAyOSBNYXkgMjAxMCAxODoyMjoyNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMS8yXSBUaGlzIGlz
IGEgY29kaW5nIHN0eWxlIGNsZWFudXAgYmVmb3JlIGZpeGluZyB0byBidWcgMzU1MzAuCgpSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkVudW0gdmFsdWUgRk9SV0FSRCwgQkFDS1dBUkQsIFJJ
R0hULCBMRUZUIGFyZSBjYXVzaW5nIG1hY3JvIGNvbmZsaWN0cy4KaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NTMwCgpjOi9EYXRhL1dlYktpdC93ZWJraXQtZ2l0L1dl
YkNvcmU6CgoqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKFdlYkNvcmU6OkVkaXRvcjo6ZGVsZXRlV2l0
aERpcmVjdGlvbik6CihXZWJDb3JlOjpFZGl0b3I6OmZvbnRGb3JTZWxlY3Rpb24pOgooV2ViQ29y
ZTo6RWRpdG9yOjphcHBseVN0eWxlKToKKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlQYXJhZ3JhcGhT
dHlsZSk6CihXZWJDb3JlOjpFZGl0b3I6OmFwcGx5U3R5bGVUb1NlbGVjdGlvbik6CihXZWJDb3Jl
OjpFZGl0b3I6OmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbik6CihXZWJDb3JlOjp0cmlT
dGF0ZU9mU3R5bGVJbkNvbXB1dGVkU3R5bGUpOgooV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25T
dGFydEhhc1N0eWxlKToKKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSGFzU3R5bGUpOgooV2Vi
Q29yZTo6RWRpdG9yOjpwYXN0ZSk6CihXZWJDb3JlOjpFZGl0b3I6Omlnbm9yZVNwZWxsaW5nKToK
KFdlYkNvcmU6OkVkaXRvcjo6bGVhcm5TcGVsbGluZyk6CihXZWJDb3JlOjpmaW5kRmlyc3RNaXNz
cGVsbGluZ0luUmFuZ2UpOgooV2ViQ29yZTo6ZmluZEZpcnN0R3JhbW1hckRldGFpbEluUmFuZ2Up
OgooV2ViQ29yZTo6ZmluZEZpcnN0QmFkR3JhbW1hckluUmFuZ2UpOgooV2ViQ29yZTo6ZmluZEZp
cnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXJJblJhbmdlKToKKFdlYkNvcmU6OkVkaXRvcjo6YWR2
YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToKKFdlYkNvcmU6OkVkaXRvcjo6aXNTZWxlY3Rpb25NaXNz
cGVsbGVkKToKKFdlYkNvcmU6OmlzUmFuZ2VVbmdyYW1tYXRpY2FsKToKKFdlYkNvcmU6OkVkaXRv
cjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRTZWxlY3Rpb24pOgooV2ViQ29yZTo6Z3Vlc3Nlc0Zvck1p
c3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZSk6CihXZWJDb3JlOjpFZGl0b3I6Om1hcmtNaXNz
cGVsbGluZ3NBZnRlclR5cGluZ1RvUG9zaXRpb24pOgooV2ViQ29yZTo6RWRpdG9yOjptYXJrQWxs
TWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKToKKiBlZGl0aW5nL0VkaXRvckNvbW1h
bmQuY3BwOgooV2ViQ29yZTo6YXBwbHlDb21tYW5kVG9GcmFtZSk6CihXZWJDb3JlOjpleGVjdXRl
VG9nZ2xlU3R5bGVJbkxpc3QpOgooV2ViQ29yZTo6ZXhlY3V0ZUFwcGx5UGFyYWdyYXBoU3R5bGUp
OgooV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZSk6CihXZWJDb3JlOjpleGVjdXRlRm9yd2FyZERlbGV0
ZSk6CihXZWJDb3JlOjpleGVjdXRlSW5zZXJ0TGluZUJyZWFrKToKKFdlYkNvcmU6OnN1cHBvcnRl
ZENvcHlDdXQpOgooV2ViQ29yZTo6c3VwcG9ydGVkUGFzdGUpOgooV2ViQ29yZTo6ZW5hYmxlZERl
bGV0ZSk6CiogZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcDoKKFdlYkNvcmU6OlNlbGVj
dGlvbkNvbnRyb2xsZXI6Om1vZGlmeUV4dGVuZGluZ1JpZ2h0KToKKFdlYkNvcmU6OlNlbGVjdGlv
bkNvbnRyb2xsZXI6Om1vZGlmeUV4dGVuZGluZ0ZvcndhcmQpOgooV2ViQ29yZTo6U2VsZWN0aW9u
Q29udHJvbGxlcjo6bW9kaWZ5TW92aW5nUmlnaHQpOgooV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJv
bGxlcjo6bW9kaWZ5TW92aW5nRm9yd2FyZCk6CihXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVy
Ojptb2RpZnlFeHRlbmRpbmdMZWZ0KToKKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om1v
ZGlmeUV4dGVuZGluZ0JhY2t3YXJkKToKKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om1v
ZGlmeU1vdmluZ0xlZnQpOgooV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5TW92
aW5nQmFja3dhcmQpOgooV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5KToKKFdl
YkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OnhQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlv
bik6CihXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpkZWJ1Z1JlbmRlcmVyKToKKiBlZGl0
aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgooV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5
UHJlc3NlZCk6CihXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3Nl
ZCk6CihXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWspOgooV2ViQ29yZTo6
VHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50KToK
KFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyYXRvcik6CihXZWJD
b3JlOjpUeXBpbmdDb21tYW5kOjpkb0FwcGx5KToKKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omlu
c2VydFRleHQpOgooV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6dXBkYXRlUHJlc2VydmVzVHlwaW5n
U3R5bGUpOgoqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
aGFuZGxlTW91c2VQcmVzc0V2ZW50KToKKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91
c2VSZWxlYXNlRXZlbnQpOgooV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDdXJzb3IpOgoo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjYW5IYW5kbGVEcmFnQW5kRHJvcEZvclRhcmdldCk6CihX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRpc3BhdGNoTW91c2VFdmVudCk6CihXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50KToKKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
aGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudCk6CihXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OmhhbmRsZURyYWcpOgoKYzovRGF0YS9XZWJLaXQvd2Via2l0LWdpdC9XZWJLaXQvY2hyb21pdW06
CgoqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgooV2ViS2l0OjpXZWJGcmFtZUltcGw6OmZpbmQpOgoo
V2ViS2l0OjpXZWJGcmFtZUltcGw6OnNjb3BlU3RyaW5nTWF0Y2hlcyk6CihXZWJLaXQ6OldlYkZy
YW1lSW1wbDo6Y3JlYXRlQ2hpbGRGcmFtZSk6CihXZWJLaXQ6OldlYkZyYW1lSW1wbDo6c2hvdWxk
U2NvcGVNYXRjaGVzKToKCmM6L0RhdGEvV2ViS2l0L3dlYmtpdC1naXQvV2ViS2l0L2hhaWt1OgoK
KiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHA6CihXZWJDb3JlOjpFZGl0b3JD
bGllbnRIYWlrdTo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CgpjOi9EYXRhL1dlYktpdC93ZWJraXQt
Z2l0L1dlYktpdC9xdDoKCiogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgooV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8pOgooV2ViQ29yZTo6
RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgotLS0KIFdlYkNvcmUvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDc0ICsrKwogV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMzEgKysrLS0tCiBX
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgICAgICAgICAgICAgICAgIHwgIDE0MyAr
KystLS0KIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcCAgICAgICAgICAg
fCAgNTk2ICsrKysrKysrKystLS0tLS0tLS0tLQogV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1h
bmQuY3BwICAgICAgICAgICAgICAgICB8ICAzMDEgKysrKysrLS0tLS0tCiBXZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcCAgICAgICAgICAgICAgICAgICAgIHwgIDI2OSArKysrKy0tLS0tCiBX
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNSAr
CiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgICAgICAgICAgICAgIHwgICAz
MCArLQogV2ViS2l0L2hhaWt1L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMTIgKwogV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmNw
cCB8ICAgMzcgKy0KIFdlYktpdC9xdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDEzICsKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5j
cHAgICAgICAgfCAgMjE5ICsrKystLS0tCiAxMiBmaWxlcyBjaGFuZ2VkLCA5NzMgaW5zZXJ0aW9u
cygrKSwgODY3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc2NjMwOS4uZGQzMjQyYSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NyBAQAor
MjAxMC0wNS0zMCAgTHlvbiBDaGVuICA8bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBjb2Rpbmcgc3R5bGUg
Y2xlYW51cCBiZWZvcmUgZml4aW5nIHRvIGJ1ZyAzNTUzMC4KKworICAgICAgICBFbnVtIHZhbHVl
IEZPUldBUkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVCBhcmUgY2F1c2luZyBtYWNybyBjb25mbGlj
dHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTUz
MAorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpkZWxldGVXaXRoRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zm9u
dEZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFwcGx5U3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphcHBseVBhcmFncmFwaFN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlTdHlsZVRvU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6YXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OnRyaVN0YXRlT2ZTdHlsZUluQ29tcHV0ZWRTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpzZWxlY3Rpb25IYXNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aWdub3JlU3BlbGxpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpsZWFyblNwZWxsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRG
aXJzdE1pc3NwZWxsaW5nSW5SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kRmlyc3RHcmFt
bWFyRGV0YWlsSW5SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kRmlyc3RCYWRHcmFtbWFy
SW5SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3Jh
bW1hckluUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphZHZhbmNlVG9OZXh0TWlz
c3BlbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppc1NlbGVjdGlvbk1pc3NwZWxs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6aXNSYW5nZVVuZ3JhbW1hdGljYWwpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpndWVzc2VzRm9yTWlzc3BlbGxlZFNlbGVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Qb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRC
YWRHcmFtbWFySW5SYW5nZXMpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjphcHBseUNvbW1hbmRUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVUb2dnbGVTdHlsZUluTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRl
QXBwbHlQYXJhZ3JhcGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVGb3J3YXJkRGVsZXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVJbnNlcnRMaW5lQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6c3VwcG9ydGVk
Q29weUN1dCk6CisgICAgICAgIChXZWJDb3JlOjpzdXBwb3J0ZWRQYXN0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjplbmFibGVkRGVsZXRlKToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5
RXh0ZW5kaW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6
bW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250
cm9sbGVyOjptb2RpZnlNb3ZpbmdSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25D
b250cm9sbGVyOjptb2RpZnlNb3ZpbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dGlvbkNvbnRyb2xsZXI6Om1vZGlmeUV4dGVuZGluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5TW92aW5nTGVmdCk6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnlNb3ZpbmdCYWNrd2FyZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnkpOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6eFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OmRlYnVnUmVuZGVy
ZXIpOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlR5cGluZ0NvbW1hbmQ6Omluc2VydExpbmVCcmVhayk6CisgICAgICAgIChXZWJDb3JlOjpU
eXBpbmdDb21tYW5kOjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAo
V2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpU
eXBpbmdDb21tYW5kOjp1cGRhdGVQcmVzZXJ2ZXNUeXBpbmdTdHlsZSk6CisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNl
bGVjdEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbkhhbmRsZURy
YWdBbmREcm9wRm9yVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlz
cGF0Y2hNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VuZENv
bnRleHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVL
ZXlib2FyZFNlbGVjdGlvbk1vdmVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6aGFuZGxlRHJhZyk6CisKIDIwMTAtMDUtMzAgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKaW5kZXggNjJiNzEzNC4uNjAzZjM1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTI5LDE1ICsyOSwx
NSBAQAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFwcGx5U3R5bGVD
b21tYW5kLmgiCi0jaW5jbHVkZSAiQ2hhcmFjdGVyTmFtZXMuaCIKLSNpbmNsdWRlICJDb21wb3Np
dGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiQ3JlYXRlTGlua0NvbW1hbmQuaCIKICNpbmNsdWRlICJD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiQ1NTUHJv
cGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNsdWRlICJD
aGFyYWN0ZXJOYW1lcy5oIgogI2luY2x1ZGUgIkNsaXBib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAi
Q29tcG9zaXRpb25FdmVudC5oIgorI2luY2x1ZGUgIkNyZWF0ZUxpbmtDb21tYW5kLmgiCiAjaW5j
bHVkZSAiRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRlbGV0ZVNlbGVjdGlv
bkNvbW1hbmQuaCIKICNpbmNsdWRlICJEb2NMb2FkZXIuaCIKQEAgLTI0MCwxNiArMjQwLDE2IEBA
IGJvb2wgRWRpdG9yOjpkZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVE
aXJlY3Rpb24gZGlyZWN0aW9uLCBUZXh0CiAgICAgICAgICAgICBkZWxldGVTZWxlY3Rpb25XaXRo
U21hcnREZWxldGUoY2FuU21hcnRDb3B5T3JEZWxldGUoKSk7CiAgICAgICAgICAgICAvLyBJbXBs
aWNpdGx5IGNhbGxzIHJldmVhbFNlbGVjdGlvbkFmdGVyRWRpdGluZ09wZXJhdGlvbigpLgogICAg
ICAgICB9Ci0gICAgfSBlbHNlIHsgICAgICAgIAorICAgIH0gZWxzZSB7CiAgICAgICAgIHN3aXRj
aCAoZGlyZWN0aW9uKSB7Ci0gICAgICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZP
UldBUkQ6Ci0gICAgICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hUOgotICAg
ICAgICAgICAgICAgIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKG1fZnJh
bWUtPmRvY3VtZW50KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCksIGdyYW51bGFyaXR5LCBraWxs
UmluZyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkJBQ0tXQVJEOgotICAgICAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9s
bGVyOjpMRUZUOgotICAgICAgICAgICAgICAgIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNz
ZWQobV9mcmFtZS0+ZG9jdW1lbnQoKSwgY2FuU21hcnRDb3B5T3JEZWxldGUoKSwgZ3JhbnVsYXJp
dHksIGtpbGxSaW5nKTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTZWxl
Y3Rpb25Db250cm9sbGVyOjpGT1JXQVJEOgorICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OlJJR0hUOgorICAgICAgICAgICAgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVBy
ZXNzZWQobV9mcmFtZS0+ZG9jdW1lbnQoKSwgY2FuU21hcnRDb3B5T3JEZWxldGUoKSwgZ3JhbnVs
YXJpdHksIGtpbGxSaW5nKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJEOgorICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkxFRlQ6CisgICAgICAgICAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKG1f
ZnJhbWUtPmRvY3VtZW50KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCksIGdyYW51bGFyaXR5LCBr
aWxsUmluZyk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICByZXZlYWxT
ZWxlY3Rpb25BZnRlckVkaXRpbmdPcGVyYXRpb24oKTsKICAgICB9CkBAIC00MTgsNyArNDE4LDcg
QEAgY29uc3QgU2ltcGxlRm9udERhdGEqIEVkaXRvcjo6Zm9udEZvclNlbGVjdGlvbihib29sJiBo
YXNNdWx0aXBsZUZvbnRzKSBjb25zdAogICAgICAgICBpZiAobm9kZVRvUmVtb3ZlKSB7CiAgICAg
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgICAgICAgICAgbm9kZVRvUmVtb3ZlLT5yZW1v
dmUoZWMpOwotICAgICAgICAgICAgQVNTRVJUKGVjID09IDApOworICAgICAgICAgICAgQVNTRVJU
KCFlYyk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNDMzLDcgKzQz
Myw3IEBAIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBFZGl0b3I6OmZvbnRGb3JTZWxlY3Rpb24oYm9v
bCYgaGFzTXVsdGlwbGVGb250cykgY29uc3QKICAgICAgICAgLy8gSW4gdGhlIGxvb3AgYmVsb3cs
IG4gc2hvdWxkIGV2ZW50dWFsbHkgbWF0Y2ggcGFzdEVuZCBhbmQgbm90IGJlY29tZSBuaWwsIGJ1
dCB3ZSd2ZSBzZWVuIGF0IGxlYXN0IG9uZQogICAgICAgICAvLyB1bnJlcHJvZHVjaWJsZSBjYXNl
IHdoZXJlIHRoaXMgZGlkbid0IGhhcHBlbiwgc28gY2hlY2sgZm9yIG5pbCBhbHNvLgogICAgICAg
ICBmb3IgKE5vZGUqIG4gPSBzdGFydE5vZGU7IG4gJiYgbiAhPSBwYXN0RW5kOyBuID0gbi0+dHJh
dmVyc2VOZXh0Tm9kZSgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0g
bi0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBuLT5y
ZW5kZXJlcigpOwogICAgICAgICAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBcmUgdGhlcmUgYW55IG5vZGUgdHlwZXMg
dGhhdCBoYXZlIHJlbmRlcmVycywgYnV0IHRoYXQgd2Ugc2hvdWxkIGJlIHNraXBwaW5nPwpAQCAt
NzE4LDE2ICs3MTgsMTYgQEAgYm9vbCBFZGl0b3I6OmRpc3BhdGNoQ1BQRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nICZldmVudFR5cGUsIENsaXBib2FyZEFjY2Vzc1BvbGkKIHZvaWQgRWRpdG9yOjph
cHBseVN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBFZGl0QWN0aW9uIGVkaXRpbmdB
Y3Rpb24pCiB7CiAgICAgc3dpdGNoIChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uVHlw
ZSgpKSB7Ci0gICAgICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxlY3Rpb246Ci0gICAg
ICAgICAgICAvLyBkbyBub3RoaW5nCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBW
aXNpYmxlU2VsZWN0aW9uOjpDYXJldFNlbGVjdGlvbjoKLSAgICAgICAgICAgIG1fZnJhbWUtPmNv
bXB1dGVBbmRTZXRUeXBpbmdTdHlsZShzdHlsZSwgZWRpdGluZ0FjdGlvbik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpSYW5nZVNlbGVjdGlvbjoK
LSAgICAgICAgICAgIGlmIChzdHlsZSkKLSAgICAgICAgICAgICAgICBhcHBseUNvbW1hbmQoQXBw
bHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShtX2ZyYW1lLT5kb2N1bWVudCgpLCBzdHlsZSwgZWRpdGlu
Z0FjdGlvbikpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9u
OjpOb1NlbGVjdGlvbjoKKyAgICAgICAgLy8gZG8gbm90aGluZworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFZpc2libGVTZWxlY3Rpb246OkNhcmV0U2VsZWN0aW9uOgorICAgICAgICBtX2ZyYW1l
LT5jb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUoc3R5bGUsIGVkaXRpbmdBY3Rpb24pOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OlJhbmdlU2VsZWN0aW9uOgorICAg
ICAgICBpZiAoc3R5bGUpCisgICAgICAgICAgICBhcHBseUNvbW1hbmQoQXBwbHlTdHlsZUNvbW1h
bmQ6OmNyZWF0ZShtX2ZyYW1lLT5kb2N1bWVudCgpLCBzdHlsZSwgZWRpdGluZ0FjdGlvbikpOwor
ICAgICAgICBicmVhazsKICAgICB9CiB9CiAgICAgCkBAIC03MzksMjAgKzczOSwyMCBAQCBib29s
IEVkaXRvcjo6c2hvdWxkQXBwbHlTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgUmFu
Z2UqIHJhbmdlKQogdm9pZCBFZGl0b3I6OmFwcGx5UGFyYWdyYXBoU3R5bGUoQ1NTU3R5bGVEZWNs
YXJhdGlvbiogc3R5bGUsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbikKIHsKICAgICBzd2l0Y2gg
KG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb25UeXBlKCkpIHsKLSAgICAgICAgY2FzZSBW
aXNpYmxlU2VsZWN0aW9uOjpOb1NlbGVjdGlvbjoKLSAgICAgICAgICAgIC8vIGRvIG5vdGhpbmcK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OkNhcmV0
U2VsZWN0aW9uOgotICAgICAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OlJhbmdlU2VsZWN0aW9u
OgotICAgICAgICAgICAgaWYgKHN0eWxlKQotICAgICAgICAgICAgICAgIGFwcGx5Q29tbWFuZChB
cHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIHN0eWxlLCBlZGl0
aW5nQWN0aW9uLCBBcHBseVN0eWxlQ29tbWFuZDo6Rm9yY2VCbG9ja1Byb3BlcnRpZXMpKTsKLSAg
ICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxlY3Rpb246
CisgICAgICAgIC8vIGRvIG5vdGhpbmcKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaXNpYmxl
U2VsZWN0aW9uOjpDYXJldFNlbGVjdGlvbjoKKyAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OlJh
bmdlU2VsZWN0aW9uOgorICAgICAgICBpZiAoc3R5bGUpCisgICAgICAgICAgICBhcHBseUNvbW1h
bmQoQXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShtX2ZyYW1lLT5kb2N1bWVudCgpLCBzdHlsZSwg
ZWRpdGluZ0FjdGlvbiwgQXBwbHlTdHlsZUNvbW1hbmQ6OkZvcmNlQmxvY2tQcm9wZXJ0aWVzKSk7
CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAogdm9pZCBFZGl0b3I6OmFwcGx5U3R5bGVUb1Nl
bGVjdGlvbihDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0
aW9uKQogewotICAgIGlmICghc3R5bGUgfHwgc3R5bGUtPmxlbmd0aCgpID09IDAgfHwgIWNhbkVk
aXRSaWNobHkoKSkKKyAgICBpZiAoIXN0eWxlIHx8ICFzdHlsZS0+bGVuZ3RoKCkgfHwgIWNhbkVk
aXRSaWNobHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGNsaWVudCgpICYmIGNsaWVu
dCgpLT5zaG91bGRBcHBseVN0eWxlKHN0eWxlLCBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3Jt
YWxpemVkUmFuZ2UoKS5nZXQoKSkpCkBAIC03NjEsNyArNzYxLDcgQEAgdm9pZCBFZGl0b3I6OmFw
cGx5U3R5bGVUb1NlbGVjdGlvbihDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgRWRpdEFjdGlv
biBlZGl0aW4KIAogdm9pZCBFZGl0b3I6OmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihD
U1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKQogewot
ICAgIGlmICghc3R5bGUgfHwgc3R5bGUtPmxlbmd0aCgpID09IDAgfHwgIWNhbkVkaXRSaWNobHko
KSkKKyAgICBpZiAoIXN0eWxlIHx8ICFzdHlsZS0+bGVuZ3RoKCkgfHwgIWNhbkVkaXRSaWNobHko
KSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChjbGllbnQoKSAmJiBjbGllbnQoKS0+
c2hvdWxkQXBwbHlTdHlsZShzdHlsZSwgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXpl
ZFJhbmdlKCkuZ2V0KCkpKQpAQCAtNzg3LDExICs3ODcsMTEgQEAgc3RhdGljIFRyaVN0YXRlIHRy
aVN0YXRlT2ZTdHlsZUluQ29tcHV0ZWRTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBkZXNpcmVk
U3R5bGUKICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGRpZmYgPSBnZXRQ
cm9wZXJ0aWVzTm90SW5Db21wdXRlZFN0eWxlKGRlc2lyZWRTdHlsZSwgY29tcHV0ZWRTdHlsZSk7
CiAKICAgICBpZiAoaWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVzKQotICAgICAgICBkaWZmLT5yZW1v
dmVQcm9wZXJ0aWVzSW5TZXQodGV4dE9ubHlQcm9wZXJ0aWVzLCBzaXplb2YodGV4dE9ubHlQcm9w
ZXJ0aWVzKS9zaXplb2YodGV4dE9ubHlQcm9wZXJ0aWVzWzBdKSk7CisgICAgICAgIGRpZmYtPnJl
bW92ZVByb3BlcnRpZXNJblNldCh0ZXh0T25seVByb3BlcnRpZXMsIHNpemVvZih0ZXh0T25seVBy
b3BlcnRpZXMpIC8gc2l6ZW9mKHRleHRPbmx5UHJvcGVydGllc1swXSkpOwogCiAgICAgaWYgKCFk
aWZmLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKLSAgICBlbHNlIGlm
IChkaWZmLT5sZW5ndGgoKSA9PSBkZXNpcmVkU3R5bGUtPmxlbmd0aCgpKQorICAgIGlmIChkaWZm
LT5sZW5ndGgoKSA9PSBkZXNpcmVkU3R5bGUtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gRmFs
c2VUcmlTdGF0ZTsKICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKIH0KQEAgLTgwNiw3ICs4MDYs
NyBAQCBib29sIEVkaXRvcjo6c2VsZWN0aW9uU3RhcnRIYXNTdHlsZShDU1NTdHlsZURlY2xhcmF0
aW9uKiBzdHlsZSkgY29uc3QKICAgICBpZiAobm9kZVRvUmVtb3ZlKSB7CiAgICAgICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBub2RlVG9SZW1vdmUtPnJlbW92ZShlYyk7Ci0gICAg
ICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgfQogICAgIHJl
dHVybiBzdGF0ZSA9PSBUcnVlVHJpU3RhdGU7CiB9CkBAIC04MjQsNyArODI0LDcgQEAgVHJpU3Rh
dGUgRWRpdG9yOjpzZWxlY3Rpb25IYXNTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkg
Y29uc3QKICAgICAgICAgaWYgKG5vZGVUb1JlbW92ZSkgewogICAgICAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgICAgICAgICBub2RlVG9SZW1vdmUtPnJlbW92ZShlYyk7Ci0gICAg
ICAgICAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgICAgICAgICBBU1NFUlQoIWVjKTsKICAgICAg
ICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGZvciAoTm9kZSogbm9kZSA9IG1fZnJhbWUtPnNl
bGVjdGlvbigpLT5zdGFydCgpLm5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4
dE5vZGUoKSkgewpAQCAtMTA1OSw3ICsxMDU5LDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlKCkKIHsK
ICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgaWYgKHRyeURIVE1MUGFzdGUo
KSkKLSAgICAgICAgcmV0dXJuOyAgICAgLy8gREhUTUwgZGlkIHRoZSB3aG9sZSBvcGVyYXRpb24K
KyAgICAgICAgcmV0dXJuOyAvLyBESFRNTCBkaWQgdGhlIHdob2xlIG9wZXJhdGlvbgogICAgIGlm
ICghY2FuUGFzdGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIERvY0xvYWRlciogbG9hZGVyID0g
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCk7CkBAIC0xNDkxLDcgKzE0OTEsNyBAQCB2
b2lkIEVkaXRvcjo6aWdub3JlU3BlbGxpbmcoKQogICAgICAgICBmcmFtZSgpLT5kb2N1bWVudCgp
LT5yZW1vdmVNYXJrZXJzKHNlbGVjdGVkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVs
bGluZyk7CiAKICAgICBTdHJpbmcgdGV4dCA9IGZyYW1lKCktPnNlbGVjdGVkVGV4dCgpOwotICAg
IEFTU0VSVCh0ZXh0Lmxlbmd0aCgpICE9IDApOworICAgIEFTU0VSVCh0ZXh0Lmxlbmd0aCgpKTsK
ICAgICBjbGllbnQoKS0+aWdub3JlV29yZEluU3BlbGxEb2N1bWVudCh0ZXh0KTsKIH0KIApAQCAt
MTUwNCw3ICsxNTA0LDcgQEAgdm9pZCBFZGl0b3I6OmxlYXJuU3BlbGxpbmcoKQogICAgIC8vIGxl
YXJuZWQgd29yZCwgc2VlIDxyZGFyOi8vcHJvYmxlbS81Mzk2MDcyPi4KIAogICAgIFN0cmluZyB0
ZXh0ID0gZnJhbWUoKS0+c2VsZWN0ZWRUZXh0KCk7Ci0gICAgQVNTRVJUKHRleHQubGVuZ3RoKCkg
IT0gMCk7CisgICAgQVNTRVJUKHRleHQubGVuZ3RoKCkpOwogICAgIGNsaWVudCgpLT5sZWFybldv
cmQodGV4dCk7CiB9CiAKQEAgLTE1MzUsNyArMTUzNSw3IEBAIHN0YXRpYyBTdHJpbmcgZmluZEZp
cnN0TWlzc3BlbGxpbmdJblJhbmdlKEVkaXRvckNsaWVudCogY2xpZW50LCBSYW5nZSogc2VhcmNo
UmFuCiAgICAgICAgICAgICAvLyBtb3JlIHJvYnVzdCBhZ2FpbnN0IGJhZCBpbnB1dCBvbiByZWxl
YXNlIGJ1aWxkcy4KICAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGluZ0xlbmd0aCA+PSAwKTsK
ICAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGluZ0xvY2F0aW9uID49IC0xKTsKLSAgICAgICAg
ICAgIEFTU0VSVChtaXNzcGVsbGluZ0xlbmd0aCA9PSAwIHx8IG1pc3NwZWxsaW5nTG9jYXRpb24g
Pj0gMCk7CisgICAgICAgICAgICBBU1NFUlQoIW1pc3NwZWxsaW5nTGVuZ3RoIHx8IG1pc3NwZWxs
aW5nTG9jYXRpb24gPj0gMCk7CiAgICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxpbmdMb2NhdGlv
biA8IGxlbik7CiAgICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxpbmdMZW5ndGggPD0gbGVuKTsK
ICAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGluZ0xvY2F0aW9uICsgbWlzc3BlbGxpbmdMZW5n
dGggPD0gbGVuKTsKQEAgLTE1NTUsNyArMTU1NSw3IEBAIHN0YXRpYyBTdHJpbmcgZmluZEZpcnN0
TWlzc3BlbGxpbmdJblJhbmdlKEVkaXRvckNsaWVudCogY2xpZW50LCBSYW5nZSogc2VhcmNoUmFu
CiAgICAgICAgICAgICAgICAgLy8gU3RvcmUgbWFya2VyIGZvciBtaXNzcGVsbGVkIHdvcmQuCiAg
ICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgICAgICAgICAgbWlz
c3BlbGxpbmdSYW5nZS0+c3RhcnRDb250YWluZXIoZWMpLT5kb2N1bWVudCgpLT5hZGRNYXJrZXIo
bWlzc3BlbGxpbmdSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nKTsKLSAgICAg
ICAgICAgICAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFlYyk7
CiAKICAgICAgICAgICAgICAgICAvLyBCYWlsIG91dCBpZiB3ZSdyZSBtYXJraW5nIG9ubHkgdGhl
IGZpcnN0IG1pc3NwZWxsaW5nLCBhbmQgbm90IGFsbCBpbnN0YW5jZXMuCiAgICAgICAgICAgICAg
ICAgaWYgKCFtYXJrQWxsKQpAQCAtMTYxOCw3ICsxNjE4LDcgQEAgc3RhdGljIGludCBmaW5kRmly
c3RHcmFtbWFyRGV0YWlsSW5SYW5nZShjb25zdCBWZWN0b3I8R3JhbW1hckRldGFpbD4mIGdyYW1t
YXJEZXQKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gYmFkR3JhbW1hclJhbmdlID0gVGV4dEl0
ZXJhdG9yOjpzdWJyYW5nZShzZWFyY2hSYW5nZSwgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uIC0g
c3RhcnRPZmZzZXQgKyBkZXRhaWwtPmxvY2F0aW9uLCBkZXRhaWwtPmxlbmd0aCk7CiAgICAgICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgICAgIGJhZEdyYW1tYXJSYW5nZS0+
c3RhcnRDb250YWluZXIoZWMpLT5kb2N1bWVudCgpLT5hZGRNYXJrZXIoYmFkR3JhbW1hclJhbmdl
LmdldCgpLCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZGV0YWlsLT51c2VyRGVzY3JpcHRpb24p
OwotICAgICAgICAgICAgQVNTRVJUKGVjID09IDApOworICAgICAgICAgICAgQVNTRVJUKCFlYyk7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIFJlbWVtYmVyIHRoaXMgZGV0YWlsIG9u
bHkgaWYgaXQncyBlYXJsaWVyIHRoYW4gb3VyIGN1cnJlbnQgY2FuZGlkYXRlICh0aGUgZGV0YWls
cyBhcmVuJ3QgaW4gYSBndWFyYW50ZWVkIG9yZGVyKQpAQCAtMTY2NCw3ICsxNjY0LDcgQEAgc3Rh
dGljIFN0cmluZyBmaW5kRmlyc3RCYWRHcmFtbWFySW5SYW5nZShFZGl0b3JDbGllbnQqIGNsaWVu
dCwgUmFuZ2UqIHNlYXJjaFJhbmcKICAgICAgICAgaW50IGJhZEdyYW1tYXJQaHJhc2VMZW5ndGgg
PSAwOwogICAgICAgICBjbGllbnQtPmNoZWNrR3JhbW1hck9mU3RyaW5nKHBhcmFncmFwaFN0cmlu
Zy5jaGFyYWN0ZXJzKCkgKyBzdGFydE9mZnNldCwgcGFyYWdyYXBoU3RyaW5nLmxlbmd0aCgpIC0g
c3RhcnRPZmZzZXQsIGdyYW1tYXJEZXRhaWxzLCAmYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCAm
YmFkR3JhbW1hclBocmFzZUxlbmd0aCk7CiAgICAgICAgIAotICAgICAgICBpZiAoYmFkR3JhbW1h
clBocmFzZUxlbmd0aCA9PSAwKSB7CisgICAgICAgIGlmICghYmFkR3JhbW1hclBocmFzZUxlbmd0
aCkgewogICAgICAgICAgICAgQVNTRVJUKGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9PSAtMSk7
CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIH0KQEAgLTE3NjYsMTMgKzE3
NjYsMTUgQEAgc3RhdGljIFN0cmluZyBmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcklu
UmFuZ2UoRWRpdG9yQ2xpZW50KiBjbGllbnQsIFJhbmcKICAgICAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChyZXN1bHQtPmxlbmd0aCA+IDAgJiYgcmVzdWx0LT5sb2NhdGlvbiA+PSAwKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nTG9jYXRpb24gPSByZXN1bHQtPmxvY2F0aW9u
OwogICAgICAgICAgICAgICAgICAgICAgICAgbWlzc3BlbGxlZFdvcmQgPSBwYXJhZ3JhcGhTdHJp
bmcuc3Vic3RyaW5nKHJlc3VsdC0+bG9jYXRpb24sIHJlc3VsdC0+bGVuZ3RoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGVkV29yZC5sZW5ndGgoKSAhPSAwKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtaXNzcGVsbGVkV29yZC5sZW5ndGgoKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChjaGVja0dyYW1tYXIgJiYgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVHcmFt
bWFyICYmIHJlc3VsdC0+bG9jYXRpb24gPCBjdXJyZW50RW5kT2Zmc2V0ICYmIHJlc3VsdC0+bG9j
YXRpb24gKyByZXN1bHQtPmxlbmd0aCA+IGN1cnJlbnRTdGFydE9mZnNldCkgeworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgcmVz
dWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIHJlc3VsdC0+bG9jYXRpb24g
PCBjdXJyZW50RW5kT2Zmc2V0ICYmIHJlc3VsdC0+bG9jYXRpb24gKyByZXN1bHQtPmxlbmd0aCA+
IGN1cnJlbnRTdGFydE9mZnNldCkgewogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJl
c3VsdC0+bGVuZ3RoID4gMCAmJiByZXN1bHQtPmxvY2F0aW9uID49IDApOwogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gV2UgY2FuJ3Qgc3RvcCBhZnRlciB0aGUgZmlyc3QgZ3JhbW1hciByZXN1
bHQsIHNpbmNlIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIGEgc3BlbGxpbmcgcmVzdWx0IGFmdGVyCiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBpdCBiZWdpbnMgYnV0IGJlZm9yZSB0aGUgZmlyc3Qg
ZGV0YWlsIGluIGl0LCBidXQgd2UgY2FuIHN0b3AgaWYgd2UgZmluZCBhIHNlY29uZCBncmFtbWFy
IHJlc3VsdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZEdyYW1tYXIpIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kR3JhbW1hcikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaiA9IDA7IGogPCByZXN1bHQtPmRldGFpbHMuc2l6ZSgpOyBqKyspIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHcmFtbWFyRGV0YWlsKiBkZXRhaWwgPSAmcmVzdWx0
LT5kZXRhaWxzW2pdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChkZXRhaWwt
Pmxlbmd0aCA+IDAgJiYgZGV0YWlsLT5sb2NhdGlvbiA+PSAwKTsKQEAgLTE3ODYsNyArMTc4OCw3
IEBAIHN0YXRpYyBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXJJblJhbmdl
KEVkaXRvckNsaWVudCogY2xpZW50LCBSYW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z3JhbW1hclBocmFzZUxvY2F0aW9uID0gcmVzdWx0LT5sb2NhdGlvbjsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvdXRHcmFtbWFyRGV0YWlsID0gcmVzdWx0LT5kZXRhaWxzW2dyYW1tYXJE
ZXRhaWxJbmRleF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkR3JhbW1hclBocmFz
ZSA9IHBhcmFncmFwaFN0cmluZy5zdWJzdHJpbmcocmVzdWx0LT5sb2NhdGlvbiwgcmVzdWx0LT5s
ZW5ndGgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChiYWRHcmFtbWFyUGhy
YXNlLmxlbmd0aCgpICE9IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChi
YWRHcmFtbWFyUGhyYXNlLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTE4MDEsNyArMTgwMyw4
IEBAIHN0YXRpYyBTdHJpbmcgZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXJJblJhbmdl
KEVkaXRvckNsaWVudCogY2xpZW50LCBSYW5nCiAgICAgICAgICAgICAgICAgICAgIG91dEZpcnN0
Rm91bmRPZmZzZXQgPSBzcGVsbGluZ09mZnNldDsKICAgICAgICAgICAgICAgICAgICAgZmlyc3RG
b3VuZEl0ZW0gPSBtaXNzcGVsbGVkV29yZDsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGVja0dyYW1tYXIgJiYgIWJhZEdyYW1tYXJQaHJh
c2UuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChj
aGVja0dyYW1tYXIgJiYgIWJhZEdyYW1tYXJQaHJhc2UuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGludCBncmFtbWFyUGhyYXNlT2Zmc2V0ID0gZ3JhbW1hclBocmFzZUxvY2F0aW9u
IC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWZpcnN0SXRl
cmF0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHBhcmFncmFw
aE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFydENvbnRh
aW5lcihlYyktPmRvY3VtZW50KCksIHNlYXJjaFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIHBhcmFn
cmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwpAQCAtMTg2NCw3ICsxODY3LDcgQEAgdm9pZCBF
ZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9u
KQogICAgICAgICAKICAgICAgICAgUG9zaXRpb24gcmFuZ2VDb21wbGlhbnRQb3NpdGlvbiA9IHJh
bmdlQ29tcGxpYW50RXF1aXZhbGVudChwb3NpdGlvbik7CiAgICAgICAgIHNwZWxsaW5nU2VhcmNo
UmFuZ2UtPnNldFN0YXJ0KHJhbmdlQ29tcGxpYW50UG9zaXRpb24ubm9kZSgpLCByYW5nZUNvbXBs
aWFudFBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVjKTsKLSAgICAgICAgc3Rh
cnRlZFdpdGhTZWxlY3Rpb24gPSBmYWxzZTsgICAvLyB3b24ndCBuZWVkIHRvIHdyYXAKKyAgICAg
ICAgc3RhcnRlZFdpdGhTZWxlY3Rpb24gPSBmYWxzZTsgLy8gd29uJ3QgbmVlZCB0byB3cmFwCiAg
ICAgfQogICAgIAogICAgIC8vIHRvcE5vZGUgZGVmaW5lcyB0aGUgd2hvbGUgcmFuZ2Ugd2Ugd2Fu
dCB0byBvcGVyYXRlIG9uIApAQCAtMTg3NiwxMyArMTg3OSwxMyBAQCB2b2lkIEVkaXRvcjo6YWR2
YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgLy8g
YXQgYSB3b3JkIGJvdW5kYXJ5LiBHb2luZyBiYWNrIGJ5IG9uZSBjaGFyIGFuZCB0aGVuIGZvcndh
cmQgYnkgYSB3b3JkIGRvZXMgdGhlIHRyaWNrLgogICAgIGlmIChzdGFydGVkV2l0aFNlbGVjdGlv
bikgewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gb25lQmVmb3JlU3RhcnQgPSBzdGFydFZpc2li
bGVQb3NpdGlvbihzcGVsbGluZ1NlYXJjaFJhbmdlLmdldCgpLCBET1dOU1RSRUFNKS5wcmV2aW91
cygpOwotICAgICAgICBpZiAob25lQmVmb3JlU3RhcnQuaXNOb3ROdWxsKCkpIHsKKyAgICAgICAg
aWYgKG9uZUJlZm9yZVN0YXJ0LmlzTm90TnVsbCgpKQogICAgICAgICAgICAgc2V0U3RhcnQoc3Bl
bGxpbmdTZWFyY2hSYW5nZS5nZXQoKSwgZW5kT2ZXb3JkKG9uZUJlZm9yZVN0YXJ0KSk7Ci0gICAg
ICAgIH0gLy8gZWxzZSB3ZSB3ZXJlIGFscmVhZHkgYXQgdGhlIHN0YXJ0IG9mIHRoZSBlZGl0YWJs
ZSBub2RlCisgICAgICAgIC8vIGVsc2Ugd2Ugd2VyZSBhbHJlYWR5IGF0IHRoZSBzdGFydCBvZiB0
aGUgZWRpdGFibGUgbm9kZQogICAgIH0KICAgICAKICAgICBpZiAoc3BlbGxpbmdTZWFyY2hSYW5n
ZS0+Y29sbGFwc2VkKGVjKSkKLSAgICAgICAgcmV0dXJuOyAgICAgICAvLyBub3RoaW5nIHRvIHNl
YXJjaCBpbgorICAgICAgICByZXR1cm47IC8vIG5vdGhpbmcgdG8gc2VhcmNoIGluCiAgICAgCiAg
ICAgLy8gR2V0IHRoZSBzcGVsbCBjaGVja2VyIGlmIGl0IGlzIGF2YWlsYWJsZQogICAgIGlmICgh
Y2xpZW50KCkpCkBAIC0xODkxLDcgKzE4OTQsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4
dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgLy8gV2UgZ28gdG8g
dGhlIGVuZCBvZiBvdXIgZmlyc3QgcmFuZ2UgaW5zdGVhZCBvZiB0aGUgc3RhcnQgb2YgaXQsIGp1
c3QgdG8gYmUgc3VyZQogICAgIC8vIHdlIGRvbid0IGdldCBmb2lsZWQgYnkgYW55IHdvcmQgYm91
bmRhcnkgcHJvYmxlbXMgYXQgdGhlIHN0YXJ0LiAgSXQgbWVhbnMgd2UgbWlnaHQKICAgICAvLyBk
byBhIHRpbnkgYml0IG1vcmUgc2VhcmNoaW5nLgotICAgIE5vZGUgKnNlYXJjaEVuZE5vZGVBZnRl
cldyYXAgPSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5lbmRDb250YWluZXIoZWMpOworICAgIE5vZGUq
IHNlYXJjaEVuZE5vZGVBZnRlcldyYXAgPSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5lbmRDb250YWlu
ZXIoZWMpOwogICAgIGludCBzZWFyY2hFbmRPZmZzZXRBZnRlcldyYXAgPSBzcGVsbGluZ1NlYXJj
aFJhbmdlLT5lbmRPZmZzZXQoZWMpOwogICAgIAogICAgIGludCBtaXNzcGVsbGluZ09mZnNldCA9
IDA7CkBAIC0yMDA0LDcgKzIwMDcsNyBAQCBib29sIEVkaXRvcjo6aXNTZWxlY3Rpb25NaXNzcGVs
bGVkKCkKIHsKICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZSgpLT5zZWxlY3RlZFRl
eHQoKTsKICAgICBpbnQgbGVuZ3RoID0gc2VsZWN0ZWRTdHJpbmcubGVuZ3RoKCk7Ci0gICAgaWYg
KGxlbmd0aCA9PSAwKQorICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoIWNsaWVudCgpKQpAQCAtMjA1Nyw3ICsyMDYwLDcgQEAgc3RhdGljIGJvb2wgaXNS
YW5nZVVuZ3JhbW1hdGljYWwoRWRpdG9yQ2xpZW50KiBjbGllbnQsIFJhbmdlICpyYW5nZSwgVmVj
dG9yPFN0cmkKICAgICBBU1NFUlQoZ3JhbW1hckRldGFpbC5sb2NhdGlvbiA+PSAwICYmIGdyYW1t
YXJEZXRhaWwubGVuZ3RoID4gMCk7CiAgICAgCiAgICAgLy8gQmFkIGdyYW1tYXIsIGJ1dCBzdGFy
dCBvZiBkZXRhaWwgKGUuZy4gdW5ncmFtbWF0aWNhbCB3b3JkKSBkb2Vzbid0IG1hdGNoIHN0YXJ0
IG9mIHJhbmdlCi0gICAgaWYgKGdyYW1tYXJEZXRhaWwubG9jYXRpb24gKyBncmFtbWFyUGhyYXNl
T2Zmc2V0ICE9IDApCisgICAgaWYgKGdyYW1tYXJEZXRhaWwubG9jYXRpb24gKyBncmFtbWFyUGhy
YXNlT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgLy8gQmFkIGdyYW1t
YXIgYXQgc3RhcnQgb2YgcmFuZ2UsIGJ1dCBlbmQgb2YgYmFkIGdyYW1tYXIgaXMgYmVmb3JlIG9y
IGFmdGVyIGVuZCBvZiByYW5nZQpAQCAtMjA5OSw3ICsyMTAyLDcgQEAgVmVjdG9yPFN0cmluZz4g
RWRpdG9yOjpndWVzc2VzRm9yVW5ncmFtbWF0aWNhbFNlbGVjdGlvbigpCiBWZWN0b3I8U3RyaW5n
PiBFZGl0b3I6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkU2VsZWN0aW9uKCkKIHsKICAgICBTdHJpbmcg
c2VsZWN0ZWRTdHJpbmcgPSBmcmFtZSgpLT5zZWxlY3RlZFRleHQoKTsKLSAgICBBU1NFUlQoc2Vs
ZWN0ZWRTdHJpbmcubGVuZ3RoKCkgIT0gMCk7CisgICAgQVNTRVJUKHNlbGVjdGVkU3RyaW5nLmxl
bmd0aCgpKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNzZXM7CiAgICAgaWYgKGNsaWVudCgp
KQpAQCAtMjEyNCw3ICsyMTI3LDcgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGd1ZXNzZXNGb3JN
aXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UoRWRpdG9yQ2xpZW50KiBjbGkKICAgICBTdHJp
bmcgcGFyYWdyYXBoU3RyaW5nOwogICAgIFJlZlB0cjxSYW5nZT4gcGFyYWdyYXBoUmFuZ2UgPSBw
YXJhZ3JhcGhBbGlnbmVkUmFuZ2VGb3JSYW5nZShyYW5nZSwgcmFuZ2VTdGFydE9mZnNldCwgcGFy
YWdyYXBoU3RyaW5nKTsKICAgICBpbnQgcmFuZ2VMZW5ndGggPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKHJhbmdlKTsKLSAgICBpZiAocmFuZ2VMZW5ndGggPT0gMCB8fCBwYXJhZ3JhcGhTdHJp
bmcubGVuZ3RoKCkgPT0gMCkKKyAgICBpZiAoIXJhbmdlTGVuZ3RoIHx8ICFwYXJhZ3JhcGhTdHJp
bmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBndWVzc2VzOwogCiAgICAgVmVjdG9yPFRleHRD
aGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKQEAgLTIxMzUsNyArMjEzOCw3IEBAIHN0YXRpYyBWZWN0
b3I8U3RyaW5nPiBndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKEVkaXRv
ckNsaWVudCogY2xpCiAgICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCogcmVzdWx0ID0g
JnJlc3VsdHNbaV07CiAgICAgICAgIGlmIChyZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlw
ZVNwZWxsaW5nICYmIHJlc3VsdC0+bG9jYXRpb24gPT0gcmFuZ2VTdGFydE9mZnNldCAmJiByZXN1
bHQtPmxlbmd0aCA9PSByYW5nZUxlbmd0aCkgewogICAgICAgICAgICAgU3RyaW5nIG1pc3NwZWxs
ZWRXb3JkID0gcGFyYWdyYXBoU3RyaW5nLnN1YnN0cmluZyhyYW5nZVN0YXJ0T2Zmc2V0LCByYW5n
ZUxlbmd0aCk7Ci0gICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkgIT0g
MCk7CisgICAgICAgICAgICBBU1NFUlQobWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkpOwogICAgICAg
ICAgICAgY2xpZW50LT5nZXRHdWVzc2VzRm9yV29yZChtaXNzcGVsbGVkV29yZCwgZ3Vlc3Nlcyk7
CiAgICAgICAgICAgICBjbGllbnQtPnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQo
bWlzc3BlbGxlZFdvcmQpOwogICAgICAgICAgICAgbWlzc3BlbGxlZCA9IHRydWU7CkBAIC0yMTU0
LDcgKzIxNTcsNyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZ3Vlc3Nlc0Zvck1pc3NwZWxsZWRP
clVuZ3JhbW1hdGljYWxSYW5nZShFZGl0b3JDbGllbnQqIGNsaQogICAgICAgICAgICAgICAgIEFT
U0VSVChkZXRhaWwtPmxlbmd0aCA+IDAgJiYgZGV0YWlsLT5sb2NhdGlvbiA+PSAwKTsKICAgICAg
ICAgICAgICAgICBpZiAocmVzdWx0LT5sb2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb24gPT0gcmFu
Z2VTdGFydE9mZnNldCAmJiBkZXRhaWwtPmxlbmd0aCA9PSByYW5nZUxlbmd0aCkgewogICAgICAg
ICAgICAgICAgICAgICBTdHJpbmcgYmFkR3JhbW1hclBocmFzZSA9IHBhcmFncmFwaFN0cmluZy5z
dWJzdHJpbmcocmVzdWx0LT5sb2NhdGlvbiwgcmVzdWx0LT5sZW5ndGgpOwotICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoYmFkR3JhbW1hclBocmFzZS5sZW5ndGgoKSAhPSAwKTsKKyAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGJhZEdyYW1tYXJQaHJhc2UubGVuZ3RoKCkpOwogICAgICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgZGV0YWlsLT5ndWVzc2VzLnNpemUo
KTsgaysrKQogICAgICAgICAgICAgICAgICAgICAgICAgZ3Vlc3Nlcy5hcHBlbmQoZGV0YWlsLT5n
dWVzc2VzW2tdKTsKICAgICAgICAgICAgICAgICAgICAgY2xpZW50LT51cGRhdGVTcGVsbGluZ1VJ
V2l0aEdyYW1tYXJTdHJpbmcoYmFkR3JhbW1hclBocmFzZSwgKmRldGFpbCk7CkBAIC0yMjQ0LDcg
KzIyNDcsNyBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Qb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24gJnApCiAgICAgbWFya01pc3NwZWxsaW5ncyhWaXNp
YmxlU2VsZWN0aW9uKHN0YXJ0T2ZXb3JkKHAsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KSwgZW5kT2ZX
b3JkKHAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpLCBtaXNzcGVsbGluZ1JhbmdlKTsKIAogICAg
IC8vIEF1dG9jb3JyZWN0IHRoZSBtaXNzcGVsbGVkIHdvcmQuCi0gICAgaWYgKG1pc3NwZWxsaW5n
UmFuZ2UgPT0gMCkKKyAgICBpZiAoIW1pc3NwZWxsaW5nUmFuZ2UpCiAgICAgICAgIHJldHVybjsK
ICAgICAKICAgICAvLyBHZXQgdGhlIG1pc3NwZWxsZWQgd29yZC4KQEAgLTI0NzYsOCArMjQ3OSw4
IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2Vz
KGJvb2wgbWFya1NwZWxsaW5nLCBSYW5nZSoKICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hclJh
bmdlLT5zdGFydENvbnRhaW5lcihlYyktPmRvY3VtZW50KCktPmFkZE1hcmtlcihiYWRHcmFtbWFy
UmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpHcmFtbWFyLCBkZXRhaWwtPnVzZXJEZXNjcmlw
dGlvbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2Ug
aWYgKHBlcmZvcm1UZXh0Q2hlY2tpbmdSZXBsYWNlbWVudHMgJiYgcmVzdWx0TG9jYXRpb24gKyBy
ZXN1bHRMZW5ndGggPD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCAmJiByZXN1bHRMb2NhdGlvbiAr
IHJlc3VsdExlbmd0aCA+PSBzcGVsbGluZ1JhbmdlU3RhcnRPZmZzZXQgJiYKLSAgICAgICAgICAg
ICAgICAgICAgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlTGluaworICAgICAgICB9
IGVsc2UgaWYgKHBlcmZvcm1UZXh0Q2hlY2tpbmdSZXBsYWNlbWVudHMgJiYgcmVzdWx0TG9jYXRp
b24gKyByZXN1bHRMZW5ndGggPD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCAmJiByZXN1bHRMb2Nh
dGlvbiArIHJlc3VsdExlbmd0aCA+PSBzcGVsbGluZ1JhbmdlU3RhcnRPZmZzZXQKKyAgICAgICAg
ICAgICAgICAgICAgJiYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlTGluawogICAg
ICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZVF1b3Rl
CiAgICAgICAgICAgICAgICAgICAgIHx8IHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBl
RGFzaAogICAgICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5n
VHlwZVJlcGxhY2VtZW50CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFu
ZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggMmU4YjE5Zi4u
ZTdlOGZiZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisr
KyBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFZGl0b3IuaCIKIAogI2luY2x1
ZGUgIkF0b21pY1N0cmluZy5oIgogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5oIgpAQCAtMzUsNyArMzYsNiBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNy
ZWF0ZUxpbmtDb21tYW5kLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2luY2x1
ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgogI2luY2x1ZGUgIkV2ZW50
LmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCkBAIC05OCwxMyArOTgsMTMgQEAgc3RhdGlj
IGJvb2wgYXBwbHlDb21tYW5kVG9GcmFtZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3Vy
Y2Ugc291cmNlLCBFZGl0QWMKIHsKICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgY2FsbCBzaG91bGRB
cHBseVN0eWxlIHdoZW4gdGhlIHNvdXJjZSBpcyBET007IGlzIHRoZXJlIGEgZ29vZCByZWFzb24g
Zm9yIHRoYXQ/CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKLSAgICAgICAgY2FzZSBDb21tYW5kRnJv
bU1lbnVPcktleUJpbmRpbmc6Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5U3R5
bGVUb1NlbGVjdGlvbihzdHlsZSwgYWN0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgotICAgICAgICBjYXNlIENvbW1hbmRGcm9tRE9N
V2l0aFVzZXJJbnRlcmZhY2U6Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5U3R5
bGUoc3R5bGUpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBDb21tYW5kRnJv
bU1lbnVPcktleUJpbmRpbmc6CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZVRv
U2VsZWN0aW9uKHN0eWxlLCBhY3Rpb24pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNl
IENvbW1hbmRGcm9tRE9NOgorICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFj
ZToKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseVN0eWxlKHN0eWxlKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBmYWxzZTsKQEAgLTE0NCwxNSArMTQ0LDE1IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVT
dHlsZUluTGlzdChGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFCiAg
ICAgfSBlbHNlIGlmIChzZWxlY3RlZENTU1ZhbHVlLT5jc3NUZXh0KCkgPT0gIm5vbmUiKQogICAg
ICAgICBuZXdTdHlsZSA9IHZhbHVlLT5jc3NUZXh0KCk7CiAKLSAgICBBU1NFUlQoZWMgPT0gMCk7
CisgICAgQVNTRVJUKCFlYyk7CiAgICAgaWYgKG5vZGVUb1JlbW92ZSkgewogICAgICAgICBub2Rl
VG9SZW1vdmUtPnJlbW92ZShlYyk7Ci0gICAgICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICAgICAg
QVNTRVJUKCFlYyk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBiZSBoYXZp
bmcgdG8gY29udmVydCBuZXcgc3R5bGUgaW50byB0ZXh0LiAgV2Ugc2hvdWxkIGhhdmUgc2V0UHJv
cGVydHlDU1NWYWx1ZS4KICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IG5l
d011dGFibGVTdHlsZSA9IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKLSAg
ICBuZXdNdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIG5ld1N0eWxlLGVjKTsK
KyAgICBuZXdNdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIG5ld1N0eWxlLCBl
Yyk7CiAgICAgcmV0dXJuIGFwcGx5Q29tbWFuZFRvRnJhbWUoZnJhbWUsIHNvdXJjZSwgYWN0aW9u
LCBuZXdNdXRhYmxlU3R5bGUuZ2V0KCkpOwogfQogCkBAIC0xODEsMTMgKzE4MSwxMyBAQCBzdGF0
aWMgYm9vbCBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHlsZShGcmFtZSogZnJhbWUsIEVkaXRvckNv
bW1hbmRTb3VyY2Ugc291cmNlLAogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBw
cm9wZXJ0eVZhbHVlKTsKICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgY2FsbCBzaG91bGRBcHBseVN0
eWxlIHdoZW4gdGhlIHNvdXJjZSBpcyBET007IGlzIHRoZXJlIGEgZ29vZCByZWFzb24gZm9yIHRo
YXQ/CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKLSAgICAgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVP
cktleUJpbmRpbmc6Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5UGFyYWdyYXBo
U3R5bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgYWN0aW9uKTsKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgotICAgICAgICBjYXNlIENvbW1h
bmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PmFwcGx5UGFyYWdyYXBoU3R5bGUoc3R5bGUuZ2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6CisgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+YXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLmdldCgpLCBh
Y3Rpb24pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgor
ICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToKKyAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLmdldCgpKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBm
YWxzZTsKQEAgLTMwNywxNiArMzA3LDE2IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVDdXQoRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiBzdGF0
aWMgYm9vbCBleGVjdXRlRGVsZXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlIHNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewot
ICAgICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKLSAgICAgICAgICAgIC8v
IERvZXNuJ3QgbW9kaWZ5IHRoZSB0ZXh0IGlmIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBpc24ndCBh
IHJhbmdlLgotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5wZXJmb3JtRGVsZXRlKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBDb21tYW5kRnJvbURPTToKLSAg
ICAgICAgY2FzZSBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgotICAgICAgICAgICAg
Ly8gSWYgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlzIGEgY2FyZXQsIGRlbGV0ZSB0aGUgcHJlY2Vk
aW5nIGNoYXJhY3Rlci4gSUUgcGVyZm9ybXMgZm9yd2FyZERlbGV0ZSwgYnV0IHdlIGN1cnJlbnRs
eSBzaWRlIHdpdGggRmlyZWZveC4KLSAgICAgICAgICAgIC8vIERvZXNuJ3Qgc2Nyb2xsIHRvIG1h
a2UgdGhlIHNlbGVjdGlvbiB2aXNpYmxlLCBvciBtb2RpZnkgdGhlIGtpbGwgcmluZyAodGhpcyB0
aW1lLCBzaWRpbmcgd2l0aCBJRSwgbm90IEZpcmVmb3gpLgotICAgICAgICAgICAgVHlwaW5nQ29t
bWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChmcmFtZS0+ZG9jdW1lbnQoKSwgZnJhbWUtPnNlbGVjdGlv
bkdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5KTsKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5nOgorICAgICAgICAvLyBE
b2Vzbid0IG1vZGlmeSB0aGUgdGV4dCBpZiB0aGUgY3VycmVudCBzZWxlY3Rpb24gaXNuJ3QgYSBy
YW5nZS4KKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5wZXJmb3JtRGVsZXRlKCk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGNhc2UgQ29tbWFuZEZyb21ET006CisgICAgY2FzZSBDb21tYW5k
RnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgorICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBzZWxl
Y3Rpb24gaXMgYSBjYXJldCwgZGVsZXRlIHRoZSBwcmVjZWRpbmcgY2hhcmFjdGVyLiBJRSBwZXJm
b3JtcyBmb3J3YXJkRGVsZXRlLCBidXQgd2UgY3VycmVudGx5IHNpZGUgd2l0aCBGaXJlZm94Lgor
ICAgICAgICAvLyBEb2Vzbid0IHNjcm9sbCB0byBtYWtlIHRoZSBzZWxlY3Rpb24gdmlzaWJsZSwg
b3IgbW9kaWZ5IHRoZSBraWxsIHJpbmcgKHRoaXMgdGltZSwgc2lkaW5nIHdpdGggSUUsIG5vdCBG
aXJlZm94KS4KKyAgICAgICAgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChmcmFtZS0+
ZG9jdW1lbnQoKSwgZnJhbWUtPnNlbGVjdGlvbkdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFy
aXR5KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTQzOCwxNiArNDM4LDE2IEBAIHN0YXRpYyBib29s
IGV4ZWN1dGVGb3JtYXRCbG9jayhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QKIHN0YXRpYyBib29sIGV4ZWN1dGVGb3J3YXJkRGVsZXRlKEZyYW1lKiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsK
ICAgICBzd2l0Y2ggKHNvdXJjZSkgewotICAgICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5
QmluZGluZzoKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlv
bihTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFs
c2UsIHRydWUpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGNhc2UgQ29tbWFu
ZEZyb21ET006Ci0gICAgICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToK
LSAgICAgICAgICAgIC8vIERvZXNuJ3Qgc2Nyb2xsIHRvIG1ha2UgdGhlIHNlbGVjdGlvbiB2aXNp
YmxlLCBvciBtb2RpZnkgdGhlIGtpbGwgcmluZy4KLSAgICAgICAgICAgIC8vIEZvcndhcmREZWxl
dGUgaXMgbm90IGltcGxlbWVudGVkIGluIElFIG9yIEZpcmVmb3gsIHNvIHRoaXMgYmVoYXZpb3Ig
aXMgb25seSBuZWVkZWQgZm9yCi0gICAgICAgICAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5
IHdpdGggb3Vyc2VsdmVzLCBhbmQgZm9yIGNvbnNpc3RlbmN5IHdpdGggRGVsZXRlLgotICAgICAg
ICAgICAgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoZnJhbWUtPmRvY3Vt
ZW50KCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBDb21tYW5kRnJvbU1l
bnVPcktleUJpbmRpbmc6CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVj
dGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSwg
ZmFsc2UsIHRydWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIENvbW1hbmRGcm9t
RE9NOgorICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToKKyAgICAgICAg
Ly8gRG9lc24ndCBzY3JvbGwgdG8gbWFrZSB0aGUgc2VsZWN0aW9uIHZpc2libGUsIG9yIG1vZGlm
eSB0aGUga2lsbCByaW5nLgorICAgICAgICAvLyBGb3J3YXJkRGVsZXRlIGlzIG5vdCBpbXBsZW1l
bnRlZCBpbiBJRSBvciBGaXJlZm94LCBzbyB0aGlzIGJlaGF2aW9yIGlzIG9ubHkgbmVlZGVkIGZv
cgorICAgICAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb3Vyc2VsdmVzLCBhbmQg
Zm9yIGNvbnNpc3RlbmN5IHdpdGggRGVsZXRlLgorICAgICAgICBUeXBpbmdDb21tYW5kOjpmb3J3
YXJkRGVsZXRlS2V5UHJlc3NlZChmcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7
CkBAIC00OTQsMTUgKzQ5NCwxNSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0SW1hZ2UoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0CiBzdGF0aWMgYm9v
bCBleGVjdXRlSW5zZXJ0TGluZUJyZWFrKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0
b3JDb21tYW5kU291cmNlIHNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBzd2l0Y2ggKHNv
dXJjZSkgewotICAgICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKLSAgICAg
ICAgICAgIHJldHVybiB0YXJnZXRGcmFtZShmcmFtZSwgZXZlbnQpLT5ldmVudEhhbmRsZXIoKS0+
aGFuZGxlVGV4dElucHV0RXZlbnQoIlxuIiwgZXZlbnQsIHRydWUpOwotICAgICAgICBjYXNlIENv
bW1hbmRGcm9tRE9NOgotICAgICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZh
Y2U6Ci0gICAgICAgICAgICAvLyBEb2Vzbid0IHNjcm9sbCB0byBtYWtlIHRoZSBzZWxlY3Rpb24g
dmlzaWJsZSwgb3IgbW9kaWZ5IHRoZSBraWxsIHJpbmcuCi0gICAgICAgICAgICAvLyBJbnNlcnRM
aW5lQnJlYWsgaXMgbm90IGltcGxlbWVudGVkIGluIElFIG9yIEZpcmVmb3gsIHNvIHRoaXMgYmVo
YXZpb3IgaXMgb25seSBuZWVkZWQgZm9yCi0gICAgICAgICAgICAvLyBiYWNrd2FyZCBjb21wYXRp
YmlsaXR5IHdpdGggb3Vyc2VsdmVzLCBhbmQgZm9yIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgY29t
bWFuZHMuCi0gICAgICAgICAgICBUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWsoZnJhbWUt
PmRvY3VtZW50KCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBDb21tYW5k
RnJvbU1lbnVPcktleUJpbmRpbmc6CisgICAgICAgIHJldHVybiB0YXJnZXRGcmFtZShmcmFtZSwg
ZXZlbnQpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVGV4dElucHV0RXZlbnQoIlxuIiwgZXZlbnQs
IHRydWUpOworICAgIGNhc2UgQ29tbWFuZEZyb21ET006CisgICAgY2FzZSBDb21tYW5kRnJvbURP
TVdpdGhVc2VySW50ZXJmYWNlOgorICAgICAgICAvLyBEb2Vzbid0IHNjcm9sbCB0byBtYWtlIHRo
ZSBzZWxlY3Rpb24gdmlzaWJsZSwgb3IgbW9kaWZ5IHRoZSBraWxsIHJpbmcuCisgICAgICAgIC8v
IEluc2VydExpbmVCcmVhayBpcyBub3QgaW1wbGVtZW50ZWQgaW4gSUUgb3IgRmlyZWZveCwgc28g
dGhpcyBiZWhhdmlvciBpcyBvbmx5IG5lZWRlZCBmb3IKKyAgICAgICAgLy8gYmFja3dhcmQgY29t
cGF0aWJpbGl0eSB3aXRoIG91cnNlbHZlcywgYW5kIGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVy
IGNvbW1hbmRzLgorICAgICAgICBUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWsoZnJhbWUt
PmRvY3VtZW50KCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA3NCwxMyArMTA3NCwxMyBAQCBz
dGF0aWMgYm9vbCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZyhGcmFtZSosIEVkaXRvckNv
bW1hbmRTb3VyY2Ugc291cmNlKQogc3RhdGljIGJvb2wgc3VwcG9ydGVkQ29weUN1dChGcmFtZSog
ZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlKQogewogICAgIHN3aXRjaCAoc291cmNl
KSB7Ci0gICAgICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5nOgotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGNhc2UgQ29tbWFuZEZyb21ET006Ci0gICAgICAgIGNh
c2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZTogewotICAgICAgICAgICAgU2V0dGlu
Z3MqIHNldHRpbmdzID0gZnJhbWUgPyBmcmFtZS0+c2V0dGluZ3MoKSA6IDA7Ci0gICAgICAgICAg
ICByZXR1cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9h
cmQoKTsKLSAgICAgICAgfQorICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5nOgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgorICAgIGNhc2Ug
Q29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZTogeworICAgICAgICBTZXR0aW5ncyogc2V0
dGluZ3MgPSBmcmFtZSA/IGZyYW1lLT5zZXR0aW5ncygpIDogMDsKKyAgICAgICAgcmV0dXJuIHNl
dHRpbmdzICYmIHNldHRpbmdzLT5qYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKCk7CisgICAg
fQogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xMDg5LDEzICsxMDg5LDEzIEBAIHN0YXRpYyBib29sIHN1cHBvcnRlZENvcHlDdXQoRnJhbWUq
IGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSkKIHN0YXRpYyBib29sIHN1cHBvcnRl
ZFBhc3RlKEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UpCiB7CiAgICAg
c3dpdGNoIChzb3VyY2UpIHsKLSAgICAgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRp
bmc6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBDb21tYW5kRnJvbURP
TToKLSAgICAgICAgY2FzZSBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOiB7Ci0gICAg
ICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFtZSA/IGZyYW1lLT5zZXR0aW5ncygpIDog
MDsKLSAgICAgICAgICAgIHJldHVybiBzZXR0aW5ncyAmJiAoc2V0dGluZ3MtPmphdmFTY3JpcHRD
YW5BY2Nlc3NDbGlwYm9hcmQoKSA/IHNldHRpbmdzLT5pc0RPTVBhc3RlQWxsb3dlZCgpIDogMCk7
Ci0gICAgICAgIH0KKyAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBDb21tYW5kRnJvbURPTToKKyAgICBjYXNlIENvbW1h
bmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6IHsKKyAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdz
ID0gZnJhbWUgPyBmcmFtZS0+c2V0dGluZ3MoKSA6IDA7CisgICAgICAgIHJldHVybiBzZXR0aW5n
cyAmJiAoc2V0dGluZ3MtPmphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoKSA/IHNldHRpbmdz
LT5pc0RPTVBhc3RlQWxsb3dlZCgpIDogMCk7CisgICAgfQogICAgIH0KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTU0LDE0ICsxMTU0LDE0IEBAIHN0
YXRpYyBib29sIGVuYWJsZWRDdXQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2UpCiBzdGF0aWMgYm9vbCBlbmFibGVkRGVsZXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2
ZW50LCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkg
ewotICAgICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKLSAgICAgICAgICAg
IC8vICJEZWxldGUiIGZyb20gbWVudSBvbmx5IGFmZmVjdHMgc2VsZWN0ZWQgcmFuZ2UsIGp1c3Qg
bGlrZSBDdXQgYnV0IHdpdGhvdXQgYWZmZWN0aW5nIHBhc3RlYm9hcmQKLSAgICAgICAgICAgIHJl
dHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5j
YW5DdXQoKTsKLSAgICAgICAgY2FzZSBDb21tYW5kRnJvbURPTToKLSAgICAgICAgY2FzZSBDb21t
YW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgotICAgICAgICAgICAgLy8gIkRlbGV0ZSIgZnJv
bSBET00gaXMgbGlrZSBkZWxldGUvYmFja3NwYWNlIGtleXByZXNzLCBhZmZlY3RzIHNlbGVjdGVk
IHJhbmdlIGlmIG5vbi1lbXB0eSwKLSAgICAgICAgICAgIC8vIG90aGVyd2lzZSByZW1vdmVzIGEg
Y2hhcmFjdGVyCi0gICAgICAgICAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25G
b3JDb21tYW5kKGV2ZW50KS5pc0NvbnRlbnRFZGl0YWJsZSgpOworICAgIGNhc2UgQ29tbWFuZEZy
b21NZW51T3JLZXlCaW5kaW5nOgorICAgICAgICAvLyAiRGVsZXRlIiBmcm9tIG1lbnUgb25seSBh
ZmZlY3RzIHNlbGVjdGVkIHJhbmdlLCBqdXN0IGxpa2UgQ3V0IGJ1dCB3aXRob3V0IGFmZmVjdGlu
ZyBwYXN0ZWJvYXJkCisgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MQ3V0
KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5jYW5DdXQoKTsKKyAgICBjYXNlIENvbW1hbmRGcm9tRE9N
OgorICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToKKyAgICAgICAgLy8g
IkRlbGV0ZSIgZnJvbSBET00gaXMgbGlrZSBkZWxldGUvYmFja3NwYWNlIGtleXByZXNzLCBhZmZl
Y3RzIHNlbGVjdGVkIHJhbmdlIGlmIG5vbi1lbXB0eSwKKyAgICAgICAgLy8gb3RoZXJ3aXNlIHJl
bW92ZXMgYSBjaGFyYWN0ZXIKKyAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0
aW9uRm9yQ29tbWFuZChldmVudCkuaXNDb250ZW50RWRpdGFibGUoKTsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMwOSw3ICsxMzA5LDEw
IEBAIHN0YXRpYyBTdHJpbmcgdmFsdWVGb3JlQ29sb3IoRnJhbWUqIGZyYW1lLCBFdmVudCopCiAK
IC8vIE1hcCBvZiBmdW5jdGlvbnMKIAotc3RydWN0IENvbW1hbmRFbnRyeSB7IGNvbnN0IGNoYXIq
IG5hbWU7IEVkaXRvckludGVybmFsQ29tbWFuZCBjb21tYW5kOyB9Oworc3RydWN0IENvbW1hbmRF
bnRyeSB7CisgICAgY29uc3QgY2hhciogbmFtZTsKKyAgICBFZGl0b3JJbnRlcm5hbENvbW1hbmQg
Y29tbWFuZDsKK307CiAKIHN0YXRpYyBjb25zdCBDb21tYW5kTWFwJiBjcmVhdGVDb21tYW5kTWFw
KCkKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNw
cCBiL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAppbmRleCA4YjM4Mjdk
Li44MTZmOTY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxl
ci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0z
Miw4ICszMiw4IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxl
ci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJGb2N1c0NvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKKyNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUg
IkZyYW1lVmlldy5oIgpAQCAtMzMyLDI3ICszMzIsMjcgQEAgVmlzaWJsZVBvc2l0aW9uIFNlbGVj
dGlvbkNvbnRyb2xsZXI6Om1vZGlmeUV4dGVuZGluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFu
dWwKICAgICAvLyBpdCBleHRlbmRzIGZvcndhcmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3Npbmcg
YmxvY2sgaXMgTFRSIGRpcmVjdGlvbiwKICAgICAvLyBidXQgaXQgZXh0ZW5kcyBiYWNrd2FyZCBs
b2dpY2FsbHkgaWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBSVEwgZGlyZWN0aW9uLgogICAgIHN3
aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToK
LSAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKQotICAg
ICAgICAgICAgICAgIHBvcyA9IHBvcy5uZXh0KHRydWUpOyAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBwb3MgPSBwb3MucHJldmlvdXModHJ1ZSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgICAg
ICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUikKLSAgICAgICAgICAg
ICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uKHBvcyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgICAgIGNhc2Ug
TGluZUdyYW51bGFyaXR5OgotICAgICAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAg
ICAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6Ci0gICAgICAgIGNhc2UgTGluZUJvdW5kYXJ5Ogot
ICAgICAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgotICAgICAgICBjYXNlIERvY3VtZW50Qm91
bmRhcnk6Ci0gICAgICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50IGFsbCBvZiB0aGUgYWJvdmU/
Ci0gICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsK
KyAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgICAgICBpZiAoZGlyZWN0aW9uT2ZF
bmNsb3NpbmdCbG9jaygpID09IExUUikKKyAgICAgICAgICAgIHBvcyA9IHBvcy5uZXh0KHRydWUp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBwb3MgPSBwb3MucHJldmlvdXModHJ1ZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorICAgICAgICBpZiAoZGly
ZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUikKKyAgICAgICAgICAgIHBvcyA9IG5leHRX
b3JkUG9zaXRpb24ocG9zKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcG9zID0gcHJldmlv
dXNXb3JkUG9zaXRpb24ocG9zKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTZW50ZW5jZUdy
YW51bGFyaXR5OgorICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgUGFyYWdyYXBo
R3JhbnVsYXJpdHk6CisgICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgTGluZUJv
dW5kYXJ5OgorICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2FzZSBEb2N1bWVudEJv
dW5kYXJ5OgorICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50IGFsbCBvZiB0aGUgYWJvdmU/Cisg
ICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOwogICAgIH0K
ICAgICByZXR1cm4gcG9zOwogfQpAQCAtMzYxLDM5ICszNjEsMzkgQEAgVmlzaWJsZVBvc2l0aW9u
IFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoVGV4dEdyYW51bGFy
aXR5IGdyYW4KIHsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKG1fc2VsZWN0aW9uLmV4dGVudCgp
LCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0g
ICAgICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBwb3MgPSBwb3Mu
bmV4dCh0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdvcmRHcmFudWxh
cml0eToKLSAgICAgICAgICAgIHBvcyA9IG5leHRXb3JkUG9zaXRpb24ocG9zKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgICAgICAg
ICBwb3MgPSBuZXh0U2VudGVuY2VQb3NpdGlvbihwb3MpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgICAgICAgICAgcG9zID0gbmV4dExpbmVQ
b3NpdGlvbihwb3MsIHhQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbihFWFRFTlQpKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAg
ICAgICAgICAgcG9zID0gbmV4dFBhcmFncmFwaFBvc2l0aW9uKHBvcywgeFBvc0ZvclZlcnRpY2Fs
QXJyb3dOYXZpZ2F0aW9uKEVYVEVOVCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgU2VudGVuY2VCb3VuZGFyeToKLSAgICAgICAgICAgIHBvcyA9IGVuZE9mU2VudGVuY2UoZW5k
Rm9yUGxhdGZvcm0oKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBMaW5lQm91
bmRhcnk6Ci0gICAgICAgICAgICBwb3MgPSBlbmRGb3JQbGF0Zm9ybSgpOwotICAgICAgICAgICAg
cG9zLnNldEFmZmluaXR5KFVQU1RSRUFNKTsKLSAgICAgICAgICAgIHBvcyA9IGxvZ2ljYWxFbmRP
ZkxpbmUocG9zKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBhcmFncmFwaEJv
dW5kYXJ5OgotICAgICAgICAgICAgcG9zID0gZW5kT2ZQYXJhZ3JhcGgoZW5kRm9yUGxhdGZvcm0o
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5Ogot
ICAgICAgICAgICAgcG9zID0gZW5kRm9yUGxhdGZvcm0oKTsKLSAgICAgICAgICAgIGlmIChpc0Vk
aXRhYmxlUG9zaXRpb24ocG9zLmRlZXBFcXVpdmFsZW50KCkpKQotICAgICAgICAgICAgICAgIHBv
cyA9IGVuZE9mRWRpdGFibGVDb250ZW50KHBvcyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgcG9zID0gZW5kT2ZEb2N1bWVudChwb3MpOwotICAgICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICAgICAgcG9zID0gcG9zLm5leHQodHJ1
ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorICAgICAgICBw
b3MgPSBuZXh0V29yZFBvc2l0aW9uKHBvcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2Vu
dGVuY2VHcmFudWxhcml0eToKKyAgICAgICAgcG9zID0gbmV4dFNlbnRlbmNlUG9zaXRpb24ocG9z
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAgICAgIHBv
cyA9IG5leHRMaW5lUG9zaXRpb24ocG9zLCB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24o
RVhURU5UKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6
CisgICAgICAgIHBvcyA9IG5leHRQYXJhZ3JhcGhQb3NpdGlvbihwb3MsIHhQb3NGb3JWZXJ0aWNh
bEFycm93TmF2aWdhdGlvbihFWFRFTlQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTZW50
ZW5jZUJvdW5kYXJ5OgorICAgICAgICBwb3MgPSBlbmRPZlNlbnRlbmNlKGVuZEZvclBsYXRmb3Jt
KCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICAgICAgcG9z
ID0gZW5kRm9yUGxhdGZvcm0oKTsKKyAgICAgICAgcG9zLnNldEFmZmluaXR5KFVQU1RSRUFNKTsK
KyAgICAgICAgcG9zID0gbG9naWNhbEVuZE9mTGluZShwb3MpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgorICAgICAgICBwb3MgPSBlbmRPZlBhcmFncmFwaChl
bmRGb3JQbGF0Zm9ybSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEb2N1bWVudEJvdW5k
YXJ5OgorICAgICAgICBwb3MgPSBlbmRGb3JQbGF0Zm9ybSgpOworICAgICAgICBpZiAoaXNFZGl0
YWJsZVBvc2l0aW9uKHBvcy5kZWVwRXF1aXZhbGVudCgpKSkKKyAgICAgICAgICAgIHBvcyA9IGVu
ZE9mRWRpdGFibGVDb250ZW50KHBvcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBvcyA9
IGVuZE9mRG9jdW1lbnQocG9zKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAogICAgIHJl
dHVybiBwb3M7CkBAIC00MDMsMjMgKzQwMywyMyBAQCBWaXNpYmxlUG9zaXRpb24gU2VsZWN0aW9u
Q29udHJvbGxlcjo6bW9kaWZ5TW92aW5nUmlnaHQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaQog
ewogICAgIFZpc2libGVQb3NpdGlvbiBwb3M7CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewot
ICAgICAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgotICAgICAgICAgICAgaWYgKGlzUmFu
Z2UoKSkgCi0gICAgICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9u
LmVuZCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1f
c2VsZWN0aW9uLmFmZmluaXR5KCkpLnJpZ2h0KHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAgICAgICBjYXNlIFNlbnRlbmNlR3JhbnVs
YXJpdHk6Ci0gICAgICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgICAgICBjYXNlIFBhcmFn
cmFwaEdyYW51bGFyaXR5OgotICAgICAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6Ci0gICAgICAg
IGNhc2UgTGluZUJvdW5kYXJ5OgotICAgICAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgotICAg
ICAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6Ci0gICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGFsbCBvZiB0aGUgYWJvdmUuCi0gICAgICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdGb3J3
YXJkKGdyYW51bGFyaXR5KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVy
R3JhbnVsYXJpdHk6CisgICAgICAgIGlmIChpc1JhbmdlKCkpCisgICAgICAgICAgICBwb3MgPSBW
aXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZW5kKCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxl
Y3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLnJpZ2h0KHRydWUpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAgICBjYXNlIFNlbnRlbmNl
R3JhbnVsYXJpdHk6CisgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBQYXJhZ3Jh
cGhHcmFudWxhcml0eToKKyAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBMaW5l
Qm91bmRhcnk6CisgICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIERvY3VtZW50
Qm91bmRhcnk6CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgYWxsIG9mIHRoZSBhYm92ZS4K
KyAgICAgICAgcG9zID0gbW9kaWZ5TW92aW5nRm9yd2FyZChncmFudWxhcml0eSk7CisgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gcG9zOwogfQpAQCAtNDI5LDQ2ICs0MjksNDUgQEAg
VmlzaWJsZVBvc2l0aW9uIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeU1vdmluZ0ZvcndhcmQo
VGV4dEdyYW51bGFyaXR5IGdyYW51bGEKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zOwogICAgIC8v
IEZJWE1FOiBTdGF5IGluIGVkaXRhYmxlIGNvbnRlbnQgZm9yIHRoZSBsZXNzIGNvbW1vbiBncmFu
dWxhcml0aWVzLgogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICAgICAgY2FzZSBDaGFy
YWN0ZXJHcmFudWxhcml0eToKLSAgICAgICAgICAgIGlmIChpc1JhbmdlKCkpIAotICAgICAgICAg
ICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5lbmQoKSwgbV9zZWxlY3Rp
b24uYWZmaW5pdHkoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcG9zID0g
VmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0
eSgpKS5uZXh0KHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV29yZEdy
YW51bGFyaXR5OgotICAgICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbihWaXNpYmxlUG9z
aXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAg
ICAgICAgICBwb3MgPSBuZXh0U2VudGVuY2VQb3NpdGlvbihWaXNpYmxlUG9zaXRpb24obV9zZWxl
Y3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIExpbmVHcmFudWxhcml0eTogewotICAgICAgICAgICAgLy8gZG93
bi1hcnJvd2luZyBmcm9tIGEgcmFuZ2Ugc2VsZWN0aW9uIHRoYXQgZW5kcyBhdCB0aGUgc3RhcnQg
b2YgYSBsaW5lIG5lZWRzCi0gICAgICAgICAgICAvLyB0byBsZWF2ZSB0aGUgc2VsZWN0aW9uIGF0
IHRoYXQgbGluZSBzdGFydCAobm8gbmVlZCB0byBjYWxsIG5leHRMaW5lUG9zaXRpb24hKQotICAg
ICAgICAgICAgcG9zID0gZW5kRm9yUGxhdGZvcm0oKTsKLSAgICAgICAgICAgIGlmICghaXNSYW5n
ZSgpIHx8ICFpc1N0YXJ0T2ZMaW5lKHBvcykpCi0gICAgICAgICAgICAgICAgcG9zID0gbmV4dExp
bmVQb3NpdGlvbihwb3MsIHhQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbihTVEFSVCkpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBQYXJhZ3JhcGhHcmFu
dWxhcml0eToKLSAgICAgICAgICAgIHBvcyA9IG5leHRQYXJhZ3JhcGhQb3NpdGlvbihlbmRGb3JQ
bGF0Zm9ybSgpLCB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oU1RBUlQpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6Ci0gICAgICAgICAg
ICBwb3MgPSBlbmRPZlNlbnRlbmNlKGVuZEZvclBsYXRmb3JtKCkpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTGluZUJvdW5kYXJ5OgotICAgICAgICAgICAgcG9zID0gbG9naWNh
bEVuZE9mTGluZShlbmRGb3JQbGF0Zm9ybSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgotICAgICAgICAgICAgcG9zID0gZW5kT2ZQYXJhZ3Jh
cGgoZW5kRm9yUGxhdGZvcm0oKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBE
b2N1bWVudEJvdW5kYXJ5OgotICAgICAgICAgICAgcG9zID0gZW5kRm9yUGxhdGZvcm0oKTsKLSAg
ICAgICAgICAgIGlmIChpc0VkaXRhYmxlUG9zaXRpb24ocG9zLmRlZXBFcXVpdmFsZW50KCkpKQot
ICAgICAgICAgICAgICAgIHBvcyA9IGVuZE9mRWRpdGFibGVDb250ZW50KHBvcyk7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcG9zID0gZW5kT2ZEb2N1bWVudChwb3MpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKKyAgICBjYXNlIENoYXJhY3RlckdyYW51bGFy
aXR5OgorICAgICAgICBpZiAoaXNSYW5nZSgpKQorICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBv
c2l0aW9uKG1fc2VsZWN0aW9uLmVuZCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4
dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKS5uZXh0KHRydWUpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAgICAgICAgcG9zID0gbmV4dFdvcmRQb3Np
dGlvbihWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFm
ZmluaXR5KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5
OgorICAgICAgICBwb3MgPSBuZXh0U2VudGVuY2VQb3NpdGlvbihWaXNpYmxlUG9zaXRpb24obV9z
ZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6IHsKKyAgICAgICAgLy8gZG93bi1hcnJvd2lu
ZyBmcm9tIGEgcmFuZ2Ugc2VsZWN0aW9uIHRoYXQgZW5kcyBhdCB0aGUgc3RhcnQgb2YgYSBsaW5l
IG5lZWRzCisgICAgICAgIC8vIHRvIGxlYXZlIHRoZSBzZWxlY3Rpb24gYXQgdGhhdCBsaW5lIHN0
YXJ0IChubyBuZWVkIHRvIGNhbGwgbmV4dExpbmVQb3NpdGlvbiEpCisgICAgICAgIHBvcyA9IGVu
ZEZvclBsYXRmb3JtKCk7CisgICAgICAgIGlmICghaXNSYW5nZSgpIHx8ICFpc1N0YXJ0T2ZMaW5l
KHBvcykpCisgICAgICAgICAgICBwb3MgPSBuZXh0TGluZVBvc2l0aW9uKHBvcywgeFBvc0ZvclZl
cnRpY2FsQXJyb3dOYXZpZ2F0aW9uKFNUQVJUKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgICAgICBwb3MgPSBuZXh0UGFyYWdyYXBo
UG9zaXRpb24oZW5kRm9yUGxhdGZvcm0oKSwgeFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9u
KFNUQVJUKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKKyAg
ICAgICAgcG9zID0gZW5kT2ZTZW50ZW5jZShlbmRGb3JQbGF0Zm9ybSgpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAgICAgIHBvcyA9IGxvZ2ljYWxFbmRPZkxp
bmUoZW5kRm9yUGxhdGZvcm0oKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGFyYWdyYXBo
Qm91bmRhcnk6CisgICAgICAgIHBvcyA9IGVuZE9mUGFyYWdyYXBoKGVuZEZvclBsYXRmb3JtKCkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgICAgIHBv
cyA9IGVuZEZvclBsYXRmb3JtKCk7CisgICAgICAgIGlmIChpc0VkaXRhYmxlUG9zaXRpb24ocG9z
LmRlZXBFcXVpdmFsZW50KCkpKQorICAgICAgICAgICAgcG9zID0gZW5kT2ZFZGl0YWJsZUNvbnRl
bnQocG9zKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcG9zID0gZW5kT2ZEb2N1bWVudChw
b3MpOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIHBvczsKIH0KQEAgLTQ4Mywy
NiArNDgyLDI2IEBAIFZpc2libGVQb3NpdGlvbiBTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnlF
eHRlbmRpbmdMZWZ0KFRleHRHcmFudWxhcml0eSBncmFudWxhCiAgICAgLy8gaXQgZXh0ZW5kcyBi
YWNrd2FyZCBsb2dpY2FsbHkgaWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBMVFIgZGlyZWN0aW9u
LAogICAgIC8vIGJ1dCBpdCBleHRlbmRzIGZvcndhcmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3Np
bmcgYmxvY2sgaXMgUlRMIGRpcmVjdGlvbi4KICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0g
ICAgICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBpZiAoZGlyZWN0
aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUikKLSAgICAgICAgICAgICAgICBwb3MgPSBwb3Mu
cHJldmlvdXModHJ1ZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcG9zID0g
cG9zLm5leHQodHJ1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXb3JkR3Jh
bnVsYXJpdHk6Ci0gICAgICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09
IExUUikKLSAgICAgICAgICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBvcyA9IG5leHRXb3JkUG9zaXRpb24o
cG9zKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJp
dHk6Ci0gICAgICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgICAgICBjYXNlIFBhcmFncmFw
aEdyYW51bGFyaXR5OgotICAgICAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6Ci0gICAgICAgIGNh
c2UgTGluZUJvdW5kYXJ5OgotICAgICAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgotICAgICAg
ICBjYXNlIERvY3VtZW50Qm91bmRhcnk6Ci0gICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRp
bmdCYWNrd2FyZChncmFudWxhcml0eSk7CisgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToK
KyAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpCisgICAgICAg
ICAgICBwb3MgPSBwb3MucHJldmlvdXModHJ1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHBvcyA9IHBvcy5uZXh0KHRydWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdvcmRHcmFu
dWxhcml0eToKKyAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIp
CisgICAgICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uKHBvcyk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNlIExpbmVHcmFudWxh
cml0eToKKyAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgU2VudGVuY2VC
b3VuZGFyeToKKyAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBjYXNlIFBhcmFncmFwaEJvdW5k
YXJ5OgorICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICAgICAgcG9zID0gbW9kaWZ5RXh0
ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwogICAgIH0KICAgICByZXR1cm4gcG9zOwogfQpA
QCAtNTE2LDM3ICs1MTUsMzcgQEAgVmlzaWJsZVBvc2l0aW9uIFNlbGVjdGlvbkNvbnRyb2xsZXI6
Om1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKFRleHRHcmFudWxhcml0eSBncmEKICAgICAvLyBJdCB3
YXMgZG9uZSBoZXJlIGluc3RlYWQgb2YgaW4gVmlzaWJsZVBvc2l0aW9uIGJlY2F1c2Ugd2Ugd2Fu
dCBWUHMgdG8gaXRlcmF0ZQogICAgIC8vIG92ZXIgZXZlcnl0aGluZy4KICAgICBzd2l0Y2ggKGdy
YW51bGFyaXR5KSB7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6Ci0gICAgICAg
ICAgICBwb3MgPSBwb3MucHJldmlvdXModHJ1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQ
b3NpdGlvbihwb3MpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2VudGVuY2VH
cmFudWxhcml0eToKLSAgICAgICAgICAgIHBvcyA9IHByZXZpb3VzU2VudGVuY2VQb3NpdGlvbihw
b3MpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTGluZUdyYW51bGFyaXR5Ogot
ICAgICAgICAgICAgcG9zID0gcHJldmlvdXNMaW5lUG9zaXRpb24ocG9zLCB4UG9zRm9yVmVydGlj
YWxBcnJvd05hdmlnYXRpb24oRVhURU5UKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICAgICAgICAgIHBvcyA9IHByZXZpb3VzUGFy
YWdyYXBoUG9zaXRpb24ocG9zLCB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oRVhURU5U
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5Ogot
ICAgICAgICAgICAgcG9zID0gc3RhcnRPZlNlbnRlbmNlKHN0YXJ0Rm9yUGxhdGZvcm0oKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBMaW5lQm91bmRhcnk6Ci0gICAgICAgICAg
ICBwb3MgPSBsb2dpY2FsU3RhcnRPZkxpbmUoc3RhcnRGb3JQbGF0Zm9ybSgpKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgotICAgICAgICAgICAg
cG9zID0gc3RhcnRPZlBhcmFncmFwaChzdGFydEZvclBsYXRmb3JtKCkpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKLSAgICAgICAgICAgIHBvcyA9
IHN0YXJ0Rm9yUGxhdGZvcm0oKTsKLSAgICAgICAgICAgIGlmIChpc0VkaXRhYmxlUG9zaXRpb24o
cG9zLmRlZXBFcXVpdmFsZW50KCkpKQotICAgICAgICAgICAgICAgIHBvcyA9IHN0YXJ0T2ZFZGl0
YWJsZUNvbnRlbnQocG9zKTsKLSAgICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICAgICAgcG9z
ID0gc3RhcnRPZkRvY3VtZW50KHBvcyk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIENo
YXJhY3RlckdyYW51bGFyaXR5OgorICAgICAgICBwb3MgPSBwb3MucHJldmlvdXModHJ1ZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorICAgICAgICBwb3MgPSBw
cmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNlbnRl
bmNlR3JhbnVsYXJpdHk6CisgICAgICAgIHBvcyA9IHByZXZpb3VzU2VudGVuY2VQb3NpdGlvbihw
b3MpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpbmVHcmFudWxhcml0eToKKyAgICAgICAg
cG9zID0gcHJldmlvdXNMaW5lUG9zaXRpb24ocG9zLCB4UG9zRm9yVmVydGljYWxBcnJvd05hdmln
YXRpb24oRVhURU5UKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVs
YXJpdHk6CisgICAgICAgIHBvcyA9IHByZXZpb3VzUGFyYWdyYXBoUG9zaXRpb24ocG9zLCB4UG9z
Rm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oRVhURU5UKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgU2VudGVuY2VCb3VuZGFyeToKKyAgICAgICAgcG9zID0gc3RhcnRPZlNlbnRlbmNlKHN0
YXJ0Rm9yUGxhdGZvcm0oKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGluZUJvdW5kYXJ5
OgorICAgICAgICBwb3MgPSBsb2dpY2FsU3RhcnRPZkxpbmUoc3RhcnRGb3JQbGF0Zm9ybSgpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICAgICAgcG9z
ID0gc3RhcnRPZlBhcmFncmFwaChzdGFydEZvclBsYXRmb3JtKCkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgICAgIHBvcyA9IHN0YXJ0Rm9yUGxhdGZv
cm0oKTsKKyAgICAgICAgaWYgKGlzRWRpdGFibGVQb3NpdGlvbihwb3MuZGVlcEVxdWl2YWxlbnQo
KSkpCisgICAgICAgICAgICBwb3MgPSBzdGFydE9mRWRpdGFibGVDb250ZW50KHBvcyk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHBvcyA9IHN0YXJ0T2ZEb2N1bWVudChwb3MpOworICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIHBvczsKIH0KQEAgLTU1NSwyMyArNTU0LDIzIEBA
IFZpc2libGVQb3NpdGlvbiBTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnlNb3ZpbmdMZWZ0KFRl
eHRHcmFudWxhcml0eSBncmFudWxhcml0CiB7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAg
ICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJp
dHk6Ci0gICAgICAgICAgICBpZiAoaXNSYW5nZSgpKSAKLSAgICAgICAgICAgICAgICBwb3MgPSBW
aXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uc3RhcnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHko
KSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0
aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKS5sZWZ0KHRy
dWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV29yZEdyYW51bGFyaXR5Ogot
ICAgICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgICAgIGNhc2UgTGluZUdyYW51
bGFyaXR5OgotICAgICAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAgICAgICBjYXNl
IFNlbnRlbmNlQm91bmRhcnk6Ci0gICAgICAgIGNhc2UgTGluZUJvdW5kYXJ5OgotICAgICAgICBj
YXNlIFBhcmFncmFwaEJvdW5kYXJ5OgotICAgICAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbCBvZiB0aGUgYWJvdmUuCi0gICAgICAg
ICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdCYWNrd2FyZChncmFudWxhcml0eSk7Ci0gICAgICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgICAgICBpZiAoaXNS
YW5nZSgpKQorICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLnN0
YXJ0KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9u
LmFmZmluaXR5KCkpLmxlZnQodHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV29yZEdy
YW51bGFyaXR5OgorICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNlIExpbmVH
cmFudWxhcml0eToKKyAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgU2Vu
dGVuY2VCb3VuZGFyeToKKyAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBjYXNlIFBhcmFncmFw
aEJvdW5kYXJ5OgorICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudCBhbGwgb2YgdGhlIGFib3ZlLgorICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdC
YWNrd2FyZChncmFudWxhcml0eSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4g
cG9zOwogfQpAQCAtNTgwLDQwICs1NzksNDAgQEAgVmlzaWJsZVBvc2l0aW9uIFNlbGVjdGlvbkNv
bnRyb2xsZXI6Om1vZGlmeU1vdmluZ0JhY2t3YXJkKFRleHRHcmFudWxhcml0eSBncmFudWwKIHsK
ICAgICBWaXNpYmxlUG9zaXRpb24gcG9zOwogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAg
ICAgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKLSAgICAgICAgICAgIGlmIChpc1Jhbmdl
KCkpIAotICAgICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5z
dGFydCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1f
c2VsZWN0aW9uLmFmZmluaXR5KCkpLnByZXZpb3VzKHRydWUpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAgICAgICAgICAgcG9zID0gcHJldmlv
dXNXb3JkUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3Nl
bGVjdGlvbi5hZmZpbml0eSgpKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBT
ZW50ZW5jZUdyYW51bGFyaXR5OgotICAgICAgICAgICAgcG9zID0gcHJldmlvdXNTZW50ZW5jZVBv
c2l0aW9uKFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24u
YWZmaW5pdHkoKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTGluZUdyYW51
bGFyaXR5OgotICAgICAgICAgICAgcG9zID0gcHJldmlvdXNMaW5lUG9zaXRpb24oc3RhcnRGb3JQ
bGF0Zm9ybSgpLCB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oU1RBUlQpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAgICAg
ICAgICAgcG9zID0gcHJldmlvdXNQYXJhZ3JhcGhQb3NpdGlvbihzdGFydEZvclBsYXRmb3JtKCks
IHhQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbihTVEFSVCkpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKLSAgICAgICAgICAgIHBvcyA9IHN0
YXJ0T2ZTZW50ZW5jZShzdGFydEZvclBsYXRmb3JtKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgTGluZUJvdW5kYXJ5OgotICAgICAgICAgICAgcG9zID0gbG9naWNhbFN0YXJ0
T2ZMaW5lKHN0YXJ0Rm9yUGxhdGZvcm0oKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICAgICAgICAgIHBvcyA9IHN0YXJ0T2ZQYXJhZ3Jh
cGgoc3RhcnRGb3JQbGF0Zm9ybSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IERvY3VtZW50Qm91bmRhcnk6Ci0gICAgICAgICAgICBwb3MgPSBzdGFydEZvclBsYXRmb3JtKCk7
Ci0gICAgICAgICAgICBpZiAoaXNFZGl0YWJsZVBvc2l0aW9uKHBvcy5kZWVwRXF1aXZhbGVudCgp
KSkKLSAgICAgICAgICAgICAgICBwb3MgPSBzdGFydE9mRWRpdGFibGVDb250ZW50KHBvcyk7Ci0g
ICAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgICAgIHBvcyA9IHN0YXJ0T2ZEb2N1bWVudChw
b3MpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToK
KyAgICAgICAgaWYgKGlzUmFuZ2UoKSkKKyAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlv
bihtX3NlbGVjdGlvbi5zdGFydCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVu
dCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKS5wcmV2aW91cyh0cnVlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgICAgIHBvcyA9IHByZXZpb3VzV29y
ZFBvc2l0aW9uKFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rp
b24uYWZmaW5pdHkoKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNlbnRlbmNlR3JhbnVs
YXJpdHk6CisgICAgICAgIHBvcyA9IHByZXZpb3VzU2VudGVuY2VQb3NpdGlvbihWaXNpYmxlUG9z
aXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAgICAgIHBvcyA9IHBy
ZXZpb3VzTGluZVBvc2l0aW9uKHN0YXJ0Rm9yUGxhdGZvcm0oKSwgeFBvc0ZvclZlcnRpY2FsQXJy
b3dOYXZpZ2F0aW9uKFNUQVJUKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGFyYWdyYXBo
R3JhbnVsYXJpdHk6CisgICAgICAgIHBvcyA9IHByZXZpb3VzUGFyYWdyYXBoUG9zaXRpb24oc3Rh
cnRGb3JQbGF0Zm9ybSgpLCB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oU1RBUlQpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgorICAgICAgICBwb3Mg
PSBzdGFydE9mU2VudGVuY2Uoc3RhcnRGb3JQbGF0Zm9ybSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAgICAgIHBvcyA9IGxvZ2ljYWxTdGFydE9mTGluZShz
dGFydEZvclBsYXRmb3JtKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBhcmFncmFwaEJv
dW5kYXJ5OgorICAgICAgICBwb3MgPSBzdGFydE9mUGFyYWdyYXBoKHN0YXJ0Rm9yUGxhdGZvcm0o
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICAgICAg
cG9zID0gc3RhcnRGb3JQbGF0Zm9ybSgpOworICAgICAgICBpZiAoaXNFZGl0YWJsZVBvc2l0aW9u
KHBvcy5kZWVwRXF1aXZhbGVudCgpKSkKKyAgICAgICAgICAgIHBvcyA9IHN0YXJ0T2ZFZGl0YWJs
ZUNvbnRlbnQocG9zKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcG9zID0gc3RhcnRPZkRv
Y3VtZW50KHBvcyk7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gcG9zOwogfQpA
QCAtNjQ2LDMwICs2NDUsMzAgQEAgYm9vbCBTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnkoRUFs
dGVyYXRpb24gYWx0ZXIsIEVEaXJlY3Rpb24gZGlyZWN0aW9uLCBUZXh0R3IKIAogICAgIFZpc2li
bGVQb3NpdGlvbiBwb3NpdGlvbjsKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBj
YXNlIFJJR0hUOgotICAgICAgICAgICAgaWYgKGFsdGVyID09IE1PVkUpCi0gICAgICAgICAgICAg
ICAgcG9zaXRpb24gPSBtb2RpZnlNb3ZpbmdSaWdodChncmFudWxhcml0eSk7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlFeHRlbmRpbmdSaWdodChn
cmFudWxhcml0eSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGT1JXQVJEOgot
ICAgICAgICAgICAgaWYgKGFsdGVyID09IEVYVEVORCkKLSAgICAgICAgICAgICAgICBwb3NpdGlv
biA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92aW5nRm9yd2FyZChncmFudWxh
cml0eSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBMRUZUOgotICAgICAgICAg
ICAgaWYgKGFsdGVyID09IE1PVkUpCi0gICAgICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlN
b3ZpbmdMZWZ0KGdyYW51bGFyaXR5KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBwb3NpdGlvbiA9IG1vZGlmeUV4dGVuZGluZ0xlZnQoZ3JhbnVsYXJpdHkpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQkFDS1dBUkQ6Ci0gICAgICAgICAgICBpZiAoYWx0ZXIg
PT0gRVhURU5EKQotICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nQmFj
a3dhcmQoZ3JhbnVsYXJpdHkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBv
c2l0aW9uID0gbW9kaWZ5TW92aW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwotICAgICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBSSUdIVDoKKyAgICAgICAgaWYgKGFsdGVyID09IE1PVkUpCisgICAg
ICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ1JpZ2h0KGdyYW51bGFyaXR5KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlFeHRlbmRpbmdSaWdodChncmFu
dWxhcml0eSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRk9SV0FSRDoKKyAgICAgICAgaWYg
KGFsdGVyID09IEVYVEVORCkKKyAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5n
Rm9yd2FyZChncmFudWxhcml0eSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBvc2l0aW9u
ID0gbW9kaWZ5TW92aW5nRm9yd2FyZChncmFudWxhcml0eSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgTEVGVDoKKyAgICAgICAgaWYgKGFsdGVyID09IE1PVkUpCisgICAgICAgICAgICBwb3Np
dGlvbiA9IG1vZGlmeU1vdmluZ0xlZnQoZ3JhbnVsYXJpdHkpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeUV4dGVuZGluZ0xlZnQoZ3JhbnVsYXJpdHkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEJBQ0tXQVJEOgorICAgICAgICBpZiAoYWx0ZXIgPT0gRVhU
RU5EKQorICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFu
dWxhcml0eSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92
aW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOworICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBp
ZiAocG9zaXRpb24uaXNOdWxsKCkpCkBAIC02ODIsMjAgKzY4MSwyMCBAQCBib29sIFNlbGVjdGlv
bkNvbnRyb2xsZXI6Om1vZGlmeShFQWx0ZXJhdGlvbiBhbHRlciwgRURpcmVjdGlvbiBkaXJlY3Rp
b24sIFRleHRHcgogICAgIGludCB4ID0geFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKFNU
QVJUKTsKIAogICAgIHN3aXRjaCAoYWx0ZXIpIHsKLSAgICAgICAgY2FzZSBNT1ZFOgotICAgICAg
ICAgICAgbW92ZVRvKHBvc2l0aW9uLCB1c2VyVHJpZ2dlcmVkKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIEVYVEVORDoKLSAgICAgICAgICAgIGlmICghc2V0dGluZ3MgfHwgc2V0
dGluZ3MtPmVkaXRpbmdCZWhhdmlvcigpICE9IEVkaXRpbmdNYWNCZWhhdmlvciB8fCBtX3NlbGVj
dGlvbi5pc0NhcmV0KCkgfHwgIWlzQm91bmRhcnkoZ3JhbnVsYXJpdHkpKQotICAgICAgICAgICAg
ICAgIHNldEV4dGVudChwb3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7Ci0gICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICAvLyBTdGFuZGFyZCBNYWMgYmVoYXZpb3Igd2hlbiBleHRlbmRp
bmcgdG8gYSBib3VuZGFyeSBpcyBncm93IHRoZSBzZWxlY3Rpb24gcmF0aGVyCi0gICAgICAgICAg
ICAgICAgLy8gdGhhbiBsZWF2aW5nIHRoZSBiYXNlIGluIHBsYWNlIGFuZCBtb3ZpbmcgdGhlIGV4
dGVudC4gTWF0Y2hlcyBOU1RleHRWaWV3LgotICAgICAgICAgICAgICAgIGlmIChkaXJlY3Rpb24g
PT0gRk9SV0FSRCB8fCBkaXJlY3Rpb24gPT0gUklHSFQpCi0gICAgICAgICAgICAgICAgICAgIHNl
dEVuZChwb3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBzZXRTdGFydChwb3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7Ci0gICAg
ICAgICAgICB9CisgICAgY2FzZSBNT1ZFOgorICAgICAgICBtb3ZlVG8ocG9zaXRpb24sIHVzZXJU
cmlnZ2VyZWQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVYVEVORDoKKyAgICAgICAgaWYg
KCFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+ZWRpdGluZ0JlaGF2aW9yKCkgIT0gRWRpdGluZ01hY0Jl
aGF2aW9yIHx8IG1fc2VsZWN0aW9uLmlzQ2FyZXQoKSB8fCAhaXNCb3VuZGFyeShncmFudWxhcml0
eSkpCisgICAgICAgICAgICBzZXRFeHRlbnQocG9zaXRpb24sIHVzZXJUcmlnZ2VyZWQpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIFN0YW5kYXJkIE1hYyBiZWhhdmlvciB3aGVuIGV4
dGVuZGluZyB0byBhIGJvdW5kYXJ5IGlzIGdyb3cgdGhlIHNlbGVjdGlvbiByYXRoZXIKKyAgICAg
ICAgICAgIC8vIHRoYW4gbGVhdmluZyB0aGUgYmFzZSBpbiBwbGFjZSBhbmQgbW92aW5nIHRoZSBl
eHRlbnQuIE1hdGNoZXMgTlNUZXh0Vmlldy4KKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0g
Rk9SV0FSRCB8fCBkaXJlY3Rpb24gPT0gUklHSFQpCisgICAgICAgICAgICAgICAgc2V0RW5kKHBv
c2l0aW9uLCB1c2VyVHJpZ2dlcmVkKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBzZXRTdGFydChwb3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7CisgICAgICAgIH0KICAgICB9CiAg
ICAgCiAgICAgaWYgKGdyYW51bGFyaXR5ID09IExpbmVHcmFudWxhcml0eSB8fCBncmFudWxhcml0
eSA9PSBQYXJhZ3JhcGhHcmFudWxhcml0eSkKQEAgLTcyNCw3ICs3MjMsNyBAQCBzdGF0aWMgYm9v
bCBhYnNvbHV0ZUNhcmV0WShjb25zdCBWaXNpYmxlUG9zaXRpb24gJmMsIGludCAmeSkKIAogYm9v
bCBTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0ZXIsIGludCB2ZXJ0
aWNhbERpc3RhbmNlLCBib29sIHVzZXJUcmlnZ2VyZWQsIEN1cnNvckFsaWduT25TY3JvbGwgYWxp
Z24pCiB7Ci0gICAgaWYgKHZlcnRpY2FsRGlzdGFuY2UgPT0gMCkKKyAgICBpZiAoIXZlcnRpY2Fs
RGlzdGFuY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICh1c2VyVHJpZ2dlcmVk
KSB7CkBAIC03NDcsMTYgKzc0NiwxNiBAQCBib29sIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlm
eShFQWx0ZXJhdGlvbiBhbHRlciwgaW50IHZlcnRpY2FsRGlzdGFuY2UsIGJvb2wgdQogICAgIFZp
c2libGVQb3NpdGlvbiBwb3M7CiAgICAgaW50IHhQb3MgPSAwOwogICAgIHN3aXRjaCAoYWx0ZXIp
IHsKLSAgICAgICAgY2FzZSBNT1ZFOgotICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9u
KHVwID8gbV9zZWxlY3Rpb24uc3RhcnQoKSA6IG1fc2VsZWN0aW9uLmVuZCgpLCBtX3NlbGVjdGlv
bi5hZmZpbml0eSgpKTsKLSAgICAgICAgICAgIHhQb3MgPSB4UG9zRm9yVmVydGljYWxBcnJvd05h
dmlnYXRpb24odXAgPyBTVEFSVCA6IEVORCk7Ci0gICAgICAgICAgICBtX3NlbGVjdGlvbi5zZXRB
ZmZpbml0eSh1cCA/IFVQU1RSRUFNIDogRE9XTlNUUkVBTSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBFWFRFTkQ6Ci0gICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24o
bV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwotICAgICAgICAg
ICAgeFBvcyA9IHhQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbihFWFRFTlQpOwotICAgICAg
ICAgICAgbV9zZWxlY3Rpb24uc2V0QWZmaW5pdHkoRE9XTlNUUkVBTSk7Ci0gICAgICAgICAgICBi
cmVhazsKKyAgICBjYXNlIE1PVkU6CisgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbih1cCA/
IG1fc2VsZWN0aW9uLnN0YXJ0KCkgOiBtX3NlbGVjdGlvbi5lbmQoKSwgbV9zZWxlY3Rpb24uYWZm
aW5pdHkoKSk7CisgICAgICAgIHhQb3MgPSB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24o
dXAgPyBTVEFSVCA6IEVORCk7CisgICAgICAgIG1fc2VsZWN0aW9uLnNldEFmZmluaXR5KHVwID8g
VVBTVFJFQU0gOiBET1dOU1RSRUFNKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFWFRFTkQ6
CisgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9z
ZWxlY3Rpb24uYWZmaW5pdHkoKSk7CisgICAgICAgIHhQb3MgPSB4UG9zRm9yVmVydGljYWxBcnJv
d05hdmlnYXRpb24oRVhURU5UKTsKKyAgICAgICAgbV9zZWxlY3Rpb24uc2V0QWZmaW5pdHkoRE9X
TlNUUkVBTSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGludCBzdGFydFk7CkBAIC03
ODksMTIgKzc4OCwxMiBAQCBib29sIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeShFQWx0ZXJh
dGlvbiBhbHRlciwgaW50IHZlcnRpY2FsRGlzdGFuY2UsIGJvb2wgdQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBzd2l0Y2ggKGFsdGVyKSB7Ci0gICAgICAgIGNhc2UgTU9WRToKLSAgICAg
ICAgICAgIG1vdmVUbyhyZXN1bHQsIHVzZXJUcmlnZ2VyZWQsIGFsaWduKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEVYVEVORDoKLSAgICAgICAgICAgIHNldEV4dGVudChyZXN1
bHQsIHVzZXJUcmlnZ2VyZWQpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNT1ZFOgor
ICAgICAgICBtb3ZlVG8ocmVzdWx0LCB1c2VyVHJpZ2dlcmVkLCBhbGlnbik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRVhURU5EOgorICAgICAgICBzZXRFeHRlbnQocmVzdWx0LCB1c2VyVHJp
Z2dlcmVkKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKHVzZXJUcmlnZ2VyZWQp
CkBAIC04MTQsMjEgKzgxMywyMSBAQCBpbnQgU2VsZWN0aW9uQ29udHJvbGxlcjo6eFBvc0ZvclZl
cnRpY2FsQXJyb3dOYXZpZ2F0aW9uKEVQb3NpdGlvblR5cGUgdHlwZSkKIAogICAgIFBvc2l0aW9u
IHBvczsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBTVEFSVDoKLSAgICAgICAg
ICAgIHBvcyA9IG1fc2VsZWN0aW9uLnN0YXJ0KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBFTkQ6Ci0gICAgICAgICAgICBwb3MgPSBtX3NlbGVjdGlvbi5lbmQoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJBU0U6Ci0gICAgICAgICAgICBwb3MgPSBtX3Nl
bGVjdGlvbi5iYXNlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFWFRFTlQ6
Ci0gICAgICAgICAgICBwb3MgPSBtX3NlbGVjdGlvbi5leHRlbnQoKTsKLSAgICAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgU1RBUlQ6CisgICAgICAgIHBvcyA9IG1fc2VsZWN0aW9uLnN0YXJ0KCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRU5EOgorICAgICAgICBwb3MgPSBtX3NlbGVjdGlv
bi5lbmQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCQVNFOgorICAgICAgICBwb3MgPSBt
X3NlbGVjdGlvbi5iYXNlKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRVhURU5UOgorICAg
ICAgICBwb3MgPSBtX3NlbGVjdGlvbi5leHRlbnQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQog
Ci0gICAgRnJhbWUgKmZyYW1lID0gcG9zLm5vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAg
ICBGcmFtZSogZnJhbWUgPSBwb3Mubm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOwogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybiB4OwogICAgICAgICAKQEAgLTgzOCw4ICs4MzcsNyBA
QCBpbnQgU2VsZWN0aW9uQ29udHJvbGxlcjo6eFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9u
KEVQb3NpdGlvblR5cGUgdHlwZSkKICAgICAgICAgLy8gYWZ0ZXIgdGhlIHNlbGVjdGlvbiBpcyBj
cmVhdGVkIGFuZCBiZWZvcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuCiAgICAgICAgIHggPSB2
aXNpYmxlUG9zaXRpb24uaXNOb3ROdWxsKCkgPyB2aXNpYmxlUG9zaXRpb24ueE9mZnNldEZvclZl
cnRpY2FsTmF2aWdhdGlvbigpIDogMDsKICAgICAgICAgbV94UG9zRm9yVmVydGljYWxBcnJvd05h
dmlnYXRpb24gPSB4OwotICAgIH0KLSAgICBlbHNlCisgICAgfSBlbHNlCiAgICAgICAgIHggPSBt
X3hQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbjsKICAgICAgICAgCiAgICAgcmV0dXJuIHg7
CkBAIC0xMTA2LDEyICsxMTA0LDExIEBAIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6cGFpbnRD
YXJldChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGludCB0eCwgaW50IHR5LCBjCiB2b2lkIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OmRlYnVnUmVuZGVyZXIoUmVuZGVyT2JqZWN0ICpyLCBib29sIHNl
bGVjdGVkKSBjb25zdAogewogICAgIGlmIChyLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSkgewot
ICAgICAgICBFbGVtZW50ICplbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCAqPihyLT5ub2Rl
KCkpOworICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCAqPihy
LT5ub2RlKCkpOwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzJXNcbiIsIHNlbGVjdGVkID8g
Ij09PiAiIDogIiAgICAiLCBlbGVtZW50LT5sb2NhbE5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoci0+aXNUZXh0KCkpIHsKKyAgICB9IGVsc2UgaWYg
KHItPmlzVGV4dCgpKSB7CiAgICAgICAgIFJlbmRlclRleHQqIHRleHRSZW5kZXJlciA9IHRvUmVu
ZGVyVGV4dChyKTsKLSAgICAgICAgaWYgKHRleHRSZW5kZXJlci0+dGV4dExlbmd0aCgpID09IDAg
fHwgIXRleHRSZW5kZXJlci0+Zmlyc3RUZXh0Qm94KCkpIHsKKyAgICAgICAgaWYgKCF0ZXh0UmVu
ZGVyZXItPnRleHRMZW5ndGgoKSB8fCAhdGV4dFJlbmRlcmVyLT5maXJzdFRleHRCb3goKSkgewog
ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyN0ZXh0IChlbXB0eSlcbiIsIHNlbGVjdGVk
ID8gIj09PiAiIDogIiAgICAiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
MTEyNyw3ICsxMTI0LDcgQEAgdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpkZWJ1Z1JlbmRlcmVy
KFJlbmRlck9iamVjdCAqciwgYm9vbCBzZWxlY3RlZCkgY29uc3QKICAgICAgICAgICAgICAgICBv
ZmZzZXQgPSBtX3NlbGVjdGlvbi5lbmQoKS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgaW50IHBvczsKLSAgICAgICAgICAgIElubGluZVRl
eHRCb3ggKmJveCA9IHRleHRSZW5kZXJlci0+ZmluZE5leHRJbmxpbmVUZXh0Qm94KG9mZnNldCwg
cG9zKTsKKyAgICAgICAgICAgIElubGluZVRleHRCb3gqIGJveCA9IHRleHRSZW5kZXJlci0+Zmlu
ZE5leHRJbmxpbmVUZXh0Qm94KG9mZnNldCwgcG9zKTsKICAgICAgICAgICAgIHRleHQgPSB0ZXh0
LnN1YnN0cmluZyhib3gtPnN0YXJ0KCksIGJveC0+bGVuKCkpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBTdHJpbmcgc2hvdzsKQEAgLTExMzgsMjIgKzExMzUsMTYgQEAgdm9pZCBTZWxlY3Rp
b25Db250cm9sbGVyOjpkZWJ1Z1JlbmRlcmVyKFJlbmRlck9iamVjdCAqciwgYm9vbCBzZWxlY3Rl
ZCkgY29uc3QKICAgICAgICAgICAgIGlmICh0ZXh0TGVuZ3RoIDwgbWF4KSB7CiAgICAgICAgICAg
ICAgICAgc2hvdyA9IHRleHQ7CiAgICAgICAgICAgICAgICAgY2FyZXQgPSBwb3M7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIHRvbyBmZXcgY2hhcmFjdGVycyB0
byBsZWZ0Ci0gICAgICAgICAgICBlbHNlIGlmIChwb3MgLSBtaWQgPCAwKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKHBvcyAtIG1pZCA8IDApIHsKKyAgICAgICAgICAgICAgICAvLyB0b28gZmV3
IGNoYXJhY3RlcnMgdG8gbGVmdAogICAgICAgICAgICAgICAgIHNob3cgPSB0ZXh0LmxlZnQobWF4
IC0gMykgKyAiLi4uIjsKICAgICAgICAgICAgICAgICBjYXJldCA9IHBvczsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gZW5vdWdoIGNoYXJhY3RlcnMgb24gZWFj
aCBzaWRlCi0gICAgICAgICAgICBlbHNlIGlmIChwb3MgLSBtaWQgPj0gMCAmJiBwb3MgKyBtaWQg
PD0gdGV4dExlbmd0aCkgeworICAgICAgICAgICAgfSBlbHNlIGlmIChwb3MgLSBtaWQgPj0gMCAm
JiBwb3MgKyBtaWQgPD0gdGV4dExlbmd0aCkgeworICAgICAgICAgICAgICAgIC8vIGVub3VnaCBj
aGFyYWN0ZXJzIG9uIGVhY2ggc2lkZQogICAgICAgICAgICAgICAgIHNob3cgPSAiLi4uIiArIHRl
eHQuc3Vic3RyaW5nKHBvcyAtIG1pZCArIDMsIG1heCAtIDYpICsgIi4uLiI7CiAgICAgICAgICAg
ICAgICAgY2FyZXQgPSBtaWQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIC8vIHRvbyBmZXcgY2hhcmFjdGVycyBvbiByaWdodAotICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIHRvbyBmZXcgY2hhcmFjdGVy
cyBvbiByaWdodAogICAgICAgICAgICAgICAgIHNob3cgPSAiLi4uIiArIHRleHQucmlnaHQobWF4
IC0gMyk7CiAgICAgICAgICAgICAgICAgY2FyZXQgPSBwb3MgLSAodGV4dExlbmd0aCAtIHNob3cu
bGVuZ3RoKCkpOwogICAgICAgICAgICAgfQpAQCAtMTE2NSw4ICsxMTU2LDcgQEAgdm9pZCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpkZWJ1Z1JlbmRlcmVyKFJlbmRlck9iamVjdCAqciwgYm9vbCBzZWxl
Y3RlZCkgY29uc3QKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2FyZXQ7IGkrKykK
ICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAiKTsKICAgICAgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiXlxuIik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7CisgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBpZiAoKGludCl0ZXh0Lmxlbmd0aCgpID4gbWF4KQogICAgICAg
ICAgICAgICAgIHRleHQgPSB0ZXh0LmxlZnQobWF4IC0gMykgKyAiLi4uIjsKICAgICAgICAgICAg
IGVsc2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1dl
YkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCAxYzlkYjkwLi4yNWE0ZTZhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29y
ZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgVHlwaW5n
Q29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChEb2N1bWVudCAqZG9jdW1lbnQsIGJvb2wgc21hcnRE
ZWxldGUsIFRleHRHCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKICAgICAKLSAgICBGcmFtZSAq
ZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+
ZnJhbWUoKTsKICAgICBBU1NFUlQoZnJhbWUpOwogICAgIAogICAgIEVkaXRDb21tYW5kKiBsYXN0
RWRpdENvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmxhc3RFZGl0Q29tbWFuZCgpOwpAQCAtMTA1
LDcgKzEwNSw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQo
RG9jdW1lbnQgKmRvY3VtZW50LCBib29sIHNtYXJ0RGVsZXRlCiAgICAgLy8gRklYTUU6IEZvcndh
cmQgZGVsZXRlIGluIFRleHRFZGl0IGFwcGVhcnMgdG8gb3BlbiBhbmQgY2xvc2UgYSBuZXcgdHlw
aW5nIGNvbW1hbmQuCiAgICAgQVNTRVJUKGRvY3VtZW50KTsKICAgICAKLSAgICBGcmFtZSAqZnJh
bWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJh
bWUoKTsKICAgICBBU1NFUlQoZnJhbWUpOwogICAgIAogICAgIEVkaXRDb21tYW5kKiBsYXN0RWRp
dENvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmxhc3RFZGl0Q29tbWFuZCgpOwpAQCAtMTg3LDcg
KzE4Nyw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0TGluZUJyZWFrKERvY3VtZW50ICpk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIAotICAgIEZyYW1lICpmcmFt
ZSA9IGRvY3VtZW50LT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFt
ZSgpOwogICAgIEFTU0VSVChmcmFtZSk7CiAgICAgCiAgICAgRWRpdENvbW1hbmQqIGxhc3RFZGl0
Q29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+bGFzdEVkaXRDb21tYW5kKCk7CkBAIC0yMDMsNyAr
MjAzLDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1
b3RlZENvbnRlbnQoRG9jdW1lbnQgKmRvY3VtZW50KQogewogICAgIEFTU0VSVChkb2N1bWVudCk7
CiAgICAgCi0gICAgRnJhbWUgKmZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CisgICAgRnJhbWUq
IGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CiAgICAgQVNTRVJUKGZyYW1lKTsKICAgICAKICAg
ICBFZGl0Q29tbWFuZCogbGFzdEVkaXRDb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5sYXN0RWRp
dENvbW1hbmQoKTsKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2Vy
dFBhcmFncmFwaFNlcGFyYXRvcihEb2N1bWVudCAqZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGRv
Y3VtZW50KTsKICAgICAKLSAgICBGcmFtZSAqZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAg
ICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKICAgICBBU1NFUlQoZnJhbWUpOwog
ICAgIAogICAgIEVkaXRDb21tYW5kKiBsYXN0RWRpdENvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkt
Pmxhc3RFZGl0Q29tbWFuZCgpOwpAQCAtMjUyLDI3ICsyNTIsMjcgQEAgdm9pZCBUeXBpbmdDb21t
YW5kOjpkb0FwcGx5KCkKICAgICAgICAgICAgIG1fb3BlbmVkQnlCYWNrd2FyZERlbGV0ZSA9IHRy
dWU7CiAKICAgICBzd2l0Y2ggKG1fY29tbWFuZFR5cGUpIHsKLSAgICAgICAgY2FzZSBEZWxldGVT
ZWxlY3Rpb246Ci0gICAgICAgICAgICBkZWxldGVTZWxlY3Rpb24obV9zbWFydERlbGV0ZSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgRGVsZXRlS2V5OgotICAgICAgICAgICAg
ZGVsZXRlS2V5UHJlc3NlZChtX2dyYW51bGFyaXR5LCBtX2tpbGxSaW5nKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgY2FzZSBGb3J3YXJkRGVsZXRlS2V5OgotICAgICAgICAgICAgZm9y
d2FyZERlbGV0ZUtleVByZXNzZWQobV9ncmFudWxhcml0eSwgbV9raWxsUmluZyk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgSW5zZXJ0TGluZUJyZWFrOgotICAgICAgICAgICAg
aW5zZXJ0TGluZUJyZWFrKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgSW5z
ZXJ0UGFyYWdyYXBoU2VwYXJhdG9yOgotICAgICAgICAgICAgaW5zZXJ0UGFyYWdyYXBoU2VwYXJh
dG9yKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgSW5zZXJ0UGFyYWdyYXBo
U2VwYXJhdG9ySW5RdW90ZWRDb250ZW50OgotICAgICAgICAgICAgaW5zZXJ0UGFyYWdyYXBoU2Vw
YXJhdG9ySW5RdW90ZWRDb250ZW50KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNh
c2UgSW5zZXJ0VGV4dDoKLSAgICAgICAgICAgIGluc2VydFRleHQobV90ZXh0VG9JbnNlcnQsIG1f
c2VsZWN0SW5zZXJ0ZWRUZXh0KTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIERlbGV0
ZVNlbGVjdGlvbjoKKyAgICAgICAgZGVsZXRlU2VsZWN0aW9uKG1fc21hcnREZWxldGUpOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBEZWxldGVLZXk6CisgICAgICAgIGRlbGV0ZUtleVByZXNz
ZWQobV9ncmFudWxhcml0eSwgbV9raWxsUmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IEZvcndhcmREZWxldGVLZXk6CisgICAgICAgIGZvcndhcmREZWxldGVLZXlQcmVzc2VkKG1fZ3Jh
bnVsYXJpdHksIG1fa2lsbFJpbmcpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBJbnNlcnRM
aW5lQnJlYWs6CisgICAgICAgIGluc2VydExpbmVCcmVhaygpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3I6CisgICAgICAgIGluc2VydFBhcmFncmFw
aFNlcGFyYXRvcigpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBJbnNlcnRQYXJhZ3JhcGhT
ZXBhcmF0b3JJblF1b3RlZENvbnRlbnQ6CisgICAgICAgIGluc2VydFBhcmFncmFwaFNlcGFyYXRv
ckluUXVvdGVkQ29udGVudCgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBJbnNlcnRUZXh0
OgorICAgICAgICBpbnNlcnRUZXh0KG1fdGV4dFRvSW5zZXJ0LCBtX3NlbGVjdEluc2VydGVkVGV4
dCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
QEAgLTM0MCwxMyArMzQwLDEyIEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChjb25z
dCBTdHJpbmcgJnRleHQsIGJvb2wgc2VsZWN0SW5zZXJ0ZWRUZXh0KQogICAgICAgICBpbnNlcnRQ
YXJhZ3JhcGhTZXBhcmF0b3IoKTsKICAgICAgICAgb2Zmc2V0ID0gbmV3bGluZSArIDE7CiAgICAg
fQotICAgIGlmIChvZmZzZXQgPT0gMCkKKyAgICBpZiAoIW9mZnNldCkKICAgICAgICAgaW5zZXJ0
VGV4dFJ1bldpdGhvdXROZXdsaW5lcyh0ZXh0LCBzZWxlY3RJbnNlcnRlZFRleHQpOwogICAgIGVs
c2UgewogICAgICAgICBpbnQgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKLSAgICAgICAgaWYgKGxl
bmd0aCAhPSBvZmZzZXQpIHsKKyAgICAgICAgaWYgKGxlbmd0aCAhPSBvZmZzZXQpCiAgICAgICAg
ICAgICBpbnNlcnRUZXh0UnVuV2l0aG91dE5ld2xpbmVzKHRleHQuc3Vic3RyaW5nKG9mZnNldCwg
bGVuZ3RoIC0gb2Zmc2V0KSwgc2VsZWN0SW5zZXJ0ZWRUZXh0KTsKLSAgICAgICAgfQogICAgIH0K
IH0KIApAQCAtNDE4LDc1ICs0MTcsNzUgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQ
cmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraWxsUmluZykKICAgICBW
aXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbkFmdGVyVW5kbzsKICAgICAKICAgICBzd2l0Y2ggKGVu
ZGluZ1NlbGVjdGlvbigpLnNlbGVjdGlvblR5cGUoKSkgewotICAgICAgICBjYXNlIFZpc2libGVT
ZWxlY3Rpb246OlJhbmdlU2VsZWN0aW9uOgotICAgICAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUg
PSBlbmRpbmdTZWxlY3Rpb24oKTsKLSAgICAgICAgICAgIHNlbGVjdGlvbkFmdGVyVW5kbyA9IHNl
bGVjdGlvblRvRGVsZXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVmlzaWJs
ZVNlbGVjdGlvbjo6Q2FyZXRTZWxlY3Rpb246IHsKLSAgICAgICAgICAgIC8vIEFmdGVyIGJyZWFr
aW5nIG91dCBvZiBhbiBlbXB0eSBtYWlsIGJsb2NrcXVvdGUsIHdlIHN0aWxsIHdhbnQgY29udGlu
dWUgd2l0aCB0aGUgZGVsZXRpb24KLSAgICAgICAgICAgIC8vIHNvIGFjdHVhbCBjb250ZW50IHdp
bGwgZ2V0IGRlbGV0ZWQsIGFuZCBub3QganVzdCB0aGUgcXVvdGUgc3R5bGUuCi0gICAgICAgICAg
ICBpZiAoYnJlYWtPdXRPZkVtcHR5TWFpbEJsb2NrcXVvdGVkUGFyYWdyYXBoKCkpCisgICAgY2Fz
ZSBWaXNpYmxlU2VsZWN0aW9uOjpSYW5nZVNlbGVjdGlvbjoKKyAgICAgICAgc2VsZWN0aW9uVG9E
ZWxldGUgPSBlbmRpbmdTZWxlY3Rpb24oKTsKKyAgICAgICAgc2VsZWN0aW9uQWZ0ZXJVbmRvID0g
c2VsZWN0aW9uVG9EZWxldGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlzaWJsZVNlbGVj
dGlvbjo6Q2FyZXRTZWxlY3Rpb246IHsKKyAgICAgICAgLy8gQWZ0ZXIgYnJlYWtpbmcgb3V0IG9m
IGFuIGVtcHR5IG1haWwgYmxvY2txdW90ZSwgd2Ugc3RpbGwgd2FudCBjb250aW51ZSB3aXRoIHRo
ZSBkZWxldGlvbgorICAgICAgICAvLyBzbyBhY3R1YWwgY29udGVudCB3aWxsIGdldCBkZWxldGVk
LCBhbmQgbm90IGp1c3QgdGhlIHF1b3RlIHN0eWxlLgorICAgICAgICBpZiAoYnJlYWtPdXRPZkVt
cHR5TWFpbEJsb2NrcXVvdGVkUGFyYWdyYXBoKCkpCisgICAgICAgICAgICB0eXBpbmdBZGRlZFRv
T3BlbkNvbW1hbmQoRGVsZXRlS2V5KTsKKworICAgICAgICBtX3NtYXJ0RGVsZXRlID0gZmFsc2U7
CisKKyAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlciBzZWxlY3Rpb247CisgICAgICAgIHNlbGVj
dGlvbi5zZXRTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkpOworICAgICAgICBzZWxlY3Rpb24u
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
QkFDS1dBUkQsIGdyYW51bGFyaXR5KTsKKyAgICAgICAgaWYgKGtpbGxSaW5nICYmIHNlbGVjdGlv
bi5pc0NhcmV0KCkgJiYgZ3JhbnVsYXJpdHkgIT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpCisgICAg
ICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKworICAg
ICAgICBpZiAoZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkucHJldmlvdXModHJ1ZSku
aXNOdWxsKCkpIHsKKyAgICAgICAgICAgIC8vIFdoZW4gdGhlIGNhcmV0IGlzIGF0IHRoZSBzdGFy
dCBvZiB0aGUgZWRpdGFibGUgYXJlYSBpbiBhbiBlbXB0eSBsaXN0IGl0ZW0sIGJyZWFrIG91dCBv
ZiB0aGUgbGlzdCBpdGVtLgorICAgICAgICAgICAgaWYgKGJyZWFrT3V0T2ZFbXB0eUxpc3RJdGVt
KCkpIHsKICAgICAgICAgICAgICAgICB0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQoRGVsZXRlS2V5
KTsKLSAgICAgICAgCi0gICAgICAgICAgICBtX3NtYXJ0RGVsZXRlID0gZmFsc2U7Ci0KLSAgICAg
ICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIgc2VsZWN0aW9uOwotICAgICAgICAgICAgc2VsZWN0
aW9uLnNldFNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKSk7Ci0gICAgICAgICAgICBzZWxlY3Rp
b24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6QkFDS1dBUkQsIGdyYW51bGFyaXR5KTsKLSAgICAgICAgICAgIGlmIChraWxsUmluZyAmJiBz
ZWxlY3Rpb24uaXNDYXJldCgpICYmIGdyYW51bGFyaXR5ICE9IENoYXJhY3RlckdyYW51bGFyaXR5
KSAKLSAgICAgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIENoYXJhY3RlckdyYW51bGFy
aXR5KTsgCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS52
aXNpYmxlU3RhcnQoKS5wcmV2aW91cyh0cnVlKS5pc051bGwoKSkgewotICAgICAgICAgICAgICAg
IC8vIFdoZW4gdGhlIGNhcmV0IGlzIGF0IHRoZSBzdGFydCBvZiB0aGUgZWRpdGFibGUgYXJlYSBp
biBhbiBlbXB0eSBsaXN0IGl0ZW0sIGJyZWFrIG91dCBvZiB0aGUgbGlzdCBpdGVtLgotICAgICAg
ICAgICAgICAgIGlmIChicmVha091dE9mRW1wdHlMaXN0SXRlbSgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHR5cGluZ0FkZGVkVG9PcGVuQ29tbWFuZChEZWxldGVLZXkpOwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIFdo
ZW4gdGhlcmUgYXJlIG5vIHZpc2libGUgcG9zaXRpb25zIGluIHRoZSBlZGl0aW5nIHJvb3QsIGRl
bGV0ZSBpdHMgZW50aXJlIGNvbnRlbnRzLgotICAgICAgICAgICAgICAgIGlmIChlbmRpbmdTZWxl
Y3Rpb24oKS52aXNpYmxlU3RhcnQoKS5uZXh0KHRydWUpLmlzTnVsbCgpICYmIG1ha2VFZGl0YWJs
ZVJvb3RFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGluZ0FkZGVkVG9PcGVuQ29t
bWFuZChEZWxldGVLZXkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBWaXNpYmxl
UG9zaXRpb24gdmlzaWJsZVN0YXJ0KGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpKTsK
LSAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBjYXJldCBzZWxlY3Rpb24gb24gYW4gZW1wdHkg
Y2VsbCwgd2UgaGF2ZSBub3RoaW5nIHRvIGRvLgotICAgICAgICAgICAgaWYgKGlzRW1wdHlUYWJs
ZUNlbGwodmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIC8vIElmIHRoZSBjYXJldCBpcyBhdCB0aGUgc3Rh
cnQgb2YgYSBwYXJhZ3JhcGggYWZ0ZXIgYSB0YWJsZSwgbW92ZSBjb250ZW50IGludG8gdGhlIGxh
c3QgdGFibGUgY2VsbC4KLSAgICAgICAgICAgIGlmIChpc1N0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJs
ZVN0YXJ0KSAmJiBpc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKHZpc2libGVTdGFydC5wcmV2aW91
cyh0cnVlKSkpIHsKLSAgICAgICAgICAgICAgICAvLyBVbmxlc3MgdGhlIGNhcmV0IGlzIGp1c3Qg
YmVmb3JlIGEgdGFibGUuICBXZSBkb24ndCB3YW50IHRvIG1vdmUgYSB0YWJsZSBpbnRvIHRoZSBs
YXN0IHRhYmxlIGNlbGwuCi0gICAgICAgICAgICAgICAgaWYgKGlzTGFzdFBvc2l0aW9uQmVmb3Jl
VGFibGUodmlzaWJsZVN0YXJ0KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgICAgIC8vIEV4dGVuZCB0aGUgc2VsZWN0aW9uIGJhY2t3YXJkIGludG8gdGhlIGxhc3Qg
Y2VsbCwgdGhlbiBkZWxldGlvbiB3aWxsIGhhbmRsZSB0aGUgbW92ZS4KLSAgICAgICAgICAgICAg
ICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6QkFDS1dBUkQsIGdyYW51bGFyaXR5KTsKLSAgICAgICAgICAgIC8vIElmIHRo
ZSBjYXJldCBpcyBqdXN0IGFmdGVyIGEgdGFibGUsIHNlbGVjdCB0aGUgdGFibGUgYW5kIGRvbid0
IGRlbGV0ZSBhbnl0aGluZy4KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoTm9kZSogdGFibGUgPSBp
c0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKHZpc2libGVTdGFydCkpIHsKLSAgICAgICAgICAgICAg
ICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihQb3NpdGlvbih0YWJsZSwgMCks
IGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCksIERPV05TVFJFQU0pKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC8vIFdoZW4gdGhlcmUgYXJlIG5vIHZpc2libGUgcG9zaXRpb25zIGluIHRo
ZSBlZGl0aW5nIHJvb3QsIGRlbGV0ZSBpdHMgZW50aXJlIGNvbnRlbnRzLgorICAgICAgICAgICAg
aWYgKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLm5leHQodHJ1ZSkuaXNOdWxsKCkg
JiYgbWFrZUVkaXRhYmxlUm9vdEVtcHR5KCkpIHsKICAgICAgICAgICAgICAgICB0eXBpbmdBZGRl
ZFRvT3BlbkNvbW1hbmQoRGVsZXRlS2V5KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CisgICAgICAgIH0KIAotICAgICAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUgPSBz
ZWxlY3Rpb24uc2VsZWN0aW9uKCk7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlU3Rh
cnQoZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpOworICAgICAgICAvLyBJZiB3ZSBo
YXZlIGEgY2FyZXQgc2VsZWN0aW9uIG9uIGFuIGVtcHR5IGNlbGwsIHdlIGhhdmUgbm90aGluZyB0
byBkby4KKyAgICAgICAgaWYgKGlzRW1wdHlUYWJsZUNlbGwodmlzaWJsZVN0YXJ0LmRlZXBFcXVp
dmFsZW50KCkubm9kZSgpKSkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgaWYg
KGdyYW51bGFyaXR5ID09IENoYXJhY3RlckdyYW51bGFyaXR5ICYmIHNlbGVjdGlvblRvRGVsZXRl
LmVuZCgpLm5vZGUoKSA9PSBzZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgpLm5vZGUoKSAmJiBzZWxl
Y3Rpb25Ub0RlbGV0ZS5lbmQoKS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIC0gc2VsZWN0aW9u
VG9EZWxldGUuc3RhcnQoKS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID4gMSkgewotICAgICAg
ICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBVbmljb2RlIGNvZGUgcG9pbnRzIHRv
IGJlIGRlbGV0ZWQsIGFkanVzdCB0aGUgcmFuZ2UgdG8gbWF0Y2ggcGxhdGZvcm0gY29udmVudGlv
bnMuCi0gICAgICAgICAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUuc2V0V2l0aG91dFZhbGlkYXRp
b24oc2VsZWN0aW9uVG9EZWxldGUuZW5kKCksIHNlbGVjdGlvblRvRGVsZXRlLmVuZCgpLnByZXZp
b3VzKEJhY2t3YXJkRGVsZXRpb24pKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgLy8gSWYgdGhl
IGNhcmV0IGlzIGF0IHRoZSBzdGFydCBvZiBhIHBhcmFncmFwaCBhZnRlciBhIHRhYmxlLCBtb3Zl
IGNvbnRlbnQgaW50byB0aGUgbGFzdCB0YWJsZSBjZWxsLgorICAgICAgICBpZiAoaXNTdGFydE9m
UGFyYWdyYXBoKHZpc2libGVTdGFydCkgJiYgaXNGaXJzdFBvc2l0aW9uQWZ0ZXJUYWJsZSh2aXNp
YmxlU3RhcnQucHJldmlvdXModHJ1ZSkpKSB7CisgICAgICAgICAgICAvLyBVbmxlc3MgdGhlIGNh
cmV0IGlzIGp1c3QgYmVmb3JlIGEgdGFibGUuICBXZSBkb24ndCB3YW50IHRvIG1vdmUgYSB0YWJs
ZSBpbnRvIHRoZSBsYXN0IHRhYmxlIGNlbGwuCisgICAgICAgICAgICBpZiAoaXNMYXN0UG9zaXRp
b25CZWZvcmVUYWJsZSh2aXNpYmxlU3RhcnQpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIC8vIEV4dGVuZCB0aGUgc2VsZWN0aW9uIGJhY2t3YXJkIGludG8gdGhlIGxhc3Qg
Y2VsbCwgdGhlbiBkZWxldGlvbiB3aWxsIGhhbmRsZSB0aGUgbW92ZS4KKyAgICAgICAgICAgIHNl
bGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250
cm9sbGVyOjpCQUNLV0FSRCwgZ3JhbnVsYXJpdHkpOworICAgICAgICAvLyBJZiB0aGUgY2FyZXQg
aXMganVzdCBhZnRlciBhIHRhYmxlLCBzZWxlY3QgdGhlIHRhYmxlIGFuZCBkb24ndCBkZWxldGUg
YW55dGhpbmcuCisgICAgICAgIH0gZWxzZSBpZiAoTm9kZSogdGFibGUgPSBpc0ZpcnN0UG9zaXRp
b25BZnRlclRhYmxlKHZpc2libGVTdGFydCkpIHsKKyAgICAgICAgICAgIHNldEVuZGluZ1NlbGVj
dGlvbihWaXNpYmxlU2VsZWN0aW9uKFBvc2l0aW9uKHRhYmxlLCAwKSwgZW5kaW5nU2VsZWN0aW9u
KCkuc3RhcnQoKSwgRE9XTlNUUkVBTSkpOworICAgICAgICAgICAgdHlwaW5nQWRkZWRUb09wZW5D
b21tYW5kKERlbGV0ZUtleSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAg
ICAgICAgICAgaWYgKCFzdGFydGluZ1NlbGVjdGlvbigpLmlzUmFuZ2UoKSB8fCBzZWxlY3Rpb25U
b0RlbGV0ZS5iYXNlKCkgIT0gc3RhcnRpbmdTZWxlY3Rpb24oKS5zdGFydCgpKQotICAgICAgICAg
ICAgICAgIHNlbGVjdGlvbkFmdGVyVW5kbyA9IHNlbGVjdGlvblRvRGVsZXRlOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIC8vIEl0J3MgYSBsaXR0bGUgdHJpY2t5IHRvIGNvbXB1
dGUgd2hhdCB0aGUgc3RhcnRpbmcgc2VsZWN0aW9uIHdvdWxkIGhhdmUgYmVlbiBpbiB0aGUgb3Jp
Z2luYWwgZG9jdW1lbnQuCi0gICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgbGV0IHRoZSBWaXNp
YmxlU2VsZWN0aW9uIGNsYXNzJ3MgdmFsaWRhdGlvbiBraWNrIGluIG9yIGl0J2xsIGFkanVzdCBm
b3IgdXMgYmFzZWQgb24KLSAgICAgICAgICAgICAgICAvLyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0
aGUgZG9jdW1lbnQgYW5kIHdlJ2xsIGdldCB0aGUgd3JvbmcgcmVzdWx0LgotICAgICAgICAgICAg
ICAgIHNlbGVjdGlvbkFmdGVyVW5kby5zZXRXaXRob3V0VmFsaWRhdGlvbihzdGFydGluZ1NlbGVj
dGlvbigpLmVuZCgpLCBzZWxlY3Rpb25Ub0RlbGV0ZS5leHRlbnQoKSk7Ci0gICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUgPSBzZWxlY3Rpb24uc2VsZWN0aW9uKCk7
CisKKyAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IENoYXJhY3RlckdyYW51bGFyaXR5ICYmIHNl
bGVjdGlvblRvRGVsZXRlLmVuZCgpLm5vZGUoKSA9PSBzZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgp
Lm5vZGUoKSAmJiBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5kZXByZWNhdGVkRWRpdGluZ09mZnNl
dCgpIC0gc2VsZWN0aW9uVG9EZWxldGUuc3RhcnQoKS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgp
ID4gMSkgeworICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG11bHRpcGxlIFVuaWNvZGUgY29k
ZSBwb2ludHMgdG8gYmUgZGVsZXRlZCwgYWRqdXN0IHRoZSByYW5nZSB0byBtYXRjaCBwbGF0Zm9y
bSBjb252ZW50aW9ucy4KKyAgICAgICAgICAgIHNlbGVjdGlvblRvRGVsZXRlLnNldFdpdGhvdXRW
YWxpZGF0aW9uKHNlbGVjdGlvblRvRGVsZXRlLmVuZCgpLCBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQo
KS5wcmV2aW91cyhCYWNrd2FyZERlbGV0aW9uKSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBW
aXNpYmxlU2VsZWN0aW9uOjpOb1NlbGVjdGlvbjoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKCFzdGFydGluZ1NlbGVj
dGlvbigpLmlzUmFuZ2UoKSB8fCBzZWxlY3Rpb25Ub0RlbGV0ZS5iYXNlKCkgIT0gc3RhcnRpbmdT
ZWxlY3Rpb24oKS5zdGFydCgpKQorICAgICAgICAgICAgc2VsZWN0aW9uQWZ0ZXJVbmRvID0gc2Vs
ZWN0aW9uVG9EZWxldGU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIC8vIEl0J3MgYSBsaXR0
bGUgdHJpY2t5IHRvIGNvbXB1dGUgd2hhdCB0aGUgc3RhcnRpbmcgc2VsZWN0aW9uIHdvdWxkIGhh
dmUgYmVlbiBpbiB0aGUgb3JpZ2luYWwgZG9jdW1lbnQuCisgICAgICAgICAgICAvLyBXZSBjYW4n
dCBsZXQgdGhlIFZpc2libGVTZWxlY3Rpb24gY2xhc3MncyB2YWxpZGF0aW9uIGtpY2sgaW4gb3Ig
aXQnbGwgYWRqdXN0IGZvciB1cyBiYXNlZCBvbgorICAgICAgICAgICAgLy8gdGhlIGN1cnJlbnQg
c3RhdGUgb2YgdGhlIGRvY3VtZW50IGFuZCB3ZSdsbCBnZXQgdGhlIHdyb25nIHJlc3VsdC4KKyAg
ICAgICAgICAgIHNlbGVjdGlvbkFmdGVyVW5kby5zZXRXaXRob3V0VmFsaWRhdGlvbihzdGFydGlu
Z1NlbGVjdGlvbigpLmVuZCgpLCBzZWxlY3Rpb25Ub0RlbGV0ZS5leHRlbnQoKSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246Ok5vU2VsZWN0aW9uOgor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IAogICAgIEFTU0VSVCghc2VsZWN0aW9uVG9EZWxldGUuaXNOb25lKCkpOwpAQCAtNTE0LDYyICs1
MTMsNjIgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChUZXh0
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2kKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNl
bGVjdGlvbkFmdGVyVW5kbzsKIAogICAgIHN3aXRjaCAoZW5kaW5nU2VsZWN0aW9uKCkuc2VsZWN0
aW9uVHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6UmFuZ2VTZWxlY3Rp
b246Ci0gICAgICAgICAgICBzZWxlY3Rpb25Ub0RlbGV0ZSA9IGVuZGluZ1NlbGVjdGlvbigpOwot
ICAgICAgICAgICAgc2VsZWN0aW9uQWZ0ZXJVbmRvID0gc2VsZWN0aW9uVG9EZWxldGU7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpDYXJldFNlbGVj
dGlvbjogewotICAgICAgICAgICAgbV9zbWFydERlbGV0ZSA9IGZhbHNlOwotCi0gICAgICAgICAg
ICAvLyBIYW5kbGUgZGVsZXRlIGF0IGJlZ2lubmluZy1vZi1ibG9jayBjYXNlLgotICAgICAgICAg
ICAgLy8gRG8gbm90aGluZyBpbiB0aGUgY2FzZSB0aGF0IHRoZSBjYXJldCBpcyBhdCB0aGUgc3Rh
cnQgb2YgYQotICAgICAgICAgICAgLy8gcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9yIGF0IHRoZSBz
dGFydCBvZiBhIGRvY3VtZW50LgotICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlciBzZWxl
Y3Rpb247Ci0gICAgICAgICAgICBzZWxlY3Rpb24uc2V0U2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlv
bigpKTsKLSAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBncmFudWxhcml0eSk7Ci0gICAg
ICAgICAgICBpZiAoa2lsbFJpbmcgJiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBncmFudWxhcml0
eSAhPSBDaGFyYWN0ZXJHcmFudWxhcml0eSkgCi0gICAgICAgICAgICAgICAgc2VsZWN0aW9uLm1v
ZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZP
UldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsgCi0gICAgICAgICAgICAKLSAgICAgICAgICAg
IFBvc2l0aW9uIGRvd25zdHJlYW1FbmQgPSBlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKS5kb3duc3Ry
ZWFtKCk7Ci0gICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZUVuZCA9IGVuZGluZ1Nl
bGVjdGlvbigpLnZpc2libGVFbmQoKTsKLSAgICAgICAgICAgIGlmICh2aXNpYmxlRW5kID09IGVu
ZE9mUGFyYWdyYXBoKHZpc2libGVFbmQpKQotICAgICAgICAgICAgICAgIGRvd25zdHJlYW1FbmQg
PSB2aXNpYmxlRW5kLm5leHQodHJ1ZSkuZGVlcEVxdWl2YWxlbnQoKS5kb3duc3RyZWFtKCk7Ci0g
ICAgICAgICAgICAvLyBXaGVuIGRlbGV0aW5nIHRhYmxlczogU2VsZWN0IHRoZSB0YWJsZSBmaXJz
dCwgdGhlbiBwZXJmb3JtIHRoZSBkZWxldGlvbgotICAgICAgICAgICAgaWYgKGRvd25zdHJlYW1F
bmQubm9kZSgpICYmIGRvd25zdHJlYW1FbmQubm9kZSgpLT5yZW5kZXJlcigpICYmIGRvd25zdHJl
YW1FbmQubm9kZSgpLT5yZW5kZXJlcigpLT5pc1RhYmxlKCkgJiYgZG93bnN0cmVhbUVuZC5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpID09IDApIHsKLSAgICAgICAgICAgICAgICBzZXRFbmRpbmdT
ZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKSwgbGFzdERl
ZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKGRvd25zdHJlYW1FbmQubm9kZSgpKSwgRE9XTlNUUkVB
TSkpOwotICAgICAgICAgICAgICAgIHR5cGluZ0FkZGVkVG9PcGVuQ29tbWFuZChGb3J3YXJkRGVs
ZXRlS2V5KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgY2Fz
ZSBWaXNpYmxlU2VsZWN0aW9uOjpSYW5nZVNlbGVjdGlvbjoKKyAgICAgICAgc2VsZWN0aW9uVG9E
ZWxldGUgPSBlbmRpbmdTZWxlY3Rpb24oKTsKKyAgICAgICAgc2VsZWN0aW9uQWZ0ZXJVbmRvID0g
c2VsZWN0aW9uVG9EZWxldGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlzaWJsZVNlbGVj
dGlvbjo6Q2FyZXRTZWxlY3Rpb246IHsKKyAgICAgICAgbV9zbWFydERlbGV0ZSA9IGZhbHNlOwor
CisgICAgICAgIC8vIEhhbmRsZSBkZWxldGUgYXQgYmVnaW5uaW5nLW9mLWJsb2NrIGNhc2UuCisg
ICAgICAgIC8vIERvIG5vdGhpbmcgaW4gdGhlIGNhc2UgdGhhdCB0aGUgY2FyZXQgaXMgYXQgdGhl
IHN0YXJ0IG9mIGEKKyAgICAgICAgLy8gcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9yIGF0IHRoZSBz
dGFydCBvZiBhIGRvY3VtZW50LgorICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyIHNlbGVjdGlv
bjsKKyAgICAgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKSk7Cisg
ICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBncmFudWxhcml0eSk7CisgICAgICAgIGlmIChraWxs
UmluZyAmJiBzZWxlY3Rpb24uaXNDYXJldCgpICYmIGdyYW51bGFyaXR5ICE9IENoYXJhY3Rlckdy
YW51bGFyaXR5KQorICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51
bGFyaXR5KTsKKworICAgICAgICBQb3NpdGlvbiBkb3duc3RyZWFtRW5kID0gZW5kaW5nU2VsZWN0
aW9uKCkuZW5kKCkuZG93bnN0cmVhbSgpOworICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZUVuZCA9IGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVFbmQoKTsKKyAgICAgICAgaWYgKHZpc2li
bGVFbmQgPT0gZW5kT2ZQYXJhZ3JhcGgodmlzaWJsZUVuZCkpCisgICAgICAgICAgICBkb3duc3Ry
ZWFtRW5kID0gdmlzaWJsZUVuZC5uZXh0KHRydWUpLmRlZXBFcXVpdmFsZW50KCkuZG93bnN0cmVh
bSgpOworICAgICAgICAvLyBXaGVuIGRlbGV0aW5nIHRhYmxlczogU2VsZWN0IHRoZSB0YWJsZSBm
aXJzdCwgdGhlbiBwZXJmb3JtIHRoZSBkZWxldGlvbgorICAgICAgICBpZiAoZG93bnN0cmVhbUVu
ZC5ub2RlKCkgJiYgZG93bnN0cmVhbUVuZC5ub2RlKCktPnJlbmRlcmVyKCkgJiYgZG93bnN0cmVh
bUVuZC5ub2RlKCktPnJlbmRlcmVyKCktPmlzVGFibGUoKSAmJiAhZG93bnN0cmVhbUVuZC5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpKSB7CisgICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKSwgbGFzdERlZXBFZGl0aW5n
UG9zaXRpb25Gb3JOb2RlKGRvd25zdHJlYW1FbmQubm9kZSgpKSwgRE9XTlNUUkVBTSkpOworICAg
ICAgICAgICAgdHlwaW5nQWRkZWRUb09wZW5Db21tYW5kKEZvcndhcmREZWxldGVLZXkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIGRlbGV0aW5nIHRv
IGVuZCBvZiBwYXJhZ3JhcGggd2hlbiBhdCBlbmQgb2YgcGFyYWdyYXBoIG5lZWRzIHRvIG1lcmdl
IHRoZSBuZXh0IHBhcmFncmFwaCAoaWYgYW55KQotICAgICAgICAgICAgaWYgKGdyYW51bGFyaXR5
ID09IFBhcmFncmFwaEJvdW5kYXJ5ICYmIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0NhcmV0KCkg
JiYgaXNFbmRPZlBhcmFncmFwaChzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpKSkK
LSAgICAgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVY
VEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkp
OworICAgICAgICAvLyBkZWxldGluZyB0byBlbmQgb2YgcGFyYWdyYXBoIHdoZW4gYXQgZW5kIG9m
IHBhcmFncmFwaCBuZWVkcyB0byBtZXJnZSB0aGUgbmV4dCBwYXJhZ3JhcGggKGlmIGFueSkKKyAg
ICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFBhcmFncmFwaEJvdW5kYXJ5ICYmIHNlbGVjdGlvbi5z
ZWxlY3Rpb24oKS5pc0NhcmV0KCkgJiYgaXNFbmRPZlBhcmFncmFwaChzZWxlY3Rpb24uc2VsZWN0
aW9uKCkudmlzaWJsZUVuZCgpKSkKKyAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFy
YWN0ZXJHcmFudWxhcml0eSk7CiAKLSAgICAgICAgICAgIHNlbGVjdGlvblRvRGVsZXRlID0gc2Vs
ZWN0aW9uLnNlbGVjdGlvbigpOwotICAgICAgICAgICAgaWYgKCFzdGFydGluZ1NlbGVjdGlvbigp
LmlzUmFuZ2UoKSB8fCBzZWxlY3Rpb25Ub0RlbGV0ZS5iYXNlKCkgIT0gc3RhcnRpbmdTZWxlY3Rp
b24oKS5zdGFydCgpKQotICAgICAgICAgICAgICAgIHNlbGVjdGlvbkFmdGVyVW5kbyA9IHNlbGVj
dGlvblRvRGVsZXRlOworICAgICAgICBzZWxlY3Rpb25Ub0RlbGV0ZSA9IHNlbGVjdGlvbi5zZWxl
Y3Rpb24oKTsKKyAgICAgICAgaWYgKCFzdGFydGluZ1NlbGVjdGlvbigpLmlzUmFuZ2UoKSB8fCBz
ZWxlY3Rpb25Ub0RlbGV0ZS5iYXNlKCkgIT0gc3RhcnRpbmdTZWxlY3Rpb24oKS5zdGFydCgpKQor
ICAgICAgICAgICAgc2VsZWN0aW9uQWZ0ZXJVbmRvID0gc2VsZWN0aW9uVG9EZWxldGU7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgLy8gSXQncyBhIGxpdHRsZSB0cmlja3kgdG8gY29tcHV0
ZSB3aGF0IHRoZSBzdGFydGluZyBzZWxlY3Rpb24gd291bGQgaGF2ZSBiZWVuIGluIHRoZSBvcmln
aW5hbCBkb2N1bWVudC4KKyAgICAgICAgICAgIC8vIFdlIGNhbid0IGxldCB0aGUgVmlzaWJsZVNl
bGVjdGlvbiBjbGFzcydzIHZhbGlkYXRpb24ga2ljayBpbiBvciBpdCdsbCBhZGp1c3QgZm9yIHVz
IGJhc2VkIG9uCisgICAgICAgICAgICAvLyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgZG9jdW1l
bnQgYW5kIHdlJ2xsIGdldCB0aGUgd3JvbmcgcmVzdWx0LgorICAgICAgICAgICAgUG9zaXRpb24g
ZXh0ZW50ID0gc3RhcnRpbmdTZWxlY3Rpb24oKS5lbmQoKTsKKyAgICAgICAgICAgIGlmIChleHRl
bnQubm9kZSgpICE9IHNlbGVjdGlvblRvRGVsZXRlLmVuZCgpLm5vZGUoKSkKKyAgICAgICAgICAg
ICAgICBleHRlbnQgPSBzZWxlY3Rpb25Ub0RlbGV0ZS5leHRlbnQoKTsKICAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgIC8vIEl0J3MgYSBsaXR0bGUgdHJpY2t5IHRvIGNvbXB1dGUg
d2hhdCB0aGUgc3RhcnRpbmcgc2VsZWN0aW9uIHdvdWxkIGhhdmUgYmVlbiBpbiB0aGUgb3JpZ2lu
YWwgZG9jdW1lbnQuCi0gICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgbGV0IHRoZSBWaXNpYmxl
U2VsZWN0aW9uIGNsYXNzJ3MgdmFsaWRhdGlvbiBraWNrIGluIG9yIGl0J2xsIGFkanVzdCBmb3Ig
dXMgYmFzZWQgb24KLSAgICAgICAgICAgICAgICAvLyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUg
ZG9jdW1lbnQgYW5kIHdlJ2xsIGdldCB0aGUgd3JvbmcgcmVzdWx0LgotICAgICAgICAgICAgICAg
IFBvc2l0aW9uIGV4dGVudCA9IHN0YXJ0aW5nU2VsZWN0aW9uKCkuZW5kKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKGV4dGVudC5ub2RlKCkgIT0gc2VsZWN0aW9uVG9EZWxldGUuZW5kKCkubm9kZSgp
KQotICAgICAgICAgICAgICAgICAgICBleHRlbnQgPSBzZWxlY3Rpb25Ub0RlbGV0ZS5leHRlbnQo
KTsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IGV4dHJh
Q2hhcmFjdGVyczsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvblRvRGVsZXRlLnN0
YXJ0KCkubm9kZSgpID09IHNlbGVjdGlvblRvRGVsZXRlLmVuZCgpLm5vZGUoKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGV4dHJhQ2hhcmFjdGVycyA9IHNlbGVjdGlvblRvRGVsZXRlLmVuZCgp
LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgLSBzZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgpLmRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGV4dHJhQ2hhcmFjdGVycyA9IHNlbGVjdGlvblRvRGVsZXRlLmVu
ZCgpLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGV4dGVu
dCA9IFBvc2l0aW9uKGV4dGVudC5ub2RlKCksIGV4dGVudC5kZXByZWNhdGVkRWRpdGluZ09mZnNl
dCgpICsgZXh0cmFDaGFyYWN0ZXJzKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgc2VsZWN0aW9uQWZ0ZXJVbmRvLnNldFdpdGhvdXRWYWxpZGF0aW9uKHN0YXJ0aW5nU2VsZWN0
aW9uKCkuc3RhcnQoKSwgZXh0ZW50KTsKKyAgICAgICAgICAgICAgICBpbnQgZXh0cmFDaGFyYWN0
ZXJzOworICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgpLm5vZGUo
KSA9PSBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5ub2RlKCkpCisgICAgICAgICAgICAgICAgICAg
IGV4dHJhQ2hhcmFjdGVycyA9IHNlbGVjdGlvblRvRGVsZXRlLmVuZCgpLmRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCkgLSBzZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgpLmRlcHJlY2F0ZWRFZGl0aW5n
T2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBleHRy
YUNoYXJhY3RlcnMgPSBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpOworICAgICAgICAgICAgICAgIGV4dGVudCA9IFBvc2l0aW9uKGV4dGVudC5ub2RlKCks
IGV4dGVudC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpICsgZXh0cmFDaGFyYWN0ZXJzKTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgc2VsZWN0aW9uQWZ0
ZXJVbmRvLnNldFdpdGhvdXRWYWxpZGF0aW9uKHN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwg
ZXh0ZW50KTsKICAgICAgICAgfQotICAgICAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246Ok5vU2Vs
ZWN0aW9uOgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6
Tm9TZWxlY3Rpb246CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVh
azsKICAgICB9CiAgICAgCiAgICAgQVNTRVJUKCFzZWxlY3Rpb25Ub0RlbGV0ZS5pc05vbmUoKSk7
CkBAIC01OTcsMTcgKzU5NiwxNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZVNlbGVjdGlv
bihib29sIHNtYXJ0RGVsZXRlKQogdm9pZCBUeXBpbmdDb21tYW5kOjp1cGRhdGVQcmVzZXJ2ZXNU
eXBpbmdTdHlsZShFVHlwaW5nQ29tbWFuZCBjb21tYW5kVHlwZSkKIHsKICAgICBzd2l0Y2ggKGNv
bW1hbmRUeXBlKSB7Ci0gICAgICAgIGNhc2UgRGVsZXRlU2VsZWN0aW9uOgotICAgICAgICBjYXNl
IERlbGV0ZUtleToKLSAgICAgICAgY2FzZSBGb3J3YXJkRGVsZXRlS2V5OgotICAgICAgICBjYXNl
IEluc2VydFBhcmFncmFwaFNlcGFyYXRvcjoKLSAgICAgICAgY2FzZSBJbnNlcnRMaW5lQnJlYWs6
Ci0gICAgICAgICAgICBtX3ByZXNlcnZlc1R5cGluZ1N0eWxlID0gdHJ1ZTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgY2FzZSBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENv
bnRlbnQ6Ci0gICAgICAgIGNhc2UgSW5zZXJ0VGV4dDoKLSAgICAgICAgICAgIG1fcHJlc2VydmVz
VHlwaW5nU3R5bGUgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIERlbGV0
ZVNlbGVjdGlvbjoKKyAgICBjYXNlIERlbGV0ZUtleToKKyAgICBjYXNlIEZvcndhcmREZWxldGVL
ZXk6CisgICAgY2FzZSBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3I6CisgICAgY2FzZSBJbnNlcnRM
aW5lQnJlYWs6CisgICAgICAgIG1fcHJlc2VydmVzVHlwaW5nU3R5bGUgPSB0cnVlOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRl
bnQ6CisgICAgY2FzZSBJbnNlcnRUZXh0OgorICAgICAgICBtX3ByZXNlcnZlc1R5cGluZ1N0eWxl
ID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgbV9wcmVzZXJ2ZXNUeXBpbmdTdHlsZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAppbmRleCAzYjBmOTU5Li5lYmY4ZWZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtNDMzLDgg
KzQzMyw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAjaWYgRU5BQkxFKFNWRykKLSAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+aXNTVkdEb2N1
bWVudCgpICYmCi0gICAgICAgc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihtX2ZyYW1lLT5kb2N1
bWVudCgpKS0+em9vbUFuZFBhbkVuYWJsZWQoKSkgeworICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5pc1NWR0RvY3VtZW50KCkKKyAgICAgICAgJiYgc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQq
PihtX2ZyYW1lLT5kb2N1bWVudCgpKS0+em9vbUFuZFBhbkVuYWJsZWQoKSkgewogICAgICAgICBp
ZiAoZXZlbnQuZXZlbnQoKS5zaGlmdEtleSgpICYmIHNpbmdsZUNsaWNrKSB7CiAgICAgICAgICAg
ICBtX3N2Z1BhbiA9IHRydWU7CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+
KG1fZnJhbWUtPmRvY3VtZW50KCkpLT5zdGFydFBhbihldmVudC5ldmVudCgpLnBvcygpKTsKQEAg
LTQ2Niw4ICs0NjYsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50
KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQogICAgIGVsc2UKICAgICAg
ICAgc3dhbGxvd0V2ZW50ID0gaGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xpY2soZXZlbnQp
OwogICAgIAotICAgIG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsID0gbV9tb3VzZURvd25N
YXlTdGFydFNlbGVjdCB8fCAKLSAgICAgICAgKG1fbW91c2VQcmVzc05vZGUgJiYgbV9tb3VzZVBy
ZXNzTm9kZS0+cmVuZGVyQm94KCkgJiYgbV9tb3VzZVByZXNzTm9kZS0+cmVuZGVyQm94KCktPmNh
bkJlUHJvZ3JhbWF0aWNhbGx5U2Nyb2xsZWQodHJ1ZSkpOworICAgIG1fbW91c2VEb3duTWF5U3Rh
cnRBdXRvc2Nyb2xsID0gbV9tb3VzZURvd25NYXlTdGFydFNlbGVjdAorICAgICAgICB8fCAobV9t
b3VzZVByZXNzTm9kZSAmJiBtX21vdXNlUHJlc3NOb2RlLT5yZW5kZXJCb3goKSAmJiBtX21vdXNl
UHJlc3NOb2RlLT5yZW5kZXJCb3goKS0+Y2FuQmVQcm9ncmFtYXRpY2FsbHlTY3JvbGxlZCh0cnVl
KSk7CiAKICAgICByZXR1cm4gc3dhbGxvd0V2ZW50OwogfQpAQCAtNjg4LDcgKzY4OCw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzJiBlCiAgICAgICAgICAgICAmJiBtX2ZyYW1lLT5zZWxlY3Rpb24o
KS0+aXNSYW5nZSgpCiAgICAgICAgICAgICAmJiBldmVudC5ldmVudCgpLmJ1dHRvbigpICE9IFJp
Z2h0QnV0dG9uKSB7CiAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uOwotICAg
ICAgICBOb2RlICpub2RlID0gZXZlbnQudGFyZ2V0Tm9kZSgpOworICAgICAgICBOb2RlKiBub2Rl
ID0gZXZlbnQudGFyZ2V0Tm9kZSgpOwogICAgICAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBtX2Zy
YW1lLT5zZXR0aW5ncygpLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpOwogICAgICAgICBpZiAobm9k
ZSAmJiAoY2FyZXRCcm93c2luZyB8fCBub2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKSAmJiBub2Rl
LT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zID0gbm9kZS0+
cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChldmVudC5sb2NhbFBvaW50KCkpOwpAQCAtODA5
LDcgKzgwOSw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVQYW5TY3JvbGxTdGF0ZSgpCiAg
ICAgICAgIHZpZXctPnNldEN1cnNvcihtaWRkbGVQYW5uaW5nQ3Vyc29yKCkpOwogfQogCi0jZW5k
aWYgIC8vIEVOQUJMRShQQU5fU0NST0xMSU5HKQorI2VuZGlmIC8vIEVOQUJMRShQQU5fU0NST0xM
SU5HKQogCiBSZW5kZXJPYmplY3QqIEV2ZW50SGFuZGxlcjo6YXV0b3Njcm9sbFJlbmRlcmVyKCkg
Y29uc3QKIHsKQEAgLTEwODgsMTE3ICsxMDg4LDExNyBAQCBDdXJzb3IgRXZlbnRIYW5kbGVyOjpz
ZWxlY3RDdXJzb3IoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIFNj
cgogICAgIH0KIAogICAgIHN3aXRjaCAoc3R5bGUgPyBzdHlsZS0+Y3Vyc29yKCkgOiBDVVJTT1Jf
QVVUTykgewotICAgICAgICBjYXNlIENVUlNPUl9BVVRPOiB7Ci0gICAgICAgICAgICBib29sIGVk
aXRhYmxlID0gKG5vZGUgJiYgbm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSk7Ci0gICAgICAgICAg
ICBib29sIGVkaXRhYmxlTGlua0VuYWJsZWQgPSBmYWxzZTsKLQotICAgICAgICAgICAgLy8gSWYg
dGhlIGxpbmsgaXMgZWRpdGFibGUsIHRoZW4gd2UgbmVlZCB0byBjaGVjayB0aGUgc2V0dGluZ3Mg
dG8gc2VlIHdoZXRoZXIgb3Igbm90IHRoZSBsaW5rIHNob3VsZCBiZSBmb2xsb3dlZAotICAgICAg
ICAgICAgaWYgKGVkaXRhYmxlKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG1fZnJhbWUtPnNl
dHRpbmdzKCkpOwotICAgICAgICAgICAgICAgIHN3aXRjaCAobV9mcmFtZS0+c2V0dGluZ3MoKS0+
ZWRpdGFibGVMaW5rQmVoYXZpb3IoKSkgewotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgICAgICBjYXNlIEVkaXRhYmxlTGlua0RlZmF1bHRCZWhhdmlvcjoKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSBFZGl0YWJsZUxpbmtBbHdheXNMaXZlOgotICAgICAgICAg
ICAgICAgICAgICAgICAgZWRpdGFibGVMaW5rRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICAgICBjYXNlIEVkaXRhYmxlTGlu
a05ldmVyTGl2ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlTGlua0VuYWJsZWQg
PSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgRWRpdGFibGVMaW5rTGl2ZVdoZW5Ob3RGb2N1c2VkOgotICAgICAgICAgICAg
ICAgICAgICAgICAgZWRpdGFibGVMaW5rRW5hYmxlZCA9IG5vZGVJc05vdEJlaW5nRWRpdGVkKG5v
ZGUsIG1fZnJhbWUpIHx8IGV2ZW50LmV2ZW50KCkuc2hpZnRLZXkoKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBFZGl0YWJsZUxpbmtPbmx5TGl2ZVdpdGhTaGlmdEtleToKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGVkaXRhYmxlTGlua0VuYWJsZWQgPSBldmVudC5ldmVudCgpLnNoaWZ0S2V5KCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9CisgICAgY2FzZSBDVVJTT1JfQVVUTzogeworICAgICAgICBib29sIGVkaXRhYmxl
ID0gKG5vZGUgJiYgbm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSk7CisgICAgICAgIGJvb2wgZWRp
dGFibGVMaW5rRW5hYmxlZCA9IGZhbHNlOworCisgICAgICAgIC8vIElmIHRoZSBsaW5rIGlzIGVk
aXRhYmxlLCB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgdGhlIHNldHRpbmdzIHRvIHNlZSB3aGV0aGVy
IG9yIG5vdCB0aGUgbGluayBzaG91bGQgYmUgZm9sbG93ZWQKKyAgICAgICAgaWYgKGVkaXRhYmxl
KSB7CisgICAgICAgICAgICBBU1NFUlQobV9mcmFtZS0+c2V0dGluZ3MoKSk7CisgICAgICAgICAg
ICBzd2l0Y2ggKG1fZnJhbWUtPnNldHRpbmdzKCktPmVkaXRhYmxlTGlua0JlaGF2aW9yKCkpIHsK
KyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjYXNlIEVkaXRhYmxlTGlua0RlZmF1
bHRCZWhhdmlvcjoKKyAgICAgICAgICAgIGNhc2UgRWRpdGFibGVMaW5rQWx3YXlzTGl2ZToKKyAg
ICAgICAgICAgICAgICBlZGl0YWJsZUxpbmtFbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBFZGl0YWJsZUxpbmtOZXZlckxpdmU6CisgICAg
ICAgICAgICAgICAgZWRpdGFibGVMaW5rRW5hYmxlZCA9IGZhbHNlOworICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICBjYXNlIEVkaXRhYmxlTGlua0xpdmVXaGVuTm90Rm9jdXNl
ZDoKKyAgICAgICAgICAgICAgICBlZGl0YWJsZUxpbmtFbmFibGVkID0gbm9kZUlzTm90QmVpbmdF
ZGl0ZWQobm9kZSwgbV9mcmFtZSkgfHwgZXZlbnQuZXZlbnQoKS5zaGlmdEtleSgpOworICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoKGV2ZW50Lmlz
T3ZlckxpbmsoKSB8fCBpc1N1Ym1pdEltYWdlKG5vZGUpKSAmJiAoIWVkaXRhYmxlIHx8IGVkaXRh
YmxlTGlua0VuYWJsZWQpKQotICAgICAgICAgICAgICAgIHJldHVybiBoYW5kQ3Vyc29yKCk7Ci0g
ICAgICAgICAgICBib29sIGluUmVzaXplciA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKHJlbmRl
cmVyKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFJlbmRlckxheWVyKiBsYXllciA9IHJlbmRlcmVy
LT5lbmNsb3NpbmdMYXllcigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChGcmFtZVZpZXcq
IHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBpblJlc2l6
ZXIgPSBsYXllci0+aXNQb2ludEluUmVzaXplQ29udHJvbCh2aWV3LT53aW5kb3dUb0NvbnRlbnRz
KGV2ZW50LmV2ZW50KCkucG9zKCkpKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBj
YXNlIEVkaXRhYmxlTGlua09ubHlMaXZlV2l0aFNoaWZ0S2V5OgorICAgICAgICAgICAgICAgIGVk
aXRhYmxlTGlua0VuYWJsZWQgPSBldmVudC5ldmVudCgpLnNoaWZ0S2V5KCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKGVkaXRhYmxlIHx8
IChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNUZXh0KCkgJiYgbm9kZS0+Y2FuU3RhcnRTZWxlY3Rp
b24oKSkpICYmICFpblJlc2l6ZXIgJiYgIXNjcm9sbGJhcikKLSAgICAgICAgICAgICAgICByZXR1
cm4gaUJlYW1DdXJzb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBwb2ludGVyQ3Vyc29yKCk7CiAg
ICAgICAgIH0KLSAgICAgICAgY2FzZSBDVVJTT1JfQ1JPU1M6Ci0gICAgICAgICAgICByZXR1cm4g
Y3Jvc3NDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1JfUE9JTlRFUjoKKworICAgICAgICBp
ZiAoKGV2ZW50LmlzT3ZlckxpbmsoKSB8fCBpc1N1Ym1pdEltYWdlKG5vZGUpKSAmJiAoIWVkaXRh
YmxlIHx8IGVkaXRhYmxlTGlua0VuYWJsZWQpKQogICAgICAgICAgICAgcmV0dXJuIGhhbmRDdXJz
b3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1JfTU9WRToKLSAgICAgICAgICAgIHJldHVybiBtb3Zl
Q3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX0FMTF9TQ1JPTEw6Ci0gICAgICAgICAgICBy
ZXR1cm4gbW92ZUN1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9FX1JFU0laRToKLSAgICAg
ICAgICAgIHJldHVybiBlYXN0UmVzaXplQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX1df
UkVTSVpFOgotICAgICAgICAgICAgcmV0dXJuIHdlc3RSZXNpemVDdXJzb3IoKTsKLSAgICAgICAg
Y2FzZSBDVVJTT1JfTl9SRVNJWkU6Ci0gICAgICAgICAgICByZXR1cm4gbm9ydGhSZXNpemVDdXJz
b3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1JfU19SRVNJWkU6Ci0gICAgICAgICAgICByZXR1cm4g
c291dGhSZXNpemVDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1JfTkVfUkVTSVpFOgotICAg
ICAgICAgICAgcmV0dXJuIG5vcnRoRWFzdFJlc2l6ZUN1cnNvcigpOwotICAgICAgICBjYXNlIENV
UlNPUl9TV19SRVNJWkU6Ci0gICAgICAgICAgICByZXR1cm4gc291dGhXZXN0UmVzaXplQ3Vyc29y
KCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX05XX1JFU0laRToKLSAgICAgICAgICAgIHJldHVybiBu
b3J0aFdlc3RSZXNpemVDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1JfU0VfUkVTSVpFOgot
ICAgICAgICAgICAgcmV0dXJuIHNvdXRoRWFzdFJlc2l6ZUN1cnNvcigpOwotICAgICAgICBjYXNl
IENVUlNPUl9OU19SRVNJWkU6Ci0gICAgICAgICAgICByZXR1cm4gbm9ydGhTb3V0aFJlc2l6ZUN1
cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9FV19SRVNJWkU6Ci0gICAgICAgICAgICByZXR1
cm4gZWFzdFdlc3RSZXNpemVDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1JfTkVTV19SRVNJ
WkU6Ci0gICAgICAgICAgICByZXR1cm4gbm9ydGhFYXN0U291dGhXZXN0UmVzaXplQ3Vyc29yKCk7
Ci0gICAgICAgIGNhc2UgQ1VSU09SX05XU0VfUkVTSVpFOgotICAgICAgICAgICAgcmV0dXJuIG5v
cnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9DT0xf
UkVTSVpFOgotICAgICAgICAgICAgcmV0dXJuIGNvbHVtblJlc2l6ZUN1cnNvcigpOwotICAgICAg
ICBjYXNlIENVUlNPUl9ST1dfUkVTSVpFOgotICAgICAgICAgICAgcmV0dXJuIHJvd1Jlc2l6ZUN1
cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9URVhUOgorICAgICAgICBib29sIGluUmVzaXpl
ciA9IGZhbHNlOworICAgICAgICBpZiAocmVuZGVyZXIpIHsKKyAgICAgICAgICAgIGlmIChSZW5k
ZXJMYXllciogbGF5ZXIgPSByZW5kZXJlci0+ZW5jbG9zaW5nTGF5ZXIoKSkgeworICAgICAgICAg
ICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCisgICAgICAgICAg
ICAgICAgICAgIGluUmVzaXplciA9IGxheWVyLT5pc1BvaW50SW5SZXNpemVDb250cm9sKHZpZXct
PndpbmRvd1RvQ29udGVudHMoZXZlbnQuZXZlbnQoKS5wb3MoKSkpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGlmICgoZWRpdGFibGUgfHwgKHJlbmRlcmVyICYmIHJlbmRlcmVy
LT5pc1RleHQoKSAmJiBub2RlLT5jYW5TdGFydFNlbGVjdGlvbigpKSkgJiYgIWluUmVzaXplciAm
JiAhc2Nyb2xsYmFyKQogICAgICAgICAgICAgcmV0dXJuIGlCZWFtQ3Vyc29yKCk7Ci0gICAgICAg
IGNhc2UgQ1VSU09SX1dBSVQ6Ci0gICAgICAgICAgICByZXR1cm4gd2FpdEN1cnNvcigpOwotICAg
ICAgICBjYXNlIENVUlNPUl9IRUxQOgotICAgICAgICAgICAgcmV0dXJuIGhlbHBDdXJzb3IoKTsK
LSAgICAgICAgY2FzZSBDVVJTT1JfVkVSVElDQUxfVEVYVDoKLSAgICAgICAgICAgIHJldHVybiB2
ZXJ0aWNhbFRleHRDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1JfQ0VMTDoKLSAgICAgICAg
ICAgIHJldHVybiBjZWxsQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX0NPTlRFWFRfTUVO
VToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0TWVudUN1cnNvcigpOwotICAgICAgICBjYXNl
IENVUlNPUl9QUk9HUkVTUzoKLSAgICAgICAgICAgIHJldHVybiBwcm9ncmVzc0N1cnNvcigpOwot
ICAgICAgICBjYXNlIENVUlNPUl9OT19EUk9QOgotICAgICAgICAgICAgcmV0dXJuIG5vRHJvcEN1
cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9BTElBUzoKLSAgICAgICAgICAgIHJldHVybiBh
bGlhc0N1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9DT1BZOgotICAgICAgICAgICAgcmV0
dXJuIGNvcHlDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1JfTk9ORToKLSAgICAgICAgICAg
IHJldHVybiBub25lQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX05PVF9BTExPV0VEOgot
ICAgICAgICAgICAgcmV0dXJuIG5vdEFsbG93ZWRDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJT
T1JfREVGQVVMVDoKLSAgICAgICAgICAgIHJldHVybiBwb2ludGVyQ3Vyc29yKCk7Ci0gICAgICAg
IGNhc2UgQ1VSU09SX1dFQktJVF9aT09NX0lOOgotICAgICAgICAgICAgcmV0dXJuIHpvb21JbkN1
cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9XRUJLSVRfWk9PTV9PVVQ6Ci0gICAgICAgICAg
ICByZXR1cm4gem9vbU91dEN1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9XRUJLSVRfR1JB
QjoKLSAgICAgICAgICAgIHJldHVybiBncmFiQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09S
X1dFQktJVF9HUkFCQklORzoKLSAgICAgICAgICAgIHJldHVybiBncmFiYmluZ0N1cnNvcigpOwor
ICAgICAgICByZXR1cm4gcG9pbnRlckN1cnNvcigpOworICAgIH0KKyAgICBjYXNlIENVUlNPUl9D
Uk9TUzoKKyAgICAgICAgcmV0dXJuIGNyb3NzQ3Vyc29yKCk7CisgICAgY2FzZSBDVVJTT1JfUE9J
TlRFUjoKKyAgICAgICAgcmV0dXJuIGhhbmRDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9NT1ZF
OgorICAgICAgICByZXR1cm4gbW92ZUN1cnNvcigpOworICAgIGNhc2UgQ1VSU09SX0FMTF9TQ1JP
TEw6CisgICAgICAgIHJldHVybiBtb3ZlQ3Vyc29yKCk7CisgICAgY2FzZSBDVVJTT1JfRV9SRVNJ
WkU6CisgICAgICAgIHJldHVybiBlYXN0UmVzaXplQ3Vyc29yKCk7CisgICAgY2FzZSBDVVJTT1Jf
V19SRVNJWkU6CisgICAgICAgIHJldHVybiB3ZXN0UmVzaXplQ3Vyc29yKCk7CisgICAgY2FzZSBD
VVJTT1JfTl9SRVNJWkU6CisgICAgICAgIHJldHVybiBub3J0aFJlc2l6ZUN1cnNvcigpOworICAg
IGNhc2UgQ1VSU09SX1NfUkVTSVpFOgorICAgICAgICByZXR1cm4gc291dGhSZXNpemVDdXJzb3Io
KTsKKyAgICBjYXNlIENVUlNPUl9ORV9SRVNJWkU6CisgICAgICAgIHJldHVybiBub3J0aEVhc3RS
ZXNpemVDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9TV19SRVNJWkU6CisgICAgICAgIHJldHVy
biBzb3V0aFdlc3RSZXNpemVDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9OV19SRVNJWkU6Cisg
ICAgICAgIHJldHVybiBub3J0aFdlc3RSZXNpemVDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9T
RV9SRVNJWkU6CisgICAgICAgIHJldHVybiBzb3V0aEVhc3RSZXNpemVDdXJzb3IoKTsKKyAgICBj
YXNlIENVUlNPUl9OU19SRVNJWkU6CisgICAgICAgIHJldHVybiBub3J0aFNvdXRoUmVzaXplQ3Vy
c29yKCk7CisgICAgY2FzZSBDVVJTT1JfRVdfUkVTSVpFOgorICAgICAgICByZXR1cm4gZWFzdFdl
c3RSZXNpemVDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9ORVNXX1JFU0laRToKKyAgICAgICAg
cmV0dXJuIG5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZUN1cnNvcigpOworICAgIGNhc2UgQ1VSU09S
X05XU0VfUkVTSVpFOgorICAgICAgICByZXR1cm4gbm9ydGhXZXN0U291dGhFYXN0UmVzaXplQ3Vy
c29yKCk7CisgICAgY2FzZSBDVVJTT1JfQ09MX1JFU0laRToKKyAgICAgICAgcmV0dXJuIGNvbHVt
blJlc2l6ZUN1cnNvcigpOworICAgIGNhc2UgQ1VSU09SX1JPV19SRVNJWkU6CisgICAgICAgIHJl
dHVybiByb3dSZXNpemVDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9URVhUOgorICAgICAgICBy
ZXR1cm4gaUJlYW1DdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9XQUlUOgorICAgICAgICByZXR1
cm4gd2FpdEN1cnNvcigpOworICAgIGNhc2UgQ1VSU09SX0hFTFA6CisgICAgICAgIHJldHVybiBo
ZWxwQ3Vyc29yKCk7CisgICAgY2FzZSBDVVJTT1JfVkVSVElDQUxfVEVYVDoKKyAgICAgICAgcmV0
dXJuIHZlcnRpY2FsVGV4dEN1cnNvcigpOworICAgIGNhc2UgQ1VSU09SX0NFTEw6CisgICAgICAg
IHJldHVybiBjZWxsQ3Vyc29yKCk7CisgICAgY2FzZSBDVVJTT1JfQ09OVEVYVF9NRU5VOgorICAg
ICAgICByZXR1cm4gY29udGV4dE1lbnVDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9QUk9HUkVT
UzoKKyAgICAgICAgcmV0dXJuIHByb2dyZXNzQ3Vyc29yKCk7CisgICAgY2FzZSBDVVJTT1JfTk9f
RFJPUDoKKyAgICAgICAgcmV0dXJuIG5vRHJvcEN1cnNvcigpOworICAgIGNhc2UgQ1VSU09SX0FM
SUFTOgorICAgICAgICByZXR1cm4gYWxpYXNDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9DT1BZ
OgorICAgICAgICByZXR1cm4gY29weUN1cnNvcigpOworICAgIGNhc2UgQ1VSU09SX05PTkU6Cisg
ICAgICAgIHJldHVybiBub25lQ3Vyc29yKCk7CisgICAgY2FzZSBDVVJTT1JfTk9UX0FMTE9XRUQ6
CisgICAgICAgIHJldHVybiBub3RBbGxvd2VkQ3Vyc29yKCk7CisgICAgY2FzZSBDVVJTT1JfREVG
QVVMVDoKKyAgICAgICAgcmV0dXJuIHBvaW50ZXJDdXJzb3IoKTsKKyAgICBjYXNlIENVUlNPUl9X
RUJLSVRfWk9PTV9JTjoKKyAgICAgICAgcmV0dXJuIHpvb21JbkN1cnNvcigpOworICAgIGNhc2Ug
Q1VSU09SX1dFQktJVF9aT09NX09VVDoKKyAgICAgICAgcmV0dXJuIHpvb21PdXRDdXJzb3IoKTsK
KyAgICBjYXNlIENVUlNPUl9XRUJLSVRfR1JBQjoKKyAgICAgICAgcmV0dXJuIGdyYWJDdXJzb3Io
KTsKKyAgICBjYXNlIENVUlNPUl9XRUJLSVRfR1JBQkJJTkc6CisgICAgICAgIHJldHVybiBncmFi
YmluZ0N1cnNvcigpOwogICAgIH0KICAgICByZXR1cm4gcG9pbnRlckN1cnNvcigpOwogfQpAQCAt
MTYwOCwxNSArMTYwOCwxNSBAQCBib29sIEV2ZW50SGFuZGxlcjo6Y2FuSGFuZGxlRHJhZ0FuZERy
b3BGb3JUYXJnZXQoRHJhZ0FuZERyb3BIYW5kbGVUeXBlIHR5cGUsIE5vZAogICAgICAgICBGcmFt
ZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KHRhcmdldCktPmNv
bnRlbnRGcmFtZSgpOwogICAgICAgICBpZiAoZnJhbWUpIHsKICAgICAgICAgICAgIHN3aXRjaCAo
dHlwZSkgewotICAgICAgICAgICAgICAgIGNhc2UgVXBkYXRlRHJhZ0FuZERyb3A6Ci0gICAgICAg
ICAgICAgICAgICAgIHdhc0FjY2VwdGVkID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT51cGRhdGVE
cmFnQW5kRHJvcChldmVudCwgY2xpcGJvYXJkKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSBDYW5jZWxEcmFnQW5kRHJvcDoKLSAgICAgICAgICAgICAg
ICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5jYW5jZWxEcmFnQW5kRHJvcChldmVudCwgY2xp
cGJvYXJkKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBQZXJmb3JtRHJhZ0FuZERyb3A6Ci0gICAgICAgICAgICAgICAgICAgIHdhc0FjY2VwdGVkID0g
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5wZXJmb3JtRHJhZ0FuZERyb3AoZXZlbnQsIGNsaXBib2Fy
ZCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBVcGRhdGVE
cmFnQW5kRHJvcDoKKyAgICAgICAgICAgICAgICB3YXNBY2NlcHRlZCA9IGZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+dXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIGNsaXBib2FyZCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENhbmNlbERyYWdBbmREcm9wOgorICAgICAg
ICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+Y2FuY2VsRHJhZ0FuZERyb3AoZXZlbnQs
IGNsaXBib2FyZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFBl
cmZvcm1EcmFnQW5kRHJvcDoKKyAgICAgICAgICAgICAgICB3YXNBY2NlcHRlZCA9IGZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+cGVyZm9ybURyYWdBbmREcm9wKGV2ZW50LCBjbGlwYm9hcmQpOworICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNl
CkBAIC0xODYyLDkgKzE4NjIsOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hNb3VzZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBOb2RlKiB0YXJnZQogICAgICAgICAg
ICAgICAgIC8vIHdpbGwgc2V0IGEgc2VsZWN0aW9uIGluc2lkZSBpdCwgd2hpY2ggd2lsbCBjYWxs
IHNldEZvY3VzZU5vZGVJZk5lZWRlZC4KICAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICAgICAgICAgICAgICBOb2RlKiBuID0gbm9kZS0+aXNTaGFkb3dOb2RlKCkgPyBu
b2RlLT5zaGFkb3dQYXJlbnROb2RlKCkgOiBub2RlOwotICAgICAgICAgICAgICAgIGlmIChtX2Zy
YW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpICYmIAotICAgICAgICAgICAgICAgICAgICBtX2Zy
YW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKS0+Y29tcGFyZU5vZGUobiwgZWMp
ID09IFJhbmdlOjpOT0RFX0lOU0lERSAmJgotICAgICAgICAgICAgICAgICAgICBuLT5pc0Rlc2Nl
bmRhbnRPZihtX2ZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpKSkKKyAgICAgICAgICAg
ICAgICBpZiAobV9mcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKQorICAgICAgICAgICAgICAg
ICAgICAmJiBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKS0+Y29tcGFy
ZU5vZGUobiwgZWMpID09IFJhbmdlOjpOT0RFX0lOU0lERQorICAgICAgICAgICAgICAgICAgICAm
JiBuLT5pc0Rlc2NlbmRhbnRPZihtX2ZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIwMDUsMTEgKzIwMDUsMTEgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
ZXZlbnQpCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIGNvbmZpZ3VyYWJs
ZSBieSBlbWJlZGRlcnMuIENvbnNpZGVyIG1ha2luZyBpdCBhIFdlYlByZWZlcmVuY2VzIHNldHRp
bmcuCiAgICAgLy8gU2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUyNzkKICNpZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oQ0hST01JVU0pCi0gICAgaWYg
KCFtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+Y29udGFpbnModmlld3BvcnRQb3MpICYmIAorICAgIGlm
ICghbV9mcmFtZS0+c2VsZWN0aW9uKCktPmNvbnRhaW5zKHZpZXdwb3J0UG9zKQogICAgICAgICAv
LyBGSVhNRTogSW4gdGhlIGVkaXRhYmxlIGNhc2UsIHdvcmQgc2VsZWN0aW9uIHNvbWV0aW1lcyBz
ZWxlY3RzIGNvbnRlbnQgdGhhdCBpc24ndCB1bmRlcm5lYXRoIHRoZSBtb3VzZS4KICAgICAgICAg
Ly8gSWYgdGhlIHNlbGVjdGlvbiBpcyBub24tZWRpdGFibGUsIHdlIGRvIHdvcmQgc2VsZWN0aW9u
IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHVzZSB0aGUgY29udGV4dHVhbCBtZW51IGl0ZW1zCiAgICAg
ICAgIC8vIGF2YWlsYWJsZSBmb3IgdGV4dCBzZWxlY3Rpb25zLiAgQnV0IG9ubHkgaWYgd2UncmUg
YWJvdmUgdGV4dC4KLSAgICAgICAgKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5pc0NvbnRlbnRFZGl0
YWJsZSgpIHx8IChtZXYudGFyZ2V0Tm9kZSgpICYmIG1ldi50YXJnZXROb2RlKCktPmlzVGV4dE5v
ZGUoKSkpKSB7CisgICAgICAgICYmIChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+aXNDb250ZW50RWRp
dGFibGUoKSB8fCAobWV2LnRhcmdldE5vZGUoKSAmJiBtZXYudGFyZ2V0Tm9kZSgpLT5pc1RleHRO
b2RlKCkpKSkgewogICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0U2VsZWN0ID0gdHJ1ZTsgLy8g
Y29udGV4dCBtZW51IGV2ZW50cyBhcmUgYWx3YXlzIGFsbG93ZWQgdG8gcGVyZm9ybSBhIHNlbGVj
dGlvbgogICAgICAgICBzZWxlY3RDbG9zZXN0V29yZE9yTGlua0Zyb21Nb3VzZUV2ZW50KG1ldik7
CiAgICAgfQpAQCAtMjI4NSwxNiArMjI4NSwxMyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6aGFuZGxl
S2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAo
a2V5ID09ICJVcCIpIHsKICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeSgoaXNT
aGlmdGVkKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xs
ZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCAoaXNDb21tYW5kZWQpID8g
RG9jdW1lbnRCb3VuZGFyeSA6IExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgICAgIGV2ZW50
LT5zZXREZWZhdWx0SGFuZGxlZCgpOwotICAgIH0KLSAgICBlbHNlIGlmIChrZXkgPT0gIkRvd24i
KSB7IAorICAgIH0gZWxzZSBpZiAoa2V5ID09ICJEb3duIikgewogICAgICAgICBtX2ZyYW1lLT5z
ZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhU
RU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9S
V0FSRCwgKGlzQ29tbWFuZGVkKSA/IERvY3VtZW50Qm91bmRhcnkgOiBMaW5lR3JhbnVsYXJpdHks
IHRydWUpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKLSAgICB9Ci0gICAg
ZWxzZSBpZiAoa2V5ID09ICJMZWZ0IikgeworICAgIH0gZWxzZSBpZiAoa2V5ID09ICJMZWZ0Iikg
ewogICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6TEVGVCwgKGlzQ29tbWFuZGVkKSA/IExpbmVCb3VuZGFyeSA6IChp
c09wdGlvbmVkKSA/IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVl
KTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0gICAgfQotICAgIGVsc2Ug
aWYgKGtleSA9PSAiUmlnaHQiKSB7CisgICAgfSBlbHNlIGlmIChrZXkgPT0gIlJpZ2h0Iikgewog
ICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0
aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6UklHSFQsIChpc0NvbW1hbmRlZCkgPyBMaW5lQm91bmRhcnkgOiAoaXNP
cHRpb25lZCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7
CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0gICAgCkBAIC0yNDI3
LDcgKzI0MjQsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFy
dERyYWcgJiYgIWRyYWdTdGF0ZSgpLm1fZHJhZ1NyYykgewogICAgICAgICBhbGxvd0RIVE1MRHJh
ZyhkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MLCBkcmFnU3RhdGUoKS5tX2RyYWdTcmNN
YXlCZVVBKTsKICAgICAgICAgaWYgKCFkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MICYm
ICFkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZVVBKQotICAgICAgICAgICAgbV9tb3VzZURvd25N
YXlTdGFydERyYWcgPSBmYWxzZTsgICAgIC8vIG5vIGVsZW1lbnQgaXMgZHJhZ2dhYmxlCisgICAg
ICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOyAvLyBubyBlbGVtZW50IGlz
IGRyYWdnYWJsZQogICAgIH0KIAogICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJhZyAmJiAh
ZHJhZ1N0YXRlKCkubV9kcmFnU3JjKSB7CkBAIC0yNDQzLDcgKzI0NDAsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBl
dmVudCkKICAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyA9IDA7CiAgICAgICAgIAog
ICAgICAgICBpZiAoIWRyYWdTdGF0ZSgpLm1fZHJhZ1NyYykKLSAgICAgICAgICAgIG1fbW91c2VE
b3duTWF5U3RhcnREcmFnID0gZmFsc2U7ICAgICAvLyBubyBlbGVtZW50IGlzIGRyYWdnYWJsZQor
ICAgICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsgLy8gbm8gZWxlbWVu
dCBpcyBkcmFnZ2FibGUKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyByZW1lbWJlciBz
b21lIGZhY3RzIGFib3V0IHRoaXMgc291cmNlLCB3aGlsZSB3ZSBoYXZlIGEgSGl0VGVzdFJlc3Vs
dCBoYW5keQogICAgICAgICAgICAgbm9kZSA9IHJlc3VsdC5VUkxFbGVtZW50KCk7CkBAIC0yNDgz
LDggKzI0ODAsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKICAgICAKICAgICBEcmFnT3BlcmF0aW9uIHNy
Y09wID0gRHJhZ09wZXJhdGlvbk5vbmU7ICAgICAgCiAgICAgCi0gICAgZnJlZUNsaXBib2FyZCgp
OyAgICAvLyB3b3VsZCBvbmx5IGhhcHBlbiBpZiB3ZSBtaXNzZWQgYSBkcmFnRW5kLiAgRG8gaXQg
YW55d2F5LCBqdXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBtYWtlIHN1cmUgaXQg
Z2V0cyBudW1iaWZpZWQKKyAgICBmcmVlQ2xpcGJvYXJkKCk7IC8vIHdvdWxkIG9ubHkgaGFwcGVu
IGlmIHdlIG1pc3NlZCBhIGRyYWdFbmQuICBEbyBpdCBhbnl3YXksIGp1c3QKKyAgICAgICAgICAg
ICAgICAgICAgIC8vIHRvIG1ha2Ugc3VyZSBpdCBnZXRzIG51bWJpZmllZAogICAgIGRyYWdTdGF0
ZSgpLm1fZHJhZ0NsaXBib2FyZCA9IGNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKCk7ICAKICAgICAK
ICAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjTWF5QmVESFRNTCkgewpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggZDRjNzljNi4uODllODk0YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAt
MDUtMzAgIEx5b24gQ2hlbiAgPGxpYWNoZW5AcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgY29kaW5nIHN0eWxlIGNsZWFu
dXAgYmVmb3JlIGZpeGluZyB0byBidWcgMzU1MzAuCisKKyAgICAgICAgRW51bSB2YWx1ZSBGT1JX
QVJELCBCQUNLV0FSRCwgUklHSFQsIExFRlQgYXJlIGNhdXNpbmcgbWFjcm8gY29uZmxpY3RzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU1MzAKKwor
ICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUltcGw6OmZpbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OnNjb3BlU3RyaW5n
TWF0Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6Y3JlYXRlQ2hpbGRGcmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6c2hvdWxkU2NvcGVNYXRjaGVzKToK
KwogMjAxMC0wNS0zMCAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUlt
cGwuY3BwCmluZGV4IGI2Nzg0NTkuLjM3NzY2MTAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1l
SW1wbC5jcHAKQEAgLTc1LDIxICs3NSwyMCBAQAogI2luY2x1ZGUgIkNocm9taXVtQnJpZGdlLmgi
CiAjaW5jbHVkZSAiQ2xpcGJvYXJkVXRpbGl0aWVzQ2hyb21pdW0uaCIKICNpbmNsdWRlICJDb25z
b2xlLmgiCisjaW5jbHVkZSAiRE9NVXRpbGl0aWVzUHJpdmF0ZS5oIgorI2luY2x1ZGUgIkRPTVdp
bmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVu
dC5oIiAvLyBPbmx5IG5lZWRlZCBmb3IgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCA6KAogI2lu
Y2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXIuaCIKLSNp
bmNsdWRlICJET01VdGlsaXRpZXNQcml2YXRlLmgiCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAj
aW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAi
Rm9ybVN0YXRlLmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxv
YWRSZXF1ZXN0LmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVRy
ZWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKLSNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgi
CiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJF
bGVtZW50LmgiCkBAIC05Nyw4ICs5Niw4IEBACiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgor
I2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5o
IgotI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybUNvbnRleHRTa2lhLmgiCiAjaW5jbHVkZSAiUGx1Z2luRG9jdW1lbnQuaCIKQEAgLTExMyw4
ICsxMTIsOCBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3Jp
cHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJTY3Jv
bGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCisjaW5jbHVkZSAiU2Nyb2xs
YmFyVGhlbWUuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKICNpbmNsdWRlICJTa2lhVXRpbHMuaCIKQEAgLTE0MSw2ICsxNDAsNyBAQAog
I2luY2x1ZGUgIldlYlZlY3Rvci5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5jbHVk
ZSAiWFBhdGhSZXN1bHQuaCIKKyNpbmNsdWRlICJtYXJrdXAuaCIKIAogI2luY2x1ZGUgPGFsZ29y
aXRobT4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTEyOTAsNyArMTI5MCw3IEBA
IGJvb2wgV2ViRnJhbWVJbXBsOjpmaW5kKGludCBpZGVudGlmaWVyLAogICAgIGlmICghb3B0aW9u
cy5maW5kTmV4dCkKICAgICAgICAgZnJhbWUoKS0+cGFnZSgpLT51bm1hcmtBbGxUZXh0TWF0Y2hl
cygpOwogICAgIGVsc2UKLSAgICAgICAgc2V0TWFya2VyQWN0aXZlKG1fYWN0aXZlTWF0Y2guZ2V0
KCksIGZhbHNlKTsgIC8vIEFjdGl2ZSBtYXRjaCBpcyBjaGFuZ2luZy4KKyAgICAgICAgc2V0TWFy
a2VyQWN0aXZlKG1fYWN0aXZlTWF0Y2guZ2V0KCksIGZhbHNlKTsgLy8gQWN0aXZlIG1hdGNoIGlz
IGNoYW5naW5nLgogCiAgICAgLy8gU3RhcnRzIHRoZSBzZWFyY2ggZnJvbSB0aGUgY3VycmVudCBz
ZWxlY3Rpb24uCiAgICAgYm9vbCBzdGFydEluU2VsZWN0aW9uID0gdHJ1ZTsKQEAgLTEzMzAsNyAr
MTMzMCw3IEBAIGJvb2wgV2ViRnJhbWVJbXBsOjpmaW5kKGludCBpZGVudGlmaWVyLAogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIG1fYWN0aXZlTWF0Y2ggPSBuZXdTZWxlY3Rpb24udG9Ob3Jt
YWxpemVkUmFuZ2UoKTsKICAgICAgICAgICAgIGN1cnJTZWxlY3Rpb25SZWN0ID0gbV9hY3RpdmVN
YXRjaC0+Ym91bmRpbmdCb3goKTsKLSAgICAgICAgICAgIHNldE1hcmtlckFjdGl2ZShtX2FjdGl2
ZU1hdGNoLmdldCgpLCB0cnVlKTsgIC8vIEFjdGl2ZS4KKyAgICAgICAgICAgIHNldE1hcmtlckFj
dGl2ZShtX2FjdGl2ZU1hdGNoLmdldCgpLCB0cnVlKTsgLy8gQWN0aXZlLgogICAgICAgICAgICAg
Ly8gV2ViS2l0IGRyYXdzIHRoZSBoaWdobGlnaHRpbmcgZm9yIGFsbCBtYXRjaGVzLgogICAgICAg
ICAgICAgZXhlY3V0ZUNvbW1hbmQoV2ViU3RyaW5nOjpmcm9tVVRGOCgiVW5zZWxlY3QiKSk7CiAg
ICAgICAgIH0KQEAgLTE0MjUsNyArMTQyNSw3IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpzY29wZVN0
cmluZ01hdGNoZXMoaW50IGlkZW50aWZpZXIsCiAgICAgICAgICAgICBpZGVudGlmaWVyLAogICAg
ICAgICAgICAgc2VhcmNoVGV4dCwKICAgICAgICAgICAgIG9wdGlvbnMsCi0gICAgICAgICAgICBm
YWxzZSk7ICAvLyBmYWxzZT13ZSBqdXN0IHJlc2V0LCBzbyBkb24ndCBkbyBpdCBhZ2Fpbi4KKyAg
ICAgICAgICAgIGZhbHNlKTsgLy8gZmFsc2U9d2UganVzdCByZXNldCwgc28gZG9uJ3QgZG8gaXQg
YWdhaW4uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0MzksNyArMTQzOSw3IEBAIHZv
aWQgV2ViRnJhbWVJbXBsOjpzY29wZVN0cmluZ01hdGNoZXMoaW50IGlkZW50aWZpZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Jlc3VtZVNjb3BpbmdGcm9tUmFuZ2UtPnN0YXJ0
T2Zmc2V0KGVjMikgKyAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWMpOwogICAg
ICAgICBpZiAoZWMgfHwgZWMyKSB7Ci0gICAgICAgICAgICBpZiAoZWMyKSAgLy8gQSBub24temVy
byB8ZWN8IGhhcHBlbnMgd2hlbiBuYXZpZ2F0aW5nIGR1cmluZyBzZWFyY2guCisgICAgICAgICAg
ICBpZiAoZWMyKSAvLyBBIG5vbi16ZXJvIHxlY3wgaGFwcGVucyB3aGVuIG5hdmlnYXRpbmcgZHVy
aW5nIHNlYXJjaC4KICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTQ0OCw3ICsxNDQ4LDcgQEAgdm9pZCBXZWJG
cmFtZUltcGw6OnNjb3BlU3RyaW5nTWF0Y2hlcyhpbnQgaWRlbnRpZmllciwKICAgICAvLyBUaGlz
IHRpbWVvdXQgY29udHJvbHMgaG93IGxvbmcgd2Ugc2NvcGUgYmVmb3JlIHJlbGVhc2luZyBjb250
cm9sLiAgVGhpcwogICAgIC8vIHZhbHVlIGRvZXMgbm90IHByZXZlbnQgdXMgZnJvbSBydW5uaW5n
IGZvciBsb25nZXIgdGhhbiB0aGlzLCBidXQgaXQgaXMKICAgICAvLyBwZXJpb2RpY2FsbHkgY2hl
Y2tlZCB0byBzZWUgaWYgd2UgaGF2ZSBleGNlZWRlZCBvdXIgYWxsb2NhdGVkIHRpbWUuCi0gICAg
Y29uc3QgZG91YmxlIG1heFNjb3BpbmdEdXJhdGlvbiA9IDAuMTsgIC8vIHNlY29uZHMKKyAgICBj
b25zdCBkb3VibGUgbWF4U2NvcGluZ0R1cmF0aW9uID0gMC4xOyAvLyBzZWNvbmRzCiAKICAgICBp
bnQgbWF0Y2hDb3VudCA9IDA7CiAgICAgYm9vbCB0aW1lZE91dCA9IGZhbHNlOwpAQCAtMTU1NSw4
ICsxNTU1LDggQEAgdm9pZCBXZWJGcmFtZUltcGw6OnNjb3BlU3RyaW5nTWF0Y2hlcyhpbnQgaWRl
bnRpZmllciwKICAgICAgICAgICAgIGlkZW50aWZpZXIsCiAgICAgICAgICAgICBzZWFyY2hUZXh0
LAogICAgICAgICAgICAgb3B0aW9ucywKLSAgICAgICAgICAgIGZhbHNlKTsgIC8vIGRvbid0IHJl
c2V0LgotICAgICAgICByZXR1cm47ICAvLyBEb25lIGZvciBub3csIHJlc3VtZSB3b3JrIGxhdGVy
LgorICAgICAgICAgICAgZmFsc2UpOyAvLyBkb24ndCByZXNldC4KKyAgICAgICAgcmV0dXJuOyAv
LyBEb25lIGZvciBub3csIHJlc3VtZSB3b3JrIGxhdGVyLgogICAgIH0KIAogICAgIC8vIFRoaXMg
ZnJhbWUgaGFzIG5vIGZ1cnRoZXIgc2NvcGluZyBsZWZ0LCBzbyBpdCBpcyBkb25lLiBPdGhlciBm
cmFtZXMgbWlnaHQsCkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJG
cmFtZUltcGw6OmNyZWF0ZUNoaWxkRnJhbWUoCiAgICAgLy8gaXQgaXMgbmVjZXNzYXJ5IHRvIGNo
ZWNrIHRoZSB2YWx1ZSBhZnRlciBjYWxsaW5nIGluaXQoKSBhbmQKICAgICAvLyByZXR1cm4gd2l0
aG91dCBsb2FkaW5nIFVSTC4KICAgICAvLyAoYjo3OTE2MTIpCi0gICAgY2hpbGRGcmFtZS0+aW5p
dCgpOyAgICAgIC8vIGNyZWF0ZSBhbiBlbXB0eSBkb2N1bWVudAorICAgIGNoaWxkRnJhbWUtPmlu
aXQoKTsgLy8gY3JlYXRlIGFuIGVtcHR5IGRvY3VtZW50CiAgICAgaWYgKCFjaGlsZEZyYW1lLT50
cmVlKCktPnBhcmVudCgpKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMjA2NSw3ICsyMDY1LDcg
QEAgYm9vbCBXZWJGcmFtZUltcGw6OnNob3VsZFNjb3BlTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHNl
YXJjaFRleHQpCiAgICAgICAgICAgICBzZWFyY2hUZXh0LnN1YnN0cmluZygwLCBtX2xhc3RTZWFy
Y2hTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgICAgIGlmIChwcmV2aW91c1NlYXJjaFByZWZpeCA9
PSBtX2xhc3RTZWFyY2hTdHJpbmcpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAvLyBEb24n
dCBzZWFyY2ggdGhpcyBmcmFtZSwgaXQgd2lsbCBiZSBmcnVpdGxlc3MuCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7IC8vIERvbid0IHNlYXJjaCB0aGlzIGZyYW1lLCBpdCB3aWxsIGJlIGZydWl0
bGVzcy4KICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlr
dS9DaGFuZ2VMb2cgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCmluZGV4IGM4MjFmMTIuLjRiNDc4
MjUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2hhaWt1
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA1LTI5ICBMeW9uIENoZW4gIDxsaWFj
aGVuQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBpcyBhIGNvZGluZyBzdHlsZSBjbGVhbnVwIGJlZm9yZSBmaXhpbmcgdG8gYnVn
IDM1NTMwLgorCisgICAgICAgIEVudW0gdmFsdWUgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBM
RUZUIGFyZSBjYXVzaW5nIG1hY3JvIGNvbmZsaWN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NTMwCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRI
YWlrdTo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisKIDIwMTAtMDUtMDMgIEplbnMgQWxma2UgIDxz
bmVqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRp
ZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3Uu
Y3BwIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcApp
bmRleCA0ODk1N2EwLi44ZWQ2NDBmIDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuY3BwCisrKyBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHAKQEAgLTM3LDEyICszNywxMSBAQAogI2luY2x1ZGUg
IkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiS2V5Ym9h
cmRFdmVudC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIldpbmRvd3NL
ZXlib2FyZENvZGVzLmgiCiAKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMjUyLDcgKzI1MSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50SGFp
a3U6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChzdGFydC0+aXNDb250ZW50RWRpdGFibGUoKSkgewotICAgICAgICBz
d2l0Y2goa2V2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgeworICAgICAgICBzd2l0Y2gg
KGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKICAgICAgICAgY2FzZSBWS19CQUNL
OgogICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtldmVudC0+Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5IDog
Q2hhcmFjdGVyR3JhbnVsYXJpdHksCkBAIC0yODcsMTAgKzI4NiwxMCBAQCB2b2lkIEVkaXRvckNs
aWVudEhhaWt1OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V2ZW50LT5jdHJsS2V5KCkgPyBQ
YXJhZ3JhcGhHcmFudWxhcml0eSA6IExpbmVHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRydWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgVktfUFJJT1I6ICAvLyBQYWdlVXAKKyAgICAgICAgY2FzZSBWS19QUklPUjogLy8gUGFn
ZVVwCiAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVVcEJ5UGFnZUFu
ZE1vZGlmeUNhcmV0Iik7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWS19ORVhU
OiAgLy8gUGFnZURvd24KKyAgICAgICAgY2FzZSBWS19ORVhUOiAvLyBQYWdlRG93bgogICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlRG93bkJ5UGFnZUFuZE1vZGlmeUNh
cmV0Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWS19SRVRVUk46CkBAIC0z
MzYsNyArMzM1LDggQEAgdm9pZCBFZGl0b3JDbGllbnRIYWlrdTo6aGFuZGxlS2V5Ym9hcmRFdmVu
dChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBl
bHNlIHJldHVybjsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIHN3aXRjaCAoa2V2ZW50LT53aW5kb3dz
VmlydHVhbEtleUNvZGUoKSkgewpAQCAtMzQ2LDEwICszNDYsMTAgQEAgdm9pZCBFZGl0b3JDbGll
bnRIYWlrdTo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAg
ICAgY2FzZSBWS19ET1dOOgogICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJN
b3ZlRG93biIpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVktfUFJJT1I6ICAv
LyBQYWdlVXAKKyAgICAgICAgY2FzZSBWS19QUklPUjogLy8gUGFnZVVwCiAgICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVVcEJ5UGFnZUFuZE1vZGlmeUNhcmV0Iik7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWS19ORVhUOiAgLy8gUGFnZURvd24KKyAg
ICAgICAgY2FzZSBWS19ORVhUOiAvLyBQYWdlRG93bgogICAgICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5jb21tYW5kKCJNb3ZlRG93bkJ5UGFnZUFuZE1vZGlmeUNhcmV0Iik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBWS19IT01FOgpAQCAtMzYyLDE3ICszNjIsMTggQEAgdm9p
ZCBFZGl0b3JDbGllbnRIYWlrdTo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBl
dmVudCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
aWYgKGtldmVudC0+Y3RybEtleSgpKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoKGtldmVudC0+
d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBWS19B
OgotICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJTZWxl
Y3RBbGwiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIFZLX0M6IGNhc2UgVktfWDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+Y29tbWFuZCgiQ29weSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgc3dpdGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0dWFs
S2V5Q29kZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBWS19BOgorICAgICAgICAgICAgICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlNlbGVjdEFsbCIpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFZLX0M6IGNhc2UgVktfWDoKKyAg
ICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJDb3B5Iik7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVs
c2UgcmV0dXJuOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgfQogICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggMjgz
ODk5NS4uMDE4YjJhMSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJL
aXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDUtMjkgIEx5b24gQ2hlbiAg
PGxpYWNoZW5AcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGlzIGEgY29kaW5nIHN0eWxlIGNsZWFudXAgYmVmb3JlIGZpeGluZyB0
byBidWcgMzU1MzAuCisKKyAgICAgICAgRW51bSB2YWx1ZSBGT1JXQVJELCBCQUNLV0FSRCwgUklH
SFQsIExFRlQgYXJlIGNhdXNpbmcgbWFjcm8gY29uZmxpY3RzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU1MzAKKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVu
dFF0OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNs
aWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKwogMjAxMC0wNS0yOSAgRGF3aXQgQWxlbWF5
ZWh1ICA8YWRhd2l0QGtkZS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0
LmNwcAppbmRleCA4M2FhMmE5Li5mYjgzNGE4IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRRdC5jcHAKQEAgLTMxLDkgKzMxLDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnRRdC5oIgogCi0jaW5jbHVkZSAicXdlYnBhZ2UuaCIK
LSNpbmNsdWRlICJxd2VicGFnZV9wLmgiCi0KICNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9u
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFZGl0Q29tbWFuZFF0LmgiCkBA
IC00NiwxNSArNDMsMTYgQEAKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIlFXZWJQYWdlQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJXaW5kb3dzS2V5Ym9hcmRDb2Rl
cy5oIgorI2luY2x1ZGUgInF3ZWJwYWdlLmgiCisjaW5jbHVkZSAicXdlYnBhZ2VfcC5oIgogCisj
aW5jbHVkZSA8UVVuZG9TdGFjaz4KICNpbmNsdWRlIDxzdGRpby5oPgogCi0jaW5jbHVkZSA8UVVu
ZG9TdGFjaz4KICNkZWZpbmUgbWV0aG9kRGVidWcoKSBxRGVidWcoIkVkaXRvckNsaWVudFF0OiAl
cyIsIF9fRlVOQ1RJT05fXyk7CiAKIHN0YXRpYyBRU3RyaW5nIGR1bXBQYXRoKFdlYkNvcmU6Ok5v
ZGUgKm5vZGUpCkBAIC0yNDcsOSArMjQ1LDggQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6cmVnaXN0
ZXJDb21tYW5kRm9yVW5kbyhXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQKIHsK
ICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5kLT5w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKG1f
aW5VbmRvUmVkbyB8fCAoZnJhbWUgJiYgIWZyYW1lLT5lZGl0b3IoKS0+bGFzdEVkaXRDb21tYW5k
KCkgLyogSEFDSyEhIERvbid0IHJlY3JlYXRlIHVuZG9zICovKSkgeworICAgIGlmIChtX2luVW5k
b1JlZG8gfHwgKGZyYW1lICYmICFmcmFtZS0+ZWRpdG9yKCktPmxhc3RFZGl0Q29tbWFuZCgpIC8q
IEhBQ0shISBEb24ndCByZWNyZWF0ZSB1bmRvcyAqLykpCiAgICAgICAgIHJldHVybjsKLSAgICB9
CiAgICAgbV9wYWdlLT51bmRvU3RhY2soKS0+cHVzaChuZXcgRWRpdENvbW1hbmRRdChjbWQpKTsK
ICNlbmRpZiAvLyBRVF9OT19VTkRPU1RBQ0sKIH0KQEAgLTM3OCwxMTggKzM3NSwxMjAgQEAgdm9p
ZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVu
dCkKICAgICAgICAgfSBlbHNlCiAjZW5kaWYgLy8gUVRfTk9fU0hPUlRDVVQKICAgICAgICAgc3dp
dGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7Ci0gICAgICAgICAgICBjYXNl
IFZLX0JBQ0s6Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGly
ZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELAotICAgICAgICAgICAgICAgICAg
ICAgICAgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVktfREVMRVRFOgotICAgICAgICAgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpG
T1JXQVJELAotICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZh
bHNlLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVktf
TEVGVDoKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAg
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVMZWZ0QW5kTW9kaWZ5U2Vs
ZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlTGVmdCIpLmV4ZWN1dGUoKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVktfUklHSFQ6Ci0gICAgICAg
ICAgICAgICAgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVj
dXRlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVSaWdodCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVktfVVA6Ci0gICAgICAgICAgICAgICAgaWYgKGtl
dmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKCJNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQo
Ik1vdmVVcCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgVktfRE9XTjoKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQot
ICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVEb3duQW5k
TW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlRG93biIpLmV4ZWN1
dGUoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVktfUFJJT1I6
ICAvLyBQYWdlVXAKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAg
ICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVQYWdlVXBBbmRN
b2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVQYWdlVXAiKS5leGVj
dXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZLX05FWFQ6
ICAvLyBQYWdlRG93bgotICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0g
ICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VEb3du
QW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZURvd24i
KS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZL
X1RBQjoKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIGlmIChrZXZlbnQtPnR5cGUoKSAhPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OktleURvd24gJiYgIWtldmVudC0+Y3RybEtleSgpCisgICAgICAgIGNhc2UgVktfQkFDSzoKKyAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25D
b250cm9sbGVyOjpCQUNLV0FSRCwKKyAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyR3JhbnVs
YXJpdHksIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZL
X0RFTEVURToKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlv
bihTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELAorICAgICAgICAgICAgICAgICAgICBDaGFy
YWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgVktfTEVGVDoKKyAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCisg
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlTGVmdEFuZE1vZGlm
eVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVMZWZ0IikuZXhlY3V0ZSgpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVktfUklHSFQ6CisgICAgICAgICAgICBpZiAoa2V2
ZW50LT5zaGlmdEtleSgpKQorICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFu
ZCgiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVJpZ2h0
IikuZXhlY3V0ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVktfVVA6Cisg
ICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQorICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29t
bWFuZCgiTW92ZVVwIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgVktfRE9XTjoKKyAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCisgICAgICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlRG93bkFuZE1vZGlmeVNlbGVj
dGlvbiIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVEb3duIikuZXhlY3V0ZSgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgVktfUFJJT1I6IC8vIFBhZ2VVcAorICAgICAgICAgICAgaWYg
KGtldmVudC0+c2hpZnRLZXkoKSkKKyAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3Zl
UGFnZVVwIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVktf
TkVYVDogLy8gUGFnZURvd24KKyAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCisg
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZURvd25BbmRN
b2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZURvd24iKS5leGVjdXRlKCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWS19UQUI6CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoa2V2ZW50LT50eXBlKCkg
IT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duICYmICFrZXZlbnQtPmN0cmxLZXkoKQog
I2lmbmRlZiBRX1dTX01BQwotICAgICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGV4Y2x1
ZGUgY2hlY2tpbmcgZm9yIEFsdCBiZWNhdXNlIGl0IGlzIGp1c3QgYSBkaWZmZXJlbnQgU2hpZnQK
LSAgICAgICAgICAgICAgICAgICAgJiYgIWtldmVudC0+YWx0S2V5KCkKKyAgICAgICAgICAgICAg
ICAvLyBXZSBuZWVkIHRvIGV4Y2x1ZGUgY2hlY2tpbmcgZm9yIEFsdCBiZWNhdXNlIGl0IGlzIGp1
c3QgYSBkaWZmZXJlbnQgU2hpZnQKKyAgICAgICAgICAgICAgICAmJiAha2V2ZW50LT5hbHRLZXko
KQogI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICYmICFrZXZlbnQtPnRleHQoKS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGtl
dmVudC0+dGV4dCgpLCBldmVudCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXZlbnQt
PmN0cmxLZXkoKSkgewotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93
c1ZpcnR1YWxLZXlDb2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVktfQToK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlNl
bGVjdEFsbCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVktfQjoKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIFZLX0k6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5jb21tYW5kKCJUb2dnbGVJdGFsaWMiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhdGNoIGNvbWJpbmF0aW9uIEFsdEdyK2tleSBv
ciBDdHJsK0FsdCtrZXkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT50
eXBlKCkgIT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duICYmIGtldmVudC0+YWx0S2V5
KCkgJiYgIWtldmVudC0+dGV4dCgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoa2V2ZW50LT50ZXh0KCksIGV2
ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICAmJiAha2V2ZW50LT50ZXh0KCkuaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGtldmVudC0+dGV4dCgpLCBldmVu
dCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGtldmVudC0+Y3RybEtleSgpKSB7CisgICAgICAg
ICAgICAgICAgc3dpdGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSBWS19BOgorICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBWS19COgorICAgICAgICAgICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVktfSToKKyAgICAgICAg
ICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJUb2dnbGVJdGFsaWMiKS5leGVj
dXRlKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgIC8vIGNhdGNoIGNvbWJpbmF0aW9uIEFsdEdyK2tleSBv
ciBDdHJsK0FsdCtrZXkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGtldmVudC0+dHlwZSgpICE9
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93biAmJiBrZXZlbnQtPmFsdEtleSgpICYmICFr
ZXZlbnQtPnRleHQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChrZXZlbnQtPnRleHQoKSwgZXZlbnQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9IGVsc2UgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgfSBlbHNlIHsKICNpZm5kZWYgUVRfTk9fU0hPUlRDVVQKLSAgICAgICAg
aWYgKGtldmVudC0+cXRFdmVudCgpID09IFFLZXlTZXF1ZW5jZTo6Q29weSkgeworICAgICAgICBp
ZiAoa2V2ZW50LT5xdEV2ZW50KCkgPT0gUUtleVNlcXVlbmNlOjpDb3B5KQogICAgICAgICAgICAg
bV9wYWdlLT50cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpDb3B5KTsKLSAgICAgICAgfSBlbHNlCisg
ICAgICAgIGVsc2UKICNlbmRpZiAvLyBRVF9OT19TSE9SVENVVAogICAgICAgICBzd2l0Y2ggKGtl
dmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgVktfVVA6
Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVXAiKS5leGVj
dXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZLX0RPV046
Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlRG93biIpLmV4
ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVktfUFJJ
T1I6ICAvLyBQYWdlVXAKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQo
Ik1vdmVQYWdlVXAiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIFZLX05FWFQ6ICAvLyBQYWdlRG93bgotICAgICAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VEb3duIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19IT01FOgotICAgICAgICAgICAgICAgIGlm
IChrZXZlbnQtPmN0cmxLZXkoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5jb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IikuZXhlY3V0ZSgpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19FTkQ6Ci0gICAgICAgICAgICAg
ICAgaWYgKGtldmVudC0+Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoIk1vdmVUb0VuZE9mRG9jdW1lbnQiKS5leGVjdXRlKCk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGlm
IChrZXZlbnQtPmN0cmxLZXkoKSkgewotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGtldmVu
dC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgVktfQToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlIHJldHVybjsKKyAgICAgICAgY2FzZSBWS19VUDoKKyAgICAgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVVwIikuZXhlY3V0ZSgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgVktfRE9XTjoKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+Y29tbWFuZCgiTW92ZURvd24iKS5leGVjdXRlKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBWS19QUklPUjogLy8gUGFnZVVwCisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoIk1vdmVQYWdlVXAiKS5leGVjdXRlKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBWS19ORVhUOiAvLyBQYWdlRG93bgorICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZURvd24iKS5leGVjdXRlKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBWS19IT01FOgorICAgICAgICAgICAgaWYgKGtldmVudC0+Y3Ry
bEtleSgpKQorICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRv
QmVnaW5uaW5nT2ZEb2N1bWVudCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFZLX0VORDoKKyAgICAgICAgICAgIGlmIChrZXZlbnQtPmN0cmxLZXkoKSkKKyAg
ICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0VuZE9mRG9jdW1l
bnQiKS5leGVjdXRlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIGlmIChrZXZlbnQtPmN0cmxLZXkoKSkgeworICAgICAgICAgICAgICAgIHN3aXRj
aCAoa2V2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgeworICAgICAgICAgICAgICAgIGNh
c2UgVktfQToKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJT
ZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9CiAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0tIAoxLjYu
NC5tc3lzZ2l0LjAKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57421</attachid>
            <date>2010-05-30 09:55:59 -0700</date>
            <delta_ts>2010-05-30 11:21:59 -0700</delta_ts>
            <desc>Patch for bug 35530.</desc>
            <filename>35530.patch</filename>
            <type>text/plain</type>
            <size>63285</size>
            <attacher name="Lyon Chen">liachen</attacher>
            
              <data encoding="base64">RnJvbSAxNjI0MDRjY2Q4ZDhjNGZiOWMyOTE1NWQ4OWNhODk2ODgzNDY0MTEwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMeW9uIENoZW4gPGxpYWNoZW5AcmltLmNvbT4KRGF0ZTogU2F0
LCAyOSBNYXkgMjAxMCAxOToxMDo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMi8yXSBFbnVtIHZh
bHVlIEZPUldBUkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVCBhcmUgY2F1c2luZyBtYWNybyBjb25m
bGljdHMuCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU1MzAKClJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKQ2hhbmdlIGVudW0gRUFsdGVyYXRpb24gZnJvbSB7
IE1PVkUsIEVYVEVORCB9IHRvIHsgRUFsdGVyYXRpb25Nb3ZlLCBFQWx0ZXJhdGlvbkV4dGVuZCB9
IGFuZCBlbnVtIEVEaXJlY3Rpb24geyBGT1JXQVJELCBCQUNLV0FSRCwgUklHSFQsIExFRlR9IHRv
IHsgRURpcmVjdGlvbkZvcndhcmQsIEVEaXJlY3Rpb25CYWNrd2FyZCwgRURpcmVjdGlvblJpZ2h0
LCBFRGlyZWN0aW9uTGVmdCB9IHRvIGF2b2lkIG1hY3JvIGNvbmZsaWN0LCBhbmQgYWxzbyBiZXR0
ZXIgY29kaW5nIHN0eWxlIGNvbmZvcm1hbmNlLgoKYzovRGF0YS9XZWJLaXQvd2Via2l0LWdpdC9X
ZWJDb3JlOgoKKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgoo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBvc2l0aW9uUmFuZ2VG
b3JMaW5lKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRvQVhSYW5nZUZv
ckxpbmUpOgoqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKFdlYkNvcmU6OkVkaXRvcjo6ZGVsZXRlV2l0
aERpcmVjdGlvbik6CihXZWJDb3JlOjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGlu
Z1RvUG9zaXRpb24pOgooV2ViQ29yZTo6RWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFk
R3JhbW1hckluUmFuZ2VzKToKKiBlZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwOgooV2ViQ29yZTo6
ZXhlY3V0ZURlbGV0ZUJhY2t3YXJkKToKKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVCYWNrd2FyZEJ5
RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3Rlcik6CihXZWJDb3JlOjpleGVjdXRlRGVsZXRlRm9y
d2FyZCk6CihXZWJDb3JlOjpleGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUpOgooV2ViQ29y
ZTo6ZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpOgooV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZVRvRW5kT2ZMaW5lKToKKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb0VuZE9mUGFyYWdy
YXBoKToKKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVXb3JkQmFja3dhcmQpOgooV2ViQ29yZTo6ZXhl
Y3V0ZURlbGV0ZVdvcmRGb3J3YXJkKToKKFdlYkNvcmU6OmV4ZWN1dGVGb3J3YXJkRGVsZXRlKToK
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlQmFja3dhcmQpOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVCYWNr
d2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CihXZWJDb3JlOjpleGVjdXRlTW92ZURvd24pOgooV2Vi
Q29yZTo6ZXhlY3V0ZU1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1
dGVNb3ZlRm9yd2FyZCk6CihXZWJDb3JlOjpleGVjdXRlTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxl
Y3Rpb24pOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVMZWZ0KToKKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
TGVmdEFuZE1vZGlmeVNlbGVjdGlvbik6CihXZWJDb3JlOjpleGVjdXRlTW92ZVBhZ2VEb3duKToK
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24pOgooV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVQYWdlVXApOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYWdlVXBBbmRNb2Rp
ZnlTZWxlY3Rpb24pOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVSaWdodCk6CihXZWJDb3JlOjpleGVj
dXRlTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9C
ZWdpbm5pbmdPZkRvY3VtZW50KToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRv
Y3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5p
bmdPZkxpbmUpOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlm
eVNlbGVjdGlvbik6CihXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgp
OgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2Vs
ZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlKToKKFdl
YkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9u
KToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50KToKKFdlYkNvcmU6OmV4ZWN1
dGVNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1
dGVNb3ZlVG9FbmRPZlNlbnRlbmNlKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRl
bmNlQW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmUp
OgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6CihX
ZWJDb3JlOjpleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGgpOgooV2ViQ29yZTo6ZXhlY3V0ZU1v
dmVUb0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVN
b3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgooV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1
dGVNb3ZlVXApOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbik6CihX
ZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRCYWNrd2FyZCk6CihXZWJDb3JlOjpleGVjdXRlTW92ZVdv
cmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CihXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRG
b3J3YXJkKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rp
b24pOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkTGVmdCk6CihXZWJDb3JlOjpleGVjdXRlTW92
ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJp
Z2h0KToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKToK
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lKToKKFdlYkNvcmU6OmV4ZWN1dGVN
b3ZlVG9MZWZ0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVN
b3ZlVG9SaWdodEVuZE9mTGluZSk6CihXZWJDb3JlOjpleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxp
bmVBbmRNb2RpZnlTZWxlY3Rpb24pOgoqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHA6
CihXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjp3aWxsQmVNb2RpZmllZCk6CihXZWJDb3Jl
OjpTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnkpOgoqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJv
bGxlci5oOgooV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6KToKKiBlZGl0aW5nL1R5cGlu
Z0NvbW1hbmQuY3BwOgooV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZCk6
CihXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZCk6CiogcGFn
ZS9ET01TZWxlY3Rpb24uY3BwOgooV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjptb2RpZnkpOgooV2Vi
Q29yZTo6RE9NU2VsZWN0aW9uOjpkZWxldGVGcm9tRG9jdW1lbnQpOgoqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25N
b3ZlbWVudCk6CgpjOi9EYXRhL1dlYktpdC93ZWJraXQtZ2l0L1dlYktpdDoKCiogZWZsL1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6CihXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6
OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKCmM6L0RhdGEvV2ViS2l0L3dlYmtpdC1naXQv
V2ViS2l0L2Nocm9taXVtOgoKKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKFdlYktpdDo6V2ViRnJh
bWVJbXBsOjpleGVjdXRlQ29tbWFuZCk6CgpjOi9EYXRhL1dlYktpdC93ZWJraXQtZ2l0L1dlYktp
dC9oYWlrdToKCiogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuY3BwOgooV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50SGFpa3U6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgoKYzovRGF0YS9XZWJL
aXQvd2Via2l0LWdpdC9XZWJLaXQvcXQ6CgoqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0
LmNwcDoKKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKLS0t
CiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
ODcgKysrKysrKysrKysrKysrCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcCAgICB8ICAgIDYgKy0KIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAxNCArKy0tCiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAgICAgICAgICAgICAgICAgICB8ICAxMTIgKysrKysrKysrKy0tLS0tLS0tLS0KIFdl
YkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcCAgICAgICAgICAgIHwgICA0NiAr
KysrLS0tLQogV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaCAgICAgICAgICAg
ICAgfCAgICA0ICstCiBXZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgICAgICAgICAg
ICAgICAgICB8ICAgMTIgKy0KIFdlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwICAgICAgICAg
ICAgICAgICAgICAgIHwgICAxNCArKy0tCiBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCAg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0KIFdlYktpdC9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArKwogV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsrCiBXZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZyYW1lSW1wbC5jcHAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcCAgICAgIHwgICAxNiArKy0tCiBXZWJL
aXQvaGFpa3UvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKysK
IFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHAgIHwgICAy
MCArKy0tCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMTIgKysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAg
ICAgICAgIHwgICAgNCArLQogMTcgZmlsZXMgY2hhbmdlZCwgMjY1IGluc2VydGlvbnMoKyksIDEz
MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGRkMzI0MmEuLjcxY2IwMTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsOTMgQEAKIAogICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBFbnVtIHZhbHVlIEZPUldB
UkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVCBhcmUgY2F1c2luZyBtYWNybyBjb25mbGljdHMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTUzMAorCisg
ICAgICAgIENoYW5nZSBlbnVtIEVBbHRlcmF0aW9uIGZyb20geyBNT1ZFLCBFWFRFTkQgfSB0byB7
IEVBbHRlcmF0aW9uTW92ZSwgRUFsdGVyYXRpb25FeHRlbmQgfSBhbmQgZW51bSBFRGlyZWN0aW9u
IHsgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBMRUZUfSB0byB7IEVEaXJlY3Rpb25Gb3J3YXJk
LCBFRGlyZWN0aW9uQmFja3dhcmQsIEVEaXJlY3Rpb25SaWdodCwgRURpcmVjdGlvbkxlZnQgfSB0
byBhdm9pZCBtYWNybyBjb25mbGljdCwgYW5kIGFsc28gYmV0dGVyIGNvZGluZyBzdHlsZSBjb25m
b3JtYW5jZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2
aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6ZG9BWFJhbmdlRm9yTGluZSk6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkZWxldGVXaXRoRGlyZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5n
VG9Qb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGlu
Z3NBbmRCYWRHcmFtbWFySW5SYW5nZXMpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlQmFja3dhcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hh
cmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVGb3J3YXJkKToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlRGVsZXRlVG9FbmRPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZURlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURl
bGV0ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlV29yZEZv
cndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUZvcndhcmREZWxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlTW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlRG93bik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZURvd25BbmRNb2Rp
ZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVGb3J3YXJkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1
dGVNb3ZlUGFnZURvd24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYWdlRG93bkFu
ZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVBhZ2VVcCk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCk6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGhBbmRNb2RpZnlT
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2Vu
dGVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVu
Y2VBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0Vu
ZE9mRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mRG9jdW1l
bnRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0Vu
ZE9mU2VudGVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mU2VudGVu
Y2VBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0Vu
ZE9mTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvRW5kT2ZMaW5lQW5kTW9k
aWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlBhcmFn
cmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGhBbmRN
b2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYXJhZ3JhcGhC
YWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92
ZVBhcmFncmFwaEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZU1vdmVVcCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVVwQW5kTW9kaWZ5
U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEJhY2t3YXJkKToK
KyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEZvcndhcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlV29yZExlZnRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVXb3JkUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVX
b3JkUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1v
dmVUb0xlZnRFbmRPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0xlZnRF
bmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1v
dmVUb1JpZ2h0RW5kT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9SaWdo
dEVuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rp
b25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6
OndpbGxCZU1vZGlmaWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6
Om1vZGlmeSk6CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjopOgorICAgICAgICAqIGVkaXRpbmcv
VHlwaW5nQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxl
dGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmRE
ZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKiBwYWdlL0RPTVNlbGVjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246Om1vZGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpE
T01TZWxlY3Rpb246OmRlbGV0ZUZyb21Eb2N1bWVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVLZXlib2Fy
ZFNlbGVjdGlvbk1vdmVtZW50KToKKworMjAxMC0wNS0yOSAgTHlvbiBDaGVuICA8bGlhY2hlbkBy
aW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAg
IFRoaXMgaXMgYSBjb2Rpbmcgc3R5bGUgY2xlYW51cCBiZWZvcmUgZml4aW5nIHRvIGJ1ZyAzNTUz
MC4KIAogICAgICAgICBFbnVtIHZhbHVlIEZPUldBUkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVCBh
cmUgY2F1c2luZyBtYWNybyBjb25mbGljdHMuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggZWI0MTY4Yy4uNTAyYjEzOCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCisrKyBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcApAQCAtMjQxOCw3ICsyNDE4LDcgQEAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKHVuc2kKICAg
ICAvLyB3aWxsIGJlIGEgY2FyZXQgYXQgdmlzaWJsZVBvcy4KICAgICBTZWxlY3Rpb25Db250cm9s
bGVyIHNlbGVjdGlvbjsKICAgICBzZWxlY3Rpb24uc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24odmlzaWJsZVBvcykpOwotICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpSSUdIVCwgTGluZUJvdW5kYXJ5KTsKKyAg
ICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVBbHRlcmF0aW9uRXh0ZW5k
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uUmlnaHQsIExpbmVCb3VuZGFyeSk7CiAg
ICAgCiAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKHNlbGVjdGlvbi5zZWxlY3Rpb24o
KS52aXNpYmxlU3RhcnQoKSwgc2VsZWN0aW9uLnNlbGVjdGlvbigpLnZpc2libGVFbmQoKSk7CiB9
CkBAIC0yNjMwLDggKzI2MzAsOCBAQCBQbGFpblRleHRSYW5nZSBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojpkb0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkIGxpbmVOdW1iZXIpCiAgICAgLy8gd2ls
bCBiZSBhIGNhcmV0IGF0IHZpc2libGVQb3MuCiAgICAgU2VsZWN0aW9uQ29udHJvbGxlciBzZWxl
Y3Rpb247CiAgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHZpc2li
bGVQb3MpKTsKLSAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVO
RCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVGVCwgTGluZUJvdW5kYXJ5KTsKLSAgICBzZWxlY3Rp
b24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6UklHSFQsIExpbmVCb3VuZGFyeSk7CisgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25D
b250cm9sbGVyOjpFQWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVj
dGlvbkxlZnQsIExpbmVCb3VuZGFyeSk7CisgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25D
b250cm9sbGVyOjpFQWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVj
dGlvblJpZ2h0LCBMaW5lQm91bmRhcnkpOwogICAgIAogICAgIC8vIGNhbGN1bGF0ZSB0aGUgaW5k
aWNlcyBmb3IgdGhlIHNlbGVjdGlvbiBzdGFydCBhbmQgZW5kCiAgICAgVmlzaWJsZVBvc2l0aW9u
IHN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCmluZGV4IDYwM2YzNWMuLjYzZWU0NTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yNDIs
MTIgKzI0MiwxMiBAQCBib29sIEVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25D
b250cm9sbGVyOjpFRGlyZWN0aW9uIGRpcmVjdGlvbiwgVGV4dAogICAgICAgICB9CiAgICAgfSBl
bHNlIHsKICAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICAgICAgY2FzZSBTZWxlY3Rp
b25Db250cm9sbGVyOjpGT1JXQVJEOgotICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OlJJR0hUOgorICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25Gb3J3
YXJkOgorICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25SaWdodDoK
ICAgICAgICAgICAgIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKG1fZnJh
bWUtPmRvY3VtZW50KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCksIGdyYW51bGFyaXR5LCBraWxs
UmluZyk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9s
bGVyOjpCQUNLV0FSRDoKLSAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpMRUZUOgor
ICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25CYWNrd2FyZDoKKyAg
ICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uTGVmdDoKICAgICAgICAg
ICAgIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQobV9mcmFtZS0+ZG9jdW1lbnQoKSwg
Y2FuU21hcnRDb3B5T3JEZWxldGUoKSwgZ3JhbnVsYXJpdHksIGtpbGxSaW5nKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMjY5LDcgKzIyNjksNyBAQCB2b2lkIEVkaXRvcjo6
bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Qb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24gJnApCiAKICAgICAgICAgLy8gUmVzZXQgdGhlIGNoYXJldCBvbmUgY2hhcmFjdGVyIGZ1cnRo
ZXIuCiAgICAgICAgIGZyYW1lKCktPnNlbGVjdGlvbigpLT5tb3ZlVG8oZnJhbWUoKS0+c2VsZWN0
aW9uKCktPmVuZCgpKTsKLSAgICAgICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFy
YWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgIGZyYW1lKCktPnNlbGVjdGlvbigpLT5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpFRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogICAgIH0KIAogICAg
IGlmICghaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkpCkBAIC0yNTU4LDExICsyNTU4LDExIEBA
IHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKGJv
b2wgbWFya1NwZWxsaW5nLCBSYW5nZSoKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0
aW9uUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHBhcmFncmFwaFJhbmdlLmdldCgpLCAw
LCBzZWxlY3Rpb25PZmZzZXQpOwogICAgICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1v
dmVUbyhzZWxlY3Rpb25SYW5nZS0+ZW5kUG9zaXRpb24oKSwgRE9XTlNUUkVBTSk7CiAgICAgICAg
ICAgICBpZiAoYWRqdXN0U2VsZWN0aW9uRm9yUGFyYWdyYXBoQm91bmRhcmllcykKLSAgICAgICAg
ICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5
KTsKKyAgICAgICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkVBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVj
dGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIC8vIElmIHRoaXMgZmFpbHMgZm9yIGFueSByZWFzb24sIHRoZSBmYWxsYmFjayBp
cyB0byBnbyBvbmUgcG9zaXRpb24gYmV5b25kIHRoZSBsYXN0IHJlcGxhY2VtZW50CiAgICAgICAg
ICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW92ZVRvKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5l
bmQoKSk7Ci0gICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3Rl
ckdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpFRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogICAgICAgICB9CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IGU3ZThmYmQuLjkyMjUwYTUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTMyNCwzMiArMzI0LDMyIEBAIHN0YXRp
YyBib29sIGV4ZWN1dGVEZWxldGUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2Ugc291cmNlLCBjb25zCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2FyZChG
cmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QkFDS1dBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7Cisg
ICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkVEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVl
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZUJhY2t3
YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIExPR19FUlJPUigiRGVs
ZXRlQmFja3dhcmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIgaXMgbm90IGltcGxlbWVu
dGVkLCBkb2luZyBEZWxldGVCYWNrd2FyZCBpbnN0ZWFkIik7Ci0gICAgZnJhbWUtPmVkaXRvcigp
LT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBDaGFy
YWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVs
ZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uQmFja3dhcmQs
IENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVGb3J3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0
b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBD
aGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+
ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uRm9yd2Fy
ZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAg
IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVy
OjpCQUNLV0FSRCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRv
cigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25C
YWNrd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoKEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9s
bGVyOjpCQUNLV0FSRCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFt
ZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RURp
cmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0zNTcsNyArMzU3LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZURl
bGV0ZVRvRW5kT2ZMaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LAogewogICAgIC8vIERlc3BpdGUgaXRzIG5hbWUsIHRoaXMgY29tbWFuZCBzaG91bGQgZGVsZXRl
IHRoZSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YKICAgICAvLyBhIHBhcmFncmFwaCBpZiB5b3UgYXJl
IGF0IHRoZSBlbmQgb2YgYSBwYXJhZ3JhcGggKGxpa2UgRGVsZXRlVG9FbmRPZlBhcmFncmFwaCku
Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkZPUldBUkQsIExpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5l
ZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0
aW9uRm9yd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTM2NSw3ICszNjUsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9FbmRP
ZlBhcmFncmFwaChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdQogewogICAg
IC8vIERlc3BpdGUgaXRzIG5hbWUsIHRoaXMgY29tbWFuZCBzaG91bGQgZGVsZXRlIHRoZSBuZXds
aW5lIGF0IHRoZSBlbmQgb2YKICAgICAvLyBhIHBhcmFncmFwaCBpZiB5b3UgYXJlIGF0IHRoZSBl
bmQgb2YgYSBwYXJhZ3JhcGguCi0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0
aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVl
LCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25Gb3J3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1
ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zODYsMTMgKzM4NiwxMyBAQCBz
dGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9NYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdAogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEJh
Y2t3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxl
Y3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgV29yZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7
CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkVEaXJlY3Rpb25CYWNrd2FyZCwgV29yZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVXb3JkRm9y
d2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3Ry
aW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0
aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgV29yZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7Cisg
ICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkVEaXJlY3Rpb25Gb3J3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDM5LDcgKzQzOSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1
dGVGb3J3YXJkRGVsZXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
IHNvdXJjCiB7CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKICAgICBjYXNlIENvbW1hbmRGcm9tTWVu
dU9yS2V5QmluZGluZzoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0
aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBm
YWxzZSwgdHJ1ZSk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlv
bihTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVs
YXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBDb21t
YW5kRnJvbURPTToKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6CkBA
IC01OTcsNDkgKzU5Nyw0OSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGly
ZWN0aW9uUmlnaHRUb0xlZnQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlTW92ZUJhY2t3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJE
LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250
cm9sbGVyOjpFRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVCYWNrd2FyZEFu
ZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBD
aGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkVEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZURvd24oRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKKyAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJh
dGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lR3Jh
bnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVy
OjpGT1JXQVJELCBMaW5lR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rp
b25Db250cm9sbGVyOjpFRGlyZWN0aW9uRm9yd2FyZCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVGb3J3YXJkKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1P
VkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0
cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVy
OjpFQWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25Gb3J3YXJk
LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBm
cmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsK
KyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0
ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbkZvcndhcmQsIENo
YXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVMZWZ0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQsIENo
YXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkVEaXJlY3Rpb25MZWZ0LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlTGVmdEFuZE1vZGlmeVNlbGVj
dGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3Ry
aW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQsIENoYXJhY3RlckdyYW51bGFy
aXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpFQWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlv
bkxlZnQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtNjQ4LDcgKzY0OCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFnZURvd24oRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0CiAgICAgaW50IGRp
c3RhbmNlID0gdmVydGljYWxTY3JvbGxEaXN0YW5jZShmcmFtZSk7CiAgICAgaWYgKCFkaXN0YW5j
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBkaXN0YW5jZSwgdHJ1ZSwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWxpZ25DdXJzb3JPblNjcm9sbEFsd2F5cyk7CisgICAgcmV0dXJuIGZy
YW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVBbHRlcmF0aW9u
TW92ZSwgZGlzdGFuY2UsIHRydWUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsaWduQ3Vyc29yT25T
Y3JvbGxBbHdheXMpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhZ2VEb3duQW5kTW9k
aWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmKQpAQCAtNjU2LDcgKzY1Niw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNb3Zl
UGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
CiAgICAgaW50IGRpc3RhbmNlID0gdmVydGljYWxTY3JvbGxEaXN0YW5jZShmcmFtZSk7CiAgICAg
aWYgKCFkaXN0YW5jZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIGRpc3RhbmNl
LCB0cnVlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpBbGlnbkN1cnNvck9uU2Nyb2xsQWx3YXlzKTsK
KyAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6RUFsdGVyYXRpb25FeHRlbmQsIGRpc3RhbmNlLCB0cnVlLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpBbGlnbkN1cnNvck9uU2Nyb2xsQWx3YXlzKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVQYWdlVXAoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCkBAIC02NjQsNyArNjY0LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYWdl
VXAoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFMKICAg
ICBpbnQgZGlzdGFuY2UgPSB2ZXJ0aWNhbFNjcm9sbERpc3RhbmNlKGZyYW1lKTsKICAgICBpZiAo
IWRpc3RhbmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIC1kaXN0YW5jZSwgdHJ1
ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QWxpZ25DdXJzb3JPblNjcm9sbEFsd2F5cyk7CisgICAg
cmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVB
bHRlcmF0aW9uTW92ZSwgLWRpc3RhbmNlLCB0cnVlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpBbGln
bkN1cnNvck9uU2Nyb2xsQWx3YXlzKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYWdl
VXBBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2UsIGNvbnN0IFN0cmluZyYpCkBAIC02NzIsMjEwICs2NzIsMjEwIEBAIHN0YXRpYyBib29s
IGV4ZWN1dGVNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tCiAgICAgaW50IGRpc3RhbmNlID0gdmVydGljYWxTY3JvbGxEaXN0YW5jZShm
cmFtZSk7CiAgICAgaWYgKCFkaXN0YW5jZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRF
TkQsIC1kaXN0YW5jZSwgdHJ1ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QWxpZ25DdXJzb3JPblNj
cm9sbEFsd2F5cyk7CisgICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkVBbHRlcmF0aW9uRXh0ZW5kLCAtZGlzdGFuY2UsIHRydWUsIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkFsaWduQ3Vyc29yT25TY3JvbGxBbHdheXMpOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZVJpZ2h0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCBD
aGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpFRGlyZWN0aW9uUmlnaHQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVSaWdodEFuZE1vZGlmeVNl
bGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6RUFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJl
Y3Rpb25SaWdodCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVl
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudChGcmFt
ZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZF
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgRG9jdW1lbnRCb3VuZGFyeSwgdHJ1ZSk7
CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFs
dGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uQmFja3dhcmQsIERv
Y3VtZW50Qm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbihGcmFt
ZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRF
TkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVl
KTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpF
QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbkJhY2t3YXJk
LCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGluZShGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0
aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpCQUNLV0FSRCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09m
TGluZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tX
QVJELCBMaW5lQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpFRGlyZWN0aW9uQmFja3dhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFw
aChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVy
OjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgUGFyYWdyYXBoQm91bmRhcnks
IHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkVBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbkJhY2t3
YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVj
dGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3Ry
aW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBQYXJhZ3JhcGhCb3Vu
ZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RUFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rp
b25CYWNrd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZTZW50ZW5jZShGcmFtZSog
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgU2VudGVuY2VCb3VuZGFyeSwgdHJ1ZSk7Cisg
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVy
YXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uQmFja3dhcmQsIFNlbnRl
bmNlQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBl
eGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZTZW50ZW5jZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSog
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBTZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsK
KyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0
ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbkJhY2t3YXJkLCBT
ZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVUb0VuZE9mRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
Rk9SV0FSRCwgRG9jdW1lbnRCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25D
b250cm9sbGVyOjpFRGlyZWN0aW9uRm9yd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwgdHJ1ZSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3Vt
ZW50QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FS
RCwgRG9jdW1lbnRCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkVEaXJlY3Rpb25Gb3J3YXJkLCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mU2VudGVuY2Uo
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgU2VudGVuY2VCb3VuZGFyeSwgdHJ1
ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
RUFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uRm9yd2FyZCwg
U2VudGVuY2VCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgU2VudGVuY2VCb3VuZGFyeSwgdHJ1ZSk7Cisg
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVy
YXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25Gb3J3YXJkLCBTZW50
ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wg
ZXhlY3V0ZU1vdmVUb0VuZE9mTGluZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJE
LCBMaW5lQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkVBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
RURpcmVjdGlvbkZvcndhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rp
b24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBMaW5lQm91bmRhcnksIHRy
dWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkVBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uRm9yd2Fy
ZCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVUb0VuZE9mUGFyYWdyYXBoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkZPUldBUkQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25Gb3J3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZlBh
cmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZP
UldBUkQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6RURpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYXJhZ3JhcGhC
YWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJB
Q0tXQVJELCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25FeHRlbmQsIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25CYWNrd2FyZCwgUGFyYWdyYXBoR3JhbnVsYXJpdHks
IHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBh
cmFncmFwaEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9s
bGVyOjpGT1JXQVJELCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25FeHRlbmQs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25Gb3J3YXJkLCBQYXJhZ3JhcGhHcmFudWxh
cml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVN
b3ZlVXAoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0
cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJv
bGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIExpbmVHcmFudWxhcml0
eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJv
bGxlcjo6RUFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uQmFj
a3dhcmQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUt
PnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rp
b25Db250cm9sbGVyOjpCQUNLV0FSRCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFt
ZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbkV4
dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbkJhY2t3YXJkLCBMaW5lR3JhbnVs
YXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
TW92ZVdvcmRCYWNrd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgV29y
ZEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVE
aXJlY3Rpb25CYWNrd2FyZCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxl
Y3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0
cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJv
bGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgV29yZEdyYW51bGFy
aXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpFQWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlv
bkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRGb3J3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkZPUldBUkQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25Nb3ZlLCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uRm9yd2FyZCwgV29yZEdyYW51bGFyaXR5LCB0cnVl
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkRm9y
d2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldB
UkQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkVEaXJlY3Rpb25Gb3J3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRMZWZ0KEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJh
bWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25N
b3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uTGVmdCwgV29yZEdyYW51bGFyaXR5
LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVX
b3JkTGVmdEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxF
RlQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkVEaXJlY3Rpb25MZWZ0LCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVy
biB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRSaWdodChGcmFtZSogZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBm
cmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpSSUdIVCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFt
ZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbk1v
dmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25SaWdodCwgV29yZEdyYW51bGFyaXR5
LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVX
b3JkUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpS
SUdIVCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RURpcmVjdGlvblJpZ2h0LCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGluZShG
cmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpN
T1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpMRUZULCBMaW5lQm91bmRhcnksIHRydWUpOworICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVBbHRlcmF0
aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbkxlZnQsIExpbmVCb3VuZGFy
eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3Zl
VG9MZWZ0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6TEVGVCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6RURpcmVjdGlvbkxlZnQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9mTGluZShG
cmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpN
T1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpSSUdIVCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKKyAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJh
dGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25SaWdodCwgTGluZUJvdW5k
YXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVUb1JpZ2h0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6UklHSFQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25FeHRlbmQsIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25SaWdodCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlv
bkNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3Bw
CmluZGV4IDgxNmY5NjguLmVkYzA0YzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9TZWxl
Y3Rpb25Db250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJv
bGxlci5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnNl
dElzRGlyZWN0aW9uYWwoYm9vbCBpc0RpcmVjdGlvbmFsKQogCiB2b2lkIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OndpbGxCZU1vZGlmaWVkKEVBbHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpcmVj
dGlvbikKIHsKLSAgICBpZiAoYWx0ZXIgIT0gRVhURU5EKQorICAgIGlmIChhbHRlciAhPSBFQWx0
ZXJhdGlvbkV4dGVuZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUG9zaXRpb24gc3RhcnQgPSBt
X3NlbGVjdGlvbi5zdGFydCgpOwpAQCAtMjY5LDEzICsyNjksMTMgQEAgdm9pZCBTZWxlY3Rpb25D
b250cm9sbGVyOjp3aWxsQmVNb2RpZmllZChFQWx0ZXJhdGlvbiBhbHRlciwgRURpcmVjdGlvbiBk
aXJlY3Rpb24KICAgICB9IGVsc2UgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBwcm9iYWJs
eSBub3QgY29ycmVjdCBmb3IgcmlnaHQgYW5kIGxlZnQgd2hlbiB0aGUgZGlyZWN0aW9uIGlzIFJU
TC4KICAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICAgICAgY2FzZSBSSUdIVDoKLSAg
ICAgICAgY2FzZSBGT1JXQVJEOgorICAgICAgICBjYXNlIEVEaXJlY3Rpb25SaWdodDoKKyAgICAg
ICAgY2FzZSBFRGlyZWN0aW9uRm9yd2FyZDoKICAgICAgICAgICAgIG1fc2VsZWN0aW9uLnNldEJh
c2Uoc3RhcnQpOwogICAgICAgICAgICAgbV9zZWxlY3Rpb24uc2V0RXh0ZW50KGVuZCk7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBMRUZUOgotICAgICAgICBjYXNlIEJBQ0tXQVJE
OgorICAgICAgICBjYXNlIEVEaXJlY3Rpb25MZWZ0OgorICAgICAgICBjYXNlIEVEaXJlY3Rpb25C
YWNrd2FyZDoKICAgICAgICAgICAgIG1fc2VsZWN0aW9uLnNldEJhc2UoZW5kKTsKICAgICAgICAg
ICAgIG1fc2VsZWN0aW9uLnNldEV4dGVudChzdGFydCk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTY0NSwyNiArNjQ1LDI2IEBAIGJvb2wgU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5KEVBbHRl
cmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpcmVjdGlvbiwgVGV4dEdyCiAKICAgICBWaXNpYmxl
UG9zaXRpb24gcG9zaXRpb247CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIFJJ
R0hUOgotICAgICAgICBpZiAoYWx0ZXIgPT0gTU9WRSkKKyAgICBjYXNlIEVEaXJlY3Rpb25SaWdo
dDoKKyAgICAgICAgaWYgKGFsdGVyID09IEVBbHRlcmF0aW9uTW92ZSkKICAgICAgICAgICAgIHBv
c2l0aW9uID0gbW9kaWZ5TW92aW5nUmlnaHQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeUV4dGVuZGluZ1JpZ2h0KGdyYW51bGFyaXR5KTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGT1JXQVJEOgotICAgICAgICBpZiAoYWx0ZXIgPT0g
RVhURU5EKQorICAgIGNhc2UgRURpcmVjdGlvbkZvcndhcmQ6CisgICAgICAgIGlmIChhbHRlciA9
PSBFQWx0ZXJhdGlvbkV4dGVuZCkKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5k
aW5nRm9yd2FyZChncmFudWxhcml0eSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvc2l0
aW9uID0gbW9kaWZ5TW92aW5nRm9yd2FyZChncmFudWxhcml0eSk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgTEVGVDoKLSAgICAgICAgaWYgKGFsdGVyID09IE1PVkUpCisgICAgY2FzZSBFRGly
ZWN0aW9uTGVmdDoKKyAgICAgICAgaWYgKGFsdGVyID09IEVBbHRlcmF0aW9uTW92ZSkKICAgICAg
ICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92aW5nTGVmdChncmFudWxhcml0eSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nTGVmdChncmFudWxh
cml0eSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQkFDS1dBUkQ6Ci0gICAgICAgIGlmIChh
bHRlciA9PSBFWFRFTkQpCisgICAgY2FzZSBFRGlyZWN0aW9uQmFja3dhcmQ6CisgICAgICAgIGlm
IChhbHRlciA9PSBFQWx0ZXJhdGlvbkV4dGVuZCkKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9k
aWZ5RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsKQEAgLTY4
MSwxNiArNjgxLDE2IEBAIGJvb2wgU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5KEVBbHRlcmF0
aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpcmVjdGlvbiwgVGV4dEdyCiAgICAgaW50IHggPSB4UG9z
Rm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oU1RBUlQpOwogCiAgICAgc3dpdGNoIChhbHRlcikg
ewotICAgIGNhc2UgTU9WRToKKyAgICBjYXNlIEVBbHRlcmF0aW9uTW92ZToKICAgICAgICAgbW92
ZVRvKHBvc2l0aW9uLCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBF
WFRFTkQ6CisgICAgY2FzZSBFQWx0ZXJhdGlvbkV4dGVuZDoKICAgICAgICAgaWYgKCFzZXR0aW5n
cyB8fCBzZXR0aW5ncy0+ZWRpdGluZ0JlaGF2aW9yKCkgIT0gRWRpdGluZ01hY0JlaGF2aW9yIHx8
IG1fc2VsZWN0aW9uLmlzQ2FyZXQoKSB8fCAhaXNCb3VuZGFyeShncmFudWxhcml0eSkpCiAgICAg
ICAgICAgICBzZXRFeHRlbnQocG9zaXRpb24sIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIC8vIFN0YW5kYXJkIE1hYyBiZWhhdmlvciB3aGVuIGV4dGVuZGluZyB0
byBhIGJvdW5kYXJ5IGlzIGdyb3cgdGhlIHNlbGVjdGlvbiByYXRoZXIKICAgICAgICAgICAgIC8v
IHRoYW4gbGVhdmluZyB0aGUgYmFzZSBpbiBwbGFjZSBhbmQgbW92aW5nIHRoZSBleHRlbnQuIE1h
dGNoZXMgTlNUZXh0Vmlldy4KLSAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gRk9SV0FSRCB8
fCBkaXJlY3Rpb24gPT0gUklHSFQpCisgICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09IEVEaXJl
Y3Rpb25Gb3J3YXJkIHx8IGRpcmVjdGlvbiA9PSBFRGlyZWN0aW9uUmlnaHQpCiAgICAgICAgICAg
ICAgICAgc2V0RW5kKHBvc2l0aW9uLCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBzZXRTdGFydChwb3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7CkBAIC03
MDYsNyArNzA2LDcgQEAgYm9vbCBTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnkoRUFsdGVyYXRp
b24gYWx0ZXIsIEVEaXJlY3Rpb24gZGlyZWN0aW9uLCBUZXh0R3IKIAogICAgIHNldE5lZWRzTGF5
b3V0KCk7CiAKLSAgICBzZXRJc0RpcmVjdGlvbmFsKGFsdGVyID09IEVYVEVORCk7CisgICAgc2V0
SXNEaXJlY3Rpb25hbChhbHRlciA9PSBFQWx0ZXJhdGlvbkV4dGVuZCk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTc0MSwxNyArNzQxLDE3IEBAIGJvb2wgU2VsZWN0aW9uQ29udHJvbGxlcjo6
bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBpbnQgdmVydGljYWxEaXN0YW5jZSwgYm9vbCB1CiAg
ICAgaWYgKHVwKQogICAgICAgICB2ZXJ0aWNhbERpc3RhbmNlID0gLXZlcnRpY2FsRGlzdGFuY2U7
CiAKLSAgICB3aWxsQmVNb2RpZmllZChhbHRlciwgdXAgPyBCQUNLV0FSRCA6IEZPUldBUkQpOwor
ICAgIHdpbGxCZU1vZGlmaWVkKGFsdGVyLCB1cCA/IEVEaXJlY3Rpb25CYWNrd2FyZCA6IEVEaXJl
Y3Rpb25Gb3J3YXJkKTsKIAogICAgIFZpc2libGVQb3NpdGlvbiBwb3M7CiAgICAgaW50IHhQb3Mg
PSAwOwogICAgIHN3aXRjaCAoYWx0ZXIpIHsKLSAgICBjYXNlIE1PVkU6CisgICAgY2FzZSBFQWx0
ZXJhdGlvbk1vdmU6CiAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbih1cCA/IG1fc2VsZWN0
aW9uLnN0YXJ0KCkgOiBtX3NlbGVjdGlvbi5lbmQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7
CiAgICAgICAgIHhQb3MgPSB4UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24odXAgPyBTVEFS
VCA6IEVORCk7CiAgICAgICAgIG1fc2VsZWN0aW9uLnNldEFmZmluaXR5KHVwID8gVVBTVFJFQU0g
OiBET1dOU1RSRUFNKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFWFRFTkQ6CisgICAgY2Fz
ZSBFQWx0ZXJhdGlvbkV4dGVuZDoKICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2Vs
ZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgeFBvcyA9
IHhQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbihFWFRFTlQpOwogICAgICAgICBtX3NlbGVj
dGlvbi5zZXRBZmZpbml0eShET1dOU1RSRUFNKTsKQEAgLTc4OCwxMCArNzg4LDEwIEBAIGJvb2wg
U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBpbnQgdmVydGlj
YWxEaXN0YW5jZSwgYm9vbCB1CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRjaCAo
YWx0ZXIpIHsKLSAgICBjYXNlIE1PVkU6CisgICAgY2FzZSBFQWx0ZXJhdGlvbk1vdmU6CiAgICAg
ICAgIG1vdmVUbyhyZXN1bHQsIHVzZXJUcmlnZ2VyZWQsIGFsaWduKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBFWFRFTkQ6CisgICAgY2FzZSBFQWx0ZXJhdGlvbkV4dGVuZDoKICAgICAgICAg
c2V0RXh0ZW50KHJlc3VsdCwgdXNlclRyaWdnZXJlZCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTc5OSw3ICs3OTksNyBAQCBib29sIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeShFQWx0
ZXJhdGlvbiBhbHRlciwgaW50IHZlcnRpY2FsRGlzdGFuY2UsIGJvb2wgdQogICAgIGlmICh1c2Vy
VHJpZ2dlcmVkKQogICAgICAgICBtX2dyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHk7
CiAKLSAgICBzZXRJc0RpcmVjdGlvbmFsKGFsdGVyID09IEVYVEVORCk7CisgICAgc2V0SXNEaXJl
Y3Rpb25hbChhbHRlciA9PSBFQWx0ZXJhdGlvbkV4dGVuZCk7CiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmggYi9X
ZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oCmluZGV4IGMzZGMyZjIuLjcyNWVh
NDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgKKysr
IGIvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaApAQCAtNDMsOCArNDMsOCBA
QCBjbGFzcyBWaXNpYmxlUG9zaXRpb247CiAKIGNsYXNzIFNlbGVjdGlvbkNvbnRyb2xsZXIgOiBw
dWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgotICAgIGVudW0gRUFsdGVyYXRpb24geyBNT1ZF
LCBFWFRFTkQgfTsKLSAgICBlbnVtIEVEaXJlY3Rpb24geyBGT1JXQVJELCBCQUNLV0FSRCwgUklH
SFQsIExFRlQgfTsKKyAgICBlbnVtIEVBbHRlcmF0aW9uIHsgRUFsdGVyYXRpb25Nb3ZlLCBFQWx0
ZXJhdGlvbkV4dGVuZCB9OworICAgIGVudW0gRURpcmVjdGlvbiB7IEVEaXJlY3Rpb25Gb3J3YXJk
LCBFRGlyZWN0aW9uQmFja3dhcmQsIEVEaXJlY3Rpb25SaWdodCwgRURpcmVjdGlvbkxlZnQgfTsK
ICAgICBlbnVtIEN1cnNvckFsaWduT25TY3JvbGwgeyBBbGlnbkN1cnNvck9uU2Nyb2xsSWZOZWVk
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxpZ25DdXJzb3JPblNjcm9sbEFs
d2F5cyB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAg
Yi9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKaW5kZXggMjVhNGU2YS4uMThhNWVm
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCisrKyBiL1dl
YkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAtNDMxLDkgKzQzMSw5IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHksIGJvb2wga2lsbFJpbmcpCiAKICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlciBzZWxlY3Rp
b247CiAgICAgICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkpOwot
ICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIGdyYW51bGFyaXR5KTsKKyAgICAgICAgc2VsZWN0
aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbkJhY2t3YXJkLCBncmFudWxhcml0eSk7CiAgICAgICAg
IGlmIChraWxsUmluZyAmJiBzZWxlY3Rpb24uaXNDYXJldCgpICYmIGdyYW51bGFyaXR5ICE9IENo
YXJhY3RlckdyYW51bGFyaXR5KQotICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBDaGFy
YWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkVBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGly
ZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKIAogICAgICAgICBpZiAoZW5k
aW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkucHJldmlvdXModHJ1ZSkuaXNOdWxsKCkpIHsK
ICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGNhcmV0IGlzIGF0IHRoZSBzdGFydCBvZiB0aGUgZWRp
dGFibGUgYXJlYSBpbiBhbiBlbXB0eSBsaXN0IGl0ZW0sIGJyZWFrIG91dCBvZiB0aGUgbGlzdCBp
dGVtLgpAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJl
c3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2lsbFJpbmcpCiAgICAgICAg
ICAgICBpZiAoaXNMYXN0UG9zaXRpb25CZWZvcmVUYWJsZSh2aXNpYmxlU3RhcnQpKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIC8vIEV4dGVuZCB0aGUgc2VsZWN0aW9uIGJh
Y2t3YXJkIGludG8gdGhlIGxhc3QgY2VsbCwgdGhlbiBkZWxldGlvbiB3aWxsIGhhbmRsZSB0aGUg
bW92ZS4KLSAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgZ3JhbnVsYXJpdHkpOworICAg
ICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlv
bkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbkJhY2t3YXJkLCBncmFudWxh
cml0eSk7CiAgICAgICAgIC8vIElmIHRoZSBjYXJldCBpcyBqdXN0IGFmdGVyIGEgdGFibGUsIHNl
bGVjdCB0aGUgdGFibGUgYW5kIGRvbid0IGRlbGV0ZSBhbnl0aGluZy4KICAgICAgICAgfSBlbHNl
IGlmIChOb2RlKiB0YWJsZSA9IGlzRmlyc3RQb3NpdGlvbkFmdGVyVGFibGUodmlzaWJsZVN0YXJ0
KSkgewogICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oUG9z
aXRpb24odGFibGUsIDApLCBlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLCBET1dOU1RSRUFNKSk7
CkBAIC01MjUsOSArNTI1LDkgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5
UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2kKICAgICAgICAgLy8g
cm9vdCBlZGl0YWJsZSBlbGVtZW50IG9yIGF0IHRoZSBzdGFydCBvZiBhIGRvY3VtZW50LgogICAg
ICAgICBTZWxlY3Rpb25Db250cm9sbGVyIHNlbGVjdGlvbjsKICAgICAgICAgc2VsZWN0aW9uLnNl
dFNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKSk7Ci0gICAgICAgIHNlbGVjdGlvbi5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJE
LCBncmFudWxhcml0eSk7CisgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJv
bGxlcjo6RUFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25G
b3J3YXJkLCBncmFudWxhcml0eSk7CiAgICAgICAgIGlmIChraWxsUmluZyAmJiBzZWxlY3Rpb24u
aXNDYXJldCgpICYmIGdyYW51bGFyaXR5ICE9IENoYXJhY3RlckdyYW51bGFyaXR5KQotICAgICAg
ICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAg
ICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25FeHRl
bmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSk7CiAKICAgICAgICAgUG9zaXRpb24gZG93bnN0cmVhbUVuZCA9IGVuZGluZ1NlbGVj
dGlvbigpLmVuZCgpLmRvd25zdHJlYW0oKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVFbmQgPSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlRW5kKCk7CkBAIC01NDIsNyArNTQyLDcg
QEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2kKIAogICAgICAgICAvLyBkZWxldGluZyB0byBlbmQg
b2YgcGFyYWdyYXBoIHdoZW4gYXQgZW5kIG9mIHBhcmFncmFwaCBuZWVkcyB0byBtZXJnZSB0aGUg
bmV4dCBwYXJhZ3JhcGggKGlmIGFueSkKICAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFBhcmFn
cmFwaEJvdW5kYXJ5ICYmIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0NhcmV0KCkgJiYgaXNFbmRP
ZlBhcmFncmFwaChzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpKSkKLSAgICAgICAg
ICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rp
b25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgICAg
ICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVBbHRlcmF0aW9uRXh0ZW5k
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVs
YXJpdHkpOwogCiAgICAgICAgIHNlbGVjdGlvblRvRGVsZXRlID0gc2VsZWN0aW9uLnNlbGVjdGlv
bigpOwogICAgICAgICBpZiAoIXN0YXJ0aW5nU2VsZWN0aW9uKCkuaXNSYW5nZSgpIHx8IHNlbGVj
dGlvblRvRGVsZXRlLmJhc2UoKSAhPSBzdGFydGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcCBiL1dlYkNvcmUvcGFnZS9ET01T
ZWxlY3Rpb24uY3BwCmluZGV4IGE1ODMxNzYuLmZjOTg3ZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGFnZS9ET01TZWxlY3Rpb24uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3Bw
CkBAIC0yODAsMjEgKzI4MCwyMSBAQCB2b2lkIERPTVNlbGVjdGlvbjo6bW9kaWZ5KGNvbnN0IFN0
cmluZyYgYWx0ZXJTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaQogCiAgICAgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb24gYWx0ZXI7CiAgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGFsdGVyU3RyaW5nLCAiZXh0ZW5kIikpCi0gICAgICAgIGFsdGVyID0gU2VsZWN0aW9u
Q29udHJvbGxlcjo6RVhURU5EOworICAgICAgICBhbHRlciA9IFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkVBbHRlcmF0aW9uRXh0ZW5kOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFsdGVy
U3RyaW5nLCAibW92ZSIpKQotICAgICAgICBhbHRlciA9IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1P
VkU7CisgICAgICAgIGFsdGVyID0gU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25Nb3Zl
OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6
RURpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpcmVjdGlv
blN0cmluZywgImZvcndhcmQiKSkKLSAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uQ29udHJv
bGxlcjo6Rk9SV0FSRDsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uQ29udHJvbGxlcjo6
RURpcmVjdGlvbkZvcndhcmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGlyZWN0
aW9uU3RyaW5nLCAiYmFja3dhcmQiKSkKLSAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QkFDS1dBUkQ7CisgICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkVEaXJlY3Rpb25CYWNrd2FyZDsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShk
aXJlY3Rpb25TdHJpbmcsICJsZWZ0IikpCi0gICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkxFRlQ7CisgICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkVEaXJlY3Rpb25MZWZ0OwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpcmVjdGlv
blN0cmluZywgInJpZ2h0IikpCi0gICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OlJJR0hUOworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGly
ZWN0aW9uUmlnaHQ7CiAgICAgZWxzZQogICAgICAgICByZXR1cm47CiAKQEAgLTQyNCw3ICs0MjQs
NyBAQCB2b2lkIERPTVNlbGVjdGlvbjo6ZGVsZXRlRnJvbURvY3VtZW50KCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKGlzQ29sbGFwc2VkKCkpCi0gICAgICAgIHNlbGVjdGlvbi0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dB
UkQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAgc2VsZWN0aW9uLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkVEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogCiAgICAgUmVmUHRy
PFJhbmdlPiBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6
ZWRSYW5nZSgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBi
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGViZjhlZmYuLjRhYTE0ZmYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yMjgzLDE2ICsyMjgzLDE2IEBAIHZvaWQgRXZlbnRIYW5k
bGVyOjpoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50
KQogICAgIGJvb2wgaXNDb21tYW5kZWQgPSBldmVudC0+Z2V0TW9kaWZpZXJTdGF0ZSgiTWV0YSIp
OwogICAgIAogICAgIGlmIChrZXkgPT0gIlVwIikgewotICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDog
U2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQs
IChpc0NvbW1hbmRlZCkgPyBEb2N1bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5LCB0cnVl
KTsKKyAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeSgoaXNTaGlmdGVkKSA/IFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkVBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxl
cjo6RUFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uQmFja3dh
cmQsIChpc0NvbW1hbmRlZCkgPyBEb2N1bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5LCB0
cnVlKTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfSBlbHNlIGlm
IChrZXkgPT0gIkRvd24iKSB7Ci0gICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnko
KGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250
cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCAoaXNDb21tYW5kZWQp
ID8gRG9jdW1lbnRCb3VuZGFyeSA6IExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgICAgIG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9s
bGVyOjpFQWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVBbHRlcmF0aW9u
TW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbkZvcndhcmQsIChpc0NvbW1hbmRl
ZCkgPyBEb2N1bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKICAgICAgICAg
ZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfSBlbHNlIGlmIChrZXkgPT0gIkxlZnQi
KSB7Ci0gICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBT
ZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpMRUZULCAoaXNDb21tYW5kZWQpID8gTGluZUJvdW5kYXJ5IDog
KGlzT3B0aW9uZWQpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRy
dWUpOworICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8g
U2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9s
bGVyOjpFQWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25MZWZ0
LCAoaXNDb21tYW5kZWQpID8gTGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gV29yZEdyYW51
bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOwogICAgICAgICBldmVudC0+c2V0
RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9IGVsc2UgaWYgKGtleSA9PSAiUmlnaHQiKSB7Ci0gICAg
ICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25D
b250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25D
b250cm9sbGVyOjpSSUdIVCwgKGlzQ29tbWFuZGVkKSA/IExpbmVCb3VuZGFyeSA6IChpc09wdGlv
bmVkKSA/IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKKyAg
ICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeSgoaXNTaGlmdGVkKSA/IFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkVBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFs
dGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uUmlnaHQsIChpc0Nv
bW1hbmRlZCkgPyBMaW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBXb3JkR3JhbnVsYXJpdHkg
OiBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0
SGFuZGxlZCgpOwogICAgIH0gICAgCiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvQ2hhbmdlTG9nIGIv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA3YjQxOGZmLi5hM2YyYjk0IDEwMDY0NAotLS0gYS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
MC0wNS0yOSAgTHlvbiBDaGVuICA8bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVudW0gdmFsdWUgRk9SV0FSRCwgQkFDS1dB
UkQsIFJJR0hULCBMRUZUIGFyZSBjYXVzaW5nIG1hY3JvIGNvbmZsaWN0cy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NTMwCisKKyAgICAgICAgQ2hh
bmdlIGVudW0gRUFsdGVyYXRpb24gZnJvbSB7IE1PVkUsIEVYVEVORCB9IHRvIHsgRUFsdGVyYXRp
b25Nb3ZlLCBFQWx0ZXJhdGlvbkV4dGVuZCB9IGFuZCBlbnVtIEVEaXJlY3Rpb24geyBGT1JXQVJE
LCBCQUNLV0FSRCwgUklHSFQsIExFRlR9IHRvIHsgRURpcmVjdGlvbkZvcndhcmQsIEVEaXJlY3Rp
b25CYWNrd2FyZCwgRURpcmVjdGlvblJpZ2h0LCBFRGlyZWN0aW9uTGVmdCB9IHRvIGF2b2lkIG1h
Y3JvIGNvbmZsaWN0LCBhbmQgYWxzbyBiZXR0ZXIgY29kaW5nIHN0eWxlIGNvbmZvcm1hbmNlLgor
CisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50
KToKKwogMjAxMC0wNS0yOCAgTHVjYXMgRGUgTWFyY2hpICA8bHVjYXMuZGVtYXJjaGlAcHJvZnVz
aW9uLm1vYmk+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCA4OWU4OTRhLi4zYjllZjM2IDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTIs
NiArMiwxOCBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAg
ICAgIEVudW0gdmFsdWUgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBMRUZUIGFyZSBjYXVzaW5n
IG1hY3JvIGNvbmZsaWN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM1NTMwCisKKyAgICAgICAgQ2hhbmdlIGVudW0gRUFsdGVyYXRpb24gZnJvbSB7
IE1PVkUsIEVYVEVORCB9IHRvIHsgRUFsdGVyYXRpb25Nb3ZlLCBFQWx0ZXJhdGlvbkV4dGVuZCB9
IGFuZCBlbnVtIEVEaXJlY3Rpb24geyBGT1JXQVJELCBCQUNLV0FSRCwgUklHSFQsIExFRlR9IHRv
IHsgRURpcmVjdGlvbkZvcndhcmQsIEVEaXJlY3Rpb25CYWNrd2FyZCwgRURpcmVjdGlvblJpZ2h0
LCBFRGlyZWN0aW9uTGVmdCB9IHRvIGF2b2lkIG1hY3JvIGNvbmZsaWN0LCBhbmQgYWxzbyBiZXR0
ZXIgY29kaW5nIHN0eWxlIGNvbmZvcm1hbmNlLgorCisgICAgICAgICogc3JjL1dlYkZyYW1lSW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZXhlY3V0ZUNvbW1hbmQpOgor
CisyMDEwLTA1LTI5ICBMeW9uIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgVGhpcyBpcyBhIGNvZGluZyBzdHls
ZSBjbGVhbnVwIGJlZm9yZSBmaXhpbmcgdG8gYnVnIDM1NTMwLgogCiAgICAgICAgIEVudW0gdmFs
dWUgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBMRUZUIGFyZSBjYXVzaW5nIG1hY3JvIGNvbmZs
aWN0cy4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCAzNzc2NjEwLi45ZjYw
ZjMxIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC0xMTAwLDExICsxMTAw
LDExIEBAIGJvb2wgV2ViRnJhbWVJbXBsOjpleGVjdXRlQ29tbWFuZChjb25zdCBXZWJTdHJpbmcm
IG5hbWUpCiAgICAgLy8gc3VwcG9ydC4KICAgICBpZiAoY29tbWFuZCA9PSAiRGVsZXRlVG9FbmRP
ZlBhcmFncmFwaCIpIHsKICAgICAgICAgRWRpdG9yKiBlZGl0b3IgPSBmcmFtZSgpLT5lZGl0b3Io
KTsKLSAgICAgICAgaWYgKCFlZGl0b3ItPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29u
dHJvbGxlcjo6Rk9SV0FSRCwKKyAgICAgICAgaWYgKCFlZGl0b3ItPmRlbGV0ZVdpdGhEaXJlY3Rp
b24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbkZvcndhcmQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFncmFwaEJvdW5kYXJ5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkpIHsKLSAgICAgICAgICAgIGVkaXRvci0+ZGVs
ZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELAorICAgICAgICAg
ICAgZWRpdG9yLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJl
Y3Rpb25Gb3J3YXJkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENo
YXJhY3RlckdyYW51bGFyaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2Up
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwu
Y3BwIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCmluZGV4
IGI4N2E5MWEuLjFhMjIwMzggMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50RWZsLmNwcAorKysgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEVmbC5jcHAKQEAgLTMzOSwyNiArMzM5LDI2IEBAIGJvb2wgRWRpdG9yQ2xpZW50RWZs
OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBp
ZiAoY2FyZXRCcm93c2luZykgewogICAgICAgICBzd2l0Y2ggKGtleUV2ZW50LT53aW5kb3dzVmly
dHVhbEtleUNvZGUoKSkgewogICAgICAgICBjYXNlIFZLX0xFRlQ6Ci0gICAgICAgICAgICBmcmFt
ZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXlFdmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsCi0gICAgICAgICAg
ICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQsCisgICAgICAgICAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShrZXlFdmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkVBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRp
b25Nb3ZlLAorICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0
aW9uTGVmdCwKICAgICAgICAgICAgICAgICAgICAga2V5RXZlbnQtPmN0cmxLZXkoKSA/IFdvcmRH
cmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LAogICAgICAgICAgICAgICAgICAgICB0
cnVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFZLX1JJR0hUOgot
ICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V5RXZlbnQtPnNoaWZ0S2V5
KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpN
T1ZFLAotICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpSSUdIVCwKKyAg
ICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtleUV2ZW50LT5zaGlmdEtleSgp
ID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250
cm9sbGVyOjpFQWx0ZXJhdGlvbk1vdmUsCisgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkVEaXJlY3Rpb25SaWdodCwKICAgICAgICAgICAgICAgICAgICAga2V5RXZlbnQt
PmN0cmxLZXkoKSA/IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LAogICAg
ICAgICAgICAgICAgICAgICB0cnVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBjYXNlIFZLX1VQOgotICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V5
RXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rp
b25Db250cm9sbGVyOjpNT1ZFLAotICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9s
bGVyOjpCQUNLV0FSRCwKKyAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtl
eUV2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb25FeHRl
bmQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbk1vdmUsCisgICAgICAgICAgICAg
ICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25CYWNrd2FyZCwKICAgICAgICAg
ICAgICAgICAgICAga2V5RXZlbnQtPmN0cmxLZXkoKSA/IFBhcmFncmFwaEdyYW51bGFyaXR5IDog
TGluZUdyYW51bGFyaXR5LAogICAgICAgICAgICAgICAgICAgICB0cnVlKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShrZXlFdmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsCi0gICAgICAgICAgICAg
ICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsCisgICAgICAgICAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShrZXlFdmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkVBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRp
b25Nb3ZlLAorICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0
aW9uRm9yd2FyZCwKICAgICAgICAgICAgICAgICAgICAga2V5RXZlbnQtPmN0cmxLZXkoKSA/IFBh
cmFncmFwaEdyYW51bGFyaXR5IDogTGluZUdyYW51bGFyaXR5LAogICAgICAgICAgICAgICAgICAg
ICB0cnVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hh
aWt1L0NoYW5nZUxvZyBiL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKaW5kZXggNGI0NzgyNS4uYmYz
N2JkNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZworKysgYi9XZWJLaXQvaGFp
a3UvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMTggQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KIAorICAgICAgICBFbnVtIHZhbHVlIEZPUldBUkQsIEJBQ0tXQVJELCBSSUdI
VCwgTEVGVCBhcmUgY2F1c2luZyBtYWNybyBjb25mbGljdHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTUzMAorCisgICAgICAgIENoYW5nZSBlbnVt
IEVBbHRlcmF0aW9uIGZyb20geyBNT1ZFLCBFWFRFTkQgfSB0byB7IEVBbHRlcmF0aW9uTW92ZSwg
RUFsdGVyYXRpb25FeHRlbmQgfSBhbmQgZW51bSBFRGlyZWN0aW9uIHsgRk9SV0FSRCwgQkFDS1dB
UkQsIFJJR0hULCBMRUZUfSB0byB7IEVEaXJlY3Rpb25Gb3J3YXJkLCBFRGlyZWN0aW9uQmFja3dh
cmQsIEVEaXJlY3Rpb25SaWdodCwgRURpcmVjdGlvbkxlZnQgfSB0byBhdm9pZCBtYWNybyBjb25m
bGljdCwgYW5kIGFsc28gYmV0dGVyIGNvZGluZyBzdHlsZSBjb25mb3JtYW5jZS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvckNsaWVudEhhaWt1OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKworMjAxMC0wNS0y
OSAgTHlvbiBDaGVuICA8bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCiAgICAgICAgIFRoaXMgaXMgYSBjb2Rpbmcgc3R5bGUgY2xlYW51cCBi
ZWZvcmUgZml4aW5nIHRvIGJ1ZyAzNTUzMC4KIAogICAgICAgICBFbnVtIHZhbHVlIEZPUldBUkQs
IEJBQ0tXQVJELCBSSUdIVCwgTEVGVCBhcmUgY2F1c2luZyBtYWNybyBjb25mbGljdHMuCmRpZmYg
LS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuY3Bw
IGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcAppbmRl
eCA4ZWQ2NDBmLi5jMzgwZWMyIDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50SGFpa3UuY3BwCisrKyBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRIYWlrdS5jcHAKQEAgLTI1MywzNiArMjUzLDM2IEBAIHZvaWQgRWRpdG9y
Q2xpZW50SGFpa3U6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAg
ICAgaWYgKHN0YXJ0LT5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7CiAgICAgICAgIHN3aXRjaCAoa2V2
ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewogICAgICAgICBjYXNlIFZLX0JBQ0s6Ci0g
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9u
Q29udHJvbGxlcjo6QkFDS1dBUkQsCisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0
ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbkJhY2t3YXJkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtldmVudC0+
Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIHRydWUp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVktfREVMRVRFOgotICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkZPUldBUkQsCisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJl
Y3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbkZvcndhcmQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V2ZW50LT5jdHJsS2V5KCkg
PyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgdHJ1ZSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBWS19MRUZUOgotICAgICAgICAgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoa2V2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxl
cjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQsCisgICAgICAg
ICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxl
Y3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkVBbHRlcmF0aW9uTW92ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25MZWZ0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga2V2ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkg
OiBDaGFyYWN0ZXJHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVktfUklHSFQ6
Ci0gICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXZlbnQtPnNoaWZ0S2V5
KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpN
T1ZFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6UklHSFQsCisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShr
ZXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbkV4dGVu
ZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVBbHRlcmF0aW9uTW92ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25S
aWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtldmVudC0+Y3Ry
bEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFZLX1VQOgotICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoa2V2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDog
U2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELAorICAgICAgICAgICAgZnJh
bWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RUFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJh
dGlvbk1vdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Rp
b25Db250cm9sbGVyOjpFRGlyZWN0aW9uQmFja3dhcmQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrZXZlbnQtPmN0cmxLZXkoKSA/IFBhcmFncmFwaEdyYW51bGFyaXR5
IDogTGluZUdyYW51bGFyaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWS19ET1dOOgotICAg
ICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V2ZW50LT5zaGlmdEtleSgpID8g
U2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkZPUldBUkQsCisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXZl
bnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbkV4dGVuZCA6
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVBbHRlcmF0aW9uTW92ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25Gb3J3
YXJkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V2ZW50LT5jdHJs
S2V5KCkgPyBQYXJhZ3JhcGhHcmFudWxhcml0eSA6IExpbmVHcmFudWxhcml0eSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOwogICAgICAgICAgICAgYnJlYWs7
CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpp
bmRleCAwMThiMmExLi5kYTRkNTE3IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTIsNiArMiwxOCBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIEVudW0gdmFsdWUgRk9SV0FSRCwgQkFD
S1dBUkQsIFJJR0hULCBMRUZUIGFyZSBjYXVzaW5nIG1hY3JvIGNvbmZsaWN0cy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NTMwCisKKyAgICAgICAg
Q2hhbmdlIGVudW0gRUFsdGVyYXRpb24gZnJvbSB7IE1PVkUsIEVYVEVORCB9IHRvIHsgRUFsdGVy
YXRpb25Nb3ZlLCBFQWx0ZXJhdGlvbkV4dGVuZCB9IGFuZCBlbnVtIEVEaXJlY3Rpb24geyBGT1JX
QVJELCBCQUNLV0FSRCwgUklHSFQsIExFRlR9IHRvIHsgRURpcmVjdGlvbkZvcndhcmQsIEVEaXJl
Y3Rpb25CYWNrd2FyZCwgRURpcmVjdGlvblJpZ2h0LCBFRGlyZWN0aW9uTGVmdCB9IHRvIGF2b2lk
IG1hY3JvIGNvbmZsaWN0LCBhbmQgYWxzbyBiZXR0ZXIgY29kaW5nIHN0eWxlIGNvbmZvcm1hbmNl
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorCisyMDEw
LTA1LTI5ICBMeW9uIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgVGhpcyBpcyBhIGNvZGluZyBzdHlsZSBjbGVh
bnVwIGJlZm9yZSBmaXhpbmcgdG8gYnVnIDM1NTMwLgogCiAgICAgICAgIEVudW0gdmFsdWUgRk9S
V0FSRCwgQkFDS1dBUkQsIFJJR0hULCBMRUZUIGFyZSBjYXVzaW5nIG1hY3JvIGNvbmZsaWN0cy4K
ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAg
Yi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCmluZGV4IGZiODM0
YTguLjgwOGI4YmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0
LmNwcApAQCAtMzc2LDExICszNzYsMTEgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5
Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICNlbmRpZiAvLyBRVF9OT19TSE9SVENV
VAogICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKICAg
ICAgICAgY2FzZSBWS19CQUNLOgotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVX
aXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELAorICAgICAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkVEaXJlY3Rpb25CYWNrd2FyZCwKICAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyR3JhbnVs
YXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZL
X0RFTEVURToKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlv
bihTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELAorICAgICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb25G
b3J3YXJkLAogICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2Us
IHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVktfTEVGVDoKLS0gCjEu
Ni40Lm1zeXNnaXQuMAoK
</data>
<flag name="review"
          id="41995"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57424</attachid>
            <date>2010-05-30 11:21:59 -0700</date>
            <delta_ts>2010-05-31 17:35:01 -0700</delta_ts>
            <desc>Patch for bug 35530 with the &quot;E&quot; in all enumeration values removed.</desc>
            <filename>35530.patch</filename>
            <type>text/plain</type>
            <size>63042</size>
            <attacher name="Lyon Chen">liachen</attacher>
            
              <data encoding="base64">RnJvbSAxNjI0MDRjY2Q4ZDhjNGZiOWMyOTE1NWQ4OWNhODk2ODgzNDY0MTEwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMeW9uIENoZW4gPGxpYWNoZW5AcmltLmNvbT4KRGF0ZTogU2F0
LCAyOSBNYXkgMjAxMCAxOToxMDo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMi8yXSBFbnVtIHZh
bHVlIEZPUldBUkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVCBhcmUgY2F1c2luZyBtYWNybyBjb25m
bGljdHMuCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU1MzAKClJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKQ2hhbmdlIGVudW0gRUFsdGVyYXRpb24gZnJvbSB7
IE1PVkUsIEVYVEVORCB9IHRvIHsgQWx0ZXJhdGlvbk1vdmUsIEFsdGVyYXRpb25FeHRlbmQgfSBh
bmQgZW51bSBFRGlyZWN0aW9uIHsgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBMRUZUfSB0byB7
IERpcmVjdGlvbkZvcndhcmQsIERpcmVjdGlvbkJhY2t3YXJkLCBEaXJlY3Rpb25SaWdodCwgRGly
ZWN0aW9uTGVmdCB9IHRvIGF2b2lkIG1hY3JvIGNvbmZsaWN0LCBhbmQgYWxzbyBiZXR0ZXIgY29k
aW5nIHN0eWxlIGNvbmZvcm1hbmNlLgoKYzovRGF0YS9XZWJLaXQvd2Via2l0LWdpdC9XZWJDb3Jl
OgoKKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5l
KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRvQVhSYW5nZUZvckxpbmUp
OgoqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKFdlYkNvcmU6OkVkaXRvcjo6ZGVsZXRlV2l0aERpcmVj
dGlvbik6CihXZWJDb3JlOjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvUG9z
aXRpb24pOgooV2ViQ29yZTo6RWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
ckluUmFuZ2VzKToKKiBlZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwOgooV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZUJhY2t3YXJkKToKKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21w
b3NpbmdQcmV2aW91c0NoYXJhY3Rlcik6CihXZWJDb3JlOjpleGVjdXRlRGVsZXRlRm9yd2FyZCk6
CihXZWJDb3JlOjpleGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUpOgooV2ViQ29yZTo6ZXhl
Y3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpOgooV2ViQ29yZTo6ZXhlY3V0ZURlbGV0
ZVRvRW5kT2ZMaW5lKToKKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb0VuZE9mUGFyYWdyYXBoKToK
KFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVXb3JkQmFja3dhcmQpOgooV2ViQ29yZTo6ZXhlY3V0ZURl
bGV0ZVdvcmRGb3J3YXJkKToKKFdlYkNvcmU6OmV4ZWN1dGVGb3J3YXJkRGVsZXRlKToKKFdlYkNv
cmU6OmV4ZWN1dGVNb3ZlQmFja3dhcmQpOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVCYWNrd2FyZEFu
ZE1vZGlmeVNlbGVjdGlvbik6CihXZWJDb3JlOjpleGVjdXRlTW92ZURvd24pOgooV2ViQ29yZTo6
ZXhlY3V0ZU1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
Rm9yd2FyZCk6CihXZWJDb3JlOjpleGVjdXRlTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24p
OgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVMZWZ0KToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlTGVmdEFu
ZE1vZGlmeVNlbGVjdGlvbik6CihXZWJDb3JlOjpleGVjdXRlTW92ZVBhZ2VEb3duKToKKFdlYkNv
cmU6OmV4ZWN1dGVNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24pOgooV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVQYWdlVXApOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYWdlVXBBbmRNb2RpZnlTZWxl
Y3Rpb24pOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVSaWdodCk6CihXZWJDb3JlOjpleGVjdXRlTW92
ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5p
bmdPZkRvY3VtZW50KToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50
QW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkxp
bmUpOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVj
dGlvbik6CihXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpOgooV2Vi
Q29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9u
KToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlKToKKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdl
YkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50KToKKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
VG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
VG9FbmRPZlNlbnRlbmNlKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlQW5k
TW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmUpOgooV2Vi
Q29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6CihXZWJDb3Jl
OjpleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGgpOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0Vu
ZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUGFy
YWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQ
YXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
VXApOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbik6CihXZWJDb3Jl
OjpleGVjdXRlTW92ZVdvcmRCYWNrd2FyZCk6CihXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRCYWNr
d2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CihXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRGb3J3YXJk
KToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgoo
V2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkTGVmdCk6CihXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRM
ZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0KToK
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNv
cmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9M
ZWZ0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9S
aWdodEVuZE9mTGluZSk6CihXZWJDb3JlOjpleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmVBbmRN
b2RpZnlTZWxlY3Rpb24pOgoqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHA6CihXZWJD
b3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjp3aWxsQmVNb2RpZmllZCk6CihXZWJDb3JlOjpTZWxl
Y3Rpb25Db250cm9sbGVyOjptb2RpZnkpOgoqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5o
OgooV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6KToKKiBlZGl0aW5nL1R5cGluZ0NvbW1h
bmQuY3BwOgooV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZCk6CihXZWJD
b3JlOjpUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZCk6CiogcGFnZS9ET01T
ZWxlY3Rpb24uY3BwOgooV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjptb2RpZnkpOgooV2ViQ29yZTo6
RE9NU2VsZWN0aW9uOjpkZWxldGVGcm9tRG9jdW1lbnQpOgoqIHBhZ2UvRXZlbnRIYW5kbGVyLmNw
cDoKKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVu
dCk6CgpjOi9EYXRhL1dlYktpdC93ZWJraXQtZ2l0L1dlYktpdDoKCiogZWZsL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEVmbC5jcHA6CihXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OmhhbmRs
ZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKCmM6L0RhdGEvV2ViS2l0L3dlYmtpdC1naXQvV2ViS2l0
L2Nocm9taXVtOgoKKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKFdlYktpdDo6V2ViRnJhbWVJbXBs
OjpleGVjdXRlQ29tbWFuZCk6CgpjOi9EYXRhL1dlYktpdC93ZWJraXQtZ2l0L1dlYktpdC9oYWlr
dToKCiogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuY3BwOgooV2ViQ29yZTo6RWRp
dG9yQ2xpZW50SGFpa3U6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgoKYzovRGF0YS9XZWJLaXQvd2Vi
a2l0LWdpdC9XZWJLaXQvcXQ6CgoqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoK
KFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKLS0tCiBXZWJD
b3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgODcgKysr
KysrKysrKysrKysrCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcCAgICB8ICAgIDYgKy0KIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAxNCArKy0tCiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5j
cHAgICAgICAgICAgICAgICAgICB8ICAxMTIgKysrKysrKysrKy0tLS0tLS0tLS0KIFdlYkNvcmUv
ZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcCAgICAgICAgICAgIHwgICA0NiArKysrLS0t
LQogV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaCAgICAgICAgICAgICAgfCAg
ICA0ICstCiBXZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgICAgICAgICAgICAgICAg
ICB8ICAgMTIgKy0KIFdlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwICAgICAgICAgICAgICAg
ICAgICAgIHwgICAxNCArKy0tCiBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDggKy0KIFdlYktpdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAxMiArKwogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsrCiBXZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5jcHAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcCAgICAgIHwgICAxNiArKy0tCiBXZWJLaXQvaGFp
a3UvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKysKIFdlYktp
dC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHAgIHwgICAyMCArKy0t
CiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTIgKysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAgICAgICAg
IHwgICAgNCArLQogMTcgZmlsZXMgY2hhbmdlZCwgMjY1IGluc2VydGlvbnMoKyksIDEzMCBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGRkMzI0MmEuLjcxY2IwMTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsOTMgQEAKIAogICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBFbnVtIHZhbHVlIEZPUldBUkQsIEJB
Q0tXQVJELCBSSUdIVCwgTEVGVCBhcmUgY2F1c2luZyBtYWNybyBjb25mbGljdHMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTUzMAorCisgICAgICAg
IENoYW5nZSBlbnVtIEVBbHRlcmF0aW9uIGZyb20geyBNT1ZFLCBFWFRFTkQgfSB0byB7IEFsdGVy
YXRpb25Nb3ZlLCBBbHRlcmF0aW9uRXh0ZW5kIH0gYW5kIGVudW0gRURpcmVjdGlvbiB7IEZPUldB
UkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVH0gdG8geyBEaXJlY3Rpb25Gb3J3YXJkLCBEaXJlY3Rp
b25CYWNrd2FyZCwgRGlyZWN0aW9uUmlnaHQsIERpcmVjdGlvbkxlZnQgfSB0byBhdm9pZCBtYWNy
byBjb25mbGljdCwgYW5kIGFsc28gYmV0dGVyIGNvZGluZyBzdHlsZSBjb25mb3JtYW5jZS4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRp
b25SYW5nZUZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6ZG9BWFJhbmdlRm9yTGluZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkZWxldGVXaXRoRGlyZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Qb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFt
bWFySW5SYW5nZXMpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZURlbGV0ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlRGVsZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlRGVsZXRlVG9FbmRPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVRv
RW5kT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVdvcmRCYWNr
d2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlV29yZEZvcndhcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUZvcndhcmREZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZU1vdmVCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUJhY2t3
YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRG93
bik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVGb3J3YXJkKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZUxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVMZWZ0
QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUGFnZURv
d24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVBhZ2VVcCk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlTW92ZVJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
UmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVU
b0JlZ2lubmluZ09mRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0Jl
Z2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRl
TW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2VBbmRNb2RpZnlT
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mRG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlT
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mU2VudGVuY2Up
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mU2VudGVuY2VBbmRNb2RpZnlT
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mTGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlBhcmFncmFwaCk6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYXJhZ3JhcGhCYWNrd2FyZEFuZE1v
ZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVBhcmFncmFwaEZv
cndhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVV
cCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEJhY2t3YXJkKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZU1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZVdvcmRMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
V29yZExlZnRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1v
dmVXb3JkUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkUmlnaHRBbmRN
b2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0xlZnRFbmRP
ZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0xlZnRFbmRPZkxpbmVBbmRN
b2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb1JpZ2h0RW5k
T2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9mTGluZUFu
ZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OndpbGxCZU1vZGlm
aWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeSk6Cisg
ICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3Rpb25Db250cm9sbGVyOjopOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVz
c2VkKToKKyAgICAgICAgKiBwYWdlL0RPTVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpET01TZWxlY3Rpb246Om1vZGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246
OmRlbGV0ZUZyb21Eb2N1bWVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1v
dmVtZW50KToKKworMjAxMC0wNS0yOSAgTHlvbiBDaGVuICA8bGlhY2hlbkByaW0uY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFRoaXMgaXMgYSBj
b2Rpbmcgc3R5bGUgY2xlYW51cCBiZWZvcmUgZml4aW5nIHRvIGJ1ZyAzNTUzMC4KIAogICAgICAg
ICBFbnVtIHZhbHVlIEZPUldBUkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVCBhcmUgY2F1c2luZyBt
YWNybyBjb25mbGljdHMuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggZWI0MTY4Yy4uNTAyYjEzOCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBi
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAt
MjQxOCw3ICsyNDE4LDcgQEAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKHVuc2kKICAgICAvLyB3aWxsIGJl
IGEgY2FyZXQgYXQgdmlzaWJsZVBvcy4KICAgICBTZWxlY3Rpb25Db250cm9sbGVyIHNlbGVjdGlv
bjsKICAgICBzZWxlY3Rpb24uc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24odmlzaWJsZVBv
cykpOwotICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpSSUdIVCwgTGluZUJvdW5kYXJ5KTsKKyAgICBzZWxlY3Rpb24u
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0LCBMaW5lQm91bmRhcnkpOwogICAgIAogICAgIHJldHVy
biBWaXNpYmxlUG9zaXRpb25SYW5nZShzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0
KCksIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCkpOwogfQpAQCAtMjYzMCw4ICsy
NjMwLDggQEAgUGxhaW5UZXh0UmFuZ2UgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZG9BWFJh
bmdlRm9yTGluZSh1bnNpZ25lZCBsaW5lTnVtYmVyKQogICAgIC8vIHdpbGwgYmUgYSBjYXJldCBh
dCB2aXNpYmxlUG9zLgogICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIgc2VsZWN0aW9uOwogICAgIHNl
bGVjdGlvbi5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbih2aXNpYmxlUG9zKSk7Ci0gICAg
c2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkxFRlQsIExpbmVCb3VuZGFyeSk7Ci0gICAgc2VsZWN0aW9uLm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCBMaW5l
Qm91bmRhcnkpOworICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgTGluZUJv
dW5kYXJ5KTsKKyAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVy
YXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0LCBMaW5lQm91
bmRhcnkpOwogICAgIAogICAgIC8vIGNhbGN1bGF0ZSB0aGUgaW5kaWNlcyBmb3IgdGhlIHNlbGVj
dGlvbiBzdGFydCBhbmQgZW5kCiAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBz
ZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDYw
M2YzNWMuLjYzZWU0NTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisr
KyBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yNDIsMTIgKzI0MiwxMiBAQCBib29s
IEVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0
aW9uIGRpcmVjdGlvbiwgVGV4dAogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3dp
dGNoIChkaXJlY3Rpb24pIHsKLSAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JX
QVJEOgotICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hUOgorICAgICAgICBj
YXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQ6CisgICAgICAgIGNhc2Ug
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQ6CiAgICAgICAgICAgICBUeXBpbmdD
b21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChtX2ZyYW1lLT5kb2N1bWVudCgpLCBjYW5T
bWFydENvcHlPckRlbGV0ZSgpLCBncmFudWxhcml0eSwga2lsbFJpbmcpOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQ6Ci0gICAg
ICAgIGNhc2UgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVGVDoKKyAgICAgICAgY2FzZSBTZWxlY3Rp
b25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZDoKKyAgICAgICAgY2FzZSBTZWxlY3Rpb25D
b250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0OgogICAgICAgICAgICAgVHlwaW5nQ29tbWFuZDo6ZGVs
ZXRlS2V5UHJlc3NlZChtX2ZyYW1lLT5kb2N1bWVudCgpLCBjYW5TbWFydENvcHlPckRlbGV0ZSgp
LCBncmFudWxhcml0eSwga2lsbFJpbmcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTIyNjksNyArMjI2OSw3IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJU
eXBpbmdUb1Bvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmcCkKIAogICAgICAgICAvLyBS
ZXNldCB0aGUgY2hhcmV0IG9uZSBjaGFyYWN0ZXIgZnVydGhlci4KICAgICAgICAgZnJhbWUoKS0+
c2VsZWN0aW9uKCktPm1vdmVUbyhmcmFtZSgpLT5zZWxlY3Rpb24oKS0+ZW5kKCkpOwotICAgICAg
ICBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAg
ICAgICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpB
bHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHkpOwogICAgIH0KIAogICAgIGlmICghaXNHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkKCkpCkBAIC0yNTU4LDExICsyNTU4LDExIEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlz
c3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKGJvb2wgbWFya1NwZWxsaW5nLCBSYW5nZSoK
ICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0aW9uUmFuZ2UgPSBUZXh0SXRlcmF0b3I6
OnN1YnJhbmdlKHBhcmFncmFwaFJhbmdlLmdldCgpLCAwLCBzZWxlY3Rpb25PZmZzZXQpOwogICAg
ICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vdmVUbyhzZWxlY3Rpb25SYW5nZS0+ZW5k
UG9zaXRpb24oKSwgRE9XTlNUUkVBTSk7CiAgICAgICAgICAgICBpZiAoYWRqdXN0U2VsZWN0aW9u
Rm9yUGFyYWdyYXBoQm91bmRhcmllcykKLSAgICAgICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgICAgICBtX2Zy
YW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25N
b3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBJZiB0aGlzIGZhaWxz
IGZvciBhbnkgcmVhc29uLCB0aGUgZmFsbGJhY2sgaXMgdG8gZ28gb25lIHBvc2l0aW9uIGJleW9u
ZCB0aGUgbGFzdCByZXBsYWNlbWVudAogICAgICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vdmVUbyhtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+ZW5kKCkpOwotICAgICAgICAgICAgbV9mcmFt
ZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rp
b25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgICAg
ICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVy
YXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0
ZXJHcmFudWxhcml0eSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFu
ZC5jcHAKaW5kZXggZTdlOGZiZC4uOTIyNTBhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNw
cApAQCAtMzI0LDMyICszMjQsMzIgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZShGcmFtZSog
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnMKIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZURlbGV0ZUJhY2t3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVs
ZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgQ2hhcmFjdGVy
R3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdp
dGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIENoYXJh
Y3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJh
Y3RlcihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3Ry
aW5nJikKIHsKICAgICBMT0dfRVJST1IoIkRlbGV0ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZp
b3VzQ2hhcmFjdGVyIGlzIG5vdCBpbXBsZW1lbnRlZCwgZG9pbmcgRGVsZXRlQmFja3dhcmQgaW5z
dGVhZCIpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rp
b25Db250cm9sbGVyOjpCQUNLV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVl
KTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwg
dHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVG
b3J3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxl
Y3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRy
dWUpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25D
b250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2Us
IHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRl
VG9CZWdpbm5pbmdPZkxpbmUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGly
ZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBMaW5lQm91bmRhcnksIHRydWUs
IGZhbHNlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0
aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFs
c2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9C
ZWdpbm5pbmdPZlBhcmFncmFwaChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhE
aXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIFBhcmFncmFwaEJvdW5kYXJ5
LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9u
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFy
eSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zNTcsNyArMzU3LDcg
QEAgc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvRW5kT2ZMaW5lKEZyYW1lKiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLAogewogICAgIC8vIERlc3BpdGUgaXRzIG5hbWUsIHRo
aXMgY29tbWFuZCBzaG91bGQgZGVsZXRlIHRoZSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YKICAgICAv
LyBhIHBhcmFncmFwaCBpZiB5b3UgYXJlIGF0IHRoZSBlbmQgb2YgYSBwYXJhZ3JhcGggKGxpa2Ug
RGVsZXRlVG9FbmRPZlBhcmFncmFwaCkuCi0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRo
RGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIExpbmVCb3VuZGFyeSwgdHJ1
ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxl
Y3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lQm91bmRhcnksIHRydWUsIGZh
bHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzY1LDcgKzM2NSw3IEBAIHN0YXRpYyBi
b29sIGV4ZWN1dGVEZWxldGVUb0VuZE9mUGFyYWdyYXBoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291CiB7CiAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgdGhpcyBjb21tYW5k
IHNob3VsZCBkZWxldGUgdGhlIG5ld2xpbmUgYXQgdGhlIGVuZCBvZgogICAgIC8vIGEgcGFyYWdy
YXBoIGlmIHlvdSBhcmUgYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFwaC4KLSAgICBmcmFtZS0+ZWRp
dG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwg
UGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRl
bGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwg
UGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMzg2LDEzICszODYsMTMgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvTWFyayhGcmFt
ZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QKIAogc3RhdGljIGJv
b2wgZXhlY3V0ZURlbGV0ZVdvcmRCYWNrd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRl
bGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIFdvcmRHcmFu
dWxhcml0eSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERp
cmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgV29yZEdyYW51
bGFyaXR5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVEZWxldGVXb3JkRm9yd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0
ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgV29yZEdyYW51bGFy
aXR5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0
aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFdvcmRHcmFudWxhcml0
eSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00MzksNyArNDM5LDcg
QEAgc3RhdGljIGJvb2wgZXhlY3V0ZUZvcndhcmREZWxldGUoRnJhbWUqIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmMKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAg
IGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5nOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndh
cmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBDb21tYW5kRnJvbURPTVdp
dGhVc2VySW50ZXJmYWNlOgpAQCAtNTk3LDQ5ICs1OTcsNDkgQEAgc3RhdGljIGJvb2wgZXhlY3V0
ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0KEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGkKIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVCYWNrd2FyZChGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25D
b250cm9sbGVyOjpCQUNLV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZy
YW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25N
b3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlTW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6QkFDS1dBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5k
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVs
YXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
TW92ZURvd24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgTGluZUdyYW51bGFy
aXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9y
d2FyZCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3Rh
dGljIGJvb2wgZXhlY3V0ZU1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFt
ZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0
ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lR3JhbnVsYXJp
dHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92
ZUZvcndhcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihG
cmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpF
WFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5
LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3
YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
IHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlTGVmdChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpM
RUZULCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkRpcmVjdGlvbkxlZnQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVMZWZ0QW5kTW9kaWZ5
U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25z
dCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVGVCwgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVj
dGlvbkxlZnQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtNjQ4LDcgKzY0OCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFnZURvd24o
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0CiAgICAgaW50
IGRpc3RhbmNlID0gdmVydGljYWxTY3JvbGxEaXN0YW5jZShmcmFtZSk7CiAgICAgaWYgKCFkaXN0
YW5jZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBkaXN0YW5jZSwgdHJ1ZSwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWxpZ25DdXJzb3JPblNjcm9sbEFsd2F5cyk7CisgICAgcmV0dXJu
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25Nb3ZlLCBkaXN0YW5jZSwgdHJ1ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QWxpZ25DdXJzb3JP
blNjcm9sbEFsd2F5cyk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFnZURvd25BbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCkBAIC02NTYsNyArNjU2LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q28KICAgICBpbnQgZGlzdGFuY2UgPSB2ZXJ0aWNhbFNjcm9sbERpc3RhbmNlKGZyYW1lKTsKICAg
ICBpZiAoIWRpc3RhbmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgZGlzdGFu
Y2UsIHRydWUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsaWduQ3Vyc29yT25TY3JvbGxBbHdheXMp
OworICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBkaXN0YW5jZSwgdHJ1ZSwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6QWxpZ25DdXJzb3JPblNjcm9sbEFsd2F5cyk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVN
b3ZlUGFnZVVwKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25z
dCBTdHJpbmcmKQpAQCAtNjY0LDcgKzY2NCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFn
ZVVwKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTCiAg
ICAgaW50IGRpc3RhbmNlID0gdmVydGljYWxTY3JvbGxEaXN0YW5jZShmcmFtZSk7CiAgICAgaWYg
KCFkaXN0YW5jZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCAtZGlzdGFuY2UsIHRy
dWUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsaWduQ3Vyc29yT25TY3JvbGxBbHdheXMpOworICAg
IHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpB
bHRlcmF0aW9uTW92ZSwgLWRpc3RhbmNlLCB0cnVlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpBbGln
bkN1cnNvck9uU2Nyb2xsQWx3YXlzKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYWdl
VXBBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2UsIGNvbnN0IFN0cmluZyYpCkBAIC02NzIsMjEwICs2NzIsMjEwIEBAIHN0YXRpYyBib29s
IGV4ZWN1dGVNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tCiAgICAgaW50IGRpc3RhbmNlID0gdmVydGljYWxTY3JvbGxEaXN0YW5jZShm
cmFtZSk7CiAgICAgaWYgKCFkaXN0YW5jZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRF
TkQsIC1kaXN0YW5jZSwgdHJ1ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QWxpZ25DdXJzb3JPblNj
cm9sbEFsd2F5cyk7CisgICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIC1kaXN0YW5jZSwgdHJ1ZSwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWxpZ25DdXJzb3JPblNjcm9sbEFsd2F5cyk7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVNb3ZlUmlnaHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6UklHSFQsIENo
YXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6RGlyZWN0aW9uUmlnaHQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVSaWdodEFuZE1vZGlmeVNlbGVj
dGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3Ry
aW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCBDaGFyYWN0ZXJHcmFudWxh
cml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9u
UmlnaHQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
ZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIERvY3VtZW50Qm91bmRhcnksIHRydWUpOworICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgRG9jdW1lbnRC
b3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1
dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZy
YW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIERvY3VtZW50Qm91bmRhcnksIHRydWUpOworICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBEb2N1bWVu
dEJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhl
Y3V0ZU1vdmVUb0JlZ2lubmluZ09mTGluZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNL
V0FSRCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6RGlyZWN0aW9uQmFja3dhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkxpbmVBbmRNb2Rp
ZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgTGluZUJv
dW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25D
b250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25CYWNrd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoKEZyYW1lKiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZy
YW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7CisgICAg
ZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlv
bk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhC
b3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1
dGVNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBm
cmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7Cisg
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIFBhcmFn
cmFwaEJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wg
ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2UoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6QkFDS1dBUkQsIFNlbnRlbmNlQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rp
b25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgdHJ1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5p
bmdPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6QkFDS1dBUkQsIFNlbnRlbmNlQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBTZW50ZW5jZUJvdW5kYXJ5LCB0cnVl
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9m
RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgRG9jdW1lbnRCb3Vu
ZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZv
cndhcmQsIERvY3VtZW50Qm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbihG
cmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpF
WFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIERvY3VtZW50Qm91bmRhcnksIHRy
dWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQs
IERvY3VtZW50Qm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZVRvRW5kT2ZTZW50ZW5jZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpGT1JXQVJELCBTZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgdHJ1ZSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRl
bmNlQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FS
RCwgU2VudGVuY2VCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmUoRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBm
cmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9u
TW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5kYXJ5
LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVU
b0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkZPUldBUkQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mUGFyYWdyYXBoKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1P
VkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVl
KTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpB
bHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgUGFy
YWdyYXBoQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
ZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7Cisg
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdy
YXBoQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBl
eGVjdXRlTW92ZVBhcmFncmFwaEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZy
YW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIFBhcmFncmFwaEdyYW51bGFyaXR5LCB0cnVlKTsK
KyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRl
cmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgUGFy
YWdyYXBoR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZVBhcmFncmFwaEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5E
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgdHJ1
ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwg
UGFyYWdyYXBoR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVVwKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJE
LCBMaW5lR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbihG
cmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpF
WFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBMaW5lR3JhbnVsYXJpdHksIHRy
dWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJk
LCBMaW5lR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZVdvcmRCYWNrd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpC
QUNLV0FSRCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZEJhY2t3YXJkQW5k
TW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIFdv
cmRHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
RGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZEZvcndhcmQoRnJhbWUqIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJh
bWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFt
ZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92
ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgV29yZEdyYW51bGFyaXR5
LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVX
b3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCkt
Pm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkZPUldBUkQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkTGVmdChGcmFt
ZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZF
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpMRUZULCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOworICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCBXb3JkR3JhbnVsYXJp
dHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92
ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
TEVGVCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVy
biB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRSaWdodChGcmFtZSogZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBm
cmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpSSUdIVCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFt
ZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92
ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQsIFdvcmRHcmFudWxhcml0eSwg
dHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29y
ZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6UklH
SFQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6RGlyZWN0aW9uUmlnaHQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lKEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJh
bWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1v
dmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkxlZnQsIExpbmVCb3VuZGFyeSwgdHJ1
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9MZWZ0
RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
TEVGVCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpEaXJlY3Rpb25MZWZ0LCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVl
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmUoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
ZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6UklHSFQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUt
PnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0LCBMaW5lQm91bmRhcnksIHRydWUp
OwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvUmlnaHRF
bmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpS
SUdIVCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpEaXJlY3Rpb25SaWdodCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIu
Y3BwIGIvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDgxNmY5
NjguLmVkYzA0YzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9s
bGVyLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKQEAg
LTI0OSw3ICsyNDksNyBAQCB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldElzRGlyZWN0aW9u
YWwoYm9vbCBpc0RpcmVjdGlvbmFsKQogCiB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OndpbGxC
ZU1vZGlmaWVkKEVBbHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAg
ICBpZiAoYWx0ZXIgIT0gRVhURU5EKQorICAgIGlmIChhbHRlciAhPSBBbHRlcmF0aW9uRXh0ZW5k
KQogICAgICAgICByZXR1cm47CiAKICAgICBQb3NpdGlvbiBzdGFydCA9IG1fc2VsZWN0aW9uLnN0
YXJ0KCk7CkBAIC0yNjksMTMgKzI2OSwxMyBAQCB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6Ondp
bGxCZU1vZGlmaWVkKEVBbHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpcmVjdGlvbgogICAg
IH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHByb2JhYmx5IG5vdCBjb3JyZWN0
IGZvciByaWdodCBhbmQgbGVmdCB3aGVuIHRoZSBkaXJlY3Rpb24gaXMgUlRMLgogICAgICAgICBz
d2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBjYXNlIFJJR0hUOgotICAgICAgICBjYXNlIEZP
UldBUkQ6CisgICAgICAgIGNhc2UgRGlyZWN0aW9uUmlnaHQ6CisgICAgICAgIGNhc2UgRGlyZWN0
aW9uRm9yd2FyZDoKICAgICAgICAgICAgIG1fc2VsZWN0aW9uLnNldEJhc2Uoc3RhcnQpOwogICAg
ICAgICAgICAgbV9zZWxlY3Rpb24uc2V0RXh0ZW50KGVuZCk7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBMRUZUOgotICAgICAgICBjYXNlIEJBQ0tXQVJEOgorICAgICAgICBjYXNl
IERpcmVjdGlvbkxlZnQ6CisgICAgICAgIGNhc2UgRGlyZWN0aW9uQmFja3dhcmQ6CiAgICAgICAg
ICAgICBtX3NlbGVjdGlvbi5zZXRCYXNlKGVuZCk7CiAgICAgICAgICAgICBtX3NlbGVjdGlvbi5z
ZXRFeHRlbnQoc3RhcnQpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC02NDUsMjYgKzY0NSwyNiBA
QCBib29sIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeShFQWx0ZXJhdGlvbiBhbHRlciwgRURp
cmVjdGlvbiBkaXJlY3Rpb24sIFRleHRHcgogCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9u
OwogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBSSUdIVDoKLSAgICAgICAgaWYg
KGFsdGVyID09IE1PVkUpCisgICAgY2FzZSBEaXJlY3Rpb25SaWdodDoKKyAgICAgICAgaWYgKGFs
dGVyID09IEFsdGVyYXRpb25Nb3ZlKQogICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlNb3Zp
bmdSaWdodChncmFudWxhcml0eSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvc2l0aW9u
ID0gbW9kaWZ5RXh0ZW5kaW5nUmlnaHQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEZPUldBUkQ6Ci0gICAgICAgIGlmIChhbHRlciA9PSBFWFRFTkQpCisgICAgY2FzZSBE
aXJlY3Rpb25Gb3J3YXJkOgorICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJhdGlvbkV4dGVuZCkK
ICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFudWxhcml0
eSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92aW5nRm9y
d2FyZChncmFudWxhcml0eSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTEVGVDoKLSAgICAg
ICAgaWYgKGFsdGVyID09IE1PVkUpCisgICAgY2FzZSBEaXJlY3Rpb25MZWZ0OgorICAgICAgICBp
ZiAoYWx0ZXIgPT0gQWx0ZXJhdGlvbk1vdmUpCiAgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlm
eU1vdmluZ0xlZnQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3Np
dGlvbiA9IG1vZGlmeUV4dGVuZGluZ0xlZnQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEJBQ0tXQVJEOgotICAgICAgICBpZiAoYWx0ZXIgPT0gRVhURU5EKQorICAgIGNh
c2UgRGlyZWN0aW9uQmFja3dhcmQ6CisgICAgICAgIGlmIChhbHRlciA9PSBBbHRlcmF0aW9uRXh0
ZW5kKQogICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFu
dWxhcml0eSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92
aW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwpAQCAtNjgxLDE2ICs2ODEsMTYgQEAgYm9vbCBTZWxl
Y3Rpb25Db250cm9sbGVyOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0ZXIsIEVEaXJlY3Rpb24gZGly
ZWN0aW9uLCBUZXh0R3IKICAgICBpbnQgeCA9IHhQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlv
bihTVEFSVCk7CiAKICAgICBzd2l0Y2ggKGFsdGVyKSB7Ci0gICAgY2FzZSBNT1ZFOgorICAgIGNh
c2UgQWx0ZXJhdGlvbk1vdmU6CiAgICAgICAgIG1vdmVUbyhwb3NpdGlvbiwgdXNlclRyaWdnZXJl
ZCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRVhURU5EOgorICAgIGNhc2UgQWx0ZXJhdGlv
bkV4dGVuZDoKICAgICAgICAgaWYgKCFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+ZWRpdGluZ0JlaGF2
aW9yKCkgIT0gRWRpdGluZ01hY0JlaGF2aW9yIHx8IG1fc2VsZWN0aW9uLmlzQ2FyZXQoKSB8fCAh
aXNCb3VuZGFyeShncmFudWxhcml0eSkpCiAgICAgICAgICAgICBzZXRFeHRlbnQocG9zaXRpb24s
IHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFN0YW5kYXJk
IE1hYyBiZWhhdmlvciB3aGVuIGV4dGVuZGluZyB0byBhIGJvdW5kYXJ5IGlzIGdyb3cgdGhlIHNl
bGVjdGlvbiByYXRoZXIKICAgICAgICAgICAgIC8vIHRoYW4gbGVhdmluZyB0aGUgYmFzZSBpbiBw
bGFjZSBhbmQgbW92aW5nIHRoZSBleHRlbnQuIE1hdGNoZXMgTlNUZXh0Vmlldy4KLSAgICAgICAg
ICAgIGlmIChkaXJlY3Rpb24gPT0gRk9SV0FSRCB8fCBkaXJlY3Rpb24gPT0gUklHSFQpCisgICAg
ICAgICAgICBpZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkZvcndhcmQgfHwgZGlyZWN0aW9uID09
IERpcmVjdGlvblJpZ2h0KQogICAgICAgICAgICAgICAgIHNldEVuZChwb3NpdGlvbiwgdXNlclRy
aWdnZXJlZCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc2V0U3RhcnQocG9z
aXRpb24sIHVzZXJUcmlnZ2VyZWQpOwpAQCAtNzA2LDcgKzcwNiw3IEBAIGJvb2wgU2VsZWN0aW9u
Q29udHJvbGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpcmVjdGlv
biwgVGV4dEdyCiAKICAgICBzZXROZWVkc0xheW91dCgpOwogCi0gICAgc2V0SXNEaXJlY3Rpb25h
bChhbHRlciA9PSBFWFRFTkQpOworICAgIHNldElzRGlyZWN0aW9uYWwoYWx0ZXIgPT0gQWx0ZXJh
dGlvbkV4dGVuZCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTc0MSwxNyArNzQxLDE3IEBA
IGJvb2wgU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBpbnQg
dmVydGljYWxEaXN0YW5jZSwgYm9vbCB1CiAgICAgaWYgKHVwKQogICAgICAgICB2ZXJ0aWNhbERp
c3RhbmNlID0gLXZlcnRpY2FsRGlzdGFuY2U7CiAKLSAgICB3aWxsQmVNb2RpZmllZChhbHRlciwg
dXAgPyBCQUNLV0FSRCA6IEZPUldBUkQpOworICAgIHdpbGxCZU1vZGlmaWVkKGFsdGVyLCB1cCA/
IERpcmVjdGlvbkJhY2t3YXJkIDogRGlyZWN0aW9uRm9yd2FyZCk7CiAKICAgICBWaXNpYmxlUG9z
aXRpb24gcG9zOwogICAgIGludCB4UG9zID0gMDsKICAgICBzd2l0Y2ggKGFsdGVyKSB7Ci0gICAg
Y2FzZSBNT1ZFOgorICAgIGNhc2UgQWx0ZXJhdGlvbk1vdmU6CiAgICAgICAgIHBvcyA9IFZpc2li
bGVQb3NpdGlvbih1cCA/IG1fc2VsZWN0aW9uLnN0YXJ0KCkgOiBtX3NlbGVjdGlvbi5lbmQoKSwg
bV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgICAgIHhQb3MgPSB4UG9zRm9yVmVydGljYWxB
cnJvd05hdmlnYXRpb24odXAgPyBTVEFSVCA6IEVORCk7CiAgICAgICAgIG1fc2VsZWN0aW9uLnNl
dEFmZmluaXR5KHVwID8gVVBTVFJFQU0gOiBET1dOU1RSRUFNKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBFWFRFTkQ6CisgICAgY2FzZSBBbHRlcmF0aW9uRXh0ZW5kOgogICAgICAgICBwb3Mg
PSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmlu
aXR5KCkpOwogICAgICAgICB4UG9zID0geFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKEVY
VEVOVCk7CiAgICAgICAgIG1fc2VsZWN0aW9uLnNldEFmZmluaXR5KERPV05TVFJFQU0pOwpAQCAt
Nzg4LDEwICs3ODgsMTAgQEAgYm9vbCBTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnkoRUFsdGVy
YXRpb24gYWx0ZXIsIGludCB2ZXJ0aWNhbERpc3RhbmNlLCBib29sIHUKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgc3dpdGNoIChhbHRlcikgewotICAgIGNhc2UgTU9WRToKKyAgICBjYXNl
IEFsdGVyYXRpb25Nb3ZlOgogICAgICAgICBtb3ZlVG8ocmVzdWx0LCB1c2VyVHJpZ2dlcmVkLCBh
bGlnbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRVhURU5EOgorICAgIGNhc2UgQWx0ZXJh
dGlvbkV4dGVuZDoKICAgICAgICAgc2V0RXh0ZW50KHJlc3VsdCwgdXNlclRyaWdnZXJlZCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTc5OSw3ICs3OTksNyBAQCBib29sIFNlbGVjdGlvbkNv
bnRyb2xsZXI6Om1vZGlmeShFQWx0ZXJhdGlvbiBhbHRlciwgaW50IHZlcnRpY2FsRGlzdGFuY2Us
IGJvb2wgdQogICAgIGlmICh1c2VyVHJpZ2dlcmVkKQogICAgICAgICBtX2dyYW51bGFyaXR5ID0g
Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAKLSAgICBzZXRJc0RpcmVjdGlvbmFsKGFsdGVyID09IEVY
VEVORCk7CisgICAgc2V0SXNEaXJlY3Rpb25hbChhbHRlciA9PSBBbHRlcmF0aW9uRXh0ZW5kKTsK
IAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1NlbGVj
dGlvbkNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgK
aW5kZXggYzNkYzJmMi4uNzI1ZWE0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1NlbGVj
dGlvbkNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxl
ci5oCkBAIC00Myw4ICs0Myw4IEBAIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAogY2xhc3MgU2Vs
ZWN0aW9uQ29udHJvbGxlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0gICAgZW51
bSBFQWx0ZXJhdGlvbiB7IE1PVkUsIEVYVEVORCB9OwotICAgIGVudW0gRURpcmVjdGlvbiB7IEZP
UldBUkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVCB9OworICAgIGVudW0gRUFsdGVyYXRpb24geyBB
bHRlcmF0aW9uTW92ZSwgQWx0ZXJhdGlvbkV4dGVuZCB9OworICAgIGVudW0gRURpcmVjdGlvbiB7
IERpcmVjdGlvbkZvcndhcmQsIERpcmVjdGlvbkJhY2t3YXJkLCBEaXJlY3Rpb25SaWdodCwgRGly
ZWN0aW9uTGVmdCB9OwogICAgIGVudW0gQ3Vyc29yQWxpZ25PblNjcm9sbCB7IEFsaWduQ3Vyc29y
T25TY3JvbGxJZk5lZWRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGlnbkN1
cnNvck9uU2Nyb2xsQWx3YXlzIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UeXBp
bmdDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCAy
NWE0ZTZhLi4xOGE1ZWY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFu
ZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC00MzEsOSAr
NDMxLDkgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxh
cml0eSBncmFudWxhcml0eSwgYm9vbCBraWxsUmluZykKIAogICAgICAgICBTZWxlY3Rpb25Db250
cm9sbGVyIHNlbGVjdGlvbjsKICAgICAgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlvbihlbmRpbmdT
ZWxlY3Rpb24oKSk7Ci0gICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgZ3JhbnVsYXJpdHkpOwor
ICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25F
eHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBncmFudWxhcml0
eSk7CiAgICAgICAgIGlmIChraWxsUmluZyAmJiBzZWxlY3Rpb24uaXNDYXJldCgpICYmIGdyYW51
bGFyaXR5ICE9IENoYXJhY3RlckdyYW51bGFyaXR5KQotICAgICAgICAgICAgc2VsZWN0aW9uLm1v
ZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJB
Q0tXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgICAgICBzZWxlY3Rpb24ubW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICAg
ICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLnByZXZpb3VzKHRydWUpLmlz
TnVsbCgpKSB7CiAgICAgICAgICAgICAvLyBXaGVuIHRoZSBjYXJldCBpcyBhdCB0aGUgc3RhcnQg
b2YgdGhlIGVkaXRhYmxlIGFyZWEgaW4gYW4gZW1wdHkgbGlzdCBpdGVtLCBicmVhayBvdXQgb2Yg
dGhlIGxpc3QgaXRlbS4KQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRl
bGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5n
KQogICAgICAgICAgICAgaWYgKGlzTGFzdFBvc2l0aW9uQmVmb3JlVGFibGUodmlzaWJsZVN0YXJ0
KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAvLyBFeHRlbmQgdGhlIHNl
bGVjdGlvbiBiYWNrd2FyZCBpbnRvIHRoZSBsYXN0IGNlbGwsIHRoZW4gZGVsZXRpb24gd2lsbCBo
YW5kbGUgdGhlIG1vdmUuCi0gICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIGdyYW51bGFy
aXR5KTsKKyAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQs
IGdyYW51bGFyaXR5KTsKICAgICAgICAgLy8gSWYgdGhlIGNhcmV0IGlzIGp1c3QgYWZ0ZXIgYSB0
YWJsZSwgc2VsZWN0IHRoZSB0YWJsZSBhbmQgZG9uJ3QgZGVsZXRlIGFueXRoaW5nLgogICAgICAg
ICB9IGVsc2UgaWYgKE5vZGUqIHRhYmxlID0gaXNGaXJzdFBvc2l0aW9uQWZ0ZXJUYWJsZSh2aXNp
YmxlU3RhcnQpKSB7CiAgICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVj
dGlvbihQb3NpdGlvbih0YWJsZSwgMCksIGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCksIERPV05T
VFJFQU0pKTsKQEAgLTUyNSw5ICs1MjUsOSBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmRE
ZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraQogICAg
ICAgICAvLyByb290IGVkaXRhYmxlIGVsZW1lbnQgb3IgYXQgdGhlIHN0YXJ0IG9mIGEgZG9jdW1l
bnQuCiAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIgc2VsZWN0aW9uOwogICAgICAgICBzZWxl
Y3Rpb24uc2V0U2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpKTsKLSAgICAgICAgc2VsZWN0aW9u
Lm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkZPUldBUkQsIGdyYW51bGFyaXR5KTsKKyAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJl
Y3Rpb25Gb3J3YXJkLCBncmFudWxhcml0eSk7CiAgICAgICAgIGlmIChraWxsUmluZyAmJiBzZWxl
Y3Rpb24uaXNDYXJldCgpICYmIGdyYW51bGFyaXR5ICE9IENoYXJhY3RlckdyYW51bGFyaXR5KQot
ICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAg
ICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlv
bkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVy
R3JhbnVsYXJpdHkpOwogCiAgICAgICAgIFBvc2l0aW9uIGRvd25zdHJlYW1FbmQgPSBlbmRpbmdT
ZWxlY3Rpb24oKS5lbmQoKS5kb3duc3RyZWFtKCk7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlRW5kID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpOwpAQCAtNTQyLDcgKzU0
Miw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpCiAKICAgICAgICAgLy8gZGVsZXRpbmcgdG8g
ZW5kIG9mIHBhcmFncmFwaCB3aGVuIGF0IGVuZCBvZiBwYXJhZ3JhcGggbmVlZHMgdG8gbWVyZ2Ug
dGhlIG5leHQgcGFyYWdyYXBoIChpZiBhbnkpCiAgICAgICAgIGlmIChncmFudWxhcml0eSA9PSBQ
YXJhZ3JhcGhCb3VuZGFyeSAmJiBzZWxlY3Rpb24uc2VsZWN0aW9uKCkuaXNDYXJldCgpICYmIGlz
RW5kT2ZQYXJhZ3JhcGgoc2VsZWN0aW9uLnNlbGVjdGlvbigpLnZpc2libGVFbmQoKSkpCi0gICAg
ICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAg
ICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0
ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSk7CiAKICAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUgPSBzZWxlY3Rpb24uc2VsZWN0
aW9uKCk7CiAgICAgICAgIGlmICghc3RhcnRpbmdTZWxlY3Rpb24oKS5pc1JhbmdlKCkgfHwgc2Vs
ZWN0aW9uVG9EZWxldGUuYmFzZSgpICE9IHN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSkKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwIGIvV2ViQ29yZS9wYWdlL0RP
TVNlbGVjdGlvbi5jcHAKaW5kZXggYTU4MzE3Ni4uZmM5ODdlMSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5j
cHAKQEAgLTI4MCwyMSArMjgwLDIxIEBAIHZvaWQgRE9NU2VsZWN0aW9uOjptb2RpZnkoY29uc3Qg
U3RyaW5nJiBhbHRlclN0cmluZywgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpCiAKICAgICBT
ZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbiBhbHRlcjsKICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoYWx0ZXJTdHJpbmcsICJleHRlbmQiKSkKLSAgICAgICAgYWx0ZXIgPSBTZWxlY3Rp
b25Db250cm9sbGVyOjpFWFRFTkQ7CisgICAgICAgIGFsdGVyID0gU2VsZWN0aW9uQ29udHJvbGxl
cjo6QWx0ZXJhdGlvbkV4dGVuZDsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhbHRl
clN0cmluZywgIm1vdmUiKSkKLSAgICAgICAgYWx0ZXIgPSBTZWxlY3Rpb25Db250cm9sbGVyOjpN
T1ZFOworICAgICAgICBhbHRlciA9IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3Zl
OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6
RURpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpcmVjdGlv
blN0cmluZywgImZvcndhcmQiKSkKLSAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uQ29udHJv
bGxlcjo6Rk9SV0FSRDsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uQ29udHJvbGxlcjo6
RGlyZWN0aW9uRm9yd2FyZDsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXJlY3Rp
b25TdHJpbmcsICJiYWNrd2FyZCIpKQotICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25Db250
cm9sbGVyOjpCQUNLV0FSRDsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uQ29udHJvbGxl
cjo6RGlyZWN0aW9uQmFja3dhcmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGly
ZWN0aW9uU3RyaW5nLCAibGVmdCIpKQotICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25Db250
cm9sbGVyOjpMRUZUOworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25Db250cm9sbGVyOjpE
aXJlY3Rpb25MZWZ0OwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpcmVjdGlvblN0
cmluZywgInJpZ2h0IikpCi0gICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkNvbnRyb2xsZXI6
OlJJR0hUOworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25SaWdodDsKICAgICBlbHNlCiAgICAgICAgIHJldHVybjsKIApAQCAtNDI0LDcgKzQyNCw3IEBA
IHZvaWQgRE9NU2VsZWN0aW9uOjpkZWxldGVGcm9tRG9jdW1lbnQoKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoaXNDb2xsYXBzZWQoKSkKLSAgICAgICAgc2VsZWN0aW9uLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwg
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICBzZWxlY3Rpb24tPm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJl
Y3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogCiAgICAgUmVmUHRyPFJhbmdl
PiBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5n
ZSgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGViZjhlZmYuLjRhYTE0ZmYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCkBAIC0yMjgzLDE2ICsyMjgzLDE2IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpo
YW5kbGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAg
IGJvb2wgaXNDb21tYW5kZWQgPSBldmVudC0+Z2V0TW9kaWZpZXJTdGF0ZSgiTWV0YSIpOwogICAg
IAogICAgIGlmIChrZXkgPT0gIlVwIikgewotICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0
aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIChpc0Nv
bW1hbmRlZCkgPyBEb2N1bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKKyAg
ICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeSgoaXNTaGlmdGVkKSA/IFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRl
cmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIChpc0Nv
bW1hbmRlZCkgPyBEb2N1bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKICAg
ICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfSBlbHNlIGlmIChrZXkgPT0g
IkRvd24iKSB7Ci0gICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRl
ZCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpN
T1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCAoaXNDb21tYW5kZWQpID8gRG9jdW1l
bnRCb3VuZGFyeSA6IExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgICAgIG1fZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRl
cmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIChpc0NvbW1hbmRlZCkgPyBEb2N1bWVu
dEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKICAgICAgICAgZXZlbnQtPnNldERl
ZmF1bHRIYW5kbGVkKCk7CiAgICAgfSBlbHNlIGlmIChrZXkgPT0gIkxlZnQiKSB7Ci0gICAgICAg
IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250
cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250
cm9sbGVyOjpMRUZULCAoaXNDb21tYW5kZWQpID8gTGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQp
ID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOworICAgICAg
ICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCAoaXNDb21tYW5kZWQp
ID8gTGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFj
dGVyR3JhbnVsYXJpdHksIHRydWUpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQo
KTsKICAgICB9IGVsc2UgaWYgKGtleSA9PSAiUmlnaHQiKSB7Ci0gICAgICAgIG1fZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRF
TkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpSSUdI
VCwgKGlzQ29tbWFuZGVkKSA/IExpbmVCb3VuZGFyeSA6IChpc09wdGlvbmVkKSA/IFdvcmRHcmFu
dWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICAgICAgbV9mcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeSgoaXNTaGlmdGVkKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQsIChpc0NvbW1hbmRlZCkgPyBMaW5lQm91
bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxh
cml0eSwgdHJ1ZSk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0g
ICAgCiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvQ2hhbmdlTG9nIGIvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA3YjQxOGZmLi5hM2YyYjk0IDEwMDY0NAotLS0gYS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wNS0yOSAgTHlvbiBDaGVu
ICA8bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEVudW0gdmFsdWUgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBMRUZUIGFy
ZSBjYXVzaW5nIG1hY3JvIGNvbmZsaWN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM1NTMwCisKKyAgICAgICAgQ2hhbmdlIGVudW0gRUFsdGVyYXRp
b24gZnJvbSB7IE1PVkUsIEVYVEVORCB9IHRvIHsgQWx0ZXJhdGlvbk1vdmUsIEFsdGVyYXRpb25F
eHRlbmQgfSBhbmQgZW51bSBFRGlyZWN0aW9uIHsgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBM
RUZUfSB0byB7IERpcmVjdGlvbkZvcndhcmQsIERpcmVjdGlvbkJhY2t3YXJkLCBEaXJlY3Rpb25S
aWdodCwgRGlyZWN0aW9uTGVmdCB9IHRvIGF2b2lkIG1hY3JvIGNvbmZsaWN0LCBhbmQgYWxzbyBi
ZXR0ZXIgY29kaW5nIHN0eWxlIGNvbmZvcm1hbmNlLgorCisgICAgICAgICogZWZsL1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRFZmw6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKwogMjAxMC0wNS0yOCAgTHVjYXMg
RGUgTWFyY2hpICA8bHVjYXMuZGVtYXJjaGlAcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4OWU4
OTRhLi4zYjllZjM2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwxOCBAQAogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIEVudW0gdmFsdWUgRk9SV0FSRCwg
QkFDS1dBUkQsIFJJR0hULCBMRUZUIGFyZSBjYXVzaW5nIG1hY3JvIGNvbmZsaWN0cy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NTMwCisKKyAgICAg
ICAgQ2hhbmdlIGVudW0gRUFsdGVyYXRpb24gZnJvbSB7IE1PVkUsIEVYVEVORCB9IHRvIHsgQWx0
ZXJhdGlvbk1vdmUsIEFsdGVyYXRpb25FeHRlbmQgfSBhbmQgZW51bSBFRGlyZWN0aW9uIHsgRk9S
V0FSRCwgQkFDS1dBUkQsIFJJR0hULCBMRUZUfSB0byB7IERpcmVjdGlvbkZvcndhcmQsIERpcmVj
dGlvbkJhY2t3YXJkLCBEaXJlY3Rpb25SaWdodCwgRGlyZWN0aW9uTGVmdCB9IHRvIGF2b2lkIG1h
Y3JvIGNvbmZsaWN0LCBhbmQgYWxzbyBiZXR0ZXIgY29kaW5nIHN0eWxlIGNvbmZvcm1hbmNlLgor
CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lSW1wbDo6ZXhlY3V0ZUNvbW1hbmQpOgorCisyMDEwLTA1LTI5ICBMeW9uIENoZW4gIDxsaWFj
aGVuQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAg
ICAgICAgVGhpcyBpcyBhIGNvZGluZyBzdHlsZSBjbGVhbnVwIGJlZm9yZSBmaXhpbmcgdG8gYnVn
IDM1NTMwLgogCiAgICAgICAgIEVudW0gdmFsdWUgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBM
RUZUIGFyZSBjYXVzaW5nIG1hY3JvIGNvbmZsaWN0cy4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmNwcAppbmRleCAzNzc2NjEwLi45ZjYwZjMxIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuY3BwCkBAIC0xMTAwLDExICsxMTAwLDExIEBAIGJvb2wgV2ViRnJhbWVJbXBsOjpleGVj
dXRlQ29tbWFuZChjb25zdCBXZWJTdHJpbmcmIG5hbWUpCiAgICAgLy8gc3VwcG9ydC4KICAgICBp
ZiAoY29tbWFuZCA9PSAiRGVsZXRlVG9FbmRPZlBhcmFncmFwaCIpIHsKICAgICAgICAgRWRpdG9y
KiBlZGl0b3IgPSBmcmFtZSgpLT5lZGl0b3IoKTsKLSAgICAgICAgaWYgKCFlZGl0b3ItPmRlbGV0
ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwKKyAgICAgICAgaWYg
KCFlZGl0b3ItPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0
aW9uRm9yd2FyZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFy
YWdyYXBoQm91bmRhcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkg
ewotICAgICAgICAgICAgZWRpdG9yLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkZPUldBUkQsCisgICAgICAgICAgICBlZGl0b3ItPmRlbGV0ZVdpdGhEaXJlY3Rpb24o
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJHcmFudWxhcml0eSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcCBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50RWZsLmNwcAppbmRleCBiODdhOTFhLi4xYTIyMDM4IDEwMDY0NAotLS0gYS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAKKysrIGIvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCkBAIC0zMzksMjYgKzMzOSwy
NiBAQCBib29sIEVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5
Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgaWYgKGNhcmV0QnJvd3NpbmcpIHsKICAgICAgICAgc3dp
dGNoIChrZXlFdmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKICAgICAgICAgY2FzZSBW
S19MRUZUOgotICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V5RXZlbnQt
PnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250
cm9sbGVyOjpNT1ZFLAotICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpM
RUZULAorICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V5RXZlbnQtPnNo
aWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsCisgICAgICAgICAgICAgICAgICAgIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkxlZnQsCiAgICAgICAgICAgICAgICAgICAgIGtleUV2
ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwK
ICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KGtleUV2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDog
U2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwKLSAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9u
Q29udHJvbGxlcjo6UklHSFQsCisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlm
eShrZXlFdmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25F
eHRlbmQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwKKyAgICAgICAgICAg
ICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQsCiAgICAgICAgICAg
ICAgICAgICAgIGtleUV2ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0
ZXJHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KGtleUV2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxl
cjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwKLSAgICAgICAgICAgICAgICAg
ICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsCisgICAgICAgICAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShrZXlFdmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92
ZSwKKyAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFj
a3dhcmQsCiAgICAgICAgICAgICAgICAgICAgIGtleUV2ZW50LT5jdHJsS2V5KCkgPyBQYXJhZ3Jh
cGhHcmFudWxhcml0eSA6IExpbmVHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAgICAgdHJ1
ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBWS19ET1dOOgotICAg
ICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V5RXZlbnQtPnNoaWZ0S2V5KCkg
PyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZF
LAotICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELAorICAg
ICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V5RXZlbnQtPnNoaWZ0S2V5KCkg
PyBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJv
bGxlcjo6QWx0ZXJhdGlvbk1vdmUsCisgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsCiAgICAgICAgICAgICAgICAgICAgIGtleUV2ZW50LT5j
dHJsS2V5KCkgPyBQYXJhZ3JhcGhHcmFudWxhcml0eSA6IExpbmVHcmFudWxhcml0eSwKICAgICAg
ICAgICAgICAgICAgICAgdHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCmluZGV4
IDRiNDc4MjUuLmJmMzdiZDcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpAQCAtMiw2ICsyLDE4IEBACiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgRW51bSB2YWx1ZSBGT1JXQVJELCBC
QUNLV0FSRCwgUklHSFQsIExFRlQgYXJlIGNhdXNpbmcgbWFjcm8gY29uZmxpY3RzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU1MzAKKworICAgICAg
ICBDaGFuZ2UgZW51bSBFQWx0ZXJhdGlvbiBmcm9tIHsgTU9WRSwgRVhURU5EIH0gdG8geyBBbHRl
cmF0aW9uTW92ZSwgQWx0ZXJhdGlvbkV4dGVuZCB9IGFuZCBlbnVtIEVEaXJlY3Rpb24geyBGT1JX
QVJELCBCQUNLV0FSRCwgUklHSFQsIExFRlR9IHRvIHsgRGlyZWN0aW9uRm9yd2FyZCwgRGlyZWN0
aW9uQmFja3dhcmQsIERpcmVjdGlvblJpZ2h0LCBEaXJlY3Rpb25MZWZ0IH0gdG8gYXZvaWQgbWFj
cm8gY29uZmxpY3QsIGFuZCBhbHNvIGJldHRlciBjb2Rpbmcgc3R5bGUgY29uZm9ybWFuY2UuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisKKzIw
MTAtMDUtMjkgIEx5b24gQ2hlbiAgPGxpYWNoZW5AcmltLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBUaGlzIGlzIGEgY29kaW5nIHN0eWxlIGNs
ZWFudXAgYmVmb3JlIGZpeGluZyB0byBidWcgMzU1MzAuCiAKICAgICAgICAgRW51bSB2YWx1ZSBG
T1JXQVJELCBCQUNLV0FSRCwgUklHSFQsIExFRlQgYXJlIGNhdXNpbmcgbWFjcm8gY29uZmxpY3Rz
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhh
aWt1LmNwcCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5j
cHAKaW5kZXggOGVkNjQwZi4uYzM4MGVjMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcAorKysgYi9XZWJLaXQvaGFpa3UvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuY3BwCkBAIC0yNTMsMzYgKzI1MywzNiBAQCB2b2lk
IEVkaXRvckNsaWVudEhhaWt1OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2
ZW50KQogICAgIGlmIChzdGFydC0+aXNDb250ZW50RWRpdGFibGUoKSkgewogICAgICAgICBzd2l0
Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKICAgICAgICAgY2FzZSBWS19C
QUNLOgotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELAorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3
YXJkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtl
dmVudC0+Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2Us
IHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVktfREVMRVRFOgotICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkZPUldBUkQsCisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdp
dGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXZlbnQtPmN0cmxL
ZXkoKSA/IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCB0cnVlKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZLX0xFRlQ6Ci0gICAgICAgICAgICBmcmFt
ZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250
cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVGVCwKKyAg
ICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+c2hpZnRLZXkoKSA/
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uTW92ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkxlZnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrZXZlbnQtPmN0cmxLZXkoKSA/IFdvcmRHcmFudWxhcml0
eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWS19SSUdI
VDoKLSAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+c2hpZnRL
ZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6
Ok1PVkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25D
b250cm9sbGVyOjpSSUdIVCwKKyAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KGtldmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRl
bmQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJp
Z2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V2ZW50LT5jdHJs
S2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVktfVVA6Ci0gICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeShrZXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBT
ZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsCisgICAgICAgICAgICBmcmFt
ZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlv
bk1vdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25D
b250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtldmVudC0+Y3RybEtleSgpID8gUGFyYWdyYXBoR3JhbnVsYXJpdHkgOiBM
aW5lR3JhbnVsYXJpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZLX0RPV046Ci0gICAgICAg
ICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxl
Y3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6
Rk9SV0FSRCwKKyAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+
c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQgOiBTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXZlbnQtPmN0cmxLZXkoKSA/
IFBhcmFncmFwaEdyYW51bGFyaXR5IDogTGluZUdyYW51bGFyaXR5LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDAx
OGIyYTEuLmRhNGQ1MTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L3F0L0NoYW5nZUxvZwpAQCAtMiw2ICsyLDE4IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgRW51bSB2YWx1ZSBGT1JXQVJELCBCQUNLV0FSRCwg
UklHSFQsIExFRlQgYXJlIGNhdXNpbmcgbWFjcm8gY29uZmxpY3RzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU1MzAKKworICAgICAgICBDaGFuZ2Ug
ZW51bSBFQWx0ZXJhdGlvbiBmcm9tIHsgTU9WRSwgRVhURU5EIH0gdG8geyBBbHRlcmF0aW9uTW92
ZSwgQWx0ZXJhdGlvbkV4dGVuZCB9IGFuZCBlbnVtIEVEaXJlY3Rpb24geyBGT1JXQVJELCBCQUNL
V0FSRCwgUklHSFQsIExFRlR9IHRvIHsgRGlyZWN0aW9uRm9yd2FyZCwgRGlyZWN0aW9uQmFja3dh
cmQsIERpcmVjdGlvblJpZ2h0LCBEaXJlY3Rpb25MZWZ0IH0gdG8gYXZvaWQgbWFjcm8gY29uZmxp
Y3QsIGFuZCBhbHNvIGJldHRlciBjb2Rpbmcgc3R5bGUgY29uZm9ybWFuY2UuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisKKzIwMTAtMDUtMjkgIEx5b24g
Q2hlbiAgPGxpYWNoZW5AcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKwogICAgICAgICBUaGlzIGlzIGEgY29kaW5nIHN0eWxlIGNsZWFudXAgYmVmb3JlIGZp
eGluZyB0byBidWcgMzU1MzAuCiAKICAgICAgICAgRW51bSB2YWx1ZSBGT1JXQVJELCBCQUNLV0FS
RCwgUklHSFQsIExFRlQgYXJlIGNhdXNpbmcgbWFjcm8gY29uZmxpY3RzLgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKaW5kZXggZmI4MzRhOC4uODA4YjhiYyAx
MDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAor
KysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCkBAIC0zNzYs
MTEgKzM3NiwxMSBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtl
eWJvYXJkRXZlbnQqIGV2ZW50KQogI2VuZGlmIC8vIFFUX05PX1NIT1JUQ1VUCiAgICAgICAgIHN3
aXRjaCAoa2V2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewogICAgICAgICBjYXNlIFZL
X0JBQ0s6Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24o
U2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsCisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFj
a3dhcmQsCiAgICAgICAgICAgICAgICAgICAgIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwg
dHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAg
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29u
dHJvbGxlcjo6Rk9SV0FSRCwKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0
aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLAogICAgICAg
ICAgICAgICAgICAgICBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVktfTEVGVDoKLS0gCjEuNi40Lm1zeXNnaXQuMAoK
</data>
<flag name="review"
          id="41998"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="42040"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57501</attachid>
            <date>2010-05-31 17:35:01 -0700</date>
            <delta_ts>2010-05-31 17:52:57 -0700</delta_ts>
            <desc>Patch updated to 108b044c</desc>
            <filename>35530.patch</filename>
            <type>text/plain</type>
            <size>63046</size>
            <attacher name="Lyon Chen">liachen</attacher>
            
              <data encoding="base64">RnJvbSBiZDhjMWFlOWQ2NzFkZjExMzk1ODk3YWYzYjc4NTRjYTNmMGFiYjhiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMeW9uIENoZW4gPGxpYWNoZW5AcmltLmNvbT4KRGF0ZTogU2F0
LCAyOSBNYXkgMjAxMCAxOToxMDo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIFtQQVRDSCAyLzJd
IEVudW0gdmFsdWUgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBMRUZUIGFyZSBjYXVzaW5nIG1h
Y3JvIGNvbmZsaWN0cy4KIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NTUzMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpDaGFuZ2UgZW51bSBFQWx0ZXJhdGlv
biBmcm9tIHsgTU9WRSwgRVhURU5EIH0gdG8geyBBbHRlcmF0aW9uTW92ZSwgQWx0ZXJhdGlvbkV4
dGVuZCB9IGFuZCBlbnVtIEVEaXJlY3Rpb24geyBGT1JXQVJELCBCQUNLV0FSRCwgUklHSFQsIExF
RlR9IHRvIHsgRGlyZWN0aW9uRm9yd2FyZCwgRGlyZWN0aW9uQmFja3dhcmQsIERpcmVjdGlvblJp
Z2h0LCBEaXJlY3Rpb25MZWZ0IH0gdG8gYXZvaWQgbWFjcm8gY29uZmxpY3QsIGFuZCBhbHNvIGJl
dHRlciBjb2Rpbmcgc3R5bGUgY29uZm9ybWFuY2UuCgpjOi9EYXRhL1dlYktpdC93ZWJraXQtZ2l0
L1dlYkNvcmU6CgoqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5n
ZUZvckxpbmUpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZG9BWFJhbmdl
Rm9yTGluZSk6CiogZWRpdGluZy9FZGl0b3IuY3BwOgooV2ViQ29yZTo6RWRpdG9yOjpkZWxldGVX
aXRoRGlyZWN0aW9uKToKKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlw
aW5nVG9Qb3NpdGlvbik6CihXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRC
YWRHcmFtbWFySW5SYW5nZXMpOgoqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CihXZWJDb3Jl
OjpleGVjdXRlRGVsZXRlQmFja3dhcmQpOgooV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUJhY2t3YXJk
QnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyKToKKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVG
b3J3YXJkKToKKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mTGluZSk6CihXZWJD
b3JlOjpleGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCk6CihXZWJDb3JlOjpleGVj
dXRlRGVsZXRlVG9FbmRPZkxpbmUpOgooV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVRvRW5kT2ZQYXJh
Z3JhcGgpOgooV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVdvcmRCYWNrd2FyZCk6CihXZWJDb3JlOjpl
eGVjdXRlRGVsZXRlV29yZEZvcndhcmQpOgooV2ViQ29yZTo6ZXhlY3V0ZUZvcndhcmREZWxldGUp
OgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVCYWNrd2FyZCk6CihXZWJDb3JlOjpleGVjdXRlTW92ZUJh
Y2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRG93bik6CihX
ZWJDb3JlOjpleGVjdXRlTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24pOgooV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVGb3J3YXJkKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRm9yd2FyZEFuZE1vZGlmeVNl
bGVjdGlvbik6CihXZWJDb3JlOjpleGVjdXRlTW92ZUxlZnQpOgooV2ViQ29yZTo6ZXhlY3V0ZU1v
dmVMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUGFnZURvd24p
OgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbik6CihXZWJD
b3JlOjpleGVjdXRlTW92ZVBhZ2VVcCk6CihXZWJDb3JlOjpleGVjdXRlTW92ZVBhZ2VVcEFuZE1v
ZGlmeVNlbGVjdGlvbik6CihXZWJDb3JlOjpleGVjdXRlTW92ZVJpZ2h0KToKKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24pOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVU
b0JlZ2lubmluZ09mRG9jdW1lbnQpOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09m
RG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24pOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lu
bmluZ09mTGluZSk6CihXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9k
aWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFw
aCk6CihXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGhBbmRNb2RpZnlT
ZWxlY3Rpb24pOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2UpOgoo
V2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rp
b24pOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mRG9jdW1lbnQpOgooV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24pOgooV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVUb0VuZE9mU2VudGVuY2UpOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mU2Vu
dGVuY2VBbmRNb2RpZnlTZWxlY3Rpb24pOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mTGlu
ZSk6CihXZWJDb3JlOjpleGVjdXRlTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKToK
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlBhcmFncmFwaCk6CihXZWJDb3JlOjpleGVjdXRl
TW92ZVRvRW5kT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24pOgooV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVQYXJhZ3JhcGhCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CihXZWJDb3JlOjpleGVj
dXRlTW92ZVBhcmFncmFwaEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgooV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVVcCk6CihXZWJDb3JlOjpleGVjdXRlTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uKToK
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEJhY2t3YXJkKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
V29yZEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29y
ZEZvcndhcmQpOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVj
dGlvbik6CihXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRMZWZ0KToKKFdlYkNvcmU6OmV4ZWN1dGVN
b3ZlV29yZExlZnRBbmRNb2RpZnlTZWxlY3Rpb24pOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3Jk
UmlnaHQpOgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24p
OgooV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0xlZnRFbmRPZkxpbmUpOgooV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVUb0xlZnRFbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24pOgooV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVUb1JpZ2h0RW5kT2ZMaW5lKToKKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9m
TGluZUFuZE1vZGlmeVNlbGVjdGlvbik6CiogZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNw
cDoKKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OndpbGxCZU1vZGlmaWVkKToKKFdlYkNv
cmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeSk6CiogZWRpdGluZy9TZWxlY3Rpb25Db250
cm9sbGVyLmg6CihXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjopOgoqIGVkaXRpbmcvVHlw
aW5nQ29tbWFuZC5jcHA6CihXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2Vk
KToKKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKToKKiBw
YWdlL0RPTVNlbGVjdGlvbi5jcHA6CihXZWJDb3JlOjpET01TZWxlY3Rpb246Om1vZGlmeSk6CihX
ZWJDb3JlOjpET01TZWxlY3Rpb246OmRlbGV0ZUZyb21Eb2N1bWVudCk6CiogcGFnZS9FdmVudEhh
bmRsZXIuY3BwOgooV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVLZXlib2FyZFNlbGVjdGlv
bk1vdmVtZW50KToKCmM6L0RhdGEvV2ViS2l0L3dlYmtpdC1naXQvV2ViS2l0OgoKKiBlZmwvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKKFdlYkNvcmU6OkVkaXRvckNsaWVudEVm
bDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgoKYzovRGF0YS9XZWJLaXQvd2Via2l0LWdp
dC9XZWJLaXQvY2hyb21pdW06CgoqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgooV2ViS2l0OjpXZWJG
cmFtZUltcGw6OmV4ZWN1dGVDb21tYW5kKToKCmM6L0RhdGEvV2ViS2l0L3dlYmtpdC1naXQvV2Vi
S2l0L2hhaWt1OgoKKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHA6CihXZWJD
b3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CgpjOi9EYXRhL1dl
YktpdC93ZWJraXQtZ2l0L1dlYktpdC9xdDoKCiogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
UXQuY3BwOgooV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgot
LS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICA4NyArKysrKysrKysrKysrKysKIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwICAgIHwgICAgNiArLQogV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDE0ICsrLS0KIFdlYkNvcmUvZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcCAgICAgICAgICAgICAgICAgIHwgIDExMiArKysrKysrKysrLS0tLS0tLS0tLQog
V2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwICAgICAgICAgICAgfCAgIDQ2
ICsrKystLS0tCiBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oICAgICAgICAg
ICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCAgICAgICAg
ICAgICAgICAgIHwgICAxMiArLQogV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDE0ICsrLS0KIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCArLQogV2ViS2l0L0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsrCiBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKysKIFdlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCAgICAgICAgICAgICAgIHwgICAgNCArLQogV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwICAgICAgfCAgIDE2ICsrLS0KIFdl
YktpdC9oYWlrdS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiAr
KwogV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcCAgfCAg
IDIwICsrLS0KIFdlYktpdC9xdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAxMiArKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNw
cCAgICAgICAgfCAgICA0ICstCiAxNyBmaWxlcyBjaGFuZ2VkLCAyNjUgaW5zZXJ0aW9ucygrKSwg
MTMwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggODkxZDg0Zi4uZmM3ZjFmOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTQxMiw2ICs0MTIsOTMgQEAKIAog
ICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KIAorICAgICAgICBFbnVtIHZhbHVlIEZP
UldBUkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVCBhcmUgY2F1c2luZyBtYWNybyBjb25mbGljdHMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTUzMAor
CisgICAgICAgIENoYW5nZSBlbnVtIEVBbHRlcmF0aW9uIGZyb20geyBNT1ZFLCBFWFRFTkQgfSB0
byB7IEFsdGVyYXRpb25Nb3ZlLCBBbHRlcmF0aW9uRXh0ZW5kIH0gYW5kIGVudW0gRURpcmVjdGlv
biB7IEZPUldBUkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVH0gdG8geyBEaXJlY3Rpb25Gb3J3YXJk
LCBEaXJlY3Rpb25CYWNrd2FyZCwgRGlyZWN0aW9uUmlnaHQsIERpcmVjdGlvbkxlZnQgfSB0byBh
dm9pZCBtYWNybyBjb25mbGljdCwgYW5kIGFsc28gYmV0dGVyIGNvZGluZyBzdHlsZSBjb25mb3Jt
YW5jZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNp
YmxlUG9zaXRpb25SYW5nZUZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6ZG9BWFJhbmdlRm9yTGluZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkZWxldGVXaXRoRGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Q
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFySW5SYW5nZXMpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlQmFja3dhcmQpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFj
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVGb3J3YXJkKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mTGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlRGVsZXRlVG9FbmRPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0
ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlV29yZEZvcndh
cmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUZvcndhcmREZWxldGUpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZU1vdmVCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRl
TW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1
dGVNb3ZlRG93bik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZURvd25BbmRNb2RpZnlT
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVGb3J3YXJkKToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVN
b3ZlUGFnZURvd24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYWdlRG93bkFuZE1v
ZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVBhZ2VVcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGluZSk6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaCk6CisgICAgICAg
IChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2VB
bmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9m
RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mRG9jdW1lbnRB
bmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9m
U2VudGVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9mU2VudGVuY2VB
bmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0VuZE9m
TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5
U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlBhcmFncmFw
aCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGhBbmRNb2Rp
ZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYXJhZ3JhcGhCYWNr
d2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVBh
cmFncmFwaEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVVcCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVVwQW5kTW9kaWZ5U2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEJhY2t3YXJkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEZvcndhcmQpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlV29yZExlZnRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZU1vdmVXb3JkUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3Jk
UmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVU
b0xlZnRFbmRPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0xlZnRFbmRP
ZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVU
b1JpZ2h0RW5kT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9SaWdodEVu
ZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25D
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Ondp
bGxCZU1vZGlmaWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om1v
ZGlmeSk6CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjopOgorICAgICAgICAqIGVkaXRpbmcvVHlw
aW5nQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVL
ZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxl
dGVLZXlQcmVzc2VkKToKKyAgICAgICAgKiBwYWdlL0RPTVNlbGVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01TZWxlY3Rpb246Om1vZGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpET01T
ZWxlY3Rpb246OmRlbGV0ZUZyb21Eb2N1bWVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVLZXlib2FyZFNl
bGVjdGlvbk1vdmVtZW50KToKKworMjAxMC0wNS0yOSAgTHlvbiBDaGVuICA8bGlhY2hlbkByaW0u
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFRo
aXMgaXMgYSBjb2Rpbmcgc3R5bGUgY2xlYW51cCBiZWZvcmUgZml4aW5nIHRvIGJ1ZyAzNTUzMC4K
IAogICAgICAgICBFbnVtIHZhbHVlIEZPUldBUkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVCBhcmUg
Y2F1c2luZyBtYWNybyBjb25mbGljdHMuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggZWI0MTY4Yy4uNDg4MjlhMiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCisrKyBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcApAQCAtMjQxOCw3ICsyNDE4LDcgQEAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKHVuc2kKICAgICAv
LyB3aWxsIGJlIGEgY2FyZXQgYXQgdmlzaWJsZVBvcy4KICAgICBTZWxlY3Rpb25Db250cm9sbGVy
IHNlbGVjdGlvbjsKICAgICBzZWxlY3Rpb24uc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24o
dmlzaWJsZVBvcykpOwotICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpSSUdIVCwgTGluZUJvdW5kYXJ5KTsKKyAgICBz
ZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0LCBMaW5lQm91bmRhcnkpOwogICAgIAog
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZShzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlz
aWJsZVN0YXJ0KCksIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCkpOwogfQpAQCAt
MjYzMCw4ICsyNjMwLDggQEAgUGxhaW5UZXh0UmFuZ2UgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6ZG9BWFJhbmdlRm9yTGluZSh1bnNpZ25lZCBsaW5lTnVtYmVyKQogICAgIC8vIHdpbGwgYmUg
YSBjYXJldCBhdCB2aXNpYmxlUG9zLgogICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIgc2VsZWN0aW9u
OwogICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbih2aXNpYmxlUG9z
KSk7Ci0gICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQsIExpbmVCb3VuZGFyeSk7Ci0gICAgc2VsZWN0aW9uLm1v
ZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJ
R0hULCBMaW5lQm91bmRhcnkpOworICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJv
bGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVm
dCwgTGluZUJvdW5kYXJ5KTsKKyAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0
LCBMaW5lQm91bmRhcnkpOwogICAgIAogICAgIC8vIGNhbGN1bGF0ZSB0aGUgaW5kaWNlcyBmb3Ig
dGhlIHNlbGVjdGlvbiBzdGFydCBhbmQgZW5kCiAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9z
aXRpb24gPSBzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CmluZGV4IDYwM2YzNWMuLjgwNDExNTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yNDIsMTIgKzI0Miwx
MiBAQCBib29sIEVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVy
OjpFRGlyZWN0aW9uIGRpcmVjdGlvbiwgVGV4dAogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9s
bGVyOjpGT1JXQVJEOgotICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hUOgor
ICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQ6CisgICAg
ICAgIGNhc2UgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQ6CiAgICAgICAgICAg
ICBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChtX2ZyYW1lLT5kb2N1bWVu
dCgpLCBjYW5TbWFydENvcHlPckRlbGV0ZSgpLCBncmFudWxhcml0eSwga2lsbFJpbmcpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dB
UkQ6Ci0gICAgICAgIGNhc2UgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVGVDoKKyAgICAgICAgY2Fz
ZSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZDoKKyAgICAgICAgY2FzZSBT
ZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0OgogICAgICAgICAgICAgVHlwaW5nQ29t
bWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChtX2ZyYW1lLT5kb2N1bWVudCgpLCBjYW5TbWFydENvcHlP
ckRlbGV0ZSgpLCBncmFudWxhcml0eSwga2lsbFJpbmcpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTIyNjksNyArMjI2OSw3IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxp
bmdzQWZ0ZXJUeXBpbmdUb1Bvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmcCkKIAogICAg
ICAgICAvLyBSZXNldCB0aGUgY2hhcmV0IG9uZSBjaGFyYWN0ZXIgZnVydGhlci4KICAgICAgICAg
ZnJhbWUoKS0+c2VsZWN0aW9uKCktPm1vdmVUbyhmcmFtZSgpLT5zZWxlY3Rpb24oKS0+ZW5kKCkp
OwotICAgICAgICBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFy
aXR5KTsKKyAgICAgICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9y
d2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogICAgIH0KIAogICAgIGlmICghaXNHcmFtbWFy
Q2hlY2tpbmdFbmFibGVkKCkpCkBAIC0yNTU4LDExICsyNTU4LDExIEBAIHZvaWQgRWRpdG9yOjpt
YXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKGJvb2wgbWFya1NwZWxsaW5n
LCBSYW5nZSoKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0aW9uUmFuZ2UgPSBUZXh0
SXRlcmF0b3I6OnN1YnJhbmdlKHBhcmFncmFwaFJhbmdlLmdldCgpLCAwLCBzZWxlY3Rpb25PZmZz
ZXQpOwogICAgICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vdmVUbyhzZWxlY3Rpb25S
YW5nZS0+ZW5kUG9zaXRpb24oKSwgRE9XTlNUUkVBTSk7CiAgICAgICAgICAgICBpZiAoYWRqdXN0
U2VsZWN0aW9uRm9yUGFyYWdyYXBoQm91bmRhcmllcykKLSAgICAgICAgICAgICAgICBtX2ZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAgICAg
ICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBDaGFy
YWN0ZXJHcmFudWxhcml0eSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBJZiB0
aGlzIGZhaWxzIGZvciBhbnkgcmVhc29uLCB0aGUgZmFsbGJhY2sgaXMgdG8gZ28gb25lIHBvc2l0
aW9uIGJleW9uZCB0aGUgbGFzdCByZXBsYWNlbWVudAogICAgICAgICAgICAgbV9mcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vdmVUbyhtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+ZW5kKCkpOwotICAgICAgICAg
ICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZF
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7Cisg
ICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJk
LCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yQ29tbWFuZC5jcHAKaW5kZXggN2U4NWFhOS4uNzUwODVmYiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcApAQCAtMzI0LDMyICszMjQsMzIgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0
ZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnMK
IAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZUJhY2t3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0
b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwg
Q2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkt
PmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dh
cmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2
aW91c0NoYXJhY3RlcihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwg
Y29uc3QgU3RyaW5nJikKIHsKICAgICBMT0dfRVJST1IoIkRlbGV0ZUJhY2t3YXJkQnlEZWNvbXBv
c2luZ1ByZXZpb3VzQ2hhcmFjdGVyIGlzIG5vdCBpbXBsZW1lbnRlZCwgZG9pbmcgRGVsZXRlQmFj
a3dhcmQgaW5zdGVhZCIpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlv
bihTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZh
bHNlLCB0cnVlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5
LCBmYWxzZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1
dGVEZWxldGVGb3J3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVj
dGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSwg
ZmFsc2UsIHRydWUpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihT
ZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0
eSwgZmFsc2UsIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxl
dGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBMaW5lQm91bmRh
cnksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rp
b24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIExpbmVCb3VuZGFyeSwg
dHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
RGVsZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFwaChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRl
bGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIFBhcmFncmFw
aEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRo
RGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3Jh
cGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zNTcs
NyArMzU3LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvRW5kT2ZMaW5lKEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLAogewogICAgIC8vIERlc3BpdGUgaXRz
IG5hbWUsIHRoaXMgY29tbWFuZCBzaG91bGQgZGVsZXRlIHRoZSBuZXdsaW5lIGF0IHRoZSBlbmQg
b2YKICAgICAvLyBhIHBhcmFncmFwaCBpZiB5b3UgYXJlIGF0IHRoZSBlbmQgb2YgYSBwYXJhZ3Jh
cGggKGxpa2UgRGVsZXRlVG9FbmRPZlBhcmFncmFwaCkuCi0gICAgZnJhbWUtPmVkaXRvcigpLT5k
ZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIExpbmVCb3Vu
ZGFyeSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVj
dGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lQm91bmRhcnks
IHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzY1LDcgKzM2NSw3IEBA
IHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb0VuZE9mUGFyYWdyYXBoKEZyYW1lKiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291CiB7CiAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgdGhp
cyBjb21tYW5kIHNob3VsZCBkZWxldGUgdGhlIG5ld2xpbmUgYXQgdGhlIGVuZCBvZgogICAgIC8v
IGEgcGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFwaC4KLSAgICBm
cmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6
Rk9SV0FSRCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS0+ZWRp
dG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9u
Rm9yd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMzg2LDEzICszODYsMTMgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRv
TWFyayhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QKIAog
c3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVdvcmRCYWNrd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRp
dG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQs
IFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVs
ZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwg
V29yZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVEZWxldGVXb3JkRm9yd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9y
KCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgV29y
ZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVX
aXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIFdvcmRH
cmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00Mzks
NyArNDM5LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUZvcndhcmREZWxldGUoRnJhbWUqIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmMKIHsKICAgICBzd2l0Y2ggKHNvdXJj
ZSkgewogICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5nOgotICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9S
V0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVj
dGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBDb21tYW5k
RnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgpAQCAtNTk3LDQ5ICs1OTcsNDkgQEAgc3RhdGljIGJv
b2wgZXhlY3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0KEZyYW1lKiBmcmFt
ZSwgRXZlbnQqLCBFZGkKIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVCYWNrd2FyZChGcmFtZSog
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUp
OworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKKyAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0
aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFj
dGVyR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlTW92ZURvd24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgTGlu
ZUdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uRm9yd2FyZCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVO
RCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsK
KyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRl
cmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBMaW5l
R3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBl
eGVjdXRlTW92ZUZvcndhcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlRm9yd2FyZEFuZE1vZGlmeVNl
bGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3Rlckdy
YW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJl
Y3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlTGVmdChGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250
cm9sbGVyOjpMRUZULCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkxlZnQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0
cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVMZWZ0
QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVGVCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkRpcmVjdGlvbkxlZnQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtNjQ4LDcgKzY0OCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNb3Zl
UGFnZURvd24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
CiAgICAgaW50IGRpc3RhbmNlID0gdmVydGljYWxTY3JvbGxEaXN0YW5jZShmcmFtZSk7CiAgICAg
aWYgKCFkaXN0YW5jZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBkaXN0YW5jZSwg
dHJ1ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QWxpZ25DdXJzb3JPblNjcm9sbEFsd2F5cyk7Cisg
ICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25Nb3ZlLCBkaXN0YW5jZSwgdHJ1ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QWxp
Z25DdXJzb3JPblNjcm9sbEFsd2F5cyk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFn
ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCkBAIC02NTYsNyArNjU2LDcgQEAgc3RhdGljIGJvb2wg
ZXhlY3V0ZU1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ28KICAgICBpbnQgZGlzdGFuY2UgPSB2ZXJ0aWNhbFNjcm9sbERpc3RhbmNlKGZy
YW1lKTsKICAgICBpZiAoIWRpc3RhbmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVO
RCwgZGlzdGFuY2UsIHRydWUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsaWduQ3Vyc29yT25TY3Jv
bGxBbHdheXMpOworICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBkaXN0YW5jZSwgdHJ1ZSwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6QWxpZ25DdXJzb3JPblNjcm9sbEFsd2F5cyk7CiB9CiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVNb3ZlUGFnZVVwKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQpAQCAtNjY0LDcgKzY2NCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1
dGVNb3ZlUGFnZVVwKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTCiAgICAgaW50IGRpc3RhbmNlID0gdmVydGljYWxTY3JvbGxEaXN0YW5jZShmcmFtZSk7
CiAgICAgaWYgKCFkaXN0YW5jZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBm
cmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCAtZGlz
dGFuY2UsIHRydWUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsaWduQ3Vyc29yT25TY3JvbGxBbHdh
eXMpOworICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgLWRpc3RhbmNlLCB0cnVlLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpBbGlnbkN1cnNvck9uU2Nyb2xsQWx3YXlzKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZU1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCkBAIC02NzIsMjEwICs2NzIsMjEwIEBAIHN0
YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tCiAgICAgaW50IGRpc3RhbmNlID0gdmVydGljYWxTY3JvbGxE
aXN0YW5jZShmcmFtZSk7CiAgICAgaWYgKCFkaXN0YW5jZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpFWFRFTkQsIC1kaXN0YW5jZSwgdHJ1ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QWxpZ25D
dXJzb3JPblNjcm9sbEFsd2F5cyk7CisgICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIC1kaXN0YW5jZSwgdHJ1
ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QWxpZ25DdXJzb3JPblNjcm9sbEFsd2F5cyk7CiB9CiAK
IHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUmlnaHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
UklHSFQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVSaWdodEFuZE1v
ZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwg
Y29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCBDaGFyYWN0
ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
RGlyZWN0aW9uUmlnaHQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQo
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIERvY3VtZW50Qm91bmRhcnksIHRy
dWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwg
RG9jdW1lbnRCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVY
VEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIERvY3VtZW50Qm91bmRhcnksIHRy
dWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJk
LCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGluZShGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0
aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpCQUNLV0FSRCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkxp
bmVBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FS
RCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShT
ZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1P
VkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1
ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBQ
YXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbihG
cmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpF
WFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBQYXJhZ3JhcGhCb3VuZGFyeSwg
dHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dh
cmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3Rh
dGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2UoRnJhbWUqIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUt
PnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6QkFDS1dBUkQsIFNlbnRlbmNlQm91bmRhcnksIHRydWUpOworICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3Zl
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgU2VudGVuY2VCb3VuZGFy
eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3Zl
VG9CZWdpbm5pbmdPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5z
ZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9u
Q29udHJvbGxlcjo6QkFDS1dBUkQsIFNlbnRlbmNlQm91bmRhcnksIHRydWUpOworICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRl
bmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBTZW50ZW5jZUJvdW5k
YXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVUb0VuZE9mRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgRG9j
dW1lbnRCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRp
cmVjdGlvbkZvcndhcmQsIERvY3VtZW50Qm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVl
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1vZGlmeVNl
bGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIERvY3VtZW50Qm91
bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlv
bkZvcndhcmQsIERvY3VtZW50Qm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZTZW50ZW5jZShGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25D
b250cm9sbGVyOjpGT1JXQVJELCBTZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwg
dHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9F
bmRPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6Rk9SV0FSRCwgU2VudGVuY2VCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgdHJ1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZkxp
bmUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgTGluZUJvdW5kYXJ5LCB0cnVl
KTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpB
bHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgTGlu
ZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhl
Y3V0ZU1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkZPUldBUkQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mUGFy
YWdyYXBoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRy
b2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIFBhcmFncmFwaEJvdW5k
YXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9y
d2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24o
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBQYXJhZ3JhcGhCb3VuZGFyeSwg
dHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2Fy
ZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVBhcmFncmFwaEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVY
VEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIFBhcmFncmFwaEdyYW51bGFyaXR5
LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNr
d2FyZCwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhcmFncmFwaEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rp
b24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBQYXJhZ3JhcGhHcmFudWxh
cml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9u
Rm9yd2FyZCwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVVwKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkJBQ0tXQVJELCBMaW5lR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25D
b250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVVcEFuZE1vZGlmeVNl
bGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250
cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBMaW5lR3JhbnVs
YXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlv
bkJhY2t3YXJkLCBMaW5lR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRCYWNrd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250
cm9sbGVyOjpCQUNLV0FSRCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZEJh
Y2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFD
S1dBUkQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZEZvcndhcmQoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9W
RSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsK
KyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRl
cmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgV29yZEdy
YW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhl
Y3V0ZU1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkZPUldBUkQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgV29yZEdyYW51bGFyaXR5LCB0
cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3Jk
TGVmdChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3Ry
aW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9s
bGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpMRUZULCBXb3JkR3JhbnVsYXJpdHksIHRy
dWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCBXb3Jk
R3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBl
eGVjdXRlTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6TEVGVCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0
aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRSaWdodChG
cmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpN
T1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpSSUdIVCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsK
KyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRl
cmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQsIFdvcmRHcmFu
dWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1
dGVNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJv
bGxlcjo6UklHSFQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZM
aW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJp
bmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7
CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkxlZnQsIExpbmVCb3Vu
ZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVN
b3ZlVG9MZWZ0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6TEVGVCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rp
b25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmUo
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6UklHSFQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7Cisg
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0LCBMaW5lQm91bmRh
cnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92
ZVRvUmlnaHRFbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250
cm9sbGVyOjpSSUdIVCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rp
b25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdodCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNv
bnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDgxNmY5NjguLmY5YjM5YmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rp
b25Db250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxl
ci5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldElz
RGlyZWN0aW9uYWwoYm9vbCBpc0RpcmVjdGlvbmFsKQogCiB2b2lkIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OndpbGxCZU1vZGlmaWVkKEVBbHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpcmVjdGlv
bikKIHsKLSAgICBpZiAoYWx0ZXIgIT0gRVhURU5EKQorICAgIGlmIChhbHRlciAhPSBBbHRlcmF0
aW9uRXh0ZW5kKQogICAgICAgICByZXR1cm47CiAKICAgICBQb3NpdGlvbiBzdGFydCA9IG1fc2Vs
ZWN0aW9uLnN0YXJ0KCk7CkBAIC0yNjksMTMgKzI2OSwxMyBAQCB2b2lkIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OndpbGxCZU1vZGlmaWVkKEVBbHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpcmVj
dGlvbgogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHByb2JhYmx5IG5v
dCBjb3JyZWN0IGZvciByaWdodCBhbmQgbGVmdCB3aGVuIHRoZSBkaXJlY3Rpb24gaXMgUlRMLgog
ICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBjYXNlIFJJR0hUOgotICAgICAg
ICBjYXNlIEZPUldBUkQ6CisgICAgICAgIGNhc2UgRGlyZWN0aW9uUmlnaHQ6CisgICAgICAgIGNh
c2UgRGlyZWN0aW9uRm9yd2FyZDoKICAgICAgICAgICAgIG1fc2VsZWN0aW9uLnNldEJhc2Uoc3Rh
cnQpOwogICAgICAgICAgICAgbV9zZWxlY3Rpb24uc2V0RXh0ZW50KGVuZCk7CiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBMRUZUOgotICAgICAgICBjYXNlIEJBQ0tXQVJEOgorICAg
ICAgICBjYXNlIERpcmVjdGlvbkxlZnQ6CisgICAgICAgIGNhc2UgRGlyZWN0aW9uQmFja3dhcmQ6
CiAgICAgICAgICAgICBtX3NlbGVjdGlvbi5zZXRCYXNlKGVuZCk7CiAgICAgICAgICAgICBtX3Nl
bGVjdGlvbi5zZXRFeHRlbnQoc3RhcnQpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC02NDUsMjYg
KzY0NSwyNiBAQCBib29sIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeShFQWx0ZXJhdGlvbiBh
bHRlciwgRURpcmVjdGlvbiBkaXJlY3Rpb24sIFRleHRHcgogCiAgICAgVmlzaWJsZVBvc2l0aW9u
IHBvc2l0aW9uOwogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBSSUdIVDoKLSAg
ICAgICAgaWYgKGFsdGVyID09IE1PVkUpCisgICAgY2FzZSBEaXJlY3Rpb25SaWdodDoKKyAgICAg
ICAgaWYgKGFsdGVyID09IEFsdGVyYXRpb25Nb3ZlKQogICAgICAgICAgICAgcG9zaXRpb24gPSBt
b2RpZnlNb3ZpbmdSaWdodChncmFudWxhcml0eSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nUmlnaHQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEZPUldBUkQ6Ci0gICAgICAgIGlmIChhbHRlciA9PSBFWFRFTkQpCisg
ICAgY2FzZSBEaXJlY3Rpb25Gb3J3YXJkOgorICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJhdGlv
bkV4dGVuZCkKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChn
cmFudWxhcml0eSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5
TW92aW5nRm9yd2FyZChncmFudWxhcml0eSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTEVG
VDoKLSAgICAgICAgaWYgKGFsdGVyID09IE1PVkUpCisgICAgY2FzZSBEaXJlY3Rpb25MZWZ0Ogor
ICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJhdGlvbk1vdmUpCiAgICAgICAgICAgICBwb3NpdGlv
biA9IG1vZGlmeU1vdmluZ0xlZnQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBwb3NpdGlvbiA9IG1vZGlmeUV4dGVuZGluZ0xlZnQoZ3JhbnVsYXJpdHkpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEJBQ0tXQVJEOgotICAgICAgICBpZiAoYWx0ZXIgPT0gRVhURU5E
KQorICAgIGNhc2UgRGlyZWN0aW9uQmFja3dhcmQ6CisgICAgICAgIGlmIChhbHRlciA9PSBBbHRl
cmF0aW9uRXh0ZW5kKQogICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlFeHRlbmRpbmdCYWNr
d2FyZChncmFudWxhcml0eSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvc2l0aW9uID0g
bW9kaWZ5TW92aW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwpAQCAtNjgxLDE2ICs2ODEsMTYgQEAg
Ym9vbCBTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0ZXIsIEVEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBUZXh0R3IKICAgICBpbnQgeCA9IHhQb3NGb3JWZXJ0aWNhbEFycm93
TmF2aWdhdGlvbihTVEFSVCk7CiAKICAgICBzd2l0Y2ggKGFsdGVyKSB7Ci0gICAgY2FzZSBNT1ZF
OgorICAgIGNhc2UgQWx0ZXJhdGlvbk1vdmU6CiAgICAgICAgIG1vdmVUbyhwb3NpdGlvbiwgdXNl
clRyaWdnZXJlZCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRVhURU5EOgorICAgIGNhc2Ug
QWx0ZXJhdGlvbkV4dGVuZDoKICAgICAgICAgaWYgKCFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+ZWRp
dGluZ0JlaGF2aW9yKCkgIT0gRWRpdGluZ01hY0JlaGF2aW9yIHx8IG1fc2VsZWN0aW9uLmlzQ2Fy
ZXQoKSB8fCAhaXNCb3VuZGFyeShncmFudWxhcml0eSkpCiAgICAgICAgICAgICBzZXRFeHRlbnQo
cG9zaXRpb24sIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8v
IFN0YW5kYXJkIE1hYyBiZWhhdmlvciB3aGVuIGV4dGVuZGluZyB0byBhIGJvdW5kYXJ5IGlzIGdy
b3cgdGhlIHNlbGVjdGlvbiByYXRoZXIKICAgICAgICAgICAgIC8vIHRoYW4gbGVhdmluZyB0aGUg
YmFzZSBpbiBwbGFjZSBhbmQgbW92aW5nIHRoZSBleHRlbnQuIE1hdGNoZXMgTlNUZXh0Vmlldy4K
LSAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gRk9SV0FSRCB8fCBkaXJlY3Rpb24gPT0gUklH
SFQpCisgICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkZvcndhcmQgfHwgZGly
ZWN0aW9uID09IERpcmVjdGlvblJpZ2h0KQogICAgICAgICAgICAgICAgIHNldEVuZChwb3NpdGlv
biwgdXNlclRyaWdnZXJlZCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc2V0
U3RhcnQocG9zaXRpb24sIHVzZXJUcmlnZ2VyZWQpOwpAQCAtNzA2LDcgKzcwNiw3IEBAIGJvb2wg
U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9u
IGRpcmVjdGlvbiwgVGV4dEdyCiAKICAgICBzZXROZWVkc0xheW91dCgpOwogCi0gICAgc2V0SXNE
aXJlY3Rpb25hbChhbHRlciA9PSBFWFRFTkQpOworICAgIHNldElzRGlyZWN0aW9uYWwoYWx0ZXIg
PT0gQWx0ZXJhdGlvbkV4dGVuZCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTc0MSwxNyAr
NzQxLDE3IEBAIGJvb2wgU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFs
dGVyLCBpbnQgdmVydGljYWxEaXN0YW5jZSwgYm9vbCB1CiAgICAgaWYgKHVwKQogICAgICAgICB2
ZXJ0aWNhbERpc3RhbmNlID0gLXZlcnRpY2FsRGlzdGFuY2U7CiAKLSAgICB3aWxsQmVNb2RpZmll
ZChhbHRlciwgdXAgPyBCQUNLV0FSRCA6IEZPUldBUkQpOworICAgIHdpbGxCZU1vZGlmaWVkKGFs
dGVyLCB1cCA/IERpcmVjdGlvbkJhY2t3YXJkIDogRGlyZWN0aW9uRm9yd2FyZCk7CiAKICAgICBW
aXNpYmxlUG9zaXRpb24gcG9zOwogICAgIGludCB4UG9zID0gMDsKICAgICBzd2l0Y2ggKGFsdGVy
KSB7Ci0gICAgY2FzZSBNT1ZFOgorICAgIGNhc2UgQWx0ZXJhdGlvbk1vdmU6CiAgICAgICAgIHBv
cyA9IFZpc2libGVQb3NpdGlvbih1cCA/IG1fc2VsZWN0aW9uLnN0YXJ0KCkgOiBtX3NlbGVjdGlv
bi5lbmQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgICAgIHhQb3MgPSB4UG9zRm9y
VmVydGljYWxBcnJvd05hdmlnYXRpb24odXAgPyBTVEFSVCA6IEVORCk7CiAgICAgICAgIG1fc2Vs
ZWN0aW9uLnNldEFmZmluaXR5KHVwID8gVVBTVFJFQU0gOiBET1dOU1RSRUFNKTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBFWFRFTkQ6CisgICAgY2FzZSBBbHRlcmF0aW9uRXh0ZW5kOgogICAg
ICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0
aW9uLmFmZmluaXR5KCkpOwogICAgICAgICB4UG9zID0geFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZp
Z2F0aW9uKEVYVEVOVCk7CiAgICAgICAgIG1fc2VsZWN0aW9uLnNldEFmZmluaXR5KERPV05TVFJF
QU0pOwpAQCAtNzg4LDEwICs3ODgsMTAgQEAgYm9vbCBTZWxlY3Rpb25Db250cm9sbGVyOjptb2Rp
ZnkoRUFsdGVyYXRpb24gYWx0ZXIsIGludCB2ZXJ0aWNhbERpc3RhbmNlLCBib29sIHUKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3dpdGNoIChhbHRlcikgewotICAgIGNhc2UgTU9WRToK
KyAgICBjYXNlIEFsdGVyYXRpb25Nb3ZlOgogICAgICAgICBtb3ZlVG8ocmVzdWx0LCB1c2VyVHJp
Z2dlcmVkLCBhbGlnbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRVhURU5EOgorICAgIGNh
c2UgQWx0ZXJhdGlvbkV4dGVuZDoKICAgICAgICAgc2V0RXh0ZW50KHJlc3VsdCwgdXNlclRyaWdn
ZXJlZCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTc5OSw3ICs3OTksNyBAQCBib29sIFNl
bGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeShFQWx0ZXJhdGlvbiBhbHRlciwgaW50IHZlcnRpY2Fs
RGlzdGFuY2UsIGJvb2wgdQogICAgIGlmICh1c2VyVHJpZ2dlcmVkKQogICAgICAgICBtX2dyYW51
bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAKLSAgICBzZXRJc0RpcmVjdGlvbmFsKGFs
dGVyID09IEVYVEVORCk7CisgICAgc2V0SXNEaXJlY3Rpb25hbChhbHRlciA9PSBBbHRlcmF0aW9u
RXh0ZW5kKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0
aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250
cm9sbGVyLmgKaW5kZXggYzNkYzJmMi4uZTRjMjk2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0
aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9u
Q29udHJvbGxlci5oCkBAIC00Myw4ICs0Myw4IEBAIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAog
Y2xhc3MgU2VsZWN0aW9uQ29udHJvbGxlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6
Ci0gICAgZW51bSBFQWx0ZXJhdGlvbiB7IE1PVkUsIEVYVEVORCB9OwotICAgIGVudW0gRURpcmVj
dGlvbiB7IEZPUldBUkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVCB9OworICAgIGVudW0gRUFsdGVy
YXRpb24geyBBbHRlcmF0aW9uTW92ZSwgQWx0ZXJhdGlvbkV4dGVuZCB9OworICAgIGVudW0gRURp
cmVjdGlvbiB7IERpcmVjdGlvbkZvcndhcmQsIERpcmVjdGlvbkJhY2t3YXJkLCBEaXJlY3Rpb25S
aWdodCwgRGlyZWN0aW9uTGVmdCB9OwogICAgIGVudW0gQ3Vyc29yQWxpZ25PblNjcm9sbCB7IEFs
aWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBbGlnbkN1cnNvck9uU2Nyb2xsQWx3YXlzIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRp
dGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNw
cAppbmRleCAyNWE0ZTZhLi43NjgwMDg0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVHlw
aW5nQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBA
IC00MzEsOSArNDMxLDkgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRl
eHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraWxsUmluZykKIAogICAgICAgICBTZWxl
Y3Rpb25Db250cm9sbGVyIHNlbGVjdGlvbjsKICAgICAgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlv
bihlbmRpbmdTZWxlY3Rpb24oKSk7Ci0gICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgZ3JhbnVs
YXJpdHkpOworICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBn
cmFudWxhcml0eSk7CiAgICAgICAgIGlmIChraWxsUmluZyAmJiBzZWxlY3Rpb24uaXNDYXJldCgp
ICYmIGdyYW51bGFyaXR5ICE9IENoYXJhY3RlckdyYW51bGFyaXR5KQotICAgICAgICAgICAgc2Vs
ZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkJBQ0tXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgICAgICBzZWxl
Y3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7
CiAKICAgICAgICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLnByZXZpb3Vz
KHRydWUpLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAvLyBXaGVuIHRoZSBjYXJldCBpcyBhdCB0
aGUgc3RhcnQgb2YgdGhlIGVkaXRhYmxlIGFyZWEgaW4gYW4gZW1wdHkgbGlzdCBpdGVtLCBicmVh
ayBvdXQgb2YgdGhlIGxpc3QgaXRlbS4KQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lkIFR5cGluZ0Nv
bW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29s
IGtpbGxSaW5nKQogICAgICAgICAgICAgaWYgKGlzTGFzdFBvc2l0aW9uQmVmb3JlVGFibGUodmlz
aWJsZVN0YXJ0KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAvLyBFeHRl
bmQgdGhlIHNlbGVjdGlvbiBiYWNrd2FyZCBpbnRvIHRoZSBsYXN0IGNlbGwsIHRoZW4gZGVsZXRp
b24gd2lsbCBoYW5kbGUgdGhlIG1vdmUuCi0gICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQs
IGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9u
QmFja3dhcmQsIGdyYW51bGFyaXR5KTsKICAgICAgICAgLy8gSWYgdGhlIGNhcmV0IGlzIGp1c3Qg
YWZ0ZXIgYSB0YWJsZSwgc2VsZWN0IHRoZSB0YWJsZSBhbmQgZG9uJ3QgZGVsZXRlIGFueXRoaW5n
LgogICAgICAgICB9IGVsc2UgaWYgKE5vZGUqIHRhYmxlID0gaXNGaXJzdFBvc2l0aW9uQWZ0ZXJU
YWJsZSh2aXNpYmxlU3RhcnQpKSB7CiAgICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlz
aWJsZVNlbGVjdGlvbihQb3NpdGlvbih0YWJsZSwgMCksIGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0
KCksIERPV05TVFJFQU0pKTsKQEAgLTUyNSw5ICs1MjUsOSBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6
OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9v
bCBraQogICAgICAgICAvLyByb290IGVkaXRhYmxlIGVsZW1lbnQgb3IgYXQgdGhlIHN0YXJ0IG9m
IGEgZG9jdW1lbnQuCiAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIgc2VsZWN0aW9uOwogICAg
ICAgICBzZWxlY3Rpb24uc2V0U2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpKTsKLSAgICAgICAg
c2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkZPUldBUkQsIGdyYW51bGFyaXR5KTsKKyAgICAgICAgc2VsZWN0aW9uLm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBncmFudWxhcml0eSk7CiAgICAgICAgIGlmIChraWxsUmlu
ZyAmJiBzZWxlY3Rpb24uaXNDYXJldCgpICYmIGdyYW51bGFyaXR5ICE9IENoYXJhY3RlckdyYW51
bGFyaXR5KQotICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVy
OjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFy
aXR5KTsKKyAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwg
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogCiAgICAgICAgIFBvc2l0aW9uIGRvd25zdHJlYW1FbmQg
PSBlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKS5kb3duc3RyZWFtKCk7CiAgICAgICAgIFZpc2libGVQ
b3NpdGlvbiB2aXNpYmxlRW5kID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpOwpAQCAt
NTQyLDcgKzU0Miw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNz
ZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpCiAKICAgICAgICAgLy8gZGVs
ZXRpbmcgdG8gZW5kIG9mIHBhcmFncmFwaCB3aGVuIGF0IGVuZCBvZiBwYXJhZ3JhcGggbmVlZHMg
dG8gbWVyZ2UgdGhlIG5leHQgcGFyYWdyYXBoIChpZiBhbnkpCiAgICAgICAgIGlmIChncmFudWxh
cml0eSA9PSBQYXJhZ3JhcGhCb3VuZGFyeSAmJiBzZWxlY3Rpb24uc2VsZWN0aW9uKCkuaXNDYXJl
dCgpICYmIGlzRW5kT2ZQYXJhZ3JhcGgoc2VsZWN0aW9uLnNlbGVjdGlvbigpLnZpc2libGVFbmQo
KSkpCi0gICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVY
VEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkp
OworICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRl
cmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBDaGFy
YWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUgPSBzZWxlY3Rp
b24uc2VsZWN0aW9uKCk7CiAgICAgICAgIGlmICghc3RhcnRpbmdTZWxlY3Rpb24oKS5pc1Jhbmdl
KCkgfHwgc2VsZWN0aW9uVG9EZWxldGUuYmFzZSgpICE9IHN0YXJ0aW5nU2VsZWN0aW9uKCkuc3Rh
cnQoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwIGIvV2ViQ29y
ZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKaW5kZXggYTU4MzE3Ni4uZDYyMDUxZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVNl
bGVjdGlvbi5jcHAKQEAgLTI4MCwyMSArMjgwLDIxIEBAIHZvaWQgRE9NU2VsZWN0aW9uOjptb2Rp
ZnkoY29uc3QgU3RyaW5nJiBhbHRlclN0cmluZywgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJp
CiAKICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbiBhbHRlcjsKICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UoYWx0ZXJTdHJpbmcsICJleHRlbmQiKSkKLSAgICAgICAgYWx0ZXIg
PSBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQ7CisgICAgICAgIGFsdGVyID0gU2VsZWN0aW9u
Q29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZDsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShhbHRlclN0cmluZywgIm1vdmUiKSkKLSAgICAgICAgYWx0ZXIgPSBTZWxlY3Rpb25Db250
cm9sbGVyOjpNT1ZFOworICAgICAgICBhbHRlciA9IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVy
YXRpb25Nb3ZlOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RURpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KGRpcmVjdGlvblN0cmluZywgImZvcndhcmQiKSkKLSAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0
aW9uQ29udHJvbGxlcjo6Rk9SV0FSRDsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZDsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShkaXJlY3Rpb25TdHJpbmcsICJiYWNrd2FyZCIpKQotICAgICAgICBkaXJlY3Rpb24gPSBTZWxl
Y3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRDsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UoZGlyZWN0aW9uU3RyaW5nLCAibGVmdCIpKQotICAgICAgICBkaXJlY3Rpb24gPSBTZWxl
Y3Rpb25Db250cm9sbGVyOjpMRUZUOworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25MZWZ0OwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRp
cmVjdGlvblN0cmluZywgInJpZ2h0IikpCi0gICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkNv
bnRyb2xsZXI6OlJJR0hUOworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25Db250cm9sbGVy
OjpEaXJlY3Rpb25SaWdodDsKICAgICBlbHNlCiAgICAgICAgIHJldHVybjsKIApAQCAtNDI0LDcg
KzQyNCw3IEBAIHZvaWQgRE9NU2VsZWN0aW9uOjpkZWxldGVGcm9tRG9jdW1lbnQoKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoaXNDb2xsYXBzZWQoKSkKLSAgICAgICAgc2VsZWN0aW9uLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpC
QUNLV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICBzZWxlY3Rpb24tPm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogCiAgICAgUmVm
UHRyPFJhbmdlPiBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLT5zZWxlY3Rpb24oKS50b05vcm1h
bGl6ZWRSYW5nZSgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cCBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGViZjhlZmYuLjQxZjY5OGYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yMjgzLDE2ICsyMjgzLDE2IEBAIHZvaWQgRXZlbnRI
YW5kbGVyOjpoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtZW50KEtleWJvYXJkRXZlbnQqIGV2
ZW50KQogICAgIGJvb2wgaXNDb21tYW5kZWQgPSBldmVudC0+Z2V0TW9kaWZpZXJTdGF0ZSgiTWV0
YSIpOwogICAgIAogICAgIGlmIChrZXkgPT0gIlVwIikgewotICAgICAgICBtX2ZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5E
IDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dB
UkQsIChpc0NvbW1hbmRlZCkgPyBEb2N1bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5LCB0
cnVlKTsKKyAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeSgoaXNTaGlmdGVkKSA/
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dh
cmQsIChpc0NvbW1hbmRlZCkgPyBEb2N1bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5LCB0
cnVlKTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfSBlbHNlIGlm
IChrZXkgPT0gIkRvd24iKSB7Ci0gICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnko
KGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250
cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCAoaXNDb21tYW5kZWQp
ID8gRG9jdW1lbnRCb3VuZGFyeSA6IExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgICAgIG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1v
dmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIChpc0NvbW1hbmRlZCkg
PyBEb2N1bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5LCB0cnVlKTsKICAgICAgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfSBlbHNlIGlmIChrZXkgPT0gIkxlZnQiKSB7
Ci0gICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxl
Y3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpMRUZULCAoaXNDb21tYW5kZWQpID8gTGluZUJvdW5kYXJ5IDogKGlz
T3B0aW9uZWQpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUp
OworICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQpID8gU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LCAoaXND
b21tYW5kZWQpID8gTGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gV29yZEdyYW51bGFyaXR5
IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVs
dEhhbmRsZWQoKTsKICAgICB9IGVsc2UgaWYgKGtleSA9PSAiUmlnaHQiKSB7Ci0gICAgICAgIG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9s
bGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpSSUdIVCwgKGlzQ29tbWFuZGVkKSA/IExpbmVCb3VuZGFyeSA6IChpc09wdGlvbmVkKSA/
IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICAgICAg
bV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeSgoaXNTaGlmdGVkKSA/IFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9u
TW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQsIChpc0NvbW1hbmRlZCkg
PyBMaW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0
ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgp
OwogICAgIH0gICAgCiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvQ2hhbmdlTG9nIGIvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBjYTdkZjI3Li42NGZkYmMzIDEwMDY0NAotLS0gYS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wNS0yOSAg
THlvbiBDaGVuICA8bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEVudW0gdmFsdWUgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hU
LCBMRUZUIGFyZSBjYXVzaW5nIG1hY3JvIGNvbmZsaWN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NTMwCisKKyAgICAgICAgQ2hhbmdlIGVudW0g
RUFsdGVyYXRpb24gZnJvbSB7IE1PVkUsIEVYVEVORCB9IHRvIHsgQWx0ZXJhdGlvbk1vdmUsIEFs
dGVyYXRpb25FeHRlbmQgfSBhbmQgZW51bSBFRGlyZWN0aW9uIHsgRk9SV0FSRCwgQkFDS1dBUkQs
IFJJR0hULCBMRUZUfSB0byB7IERpcmVjdGlvbkZvcndhcmQsIERpcmVjdGlvbkJhY2t3YXJkLCBE
aXJlY3Rpb25SaWdodCwgRGlyZWN0aW9uTGVmdCB9IHRvIGF2b2lkIG1hY3JvIGNvbmZsaWN0LCBh
bmQgYWxzbyBiZXR0ZXIgY29kaW5nIHN0eWxlIGNvbmZvcm1hbmNlLgorCisgICAgICAgICogZWZs
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRFZmw6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKwogMjAxMC0wNS0z
MSAgTHVjYXMgRGUgTWFyY2hpICA8bHVjYXMuZGVtYXJjaGlAcHJvZnVzaW9uLm1vYmk+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCBmNWE4YzVhLi5lMzlmN2U0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTM0LDYgKzM0LDE4IEBACiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCiAKKyAgICAgICAgRW51bSB2YWx1ZSBG
T1JXQVJELCBCQUNLV0FSRCwgUklHSFQsIExFRlQgYXJlIGNhdXNpbmcgbWFjcm8gY29uZmxpY3Rz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU1MzAK
KworICAgICAgICBDaGFuZ2UgZW51bSBFQWx0ZXJhdGlvbiBmcm9tIHsgTU9WRSwgRVhURU5EIH0g
dG8geyBBbHRlcmF0aW9uTW92ZSwgQWx0ZXJhdGlvbkV4dGVuZCB9IGFuZCBlbnVtIEVEaXJlY3Rp
b24geyBGT1JXQVJELCBCQUNLV0FSRCwgUklHSFQsIExFRlR9IHRvIHsgRGlyZWN0aW9uRm9yd2Fy
ZCwgRGlyZWN0aW9uQmFja3dhcmQsIERpcmVjdGlvblJpZ2h0LCBEaXJlY3Rpb25MZWZ0IH0gdG8g
YXZvaWQgbWFjcm8gY29uZmxpY3QsIGFuZCBhbHNvIGJldHRlciBjb2Rpbmcgc3R5bGUgY29uZm9y
bWFuY2UuCisKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVJbXBsOjpleGVjdXRlQ29tbWFuZCk6CisKKzIwMTAtMDUtMjkgIEx5b24gQ2hl
biAgPGxpYWNoZW5AcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKwogICAgICAgICBUaGlzIGlzIGEgY29kaW5nIHN0eWxlIGNsZWFudXAgYmVmb3JlIGZpeGlu
ZyB0byBidWcgMzU1MzAuCiAKICAgICAgICAgRW51bSB2YWx1ZSBGT1JXQVJELCBCQUNLV0FSRCwg
UklHSFQsIExFRlQgYXJlIGNhdXNpbmcgbWFjcm8gY29uZmxpY3RzLgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGcmFtZUltcGwuY3BwCmluZGV4IDM3NzY2MTAuLmJiMWY2Y2UgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZyYW1lSW1wbC5jcHAKQEAgLTExMDAsMTEgKzExMDAsMTEgQEAgYm9vbCBXZWJGcmFtZUlt
cGw6OmV4ZWN1dGVDb21tYW5kKGNvbnN0IFdlYlN0cmluZyYgbmFtZSkKICAgICAvLyBzdXBwb3J0
LgogICAgIGlmIChjb21tYW5kID09ICJEZWxldGVUb0VuZE9mUGFyYWdyYXBoIikgewogICAgICAg
ICBFZGl0b3IqIGVkaXRvciA9IGZyYW1lKCktPmVkaXRvcigpOwotICAgICAgICBpZiAoIWVkaXRv
ci0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELAorICAg
ICAgICBpZiAoIWVkaXRvci0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVy
OjpEaXJlY3Rpb25Gb3J3YXJkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQYXJhZ3JhcGhCb3VuZGFyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmFsc2UpKSB7Ci0gICAgICAgICAgICBlZGl0b3ItPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0
aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwKKyAgICAgICAgICAgIGVkaXRvci0+ZGVsZXRlV2l0aERp
cmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJhY3RlckdyYW51bGFyaXR5LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwIGIvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCmluZGV4IGI4N2E5MWEuLjNjNDAxNmYgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAorKysg
Yi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAKQEAgLTMzOSwy
NiArMzM5LDI2IEBAIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRF
dmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAoY2FyZXRCcm93c2luZykgewogICAg
ICAgICBzd2l0Y2ggKGtleUV2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewogICAgICAg
ICBjYXNlIFZLX0xFRlQ6Ci0gICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShr
ZXlFdmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVj
dGlvbkNvbnRyb2xsZXI6Ok1PVkUsCi0gICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkxFRlQsCisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXlF
dmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQg
OiBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwKKyAgICAgICAgICAgICAgICAg
ICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwKICAgICAgICAgICAgICAgICAg
ICAga2V5RXZlbnQtPmN0cmxLZXkoKSA/IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51
bGFyaXR5LAogICAgICAgICAgICAgICAgICAgICB0cnVlKTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICBjYXNlIFZLX1JJR0hUOgotICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5tb2RpZnkoa2V5RXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpF
WFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLAotICAgICAgICAgICAgICAgICAgICBT
ZWxlY3Rpb25Db250cm9sbGVyOjpSSUdIVCwKKyAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KGtleUV2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLAorICAg
ICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdodCwKICAg
ICAgICAgICAgICAgICAgICAga2V5RXZlbnQtPmN0cmxLZXkoKSA/IFdvcmRHcmFudWxhcml0eSA6
IENoYXJhY3RlckdyYW51bGFyaXR5LAogICAgICAgICAgICAgICAgICAgICB0cnVlKTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFZLX1VQOgotICAgICAgICAgICAgZnJh
bWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V5RXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25D
b250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLAotICAgICAgICAg
ICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwKKyAgICAgICAgICAgIGZy
YW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtleUV2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9u
Q29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVy
YXRpb25Nb3ZlLAorICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJl
Y3Rpb25CYWNrd2FyZCwKICAgICAgICAgICAgICAgICAgICAga2V5RXZlbnQtPmN0cmxLZXkoKSA/
IFBhcmFncmFwaEdyYW51bGFyaXR5IDogTGluZUdyYW51bGFyaXR5LAogICAgICAgICAgICAgICAg
ICAgICB0cnVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFZLX0RP
V046Ci0gICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXlFdmVudC0+c2hp
ZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xs
ZXI6Ok1PVkUsCi0gICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldB
UkQsCisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXlFdmVudC0+c2hp
ZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rp
b25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwKKyAgICAgICAgICAgICAgICAgICAgU2VsZWN0
aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwKICAgICAgICAgICAgICAgICAgICAga2V5
RXZlbnQtPmN0cmxLZXkoKSA/IFBhcmFncmFwaEdyYW51bGFyaXR5IDogTGluZUdyYW51bGFyaXR5
LAogICAgICAgICAgICAgICAgICAgICB0cnVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZyBiL1dlYktpdC9oYWlrdS9DaGFuZ2VM
b2cKaW5kZXggODg1NjlmNC4uOTg5OWQyNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L0NoYW5n
ZUxvZworKysgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMTggQEAKIAogICAg
ICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KIAorICAgICAgICBFbnVtIHZhbHVlIEZPUldB
UkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVCBhcmUgY2F1c2luZyBtYWNybyBjb25mbGljdHMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTUzMAorCisg
ICAgICAgIENoYW5nZSBlbnVtIEVBbHRlcmF0aW9uIGZyb20geyBNT1ZFLCBFWFRFTkQgfSB0byB7
IEFsdGVyYXRpb25Nb3ZlLCBBbHRlcmF0aW9uRXh0ZW5kIH0gYW5kIGVudW0gRURpcmVjdGlvbiB7
IEZPUldBUkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVH0gdG8geyBEaXJlY3Rpb25Gb3J3YXJkLCBE
aXJlY3Rpb25CYWNrd2FyZCwgRGlyZWN0aW9uUmlnaHQsIERpcmVjdGlvbkxlZnQgfSB0byBhdm9p
ZCBtYWNybyBjb25mbGljdCwgYW5kIGFsc28gYmV0dGVyIGNvZGluZyBzdHlsZSBjb25mb3JtYW5j
ZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEhhaWt1OjpoYW5kbGVLZXlib2FyZEV2ZW50KToK
KworMjAxMC0wNS0yOSAgTHlvbiBDaGVuICA8bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFRoaXMgaXMgYSBjb2Rpbmcgc3R5
bGUgY2xlYW51cCBiZWZvcmUgZml4aW5nIHRvIGJ1ZyAzNTUzMC4KIAogICAgICAgICBFbnVtIHZh
bHVlIEZPUldBUkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVCBhcmUgY2F1c2luZyBtYWNybyBjb25m
bGljdHMuCmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50SGFpa3UuY3BwIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhh
aWt1LmNwcAppbmRleCA4ZWQ2NDBmLi4yZTIzYWY3IDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3Uv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuY3BwCisrKyBiL1dlYktpdC9oYWlrdS9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHAKQEAgLTI1MywzNiArMjUzLDM2IEBA
IHZvaWQgRWRpdG9yQ2xpZW50SGFpa3U6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVu
dCogZXZlbnQpCiAgICAgaWYgKHN0YXJ0LT5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7CiAgICAgICAg
IHN3aXRjaCAoa2V2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewogICAgICAgICBjYXNl
IFZLX0JBQ0s6Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rp
b24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsCisgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9u
QmFja3dhcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAga2V2ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxh
cml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
YWxzZSwgdHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWS19ERUxFVEU6
Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0
aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVs
ZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtldmVudC0+
Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIHRydWUp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVktfTEVGVDoKLSAgICAgICAgICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpMRUZU
LAorICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V2ZW50LT5zaGlmdEtl
eSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtldmVudC0+Y3RybEtleSgpID8gV29yZEdyYW51
bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZL
X1JJR0hUOgotICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V2ZW50LT5z
aGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJv
bGxlcjo6TU9WRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OlJJR0hULAorICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoa2V2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlv
bkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0
aW9uUmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXZlbnQt
PmN0cmxLZXkoKSA/IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KGtldmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVO
RCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwKKyAgICAgICAgICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRl
cmF0aW9uTW92ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga2V2ZW50LT5jdHJsS2V5KCkgPyBQYXJhZ3JhcGhHcmFudWxhcml0
eSA6IExpbmVHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVktfRE9XTjoKLSAg
ICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+c2hpZnRLZXkoKSA/
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9s
bGVyOjpGT1JXQVJELAorICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V2
ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2Fy
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtldmVudC0+Y3RybEtl
eSgpID8gUGFyYWdyYXBoR3JhbnVsYXJpdHkgOiBMaW5lR3JhbnVsYXJpdHksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5k
ZXggMTU2MjMyYy4uOTU3YjQ3NSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xMyw2ICsxMywxOCBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IEtlbnQgVGFtdXJhLgogCisgICAgICAgIEVudW0gdmFsdWUgRk9SV0FSRCwgQkFDS1dB
UkQsIFJJR0hULCBMRUZUIGFyZSBjYXVzaW5nIG1hY3JvIGNvbmZsaWN0cy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NTMwCisKKyAgICAgICAgQ2hh
bmdlIGVudW0gRUFsdGVyYXRpb24gZnJvbSB7IE1PVkUsIEVYVEVORCB9IHRvIHsgQWx0ZXJhdGlv
bk1vdmUsIEFsdGVyYXRpb25FeHRlbmQgfSBhbmQgZW51bSBFRGlyZWN0aW9uIHsgRk9SV0FSRCwg
QkFDS1dBUkQsIFJJR0hULCBMRUZUfSB0byB7IERpcmVjdGlvbkZvcndhcmQsIERpcmVjdGlvbkJh
Y2t3YXJkLCBEaXJlY3Rpb25SaWdodCwgRGlyZWN0aW9uTGVmdCB9IHRvIGF2b2lkIG1hY3JvIGNv
bmZsaWN0LCBhbmQgYWxzbyBiZXR0ZXIgY29kaW5nIHN0eWxlIGNvbmZvcm1hbmNlLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorCisyMDEwLTA1LTI5ICBM
eW9uIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKICAgICAgICAgVGhpcyBpcyBhIGNvZGluZyBzdHlsZSBjbGVhbnVwIGJlZm9y
ZSBmaXhpbmcgdG8gYnVnIDM1NTMwLgogCiAgICAgICAgIEVudW0gdmFsdWUgRk9SV0FSRCwgQkFD
S1dBUkQsIFJJR0hULCBMRUZUIGFyZSBjYXVzaW5nIG1hY3JvIGNvbmZsaWN0cy4KZGlmZiAtLWdp
dCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAgYi9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCmluZGV4IGZiODM0YTguLjBmNTRl
MjEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5j
cHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcApAQCAt
Mzc2LDExICszNzYsMTEgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVu
dChLZXlib2FyZEV2ZW50KiBldmVudCkKICNlbmRpZiAvLyBRVF9OT19TSE9SVENVVAogICAgICAg
ICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKICAgICAgICAgY2Fz
ZSBWS19CQUNLOgotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0
aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELAorICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlv
bkJhY2t3YXJkLAogICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFs
c2UsIHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVktfREVMRVRFOgot
ICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkZPUldBUkQsCisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0
ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwKICAg
ICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZLX0xFRlQ6Ci0tIAoxLjYuNC5tc3lzZ2l0
LjAKCg==
</data>
<flag name="review"
          id="42101"
          type_id="1"
          status="-"
          setter="tkent"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57503</attachid>
            <date>2010-05-31 17:52:57 -0700</date>
            <delta_ts>2010-05-31 23:14:43 -0700</delta_ts>
            <desc>Patch regenerated.</desc>
            <filename>35530.patch</filename>
            <type>text/plain</type>
            <size>56988</size>
            <attacher name="Lyon Chen">liachen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODkxZDg0Zi4uNjA5MjY1ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MCBAQAorMjAxMC0wNS0zMSAgTHlvbiBDaGVuICA8
bGlhY2hlbkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEVudW0gdmFsdWUgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBMRUZUIGFyZSBj
YXVzaW5nIG1hY3JvIGNvbmZsaWN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM1NTMwCisKKyAgICAgICAgQ2hhbmdlIGVudW0gRUFsdGVyYXRpb24g
ZnJvbSB7IE1PVkUsIEVYVEVORCB9IHRvIHsgQWx0ZXJhdGlvbk1vdmUsIEFsdGVyYXRpb25FeHRl
bmQgfSBhbmQgZW51bSBFRGlyZWN0aW9uIHsgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBMRUZU
fSB0byB7IERpcmVjdGlvbkZvcndhcmQsIERpcmVjdGlvbkJhY2t3YXJkLCBEaXJlY3Rpb25SaWdo
dCwgRGlyZWN0aW9uTGVmdCB9IHRvIGF2b2lkIG1hY3JvIGNvbmZsaWN0LCBhbmQgYWxzbyBiZXR0
ZXIgY29kaW5nIHN0eWxlIGNvbmZvcm1hbmNlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZSk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpkb0FYUmFuZ2VGb3JMaW5lKToK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmRlbGV0ZVdpdGhEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlz
c3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyk6CisgICAgICAgICog
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxl
dGVCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlQmFja3dhcmRCeURl
Y29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURl
bGV0ZUZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5n
T2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mUGFy
YWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb0VuZE9mTGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlVG9FbmRPZlBhcmFncmFwaCk6CisgICAgICAg
IChXZWJDb3JlOjpleGVjdXRlRGVsZXRlV29yZEJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVEZWxldGVXb3JkRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRm9y
d2FyZERlbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUJhY2t3YXJkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVEb3duKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlTW92ZUZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVGb3J3YXJkQW5k
TW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlTGVmdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYWdlRG93bik6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlUGFnZVVwKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUGFnZVVw
QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUmlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVSaWdodEFuZE1vZGlmeVNlbGVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlm
eVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZM
aW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkxpbmVBbmRN
b2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmlu
Z09mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdP
ZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRl
TW92ZVRvQmVnaW5uaW5nT2ZTZW50ZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92
ZVRvQmVnaW5uaW5nT2ZTZW50ZW5jZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZVRvRW5kT2ZEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlTW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZVRvRW5kT2ZTZW50ZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlTW92ZVRvRW5kT2ZTZW50ZW5jZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZVRvRW5kT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVN
b3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVUb0VuZE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
VG9FbmRPZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTW92ZVBhcmFncmFwaEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUGFyYWdyYXBoRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVVwKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVXb3JkQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkQmFj
a3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVX
b3JkRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRGb3J3YXJkQW5k
TW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZExlZnQp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3JkTGVmdEFuZE1vZGlmeVNlbGVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRSaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRSaWdodEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGluZSk6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVUb1JpZ2h0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAg
ICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uQ29udHJvbGxlcjo6d2lsbEJlTW9kaWZpZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5KToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlv
bkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Oik6
CisgICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHlw
aW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAqIHBhZ2UvRE9N
U2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6bW9kaWZ5KToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6ZGVsZXRlRnJvbURvY3VtZW50KToKKyAg
ICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnQpOgorCiAyMDEwLTA1LTMxICBM
dWNhcyBEZSBNYXJjaGkgIDxsdWNhcy5kZW1hcmNoaUBwcm9mdXNpb24ubW9iaT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCBlYjQx
NjhjLi40ODgyOWEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0yNDE4LDcgKzI0MTgsNyBAQCBWaXNpYmxlUG9zaXRp
b25SYW5nZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZUZv
ckxpbmUodW5zaQogICAgIC8vIHdpbGwgYmUgYSBjYXJldCBhdCB2aXNpYmxlUG9zLgogICAgIFNl
bGVjdGlvbkNvbnRyb2xsZXIgc2VsZWN0aW9uOwogICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbih2aXNpYmxlUG9zKSk7Ci0gICAgc2VsZWN0aW9uLm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCBMaW5l
Qm91bmRhcnkpOworICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQsIExpbmVC
b3VuZGFyeSk7CiAgICAgCiAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKHNlbGVjdGlv
bi5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSwgc2VsZWN0aW9uLnNlbGVjdGlvbigpLnZpc2li
bGVFbmQoKSk7CiB9CkBAIC0yNjMwLDggKzI2MzAsOCBAQCBQbGFpblRleHRSYW5nZSBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojpkb0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkIGxpbmVOdW1iZXIp
CiAgICAgLy8gd2lsbCBiZSBhIGNhcmV0IGF0IHZpc2libGVQb3MuCiAgICAgU2VsZWN0aW9uQ29u
dHJvbGxlciBzZWxlY3Rpb247CiAgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlvbihWaXNpYmxlU2Vs
ZWN0aW9uKHZpc2libGVQb3MpKTsKLSAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVGVCwgTGluZUJvdW5kYXJ5KTsK
LSAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6UklHSFQsIExpbmVCb3VuZGFyeSk7CisgICAgc2VsZWN0aW9uLm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpEaXJlY3Rpb25MZWZ0LCBMaW5lQm91bmRhcnkpOworICAgIHNlbGVjdGlvbi5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6RGlyZWN0aW9uUmlnaHQsIExpbmVCb3VuZGFyeSk7CiAgICAgCiAgICAgLy8gY2FsY3VsYXRl
IHRoZSBpbmRpY2VzIGZvciB0aGUgc2VsZWN0aW9uIHN0YXJ0IGFuZCBlbmQKICAgICBWaXNpYmxl
UG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5zZWxlY3Rpb24oKS52aXNpYmxlU3Rh
cnQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNjAzZjM1Yy4uODA0MTE1OSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTI0MiwxMiArMjQyLDEyIEBAIGJvb2wgRWRpdG9yOjpkZWxldGVXaXRoRGlyZWN0aW9uKFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb24gZGlyZWN0aW9uLCBUZXh0CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgewogICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBjYXNl
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQ6Ci0gICAgICAgIGNhc2UgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6UklHSFQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0
aW9uRm9yd2FyZDoKKyAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25S
aWdodDoKICAgICAgICAgICAgIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2Vk
KG1fZnJhbWUtPmRvY3VtZW50KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCksIGdyYW51bGFyaXR5
LCBraWxsUmluZyk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTZWxlY3Rpb25D
b250cm9sbGVyOjpCQUNLV0FSRDoKLSAgICAgICAgY2FzZSBTZWxlY3Rpb25Db250cm9sbGVyOjpM
RUZUOgorICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJk
OgorICAgICAgICBjYXNlIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkxlZnQ6CiAgICAg
ICAgICAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKG1fZnJhbWUtPmRvY3VtZW50
KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCksIGdyYW51bGFyaXR5LCBraWxsUmluZyk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjI2OSw3ICsyMjY5LDcgQEAgdm9pZCBFZGl0
b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvUG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uICZwKQogCiAgICAgICAgIC8vIFJlc2V0IHRoZSBjaGFyZXQgb25lIGNoYXJhY3RlciBm
dXJ0aGVyLgogICAgICAgICBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+bW92ZVRvKGZyYW1lKCktPnNl
bGVjdGlvbigpLT5lbmQoKSk7Ci0gICAgICAgIGZyYW1lKCktPnNlbGVjdGlvbigpLT5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwg
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAgfQogCiAg
ICAgaWYgKCFpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSkKQEAgLTI1NTgsMTEgKzI1NTgsMTEg
QEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMo
Ym9vbCBtYXJrU3BlbGxpbmcsIFJhbmdlKgogICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBzZWxl
Y3Rpb25SYW5nZSA9IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UocGFyYWdyYXBoUmFuZ2UuZ2V0KCks
IDAsIHNlbGVjdGlvbk9mZnNldCk7CiAgICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+
bW92ZVRvKHNlbGVjdGlvblJhbmdlLT5lbmRQb3NpdGlvbigpLCBET1dOU1RSRUFNKTsKICAgICAg
ICAgICAgIGlmIChhZGp1c3RTZWxlY3Rpb25Gb3JQYXJhZ3JhcGhCb3VuZGFyaWVzKQotICAgICAg
ICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJp
dHkpOworICAgICAgICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVj
dGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIC8vIElmIHRoaXMgZmFpbHMgZm9yIGFueSByZWFzb24sIHRoZSBmYWxsYmFjayBp
cyB0byBnbyBvbmUgcG9zaXRpb24gYmV5b25kIHRoZSBsYXN0IHJlcGxhY2VtZW50CiAgICAgICAg
ICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW92ZVRvKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5l
bmQoKSk7Ci0gICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3Rl
ckdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkRpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICAgICAgfQogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCA3ZTg1YWE5Li43NTA4NWZiIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0zMjQsMzIgKzMyNCwzMiBAQCBzdGF0aWMg
Ym9vbCBleGVjdXRlRGVsZXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlIHNvdXJjZSwgY29ucwogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlQmFja3dhcmQoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkJBQ0tXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOworICAg
IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVy
OjpEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZUJhY2t3YXJk
QnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIExPR19FUlJPUigiRGVsZXRl
QmFja3dhcmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIgaXMgbm90IGltcGxlbWVudGVk
LCBkb2luZyBEZWxldGVCYWNrd2FyZCBpbnN0ZWFkIik7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5k
ZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBDaGFyYWN0
ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRl
V2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZUZvcndhcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigp
LT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJh
Y3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxl
dGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIENo
YXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
IHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mTGluZShGcmFtZSogZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFt
ZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFD
S1dBUkQsIExpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+
ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2Fy
ZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoKEZyYW1lKiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZy
YW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpC
QUNLV0FSRCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS0+ZWRp
dG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9u
QmFja3dhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTM1Nyw3ICszNTcsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9F
bmRPZkxpbmUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsCiB7CiAg
ICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgdGhpcyBjb21tYW5kIHNob3VsZCBkZWxldGUgdGhlIG5l
d2xpbmUgYXQgdGhlIGVuZCBvZgogICAgIC8vIGEgcGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQgdGhl
IGVuZCBvZiBhIHBhcmFncmFwaCAobGlrZSBEZWxldGVUb0VuZE9mUGFyYWdyYXBoKS4KLSAgICBm
cmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6
Rk9SV0FSRCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigp
LT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndh
cmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0zNjUsNyArMzY1LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvRW5kT2ZQYXJhZ3Jh
cGgoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3UKIHsKICAgICAvLyBEZXNw
aXRlIGl0cyBuYW1lLCB0aGlzIGNvbW1hbmQgc2hvdWxkIGRlbGV0ZSB0aGUgbmV3bGluZSBhdCB0
aGUgZW5kIG9mCiAgICAgLy8gYSBwYXJhZ3JhcGggaWYgeW91IGFyZSBhdCB0aGUgZW5kIG9mIGEg
cGFyYWdyYXBoLgotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxl
Y3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2Up
OworICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2Up
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zODYsMTMgKzM4NiwxMyBAQCBzdGF0aWMgYm9v
bCBleGVjdXRlRGVsZXRlVG9NYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdAogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEJhY2t3YXJkKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250
cm9sbGVyOjpCQUNLV0FSRCwgV29yZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJh
bWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRp
cmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVdvcmRGb3J3YXJkKEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9s
bGVyOjpGT1JXQVJELCBXb3JkR3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS0+
ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0
aW9uRm9yd2FyZCwgV29yZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRm9yd2FyZERl
bGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyYwogewog
ICAgIHN3aXRjaCAoc291cmNlKSB7CiAgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRp
bmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rp
b25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUp
OworICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNl
LCB0cnVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBDb21tYW5kRnJvbURPTToK
ICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6CkBAIC01OTcsNDkgKzU5
Nyw0OSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRU
b0xlZnQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92
ZUJhY2t3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25z
dCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBDaGFyYWN0ZXJH
cmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVj
dGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rp
b24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgQ2hhcmFjdGVyR3JhbnVs
YXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlv
bkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlRG93bihGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0
aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpGT1JXQVJELCBMaW5lR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rp
b25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lR3JhbnVsYXJpdHksIHRydWUpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZURvd25BbmRNb2Rp
ZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBMaW5lR3Jh
bnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVj
dGlvbkZvcndhcmQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlRm9yd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0
aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5
LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVG
b3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9S
V0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVl
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVMZWZ0KEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1P
VkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVl
KTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpB
bHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgQ2hhcmFj
dGVyR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250
cm9sbGVyOjpMRUZULCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwg
U2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uTGVmdCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHks
IHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02NDgsNyArNjQ4LDcgQEAgc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVQYWdlRG93bihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSwgY29uc3QKICAgICBpbnQgZGlzdGFuY2UgPSB2ZXJ0aWNhbFNjcm9sbERpc3Rh
bmNlKGZyYW1lKTsKICAgICBpZiAoIWRpc3RhbmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
Ok1PVkUsIGRpc3RhbmNlLCB0cnVlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpBbGlnbkN1cnNvck9u
U2Nyb2xsQWx3YXlzKTsKKyAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIGRpc3RhbmNlLCB0cnVlLCBTZWxlY3Rp
b25Db250cm9sbGVyOjpBbGlnbkN1cnNvck9uU2Nyb2xsQWx3YXlzKTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKQEAgLTY1Niw3ICs2NTYs
NyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDbwogICAgIGludCBkaXN0YW5jZSA9IHZlcnRpY2Fs
U2Nyb2xsRGlzdGFuY2UoZnJhbWUpOwogICAgIGlmICghZGlzdGFuY2UpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9u
Q29udHJvbGxlcjo6RVhURU5ELCBkaXN0YW5jZSwgdHJ1ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWxpZ25DdXJzb3JPblNjcm9sbEFsd2F5cyk7CisgICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIGRpc3RhbmNl
LCB0cnVlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpBbGlnbkN1cnNvck9uU2Nyb2xsQWx3YXlzKTsK
IH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYWdlVXAoRnJhbWUqIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCkBAIC02NjQsNyArNjY0LDcgQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYWdlVXAoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFMKICAgICBpbnQgZGlzdGFuY2UgPSB2ZXJ0aWNhbFNjcm9s
bERpc3RhbmNlKGZyYW1lKTsKICAgICBpZiAoIWRpc3RhbmNlKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRy
b2xsZXI6Ok1PVkUsIC1kaXN0YW5jZSwgdHJ1ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QWxpZ25D
dXJzb3JPblNjcm9sbEFsd2F5cyk7CisgICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCAtZGlzdGFuY2UsIHRydWUs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsaWduQ3Vyc29yT25TY3JvbGxBbHdheXMpOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKQEAgLTY3Miwy
MTAgKzY3MiwyMTAgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYWdlVXBBbmRNb2RpZnlTZWxl
Y3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW0KICAgICBpbnQgZGlzdGFuY2Ug
PSB2ZXJ0aWNhbFNjcm9sbERpc3RhbmNlKGZyYW1lKTsKICAgICBpZiAoIWRpc3RhbmNlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgLWRpc3RhbmNlLCB0cnVlLCBTZWxlY3Rpb25D
b250cm9sbGVyOjpBbGlnbkN1cnNvck9uU2Nyb2xsQWx3YXlzKTsKKyAgICByZXR1cm4gZnJhbWUt
PnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVu
ZCwgLWRpc3RhbmNlLCB0cnVlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpBbGlnbkN1cnNvck9uU2Ny
b2xsQWx3YXlzKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVSaWdodChGcmFtZSogZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBm
cmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpSSUdIVCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRydWUpOworICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdodCwgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxl
cjo6UklHSFQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0
aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxl
Y3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdodCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRy
dWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVn
aW5uaW5nT2ZEb2N1bWVudChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgRG9j
dW1lbnRCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRp
cmVjdGlvbkJhY2t3YXJkLCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgRG9j
dW1lbnRCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6
RGlyZWN0aW9uQmFja3dhcmQsIERvY3VtZW50Qm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZMaW5lKEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBMaW5lQm91bmRhcnksIHRydWUpOworICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUJvdW5k
YXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkJBQ0tXQVJELCBMaW5lQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIHRydWUp
OwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5u
aW5nT2ZQYXJhZ3JhcGgoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIFBhcmFn
cmFwaEJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoQW5k
TW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIFBh
cmFncmFwaEJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShT
ZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpEaXJlY3Rpb25CYWNrd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUpOwogICAgIHJldHVy
biB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZTZW50ZW5j
ZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVy
OjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgU2VudGVuY2VCb3VuZGFyeSwg
dHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJk
LCBTZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rpb24o
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgU2VudGVuY2VCb3VuZGFyeSwg
dHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dh
cmQsIFNlbnRlbmNlQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZEb2N1bWVudChGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0
aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpGT1JXQVJELCBEb2N1bWVudEJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0
aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0
aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwgdHJ1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZkRv
Y3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9S
V0FSRCwgRG9jdW1lbnRCb3VuZGFyeSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwgdHJ1ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNl
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIFNlbnRlbmNlQm91bmRhcnksIHRy
dWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBT
ZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVUb0VuZE9mU2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
ZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBTZW50ZW5jZUJvdW5kYXJ5LCB0cnVlKTsKKyAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0
aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBTZW50ZW5j
ZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhl
Y3V0ZU1vdmVUb0VuZE9mTGluZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShT
ZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBM
aW5lQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJl
Y3Rpb25Gb3J3YXJkLCBMaW5lQm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVY
VEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsK
KyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRl
cmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBMaW5l
Qm91bmRhcnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGgoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
ZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FS
RCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZlBhcmFncmFwaEFu
ZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIFBh
cmFncmFwaEJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShT
ZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpEaXJlY3Rpb25Gb3J3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgUGFy
YWdyYXBoR3JhbnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xs
ZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFyYWdyYXBoRm9yd2Fy
ZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShT
ZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQs
IFBhcmFncmFwaEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgdHJ1ZSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVXAoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
ZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAg
ZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlv
bk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBMaW5lR3JhbnVs
YXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
TW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFD
S1dBUkQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIExpbmVHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZEJhY2t3YXJkKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1P
VkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBXb3JkR3JhbnVsYXJpdHksIHRydWUp
OworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFs
dGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgV29y
ZEdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wg
ZXhlY3V0ZU1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUt
PnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rp
b25Db250cm9sbGVyOjpCQUNLV0FSRCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKKyAgICBmcmFt
ZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0
ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgV29yZEdyYW51bGFy
aXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVXb3JkRm9yd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwg
Y29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBXb3JkR3Jh
bnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25Gb3J3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVY
VEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgV29yZEdyYW51bGFyaXR5LCB0cnVl
KTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpB
bHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLCBX
b3JkR3JhbnVsYXJpdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlTW92ZVdvcmRMZWZ0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQsIFdv
cmRHcmFudWxhcml0eSwgdHJ1ZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRp
cmVjdGlvbkxlZnQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZExlZnRBbmRNb2RpZnlTZWxlY3Rpb24oRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhU
RU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpMRUZULCBXb3JkR3JhbnVsYXJpdHksIHRydWUpOwor
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVy
YXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkxlZnQsIFdvcmRHcmFu
dWxhcml0eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1
dGVNb3ZlV29yZFJpZ2h0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVj
dGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCBXb3JkR3Jh
bnVsYXJpdHksIHRydWUpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25SaWdodCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5E
LCBTZWxlY3Rpb25Db250cm9sbGVyOjpSSUdIVCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKKyAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0
aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdodCwgV29yZEdyYW51
bGFyaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZU1vdmVUb0xlZnRFbmRPZkxpbmUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnko
U2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVGVCwgTGlu
ZUJvdW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rp
b25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0
aW9uTGVmdCwgTGluZUJvdW5kYXJ5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3Rh
dGljIGJvb2wgZXhlY3V0ZU1vdmVUb0xlZnRFbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24oRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhU
RU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpMRUZULCBMaW5lQm91bmRhcnksIHRydWUpOworICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkxlZnQsIExpbmVCb3VuZGFy
eSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3Zl
VG9SaWdodEVuZE9mTGluZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpSSUdIVCwgTGluZUJv
dW5kYXJ5LCB0cnVlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25D
b250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9u
UmlnaHQsIExpbmVCb3VuZGFyeSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFt
ZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRF
TkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCBMaW5lQm91bmRhcnksIHRydWUpOworICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRp
b25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0LCBMaW5lQm91bmRh
cnksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Vk
aXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9u
Q29udHJvbGxlci5jcHAKaW5kZXggODE2Zjk2OC4uZjliMzliYiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9T
ZWxlY3Rpb25Db250cm9sbGVyLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgU2VsZWN0aW9u
Q29udHJvbGxlcjo6c2V0SXNEaXJlY3Rpb25hbChib29sIGlzRGlyZWN0aW9uYWwpCiAKIHZvaWQg
U2VsZWN0aW9uQ29udHJvbGxlcjo6d2lsbEJlTW9kaWZpZWQoRUFsdGVyYXRpb24gYWx0ZXIsIEVE
aXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIGlmIChhbHRlciAhPSBFWFRFTkQpCisgICAgaWYg
KGFsdGVyICE9IEFsdGVyYXRpb25FeHRlbmQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBvc2l0
aW9uIHN0YXJ0ID0gbV9zZWxlY3Rpb24uc3RhcnQoKTsKQEAgLTI2OSwxMyArMjY5LDEzIEBAIHZv
aWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6d2lsbEJlTW9kaWZpZWQoRUFsdGVyYXRpb24gYWx0ZXIs
IEVEaXJlY3Rpb24gZGlyZWN0aW9uCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6IFRo
aXMgaXMgcHJvYmFibHkgbm90IGNvcnJlY3QgZm9yIHJpZ2h0IGFuZCBsZWZ0IHdoZW4gdGhlIGRp
cmVjdGlvbiBpcyBSVEwuCiAgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgICAgIGNh
c2UgUklHSFQ6Ci0gICAgICAgIGNhc2UgRk9SV0FSRDoKKyAgICAgICAgY2FzZSBEaXJlY3Rpb25S
aWdodDoKKyAgICAgICAgY2FzZSBEaXJlY3Rpb25Gb3J3YXJkOgogICAgICAgICAgICAgbV9zZWxl
Y3Rpb24uc2V0QmFzZShzdGFydCk7CiAgICAgICAgICAgICBtX3NlbGVjdGlvbi5zZXRFeHRlbnQo
ZW5kKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIExFRlQ6Ci0gICAgICAgIGNh
c2UgQkFDS1dBUkQ6CisgICAgICAgIGNhc2UgRGlyZWN0aW9uTGVmdDoKKyAgICAgICAgY2FzZSBE
aXJlY3Rpb25CYWNrd2FyZDoKICAgICAgICAgICAgIG1fc2VsZWN0aW9uLnNldEJhc2UoZW5kKTsK
ICAgICAgICAgICAgIG1fc2VsZWN0aW9uLnNldEV4dGVudChzdGFydCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTY0NSwyNiArNjQ1LDI2IEBAIGJvb2wgU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9k
aWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0aW9uIGRpcmVjdGlvbiwgVGV4dEdyCiAKICAg
ICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb247CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAg
ICBjYXNlIFJJR0hUOgotICAgICAgICBpZiAoYWx0ZXIgPT0gTU9WRSkKKyAgICBjYXNlIERpcmVj
dGlvblJpZ2h0OgorICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJhdGlvbk1vdmUpCiAgICAgICAg
ICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ1JpZ2h0KGdyYW51bGFyaXR5KTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlFeHRlbmRpbmdSaWdodChncmFudWxh
cml0eSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRk9SV0FSRDoKLSAgICAgICAgaWYgKGFs
dGVyID09IEVYVEVORCkKKyAgICBjYXNlIERpcmVjdGlvbkZvcndhcmQ6CisgICAgICAgIGlmIChh
bHRlciA9PSBBbHRlcmF0aW9uRXh0ZW5kKQogICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlF
eHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
cG9zaXRpb24gPSBtb2RpZnlNb3ZpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBMRUZUOgotICAgICAgICBpZiAoYWx0ZXIgPT0gTU9WRSkKKyAgICBjYXNl
IERpcmVjdGlvbkxlZnQ6CisgICAgICAgIGlmIChhbHRlciA9PSBBbHRlcmF0aW9uTW92ZSkKICAg
ICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92aW5nTGVmdChncmFudWxhcml0eSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nTGVmdChncmFu
dWxhcml0eSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQkFDS1dBUkQ6Ci0gICAgICAgIGlm
IChhbHRlciA9PSBFWFRFTkQpCisgICAgY2FzZSBEaXJlY3Rpb25CYWNrd2FyZDoKKyAgICAgICAg
aWYgKGFsdGVyID09IEFsdGVyYXRpb25FeHRlbmQpCiAgICAgICAgICAgICBwb3NpdGlvbiA9IG1v
ZGlmeUV4dGVuZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgcG9zaXRpb24gPSBtb2RpZnlNb3ZpbmdCYWNrd2FyZChncmFudWxhcml0eSk7CkBAIC02
ODEsMTYgKzY4MSwxNiBAQCBib29sIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeShFQWx0ZXJh
dGlvbiBhbHRlciwgRURpcmVjdGlvbiBkaXJlY3Rpb24sIFRleHRHcgogICAgIGludCB4ID0geFBv
c0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKFNUQVJUKTsKIAogICAgIHN3aXRjaCAoYWx0ZXIp
IHsKLSAgICBjYXNlIE1PVkU6CisgICAgY2FzZSBBbHRlcmF0aW9uTW92ZToKICAgICAgICAgbW92
ZVRvKHBvc2l0aW9uLCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBF
WFRFTkQ6CisgICAgY2FzZSBBbHRlcmF0aW9uRXh0ZW5kOgogICAgICAgICBpZiAoIXNldHRpbmdz
IHx8IHNldHRpbmdzLT5lZGl0aW5nQmVoYXZpb3IoKSAhPSBFZGl0aW5nTWFjQmVoYXZpb3IgfHwg
bV9zZWxlY3Rpb24uaXNDYXJldCgpIHx8ICFpc0JvdW5kYXJ5KGdyYW51bGFyaXR5KSkKICAgICAg
ICAgICAgIHNldEV4dGVudChwb3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgLy8gU3RhbmRhcmQgTWFjIGJlaGF2aW9yIHdoZW4gZXh0ZW5kaW5nIHRv
IGEgYm91bmRhcnkgaXMgZ3JvdyB0aGUgc2VsZWN0aW9uIHJhdGhlcgogICAgICAgICAgICAgLy8g
dGhhbiBsZWF2aW5nIHRoZSBiYXNlIGluIHBsYWNlIGFuZCBtb3ZpbmcgdGhlIGV4dGVudC4gTWF0
Y2hlcyBOU1RleHRWaWV3LgotICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBGT1JXQVJEIHx8
IGRpcmVjdGlvbiA9PSBSSUdIVCkKKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gRGlyZWN0
aW9uRm9yd2FyZCB8fCBkaXJlY3Rpb24gPT0gRGlyZWN0aW9uUmlnaHQpCiAgICAgICAgICAgICAg
ICAgc2V0RW5kKHBvc2l0aW9uLCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICBzZXRTdGFydChwb3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7CkBAIC03MDYs
NyArNzA2LDcgQEAgYm9vbCBTZWxlY3Rpb25Db250cm9sbGVyOjptb2RpZnkoRUFsdGVyYXRpb24g
YWx0ZXIsIEVEaXJlY3Rpb24gZGlyZWN0aW9uLCBUZXh0R3IKIAogICAgIHNldE5lZWRzTGF5b3V0
KCk7CiAKLSAgICBzZXRJc0RpcmVjdGlvbmFsKGFsdGVyID09IEVYVEVORCk7CisgICAgc2V0SXNE
aXJlY3Rpb25hbChhbHRlciA9PSBBbHRlcmF0aW9uRXh0ZW5kKTsKIAogICAgIHJldHVybiB0cnVl
OwogfQpAQCAtNzQxLDE3ICs3NDEsMTcgQEAgYm9vbCBTZWxlY3Rpb25Db250cm9sbGVyOjptb2Rp
ZnkoRUFsdGVyYXRpb24gYWx0ZXIsIGludCB2ZXJ0aWNhbERpc3RhbmNlLCBib29sIHUKICAgICBp
ZiAodXApCiAgICAgICAgIHZlcnRpY2FsRGlzdGFuY2UgPSAtdmVydGljYWxEaXN0YW5jZTsKIAot
ICAgIHdpbGxCZU1vZGlmaWVkKGFsdGVyLCB1cCA/IEJBQ0tXQVJEIDogRk9SV0FSRCk7CisgICAg
d2lsbEJlTW9kaWZpZWQoYWx0ZXIsIHVwID8gRGlyZWN0aW9uQmFja3dhcmQgOiBEaXJlY3Rpb25G
b3J3YXJkKTsKIAogICAgIFZpc2libGVQb3NpdGlvbiBwb3M7CiAgICAgaW50IHhQb3MgPSAwOwog
ICAgIHN3aXRjaCAoYWx0ZXIpIHsKLSAgICBjYXNlIE1PVkU6CisgICAgY2FzZSBBbHRlcmF0aW9u
TW92ZToKICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKHVwID8gbV9zZWxlY3Rpb24uc3Rh
cnQoKSA6IG1fc2VsZWN0aW9uLmVuZCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAg
ICAgeFBvcyA9IHhQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbih1cCA/IFNUQVJUIDogRU5E
KTsKICAgICAgICAgbV9zZWxlY3Rpb24uc2V0QWZmaW5pdHkodXAgPyBVUFNUUkVBTSA6IERPV05T
VFJFQU0pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEVYVEVORDoKKyAgICBjYXNlIEFsdGVy
YXRpb25FeHRlbmQ6CiAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5l
eHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgICAgIHhQb3MgPSB4UG9zRm9y
VmVydGljYWxBcnJvd05hdmlnYXRpb24oRVhURU5UKTsKICAgICAgICAgbV9zZWxlY3Rpb24uc2V0
QWZmaW5pdHkoRE9XTlNUUkVBTSk7CkBAIC03ODgsMTAgKzc4OCwxMCBAQCBib29sIFNlbGVjdGlv
bkNvbnRyb2xsZXI6Om1vZGlmeShFQWx0ZXJhdGlvbiBhbHRlciwgaW50IHZlcnRpY2FsRGlzdGFu
Y2UsIGJvb2wgdQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzd2l0Y2ggKGFsdGVyKSB7
Ci0gICAgY2FzZSBNT1ZFOgorICAgIGNhc2UgQWx0ZXJhdGlvbk1vdmU6CiAgICAgICAgIG1vdmVU
byhyZXN1bHQsIHVzZXJUcmlnZ2VyZWQsIGFsaWduKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBFWFRFTkQ6CisgICAgY2FzZSBBbHRlcmF0aW9uRXh0ZW5kOgogICAgICAgICBzZXRFeHRlbnQo
cmVzdWx0LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNzk5LDcg
Kzc5OSw3IEBAIGJvb2wgU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFs
dGVyLCBpbnQgdmVydGljYWxEaXN0YW5jZSwgYm9vbCB1CiAgICAgaWYgKHVzZXJUcmlnZ2VyZWQp
CiAgICAgICAgIG1fZ3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eTsKIAotICAgIHNl
dElzRGlyZWN0aW9uYWwoYWx0ZXIgPT0gRVhURU5EKTsKKyAgICBzZXRJc0RpcmVjdGlvbmFsKGFs
dGVyID09IEFsdGVyYXRpb25FeHRlbmQpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oIGIvV2ViQ29yZS9lZGl0
aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaAppbmRleCBjM2RjMmYyLi5lNGMyOTY0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUv
ZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgKQEAgLTQzLDggKzQzLDggQEAgY2xhc3MgVmlz
aWJsZVBvc2l0aW9uOwogCiBjbGFzcyBTZWxlY3Rpb25Db250cm9sbGVyIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKIHB1YmxpYzoKLSAgICBlbnVtIEVBbHRlcmF0aW9uIHsgTU9WRSwgRVhURU5EIH07
Ci0gICAgZW51bSBFRGlyZWN0aW9uIHsgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBMRUZUIH07
CisgICAgZW51bSBFQWx0ZXJhdGlvbiB7IEFsdGVyYXRpb25Nb3ZlLCBBbHRlcmF0aW9uRXh0ZW5k
IH07CisgICAgZW51bSBFRGlyZWN0aW9uIHsgRGlyZWN0aW9uRm9yd2FyZCwgRGlyZWN0aW9uQmFj
a3dhcmQsIERpcmVjdGlvblJpZ2h0LCBEaXJlY3Rpb25MZWZ0IH07CiAgICAgZW51bSBDdXJzb3JB
bGlnbk9uU2Nyb2xsIHsgQWxpZ25DdXJzb3JPblNjcm9sbElmTmVlZGVkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsaWduQ3Vyc29yT25TY3JvbGxBbHdheXMgfTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5n
L1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IDI1YTRlNmEuLjc2ODAwODQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVHlw
aW5nQ29tbWFuZC5jcHAKQEAgLTQzMSw5ICs0MzEsOSBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRl
bGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5n
KQogCiAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIgc2VsZWN0aW9uOwogICAgICAgICBzZWxl
Y3Rpb24uc2V0U2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpKTsKLSAgICAgICAgc2VsZWN0aW9u
Lm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkJBQ0tXQVJELCBncmFudWxhcml0eSk7CisgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uQmFja3dhcmQsIGdyYW51bGFyaXR5KTsKICAgICAgICAgaWYgKGtpbGxSaW5nICYmIHNl
bGVjdGlvbi5pc0NhcmV0KCkgJiYgZ3JhbnVsYXJpdHkgIT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkp
Ci0gICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVO
RCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsK
KyAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJh
dGlvbkV4dGVuZCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsIENoYXJh
Y3RlckdyYW51bGFyaXR5KTsKIAogICAgICAgICBpZiAoZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJs
ZVN0YXJ0KCkucHJldmlvdXModHJ1ZSkuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIC8vIFdoZW4g
dGhlIGNhcmV0IGlzIGF0IHRoZSBzdGFydCBvZiB0aGUgZWRpdGFibGUgYXJlYSBpbiBhbiBlbXB0
eSBsaXN0IGl0ZW0sIGJyZWFrIG91dCBvZiB0aGUgbGlzdCBpdGVtLgpAQCAtNDU5LDcgKzQ1OSw3
IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHksIGJvb2wga2lsbFJpbmcpCiAgICAgICAgICAgICBpZiAoaXNMYXN0UG9zaXRp
b25CZWZvcmVUYWJsZSh2aXNpYmxlU3RhcnQpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIC8vIEV4dGVuZCB0aGUgc2VsZWN0aW9uIGJhY2t3YXJkIGludG8gdGhlIGxhc3Qg
Y2VsbCwgdGhlbiBkZWxldGlvbiB3aWxsIGhhbmRsZSB0aGUgbW92ZS4KLSAgICAgICAgICAgIHNl
bGVjdGlvbi5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250
cm9sbGVyOjpCQUNLV0FSRCwgZ3JhbnVsYXJpdHkpOworICAgICAgICAgICAgc2VsZWN0aW9uLm1v
ZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwgZ3JhbnVsYXJpdHkpOwogICAgICAgICAvLyBJZiB0
aGUgY2FyZXQgaXMganVzdCBhZnRlciBhIHRhYmxlLCBzZWxlY3QgdGhlIHRhYmxlIGFuZCBkb24n
dCBkZWxldGUgYW55dGhpbmcuCiAgICAgICAgIH0gZWxzZSBpZiAoTm9kZSogdGFibGUgPSBpc0Zp
cnN0UG9zaXRpb25BZnRlclRhYmxlKHZpc2libGVTdGFydCkpIHsKICAgICAgICAgICAgIHNldEVu
ZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKFBvc2l0aW9uKHRhYmxlLCAwKSwgZW5kaW5n
U2VsZWN0aW9uKCkuc3RhcnQoKSwgRE9XTlNUUkVBTSkpOwpAQCAtNTI1LDkgKzUyNSw5IEBAIHZv
aWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5
IGdyYW51bGFyaXR5LCBib29sIGtpCiAgICAgICAgIC8vIHJvb3QgZWRpdGFibGUgZWxlbWVudCBv
ciBhdCB0aGUgc3RhcnQgb2YgYSBkb2N1bWVudC4KICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxl
ciBzZWxlY3Rpb247CiAgICAgICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24oZW5kaW5nU2VsZWN0
aW9uKCkpOwotICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVY
VEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgZ3JhbnVsYXJpdHkpOworICAgICAg
ICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsIGdyYW51bGFyaXR5KTsKICAg
ICAgICAgaWYgKGtpbGxSaW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgZ3JhbnVsYXJpdHkg
IT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpCi0gICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwg
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25Db250cm9sbGVyOjpE
aXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICAgICAgUG9zaXRp
b24gZG93bnN0cmVhbUVuZCA9IGVuZGluZ1NlbGVjdGlvbigpLmVuZCgpLmRvd25zdHJlYW0oKTsK
ICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQgPSBlbmRpbmdTZWxlY3Rpb24oKS52
aXNpYmxlRW5kKCk7CkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3
YXJkRGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2kK
IAogICAgICAgICAvLyBkZWxldGluZyB0byBlbmQgb2YgcGFyYWdyYXBoIHdoZW4gYXQgZW5kIG9m
IHBhcmFncmFwaCBuZWVkcyB0byBtZXJnZSB0aGUgbmV4dCBwYXJhZ3JhcGggKGlmIGFueSkKICAg
ICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFBhcmFncmFwaEJvdW5kYXJ5ICYmIHNlbGVjdGlvbi5z
ZWxlY3Rpb24oKS5pc0NhcmV0KCkgJiYgaXNFbmRPZlBhcmFncmFwaChzZWxlY3Rpb24uc2VsZWN0
aW9uKCkudmlzaWJsZUVuZCgpKSkKLSAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoU2VsZWN0
aW9uQ29udHJvbGxlcjo6RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFy
YWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVj
dGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKIAogICAgICAgICBzZWxlY3Rpb25U
b0RlbGV0ZSA9IHNlbGVjdGlvbi5zZWxlY3Rpb24oKTsKICAgICAgICAgaWYgKCFzdGFydGluZ1Nl
bGVjdGlvbigpLmlzUmFuZ2UoKSB8fCBzZWxlY3Rpb25Ub0RlbGV0ZS5iYXNlKCkgIT0gc3RhcnRp
bmdTZWxlY3Rpb24oKS5zdGFydCgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVNlbGVj
dGlvbi5jcHAgYi9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAppbmRleCBhNTgzMTc2Li5k
NjIwNTFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAorKysgYi9X
ZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcApAQCAtMjgwLDIxICsyODAsMjEgQEAgdm9pZCBE
T01TZWxlY3Rpb246Om1vZGlmeShjb25zdCBTdHJpbmcmIGFsdGVyU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGRpcmVjdGlvblN0cmkKIAogICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVBbHRlcmF0aW9u
IGFsdGVyOwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhbHRlclN0cmluZywgImV4dGVuZCIp
KQotICAgICAgICBhbHRlciA9IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORDsKKyAgICAgICAg
YWx0ZXIgPSBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kOwogICAgIGVsc2Ug
aWYgKGVxdWFsSWdub3JpbmdDYXNlKGFsdGVyU3RyaW5nLCAibW92ZSIpKQotICAgICAgICBhbHRl
ciA9IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkU7CisgICAgICAgIGFsdGVyID0gU2VsZWN0aW9u
Q29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmU7CiAgICAgZWxzZQogICAgICAgICByZXR1cm47CiAK
ICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpFRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UoZGlyZWN0aW9uU3RyaW5nLCAiZm9yd2FyZCIpKQotICAgICAgICBk
aXJlY3Rpb24gPSBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJEOworICAgICAgICBkaXJlY3Rp
b24gPSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkOwogICAgIGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGRpcmVjdGlvblN0cmluZywgImJhY2t3YXJkIikpCi0gICAgICAg
IGRpcmVjdGlvbiA9IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJEOworICAgICAgICBkaXJl
Y3Rpb24gPSBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZDsKICAgICBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXJlY3Rpb25TdHJpbmcsICJsZWZ0IikpCi0gICAgICAg
IGRpcmVjdGlvbiA9IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQ7CisgICAgICAgIGRpcmVjdGlv
biA9IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkxlZnQ7CiAgICAgZWxzZSBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UoZGlyZWN0aW9uU3RyaW5nLCAicmlnaHQiKSkKLSAgICAgICAgZGlyZWN0
aW9uID0gU2VsZWN0aW9uQ29udHJvbGxlcjo6UklHSFQ7CisgICAgICAgIGRpcmVjdGlvbiA9IFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvblJpZ2h0OwogICAgIGVsc2UKICAgICAgICAgcmV0
dXJuOwogCkBAIC00MjQsNyArNDI0LDcgQEAgdm9pZCBET01TZWxlY3Rpb246OmRlbGV0ZUZyb21E
b2N1bWVudCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChpc0NvbGxhcHNlZCgpKQotICAg
ICAgICBzZWxlY3Rpb24tPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAg
IHNlbGVjdGlvbi0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxh
cml0eSk7CiAKICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rpb24tPnNl
bGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwIGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXgg
ZWJmOGVmZi4uNDFmNjk4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKKysrIGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTIyODMsMTYgKzIyODMs
MTYgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnQo
S2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgYm9vbCBpc0NvbW1hbmRlZCA9IGV2ZW50LT5nZXRN
b2RpZmllclN0YXRlKCJNZXRhIik7CiAgICAgCiAgICAgaWYgKGtleSA9PSAiVXAiKSB7Ci0gICAg
ICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoKGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25D
b250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25D
b250cm9sbGVyOjpCQUNLV0FSRCwgKGlzQ29tbWFuZGVkKSA/IERvY3VtZW50Qm91bmRhcnkgOiBM
aW5lR3JhbnVsYXJpdHksIHRydWUpOworICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9k
aWZ5KChpc1NoaWZ0ZWQpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVy
OjpEaXJlY3Rpb25CYWNrd2FyZCwgKGlzQ29tbWFuZGVkKSA/IERvY3VtZW50Qm91bmRhcnkgOiBM
aW5lR3JhbnVsYXJpdHksIHRydWUpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQo
KTsKICAgICB9IGVsc2UgaWYgKGtleSA9PSAiRG93biIpIHsKLSAgICAgICAgbV9mcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeSgoaXNTaGlmdGVkKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVO
RCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldB
UkQsIChpc0NvbW1hbmRlZCkgPyBEb2N1bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5LCB0
cnVlKTsKKyAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeSgoaXNTaGlmdGVkKSA/
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2Fy
ZCwgKGlzQ29tbWFuZGVkKSA/IERvY3VtZW50Qm91bmRhcnkgOiBMaW5lR3JhbnVsYXJpdHksIHRy
dWUpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9IGVsc2UgaWYg
KGtleSA9PSAiTGVmdCIpIHsKLSAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeSgo
aXNTaGlmdGVkKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRy
b2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQsIChpc0NvbW1hbmRlZCkgPyBM
aW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJH
cmFudWxhcml0eSwgdHJ1ZSk7CisgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnko
KGlzU2hpZnRlZCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kIDogU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRp
cmVjdGlvbkxlZnQsIChpc0NvbW1hbmRlZCkgPyBMaW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkg
PyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CiAgICAgICAg
IGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0gZWxzZSBpZiAoa2V5ID09ICJSaWdo
dCIpIHsKLSAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeSgoaXNTaGlmdGVkKSA/
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCAoaXNDb21tYW5kZWQpID8gTGluZUJvdW5kYXJ5
IDogKGlzT3B0aW9uZWQpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHks
IHRydWUpOworICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KChpc1NoaWZ0ZWQp
ID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdo
dCwgKGlzQ29tbWFuZGVkKSA/IExpbmVCb3VuZGFyeSA6IChpc09wdGlvbmVkKSA/IFdvcmRHcmFu
dWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKICAgICAgICAgZXZlbnQtPnNl
dERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfSAgICAKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9DaGFu
Z2VMb2cgYi9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNhN2RmMjcuLmNkMzVjYTEgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDEwLTA1LTMxICBMeW9uIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW51bSB2YWx1ZSBGT1JXQVJE
LCBCQUNLV0FSRCwgUklHSFQsIExFRlQgYXJlIGNhdXNpbmcgbWFjcm8gY29uZmxpY3RzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU1MzAKKworICAg
ICAgICBDaGFuZ2UgZW51bSBFQWx0ZXJhdGlvbiBmcm9tIHsgTU9WRSwgRVhURU5EIH0gdG8geyBB
bHRlcmF0aW9uTW92ZSwgQWx0ZXJhdGlvbkV4dGVuZCB9IGFuZCBlbnVtIEVEaXJlY3Rpb24geyBG
T1JXQVJELCBCQUNLV0FSRCwgUklHSFQsIExFRlR9IHRvIHsgRGlyZWN0aW9uRm9yd2FyZCwgRGly
ZWN0aW9uQmFja3dhcmQsIERpcmVjdGlvblJpZ2h0LCBEaXJlY3Rpb25MZWZ0IH0gdG8gYXZvaWQg
bWFjcm8gY29uZmxpY3QsIGFuZCBhbHNvIGJldHRlciBjb2Rpbmcgc3R5bGUgY29uZm9ybWFuY2Uu
CisKKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZl
bnQpOgorCiAyMDEwLTA1LTMxICBMdWNhcyBEZSBNYXJjaGkgIDxsdWNhcy5kZW1hcmNoaUBwcm9m
dXNpb24ubW9iaT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IGY1YThjNWEuLmRjYjdlOWMgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEwLTA1LTMxICBMeW9uIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW51bSB2YWx1
ZSBGT1JXQVJELCBCQUNLV0FSRCwgUklHSFQsIExFRlQgYXJlIGNhdXNpbmcgbWFjcm8gY29uZmxp
Y3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU1
MzAKKworICAgICAgICBDaGFuZ2UgZW51bSBFQWx0ZXJhdGlvbiBmcm9tIHsgTU9WRSwgRVhURU5E
IH0gdG8geyBBbHRlcmF0aW9uTW92ZSwgQWx0ZXJhdGlvbkV4dGVuZCB9IGFuZCBlbnVtIEVEaXJl
Y3Rpb24geyBGT1JXQVJELCBCQUNLV0FSRCwgUklHSFQsIExFRlR9IHRvIHsgRGlyZWN0aW9uRm9y
d2FyZCwgRGlyZWN0aW9uQmFja3dhcmQsIERpcmVjdGlvblJpZ2h0LCBEaXJlY3Rpb25MZWZ0IH0g
dG8gYXZvaWQgbWFjcm8gY29uZmxpY3QsIGFuZCBhbHNvIGJldHRlciBjb2Rpbmcgc3R5bGUgY29u
Zm9ybWFuY2UuCisKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVJbXBsOjpleGVjdXRlQ29tbWFuZCk6CisKIDIwMTAtMDUtMzEgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
UGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCAzNzc2
NjEwLi5iYjFmNmNlIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC0xMTAw
LDExICsxMTAwLDExIEBAIGJvb2wgV2ViRnJhbWVJbXBsOjpleGVjdXRlQ29tbWFuZChjb25zdCBX
ZWJTdHJpbmcmIG5hbWUpCiAgICAgLy8gc3VwcG9ydC4KICAgICBpZiAoY29tbWFuZCA9PSAiRGVs
ZXRlVG9FbmRPZlBhcmFncmFwaCIpIHsKICAgICAgICAgRWRpdG9yKiBlZGl0b3IgPSBmcmFtZSgp
LT5lZGl0b3IoKTsKLSAgICAgICAgaWYgKCFlZGl0b3ItPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwKKyAgICAgICAgaWYgKCFlZGl0b3ItPmRlbGV0ZVdp
dGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uRm9yd2FyZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYWdyYXBoQm91bmRhcnksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSkgewotICAgICAgICAgICAgZWRp
dG9yLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsCisg
ICAgICAgICAgICBlZGl0b3ItPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxl
cjo6RGlyZWN0aW9uRm9yd2FyZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDaGFyYWN0ZXJHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZhbHNlKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50RWZsLmNwcCBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNw
cAppbmRleCBiODdhOTFhLi4zYzQwMTZmIDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAKKysrIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRFZmwuY3BwCkBAIC0zMzksMjYgKzMzOSwyNiBAQCBib29sIEVkaXRvckNs
aWVudEVmbDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQp
CiAgICAgaWYgKGNhcmV0QnJvd3NpbmcpIHsKICAgICAgICAgc3dpdGNoIChrZXlFdmVudC0+d2lu
ZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKICAgICAgICAgY2FzZSBWS19MRUZUOgotICAgICAgICAg
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V5RXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxl
Y3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLAotICAg
ICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpMRUZULAorICAgICAgICAgICAg
ZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V5RXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rp
b25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0
ZXJhdGlvbk1vdmUsCisgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRp
cmVjdGlvbkxlZnQsCiAgICAgICAgICAgICAgICAgICAgIGtleUV2ZW50LT5jdHJsS2V5KCkgPyBX
b3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAg
ICAgdHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBWS19SSUdI
VDoKLSAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtleUV2ZW50LT5zaGlm
dEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxl
cjo6TU9WRSwKLSAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6UklHSFQs
CisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXlFdmVudC0+c2hpZnRL
ZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRlbmQgOiBTZWxlY3Rpb25D
b250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwKKyAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9u
Q29udHJvbGxlcjo6RGlyZWN0aW9uUmlnaHQsCiAgICAgICAgICAgICAgICAgICAgIGtleUV2ZW50
LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwKICAg
ICAgICAgICAgICAgICAgICAgdHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtl
eUV2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0
aW9uQ29udHJvbGxlcjo6TU9WRSwKLSAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJv
bGxlcjo6QkFDS1dBUkQsCisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShr
ZXlFdmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25FeHRl
bmQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uTW92ZSwKKyAgICAgICAgICAgICAg
ICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0aW9uQmFja3dhcmQsCiAgICAgICAgICAg
ICAgICAgICAgIGtleUV2ZW50LT5jdHJsS2V5KCkgPyBQYXJhZ3JhcGhHcmFudWxhcml0eSA6IExp
bmVHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBWS19ET1dOOgotICAgICAgICAgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoa2V5RXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9s
bGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLAotICAgICAgICAgICAgICAg
ICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELAorICAgICAgICAgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5tb2RpZnkoa2V5RXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1v
dmUsCisgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZv
cndhcmQsCiAgICAgICAgICAgICAgICAgICAgIGtleUV2ZW50LT5jdHJsS2V5KCkgPyBQYXJhZ3Jh
cGhHcmFudWxhcml0eSA6IExpbmVHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAgICAgdHJ1
ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9D
aGFuZ2VMb2cgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCmluZGV4IDg4NTY5ZjQuLmY3NmU3YTMg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2hhaWt1L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA1LTMxICBMeW9uIENoZW4gIDxsaWFjaGVu
QHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRW51bSB2YWx1ZSBGT1JXQVJELCBCQUNLV0FSRCwgUklHSFQsIExFRlQgYXJlIGNhdXNpbmcg
bWFjcm8gY29uZmxpY3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzU1MzAKKworICAgICAgICBDaGFuZ2UgZW51bSBFQWx0ZXJhdGlvbiBmcm9tIHsg
TU9WRSwgRVhURU5EIH0gdG8geyBBbHRlcmF0aW9uTW92ZSwgQWx0ZXJhdGlvbkV4dGVuZCB9IGFu
ZCBlbnVtIEVEaXJlY3Rpb24geyBGT1JXQVJELCBCQUNLV0FSRCwgUklHSFQsIExFRlR9IHRvIHsg
RGlyZWN0aW9uRm9yd2FyZCwgRGlyZWN0aW9uQmFja3dhcmQsIERpcmVjdGlvblJpZ2h0LCBEaXJl
Y3Rpb25MZWZ0IH0gdG8gYXZvaWQgbWFjcm8gY29uZmxpY3QsIGFuZCBhbHNvIGJldHRlciBjb2Rp
bmcgc3R5bGUgY29uZm9ybWFuY2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6aGFu
ZGxlS2V5Ym9hcmRFdmVudCk6CisKIDIwMTAtMDUtMzAgIEx5b24gQ2hlbiAgPGxpYWNoZW5Acmlt
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1dl
YktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHAgYi9XZWJLaXQv
aGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuY3BwCmluZGV4IDhlZDY0MGYu
LjJlMjNhZjcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRIYWlrdS5jcHAKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEhhaWt1LmNwcApAQCAtMjUzLDM2ICsyNTMsMzYgQEAgdm9pZCBFZGl0b3JDbGllbnRIYWlr
dTo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAoc3Rh
cnQtPmlzQ29udGVudEVkaXRhYmxlKCkpIHsKICAgICAgICAgc3dpdGNoIChrZXZlbnQtPndpbmRv
d3NWaXJ0dWFsS2V5Q29kZSgpKSB7CiAgICAgICAgIGNhc2UgVktfQkFDSzoKLSAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVy
OjpCQUNLV0FSRCwKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVj
dGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXZlbnQtPmN0cmxLZXkoKSA/
IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCB0cnVlKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZLX0RFTEVURToKLSAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJE
LAorICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAga2V2ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVs
YXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBWS19MRUZUOgotICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoa2V2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDog
U2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQsCisgICAgICAgICAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPm1vZGlmeShrZXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9s
bGVyOjpBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlvbk1v
dmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250
cm9sbGVyOjpEaXJlY3Rpb25MZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga2V2ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVktfUklHSFQ6Ci0gICAgICAgICAgICBm
cmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25D
b250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6UklHSFQs
CisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXZlbnQtPnNoaWZ0S2V5
KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25SaWdodCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtldmVudC0+Y3RybEtleSgpID8gV29yZEdyYW51
bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZL
X1VQOgotICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V2ZW50LT5zaGlm
dEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxl
cjo6TU9WRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkJBQ0tXQVJELAorICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5t
b2RpZnkoa2V2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6QWx0ZXJhdGlv
bkV4dGVuZCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6RGlyZWN0
aW9uQmFja3dhcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXZl
bnQtPmN0cmxLZXkoKSA/IFBhcmFncmFwaEdyYW51bGFyaXR5IDogTGluZUdyYW51bGFyaXR5LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBWS19ET1dOOgotICAgICAgICAgICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoa2V2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6
RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsCisgICAgICAg
ICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxl
Y3Rpb25Db250cm9sbGVyOjpBbHRlcmF0aW9uRXh0ZW5kIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6
QWx0ZXJhdGlvbk1vdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
ZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga2V2ZW50LT5jdHJsS2V5KCkgPyBQYXJhZ3JhcGhHcmFudWxh
cml0eSA6IExpbmVHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQv
Q2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAxNTYyMzJjLi5kNGM0MDk3IDEw
MDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMC0wNS0zMSAgTHlvbiBDaGVuICA8bGlhY2hlbkByaW0uY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVudW0g
dmFsdWUgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBMRUZUIGFyZSBjYXVzaW5nIG1hY3JvIGNv
bmZsaWN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM1NTMwCisKKyAgICAgICAgQ2hhbmdlIGVudW0gRUFsdGVyYXRpb24gZnJvbSB7IE1PVkUsIEVY
VEVORCB9IHRvIHsgQWx0ZXJhdGlvbk1vdmUsIEFsdGVyYXRpb25FeHRlbmQgfSBhbmQgZW51bSBF
RGlyZWN0aW9uIHsgRk9SV0FSRCwgQkFDS1dBUkQsIFJJR0hULCBMRUZUfSB0byB7IERpcmVjdGlv
bkZvcndhcmQsIERpcmVjdGlvbkJhY2t3YXJkLCBEaXJlY3Rpb25SaWdodCwgRGlyZWN0aW9uTGVm
dCB9IHRvIGF2b2lkIG1hY3JvIGNvbmZsaWN0LCBhbmQgYWxzbyBiZXR0ZXIgY29kaW5nIHN0eWxl
IGNvbmZvcm1hbmNlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZl
bnQpOgorCiAyMDEwLTA1LTMxICBPc3dhbGQgQnVkZGVuaGFnZW4gIDxvc3dhbGQuYnVkZGVuaGFn
ZW5Abm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcCBiL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKaW5kZXggZmI4MzRhOC4u
MGY1NGUyMSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3Bw
CkBAIC0zNzYsMTEgKzM3NiwxMSBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2Fy
ZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogI2VuZGlmIC8vIFFUX05PX1NIT1JUQ1VUCiAg
ICAgICAgIHN3aXRjaCAoa2V2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewogICAgICAg
ICBjYXNlIFZLX0JBQ0s6Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhE
aXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsCisgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6RGly
ZWN0aW9uQmFja3dhcmQsCiAgICAgICAgICAgICAgICAgICAgIENoYXJhY3RlckdyYW51bGFyaXR5
LCBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWS19ERUxF
VEU6Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJk
LAogICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVktfTEVGVDoK
</data>

          </attachment>
      

    </bug>

</bugzilla>